| "use strict"; |
| Object.defineProperty(exports, "__esModule", { value: true }); |
| const codegen_1 = require("../../compile/codegen"); |
| const util_1 = require("../../compile/util"); |
| const error = { |
| message: ({ params: { len } }) => (0, codegen_1.str) `must NOT have more than ${len} items`, |
| params: ({ params: { len } }) => (0, codegen_1._) `{limit: ${len}}`, |
| }; |
| const def = { |
| keyword: "unevaluatedItems", |
| type: "array", |
| schemaType: ["boolean", "object"], |
| error, |
| code(cxt) { |
| const { gen, schema, data, it } = cxt; |
| const items = it.items || 0; |
| if (items === true) |
| return; |
| const len = gen.const("len", (0, codegen_1._) `${data}.length`); |
| if (schema === false) { |
| cxt.setParams({ len: items }); |
| cxt.fail((0, codegen_1._) `${len} > ${items}`); |
| } |
| else if (typeof schema == "object" && !(0, util_1.alwaysValidSchema)(it, schema)) { |
| const valid = gen.var("valid", (0, codegen_1._) `${len} <= ${items}`); |
| gen.if((0, codegen_1.not)(valid), () => validateItems(valid, items)); |
| cxt.ok(valid); |
| } |
| it.items = true; |
| function validateItems(valid, from) { |
| gen.forRange("i", from, len, (i) => { |
| cxt.subschema({ keyword: "unevaluatedItems", dataProp: i, dataPropType: util_1.Type.Num }, valid); |
| if (!it.allErrors) |
| gen.if((0, codegen_1.not)(valid), () => gen.break()); |
| }); |
| } |
| }, |
| }; |
| exports.default = def; |
| //# sourceMappingURL=unevaluatedItems.js.map |