Bump compat-table (#12073)

* chore: update compat-table data source

* refactor: use chromeVersions from electron-to-chromium

* chore: deduplicate yarn.lock
This commit is contained in:
Huáng Jùnliàng 2020-09-24 16:28:26 -04:00 committed by GitHub
parent f2da186714
commit 6d87f46a7a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 96 additions and 71 deletions

View File

@ -80,7 +80,7 @@
"node": "11", "node": "11",
"ios": "12", "ios": "12",
"samsung": "10", "samsung": "10",
"electron": "4" "electron": "4.0"
}, },
"es6.array.for-each": { "es6.array.for-each": {
"chrome": "5", "chrome": "5",
@ -248,7 +248,7 @@
"ie": "9", "ie": "9",
"ios": "12", "ios": "12",
"samsung": "8", "samsung": "8",
"electron": "3" "electron": "3.0"
}, },
"es6.array.species": { "es6.array.species": {
"chrome": "51", "chrome": "51",
@ -710,7 +710,7 @@
"node": "8.10", "node": "8.10",
"ios": "9", "ios": "9",
"samsung": "8", "samsung": "8",
"electron": "3" "electron": "3.0"
}, },
"es7.object.define-setter": { "es7.object.define-setter": {
"chrome": "62", "chrome": "62",
@ -721,7 +721,7 @@
"node": "8.10", "node": "8.10",
"ios": "9", "ios": "9",
"samsung": "8", "samsung": "8",
"electron": "3" "electron": "3.0"
}, },
"es6.object.define-property": { "es6.object.define-property": {
"chrome": "5", "chrome": "5",
@ -826,7 +826,7 @@
"node": "8.10", "node": "8.10",
"ios": "9", "ios": "9",
"samsung": "8", "samsung": "8",
"electron": "3" "electron": "3.0"
}, },
"es7.object.lookup-setter": { "es7.object.lookup-setter": {
"chrome": "62", "chrome": "62",
@ -837,7 +837,7 @@
"node": "8.10", "node": "8.10",
"ios": "9", "ios": "9",
"samsung": "8", "samsung": "8",
"electron": "3" "electron": "3.0"
}, },
"es6.object.prevent-extensions": { "es6.object.prevent-extensions": {
"chrome": "44", "chrome": "44",
@ -971,7 +971,7 @@
"node": "10", "node": "10",
"ios": "11.3", "ios": "11.3",
"samsung": "8", "samsung": "8",
"electron": "3" "electron": "3.0"
}, },
"es6.reflect.apply": { "es6.reflect.apply": {
"chrome": "49", "chrome": "49",
@ -1224,7 +1224,7 @@
"node": "10", "node": "10",
"ios": "12", "ios": "12",
"samsung": "8", "samsung": "8",
"electron": "3" "electron": "3.0"
}, },
"es6.string.anchor": { "es6.string.anchor": {
"chrome": "5", "chrome": "5",
@ -1528,7 +1528,7 @@
"node": "10", "node": "10",
"ios": "12", "ios": "12",
"samsung": "9", "samsung": "9",
"electron": "3" "electron": "3.0"
}, },
"es7.string.trim-right": { "es7.string.trim-right": {
"chrome": "66", "chrome": "66",
@ -1539,7 +1539,7 @@
"node": "10", "node": "10",
"ios": "12", "ios": "12",
"samsung": "9", "samsung": "9",
"electron": "3" "electron": "3.0"
}, },
"es6.typed.array-buffer": { "es6.typed.array-buffer": {
"chrome": "51", "chrome": "51",

View File

@ -11,6 +11,7 @@
"safari": "10.1", "safari": "10.1",
"ios_saf": "10.3", "ios_saf": "10.3",
"samsung": "8.2", "samsung": "8.2",
"android": "61" "android": "61",
"electron": "2.0"
} }
} }

View File

