123456789101112131415161718192021222324252627282930313233343536 |
- 'use strict';
-
- 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');
- }
- };
|