123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = void 0;
- var _helperPluginUtils = require("@babel/helper-plugin-utils");
- var _helperModuleTransforms = require("@babel/helper-module-transforms");
- var _core = require("@babel/core");
- const buildWrapper = _core.template.statement(`
- define(MODULE_NAME, AMD_ARGUMENTS, function(IMPORT_NAMES) {
- })
- `);
- const buildAnonymousWrapper = _core.template.statement(`
- define(["require"], function(REQUIRE) {
- })
- `);
- function injectWrapper(path, wrapper) {
- const {
- body,
- directives
- } = path.node;
- path.node.directives = [];
- path.node.body = [];
- const amdFactoryCall = path.pushContainer("body", wrapper)[0].get("expression");
- const amdFactoryCallArgs = amdFactoryCall.get("arguments");
- const amdFactory = amdFactoryCallArgs[amdFactoryCallArgs.length - 1].get("body");
- amdFactory.pushContainer("directives", directives);
- amdFactory.pushContainer("body", body);
- }
- var _default = (0, _helperPluginUtils.declare)((api, options) => {
- var _api$assumption, _api$assumption2;
- api.assertVersion(7);
- const {
- allowTopLevelThis,
- strict,
- strictMode,
- importInterop,
- noInterop
- } = options;
- const constantReexports = (_api$assumption = api.assumption("constantReexports")) != null ? _api$assumption : options.loose;
- const enumerableModuleMeta = (_api$assumption2 = api.assumption("enumerableModuleMeta")) != null ? _api$assumption2 : options.loose;
- return {
- name: "transform-modules-amd",
- pre() {
- this.file.set("@babel/plugin-transform-modules-*", "amd");
- },
- visitor: {
- CallExpression(path, state) {
- if (!this.file.has("@babel/plugin-proposal-dynamic-import")) return;
- if (!path.get("callee").isImport()) return;
- let {
- requireId,
- resolveId,
- rejectId
- } = state;
- if (!requireId) {
- requireId = path.scope.generateUidIdentifier("require");
- state.requireId = requireId;
- }
- if (!resolveId || !rejectId) {
- resolveId = path.scope.generateUidIdentifier("resolve");
- rejectId = path.scope.generateUidIdentifier("reject");
- state.resolveId = resolveId;
- state.rejectId = rejectId;
- }
- let result = _core.types.identifier("imported");
- if (!noInterop) result = (0, _helperModuleTransforms.wrapInterop)(path, result, "namespace");
- path.replaceWith(_core.template.expression.ast`
- new Promise((${resolveId}, ${rejectId}) =>
- ${requireId}(
- [${(0, _helperModuleTransforms.getDynamicImportSource)(path.node)}],
- imported => ${_core.types.cloneNode(resolveId)}(${result}),
- ${_core.types.cloneNode(rejectId)}
- )
- )`);
- },
- Program: {
- exit(path, {
- requireId
- }) {
- if (!(0, _helperModuleTransforms.isModule)(path)) {
- if (requireId) {
- injectWrapper(path, buildAnonymousWrapper({
- REQUIRE: _core.types.cloneNode(requireId)
- }));
- }
- return;
- }
- const amdArgs = [];
- const importNames = [];
- if (requireId) {
- amdArgs.push(_core.types.stringLiteral("require"));
- importNames.push(_core.types.cloneNode(requireId));
- }
- let moduleName = (0, _helperModuleTransforms.getModuleName)(this.file.opts, options);
- if (moduleName) moduleName = _core.types.stringLiteral(moduleName);
- const {
- meta,
- headers
- } = (0, _helperModuleTransforms.rewriteModuleStatementsAndPrepareHeader)(path, {
- enumerableModuleMeta,
- constantReexports,
- strict,
- strictMode,
- allowTopLevelThis,
- importInterop,
- noInterop,
- filename: this.file.opts.filename
- });
- if ((0, _helperModuleTransforms.hasExports)(meta)) {
- amdArgs.push(_core.types.stringLiteral("exports"));
- importNames.push(_core.types.identifier(meta.exportName));
- }
- for (const [source, metadata] of meta.source) {
- amdArgs.push(_core.types.stringLiteral(source));
- importNames.push(_core.types.identifier(metadata.name));
- if (!(0, _helperModuleTransforms.isSideEffectImport)(metadata)) {
- const interop = (0, _helperModuleTransforms.wrapInterop)(path, _core.types.identifier(metadata.name), metadata.interop);
- if (interop) {
- const header = _core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.identifier(metadata.name), interop));
- header.loc = metadata.loc;
- headers.push(header);
- }
- }
- headers.push(...(0, _helperModuleTransforms.buildNamespaceInitStatements)(meta, metadata, constantReexports));
- }
- (0, _helperModuleTransforms.ensureStatementsHoisted)(headers);
- path.unshiftContainer("body", headers);
- injectWrapper(path, buildWrapper({
- MODULE_NAME: moduleName,
- AMD_ARGUMENTS: _core.types.arrayExpression(amdArgs),
- IMPORT_NAMES: importNames
- }));
- }
- }
- }
- };
- });
- exports.default = _default;
- //# sourceMappingURL=index.js.map
|