Skip to content

Commit

Permalink
Add export-namespace-from to preset-env (#11849)
Browse files Browse the repository at this point in the history
* feat: add compat-data of proposal-export-namespace-from

* feat: add export-namespace-from to preset-env

* chore: update test fixtures

* address review comments
  • Loading branch information
JLHwung committed Jul 21, 2020
1 parent 2bf38fb commit 3784216
Show file tree
Hide file tree
Showing 129 changed files with 255 additions and 8 deletions.
8 changes: 8 additions & 0 deletions packages/babel-compat-data/data/plugins.json
Expand Up @@ -410,5 +410,13 @@
"phantom": "2",
"samsung": "1",
"electron": "0.20"
},
"proposal-export-namespace-from": {
"chrome": "72",
"edge": "79",
"opera": "60",
"firefox": "80",
"node": "13.2",
"samsung": "11.0"
}
}
13 changes: 13 additions & 0 deletions packages/babel-compat-data/scripts/build-data.js
Expand Up @@ -9,6 +9,19 @@ for (const target of ["plugin", "corejs2-built-in"]) {
environments,
require(`./data/${target}-features`)
);
if (target === "plugin") {
// add export-namespace-from from mdn-browser-compat-data
// todo: replace the hardcoded compat data to mdn-browser-compat-data
// after https://github.com/mdn/browser-compat-data/pull/6394 is published
newData["proposal-export-namespace-from"] = {
chrome: "72",
edge: "79",
opera: "60",
firefox: "80",
node: "13.2",
samsung: "11.0",
};
}
const dataPath = path.join(__dirname, `../data/${target}s.json`);

