| "use strict"; |
| |
| Object.defineProperty(exports, "__esModule", { |
| value: true |
| }); |
| exports.default = void 0; |
| exports.get = get; |
| exports.getDependencies = getDependencies; |
| 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(); |
| } |
| { |
| 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 |