Skip to content

Commit 97c3945

Browse files
mcasimirAnemy
andauthored
chore: add update electron scripts (#4154)
* chore: update electron scripts * chore update package lock * also update browserslist * chore: update electron script * preserve root package.json * Update scripts/update-electron.js Co-authored-by: Rhys <[email protected]> * Update scripts/update-electron.js Co-authored-by: Rhys <[email protected]> --------- Co-authored-by: Rhys <[email protected]>
1 parent bca6cc3 commit 97c3945

File tree

9 files changed

+1048
-1215
lines changed

9 files changed

+1048
-1215
lines changed

configs/webpack-config-compass/src/loaders.ts

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,56 @@
1+
import browserslist from 'browserslist';
12
import MiniCssExtractPlugin from 'mini-css-extract-plugin';
3+
import { execSync } from 'child_process';
4+
25
import type { ConfigArgs } from './args';
36
import { isServe } from './args';
7+
import chalk from 'chalk';
8+
9+
function isLatestBrowserslist() {
10+
// eslint-disable-next-line @typescript-eslint/no-var-requires
11+
const browserslistVersion = require('browserslist/package.json').version;
12+
const command = `npm view browserslist version --json`;
13+
const latestBrowserslistVersion = JSON.parse(
14+
execSync(command).toString().trim()
15+
);
16+
17+
return browserslistVersion === latestBrowserslistVersion;
18+
}
419

520
const electronVersion = (() => {
621
// eslint-disable-next-line @typescript-eslint/no-var-requires
722
const [maj, min] = require('electron/package.json').version.split(
823
'.'
924
) as string[];
25+
1026
return `${maj}.${min}`;
1127
})();
1228

29+
const browserslistElectronVersion = (() => {
30+
const installedElectronVersion = `electron ${electronVersion}`;
31+
try {
32+
// Occasionally it may happen that browserslist does not catch up with
33+
// Electron versions.
34+
35+
// If we discover that our version of Electron is not supported by browserslist
36+
// we first try to determine if a new version of browserslist is avaliable.
37+
//
38+
// If a new version of browserslist is available we throw an error and prompt to update
39+
// browserslist, otherwise we ignore the error and we use the last known electron version.
40+
browserslist(installedElectronVersion);
41+
return installedElectronVersion;
42+
} catch (e) {
43+
if (!isLatestBrowserslist()) {
44+
const errorMessage = `${(e as Error).message}.
45+
Please update browserslist in webpack-config-compass:
46+
npm i -S -w @mongodb-js/webpack-config-compass browserslist@latest`;
47+
throw new Error(chalk.red(errorMessage));
48+
}
49+
50+
return 'last 1 electron version';
51+
}
52+
})();
53+
1354
/**
1455
* "Cloud Manager can be accessed on your computer through Chrome, Firefox, Safari and Edge. We no longer support IE."
1556
* @see {@link https://wiki.corp.mongodb.com/x/n5kVBQ}
@@ -36,7 +77,7 @@ export const javascriptLoader = (args: ConfigArgs, web = false) => ({
3677
{
3778
targets: web
3879
? cloudSupportedBrowserslistConfig
39-
: { electron: electronVersion },
80+
: browserslistElectronVersion,
4081
useBuiltIns: 'usage',
4182
corejs: { version: '3.12', proposals: true },
4283
},
@@ -110,7 +151,7 @@ export const cssLoader = (args: ConfigArgs, web = false) => ({
110151
{
111152
browsers: web
112153
? cloudSupportedBrowserslistConfig
113-
: `electron ${electronVersion}`,
154+
: browserslistElectronVersion,
114155
},
115156
],
116157
],

0 commit comments

Comments
 (0)