"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.dynamicAnchor = void 0; const codegen_1 = require("../../compile/codegen"); const names_1 = require("../../compile/names"); const compile_1 = require("../../compile"); const ref_1 = require("../core/ref"); const def = { keyword: "$dynamicAnchor", schemaType: "string", code: (cxt) => dynamicAnchor(cxt, cxt.schema), }; function dynamicAnchor(cxt, anchor) { const { gen, it } = cxt; it.schemaEnv.root.dynamicAnchors[anchor] = true; const v = codegen_1._ `${names_1.default.dynamicAnchors}${codegen_1.getProperty(anchor)}`; const validate = it.errSchemaPath === "#" ? it.validateName : _getValidate(cxt); gen.if(codegen_1._ `!${v}`, () => gen.assign(v, validate)); } exports.dynamicAnchor = dynamicAnchor; function _getValidate(cxt) { const { schemaEnv, schema, self } = cxt.it; const { root, baseId, localRefs, meta } = schemaEnv.root; const { schemaId } = self.opts; const sch = new compile_1.SchemaEnv({ schema, schemaId, root, baseId, localRefs, meta }); compile_1.compileSchema.call(self, sch); return ref_1.getValidate(cxt, sch); } exports.default = def; //# sourceMappingURL=dynamicAnchor.js.map