From 55ccfbf6a0cfbfef737002a09dac9813cc4dd428 Mon Sep 17 00:00:00 2001 From: Daniel Tschinder Date: Thu, 2 Mar 2017 16:28:48 +0100 Subject: [PATCH 1/9] Respect older versions in invert map --- .../babel-preset-env/data/built-ins.json | 54 +++++++++++++-- .../babel-preset-env/data/plugins.json | 4 ++ .../babel-preset-env/scripts/build-data.js | 67 ++++++++++--------- 3 files changed, 90 insertions(+), 35 deletions(-) diff --git a/experimental/babel-preset-env/data/built-ins.json b/experimental/babel-preset-env/data/built-ins.json index 5a5b2dfc8d..2fd11ddcb2 100644 --- a/experimental/babel-preset-env/data/built-ins.json +++ b/experimental/babel-preset-env/data/built-ins.json @@ -36,6 +36,7 @@ "firefox": 4, "safari": 6, "node": 0.12, + "android": 4.4, "ios": 7 }, "es6.typed.int16-array": { @@ -118,6 +119,7 @@ "chrome": 51, "firefox": 53, "safari": 9, + "node": 6.5, "ios": 9, "opera": 38 }, @@ -126,6 +128,7 @@ "edge": 15, "firefox": 53, "safari": 9, + "node": 6.5, "ios": 9, "opera": 38 }, @@ -134,6 +137,7 @@ "edge": 12, "firefox": 42, "safari": 10, + "node": 6, "ios": 10, "opera": 36 }, @@ -142,6 +146,7 @@ "edge": 13, "firefox": 45, "safari": 10, + "node": 6, "ios": 10, "opera": 36 }, @@ -150,6 +155,7 @@ "edge": 13, "firefox": 42, "safari": 10, + "node": 6, "ios": 10, "opera": 36 }, @@ -158,6 +164,7 @@ "edge": 12, "firefox": 42, "safari": 10, + "node": 6, "ios": 10, "opera": 36 }, @@ -166,6 +173,7 @@ "edge": 12, "firefox": 42, "safari": 10, + "node": 6, "ios": 10, "opera": 36 }, @@ -174,6 +182,7 @@ "edge": 12, "firefox": 42, "safari": 10, + "node": 6, "ios": 10, "opera": 36 }, @@ -182,6 +191,7 @@ "edge": 12, "firefox": 42, "safari": 10, + "node": 6, "ios": 10, "opera": 36 }, @@ -190,6 +200,7 @@ "edge": 12, "firefox": 42, "safari": 10, + "node": 6, "ios": 10, "opera": 36 }, @@ -198,6 +209,7 @@ "edge": 12, "firefox": 42, "safari": 10, + "node": 6, "ios": 10, "opera": 36 }, @@ -206,6 +218,7 @@ "edge": 12, "firefox": 42, "safari": 10, + "node": 6, "ios": 10, "opera": 36 }, @@ -214,6 +227,7 @@ "edge": 12, "firefox": 42, "safari": 10, + "node": 6, "ios": 10, "opera": 36 }, @@ -222,6 +236,7 @@ "edge": 12, "firefox": 42, "safari": 10, + "node": 6, "ios": 10, "opera": 36 }, @@ -230,6 +245,7 @@ "edge": 12, "firefox": 42, "safari": 10, + "node": 6, "ios": 10, "opera": 36 }, @@ -246,6 +262,7 @@ "chrome": 51, "firefox": 51, "safari": 10, + "node": 6.5, "ios": 10, "opera": 38 }, @@ -273,6 +290,7 @@ "safari": 9, "node": 0.12, "ie": 11, + "android": 5, "ios": 9, "opera": 21 }, @@ -351,6 +369,7 @@ "chrome": 49, "firefox": 37, "safari": 9, + "node": 6, "ios": 9, "opera": 36 }, @@ -400,7 +419,7 @@ "edge": 12, "firefox": 25, "safari": 9, - "node": 4, + "node": 6, "ios": 9, "opera": 32 }, @@ -418,7 +437,7 @@ "edge": 12, "firefox": 25, "safari": 8, - "node": 4, + "node": 6, "ios": 9, "opera": 32 }, @@ -427,7 +446,7 @@ "edge": 12, "firefox": 25, "safari": 8, - "node": 4, + "node": 6, "ios": 9, "opera": 32 }, @@ -436,7 +455,7 @@ "edge": 12, "firefox": 31, "safari": 8, - "node": 4, + "node": 6, "ios": 9, "opera": 32 }, @@ -446,6 +465,7 @@ "firefox": 28, "safari": 8, "node": 0.12, + "android": 5.1, "ios": 9, "opera": 25 }, @@ -464,6 +484,7 @@ "firefox": 16, "safari": 9, "node": 0.12, + "android": 5, "ios": 9, "opera": 21 }, @@ -473,6 +494,7 @@ "firefox": 32, "safari": 9, "node": 0.12, + "android": 5, "ios": 9, "opera": 21 }, @@ -491,6 +513,7 @@ "firefox": 25, "safari": 9, "node": 0.12, + "android": 5, "ios": 9, "opera": 21 }, @@ -500,6 +523,7 @@ "firefox": 31, "safari": 9, "node": 0.12, + "android": 5, "ios": 9, "opera": 21 }, @@ -509,6 +533,7 @@ "firefox": 31, "safari": 9, "node": 0.12, + "android": 5, "ios": 9, "opera": 21 }, @@ -518,6 +543,7 @@ "firefox": 25, "safari": 8, "node": 0.12, + "android": 5.1, "ios": 9, "opera": 25 }, @@ -527,6 +553,7 @@ "firefox": 25, "safari": 8, "node": 0.12, + "android": 5.1, "ios": 9, "opera": 25 }, @@ -536,6 +563,7 @@ "firefox": 25, "safari": 8, "node": 0.12, + "android": 5.1, "ios": 9, "opera": 25 }, @@ -545,6 +573,7 @@ "firefox": 25, "safari": 8, "node": 0.12, + "android": 5.1, "ios": 9, "opera": 25 }, @@ -554,6 +583,7 @@ "firefox": 31, "safari": 9, "node": 0.12, + "android": 5.1, "ios": 9, "opera": 25 }, @@ -563,6 +593,7 @@ "firefox": 25, "safari": 8, "node": 0.12, + "android": 5.1, "ios": 9, "opera": 25 }, @@ -572,6 +603,7 @@ "firefox": 25, "safari": 8, "node": 0.12, + "android": 5.1, "ios": 9, "opera": 25 }, @@ -581,6 +613,7 @@ "firefox": 26, "safari": 8, "node": 0.12, + "android": 5.1, "ios": 9, "opera": 25 }, @@ -590,6 +623,7 @@ "firefox": 27, "safari": 8, "node": 0.12, + "android": 5.1, "ios": 9, "opera": 25 }, @@ -609,6 +643,7 @@ "firefox": 25, "safari": 8, "node": 0.12, + "android": 5.1, "ios": 9, "opera": 25 }, @@ -618,6 +653,7 @@ "firefox": 25, "safari": 8, "node": 0.12, + "android": 5.1, "ios": 9, "opera": 25 }, @@ -627,6 +663,7 @@ "firefox": 25, "safari": 8, "node": 0.12, + "android": 5.1, "ios": 9, "opera": 25 }, @@ -636,6 +673,7 @@ "firefox": 25, "safari": 9, "node": 0.12, + "android": 5.1, "ios": 9, "opera": 25 }, @@ -645,6 +683,7 @@ "firefox": 25, "safari": 8, "node": 0.12, + "android": 5.1, "ios": 9, "opera": 25 }, @@ -654,6 +693,7 @@ "firefox": 25, "safari": 8, "node": 0.12, + "android": 5.1, "ios": 9, "opera": 25 }, @@ -663,6 +703,7 @@ "firefox": 25, "safari": 8, "node": 0.12, + "android": 5.1, "ios": 9, "opera": 25 }, @@ -671,6 +712,7 @@ "edge": 14, "firefox": 43, "safari": 10, + "node": 6, "ios": 10, "opera": 34 }, @@ -678,6 +720,7 @@ "chrome": 54, "edge": 14, "firefox": 47, + "safari": 10.1, "node": 7, "opera": 41 }, @@ -685,6 +728,7 @@ "chrome": 54, "edge": 14, "firefox": 47, + "safari": 10.1, "node": 7, "opera": 41 }, @@ -692,7 +736,7 @@ "chrome": 54, "edge": 15, "firefox": 50, - "safari": 10, + "safari": 10.1, "node": 7, "opera": 41 }, diff --git a/experimental/babel-preset-env/data/plugins.json b/experimental/babel-preset-env/data/plugins.json index 8397e84a86..bce48fad12 100644 --- a/experimental/babel-preset-env/data/plugins.json +++ b/experimental/babel-preset-env/data/plugins.json @@ -146,6 +146,7 @@ "firefox": 36, "safari": 9, "node": 0.12, + "android": 5.1, "ios": 9, "opera": 25 }, @@ -171,11 +172,14 @@ "chrome": 52, "edge": 14, "firefox": 52, + "safari": 10.1, + "node": 7, "opera": 39 }, "transform-async-to-generator": { "chrome": 55, "firefox": 52, + "safari": 10.1, "node": 7.6, "opera": 42 }, diff --git a/experimental/babel-preset-env/scripts/build-data.js b/experimental/babel-preset-env/scripts/build-data.js index 2bd017cdc6..bef972b907 100644 --- a/experimental/babel-preset-env/scripts/build-data.js +++ b/experimental/babel-preset-env/scripts/build-data.js @@ -16,36 +16,6 @@ const es6Data = require("compat-table/data-es6"); const es6PlusData = require("compat-table/data-es2016plus"); const envs = require("compat-table/environments"); -const invertedEqualsEnv = Object.keys(envs) - .filter((b) => envs[b].equals) - .reduce((a, b) => { - if (!a[envs[b].equals]) { - a[envs[b].equals] = [b]; - } else { - a[envs[b].equals].push(b); - } - return a; - }, {}); - -invertedEqualsEnv.safari5 = ["ios6"]; -if (Array.isArray(invertedEqualsEnv.safari6)) { - invertedEqualsEnv.safari6.push("ios7"); -} else { - invertedEqualsEnv.safari6 = ["ios7"]; -} -invertedEqualsEnv.safari8 = ["ios9"]; - -const compatibilityTests = flattenDeep([ - es6Data, - es6PlusData, -].map((data) => - data.tests.map((test) => { - return test.subtests ? - [test, renameTests(test.subtests, (name) => test.name + " / " + name)] : - test; - }) -)); - const environments = [ "chrome", "opera", @@ -62,6 +32,7 @@ const environments = [ const envMap = { safari51: "safari5", safari71_8: "safari8", + safari10_1: "safari10.1", firefox3_5: "firefox3", firefox3_6: "firefox3", node010: "node0.10", @@ -80,6 +51,42 @@ const envMap = { ios51: "ios5.1", }; +const invertedEqualsEnv = Object.keys(envs) + .filter((b) => envs[b].equals) + .reduce((a, b) => { + const checkEnv = envMap[envs[b].equals] || envs[b].equals; + environments.some((env) => { + const version = parseInt(checkEnv.replace(env, ""), 10); + if (!isNaN(version)) { + Object.keys(envs).forEach((equals) => { + const equalsVersion = parseInt(equals.replace(env, ""), 10); + if (equalsVersion <= version) { + if (!a[equals]) a[equals] = []; + a[equals].push(b); + } + }); + return true; + } + }); + + return a; + }, {}); + +invertedEqualsEnv.safari8 = ["ios9"]; + +const compatibilityTests = flattenDeep([ + es6Data, + es6PlusData, +].map((data) => + data.tests.map((test) => { + return test.subtests ? + [test, renameTests(test.subtests, (name) => test.name + " / " + name)] : + test; + }) +)); + +console.log(invertedEqualsEnv); + const getLowestImplementedVersion = ({ features }, env) => { const tests = flatten(compatibilityTests .filter((test) => { From c468d68cb85975de5c51f63f43e7ad598bc7a77c Mon Sep 17 00:00:00 2001 From: Daniel Tschinder Date: Thu, 2 Mar 2017 16:31:39 +0100 Subject: [PATCH 2/9] Remove console.log --- experimental/babel-preset-env/scripts/build-data.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/experimental/babel-preset-env/scripts/build-data.js b/experimental/babel-preset-env/scripts/build-data.js index bef972b907..7d3df88703 100644 --- a/experimental/babel-preset-env/scripts/build-data.js +++ b/experimental/babel-preset-env/scripts/build-data.js @@ -85,8 +85,6 @@ const compatibilityTests = flattenDeep([ }) )); -console.log(invertedEqualsEnv); - const getLowestImplementedVersion = ({ features }, env) => { const tests = flatten(compatibilityTests .filter((test) => { From 984df9c96a9e7582da11d029500faf9c80f64695 Mon Sep 17 00:00:00 2001 From: Daniel Tschinder Date: Thu, 2 Mar 2017 21:58:09 +0100 Subject: [PATCH 3/9] Fix node 4 --- experimental/babel-preset-env/data/built-ins.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/experimental/babel-preset-env/data/built-ins.json b/experimental/babel-preset-env/data/built-ins.json index 2fd11ddcb2..9f65626cca 100644 --- a/experimental/babel-preset-env/data/built-ins.json +++ b/experimental/babel-preset-env/data/built-ins.json @@ -419,7 +419,7 @@ "edge": 12, "firefox": 25, "safari": 9, - "node": 6, + "node": 4, "ios": 9, "opera": 32 }, @@ -437,7 +437,7 @@ "edge": 12, "firefox": 25, "safari": 8, - "node": 6, + "node": 4, "ios": 9, "opera": 32 }, @@ -446,7 +446,7 @@ "edge": 12, "firefox": 25, "safari": 8, - "node": 6, + "node": 4, "ios": 9, "opera": 32 }, @@ -455,7 +455,7 @@ "edge": 12, "firefox": 31, "safari": 8, - "node": 6, + "node": 4, "ios": 9, "opera": 32 }, From 09c84a379f4dd43a3b25e4746aab058f3e63fcff Mon Sep 17 00:00:00 2001 From: Daniel Tschinder Date: Thu, 2 Mar 2017 22:24:46 +0100 Subject: [PATCH 4/9] Fix tests --- .../test/debug-fixtures/built-ins/stdout.txt | 32 +++++++++---------- .../debug-fixtures/plugins-only/stdout.txt | 3 +- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/experimental/babel-preset-env/test/debug-fixtures/built-ins/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/built-ins/stdout.txt index 9d85e62916..c25134be0a 100644 --- a/experimental/babel-preset-env/test/debug-fixtures/built-ins/stdout.txt +++ b/experimental/babel-preset-env/test/debug-fixtures/built-ins/stdout.txt @@ -39,19 +39,19 @@ Using polyfills: es6.set {"ie":10,"node":6} es6.weak-map {"ie":10,"node":6} es6.weak-set {"ie":10,"node":6} - es6.reflect.apply {"ie":10,"node":6} - es6.reflect.construct {"ie":10,"node":6} - es6.reflect.define-property {"ie":10,"node":6} - es6.reflect.delete-property {"ie":10,"node":6} - es6.reflect.get {"ie":10,"node":6} - es6.reflect.get-own-property-descriptor {"ie":10,"node":6} - es6.reflect.get-prototype-of {"ie":10,"node":6} - es6.reflect.has {"ie":10,"node":6} - es6.reflect.is-extensible {"ie":10,"node":6} - es6.reflect.own-keys {"ie":10,"node":6} - es6.reflect.prevent-extensions {"ie":10,"node":6} - es6.reflect.set {"ie":10,"node":6} - es6.reflect.set-prototype-of {"ie":10,"node":6} + es6.reflect.apply {"ie":10} + es6.reflect.construct {"ie":10} + es6.reflect.define-property {"ie":10} + es6.reflect.delete-property {"ie":10} + es6.reflect.get {"ie":10} + es6.reflect.get-own-property-descriptor {"ie":10} + es6.reflect.get-prototype-of {"ie":10} + es6.reflect.has {"ie":10} + es6.reflect.is-extensible {"ie":10} + es6.reflect.own-keys {"ie":10} + es6.reflect.prevent-extensions {"ie":10} + es6.reflect.set {"ie":10} + es6.reflect.set-prototype-of {"ie":10} es6.promise {"ie":10,"node":6} es6.symbol {"ie":10,"node":6} es6.object.assign {"ie":10} @@ -65,7 +65,7 @@ Using polyfills: es6.string.starts-with {"ie":10} es6.string.ends-with {"ie":10} es6.string.includes {"ie":10} - es6.regexp.flags {"ie":10,"node":6} + es6.regexp.flags {"ie":10} es6.regexp.match {"ie":10} es6.regexp.replace {"ie":10} es6.regexp.split {"ie":10} @@ -101,7 +101,7 @@ Using polyfills: es6.math.sinh {"ie":10} es6.math.tanh {"ie":10} es6.math.trunc {"ie":10} - es7.array.includes {"ie":10,"node":6} + es7.array.includes {"ie":10} es7.object.values {"ie":10,"node":6} es7.object.entries {"ie":10,"node":6} es7.object.get-own-property-descriptors {"ie":10,"node":6} @@ -110,4 +110,4 @@ Using polyfills: 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 \ No newline at end of file +src/in.js -> lib/in.js diff --git a/experimental/babel-preset-env/test/debug-fixtures/plugins-only/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/plugins-only/stdout.txt index ec43e49e9f..5263ed559f 100644 --- a/experimental/babel-preset-env/test/debug-fixtures/plugins-only/stdout.txt +++ b/experimental/babel-preset-env/test/debug-fixtures/plugins-only/stdout.txt @@ -13,6 +13,5 @@ Using plugins: transform-es2015-for-of {"firefox":52} transform-es2015-function-name {"firefox":52} transform-es2015-literals {"firefox":52} - transform-exponentiation-operator {"node":7.4} syntax-trailing-function-commas {"node":7.4} -src/in.js -> lib/in.js \ No newline at end of file +src/in.js -> lib/in.js From 8d96bd2378159ffba1518d83452fc9d38348fbf9 Mon Sep 17 00:00:00 2001 From: Daniel Tschinder Date: Thu, 2 Mar 2017 22:29:49 +0100 Subject: [PATCH 5/9] Secure script --- experimental/babel-preset-env/scripts/build-data.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/experimental/babel-preset-env/scripts/build-data.js b/experimental/babel-preset-env/scripts/build-data.js index 7d3df88703..a3f52b987e 100644 --- a/experimental/babel-preset-env/scripts/build-data.js +++ b/experimental/babel-preset-env/scripts/build-data.js @@ -60,7 +60,7 @@ const invertedEqualsEnv = Object.keys(envs) if (!isNaN(version)) { Object.keys(envs).forEach((equals) => { const equalsVersion = parseInt(equals.replace(env, ""), 10); - if (equalsVersion <= version) { + if (!isNaN(equalsVersion) && equalsVersion <= version) { if (!a[equals]) a[equals] = []; a[equals].push(b); } From c2c96995a16513fac3ef4f14d62ca752cace0f24 Mon Sep 17 00:00:00 2001 From: Daniel Tschinder Date: Thu, 2 Mar 2017 22:33:03 +0100 Subject: [PATCH 6/9] Add comments --- experimental/babel-preset-env/scripts/build-data.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/experimental/babel-preset-env/scripts/build-data.js b/experimental/babel-preset-env/scripts/build-data.js index a3f52b987e..f7958ed699 100644 --- a/experimental/babel-preset-env/scripts/build-data.js +++ b/experimental/babel-preset-env/scripts/build-data.js @@ -56,10 +56,16 @@ const invertedEqualsEnv = Object.keys(envs) .reduce((a, b) => { const checkEnv = envMap[envs[b].equals] || envs[b].equals; environments.some((env) => { + // go through all environment names to find the the current one + // and try to get the version as integer const version = parseInt(checkEnv.replace(env, ""), 10); if (!isNaN(version)) { Object.keys(envs).forEach((equals) => { + // Go through all envs from compat-table and get int version const equalsVersion = parseInt(equals.replace(env, ""), 10); + // If the current version is smaller than the version that was mentioned + // in `equals` we can add an entry, as older versions should include features + // that newer ones have if (!isNaN(equalsVersion) && equalsVersion <= version) { if (!a[equals]) a[equals] = []; a[equals].push(b); From b5af93f348c436ed0576f2b0a3c435cffaa83949 Mon Sep 17 00:00:00 2001 From: Daniel Tschinder Date: Fri, 3 Mar 2017 17:15:26 +0100 Subject: [PATCH 7/9] Update compat-table to include ndoe4 and ios8 fixes --- experimental/babel-preset-env/package.json | 2 +- experimental/babel-preset-env/yarn.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/experimental/babel-preset-env/package.json b/experimental/babel-preset-env/package.json index 9286df8635..92f6aa7d8d 100644 --- a/experimental/babel-preset-env/package.json +++ b/experimental/babel-preset-env/package.json @@ -58,7 +58,7 @@ "babel-preset-es2015": "^6.14.0", "babel-register": "^6.14.0", "chai": "^3.0.0", - "compat-table": "kangax/compat-table#291c758ac618fff6bf5bb2113a5aa046189f93e2", + "compat-table": "kangax/compat-table#c38f039b8ea7fadf347d3e300fec3611645e31e9", "eslint": "^3.13.1", "eslint-config-babel": "^5.0.0", "eslint-plugin-flowtype": "^2.29.1", diff --git a/experimental/babel-preset-env/yarn.lock b/experimental/babel-preset-env/yarn.lock index caf3cede67..61f4c3d5e0 100644 --- a/experimental/babel-preset-env/yarn.lock +++ b/experimental/babel-preset-env/yarn.lock @@ -1067,9 +1067,9 @@ commoner@^0.10.1: q "^1.1.2" recast "^0.11.17" -compat-table@kangax/compat-table#291c758ac618fff6bf5bb2113a5aa046189f93e2: +compat-table@kangax/compat-table#c38f039b8ea7fadf347d3e300fec3611645e31e9: version "0.0.0" - resolved "https://codeload.github.com/kangax/compat-table/tar.gz/291c758ac618fff6bf5bb2113a5aa046189f93e2" + resolved "https://codeload.github.com/kangax/compat-table/tar.gz/c38f039b8ea7fadf347d3e300fec3611645e31e9" dependencies: babel-core latest babel-polyfill latest From 6edae49d4d9f32da04ff160439cc7a7db49c7f5c Mon Sep 17 00:00:00 2001 From: Daniel Tschinder Date: Fri, 3 Mar 2017 17:24:01 +0100 Subject: [PATCH 8/9] Version can be float and correctly lookup envMap --- .../babel-preset-env/data/built-ins.json | 36 +++++++++---------- .../babel-preset-env/data/plugins.json | 2 +- .../babel-preset-env/scripts/build-data.js | 9 +++-- 3 files changed, 23 insertions(+), 24 deletions(-) diff --git a/experimental/babel-preset-env/data/built-ins.json b/experimental/babel-preset-env/data/built-ins.json index 9f65626cca..4901b8f1f6 100644 --- a/experimental/babel-preset-env/data/built-ins.json +++ b/experimental/babel-preset-env/data/built-ins.json @@ -438,7 +438,7 @@ "firefox": 25, "safari": 8, "node": 4, - "ios": 9, + "ios": 8, "opera": 32 }, "es6.array.find-index": { @@ -447,7 +447,7 @@ "firefox": 25, "safari": 8, "node": 4, - "ios": 9, + "ios": 8, "opera": 32 }, "es6.array.fill": { @@ -456,7 +456,7 @@ "firefox": 31, "safari": 8, "node": 4, - "ios": 9, + "ios": 8, "opera": 32 }, "es6.array.iterator": { @@ -466,7 +466,7 @@ "safari": 8, "node": 0.12, "android": 5.1, - "ios": 9, + "ios": 8, "opera": 25 }, "es6.number.is-finite": { @@ -544,7 +544,7 @@ "safari": 8, "node": 0.12, "android": 5.1, - "ios": 9, + "ios": 8, "opera": 25 }, "es6.math.asinh": { @@ -554,7 +554,7 @@ "safari": 8, "node": 0.12, "android": 5.1, - "ios": 9, + "ios": 8, "opera": 25 }, "es6.math.atanh": { @@ -564,7 +564,7 @@ "safari": 8, "node": 0.12, "android": 5.1, - "ios": 9, + "ios": 8, "opera": 25 }, "es6.math.cbrt": { @@ -574,7 +574,7 @@ "safari": 8, "node": 0.12, "android": 5.1, - "ios": 9, + "ios": 8, "opera": 25 }, "es6.math.clz32": { @@ -594,7 +594,7 @@ "safari": 8, "node": 0.12, "android": 5.1, - "ios": 9, + "ios": 8, "opera": 25 }, "es6.math.expm1": { @@ -604,7 +604,7 @@ "safari": 8, "node": 0.12, "android": 5.1, - "ios": 9, + "ios": 8, "opera": 25 }, "es6.math.fround": { @@ -614,7 +614,7 @@ "safari": 8, "node": 0.12, "android": 5.1, - "ios": 9, + "ios": 8, "opera": 25 }, "es6.math.hypot": { @@ -624,7 +624,7 @@ "safari": 8, "node": 0.12, "android": 5.1, - "ios": 9, + "ios": 8, "opera": 25 }, "es6.math.imul": { @@ -644,7 +644,7 @@ "safari": 8, "node": 0.12, "android": 5.1, - "ios": 9, + "ios": 8, "opera": 25 }, "es6.math.log10": { @@ -654,7 +654,7 @@ "safari": 8, "node": 0.12, "android": 5.1, - "ios": 9, + "ios": 8, "opera": 25 }, "es6.math.log2": { @@ -664,7 +664,7 @@ "safari": 8, "node": 0.12, "android": 5.1, - "ios": 9, + "ios": 8, "opera": 25 }, "es6.math.sign": { @@ -684,7 +684,7 @@ "safari": 8, "node": 0.12, "android": 5.1, - "ios": 9, + "ios": 8, "opera": 25 }, "es6.math.tanh": { @@ -694,7 +694,7 @@ "safari": 8, "node": 0.12, "android": 5.1, - "ios": 9, + "ios": 8, "opera": 25 }, "es6.math.trunc": { @@ -704,7 +704,7 @@ "safari": 8, "node": 0.12, "android": 5.1, - "ios": 9, + "ios": 8, "opera": 25 }, "es7.array.includes": { diff --git a/experimental/babel-preset-env/data/plugins.json b/experimental/babel-preset-env/data/plugins.json index bce48fad12..6630092e3a 100644 --- a/experimental/babel-preset-env/data/plugins.json +++ b/experimental/babel-preset-env/data/plugins.json @@ -40,7 +40,7 @@ "firefox": 34, "safari": 8, "node": 4, - "ios": 9, + "ios": 8, "opera": 31 }, "check-es2015-constants": { diff --git a/experimental/babel-preset-env/scripts/build-data.js b/experimental/babel-preset-env/scripts/build-data.js index f7958ed699..deba362443 100644 --- a/experimental/babel-preset-env/scripts/build-data.js +++ b/experimental/babel-preset-env/scripts/build-data.js @@ -58,11 +58,12 @@ const invertedEqualsEnv = Object.keys(envs) environments.some((env) => { // go through all environment names to find the the current one // and try to get the version as integer - const version = parseInt(checkEnv.replace(env, ""), 10); + const version = parseFloat(checkEnv.replace(env, "")); if (!isNaN(version)) { Object.keys(envs).forEach((equals) => { + equals = envMap[equals] || equals; // Go through all envs from compat-table and get int version - const equalsVersion = parseInt(equals.replace(env, ""), 10); + const equalsVersion = parseFloat(equals.replace(env, "")); // If the current version is smaller than the version that was mentioned // in `equals` we can add an entry, as older versions should include features // that newer ones have @@ -78,8 +79,6 @@ const invertedEqualsEnv = Object.keys(envs) return a; }, {}); -invertedEqualsEnv.safari8 = ["ios9"]; - const compatibilityTests = flattenDeep([ es6Data, es6PlusData, @@ -141,7 +140,7 @@ const getLowestImplementedVersion = ({ features }, env) => { .filter((test) => tests[i].res[test] === true || tests[i].res[test] === "strict") // normalize some keys .map((test) => envMap[test] || test) - .filter((test) => !isNaN(parseInt(test.replace(env, "")))) + .filter((test) => !isNaN(parseFloat(test.replace(env, "")))) .shift(); }); From 7d00281b2bd1c7d91775ee97534f949a7bc0fa8f Mon Sep 17 00:00:00 2001 From: Daniel Tschinder Date: Fri, 3 Mar 2017 20:48:35 +0100 Subject: [PATCH 9/9] =?UTF-8?q?Don=E2=80=99t=20add=20duplicate=20entries?= =?UTF-8?q?=20to=20map?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- experimental/babel-preset-env/scripts/build-data.js | 1 + 1 file changed, 1 insertion(+) diff --git a/experimental/babel-preset-env/scripts/build-data.js b/experimental/babel-preset-env/scripts/build-data.js index deba362443..fd16232fd0 100644 --- a/experimental/babel-preset-env/scripts/build-data.js +++ b/experimental/babel-preset-env/scripts/build-data.js @@ -69,6 +69,7 @@ const invertedEqualsEnv = Object.keys(envs) // that newer ones have if (!isNaN(equalsVersion) && equalsVersion <= version) { if (!a[equals]) a[equals] = []; + if (a[equals].indexOf(b) >= 0) return; a[equals].push(b); } });