From c092c1eed4ee7b9f413946839ddbad0b2619ee87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hua=CC=81ng=20Ju=CC=80nlia=CC=80ng?= Date: Fri, 5 Jul 2019 17:35:47 -0400 Subject: [PATCH 1/2] fix: register inserted importDeclaration --- .../babel-plugin-proposal-export-default-from/src/index.js | 5 +++++ .../fixtures/export-default/default-typescript/input.mjs | 1 + .../fixtures/export-default/default-typescript/options.json | 3 +++ .../fixtures/export-default/default-typescript/output.mjs | 2 ++ .../babel-plugin-proposal-export-namespace-from/src/index.js | 5 +++++ .../fixtures/export-namespace/namespace-typescript/input.mjs | 1 + .../export-namespace/namespace-typescript/options.json | 3 +++ .../export-namespace/namespace-typescript/output.mjs | 2 ++ 8 files changed, 22 insertions(+) create mode 100644 packages/babel-plugin-proposal-export-default-from/test/fixtures/export-default/default-typescript/input.mjs create mode 100644 packages/babel-plugin-proposal-export-default-from/test/fixtures/export-default/default-typescript/options.json create mode 100644 packages/babel-plugin-proposal-export-default-from/test/fixtures/export-default/default-typescript/output.mjs create mode 100644 packages/babel-plugin-proposal-export-namespace-from/test/fixtures/export-namespace/namespace-typescript/input.mjs create mode 100644 packages/babel-plugin-proposal-export-namespace-from/test/fixtures/export-namespace/namespace-typescript/options.json create mode 100644 packages/babel-plugin-proposal-export-namespace-from/test/fixtures/export-namespace/namespace-typescript/output.mjs diff --git a/packages/babel-plugin-proposal-export-default-from/src/index.js b/packages/babel-plugin-proposal-export-default-from/src/index.js index d460b8886506..6e0b90e7d99c 100644 --- a/packages/babel-plugin-proposal-export-default-from/src/index.js +++ b/packages/babel-plugin-proposal-export-default-from/src/index.js @@ -35,6 +35,11 @@ export default declare(api => { path.replaceWithMultiple(nodes); }, + ImportDefaultSpecifier(path) { + if (!path.scope.hasOwnBinding(path.node.local.name)) { + path.scope.registerDeclaration(path.parentPath); + } + }, }, }; }); diff --git a/packages/babel-plugin-proposal-export-default-from/test/fixtures/export-default/default-typescript/input.mjs b/packages/babel-plugin-proposal-export-default-from/test/fixtures/export-default/default-typescript/input.mjs new file mode 100644 index 000000000000..48783b04663e --- /dev/null +++ b/packages/babel-plugin-proposal-export-default-from/test/fixtures/export-default/default-typescript/input.mjs @@ -0,0 +1 @@ +export foo from "bar"; diff --git a/packages/babel-plugin-proposal-export-default-from/test/fixtures/export-default/default-typescript/options.json b/packages/babel-plugin-proposal-export-default-from/test/fixtures/export-default/default-typescript/options.json new file mode 100644 index 000000000000..ca5c6691d301 --- /dev/null +++ b/packages/babel-plugin-proposal-export-default-from/test/fixtures/export-default/default-typescript/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["proposal-export-default-from", "transform-typescript"] +} 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 new file mode 100644 index 000000000000..076607d0d743 --- /dev/null +++ b/packages/babel-plugin-proposal-export-default-from/test/fixtures/export-default/default-typescript/output.mjs @@ -0,0 +1,2 @@ +import _foo from "bar"; +export { _foo as foo }; diff --git a/packages/babel-plugin-proposal-export-namespace-from/src/index.js b/packages/babel-plugin-proposal-export-namespace-from/src/index.js index 3b8b307c42ed..84b430c4c4a0 100644 --- a/packages/babel-plugin-proposal-export-namespace-from/src/index.js +++ b/packages/babel-plugin-proposal-export-namespace-from/src/index.js @@ -45,6 +45,11 @@ export default declare(api => { path.replaceWithMultiple(nodes); }, + ImportNamespaceSpecifier(path) { + if (!path.scope.hasOwnBinding(path.node.local.name)) { + path.scope.registerDeclaration(path.parentPath); + } + }, }, }; }); diff --git a/packages/babel-plugin-proposal-export-namespace-from/test/fixtures/export-namespace/namespace-typescript/input.mjs b/packages/babel-plugin-proposal-export-namespace-from/test/fixtures/export-namespace/namespace-typescript/input.mjs new file mode 100644 index 000000000000..d9d78f9ccdc8 --- /dev/null +++ b/packages/babel-plugin-proposal-export-namespace-from/test/fixtures/export-namespace/namespace-typescript/input.mjs @@ -0,0 +1 @@ +export * as foo from "bar"; diff --git a/packages/babel-plugin-proposal-export-namespace-from/test/fixtures/export-namespace/namespace-typescript/options.json b/packages/babel-plugin-proposal-export-namespace-from/test/fixtures/export-namespace/namespace-typescript/options.json new file mode 100644 index 000000000000..ce55287353b6 --- /dev/null +++ b/packages/babel-plugin-proposal-export-namespace-from/test/fixtures/export-namespace/namespace-typescript/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["proposal-export-namespace-from", "transform-typescript"] +} diff --git a/packages/babel-plugin-proposal-export-namespace-from/test/fixtures/export-namespace/namespace-typescript/output.mjs b/packages/babel-plugin-proposal-export-namespace-from/test/fixtures/export-namespace/namespace-typescript/output.mjs new file mode 100644 index 000000000000..2f4c84d7614c --- /dev/null +++ b/packages/babel-plugin-proposal-export-namespace-from/test/fixtures/export-namespace/namespace-typescript/output.mjs @@ -0,0 +1,2 @@ +import * as _foo from "bar"; +export { _foo as foo }; From 29177f5cb9ef00bdad9ff1fa0807a9f199bf7684 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hua=CC=81ng=20Ju=CC=80nlia=CC=80ng?= Date: Sat, 6 Jul 2019 10:41:04 -0400 Subject: [PATCH 2/2] refactor: register injected declaration in the same visitor --- .../src/index.js | 8 ++------ .../src/index.js | 8 ++------ 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/packages/babel-plugin-proposal-export-default-from/src/index.js b/packages/babel-plugin-proposal-export-default-from/src/index.js index 6e0b90e7d99c..5ddc0ff3f203 100644 --- a/packages/babel-plugin-proposal-export-default-from/src/index.js +++ b/packages/babel-plugin-proposal-export-default-from/src/index.js @@ -33,12 +33,8 @@ export default declare(api => { nodes.push(node); } - path.replaceWithMultiple(nodes); - }, - ImportDefaultSpecifier(path) { - if (!path.scope.hasOwnBinding(path.node.local.name)) { - path.scope.registerDeclaration(path.parentPath); - } + const [importDeclaration] = path.replaceWithMultiple(nodes); + path.scope.registerDeclaration(importDeclaration); }, }, }; diff --git a/packages/babel-plugin-proposal-export-namespace-from/src/index.js b/packages/babel-plugin-proposal-export-namespace-from/src/index.js index 84b430c4c4a0..b028abcb721f 100644 --- a/packages/babel-plugin-proposal-export-namespace-from/src/index.js +++ b/packages/babel-plugin-proposal-export-namespace-from/src/index.js @@ -43,12 +43,8 @@ export default declare(api => { nodes.push(node); } - path.replaceWithMultiple(nodes); - }, - ImportNamespaceSpecifier(path) { - if (!path.scope.hasOwnBinding(path.node.local.name)) { - path.scope.registerDeclaration(path.parentPath); - } + const [importDeclaration] = path.replaceWithMultiple(nodes); + path.scope.registerDeclaration(importDeclaration); }, }, };