@koppadb/dereference-json-schema
v0.2.1
Published
JavaScript library to resolve `$ref` references in a given set of JSON schemas
Downloads
7
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 $ref
s and resolves them agaist other supplied input schemas, also following further $ref
s is encounters.
This package does not:
- load any schemas from the file system or the network.
- validate any data against JSON schemas.
- support nested
$id
values. It does only support$id
at the root of each schema.
Additional features
- Specify
$deref: false
at the root of a schema to fully disable dereferencing in that schema - Set
options.mergeAdditionalProperties
totrue
in order to keep or override properties from references.undefined
values 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.removeIDs
totrue
, so that root$id
fields 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.ts
or 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 lint
This package is developed in TypeScript and thus also includes type definitions.
This package uses the following production dependencies:
uri-js
for handling schema URIslodash.clonedeep
for cloning objectslodash.mergewith
for merging objects
License
ISC