json-schema-consolidate
v1.0.1
Published
Adapter to different JSON-schema (draft4) validators
Downloads
15
Maintainers
Readme
json-schema-consolidate
Adapter to different JSON-schema (draft4) validators
Supported validators
You must install the validator(s) you use separately.
See Validators compatibility and json-schema-benchmark.
Install
npm install json-schema-consolidate
npm install <validator>
Usage
var consolidate = require('json-schema-consolidate');
var Validator = consolidate('<validator>');
var validator = new Validator(options); // or Validator(options);
or
var consolidate = require('json-schema-consolidate');
var validator = consolidate('<validator>', options);
Validate
var result = validator.validate(schema, json); // { valid: true/false, errors: [...] }
schema
can be a string, in which case it will be JSON.parse'd.
If you need to validate with the previously added schema, you can either use getSchema
to retrieve it or pass { $ref: '<id>' }
as the schema.
If the referenced schema is missing it is an error (for all validators - tv4 is corrected in this case).
For compiling validators, this method will cache compiled schemas using serialized schema as a key (json-stable-stringify is used).
Compile
(create validating function)
var validate = validator.compile(schema);
var result = validate(json); // { valid: true/false, errors: [...] }
For interpreting validators this method will simply return a closure that can be used to validate json, but there will be no performance gain.
Add schema
(that can be referred to in other schemas)
validator.addSchema(schema, id);
If id
is not passed, schema.id
will be used
schema
can be array of schemas, in which case the second parameter is not used.
Get schema
(previously added)
var schema = validator.getSchema(id);
Options
These options are available in all supported validators:
allErrors
- continue validation after errors and return all validation errors.schemas
- include some schemas, same result as callingaddSchema
method.formats
- define additional formats, most validators support RegExp and functions. Format function should return validation success as boolean for ALL validators used with json-schema-consolidate.
Validator specific options can also be passed.
Validators compatibility
|validator|meta| ref |allErrors|formats|compile|fails| |---------|:--:|:---:|:-------:|:-----:|:-----:|:---:| |ajv|✓|✓|✓|✓|✓|-/1| |is-my-json-valid|✓|short|-|✓|✓|3/9| |jayschema|✓|✓|-|✓|-|1/5| |jjv|✓|✓|-|✓|-|3/4| |jsck|✓|✓|-|-|✓|3/11| |jsen|✓|-|-|✓|✓|7/7| |jsonschema|-|full|✓|-|-|4/3| |schemasaurus|-|-|-|RegExp|✓|8/10| |skeemas|✓|full|-|-|-|3/1| |themis|✓|✓|-|✓|✓|3/8| |tv4|-|✓|✓|✓|-|2/11| |z-schema|✓|✓|✓|✓|✓|-/6|
meta
: validator can correctly validate schema against meta-schema. Some validators validate valid schemas as invalid or just throw error in this test.ref
: support for referencing schemas in other files. Some validators support onlyfull
uris, some onlyshort
uris and some support both (✓).allErrors
: if supported, the validator will stop after the first error unless this options is set to true.formats
: most validators support functions and RegExp (some only with this package) as custom formats (✓). Some support onlyRegExp
.compile
: validators that compile schemas into validating functions. Even if a validator doesn't compile schemas, you can usecompile
method - it will return a function that will validate using the passed schema.fails
: the number of tests that fails. The first number - tests in json-schema-consolidate interface tests, the second - the tests in the official json-schema draft4 test suite.
Running tests
To run tests you need to install json-schema-tests and all validators:
npm install
npm install -g coffee-script
npm install -g json-schema-tests
Then you can run tests with ./test
script:
./test
./test --full
./test <validator>
./test <validator> --short
Skipped tests are features in validators that are either not implemented or failing.