jsonsmith
v0.1.17
Published
resolves a series of inputs to a single json value.
Downloads
916
Readme
jsonsmith
resolves a series of inputs to a single json value.
Usage:
cobble(options)
options
has the following properties:
inputs (required)
: a list of inputs where each element can be one of the following:- a string representing a file path -- jsonsmith will try to figure out the format if not provided explicitly
- an object with properties
path
andformat
, whereformat
can be one ofjson
,yaml
, andproperties
- an object with property
raw
that maps to a value in json, yaml, or .properties format
varsObj
: an optional object that will be used as the context for interpolation will be done and passed in as the last inputdebug: (line: string) => void
: optional
Interpolation
- a value with syntax
%{VARIABLE_NAME}%
will be evaluated in the context ofvarsObj
File paths
$read_text(path: string)
will be interpreted as a file containing text.$read_json(path: string)
will be interpreted as a file containing json.$read_yaml(path<string>)
will be interpreted as a file containing yaml.
Examples
With file paths
import { cobble } from 'jsonsmith'
cobble({
inputs: [
'someDir/yaml1.yaml',
'someDir/yaml2.yaml'
]
});
This will do a deep extends with target being the first argument provided, and subsequent arguments as sources.
With raw inputs
import { cobble } from 'jsonsmith'
cobble({
inputs: [
{
"raw": {
"version": "0.5",
"appName": "app"
}
},
{
"raw": "version=1.0"
}
]
})
The above would result in the following object
{
"appName": "app",
"version": "1.0"
}
With interpolation
import { cobble } from 'jsonsmith'
cobble({
inputs: [
{
"raw": "template=$read_json('templates/template.json')"
},
{
"raw": "version=%{APP_VERSION}%"
}
],
varsObj: { APP_VERSION: "1.7" }
})
where templates/template.json
looks like
{
"name": "Scott Storch",
"subject": "Mellow my man"
}
would result in the following object
{
"template": {
"name": "Scott Storch",
"subject": "Mellow my man"
},
"version": "1.7"
}