You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					144 lines
				
				5.4 KiB
			
		
		
			
		
	
	
					144 lines
				
				5.4 KiB
			| 
											3 years ago
										 | "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((0, _helperModuleTransforms.buildDynamicImport)(path.node, false, false, specifier => _core.template.expression.ast`
 | ||
|  |               new Promise((${resolveId}, ${rejectId}) => | ||
|  |                 ${requireId}( | ||
|  |                   [${specifier}], | ||
|  |                   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
 |