Skip to content

tctree333/js-yaml-source-map

Repository files navigation

js-yaml sourcemaps

A library for finding YAML source locations after parsing by js-yaml.

Installation

npm install js-yaml-source-map js-yaml 

Usage

--- # file: example.yaml fruits: - apple - banana - orange people: - name: Eric age: 26 - name: Lily age: 22 states: CA: California NY: New York capital: Albany TX: Texas
import fs from "fs"; import yaml from "js-yaml"; import SourceMap from "js-yaml-source-map"; const data = fs.readFileSync("./example.yaml", "utf8"); const map = new SourceMap(); // pass map.listen() to the listener option const loaded = yaml.load(data, { listener: map.listen() }); console.log(loaded); // { fruits: [ 'apple', 'banana', 'orange' ], ... } // different syntaxes supported console.log(map.lookup("fruits")); // { line: 4, column: 10, position: 42 } console.log(map.lookup("people.0.age")); // { line: 9, column: 8, position: 95 } console.log(map.lookup(".people[1].name")); // { line: 10, column: 9, position: 108} console.log(map.lookup(["states", "NY", "capital"])); // { line: 16, column: 12, position: 188 }

If you're using CommonJS, you'll need to access the default key:

const SourceMap = require("js-yaml-source-map").default; const map = new SourceMap(); //...

API Reference

SourceMap

Constructor: new SourceMap()

Properties:

  • SourceMap().map: PathMap

Methods:

  • SourceMap().listen(): (event: "open" | "close", state: State) => void
  • SourceMap().lookup(path: string | string[]): SourceLocation | undefined

Types

interface PathMap { [path: string]: { line: number; position: number; lineStart: number; }; } interface SourceLocation { line: number; column: number; position: number; }

Limitations

  • This library does not work with multi-document sources and yaml.loadAll(). Using it with yaml.loadAll() will result in undefined behavior.
  • Using arrays or objects as keys will not work properly, and will result in undefined behavior.

About

Sourcemaps for js-yaml

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project