JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 8712
  • Score
    100M100P100Q133496F

JSON-Schema $ref resolution

Package Exports

  • deref

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (deref) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Do you have $ref's ?

A simple way for solving $ref values:

var deref = require('deref');

Schema dereferencing

$ = deref();

var a = {
  id: 'a',
  type: 'object',
  properties: {
    b: {
      $ref: 'b'
    }
  }
};

var b = {
  id: 'b',
  type: 'string'
};

var c = {
  id: 'c',
  type: 'array',
  items: {
    $ref: 'a'
  }
};

console.log($(c, [b, a]).id);
// output: http://json-schema.org/c#

console.log($(c, [b, a], true).items.properties.b.type);
// output: string

Schema normalization

var schema = {
  id: 'http://x.y.z/rootschema.json#',
  schema1: {
    id: '#foo'
  },
  schema2: {
    id: 'otherschema.json',
    nested: {
      id: '#bar'
    },
    alsonested: {
      id: 't/inner.json#a'
    }
  },
  schema3: {
    id: 'some://where.else/completely#'
  }
};

console.log(deref.util.normalizeSchema(schema).schema2.nested.id);
// output: http://x.y.z/otherschema.json#bar

Basic usage

The resulting function of calling deref() can accept three arguments:

  • fakeroot (string)

    Used on missing $schema values for resolve into fully qualified URIs.

    console.log($('http://example.com', { id: '#foo' }).id);
    // output: http://example.com#foo

    If missing will use http://json-schema.org/schema.

  • schema (object)

    The JSON-Schema object for dereferencing.

  • refs (array|object)

    Any additional schemas used while dereferencing.

  • ex (boolean)

    Whether do full dereferencing or not, false by default.

Examples

$('http://example.com', schema, true);
$(schema, refs, true);
$(schema, true);

Utilities

Aside the basics of $, this function will include:

  • $.refs (object)

    An registry of dereferenced schemas.

  • $.util (object)

    Exposes the internal helpers used by deref.

    • isURL(path)
    • parseURI(href)
    • resolveURL(base, href)
    • getDocumentURI(path)
    • resolveSchema(schema, refs)
    • normalizeSchema(fakeroot, schema)

Note that calling $(schema) will not read/download any local/remote files.

Since 0.2.1 the $schema and id are no longer required for schema normalization.

Build Status NPM version Coverage Status