| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | '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);  }};
 |