Blame view

node_modules/ajv-keywords/keywords/range.js 985 Bytes
aaac7fed   liuqimichale   add
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');
    }
  };