From 6b9404ab52d45f364f5a599728ffb11029309558 Mon Sep 17 00:00:00 2001 From: Henry Zhu Date: Thu, 6 Oct 2016 17:08:13 -0400 Subject: [PATCH] fixes, run build script in node 0.10 with babel-node (#12) * fixes, run build script in node 0.10 with babel-node * try node --- .../babel-preset-env/data/plugins.json | 31 ++++++---- experimental/babel-preset-env/package.json | 4 +- .../babel-preset-env/scripts/build-data.js | 62 ++++++++++++++----- 3 files changed, 69 insertions(+), 28 deletions(-) diff --git a/experimental/babel-preset-env/data/plugins.json b/experimental/babel-preset-env/data/plugins.json index 5dd10b0ffa..f47c5b5737 100644 --- a/experimental/babel-preset-env/data/plugins.json +++ b/experimental/babel-preset-env/data/plugins.json @@ -8,7 +8,8 @@ "transform-es2015-block-scoped-functions": { "chrome": 41, "firefox": 46, - "safari": 10 + "safari": 10, + "node": 4 }, "transform-es2015-block-scoping": { "chrome": 49, @@ -19,13 +20,15 @@ "chrome": 46, "edge": 13, "firefox": 45, - "safari": 10 + "safari": 10, + "node": 5 }, "transform-es2015-computed-properties": { "chrome": 44, "edge": 12, "firefox": 34, - "safari": 10 + "safari": 7, + "node": 4 }, "check-es2015-constants": { "chrome": 49, @@ -34,12 +37,10 @@ }, "transform-es2015-destructuring": { "chrome": 51, - "edge": 14, "safari": 10 }, "transform-es2015-for-of": { "chrome": 51, - "edge": 14, "safari": 10 }, "transform-es2015-function-name": { @@ -49,13 +50,15 @@ "transform-es2015-literals": { "chrome": 44, "edge": 12, - "safari": 9 + "safari": 9, + "node": 4 }, "transform-es2015-object-super": { "chrome": 46, "edge": 13, "firefox": 45, - "safari": 10 + "safari": 10, + "node": 5 }, "transform-es2015-parameters": { "chrome": 49, @@ -66,13 +69,15 @@ "chrome": 43, "edge": 12, "firefox": 33, - "safari": 9 + "safari": 9, + "node": 4 }, "transform-es2015-spread": { "chrome": 46, "edge": 13, "firefox": 36, - "safari": 10 + "safari": 10, + "node": 5 }, "transform-es2015-sticky-regex": { "chrome": 49, @@ -84,13 +89,15 @@ "chrome": 41, "edge": 13, "firefox": 34, - "safari": 9 + "safari": 9, + "node": 4 }, "transform-es2015-typeof-symbol": { "chrome": 38, "edge": 12, "firefox": 36, - "safari": 9 + "safari": 9, + "node": 0.12 }, "transform-es2015-unicode-regex": { "chrome": 50, @@ -108,7 +115,7 @@ "edge": 14 }, "transform-async-to-generator": { - "edge": 14 + "chrome": 55 }, "syntax-trailing-function-commas": { "edge": 14, diff --git a/experimental/babel-preset-env/package.json b/experimental/babel-preset-env/package.json index 57cda730c7..bf66c17a94 100644 --- a/experimental/babel-preset-env/package.json +++ b/experimental/babel-preset-env/package.json @@ -8,8 +8,8 @@ "repository": "https://github.com/babel/babel-preset-env", "main": "lib/index.js", "scripts": { - "build": "npm run build-data && babel src -d lib", - "build-data": "node ./scripts/build-data.js", + "build": "babel src -d lib", + "build-data": "babel-node ./scripts/build-data.js", "dev": "babel -w src -d lib", "lint": "eslint scripts src test", "fix": "eslint scripts src test --fix", diff --git a/experimental/babel-preset-env/scripts/build-data.js b/experimental/babel-preset-env/scripts/build-data.js index 28d79edc74..9664939887 100644 --- a/experimental/babel-preset-env/scripts/build-data.js +++ b/experimental/babel-preset-env/scripts/build-data.js @@ -28,32 +28,66 @@ const environments = [ "edge", "firefox", "safari", + "node" ]; +const envMap = { + safari51: "safari5", + safari71_8: "safari7", + chrome: "chrome19", + chrome19dev: "chrome19", + chrome21dev: "chrome21", + firefox3_5: "firefox3", + firefox3_6: "firefox3", + node012: "node0.12", + node64: "node6", + node65: "node6.5" +}; + const getLowestImplementedVersion = ({ features }, env) => { let tests = flatten(compatibilityTests .filter((test) => features.indexOf(test.name) >= 0) .map((test) => { return test.subtests ? - test.subtests.map((subtest) => subtest.res) : - test.res; + test.subtests.map((subtest) => ({ + name: `${test.name}/${subtest.name}`, + res: subtest.res + })) : + { + name: test.name, + res: test.res + }; }) ); - const envVersions = versions.filter((version) => version.startsWith(env)); + let envTests = tests + .map(({ res: test, name }, i) => { + return Object.keys(test) + .filter((t) => t.startsWith(env)) + // TODO: make flagged/etc an options + .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, "")))) + .shift(); + }); - for (let i = 0; i < envVersions.length; i++) { - const version = envVersions[i]; - tests = tests.filter((test) => - test[version] !== true && - test[version] !== "strict" - ); - if (tests.length === 0) { - const number = parseInt(version.replace(env, ""), 10); - return isFinite(number) ? number : null; - } + let envFiltered = envTests.filter((t) => t); + if (envTests.length > envFiltered.length) { + // envTests.forEach((test, i) => { + // if (!test) { + // // print unsupported features + // if (env === 'node') { + // console.log(`ENV(${env}): ${tests[i].name}`); + // } + // } + // }); + return null; } - return null; + + return envTests + .map((str) => Number(str.replace(env, ""))) + .reduce((a, b) => { return (a < b) ? b : a; }); }; const data = {};