From cd10ea03b434d54e9190bfda794d138b5778fc9d Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Tue, 19 Dec 2017 10:50:01 -0600 Subject: [PATCH 1/3] Fix bug with debug output and unreleased versions --- packages/babel-preset-env/src/debug.js | 20 +++++++++++++++++--- packages/babel-preset-env/src/utils.js | 2 +- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/packages/babel-preset-env/src/debug.js b/packages/babel-preset-env/src/debug.js index a1f8062b7c..4bd2855c74 100644 --- a/packages/babel-preset-env/src/debug.js +++ b/packages/babel-preset-env/src/debug.js @@ -1,6 +1,6 @@ /*eslint quotes: ["error", "double", { "avoidEscape": true }]*/ import semver from "semver"; -import { prettifyVersion, semverify } from "./utils"; +import { isUnreleasedVersion, prettifyVersion, semverify } from "./utils"; const wordEnds = size => { return size > 1 ? "s" : ""; @@ -15,9 +15,23 @@ export const logMessage = (message, context) => { export const logPlugin = (plugin, targets, list, context) => { const envList = list[plugin] || {}; const filteredList = Object.keys(targets).reduce((a, b) => { - if (!envList[b] || semver.lt(targets[b], semverify(envList[b]))) { - a[b] = prettifyVersion(targets[b]); + const version = envList[b]; + const target = targets[b]; + + if (!version) { + a[b] = prettifyVersion(target); + } else { + const versionIsUnreleased = isUnreleasedVersion(version, b); + const targetIsUnreleased = isUnreleasedVersion(target, b); + + if ( + (versionIsUnreleased && !targetIsUnreleased) || + (!targetIsUnreleased && semver.lt(target, semverify(version))) + ) { + a[b] = prettifyVersion(target); + } } + return a; }, {}); diff --git a/packages/babel-preset-env/src/utils.js b/packages/babel-preset-env/src/utils.js index a974e7116f..68205f05e7 100644 --- a/packages/babel-preset-env/src/utils.js +++ b/packages/babel-preset-env/src/utils.js @@ -58,7 +58,7 @@ export const prettifyTargets = (targets: Targets): Object => { export const isUnreleasedVersion = (version: string, env: string): boolean => { const unreleasedLabel = unreleasedLabels[env]; return ( - unreleasedLabel && unreleasedLabel === version.toString().toLowerCase() + !!unreleasedLabel && unreleasedLabel === version.toString().toLowerCase() ); }; From 3cea9f412ac6b32c2b03739228565692f66f23a6 Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Tue, 19 Dec 2017 10:50:29 -0600 Subject: [PATCH 2/3] Add dot-all regex support to preset-env and standalone --- packages/babel-preset-env/data/plugin-features.js | 6 +++++- packages/babel-preset-env/data/plugins.json | 9 ++++++++- packages/babel-preset-env/package.json | 3 ++- packages/babel-preset-env/src/available-plugins.js | 1 + .../test/debug-fixtures/android/stdout.txt | 3 ++- .../test/debug-fixtures/builtins-no-import/stdout.txt | 3 ++- .../test/debug-fixtures/builtins-uglify/stdout.txt | 3 ++- .../test/debug-fixtures/builtins/stdout.txt | 3 ++- .../test/debug-fixtures/electron/stdout.txt | 3 ++- .../test/debug-fixtures/force-all-transforms/stdout.txt | 3 ++- .../test/debug-fixtures/plugins-only/stdout.txt | 3 ++- .../debug-fixtures/shippedProposals-chrome60/stdout.txt | 3 ++- .../test/debug-fixtures/shippedProposals/stdout.txt | 3 ++- .../test/debug-fixtures/specific-targets/stdout.txt | 3 ++- .../test/debug-fixtures/usage-none/stdout.txt | 3 ++- .../test/debug-fixtures/usage-with-import/stdout.txt | 1 + .../test/debug-fixtures/usage/stdout.txt | 3 ++- .../test/debug-fixtures/versions-decimals/stdout.txt | 3 ++- .../test/debug-fixtures/versions-strings/stdout.txt | 3 ++- packages/babel-standalone/package.json | 1 + packages/babel-standalone/src/index.js | 1 + 21 files changed, 47 insertions(+), 17 deletions(-) diff --git a/packages/babel-preset-env/data/plugin-features.js b/packages/babel-preset-env/data/plugin-features.js index 3d8c0babe2..14b6137ec0 100644 --- a/packages/babel-preset-env/data/plugin-features.js +++ b/packages/babel-preset-env/data/plugin-features.js @@ -130,6 +130,10 @@ const es2017 = { }, }; +const es2018 = { + "transform-dotall-regex": "s (dotAll) flag for regular expressions", +}; + const proposals = require("./shipped-proposals").features; -module.exports = Object.assign({}, es2015, es2016, es2017, proposals); +module.exports = Object.assign({}, es2015, es2016, es2017, es2018, proposals); diff --git a/packages/babel-preset-env/data/plugins.json b/packages/babel-preset-env/data/plugins.json index 252dbf1d3f..4c1896b1dc 100644 --- a/packages/babel-preset-env/data/plugins.json +++ b/packages/babel-preset-env/data/plugins.json @@ -228,6 +228,11 @@ "opera": "42", "electron": "1.6" }, + "transform-dotall-regex": { + "chrome": "62", + "safari": "tp", + "opera": "49" + }, "proposal-async-generator-functions": { "chrome": "63", "firefox": "57", @@ -246,6 +251,8 @@ "safari": "tp" }, "proposal-unicode-property-regex": { - "safari": "tp" + "chrome": "64", + "safari": "tp", + "opera": "51" } } diff --git a/packages/babel-preset-env/package.json b/packages/babel-preset-env/package.json index 548e929d3e..a5c218f387 100644 --- a/packages/babel-preset-env/package.json +++ b/packages/babel-preset-env/package.json @@ -26,6 +26,7 @@ "@babel/plugin-transform-classes": "7.0.0-beta.35", "@babel/plugin-transform-computed-properties": "7.0.0-beta.35", "@babel/plugin-transform-destructuring": "7.0.0-beta.35", + "@babel/plugin-transform-dotall-regex": "7.0.0-beta.35", "@babel/plugin-transform-duplicate-keys": "7.0.0-beta.35", "@babel/plugin-transform-exponentiation-operator": "7.0.0-beta.35", "@babel/plugin-transform-for-of": "7.0.0-beta.35", @@ -57,7 +58,7 @@ "@babel/core": "7.0.0-beta.35", "@babel/helper-fixtures": "7.0.0-beta.35", "@babel/helper-plugin-test-runner": "7.0.0-beta.35", - "compat-table": "kangax/compat-table#baed064b31147eda2fb268ea708013d6208b8615", + "compat-table": "kangax/compat-table#3e30cd67a5d3d853caf8424d00ca66d100674d4f", "electron-to-chromium": "^1.3.27" } } diff --git a/packages/babel-preset-env/src/available-plugins.js b/packages/babel-preset-env/src/available-plugins.js index 90691c1f71..e835db2c80 100644 --- a/packages/babel-preset-env/src/available-plugins.js +++ b/packages/babel-preset-env/src/available-plugins.js @@ -11,6 +11,7 @@ export default { "transform-classes": require("@babel/plugin-transform-classes"), "transform-computed-properties": require("@babel/plugin-transform-computed-properties"), "transform-destructuring": require("@babel/plugin-transform-destructuring"), + "transform-dotall-regex": require("@babel/plugin-transform-dotall-regex"), "transform-duplicate-keys": require("@babel/plugin-transform-duplicate-keys"), "transform-for-of": require("@babel/plugin-transform-for-of"), "transform-function-name": require("@babel/plugin-transform-function-name"), diff --git a/packages/babel-preset-env/test/debug-fixtures/android/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/android/stdout.txt index f48af5205d..16ec0de084 100644 --- a/packages/babel-preset-env/test/debug-fixtures/android/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/android/stdout.txt @@ -31,6 +31,7 @@ Using plugins: transform-regenerator { "android":"4" } transform-exponentiation-operator { "android":"4" } transform-async-to-generator { "android":"4" } + transform-dotall-regex { "android":"4" } Using polyfills with `entry` option: @@ -132,4 +133,4 @@ Using polyfills with `entry` option: web.timers { "android":"4" } web.immediate { "android":"4" } web.dom.iterable { "android":"4" } -src/in.js -> lib/in.js +src/in.js -> lib/in.js \ No newline at end of file diff --git a/packages/babel-preset-env/test/debug-fixtures/builtins-no-import/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/builtins-no-import/stdout.txt index 6a17529435..7f1e819d31 100644 --- a/packages/babel-preset-env/test/debug-fixtures/builtins-no-import/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/builtins-no-import/stdout.txt @@ -13,8 +13,9 @@ Using plugins: transform-function-name { "node":"6" } transform-exponentiation-operator { "node":"6" } transform-async-to-generator { "node":"6" } + transform-dotall-regex { "node":"6" } Using polyfills with `entry` option: [src/in.js] `import '@babel/polyfill'` was not found. -src/in.js -> lib/in.js +src/in.js -> lib/in.js \ No newline at end of file diff --git a/packages/babel-preset-env/test/debug-fixtures/builtins-uglify/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/builtins-uglify/stdout.txt index 00b603d278..b0433a0167 100644 --- a/packages/babel-preset-env/test/debug-fixtures/builtins-uglify/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/builtins-uglify/stdout.txt @@ -34,6 +34,7 @@ Using plugins: transform-regenerator {} transform-exponentiation-operator {} transform-async-to-generator {} + transform-dotall-regex { "chrome":"55" } Using polyfills with `entry` option: @@ -43,4 +44,4 @@ Using polyfills with `entry` option: web.timers { "chrome":"55" } web.immediate { "chrome":"55" } web.dom.iterable { "chrome":"55" } -src/in.js -> lib/in.js +src/in.js -> lib/in.js \ No newline at end of file diff --git a/packages/babel-preset-env/test/debug-fixtures/builtins/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/builtins/stdout.txt index 45aac6e5fd..f1f3322d56 100644 --- a/packages/babel-preset-env/test/debug-fixtures/builtins/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/builtins/stdout.txt @@ -33,6 +33,7 @@ Using plugins: transform-regenerator { "ie":"10" } transform-exponentiation-operator { "ie":"10", "node":"6" } transform-async-to-generator { "chrome":"54", "ie":"10", "node":"6" } + transform-dotall-regex { "chrome":"54", "ie":"10", "node":"6" } Using polyfills with `entry` option: @@ -134,4 +135,4 @@ Using polyfills with `entry` option: web.timers { "chrome":"54", "ie":"10", "node":"6" } web.immediate { "chrome":"54", "ie":"10", "node":"6" } web.dom.iterable { "chrome":"54", "ie":"10", "node":"6" } -src/in.js -> lib/in.js +src/in.js -> lib/in.js \ No newline at end of file diff --git a/packages/babel-preset-env/test/debug-fixtures/electron/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/electron/stdout.txt index b1b7cfb7ca..554a52f43a 100644 --- a/packages/babel-preset-env/test/debug-fixtures/electron/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/electron/stdout.txt @@ -26,6 +26,7 @@ Using plugins: transform-regenerator { "electron":"0.36" } transform-exponentiation-operator { "electron":"0.36" } transform-async-to-generator { "electron":"0.36" } + transform-dotall-regex { "electron":"0.36" } Using polyfills with `entry` option: @@ -75,4 +76,4 @@ Using polyfills with `entry` option: web.timers { "electron":"0.36" } web.immediate { "electron":"0.36" } web.dom.iterable { "electron":"0.36" } -src/in.js -> lib/in.js +src/in.js -> lib/in.js \ No newline at end of file diff --git a/packages/babel-preset-env/test/debug-fixtures/force-all-transforms/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/force-all-transforms/stdout.txt index 05199f8acd..1e715fe107 100644 --- a/packages/babel-preset-env/test/debug-fixtures/force-all-transforms/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/force-all-transforms/stdout.txt @@ -31,6 +31,7 @@ Using plugins: transform-regenerator {} transform-exponentiation-operator {} transform-async-to-generator {} + transform-dotall-regex { "chrome":"55" } Using polyfills with `entry` option: @@ -40,4 +41,4 @@ Using polyfills with `entry` option: web.timers { "chrome":"55" } web.immediate { "chrome":"55" } web.dom.iterable { "chrome":"55" } -src/in.js -> lib/in.js +src/in.js -> lib/in.js \ No newline at end of file diff --git a/packages/babel-preset-env/test/debug-fixtures/plugins-only/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/plugins-only/stdout.txt index e727b2e1b9..6fb8c6144d 100644 --- a/packages/babel-preset-env/test/debug-fixtures/plugins-only/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/plugins-only/stdout.txt @@ -20,6 +20,7 @@ Using plugins: transform-for-of { "firefox":"52" } transform-function-name { "firefox":"52" } transform-literals { "firefox":"52" } + transform-dotall-regex { "firefox":"52", "node":"7.4" } Using polyfills: No polyfills were added, since the `useBuiltIns` option was not set. -src/in.js -> lib/in.js +src/in.js -> lib/in.js \ No newline at end of file diff --git a/packages/babel-preset-env/test/debug-fixtures/shippedProposals-chrome60/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/shippedProposals-chrome60/stdout.txt index 525114fa60..8cd92ada6a 100644 --- a/packages/babel-preset-env/test/debug-fixtures/shippedProposals-chrome60/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/shippedProposals-chrome60/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: commonjs Using plugins: + transform-dotall-regex { "chrome":"60" } proposal-async-generator-functions { "chrome":"60" } syntax-object-rest-spread { "chrome":"60" } proposal-optional-catch-binding { "chrome":"60" } @@ -20,4 +21,4 @@ Using polyfills with `entry` option: web.timers { "chrome":"60" } web.immediate { "chrome":"60" } web.dom.iterable { "chrome":"60" } -src/in.js -> lib/in.js +src/in.js -> lib/in.js \ No newline at end of file diff --git a/packages/babel-preset-env/test/debug-fixtures/shippedProposals/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/shippedProposals/stdout.txt index 41f43b342e..e087d92279 100644 --- a/packages/babel-preset-env/test/debug-fixtures/shippedProposals/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/shippedProposals/stdout.txt @@ -29,6 +29,7 @@ Using plugins: transform-regenerator {} transform-exponentiation-operator {} transform-async-to-generator {} + transform-dotall-regex {} proposal-async-generator-functions {} proposal-object-rest-spread {} proposal-optional-catch-binding {} @@ -136,4 +137,4 @@ Using polyfills with `entry` option: web.timers {} web.immediate {} web.dom.iterable {} -src/in.js -> lib/in.js +src/in.js -> lib/in.js \ No newline at end of file diff --git a/packages/babel-preset-env/test/debug-fixtures/specific-targets/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/specific-targets/stdout.txt index d1275d38f6..fb8c5a8036 100644 --- a/packages/babel-preset-env/test/debug-fixtures/specific-targets/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/specific-targets/stdout.txt @@ -36,6 +36,7 @@ Using plugins: transform-regenerator { "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } transform-exponentiation-operator { "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } transform-async-to-generator { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } + transform-dotall-regex { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } Using polyfills with `entry` option: @@ -137,4 +138,4 @@ Using polyfills with `entry` option: web.timers { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } web.immediate { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } web.dom.iterable { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } -src/in.js -> lib/in.js +src/in.js -> lib/in.js \ No newline at end of file diff --git a/packages/babel-preset-env/test/debug-fixtures/usage-none/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/usage-none/stdout.txt index 36cbd65e92..06222d85e0 100644 --- a/packages/babel-preset-env/test/debug-fixtures/usage-none/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/usage-none/stdout.txt @@ -32,6 +32,7 @@ Using plugins: transform-regenerator { "firefox":"50", "ie":"11" } transform-exponentiation-operator { "firefox":"50", "ie":"11" } transform-async-to-generator { "chrome":"52", "firefox":"50", "ie":"11" } + transform-dotall-regex { "chrome":"52", "firefox":"50", "ie":"11" } Using polyfills with `usage` option: @@ -39,4 +40,4 @@ Using polyfills with `usage` option: src/in.js -> lib/in.js [src/in2.js] Based on your code and targets, none were added. -src/in2.js -> lib/in2.js +src/in2.js -> lib/in2.js \ No newline at end of file diff --git a/packages/babel-preset-env/test/debug-fixtures/usage-with-import/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/usage-with-import/stdout.txt index 660ffb5247..63f953cc27 100644 --- a/packages/babel-preset-env/test/debug-fixtures/usage-with-import/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/usage-with-import/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: commonjs Using plugins: + transform-dotall-regex { "chrome":"55" } Using polyfills with `usage` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/usage/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/usage/stdout.txt index 29007d3ebb..2a7b1cdd34 100644 --- a/packages/babel-preset-env/test/debug-fixtures/usage/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/usage/stdout.txt @@ -32,6 +32,7 @@ Using plugins: transform-regenerator { "firefox":"50", "ie":"11" } transform-exponentiation-operator { "firefox":"50", "ie":"11" } transform-async-to-generator { "chrome":"52", "firefox":"50", "ie":"11" } + transform-dotall-regex { "chrome":"52", "firefox":"50", "ie":"11" } Using polyfills with `usage` option: @@ -43,4 +44,4 @@ src/in.js -> lib/in.js [src/in2.js] Added following polyfills: regenerator-runtime { "chrome":"52", "firefox":"50", "ie":"11" } web.dom.iterable { "chrome":"52", "firefox":"50", "ie":"11" } -src/in2.js -> lib/in2.js +src/in2.js -> lib/in2.js \ No newline at end of file diff --git a/packages/babel-preset-env/test/debug-fixtures/versions-decimals/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/versions-decimals/stdout.txt index fbb8a137c1..da4fb5de44 100644 --- a/packages/babel-preset-env/test/debug-fixtures/versions-decimals/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/versions-decimals/stdout.txt @@ -42,6 +42,7 @@ Using plugins: transform-regenerator { "electron":"0.36", "ie":"10" } transform-exponentiation-operator { "electron":"0.36", "ie":"10", "node":"6.1" } transform-async-to-generator { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } + transform-dotall-regex { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } Using polyfills with `entry` option: @@ -144,4 +145,4 @@ Using polyfills with `entry` option: web.timers { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } web.immediate { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } web.dom.iterable { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } -src/in.js -> lib/in.js +src/in.js -> lib/in.js \ No newline at end of file diff --git a/packages/babel-preset-env/test/debug-fixtures/versions-strings/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/versions-strings/stdout.txt index d92c7386b8..62d3f8a2de 100644 --- a/packages/babel-preset-env/test/debug-fixtures/versions-strings/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/versions-strings/stdout.txt @@ -33,6 +33,7 @@ Using plugins: transform-regenerator { "ie":"10" } transform-exponentiation-operator { "ie":"10", "node":"6.10" } transform-async-to-generator { "chrome":"54", "ie":"10", "node":"6.10" } + transform-dotall-regex { "chrome":"54", "ie":"10", "node":"6.10" } Using polyfills with `entry` option: @@ -134,4 +135,4 @@ Using polyfills with `entry` option: web.timers { "chrome":"54", "ie":"10", "node":"6.10" } web.immediate { "chrome":"54", "ie":"10", "node":"6.10" } web.dom.iterable { "chrome":"54", "ie":"10", "node":"6.10" } -src/in.js -> lib/in.js +src/in.js -> lib/in.js \ No newline at end of file diff --git a/packages/babel-standalone/package.json b/packages/babel-standalone/package.json index 5a5ccbdd51..eef1402738 100644 --- a/packages/babel-standalone/package.json +++ b/packages/babel-standalone/package.json @@ -45,6 +45,7 @@ "@babel/plugin-transform-classes": "7.0.0-beta.35", "@babel/plugin-transform-computed-properties": "7.0.0-beta.35", "@babel/plugin-transform-destructuring": "7.0.0-beta.35", + "@babel/plugin-transform-dotall-regex": "7.0.0-beta.35", "@babel/plugin-transform-duplicate-keys": "7.0.0-beta.35", "@babel/plugin-transform-eval": "7.0.0-beta.35", "@babel/plugin-transform-exponentiation-operator": "7.0.0-beta.35", diff --git a/packages/babel-standalone/src/index.js b/packages/babel-standalone/src/index.js index 96677f5a0e..acbafab0d7 100644 --- a/packages/babel-standalone/src/index.js +++ b/packages/babel-standalone/src/index.js @@ -170,6 +170,7 @@ registerPlugins({ "transform-classes": require("@babel/plugin-transform-classes"), "transform-computed-properties": require("@babel/plugin-transform-computed-properties"), "transform-destructuring": require("@babel/plugin-transform-destructuring"), + "transform-dotall-regex": require("@babel/plugin-transform-dotall-regex"), "transform-duplicate-keys": require("@babel/plugin-transform-duplicate-keys"), "transform-for-of": require("@babel/plugin-transform-for-of"), "transform-function-name": require("@babel/plugin-transform-function-name"), From 080c7f1e2d795c766f36b8dacab0c84ca953d62d Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Tue, 19 Dec 2017 14:57:19 -0600 Subject: [PATCH 3/3] Clean up logPlugin --- packages/babel-preset-env/src/debug.js | 31 ++++++++++++++------------ 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/packages/babel-preset-env/src/debug.js b/packages/babel-preset-env/src/debug.js index 4bd2855c74..ddf65a5c28 100644 --- a/packages/babel-preset-env/src/debug.js +++ b/packages/babel-preset-env/src/debug.js @@ -12,27 +12,30 @@ export const logMessage = (message, context) => { console.log(logStr); }; -export const logPlugin = (plugin, targets, list, context) => { - const envList = list[plugin] || {}; - const filteredList = Object.keys(targets).reduce((a, b) => { - const version = envList[b]; - const target = targets[b]; +// Outputs a message that shows which target(s) caused an item to be included: +// transform-foo { "edge":"13", "firefox":"49", "ie":"10" } +export const logPlugin = (item, targetVersions, list, context) => { + const minVersions = list[item] || {}; - if (!version) { - a[b] = prettifyVersion(target); + const filteredList = Object.keys(targetVersions).reduce((result, env) => { + const minVersion = minVersions[env]; + const targetVersion = targetVersions[env]; + + if (!minVersion) { + result[env] = prettifyVersion(targetVersion); } else { - const versionIsUnreleased = isUnreleasedVersion(version, b); - const targetIsUnreleased = isUnreleasedVersion(target, b); + const minIsUnreleased = isUnreleasedVersion(minVersion, env); + const targetIsUnreleased = isUnreleasedVersion(targetVersion, env); if ( - (versionIsUnreleased && !targetIsUnreleased) || - (!targetIsUnreleased && semver.lt(target, semverify(version))) + !targetIsUnreleased && + (minIsUnreleased || semver.lt(targetVersion, semverify(minVersion))) ) { - a[b] = prettifyVersion(target); + result[env] = prettifyVersion(targetVersion); } } - return a; + return result; }, {}); const formattedTargets = JSON.stringify(filteredList) @@ -40,7 +43,7 @@ export const logPlugin = (plugin, targets, list, context) => { .replace(/^\{"/, '{ "') .replace(/"\}$/, '" }'); - logMessage(`${plugin} ${formattedTargets}`, context); + logMessage(`${item} ${formattedTargets}`, context); }; export const logEntryPolyfills = (