@technician/interpret-yaml
v2.0.0
Published
Adds YAML support to the Technician config manager.
Downloads
10
Maintainers
Readme
@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';
// Technician will automatically load the extensions in any file with the interpret-yaml package imported.
import '@technician/interpret-yaml';
const technician = new Technician(
Interpret.string.asYAML(
new ManualConfigSource({
yaml: 'key: value',
primitive: 10
})
)
);
await technician.read('yaml'); // {key: 'value'}
await technician.read('primitive'); // 10
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') // key: value
) as ConfigSource<{[key: string]: string | number> // or whichever primitive types are valid in your case
)
);
await technician.read('key'); // value
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.