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:
@@ -3,6 +3,7 @@
|
||||
// NOTE: This script must be run _after_ build-data.js
|
||||
|
||||
const path = require("path");
|
||||
const { addElectronSupportFromChromium } = require("./chromium-to-electron");
|
||||
|
||||
const {
|
||||
getLowestImplementedVersion,
|
||||
@@ -38,6 +39,7 @@ for (const [plugin, { replaces, features }] of Object.entries(data)) {
|
||||
generatedTargets[plugin][env] = supportedWithBugfix;
|
||||
}
|
||||
}
|
||||
addElectronSupportFromChromium(generatedTargets[plugin]);
|
||||
}
|
||||
|
||||
for (const [replaced, features] of Object.entries(allReplacedFeatures)) {
|
||||
@@ -57,6 +59,7 @@ for (const [replaced, features] of Object.entries(allReplacedFeatures)) {
|
||||
generatedTargets[replaced][env] = stillNotSupported;
|
||||
}
|
||||
}
|
||||
addElectronSupportFromChromium(generatedTargets[replaced]);
|
||||
}
|
||||
|
||||
for (const [filename, data] of [
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
"use strict";
|
||||
|
||||
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");
|
||||
|
||||
for (const target of ["plugin", "corejs2-built-in"]) {
|
||||
@@ -11,16 +12,13 @@ for (const target of ["plugin", "corejs2-built-in"]) {
|
||||
);
|
||||
if (target === "plugin") {
|
||||
// add export-namespace-from from mdn-browser-compat-data
|
||||
// todo: replace the hardcoded compat data to mdn-browser-compat-data
|
||||
// after https://github.com/mdn/browser-compat-data/pull/6394 is published
|
||||
newData["proposal-export-namespace-from"] = {
|
||||
chrome: "72",
|
||||
edge: "79",
|
||||
opera: "60",
|
||||
firefox: "80",
|
||||
node: "13.2",
|
||||
samsung: "11.0",
|
||||
};
|
||||
const exportNamespaceFromCompatData = process(
|
||||
compatData.statements.export.namespace
|
||||
);
|
||||
// the node.js compat data is 12.0, the first node version ships `export *` behind a flag
|
||||
// here we overwrite to 13.2 which is the first unflagged version
|
||||
exportNamespaceFromCompatData.node = "13.2";
|
||||
newData["proposal-export-namespace-from"] = exportNamespaceFromCompatData;
|
||||
}
|
||||
const dataPath = path.join(__dirname, `../data/${target}s.json`);
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ const path = require("path");
|
||||
const fs = require("fs");
|
||||
|
||||
const compatData = require("mdn-browser-compat-data").javascript;
|
||||
const { addElectronSupportFromChromium } = require("./chromium-to-electron");
|
||||
|
||||
// Map mdn-browser-compat-data to browserslist browser names
|
||||
const browserNameMap = {
|
||||
@@ -47,6 +48,7 @@ function process(source) {
|
||||
);
|
||||
}
|
||||
});
|
||||
addElectronSupportFromChromium(allowedBrowsers);
|
||||
|
||||
return allowedBrowsers;
|
||||
}
|
||||
|
||||
32
packages/babel-compat-data/scripts/chromium-to-electron.js
Normal file
32
packages/babel-compat-data/scripts/chromium-to-electron.js
Normal 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;
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
COMPAT_TABLE_COMMIT=163aacb6f93e325231d578e31c03141cd9086dbb
|
||||
COMPAT_TABLE_COMMIT=e77292d3fc6f8d84c9a5a12b27e4636950fa1275
|
||||
GIT_HEAD=build/compat-table/.git/HEAD
|
||||
|
||||
if [ -d "build/compat-table" ]; then
|
||||
|
||||
@@ -4,31 +4,13 @@ const fs = require("fs");
|
||||
const flatMap = require("lodash/flatMap");
|
||||
const mapValues = require("lodash/mapValues");
|
||||
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 parseEnvsVersions = require("../build/compat-table/build-utils/parse-envs-versions");
|
||||
const interpolateAllResults = require("../build/compat-table/build-utils/interpolate-all-results");
|
||||
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 compatSources = ["es5", "es6", "es2016plus", "esnext"].map(source => {
|
||||
@@ -51,7 +33,6 @@ exports.environments = [
|
||||
"ios",
|
||||
"phantom",
|
||||
"samsung",
|
||||
"electron",
|
||||
];
|
||||
|
||||
const compatibilityTests = flatMap(compatSources, data =>
|
||||
@@ -117,6 +98,7 @@ exports.generateData = (environments, features) => {
|
||||
const version = exports.getLowestImplementedVersion(options, env);
|
||||
if (version) plugin[env] = version;
|
||||
});
|
||||
addElectronSupportFromChromium(plugin);
|
||||
|
||||
return plugin;
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user