Spaces:
Runtime error
Runtime error
| import type {FuncKeywordDefinition} from "ajv" | |
| type Constructor = new (...args: any[]) => any | |
| const CONSTRUCTORS: Record<string, Constructor | undefined> = { | |
| Object, | |
| Array, | |
| Function, | |
| Number, | |
| String, | |
| Date, | |
| RegExp, | |
| } | |
| /* istanbul ignore else */ | |
| if (typeof Buffer != "undefined") CONSTRUCTORS.Buffer = Buffer | |
| /* istanbul ignore else */ | |
| if (typeof Promise != "undefined") CONSTRUCTORS.Promise = Promise | |
| const getDef: (() => FuncKeywordDefinition) & { | |
| CONSTRUCTORS: typeof CONSTRUCTORS | |
| } = Object.assign(_getDef, {CONSTRUCTORS}) | |
| function _getDef(): FuncKeywordDefinition { | |
| return { | |
| keyword: "instanceof", | |
| schemaType: ["string", "array"], | |
| compile(schema: string | string[]) { | |
| if (typeof schema == "string") { | |
| const C = getConstructor(schema) | |
| return (data) => data instanceof C | |
| } | |
| if (Array.isArray(schema)) { | |
| const constructors = schema.map(getConstructor) | |
| return (data) => { | |
| for (const C of constructors) { | |
| if (data instanceof C) return true | |
| } | |
| return false | |
| } | |
| } | |
| /* istanbul ignore next */ | |
| throw new Error("ajv implementation error") | |
| }, | |
| metaSchema: { | |
| anyOf: [{type: "string"}, {type: "array", items: {type: "string"}}], | |
| }, | |
| } | |
| } | |
| function getConstructor(c: string): Constructor { | |
| const C = CONSTRUCTORS[c] | |
| if (C) return C | |
| throw new Error(`invalid "instanceof" keyword value ${c}`) | |
| } | |
| export default getDef | |
| module.exports = getDef | |