You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.0 KiB
49 lines
1.0 KiB
'use strict'; |
|
|
|
var KEYWORDS = [ |
|
'multipleOf', |
|
'maximum', |
|
'exclusiveMaximum', |
|
'minimum', |
|
'exclusiveMinimum', |
|
'maxLength', |
|
'minLength', |
|
'pattern', |
|
'additionalItems', |
|
'maxItems', |
|
'minItems', |
|
'uniqueItems', |
|
'maxProperties', |
|
'minProperties', |
|
'required', |
|
'additionalProperties', |
|
'enum', |
|
'format', |
|
'const' |
|
]; |
|
|
|
module.exports = function (metaSchema, keywordsJsonPointers) { |
|
for (var i=0; i<keywordsJsonPointers.length; i++) { |
|
metaSchema = JSON.parse(JSON.stringify(metaSchema)); |
|
var segments = keywordsJsonPointers[i].split('/'); |
|
var keywords = metaSchema; |
|
var j; |
|
for (j=1; j<segments.length; j++) |
|
keywords = keywords[segments[j]]; |
|
|
|
for (j=0; j<KEYWORDS.length; j++) { |
|
var key = KEYWORDS[j]; |
|
var schema = keywords[key]; |
|
if (schema) { |
|
keywords[key] = { |
|
anyOf: [ |
|
schema, |
|
{ $ref: 'https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#' } |
|
] |
|
}; |
|
} |
|
} |
|
} |
|
|
|
return metaSchema; |
|
};
|
|
|