hexo/node_modules/ajv/lib/vocabularies/jtd/elements.ts

23 lines
763 B
TypeScript

import type {CodeKeywordDefinition} from "../../types"
import type KeywordCxt from "../../compile/context"
import {alwaysValidSchema} from "../../compile/util"
import {validateArray} from "../code"
import {_, and, nil} from "../../compile/codegen"
import {checkMetadata} from "./metadata"
import {checkNullable} from "./nullable"
const def: CodeKeywordDefinition = {
keyword: "elements",
schemaType: "object",
code(cxt: KeywordCxt) {
checkMetadata(cxt)
const {gen, data, schema, it} = cxt
if (alwaysValidSchema(it, schema)) return
const [valid, cond] = checkNullable(cxt, nil)
gen.if(and(cond, _`Array.isArray(${data})`), () => gen.assign(valid, validateArray(cxt)))
cxt.pass(valid)
},
}
export default def