Skip to content

@origints/yaml

YAML parsing with support for single and multi-document streams, anchors, aliases, custom tags, and full source location tracking.

Terminal window
npm install @origints/yaml @origints/core
  • Parse single or multi-document YAML streams
  • Preserve anchors, aliases, and custom tags
  • Full source location tracking for every node
  • Navigation API with type-safe extraction
  • JSON conversion with customizable options
import { Planner, loadFile, run } from '@origints/core'
import { parseYaml } from '@origints/yaml'
const plan = new Planner()
.in(loadFile('config.yaml'))
.mapIn(parseYaml())
.emit((out, $) => out
.add('host', $.get('database').get('host').string())
.add('port', $.get('database').get('port').number())
)
.compile()
const result = await run(plan, { readFile, registry })
// result.value: { host: 'localhost', port: 5432 }
const plan = new Planner()
.in(loadFile('users.yaml'))
.mapIn(parseYaml())
.emit((out, $) => out
.add('names', $.get('users').array(u => u.get('name').string()))
.add('roles', $.get('users').array(u => u.get('role').string()))
)
.compile()
.emit((out, $) => out
.add('tags', $.get('tags').strings())
.add('ports', $.get('ports').numbers())
)
import { parseYamlAll } from '@origints/yaml'
const plan = new Planner()
.in(loadFile('multi.yaml'))
.mapIn(parseYamlAll())
.emit((out, $) => out
.add('names', $.array(doc => doc.get('name').string()))
)
.compile()
import { parseYamlImpl, toJson, YamlNode } from '@origints/yaml'
const node = parseYamlImpl.execute(yamlString) as YamlNode
const name = node.get('name')
if (name.ok) console.log(name.value.asString().value)
const json = toJson(node)
if (json.ok) console.log(json.value)
ExportDescription
parseYaml(options?)Transform AST for single-document YAML
parseYamlAll(options?)Transform AST for multi-document YAML
parseYamlImplSync transform implementation
parseYamlAsyncImplAsync transform implementation
registerYamlTransforms(registry)Register YAML transforms
YamlNodeNavigable wrapper
toJson(node, options?)Convert to JSON

MIT