Configuration as Code with ECMAScript
This release introduces a way to use container images as library packages, as described in RFC 0003.
It also includes some changes that make jk
commands work more consistently:
jk transform
and jk validate
now read and write to the files given as arguments, even if they are given as absolute or parent paths (previously they were subject to the sandboxing, but this doesn't make sense for files that are named on the command line) PR 338
@jkcfg/std
for stdin
and stdout
, to be used with read
and write
respectively PR 339
jk validate
and jk transform
now handle YAML and JSON files containing more than one value PR 334
jk generate
will validate values if you include a validation function in its input, per RFC 0002
Fix: Corrects a problem with the initial fs.walk
implementation (#292)
Fix: Corrects a bug in the build process introduced by #281
Feature: Adds a jk validate
command (#279)
Feature: Adds a jk transform
command (#257)
Fix: Runtime messages are now output to stderr
, leaving stdout
for printing results only (#281)
Change: After #281, std.log
outputs to stderr, and does not accept formatting options. Use std.print(value, options?)
to print values to stdout. This is not considered a breaking change as std.log behaviour was left (largely) undefined.
Breaking changes: 0.3.0
changes or remove features that have been deprecated during the 0.2.x
cycle. The exhaustive list of deprecated constructs can be found in the documentation.
Feature: Add a new mergeFull
function that is destined to merge the current merge
function of the @jkcfg/std/merge
module in 0.3.0
. With this we should have a much better base for array and object merging, including implementing the Kubernetes strategic merges. More details and examples can be found in the API reference.
Feature: The jk
linux binary is now linked statically to reduce its dependency on recent libstdc++.
Documentation: Added a plethora of @jkcfg/kubernetes
examples.
Documentation: We now run all examples in CI and check they output the expected result.
FIx: Fix npm module resolution with jk generate
(see: https://github.com/jkcfg/jk/pull/224/commits/7444ec5f1839566bf2f820a73857121dc7ad7e58)
Documentation: We now generate a reference API for @jkcfg/std
, albeit still mostly without comments: https://jkcfg.github.io/reference/std/0.2.8/
Feature: New std.parse
and std.unparse
functions to transform a string into a js value and a js value into JSON/YAML/HCL strings, respectively.
Documentation: Added some usage examples, including a somewhat complete micro-service definition
Feature: jk
has gained a new generate
command. Instead of using std.write
in an imperative fashion, one can now declare the list of configuration files to produce in the default export and leave the generation to jk
. The quick start examples have been ported to generate
.
Feature: jk run
has been extended to support running a script from stdin and from an npm package.
Change: Expose @jkcfg/std/merge
as its own module.
Change: The std library has received an overhaul: it's now written in typescript and is composed of several modules. As a consequence a number of previous imports are deprecated.
Feature: run
has now a -d
option to list the dependencies of a script: files it imports, reads or source for input parameters. This allows external program to watch those dependencies for changes and know when to re-run jk
to generate the corresponding new configuration.