Skip to content

Latest commit

 

History

History
122 lines (84 loc) · 3.2 KB

README.md

File metadata and controls

122 lines (84 loc) · 3.2 KB

Dessert YAML

npm-badge license-badge

Base API for YAML connectors, written in Rust for WebAssembly.

Existing connectors are:

For simplicity's sake, this module has been written using serde yaml, but at the cost of flexibility. Some feature might be missing for now, like passing parsing options when loading/dumping.

Table of contents

Usage

Note:
Althought this library is usable as-is, it should be used as a dependency for a connector, such as dessert-js-yaml.

yaml = require('dessert-yaml-core');
fs   = require('fs');

// Get document, or throw exception on error
try {
  let doc = yaml.load(fs.readFileSync('/home/ixti/example.yml', 'utf8'));
  console.log(doc);

  // Print the parsed object as a YAML stream
  let yaml_stream = yaml.dump(doc);
  console.log(yaml_stream);
} catch (e) {
  console.log(e);
}

Performance

Big file (6.85MB)

dessert-yaml js-yaml yaml-js
load 1904ms 836ms 55461ms
dump 528ms 1193ms 124931ms

Small file (360 B)

dessert-yaml js-yaml yaml-js
load 1ms 11ms 33ms
dump 1ms 8ms 37ms

API

This section lists methods exported from Wasm to Javascript.

load(string, [, options])

Most simple way of parsing a document. Parses string as single YAML document. Returns a JavaScript object or throws YAMLException on error. options aren't used as for now.

loadSafe(string, [, options])

Same as load()

loadAll(string, [, options])

Same as safeLoad(), but understands multi-document sources. Applies iterator to each document if specified, or returns array of documents. Currently same as load() because serde_yaml doesn't support multi document yet, and data structure from yaml-rust aren't serializable.

dump(object, [, options])

Serializes object as a YAML document

safeDump(objects, [, options])

Same as dump()

Installation

npm install dessert-yaml-core

Building

The package can be built using wasm-pack

wasm-pack build --target browser

Testing

wasm-pack test --headless --[firefox|chrome|safari]

License

MIT

Contributing

See CONTRIBUTING.md