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:
parent
235b1ba264
commit
4cefa5bcc0
@ -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,
|
||||
};
|
||||
@ -46,7 +46,8 @@
|
||||
"babel-plugin-transform-exponentiation-operator": "^6.8.0",
|
||||
"babel-plugin-transform-regenerator": "^6.6.0",
|
||||
"browserslist": "^1.4.0",
|
||||
"invariant": "^2.2.2"
|
||||
"invariant": "^2.2.2",
|
||||
"electron-to-chromium": "^1.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"babel-cli": "^6.11.4",
|
||||
|
||||
@ -1,8 +1,7 @@
|
||||
import browserslist from "browserslist";
|
||||
|
||||
import builtInsList from "../data/built-ins.json";
|
||||
import defaultInclude from "./default-includes";
|
||||
import electronToChromium from "../data/electron-to-chromium";
|
||||
import { electronToChromium } from "electron-to-chromium";
|
||||
import moduleTransformations from "./module-transformations";
|
||||
import normalizeOptions from "./normalize-options.js";
|
||||
import pluginList from "../data/plugins.json";
|
||||
@ -82,26 +81,6 @@ export const getCurrentNodeVersion = () => {
|
||||
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) {
|
||||
for (let i = 1; i < arguments.length; i++) {
|
||||
const source = arguments[i];
|
||||
@ -124,7 +103,18 @@ export const getTargets = (targets = {}) => {
|
||||
|
||||
// Rewrite Electron versions to their Chrome equivalents
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
@ -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-end";
|
||||
import "core-js/modules/web.timers";
|
||||
@ -5,4 +8,4 @@ import "core-js/modules/web.immediate";
|
||||
import "core-js/modules/web.dom.iterable";
|
||||
|
||||
|
||||
a ** b;
|
||||
a ** b;
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
"presets": [
|
||||
["../../../../lib", {
|
||||
"targets": {
|
||||
"electron": 1.5
|
||||
"electron": 1.4
|
||||
},
|
||||
"modules": false,
|
||||
"useBuiltIns": true
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
const babelPresetEnv = require("../lib/index.js");
|
||||
const assert = require("assert");
|
||||
const electronToChromiumData = require("../data/electron-to-chromium");
|
||||
const { versions: electronToChromiumData } = require("electron-to-chromium");
|
||||
|
||||
describe("babel-preset-env", () => {
|
||||
describe("getTargets", () => {
|
||||
@ -26,7 +26,7 @@ describe("babel-preset-env", () => {
|
||||
assert.deepEqual(babelPresetEnv.getTargets({
|
||||
electron: "1.0"
|
||||
}), {
|
||||
chrome: 50
|
||||
chrome: 49
|
||||
});
|
||||
});
|
||||
|
||||
@ -34,7 +34,26 @@ describe("babel-preset-env", () => {
|
||||
assert.deepEqual(babelPresetEnv.getTargets({
|
||||
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
|
||||
});
|
||||
});
|
||||
|
||||
it("should overwrite Chrome number if Electron version is older", function() {
|
||||
assert.deepEqual(babelPresetEnv.getTargets({
|
||||
electron: 1.0,
|
||||
chrome: 50
|
||||
}), {
|
||||
chrome: 49
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user