@ -1,16 +1,17 @@
{ {
"proposal-class-properties": { "proposal-class-properties": {
"chrome": "74", "chrome": "74",
"opera": "61", "opera": "62",
"edge": "79", "edge": "79",
"node": "12", "node": "12",
"samsung": "11", "samsung": "11",
"electron": "6" "electron": "6.0"
}, },
"proposal-private-methods": { "proposal-private-methods": {
"chrome": "84", "chrome": "84",
"opera": "70",
"edge": "84", "edge": "84",
"electron": "10" "electron": "10.0"
}, },
"proposal-numeric-separator": { "proposal-numeric-separator": {
"chrome": "75", "chrome": "75",
@ -21,13 +22,13 @@
"node": "12.5", "node": "12.5",
"ios": "13", "ios": "13",
"samsung": "11", "samsung": "11",
"electron": "6" "electron": "6.0"
}, },
"proposal-logical-assignment-operators": { "proposal-logical-assignment-operators": {
"chrome": "85", "chrome": "85",
"firefox": "79", "firefox": "79",
"safari": "14", "safari": "14",
"electron": "10" "electron": "10.0"
}, },
"proposal-nullish-coalescing-operator": { "proposal-nullish-coalescing-operator": {
"chrome": "80", "chrome": "80",
@ -37,7 +38,8 @@
"safari": "13.1", "safari": "13.1",
"node": "14", "node": "14",
"ios": "13.4", "ios": "13.4",
"electron": "8" "samsung": "13",
"electron": "8.0"
}, },
"proposal-optional-chaining": { "proposal-optional-chaining": {
"chrome": "80", "chrome": "80",
@ -47,7 +49,8 @@
"safari": "13.1", "safari": "13.1",
"node": "14", "node": "14",
"ios": "13.4", "ios": "13.4",
"electron": "8" "samsung": "13",
"electron": "8.0"
}, },
"proposal-json-strings": { "proposal-json-strings": {
"chrome": "66", "chrome": "66",
@ -58,7 +61,7 @@
"node": "10", "node": "10",
"ios": "12", "ios": "12",
"samsung": "9", "samsung": "9",
"electron": "3" "electron": "3.0"
}, },
"proposal-optional-catch-binding": { "proposal-optional-catch-binding": {
"chrome": "66", "chrome": "66",
@ -69,7 +72,7 @@
"node": "10", "node": "10",
"ios": "11.3", "ios": "11.3",
"samsung": "9", "samsung": "9",
"electron": "3" "electron": "3.0"
}, },
"transform-parameters": { "transform-parameters": {
"chrome": "49", "chrome": "49",
@ -91,7 +94,7 @@
"node": "10", "node": "10",
"ios": "12", "ios": "12",
"samsung": "8", "samsung": "8",
"electron": "3" "electron": "3.0"
}, },
"proposal-object-rest-spread": { "proposal-object-rest-spread": {
"chrome": "60", "chrome": "60",
@ -102,7 +105,7 @@
"node": "8.3", "node": "8.3",
"ios": "11.3", "ios": "11.3",
"samsung": "8", "samsung": "8",
"electron": "2" "electron": "2.0"
}, },
"transform-dotall-regex": { "transform-dotall-regex": {
"chrome": "62", "chrome": "62",
@ -113,7 +116,7 @@
"node": "8.10", "node": "8.10",
"ios": "11.3", "ios": "11.3",
"samsung": "8", "samsung": "8",
"electron": "3" "electron": "3.0"
}, },
"proposal-unicode-property-regex": { "proposal-unicode-property-regex": {
"chrome": "64", "chrome": "64",
@ -124,7 +127,7 @@
"node": "10", "node": "10",
"ios": "11.3", "ios": "11.3",
"samsung": "9", "samsung": "9",
"electron": "3" "electron": "3.0"
}, },
"transform-named-capturing-groups-regex": { "transform-named-capturing-groups-regex": {
"chrome": "64", "chrome": "64",
@ -135,7 +138,7 @@
"node": "10", "node": "10",
"ios": "11.3", "ios": "11.3",
"samsung": "9", "samsung": "9",
"electron": "3" "electron": "3.0"
}, },
"transform-async-to-generator": { "transform-async-to-generator": {
"chrome": "55", "chrome": "55",
@ -424,10 +427,14 @@
}, },
"proposal-export-namespace-from": { "proposal-export-namespace-from": {
"chrome": "72", "chrome": "72",
"and_chr": "72",
"edge": "79", "edge": "79",
"opera": "60",
"firefox": "80", "firefox": "80",
"node": "13.2", "node": "13.2",
"samsung": "11.0" "opera": "60",
"op_mob": "51",
"samsung": "11.0",
"android": "72",
"electron": "5.0"
} }
} }

View File

@ -30,8 +30,8 @@
], ],
"devDependencies": { "devDependencies": {
"@babel/helper-compilation-targets": "workspace:^7.10.4", "@babel/helper-compilation-targets": "workspace:^7.10.4",
"electron-to-chromium": "1.3.513", "electron-to-chromium": "1.3.570",
"lodash": "^4.17.19", "lodash": "^4.17.19",
"mdn-browser-compat-data": "1.0.31" "mdn-browser-compat-data": "1.0.38"
} }
} }

View File

