diff --git a/packages/babel-compat-data/data/overlapping-plugins.json b/packages/babel-compat-data/data/overlapping-plugins.json index e5d9e4af4297..51976d9e2f43 100644 --- a/packages/babel-compat-data/data/overlapping-plugins.json +++ b/packages/babel-compat-data/data/overlapping-plugins.json @@ -14,5 +14,8 @@ ], "transform-template-literals": [ "bugfix/transform-tagged-template-caching" + ], + "proposal-optional-chaining": [ + "bugfix/transform-v8-spread-parameters-in-optional-chaining" ] } diff --git a/packages/babel-compat-data/data/plugin-bugfixes.json b/packages/babel-compat-data/data/plugin-bugfixes.json index e7c13dc5129d..b1521be394f5 100644 --- a/packages/babel-compat-data/data/plugin-bugfixes.json +++ b/packages/babel-compat-data/data/plugin-bugfixes.json @@ -121,5 +121,21 @@ "ios": "13", "samsung": "3.4", "electron": "0.21" + }, + "proposal-optional-chaining": { + "chrome": "80", + "opera": "67", + "edge": "80", + "firefox": "74", + "safari": "13.1", + "node": "14", + "ios": "13.4", + "samsung": "13", + "electron": "8.0" + }, + "bugfix/transform-v8-spread-parameters-in-optional-chaining": { + "firefox": "74", + "safari": "13.1", + "ios": "13.4" } } diff --git a/packages/babel-compat-data/data/plugins.json b/packages/babel-compat-data/data/plugins.json index 6e2221a7d625..4c6bca47064f 100644 --- a/packages/babel-compat-data/data/plugins.json +++ b/packages/babel-compat-data/data/plugins.json @@ -47,15 +47,9 @@ "electron": "8.0" }, "proposal-optional-chaining": { - "chrome": "80", - "opera": "67", - "edge": "80", "firefox": "74", "safari": "13.1", - "node": "14", - "ios": "13.4", - "samsung": "13", - "electron": "8.0" + "ios": "13.4" }, "proposal-json-strings": { "chrome": "66", diff --git a/packages/babel-compat-data/scripts/build-bugfixes-targets.js b/packages/babel-compat-data/scripts/build-bugfixes-targets.js index 4245776d0a8c..6ddc5ba3a16c 100644 --- a/packages/babel-compat-data/scripts/build-bugfixes-targets.js +++ b/packages/babel-compat-data/scripts/build-bugfixes-targets.js @@ -44,7 +44,10 @@ for (const [plugin, { replaces, features }] of Object.entries(data)) { for (const [replaced, features] of Object.entries(allReplacedFeatures)) { let replacedFeatures = pluginFeatures[replaced]; - if (!Array.isArray(replacedFeatures)) { + if ( + typeof replacedFeatures === "object" && + !Array.isArray(replacedFeatures) + ) { replacedFeatures = replacedFeatures.features; } diff --git a/packages/babel-compat-data/scripts/data/plugin-bugfixes.js b/packages/babel-compat-data/scripts/data/plugin-bugfixes.js index 53d3b81e6c38..75af0bc4fc0c 100644 --- a/packages/babel-compat-data/scripts/data/plugin-bugfixes.js +++ b/packages/babel-compat-data/scripts/data/plugin-bugfixes.js @@ -35,4 +35,10 @@ module.exports = { features: ["template literals / TemplateStrings permanent caching"], replaces: "transform-template-literals", }, + "bugfix/transform-v8-spread-parameters-in-optional-chaining": { + features: [ + "optional chaining operator (?.) / spread parameters after optional chaining", + ], + replaces: "proposal-optional-chaining", + }, }; diff --git a/packages/babel-compat-data/scripts/download-compat-table.sh b/packages/babel-compat-data/scripts/download-compat-table.sh index 3bf5eb2ce2d7..b1e3030691cb 100755 --- a/packages/babel-compat-data/scripts/download-compat-table.sh +++ b/packages/babel-compat-data/scripts/download-compat-table.sh @@ -1,7 +1,7 @@ #!/bin/bash set -e -COMPAT_TABLE_COMMIT=ec317e988ed0011cc5d24364e0f4f3a2e86d1f7f +COMPAT_TABLE_COMMIT=ab73608bddb6895f6f3296c03dba057b47ba8aea GIT_HEAD=build/compat-table/.git/HEAD if [ -d "build/compat-table" ]; then diff --git a/packages/babel-preset-env/test/fixtures/debug/browserslists-defaults-not-ie/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/browserslists-defaults-not-ie/stdout.txt index 6347c7beeb4c..9c5a0e54265e 100644 --- a/packages/babel-preset-env/test/fixtures/debug/browserslists-defaults-not-ie/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/browserslists-defaults-not-ie/stdout.txt @@ -18,7 +18,7 @@ Using plugins: proposal-numeric-separator { "ios":"12.2" } proposal-logical-assignment-operators { "chrome":"84", "firefox":"78", "ios":"12.2", "opera":"71", "safari":"13.1", "samsung":"11.1" } proposal-nullish-coalescing-operator { "ios":"12.2", "samsung":"11.1" } - proposal-optional-chaining { "ios":"12.2", "samsung":"11.1" } + proposal-optional-chaining { "android":"85", "chrome":"84", "edge":"85", "ios":"12.2", "opera":"71", "samsung":"11.1" } syntax-json-strings { "android":"85", "chrome":"84", "edge":"85", "firefox":"78", "ios":"12.2", "opera":"71", "safari":"13.1", "samsung":"11.1" } syntax-optional-catch-binding { "android":"85", "chrome":"84", "edge":"85", "firefox":"78", "ios":"12.2", "opera":"71", "safari":"13.1", "samsung":"11.1" } syntax-async-generators { "android":"85", "chrome":"84", "edge":"85", "firefox":"78", "ios":"12.2", "opera":"71", "safari":"13.1", "samsung":"11.1" } diff --git a/packages/babel-preset-env/test/fixtures/debug/browserslists-defaults/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/browserslists-defaults/stdout.txt index a94a88c92cf0..eb73802024f7 100644 --- a/packages/babel-preset-env/test/fixtures/debug/browserslists-defaults/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/browserslists-defaults/stdout.txt @@ -19,7 +19,7 @@ Using plugins: proposal-numeric-separator { "ie":"11", "ios":"12.2" } proposal-logical-assignment-operators { "chrome":"84", "firefox":"78", "ie":"11", "ios":"12.2", "opera":"71", "safari":"13.1", "samsung":"11.1" } proposal-nullish-coalescing-operator { "ie":"11", "ios":"12.2", "samsung":"11.1" } - proposal-optional-chaining { "ie":"11", "ios":"12.2", "samsung":"11.1" } + proposal-optional-chaining { "android":"85", "chrome":"84", "edge":"85", "ie":"11", "ios":"12.2", "opera":"71", "samsung":"11.1" } proposal-json-strings { "ie":"11" } proposal-optional-catch-binding { "ie":"11" } transform-parameters { "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/browserslists-last-2-versions-not-ie/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/browserslists-last-2-versions-not-ie/stdout.txt index 2f0240eb6e96..2d2baccd3521 100644 --- a/packages/babel-preset-env/test/fixtures/debug/browserslists-last-2-versions-not-ie/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/browserslists-last-2-versions-not-ie/stdout.txt @@ -18,7 +18,7 @@ Using plugins: syntax-numeric-separator { "android":"85", "chrome":"85", "edge":"85", "firefox":"81", "ios":"13.4", "opera":"71", "safari":"13.1", "samsung":"11.1" } proposal-logical-assignment-operators { "ios":"13.4", "opera":"71", "safari":"13.1", "samsung":"11.1" } proposal-nullish-coalescing-operator { "samsung":"11.1" } - proposal-optional-chaining { "samsung":"11.1" } + proposal-optional-chaining { "android":"85", "chrome":"85", "edge":"85", "opera":"71", "samsung":"11.1" } syntax-json-strings { "android":"85", "chrome":"85", "edge":"85", "firefox":"81", "ios":"13.4", "opera":"71", "safari":"13.1", "samsung":"11.1" } syntax-optional-catch-binding { "android":"85", "chrome":"85", "edge":"85", "firefox":"81", "ios":"13.4", "opera":"71", "safari":"13.1", "samsung":"11.1" } syntax-async-generators { "android":"85", "chrome":"85", "edge":"85", "firefox":"81", "ios":"13.4", "opera":"71", "safari":"13.1", "samsung":"11.1" } diff --git a/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-80/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-80/stdout.txt index de118c5fbafc..dc6d52e348bf 100644 --- a/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-80/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-80/stdout.txt @@ -13,7 +13,7 @@ Using plugins: syntax-numeric-separator { "chrome":"80" } proposal-logical-assignment-operators { "chrome":"80" } syntax-nullish-coalescing-operator { "chrome":"80" } - syntax-optional-chaining { "chrome":"80" } + proposal-optional-chaining { "chrome":"80" } syntax-json-strings { "chrome":"80" } syntax-optional-catch-binding { "chrome":"80" } syntax-async-generators { "chrome":"80" } diff --git a/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-84/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-84/stdout.txt index 32f5d7496709..d53563b57239 100644 --- a/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-84/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-84/stdout.txt @@ -12,7 +12,7 @@ Using plugins: syntax-numeric-separator { "chrome":"84" } proposal-logical-assignment-operators { "chrome":"84" } syntax-nullish-coalescing-operator { "chrome":"84" } - syntax-optional-chaining { "chrome":"84" } + proposal-optional-chaining { "chrome":"84" } syntax-json-strings { "chrome":"84" } syntax-optional-catch-binding { "chrome":"84" } syntax-async-generators { "chrome":"84" } diff --git a/packages/babel-preset-env/test/fixtures/debug/top-level-targets/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/top-level-targets/stdout.txt index 762aee9a191e..b5538ca13453 100644 --- a/packages/babel-preset-env/test/fixtures/debug/top-level-targets/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/top-level-targets/stdout.txt @@ -11,7 +11,7 @@ Using plugins: syntax-numeric-separator { "chrome":"80" } proposal-logical-assignment-operators { "chrome":"80" } syntax-nullish-coalescing-operator { "chrome":"80" } - syntax-optional-chaining { "chrome":"80" } + proposal-optional-chaining { "chrome":"80" } syntax-json-strings { "chrome":"80" } syntax-optional-catch-binding { "chrome":"80" } syntax-async-generators { "chrome":"80" }