feature/IO-3725-RPS-Changes - Upgrade Electron / Related Electron packages / Sentry For Electron

This commit is contained in:
Dave
2026-05-28 15:10:04 -04:00
parent b6cd010409
commit 5f860d26e3
7 changed files with 1645 additions and 2997 deletions

View File

@@ -0,0 +1,9 @@
const { build } = require("./package.json");
module.exports = {
...build,
win: {
...build.win,
azureSignOptions: null
}
};

View File

@@ -1,7 +1,8 @@
const { randomUUID } = require("crypto");
const Store = require("electron-store");
const store = new Store({
let store;
const storeOptions = {
defaults: {
deviceId: randomUUID(),
showChangeLog: true,
@@ -11,10 +12,38 @@ const store = new Store({
runWatcherOnStartup: true,
polling: {
enabled: false,
pollingInterval: 30000,
pollingInterval: 30000
},
ins_rule_set: null
},
});
}
};
exports.store = store;
async function initializeStore() {
if (!store) {
const { default: Store } = await import("electron-store");
store = new Store(storeOptions);
}
return store;
}
function getStore() {
if (!store) {
throw new Error("Electron store was accessed before initialization.");
}
return store;
}
const storeProxy = new Proxy(
{},
{
get(_target, prop) {
const value = getStore()[prop];
return typeof value === "function" ? value.bind(getStore()) : value;
}
}
);
exports.initializeStore = initializeStore;
exports.store = storeProxy;

View File

@@ -1,20 +1,26 @@
const path = require("path");
const { app, BrowserWindow, Tray, Menu, ipcMain, dialog, shell, globalShortcut } = require("electron");
const isDev = require("electron-is-dev");
const { default: ipcTypes } = require("../src/ipc.types.commonjs");
const { store } = require("./electron-store");
const { initializeStore, store } = require("./electron-store");
const { autoUpdater } = require("electron-updater");
const log = require("electron-log");
const contextMenu = require("electron-context-menu");
const Sentry = require("@sentry/electron/main");
const isDev = !app.isPackaged;
const enableDevTools = isDev || process.env.ELECTRON_ENABLE_DEVTOOLS === "1";
const openDevToolsOnStart = enableDevTools && process.env.ELECTRON_OPEN_DEVTOOLS === "1";
const installReactDevTools = process.env.ELECTRON_INSTALL_REACT_DEVTOOLS === "1";
//const Nucleus = require("nucleus-nodejs");
require("./ipc-main-handler");
require("./analytics");
let ipcHandlersInitialized = false;
function initializeIpcHandlers() {
if (ipcHandlersInitialized) return;
require("./ipc-main-handler");
require("./analytics");
ipcHandlersInitialized = true;
}
Sentry.init({
dsn: "https://9840e0f304124299e379d9347e12d2e6@o492140.ingest.sentry.io/4505728058523648",
@@ -132,7 +138,6 @@ var menu = Menu.buildFromTemplate([
let mainWindow;
let noticeWindow;
let tray = null;
contextMenu({ showInspectElement: enableDevTools });
function createWindow() {
// Create the browser window.
@@ -228,7 +233,13 @@ function createWindow() {
// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.whenReady().then(() => {
app.whenReady().then(async () => {
await initializeStore();
initializeIpcHandlers();
const { default: contextMenu } = await import("electron-context-menu");
contextMenu({ showInspectElement: enableDevTools });
createWindow();
if (isDev) {

View File

@@ -1,11 +1,12 @@
const path = require("path");
const fs = require("fs");
const { app } = require("electron");
// Loader entrypoint:
// - In dev: run the original source (electron/main-src.js)
// - In packaged/prod: run the bundled/minified output (dist-electron/main.cjs)
const distMain = path.join(__dirname, "..", "dist-electron", "main.cjs");
const useDist = !require("electron-is-dev") && fs.existsSync(distMain);
const useDist = app.isPackaged && fs.existsSync(distMain);
require(useDist ? distMain : "./main-src");

View File

@@ -6,6 +6,7 @@ const fs = require("fs");
// - In packaged/prod: run the bundled/minified output (dist-electron/preload.cjs)
const distPreload = path.join(__dirname, "..", "dist-electron", "preload.cjs");
const useDist = !require("electron-is-dev") && fs.existsSync(distPreload);
const isDev = process.defaultApp || /[\\/]electron(?:\.exe)?$/i.test(process.execPath);
const useDist = !isDev && fs.existsSync(distPreload);
require(useDist ? distPreload : "./preload-src");

4546
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -10,7 +10,7 @@
"@amplitude/analytics-node": "^1.5.58",
"@ant-design/pro-layout": "^7.22.7",
"@apollo/client": "^3.13.4",
"@sentry/electron": "^6.1.0",
"@sentry/electron": "^7.13.0",
"@vitejs/plugin-react": "^4.3.4",
"antd": "^5.24.3",
"apollo-link-logger": "^2.0.1",
@@ -21,11 +21,11 @@
"dayjs-business-days2": "^1.3.3",
"dbffile": "^1.12.0",
"dinero.js": "^1.9.1",
"electron-context-menu": "^3.6.1",
"electron-is-dev": "^2.0.0",
"electron-context-menu": "^4.1.2",
"electron-is-dev": "^3.0.1",
"electron-log": "^5.4.4",
"electron-reload": "^2.0.0-alpha.1",
"electron-store": "^8.2.0",
"electron-store": "^11.0.2",
"electron-updater": "^6.8.3",
"eslint": "^8.57.0",
"eslint-config-react-app": "^7.0.1",
@@ -56,7 +56,7 @@
"build:electron": "node scripts/build-electron.mjs",
"dev": "concurrently -k \"npm start\" \"npm:electron\"",
"electron": "electron .",
"pack": "electron-builder --dir",
"pack": "electron-builder --dir --publish never --config electron-builder.pack-check.cjs",
"dist": "npm run build && npm run build:electron && electron-builder",
"distp": "npm run build && npm run build:electron && electron-builder --publish always",
"distnopublish": "npm run build && npm run build:electron && electron-builder --publish never",
@@ -81,8 +81,8 @@
},
"devDependencies": {
"concurrently": "^9.1.2",
"electron": "^35.0.1",
"electron-builder": "^25.1.8",
"electron": "^42.3.0",
"electron-builder": "^26.8.1",
"electron-devtools-installer": "^4.0.0",
"esbuild": "^0.28.0",
"eslint-config-react": "^1.1.7",
@@ -126,6 +126,7 @@
"icon": "src/icons/win/icon.ico",
"azureSignOptions": {
"endpoint": "https://eus.codesigning.azure.net",
"publisherName": "ImEX Systems Inc.",
"certificateProfileName": "ImEXRPS",
"codeSigningAccountName": "ImEX"
}