json-schema-consolidate v1.0.1
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 callingaddSchemamethod.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 onlyfulluris, some onlyshorturis 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 usecompilemethod - 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-testsThen you can run tests with ./test script:
./test
./test --full
./test <validator>
./test <validator> --shortSkipped tests are features in validators that are either not implemented or failing.