Spaces:
Sleeping
Sleeping
; | |
module.exports = function defFunc(ajv) { | |
defFunc.definition = { | |
type: 'number', | |
macro: function (schema, parentSchema) { | |
var min = schema[0] | |
, max = schema[1] | |
, exclusive = parentSchema.exclusiveRange; | |
validateRangeSchema(min, max, exclusive); | |
return exclusive === true | |
? {exclusiveMinimum: min, exclusiveMaximum: max} | |
: {minimum: min, maximum: max}; | |
}, | |
metaSchema: { | |
type: 'array', | |
minItems: 2, | |
maxItems: 2, | |
items: { type: 'number' } | |
} | |
}; | |
ajv.addKeyword('range', defFunc.definition); | |
ajv.addKeyword('exclusiveRange'); | |
return ajv; | |
function validateRangeSchema(min, max, exclusive) { | |
if (exclusive !== undefined && typeof exclusive != 'boolean') | |
throw new Error('Invalid schema for exclusiveRange keyword, should be boolean'); | |
if (min > max || (exclusive && min == max)) | |
throw new Error('There are no numbers in range'); | |
} | |
}; | |