@ -3,6 +3,7 @@
// NOTE: This script must be run _after_ build-data.js // NOTE: This script must be run _after_ build-data.js
const path = require("path"); const path = require("path");
const { addElectronSupportFromChromium } = require("./chromium-to-electron");
const { const {
getLowestImplementedVersion, getLowestImplementedVersion,
@ -38,6 +39,7 @@ for (const [plugin, { replaces, features }] of Object.entries(data)) {
generatedTargets[plugin][env] = supportedWithBugfix; generatedTargets[plugin][env] = supportedWithBugfix;
} }
} }
addElectronSupportFromChromium(generatedTargets[plugin]);
} }
for (const [replaced, features] of Object.entries(allReplacedFeatures)) { for (const [replaced, features] of Object.entries(allReplacedFeatures)) {
@ -57,6 +59,7 @@ for (const [replaced, features] of Object.entries(allReplacedFeatures)) {
generatedTargets[replaced][env] = stillNotSupported; generatedTargets[replaced][env] = stillNotSupported;
} }
} }
addElectronSupportFromChromium(generatedTargets[replaced]);
} }
for (const [filename, data] of [ for (const [filename, data] of [

View File

@ -1,7 +1,8 @@
"use strict"; "use strict";
const path = require("path"); const path = require("path");
const compatData = require("mdn-browser-compat-data").javascript;
const { process } = require("./build-modules-support");
const { generateData, environments, writeFile } = require("./utils-build-data"); const { generateData, environments, writeFile } = require("./utils-build-data");
for (const target of ["plugin", "corejs2-built-in"]) { for (const target of ["plugin", "corejs2-built-in"]) {
@ -11,16 +12,13 @@ for (const target of ["plugin", "corejs2-built-in"]) {
); );
if (target === "plugin") { if (target === "plugin") {
// add export-namespace-from from mdn-browser-compat-data // add export-namespace-from from mdn-browser-compat-data
// todo: replace the hardcoded compat data to mdn-browser-compat-data const exportNamespaceFromCompatData = process(
// after https://github.com/mdn/browser-compat-data/pull/6394 is published compatData.statements.export.namespace
newData["proposal-export-namespace-from"] = { );
chrome: "72", // the node.js compat data is 12.0, the first node version ships `export *` behind a flag
edge: "79", // here we overwrite to 13.2 which is the first unflagged version
opera: "60", exportNamespaceFromCompatData.node = "13.2";
firefox: "80", newData["proposal-export-namespace-from"] = exportNamespaceFromCompatData;
node: "13.2",
samsung: "11.0",
};
} }
const dataPath = path.join(__dirname, `../data/${target}s.json`); const dataPath = path.join(__dirname, `../data/${target}s.json`);

View File

@ -2,6 +2,7 @@ const path = require("path");
const fs = require("fs"); const fs = require("fs");
const compatData = require("mdn-browser-compat-data").javascript; const compatData = require("mdn-browser-compat-data").javascript;
const { addElectronSupportFromChromium } = require("./chromium-to-electron");
// Map mdn-browser-compat-data to browserslist browser names // Map mdn-browser-compat-data to browserslist browser names
const browserNameMap = { const browserNameMap = {
@ -47,6 +48,7 @@ function process(source) {
); );
} }
}); });
addElectronSupportFromChromium(allowedBrowsers);
return allowedBrowsers; return allowedBrowsers;
} }

View File

@ -0,0 +1,32 @@
const { versions } = require("electron-to-chromium");
// todo: we should have imported `chromiumVersions` from `require("electron-to-chromium").chromiumVersions`,
// however the data is inconsistent with `require("electron-to-chromium").versions`.
// see https://github.com/Kilian/electron-to-chromium/pull/36
const chromiumVersions = {};
for (const electronVersion of Object.keys(versions)) {
chromiumVersions[versions[electronVersion]] =
chromiumVersions[versions[electronVersion]] || electronVersion;
}
const chromiumVersionList = Object.keys(chromiumVersions);
function chromiumToElectron(version) {
if (chromiumVersions[version]) {
return chromiumVersions[version];
}
const supportedVersion = chromiumVersionList.concat(version);
supportedVersion.sort((a, b) => +a - +b);
const nextSupportedVersion =
supportedVersion[supportedVersion.indexOf(version) + 1];
return chromiumVersions[nextSupportedVersion];
}
function addElectronSupportFromChromium(supportData) {
if (supportData.chrome) {
const electronVersion = chromiumToElectron(supportData.chrome);
if (electronVersion) {
supportData.electron = electronVersion;
}
}
}
exports.addElectronSupportFromChromium = addElectronSupportFromChromium;

View File

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
set -e set -e
COMPAT_TABLE_COMMIT=163aacb6f93e325231d578e31c03141cd9086dbb COMPAT_TABLE_COMMIT=e77292d3fc6f8d84c9a5a12b27e4636950fa1275
GIT_HEAD=build/compat-table/.git/HEAD GIT_HEAD=build/compat-table/.git/HEAD
if [ -d "build/compat-table" ]; then if [ -d "build/compat-table" ]; then

View File

