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