You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					30 lines
				
				1.2 KiB
			
		
		
			
		
	
	
					30 lines
				
				1.2 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								"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
							 |