From cdb34c3aa29c520928291b90f2b5fa403187fcb8 Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Thu, 14 Sep 2017 10:06:53 -0500 Subject: [PATCH] Add support for new.target transform (#414) --- .../babel-preset-env/data/plugin-features.js | 5 ++++ .../babel-preset-env/data/plugins.json | 10 ++++++++ experimental/babel-preset-env/package.json | 1 + .../babel-preset-env/src/available-plugins.js | 1 + .../test/debug-fixtures/android/stdout.txt | 3 ++- .../debug-fixtures/builtins-uglify/stdout.txt | 1 + .../test/debug-fixtures/builtins/stdout.txt | 3 ++- .../force-all-transforms/stdout.txt | 3 ++- .../specific-targets/stdout.txt | 3 ++- .../test/debug-fixtures/usage-none/stdout.txt | 3 ++- .../test/debug-fixtures/usage/stdout.txt | 3 ++- .../versions-decimals/stdout.txt | 3 ++- .../versions-strings/stdout.txt | 3 ++- experimental/babel-preset-env/yarn.lock | 23 +++++-------------- 14 files changed, 40 insertions(+), 25 deletions(-) diff --git a/experimental/babel-preset-env/data/plugin-features.js b/experimental/babel-preset-env/data/plugin-features.js index 8879232308..e6d505a370 100644 --- a/experimental/babel-preset-env/data/plugin-features.js +++ b/experimental/babel-preset-env/data/plugin-features.js @@ -102,6 +102,11 @@ const es2015 = { "RegExp \"y\" and \"u\" flags / \"u\" flag", ], }, + "transform-new-target": { + features: [ + "new.target", + ], + }, "transform-regenerator": { features: [ "generators", diff --git a/experimental/babel-preset-env/data/plugins.json b/experimental/babel-preset-env/data/plugins.json index 79ff58aaee..497597317c 100644 --- a/experimental/babel-preset-env/data/plugins.json +++ b/experimental/babel-preset-env/data/plugins.json @@ -189,6 +189,16 @@ "opera": "37", "electron": "1.1" }, + "transform-new-target": { + "chrome": "46", + "edge": "14", + "firefox": "41", + "safari": "10", + "node": "5", + "ios": "10", + "opera": "33", + "electron": "0.36" + }, "transform-regenerator": { "chrome": "50", "edge": "13", diff --git a/experimental/babel-preset-env/package.json b/experimental/babel-preset-env/package.json index 9e329b53d0..4eddd8f028 100644 --- a/experimental/babel-preset-env/package.json +++ b/experimental/babel-preset-env/package.json @@ -51,6 +51,7 @@ "babel-plugin-transform-es2015-typeof-symbol": "7.0.0-beta.0", "babel-plugin-transform-es2015-unicode-regex": "7.0.0-beta.0", "babel-plugin-transform-exponentiation-operator": "7.0.0-beta.0", + "babel-plugin-transform-new-target": "7.0.0-beta.0", "babel-plugin-transform-regenerator": "7.0.0-beta.0", "browserslist": "^2.4.0", "invariant": "^2.2.2", diff --git a/experimental/babel-preset-env/src/available-plugins.js b/experimental/babel-preset-env/src/available-plugins.js index 4cfc00c2f5..dec54bc7ff 100644 --- a/experimental/babel-preset-env/src/available-plugins.js +++ b/experimental/babel-preset-env/src/available-plugins.js @@ -25,5 +25,6 @@ export default { "transform-es2015-typeof-symbol": require("babel-plugin-transform-es2015-typeof-symbol"), "transform-es2015-unicode-regex": require("babel-plugin-transform-es2015-unicode-regex"), "transform-exponentiation-operator": require("babel-plugin-transform-exponentiation-operator"), + "transform-new-target": require("babel-plugin-transform-new-target"), "transform-regenerator": require("babel-plugin-transform-regenerator"), }; diff --git a/experimental/babel-preset-env/test/debug-fixtures/android/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/android/stdout.txt index d2aafe6d15..7b9401ccca 100644 --- a/experimental/babel-preset-env/test/debug-fixtures/android/stdout.txt +++ b/experimental/babel-preset-env/test/debug-fixtures/android/stdout.txt @@ -27,6 +27,7 @@ Using plugins: transform-es2015-template-literals { "android":"4" } transform-es2015-typeof-symbol { "android":"4" } transform-es2015-unicode-regex { "android":"4" } + transform-new-target { "android":"4" } transform-regenerator { "android":"4" } transform-exponentiation-operator { "android":"4" } transform-async-to-generator { "android":"4" } @@ -120,4 +121,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/experimental/babel-preset-env/test/debug-fixtures/builtins-uglify/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/builtins-uglify/stdout.txt index 8746344659..fef5b06869 100644 --- a/experimental/babel-preset-env/test/debug-fixtures/builtins-uglify/stdout.txt +++ b/experimental/babel-preset-env/test/debug-fixtures/builtins-uglify/stdout.txt @@ -30,6 +30,7 @@ Using plugins: transform-es2015-template-literals {} transform-es2015-typeof-symbol {} transform-es2015-unicode-regex {} + transform-new-target {} transform-regenerator {} transform-exponentiation-operator {} transform-async-to-generator {} diff --git a/experimental/babel-preset-env/test/debug-fixtures/builtins/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/builtins/stdout.txt index 89be4ab8fd..21c31c9eee 100644 --- a/experimental/babel-preset-env/test/debug-fixtures/builtins/stdout.txt +++ b/experimental/babel-preset-env/test/debug-fixtures/builtins/stdout.txt @@ -29,6 +29,7 @@ Using plugins: transform-es2015-template-literals { "ie":"10" } transform-es2015-typeof-symbol { "ie":"10" } transform-es2015-unicode-regex { "ie":"10" } + transform-new-target { "ie":"10" } transform-regenerator { "ie":"10" } transform-exponentiation-operator { "ie":"10", "node":"6" } transform-async-to-generator { "chrome":"54", "ie":"10", "node":"6" } @@ -122,4 +123,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/experimental/babel-preset-env/test/debug-fixtures/force-all-transforms/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/force-all-transforms/stdout.txt index 29f6f8fa15..9e3a084a14 100644 --- a/experimental/babel-preset-env/test/debug-fixtures/force-all-transforms/stdout.txt +++ b/experimental/babel-preset-env/test/debug-fixtures/force-all-transforms/stdout.txt @@ -27,6 +27,7 @@ Using plugins: transform-es2015-template-literals {} transform-es2015-typeof-symbol {} transform-es2015-unicode-regex {} + transform-new-target {} transform-regenerator {} transform-exponentiation-operator {} transform-async-to-generator {} @@ -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/experimental/babel-preset-env/test/debug-fixtures/specific-targets/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/specific-targets/stdout.txt index 6d07616cf2..74461d71fb 100644 --- a/experimental/babel-preset-env/test/debug-fixtures/specific-targets/stdout.txt +++ b/experimental/babel-preset-env/test/debug-fixtures/specific-targets/stdout.txt @@ -32,6 +32,7 @@ Using plugins: transform-es2015-template-literals { "ie":"10", "safari":"7" } transform-es2015-typeof-symbol { "ie":"10", "safari":"7" } transform-es2015-unicode-regex { "ie":"10", "ios":"9", "safari":"7" } + transform-new-target { "edge":"13", "ie":"10", "ios":"9", "safari":"7" } 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" } @@ -125,4 +126,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/experimental/babel-preset-env/test/debug-fixtures/usage-none/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/usage-none/stdout.txt index caa9d1d9e8..35c2ad7ead 100644 --- a/experimental/babel-preset-env/test/debug-fixtures/usage-none/stdout.txt +++ b/experimental/babel-preset-env/test/debug-fixtures/usage-none/stdout.txt @@ -28,6 +28,7 @@ Using plugins: transform-es2015-template-literals { "ie":"11" } transform-es2015-typeof-symbol { "ie":"11" } transform-es2015-unicode-regex { "ie":"11" } + transform-new-target { "ie":"11" } transform-regenerator { "firefox":"50", "ie":"11" } transform-exponentiation-operator { "firefox":"50", "ie":"11" } transform-async-to-generator { "chrome":"52", "firefox":"50", "ie":"11" } @@ -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/experimental/babel-preset-env/test/debug-fixtures/usage/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/usage/stdout.txt index 4613bac03b..bc9f0b2a7b 100644 --- a/experimental/babel-preset-env/test/debug-fixtures/usage/stdout.txt +++ b/experimental/babel-preset-env/test/debug-fixtures/usage/stdout.txt @@ -28,6 +28,7 @@ Using plugins: transform-es2015-template-literals { "ie":"11" } transform-es2015-typeof-symbol { "ie":"11" } transform-es2015-unicode-regex { "ie":"11" } + transform-new-target { "ie":"11" } transform-regenerator { "firefox":"50", "ie":"11" } transform-exponentiation-operator { "firefox":"50", "ie":"11" } transform-async-to-generator { "chrome":"52", "firefox":"50", "ie":"11" } @@ -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/experimental/babel-preset-env/test/debug-fixtures/versions-decimals/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/versions-decimals/stdout.txt index 280732d21c..96e9961532 100644 --- a/experimental/babel-preset-env/test/debug-fixtures/versions-decimals/stdout.txt +++ b/experimental/babel-preset-env/test/debug-fixtures/versions-decimals/stdout.txt @@ -38,6 +38,7 @@ Using plugins: transform-es2015-template-literals { "ie":"10" } transform-es2015-typeof-symbol { "ie":"10" } transform-es2015-unicode-regex { "electron":"0.36", "ie":"10" } + transform-new-target { "ie":"10" } 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" } @@ -132,4 +133,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/experimental/babel-preset-env/test/debug-fixtures/versions-strings/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/versions-strings/stdout.txt index 725814ced6..8e75f07987 100644 --- a/experimental/babel-preset-env/test/debug-fixtures/versions-strings/stdout.txt +++ b/experimental/babel-preset-env/test/debug-fixtures/versions-strings/stdout.txt @@ -29,6 +29,7 @@ Using plugins: transform-es2015-template-literals { "ie":"10" } transform-es2015-typeof-symbol { "ie":"10" } transform-es2015-unicode-regex { "ie":"10" } + transform-new-target { "ie":"10" } transform-regenerator { "ie":"10" } transform-exponentiation-operator { "ie":"10", "node":"6.10" } transform-async-to-generator { "chrome":"54", "ie":"10", "node":"6.10" } @@ -122,4 +123,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/experimental/babel-preset-env/yarn.lock b/experimental/babel-preset-env/yarn.lock index d9bdfccfc0..ea01c3ff96 100644 --- a/experimental/babel-preset-env/yarn.lock +++ b/experimental/babel-preset-env/yarn.lock @@ -1323,6 +1323,10 @@ babel-plugin-transform-function-bind@^6.22.0: babel-plugin-syntax-function-bind "^6.8.0" babel-runtime "^6.22.0" +babel-plugin-transform-new-target@7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-new-target/-/babel-plugin-transform-new-target-7.0.0-beta.0.tgz#0ded2d30b0e889a2916384d4955de96ddd2c2764" + babel-plugin-transform-object-rest-spread@^6.22.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz#875d6bc9be761c58a2ae3feee5dc4895d8c7f921" @@ -1690,14 +1694,7 @@ browser-stdout@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" -browserslist@^2.1.2: - version "2.1.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.1.4.tgz#cc526af4a1312b7d2e05653e56d0c8ab70c0e053" - dependencies: - caniuse-lite "^1.0.30000670" - electron-to-chromium "^1.3.11" - -browserslist@^2.4.0: +browserslist@^2.1.2, browserslist@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.4.0.tgz#693ee93d01e66468a6348da5498e011f578f87f8" dependencies: @@ -1742,10 +1739,6 @@ camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" -caniuse-lite@^1.0.30000670: - version "1.0.30000676" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000676.tgz#1e962123f48073f0c51c4ea0651dd64d25786498" - caniuse-lite@^1.0.30000718: version "1.0.30000721" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000721.tgz#931a21a7bd85016300328d21f126d84b73437d35" @@ -1976,7 +1969,6 @@ compat-table@kangax/compat-table#d88c80ea6dcbc7064112eb46bb020718107892f7: babel-preset-stage-0 latest chalk "^1.1.3" cheerio "^0.20.0" - closurecompiler latest core-js latest es5-shim latest es6-shim latest @@ -1985,6 +1977,7 @@ compat-table@kangax/compat-table#d88c80ea6dcbc7064112eb46bb020718107892f7: esdown latest espree latest esprima latest + google-closure-compiler-js "^20170521.0.0" jshint latest jstransform latest lodash.pickby "^4.6.0" @@ -2238,10 +2231,6 @@ ecc-jsbn@~0.1.1: dependencies: jsbn "~0.1.0" -electron-to-chromium@^1.3.11: - version "1.3.13" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.13.tgz#1b3a5eace6e087bb5e257a100b0cbfe81b2891fc" - electron-to-chromium@^1.3.18: version "1.3.19" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.19.tgz#73d97b0e8b05aa776cedf3cdce7fdc0538037675"