"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 } }) => codegen_1.str `must NOT have more than ${len} items`, params: ({ params: { len } }) => 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", codegen_1._ `${data}.length`); if (schema === false) { cxt.setParams({ len: items }); cxt.fail(codegen_1._ `${len} > ${items}`); } else if (typeof schema == "object" && !util_1.alwaysValidSchema(it, schema)) { const valid = gen.var("valid", codegen_1._ `${len} <= ${items}`); gen.if(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(codegen_1.not(valid), () => gen.break()); }); } }, }; exports.default = def; //# sourceMappingURL=unevaluatedItems.js.map