An open API service indexing awesome lists of open source software.

https://github.com/cvent/json-schema-deref-sync

Synchronous json schema dereference utility
https://github.com/cvent/json-schema-deref-sync

Last synced: 5 months ago
JSON representation

Synchronous json schema dereference utility

Awesome Lists containing this project

README

          

# json-schema-deref-sync

[![npm version](https://img.shields.io/npm/v/json-schema-deref-sync.svg?style=flat-square)](https://www.npmjs.com/package/json-schema-deref-sync)
[![build status](https://img.shields.io/travis/bojand/json-schema-deref-sync/master.svg?style=flat-square)](https://travis-ci.org/bojand/json-schema-deref-sync)
[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg?style=flat-square)](https://standardjs.com)
[![License](https://img.shields.io/github/license/bojand/json-schema-deref-sync.svg?style=flat-square)](https://raw.githubusercontent.com/bojand/json-schema-deref-sync/master/LICENSE)

Dereference JSON pointers in a JSON schemas with their true resolved values.
Basically a lighter, synchronous version of [json-schema-deref](https://github.com/bojand/json-schema-deref) but omits web references.

## Installation

`npm install json-schema-deref-sync`

## Overview

Let's say you have the following JSON Schema:

```json
{
"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:

```json
{
"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:

```js
var deref = require('json-schema-deref-sync');
var myschema = require('schema.json');

var fullSchema = deref(myschema);
```

## API Reference

## deref(schema, options) ⇒ Object \| Error
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. |