@ -4,31 +4,13 @@ const fs = require("fs");
const flatMap = require("lodash/flatMap"); const flatMap = require("lodash/flatMap");
const mapValues = require("lodash/mapValues"); const mapValues = require("lodash/mapValues");
const findLastIndex = require("lodash/findLastIndex"); const findLastIndex = require("lodash/findLastIndex");
const electronToChromiumVersions = require("electron-to-chromium").versions; const { addElectronSupportFromChromium } = require("./chromium-to-electron");
const envs = require("../build/compat-table/environments"); const envs = require("../build/compat-table/environments");
const parseEnvsVersions = require("../build/compat-table/build-utils/parse-envs-versions"); const parseEnvsVersions = require("../build/compat-table/build-utils/parse-envs-versions");
const interpolateAllResults = require("../build/compat-table/build-utils/interpolate-all-results"); const interpolateAllResults = require("../build/compat-table/build-utils/interpolate-all-results");
const compareVersions = require("../build/compat-table/build-utils/compare-versions"); const compareVersions = require("../build/compat-table/build-utils/compare-versions");
// Add Electron to the list of environments
Object.keys(electronToChromiumVersions).forEach(electron => {
const chrome = electronToChromiumVersions[electron];
const electronId = `electron${electron.replace(".", "_")}`;
let chromeId = `chrome${chrome}`;
// This is missing
if (chromeId === "chrome82") chromeId = "chrome81";
if (!envs[chromeId]) {
throw new Error(
`Electron ${electron} inherits from Chrome ${chrome}, which is not defined.`
);
}
envs[electronId] = { equals: chromeId };
});
const envsVersions = parseEnvsVersions(envs); const envsVersions = parseEnvsVersions(envs);
const compatSources = ["es5", "es6", "es2016plus", "esnext"].map(source => { const compatSources = ["es5", "es6", "es2016plus", "esnext"].map(source => {
@ -51,7 +33,6 @@ exports.environments = [
"ios", "ios",
"phantom", "phantom",
"samsung", "samsung",
"electron",
]; ];
const compatibilityTests = flatMap(compatSources, data => const compatibilityTests = flatMap(compatSources, data =>
@ -117,6 +98,7 @@ exports.generateData = (environments, features) => {
const version = exports.getLowestImplementedVersion(options, env); const version = exports.getLowestImplementedVersion(options, env);
if (version) plugin[env] = version; if (version) plugin[env] = version;
}); });
addElectronSupportFromChromium(plugin);
return plugin; return plugin;
}); });

View File

@ -92,9 +92,9 @@ __metadata:
resolution: "@babel/compat-data@workspace:packages/babel-compat-data" resolution: "@babel/compat-data@workspace:packages/babel-compat-data"
dependencies: dependencies:
"@babel/helper-compilation-targets": "workspace:^7.10.4" "@babel/helper-compilation-targets": "workspace:^7.10.4"
electron-to-chromium: 1.3.513 electron-to-chromium: 1.3.570
lodash: ^4.17.19 lodash: ^4.17.19
mdn-browser-compat-data: 1.0.31 mdn-browser-compat-data: 1.0.38
languageName: unknown languageName: unknown
linkType: soft linkType: soft
@ -7647,10 +7647,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"electron-to-chromium@npm:1.3.513, electron-to-chromium@npm:^1.3.413": "electron-to-chromium@npm:1.3.570, electron-to-chromium@npm:^1.3.413":
version: 1.3.513 version: 1.3.570
resolution: "electron-to-chromium@npm:1.3.513" resolution: "electron-to-chromium@npm:1.3.570"
checksum: f74b3b97095c669c86e879eb17b1877dc0a8948c87b92895d18e9d2df3f7b8ffdaed7b7a14c2c171838173ad5b28c1279788198868ce097418521ba0ed560c44 checksum: 23388b39692e2932e56033e7c0b5b5f70199e22c03335d97c811cad9b16f89e80c94abe55c6140aa12d0e19431abec764955395df9fdf3972918c6bccebc8e10
languageName: node languageName: node
linkType: hard linkType: hard
@ -11619,12 +11619,12 @@ fsevents@~2.1.2:
languageName: node languageName: node
linkType: hard linkType: hard
"mdn-browser-compat-data@npm:1.0.31": "mdn-browser-compat-data@npm:1.0.38":
version: 1.0.31 version: 1.0.38
resolution: "mdn-browser-compat-data@npm:1.0.31" resolution: "mdn-browser-compat-data@npm:1.0.38"
dependencies: dependencies:
extend: 3.0.2 extend: 3.0.2
checksum: 37257b8328e3410b824ed4cc89e827e3ee0d9321e68a1c0d35fe073eef22a8a49e3b577a125c9e2d42bb922f7a2ec1bc1bfdaddc412264d8801447e61d6120f9 checksum: 137bffed36b3d65fa2f58b7d7c58a238ff0a7de9d942517a280a04f817f06681354b62825c70966a2920d6efd666da86795942762d64c7b209eea7e543097a09
languageName: node languageName: node
linkType: hard linkType: hard