Dereference JSON pointers in a JSON schemas with their true resolved values. Basically a lighter, synchronous version of json-schema-deref but omits web references.
npm install json-schema-deref-sync
Let's say you have the following JSON Schema:
{
"description": "Just some JSON schema.",
"title": "Basic Widget",
"type": "object",
"definitions": {
"id": {
"description": "unique identifier",
"type": "string",
"minLength": 1,
"readOnly": true
}
},
"properties": {
"id": {
"$ref": "#/definitions/id"
},
"bar": {
"$ref": "bar.json"
}
}
}
Sometimes you just want that schema to be fully expanded, with $ref
's being their (true) resolved values:
{
"description": "Just some JSON schema.",
"title": "Basic Widget",
"type": "object",
"definitions": {
"id": {
"description": "unique identifier",
"type": "string",
"minLength": 1,
"readOnly": true
}
},
"properties": {
"id": {
"description": "unique identifier",
"type": "string",
"minLength": 1,
"readOnly": true
},
"bar": {
"description": "bar property",
"type": "boolean"
}
}
}
This utility lets you do that:
var deref = require('json-schema-deref-sync');
var myschema = require('schema.json');
var fullSchema = deref(myschema);
Derefs $ref
's in JSON Schema to actual resolved values. Supports local, and file refs.
Kind: global function
Returns: Object
| Error
- the deref schema oran instance of Error
if error.
Param | Type | Description |
---|---|---|
schema | Object |
The JSON schema |
options | Object |
options |
options.baseFolder | String |
the base folder to get relative path files from. Default is process.cwd() |
options.failOnMissing | Boolean |
By default missing / unresolved refs will be left as is with their ref value intact. If set to true we will error out on first missing ref that we cannot resolve. Default: false . |
options.mergeAdditionalProperties | Boolean |
By default properties in a object with $ref will be removed in the output. If set to true they will be added/overwrite the output. This will use lodash's merge function. Default: false . |
options.removeIds | Boolean |
By default $id fields will get copied when dereferencing. If set to true they will be removed. Merged properties will not get removed. Default: false . |
options.loaders | Object |
A hash mapping reference types (e.g., 'file') to loader functions. |