@koppadb/dereference-json-schema
v0.2.1
Published
JavaScript library to resolve `$ref` references in a given set of JSON schemas
Downloads
16
Readme
dereference-json-schema
JavaScript library to resolve $ref references in a given set of JSON schemas
const schemas = new Dereferencer(inputSchemas, options).dereferenceSchemas();This package is to be used with the JSON schema specification (Draft 7), altough it does not fully comply with the specification. For exmaple, it does only support $id at the root of each schema.
Usage
All input schemas must have exactly one $id key with a (partial) URI value.
Upon dereferencing, this package recursivly scans for $refs and resolves them agaist other supplied input schemas, also following further $refs is encounters.
This package does not:
- load any schemas from the file system or the network.
- validate any data against JSON schemas.
- support nested
$idvalues. It does only support$idat the root of each schema.
Additional features
- Specify
$deref: falseat the root of a schema to fully disable dereferencing in that schema - Set
options.mergeAdditionalPropertiestotruein order to keep or override properties from references.undefinedvalues will not get merged- Arrays will get completely overwritten, not merged or concatinated
{
"$ref": "test.json",
"someOtherProperty": "will get merged over the dereferenced value. A error will be thrown if the referenced value is not a object."
}- Set
options.removeIDstotrue, so that root$idfields will get removed after dereferencing a value. Additional properties that get merged will not get removed thi way. - A variety of other functions get exposed, see
src/index.tsor the type definitions for details.
Exmaples
Additional exmaples can be found in the spec/dereferencing folder.
Development
# Install dependencies
$ npm install
# Build JavaScript files and typings
$ npm build
# Run tests
$ npm run test
# Lint and format files
$ npm run lintThis package is developed in TypeScript and thus also includes type definitions.
This package uses the following production dependencies:
uri-jsfor handling schema URIslodash.clonedeepfor cloning objectslodash.mergewithfor merging objects
License
ISC
