diff options
Diffstat (limited to 'tools/node_modules/eslint/node_modules/ajv-keywords/keywords/range.js')
-rw-r--r-- | tools/node_modules/eslint/node_modules/ajv-keywords/keywords/range.js | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/range.js b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/range.js new file mode 100644 index 0000000000..9c1fd3ffdd --- /dev/null +++ b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/range.js @@ -0,0 +1,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'); + } +}; |