if (!writeFile(newData, dataPath, target)) {
Expand Down
2 changes: 2 additions & 0 deletions packages/babel-preset-env/package.json
Expand Up @@ -22,6 +22,7 @@
"@babel/plugin-proposal-async-generator-functions": "^7.10.4",
"@babel/plugin-proposal-class-properties": "^7.10.4",
"@babel/plugin-proposal-dynamic-import": "^7.10.4",
"@babel/plugin-proposal-export-namespace-from": "^7.10.4",
"@babel/plugin-proposal-json-strings": "^7.10.4",
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4",
"@babel/plugin-proposal-numeric-separator": "^7.10.4",
Expand All @@ -33,6 +34,7 @@
"@babel/plugin-syntax-async-generators": "^7.8.0",
"@babel/plugin-syntax-class-properties": "^7.10.4",
"@babel/plugin-syntax-dynamic-import": "^7.8.0",
"@babel/plugin-syntax-export-namespace-from": "^7.8.3",
"@babel/plugin-syntax-json-strings": "^7.8.0",
"@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0",
"@babel/plugin-syntax-numeric-separator": "^7.10.4",
Expand Down
4 changes: 4 additions & 0 deletions packages/babel-preset-env/src/available-plugins.js
Expand Up @@ -4,6 +4,7 @@
import syntaxAsyncGenerators from "@babel/plugin-syntax-async-generators";
import syntaxClassProperties from "@babel/plugin-syntax-class-properties";
import syntaxDynamicImport from "@babel/plugin-syntax-dynamic-import";
import syntaxExportNamespaceFrom from "@babel/plugin-syntax-export-namespace-from";
import syntaxJsonStrings from "@babel/plugin-syntax-json-strings";
import syntaxNullishCoalescingOperator from "@babel/plugin-syntax-nullish-coalescing-operator";
import syntaxNumericSeparator from "@babel/plugin-syntax-numeric-separator";
Expand All @@ -14,6 +15,7 @@ import syntaxTopLevelAwait from "@babel/plugin-syntax-top-level-await";
import proposalAsyncGeneratorFunctions from "@babel/plugin-proposal-async-generator-functions";
import proposalClassProperties from "@babel/plugin-proposal-class-properties";
import proposalDynamicImport from "@babel/plugin-proposal-dynamic-import";
import proposalExportNamespaceFrom from "@babel/plugin-proposal-export-namespace-from";
import proposalJsonStrings from "@babel/plugin-proposal-json-strings";
import proposalNullishCoalescingOperator from "@babel/plugin-proposal-nullish-coalescing-operator";
import proposalNumericSeparator from "@babel/plugin-proposal-numeric-separator";
Expand Down Expand Up @@ -72,6 +74,7 @@ export default {
"proposal-async-generator-functions": proposalAsyncGeneratorFunctions,
"proposal-class-properties": proposalClassProperties,
"proposal-dynamic-import": proposalDynamicImport,
"proposal-export-namespace-from": proposalExportNamespaceFrom,
"proposal-json-strings": proposalJsonStrings,
"proposal-nullish-coalescing-operator": proposalNullishCoalescingOperator,
"proposal-numeric-separator": proposalNumericSeparator,
Expand All @@ -83,6 +86,7 @@ export default {
"syntax-async-generators": syntaxAsyncGenerators,
"syntax-class-properties": syntaxClassProperties,
"syntax-dynamic-import": syntaxDynamicImport,
"syntax-export-namespace-from": syntaxExportNamespaceFrom,
"syntax-json-strings": syntaxJsonStrings,
"syntax-nullish-coalescing-operator": syntaxNullishCoalescingOperator,
"syntax-numeric-separator": syntaxNumericSeparator,
Expand Down
28 changes: 25 additions & 3 deletions packages/babel-preset-env/src/index.js
Expand Up @@ -99,14 +99,16 @@ export const getModulesPluginNames = ({
transformations,
shouldTransformESM,
shouldTransformDynamicImport,
shouldTransformExportNamespaceFrom,
shouldParseTopLevelAwait,
}: {
}: {|
modules: ModuleOption,
transformations: ModuleTransformationsType,
shouldTransformESM: boolean,
shouldTransformDynamicImport: boolean,
shouldTransformExportNamespaceFrom: boolean,
shouldParseTopLevelAwait: boolean,
}) => {
|}) => {
const modulesPluginNames = [];
if (modules !== false && transformations[modules]) {
if (shouldTransformESM) {
Expand All @@ -132,6 +134,12 @@ export const getModulesPluginNames = ({
modulesPluginNames.push("syntax-dynamic-import");
}

if (shouldTransformExportNamespaceFrom) {
modulesPluginNames.push("proposal-export-namespace-from");
} else {
modulesPluginNames.push("syntax-export-namespace-from");
}

if (shouldParseTopLevelAwait) {
modulesPluginNames.push("syntax-top-level-await");
}
Expand Down Expand Up @@ -206,6 +214,10 @@ function supportsDynamicImport(caller) {
return !!caller?.supportsDynamicImport;
}

function supportsExportNamespaceFrom(caller) {
return !!caller?.supportsExportNamespaceFrom;
}

function supportsTopLevelAwait(caller) {
return !!caller?.supportsTopLevelAwait;
}
Expand Down Expand Up @@ -265,6 +277,15 @@ export default declare((api, opts) => {

const transformTargets = forceAllTransforms || hasUglifyTarget ? {} : targets;

const compatData = getPluginList(shippedProposals, bugfixes);
const shouldSkipExportNamespaceFrom =
(modules === "auto" && api.caller?.(supportsExportNamespaceFrom)) ||
(modules === false &&
!isRequired("proposal-export-namespace-from", transformTargets, {
compatData,
includes: include.plugins,
excludes: exclude.plugins,
}));
const modulesPluginNames = getModulesPluginNames({
modules,
transformations: moduleTransformations,
Expand All @@ -273,11 +294,12 @@ export default declare((api, opts) => {
shouldTransformESM: modules !== "auto" || !api.caller?.(supportsStaticESM),
shouldTransformDynamicImport:
modules !== "auto" || !api.caller?.(supportsDynamicImport),
shouldTransformExportNamespaceFrom: !shouldSkipExportNamespaceFrom,
shouldParseTopLevelAwait: !api.caller || api.caller(supportsTopLevelAwait),
});

const pluginNames = filterItems(
getPluginList(shippedProposals, bugfixes),
compatData,
include.plugins,
exclude.plugins,
transformTargets,
Expand Down
Expand Up @@ -31,6 +31,7 @@ Using plugins:
transform-function-name { "edge":"16" }
transform-unicode-regex { "ios":"10.3", "safari":"10.1" }
transform-block-scoping { "ios":"10.3", "safari":"10.1" }
proposal-export-namespace-from { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" }
transform-modules-commonjs { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" }
proposal-dynamic-import { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" }

Expand Down
Expand Up @@ -26,6 +26,7 @@ Using plugins:
proposal-unicode-property-regex { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" }
transform-named-capturing-groups-regex { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" }
transform-unicode-regex { "ios":"10.3", "safari":"10.1" }
proposal-export-namespace-from { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" }
bugfix/transform-async-arrows-in-class { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" }
bugfix/transform-edge-default-parameters { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" }
bugfix/transform-edge-function-name { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" }
Expand Down
Expand Up @@ -37,6 +37,7 @@ Using plugins:
transform-block-scoping { "chrome":"40" }
transform-new-target { "chrome":"40" }
transform-regenerator { "chrome":"40" }
proposal-export-namespace-from { "chrome":"40" }
transform-modules-commonjs { "chrome":"40" }
proposal-dynamic-import { "chrome":"40" }

Expand Down
Expand Up @@ -14,6 +14,7 @@ Using plugins:
syntax-optional-catch-binding { "chrome":"70" }
syntax-async-generators { "chrome":"70" }
syntax-object-rest-spread { "chrome":"70" }
proposal-export-namespace-from { "chrome":"70" }
transform-modules-commonjs { "chrome":"70" }
proposal-dynamic-import { "chrome":"70" }

Expand Down
Expand Up @@ -21,6 +21,7 @@ Using plugins:
transform-async-to-generator { "edge":"14" }
transform-for-of { "edge":"14" }
transform-destructuring { "edge":"14" }
proposal-export-namespace-from { "edge":"14" }
bugfix/transform-edge-function-name { "edge":"14" }
transform-modules-commonjs { "edge":"14" }
proposal-dynamic-import { "edge":"14" }
Expand Down
Expand Up @@ -17,6 +17,7 @@ Using plugins:
transform-dotall-regex { "edge":"15" }
proposal-unicode-property-regex { "edge":"15" }
transform-named-capturing-groups-regex { "edge":"15" }
proposal-export-namespace-from { "edge":"15" }
bugfix/transform-edge-default-parameters { "edge":"15" }
bugfix/transform-edge-function-name { "edge":"15" }
transform-modules-commonjs { "edge":"15" }
Expand Down
Expand Up @@ -19,6 +19,7 @@ Using plugins:
proposal-unicode-property-regex { "edge":"17" }
transform-named-capturing-groups-regex { "edge":"17" }
transform-function-name { "edge":"17" }
proposal-export-namespace-from { "edge":"17" }
transform-modules-commonjs { "edge":"17" }
proposal-dynamic-import { "edge":"17" }

Expand Down
Expand Up @@ -17,6 +17,7 @@ Using plugins:
transform-dotall-regex { "edge":"17" }
proposal-unicode-property-regex { "edge":"17" }
transform-named-capturing-groups-regex { "edge":"17" }
proposal-export-namespace-from { "edge":"17" }
bugfix/transform-edge-default-parameters { "edge":"17" }
bugfix/transform-edge-function-name { "edge":"17" }
transform-modules-commonjs { "edge":"17" }
Expand Down
Expand Up @@ -17,6 +17,7 @@ Using plugins:
transform-dotall-regex { "edge":"18" }
proposal-unicode-property-regex { "edge":"18" }
transform-named-capturing-groups-regex { "edge":"18" }
proposal-export-namespace-from { "edge":"18" }
bugfix/transform-edge-function-name { "edge":"18" }
transform-modules-commonjs { "edge":"18" }
proposal-dynamic-import { "edge":"18" }
Expand Down
Expand Up @@ -22,6 +22,7 @@ Using plugins:
transform-function-name { "edge":"14" }
transform-for-of { "edge":"14" }
transform-destructuring { "edge":"14" }
proposal-export-namespace-from { "edge":"14" }
transform-modules-commonjs { "edge":"14" }
proposal-dynamic-import { "edge":"14" }

Expand Down
Expand Up @@ -21,6 +21,7 @@ Using plugins:
transform-async-to-generator { "edge":"14" }
transform-for-of { "edge":"14" }
transform-destructuring { "edge":"14" }
proposal-export-namespace-from { "edge":"14" }
bugfix/transform-edge-function-name { "edge":"14" }
transform-modules-commonjs { "edge":"14" }
proposal-dynamic-import { "edge":"14" }
Expand Down
Expand Up @@ -17,6 +17,7 @@ Using plugins:
transform-dotall-regex { "edge":"15" }
proposal-unicode-property-regex { "edge":"15" }
transform-named-capturing-groups-regex { "edge":"15" }
proposal-export-namespace-from { "edge":"15" }
bugfix/transform-edge-default-parameters { "edge":"15" }
bugfix/transform-edge-function-name { "edge":"15" }
transform-modules-commonjs { "edge":"15" }
Expand Down
Expand Up @@ -22,6 +22,7 @@ Using plugins:
transform-template-literals { "safari":"10" }
transform-unicode-regex { "safari":"10" }
transform-block-scoping { "safari":"10" }
proposal-export-namespace-from { "safari":"10" }
transform-modules-commonjs { "safari":"10" }
proposal-dynamic-import { "safari":"10" }

Expand Down
Expand Up @@ -20,6 +20,7 @@ Using plugins:
transform-async-to-generator { "safari":"10" }
transform-exponentiation-operator { "safari":"10" }
transform-unicode-regex { "safari":"10" }
proposal-export-namespace-from { "safari":"10" }
bugfix/transform-safari-block-shadowing { "safari":"10" }
bugfix/transform-safari-for-shadowing { "safari":"10" }
bugfix/transform-tagged-template-caching { "safari":"10" }
Expand Down
Expand Up @@ -18,6 +18,7 @@ Using plugins:
proposal-unicode-property-regex { "safari":"11" }
transform-named-capturing-groups-regex { "safari":"11" }
transform-unicode-regex { "safari":"11" }
proposal-export-namespace-from { "safari":"11" }
bugfix/transform-tagged-template-caching { "safari":"11" }
transform-modules-commonjs { "safari":"11" }
proposal-dynamic-import { "safari":"11" }
Expand Down
Expand Up @@ -31,6 +31,7 @@ Using plugins:
transform-block-scoping { "safari":"9" }
transform-new-target { "safari":"9" }
transform-regenerator { "safari":"9" }
proposal-export-namespace-from { "safari":"9" }
bugfix/transform-tagged-template-caching { "safari":"9" }
transform-modules-commonjs { "safari":"9" }
proposal-dynamic-import { "safari":"9" }
Expand Down
Expand Up @@ -31,6 +31,7 @@ Using plugins:
transform-function-name { "edge":"16" }
transform-unicode-regex { "ios":"10.3", "safari":"10.1" }
transform-block-scoping { "ios":"10.3", "safari":"10.1" }
proposal-export-namespace-from { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" }
syntax-dynamic-import { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" }

Using polyfills with `usage` option:
Expand Down
Expand Up @@ -31,6 +31,7 @@ Using plugins:
transform-function-name { "edge":"16" }
transform-unicode-regex { "ios":"10.3", "safari":"10.1" }
transform-block-scoping { "ios":"10.3", "safari":"10.1" }
proposal-export-namespace-from { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" }
syntax-dynamic-import { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" }

Using polyfills with `usage` option:
Expand Down
Expand Up @@ -39,6 +39,7 @@ Using plugins:
transform-typeof-symbol { "ie":"11" }
transform-new-target { "ie":"11" }
transform-regenerator { "ie":"11" }
proposal-export-namespace-from { "ie":"11" }
transform-modules-commonjs { "ie":"11" }
proposal-dynamic-import { "ie":"11" }

Expand Down
Expand Up @@ -43,6 +43,7 @@ Using plugins:
transform-member-expression-literals { "android":"3" }
transform-property-literals { "android":"3" }
transform-reserved-words { "android":"3" }
proposal-export-namespace-from { "android":"3" }
transform-modules-commonjs { "android":"3" }
proposal-dynamic-import { "android":"3" }

Expand Down
Expand Up @@ -26,6 +26,7 @@ Using plugins:
transform-named-capturing-groups-regex { "edge":"18", "firefox":"68" }
transform-template-literals { "ios":"12.2" }
transform-function-name { "edge":"18" }
proposal-export-namespace-from { "edge":"18", "firefox":"68", "ios":"12.2", "safari":"13", "samsung":"10.1" }
transform-modules-commonjs { "android":"80", "chrome":"79", "edge":"18", "firefox":"68", "ios":"12.2", "opera":"67", "safari":"13", "samsung":"10.1" }
proposal-dynamic-import { "android":"80", "chrome":"79", "edge":"18", "firefox":"68", "ios":"12.2", "opera":"67", "safari":"13", "samsung":"10.1" }

Expand Down
Expand Up @@ -47,6 +47,7 @@ Using plugins:
transform-typeof-symbol { "ie":"11" }
transform-new-target { "ie":"11" }
transform-regenerator { "ie":"11" }
proposal-export-namespace-from { "edge":"18", "firefox":"68", "ie":"11", "ios":"12.2", "safari":"13", "samsung":"10.1" }
transform-modules-commonjs { "android":"80", "chrome":"79", "edge":"18", "firefox":"68", "ie":"11", "ios":"12.2", "opera":"67", "safari":"13", "samsung":"10.1" }
proposal-dynamic-import { "android":"80", "chrome":"79", "edge":"18", "firefox":"68", "ie":"11", "ios":"12.2", "opera":"67", "safari":"13", "samsung":"10.1" }

Expand Down
Expand Up @@ -24,6 +24,7 @@ Using plugins:
transform-dotall-regex { "firefox":"75" }
proposal-unicode-property-regex { "firefox":"75" }
transform-named-capturing-groups-regex { "firefox":"75" }
proposal-export-namespace-from { "firefox":"75", "ios":"13.3", "safari":"13", "samsung":"10.1" }
transform-modules-commonjs { "android":"80", "chrome":"80", "edge":"80", "firefox":"75", "ios":"13.3", "opera":"67", "safari":"13", "samsung":"10.1" }
proposal-dynamic-import { "android":"80", "chrome":"80", "edge":"80", "firefox":"75", "ios":"13.3", "opera":"67", "safari":"13", "samsung":"10.1" }

Expand Down
Expand Up @@ -43,6 +43,7 @@ Using plugins:
transform-member-expression-literals {}
transform-property-literals {}
transform-reserved-words {}
proposal-export-namespace-from {}
transform-modules-commonjs {}
proposal-dynamic-import {}

Expand Down
Expand Up @@ -41,6 +41,7 @@ Using plugins:
transform-new-target { "android":"4" }
transform-regenerator { "android":"4" }
transform-reserved-words { "android":"4" }
proposal-export-namespace-from { "android":"4" }
transform-modules-commonjs { "android":"4" }
proposal-dynamic-import { "android":"4" }

Expand Down
Expand Up @@ -34,6 +34,7 @@ Using plugins:
transform-destructuring { "electron":"0.36" }
transform-block-scoping { "electron":"0.36" }
transform-regenerator { "electron":"0.36" }
proposal-export-namespace-from { "electron":"0.36" }
transform-modules-commonjs { "electron":"0.36" }
proposal-dynamic-import { "electron":"0.36" }

Expand Down
Expand Up @@ -43,6 +43,7 @@ Using plugins:
transform-member-expression-literals {}
transform-property-literals {}
transform-reserved-words {}
proposal-export-namespace-from { "chrome":"55" }
syntax-dynamic-import { "chrome":"55" }

Using polyfills with `entry` option:
Expand Down
Expand Up @@ -22,6 +22,7 @@ Using plugins:
transform-function-name { "node":"6" }
transform-for-of { "node":"6" }
transform-destructuring { "node":"6" }
proposal-export-namespace-from { "node":"6" }
transform-modules-commonjs { "node":"6" }
proposal-dynamic-import { "node":"6" }

Expand Down
Expand Up @@ -14,6 +14,7 @@ Using plugins:
syntax-optional-catch-binding { "chrome":"71" }
syntax-async-generators { "chrome":"71" }
syntax-object-rest-spread { "chrome":"71" }
proposal-export-namespace-from { "chrome":"71" }
transform-modules-commonjs { "chrome":"71" }
proposal-dynamic-import { "chrome":"71" }

Expand Down
Expand Up @@ -41,6 +41,7 @@ Using plugins:
transform-member-expression-literals {}
transform-property-literals {}
transform-reserved-words {}
proposal-export-namespace-from {}
transform-modules-commonjs {}
proposal-dynamic-import {}

Expand Down

0 comments on commit 3784216

Please sign in to comment.