diff --git a/packages/babel-plugin-proposal-export-default-from/src/index.ts b/packages/babel-plugin-proposal-export-default-from/src/index.ts index 4013eacf9997..d9fae94505f7 100644 --- a/packages/babel-plugin-proposal-export-default-from/src/index.ts +++ b/packages/babel-plugin-proposal-export-default-from/src/index.ts @@ -11,33 +11,32 @@ export default declare(api => { visitor: { ExportNamedDeclaration(path) { - const { node, scope } = path; - const { specifiers } = node; + const { node } = path; + const { specifiers, source } = node; if (!t.isExportDefaultSpecifier(specifiers[0])) return; - const specifier = specifiers.shift(); - const { exported } = specifier; - const uid = scope.generateUidIdentifier( - // @ts-expect-error Identifier ?? StringLiteral - exported.name ?? exported.value, - ); + const { exported } = specifiers.shift(); + + if (specifiers.every(s => t.isExportSpecifier(s))) { + specifiers.unshift( + t.exportSpecifier(t.identifier("default"), exported), + ); + return; + } const nodes = [ - t.importDeclaration( - [t.importDefaultSpecifier(uid)], - t.cloneNode(node.source), + t.exportNamedDeclaration( + null, + [t.exportSpecifier(t.identifier("default"), exported)], + t.cloneNode(source), ), - t.exportNamedDeclaration(null, [ - t.exportSpecifier(t.cloneNode(uid), exported), - ]), ]; if (specifiers.length >= 1) { nodes.push(node); } - const [importDeclaration] = path.replaceWithMultiple(nodes); - path.scope.registerDeclaration(importDeclaration); + path.replaceWithMultiple(nodes); }, }, }; diff --git a/packages/babel-plugin-proposal-export-default-from/test/fixtures/export-default/default-compound-es6/output.mjs b/packages/babel-plugin-proposal-export-default-from/test/fixtures/export-default/default-compound-es6/output.mjs index 45bc5549fde4..a325c050502e 100644 --- a/packages/babel-plugin-proposal-export-default-from/test/fixtures/export-default/default-compound-es6/output.mjs +++ b/packages/babel-plugin-proposal-export-default-from/test/fixtures/export-default/default-compound-es6/output.mjs @@ -1,3 +1 @@ -import _v from "mod"; -export { _v as v }; -export { x, y as w } from "mod"; +export { default as v, x, y as w } from "mod"; diff --git a/packages/babel-plugin-proposal-export-default-from/test/fixtures/export-default/default-es6/output.mjs b/packages/babel-plugin-proposal-export-default-from/test/fixtures/export-default/default-es6/output.mjs index 076607d0d743..8d64a17cad3f 100644 --- a/packages/babel-plugin-proposal-export-default-from/test/fixtures/export-default/default-es6/output.mjs +++ b/packages/babel-plugin-proposal-export-default-from/test/fixtures/export-default/default-es6/output.mjs @@ -1,2 +1 @@ -import _foo from "bar"; -export { _foo as foo }; +export { default as foo } from "bar"; diff --git a/packages/babel-plugin-proposal-export-default-from/test/fixtures/export-default/default-typescript/output.mjs b/packages/babel-plugin-proposal-export-default-from/test/fixtures/export-default/default-typescript/output.mjs index 076607d0d743..8d64a17cad3f 100644 --- a/packages/babel-plugin-proposal-export-default-from/test/fixtures/export-default/default-typescript/output.mjs +++ b/packages/babel-plugin-proposal-export-default-from/test/fixtures/export-default/default-typescript/output.mjs @@ -1,2 +1 @@ -import _foo from "bar"; -export { _foo as foo }; +export { default as foo } from "bar";