You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			37 lines
		
	
	
		
			985 B
		
	
	
	
		
			JavaScript
		
	
		
		
			
		
	
	
			37 lines
		
	
	
		
			985 B
		
	
	
	
		
			JavaScript
		
	
| 
											9 months ago
										 | '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'); | ||
|  |   } | ||
|  | }; |