2 Object.defineProperty(exports, "__esModule", { value: true });
3 const codegen_1 = require("../../compile/codegen");
4 const util_1 = require("../../compile/util");
5 const names_1 = require("../../compile/names");
7 message: "must NOT have unevaluated properties",
8 params: ({ params }) => (0, codegen_1._) `{unevaluatedProperty: ${params.unevaluatedProperty}}`,
11 keyword: "unevaluatedProperties",
13 schemaType: ["boolean", "object"],
17 const { gen, schema, data, errsCount, it } = cxt;
18 /* istanbul ignore if */
20 throw new Error("ajv implementation error");
21 const { allErrors, props } = it;
22 if (props instanceof codegen_1.Name) {
23 gen.if((0, codegen_1._) `${props} !== true`, () => gen.forIn("key", data, (key) => gen.if(unevaluatedDynamic(props, key), () => unevaluatedPropCode(key))));
25 else if (props !== true) {
26 gen.forIn("key", data, (key) => props === undefined
27 ? unevaluatedPropCode(key)
28 : gen.if(unevaluatedStatic(props, key), () => unevaluatedPropCode(key)));
31 cxt.ok((0, codegen_1._) `${errsCount} === ${names_1.default.errors}`);
32 function unevaluatedPropCode(key) {
33 if (schema === false) {
34 cxt.setParams({ unevaluatedProperty: key });
40 if (!(0, util_1.alwaysValidSchema)(it, schema)) {
41 const valid = gen.name("valid");
43 keyword: "unevaluatedProperties",
45 dataPropType: util_1.Type.Str,
48 gen.if((0, codegen_1.not)(valid), () => gen.break());
51 function unevaluatedDynamic(evaluatedProps, key) {
52 return (0, codegen_1._) `!${evaluatedProps} || !${evaluatedProps}[${key}]`;
54 function unevaluatedStatic(evaluatedProps, key) {
56 for (const p in evaluatedProps) {
57 if (evaluatedProps[p] === true)
58 ps.push((0, codegen_1._) `${key} !== ${p}`);
60 return (0, codegen_1.and)(...ps);
64 exports.default = def;
65 //# sourceMappingURL=unevaluatedProperties.js.map