| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 | | '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'); |  |   } |  | }; | 
 |