From ea223616731e6927039372176935d94190c8b61a Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Wed, 10 May 2017 13:59:05 -0500 Subject: [PATCH 01/12] Bump browserslist. (#319) --- experimental/babel-preset-env/package.json | 2 +- experimental/babel-preset-env/yarn.lock | 19 ++++++++++++------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/experimental/babel-preset-env/package.json b/experimental/babel-preset-env/package.json index de238988b2..8b888cceb4 100644 --- a/experimental/babel-preset-env/package.json +++ b/experimental/babel-preset-env/package.json @@ -49,7 +49,7 @@ "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", "babel-plugin-transform-exponentiation-operator": "^6.22.0", "babel-plugin-transform-regenerator": "^6.22.0", - "browserslist": "^1.4.0", + "browserslist": "^2.1.2", "invariant": "^2.2.2" }, "devDependencies": { diff --git a/experimental/babel-preset-env/yarn.lock b/experimental/babel-preset-env/yarn.lock index b8ca55cd9b..cf65c6ba1f 100644 --- a/experimental/babel-preset-env/yarn.lock +++ b/experimental/babel-preset-env/yarn.lock @@ -1073,11 +1073,12 @@ browser-stdout@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" -browserslist@^1.4.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.5.1.tgz#67c3f2a1a6ad174cd01d25d2362e6e6083b26986" +browserslist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.1.2.tgz#a9dd0791342dab019861c2dd1cd0fd5d83230d39" dependencies: - caniuse-db "^1.0.30000601" + caniuse-lite "^1.0.30000665" + electron-to-chromium "^1.3.9" buffer-shims@^1.0.0: version "1.0.0" @@ -1113,9 +1114,9 @@ camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" -caniuse-db@^1.0.30000601: - version "1.0.30000602" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000602.tgz#06b2cbfb6c3aeef7ddb18cd588043549ad1a2d4e" +caniuse-lite@^1.0.30000665: + version "1.0.30000666" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000666.tgz#831b63247e24fa408e20c6c546c4173d27c5a1a5" caseless@~0.11.0: version "0.11.0" @@ -1510,6 +1511,10 @@ 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" +electron-to-chromium@^1.3.9: + version "1.3.9" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.9.tgz#db1cba2a26aebcca2f7f5b8b034554468609157d" + entities@1.0: version "1.0.0" resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26" From 14e9fbf3459deb4479b799549dce8b1ce351f2ce Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Wed, 17 May 2017 10:26:23 -0500 Subject: [PATCH 02/12] Tweak version mappings to match compat-table updates (#323) --- .../babel-preset-env/data/built-ins.json | 38 +++++++++---------- .../babel-preset-env/data/plugins.json | 2 +- experimental/babel-preset-env/package.json | 2 +- .../babel-preset-env/scripts/build-data.js | 25 +----------- experimental/babel-preset-env/yarn.lock | 4 +- 5 files changed, 24 insertions(+), 47 deletions(-) diff --git a/experimental/babel-preset-env/data/built-ins.json b/experimental/babel-preset-env/data/built-ins.json index b0ecacbd75..de589f66cf 100644 --- a/experimental/babel-preset-env/data/built-ins.json +++ b/experimental/babel-preset-env/data/built-ins.json @@ -14,7 +14,7 @@ "opera": 12, "edge": 12, "firefox": 15, - "safari": 5, + "safari": 5.1, "node": 0.12, "ie": 10, "android": 4, @@ -490,7 +490,7 @@ "chrome": 45, "edge": 12, "firefox": 25, - "safari": 8, + "safari": 7.1, "node": 4, "ios": 8, "opera": 32, @@ -500,7 +500,7 @@ "chrome": 45, "edge": 12, "firefox": 25, - "safari": 8, + "safari": 7.1, "node": 4, "ios": 8, "opera": 32, @@ -510,7 +510,7 @@ "chrome": 45, "edge": 12, "firefox": 31, - "safari": 8, + "safari": 7.1, "node": 4, "ios": 8, "opera": 32, @@ -520,7 +520,7 @@ "chrome": 38, "edge": 12, "firefox": 28, - "safari": 8, + "safari": 7.1, "node": 0.12, "android": 5.1, "ios": 8, @@ -606,7 +606,7 @@ "chrome": 38, "edge": 12, "firefox": 25, - "safari": 8, + "safari": 7.1, "node": 0.12, "android": 5.1, "ios": 8, @@ -617,7 +617,7 @@ "chrome": 38, "edge": 12, "firefox": 25, - "safari": 8, + "safari": 7.1, "node": 0.12, "android": 5.1, "ios": 8, @@ -628,7 +628,7 @@ "chrome": 38, "edge": 12, "firefox": 25, - "safari": 8, + "safari": 7.1, "node": 0.12, "android": 5.1, "ios": 8, @@ -639,7 +639,7 @@ "chrome": 38, "edge": 12, "firefox": 25, - "safari": 8, + "safari": 7.1, "node": 0.12, "android": 5.1, "ios": 8, @@ -661,7 +661,7 @@ "chrome": 38, "edge": 12, "firefox": 25, - "safari": 8, + "safari": 7.1, "node": 0.12, "android": 5.1, "ios": 8, @@ -672,7 +672,7 @@ "chrome": 38, "edge": 12, "firefox": 25, - "safari": 8, + "safari": 7.1, "node": 0.12, "android": 5.1, "ios": 8, @@ -683,7 +683,7 @@ "chrome": 38, "edge": 12, "firefox": 26, - "safari": 8, + "safari": 7.1, "node": 0.12, "android": 5.1, "ios": 8, @@ -694,7 +694,7 @@ "chrome": 38, "edge": 12, "firefox": 27, - "safari": 8, + "safari": 7.1, "node": 0.12, "android": 5.1, "ios": 8, @@ -716,7 +716,7 @@ "chrome": 38, "edge": 12, "firefox": 25, - "safari": 8, + "safari": 7.1, "node": 0.12, "android": 5.1, "ios": 8, @@ -727,7 +727,7 @@ "chrome": 38, "edge": 12, "firefox": 25, - "safari": 8, + "safari": 7.1, "node": 0.12, "android": 5.1, "ios": 8, @@ -738,7 +738,7 @@ "chrome": 38, "edge": 12, "firefox": 25, - "safari": 8, + "safari": 7.1, "node": 0.12, "android": 5.1, "ios": 8, @@ -760,7 +760,7 @@ "chrome": 38, "edge": 12, "firefox": 25, - "safari": 8, + "safari": 7.1, "node": 0.12, "android": 5.1, "ios": 8, @@ -771,7 +771,7 @@ "chrome": 38, "edge": 12, "firefox": 25, - "safari": 8, + "safari": 7.1, "node": 0.12, "android": 5.1, "ios": 8, @@ -782,7 +782,7 @@ "chrome": 38, "edge": 12, "firefox": 25, - "safari": 8, + "safari": 7.1, "node": 0.12, "android": 5.1, "ios": 8, diff --git a/experimental/babel-preset-env/data/plugins.json b/experimental/babel-preset-env/data/plugins.json index 52bb1c27fe..ef9456b94d 100644 --- a/experimental/babel-preset-env/data/plugins.json +++ b/experimental/babel-preset-env/data/plugins.json @@ -54,7 +54,7 @@ "chrome": 44, "edge": 12, "firefox": 34, - "safari": 8, + "safari": 7.1, "node": 4, "ios": 8, "opera": 31, diff --git a/experimental/babel-preset-env/package.json b/experimental/babel-preset-env/package.json index 8b888cceb4..72dc6611ec 100644 --- a/experimental/babel-preset-env/package.json +++ b/experimental/babel-preset-env/package.json @@ -63,7 +63,7 @@ "babel-register": "^6.23.0", "chai": "^3.5.0", "codecov": "^1.0.1", - "compat-table": "kangax/compat-table#f49f1b23ad35e61819c388bc1876d936bc6ad8bf", + "compat-table": "kangax/compat-table#1f0bb0913736fe8c4c11b139766c73b9cbedb9f2", "eslint": "^3.17.1", "eslint-config-babel": "^6.0.0", "eslint-plugin-flowtype": "^2.29.1", diff --git a/experimental/babel-preset-env/scripts/build-data.js b/experimental/babel-preset-env/scripts/build-data.js index 2a1a2628a2..94ce128dc3 100644 --- a/experimental/babel-preset-env/scripts/build-data.js +++ b/experimental/babel-preset-env/scripts/build-data.js @@ -125,29 +125,6 @@ const environments = [ "phantom" ]; -const envMap = { - safari51: "safari5", - safari71_8: "safari8", - safari10_1: "safari10.1", - firefox3_5: "firefox3", - firefox3_6: "firefox3", - node010: "node0.10", - node012: "node0.12", - iojs: "node3.3", - node64: "node6", - node65: "node6.5", - node76: "node7.6", - android40: "android4.0", - android41: "android4.1", - android42: "android4.2", - android43: "android4.3", - android44: "android4.4", - android50: "android5.0", - android51: "android5.1", - ios51: "ios5.1", - ios10_3: "ios10.3", -}; - const compatibilityTests = flattenDeep([ es6, es2016plus, @@ -198,7 +175,7 @@ const getLowestImplementedVersion = ({ features }, env) => { // Babel assumes strict mode .filter((test) => tests[i].res[test] === true || tests[i].res[test] === "strict") // normalize some keys - .map((test) => envMap[test] || test) + .map((test) => test.replace("_", ".")) .filter((test) => !isNaN(parseFloat(test.replace(env, "")))) .shift(); }); diff --git a/experimental/babel-preset-env/yarn.lock b/experimental/babel-preset-env/yarn.lock index cf65c6ba1f..5e56c15024 100644 --- a/experimental/babel-preset-env/yarn.lock +++ b/experimental/babel-preset-env/yarn.lock @@ -1270,9 +1270,9 @@ commoner@^0.10.1: q "^1.1.2" recast "^0.11.17" -compat-table@kangax/compat-table#f49f1b23ad35e61819c388bc1876d936bc6ad8bf: +compat-table@kangax/compat-table#1f0bb0913736fe8c4c11b139766c73b9cbedb9f2: version "0.0.0" - resolved "https://codeload.github.com/kangax/compat-table/tar.gz/f49f1b23ad35e61819c388bc1876d936bc6ad8bf" + resolved "https://codeload.github.com/kangax/compat-table/tar.gz/1f0bb0913736fe8c4c11b139766c73b9cbedb9f2" dependencies: babel-core latest babel-polyfill latest From 72591a0ebd14fb20e69c00c477058ddfb3d4c9e8 Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Fri, 19 May 2017 16:26:47 -0500 Subject: [PATCH 03/12] Bump electron-to-chromium --- .../babel-preset-env/data/built-ins.json | 6 +- .../babel-preset-env/data/plugins.json | 3 +- experimental/babel-preset-env/package.json | 2 +- experimental/babel-preset-env/yarn.lock | 64 +++---------------- 4 files changed, 17 insertions(+), 58 deletions(-) diff --git a/experimental/babel-preset-env/data/built-ins.json b/experimental/babel-preset-env/data/built-ins.json index de589f66cf..f2ca877161 100644 --- a/experimental/babel-preset-env/data/built-ins.json +++ b/experimental/babel-preset-env/data/built-ins.json @@ -835,7 +835,8 @@ "firefox": 48, "safari": 10, "ios": 10, - "opera": 44 + "opera": 44, + "electron": 1.7 }, "es7.string.pad-end": { "chrome": 57, @@ -843,6 +844,7 @@ "firefox": 48, "safari": 10, "ios": 10, - "opera": 44 + "opera": 44, + "electron": 1.7 } } diff --git a/experimental/babel-preset-env/data/plugins.json b/experimental/babel-preset-env/data/plugins.json index ef9456b94d..503528b0cc 100644 --- a/experimental/babel-preset-env/data/plugins.json +++ b/experimental/babel-preset-env/data/plugins.json @@ -226,6 +226,7 @@ "firefox": 52, "safari": 10, "ios": 10, - "opera": 45 + "opera": 45, + "electron": 1.7 } } diff --git a/experimental/babel-preset-env/package.json b/experimental/babel-preset-env/package.json index 72dc6611ec..192103c238 100644 --- a/experimental/babel-preset-env/package.json +++ b/experimental/babel-preset-env/package.json @@ -71,7 +71,7 @@ "lodash": "^4.17.4", "mocha": "^3.2.0", "nyc": "^10.1.2", - "electron-to-chromium": "^1.3.2", + "electron-to-chromium": "^1.3.11", "rimraf": "^2.6.1" }, "babel": { diff --git a/experimental/babel-preset-env/yarn.lock b/experimental/babel-preset-env/yarn.lock index 5e56c15024..267d77d585 100644 --- a/experimental/babel-preset-env/yarn.lock +++ b/experimental/babel-preset-env/yarn.lock @@ -22,10 +22,6 @@ acorn-jsx@^3.0.0: dependencies: acorn "^3.0.4" -acorn@4.0.4, acorn@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a" - acorn@^2.1.0, acorn@^2.4.0: version "2.7.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7" @@ -34,6 +30,10 @@ acorn@^3.0.4: version "3.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" +acorn@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a" + acorn@^5.0.1: version "5.0.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.2.tgz#dc1c8fb907f64db2ab573de2326b73527c24de36" @@ -233,31 +233,7 @@ babel-code-frame@^6.22.0: esutils "^2.0.2" js-tokens "^3.0.0" -babel-core@^6.23.0: - version "6.23.1" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.23.1.tgz#c143cb621bb2f621710c220c5d579d15b8a442df" - dependencies: - babel-code-frame "^6.22.0" - babel-generator "^6.23.0" - babel-helpers "^6.23.0" - babel-messages "^6.23.0" - babel-register "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.23.0" - babel-traverse "^6.23.1" - babel-types "^6.23.0" - babylon "^6.11.0" - convert-source-map "^1.1.0" - debug "^2.1.1" - json5 "^0.5.0" - lodash "^4.2.0" - minimatch "^3.0.2" - path-is-absolute "^1.0.0" - private "^0.1.6" - slash "^1.0.0" - source-map "^0.5.0" - -babel-core@^6.24.0, babel-core@latest: +babel-core@^6.23.0, babel-core@^6.24.0, babel-core@latest: version "6.24.0" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.0.tgz#8f36a0a77f5c155aed6f920b844d23ba56742a02" dependencies: @@ -291,20 +267,7 @@ babel-eslint@^7.1.1: babylon "^6.13.0" lodash.pickby "^4.6.0" -babel-generator@^6.18.0, babel-generator@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.23.0.tgz#6b8edab956ef3116f79d8c84c5a3c05f32a74bc5" - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.23.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.2.0" - source-map "^0.5.0" - trim-right "^1.0.1" - -babel-generator@^6.24.0: +babel-generator@^6.18.0, babel-generator@^6.24.0: version "6.24.0" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.0.tgz#eba270a8cc4ce6e09a61be43465d7c62c1f87c56" dependencies: @@ -1507,9 +1470,9 @@ ecc-jsbn@~0.1.1: dependencies: jsbn "~0.1.0" -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" +electron-to-chromium@^1.3.11: + version "1.3.11" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.11.tgz#744761df1d67b492b322ce9aa0aba5393260eb61" electron-to-chromium@^1.3.9: version "1.3.9" @@ -1717,14 +1680,7 @@ eslint@^3.17.1: text-table "~0.2.0" user-home "^2.0.0" -espree@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.0.tgz#41656fa5628e042878025ef467e78f125cb86e1d" - dependencies: - acorn "4.0.4" - acorn-jsx "^3.0.0" - -espree@latest: +espree@^3.4.0, espree@latest: version "3.4.1" resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.1.tgz#28a83ab4aaed71ed8fe0f5efe61b76a05c13c4d2" dependencies: From 0781f711d0da559abe2945d6a9b868cb7a2fc53e Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Fri, 7 Apr 2017 14:24:42 -0500 Subject: [PATCH 04/12] Support target versions as strings (#231) --- experimental/babel-preset-env/README.md | 4 +- .../babel-preset-env/data/built-ins.json | 1362 +++++++++-------- .../babel-preset-env/data/plugins.json | 367 ++--- experimental/babel-preset-env/package.json | 3 +- .../babel-preset-env/scripts/build-data.js | 12 +- experimental/babel-preset-env/src/index.js | 109 +- .../babel-preset-env/src/targets-parser.js | 133 ++ experimental/babel-preset-env/src/utils.js | 67 + .../test/debug-fixtures/android/stdout.txt | 218 +-- .../debug-fixtures/builtins-uglify/stdout.txt | 14 +- .../test/debug-fixtures/builtins/stdout.txt | 222 +-- .../test/debug-fixtures/electron/stdout.txt | 122 +- .../debug-fixtures/plugins-only/options.json | 3 +- .../debug-fixtures/plugins-only/stdout.txt | 21 +- .../specific-targets/stdout.txt | 228 +-- .../versions-decimals/options.json | 13 + .../versions-decimals/stdout.txt | 45 + .../versions-strings/options.json | 12 + .../versions-strings/stdout.txt | 36 + .../preset-options/electron/options.json | 2 +- .../preset-options/no-transform/options.json | 2 +- .../use-builtins-node-web/options.json | 4 +- .../use-builtins-node/options.json | 2 +- .../use-builtins-require/options.json | 2 +- .../babel-preset-env/test/index.spec.js | 182 +-- .../test/targets-parser.spec.js | 117 ++ .../babel-preset-env/test/utils.spec.js | 61 + experimental/babel-preset-env/yarn.lock | 58 +- 28 files changed, 1875 insertions(+), 1546 deletions(-) create mode 100644 experimental/babel-preset-env/src/targets-parser.js create mode 100644 experimental/babel-preset-env/src/utils.js create mode 100644 experimental/babel-preset-env/test/debug-fixtures/versions-decimals/options.json create mode 100644 experimental/babel-preset-env/test/debug-fixtures/versions-decimals/stdout.txt create mode 100644 experimental/babel-preset-env/test/debug-fixtures/versions-strings/options.json create mode 100644 experimental/babel-preset-env/test/debug-fixtures/versions-strings/stdout.txt create mode 100644 experimental/babel-preset-env/test/targets-parser.spec.js create mode 100644 experimental/babel-preset-env/test/utils.spec.js diff --git a/experimental/babel-preset-env/README.md b/experimental/babel-preset-env/README.md index b3d9e01f94..c3e8bc7b2f 100644 --- a/experimental/babel-preset-env/README.md +++ b/experimental/babel-preset-env/README.md @@ -98,11 +98,11 @@ For more information on setting options for a preset, refer to the [plugin/prese ### `targets` -`{ [string]: number }`, defaults to `{}`. +`{ [string]: number | string }`, defaults to `{}`. Takes an object of environment versions to support. -Each target environment takes a number (you can also specify a minor versions like `node: 6.5`) +Each target environment takes a number or a string (we recommend using a string when specifying minor versions like `node: "6.10"`). Example environments: `chrome`, `opera`, `edge`, `firefox`, `safari`, `ie`, `ios`, `android`, `node`, `electron`. diff --git a/experimental/babel-preset-env/data/built-ins.json b/experimental/babel-preset-env/data/built-ins.json index de589f66cf..dd478aabf7 100644 --- a/experimental/babel-preset-env/data/built-ins.json +++ b/experimental/babel-preset-env/data/built-ins.json @@ -1,848 +1,850 @@ { "es6.typed.array-buffer": { - "chrome": 51, - "edge": 13, - "firefox": 48, - "safari": 10, - "node": 6.5, - "ios": 10, - "opera": 38, - "electron": 1.2 + "chrome": "51", + "edge": "13", + "firefox": "48", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" }, "es6.typed.data-view": { - "chrome": 5, - "opera": 12, - "edge": 12, - "firefox": 15, - "safari": 5.1, - "node": 0.12, - "ie": 10, - "android": 4, - "ios": 6, - "electron": 0.2 + "chrome": "5", + "opera": "12", + "edge": "12", + "firefox": "15", + "safari": "5.1", + "node": "0.12", + "ie": "10", + "android": "4", + "ios": "6", + "electron": "1.1" }, "es6.typed.int8-array": { - "chrome": 51, - "edge": 13, - "firefox": 48, - "safari": 10, - "node": 6.5, - "ios": 10, - "opera": 38, - "electron": 1.2 + "chrome": "51", + "edge": "13", + "firefox": "48", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" }, "es6.typed.uint8-array": { - "chrome": 51, - "edge": 13, - "firefox": 48, - "safari": 10, - "node": 6.5, - "ios": 10, - "opera": 38, - "electron": 1.2 + "chrome": "51", + "edge": "13", + "firefox": "48", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" }, "es6.typed.uint8-clamped-array": { - "chrome": 51, - "edge": 13, - "firefox": 48, - "safari": 10, - "node": 6.5, - "ios": 10, - "opera": 38, - "electron": 1.2 + "chrome": "51", + "edge": "13", + "firefox": "48", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" }, "es6.typed.int16-array": { - "chrome": 51, - "edge": 13, - "firefox": 48, - "safari": 10, - "node": 6.5, - "ios": 10, - "opera": 38, - "electron": 1.2 + "chrome": "51", + "edge": "13", + "firefox": "48", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" }, "es6.typed.uint16-array": { - "chrome": 51, - "edge": 13, - "firefox": 48, - "safari": 10, - "node": 6.5, - "ios": 10, - "opera": 38, - "electron": 1.2 + "chrome": "51", + "edge": "13", + "firefox": "48", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" }, "es6.typed.int32-array": { - "chrome": 51, - "edge": 13, - "firefox": 48, - "safari": 10, - "node": 6.5, - "ios": 10, - "opera": 38, - "electron": 1.2 + "chrome": "51", + "edge": "13", + "firefox": "48", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" }, "es6.typed.uint32-array": { - "chrome": 51, - "edge": 13, - "firefox": 48, - "safari": 10, - "node": 6.5, - "ios": 10, - "opera": 38, - "electron": 1.2 + "chrome": "51", + "edge": "13", + "firefox": "48", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" }, "es6.typed.float32-array": { - "chrome": 51, - "edge": 13, - "firefox": 48, - "safari": 10, - "node": 6.5, - "ios": 10, - "opera": 38, - "electron": 1.2 + "chrome": "51", + "edge": "13", + "firefox": "48", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" }, "es6.typed.float64-array": { - "chrome": 51, - "edge": 13, - "firefox": 48, - "safari": 10, - "node": 6.5, - "ios": 10, - "opera": 38, - "electron": 1.2 + "chrome": "51", + "edge": "13", + "firefox": "48", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" }, "es6.map": { - "chrome": 51, - "edge": 15, - "firefox": 53, - "safari": 10, - "node": 6.5, - "ios": 10, - "opera": 38, - "electron": 1.2 + "chrome": "51", + "edge": "15", + "firefox": "53", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" }, "es6.set": { - "chrome": 51, - "edge": 15, - "firefox": 53, - "safari": 10, - "node": 6.5, - "ios": 10, - "opera": 38, - "electron": 1.2 + "chrome": "51", + "edge": "15", + "firefox": "53", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" }, "es6.weak-map": { - "chrome": 51, - "edge": 15, - "firefox": 53, - "safari": 9, - "node": 6.5, - "ios": 9, - "opera": 38, - "electron": 1.2 + "chrome": "51", + "edge": "15", + "firefox": "53", + "safari": "9", + "node": "6.5", + "ios": "9", + "opera": "38", + "electron": "1.2" }, "es6.weak-set": { - "chrome": 51, - "edge": 15, - "firefox": 53, - "safari": 9, - "node": 6.5, - "ios": 9, - "opera": 38, - "electron": 1.2 + "chrome": "51", + "edge": "15", + "firefox": "53", + "safari": "9", + "node": "6.5", + "ios": "9", + "opera": "38", + "electron": "1.2" }, "es6.reflect.apply": { - "chrome": 49, - "edge": 12, - "firefox": 42, - "safari": 10, - "node": 6, - "ios": 10, - "opera": 36, - "electron": 1 + "chrome": "49", + "edge": "12", + "firefox": "42", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" }, "es6.reflect.construct": { - "chrome": 49, - "edge": 13, - "firefox": 45, - "safari": 10, - "node": 6, - "ios": 10, - "opera": 36, - "electron": 1 + "chrome": "49", + "edge": "13", + "firefox": "45", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" }, "es6.reflect.define-property": { - "chrome": 49, - "edge": 13, - "firefox": 42, - "safari": 10, - "node": 6, - "ios": 10, - "opera": 36, - "electron": 1 + "chrome": "49", + "edge": "13", + "firefox": "42", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" }, "es6.reflect.delete-property": { - "chrome": 49, - "edge": 12, - "firefox": 42, - "safari": 10, - "node": 6, - "ios": 10, - "opera": 36, - "electron": 1 + "chrome": "49", + "edge": "12", + "firefox": "42", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" }, "es6.reflect.get": { - "chrome": 49, - "edge": 12, - "firefox": 42, - "safari": 10, - "node": 6, - "ios": 10, - "opera": 36, - "electron": 1 + "chrome": "49", + "edge": "12", + "firefox": "42", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" }, "es6.reflect.get-own-property-descriptor": { - "chrome": 49, - "edge": 12, - "firefox": 42, - "safari": 10, - "node": 6, - "ios": 10, - "opera": 36, - "electron": 1 + "chrome": "49", + "edge": "12", + "firefox": "42", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" }, "es6.reflect.get-prototype-of": { - "chrome": 49, - "edge": 12, - "firefox": 42, - "safari": 10, - "node": 6, - "ios": 10, - "opera": 36, - "electron": 1 + "chrome": "49", + "edge": "12", + "firefox": "42", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" }, "es6.reflect.has": { - "chrome": 49, - "edge": 12, - "firefox": 42, - "safari": 10, - "node": 6, - "ios": 10, - "opera": 36, - "electron": 1 + "chrome": "49", + "edge": "12", + "firefox": "42", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" }, "es6.reflect.is-extensible": { - "chrome": 49, - "edge": 12, - "firefox": 42, - "safari": 10, - "node": 6, - "ios": 10, - "opera": 36, - "electron": 1 + "chrome": "49", + "edge": "12", + "firefox": "42", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" }, "es6.reflect.own-keys": { - "chrome": 49, - "edge": 12, - "firefox": 42, - "safari": 10, - "node": 6, - "ios": 10, - "opera": 36, - "electron": 1 + "chrome": "49", + "edge": "12", + "firefox": "42", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" }, "es6.reflect.prevent-extensions": { - "chrome": 49, - "edge": 12, - "firefox": 42, - "safari": 10, - "node": 6, - "ios": 10, - "opera": 36, - "electron": 1 + "chrome": "49", + "edge": "12", + "firefox": "42", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" }, "es6.reflect.set": { - "chrome": 49, - "edge": 12, - "firefox": 42, - "safari": 10, - "node": 6, - "ios": 10, - "opera": 36, - "electron": 1 + "chrome": "49", + "edge": "12", + "firefox": "42", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" }, "es6.reflect.set-prototype-of": { - "chrome": 49, - "edge": 12, - "firefox": 42, - "safari": 10, - "node": 6, - "ios": 10, - "opera": 36, - "electron": 1 + "chrome": "49", + "edge": "12", + "firefox": "42", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" }, "es6.promise": { - "chrome": 51, - "edge": 13, - "firefox": 45, - "safari": 10, - "node": 6.5, - "ios": 10, - "opera": 38, - "electron": 1.2 + "chrome": "51", + "edge": "13", + "firefox": "45", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" }, "es6.symbol": { - "chrome": 51, - "firefox": 51, - "safari": 10, - "node": 6.5, - "ios": 10, - "opera": 38, - "electron": 1.2 + "chrome": "51", + "firefox": "51", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" }, "es6.object.assign": { - "chrome": 45, - "edge": 12, - "firefox": 34, - "safari": 9, - "node": 4, - "ios": 9, - "opera": 32, - "electron": 0.35 + "chrome": "45", + "edge": "12", + "firefox": "34", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "32", + "electron": "0.35" }, "es6.object.is": { - "chrome": 19, - "edge": 12, - "firefox": 22, - "safari": 9, - "node": 0.12, - "android": 4.1, - "ios": 9, - "electron": 0.2 + "chrome": "19", + "edge": "12", + "firefox": "22", + "safari": "9", + "node": "0.12", + "android": "4.1", + "ios": "9", + "electron": "0.2" }, "es6.object.set-prototype-of": { - "chrome": 34, - "edge": 12, - "firefox": 31, - "safari": 9, - "node": 0.12, - "ie": 11, - "android": 5, - "ios": 9, - "opera": 21, - "electron": 0.2 + "chrome": "34", + "edge": "12", + "firefox": "31", + "safari": "9", + "node": "0.12", + "ie": "11", + "android": "5", + "ios": "9", + "opera": "21", + "electron": "0.2" }, "es6.function.name": { - "chrome": 51, - "firefox": 53, - "safari": 10, - "node": 6.5, - "ios": 10, - "opera": 38, - "electron": 1.2 + "chrome": "51", + "firefox": "53", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" }, "es6.string.raw": { - "chrome": 41, - "edge": 12, - "firefox": 34, - "safari": 9, - "node": 4, - "ios": 9, - "opera": 28, - "electron": 0.24 + "chrome": "41", + "edge": "12", + "firefox": "34", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "28", + "electron": "0.24" }, "es6.string.from-code-point": { - "chrome": 41, - "edge": 12, - "firefox": 29, - "safari": 9, - "node": 4, - "ios": 9, - "opera": 28, - "electron": 0.24 + "chrome": "41", + "edge": "12", + "firefox": "29", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "28", + "electron": "0.24" }, "es6.string.code-point-at": { - "chrome": 41, - "edge": 12, - "firefox": 29, - "safari": 9, - "node": 4, - "ios": 9, - "opera": 28, - "electron": 0.24 + "chrome": "41", + "edge": "12", + "firefox": "29", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "28", + "electron": "0.24" }, "es6.string.repeat": { - "chrome": 41, - "edge": 12, - "firefox": 24, - "safari": 9, - "node": 4, - "ios": 9, - "opera": 28, - "electron": 0.24 + "chrome": "41", + "edge": "12", + "firefox": "24", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "28", + "electron": "0.24" }, "es6.string.starts-with": { - "chrome": 41, - "edge": 12, - "firefox": 29, - "safari": 9, - "node": 4, - "ios": 9, - "opera": 28, - "electron": 0.24 + "chrome": "41", + "edge": "12", + "firefox": "29", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "28", + "electron": "0.24" }, "es6.string.ends-with": { - "chrome": 41, - "edge": 12, - "firefox": 29, - "safari": 9, - "node": 4, - "ios": 9, - "opera": 28, - "electron": 0.24 + "chrome": "41", + "edge": "12", + "firefox": "29", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "28", + "electron": "0.24" }, "es6.string.includes": { - "chrome": 41, - "edge": 12, - "firefox": 40, - "safari": 9, - "node": 4, - "ios": 9, - "opera": 28, - "electron": 0.24 + "chrome": "41", + "edge": "12", + "firefox": "40", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "28", + "electron": "0.24" }, "es6.regexp.flags": { - "chrome": 49, - "firefox": 37, - "safari": 9, - "node": 6, - "ios": 9, - "opera": 36, - "electron": 1 + "chrome": "49", + "firefox": "37", + "safari": "9", + "node": "6", + "ios": "9", + "opera": "36", + "electron": "1" }, "es6.regexp.match": { - "chrome": 50, - "firefox": 49, - "safari": 10, - "node": 6, - "ios": 10, - "opera": 37, - "electron": 1.1 + "chrome": "50", + "firefox": "49", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "37", + "electron": "1.1" }, "es6.regexp.replace": { - "chrome": 50, - "firefox": 49, - "safari": 10, - "node": 6, - "ios": 10, - "opera": 37, - "electron": 1.1 + "chrome": "50", + "firefox": "49", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "37", + "electron": "1.1" }, "es6.regexp.split": { - "chrome": 50, - "firefox": 49, - "safari": 10, - "node": 6, - "ios": 10, - "opera": 37, - "electron": 1.1 + "chrome": "50", + "firefox": "49", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "37", + "electron": "1.1" }, "es6.regexp.search": { - "chrome": 50, - "firefox": 49, - "safari": 10, - "node": 6, - "ios": 10, - "opera": 37, - "electron": 1.1 + "chrome": "50", + "firefox": "49", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "37", + "electron": "1.1" }, "es6.array.from": { - "chrome": 51, - "edge": 15, - "firefox": 36, - "safari": 10, - "node": 6.5, - "ios": 10, - "opera": 38, - "electron": 1.2 + "chrome": "51", + "edge": "15", + "firefox": "36", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" }, "es6.array.of": { - "chrome": 45, - "edge": 12, - "firefox": 25, - "safari": 9, - "node": 4, - "ios": 9, - "opera": 32, - "electron": 0.35 + "chrome": "45", + "edge": "12", + "firefox": "25", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "32", + "electron": "0.35" }, "es6.array.copy-within": { - "chrome": 45, - "edge": 12, - "firefox": 32, - "safari": 9, - "node": 4, - "ios": 9, - "opera": 32, - "electron": 0.35 + "chrome": "45", + "edge": "12", + "firefox": "32", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "32", + "electron": "0.35" }, "es6.array.find": { - "chrome": 45, - "edge": 12, - "firefox": 25, - "safari": 7.1, - "node": 4, - "ios": 8, - "opera": 32, - "electron": 0.35 + "chrome": "45", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "4", + "ios": "8", + "opera": "32", + "electron": "0.35" }, "es6.array.find-index": { - "chrome": 45, - "edge": 12, - "firefox": 25, - "safari": 7.1, - "node": 4, - "ios": 8, - "opera": 32, - "electron": 0.35 + "chrome": "45", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "4", + "ios": "8", + "opera": "32", + "electron": "0.35" }, "es6.array.fill": { - "chrome": 45, - "edge": 12, - "firefox": 31, - "safari": 7.1, - "node": 4, - "ios": 8, - "opera": 32, - "electron": 0.35 + "chrome": "45", + "edge": "12", + "firefox": "31", + "safari": "7.1", + "node": "4", + "ios": "8", + "opera": "32", + "electron": "0.35" }, "es6.array.iterator": { - "chrome": 38, - "edge": 12, - "firefox": 28, - "safari": 7.1, - "node": 0.12, - "android": 5.1, - "ios": 8, - "opera": 25, - "electron": 0.2 + "chrome": "38", + "edge": "12", + "firefox": "28", + "safari": "7.1", + "node": "0.12", + "android": "5.1", + "ios": "8", + "opera": "25", + "electron": "0.2" }, "es6.number.is-finite": { - "chrome": 19, - "edge": 12, - "firefox": 16, - "safari": 9, - "node": 0.12, - "android": 4.1, - "ios": 9, - "electron": 0.2 + "chrome": "19", + "edge": "12", + "firefox": "16", + "safari": "9", + "node": "0.12", + "android": "4.1", + "ios": "9", + "electron": "0.2" }, "es6.number.is-integer": { - "chrome": 34, - "edge": 12, - "firefox": 16, - "safari": 9, - "node": 0.12, - "android": 5, - "ios": 9, - "opera": 21, - "electron": 0.2 + "chrome": "34", + "edge": "12", + "firefox": "16", + "safari": "9", + "node": "0.12", + "android": "5", + "ios": "9", + "opera": "21", + "electron": "0.2" }, "es6.number.is-safe-integer": { - "chrome": 34, - "edge": 12, - "firefox": 32, - "safari": 9, - "node": 0.12, - "android": 5, - "ios": 9, - "opera": 21, - "electron": 0.2 + "chrome": "34", + "edge": "12", + "firefox": "32", + "safari": "9", + "node": "0.12", + "android": "5", + "ios": "9", + "opera": "21", + "electron": "0.2" }, "es6.number.is-nan": { - "chrome": 19, - "edge": 12, - "firefox": 15, - "safari": 9, - "node": 0.12, - "android": 4.1, - "ios": 9, - "electron": 0.2 + "chrome": "19", + "edge": "12", + "firefox": "15", + "safari": "9", + "node": "0.12", + "android": "4.1", + "ios": "9", + "electron": "0.2" }, "es6.number.epsilon": { - "chrome": 34, - "edge": 12, - "firefox": 25, - "safari": 9, - "node": 0.12, - "android": 5, - "ios": 9, - "opera": 21, - "electron": 0.2 + "chrome": "34", + "edge": "12", + "firefox": "25", + "safari": "9", + "node": "0.12", + "android": "5", + "ios": "9", + "opera": "21", + "electron": "0.2" }, "es6.number.min-safe-integer": { - "chrome": 34, - "edge": 12, - "firefox": 31, - "safari": 9, - "node": 0.12, - "android": 5, - "ios": 9, - "opera": 21, - "electron": 0.2 + "chrome": "34", + "edge": "12", + "firefox": "31", + "safari": "9", + "node": "0.12", + "android": "5", + "ios": "9", + "opera": "21", + "electron": "0.2" }, "es6.number.max-safe-integer": { - "chrome": 34, - "edge": 12, - "firefox": 31, - "safari": 9, - "node": 0.12, - "android": 5, - "ios": 9, - "opera": 21, - "electron": 0.2 + "chrome": "34", + "edge": "12", + "firefox": "31", + "safari": "9", + "node": "0.12", + "android": "5", + "ios": "9", + "opera": "21", + "electron": "0.2" }, "es6.math.acosh": { - "chrome": 38, - "edge": 12, - "firefox": 25, - "safari": 7.1, - "node": 0.12, - "android": 5.1, - "ios": 8, - "opera": 25, - "electron": 0.2 + "chrome": "38", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "0.12", + "android": "5.1", + "ios": "8", + "opera": "25", + "electron": "0.2" }, "es6.math.asinh": { - "chrome": 38, - "edge": 12, - "firefox": 25, - "safari": 7.1, - "node": 0.12, - "android": 5.1, - "ios": 8, - "opera": 25, - "electron": 0.2 + "chrome": "38", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "0.12", + "android": "5.1", + "ios": "8", + "opera": "25", + "electron": "0.2" }, "es6.math.atanh": { - "chrome": 38, - "edge": 12, - "firefox": 25, - "safari": 7.1, - "node": 0.12, - "android": 5.1, - "ios": 8, - "opera": 25, - "electron": 0.2 + "chrome": "38", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "0.12", + "android": "5.1", + "ios": "8", + "opera": "25", + "electron": "0.2" }, "es6.math.cbrt": { - "chrome": 38, - "edge": 12, - "firefox": 25, - "safari": 7.1, - "node": 0.12, - "android": 5.1, - "ios": 8, - "opera": 25, - "electron": 0.2 + "chrome": "38", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "0.12", + "android": "5.1", + "ios": "8", + "opera": "25", + "electron": "0.2" }, "es6.math.clz32": { - "chrome": 38, - "edge": 12, - "firefox": 31, - "safari": 9, - "node": 0.12, - "android": 5.1, - "ios": 9, - "opera": 25, - "electron": 0.2 + "chrome": "38", + "edge": "12", + "firefox": "31", + "safari": "9", + "node": "0.12", + "android": "5.1", + "ios": "9", + "opera": "25", + "electron": "0.2" }, "es6.math.cosh": { - "chrome": 38, - "edge": 12, - "firefox": 25, - "safari": 7.1, - "node": 0.12, - "android": 5.1, - "ios": 8, - "opera": 25, - "electron": 0.2 + "chrome": "38", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "0.12", + "android": "5.1", + "ios": "8", + "opera": "25", + "electron": "0.2" }, "es6.math.expm1": { - "chrome": 38, - "edge": 12, - "firefox": 25, - "safari": 7.1, - "node": 0.12, - "android": 5.1, - "ios": 8, - "opera": 25, - "electron": 0.2 + "chrome": "38", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "0.12", + "android": "5.1", + "ios": "8", + "opera": "25", + "electron": "0.2" }, "es6.math.fround": { - "chrome": 38, - "edge": 12, - "firefox": 26, - "safari": 7.1, - "node": 0.12, - "android": 5.1, - "ios": 8, - "opera": 25, - "electron": 0.2 + "chrome": "38", + "edge": "12", + "firefox": "26", + "safari": "7.1", + "node": "0.12", + "android": "5.1", + "ios": "8", + "opera": "25", + "electron": "0.2" }, "es6.math.hypot": { - "chrome": 38, - "edge": 12, - "firefox": 27, - "safari": 7.1, - "node": 0.12, - "android": 5.1, - "ios": 8, - "opera": 25, - "electron": 0.2 + "chrome": "38", + "edge": "12", + "firefox": "27", + "safari": "7.1", + "node": "0.12", + "android": "5.1", + "ios": "8", + "opera": "25", + "electron": "0.2" }, "es6.math.imul": { - "chrome": 30, - "edge": 12, - "firefox": 23, - "safari": 7, - "node": 0.12, - "android": 4.4, - "ios": 7, - "opera": 17, - "electron": 0.2 + "chrome": "30", + "edge": "12", + "firefox": "23", + "safari": "7", + "node": "0.12", + "android": "4.4", + "ios": "7", + "opera": "17", + "electron": "0.2" }, "es6.math.log1p": { - "chrome": 38, - "edge": 12, - "firefox": 25, - "safari": 7.1, - "node": 0.12, - "android": 5.1, - "ios": 8, - "opera": 25, - "electron": 0.2 + "chrome": "38", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "0.12", + "android": "5.1", + "ios": "8", + "opera": "25", + "electron": "0.2" }, "es6.math.log10": { - "chrome": 38, - "edge": 12, - "firefox": 25, - "safari": 7.1, - "node": 0.12, - "android": 5.1, - "ios": 8, - "opera": 25, - "electron": 0.2 + "chrome": "38", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "0.12", + "android": "5.1", + "ios": "8", + "opera": "25", + "electron": "0.2" }, "es6.math.log2": { - "chrome": 38, - "edge": 12, - "firefox": 25, - "safari": 7.1, - "node": 0.12, - "android": 5.1, - "ios": 8, - "opera": 25, - "electron": 0.2 + "chrome": "38", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "0.12", + "android": "5.1", + "ios": "8", + "opera": "25", + "electron": "0.2" }, "es6.math.sign": { - "chrome": 38, - "edge": 12, - "firefox": 25, - "safari": 9, - "node": 0.12, - "android": 5.1, - "ios": 9, - "opera": 25, - "electron": 0.2 + "chrome": "38", + "edge": "12", + "firefox": "25", + "safari": "9", + "node": "0.12", + "android": "5.1", + "ios": "9", + "opera": "25", + "electron": "0.2" }, "es6.math.sinh": { - "chrome": 38, - "edge": 12, - "firefox": 25, - "safari": 7.1, - "node": 0.12, - "android": 5.1, - "ios": 8, - "opera": 25, - "electron": 0.2 + "chrome": "38", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "0.12", + "android": "5.1", + "ios": "8", + "opera": "25", + "electron": "0.2" }, "es6.math.tanh": { - "chrome": 38, - "edge": 12, - "firefox": 25, - "safari": 7.1, - "node": 0.12, - "android": 5.1, - "ios": 8, - "opera": 25, - "electron": 0.2 + "chrome": "38", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "0.12", + "android": "5.1", + "ios": "8", + "opera": "25", + "electron": "0.2" }, "es6.math.trunc": { - "chrome": 38, - "edge": 12, - "firefox": 25, - "safari": 7.1, - "node": 0.12, - "android": 5.1, - "ios": 8, - "opera": 25, - "electron": 0.2 + "chrome": "38", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "0.12", + "android": "5.1", + "ios": "8", + "opera": "25", + "electron": "0.2" }, "es7.array.includes": { - "chrome": 47, - "edge": 14, - "firefox": 43, - "safari": 10, - "node": 6, - "ios": 10, - "opera": 34, - "electron": 0.36 + "chrome": "47", + "edge": "14", + "firefox": "43", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "34", + "electron": "0.36" }, "es7.object.values": { - "chrome": 54, - "edge": 14, - "firefox": 47, - "safari": 10.1, - "node": 7, - "ios": 10.3, - "opera": 41, - "electron": 1.5 + "chrome": "54", + "edge": "14", + "firefox": "47", + "safari": "10.1", + "node": "7", + "ios": "10.3", + "opera": "41", + "electron": "1.5" }, "es7.object.entries": { - "chrome": 54, - "edge": 14, - "firefox": 47, - "safari": 10.1, - "node": 7, - "ios": 10.3, - "opera": 41, - "electron": 1.5 + "chrome": "54", + "edge": "14", + "firefox": "47", + "safari": "10.1", + "node": "7", + "ios": "10.3", + "opera": "41", + "electron": "1.5" }, "es7.object.get-own-property-descriptors": { - "chrome": 54, - "edge": 15, - "firefox": 50, - "safari": 10.1, - "node": 7, - "ios": 10.3, - "opera": 41, - "electron": 1.5 + "chrome": "54", + "edge": "15", + "firefox": "50", + "safari": "10.1", + "node": "7", + "ios": "10.3", + "opera": "41", + "electron": "1.5" }, "es7.string.pad-start": { - "chrome": 57, - "edge": 15, - "firefox": 48, - "safari": 10, - "ios": 10, - "opera": 44 + "chrome": "57", + "edge": "15", + "firefox": "48", + "safari": "10", + "ios": "10", + "opera": "44", + "electron": "1.7" }, "es7.string.pad-end": { - "chrome": 57, - "edge": 15, - "firefox": 48, - "safari": 10, - "ios": 10, - "opera": 44 + "chrome": "57", + "edge": "15", + "firefox": "48", + "safari": "10", + "ios": "10", + "opera": "44", + "electron": "1.7" } } diff --git a/experimental/babel-preset-env/data/plugins.json b/experimental/babel-preset-env/data/plugins.json index ef9456b94d..bca57cae4e 100644 --- a/experimental/babel-preset-env/data/plugins.json +++ b/experimental/babel-preset-env/data/plugins.json @@ -1,231 +1,232 @@ { "check-es2015-constants": { - "chrome": 49, - "edge": 14, - "firefox": 51, - "safari": 10, - "node": 6, - "ios": 10, - "opera": 36, - "electron": 1 + "chrome": "49", + "edge": "14", + "firefox": "51", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" }, "transform-es2015-arrow-functions": { - "chrome": 47, - "edge": 13, - "firefox": 45, - "safari": 10, - "node": 6, - "ios": 10, - "opera": 34, - "electron": 0.36 + "chrome": "47", + "edge": "13", + "firefox": "45", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "34", + "electron": "0.36" }, "transform-es2015-block-scoped-functions": { - "chrome": 41, - "edge": 12, - "firefox": 46, - "safari": 10, - "node": 4, - "ie": 11, - "ios": 10, - "opera": 28, - "electron": 0.24 + "chrome": "41", + "edge": "12", + "firefox": "46", + "safari": "10", + "node": "4", + "ie": "11", + "ios": "10", + "opera": "28", + "electron": "0.24" }, "transform-es2015-block-scoping": { - "chrome": 49, - "edge": 14, - "firefox": 51, - "safari": 10, - "node": 6, - "ios": 10, - "opera": 36, - "electron": 1 + "chrome": "49", + "edge": "14", + "firefox": "51", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" }, "transform-es2015-classes": { - "chrome": 46, - "edge": 13, - "firefox": 45, - "safari": 10, - "node": 5, - "ios": 10, - "opera": 33, - "electron": 0.36 + "chrome": "46", + "edge": "13", + "firefox": "45", + "safari": "10", + "node": "5", + "ios": "10", + "opera": "33", + "electron": "0.36" }, "transform-es2015-computed-properties": { - "chrome": 44, - "edge": 12, - "firefox": 34, - "safari": 7.1, - "node": 4, - "ios": 8, - "opera": 31, - "electron": 0.31 + "chrome": "44", + "edge": "12", + "firefox": "34", + "safari": "7.1", + "node": "4", + "ios": "8", + "opera": "31", + "electron": "0.31" }, "transform-es2015-destructuring": { - "chrome": 51, - "edge": 15, - "firefox": 53, - "safari": 10, - "node": 6.5, - "ios": 10, - "opera": 38, - "electron": 1.2 + "chrome": "51", + "edge": "15", + "firefox": "53", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" }, "transform-es2015-duplicate-keys": { - "chrome": 42, - "edge": 12, - "firefox": 34, - "safari": 9, - "node": 4, - "ios": 9, - "opera": 29, - "electron": 0.27 + "chrome": "42", + "edge": "12", + "firefox": "34", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "29", + "electron": "0.27" }, "transform-es2015-for-of": { - "chrome": 51, - "edge": 15, - "firefox": 53, - "safari": 10, - "node": 6.5, - "ios": 10, - "opera": 38, - "electron": 1.2 + "chrome": "51", + "edge": "15", + "firefox": "53", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" }, "transform-es2015-function-name": { - "chrome": 51, - "firefox": 53, - "safari": 10, - "node": 6.5, - "ios": 10, - "opera": 38, - "electron": 1.2 + "chrome": "51", + "firefox": "53", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" }, "transform-es2015-literals": { - "chrome": 44, - "edge": 12, - "firefox": 53, - "safari": 9, - "node": 4, - "ios": 9, - "opera": 31, - "electron": 0.31 + "chrome": "44", + "edge": "12", + "firefox": "53", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "31", + "electron": "0.31" }, "transform-es2015-object-super": { - "chrome": 46, - "edge": 13, - "firefox": 45, - "safari": 10, - "node": 5, - "ios": 10, - "opera": 33, - "electron": 0.36 + "chrome": "46", + "edge": "13", + "firefox": "45", + "safari": "10", + "node": "5", + "ios": "10", + "opera": "33", + "electron": "0.36" }, "transform-es2015-parameters": { - "chrome": 49, - "edge": 14, - "firefox": 53, - "safari": 10, - "node": 6, - "ios": 10, - "opera": 36, - "electron": 1 + "chrome": "49", + "edge": "14", + "firefox": "53", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" }, "transform-es2015-shorthand-properties": { - "chrome": 43, - "edge": 12, - "firefox": 33, - "safari": 9, - "node": 4, - "ios": 9, - "opera": 30, - "electron": 0.29 + "chrome": "43", + "edge": "12", + "firefox": "33", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "30", + "electron": "0.29" }, "transform-es2015-spread": { - "chrome": 46, - "edge": 13, - "firefox": 36, - "safari": 10, - "node": 5, - "ios": 10, - "opera": 33, - "electron": 0.36 + "chrome": "46", + "edge": "13", + "firefox": "36", + "safari": "10", + "node": "5", + "ios": "10", + "opera": "33", + "electron": "0.36" }, "transform-es2015-sticky-regex": { - "chrome": 49, - "edge": 13, - "firefox": 3, - "safari": 10, - "node": 6, - "ios": 10, - "opera": 36, - "electron": 1 + "chrome": "49", + "edge": "13", + "firefox": "3", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" }, "transform-es2015-template-literals": { - "chrome": 41, - "edge": 13, - "firefox": 34, - "safari": 9, - "node": 4, - "ios": 9, - "opera": 28, - "electron": 0.24 + "chrome": "41", + "edge": "13", + "firefox": "34", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "28", + "electron": "0.24" }, "transform-es2015-typeof-symbol": { - "chrome": 38, - "edge": 12, - "firefox": 36, - "safari": 9, - "node": 0.12, - "android": 5.1, - "ios": 9, - "opera": 25, - "electron": 0.2 + "chrome": "38", + "edge": "12", + "firefox": "36", + "safari": "9", + "node": "0.12", + "android": "5.1", + "ios": "9", + "opera": "25", + "electron": "0.2" }, "transform-es2015-unicode-regex": { - "chrome": 50, - "edge": 13, - "firefox": 46, - "safari": 10, - "node": 6, - "ios": 10, - "opera": 37, - "electron": 1.1 + "chrome": "50", + "edge": "13", + "firefox": "46", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "37", + "electron": "1.1" }, "transform-regenerator": { - "chrome": 50, - "edge": 13, - "firefox": 53, - "safari": 10, - "node": 6, - "ios": 10, - "opera": 37, - "electron": 1.1 + "chrome": "50", + "edge": "13", + "firefox": "53", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "37", + "electron": "1.1" }, "transform-exponentiation-operator": { - "chrome": 52, - "edge": 14, - "firefox": 52, - "safari": 10.1, - "node": 7, - "ios": 10.3, - "opera": 39, - "electron": 1.3 + "chrome": "52", + "edge": "14", + "firefox": "52", + "safari": "10.1", + "node": "7", + "ios": "10.3", + "opera": "39", + "electron": "1.3" }, "transform-async-to-generator": { - "chrome": 55, - "edge": 15, - "firefox": 52, - "safari": 10.1, - "node": 7.6, - "ios": 10.3, - "opera": 42, - "electron": 1.6 + "chrome": "55", + "edge": "15", + "firefox": "52", + "safari": "10.1", + "node": "7.6", + "ios": "10.3", + "opera": "42", + "electron": "1.6" }, "syntax-trailing-function-commas": { - "chrome": 58, - "edge": 14, - "firefox": 52, - "safari": 10, - "ios": 10, - "opera": 45 + "chrome": "58", + "edge": "14", + "firefox": "52", + "safari": "10", + "ios": "10", + "opera": "45", + "electron": "1.7" } } diff --git a/experimental/babel-preset-env/package.json b/experimental/babel-preset-env/package.json index 72dc6611ec..9821e5f672 100644 --- a/experimental/babel-preset-env/package.json +++ b/experimental/babel-preset-env/package.json @@ -50,7 +50,8 @@ "babel-plugin-transform-exponentiation-operator": "^6.22.0", "babel-plugin-transform-regenerator": "^6.22.0", "browserslist": "^2.1.2", - "invariant": "^2.2.2" + "invariant": "^2.2.2", + "semver": "^5.3.0" }, "devDependencies": { "babel-cli": "^6.23.0", diff --git a/experimental/babel-preset-env/scripts/build-data.js b/experimental/babel-preset-env/scripts/build-data.js index 94ce128dc3..4f4be72cd1 100644 --- a/experimental/babel-preset-env/scripts/build-data.js +++ b/experimental/babel-preset-env/scripts/build-data.js @@ -211,20 +211,22 @@ const generateData = (environments, features) => { environments.forEach((env) => { const version = getLowestImplementedVersion(options, env); if (version !== null) { - plugin[env] = version; + plugin[env] = version.toString(); } }); - // add opera if (plugin.chrome) { + // add opera if (plugin.chrome >= 28) { - plugin.opera = plugin.chrome - 13; + plugin.opera = (plugin.chrome - 13).toString(); } else if (plugin.chrome === 5) { - plugin.opera = 12; + plugin.opera = "12"; } + + // add electron const electronVersion = chromiumToElectron(plugin.chrome); if (electronVersion) { - plugin.electron = electronVersion; + plugin.electron = electronVersion.toString(); } } diff --git a/experimental/babel-preset-env/src/index.js b/experimental/babel-preset-env/src/index.js index fe68ea2339..b827a766f2 100644 --- a/experimental/babel-preset-env/src/index.js +++ b/experimental/babel-preset-env/src/index.js @@ -1,24 +1,25 @@ -import browserslist from "browserslist"; +import semver from "semver"; import builtInsList from "../data/built-ins.json"; import { defaultWebIncludes } from "./default-includes"; import moduleTransformations from "./module-transformations"; import normalizeOptions from "./normalize-options.js"; import pluginList from "../data/plugins.json"; import transformPolyfillRequirePlugin from "./transform-polyfill-require-plugin"; +import getTargets from "./targets-parser"; +import { _extends, prettifyTargets, prettifyVersion, semverify } from "./utils"; /** * Determine if a transformation is required + * + * NOTE: This assumes `supportedEnvironments` has already been parsed by `getTargets` + * * @param {Object} supportedEnvironments An Object containing environment keys and the lowest * supported version as a value * @param {Object} plugin An Object containing environment keys and the lowest * version the feature was implemented in as a value - * @return {Boolean} Whether or not the transformation is required + * @return {Boolean} Whether or not the transformation is required */ export const isPluginRequired = (supportedEnvironments, plugin) => { - if (supportedEnvironments.browsers) { - supportedEnvironments = getTargets(supportedEnvironments); - } - const targetEnvironments = Object.keys(supportedEnvironments); if (targetEnvironments.length === 0) { return true; } @@ -31,90 +32,20 @@ export const isPluginRequired = (supportedEnvironments, plugin) => { const lowestImplementedVersion = plugin[environment]; const lowestTargetedVersion = supportedEnvironments[environment]; - if (typeof lowestTargetedVersion === "string") { - throw new Error(`Target version must be a number, - '${lowestTargetedVersion}' was given for '${environment}'`); + if (!semver.valid(lowestTargetedVersion)) { + throw new Error( + // eslint-disable-next-line max-len + `Invalid version passed for target "${environment}": "${lowestTargetedVersion}". Versions must be in semver format (major.minor.patch)`, + ); } - return lowestTargetedVersion < lowestImplementedVersion; + return semver.gt( + semverify(lowestImplementedVersion), + lowestTargetedVersion, + ); }); - return isRequiredForEnvironments.length > 0 ? true : false; -}; - -const isBrowsersQueryValid = (browsers) => { - return typeof browsers === "string" || Array.isArray(browsers); -}; - -const browserNameMap = { - android: "android", - chrome: "chrome", - edge: "edge", - firefox: "firefox", - ie: "ie", - ios_saf: "ios", - safari: "safari" -}; - -const getLowestVersions = (browsers) => { - return browsers.reduce((all, browser) => { - const [browserName, browserVersion] = browser.split(" "); - const normalizedBrowserName = browserNameMap[browserName]; - const parsedBrowserVersion = parseInt(browserVersion); - if (normalizedBrowserName && !isNaN(parsedBrowserVersion)) { - all[normalizedBrowserName] = Math.min(all[normalizedBrowserName] || Infinity, parsedBrowserVersion); - } - return all; - }, {}); -}; - -const mergeBrowsers = (fromQuery, fromTarget) => { - return Object.keys(fromTarget).reduce((queryObj, targKey) => { - if (targKey !== "browsers") { - queryObj[targKey] = fromTarget[targKey]; - } - return queryObj; - }, fromQuery); -}; - -export const getCurrentNodeVersion = () => { - return parseFloat(process.versions.node); -}; - -const _extends = Object.assign || function (target) { - for (let i = 1; i < arguments.length; i++) { - const source = arguments[i]; - for (const key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - return target; -}; - - -export const getTargets = (targets = {}) => { - const targetOpts = _extends({}, targets); - - if (targetOpts.node === true || targetOpts.node === "current") { - targetOpts.node = getCurrentNodeVersion(); - } - - if (typeof targetOpts.electron === "string") { - targetOpts.electron = parseFloat(targetOpts.electron); - } - - if (targetOpts.hasOwnProperty("uglify") && !targetOpts.uglify) { - delete targetOpts.uglify; - } - - const browserOpts = targetOpts.browsers; - if (isBrowsersQueryValid(browserOpts)) { - const queryBrowsers = getLowestVersions(browserslist(browserOpts)); - return mergeBrowsers(queryBrowsers, targetOpts); - } - return targetOpts; + return isRequiredForEnvironments.length > 0; }; let hasBeenLogged = false; @@ -123,8 +54,8 @@ const logPlugin = (plugin, targets, list) => { const envList = list[plugin] || {}; const filteredList = Object.keys(targets) .reduce((a, b) => { - if (!envList[b] || targets[b] < envList[b]) { - a[b] = targets[b]; + if (!envList[b] || semver.lt(targets[b], semverify(envList[b]))) { + a[b] = prettifyVersion(targets[b]); } return a; }, {}); @@ -191,7 +122,7 @@ export default function buildPreset(context, opts = {}) { hasBeenLogged = true; console.log("babel-preset-env: `DEBUG` option"); console.log("\nUsing targets:"); - console.log(JSON.stringify(targets, null, 2)); + console.log(JSON.stringify(prettifyTargets(targets), null, 2)); console.log(`\nModules transform: ${moduleType}`); console.log("\nUsing plugins:"); transformations.forEach((transform) => { diff --git a/experimental/babel-preset-env/src/targets-parser.js b/experimental/babel-preset-env/src/targets-parser.js new file mode 100644 index 0000000000..3a1096a1d4 --- /dev/null +++ b/experimental/babel-preset-env/src/targets-parser.js @@ -0,0 +1,133 @@ +import browserslist from "browserslist"; +import semver from "semver"; +import { semverify } from "./utils"; + +const browserNameMap = { + android: "android", + chrome: "chrome", + edge: "edge", + firefox: "firefox", + ie: "ie", + ios_saf: "ios", + safari: "safari", +}; + +const isBrowsersQueryValid = (browsers) => + typeof browsers === "string" || Array.isArray(browsers); + +const semverMin = (first, second) => { + return first && semver.lt(first, second) ? first : second; +}; + +const getLowestVersions = (browsers) => { + return browsers.reduce( + (all, browser) => { + const [browserName, browserVersion] = browser.split(" "); + const normalizedBrowserName = browserNameMap[browserName]; + + if (!normalizedBrowserName) { + return all; + } + + try { + // Browser version can return as "10.0-10.2" + const splitVersion = browserVersion.split("-")[0]; + const parsedBrowserVersion = semverify(splitVersion); + + all[normalizedBrowserName] = semverMin( + all[normalizedBrowserName], + parsedBrowserVersion, + ); + } catch (e) {} + + return all; + }, + {}, + ); +}; + +const outputDecimalWarning = (decimalTargets) => { + if (!decimalTargets || !decimalTargets.length) { + return; + } + + console.log("Warning, the following targets are using a decimal version:"); + console.log(""); + decimalTargets.forEach(({ target, value }) => + console.log(` ${target}: ${value}`)); + console.log(""); + console.log( + "We recommend using a string for minor/patch versions to avoid numbers like 6.10", + ); + console.log("getting parsed as 6.1, which can lead to unexpected behavior."); + console.log(""); +}; + +const targetParserMap = { + __default: (target, value) => [target, semverify(value)], + + // Parse `node: true` and `node: "current"` to version + node: (target, value) => { + const parsed = value === true || value === "current" + ? process.versions.node + : semverify(value); + + return [target, parsed]; + }, + + // Only valid value for Uglify is `true` + uglify: (target, value) => [target, value === true], +}; + +const getTargets = (targets = {}) => { + let targetOpts = {}; + + // Parse browsers target via browserslist + if (isBrowsersQueryValid(targets.browsers)) { + targetOpts = getLowestVersions(browserslist(targets.browsers)); + } + + // Parse remaining targets + const parsed = Object.keys(targets).reduce( + (results, target) => { + if (target !== "browsers") { + const value = targets[target]; + + // Warn when specifying minor/patch as a decimal + if (typeof value === "number" && value % 1 !== 0) { + results.decimalWarnings.push({ target, value }); + } + + // Check if we have a target parser? + const parser = targetParserMap[target] || targetParserMap.__default; + const [parsedTarget, parsedValue] = parser(target, value); + + if (parsedValue) { + // Merge (lowest wins) + if (typeof parsedValue === "string") { + results.targets[parsedTarget] = semverMin( + results.targets[parsedTarget], + parsedValue, + ); + } else { + // We can remove this block if/when we replace Uglify target + // with top level option + results.targets[parsedTarget] = parsedValue; + } + } + } + + return results; + }, + { + targets: targetOpts, + decimalWarnings: [], + }, + ); + + outputDecimalWarning(parsed.decimalWarnings); + + return parsed.targets; +}; + +export default getTargets; diff --git a/experimental/babel-preset-env/src/utils.js b/experimental/babel-preset-env/src/utils.js new file mode 100644 index 0000000000..561d74f298 --- /dev/null +++ b/experimental/babel-preset-env/src/utils.js @@ -0,0 +1,67 @@ +// @flow +import semver from "semver"; + +export const _extends = Object.assign || + function(target) { + for (let i = 1; i < arguments.length; i++) { + const source = arguments[i]; + for (const key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + }; + +// Convert version to a semver value. +// 2.5 -> 2.5.0; 1 -> 1.0.0; +export const semverify = (version) => { + if (typeof version === "string" && semver.valid(version)) { + return version; + } + + const split = version.toString().split("."); + + while (split.length < 3) { + split.push(0); + } + + return split.join("."); +}; + +export const prettifyVersion = (version) => { + if (typeof version !== "string") { + return version; + } + + const parts = [semver.major(version)]; + const minor = semver.minor(version); + const patch = semver.patch(version); + + if (minor || patch) { + parts.push(minor); + } + + if (patch) { + parts.push(patch); + } + + return parts.join("."); +}; + +export const prettifyTargets = (targets = {}) => { + return Object.keys(targets).reduce( + (results, target) => { + let value = targets[target]; + + if (typeof value === "string") { + value = prettifyVersion(value); + } + + results[target] = value; + return results; + }, + {}, + ); +}; 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 3e79295670..4c41227adf 100644 --- a/experimental/babel-preset-env/test/debug-fixtures/android/stdout.txt +++ b/experimental/babel-preset-env/test/debug-fixtures/android/stdout.txt @@ -2,120 +2,120 @@ babel-preset-env: `DEBUG` option Using targets: { - "android": 4 + "android": "4" } Modules transform: commonjs Using plugins: - check-es2015-constants {"android":4} - transform-es2015-arrow-functions {"android":4} - transform-es2015-block-scoped-functions {"android":4} - transform-es2015-block-scoping {"android":4} - transform-es2015-classes {"android":4} - transform-es2015-computed-properties {"android":4} - transform-es2015-destructuring {"android":4} - transform-es2015-duplicate-keys {"android":4} - transform-es2015-for-of {"android":4} - transform-es2015-function-name {"android":4} - transform-es2015-literals {"android":4} - transform-es2015-object-super {"android":4} - transform-es2015-parameters {"android":4} - transform-es2015-shorthand-properties {"android":4} - transform-es2015-spread {"android":4} - transform-es2015-sticky-regex {"android":4} - transform-es2015-template-literals {"android":4} - transform-es2015-typeof-symbol {"android":4} - transform-es2015-unicode-regex {"android":4} - transform-regenerator {"android":4} - transform-exponentiation-operator {"android":4} - transform-async-to-generator {"android":4} - syntax-trailing-function-commas {"android":4} + check-es2015-constants {"android":"4"} + transform-es2015-arrow-functions {"android":"4"} + transform-es2015-block-scoped-functions {"android":"4"} + transform-es2015-block-scoping {"android":"4"} + transform-es2015-classes {"android":"4"} + transform-es2015-computed-properties {"android":"4"} + transform-es2015-destructuring {"android":"4"} + transform-es2015-duplicate-keys {"android":"4"} + transform-es2015-for-of {"android":"4"} + transform-es2015-function-name {"android":"4"} + transform-es2015-literals {"android":"4"} + transform-es2015-object-super {"android":"4"} + transform-es2015-parameters {"android":"4"} + transform-es2015-shorthand-properties {"android":"4"} + transform-es2015-spread {"android":"4"} + transform-es2015-sticky-regex {"android":"4"} + transform-es2015-template-literals {"android":"4"} + transform-es2015-typeof-symbol {"android":"4"} + transform-es2015-unicode-regex {"android":"4"} + transform-regenerator {"android":"4"} + transform-exponentiation-operator {"android":"4"} + transform-async-to-generator {"android":"4"} + syntax-trailing-function-commas {"android":"4"} Using polyfills: - es6.typed.array-buffer {"android":4} - es6.typed.int8-array {"android":4} - es6.typed.uint8-array {"android":4} - es6.typed.uint8-clamped-array {"android":4} - es6.typed.int16-array {"android":4} - es6.typed.uint16-array {"android":4} - es6.typed.int32-array {"android":4} - es6.typed.uint32-array {"android":4} - es6.typed.float32-array {"android":4} - es6.typed.float64-array {"android":4} - es6.map {"android":4} - es6.set {"android":4} - es6.weak-map {"android":4} - es6.weak-set {"android":4} - es6.reflect.apply {"android":4} - es6.reflect.construct {"android":4} - es6.reflect.define-property {"android":4} - es6.reflect.delete-property {"android":4} - es6.reflect.get {"android":4} - es6.reflect.get-own-property-descriptor {"android":4} - es6.reflect.get-prototype-of {"android":4} - es6.reflect.has {"android":4} - es6.reflect.is-extensible {"android":4} - es6.reflect.own-keys {"android":4} - es6.reflect.prevent-extensions {"android":4} - es6.reflect.set {"android":4} - es6.reflect.set-prototype-of {"android":4} - es6.promise {"android":4} - es6.symbol {"android":4} - es6.object.assign {"android":4} - es6.object.is {"android":4} - es6.object.set-prototype-of {"android":4} - es6.function.name {"android":4} - es6.string.raw {"android":4} - es6.string.from-code-point {"android":4} - es6.string.code-point-at {"android":4} - es6.string.repeat {"android":4} - es6.string.starts-with {"android":4} - es6.string.ends-with {"android":4} - es6.string.includes {"android":4} - es6.regexp.flags {"android":4} - es6.regexp.match {"android":4} - es6.regexp.replace {"android":4} - es6.regexp.split {"android":4} - es6.regexp.search {"android":4} - es6.array.from {"android":4} - es6.array.of {"android":4} - es6.array.copy-within {"android":4} - es6.array.find {"android":4} - es6.array.find-index {"android":4} - es6.array.fill {"android":4} - es6.array.iterator {"android":4} - es6.number.is-finite {"android":4} - es6.number.is-integer {"android":4} - es6.number.is-safe-integer {"android":4} - es6.number.is-nan {"android":4} - es6.number.epsilon {"android":4} - es6.number.min-safe-integer {"android":4} - es6.number.max-safe-integer {"android":4} - es6.math.acosh {"android":4} - es6.math.asinh {"android":4} - es6.math.atanh {"android":4} - es6.math.cbrt {"android":4} - es6.math.clz32 {"android":4} - es6.math.cosh {"android":4} - es6.math.expm1 {"android":4} - es6.math.fround {"android":4} - es6.math.hypot {"android":4} - es6.math.imul {"android":4} - es6.math.log1p {"android":4} - es6.math.log10 {"android":4} - es6.math.log2 {"android":4} - es6.math.sign {"android":4} - es6.math.sinh {"android":4} - es6.math.tanh {"android":4} - es6.math.trunc {"android":4} - es7.array.includes {"android":4} - es7.object.values {"android":4} - es7.object.entries {"android":4} - es7.object.get-own-property-descriptors {"android":4} - es7.string.pad-start {"android":4} - es7.string.pad-end {"android":4} - web.timers {"android":4} - web.immediate {"android":4} - web.dom.iterable {"android":4} + es6.typed.array-buffer {"android":"4"} + es6.typed.int8-array {"android":"4"} + es6.typed.uint8-array {"android":"4"} + es6.typed.uint8-clamped-array {"android":"4"} + es6.typed.int16-array {"android":"4"} + es6.typed.uint16-array {"android":"4"} + es6.typed.int32-array {"android":"4"} + es6.typed.uint32-array {"android":"4"} + es6.typed.float32-array {"android":"4"} + es6.typed.float64-array {"android":"4"} + es6.map {"android":"4"} + es6.set {"android":"4"} + es6.weak-map {"android":"4"} + es6.weak-set {"android":"4"} + es6.reflect.apply {"android":"4"} + es6.reflect.construct {"android":"4"} + es6.reflect.define-property {"android":"4"} + es6.reflect.delete-property {"android":"4"} + es6.reflect.get {"android":"4"} + es6.reflect.get-own-property-descriptor {"android":"4"} + es6.reflect.get-prototype-of {"android":"4"} + es6.reflect.has {"android":"4"} + es6.reflect.is-extensible {"android":"4"} + es6.reflect.own-keys {"android":"4"} + es6.reflect.prevent-extensions {"android":"4"} + es6.reflect.set {"android":"4"} + es6.reflect.set-prototype-of {"android":"4"} + es6.promise {"android":"4"} + es6.symbol {"android":"4"} + es6.object.assign {"android":"4"} + es6.object.is {"android":"4"} + es6.object.set-prototype-of {"android":"4"} + es6.function.name {"android":"4"} + es6.string.raw {"android":"4"} + es6.string.from-code-point {"android":"4"} + es6.string.code-point-at {"android":"4"} + es6.string.repeat {"android":"4"} + es6.string.starts-with {"android":"4"} + es6.string.ends-with {"android":"4"} + es6.string.includes {"android":"4"} + es6.regexp.flags {"android":"4"} + es6.regexp.match {"android":"4"} + es6.regexp.replace {"android":"4"} + es6.regexp.split {"android":"4"} + es6.regexp.search {"android":"4"} + es6.array.from {"android":"4"} + es6.array.of {"android":"4"} + es6.array.copy-within {"android":"4"} + es6.array.find {"android":"4"} + es6.array.find-index {"android":"4"} + es6.array.fill {"android":"4"} + es6.array.iterator {"android":"4"} + es6.number.is-finite {"android":"4"} + es6.number.is-integer {"android":"4"} + es6.number.is-safe-integer {"android":"4"} + es6.number.is-nan {"android":"4"} + es6.number.epsilon {"android":"4"} + es6.number.min-safe-integer {"android":"4"} + es6.number.max-safe-integer {"android":"4"} + es6.math.acosh {"android":"4"} + es6.math.asinh {"android":"4"} + es6.math.atanh {"android":"4"} + es6.math.cbrt {"android":"4"} + es6.math.clz32 {"android":"4"} + es6.math.cosh {"android":"4"} + es6.math.expm1 {"android":"4"} + es6.math.fround {"android":"4"} + es6.math.hypot {"android":"4"} + es6.math.imul {"android":"4"} + es6.math.log1p {"android":"4"} + es6.math.log10 {"android":"4"} + es6.math.log2 {"android":"4"} + es6.math.sign {"android":"4"} + es6.math.sinh {"android":"4"} + es6.math.tanh {"android":"4"} + es6.math.trunc {"android":"4"} + es7.array.includes {"android":"4"} + es7.object.values {"android":"4"} + es7.object.entries {"android":"4"} + es7.object.get-own-property-descriptors {"android":"4"} + es7.string.pad-start {"android":"4"} + es7.string.pad-end {"android":"4"} + web.timers {"android":"4"} + web.immediate {"android":"4"} + web.dom.iterable {"android":"4"} 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 44f3707bd2..4297323234 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 @@ -2,7 +2,7 @@ babel-preset-env: `DEBUG` option Using targets: { - "chrome": 55, + "chrome": "55", "uglify": true } @@ -31,12 +31,12 @@ Using plugins: transform-regenerator {"uglify":true} transform-exponentiation-operator {"uglify":true} transform-async-to-generator {"uglify":true} - syntax-trailing-function-commas {"chrome":55,"uglify":true} + syntax-trailing-function-commas {"chrome":"55","uglify":true} Using polyfills: - es7.string.pad-start {"chrome":55} - es7.string.pad-end {"chrome":55} - web.timers {"chrome":55} - web.immediate {"chrome":55} - web.dom.iterable {"chrome":55} + es7.string.pad-start {"chrome":"55"} + es7.string.pad-end {"chrome":"55"} + web.timers {"chrome":"55"} + web.immediate {"chrome":"55"} + web.dom.iterable {"chrome":"55"} src/in.js -> lib/in.js \ No newline at end of file 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 1779d879f0..97ffb88348 100644 --- a/experimental/babel-preset-env/test/debug-fixtures/builtins/stdout.txt +++ b/experimental/babel-preset-env/test/debug-fixtures/builtins/stdout.txt @@ -2,122 +2,122 @@ babel-preset-env: `DEBUG` option Using targets: { - "chrome": 54, - "ie": 10, - "node": 6 + "chrome": "54", + "ie": "10", + "node": "6" } Modules transform: commonjs Using plugins: - check-es2015-constants {"ie":10} - transform-es2015-arrow-functions {"ie":10} - transform-es2015-block-scoped-functions {"ie":10} - transform-es2015-block-scoping {"ie":10} - transform-es2015-classes {"ie":10} - transform-es2015-computed-properties {"ie":10} - transform-es2015-destructuring {"ie":10,"node":6} - transform-es2015-duplicate-keys {"ie":10} - transform-es2015-for-of {"ie":10,"node":6} - transform-es2015-function-name {"ie":10,"node":6} - transform-es2015-literals {"ie":10} - transform-es2015-object-super {"ie":10} - transform-es2015-parameters {"ie":10} - transform-es2015-shorthand-properties {"ie":10} - transform-es2015-spread {"ie":10} - transform-es2015-sticky-regex {"ie":10} - transform-es2015-template-literals {"ie":10} - transform-es2015-typeof-symbol {"ie":10} - transform-es2015-unicode-regex {"ie":10} - transform-regenerator {"ie":10} - transform-exponentiation-operator {"ie":10,"node":6} - transform-async-to-generator {"chrome":54,"ie":10,"node":6} - syntax-trailing-function-commas {"chrome":54,"ie":10,"node":6} + check-es2015-constants {"ie":"10"} + transform-es2015-arrow-functions {"ie":"10"} + transform-es2015-block-scoped-functions {"ie":"10"} + transform-es2015-block-scoping {"ie":"10"} + transform-es2015-classes {"ie":"10"} + transform-es2015-computed-properties {"ie":"10"} + transform-es2015-destructuring {"ie":"10","node":"6"} + transform-es2015-duplicate-keys {"ie":"10"} + transform-es2015-for-of {"ie":"10","node":"6"} + transform-es2015-function-name {"ie":"10","node":"6"} + transform-es2015-literals {"ie":"10"} + transform-es2015-object-super {"ie":"10"} + transform-es2015-parameters {"ie":"10"} + transform-es2015-shorthand-properties {"ie":"10"} + transform-es2015-spread {"ie":"10"} + transform-es2015-sticky-regex {"ie":"10"} + transform-es2015-template-literals {"ie":"10"} + transform-es2015-typeof-symbol {"ie":"10"} + transform-es2015-unicode-regex {"ie":"10"} + transform-regenerator {"ie":"10"} + transform-exponentiation-operator {"ie":"10","node":"6"} + transform-async-to-generator {"chrome":"54","ie":"10","node":"6"} + syntax-trailing-function-commas {"chrome":"54","ie":"10","node":"6"} Using polyfills: - es6.typed.array-buffer {"ie":10,"node":6} - es6.typed.int8-array {"ie":10,"node":6} - es6.typed.uint8-array {"ie":10,"node":6} - es6.typed.uint8-clamped-array {"ie":10,"node":6} - es6.typed.int16-array {"ie":10,"node":6} - es6.typed.uint16-array {"ie":10,"node":6} - es6.typed.int32-array {"ie":10,"node":6} - es6.typed.uint32-array {"ie":10,"node":6} - es6.typed.float32-array {"ie":10,"node":6} - es6.typed.float64-array {"ie":10,"node":6} - es6.map {"ie":10,"node":6} - 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} - 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} - es6.object.is {"ie":10} - es6.object.set-prototype-of {"ie":10} - es6.function.name {"ie":10,"node":6} - es6.string.raw {"ie":10} - es6.string.from-code-point {"ie":10} - es6.string.code-point-at {"ie":10} - es6.string.repeat {"ie":10} - es6.string.starts-with {"ie":10} - es6.string.ends-with {"ie":10} - es6.string.includes {"ie":10} - es6.regexp.flags {"ie":10} - es6.regexp.match {"ie":10} - es6.regexp.replace {"ie":10} - es6.regexp.split {"ie":10} - es6.regexp.search {"ie":10} - es6.array.from {"ie":10,"node":6} - es6.array.of {"ie":10} - es6.array.copy-within {"ie":10} - es6.array.find {"ie":10} - es6.array.find-index {"ie":10} - es6.array.fill {"ie":10} - es6.array.iterator {"ie":10} - es6.number.is-finite {"ie":10} - es6.number.is-integer {"ie":10} - es6.number.is-safe-integer {"ie":10} - es6.number.is-nan {"ie":10} - es6.number.epsilon {"ie":10} - es6.number.min-safe-integer {"ie":10} - es6.number.max-safe-integer {"ie":10} - es6.math.acosh {"ie":10} - es6.math.asinh {"ie":10} - es6.math.atanh {"ie":10} - es6.math.cbrt {"ie":10} - es6.math.clz32 {"ie":10} - es6.math.cosh {"ie":10} - es6.math.expm1 {"ie":10} - es6.math.fround {"ie":10} - es6.math.hypot {"ie":10} - es6.math.imul {"ie":10} - es6.math.log1p {"ie":10} - es6.math.log10 {"ie":10} - es6.math.log2 {"ie":10} - es6.math.sign {"ie":10} - es6.math.sinh {"ie":10} - es6.math.tanh {"ie":10} - es6.math.trunc {"ie":10} - 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} - es7.string.pad-start {"chrome":54,"ie":10,"node":6} - es7.string.pad-end {"chrome":54,"ie":10,"node":6} - 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} + es6.typed.array-buffer {"ie":"10","node":"6"} + es6.typed.int8-array {"ie":"10","node":"6"} + es6.typed.uint8-array {"ie":"10","node":"6"} + es6.typed.uint8-clamped-array {"ie":"10","node":"6"} + es6.typed.int16-array {"ie":"10","node":"6"} + es6.typed.uint16-array {"ie":"10","node":"6"} + es6.typed.int32-array {"ie":"10","node":"6"} + es6.typed.uint32-array {"ie":"10","node":"6"} + es6.typed.float32-array {"ie":"10","node":"6"} + es6.typed.float64-array {"ie":"10","node":"6"} + es6.map {"ie":"10","node":"6"} + 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"} + 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"} + es6.object.is {"ie":"10"} + es6.object.set-prototype-of {"ie":"10"} + es6.function.name {"ie":"10","node":"6"} + es6.string.raw {"ie":"10"} + es6.string.from-code-point {"ie":"10"} + es6.string.code-point-at {"ie":"10"} + es6.string.repeat {"ie":"10"} + es6.string.starts-with {"ie":"10"} + es6.string.ends-with {"ie":"10"} + es6.string.includes {"ie":"10"} + es6.regexp.flags {"ie":"10"} + es6.regexp.match {"ie":"10"} + es6.regexp.replace {"ie":"10"} + es6.regexp.split {"ie":"10"} + es6.regexp.search {"ie":"10"} + es6.array.from {"ie":"10","node":"6"} + es6.array.of {"ie":"10"} + es6.array.copy-within {"ie":"10"} + es6.array.find {"ie":"10"} + es6.array.find-index {"ie":"10"} + es6.array.fill {"ie":"10"} + es6.array.iterator {"ie":"10"} + es6.number.is-finite {"ie":"10"} + es6.number.is-integer {"ie":"10"} + es6.number.is-safe-integer {"ie":"10"} + es6.number.is-nan {"ie":"10"} + es6.number.epsilon {"ie":"10"} + es6.number.min-safe-integer {"ie":"10"} + es6.number.max-safe-integer {"ie":"10"} + es6.math.acosh {"ie":"10"} + es6.math.asinh {"ie":"10"} + es6.math.atanh {"ie":"10"} + es6.math.cbrt {"ie":"10"} + es6.math.clz32 {"ie":"10"} + es6.math.cosh {"ie":"10"} + es6.math.expm1 {"ie":"10"} + es6.math.fround {"ie":"10"} + es6.math.hypot {"ie":"10"} + es6.math.imul {"ie":"10"} + es6.math.log1p {"ie":"10"} + es6.math.log10 {"ie":"10"} + es6.math.log2 {"ie":"10"} + es6.math.sign {"ie":"10"} + es6.math.sinh {"ie":"10"} + es6.math.tanh {"ie":"10"} + es6.math.trunc {"ie":"10"} + 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"} + es7.string.pad-start {"chrome":"54","ie":"10","node":"6"} + es7.string.pad-end {"chrome":"54","ie":"10","node":"6"} + 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 diff --git a/experimental/babel-preset-env/test/debug-fixtures/electron/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/electron/stdout.txt index c1128e454d..1d3da440a5 100644 --- a/experimental/babel-preset-env/test/debug-fixtures/electron/stdout.txt +++ b/experimental/babel-preset-env/test/debug-fixtures/electron/stdout.txt @@ -1,69 +1,77 @@ +Warning, the following targets are using a decimal version: + + electron: 0.36 + +We recommend using a string for minor/patch versions to avoid numbers like 6.10 +getting parsed as 6.1, which can lead to unexpected behavior. + babel-preset-env: `DEBUG` option Using targets: { - "electron": 0.36 + "electron": "0.36" } Modules transform: commonjs Using plugins: - check-es2015-constants {"electron":0.36} - transform-es2015-block-scoping {"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} + check-es2015-constants {"electron":"0.36"} + transform-es2015-block-scoping {"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.array-buffer {"electron":0.36} - 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} + es6.typed.array-buffer {"electron":"0.36"} + es6.typed.data-view {"electron":"0.36"} + 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 \ No newline at end of file diff --git a/experimental/babel-preset-env/test/debug-fixtures/plugins-only/options.json b/experimental/babel-preset-env/test/debug-fixtures/plugins-only/options.json index c04dc1ba87..2b1d88bc6f 100644 --- a/experimental/babel-preset-env/test/debug-fixtures/plugins-only/options.json +++ b/experimental/babel-preset-env/test/debug-fixtures/plugins-only/options.json @@ -4,7 +4,8 @@ "debug": true, "exclude": [ "transform-async-to-generator", - "transform-regenerator", "transform-es2015-parameters" + "transform-regenerator", + "transform-es2015-parameters" ], "targets": { "firefox": 52, 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 a2ccd28beb..d66728380e 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 @@ -1,17 +1,24 @@ +Warning, the following targets are using a decimal version: + + node: 7.4 + +We recommend using a string for minor/patch versions to avoid numbers like 6.10 +getting parsed as 6.1, which can lead to unexpected behavior. + babel-preset-env: `DEBUG` option Using targets: { - "firefox": 52, - "node": 7.4 + "firefox": "52", + "node": "7.4" } Modules transform: commonjs Using plugins: - transform-es2015-destructuring {"firefox":52} - transform-es2015-for-of {"firefox":52} - transform-es2015-function-name {"firefox":52} - transform-es2015-literals {"firefox":52} - syntax-trailing-function-commas {"node":7.4} + transform-es2015-destructuring {"firefox":"52"} + transform-es2015-for-of {"firefox":"52"} + transform-es2015-function-name {"firefox":"52"} + transform-es2015-literals {"firefox":"52"} + syntax-trailing-function-commas {"node":"7.4"} 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 fe07366e9d..2fed28174c 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 @@ -2,125 +2,125 @@ babel-preset-env: `DEBUG` option Using targets: { - "chrome": 54, - "edge": 13, - "firefox": 49, - "ie": 10, - "ios": 9, - "safari": 7 + "chrome": "54", + "edge": "13", + "firefox": "49", + "ie": "10", + "ios": "9", + "safari": "7" } Modules transform: commonjs Using plugins: - check-es2015-constants {"edge":13,"firefox":49,"ie":10,"ios":9,"safari":7} - transform-es2015-arrow-functions {"ie":10,"ios":9,"safari":7} - transform-es2015-block-scoped-functions {"ie":10,"ios":9,"safari":7} - transform-es2015-block-scoping {"edge":13,"firefox":49,"ie":10,"ios":9,"safari":7} - transform-es2015-classes {"ie":10,"ios":9,"safari":7} - transform-es2015-computed-properties {"ie":10,"safari":7} - transform-es2015-destructuring {"edge":13,"firefox":49,"ie":10,"ios":9,"safari":7} - transform-es2015-duplicate-keys {"ie":10,"safari":7} - transform-es2015-for-of {"edge":13,"firefox":49,"ie":10,"ios":9,"safari":7} - transform-es2015-function-name {"edge":13,"firefox":49,"ie":10,"ios":9,"safari":7} - transform-es2015-literals {"firefox":49,"ie":10,"safari":7} - transform-es2015-object-super {"ie":10,"ios":9,"safari":7} - transform-es2015-parameters {"edge":13,"firefox":49,"ie":10,"ios":9,"safari":7} - transform-es2015-shorthand-properties {"ie":10,"safari":7} - transform-es2015-spread {"ie":10,"ios":9,"safari":7} - transform-es2015-sticky-regex {"ie":10,"ios":9,"safari":7} - 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-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} - syntax-trailing-function-commas {"chrome":54,"edge":13,"firefox":49,"ie":10,"ios":9,"safari":7} + check-es2015-constants {"edge":"13","firefox":"49","ie":"10","ios":"9","safari":"7"} + transform-es2015-arrow-functions {"ie":"10","ios":"9","safari":"7"} + transform-es2015-block-scoped-functions {"ie":"10","ios":"9","safari":"7"} + transform-es2015-block-scoping {"edge":"13","firefox":"49","ie":"10","ios":"9","safari":"7"} + transform-es2015-classes {"ie":"10","ios":"9","safari":"7"} + transform-es2015-computed-properties {"ie":"10","safari":"7"} + transform-es2015-destructuring {"edge":"13","firefox":"49","ie":"10","ios":"9","safari":"7"} + transform-es2015-duplicate-keys {"ie":"10","safari":"7"} + transform-es2015-for-of {"edge":"13","firefox":"49","ie":"10","ios":"9","safari":"7"} + transform-es2015-function-name {"edge":"13","firefox":"49","ie":"10","ios":"9","safari":"7"} + transform-es2015-literals {"firefox":"49","ie":"10","safari":"7"} + transform-es2015-object-super {"ie":"10","ios":"9","safari":"7"} + transform-es2015-parameters {"edge":"13","firefox":"49","ie":"10","ios":"9","safari":"7"} + transform-es2015-shorthand-properties {"ie":"10","safari":"7"} + transform-es2015-spread {"ie":"10","ios":"9","safari":"7"} + transform-es2015-sticky-regex {"ie":"10","ios":"9","safari":"7"} + 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-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"} + syntax-trailing-function-commas {"chrome":"54","edge":"13","firefox":"49","ie":"10","ios":"9","safari":"7"} Using polyfills: - es6.typed.array-buffer {"ie":10,"ios":9,"safari":7} - es6.typed.int8-array {"ie":10,"ios":9,"safari":7} - es6.typed.uint8-array {"ie":10,"ios":9,"safari":7} - es6.typed.uint8-clamped-array {"ie":10,"ios":9,"safari":7} - es6.typed.int16-array {"ie":10,"ios":9,"safari":7} - es6.typed.uint16-array {"ie":10,"ios":9,"safari":7} - es6.typed.int32-array {"ie":10,"ios":9,"safari":7} - es6.typed.uint32-array {"ie":10,"ios":9,"safari":7} - es6.typed.float32-array {"ie":10,"ios":9,"safari":7} - es6.typed.float64-array {"ie":10,"ios":9,"safari":7} - es6.map {"edge":13,"firefox":49,"ie":10,"ios":9,"safari":7} - es6.set {"edge":13,"firefox":49,"ie":10,"ios":9,"safari":7} - es6.weak-map {"edge":13,"firefox":49,"ie":10,"safari":7} - es6.weak-set {"edge":13,"firefox":49,"ie":10,"safari":7} - es6.reflect.apply {"ie":10,"ios":9,"safari":7} - es6.reflect.construct {"ie":10,"ios":9,"safari":7} - es6.reflect.define-property {"ie":10,"ios":9,"safari":7} - es6.reflect.delete-property {"ie":10,"ios":9,"safari":7} - es6.reflect.get {"ie":10,"ios":9,"safari":7} - es6.reflect.get-own-property-descriptor {"ie":10,"ios":9,"safari":7} - es6.reflect.get-prototype-of {"ie":10,"ios":9,"safari":7} - es6.reflect.has {"ie":10,"ios":9,"safari":7} - es6.reflect.is-extensible {"ie":10,"ios":9,"safari":7} - es6.reflect.own-keys {"ie":10,"ios":9,"safari":7} - es6.reflect.prevent-extensions {"ie":10,"ios":9,"safari":7} - es6.reflect.set {"ie":10,"ios":9,"safari":7} - es6.reflect.set-prototype-of {"ie":10,"ios":9,"safari":7} - es6.promise {"ie":10,"ios":9,"safari":7} - es6.symbol {"edge":13,"firefox":49,"ie":10,"ios":9,"safari":7} - es6.object.assign {"ie":10,"safari":7} - es6.object.is {"ie":10,"safari":7} - es6.object.set-prototype-of {"ie":10,"safari":7} - es6.function.name {"edge":13,"firefox":49,"ie":10,"ios":9,"safari":7} - es6.string.raw {"ie":10,"safari":7} - es6.string.from-code-point {"ie":10,"safari":7} - es6.string.code-point-at {"ie":10,"safari":7} - es6.string.repeat {"ie":10,"safari":7} - es6.string.starts-with {"ie":10,"safari":7} - es6.string.ends-with {"ie":10,"safari":7} - es6.string.includes {"ie":10,"safari":7} - es6.regexp.flags {"edge":13,"ie":10,"safari":7} - es6.regexp.match {"edge":13,"ie":10,"ios":9,"safari":7} - es6.regexp.replace {"edge":13,"ie":10,"ios":9,"safari":7} - es6.regexp.split {"edge":13,"ie":10,"ios":9,"safari":7} - es6.regexp.search {"edge":13,"ie":10,"ios":9,"safari":7} - es6.array.from {"edge":13,"ie":10,"ios":9,"safari":7} - es6.array.of {"ie":10,"safari":7} - es6.array.copy-within {"ie":10,"safari":7} - es6.array.find {"ie":10,"safari":7} - es6.array.find-index {"ie":10,"safari":7} - es6.array.fill {"ie":10,"safari":7} - es6.array.iterator {"ie":10,"safari":7} - es6.number.is-finite {"ie":10,"safari":7} - es6.number.is-integer {"ie":10,"safari":7} - es6.number.is-safe-integer {"ie":10,"safari":7} - es6.number.is-nan {"ie":10,"safari":7} - es6.number.epsilon {"ie":10,"safari":7} - es6.number.min-safe-integer {"ie":10,"safari":7} - es6.number.max-safe-integer {"ie":10,"safari":7} - es6.math.acosh {"ie":10,"safari":7} - es6.math.asinh {"ie":10,"safari":7} - es6.math.atanh {"ie":10,"safari":7} - es6.math.cbrt {"ie":10,"safari":7} - es6.math.clz32 {"ie":10,"safari":7} - es6.math.cosh {"ie":10,"safari":7} - es6.math.expm1 {"ie":10,"safari":7} - es6.math.fround {"ie":10,"safari":7} - es6.math.hypot {"ie":10,"safari":7} - es6.math.imul {"ie":10} - es6.math.log1p {"ie":10,"safari":7} - es6.math.log10 {"ie":10,"safari":7} - es6.math.log2 {"ie":10,"safari":7} - es6.math.sign {"ie":10,"safari":7} - es6.math.sinh {"ie":10,"safari":7} - es6.math.tanh {"ie":10,"safari":7} - es6.math.trunc {"ie":10,"safari":7} - es7.array.includes {"edge":13,"ie":10,"ios":9,"safari":7} - es7.object.values {"edge":13,"ie":10,"ios":9,"safari":7} - es7.object.entries {"edge":13,"ie":10,"ios":9,"safari":7} - es7.object.get-own-property-descriptors {"edge":13,"firefox":49,"ie":10,"ios":9,"safari":7} - es7.string.pad-start {"chrome":54,"edge":13,"ie":10,"ios":9,"safari":7} - es7.string.pad-end {"chrome":54,"edge":13,"ie":10,"ios":9,"safari":7} - 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} + es6.typed.array-buffer {"ie":"10","ios":"9","safari":"7"} + es6.typed.int8-array {"ie":"10","ios":"9","safari":"7"} + es6.typed.uint8-array {"ie":"10","ios":"9","safari":"7"} + es6.typed.uint8-clamped-array {"ie":"10","ios":"9","safari":"7"} + es6.typed.int16-array {"ie":"10","ios":"9","safari":"7"} + es6.typed.uint16-array {"ie":"10","ios":"9","safari":"7"} + es6.typed.int32-array {"ie":"10","ios":"9","safari":"7"} + es6.typed.uint32-array {"ie":"10","ios":"9","safari":"7"} + es6.typed.float32-array {"ie":"10","ios":"9","safari":"7"} + es6.typed.float64-array {"ie":"10","ios":"9","safari":"7"} + es6.map {"edge":"13","firefox":"49","ie":"10","ios":"9","safari":"7"} + es6.set {"edge":"13","firefox":"49","ie":"10","ios":"9","safari":"7"} + es6.weak-map {"edge":"13","firefox":"49","ie":"10","safari":"7"} + es6.weak-set {"edge":"13","firefox":"49","ie":"10","safari":"7"} + es6.reflect.apply {"ie":"10","ios":"9","safari":"7"} + es6.reflect.construct {"ie":"10","ios":"9","safari":"7"} + es6.reflect.define-property {"ie":"10","ios":"9","safari":"7"} + es6.reflect.delete-property {"ie":"10","ios":"9","safari":"7"} + es6.reflect.get {"ie":"10","ios":"9","safari":"7"} + es6.reflect.get-own-property-descriptor {"ie":"10","ios":"9","safari":"7"} + es6.reflect.get-prototype-of {"ie":"10","ios":"9","safari":"7"} + es6.reflect.has {"ie":"10","ios":"9","safari":"7"} + es6.reflect.is-extensible {"ie":"10","ios":"9","safari":"7"} + es6.reflect.own-keys {"ie":"10","ios":"9","safari":"7"} + es6.reflect.prevent-extensions {"ie":"10","ios":"9","safari":"7"} + es6.reflect.set {"ie":"10","ios":"9","safari":"7"} + es6.reflect.set-prototype-of {"ie":"10","ios":"9","safari":"7"} + es6.promise {"ie":"10","ios":"9","safari":"7"} + es6.symbol {"edge":"13","firefox":"49","ie":"10","ios":"9","safari":"7"} + es6.object.assign {"ie":"10","safari":"7"} + es6.object.is {"ie":"10","safari":"7"} + es6.object.set-prototype-of {"ie":"10","safari":"7"} + es6.function.name {"edge":"13","firefox":"49","ie":"10","ios":"9","safari":"7"} + es6.string.raw {"ie":"10","safari":"7"} + es6.string.from-code-point {"ie":"10","safari":"7"} + es6.string.code-point-at {"ie":"10","safari":"7"} + es6.string.repeat {"ie":"10","safari":"7"} + es6.string.starts-with {"ie":"10","safari":"7"} + es6.string.ends-with {"ie":"10","safari":"7"} + es6.string.includes {"ie":"10","safari":"7"} + es6.regexp.flags {"edge":"13","ie":"10","safari":"7"} + es6.regexp.match {"edge":"13","ie":"10","ios":"9","safari":"7"} + es6.regexp.replace {"edge":"13","ie":"10","ios":"9","safari":"7"} + es6.regexp.split {"edge":"13","ie":"10","ios":"9","safari":"7"} + es6.regexp.search {"edge":"13","ie":"10","ios":"9","safari":"7"} + es6.array.from {"edge":"13","ie":"10","ios":"9","safari":"7"} + es6.array.of {"ie":"10","safari":"7"} + es6.array.copy-within {"ie":"10","safari":"7"} + es6.array.find {"ie":"10","safari":"7"} + es6.array.find-index {"ie":"10","safari":"7"} + es6.array.fill {"ie":"10","safari":"7"} + es6.array.iterator {"ie":"10","safari":"7"} + es6.number.is-finite {"ie":"10","safari":"7"} + es6.number.is-integer {"ie":"10","safari":"7"} + es6.number.is-safe-integer {"ie":"10","safari":"7"} + es6.number.is-nan {"ie":"10","safari":"7"} + es6.number.epsilon {"ie":"10","safari":"7"} + es6.number.min-safe-integer {"ie":"10","safari":"7"} + es6.number.max-safe-integer {"ie":"10","safari":"7"} + es6.math.acosh {"ie":"10","safari":"7"} + es6.math.asinh {"ie":"10","safari":"7"} + es6.math.atanh {"ie":"10","safari":"7"} + es6.math.cbrt {"ie":"10","safari":"7"} + es6.math.clz32 {"ie":"10","safari":"7"} + es6.math.cosh {"ie":"10","safari":"7"} + es6.math.expm1 {"ie":"10","safari":"7"} + es6.math.fround {"ie":"10","safari":"7"} + es6.math.hypot {"ie":"10","safari":"7"} + es6.math.imul {"ie":"10"} + es6.math.log1p {"ie":"10","safari":"7"} + es6.math.log10 {"ie":"10","safari":"7"} + es6.math.log2 {"ie":"10","safari":"7"} + es6.math.sign {"ie":"10","safari":"7"} + es6.math.sinh {"ie":"10","safari":"7"} + es6.math.tanh {"ie":"10","safari":"7"} + es6.math.trunc {"ie":"10","safari":"7"} + es7.array.includes {"edge":"13","ie":"10","ios":"9","safari":"7"} + es7.object.values {"edge":"13","ie":"10","ios":"9","safari":"7"} + es7.object.entries {"edge":"13","ie":"10","ios":"9","safari":"7"} + es7.object.get-own-property-descriptors {"edge":"13","firefox":"49","ie":"10","ios":"9","safari":"7"} + es7.string.pad-start {"chrome":"54","edge":"13","ie":"10","ios":"9","safari":"7"} + es7.string.pad-end {"chrome":"54","edge":"13","ie":"10","ios":"9","safari":"7"} + 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 \ No newline at end of file diff --git a/experimental/babel-preset-env/test/debug-fixtures/versions-decimals/options.json b/experimental/babel-preset-env/test/debug-fixtures/versions-decimals/options.json new file mode 100644 index 0000000000..451949b4eb --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/versions-decimals/options.json @@ -0,0 +1,13 @@ +{ + "presets": [ + ["../../lib", { + "debug": true, + "targets": { + "chrome": 54, + "electron": 0.36, + "node": 6.10, + "ie": 10 + } + }] + ] +} 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 new file mode 100644 index 0000000000..4fd7b71215 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/versions-decimals/stdout.txt @@ -0,0 +1,45 @@ +Warning, the following targets are using a decimal version: + + electron: 0.36 + node: 6.1 + +We recommend using a string for minor/patch versions to avoid numbers like 6.10 +getting parsed as 6.1, which can lead to unexpected behavior. + +babel-preset-env: `DEBUG` option + +Using targets: +{ + "chrome": "54", + "electron": "0.36", + "node": "6.1", + "ie": "10" +} + +Modules transform: commonjs + +Using plugins: + check-es2015-constants {"electron":"0.36","ie":"10"} + transform-es2015-arrow-functions {"ie":"10"} + transform-es2015-block-scoped-functions {"ie":"10"} + transform-es2015-block-scoping {"electron":"0.36","ie":"10"} + transform-es2015-classes {"ie":"10"} + transform-es2015-computed-properties {"ie":"10"} + transform-es2015-destructuring {"electron":"0.36","node":"6.1","ie":"10"} + transform-es2015-duplicate-keys {"ie":"10"} + transform-es2015-for-of {"electron":"0.36","node":"6.1","ie":"10"} + transform-es2015-function-name {"electron":"0.36","node":"6.1","ie":"10"} + transform-es2015-literals {"ie":"10"} + transform-es2015-object-super {"ie":"10"} + transform-es2015-parameters {"electron":"0.36","ie":"10"} + transform-es2015-shorthand-properties {"ie":"10"} + transform-es2015-spread {"ie":"10"} + transform-es2015-sticky-regex {"electron":"0.36","ie":"10"} + transform-es2015-template-literals {"ie":"10"} + transform-es2015-typeof-symbol {"ie":"10"} + transform-es2015-unicode-regex {"electron":"0.36","ie":"10"} + transform-regenerator {"electron":"0.36","ie":"10"} + transform-exponentiation-operator {"electron":"0.36","node":"6.1","ie":"10"} + transform-async-to-generator {"chrome":"54","electron":"0.36","node":"6.1","ie":"10"} + syntax-trailing-function-commas {"chrome":"54","electron":"0.36","node":"6.1","ie":"10"} +src/in.js -> lib/in.js \ No newline at end of file diff --git a/experimental/babel-preset-env/test/debug-fixtures/versions-strings/options.json b/experimental/babel-preset-env/test/debug-fixtures/versions-strings/options.json new file mode 100644 index 0000000000..0954a3ae1b --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/versions-strings/options.json @@ -0,0 +1,12 @@ +{ + "presets": [ + ["../../lib", { + "debug": true, + "targets": { + "chrome": "54", + "node": "6.10", + "ie": "10" + } + }] + ] +} 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 new file mode 100644 index 0000000000..bd62d119ea --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/versions-strings/stdout.txt @@ -0,0 +1,36 @@ +babel-preset-env: `DEBUG` option + +Using targets: +{ + "chrome": "54", + "node": "6.10", + "ie": "10" +} + +Modules transform: commonjs + +Using plugins: + check-es2015-constants {"ie":"10"} + transform-es2015-arrow-functions {"ie":"10"} + transform-es2015-block-scoped-functions {"ie":"10"} + transform-es2015-block-scoping {"ie":"10"} + transform-es2015-classes {"ie":"10"} + transform-es2015-computed-properties {"ie":"10"} + transform-es2015-destructuring {"ie":"10"} + transform-es2015-duplicate-keys {"ie":"10"} + transform-es2015-for-of {"ie":"10"} + transform-es2015-function-name {"ie":"10"} + transform-es2015-literals {"ie":"10"} + transform-es2015-object-super {"ie":"10"} + transform-es2015-parameters {"ie":"10"} + transform-es2015-shorthand-properties {"ie":"10"} + transform-es2015-spread {"ie":"10"} + transform-es2015-sticky-regex {"ie":"10"} + transform-es2015-template-literals {"ie":"10"} + transform-es2015-typeof-symbol {"ie":"10"} + transform-es2015-unicode-regex {"ie":"10"} + transform-regenerator {"ie":"10"} + transform-exponentiation-operator {"node":"6.10","ie":"10"} + transform-async-to-generator {"chrome":"54","node":"6.10","ie":"10"} + syntax-trailing-function-commas {"chrome":"54","node":"6.10","ie":"10"} +src/in.js -> lib/in.js \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/electron/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/electron/options.json index 281c0fd3eb..26135107e0 100644 --- a/experimental/babel-preset-env/test/fixtures/preset-options/electron/options.json +++ b/experimental/babel-preset-env/test/fixtures/preset-options/electron/options.json @@ -2,7 +2,7 @@ "presets": [ ["../../../../lib", { "targets": { - "electron": 1.4 + "electron": "1.4" }, "modules": false, "useBuiltIns": true diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/no-transform/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/no-transform/options.json index de09fa3f05..c35fc6979c 100644 --- a/experimental/babel-preset-env/test/fixtures/preset-options/no-transform/options.json +++ b/experimental/babel-preset-env/test/fixtures/preset-options/no-transform/options.json @@ -2,7 +2,7 @@ "presets": [ ["../../../../lib", { "targets": { - "chrome": 55 + "chrome": "55" }, "modules": false, "useBuiltIns": true diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node-web/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node-web/options.json index 7d156cdc08..aca3540b80 100644 --- a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node-web/options.json +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node-web/options.json @@ -2,8 +2,8 @@ "presets": [ ["../../../../lib", { "targets": { - "chrome": 55, - "node": 7.6, + "chrome": "55", + "node": "7.6", "uglify": true }, "modules": false, diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node/options.json index cc2666d58a..49ccb53fed 100644 --- a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node/options.json +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node/options.json @@ -2,7 +2,7 @@ "presets": [ ["../../../../lib", { "targets": { - "node": 7.6, + "node": "7.6", "uglify": true }, "modules": false, diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-require/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-require/options.json index de09fa3f05..c35fc6979c 100644 --- a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-require/options.json +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-require/options.json @@ -2,7 +2,7 @@ "presets": [ ["../../../../lib", { "targets": { - "chrome": 55 + "chrome": "55" }, "modules": false, "useBuiltIns": true diff --git a/experimental/babel-preset-env/test/index.spec.js b/experimental/babel-preset-env/test/index.spec.js index d71735a829..6eea95cc2e 100644 --- a/experimental/babel-preset-env/test/index.spec.js +++ b/experimental/babel-preset-env/test/index.spec.js @@ -4,56 +4,11 @@ const babelPresetEnv = require("../lib/index.js"); const assert = require("assert"); describe("babel-preset-env", () => { - describe("getTargets", () => { - it("should return the current node version with option 'current'", function() { - assert.deepEqual(babelPresetEnv.getTargets({ - node: true - }), { - node: parseFloat(process.versions.node) - }); - - assert.deepEqual(babelPresetEnv.getTargets({ - node: "current" - }), { - node: parseFloat(process.versions.node) - }); - }); - - it("transforms electron version to a number", function() { - assert.deepEqual(babelPresetEnv.getTargets({ - electron: "1.2" - }), { - electron: 1.2 - }); - }); - }); - - describe("getTargets + uglify", () => { - it("should work with `true`", function() { - assert.deepEqual(babelPresetEnv.getTargets({ - uglify: true - }), { - uglify: true - }); - }); - - it("should ignore `false`", function() { - assert.deepEqual(babelPresetEnv.getTargets({ - uglify: false - }), {}); - }); - - it("should ignore `null`", function() { - assert.deepEqual(babelPresetEnv.getTargets({ - uglify: null - }), {}); - }); - }); - describe("isPluginRequired", () => { + const MAX_VERSION = `${Number.MAX_SAFE_INTEGER}.0.0`; + it("returns true if no targets are specified", () => { - const isRequired = babelPresetEnv.isPluginRequired({}, {}); - assert(isRequired); + assert.strictEqual(babelPresetEnv.isPluginRequired({}, {}), true); }); it("returns true if plugin feature is not implemented in one or more targets", () => { @@ -65,15 +20,21 @@ describe("babel-preset-env", () => { }; targets = { - "chrome": Number.MAX_SAFE_INTEGER, - "firefox": Number.MAX_SAFE_INTEGER + chrome: MAX_VERSION, + firefox: MAX_VERSION, }; - assert(babelPresetEnv.isPluginRequired(targets, plugin) === false); + assert.strictEqual( + babelPresetEnv.isPluginRequired(targets, plugin), + false, + ); targets = { - "edge": 12, + edge: "12", }; - assert(babelPresetEnv.isPluginRequired(plugin, plugin) === true); + assert.strictEqual( + babelPresetEnv.isPluginRequired(targets, plugin), + true, + ); }); it("returns false if plugin feature is implemented by lower than target", () => { @@ -81,9 +42,13 @@ describe("babel-preset-env", () => { chrome: 49, }; const targets = { - "chrome": Number.MAX_SAFE_INTEGER, + chrome: MAX_VERSION, }; - assert(babelPresetEnv.isPluginRequired(targets, plugin) === false); + + assert.strictEqual( + babelPresetEnv.isPluginRequired(targets, plugin), + false, + ); }); it("returns false if plugin feature is implemented is equal to target", () => { @@ -91,9 +56,12 @@ describe("babel-preset-env", () => { chrome: 49, }; const targets = { - "chrome": 49, + chrome: "49.0.0", }; - assert(babelPresetEnv.isPluginRequired(targets, plugin) === false); + assert.strictEqual( + babelPresetEnv.isPluginRequired(targets, plugin), + false, + ); }); it("returns true if plugin feature is implemented is greater than target", () => { @@ -101,81 +69,49 @@ describe("babel-preset-env", () => { chrome: 50, }; const targets = { - "chrome": 49, + chrome: "49.0.0", }; - assert(babelPresetEnv.isPluginRequired(targets, plugin) === true); - }); - - it("returns false if plugin feature is implemented by lower than target defined in browsers query", () => { - const plugin = { - chrome: 49, - }; - const targets = { - "browsers": "chrome > 50" - }; - assert(babelPresetEnv.isPluginRequired(targets, plugin) === false); - }); - - it("returns true if plugin feature is implemented is greater than target defined in browsers query", () => { - const plugin = { - chrome: 52, - }; - const targets = { - "browsers": "chrome > 50" - }; - assert(babelPresetEnv.isPluginRequired(targets, plugin) === true); - }); - - it("returns true if target's root items overrides versions defined in browsers query", () => { - const plugin = { - chrome: 45, - }; - const targets = { - browsers: "last 2 Chrome versions", - chrome: 44 - }; - - assert(babelPresetEnv.isPluginRequired(targets, plugin) === true); + assert.strictEqual( + babelPresetEnv.isPluginRequired(targets, plugin), + true, + ); }); it("returns true if uglify is specified as a target", () => { const plugin = { - chrome: 50 + chrome: 50, + }; + const targets = { + chrome: "55.0.0", + uglify: true, + }; + assert.strictEqual( + babelPresetEnv.isPluginRequired(targets, plugin), + true, + ); + }); + + it("returns when target is a decimal", () => { + const plugin = { + node: 6.9, + }; + const targets = { + node: "6.10.0", + }; + assert.strictEqual( + babelPresetEnv.isPluginRequired(targets, plugin), + false, + ); + }); + + it("throws an error if target version is invalid", () => { + const plugin = { + chrome: 50, }; const targets = { chrome: 55, - uglify: true }; - - assert(babelPresetEnv.isPluginRequired(targets, plugin) === true); - }); - - it("doesn't throw when specifying a decimal for node", () => { - const plugin = { - node: 6 - }; - - const targets = { - "node": 6.5 - }; - - assert.doesNotThrow(() => { - babelPresetEnv.isPluginRequired(targets, plugin); - }, Error); - }); - - it("will throw if target version is not a number", () => { - const plugin = { - "node": 6, - }; - - const targets = { - "node": "6.5", - }; - - assert.throws(() => { - babelPresetEnv.isPluginRequired(targets, plugin); - }, Error); + assert.throws(() => babelPresetEnv.isPluginRequired(targets, plugin)); }); }); diff --git a/experimental/babel-preset-env/test/targets-parser.spec.js b/experimental/babel-preset-env/test/targets-parser.spec.js new file mode 100644 index 0000000000..ff569174b7 --- /dev/null +++ b/experimental/babel-preset-env/test/targets-parser.spec.js @@ -0,0 +1,117 @@ +import assert from "assert"; +import getTargets from "../src/targets-parser"; + +describe("getTargets", () => { + it("parses", () => { + assert.deepEqual( + getTargets({ + chrome: 49, + firefox: "55", + ie: "9", + node: "6.10", + electron: "1.6", + }), + { + chrome: "49.0.0", + electron: "1.6.0", + firefox: "55.0.0", + ie: "9.0.0", + node: "6.10.0", + }, + ); + }); + + describe("browser", () => { + it("merges browser key targets", () => { + assert.deepEqual( + getTargets({ + browsers: "chrome 56, ie 11, firefox 51, safari 9", + chrome: "49", + firefox: "55", + ie: "9", + }), + { + chrome: "49.0.0", + firefox: "51.0.0", + ie: "9.0.0", + safari: "9.0.0", + }, + ); + }); + + it("ignores invalid", () => { + assert.deepEqual( + getTargets({ + browsers: 59, + chrome: "49", + firefox: "55", + ie: "11", + }), + { + chrome: "49.0.0", + firefox: "55.0.0", + ie: "11.0.0", + }, + ); + }); + }); + + describe("node", () => { + it("should return the current node version with option 'current'", () => { + assert.deepEqual( + getTargets({ + node: true, + }), + { + node: process.versions.node, + }, + ); + }); + }); + + describe("electron", () => { + it("should be its own target", () => { + assert.deepEqual( + getTargets({ + chrome: "46", + electron: "0.34", + }), + { + chrome: "46.0.0", + electron: "0.34.0", + }, + ); + }); + }); + + describe("uglify", () => { + it("should work with `true`", function() { + assert.deepEqual( + getTargets({ + uglify: true, + }), + { + uglify: true, + }, + ); + }); + + it("should ignore `false`", function() { + assert.deepEqual( + getTargets({ + uglify: false, + }), + {}, + ); + }); + + it("should ignore `null`", function() { + assert.deepEqual( + getTargets({ + uglify: null, + }), + {}, + ); + }); + }); +}); diff --git a/experimental/babel-preset-env/test/utils.spec.js b/experimental/babel-preset-env/test/utils.spec.js new file mode 100644 index 0000000000..d3bcd765aa --- /dev/null +++ b/experimental/babel-preset-env/test/utils.spec.js @@ -0,0 +1,61 @@ +"use strict"; + +const utils = require("../lib/utils"); +const assert = require("assert"); + +const { + prettifyTargets, + prettifyVersion, + semverify, +} = utils; + +describe("utils", () => { + describe("semverify", () => { + it("returns", () => { + assert.strictEqual(semverify("1"), "1.0.0"); + assert.strictEqual(semverify("1.0"), "1.0.0"); + assert.strictEqual(semverify("1.0.0"), "1.0.0"); + assert.strictEqual(semverify(1), "1.0.0"); + assert.strictEqual(semverify(1.2), "1.2.0"); + }); + }); + + describe("prettifyVersion", () => { + it("returns", () => { + assert.strictEqual(prettifyVersion(true), true); + assert.strictEqual(prettifyVersion("0.16.0"), "0.16"); + assert.strictEqual(prettifyVersion("1.0.0"), "1"); + assert.strictEqual(prettifyVersion("1.1.0"), "1.1"); + assert.strictEqual(prettifyVersion("1.0.2"), "1.0.2"); + assert.strictEqual(prettifyVersion("1.2.3"), "1.2.3"); + }); + }); + + describe("prettifyTargets", () => { + it("returns", () => { + assert.deepEqual(prettifyTargets({}), {}); + + assert.deepEqual( + prettifyTargets({ + uglify: true, + }), + { + uglify: true, + }, + ); + + assert.deepEqual( + prettifyTargets({ + chrome: "54.0.0", + electron: "1.6.0", + node: "0.12.0", + }), + { + chrome: "54", + electron: "1.6", + node: "0.12", + }, + ); + }); + }); +}); diff --git a/experimental/babel-preset-env/yarn.lock b/experimental/babel-preset-env/yarn.lock index 5e56c15024..1fcd28ccf6 100644 --- a/experimental/babel-preset-env/yarn.lock +++ b/experimental/babel-preset-env/yarn.lock @@ -22,10 +22,6 @@ acorn-jsx@^3.0.0: dependencies: acorn "^3.0.4" -acorn@4.0.4, acorn@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a" - acorn@^2.1.0, acorn@^2.4.0: version "2.7.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7" @@ -34,6 +30,10 @@ acorn@^3.0.4: version "3.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" +acorn@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a" + acorn@^5.0.1: version "5.0.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.2.tgz#dc1c8fb907f64db2ab573de2326b73527c24de36" @@ -233,31 +233,7 @@ babel-code-frame@^6.22.0: esutils "^2.0.2" js-tokens "^3.0.0" -babel-core@^6.23.0: - version "6.23.1" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.23.1.tgz#c143cb621bb2f621710c220c5d579d15b8a442df" - dependencies: - babel-code-frame "^6.22.0" - babel-generator "^6.23.0" - babel-helpers "^6.23.0" - babel-messages "^6.23.0" - babel-register "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.23.0" - babel-traverse "^6.23.1" - babel-types "^6.23.0" - babylon "^6.11.0" - convert-source-map "^1.1.0" - debug "^2.1.1" - json5 "^0.5.0" - lodash "^4.2.0" - minimatch "^3.0.2" - path-is-absolute "^1.0.0" - private "^0.1.6" - slash "^1.0.0" - source-map "^0.5.0" - -babel-core@^6.24.0, babel-core@latest: +babel-core@^6.23.0, babel-core@^6.24.0, babel-core@latest: version "6.24.0" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.0.tgz#8f36a0a77f5c155aed6f920b844d23ba56742a02" dependencies: @@ -291,20 +267,7 @@ babel-eslint@^7.1.1: babylon "^6.13.0" lodash.pickby "^4.6.0" -babel-generator@^6.18.0, babel-generator@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.23.0.tgz#6b8edab956ef3116f79d8c84c5a3c05f32a74bc5" - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.23.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.2.0" - source-map "^0.5.0" - trim-right "^1.0.1" - -babel-generator@^6.24.0: +babel-generator@^6.18.0, babel-generator@^6.24.0: version "6.24.0" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.0.tgz#eba270a8cc4ce6e09a61be43465d7c62c1f87c56" dependencies: @@ -1717,14 +1680,7 @@ eslint@^3.17.1: text-table "~0.2.0" user-home "^2.0.0" -espree@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.0.tgz#41656fa5628e042878025ef467e78f125cb86e1d" - dependencies: - acorn "4.0.4" - acorn-jsx "^3.0.0" - -espree@latest: +espree@^3.4.0, espree@latest: version "3.4.1" resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.1.tgz#28a83ab4aaed71ed8fe0f5efe61b76a05c13c4d2" dependencies: From a4e6f90d067a3a0317e9c4274d74e612dea95e15 Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Wed, 10 May 2017 14:53:15 -0500 Subject: [PATCH 05/12] Use ensureDirSync in smoke test --- experimental/babel-preset-env/scripts/smoke-test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/experimental/babel-preset-env/scripts/smoke-test.js b/experimental/babel-preset-env/scripts/smoke-test.js index f845d6da3b..b5ad5ae990 100755 --- a/experimental/babel-preset-env/scripts/smoke-test.js +++ b/experimental/babel-preset-env/scripts/smoke-test.js @@ -13,7 +13,7 @@ try { execSync("npm pack"); console.log("Setting up smoke test"); - fs.ensureDir(tempFolderPath); + fs.ensureDirSync(tempFolderPath); fs.writeFileSync( path.join(tempFolderPath, "package.json"), From 842d0540a40f860d7f7cde6c20c03a9a30637623 Mon Sep 17 00:00:00 2001 From: Artem Yavorsky Date: Sat, 20 May 2017 22:04:48 +0300 Subject: [PATCH 06/12] Backport: use preset-env and remove flow-strip-types (#324) * es2015 -> env. * Remove transform-flow-strip-types plugin. --- experimental/babel-preset-env/package.json | 13 +---- experimental/babel-preset-env/yarn.lock | 61 +++++++++++----------- 2 files changed, 33 insertions(+), 41 deletions(-) diff --git a/experimental/babel-preset-env/package.json b/experimental/babel-preset-env/package.json index 192103c238..dfd1d71ef6 100644 --- a/experimental/babel-preset-env/package.json +++ b/experimental/babel-preset-env/package.json @@ -58,8 +58,7 @@ "babel-helper-fixtures": "^6.22.0", "babel-helper-plugin-test-runner": "^6.22.0", "babel-plugin-istanbul": "^3.1.2", - "babel-plugin-transform-flow-strip-types": "^6.22.0", - "babel-preset-es2015": "^6.22.0", + "babel-preset-env": "^1.4.0", "babel-register": "^6.23.0", "chai": "^3.5.0", "codecov": "^1.0.1", @@ -76,15 +75,7 @@ }, "babel": { "presets": [ - [ - "es2015", - { - "loose": true - } - ] - ], - "plugins": [ - "transform-flow-strip-types" + ["env"] ], "env": { "test": { diff --git a/experimental/babel-preset-env/yarn.lock b/experimental/babel-preset-env/yarn.lock index 267d77d585..375e938a37 100644 --- a/experimental/babel-preset-env/yarn.lock +++ b/experimental/babel-preset-env/yarn.lock @@ -483,10 +483,6 @@ babel-plugin-syntax-export-extensions@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721" -babel-plugin-syntax-flow@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" - babel-plugin-syntax-function-bind@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz#48c495f177bdf31a981e732f55adc0bdd2601f46" @@ -667,7 +663,7 @@ babel-plugin-transform-es2015-modules-systemjs@^6.22.0, babel-plugin-transform-e babel-runtime "^6.22.0" babel-template "^6.23.0" -babel-plugin-transform-es2015-modules-umd@^6.22.0, babel-plugin-transform-es2015-modules-umd@^6.23.0: +babel-plugin-transform-es2015-modules-umd@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.23.0.tgz#8d284ae2e19ed8fe21d2b1b26d6e7e0fcd94f0f1" dependencies: @@ -757,13 +753,6 @@ babel-plugin-transform-export-extensions@^6.22.0: babel-plugin-syntax-export-extensions "^6.8.0" babel-runtime "^6.22.0" -babel-plugin-transform-flow-strip-types@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" - dependencies: - babel-plugin-syntax-flow "^6.18.0" - babel-runtime "^6.22.0" - babel-plugin-transform-function-bind@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz#c6fb8e96ac296a310b8cf8ea401462407ddf6a97" @@ -799,34 +788,39 @@ babel-polyfill@^6.23.0, babel-polyfill@latest: core-js "^2.4.0" regenerator-runtime "^0.10.0" -babel-preset-es2015@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.22.0.tgz#af5a98ecb35eb8af764ad8a5a05eb36dc4386835" +babel-preset-env@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.4.0.tgz#c8e02a3bcc7792f23cded68e0355b9d4c28f0f7a" dependencies: babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" babel-plugin-transform-es2015-arrow-functions "^6.22.0" babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.22.0" - babel-plugin-transform-es2015-classes "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" babel-plugin-transform-es2015-computed-properties "^6.22.0" - babel-plugin-transform-es2015-destructuring "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" babel-plugin-transform-es2015-duplicate-keys "^6.22.0" - babel-plugin-transform-es2015-for-of "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" babel-plugin-transform-es2015-function-name "^6.22.0" babel-plugin-transform-es2015-literals "^6.22.0" babel-plugin-transform-es2015-modules-amd "^6.22.0" - babel-plugin-transform-es2015-modules-commonjs "^6.22.0" - babel-plugin-transform-es2015-modules-systemjs "^6.22.0" - babel-plugin-transform-es2015-modules-umd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" babel-plugin-transform-es2015-object-super "^6.22.0" - babel-plugin-transform-es2015-parameters "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" babel-plugin-transform-es2015-shorthand-properties "^6.22.0" babel-plugin-transform-es2015-spread "^6.22.0" babel-plugin-transform-es2015-sticky-regex "^6.22.0" babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" babel-plugin-transform-regenerator "^6.22.0" + browserslist "^1.4.0" + invariant "^2.2.2" babel-preset-es2015@latest: version "6.24.0" @@ -1036,6 +1030,13 @@ browser-stdout@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" +browserslist@^1.4.0: + version "1.7.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" + dependencies: + caniuse-db "^1.0.30000639" + electron-to-chromium "^1.2.7" + browserslist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.1.2.tgz#a9dd0791342dab019861c2dd1cd0fd5d83230d39" @@ -1077,6 +1078,10 @@ camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" +caniuse-db@^1.0.30000639: + version "1.0.30000670" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000670.tgz#90d33b79e3090e25829c311113c56d6b1788bf43" + caniuse-lite@^1.0.30000665: version "1.0.30000666" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000666.tgz#831b63247e24fa408e20c6c546c4173d27c5a1a5" @@ -1474,10 +1479,6 @@ electron-to-chromium@^1.3.11: version "1.3.11" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.11.tgz#744761df1d67b492b322ce9aa0aba5393260eb61" -electron-to-chromium@^1.3.9: - version "1.3.9" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.9.tgz#db1cba2a26aebcca2f7f5b8b034554468609157d" - entities@1.0: version "1.0.0" resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26" @@ -1636,8 +1637,8 @@ eslint-config-babel@^6.0.0: resolved "https://registry.yarnpkg.com/eslint-config-babel/-/eslint-config-babel-6.0.0.tgz#66feedf6ce6e04abe585cec1a65b5bcc96bed50a" eslint-plugin-flowtype@^2.29.1: - version "2.29.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.29.2.tgz#91b4fde0400c4c37ca4440b43bdbc95fc405bea9" + version "2.33.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.33.0.tgz#b2783814ed2ddcf729953b8f65ff73c90cabee4b" dependencies: lodash "^4.15.0" From 3b4c36f9e4d27ae821b3fe69b6ae60b3d0aaa41e Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Fri, 19 May 2017 16:41:39 -0500 Subject: [PATCH 07/12] Update changelog for v1.5 [skip ci] --- experimental/babel-preset-env/CHANGELOG.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/experimental/babel-preset-env/CHANGELOG.md b/experimental/babel-preset-env/CHANGELOG.md index bc9d5f2806..286a006648 100644 --- a/experimental/babel-preset-env/CHANGELOG.md +++ b/experimental/babel-preset-env/CHANGELOG.md @@ -1,5 +1,24 @@ # Changelog +## v1.5.0 (2017-05-19) + +### :rocket: New Feature + +- Support target versions as strings ([#321](https://github.com/babel/babel-preset-env/pull/321)) (@existentialism) + +We were originally waiting on 2.x for a breaking change, but since node v7.10 +and other targets are causing some pain, we decided to land a backwards +compatible version. + +### :house: Internal + +- Backport: use preset-env and remove flow-strip-types ([#324](https://github.com/babel/babel-preset-env/pull/324)) (@yavorsky) +- Bump electron-to-chromium ([#329](https://github.com/babel/babel-preset-env/pull/329)) (@existentialism) +- Tweak version mappings to match compat-table updates ([#323](https://github.com/babel/babel-preset-env/pull/323)) (@existentialism) +- Bump browserslist ([#319](https://github.com/babel/babel-preset-env/pull/319)) (@existentialism) +- Bump compat-table ([#307](https://github.com/babel/babel-preset-env/pull/307)) (@existentialism) +- Add debug-fixtures and test/tmp to .eslintignore ([#305](https://github.com/babel/babel-preset-env/pull/305)) (@yavorsky) + ## v1.4.0 (2017-04-14) ### :rocket: New Feature From 0fcfcc5bf2d955b116acca43637d29e5eb46a3c4 Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Sat, 20 May 2017 14:19:39 -0500 Subject: [PATCH 08/12] 1.5.0 --- experimental/babel-preset-env/package.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/experimental/babel-preset-env/package.json b/experimental/babel-preset-env/package.json index ee7414a9e4..1c852961de 100644 --- a/experimental/babel-preset-env/package.json +++ b/experimental/babel-preset-env/package.json @@ -1,6 +1,6 @@ { "name": "babel-preset-env", - "version": "1.4.0", + "version": "1.5.0", "description": "A Babel preset for each environment.", "author": "Henry Zhu ", "homepage": "https://babeljs.io/", @@ -76,7 +76,9 @@ }, "babel": { "presets": [ - ["env"] + [ + "env" + ] ], "env": { "test": { From fa69bfc755af0e0f7ec08c002538bd85d2074791 Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Mon, 22 May 2017 09:19:55 -0500 Subject: [PATCH 09/12] Compile with loose mode (#332) --- experimental/babel-preset-env/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/experimental/babel-preset-env/package.json b/experimental/babel-preset-env/package.json index 1c852961de..18ddbedbae 100644 --- a/experimental/babel-preset-env/package.json +++ b/experimental/babel-preset-env/package.json @@ -76,9 +76,9 @@ }, "babel": { "presets": [ - [ - "env" - ] + ["env", { + "loose": true + }] ], "env": { "test": { From 6ad103b756d6ab0d62f8a4207012ab31abb7bf30 Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Mon, 22 May 2017 09:29:08 -0500 Subject: [PATCH 10/12] Update changelog for v1.5.1 [skip ci] --- experimental/babel-preset-env/CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/experimental/babel-preset-env/CHANGELOG.md b/experimental/babel-preset-env/CHANGELOG.md index 286a006648..98e964df0f 100644 --- a/experimental/babel-preset-env/CHANGELOG.md +++ b/experimental/babel-preset-env/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## v1.5.1 (2017-05-22) + +### :bug: Bug Fix + +- Compile with loose mode ([#322](https://github.com/babel/babel-preset-env/pull/332)) (@existentialism) + ## v1.5.0 (2017-05-19) ### :rocket: New Feature From eaf8d4589af64c9d14e61cfd23b61c297bb6f1cd Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Mon, 22 May 2017 09:30:25 -0500 Subject: [PATCH 11/12] 1.5.1 --- experimental/babel-preset-env/package.json | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/experimental/babel-preset-env/package.json b/experimental/babel-preset-env/package.json index 18ddbedbae..51b8b8dda0 100644 --- a/experimental/babel-preset-env/package.json +++ b/experimental/babel-preset-env/package.json @@ -1,6 +1,6 @@ { "name": "babel-preset-env", - "version": "1.5.0", + "version": "1.5.1", "description": "A Babel preset for each environment.", "author": "Henry Zhu ", "homepage": "https://babeljs.io/", @@ -76,9 +76,12 @@ }, "babel": { "presets": [ - ["env", { - "loose": true - }] + [ + "env", + { + "loose": true + } + ] ], "env": { "test": { From 906299532410d2a6259c479d31024c2786c6a143 Mon Sep 17 00:00:00 2001 From: Artem Yavorsky Date: Wed, 24 May 2017 14:48:53 +0300 Subject: [PATCH 12/12] README: Add string type as valid node target value (#337) [skip ci] --- experimental/babel-preset-env/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/experimental/babel-preset-env/README.md b/experimental/babel-preset-env/README.md index c3e8bc7b2f..27c73abc99 100644 --- a/experimental/babel-preset-env/README.md +++ b/experimental/babel-preset-env/README.md @@ -110,7 +110,7 @@ The [data](https://github.com/babel/babel-preset-env/blob/master/data/plugins.js ### `targets.node` -`number | "current" | true` +`number | string | "current" | true` If you want to compile against the current node version, you can specify `"node": true` or `"node": "current"`, which would be the same as `"node": parseFloat(process.versions.node)`.