127 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| 
 | |
| Object.defineProperty(exports, "__esModule", {
 | |
|   value: true
 | |
| });
 | |
| exports.default = void 0;
 | |
| exports.get = get;
 | |
| exports.getDependencies = getDependencies;
 | |
| exports.isInternal = isInternal;
 | |
| exports.list = void 0;
 | |
| exports.minVersion = minVersion;
 | |
| var _t = require("@babel/types");
 | |
| var _helpersGenerated = require("./helpers-generated.js");
 | |
| const {
 | |
|   cloneNode,
 | |
|   identifier
 | |
| } = _t;
 | |
| function deep(obj, path, value) {
 | |
|   try {
 | |
|     const parts = path.split(".");
 | |
|     let last = parts.shift();
 | |
|     while (parts.length > 0) {
 | |
|       obj = obj[last];
 | |
|       last = parts.shift();
 | |
|     }
 | |
|     if (arguments.length > 2) {
 | |
|       obj[last] = value;
 | |
|     } else {
 | |
|       return obj[last];
 | |
|     }
 | |
|   } catch (e) {
 | |
|     e.message += ` (when accessing ${path})`;
 | |
|     throw e;
 | |
|   }
 | |
| }
 | |
| function permuteHelperAST(ast, metadata, bindingName, localBindings, getDependency, adjustAst) {
 | |
|   const {
 | |
|     locals,
 | |
|     dependencies,
 | |
|     exportBindingAssignments,
 | |
|     exportName
 | |
|   } = metadata;
 | |
|   const bindings = new Set(localBindings || []);
 | |
|   if (bindingName) bindings.add(bindingName);
 | |
|   for (const [name, paths] of (Object.entries || (o => Object.keys(o).map(k => [k, o[k]])))(locals)) {
 | |
|     let newName = name;
 | |
|     if (bindingName && name === exportName) {
 | |
|       newName = bindingName;
 | |
|     } else {
 | |
|       while (bindings.has(newName)) newName = "_" + newName;
 | |
|     }
 | |
|     if (newName !== name) {
 | |
|       for (const path of paths) {
 | |
|         deep(ast, path, identifier(newName));
 | |
|       }
 | |
|     }
 | |
|   }
 | |
|   for (const [name, paths] of (Object.entries || (o => Object.keys(o).map(k => [k, o[k]])))(dependencies)) {
 | |
|     const ref = typeof getDependency === "function" && getDependency(name) || identifier(name);
 | |
|     for (const path of paths) {
 | |
|       deep(ast, path, cloneNode(ref));
 | |
|     }
 | |
|   }
 | |
|   adjustAst == null || adjustAst(ast, exportName, map => {
 | |
|     exportBindingAssignments.forEach(p => deep(ast, p, map(deep(ast, p))));
 | |
|   });
 | |
| }
 | |
| const helperData = Object.create(null);
 | |
| function loadHelper(name) {
 | |
|   if (!helperData[name]) {
 | |
|     const helper = _helpersGenerated.default[name];
 | |
|     if (!helper) {
 | |
|       throw Object.assign(new ReferenceError(`Unknown helper ${name}`), {
 | |
|         code: "BABEL_HELPER_UNKNOWN",
 | |
|         helper: name
 | |
|       });
 | |
|     }
 | |
|     helperData[name] = {
 | |
|       minVersion: helper.minVersion,
 | |
|       build(getDependency, bindingName, localBindings, adjustAst) {
 | |
|         const ast = helper.ast();
 | |
|         permuteHelperAST(ast, helper.metadata, bindingName, localBindings, getDependency, adjustAst);
 | |
|         return {
 | |
|           nodes: ast.body,
 | |
|           globals: helper.metadata.globals
 | |
|         };
 | |
|       },
 | |
|       getDependencies() {
 | |
|         return Object.keys(helper.metadata.dependencies);
 | |
|       }
 | |
|     };
 | |
|   }
 | |
|   return helperData[name];
 | |
| }
 | |
| function get(name, getDependency, bindingName, localBindings, adjustAst) {
 | |
|   {
 | |
|     if (typeof bindingName === "object") {
 | |
|       const id = bindingName;
 | |
|       if ((id == null ? void 0 : id.type) === "Identifier") {
 | |
|         bindingName = id.name;
 | |
|       } else {
 | |
|         bindingName = undefined;
 | |
|       }
 | |
|     }
 | |
|   }
 | |
|   return loadHelper(name).build(getDependency, bindingName, localBindings, adjustAst);
 | |
| }
 | |
| function minVersion(name) {
 | |
|   return loadHelper(name).minVersion;
 | |
| }
 | |
| function getDependencies(name) {
 | |
|   return loadHelper(name).getDependencies();
 | |
| }
 | |
| function isInternal(name) {
 | |
|   var _helpers$name;
 | |
|   return (_helpers$name = _helpersGenerated.default[name]) == null ? void 0 : _helpers$name.metadata.internal;
 | |
| }
 | |
| {
 | |
|   exports.ensure = name => {
 | |
|     loadHelper(name);
 | |
|   };
 | |
| }
 | |
| const list = exports.list = Object.keys(_helpersGenerated.default).map(name => name.replace(/^_/, ""));
 | |
| var _default = exports.default = get;
 | |
| 
 | |
| //# sourceMappingURL=index.js.map
 |