123456789101112131415161718192021222324252627282930313233343536 |
- import type {
- CodeKeywordDefinition,
- KeywordErrorDefinition,
- ErrorObject,
- AnySchema,
- } from "../../types"
- import type {KeywordCxt} from "../../compile/validate"
- import {_, str} from "../../compile/codegen"
- import {alwaysValidSchema} from "../../compile/util"
- import {validateArray} from "../code"
- import {validateAdditionalItems} from "./additionalItems"
- export type ItemsError = ErrorObject<"items", {limit: number}, AnySchema>
- const error: KeywordErrorDefinition = {
- message: ({params: {len}}) => str`must NOT have more than ${len} items`,
- params: ({params: {len}}) => _`{limit: ${len}}`,
- }
- const def: CodeKeywordDefinition = {
- keyword: "items",
- type: "array",
- schemaType: ["object", "boolean"],
- before: "uniqueItems",
- error,
- code(cxt: KeywordCxt) {
- const {schema, parentSchema, it} = cxt
- const {prefixItems} = parentSchema
- it.items = true
- if (alwaysValidSchema(it, schema)) return
- if (prefixItems) validateAdditionalItems(cxt, prefixItems)
- else cxt.ok(validateArray(cxt))
- },
- }
- export default def
|