1 |
- {"version":3,"names":["buildWrapper","template","statement","buildAnonymousWrapper","injectWrapper","path","wrapper","body","directives","node","amdFactoryCall","pushContainer","get","amdFactoryCallArgs","amdFactory","length","declare","api","options","assertVersion","allowTopLevelThis","strict","strictMode","importInterop","noInterop","constantReexports","assumption","loose","enumerableModuleMeta","name","pre","file","set","visitor","CallExpression","state","has","isImport","requireId","resolveId","rejectId","scope","generateUidIdentifier","result","t","identifier","wrapInterop","replaceWith","expression","ast","getDynamicImportSource","cloneNode","Program","exit","isModule","REQUIRE","amdArgs","importNames","push","stringLiteral","moduleName","getModuleName","opts","meta","headers","rewriteModuleStatementsAndPrepareHeader","filename","hasExports","exportName","source","metadata","isSideEffectImport","interop","header","expressionStatement","assignmentExpression","loc","buildNamespaceInitStatements","ensureStatementsHoisted","unshiftContainer","MODULE_NAME","AMD_ARGUMENTS","arrayExpression","IMPORT_NAMES"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport {\n isModule,\n rewriteModuleStatementsAndPrepareHeader,\n type RewriteModuleStatementsAndPrepareHeaderOptions,\n hasExports,\n isSideEffectImport,\n buildNamespaceInitStatements,\n ensureStatementsHoisted,\n wrapInterop,\n getModuleName,\n getDynamicImportSource,\n} from \"@babel/helper-module-transforms\";\nimport { template, types as t } from \"@babel/core\";\nimport type { PluginOptions } from \"@babel/helper-module-transforms\";\nimport type { NodePath } from \"@babel/traverse\";\n\nconst buildWrapper = template.statement(`\n define(MODULE_NAME, AMD_ARGUMENTS, function(IMPORT_NAMES) {\n })\n`);\n\nconst buildAnonymousWrapper = template.statement(`\n define([\"require\"], function(REQUIRE) {\n })\n`);\n\nfunction injectWrapper(\n path: NodePath<t.Program>,\n wrapper: t.ExpressionStatement,\n) {\n const { body, directives } = path.node;\n path.node.directives = [];\n path.node.body = [];\n const amdFactoryCall = path\n .pushContainer(\"body\", wrapper)[0]\n .get(\"expression\") as NodePath<t.CallExpression>;\n const amdFactoryCallArgs = amdFactoryCall.get(\"arguments\");\n const amdFactory = (\n amdFactoryCallArgs[\n amdFactoryCallArgs.length - 1\n ] as NodePath<t.FunctionExpression>\n ).get(\"body\") as NodePath<t.BlockStatement>;\n amdFactory.pushContainer(\"directives\", directives);\n amdFactory.pushContainer(\"body\", body);\n}\n\nexport interface Options extends PluginOptions {\n allowTopLevelThis?: boolean;\n importInterop?: RewriteModuleStatementsAndPrepareHeaderOptions[\"importInterop\"];\n loose?: boolean;\n noInterop?: boolean;\n strict?: boolean;\n strictMode?: boolean;\n}\n\ntype State = {\n requireId?: t.Identifier;\n resolveId?: t.Identifier;\n rejectId?: t.Identifier;\n};\n\nexport default declare<State>((api, options: Options) => {\n api.assertVersion(7);\n\n const { allowTopLevelThis, strict, strictMode, importInterop, noInterop } =\n options;\n\n const constantReexports =\n api.assumption(\"constantReexports\") ?? options.loose;\n const enumerableModuleMeta =\n api.assumption(\"enumerableModuleMeta\") ?? options.loose;\n\n return {\n name: \"transform-modules-amd\",\n\n pre() {\n this.file.set(\"@babel/plugin-transform-modules-*\", \"amd\");\n },\n\n visitor: {\n CallExpression(path, state) {\n if (!this.file.has(\"@babel/plugin-proposal-dynamic-import\")) return;\n if (!path.get(\"callee\").isImport()) return;\n\n let { requireId, resolveId, rejectId } = state;\n if (!requireId) {\n requireId = path.scope.generateUidIdentifier(\"require\");\n state.requireId = requireId;\n }\n if (!resolveId || !rejectId) {\n resolveId = path.scope.generateUidIdentifier(\"resolve\");\n rejectId = path.scope.generateUidIdentifier(\"reject\");\n state.resolveId = resolveId;\n state.rejectId = rejectId;\n }\n\n let result: t.Node = t.identifier(\"imported\");\n if (!noInterop) result = wrapInterop(path, result, \"namespace\");\n\n path.replaceWith(\n template.expression.ast`\n new Promise((${resolveId}, ${rejectId}) =>\n ${requireId}(\n [${getDynamicImportSource(path.node)}],\n imported => ${t.cloneNode(resolveId)}(${result}),\n ${t.cloneNode(rejectId)}\n )\n )`,\n );\n },\n\n Program: {\n exit(path, { requireId }) {\n if (!isModule(path)) {\n if (requireId) {\n injectWrapper(\n path,\n buildAnonymousWrapper({\n REQUIRE: t.cloneNode(requireId),\n }) as t.ExpressionStatement,\n );\n }\n return;\n }\n\n const amdArgs = [];\n const importNames = [];\n if (requireId) {\n amdArgs.push(t.stringLiteral(\"require\"));\n importNames.push(t.cloneNode(requireId));\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 enumerableModuleMeta,\n constantReexports,\n strict,\n strictMode,\n allowTopLevelThis,\n importInterop,\n noInterop,\n filename: this.file.opts.filename,\n },\n );\n\n if (hasExports(meta)) {\n amdArgs.push(t.stringLiteral(\"exports\"));\n\n importNames.push(t.identifier(meta.exportName));\n }\n\n for (const [source, metadata] of meta.source) {\n amdArgs.push(t.stringLiteral(source));\n importNames.push(t.identifier(metadata.name));\n\n if (!isSideEffectImport(metadata)) {\n const interop = wrapInterop(\n path,\n t.identifier(metadata.name),\n metadata.interop,\n );\n if (interop) {\n const header = t.expressionStatement(\n t.assignmentExpression(\n \"=\",\n t.identifier(metadata.name),\n interop,\n ),\n );\n header.loc = metadata.loc;\n headers.push(header);\n }\n }\n\n headers.push(\n ...buildNamespaceInitStatements(\n meta,\n metadata,\n constantReexports,\n ),\n );\n }\n\n ensureStatementsHoisted(headers);\n path.unshiftContainer(\"body\", headers);\n\n injectWrapper(\n path,\n buildWrapper({\n MODULE_NAME: moduleName,\n\n AMD_ARGUMENTS: t.arrayExpression(amdArgs),\n IMPORT_NAMES: importNames,\n }) as t.ExpressionStatement,\n );\n },\n },\n },\n };\n});\n"],"mappings":"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"}
|