"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; function _helperPluginUtils() { const data = require("@babel/helper-plugin-utils"); _helperPluginUtils = function () { return data; }; return data; } function _path() { const data = require("path"); _path = function () { return data; }; return data; } function _helperModuleTransforms() { const data = require("@babel/helper-module-transforms"); _helperModuleTransforms = function () { return data; }; return data; } function _core() { const data = require("@babel/core"); _core = function () { return data; }; return data; } const buildPrerequisiteAssignment = (0, _core().template)(` GLOBAL_REFERENCE = GLOBAL_REFERENCE || {} `); const buildWrapper = (0, _core().template)(` (function (global, factory) { if (typeof define === "function" && define.amd) { define(MODULE_NAME, AMD_ARGUMENTS, factory); } else if (typeof exports !== "undefined") { factory(COMMONJS_ARGUMENTS); } else { var mod = { exports: {} }; factory(BROWSER_ARGUMENTS); GLOBAL_TO_ASSIGN; } })(this, function(IMPORT_NAMES) { }) `); var _default = (0, _helperPluginUtils().declare)((api, options) => { api.assertVersion(7); const { globals, exactGlobals, loose, allowTopLevelThis, strict, strictMode, noInterop } = options; function buildBrowserInit(browserGlobals, exactGlobals, filename, moduleName) { const moduleNameOrBasename = moduleName ? moduleName.value : (0, _path().basename)(filename, (0, _path().extname)(filename)); let globalToAssign = _core().types.memberExpression(_core().types.identifier("global"), _core().types.identifier(_core().types.toIdentifier(moduleNameOrBasename))); let initAssignments = []; if (exactGlobals) { const globalName = browserGlobals[moduleNameOrBasename]; if (globalName) { initAssignments = []; const members = globalName.split("."); globalToAssign = members.slice(1).reduce((accum, curr) => { initAssignments.push(buildPrerequisiteAssignment({ GLOBAL_REFERENCE: _core().types.cloneNode(accum) })); return _core().types.memberExpression(accum, _core().types.identifier(curr)); }, _core().types.memberExpression(_core().types.identifier("global"), _core().types.identifier(members[0]))); } } initAssignments.push(_core().types.expressionStatement(_core().types.assignmentExpression("=", globalToAssign, _core().types.memberExpression(_core().types.identifier("mod"), _core().types.identifier("exports"))))); return initAssignments; } function buildBrowserArg(browserGlobals, exactGlobals, source) { let memberExpression; if (exactGlobals) { const globalRef = browserGlobals[source]; if (globalRef) { memberExpression = globalRef.split(".").reduce((accum, curr) => _core().types.memberExpression(accum, _core().types.identifier(curr)), _core().types.identifier("global")); } else { memberExpression = _core().types.memberExpression(_core().types.identifier("global"), _core().types.identifier(_core().types.toIdentifier(source))); } } else { const requireName = (0, _path().basename)(source, (0, _path().extname)(source)); const globalName = browserGlobals[requireName] || requireName; memberExpression = _core().types.memberExpression(_core().types.identifier("global"), _core().types.identifier(_core().types.toIdentifier(globalName))); } return memberExpression; } return { name: "transform-modules-umd", visitor: { Program: { exit(path) { if (!(0, _helperModuleTransforms().isModule)(path)) return; const browserGlobals = globals || {}; let moduleName = this.getModuleName(); if (moduleName) moduleName = _core().types.stringLiteral(moduleName); const { meta, headers } = (0, _helperModuleTransforms().rewriteModuleStatementsAndPrepareHeader)(path, { loose, strict, strictMode, allowTopLevelThis, noInterop }); const amdArgs = []; const commonjsArgs = []; const browserArgs = []; const importNames = []; if ((0, _helperModuleTransforms().hasExports)(meta)) { amdArgs.push(_core().types.stringLiteral("exports")); commonjsArgs.push(_core().types.identifier("exports")); browserArgs.push(_core().types.memberExpression(_core().types.identifier("mod"), _core().types.identifier("exports"))); importNames.push(_core().types.identifier(meta.exportName)); } for (const [source, metadata] of meta.source) { amdArgs.push(_core().types.stringLiteral(source)); commonjsArgs.push(_core().types.callExpression(_core().types.identifier("require"), [_core().types.stringLiteral(source)])); browserArgs.push(buildBrowserArg(browserGlobals, exactGlobals, 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 = meta.loc; headers.push(header); } } headers.push(...(0, _helperModuleTransforms().buildNamespaceInitStatements)(meta, metadata, loose)); } (0, _helperModuleTransforms().ensureStatementsHoisted)(headers); path.unshiftContainer("body", headers); const { body, directives } = path.node; path.node.directives = []; path.node.body = []; const umdWrapper = path.pushContainer("body", [buildWrapper({ MODULE_NAME: moduleName, AMD_ARGUMENTS: _core().types.arrayExpression(amdArgs), COMMONJS_ARGUMENTS: commonjsArgs, BROWSER_ARGUMENTS: browserArgs, IMPORT_NAMES: importNames, GLOBAL_TO_ASSIGN: buildBrowserInit(browserGlobals, exactGlobals, this.filename || "unknown", moduleName) })])[0]; const umdFactory = umdWrapper.get("expression.arguments")[1].get("body"); umdFactory.pushContainer("directives", directives); umdFactory.pushContainer("body", body); } } } }; }); exports.default = _default;