From c4c9a7fc88b2bc38aef15810dffc597c36755ab1 Mon Sep 17 00:00:00 2001 From: Artem Yavorsky Date: Wed, 29 Mar 2017 07:07:17 +0300 Subject: [PATCH] Fill data with electron as a target. (#229) --- .../babel-preset-env/data/built-ins.json | 240 ++++++++++++------ .../babel-preset-env/data/plugins.json | 66 +++-- experimental/babel-preset-env/package.json | 2 +- .../babel-preset-env/scripts/build-data.js | 29 +++ experimental/babel-preset-env/src/index.js | 13 +- .../babel-preset-env/src/normalize-options.js | 12 - .../test/debug-fixtures/electron/options.json | 11 + .../test/debug-fixtures/electron/stdout.txt | 68 +++++ .../babel-preset-env/test/index.spec.js | 65 ----- experimental/babel-preset-env/yarn.lock | 10 +- 10 files changed, 319 insertions(+), 197 deletions(-) create mode 100644 experimental/babel-preset-env/test/debug-fixtures/electron/options.json create mode 100644 experimental/babel-preset-env/test/debug-fixtures/electron/stdout.txt diff --git a/experimental/babel-preset-env/data/built-ins.json b/experimental/babel-preset-env/data/built-ins.json index 37c96bcffd..1040f980ce 100644 --- a/experimental/babel-preset-env/data/built-ins.json +++ b/experimental/babel-preset-env/data/built-ins.json @@ -8,7 +8,8 @@ "node": 0.12, "ie": 10, "android": 4, - "ios": 6 + "ios": 6, + "electron": 0.2 }, "es6.typed.int8-array": { "chrome": 51, @@ -17,7 +18,8 @@ "safari": 10, "node": 6.5, "ios": 10, - "opera": 38 + "opera": 38, + "electron": 1.2 }, "es6.typed.uint8-array": { "chrome": 51, @@ -26,7 +28,8 @@ "safari": 10, "node": 6.5, "ios": 10, - "opera": 38 + "opera": 38, + "electron": 1.2 }, "es6.typed.uint8-clamped-array": { "chrome": 51, @@ -35,7 +38,8 @@ "safari": 10, "node": 6.5, "ios": 10, - "opera": 38 + "opera": 38, + "electron": 1.2 }, "es6.typed.int16-array": { "chrome": 51, @@ -44,7 +48,8 @@ "safari": 10, "node": 6.5, "ios": 10, - "opera": 38 + "opera": 38, + "electron": 1.2 }, "es6.typed.uint16-array": { "chrome": 51, @@ -53,7 +58,8 @@ "safari": 10, "node": 6.5, "ios": 10, - "opera": 38 + "opera": 38, + "electron": 1.2 }, "es6.typed.int32-array": { "chrome": 51, @@ -62,7 +68,8 @@ "safari": 10, "node": 6.5, "ios": 10, - "opera": 38 + "opera": 38, + "electron": 1.2 }, "es6.typed.uint32-array": { "chrome": 51, @@ -71,7 +78,8 @@ "safari": 10, "node": 6.5, "ios": 10, - "opera": 38 + "opera": 38, + "electron": 1.2 }, "es6.typed.float32-array": { "chrome": 51, @@ -80,7 +88,8 @@ "safari": 10, "node": 6.5, "ios": 10, - "opera": 38 + "opera": 38, + "electron": 1.2 }, "es6.typed.float64-array": { "chrome": 51, @@ -89,7 +98,8 @@ "safari": 10, "node": 6.5, "ios": 10, - "opera": 38 + "opera": 38, + "electron": 1.2 }, "es6.map": { "chrome": 51, @@ -98,7 +108,8 @@ "safari": 10, "node": 6.5, "ios": 10, - "opera": 38 + "opera": 38, + "electron": 1.2 }, "es6.set": { "chrome": 51, @@ -107,7 +118,8 @@ "safari": 10, "node": 6.5, "ios": 10, - "opera": 38 + "opera": 38, + "electron": 1.2 }, "es6.weak-map": { "chrome": 51, @@ -116,7 +128,8 @@ "safari": 9, "node": 6.5, "ios": 9, - "opera": 38 + "opera": 38, + "electron": 1.2 }, "es6.weak-set": { "chrome": 51, @@ -125,7 +138,8 @@ "safari": 9, "node": 6.5, "ios": 9, - "opera": 38 + "opera": 38, + "electron": 1.2 }, "es6.reflect.apply": { "chrome": 49, @@ -134,7 +148,8 @@ "safari": 10, "node": 6, "ios": 10, - "opera": 36 + "opera": 36, + "electron": 1 }, "es6.reflect.construct": { "chrome": 49, @@ -143,7 +158,8 @@ "safari": 10, "node": 6, "ios": 10, - "opera": 36 + "opera": 36, + "electron": 1 }, "es6.reflect.define-property": { "chrome": 49, @@ -152,7 +168,8 @@ "safari": 10, "node": 6, "ios": 10, - "opera": 36 + "opera": 36, + "electron": 1 }, "es6.reflect.delete-property": { "chrome": 49, @@ -161,7 +178,8 @@ "safari": 10, "node": 6, "ios": 10, - "opera": 36 + "opera": 36, + "electron": 1 }, "es6.reflect.get": { "chrome": 49, @@ -170,7 +188,8 @@ "safari": 10, "node": 6, "ios": 10, - "opera": 36 + "opera": 36, + "electron": 1 }, "es6.reflect.get-own-property-descriptor": { "chrome": 49, @@ -179,7 +198,8 @@ "safari": 10, "node": 6, "ios": 10, - "opera": 36 + "opera": 36, + "electron": 1 }, "es6.reflect.get-prototype-of": { "chrome": 49, @@ -188,7 +208,8 @@ "safari": 10, "node": 6, "ios": 10, - "opera": 36 + "opera": 36, + "electron": 1 }, "es6.reflect.has": { "chrome": 49, @@ -197,7 +218,8 @@ "safari": 10, "node": 6, "ios": 10, - "opera": 36 + "opera": 36, + "electron": 1 }, "es6.reflect.is-extensible": { "chrome": 49, @@ -206,7 +228,8 @@ "safari": 10, "node": 6, "ios": 10, - "opera": 36 + "opera": 36, + "electron": 1 }, "es6.reflect.own-keys": { "chrome": 49, @@ -215,7 +238,8 @@ "safari": 10, "node": 6, "ios": 10, - "opera": 36 + "opera": 36, + "electron": 1 }, "es6.reflect.prevent-extensions": { "chrome": 49, @@ -224,7 +248,8 @@ "safari": 10, "node": 6, "ios": 10, - "opera": 36 + "opera": 36, + "electron": 1 }, "es6.reflect.set": { "chrome": 49, @@ -233,7 +258,8 @@ "safari": 10, "node": 6, "ios": 10, - "opera": 36 + "opera": 36, + "electron": 1 }, "es6.reflect.set-prototype-of": { "chrome": 49, @@ -242,7 +268,8 @@ "safari": 10, "node": 6, "ios": 10, - "opera": 36 + "opera": 36, + "electron": 1 }, "es6.promise": { "chrome": 51, @@ -251,7 +278,8 @@ "safari": 10, "node": 6.5, "ios": 10, - "opera": 38 + "opera": 38, + "electron": 1.2 }, "es6.symbol": { "chrome": 51, @@ -259,7 +287,8 @@ "safari": 10, "node": 6.5, "ios": 10, - "opera": 38 + "opera": 38, + "electron": 1.2 }, "es6.object.assign": { "chrome": 45, @@ -268,7 +297,8 @@ "safari": 9, "node": 4, "ios": 9, - "opera": 32 + "opera": 32, + "electron": 0.35 }, "es6.object.is": { "chrome": 19, @@ -277,7 +307,8 @@ "safari": 9, "node": 0.12, "android": 4.1, - "ios": 9 + "ios": 9, + "electron": 0.2 }, "es6.object.set-prototype-of": { "chrome": 34, @@ -288,7 +319,8 @@ "ie": 11, "android": 5, "ios": 9, - "opera": 21 + "opera": 21, + "electron": 0.2 }, "es6.function.name": { "chrome": 51, @@ -296,7 +328,8 @@ "safari": 10, "node": 6.5, "ios": 10, - "opera": 38 + "opera": 38, + "electron": 1.2 }, "es6.string.raw": { "chrome": 41, @@ -305,7 +338,8 @@ "safari": 9, "node": 4, "ios": 9, - "opera": 28 + "opera": 28, + "electron": 0.24 }, "es6.string.from-code-point": { "chrome": 41, @@ -314,7 +348,8 @@ "safari": 9, "node": 4, "ios": 9, - "opera": 28 + "opera": 28, + "electron": 0.24 }, "es6.string.code-point-at": { "chrome": 41, @@ -323,7 +358,8 @@ "safari": 9, "node": 4, "ios": 9, - "opera": 28 + "opera": 28, + "electron": 0.24 }, "es6.string.repeat": { "chrome": 41, @@ -332,7 +368,8 @@ "safari": 9, "node": 4, "ios": 9, - "opera": 28 + "opera": 28, + "electron": 0.24 }, "es6.string.starts-with": { "chrome": 41, @@ -341,7 +378,8 @@ "safari": 9, "node": 4, "ios": 9, - "opera": 28 + "opera": 28, + "electron": 0.24 }, "es6.string.ends-with": { "chrome": 41, @@ -350,7 +388,8 @@ "safari": 9, "node": 4, "ios": 9, - "opera": 28 + "opera": 28, + "electron": 0.24 }, "es6.string.includes": { "chrome": 41, @@ -359,7 +398,8 @@ "safari": 9, "node": 4, "ios": 9, - "opera": 28 + "opera": 28, + "electron": 0.24 }, "es6.regexp.flags": { "chrome": 49, @@ -367,7 +407,8 @@ "safari": 9, "node": 6, "ios": 9, - "opera": 36 + "opera": 36, + "electron": 1 }, "es6.regexp.match": { "chrome": 50, @@ -375,7 +416,8 @@ "safari": 10, "node": 6, "ios": 10, - "opera": 37 + "opera": 37, + "electron": 1.1 }, "es6.regexp.replace": { "chrome": 50, @@ -383,7 +425,8 @@ "safari": 10, "node": 6, "ios": 10, - "opera": 37 + "opera": 37, + "electron": 1.1 }, "es6.regexp.split": { "chrome": 50, @@ -391,7 +434,8 @@ "safari": 10, "node": 6, "ios": 10, - "opera": 37 + "opera": 37, + "electron": 1.1 }, "es6.regexp.search": { "chrome": 50, @@ -399,7 +443,8 @@ "safari": 10, "node": 6, "ios": 10, - "opera": 37 + "opera": 37, + "electron": 1.1 }, "es6.array.from": { "chrome": 51, @@ -408,7 +453,8 @@ "safari": 10, "node": 6.5, "ios": 10, - "opera": 38 + "opera": 38, + "electron": 1.2 }, "es6.array.of": { "chrome": 45, @@ -417,7 +463,8 @@ "safari": 9, "node": 4, "ios": 9, - "opera": 32 + "opera": 32, + "electron": 0.35 }, "es6.array.copy-within": { "chrome": 45, @@ -426,7 +473,8 @@ "safari": 9, "node": 4, "ios": 9, - "opera": 32 + "opera": 32, + "electron": 0.35 }, "es6.array.find": { "chrome": 45, @@ -435,7 +483,8 @@ "safari": 8, "node": 4, "ios": 8, - "opera": 32 + "opera": 32, + "electron": 0.35 }, "es6.array.find-index": { "chrome": 45, @@ -444,7 +493,8 @@ "safari": 8, "node": 4, "ios": 8, - "opera": 32 + "opera": 32, + "electron": 0.35 }, "es6.array.fill": { "chrome": 45, @@ -453,7 +503,8 @@ "safari": 8, "node": 4, "ios": 8, - "opera": 32 + "opera": 32, + "electron": 0.35 }, "es6.array.iterator": { "chrome": 38, @@ -463,7 +514,8 @@ "node": 0.12, "android": 5.1, "ios": 8, - "opera": 25 + "opera": 25, + "electron": 0.2 }, "es6.number.is-finite": { "chrome": 19, @@ -472,7 +524,8 @@ "safari": 9, "node": 0.12, "android": 4.1, - "ios": 9 + "ios": 9, + "electron": 0.2 }, "es6.number.is-integer": { "chrome": 34, @@ -482,7 +535,8 @@ "node": 0.12, "android": 5, "ios": 9, - "opera": 21 + "opera": 21, + "electron": 0.2 }, "es6.number.is-safe-integer": { "chrome": 34, @@ -492,7 +546,8 @@ "node": 0.12, "android": 5, "ios": 9, - "opera": 21 + "opera": 21, + "electron": 0.2 }, "es6.number.is-nan": { "chrome": 19, @@ -501,7 +556,8 @@ "safari": 9, "node": 0.12, "android": 4.1, - "ios": 9 + "ios": 9, + "electron": 0.2 }, "es6.number.epsilon": { "chrome": 34, @@ -511,7 +567,8 @@ "node": 0.12, "android": 5, "ios": 9, - "opera": 21 + "opera": 21, + "electron": 0.2 }, "es6.number.min-safe-integer": { "chrome": 34, @@ -521,7 +578,8 @@ "node": 0.12, "android": 5, "ios": 9, - "opera": 21 + "opera": 21, + "electron": 0.2 }, "es6.number.max-safe-integer": { "chrome": 34, @@ -531,7 +589,8 @@ "node": 0.12, "android": 5, "ios": 9, - "opera": 21 + "opera": 21, + "electron": 0.2 }, "es6.math.acosh": { "chrome": 38, @@ -541,7 +600,8 @@ "node": 0.12, "android": 5.1, "ios": 8, - "opera": 25 + "opera": 25, + "electron": 0.2 }, "es6.math.asinh": { "chrome": 38, @@ -551,7 +611,8 @@ "node": 0.12, "android": 5.1, "ios": 8, - "opera": 25 + "opera": 25, + "electron": 0.2 }, "es6.math.atanh": { "chrome": 38, @@ -561,7 +622,8 @@ "node": 0.12, "android": 5.1, "ios": 8, - "opera": 25 + "opera": 25, + "electron": 0.2 }, "es6.math.cbrt": { "chrome": 38, @@ -571,7 +633,8 @@ "node": 0.12, "android": 5.1, "ios": 8, - "opera": 25 + "opera": 25, + "electron": 0.2 }, "es6.math.clz32": { "chrome": 38, @@ -581,7 +644,8 @@ "node": 0.12, "android": 5.1, "ios": 9, - "opera": 25 + "opera": 25, + "electron": 0.2 }, "es6.math.cosh": { "chrome": 38, @@ -591,7 +655,8 @@ "node": 0.12, "android": 5.1, "ios": 8, - "opera": 25 + "opera": 25, + "electron": 0.2 }, "es6.math.expm1": { "chrome": 38, @@ -601,7 +666,8 @@ "node": 0.12, "android": 5.1, "ios": 8, - "opera": 25 + "opera": 25, + "electron": 0.2 }, "es6.math.fround": { "chrome": 38, @@ -611,7 +677,8 @@ "node": 0.12, "android": 5.1, "ios": 8, - "opera": 25 + "opera": 25, + "electron": 0.2 }, "es6.math.hypot": { "chrome": 38, @@ -621,7 +688,8 @@ "node": 0.12, "android": 5.1, "ios": 8, - "opera": 25 + "opera": 25, + "electron": 0.2 }, "es6.math.imul": { "chrome": 30, @@ -631,7 +699,8 @@ "node": 0.12, "android": 4.4, "ios": 7, - "opera": 17 + "opera": 17, + "electron": 0.2 }, "es6.math.log1p": { "chrome": 38, @@ -641,7 +710,8 @@ "node": 0.12, "android": 5.1, "ios": 8, - "opera": 25 + "opera": 25, + "electron": 0.2 }, "es6.math.log10": { "chrome": 38, @@ -651,7 +721,8 @@ "node": 0.12, "android": 5.1, "ios": 8, - "opera": 25 + "opera": 25, + "electron": 0.2 }, "es6.math.log2": { "chrome": 38, @@ -661,7 +732,8 @@ "node": 0.12, "android": 5.1, "ios": 8, - "opera": 25 + "opera": 25, + "electron": 0.2 }, "es6.math.sign": { "chrome": 38, @@ -671,7 +743,8 @@ "node": 0.12, "android": 5.1, "ios": 9, - "opera": 25 + "opera": 25, + "electron": 0.2 }, "es6.math.sinh": { "chrome": 38, @@ -681,7 +754,8 @@ "node": 0.12, "android": 5.1, "ios": 8, - "opera": 25 + "opera": 25, + "electron": 0.2 }, "es6.math.tanh": { "chrome": 38, @@ -691,7 +765,8 @@ "node": 0.12, "android": 5.1, "ios": 8, - "opera": 25 + "opera": 25, + "electron": 0.2 }, "es6.math.trunc": { "chrome": 38, @@ -701,7 +776,8 @@ "node": 0.12, "android": 5.1, "ios": 8, - "opera": 25 + "opera": 25, + "electron": 0.2 }, "es7.array.includes": { "chrome": 47, @@ -710,7 +786,8 @@ "safari": 10, "node": 6, "ios": 10, - "opera": 34 + "opera": 34, + "electron": 0.36 }, "es7.object.values": { "chrome": 54, @@ -718,7 +795,8 @@ "firefox": 47, "safari": 10.1, "node": 7, - "opera": 41 + "opera": 41, + "electron": 1.5 }, "es7.object.entries": { "chrome": 54, @@ -726,7 +804,8 @@ "firefox": 47, "safari": 10.1, "node": 7, - "opera": 41 + "opera": 41, + "electron": 1.5 }, "es7.object.get-own-property-descriptors": { "chrome": 54, @@ -734,7 +813,8 @@ "firefox": 50, "safari": 10.1, "node": 7, - "opera": 41 + "opera": 41, + "electron": 1.5 }, "es7.string.pad-start": { "chrome": 57, diff --git a/experimental/babel-preset-env/data/plugins.json b/experimental/babel-preset-env/data/plugins.json index b4e3c29e2b..3f1af588ce 100644 --- a/experimental/babel-preset-env/data/plugins.json +++ b/experimental/babel-preset-env/data/plugins.json @@ -6,7 +6,8 @@ "safari": 10, "node": 6, "ios": 10, - "opera": 34 + "opera": 34, + "electron": 0.36 }, "transform-es2015-block-scoped-functions": { "chrome": 41, @@ -16,7 +17,8 @@ "node": 4, "ie": 11, "ios": 10, - "opera": 28 + "opera": 28, + "electron": 0.24 }, "transform-es2015-block-scoping": { "chrome": 49, @@ -25,7 +27,8 @@ "safari": 10, "node": 6, "ios": 10, - "opera": 36 + "opera": 36, + "electron": 1 }, "transform-es2015-classes": { "chrome": 46, @@ -34,7 +37,8 @@ "safari": 10, "node": 5, "ios": 10, - "opera": 33 + "opera": 33, + "electron": 0.36 }, "transform-es2015-computed-properties": { "chrome": 44, @@ -43,7 +47,8 @@ "safari": 8, "node": 4, "ios": 8, - "opera": 31 + "opera": 31, + "electron": 0.31 }, "check-es2015-constants": { "chrome": 49, @@ -52,7 +57,8 @@ "safari": 10, "node": 6, "ios": 10, - "opera": 36 + "opera": 36, + "electron": 1 }, "transform-es2015-destructuring": { "chrome": 51, @@ -61,7 +67,8 @@ "safari": 10, "node": 6.5, "ios": 10, - "opera": 38 + "opera": 38, + "electron": 1.2 }, "transform-es2015-duplicate-keys": { "chrome": 42, @@ -70,7 +77,8 @@ "safari": 9, "node": 4, "ios": 9, - "opera": 29 + "opera": 29, + "electron": 0.27 }, "transform-es2015-for-of": { "chrome": 51, @@ -79,7 +87,8 @@ "safari": 10, "node": 6.5, "ios": 10, - "opera": 38 + "opera": 38, + "electron": 1.2 }, "transform-es2015-function-name": { "chrome": 51, @@ -87,7 +96,8 @@ "safari": 10, "node": 6.5, "ios": 10, - "opera": 38 + "opera": 38, + "electron": 1.2 }, "transform-es2015-literals": { "chrome": 44, @@ -96,7 +106,8 @@ "safari": 9, "node": 4, "ios": 9, - "opera": 31 + "opera": 31, + "electron": 0.31 }, "transform-es2015-object-super": { "chrome": 46, @@ -105,7 +116,8 @@ "safari": 10, "node": 5, "ios": 10, - "opera": 33 + "opera": 33, + "electron": 0.36 }, "transform-es2015-parameters": { "chrome": 49, @@ -114,7 +126,8 @@ "safari": 10, "node": 6, "ios": 10, - "opera": 36 + "opera": 36, + "electron": 1 }, "transform-es2015-shorthand-properties": { "chrome": 43, @@ -123,7 +136,8 @@ "safari": 9, "node": 4, "ios": 9, - "opera": 30 + "opera": 30, + "electron": 0.29 }, "transform-es2015-spread": { "chrome": 46, @@ -132,7 +146,8 @@ "safari": 10, "node": 5, "ios": 10, - "opera": 33 + "opera": 33, + "electron": 0.36 }, "transform-es2015-sticky-regex": { "chrome": 49, @@ -141,7 +156,8 @@ "safari": 10, "node": 6, "ios": 10, - "opera": 36 + "opera": 36, + "electron": 1 }, "transform-es2015-template-literals": { "chrome": 41, @@ -150,7 +166,8 @@ "safari": 9, "node": 4, "ios": 9, - "opera": 28 + "opera": 28, + "electron": 0.24 }, "transform-es2015-typeof-symbol": { "chrome": 38, @@ -160,7 +177,8 @@ "node": 0.12, "android": 5.1, "ios": 9, - "opera": 25 + "opera": 25, + "electron": 0.2 }, "transform-es2015-unicode-regex": { "chrome": 50, @@ -169,7 +187,8 @@ "safari": 10, "node": 6, "ios": 10, - "opera": 37 + "opera": 37, + "electron": 1.1 }, "transform-regenerator": { "chrome": 50, @@ -178,7 +197,8 @@ "safari": 10, "node": 6, "ios": 10, - "opera": 37 + "opera": 37, + "electron": 1.1 }, "transform-exponentiation-operator": { "chrome": 52, @@ -186,14 +206,16 @@ "firefox": 52, "safari": 10.1, "node": 7, - "opera": 39 + "opera": 39, + "electron": 1.3 }, "transform-async-to-generator": { "chrome": 55, "firefox": 52, "safari": 10.1, "node": 7.6, - "opera": 42 + "opera": 42, + "electron": 1.6 }, "syntax-trailing-function-commas": { "chrome": 58, diff --git a/experimental/babel-preset-env/package.json b/experimental/babel-preset-env/package.json index 920da77d21..bbb661c88b 100644 --- a/experimental/babel-preset-env/package.json +++ b/experimental/babel-preset-env/package.json @@ -49,7 +49,6 @@ "babel-plugin-transform-exponentiation-operator": "^6.22.0", "babel-plugin-transform-regenerator": "^6.22.0", "browserslist": "^1.4.0", - "electron-to-chromium": "^1.2.6", "invariant": "^2.2.2" }, "devDependencies": { @@ -71,6 +70,7 @@ "lodash": "^4.17.4", "mocha": "^3.2.0", "nyc": "^10.1.2", + "electron-to-chromium": "^1.3.2", "rimraf": "^2.6.1" }, "babel": { diff --git a/experimental/babel-preset-env/scripts/build-data.js b/experimental/babel-preset-env/scripts/build-data.js index 2b4ad84f4a..faba55ef30 100644 --- a/experimental/babel-preset-env/scripts/build-data.js +++ b/experimental/babel-preset-env/scripts/build-data.js @@ -7,9 +7,34 @@ const flatten = require("lodash/flatten"); const flattenDeep = require("lodash/flattenDeep"); const mapValues = require("lodash/mapValues"); const pickBy = require("lodash/pickBy"); +const electronToChromiumVersions = require("electron-to-chromium").versions; const pluginFeatures = require("../data/plugin-features"); const builtInFeatures = require("../data/built-in-features"); +const electronToChromiumKeys = Object.keys(electronToChromiumVersions).reverse(); + +const chromiumToElectronMap = electronToChromiumKeys.reduce( + (all, electron) => { + all[electronToChromiumVersions[electron]] = +electron; + return all; + } +, {}); +const chromiumToElectronVersions = Object.keys(chromiumToElectronMap); + +const findClosestElectronVersion = (targetVersion) => { + const chromiumVersionsLength = chromiumToElectronVersions.length; + const maxChromium = +chromiumToElectronVersions[chromiumVersionsLength - 1]; + if (targetVersion > maxChromium) return null; + + const closestChrome = chromiumToElectronVersions.find( + (version) => targetVersion <= version + ); + return chromiumToElectronMap[closestChrome]; +}; + +const chromiumToElectron = (chromium) => + chromiumToElectronMap[chromium] || findClosestElectronVersion(chromium); + const renameTests = (tests, getName) => tests.map((test) => Object.assign({}, test, { name: getName(test.name) })); @@ -219,6 +244,10 @@ const generateData = (environments, features) => { } else if (plugin.chrome === 5) { plugin.opera = 12; } + const electronVersion = chromiumToElectron(plugin.chrome); + if (electronVersion) { + plugin.electron = electronVersion; + } } return plugin; diff --git a/experimental/babel-preset-env/src/index.js b/experimental/babel-preset-env/src/index.js index 5544ba9945..fec37d3127 100644 --- a/experimental/babel-preset-env/src/index.js +++ b/experimental/babel-preset-env/src/index.js @@ -2,7 +2,7 @@ import browserslist from "browserslist"; import builtInsList from "../data/built-ins.json"; import { defaultWebIncludes } from "./default-includes"; import moduleTransformations from "./module-transformations"; -import normalizeOptions, { getElectronChromeVersion } from "./normalize-options.js"; +import normalizeOptions from "./normalize-options.js"; import pluginList from "../data/plugins.json"; import transformPolyfillRequirePlugin from "./transform-polyfill-require-plugin"; @@ -104,17 +104,6 @@ export const getTargets = (targets = {}) => { delete targetOpts.uglify; } - // Replace Electron target with its Chrome equivalent - if (targetOpts.electron) { - const electronChromeVersion = getElectronChromeVersion(targetOpts.electron); - - targetOpts.chrome = targetOpts.chrome - ? Math.min(targetOpts.chrome, electronChromeVersion) - : electronChromeVersion; - - delete targetOpts.electron; - } - const browserOpts = targetOpts.browsers; if (isBrowsersQueryValid(browserOpts)) { const queryBrowsers = getLowestVersions(browserslist(browserOpts)); diff --git a/experimental/babel-preset-env/src/normalize-options.js b/experimental/babel-preset-env/src/normalize-options.js index 061d89917c..513bf1012a 100644 --- a/experimental/babel-preset-env/src/normalize-options.js +++ b/experimental/babel-preset-env/src/normalize-options.js @@ -1,5 +1,4 @@ import invariant from "invariant"; -import { electronToChromium } from "electron-to-chromium"; import builtInsList from "../data/built-ins.json"; import { defaultWebIncludes } from "./default-includes"; import moduleTransformations from "./module-transformations"; @@ -70,17 +69,6 @@ export const validateModulesOption = (modulesOpt = "commonjs") => { return modulesOpt; }; -export const getElectronChromeVersion = (electronVersion) => { - const electronChromeVersion = parseInt(electronToChromium(electronVersion), 10); - - invariant( - !!electronChromeVersion, - `Electron version ${electronVersion} is either too old or too new` - ); - - return electronChromeVersion; -}; - export default function normalizeOptions(opts) { // TODO: remove whitelist in favor of include in next major if (opts.whitelist && !hasBeenWarned) { diff --git a/experimental/babel-preset-env/test/debug-fixtures/electron/options.json b/experimental/babel-preset-env/test/debug-fixtures/electron/options.json new file mode 100644 index 0000000000..28520558ba --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/electron/options.json @@ -0,0 +1,11 @@ +{ + "presets": [ + ["../../lib", { + "debug": true, + "targets": { + "electron": 0.36 + }, + "useBuiltIns": true + }] + ] +} diff --git a/experimental/babel-preset-env/test/debug-fixtures/electron/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/electron/stdout.txt new file mode 100644 index 0000000000..ac5568ef0b --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/electron/stdout.txt @@ -0,0 +1,68 @@ +babel-preset-env: `DEBUG` option + +Using targets: +{ + "electron": 0.36 +} + +Modules transform: commonjs + +Using plugins: + transform-es2015-block-scoping {"electron":0.36} + check-es2015-constants {"electron":0.36} + transform-es2015-destructuring {"electron":0.36} + transform-es2015-for-of {"electron":0.36} + transform-es2015-function-name {"electron":0.36} + transform-es2015-parameters {"electron":0.36} + transform-es2015-sticky-regex {"electron":0.36} + transform-es2015-unicode-regex {"electron":0.36} + transform-regenerator {"electron":0.36} + transform-exponentiation-operator {"electron":0.36} + transform-async-to-generator {"electron":0.36} + syntax-trailing-function-commas {"electron":0.36} + +Using polyfills: + es6.typed.int8-array {"electron":0.36} + es6.typed.uint8-array {"electron":0.36} + es6.typed.uint8-clamped-array {"electron":0.36} + es6.typed.int16-array {"electron":0.36} + es6.typed.uint16-array {"electron":0.36} + es6.typed.int32-array {"electron":0.36} + es6.typed.uint32-array {"electron":0.36} + es6.typed.float32-array {"electron":0.36} + es6.typed.float64-array {"electron":0.36} + es6.map {"electron":0.36} + es6.set {"electron":0.36} + es6.weak-map {"electron":0.36} + es6.weak-set {"electron":0.36} + es6.reflect.apply {"electron":0.36} + es6.reflect.construct {"electron":0.36} + es6.reflect.define-property {"electron":0.36} + es6.reflect.delete-property {"electron":0.36} + es6.reflect.get {"electron":0.36} + es6.reflect.get-own-property-descriptor {"electron":0.36} + es6.reflect.get-prototype-of {"electron":0.36} + es6.reflect.has {"electron":0.36} + es6.reflect.is-extensible {"electron":0.36} + es6.reflect.own-keys {"electron":0.36} + es6.reflect.prevent-extensions {"electron":0.36} + es6.reflect.set {"electron":0.36} + es6.reflect.set-prototype-of {"electron":0.36} + es6.promise {"electron":0.36} + es6.symbol {"electron":0.36} + es6.function.name {"electron":0.36} + es6.regexp.flags {"electron":0.36} + es6.regexp.match {"electron":0.36} + es6.regexp.replace {"electron":0.36} + es6.regexp.split {"electron":0.36} + es6.regexp.search {"electron":0.36} + es6.array.from {"electron":0.36} + es7.object.values {"electron":0.36} + es7.object.entries {"electron":0.36} + es7.object.get-own-property-descriptors {"electron":0.36} + es7.string.pad-start {"electron":0.36} + es7.string.pad-end {"electron":0.36} + web.timers {"electron":0.36} + web.immediate {"electron":0.36} + web.dom.iterable {"electron":0.36} +src/in.js -> lib/in.js diff --git a/experimental/babel-preset-env/test/index.spec.js b/experimental/babel-preset-env/test/index.spec.js index f3b82ddc6c..83aa718544 100644 --- a/experimental/babel-preset-env/test/index.spec.js +++ b/experimental/babel-preset-env/test/index.spec.js @@ -2,7 +2,6 @@ const babelPresetEnv = require("../lib/index.js"); const assert = require("assert"); -const { versions: electronToChromiumData } = require("electron-to-chromium"); describe("babel-preset-env", () => { describe("getTargets", () => { @@ -21,70 +20,6 @@ describe("babel-preset-env", () => { }); }); - describe("getTargets + electron", () => { - it("should work with a string", function() { - assert.deepEqual(babelPresetEnv.getTargets({ - electron: "1.0" - }), { - chrome: 49 - }); - }); - - it("should work with a number", function() { - assert.deepEqual(babelPresetEnv.getTargets({ - electron: 1.0 - }), { - chrome: 49 - }); - }); - - - it("should preserve lower Chrome number if Electron version is more recent", function() { - assert.deepEqual(babelPresetEnv.getTargets({ - electron: 1.4, - chrome: 50 - }), { - chrome: 50 - }); - }); - - it("should overwrite Chrome number if Electron version is older", function() { - assert.deepEqual(babelPresetEnv.getTargets({ - electron: 1.0, - chrome: 50 - }), { - chrome: 49 - }); - }); - - Object.keys(electronToChromiumData).forEach((electronVersion) => { - it(`"should work for Electron: ${electronVersion}`, function() { - assert.deepEqual(babelPresetEnv.getTargets({ - electron: electronVersion - }), { - chrome: electronToChromiumData[electronVersion] - }); - }); - }); - - it("should error if electron version is invalid", () => { - const fixtures = [ - "0.19", - 0.19, - 999, - "999", - ]; - - fixtures.forEach((electronVersion) => { - assert.throws(() => { - babelPresetEnv.getTargets({ - electron: electronVersion, - }); - }, Error); - }); - }); - }); - describe("getTargets + uglify", () => { it("should work with `true`", function() { assert.deepEqual(babelPresetEnv.getTargets({ diff --git a/experimental/babel-preset-env/yarn.lock b/experimental/babel-preset-env/yarn.lock index 55051cdf38..a3179eb0c8 100644 --- a/experimental/babel-preset-env/yarn.lock +++ b/experimental/babel-preset-env/yarn.lock @@ -1069,9 +1069,9 @@ ecc-jsbn@~0.1.1: dependencies: jsbn "~0.1.0" -electron-to-chromium@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.2.6.tgz#f38ad51d1919b06bc07275c62629db803ddca05a" +electron-to-chromium@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.2.tgz#b8ce5c93b308db0e92f6d0435c46ddec8f6363ab" error-ex@^1.2.0: version "1.3.1" @@ -1445,7 +1445,7 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" -glob@7.0.5, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5: +glob@7.0.5, glob@^7.0.0, glob@^7.0.3: version "7.0.5" resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.5.tgz#b4202a69099bbb4d292a7c1b95b6682b67ebdc95" dependencies: @@ -1456,7 +1456,7 @@ glob@7.0.5, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.6: +glob@^7.0.5, glob@^7.0.6: version "7.1.1" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" dependencies: