3 KeywordErrorDefinition,
7 import type {KeywordCxt} from "../../compile/validate"
8 import {_, str} from "../../compile/codegen"
9 import {alwaysValidSchema} from "../../compile/util"
10 import {validateArray} from "../code"
11 import {validateAdditionalItems} from "./additionalItems"
13 export type ItemsError = ErrorObject<"items", {limit: number}, AnySchema>
15 const error: KeywordErrorDefinition = {
16 message: ({params: {len}}) => str`must NOT have more than ${len} items`,
17 params: ({params: {len}}) => _`{limit: ${len}}`,
20 const def: CodeKeywordDefinition = {
23 schemaType: ["object", "boolean"],
24 before: "uniqueItems",
26 code(cxt: KeywordCxt) {
27 const {schema, parentSchema, it} = cxt
28 const {prefixItems} = parentSchema
30 if (alwaysValidSchema(it, schema)) return
31 if (prefixItems) validateAdditionalItems(cxt, prefixItems)
32 else cxt.ok(validateArray(cxt))