Spaces:
Sleeping
Sleeping
import type {CodeKeywordDefinition, KeywordCxt} from "ajv" | |
import {_} from "ajv/dist/compile/codegen" | |
const TYPES = ["undefined", "string", "number", "object", "function", "boolean", "symbol"] | |
export default function getDef(): CodeKeywordDefinition { | |
return { | |
keyword: "typeof", | |
schemaType: ["string", "array"], | |
code(cxt: KeywordCxt) { | |
const {data, schema, schemaValue} = cxt | |
cxt.fail( | |
typeof schema == "string" | |
? _`typeof ${data} != ${schema}` | |
: _`${schemaValue}.indexOf(typeof ${data}) < 0` | |
) | |
}, | |
metaSchema: { | |
anyOf: [ | |
{type: "string", enum: TYPES}, | |
{type: "array", items: {type: "string", enum: TYPES}}, | |
], | |
}, | |
} | |
} | |
module.exports = getDef | |