You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							58 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
	
	
							58 lines
						
					
					
						
							1.3 KiB
						
					
					
				'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); | 
						|
  } | 
						|
};
 | 
						|
 |