You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This component extends the behavior of JSON Schema, as implemented in
json-schema-core, providing
parser classes for links (Links, Link).
a method for resolving link templates against an instance (resolveLinks)
link finder methods for typical cases (links.rel, links.mediaType,
links.alternate), as well as generic links.find(fn) and links.select(fn)
addressability from the schema (e.g. schema.$('#/links/0'))
dereferencing JSON references used in either "links" itself or in
individual links or link attributes, or in "media" subtrees.
Note that this component does not deal with aspects of the spec related to
HTTP request/response, e.g. schema and targetSchema pre- and post-
validation, setting Accept headers, instance correlation via HTTP response
headers, etc. For this, see json-schema-agent.
Note also this component does not depend on JSON Schema validation, which
is implemented as a separate core plugin
(json-schema-valid).
Installation
component:
$ component install ericgj/json-schema-hyper
npm:
$ npm install json-schema-hyper-component
Example
varcore=require('json-schema-core'),hyper=require('json-schema-hyper'),Schema=core.SchemaSchema.use(hyper);varschema=newSchema().parse(schemaObject);// resolve links in root path of instance, returns a Links object// or an array of Links objects if the root path of the instance is an arrayvarlinks=schema.resolveLinks(instanceObject);// find the first link with rel == 'search'varsearchLink=links.rel('search');// find the first link with mediaType == 'application/xml'varaltLink=links.mediaType('application/xml');// find the first link rel == 'alternate' and mediaType == 'application/xml',// with method == 'GET'varrssLink=links.alternate('application/atom+xml',{method: 'GET'});// or simply use correlation methods as shortcuts to the abovevarcorrelation=schema.bind(instanceObject);correlation.links();correlation.rel('search');correlation.mediaType('application/xml');correlation.alternate('application/atom+xml',{method: 'GET'});
API
TODO
Add pre-processing of URI templates, as defined in
section 5.1.1.1 of the spec.