换机器打包

This commit is contained in:
chenqiang 2025-08-12 10:07:00 +08:00
parent 7dd4146e2c
commit 4f88bd9db1
7 changed files with 701 additions and 104 deletions

39
electron/db/migration.js Normal file
View File

@ -0,0 +1,39 @@
import path from 'path';
import fs from 'fs';
import { getSystemDbPath, getUserDbPath } from './path.js';
// 迁移数据库文件
export async function migrateDatabases() {
// 开发环境下不执行迁移
if (process.env.NODE_ENV === 'development') {
console.log('开发环境下不执行数据库迁移');
return;
}
try {
// 确保数据目录存在
const systemDbPath = getSystemDbPath();
const userDbPath = getUserDbPath();
const dataDir = path.dirname(systemDbPath);
if (!fs.existsSync(dataDir)) {
fs.mkdirSync(dataDir, { recursive: true });
console.log(`创建数据目录: ${dataDir}`);
}
// 检查数据库文件是否存在
if (fs.existsSync(systemDbPath)) {
console.log(`系统数据库已存在: ${systemDbPath}`);
} else {
console.log(`系统数据库不存在: ${systemDbPath}`);
}
if (fs.existsSync(userDbPath)) {
console.log(`用户数据库已存在: ${userDbPath}`);
} else {
console.log(`用户数据库不存在: ${userDbPath}`);
}
} catch (error) {
console.error('数据库迁移检查失败:', error);
}
}

View File

@ -9,18 +9,17 @@ const __dirname = path.dirname(__filename);
// 获取项目根目录 // 获取项目根目录
const getProjectRoot = () => { const getProjectRoot = () => {
// 从当前文件路径向上回溯找到vue目录 return path.resolve(__dirname, '../..');
return path.resolve(__dirname, '../..');
}; };
// 确保数据目录存在 // 确保数据目录存在
const ensureDataDirExists = () => { const ensureDataDirExists = () => {
const projectRoot = getProjectRoot(); const projectRoot = getProjectRoot();
const dataDir = path.join(projectRoot, 'data'); const dataDir = path.join(projectRoot, 'data');
if (!fs.existsSync(dataDir)) { if (!fs.existsSync(dataDir)) {
fs.mkdirSync(dataDir, { recursive: true }); fs.mkdirSync(dataDir, { recursive: true });
} }
return dataDir; return dataDir;
}; };
// 获取系统数据库路径 // 获取系统数据库路径

View File

