{"version":3,"names":["buildTemplate","template","statement","buildExportAll","MISSING_PLUGIN_WARNING","MISSING_PLUGIN_ERROR","getExportSpecifierName","node","stringSpecifiers","type","name","stringValue","value","isIdentifierName","add","Error","constructExportCall","path","exportIdent","exportNames","exportValues","exportStarTarget","statements","length","push","t","expressionStatement","callExpression","stringLiteral","objectProperties","i","exportName","exportValue","objectProperty","has","identifier","objectExpression","exportObj","scope","generateUid","variableDeclaration","variableDeclarator","KEY","generateUidIdentifier","EXPORT_OBJ","TARGET","assignmentExpression","memberExpression","declare","api","options","assertVersion","systemGlobal","allowTopLevelThis","reassignmentVisited","WeakSet","reassignmentVisitor","arg","isAssignmentExpression","get","isObjectPattern","isArrayPattern","exprs","Object","keys","getBindingIdentifiers","getBinding","exportedNames","exports","exportedName","buildCall","expression","replaceWith","sequenceExpression","isIdentifier","isPostUpdateExpression","isUpdateExpression","prefix","binaryExpression","operator","unaryExpression","cloneNode","argument","numericLiteral","pre","file","set","visitor","CallExpression","state","isImport","callee","console","warn","buildDynamicImport","specifier","contextIdent","MetaProperty","meta","property","ReferencedIdentifier","hasBinding","Program","enter","Set","rewriteThis","exit","exportMap","create","modules","beforeBody","setters","sources","variableIds","removedPaths","addExportName","key","val","pushModule","source","specifiers","module","forEach","m","imports","concat","buildExportCall","body","isFunctionDeclaration","isClassDeclaration","id","toExpression","isVariableDeclaration","kind","isImportDeclaration","removeBinding","remove","isExportAllDeclaration","isExportDefaultDeclaration","declar","declaration","buildUndefinedNode","isExportNamedDeclaration","isFunction","isClass","nodes","local","exported","binding","replaceWithMultiple","setterBody","target","isImportNamespaceSpecifier","isImportDefaultSpecifier","importSpecifier","isImportSpecifier","imported","hasExportStar","isExportSpecifier","isStringLiteral","functionExpression","blockStatement","moduleName","getModuleName","opts","hoistVariables","hasInit","unshift","map","traverse","hasTLA","AwaitExpression","stop","Function","skip","noScope","SYSTEM_REGISTER","BEFORE_BODY","MODULE_NAME","SETTERS","arrayExpression","EXECUTE","SOURCES","EXPORT_IDENTIFIER","CONTEXT_IDENTIFIER"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport hoistVariables from \"@babel/helper-hoist-variables\";\nimport { template, types as t } from \"@babel/core\";\nimport {\n  buildDynamicImport,\n  getModuleName,\n  rewriteThis,\n} from \"@babel/helper-module-transforms\";\nimport type { PluginOptions } from \"@babel/helper-module-transforms\";\nimport { isIdentifierName } from \"@babel/helper-validator-identifier\";\nimport type { NodePath, Scope, Visitor } from \"@babel/traverse\";\n\nconst buildTemplate = template.statement(`\n  SYSTEM_REGISTER(MODULE_NAME, SOURCES, function (EXPORT_IDENTIFIER, CONTEXT_IDENTIFIER) {\n    \"use strict\";\n    BEFORE_BODY;\n    return {\n      setters: SETTERS,\n      execute: EXECUTE,\n    };\n  });\n`);\n\nconst buildExportAll = template.statement(`\n  for (var KEY in TARGET) {\n    if (KEY !== \"default\" && KEY !== \"__esModule\") EXPORT_OBJ[KEY] = TARGET[KEY];\n  }\n`);\n\nconst MISSING_PLUGIN_WARNING = `\\\nWARNING: Dynamic import() transformation must be enabled using the\n         @babel/plugin-proposal-dynamic-import plugin. Babel 8 will\n         no longer transform import() without using that plugin.\n`;\n\nconst MISSING_PLUGIN_ERROR = `\\\nERROR: Dynamic import() transformation must be enabled using the\n       @babel/plugin-proposal-dynamic-import plugin. Babel 8\n       no longer transforms import() without using that plugin.\n`;\n\n//todo: use getExportSpecifierName in `helper-module-transforms` when this library is refactored to NodePath usage.\n\nexport function getExportSpecifierName(\n  node: t.Node,\n  stringSpecifiers: Set<string>,\n): string {\n  if (node.type === \"Identifier\") {\n    return node.name;\n  } else if (node.type === \"StringLiteral\") {\n    const stringValue = node.value;\n    // add specifier value to `stringSpecifiers` only when it can not be converted to an identifier name\n    // i.e In `import { \"foo\" as bar }`\n    // we do not consider `\"foo\"` to be a `stringSpecifier` because we can treat it as\n    // `import { foo as bar }`\n    // This helps minimize the size of `stringSpecifiers` and reduce overhead of checking valid identifier names\n    // when building transpiled code from metadata\n    if (!isIdentifierName(stringValue)) {\n      stringSpecifiers.add(stringValue);\n    }\n    return stringValue;\n  } else {\n    throw new Error(\n      `Expected export specifier to be either Identifier or StringLiteral, got ${node.type}`,\n    );\n  }\n}\n\ntype PluginState = {\n  contextIdent: string;\n  // List of names that should only be printed as string literals.\n  // i.e. `import { \"any unicode\" as foo } from \"some-module\"`\n  // `stringSpecifiers` is Set(1) [\"any unicode\"]\n  // In most cases `stringSpecifiers` is an empty Set\n  stringSpecifiers: Set<string>;\n};\n\ntype ModuleMetadata = {\n  key: string;\n  imports: any[];\n  exports: any[];\n};\n\nfunction constructExportCall(\n  path: NodePath<t.Program>,\n  exportIdent: t.Identifier,\n  exportNames: string[],\n  exportValues: t.Expression[],\n  exportStarTarget: t.Identifier | null,\n  stringSpecifiers: Set<string>,\n) {\n  const statements = [];\n  if (!exportStarTarget) {\n    if (exportNames.length === 1) {\n      statements.push(\n        t.expressionStatement(\n          t.callExpression(exportIdent, [\n            t.stringLiteral(exportNames[0]),\n            exportValues[0],\n          ]),\n        ),\n      );\n    } else {\n      const objectProperties = [];\n      for (let i = 0; i < exportNames.length; i++) {\n        const exportName = exportNames[i];\n        const exportValue = exportValues[i];\n        objectProperties.push(\n          t.objectProperty(\n            stringSpecifiers.has(exportName)\n              ? t.stringLiteral(exportName)\n              : t.identifier(exportName),\n            exportValue,\n          ),\n        );\n      }\n      statements.push(\n        t.expressionStatement(\n          t.callExpression(exportIdent, [t.objectExpression(objectProperties)]),\n        ),\n      );\n    }\n  } else {\n    const exportObj = path.scope.generateUid(\"exportObj\");\n\n    statements.push(\n      t.variableDeclaration(\"var\", [\n        t.variableDeclarator(t.identifier(exportObj), t.objectExpression([])),\n      ]),\n    );\n\n    statements.push(\n      buildExportAll({\n        KEY: path.scope.generateUidIdentifier(\"key\"),\n        EXPORT_OBJ: t.identifier(exportObj),\n        TARGET: exportStarTarget,\n      }),\n    );\n\n    for (let i = 0; i < exportNames.length; i++) {\n      const exportName = exportNames[i];\n      const exportValue = exportValues[i];\n\n      statements.push(\n        t.expressionStatement(\n          t.assignmentExpression(\n            \"=\",\n            t.memberExpression(\n              t.identifier(exportObj),\n              t.identifier(exportName),\n            ),\n            exportValue,\n          ),\n        ),\n      );\n    }\n\n    statements.push(\n      t.expressionStatement(\n        t.callExpression(exportIdent, [t.identifier(exportObj)]),\n      ),\n    );\n  }\n  return statements;\n}\n\nexport interface Options extends PluginOptions {\n  allowTopLevelThis?: boolean;\n  systemGlobal?: string;\n}\n\ntype ReassignmentVisitorState = {\n  scope: Scope;\n  exports: any;\n  buildCall: (name: string, value: t.Expression) => t.ExpressionStatement;\n};\n\nexport default declare<PluginState>((api, options: Options) => {\n  api.assertVersion(7);\n\n  const { systemGlobal = \"System\", allowTopLevelThis = false } = options;\n  const reassignmentVisited = new WeakSet();\n\n  const reassignmentVisitor: Visitor<ReassignmentVisitorState> = {\n    \"AssignmentExpression|UpdateExpression\"(\n      path: NodePath<t.AssignmentExpression | t.UpdateExpression>,\n    ) {\n      if (reassignmentVisited.has(path.node)) return;\n      reassignmentVisited.add(path.node);\n\n      const arg = path.isAssignmentExpression()\n        ? path.get(\"left\")\n        : path.get(\"argument\");\n\n      if (arg.isObjectPattern() || arg.isArrayPattern()) {\n        const exprs: t.SequenceExpression[\"expressions\"] = [path.node];\n        for (const name of Object.keys(arg.getBindingIdentifiers())) {\n          if (this.scope.getBinding(name) !== path.scope.getBinding(name)) {\n            return;\n          }\n          const exportedNames = this.exports[name];\n          if (!exportedNames) continue;\n          for (const exportedName of exportedNames) {\n            exprs.push(\n              this.buildCall(exportedName, t.identifier(name)).expression,\n            );\n          }\n        }\n        path.replaceWith(t.sequenceExpression(exprs));\n        return;\n      }\n\n      if (!arg.isIdentifier()) return;\n\n      const name = arg.node.name;\n\n      // redeclared in this scope\n      if (this.scope.getBinding(name) !== path.scope.getBinding(name)) return;\n\n      const exportedNames = this.exports[name];\n      if (!exportedNames) return;\n\n      let node: t.Expression = path.node;\n\n      // if it is a non-prefix update expression (x++ etc)\n      // then we must replace with the expression (_export('x', x + 1), x++)\n      // in order to ensure the same update expression value\n      const isPostUpdateExpression = t.isUpdateExpression(node, {\n        prefix: false,\n      });\n      if (isPostUpdateExpression) {\n        node = t.binaryExpression(\n          // @ts-expect-error The operator of a post-update expression must be \"++\" | \"--\"\n          node.operator[0],\n          t.unaryExpression(\n            \"+\",\n            t.cloneNode(\n              // @ts-expect-error node is UpdateExpression\n              node.argument,\n            ),\n          ),\n          t.numericLiteral(1),\n        );\n      }\n\n      for (const exportedName of exportedNames) {\n        node = this.buildCall(exportedName, node).expression;\n      }\n\n      if (isPostUpdateExpression) {\n        node = t.sequenceExpression([node, path.node]);\n      }\n\n      path.replaceWith(node);\n    },\n  };\n\n  return {\n    name: \"transform-modules-systemjs\",\n\n    pre() {\n      this.file.set(\"@babel/plugin-transform-modules-*\", \"systemjs\");\n    },\n\n    visitor: {\n      CallExpression(path, state: PluginState) {\n        if (t.isImport(path.node.callee)) {\n          if (!this.file.has(\"@babel/plugin-proposal-dynamic-import\")) {\n            if (process.env.BABEL_8_BREAKING) {\n              throw new Error(MISSING_PLUGIN_ERROR);\n            } else {\n              console.warn(MISSING_PLUGIN_WARNING);\n            }\n          }\n\n          path.replaceWith(\n            buildDynamicImport(path.node, false, true, specifier =>\n              t.callExpression(\n                t.memberExpression(\n                  t.identifier(state.contextIdent),\n                  t.identifier(\"import\"),\n                ),\n                [specifier],\n              ),\n            ),\n          );\n        }\n      },\n\n      MetaProperty(path, state: PluginState) {\n        if (\n          path.node.meta.name === \"import\" &&\n          path.node.property.name === \"meta\"\n        ) {\n          path.replaceWith(\n            t.memberExpression(\n              t.identifier(state.contextIdent),\n              t.identifier(\"meta\"),\n            ),\n          );\n        }\n      },\n\n      ReferencedIdentifier(path, state) {\n        if (\n          path.node.name === \"__moduleName\" &&\n          !path.scope.hasBinding(\"__moduleName\")\n        ) {\n          path.replaceWith(\n            t.memberExpression(\n              t.identifier(state.contextIdent),\n              t.identifier(\"id\"),\n            ),\n          );\n        }\n      },\n\n      Program: {\n        enter(path, state) {\n          state.contextIdent = path.scope.generateUid(\"context\");\n          state.stringSpecifiers = new Set();\n          if (!allowTopLevelThis) {\n            rewriteThis(path);\n          }\n        },\n        exit(path, state) {\n          const scope = path.scope;\n          const exportIdent = scope.generateUid(\"export\");\n          const { contextIdent, stringSpecifiers } = state;\n\n          const exportMap: Record<string, string[]> = Object.create(null);\n          const modules: ModuleMetadata[] = [];\n\n          const beforeBody = [];\n          const setters: t.Expression[] = [];\n          const sources: t.StringLiteral[] = [];\n          const variableIds = [];\n          const removedPaths = [];\n\n          function addExportName(key: string, val: string) {\n            exportMap[key] = exportMap[key] || [];\n            exportMap[key].push(val);\n          }\n\n          function pushModule(\n            source: string,\n            key: \"imports\" | \"exports\",\n            specifiers: t.ModuleSpecifier[] | t.ExportAllDeclaration,\n          ) {\n            let module: ModuleMetadata;\n            modules.forEach(function (m) {\n              if (m.key === source) {\n                module = m;\n              }\n            });\n            if (!module) {\n              modules.push(\n                (module = { key: source, imports: [], exports: [] }),\n              );\n            }\n            module[key] = module[key].concat(specifiers);\n          }\n\n          function buildExportCall(name: string, val: t.Expression) {\n            return t.expressionStatement(\n              t.callExpression(t.identifier(exportIdent), [\n                t.stringLiteral(name),\n                val,\n              ]),\n            );\n          }\n\n          const exportNames = [];\n          const exportValues: t.Expression[] = [];\n\n          const body = path.get(\"body\");\n\n          for (const path of body) {\n            if (path.isFunctionDeclaration()) {\n              beforeBody.push(path.node);\n              removedPaths.push(path);\n            } else if (path.isClassDeclaration()) {\n              variableIds.push(t.cloneNode(path.node.id));\n              path.replaceWith(\n                t.expressionStatement(\n                  t.assignmentExpression(\n                    \"=\",\n                    t.cloneNode(path.node.id),\n                    t.toExpression(path.node),\n                  ),\n                ),\n              );\n            } else if (path.isVariableDeclaration()) {\n              // Convert top-level variable declarations to \"var\",\n              // because they must be hoisted\n              path.node.kind = \"var\";\n            } else if (path.isImportDeclaration()) {\n              const source = path.node.source.value;\n              pushModule(source, \"imports\", path.node.specifiers);\n              for (const name of Object.keys(path.getBindingIdentifiers())) {\n                scope.removeBinding(name);\n                variableIds.push(t.identifier(name));\n              }\n              path.remove();\n            } else if (path.isExportAllDeclaration()) {\n              pushModule(path.node.source.value, \"exports\", path.node);\n              path.remove();\n            } else if (path.isExportDefaultDeclaration()) {\n              const declar = path.node.declaration;\n              if (t.isClassDeclaration(declar)) {\n                const id = declar.id;\n                if (id) {\n                  exportNames.push(\"default\");\n                  exportValues.push(scope.buildUndefinedNode());\n                  variableIds.push(t.cloneNode(id));\n                  addExportName(id.name, \"default\");\n                  path.replaceWith(\n                    t.expressionStatement(\n                      t.assignmentExpression(\n                        \"=\",\n                        t.cloneNode(id),\n                        t.toExpression(declar),\n                      ),\n                    ),\n                  );\n                } else {\n                  exportNames.push(\"default\");\n                  exportValues.push(t.toExpression(declar));\n                  removedPaths.push(path);\n                }\n              } else if (t.isFunctionDeclaration(declar)) {\n                const id = declar.id;\n                if (id) {\n                  beforeBody.push(declar);\n                  exportNames.push(\"default\");\n                  exportValues.push(t.cloneNode(id));\n                  addExportName(id.name, \"default\");\n                } else {\n                  exportNames.push(\"default\");\n                  exportValues.push(t.toExpression(declar));\n                }\n                removedPaths.push(path);\n              } else {\n                // @ts-expect-error TSDeclareFunction is not expected here\n                path.replaceWith(buildExportCall(\"default\", declar));\n              }\n            } else if (path.isExportNamedDeclaration()) {\n              const declar = path.node.declaration;\n\n              if (declar) {\n                path.replaceWith(declar);\n\n                if (t.isFunction(declar)) {\n                  const name = declar.id.name;\n                  addExportName(name, name);\n                  beforeBody.push(declar);\n                  exportNames.push(name);\n                  exportValues.push(t.cloneNode(declar.id));\n                  removedPaths.push(path);\n                } else if (t.isClass(declar)) {\n                  const name = declar.id.name;\n                  exportNames.push(name);\n                  exportValues.push(scope.buildUndefinedNode());\n                  variableIds.push(t.cloneNode(declar.id));\n                  path.replaceWith(\n                    t.expressionStatement(\n                      t.assignmentExpression(\n                        \"=\",\n                        t.cloneNode(declar.id),\n                        t.toExpression(declar),\n                      ),\n                    ),\n                  );\n                  addExportName(name, name);\n                } else {\n                  if (t.isVariableDeclaration(declar)) {\n                    // Convert top-level variable declarations to \"var\",\n                    // because they must be hoisted\n                    declar.kind = \"var\";\n                  }\n                  for (const name of Object.keys(\n                    t.getBindingIdentifiers(declar),\n                  )) {\n                    addExportName(name, name);\n                  }\n                }\n              } else {\n                const specifiers = path.node.specifiers;\n                if (specifiers?.length) {\n                  if (path.node.source) {\n                    pushModule(path.node.source.value, \"exports\", specifiers);\n                    path.remove();\n                  } else {\n                    const nodes = [];\n\n                    for (const specifier of specifiers) {\n                      // @ts-expect-error This isn't an \"export ... from\" declaration\n                      // because path.node.source is falsy, so the local specifier exists.\n                      const { local, exported } = specifier;\n\n                      const binding = scope.getBinding(local.name);\n                      const exportedName = getExportSpecifierName(\n                        exported,\n                        stringSpecifiers,\n                      );\n                      // hoisted function export\n                      if (\n                        binding &&\n                        t.isFunctionDeclaration(binding.path.node)\n                      ) {\n                        exportNames.push(exportedName);\n                        exportValues.push(t.cloneNode(local));\n                      }\n                      // only globals also exported this way\n                      else if (!binding) {\n                        nodes.push(buildExportCall(exportedName, local));\n                      }\n                      addExportName(local.name, exportedName);\n                    }\n\n                    path.replaceWithMultiple(nodes);\n                  }\n                } else {\n                  path.remove();\n                }\n              }\n            }\n          }\n\n          modules.forEach(function (specifiers) {\n            const setterBody = [];\n            const target = scope.generateUid(specifiers.key);\n\n            for (let specifier of specifiers.imports) {\n              if (t.isImportNamespaceSpecifier(specifier)) {\n                setterBody.push(\n                  t.expressionStatement(\n                    t.assignmentExpression(\n                      \"=\",\n                      specifier.local,\n                      t.identifier(target),\n                    ),\n                  ),\n                );\n              } else if (t.isImportDefaultSpecifier(specifier)) {\n                specifier = t.importSpecifier(\n                  specifier.local,\n                  t.identifier(\"default\"),\n                );\n              }\n\n              if (t.isImportSpecifier(specifier)) {\n                const { imported } = specifier;\n                setterBody.push(\n                  t.expressionStatement(\n                    t.assignmentExpression(\n                      \"=\",\n                      specifier.local,\n                      t.memberExpression(\n                        t.identifier(target),\n                        specifier.imported,\n                        /* computed */ imported.type === \"StringLiteral\",\n                      ),\n                    ),\n                  ),\n                );\n              }\n            }\n\n            if (specifiers.exports.length) {\n              const exportNames = [];\n              const exportValues = [];\n              let hasExportStar = false;\n\n              for (const node of specifiers.exports) {\n                if (t.isExportAllDeclaration(node)) {\n                  hasExportStar = true;\n                } else if (t.isExportSpecifier(node)) {\n                  const exportedName = getExportSpecifierName(\n                    node.exported,\n                    stringSpecifiers,\n                  );\n                  exportNames.push(exportedName);\n                  exportValues.push(\n                    t.memberExpression(\n                      t.identifier(target),\n                      node.local,\n                      t.isStringLiteral(node.local),\n                    ),\n                  );\n                } else {\n                  // todo\n                }\n              }\n\n              setterBody.push(\n                ...constructExportCall(\n                  path,\n                  t.identifier(exportIdent),\n                  exportNames,\n                  exportValues,\n                  hasExportStar ? t.identifier(target) : null,\n                  stringSpecifiers,\n                ),\n              );\n            }\n\n            sources.push(t.stringLiteral(specifiers.key));\n            setters.push(\n              t.functionExpression(\n                null,\n                [t.identifier(target)],\n                t.blockStatement(setterBody),\n              ),\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          hoistVariables(path, (id, name, hasInit) => {\n            variableIds.push(id);\n            if (!hasInit && name in exportMap) {\n              for (const exported of exportMap[name]) {\n                exportNames.push(exported);\n                exportValues.push(scope.buildUndefinedNode());\n              }\n            }\n          });\n\n          if (variableIds.length) {\n            beforeBody.unshift(\n              t.variableDeclaration(\n                \"var\",\n                variableIds.map(id => t.variableDeclarator(id)),\n              ),\n            );\n          }\n\n          if (exportNames.length) {\n            beforeBody.push(\n              ...constructExportCall(\n                path,\n                t.identifier(exportIdent),\n                exportNames,\n                exportValues,\n                null,\n                stringSpecifiers,\n              ),\n            );\n          }\n\n          path.traverse(reassignmentVisitor, {\n            exports: exportMap,\n            buildCall: buildExportCall,\n            scope,\n          });\n\n          for (const path of removedPaths) {\n            path.remove();\n          }\n\n          let hasTLA = false;\n          path.traverse({\n            AwaitExpression(path) {\n              hasTLA = true;\n              path.stop();\n            },\n            Function(path) {\n              path.skip();\n            },\n            // @ts-expect-error - todo: add noScope to type definitions\n            noScope: true,\n          });\n\n          path.node.body = [\n            buildTemplate({\n              SYSTEM_REGISTER: t.memberExpression(\n                t.identifier(systemGlobal),\n                t.identifier(\"register\"),\n              ),\n              BEFORE_BODY: beforeBody,\n              MODULE_NAME: moduleName,\n              SETTERS: t.arrayExpression(setters),\n              EXECUTE: t.functionExpression(\n                null,\n                [],\n                t.blockStatement(path.node.body),\n                false,\n                hasTLA,\n              ),\n              SOURCES: t.arrayExpression(sources),\n              EXPORT_IDENTIFIER: t.identifier(exportIdent),\n              CONTEXT_IDENTIFIER: t.identifier(contextIdent),\n            }),\n          ];\n        },\n      },\n    },\n  };\n});\n"],"mappings":"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"}