index.js.map 17 KB

1
  1. {"version":3,"names":["declare","api","options","assertVersion","strictNamespace","mjsStrictNamespace","allowTopLevelThis","strict","strictMode","noInterop","importInterop","lazy","allowCommonJSExports","loose","constantReexports","assumption","enumerableModuleMeta","noIncompleteNsImportDetection","Array","isArray","every","item","Error","getAssertion","localName","template","expression","ast","moduleExportsVisitor","ReferencedIdentifier","path","node","name","localBinding","scope","getBinding","rootBinding","parentPath","isObjectProperty","value","isObjectPattern","isAssignmentExpression","left","replaceWith","UpdateExpression","arg","get","isIdentifier","t","assignmentExpression","operator","AssignmentExpression","right","sequenceExpression","isPattern","ids","getOuterBindingIdentifiers","Object","keys","filter","pre","file","set","visitor","CallExpression","has","isImport","callee","rename","parent","transformDynamicImport","Program","exit","state","isModule","simplifyAccess","Set","traverse","moduleName","getModuleName","opts","stringLiteral","meta","headers","rewriteModuleStatementsAndPrepareHeader","exportName","esNamespaceOnly","filename","test","source","metadata","loadExpr","callExpression","identifier","header","isSideEffectImport","expressionStatement","init","wrapInterop","interop","statement","loc","push","buildNamespaceInitStatements","ensureStatementsHoisted","unshiftContainer","forEach","indexOf","isVariableDeclaration","registerDeclaration"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport {\n isModule,\n rewriteModuleStatementsAndPrepareHeader,\n type RewriteModuleStatementsAndPrepareHeaderOptions,\n isSideEffectImport,\n buildNamespaceInitStatements,\n ensureStatementsHoisted,\n wrapInterop,\n getModuleName,\n} from \"@babel/helper-module-transforms\";\nimport simplifyAccess from \"@babel/helper-simple-access\";\nimport { template, types as t } from \"@babel/core\";\nimport type { PluginOptions } from \"@babel/helper-module-transforms\";\nimport type { Visitor, Scope } from \"@babel/traverse\";\n\nimport { transformDynamicImport } from \"./dynamic-import\";\n\nexport interface Options extends PluginOptions {\n allowCommonJSExports?: boolean;\n allowTopLevelThis?: boolean;\n importInterop?: RewriteModuleStatementsAndPrepareHeaderOptions[\"importInterop\"];\n lazy?: RewriteModuleStatementsAndPrepareHeaderOptions[\"lazy\"];\n loose?: boolean;\n mjsStrictNamespace?: boolean;\n noInterop?: boolean;\n strict?: boolean;\n strictMode?: boolean;\n strictNamespace?: boolean;\n}\n\nexport default declare((api, options: Options) => {\n api.assertVersion(7);\n\n const {\n // 'true' for imports to strictly have .default, instead of having\n // destructuring-like behavior for their properties. This matches the behavior\n // of the initial Node.js (v12) behavior when importing a CommonJS without\n // the __esMoule property.\n // .strictNamespace is for non-mjs files, mjsStrictNamespace if for mjs files.\n strictNamespace = false,\n mjsStrictNamespace = strictNamespace,\n\n allowTopLevelThis,\n strict,\n strictMode,\n noInterop,\n importInterop,\n lazy = false,\n // Defaulting to 'true' for now. May change before 7.x major.\n allowCommonJSExports = true,\n loose = false,\n } = options;\n\n const constantReexports = api.assumption(\"constantReexports\") ?? loose;\n const enumerableModuleMeta = api.assumption(\"enumerableModuleMeta\") ?? loose;\n const noIncompleteNsImportDetection =\n api.assumption(\"noIncompleteNsImportDetection\") ?? false;\n\n if (\n typeof lazy !== \"boolean\" &&\n typeof lazy !== \"function\" &&\n (!Array.isArray(lazy) || !lazy.every(item => typeof item === \"string\"))\n ) {\n throw new Error(`.lazy must be a boolean, array of strings, or a function`);\n }\n\n if (typeof strictNamespace !== \"boolean\") {\n throw new Error(`.strictNamespace must be a boolean, or undefined`);\n }\n if (typeof mjsStrictNamespace !== \"boolean\") {\n throw new Error(`.mjsStrictNamespace must be a boolean, or undefined`);\n }\n\n const getAssertion = (localName: string) => template.expression.ast`\n (function(){\n throw new Error(\n \"The CommonJS '\" + \"${localName}\" + \"' variable is not available in ES6 modules.\" +\n \"Consider setting setting sourceType:script or sourceType:unambiguous in your \" +\n \"Babel config for this file.\");\n })()\n `;\n\n const moduleExportsVisitor: Visitor<{ scope: Scope }> = {\n ReferencedIdentifier(path) {\n const localName = path.node.name;\n if (localName !== \"module\" && localName !== \"exports\") return;\n\n const localBinding = path.scope.getBinding(localName);\n const rootBinding = this.scope.getBinding(localName);\n\n if (\n // redeclared in this scope\n rootBinding !== localBinding ||\n (path.parentPath.isObjectProperty({ value: path.node }) &&\n path.parentPath.parentPath.isObjectPattern()) ||\n path.parentPath.isAssignmentExpression({ left: path.node }) ||\n path.isAssignmentExpression({ left: path.node })\n ) {\n return;\n }\n\n path.replaceWith(getAssertion(localName));\n },\n\n UpdateExpression(path) {\n const arg = path.get(\"argument\");\n if (!arg.isIdentifier()) return;\n const localName = arg.node.name;\n if (localName !== \"module\" && localName !== \"exports\") return;\n\n const localBinding = path.scope.getBinding(localName);\n const rootBinding = this.scope.getBinding(localName);\n\n // redeclared in this scope\n if (rootBinding !== localBinding) return;\n\n path.replaceWith(\n t.assignmentExpression(\n path.node.operator[0] + \"=\",\n arg.node,\n getAssertion(localName),\n ),\n );\n },\n\n AssignmentExpression(path) {\n const left = path.get(\"left\");\n if (left.isIdentifier()) {\n const localName = left.node.name;\n if (localName !== \"module\" && localName !== \"exports\") return;\n\n const localBinding = path.scope.getBinding(localName);\n const rootBinding = this.scope.getBinding(localName);\n\n // redeclared in this scope\n if (rootBinding !== localBinding) return;\n\n const right = path.get(\"right\");\n right.replaceWith(\n t.sequenceExpression([right.node, getAssertion(localName)]),\n );\n } else if (left.isPattern()) {\n const ids = left.getOuterBindingIdentifiers();\n const localName = Object.keys(ids).filter(localName => {\n if (localName !== \"module\" && localName !== \"exports\") return false;\n\n return (\n this.scope.getBinding(localName) ===\n path.scope.getBinding(localName)\n );\n })[0];\n\n if (localName) {\n const right = path.get(\"right\");\n right.replaceWith(\n t.sequenceExpression([right.node, getAssertion(localName)]),\n );\n }\n }\n },\n };\n\n return {\n name: \"transform-modules-commonjs\",\n\n pre() {\n this.file.set(\"@babel/plugin-transform-modules-*\", \"commonjs\");\n },\n\n visitor: {\n CallExpression(path) {\n if (!this.file.has(\"@babel/plugin-proposal-dynamic-import\")) return;\n if (!t.isImport(path.node.callee)) return;\n\n let { scope } = path;\n do {\n scope.rename(\"require\");\n } while ((scope = scope.parent));\n\n transformDynamicImport(path, noInterop, this.file);\n },\n\n Program: {\n exit(path, state) {\n if (!isModule(path)) return;\n\n // Rename the bindings auto-injected into the scope so there is no\n // risk of conflict between the bindings.\n path.scope.rename(\"exports\");\n path.scope.rename(\"module\");\n path.scope.rename(\"require\");\n path.scope.rename(\"__filename\");\n path.scope.rename(\"__dirname\");\n\n // Rewrite references to 'module' and 'exports' to throw exceptions.\n // These objects are specific to CommonJS and are not available in\n // real ES6 implementations.\n if (!allowCommonJSExports) {\n simplifyAccess(path, new Set([\"module\", \"exports\"]), false);\n path.traverse(moduleExportsVisitor, {\n scope: path.scope,\n });\n }\n\n let moduleName = getModuleName(this.file.opts, options);\n // @ts-expect-error todo(flow->ts): do not reuse variables\n if (moduleName) moduleName = t.stringLiteral(moduleName);\n\n const { meta, headers } = rewriteModuleStatementsAndPrepareHeader(\n path,\n {\n exportName: \"exports\",\n constantReexports,\n enumerableModuleMeta,\n strict,\n strictMode,\n allowTopLevelThis,\n noInterop,\n importInterop,\n lazy,\n esNamespaceOnly:\n typeof state.filename === \"string\" &&\n /\\.mjs$/.test(state.filename)\n ? mjsStrictNamespace\n : strictNamespace,\n noIncompleteNsImportDetection,\n filename: this.file.opts.filename,\n },\n );\n\n for (const [source, metadata] of meta.source) {\n const loadExpr = t.callExpression(t.identifier(\"require\"), [\n t.stringLiteral(source),\n ]);\n\n let header: t.Statement;\n if (isSideEffectImport(metadata)) {\n if (metadata.lazy) throw new Error(\"Assertion failure\");\n\n header = t.expressionStatement(loadExpr);\n } else {\n const init =\n wrapInterop(path, loadExpr, metadata.interop) || loadExpr;\n\n if (metadata.lazy) {\n header = template.statement.ast`\n function ${metadata.name}() {\n const data = ${init};\n ${metadata.name} = function(){ return data; };\n return data;\n }\n `;\n } else {\n header = template.statement.ast`\n var ${metadata.name} = ${init};\n `;\n }\n }\n header.loc = metadata.loc;\n\n headers.push(header);\n headers.push(\n ...buildNamespaceInitStatements(\n meta,\n metadata,\n constantReexports,\n ),\n );\n }\n\n ensureStatementsHoisted(headers);\n path.unshiftContainer(\"body\", headers);\n path.get(\"body\").forEach(path => {\n if (headers.indexOf(path.node) === -1) return;\n if (path.isVariableDeclaration()) {\n path.scope.registerDeclaration(path);\n }\n });\n },\n },\n },\n };\n});\n"],"mappings":"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"}