import type {CodeKeywordDefinition, AnySchema} from "../../types" import type {KeywordCxt} from "../../compile/validate" import {alwaysValidSchema} from "../../compile/util" const def: CodeKeywordDefinition = { keyword: "allOf", schemaType: "array", code(cxt: KeywordCxt) { const {gen, schema, it} = cxt /* istanbul ignore if */ if (!Array.isArray(schema)) throw new Error("ajv implementation error") const valid = gen.name("valid") schema.forEach((sch: AnySchema, i: number) => { if (alwaysValidSchema(it, sch)) return const schCxt = cxt.subschema({keyword: "allOf", schemaProp: i}, valid) cxt.ok(valid) cxt.mergeEvaluated(schCxt) }) }, } export default def