ajv/lib/v5.js

37 lines
1.2 KiB
JavaScript
Raw Normal View History

2015-11-22 03:31:01 +03:00
'use strict';
2015-12-13 00:18:41 +03:00
var META_SCHEMA_ID = 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json';
2015-11-22 03:31:01 +03:00
module.exports = {
2015-12-13 00:18:41 +03:00
enable: enableV5,
META_SCHEMA_ID: META_SCHEMA_ID
2015-11-22 03:31:01 +03:00
};
function enableV5(ajv) {
2015-12-13 00:18:41 +03:00
if (ajv.opts.meta !== false) {
var metaSchema = require('./refs/json-schema-v5.json');
ajv.addMetaSchema(metaSchema, META_SCHEMA_ID);
}
ajv.addKeyword('constant', { inline: require('./dotjs/constant'), statements: true, errors: 'full' });
2015-11-22 03:31:01 +03:00
ajv.addKeyword('contains', { macro: containsMacro });
var formatLimit = require('./dotjs/_formatLimit');
ajv.addKeyword('formatMaximum', { type: 'string', inline: formatLimit, statements: true, errors: 'full' });
ajv.addKeyword('formatMinimum', { type: 'string', inline: formatLimit, statements: true, errors: 'full' });
ajv.addKeyword('exclusiveFormatMaximum');
ajv.addKeyword('exclusiveFormatMinimum');
2015-12-12 16:41:51 +03:00
ajv.addKeyword('patternGroups'); // implemented in properties.jst
ajv.addKeyword('switch', { inline: require('./dotjs/switch'), statements: true, errors: 'full' });
2015-11-22 03:31:01 +03:00
}
function containsMacro(schema) {
return {
"not": {
"type": "array",
"items": { "not": schema }
}
};
2015-11-22 03:31:01 +03:00
}