"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const util_1 = require("../../compile/util"); const codegen_1 = require("../../compile/codegen"); const metadata_1 = require("./metadata"); const nullable_1 = require("./nullable"); const error_1 = require("./error"); const def = { keyword: "values", schemaType: "object", error: (0, error_1.typeError)("object"), code(cxt) { (0, metadata_1.checkMetadata)(cxt); const { gen, data, schema, it } = cxt; if ((0, util_1.alwaysValidSchema)(it, schema)) return; const [valid, cond] = (0, nullable_1.checkNullableObject)(cxt, data); gen.if(cond); gen.assign(valid, validateMap()); gen.elseIf((0, codegen_1.not)(valid)); cxt.error(); gen.endIf(); cxt.ok(valid); function validateMap() { const _valid = gen.name("valid"); if (it.allErrors) { const validMap = gen.let("valid", true); validateValues(() => gen.assign(validMap, false)); return validMap; } gen.var(_valid, true); validateValues(() => gen.break()); return _valid; function validateValues(notValid) { gen.forIn("key", data, (key) => { cxt.subschema({ keyword: "values", dataProp: key, dataPropType: util_1.Type.Str, }, _valid); gen.if((0, codegen_1.not)(_valid), notValid); }); } } }, }; exports.default = def; //# sourceMappingURL=values.js.map