From bc4183fe590ef2be3f0f65330e9078c92c017241 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Wed, 25 Nov 2020 16:05:35 +0100 Subject: [PATCH] Ignore identifiers in "export ... from" declarations --- .../src/visitors/usage.js | 8 +++++++ .../package.json | 1 + .../usage-global/export-from/input.mjs | 2 ++ .../usage-global/export-from/options.json | 11 ++++++++++ .../usage-global/export-from/output.mjs | 2 ++ .../fixtures/usage-pure/export-from/input.mjs | 2 ++ .../usage-pure/export-from/options.json | 11 ++++++++++ .../usage-pure/export-from/output.mjs | 2 ++ .../usage-global/export-from/input.mjs | 1 + .../usage-global/export-from/options.json | 15 +++++++++++++ .../usage-global/export-from/output.mjs | 1 + .../fixtures/usage-pure/export-from/input.mjs | 1 + .../usage-pure/export-from/options.json | 15 +++++++++++++ .../usage-pure/export-from/output.mjs | 1 + yarn.lock | 22 ++++++++++++++----- 15 files changed, 90 insertions(+), 5 deletions(-) create mode 100644 packages/babel-plugin-polyfill-corejs3/test/fixtures/usage-global/export-from/input.mjs create mode 100644 packages/babel-plugin-polyfill-corejs3/test/fixtures/usage-global/export-from/options.json create mode 100644 packages/babel-plugin-polyfill-corejs3/test/fixtures/usage-global/export-from/output.mjs create mode 100644 packages/babel-plugin-polyfill-corejs3/test/fixtures/usage-pure/export-from/input.mjs create mode 100644 packages/babel-plugin-polyfill-corejs3/test/fixtures/usage-pure/export-from/options.json create mode 100644 packages/babel-plugin-polyfill-corejs3/test/fixtures/usage-pure/export-from/output.mjs create mode 100644 packages/babel-plugin-polyfill-es-shims/test/fixtures/usage-global/export-from/input.mjs create mode 100644 packages/babel-plugin-polyfill-es-shims/test/fixtures/usage-global/export-from/options.json create mode 100644 packages/babel-plugin-polyfill-es-shims/test/fixtures/usage-global/export-from/output.mjs create mode 100644 packages/babel-plugin-polyfill-es-shims/test/fixtures/usage-pure/export-from/input.mjs create mode 100644 packages/babel-plugin-polyfill-es-shims/test/fixtures/usage-pure/export-from/options.json create mode 100644 packages/babel-plugin-polyfill-es-shims/test/fixtures/usage-pure/export-from/output.mjs diff --git a/packages/babel-helper-define-polyfill-provider/src/visitors/usage.js b/packages/babel-helper-define-polyfill-provider/src/visitors/usage.js index 17094c30..86723473 100644 --- a/packages/babel-helper-define-polyfill-provider/src/visitors/usage.js +++ b/packages/babel-helper-define-polyfill-provider/src/visitors/usage.js @@ -15,6 +15,14 @@ export default ( return { // Symbol(), new Promise ReferencedIdentifier(path: NodePath) { + if ( + path.parentPath.isExportSpecifier() && + path.parentPath.parent.source + ) { + // export { Foo } from "module" + return; + } + const { node: { name }, scope, diff --git a/packages/babel-plugin-polyfill-corejs3/package.json b/packages/babel-plugin-polyfill-corejs3/package.json index 6e6bf5ad..f85aeaf8 100644 --- a/packages/babel-plugin-polyfill-corejs3/package.json +++ b/packages/babel-plugin-polyfill-corejs3/package.json @@ -23,6 +23,7 @@ "@babel/core": "^7.11.5", "@babel/helper-plugin-test-runner": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-default-from": "^7.12.1", "@babel/plugin-transform-for-of": "^7.10.4", "@babel/plugin-transform-modules-commonjs": "^7.10.4", "core-js-pure": "^3.6.5" diff --git a/packages/babel-plugin-polyfill-corejs3/test/fixtures/usage-global/export-from/input.mjs b/packages/babel-plugin-polyfill-corejs3/test/fixtures/usage-global/export-from/input.mjs new file mode 100644 index 00000000..dcbbd0e6 --- /dev/null +++ b/packages/babel-plugin-polyfill-corejs3/test/fixtures/usage-global/export-from/input.mjs @@ -0,0 +1,2 @@ +export { Set } from "foo"; +export Map from "foo"; diff --git a/packages/babel-plugin-polyfill-corejs3/test/fixtures/usage-global/export-from/options.json b/packages/babel-plugin-polyfill-corejs3/test/fixtures/usage-global/export-from/options.json new file mode 100644 index 00000000..aea97f75 --- /dev/null +++ b/packages/babel-plugin-polyfill-corejs3/test/fixtures/usage-global/export-from/options.json @@ -0,0 +1,11 @@ +{ + "plugins": [ + "@babel/plugin-syntax-export-default-from", + [ + "@@/polyfill-corejs3", + { + "method": "usage-global" + } + ] + ] +} \ No newline at end of file diff --git a/packages/babel-plugin-polyfill-corejs3/test/fixtures/usage-global/export-from/output.mjs b/packages/babel-plugin-polyfill-corejs3/test/fixtures/usage-global/export-from/output.mjs new file mode 100644 index 00000000..dcbbd0e6 --- /dev/null +++ b/packages/babel-plugin-polyfill-corejs3/test/fixtures/usage-global/export-from/output.mjs @@ -0,0 +1,2 @@ +export { Set } from "foo"; +export Map from "foo"; diff --git a/packages/babel-plugin-polyfill-corejs3/test/fixtures/usage-pure/export-from/input.mjs b/packages/babel-plugin-polyfill-corejs3/test/fixtures/usage-pure/export-from/input.mjs new file mode 100644 index 00000000..dcbbd0e6 --- /dev/null +++ b/packages/babel-plugin-polyfill-corejs3/test/fixtures/usage-pure/export-from/input.mjs @@ -0,0 +1,2 @@ +export { Set } from "foo"; +export Map from "foo"; diff --git a/packages/babel-plugin-polyfill-corejs3/test/fixtures/usage-pure/export-from/options.json b/packages/babel-plugin-polyfill-corejs3/test/fixtures/usage-pure/export-from/options.json new file mode 100644 index 00000000..9f932250 --- /dev/null +++ b/packages/babel-plugin-polyfill-corejs3/test/fixtures/usage-pure/export-from/options.json @@ -0,0 +1,11 @@ +{ + "plugins": [ + "@babel/plugin-syntax-export-default-from", + [ + "@@/polyfill-corejs3", + { + "method": "usage-pure" + } + ] + ] +} \ No newline at end of file diff --git a/packages/babel-plugin-polyfill-corejs3/test/fixtures/usage-pure/export-from/output.mjs b/packages/babel-plugin-polyfill-corejs3/test/fixtures/usage-pure/export-from/output.mjs new file mode 100644 index 00000000..dcbbd0e6 --- /dev/null +++ b/packages/babel-plugin-polyfill-corejs3/test/fixtures/usage-pure/export-from/output.mjs @@ -0,0 +1,2 @@ +export { Set } from "foo"; +export Map from "foo"; diff --git a/packages/babel-plugin-polyfill-es-shims/test/fixtures/usage-global/export-from/input.mjs b/packages/babel-plugin-polyfill-es-shims/test/fixtures/usage-global/export-from/input.mjs new file mode 100644 index 00000000..c40d10f5 --- /dev/null +++ b/packages/babel-plugin-polyfill-es-shims/test/fixtures/usage-global/export-from/input.mjs @@ -0,0 +1 @@ +export { AggregateError } from "foo"; diff --git a/packages/babel-plugin-polyfill-es-shims/test/fixtures/usage-global/export-from/options.json b/packages/babel-plugin-polyfill-es-shims/test/fixtures/usage-global/export-from/options.json new file mode 100644 index 00000000..0a3e1333 --- /dev/null +++ b/packages/babel-plugin-polyfill-es-shims/test/fixtures/usage-global/export-from/options.json @@ -0,0 +1,15 @@ +{ + "validateLogs": true, + "plugins": [ + [ + "@@/polyfill-es-shims", + { + "method": "usage-global", + "missingDependencies": { + "log": "per-file", + "all": true + } + } + ] + ] +} \ No newline at end of file diff --git a/packages/babel-plugin-polyfill-es-shims/test/fixtures/usage-global/export-from/output.mjs b/packages/babel-plugin-polyfill-es-shims/test/fixtures/usage-global/export-from/output.mjs new file mode 100644 index 00000000..c40d10f5 --- /dev/null +++ b/packages/babel-plugin-polyfill-es-shims/test/fixtures/usage-global/export-from/output.mjs @@ -0,0 +1 @@ +export { AggregateError } from "foo"; diff --git a/packages/babel-plugin-polyfill-es-shims/test/fixtures/usage-pure/export-from/input.mjs b/packages/babel-plugin-polyfill-es-shims/test/fixtures/usage-pure/export-from/input.mjs new file mode 100644 index 00000000..c40d10f5 --- /dev/null +++ b/packages/babel-plugin-polyfill-es-shims/test/fixtures/usage-pure/export-from/input.mjs @@ -0,0 +1 @@ +export { AggregateError } from "foo"; diff --git a/packages/babel-plugin-polyfill-es-shims/test/fixtures/usage-pure/export-from/options.json b/packages/babel-plugin-polyfill-es-shims/test/fixtures/usage-pure/export-from/options.json new file mode 100644 index 00000000..784125a7 --- /dev/null +++ b/packages/babel-plugin-polyfill-es-shims/test/fixtures/usage-pure/export-from/options.json @@ -0,0 +1,15 @@ +{ + "validateLogs": true, + "plugins": [ + [ + "@@/polyfill-es-shims", + { + "method": "usage-pure", + "missingDependencies": { + "log": "per-file", + "all": true + } + } + ] + ] +} \ No newline at end of file diff --git a/packages/babel-plugin-polyfill-es-shims/test/fixtures/usage-pure/export-from/output.mjs b/packages/babel-plugin-polyfill-es-shims/test/fixtures/usage-pure/export-from/output.mjs new file mode 100644 index 00000000..c40d10f5 --- /dev/null +++ b/packages/babel-plugin-polyfill-es-shims/test/fixtures/usage-pure/export-from/output.mjs @@ -0,0 +1 @@ +export { AggregateError } from "foo"; diff --git a/yarn.lock b/yarn.lock index c3c829e1..3f1a3e73 100644 --- a/yarn.lock +++ b/yarn.lock @@ -166,7 +166,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-define-polyfill-provider@^0.0.4, @babel/helper-define-polyfill-provider@workspace:packages/babel-helper-define-polyfill-provider": +"@babel/helper-define-polyfill-provider@^0.0.5, @babel/helper-define-polyfill-provider@workspace:packages/babel-helper-define-polyfill-provider": version: 0.0.0-use.local resolution: "@babel/helper-define-polyfill-provider@workspace:packages/babel-helper-define-polyfill-provider" dependencies: @@ -619,6 +619,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-export-default-from@npm:^7.12.1": + version: 7.12.1 + resolution: "@babel/plugin-syntax-export-default-from@npm:7.12.1" + dependencies: + "@babel/helper-plugin-utils": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2fb7cd269beb9bb662e68358fa250fdfc110664c03dd47e6b5d884d56f2d2227510b86ff16d0ff0fefb901b5050dfb60501f4314710fe1702f29ca1e87e2eee6 + languageName: node + linkType: hard + "@babel/plugin-syntax-export-namespace-from@npm:^7.8.3": version: 7.8.3 resolution: "@babel/plugin-syntax-export-namespace-from@npm:7.8.3" @@ -3596,7 +3607,7 @@ __metadata: dependencies: "@babel/compat-data": ^7.11.0 "@babel/core": ^7.11.5 - "@babel/helper-define-polyfill-provider": ^0.0.4 + "@babel/helper-define-polyfill-provider": ^0.0.5 "@babel/helper-plugin-test-runner": ^7.10.4 "@babel/plugin-transform-for-of": ^7.10.4 "@babel/plugin-transform-modules-commonjs": ^7.10.4 @@ -3611,9 +3622,10 @@ __metadata: resolution: "babel-plugin-polyfill-corejs3@workspace:packages/babel-plugin-polyfill-corejs3" dependencies: "@babel/core": ^7.11.5 - "@babel/helper-define-polyfill-provider": ^0.0.4 + "@babel/helper-define-polyfill-provider": ^0.0.5 "@babel/helper-plugin-test-runner": ^7.10.4 "@babel/plugin-syntax-dynamic-import": ^7.8.3 + "@babel/plugin-syntax-export-default-from": ^7.12.1 "@babel/plugin-transform-for-of": ^7.10.4 "@babel/plugin-transform-modules-commonjs": ^7.10.4 core-js-compat: ^3.7.0 @@ -3628,7 +3640,7 @@ __metadata: resolution: "babel-plugin-polyfill-es-shims@workspace:packages/babel-plugin-polyfill-es-shims" dependencies: "@babel/core": ^7.11.5 - "@babel/helper-define-polyfill-provider": ^0.0.4 + "@babel/helper-define-polyfill-provider": ^0.0.5 "@babel/helper-plugin-test-runner": ^7.10.4 array.from: ^1.1.0 peerDependencies: @@ -3641,7 +3653,7 @@ __metadata: resolution: "babel-plugin-polyfill-regenerator@workspace:packages/babel-plugin-polyfill-regenerator" dependencies: "@babel/core": ^7.11.5 - "@babel/helper-define-polyfill-provider": ^0.0.4 + "@babel/helper-define-polyfill-provider": ^0.0.5 "@babel/helper-plugin-test-runner": ^7.10.4 peerDependencies: "@babel/core": ^7.0.0-0