@technician/interpret-yaml
This package provides extensions to the Interpret
API of the Technician config manager aimed at supporting YAML files.
This package uses js-yaml for YAML deserialization.
Installation
npm i @technician/interpret-yaml
This package is compatible with Node 10 LTS and up.
Usage Example
Baisc usage
import { Technician, Interpret } from 'technician';
import '@technician/interpret-yaml';
const technician = new Technician(
Interpret.string.asYAML(
new ManualConfigSource({
yaml: 'key: value',
primitive: 10
})
)
);
await technician.read('yaml');
await technician.read('primitive');
Loading key/value pairs from a YAML file
A single, top-level primitive is technically valid YAML. Therefore, you must assert that your YAML contains key: value pairs to Uplevel
it.
Upleveling a YAML document that contains only unkeyed primitive(s) will throw errors.
import { Technician, Interpret, Uplevel } from 'technician';
import { FSConfigSource } from '@technician/source-fs';
import '@technician/interpret-yaml';
const technician = new Technician(
Uplevel.only('config.yml').on(
Interpret.buffer.asYAML(
new FSConfigSource('/opt/myapp/config')
) as ConfigSource<{[key: string]: string | number>
)
);
await technician.read('key');
An encoding type may be optionally specified as follows: Interpret.buffer.asYAML(myConfigSource, 'ascii')
. Default is utf-8
.
asStringOrYAML
is also supported, which optionally parses only valid YAML but still returns invalid YAML as an unparsed string (similar to the behavior of Technician's asStringOrJSON
).
Contributions
Contributions and pull requests are always welcome. Please be sure your code passes all existing tests and linting.
Pull requests with full code coverage are strongly encouraged.
License
Apache-2.0