@technician/interpret-yaml
TypeScript icon, indicating that this package has built-in type declarations

2.0.0 • Public • Published

@technician/interpret-yaml

npm version npm downloads npm license

dependencies Build Status GitKraken

This package provides extensions to the Interpret API of the Technician config manager aimed at supporting YAML files.

Technician

This package uses js-yaml for YAML deserialization.

js-yaml

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.

License

Apache-2.0

Package Sidebar

Install

npm i @technician/interpret-yaml

Weekly Downloads

2

Version

2.0.0

License

Apache-2.0

Unpacked Size

23.7 kB

Total Files

7

Last publish

Collaborators

  • carriejv