1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| 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
|
|