@ -2,6 +2,7 @@
import { app, BrowserWindow, ipcMain, dialog } from "electron"; import { app, BrowserWindow, ipcMain, dialog } from "electron";
import path from "path"; import path from "path";
import { fileURLToPath } from "url"; import { fileURLToPath } from "url";
import { migrateDatabases } from "./db/migration.js";
import { import {
checkDatabaseInitialized, checkDatabaseInitialized,
initializeDatabase, initializeDatabase,
@ -68,9 +69,15 @@ function createWindow() {
} }
mainWindow = new BrowserWindow({ mainWindow = new BrowserWindow({
// 将fullscreen改为false添加maximized: true // 设置窗口宽度和高度为屏幕大小
fullscreen: false, width: 1200,
height: 800,
// 确保窗口最大化
maximized: true, maximized: true,
// 隐藏菜单栏
autoHideMenuBar: true,
// 完全禁用菜单栏
menuBarVisible: false,
webPreferences: { webPreferences: {
preload: path.join(__dirname, "../electron/preload.js"), preload: path.join(__dirname, "../electron/preload.js"),
nodeIntegration: false, nodeIntegration: false,
@ -78,11 +85,65 @@ function createWindow() {
}, },
}); });
// 显式调用最大化方法,确保窗口最大化
mainWindow.maximize();
if (process.env.NODE_ENV === "development") { if (process.env.NODE_ENV === "development") {
mainWindow.loadURL("http://localhost:5173/"); mainWindow.loadURL("http://localhost:5173/");
mainWindow.webContents.openDevTools(); mainWindow.webContents.openDevTools();
} else { } else {
mainWindow.loadFile(path.join(__dirname, "../dist/index.html")); // 使用应用路径来构建更可靠的加载路径
const appPath = app.getAppPath();
console.log(`应用路径: ${appPath}`);
// 尝试多种可能的路径
const pathsToTry = [
// 尝试1: 相对路径 (原有逻辑)
path.join(__dirname, "../dist/index.html"),
// 尝试2: 直接使用应用路径 + dist
path.join(appPath, "dist/index.html"),
// 尝试3: 应用路径的上一级 + dist
path.join(path.dirname(appPath), "dist/index.html")
];
let indexPath = null;
// 检查哪个路径存在
for (const pathOption of pathsToTry) {
console.log(`尝试检查路径: ${pathOption}`);
if (fs.existsSync(pathOption)) {
indexPath = pathOption;
console.log(`找到文件: ${indexPath}`);
break;
}
}
if (indexPath) {
try {
mainWindow.loadFile(indexPath);
// 添加加载完成事件监听
mainWindow.webContents.on('did-finish-load', () => {
console.log('文件加载完成');
// 显示开发者工具便于调试
mainWindow.webContents.openDevTools();
});
// 添加加载失败事件监听
mainWindow.webContents.on('did-fail-load', (event, errorCode, errorDescription) => {
console.error(`文件加载失败: ${errorCode} - ${errorDescription}`);
dialog.showErrorBox('加载失败', `无法加载应用界面: ${errorDescription}`);
});
// 添加页面崩溃事件监听
mainWindow.webContents.on('crashed', (event, killed) => {
console.error(`页面崩溃: ${killed ? '被杀死' : '意外崩溃'}`);
dialog.showErrorBox('页面崩溃', `应用界面崩溃: ${killed ? '被杀死' : '意外崩溃'}`);
});
} catch (error) {
console.error(`加载文件时出错: ${error}`);
dialog.showErrorBox('加载失败', `无法加载应用界面: ${error.message}`);
}
} else {
console.error(`所有路径都不存在: ${pathsToTry.join(', ')}`);
dialog.showErrorBox('文件不存在', `无法找到应用界面文件,请检查打包配置`);
}
} }
// 添加窗口关闭前的确认对话框 // 添加窗口关闭前的确认对话框
@ -113,34 +174,14 @@ function createWindow() {
}); });
} }
// Initalize app // 初始化应用
app.whenReady().then(() => {
setupApp();
createWindow();
setupIpcMain();
});
app.on("window-all-closed", () => {
// 在所有窗口关闭后,清空主窗口引用
mainWindow = null;
// 对于非macOS平台仍然需要退出应用
if (process.platform !== "darwin") {
app.quit();
}
});
app.on("activate", () => {
// 只有当没有窗口时才创建新窗口
if (BrowserWindow.getAllWindows().length === 0) {
createWindow();
}
});
// Check database initialization status
async function setupApp() { async function setupApp() {
try { try {
console.log("应用启动 - 检查数据库初始化状态..."); console.log("应用启动 - 检查数据库初始化状态...");
// 执行数据库迁移
await migrateDatabases();
// 使用全局变量防止重复初始化检查 // 使用全局变量防止重复初始化检查
if (global.dbInitCheck) { if (global.dbInitCheck) {
console.log("数据库初始化检查已完成"); console.log("数据库初始化检查已完成");
@ -198,13 +239,29 @@ function setupIpcMain() {
initFileIpc(ipcMain); initFileIpc(ipcMain);
} }
// 确保在 app.whenReady() 中调用 setupIpcMain() // 只保留一个app.whenReady().then()调用
app.whenReady().then(() => { app.whenReady().then(() => {
setupApp(); setupApp();
createWindow(); createWindow();
setupIpcMain(); setupIpcMain();
}); });
app.on("window-all-closed", () => {
// 在所有窗口关闭后,清空主窗口引用
mainWindow = null;
// 对于非macOS平台仍然需要退出应用
if (process.platform !== "darwin") {
app.quit();
}
});
app.on("activate", () => {
// 只有当没有窗口时才创建新窗口
if (BrowserWindow.getAllWindows().length === 0) {
createWindow();
}
});
// 在应用退出前关闭所有数据库连接 // 在应用退出前关闭所有数据库连接
app.on("will-quit", () => { app.on("will-quit", () => {
console.log("应用即将退出..."); console.log("应用即将退出...");

611
package-lock.json generated
View File

@ -28,6 +28,7 @@
"xlsx": "^0.18.5" "xlsx": "^0.18.5"
}, },
"devDependencies": { "devDependencies": {
"@electron/rebuild": "^4.0.1",
"@vitejs/plugin-vue": "^6.0.1", "@vitejs/plugin-vue": "^6.0.1",
"electron": "^37.2.5", "electron": "^37.2.5",
"electron-builder": "^26.0.12", "electron-builder": "^26.0.12",
@ -632,7 +633,7 @@
"node_modules/@electron/node-gyp": { "node_modules/@electron/node-gyp": {
"version": "10.2.0-electron.1", "version": "10.2.0-electron.1",
"resolved": "git+ssh://git@github.com/electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2", "resolved": "git+ssh://git@github.com/electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2",
"integrity": "sha512-CrYo6TntjpoMO1SHjl5Pa/JoUsECNqNdB7Kx49WLQpWzPw53eEITJ2Hs9fh/ryUYDn4pxZz11StaBYBrLFJdqg==", "integrity": "sha512-4MSBTT8y07YUDqf69/vSh80Hh791epYqGtWHO3zSKhYFwQg+gx9wi1PqbqP6YqC4WMsNxZ5l9oDmnWdK5pfCKQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -656,7 +657,7 @@
}, },
"node_modules/@electron/node-gyp/node_modules/@npmcli/fs": { "node_modules/@electron/node-gyp/node_modules/@npmcli/fs": {
"version": "2.1.2", "version": "2.1.2",
"resolved": "https://registry.npmmirror.com/@npmcli/fs/-/fs-2.1.2.tgz", "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz",
"integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==",
"dev": true, "dev": true,
"license": "ISC", "license": "ISC",
@ -670,7 +671,7 @@
}, },
"node_modules/@electron/node-gyp/node_modules/@npmcli/move-file": { "node_modules/@electron/node-gyp/node_modules/@npmcli/move-file": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmmirror.com/@npmcli/move-file/-/move-file-2.0.1.tgz", "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz",
"integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==",
"deprecated": "This functionality has been moved to @npmcli/fs", "deprecated": "This functionality has been moved to @npmcli/fs",
"dev": true, "dev": true,
@ -685,7 +686,7 @@
}, },
"node_modules/@electron/node-gyp/node_modules/@tootallnate/once": { "node_modules/@electron/node-gyp/node_modules/@tootallnate/once": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-2.0.0.tgz", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
"integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
@ -695,7 +696,7 @@
}, },
"node_modules/@electron/node-gyp/node_modules/brace-expansion": { "node_modules/@electron/node-gyp/node_modules/brace-expansion": {
"version": "2.0.2", "version": "2.0.2",
"resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.2.tgz", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
@ -705,7 +706,7 @@
}, },
"node_modules/@electron/node-gyp/node_modules/cacache": { "node_modules/@electron/node-gyp/node_modules/cacache": {
"version": "16.1.3", "version": "16.1.3",
"resolved": "https://registry.npmmirror.com/cacache/-/cacache-16.1.3.tgz", "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz",
"integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==",
"dev": true, "dev": true,
"license": "ISC", "license": "ISC",
@ -735,7 +736,7 @@
}, },
"node_modules/@electron/node-gyp/node_modules/glob": { "node_modules/@electron/node-gyp/node_modules/glob": {
"version": "8.1.0", "version": "8.1.0",
"resolved": "https://registry.npmmirror.com/glob/-/glob-8.1.0.tgz", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
"integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
"deprecated": "Glob versions prior to v9 are no longer supported", "deprecated": "Glob versions prior to v9 are no longer supported",
"dev": true, "dev": true,
@ -756,7 +757,7 @@
}, },
"node_modules/@electron/node-gyp/node_modules/http-proxy-agent": { "node_modules/@electron/node-gyp/node_modules/http-proxy-agent": {
"version": "5.0.0", "version": "5.0.0",
"resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
"integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
@ -771,7 +772,7 @@
}, },
"node_modules/@electron/node-gyp/node_modules/lru-cache": { "node_modules/@electron/node-gyp/node_modules/lru-cache": {
"version": "7.18.3", "version": "7.18.3",
"resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-7.18.3.tgz", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
"integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"dev": true, "dev": true,
"license": "ISC", "license": "ISC",
@ -781,7 +782,7 @@
}, },
"node_modules/@electron/node-gyp/node_modules/make-fetch-happen": { "node_modules/@electron/node-gyp/node_modules/make-fetch-happen": {
"version": "10.2.1", "version": "10.2.1",
"resolved": "https://registry.npmmirror.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz",
"integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==",
"dev": true, "dev": true,
"license": "ISC", "license": "ISC",
@ -809,7 +810,7 @@
}, },
"node_modules/@electron/node-gyp/node_modules/minimatch": { "node_modules/@electron/node-gyp/node_modules/minimatch": {
"version": "5.1.6", "version": "5.1.6",
"resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"dev": true, "dev": true,
"license": "ISC", "license": "ISC",
@ -822,7 +823,7 @@
}, },
"node_modules/@electron/node-gyp/node_modules/minipass-fetch": { "node_modules/@electron/node-gyp/node_modules/minipass-fetch": {
"version": "2.1.2", "version": "2.1.2",
"resolved": "https://registry.npmmirror.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz", "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz",
"integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
@ -840,7 +841,7 @@
}, },
"node_modules/@electron/node-gyp/node_modules/nopt": { "node_modules/@electron/node-gyp/node_modules/nopt": {
"version": "6.0.0", "version": "6.0.0",
"resolved": "https://registry.npmmirror.com/nopt/-/nopt-6.0.0.tgz", "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz",
"integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==",
"dev": true, "dev": true,
"license": "ISC", "license": "ISC",
@ -854,9 +855,19 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0" "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
} }
}, },
"node_modules/@electron/node-gyp/node_modules/proc-log": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz",
"integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==",
"dev": true,
"license": "ISC",
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
"node_modules/@electron/node-gyp/node_modules/semver": { "node_modules/@electron/node-gyp/node_modules/semver": {
"version": "7.7.2", "version": "7.7.2",
"resolved": "https://registry.npmmirror.com/semver/-/semver-7.7.2.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
"integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
"dev": true, "dev": true,
"license": "ISC", "license": "ISC",
@ -869,7 +880,7 @@
}, },
"node_modules/@electron/node-gyp/node_modules/socks-proxy-agent": { "node_modules/@electron/node-gyp/node_modules/socks-proxy-agent": {
"version": "7.0.0", "version": "7.0.0",
"resolved": "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz",
"integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
@ -884,7 +895,7 @@
}, },
"node_modules/@electron/node-gyp/node_modules/ssri": { "node_modules/@electron/node-gyp/node_modules/ssri": {
"version": "9.0.1", "version": "9.0.1",
"resolved": "https://registry.npmmirror.com/ssri/-/ssri-9.0.1.tgz", "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz",
"integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==",
"dev": true, "dev": true,
"license": "ISC", "license": "ISC",
@ -897,7 +908,7 @@
}, },
"node_modules/@electron/node-gyp/node_modules/unique-filename": { "node_modules/@electron/node-gyp/node_modules/unique-filename": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmmirror.com/unique-filename/-/unique-filename-2.0.1.tgz", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz",
"integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==",
"dev": true, "dev": true,
"license": "ISC", "license": "ISC",
@ -910,7 +921,7 @@
}, },
"node_modules/@electron/node-gyp/node_modules/unique-slug": { "node_modules/@electron/node-gyp/node_modules/unique-slug": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmmirror.com/unique-slug/-/unique-slug-3.0.0.tgz", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz",
"integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==",
"dev": true, "dev": true,
"license": "ISC", "license": "ISC",
@ -1049,21 +1060,21 @@
} }
}, },
"node_modules/@electron/rebuild": { "node_modules/@electron/rebuild": {
"version": "3.7.0", "version": "4.0.1",
"resolved": "https://registry.npmmirror.com/@electron/rebuild/-/rebuild-3.7.0.tgz", "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-4.0.1.tgz",
"integrity": "sha512-VW++CNSlZwMYP7MyXEbrKjpzEwhB5kDNbzGtiPEjwYysqyTCF+YbNJ210Dj3AjWsGSV4iEEwNkmJN9yGZmVvmw==", "integrity": "sha512-iMGXb6Ib7H/Q3v+BKZJoETgF9g6KMNZVbsO4b7Dmpgb5qTFqyFTzqW9F3TOSHdybv2vKYKzSS9OiZL+dcJb+1Q==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@electron/node-gyp": "git+https://github.com/electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2",
"@malept/cross-spawn-promise": "^2.0.0", "@malept/cross-spawn-promise": "^2.0.0",
"chalk": "^4.0.0", "chalk": "^4.0.0",
"debug": "^4.1.1", "debug": "^4.1.1",
"detect-libc": "^2.0.1", "detect-libc": "^2.0.1",
"fs-extra": "^10.0.0",
"got": "^11.7.0", "got": "^11.7.0",
"node-abi": "^3.45.0", "graceful-fs": "^4.2.11",
"node-api-version": "^0.2.0", "node-abi": "^4.2.0",
"node-api-version": "^0.2.1",
"node-gyp": "^11.2.0",
"ora": "^5.1.0", "ora": "^5.1.0",
"read-binary-file-arch": "^1.0.6", "read-binary-file-arch": "^1.0.6",
"semver": "^7.3.5", "semver": "^7.3.5",
@ -1074,35 +1085,347 @@
"electron-rebuild": "lib/cli.js" "electron-rebuild": "lib/cli.js"
}, },
"engines": { "engines": {
"node": ">=12.13.0" "node": ">=22.12.0"
} }
}, },
"node_modules/@electron/rebuild/node_modules/fs-extra": { "node_modules/@electron/rebuild/node_modules/@npmcli/fs": {
"version": "10.1.0", "version": "4.0.0",
"resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz", "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-4.0.0.tgz",
"integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "integrity": "sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==",
"dev": true, "dev": true,
"license": "MIT", "license": "ISC",
"dependencies": { "dependencies": {
"graceful-fs": "^4.2.0", "semver": "^7.3.5"
"jsonfile": "^6.0.1",
"universalify": "^2.0.0"
}, },
"engines": { "engines": {
"node": ">=12" "node": "^18.17.0 || >=20.5.0"
} }
}, },
"node_modules/@electron/rebuild/node_modules/jsonfile": { "node_modules/@electron/rebuild/node_modules/abbrev": {
"version": "6.1.0", "version": "3.0.1",
"resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz",
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==",
"dev": true,
"license": "ISC",
"engines": {
"node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/@electron/rebuild/node_modules/brace-expansion": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"universalify": "^2.0.0" "balanced-match": "^1.0.0"
}
},
"node_modules/@electron/rebuild/node_modules/cacache": {
"version": "19.0.1",
"resolved": "https://registry.npmjs.org/cacache/-/cacache-19.0.1.tgz",
"integrity": "sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==",
"dev": true,
"license": "ISC",
"dependencies": {
"@npmcli/fs": "^4.0.0",
"fs-minipass": "^3.0.0",
"glob": "^10.2.2",
"lru-cache": "^10.0.1",
"minipass": "^7.0.3",
"minipass-collect": "^2.0.1",
"minipass-flush": "^1.0.5",
"minipass-pipeline": "^1.2.4",
"p-map": "^7.0.2",
"ssri": "^12.0.0",
"tar": "^7.4.3",
"unique-filename": "^4.0.0"
},
"engines": {
"node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/@electron/rebuild/node_modules/cacache/node_modules/tar": {
"version": "7.4.3",
"resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz",
"integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==",
"dev": true,
"license": "ISC",
"dependencies": {
"@isaacs/fs-minipass": "^4.0.0",
"chownr": "^3.0.0",
"minipass": "^7.1.2",
"minizlib": "^3.0.1",
"mkdirp": "^3.0.1",
"yallist": "^5.0.0"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@electron/rebuild/node_modules/chownr": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
"integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
"dev": true,
"license": "BlueOak-1.0.0",
"engines": {
"node": ">=18"
}
},
"node_modules/@electron/rebuild/node_modules/fs-minipass": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz",
"integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==",
"dev": true,
"license": "ISC",
"dependencies": {
"minipass": "^7.0.3"
},
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/@electron/rebuild/node_modules/glob": {
"version": "10.4.5",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
"integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
"dev": true,
"license": "ISC",
"dependencies": {
"foreground-child": "^3.1.0",
"jackspeak": "^3.1.2",
"minimatch": "^9.0.4",
"minipass": "^7.1.2",
"package-json-from-dist": "^1.0.0",
"path-scurry": "^1.11.1"
},
"bin": {
"glob": "dist/esm/bin.mjs"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/@electron/rebuild/node_modules/isexe": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
"integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
"dev": true,
"license": "ISC",
"engines": {
"node": ">=16"
}
},
"node_modules/@electron/rebuild/node_modules/lru-cache": {
"version": "10.4.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
"integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
"dev": true,
"license": "ISC"
},
"node_modules/@electron/rebuild/node_modules/make-fetch-happen": {
"version": "14.0.3",
"resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-14.0.3.tgz",
"integrity": "sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==",
"dev": true,
"license": "ISC",
"dependencies": {
"@npmcli/agent": "^3.0.0",
"cacache": "^19.0.1",
"http-cache-semantics": "^4.1.1",
"minipass": "^7.0.2",
"minipass-fetch": "^4.0.0",
"minipass-flush": "^1.0.5",
"minipass-pipeline": "^1.2.4",
"negotiator": "^1.0.0",
"proc-log": "^5.0.0",
"promise-retry": "^2.0.1",
"ssri": "^12.0.0"
},
"engines": {
"node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/@electron/rebuild/node_modules/minimatch": {
"version": "9.0.5",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
"dev": true,
"license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/@electron/rebuild/node_modules/minipass": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
"integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
"dev": true,
"license": "ISC",
"engines": {
"node": ">=16 || 14 >=14.17"
}
},
"node_modules/@electron/rebuild/node_modules/minipass-collect": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz",
"integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==",
"dev": true,
"license": "ISC",
"dependencies": {
"minipass": "^7.0.3"
},
"engines": {
"node": ">=16 || 14 >=14.17"
}
},
"node_modules/@electron/rebuild/node_modules/minipass-fetch": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-4.0.1.tgz",
"integrity": "sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"minipass": "^7.0.3",
"minipass-sized": "^1.0.3",
"minizlib": "^3.0.1"
},
"engines": {
"node": "^18.17.0 || >=20.5.0"
}, },
"optionalDependencies": { "optionalDependencies": {
"graceful-fs": "^4.1.6" "encoding": "^0.1.13"
}
},
"node_modules/@electron/rebuild/node_modules/minizlib": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz",
"integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==",
"dev": true,
"license": "MIT",
"dependencies": {
"minipass": "^7.1.2"
},
"engines": {
"node": ">= 18"
}
},
"node_modules/@electron/rebuild/node_modules/mkdirp": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz",
"integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
"dev": true,
"license": "MIT",
"bin": {
"mkdirp": "dist/cjs/src/bin.js"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/@electron/rebuild/node_modules/negotiator": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
"integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/@electron/rebuild/node_modules/node-abi": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-4.12.0.tgz",
"integrity": "sha512-bPSN9a/qIEiURzVVO/I7P/8oPeYTSl+vnvVZBXM/8XerKOgA3dMAIUjl+a+lz9VwTowwSKS3EMsgz/vWDXOkuQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"semver": "^7.6.3"
},
"engines": {
"node": ">=22.12.0"
}
},
"node_modules/@electron/rebuild/node_modules/node-gyp": {
"version": "11.3.0",
"resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-11.3.0.tgz",
"integrity": "sha512-9J0+C+2nt3WFuui/mC46z2XCZ21/cKlFDuywULmseD/LlmnOrSeEAE4c/1jw6aybXLmpZnQY3/LmOJfgyHIcng==",
"dev": true,
"license": "MIT",
"dependencies": {
"env-paths": "^2.2.0",
"exponential-backoff": "^3.1.1",
"graceful-fs": "^4.2.6",
"make-fetch-happen": "^14.0.3",
"nopt": "^8.0.0",
"proc-log": "^5.0.0",
"semver": "^7.3.5",
"tar": "^7.4.3",
"tinyglobby": "^0.2.12",
"which": "^5.0.0"
},
"bin": {
"node-gyp": "bin/node-gyp.js"
},
"engines": {
"node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/@electron/rebuild/node_modules/node-gyp/node_modules/tar": {
"version": "7.4.3",
"resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz",
"integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==",
"dev": true,
"license": "ISC",
"dependencies": {
"@isaacs/fs-minipass": "^4.0.0",
"chownr": "^3.0.0",
"minipass": "^7.1.2",
"minizlib": "^3.0.1",
"mkdirp": "^3.0.1",
"yallist": "^5.0.0"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@electron/rebuild/node_modules/nopt": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz",
"integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==",
"dev": true,
"license": "ISC",
"dependencies": {
"abbrev": "^3.0.0"
},
"bin": {
"nopt": "bin/nopt.js"
},
"engines": {
"node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/@electron/rebuild/node_modules/p-map": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz",
"integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/@electron/rebuild/node_modules/semver": { "node_modules/@electron/rebuild/node_modules/semver": {
@ -1118,14 +1441,69 @@
"node": ">=10" "node": ">=10"
} }
}, },
"node_modules/@electron/rebuild/node_modules/universalify": { "node_modules/@electron/rebuild/node_modules/ssri": {
"version": "2.0.1", "version": "12.0.0",
"resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz", "resolved": "https://registry.npmjs.org/ssri/-/ssri-12.0.0.tgz",
"integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "integrity": "sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "ISC",
"dependencies": {
"minipass": "^7.0.3"
},
"engines": { "engines": {
"node": ">= 10.0.0" "node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/@electron/rebuild/node_modules/unique-filename": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-4.0.0.tgz",
"integrity": "sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==",
"dev": true,
"license": "ISC",
"dependencies": {
"unique-slug": "^5.0.0"
},
"engines": {
"node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/@electron/rebuild/node_modules/unique-slug": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-5.0.0.tgz",
"integrity": "sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==",
"dev": true,
"license": "ISC",
"dependencies": {
"imurmurhash": "^0.1.4"
},
"engines": {
"node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/@electron/rebuild/node_modules/which": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz",
"integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==",
"dev": true,
"license": "ISC",
"dependencies": {
"isexe": "^3.1.1"
},
"bin": {
"node-which": "bin/which.js"
},
"engines": {
"node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/@electron/rebuild/node_modules/yallist": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",
"integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
"dev": true,
"license": "BlueOak-1.0.0",
"engines": {
"node": ">=18"
} }
}, },
"node_modules/@electron/universal": { "node_modules/@electron/universal": {
@ -1953,6 +2331,29 @@
"url": "https://github.com/chalk/wrap-ansi?sponsor=1" "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
} }
}, },
"node_modules/@isaacs/fs-minipass": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
"integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
"dev": true,
"license": "ISC",
"dependencies": {
"minipass": "^7.0.4"
},
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/@isaacs/fs-minipass/node_modules/minipass": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
"integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
"dev": true,
"license": "ISC",
"engines": {
"node": ">=16 || 14 >=14.17"
}
},
"node_modules/@jridgewell/gen-mapping": { "node_modules/@jridgewell/gen-mapping": {
"version": "0.3.12", "version": "0.3.12",
"resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz",
@ -2069,6 +2470,83 @@
"node": ">= 10.0.0" "node": ">= 10.0.0"
} }
}, },
"node_modules/@npmcli/agent": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-3.0.0.tgz",
"integrity": "sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==",
"dev": true,
"license": "ISC",
"dependencies": {
"agent-base": "^7.1.0",
"http-proxy-agent": "^7.0.0",
"https-proxy-agent": "^7.0.1",
"lru-cache": "^10.0.1",
"socks-proxy-agent": "^8.0.3"
},
"engines": {
"node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/@npmcli/agent/node_modules/agent-base": {
"version": "7.1.4",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
"integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 14"
}
},
"node_modules/@npmcli/agent/node_modules/http-proxy-agent": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
"integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
"dev": true,
"license": "MIT",
"dependencies": {
"agent-base": "^7.1.0",
"debug": "^4.3.4"
},
"engines": {
"node": ">= 14"
}
},
"node_modules/@npmcli/agent/node_modules/https-proxy-agent": {
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
"integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
"dev": true,
"license": "MIT",
"dependencies": {
"agent-base": "^7.1.2",
"debug": "4"
},
"engines": {
"node": ">= 14"
}
},
"node_modules/@npmcli/agent/node_modules/lru-cache": {
"version": "10.4.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
"integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
"dev": true,
"license": "ISC"
},
"node_modules/@npmcli/agent/node_modules/socks-proxy-agent": {
"version": "8.0.5",
"resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz",
"integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==",
"dev": true,
"license": "MIT",
"dependencies": {
"agent-base": "^7.1.2",
"debug": "^4.3.4",
"socks": "^2.8.3"
},
"engines": {
"node": ">= 14"
}
},
"node_modules/@npmcli/fs": { "node_modules/@npmcli/fs": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmmirror.com/@npmcli/fs/-/fs-1.1.1.tgz", "resolved": "https://registry.npmmirror.com/@npmcli/fs/-/fs-1.1.1.tgz",
@ -3152,6 +3630,35 @@
"electron-builder-squirrel-windows": "26.0.12" "electron-builder-squirrel-windows": "26.0.12"
} }
}, },
"node_modules/app-builder-lib/node_modules/@electron/rebuild": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.7.0.tgz",
"integrity": "sha512-VW++CNSlZwMYP7MyXEbrKjpzEwhB5kDNbzGtiPEjwYysqyTCF+YbNJ210Dj3AjWsGSV4iEEwNkmJN9yGZmVvmw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@electron/node-gyp": "git+https://github.com/electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2",
"@malept/cross-spawn-promise": "^2.0.0",
"chalk": "^4.0.0",
"debug": "^4.1.1",
"detect-libc": "^2.0.1",
"fs-extra": "^10.0.0",
"got": "^11.7.0",
"node-abi": "^3.45.0",
"node-api-version": "^0.2.0",
"ora": "^5.1.0",
"read-binary-file-arch": "^1.0.6",
"semver": "^7.3.5",
"tar": "^6.0.5",
"yargs": "^17.0.1"
},
"bin": {
"electron-rebuild": "lib/cli.js"
},
"engines": {
"node": ">=12.13.0"
}
},
"node_modules/app-builder-lib/node_modules/fs-extra": { "node_modules/app-builder-lib/node_modules/fs-extra": {
"version": "10.1.0", "version": "10.1.0",
"resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz", "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz",
@ -4996,7 +5503,7 @@
}, },
"node_modules/exponential-backoff": { "node_modules/exponential-backoff": {
"version": "3.1.2", "version": "3.1.2",
"resolved": "https://registry.npmmirror.com/exponential-backoff/-/exponential-backoff-3.1.2.tgz", "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.2.tgz",
"integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==", "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==",
"dev": true, "dev": true,
"license": "Apache-2.0" "license": "Apache-2.0"
@ -7185,13 +7692,13 @@
} }
}, },
"node_modules/proc-log": { "node_modules/proc-log": {
"version": "2.0.1", "version": "5.0.0",
"resolved": "https://registry.npmmirror.com/proc-log/-/proc-log-2.0.1.tgz", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-5.0.0.tgz",
"integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", "integrity": "sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==",
"dev": true, "dev": true,
"license": "ISC", "license": "ISC",
"engines": { "engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0" "node": "^18.17.0 || >=20.5.0"
} }
}, },
"node_modules/progress": { "node_modules/progress": {

View File

@ -14,7 +14,9 @@
"preview": "vite preview", "preview": "vite preview",
"electron:dev": "vite --mode electron", "electron:dev": "vite --mode electron",
"electron:build": "vite build && electron-builder", "electron:build": "vite build && electron-builder",
"electron:build:win": "vite build && electron-builder --win --x64" "electron:build:win": "vite build && set WIN_CODE_SIGN_MIRROR=https://npmmirror.com/mirrors/electron-builder-binaries/ && electron-builder --win --x64",
"electron:build:win32": "vite build && set WIN_CODE_SIGN_MIRROR=https://npmmirror.com/mirrors/electron-builder-binaries/ && electron-builder --win --ia32",
"electron:build:portable": "vite build && set WIN_CODE_SIGN_MIRROR=https://npmmirror.com/mirrors/electron-builder-binaries/ && electron-builder --win --x64"
}, },
"dependencies": { "dependencies": {
"@element-plus/icons-vue": "^2.3.1", "@element-plus/icons-vue": "^2.3.1",
@ -37,6 +39,7 @@
"xlsx": "^0.18.5" "xlsx": "^0.18.5"
}, },
"devDependencies": { "devDependencies": {
"@electron/rebuild": "^4.0.1",
"@vitejs/plugin-vue": "^6.0.1", "@vitejs/plugin-vue": "^6.0.1",
"electron": "^37.2.5", "electron": "^37.2.5",
"electron-builder": "^26.0.12", "electron-builder": "^26.0.12",
@ -52,31 +55,23 @@
}, },
"files": [ "files": [
"dist/**/*", "dist/**/*",
"electron/**/*" "electron/**/*",
"data/**/*"
], ],
"electronDownload": {
"mirror": "https://npmmirror.com/mirrors/electron/"
},
"win": { "win": {
"target": [ "target": [
{ {
"target": "nsis", "target": "portable",
"arch": [ "arch": [
"x64" "x64"
] ]
} }
], ],
"icon": "public/favicon.ico", "icon": "public/favicon.ico",
"artifactName": "${productName}-${version}-win64.${ext}" "artifactName": "${productName}-${version}-${arch}.${ext}"
},
"nsis": {
"oneClick": false,
"allowElevation": true,
"allowToChangeInstallationDirectory": true,
"installerIcon": "public/favicon.ico",
"uninstallerIcon": "public/favicon.ico",
"installerHeaderIcon": "public/favicon.ico",
"createDesktopShortcut": true,
"createStartMenuShortcut": true,
"shortcutName": "电子考试系统",
"runAfterFinish": true
} }
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 264 KiB

BIN
public/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB