Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ericgj/json-schema-hyper
JSON Hyper-Schema module
https://github.com/ericgj/json-schema-hyper
Last synced: about 2 months ago
JSON representation
JSON Hyper-Schema module
- Host: GitHub
- URL: https://github.com/ericgj/json-schema-hyper
- Owner: ericgj
- Created: 2013-09-07T13:01:03.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2013-11-21T21:21:23.000Z (about 11 years ago)
- Last Synced: 2024-11-03T02:07:04.584Z (2 months ago)
- Language: JavaScript
- Homepage:
- Size: 277 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: Readme.md
- Changelog: History.md
Awesome Lists containing this project
README
# json-schema-hyper
**Please note this library is not ready for production use.**
JSON Hyper-Schema, as specified in the [IETF Draft spec][spec].
This component extends the behavior of JSON Schema, as implemented in
[json-schema-core][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][agent].Note also this component does not depend on JSON Schema *validation*, which
is implemented as a separate [core][core] plugin
([json-schema-valid][valid]).## Installation
component:
$ component install ericgj/json-schema-hyper
npm:
$ npm install json-schema-hyper-component
## Example
```javascript
var core = require('json-schema-core')
, hyper = require('json-schema-hyper')
, Schema = core.SchemaSchema.use(hyper);
var schema = new Schema().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 array
var links = schema.resolveLinks( instanceObject );// find the first link with rel == 'search'
var searchLink = links.rel('search');// find the first link with mediaType == 'application/xml'
var altLink = links.mediaType('application/xml');// find the first link rel == 'alternate' and mediaType == 'application/xml',
// with method == 'GET'
var rssLink = links.alternate('application/atom+xml', {method: 'GET'});// or simply use correlation methods as shortcuts to the above
var correlation = 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][spec-preproc] of the spec.
## LicenseMIT
[spec]: http://tools.ietf.org/html/draft-luff-json-hyper-schema-00
[spec-preproc]: http://tools.ietf.org/html/draft-luff-json-hyper-schema-00#section-5.1.1
[core]: https://github.com/ericgj/json-schema-core
[agent]: https://github.com/ericgj/json-schema-agent
[valid]: https://github.com/ericgj/json-schema-valid