| "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 = (0, codegen_1._) `${names_1.default.dynamicAnchors}${(0, codegen_1.getProperty)(anchor)}`; |
| const validate = it.errSchemaPath === "#" ? it.validateName : _getValidate(cxt); |
| gen.if((0, 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 (0, ref_1.getValidate)(cxt, sch); |
| } |
| exports.default = def; |
| //# sourceMappingURL=dynamicAnchor.js.map |