Skip to content

Latest commit

 

History

History
57 lines (42 loc) · 1.8 KB

File metadata and controls

57 lines (42 loc) · 1.8 KB

jsoncompat (JavaScript/WebAssembly)

WebAssembly bindings for checking compatibility of evolving JSON Schemas and generating example values from JavaScript.

Installation

npm install jsoncompat@0.3.1

Quick start

import init, { check_compat, generator_for, validator_for } from "jsoncompat";

await init();

const oldSchema = '{"type":"string"}';
const newSchema = '{"type":["string","null"]}';

const ok = check_compat(oldSchema, newSchema, "deserializer");
const generator = generator_for(newSchema);
const valueJson = generator.generate_value(5);
const validator = validator_for(newSchema);
const valueOk = validator.is_valid(valueJson);

API

  • check_compat(old_schema_json, new_schema_json, role) -> boolean accepts "serializer", "deserializer", or "both" for role.
  • generator_for(schema_json) -> Generator parses a schema once and returns a reusable generator.
    • Generator.generate_value(depth) -> string returns one generated JSON value encoded as a string.
  • validator_for(schema_json) -> Validator parses a schema once and returns a reusable validator.
    • Validator.is_valid(instance_json) -> boolean validates a JSON string against the parsed schema.
  • generate_value(schema_json, depth) -> string is kept for compatibility. Prefer generator_for(schema_json).generate_value(depth).

Functions accept schemas as JSON strings and throw string-backed wasm-bindgen errors for invalid JSON, invalid schemas, hard unsupported compatibility features, known-unsatisfiable schemas, or retry exhaustion.

More detail

License

MIT