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.
		
		
		
		
		
			
		
			
	
	
		
			59 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
		
		
			
		
	
	
			59 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
| 
											9 months ago
										 | 'use strict'; | ||
|  | 
 | ||
|  | var CONSTRUCTORS = { | ||
|  |   Object: Object, | ||
|  |   Array: Array, | ||
|  |   Function: Function, | ||
|  |   Number: Number, | ||
|  |   String: String, | ||
|  |   Date: Date, | ||
|  |   RegExp: RegExp | ||
|  | }; | ||
|  | 
 | ||
|  | module.exports = function defFunc(ajv) { | ||
|  |   /* istanbul ignore else */ | ||
|  |   if (typeof Buffer != 'undefined') | ||
|  |     CONSTRUCTORS.Buffer = Buffer; | ||
|  | 
 | ||
|  |   /* istanbul ignore else */ | ||
|  |   if (typeof Promise != 'undefined') | ||
|  |     CONSTRUCTORS.Promise = Promise; | ||
|  | 
 | ||
|  |   defFunc.definition = { | ||
|  |     compile: function (schema) { | ||
|  |       if (typeof schema == 'string') { | ||
|  |         var Constructor = getConstructor(schema); | ||
|  |         return function (data) { | ||
|  |           return data instanceof Constructor; | ||
|  |         }; | ||
|  |       } | ||
|  | 
 | ||
|  |       var constructors = schema.map(getConstructor); | ||
|  |       return function (data) { | ||
|  |         for (var i=0; i<constructors.length; i++) | ||
|  |           if (data instanceof constructors[i]) return true; | ||
|  |         return false; | ||
|  |       }; | ||
|  |     }, | ||
|  |     CONSTRUCTORS: CONSTRUCTORS, | ||
|  |     metaSchema: { | ||
|  |       anyOf: [ | ||
|  |         { type: 'string' }, | ||
|  |         { | ||
|  |           type: 'array', | ||
|  |           items: { type: 'string' } | ||
|  |         } | ||
|  |       ] | ||
|  |     } | ||
|  |   }; | ||
|  | 
 | ||
|  |   ajv.addKeyword('instanceof', defFunc.definition); | ||
|  |   return ajv; | ||
|  | 
 | ||
|  |   function getConstructor(c) { | ||
|  |     var Constructor = CONSTRUCTORS[c]; | ||
|  |     if (Constructor) return Constructor; | ||
|  |     throw new Error('invalid "instanceof" keyword value ' + c); | ||
|  |   } | ||
|  | }; |