Use external Electron to Chromium library (#144)

* Replace manual electron-to-chromium list and function with external library

* test fixtures for electron: Switch to electron 1.4, with known chrome version and update expected output

* update tests: electron 1.0 used chrome 49, not 50

* import only the relevant function from electron-to-chromium

* electron fixtures: Use number instead of string

* If both chrome and electron are defined, choose the lower version to preserve

* Add to test cases to verify correct handling of chrome number
This commit is contained in:
Kilian Valkhof 2017-01-19 23:41:02 +01:00 committed by Henry Zhu
parent 235b1ba264
commit 4cefa5bcc0
6 changed files with 41 additions and 38 deletions

View File

@ -1,10 +0,0 @@
module.exports = {
"1.5": 54,
"1.4": 53,
"1.3": 52,
"1.2": 51,
"1.1": 50,
"1.0": 50,
"0.37": 49,
"0.36": 47,
};

View File

@ -46,7 +46,8 @@
"babel-plugin-transform-exponentiation-operator": "^6.8.0", "babel-plugin-transform-exponentiation-operator": "^6.8.0",
"babel-plugin-transform-regenerator": "^6.6.0", "babel-plugin-transform-regenerator": "^6.6.0",
"browserslist": "^1.4.0", "browserslist": "^1.4.0",
"invariant": "^2.2.2" "invariant": "^2.2.2",
"electron-to-chromium": "^1.1.0"
}, },
"devDependencies": { "devDependencies": {
"babel-cli": "^6.11.4", "babel-cli": "^6.11.4",

View File

@ -1,8 +1,7 @@
import browserslist from "browserslist"; import browserslist from "browserslist";
import builtInsList from "../data/built-ins.json"; import builtInsList from "../data/built-ins.json";
import defaultInclude from "./default-includes"; import defaultInclude from "./default-includes";
import electronToChromium from "../data/electron-to-chromium"; import { electronToChromium } from "electron-to-chromium";
import moduleTransformations from "./module-transformations"; import moduleTransformations from "./module-transformations";
import normalizeOptions from "./normalize-options.js"; import normalizeOptions from "./normalize-options.js";
import pluginList from "../data/plugins.json"; import pluginList from "../data/plugins.json";
@ -82,26 +81,6 @@ export const getCurrentNodeVersion = () => {
return parseFloat(process.versions.node); return parseFloat(process.versions.node);
}; };
export const electronVersionToChromeVersion = (semverVer) => {
semverVer = String(semverVer);
if (semverVer === "1") {
semverVer = "1.0";
}
const m = semverVer.match(/^(\d+\.\d+)/);
if (!m) {
throw new Error("Electron version must be a semver version");
}
const result = electronToChromium[m[1]];
if (!result) {
throw new Error(`Electron version ${m[1]} is either too old or too new`);
}
return result;
};
const _extends = Object.assign || function (target) { const _extends = Object.assign || function (target) {
for (let i = 1; i < arguments.length; i++) { for (let i = 1; i < arguments.length; i++) {
const source = arguments[i]; const source = arguments[i];
@ -124,7 +103,18 @@ export const getTargets = (targets = {}) => {
// Rewrite Electron versions to their Chrome equivalents // Rewrite Electron versions to their Chrome equivalents
if (targetOps.electron) { if (targetOps.electron) {
targetOps.chrome = electronVersionToChromeVersion(targetOps.electron); const electronChromeVersion = parseInt(electronToChromium(targetOps.electron), 10);
if (!electronChromeVersion) {
throw new Error(`Electron version ${targetOps.electron} is either too old or too new`);
}
if (targetOps.chrome) {
targetOps.chrome = Math.min(targetOps.chrome, electronChromeVersion);
} else {
targetOps.chrome = electronChromeVersion;
}
delete targetOps.electron; delete targetOps.electron;
} }

View File

@ -1,3 +1,6 @@
import "core-js/modules/es7.object.values";
import "core-js/modules/es7.object.entries";
import "core-js/modules/es7.object.get-own-property-descriptors";
import "core-js/modules/es7.string.pad-start"; import "core-js/modules/es7.string.pad-start";
import "core-js/modules/es7.string.pad-end"; import "core-js/modules/es7.string.pad-end";
import "core-js/modules/web.timers"; import "core-js/modules/web.timers";

View File

@ -2,7 +2,7 @@
"presets": [ "presets": [
["../../../../lib", { ["../../../../lib", {
"targets": { "targets": {
"electron": 1.5 "electron": 1.4
}, },
"modules": false, "modules": false,
"useBuiltIns": true "useBuiltIns": true

View File

@ -2,7 +2,7 @@
const babelPresetEnv = require("../lib/index.js"); const babelPresetEnv = require("../lib/index.js");
const assert = require("assert"); const assert = require("assert");
const electronToChromiumData = require("../data/electron-to-chromium"); const { versions: electronToChromiumData } = require("electron-to-chromium");
describe("babel-preset-env", () => { describe("babel-preset-env", () => {
describe("getTargets", () => { describe("getTargets", () => {
@ -26,7 +26,7 @@ describe("babel-preset-env", () => {
assert.deepEqual(babelPresetEnv.getTargets({ assert.deepEqual(babelPresetEnv.getTargets({
electron: "1.0" electron: "1.0"
}), { }), {
chrome: 50 chrome: 49
}); });
}); });
@ -34,7 +34,26 @@ describe("babel-preset-env", () => {
assert.deepEqual(babelPresetEnv.getTargets({ assert.deepEqual(babelPresetEnv.getTargets({
electron: 1.0 electron: 1.0
}), { }), {
chrome: 49
});
});
it("should preserve lower Chrome number if Electron version is more recent", function() {
assert.deepEqual(babelPresetEnv.getTargets({
electron: 1.4,
chrome: 50 chrome: 50
}), {
chrome: 50
});
});
it("should overwrite Chrome number if Electron version is older", function() {
assert.deepEqual(babelPresetEnv.getTargets({
electron: 1.0,
chrome: 50
}), {
chrome: 49
}); });
}); });