1.1.0 • Published 10 years ago
yaas-sdk v1.1.0
jsonpolice
A Javascript library implementing the JSON Schema draft 7.
The library can optionally decorate parsed objects in order to have them return default values defined in the schema, for undefined properties.
Install
$ npm install jsonpolicecreate(dataOrUri, options)
Create a new instance of schema validator.
dataOrUri, the schema to parse or a fully qualified URI to pass toretrieverto download the schemaoptions, parsing options, the following optional properties are supported:scope(required), the current resolution scope (absolute URL) of URLs and paths.registry, an object to use to cache resolvedidand$refvalues. If no registry is passed, one is automatically created. Pass aregistryif you are going to parse several schemas or URIs referencing the sameidand$refvalues.retriever, a function accepting a URL in input and returning a promise resolved to an object representing the data downloaded for the URI. Whenever a$refto a new URI is found, if the URI is not already cached in the store in use, it'll be fetched using thisretriever. If notretrieveris passed and a URI needs to be downloaded, ano_retrieverexception is thrown. Refer to the documentation of jsonref for sample retriever functions to use in the browser or with Node.js.
The function returns a Promise resolving to a new instance of Schema. Once created, a schema instance can be used
repeatedly to validate data, calling the method Schema.validate.
Example
import * as jp from 'jsonpolice';
(async () => {
const schema = jp.create({
type: 'object',
properties: {
d: {
type: 'string',
format: 'date-time'
},
i: {
type: 'integer'
},
b: {
type: [ 'boolean', 'number' ]
},
c: {
default: 5
}
}
});
try {
const result = await schema.validate({
d: (new Date()).toISOString(),
i: 6,
b: true
});
} catch(err) {
// validation failed
}
})();Schema.validate(data , options)
Validates the input data
data, the data to parseoptions, validation options, the following optional properties are supported:setDefault, iftruereturns the default value specified in the schema (if any) for undefined propertiesremoveAdditional, iftruedeletes properties not validating against additionalProperties, without failingcontext, if set toreaddeletes writeOnly properties, if set towritedelete readOnly properties
Returns a decorated version of data, according to the specified options.
Example
Using the following schema:
{
type: 'object',
properties: {
d: {
type: 'string',
},
i: {
type: 'integer'
},
b: {
type: [ 'boolean', 'number' ]
},
c: {
default: 5
}
}
}And parsing the following data:
var output = schema.validate({
d: 'test',
i: 10,
b: true
});Produces the following output:
{
"d": "test",
"i": 10,
"b": true,
"c": 5
}