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) => {