From 7536be5e49d83a34a8030035a69a00ab4a9093a4 Mon Sep 17 00:00:00 2001 From: Netfan Date: Mon, 24 Mar 2025 23:51:31 +0800 Subject: [PATCH] feat: electron support --- .gitignore | 1 + .npmrc | 1 + internal/vite-config/package.json | 3 + internal/vite-config/src/plugins/electron.ts | 40 + internal/vite-config/src/plugins/index.ts | 6 + internal/vite-config/src/typing.ts | 2 + packages/@core/base/shared/package.json | 4 +- .../@core/base/shared/src/utils/window.ts | 7 +- packages/@core/base/shared/tsconfig.json | 3 + packages/@core/base/typings/electron.d.ts | 22 + packages/@core/base/typings/package.json | 3 + playground/.env | 3 + playground/.env.production | 2 +- playground/electron/logo/logo_128.ico | Bin 0 -> 67646 bytes playground/electron/logo/logo_256.ico | Bin 0 -> 48252 bytes playground/electron/main.ts | 149 ++ playground/electron/preload.ts | 114 ++ playground/package.json | 52 +- playground/src/preferences.ts | 1 + playground/vite.config.mts | 4 +- pnpm-lock.yaml | 1535 ++++++++++++++++- pnpm-workspace.yaml | 4 + 22 files changed, 1945 insertions(+), 11 deletions(-) create mode 100644 internal/vite-config/src/plugins/electron.ts create mode 100644 packages/@core/base/typings/electron.d.ts create mode 100644 playground/electron/logo/logo_128.ico create mode 100644 playground/electron/logo/logo_256.ico create mode 100644 playground/electron/main.ts create mode 100644 playground/electron/preload.ts diff --git a/.gitignore b/.gitignore index c2a8a771f..3f4cf1a2c 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ dist-ssr dist.zip dist.tar dist.war +dist-electron .nitro .output *-dist.zip diff --git a/.npmrc b/.npmrc index f4a1ad483..e183e637f 100644 --- a/.npmrc +++ b/.npmrc @@ -1,4 +1,5 @@ registry = "https://registry.npmmirror.com" +ELECTRON_MIRROR="https://npmmirror.com/mirrors/electron/" public-hoist-pattern[]=husky public-hoist-pattern[]=eslint public-hoist-pattern[]=prettier diff --git a/internal/vite-config/package.json b/internal/vite-config/package.json index 28655a56c..97f20d885 100644 --- a/internal/vite-config/package.json +++ b/internal/vite-config/package.json @@ -47,12 +47,15 @@ "@vitejs/plugin-vue-jsx": "catalog:", "dayjs": "catalog:", "dotenv": "catalog:", + "electron": "catalog:", "rollup": "catalog:", "rollup-plugin-visualizer": "catalog:", "sass": "catalog:", "vite": "catalog:", "vite-plugin-compression": "catalog:", "vite-plugin-dts": "catalog:", + "vite-plugin-electron": "catalog:", + "vite-plugin-electron-renderer": "catalog:", "vite-plugin-html": "catalog:", "vite-plugin-lazy-import": "catalog:" } diff --git a/internal/vite-config/src/plugins/electron.ts b/internal/vite-config/src/plugins/electron.ts new file mode 100644 index 000000000..a19d08fb2 --- /dev/null +++ b/internal/vite-config/src/plugins/electron.ts @@ -0,0 +1,40 @@ +import type { PluginOption } from 'vite'; + +import type { CommonPluginOptions } from '../typing'; + +import fs from 'node:fs'; + +import electron from 'vite-plugin-electron/simple'; + +export const viteElectronPlugin = ( + options: CommonPluginOptions, +): PluginOption => { + fs.rmSync('dist-electron', { force: true, recursive: true }); + + const isServe = !options.isBuild; + const isBuild = options.isBuild; + const sourcemap = isServe || !!process.env.VSCODE_DEBUG; + return electron({ + main: { + entry: 'electron/main.ts', + vite: { + build: { + minify: isBuild, + outDir: 'dist-electron/main', + sourcemap, + }, + }, + }, + preload: { + input: 'electron/preload.ts', + vite: { + build: { + minify: isBuild, + outDir: 'dist-electron/preload', + sourcemap: sourcemap ? 'inline' : undefined, // #332 + }, + }, + }, + renderer: {}, + }); +}; diff --git a/internal/vite-config/src/plugins/index.ts b/internal/vite-config/src/plugins/index.ts index da08db4b8..02eba3d0c 100644 --- a/internal/vite-config/src/plugins/index.ts +++ b/internal/vite-config/src/plugins/index.ts @@ -18,6 +18,7 @@ import { VitePWA } from 'vite-plugin-pwa'; import viteVueDevTools from 'vite-plugin-vue-devtools'; import { viteArchiverPlugin } from './archiver'; +import { viteElectronPlugin } from './electron'; import { viteExtraAppConfigPlugin } from './extra-app-config'; import { viteImportMapPlugin } from './importmap'; import { viteInjectAppLoadingPlugin } from './inject-app-loading'; @@ -97,6 +98,7 @@ async function loadApplicationPlugins( archiverPluginOptions, compress, compressTypes, + electron, extraAppConfig, html, i18n, @@ -213,6 +215,10 @@ async function loadApplicationPlugins( return [await viteArchiverPlugin(archiverPluginOptions)]; }, }, + { + condition: electron, + plugins: () => [viteElectronPlugin(commonOptions)], + }, ]); } diff --git a/internal/vite-config/src/typing.ts b/internal/vite-config/src/typing.ts index 31683cc75..2b39cd364 100644 --- a/internal/vite-config/src/typing.ts +++ b/internal/vite-config/src/typing.ts @@ -95,6 +95,8 @@ interface ApplicationPluginOptions extends CommonPluginOptions { compress?: boolean; /** 压缩类型 */ compressTypes?: ('brotli' | 'gzip')[]; + /** 启用electron */ + electron?: boolean; /** 在构建的时候抽离配置文件 */ extraAppConfig?: boolean; /** 是否开启html插件 */ diff --git a/packages/@core/base/shared/package.json b/packages/@core/base/shared/package.json index 70ad17c35..7f783fa5c 100644 --- a/packages/@core/base/shared/package.json +++ b/packages/@core/base/shared/package.json @@ -98,6 +98,8 @@ "@types/lodash.get": "catalog:", "@types/lodash.isequal": "catalog:", "@types/lodash.set": "catalog:", - "@types/nprogress": "catalog:" + "@types/nprogress": "catalog:", + "@vben-core/typings": "workspace:*", + "electron": "catalog:" } } diff --git a/packages/@core/base/shared/src/utils/window.ts b/packages/@core/base/shared/src/utils/window.ts index 4608f4be9..9224d6bcd 100644 --- a/packages/@core/base/shared/src/utils/window.ts +++ b/packages/@core/base/shared/src/utils/window.ts @@ -28,10 +28,11 @@ function openWindow(url: string, options: OpenWindowOptions = {}): void { * @param path */ function openRouteInNewWindow(path: string) { - const { hash, origin } = location; + // const { hash, origin } = location; const fullPath = path.startsWith('/') ? path : `/${path}`; - const url = `${origin}${hash ? '/#' : ''}${fullPath}`; - openWindow(url, { target: '_blank' }); + // const url = `${origin}${hash ? '/#' : ''}${fullPath}`; + // openWindow(url, { target: '_blank' }); + window.ipcRenderer.invoke('open-win', fullPath); } export { openRouteInNewWindow, openWindow }; diff --git a/packages/@core/base/shared/tsconfig.json b/packages/@core/base/shared/tsconfig.json index f6860a328..fda16a99e 100644 --- a/packages/@core/base/shared/tsconfig.json +++ b/packages/@core/base/shared/tsconfig.json @@ -1,6 +1,9 @@ { "$schema": "https://json.schemastore.org/tsconfig", "extends": "@vben/tsconfig/library.json", + "compilerOptions": { + "types": ["@vben-core/typings/electron"] + }, "include": ["src"], "exclude": ["node_modules"] } diff --git a/packages/@core/base/typings/electron.d.ts b/packages/@core/base/typings/electron.d.ts new file mode 100644 index 000000000..129d77d84 --- /dev/null +++ b/packages/@core/base/typings/electron.d.ts @@ -0,0 +1,22 @@ +import type { IpcRendererEvent } from 'electron'; + +export type IpcRendererInvoke = 'open-win'; + +declare global { + interface Window { + ipcRenderer: { + invoke: (channel: IpcRendererInvoke, ...args: any[]) => Promise; + off: ( + channel: string, + listener: (event: IpcRendererEvent, ...args: any[]) => void, + ) => void; + on: ( + channel: string, + listener: (event: IpcRendererEvent, ...args: any[]) => void, + ) => void; + send: (channel: string, data: any) => Promise; + }; + } +} + +export {}; diff --git a/packages/@core/base/typings/package.json b/packages/@core/base/typings/package.json index 6073fbcdd..a60ffdf77 100644 --- a/packages/@core/base/typings/package.json +++ b/packages/@core/base/typings/package.json @@ -27,6 +27,9 @@ }, "./vue-router": { "types": "./vue-router.d.ts" + }, + "./electron": { + "types": "./electron.d.ts" } }, "publishConfig": { diff --git a/playground/.env b/playground/.env index 329573030..e7ebd7b98 100644 --- a/playground/.env +++ b/playground/.env @@ -3,3 +3,6 @@ VITE_APP_TITLE=Vben Admin # 应用命名空间,用于缓存、store等功能的前缀,确保隔离 VITE_APP_NAMESPACE=vben-web-play + +# vue-router 的模式 +VITE_ROUTER_HISTORY=hash diff --git a/playground/.env.production b/playground/.env.production index 5375847a6..5a878a28c 100644 --- a/playground/.env.production +++ b/playground/.env.production @@ -1,4 +1,4 @@ -VITE_BASE=/ +VITE_BASE=./ # 接口地址 VITE_GLOB_API_URL=https://mock-napi.vben.pro/api diff --git a/playground/electron/logo/logo_128.ico b/playground/electron/logo/logo_128.ico new file mode 100644 index 0000000000000000000000000000000000000000..1b4239d0cd37b979e5e5a36247fa293103a958c9 GIT binary patch literal 67646 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 L>f3O36t8;$bzqF8 literal 0 HcmV?d00001 diff --git a/playground/electron/logo/logo_256.ico b/playground/electron/logo/logo_256.ico new file mode 100644 index 0000000000000000000000000000000000000000..5e0d42775f675b9584630bc74a0746738cf0b826 GIT binary patch literal 48252 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 Q%>V!Z07*qoM6N<$f~`9FP5=M^ literal 0 HcmV?d00001 diff --git a/playground/electron/main.ts b/playground/electron/main.ts new file mode 100644 index 000000000..3b79adc0d --- /dev/null +++ b/playground/electron/main.ts @@ -0,0 +1,149 @@ +import os from 'node:os'; +import path from 'node:path'; +import process from 'node:process'; +import { fileURLToPath } from 'node:url'; + +import { + app, + BrowserWindow, + globalShortcut, + ipcMain, + Menu, + shell, +} from 'electron'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +process.env.APP_ROOT = path.join(__dirname, '../..'); + +export const MAIN_DIST = path.join(process.env.APP_ROOT, 'dist-electron'); +export const RENDERER_DIST = path.join(process.env.APP_ROOT, 'dist'); +export const VITE_DEV_SERVER_URL = process.env.VITE_DEV_SERVER_URL; + +process.env.VITE_PUBLIC = VITE_DEV_SERVER_URL + ? path.join(process.env.APP_ROOT, 'public') + : RENDERER_DIST; + +// Disable GPU Acceleration for Windows 7 +if (os.release().startsWith('6.1')) app.disableHardwareAcceleration(); + +// Set application name for Windows 10+ notifications +if (process.platform === 'win32') app.setAppUserModelId(app.getName()); + +if (!app.requestSingleInstanceLock()) { + app.quit(); +} + +let win: BrowserWindow | null = null; +const preload = path.join(__dirname, '../preload/preload.mjs'); +const indexHtml = path.join(RENDERER_DIST, 'index.html'); + +async function createWindow() { + win = new BrowserWindow({ + autoHideMenuBar: true, + height: 900, + icon: path.join(process.env.VITE_PUBLIC as string, 'favicon.ico'), + show: false, + title: 'Main window', + webPreferences: { + contextIsolation: true, + nodeIntegration: false, + preload, + webSecurity: true, + }, + width: 1440, + }); + + // 监听窗口准备好显示的事件 + win.once('ready-to-show', () => { + win?.maximize(); // 最大化窗口 + win?.show(); // 显示窗口 + }); + + if (VITE_DEV_SERVER_URL) { + win.loadURL(VITE_DEV_SERVER_URL); + } else { + win.loadFile(indexHtml); + } + + // Test actively push message to the Electron-Renderer + win.webContents.on('did-finish-load', () => { + win?.webContents.send('main-process-message', new Date().toLocaleString()); + }); + + // Make all links open with the browser, not with the application + win.webContents.setWindowOpenHandler(({ url }) => { + if (url.startsWith('https:')) shell.openExternal(url); + return { action: 'deny' }; + }); + // win.webContents.on('will-navigate', (event, url) => { }) #344 +} +Menu.setApplicationMenu(null); +app + .whenReady() + .then(createWindow) + .then(() => { + // 禁用了菜单之后,默认的快捷键也会被禁用,这里重新注册部分常用快捷键 + if (VITE_DEV_SERVER_URL) { + // 开发模式下监听快捷键来打开开发者工具 + globalShortcut.register('CmdOrCtrl+Shift+I', () => { + BrowserWindow.getFocusedWindow()?.webContents.toggleDevTools(); + }); + } + // 监听快捷键来刷新页面 + globalShortcut.registerAll(['CmdOrCtrl+R', 'CmdOrCtrl+F5'], () => { + BrowserWindow.getFocusedWindow()?.webContents.reload(); + }); + // 监听快捷键来强制刷新页面 + globalShortcut.registerAll( + ['CmdOrCtrl+Shift+R', 'CmdOrCtrl+Shift+F5'], + () => { + BrowserWindow.getFocusedWindow()?.webContents.reloadIgnoringCache(); + }, + ); + }); + +app.on('window-all-closed', () => { + win = null; + if (process.platform !== 'darwin') app.quit(); +}); + +app.on('will-quit', () => { + globalShortcut.unregisterAll(); +}); + +app.on('second-instance', () => { + if (win) { + // Focus on the main window if the user tried to open another + if (win.isMinimized()) win.restore(); + win.focus(); + } +}); + +app.on('activate', () => { + const allWindows = BrowserWindow.getAllWindows(); + if (allWindows.length > 0) { + allWindows[0].focus(); + } else { + createWindow(); + } +}); + +// New window example arg: new windows url +ipcMain.handle('open-win', (_, arg) => { + const childWindow = new BrowserWindow({ + webPreferences: { + contextIsolation: true, + nodeIntegration: true, + preload, + webviewTag: true, + }, + }); + + if (VITE_DEV_SERVER_URL) { + childWindow.loadURL(`${VITE_DEV_SERVER_URL}#${arg}`); + childWindow.webContents.openDevTools(); + } else { + childWindow.loadFile(indexHtml, { hash: arg }); + } +}); diff --git a/playground/electron/preload.ts b/playground/electron/preload.ts new file mode 100644 index 000000000..270379042 --- /dev/null +++ b/playground/electron/preload.ts @@ -0,0 +1,114 @@ +import { contextBridge, ipcRenderer } from 'electron'; + +// --------- Expose some API to the Renderer process --------- +contextBridge.exposeInMainWorld('ipcRenderer', { + invoke(...args: Parameters) { + const [channel, ...omit] = args; + return ipcRenderer.invoke(channel, ...omit); + }, + off(...args: Parameters) { + const [channel, ...omit] = args; + return ipcRenderer.off(channel, ...omit); + }, + on(...args: Parameters) { + const [channel, listener] = args; + return ipcRenderer.on(channel, (event, ...args) => + listener(event, ...args), + ); + }, + send(...args: Parameters) { + const [channel, ...omit] = args; + return ipcRenderer.send(channel, ...omit); + }, + + // You can expose other APTs you need here. + // ... +}); + +// --------- Preload scripts loading --------- +// function domReady( +// condition: DocumentReadyState[] = ['complete', 'interactive'], +// ) { +// return new Promise((resolve) => { +// if (condition.includes(document.readyState)) { +// resolve(true); +// } else { +// document.addEventListener('readystatechange', () => { +// if (condition.includes(document.readyState)) { +// resolve(true); +// } +// }); +// } +// }); +// } + +// const safeDOM = { +// append(parent: HTMLElement, child: HTMLElement) { +// if (![...parent.children].includes(child)) { +// return parent.append(child); +// } +// }, +// remove(parent: HTMLElement, child: HTMLElement) { +// if ([...parent.children].includes(child)) { +// return child.remove(); +// } +// }, +// }; + +// function useLoading() { +// const className = `loaders-css__square-spin`; +// const styleContent = ` +// @keyframes square-spin { +// 25% { transform: perspective(100px) rotateX(180deg) rotateY(0); } +// 50% { transform: perspective(100px) rotateX(180deg) rotateY(180deg); } +// 75% { transform: perspective(100px) rotateX(0) rotateY(180deg); } +// 100% { transform: perspective(100px) rotateX(0) rotateY(0); } +// } +// .${className} > div { +// animation-fill-mode: both; +// width: 50px; +// height: 50px; +// background: #fff; +// animation: square-spin 3s 0s cubic-bezier(0.09, 0.57, 0.49, 0.9) infinite; +// } +// .app-loading-wrap { +// position: fixed; +// top: 0; +// left: 0; +// width: 100vw; +// height: 100vh; +// display: flex; +// align-items: center; +// justify-content: center; +// background: #282c34; +// z-index: 9; +// } +// `; +// const oStyle = document.createElement('style'); +// const oDiv = document.createElement('div'); + +// oStyle.id = 'app-loading-style'; +// oStyle.innerHTML = styleContent; +// oDiv.className = 'app-loading-wrap'; +// oDiv.innerHTML = `
`; + +// return { +// appendLoading() { +// safeDOM.append(document.head, oStyle); +// safeDOM.append(document.body, oDiv); +// }, +// removeLoading() { +// safeDOM.remove(document.head, oStyle); +// safeDOM.remove(document.body, oDiv); +// }, +// }; +// } + +// const { appendLoading, removeLoading } = useLoading(); +// domReady().then(appendLoading); + +// window.onmessage = (ev) => { +// ev.data.payload === 'removeLoading' && removeLoading(); +// }; + +// setTimeout(removeLoading, 4999); diff --git a/playground/package.json b/playground/package.json index 0cc4ebf8d..5d8f6cc53 100644 --- a/playground/package.json +++ b/playground/package.json @@ -16,18 +16,61 @@ }, "type": "module", "scripts": { - "build": "pnpm vite build --mode production", + "build": "pnpm vite build --mode production && electron-builder", "build:analyze": "pnpm vite build --mode analyze", - "dev": "pnpm vite --mode development", + "dev": "cross-env ELECTRON_DISABLE_SECURITY_WARNINGS=true pnpm vite --mode development", "preview": "vite preview", "typecheck": "vue-tsc --noEmit --skipLibCheck", "test:e2e": "playwright test", "test:e2e-ui": "playwright test --ui", "test:e2e-codegen": "playwright codegen" }, + "main": "dist-electron/main/main.js", + "debug": { + "env": { + "VITE_DEV_SERVER_URL": "http://127.0.0.1:5555/" + } + }, "imports": { "#/*": "./src/*" }, + "build": { + "productName": "VbenAdminPlayground", + "appId": "pro.vben.playground", + "copyright": "vben.pro © 2025", + "compression": "maximum", + "artifactName": "${productName}-v${version}-${platform}-${arch}.${ext}", + "asar": true, + "directories": { + "output": "dist-electron/release" + }, + "files": [ + "dist/**/*", + "dist-electron/**/*", + "package.json", + "!node_modules/**", + "!dist-electron/release/**" + ], + "nsis": { + "oneClick": false, + "allowToChangeInstallationDirectory": true, + "perMachine": true, + "deleteAppDataOnUninstall": true, + "createDesktopShortcut": true, + "createStartMenuShortcut": true, + "shortcutName": "VbenAdmin" + }, + "win": { + "icon": "./electron/logo/logo_256.ico", + "target": "nsis" + }, + "mac": { + "icon": "./electron/logo/logo_256.ico" + }, + "linux": { + "icon": "./electron/logo/logo_256.ico" + } + }, "dependencies": { "@tanstack/vue-query": "catalog:", "@vben-core/menu-ui": "workspace:*", @@ -51,5 +94,10 @@ "pinia": "catalog:", "vue": "catalog:", "vue-router": "catalog:" + }, + "devDependencies": { + "cross-env": "catalog:", + "electron": "catalog:", + "electron-builder": "catalog:" } } diff --git a/playground/src/preferences.ts b/playground/src/preferences.ts index b2e9ace43..4340300d2 100644 --- a/playground/src/preferences.ts +++ b/playground/src/preferences.ts @@ -8,6 +8,7 @@ import { defineOverridesPreferences } from '@vben/preferences'; export const overridesPreferences = defineOverridesPreferences({ // overrides app: { + enableCheckUpdates: false, name: import.meta.env.VITE_APP_TITLE, }, }); diff --git a/playground/vite.config.mts b/playground/vite.config.mts index b6360f1d4..934258945 100644 --- a/playground/vite.config.mts +++ b/playground/vite.config.mts @@ -2,7 +2,9 @@ import { defineConfig } from '@vben/vite-config'; export default defineConfig(async () => { return { - application: {}, + application: { + electron: true, + }, vite: { server: { proxy: { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 057d32a5b..ad2f1f3ff 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -216,6 +216,12 @@ catalogs: echarts: specifier: ^5.6.0 version: 5.6.0 + electron: + specifier: ^35.0.3 + version: 35.0.3 + electron-builder: + specifier: ^25.1.8 + version: 25.1.8 element-plus: specifier: ^2.9.7 version: 2.9.7 @@ -462,6 +468,12 @@ catalogs: vite-plugin-dts: specifier: ^4.5.3 version: 4.5.3 + vite-plugin-electron: + specifier: ^0.29.0 + version: 0.29.0 + vite-plugin-electron-renderer: + specifier: ^0.14.6 + version: 0.14.6 vite-plugin-html: specifier: ^3.2.2 version: 3.2.2 @@ -1184,6 +1196,9 @@ importers: dotenv: specifier: 'catalog:' version: 16.4.7 + electron: + specifier: 'catalog:' + version: 35.0.3 rollup: specifier: 'catalog:' version: 4.39.0 @@ -1202,6 +1217,12 @@ importers: vite-plugin-dts: specifier: 'catalog:' version: 4.5.3(@types/node@22.14.0)(rollup@4.39.0)(typescript@5.8.3)(vite@6.2.5(@types/node@22.14.0)(jiti@2.4.2)(less@4.3.0)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.0)) + vite-plugin-electron: + specifier: 'catalog:' + version: 0.29.0(vite-plugin-electron-renderer@0.14.6) + vite-plugin-electron-renderer: + specifier: 'catalog:' + version: 0.14.6 vite-plugin-html: specifier: 'catalog:' version: 3.2.2(vite@6.2.5(@types/node@22.14.0)(jiti@2.4.2)(less@4.3.0)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.0)) @@ -1280,6 +1301,12 @@ importers: '@types/nprogress': specifier: 'catalog:' version: 0.2.3 + '@vben-core/typings': + specifier: workspace:* + version: link:../typings + electron: + specifier: 'catalog:' + version: 35.0.3 packages/@core/base/typings: dependencies: @@ -1883,6 +1910,16 @@ importers: vue-router: specifier: 'catalog:' version: 4.5.0(vue@3.5.13(typescript@5.8.3)) + devDependencies: + cross-env: + specifier: 'catalog:' + version: 7.0.3 + electron: + specifier: 'catalog:' + version: 35.0.3 + electron-builder: + specifier: 'catalog:' + version: 25.1.8(electron-builder-squirrel-windows@25.1.8) scripts/turbo-run: dependencies: @@ -1916,6 +1953,9 @@ importers: packages: + 7zip-bin@5.2.0: + resolution: {integrity: sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==} + '@algolia/autocomplete-core@1.17.7': resolution: {integrity: sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==} @@ -3242,6 +3282,10 @@ packages: resolution: {integrity: sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==} engines: {node: '>=14'} + '@develar/schema-utils@2.6.5': + resolution: {integrity: sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==} + engines: {node: '>= 8.9.0'} + '@docsearch/css@3.8.2': resolution: {integrity: sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==} @@ -3268,6 +3312,33 @@ packages: '@dual-bundle/import-meta-resolve@4.1.0': resolution: {integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==} + '@electron/asar@3.4.1': + resolution: {integrity: sha512-i4/rNPRS84t0vSRa2HorerGRXWyF4vThfHesw0dmcWHp+cspK743UanA0suA5Q5y8kzY2y6YKrvbIUn69BCAiA==} + engines: {node: '>=10.12.0'} + hasBin: true + + '@electron/get@2.0.3': + resolution: {integrity: sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==} + engines: {node: '>=12'} + + '@electron/notarize@2.5.0': + resolution: {integrity: sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==} + engines: {node: '>= 10.0.0'} + + '@electron/osx-sign@1.3.1': + resolution: {integrity: sha512-BAfviURMHpmb1Yb50YbCxnOY0wfwaLXH5KJ4+80zS0gUkzDX3ec23naTlEqKsN+PwYn+a1cCzM7BJ4Wcd3sGzw==} + engines: {node: '>=12.0.0'} + hasBin: true + + '@electron/rebuild@3.6.1': + resolution: {integrity: sha512-f6596ZHpEq/YskUd8emYvOUne89ij8mQgjYFA5ru25QwbrRO+t1SImofdDv7kKOuWCmVOuU5tvfkbgGxIl3E/w==} + engines: {node: '>=12.13.0'} + hasBin: true + + '@electron/universal@2.0.1': + resolution: {integrity: sha512-fKpv9kg4SPmt+hY7SVBnIYULE9QJl8L3sCfcBsnqbJwwBwAeTLokJ9TRt9y7bK0JAzIW2y78TVVjvnQEms/yyA==} + engines: {node: '>=16.4'} + '@element-plus/icons-vue@2.3.1': resolution: {integrity: sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==} peerDependencies: @@ -3664,6 +3735,14 @@ packages: '@keyv/serialize@1.0.3': resolution: {integrity: sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==} + '@malept/cross-spawn-promise@2.0.0': + resolution: {integrity: sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==} + engines: {node: '>= 12.13.0'} + + '@malept/flatpak-bundler@0.4.0': + resolution: {integrity: sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==} + engines: {node: '>= 10.0.0'} + '@manypkg/find-root@1.1.0': resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} @@ -3736,11 +3815,20 @@ packages: '@npmcli/fs@1.1.1': resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} + '@npmcli/fs@2.1.2': + resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + '@npmcli/move-file@1.1.2': resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==} engines: {node: '>=10'} deprecated: This functionality has been moved to @npmcli/fs + '@npmcli/move-file@2.0.1': + resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This functionality has been moved to @npmcli/fs + '@nuxt/kit@3.16.0': resolution: {integrity: sha512-yPfhk58BG6wJhELkGOTCOlkMDbZkizk3IaINcyTKm+hBKiK3SheLt7S9HStNL+qZSfH2Cf7A8sYp6M72lOIEtA==} engines: {node: '>=18.12.0'} @@ -4288,6 +4376,10 @@ packages: '@simonwep/pickr@1.8.2': resolution: {integrity: sha512-/l5w8BIkrpP6n1xsetx9MWPWlU6OblN5YgZZphxan0Tq4BByTCETL6lyIeY8lagalS2Nbt4F2W034KHLIiunKA==} + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + '@sindresorhus/is@7.0.1': resolution: {integrity: sha512-QWLl2P+rsCJeofkDNIT3WFmb6NrRud1SUYW8dIhXK/46XFV8Q/g7Bsvib0Askb0reRLe+WYPeeE+l5cH7SlkuQ==} engines: {node: '>=18'} @@ -4318,6 +4410,10 @@ packages: '@sxzz/popperjs-es@2.11.7': resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==} + '@szmarczak/http-timer@4.0.6': + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} + engines: {node: '>=10'} + '@tailwindcss/nesting@0.0.0-insiders.565cd3e': resolution: {integrity: sha512-WhHoFBx19TnH/c+xLwT/sxei6+4RpdfiyG3MYXfmLaMsADmVqBkF7B6lDalgZD9YdM459MF7DtxVbWkOrV7IaQ==} peerDependencies: @@ -4368,6 +4464,10 @@ packages: resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} engines: {node: '>= 6'} + '@tootallnate/once@2.0.0': + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + '@trysound/sax@0.2.0': resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} @@ -4384,9 +4484,15 @@ packages: '@types/bintrees@1.0.6': resolution: {integrity: sha512-pZWT4Bz+tWwxlDspSjdoIza4PE5lbGI4Xvs3FZV/2v5m5SDA8LwNpU8AXxlndmARO7OaQ1Vf3zFenOsNMzaRkQ==} + '@types/cacheable-request@6.0.3': + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} + '@types/conventional-commits-parser@5.0.1': resolution: {integrity: sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==} + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/doctrine@0.0.9': resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} @@ -4402,12 +4508,18 @@ packages: '@types/estree@1.0.7': resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/fs-extra@9.0.13': + resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} + '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} '@types/html-minifier-terser@7.0.2': resolution: {integrity: sha512-mm2HqV22l8lFQh4r2oSsOEVea+m0qqxEmwpc9kC1p/XzmjLWrReR9D/GRs8Pex2NX/imyEH9c5IU/7tMBQCHOA==} + '@types/http-cache-semantics@4.0.4': + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -4417,6 +4529,9 @@ packages: '@types/katex@0.16.7': resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==} + '@types/keyv@3.1.4': + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + '@types/linkify-it@5.0.0': resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} @@ -4474,6 +4589,9 @@ packages: '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + '@types/plist@3.0.5': + resolution: {integrity: sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==} + '@types/postcss-import@14.0.3': resolution: {integrity: sha512-raZhRVTf6Vw5+QbmQ7LOHSDML71A5rj4+EqDzAbrZPfxfoGzFxMHRCq16VlddGIZpHELw0BG4G0YE2ANkdZiIQ==} @@ -4489,6 +4607,9 @@ packages: '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + '@types/responselike@1.0.3': + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + '@types/sortablejs@1.15.8': resolution: {integrity: sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg==} @@ -4498,6 +4619,9 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/verror@1.10.11': + resolution: {integrity: sha512-RlDm9K7+o5stv0Co8i8ZRGxDbrTxhJtgjqjFyVh/tXQyl/rYtTKlnTvZ88oSTeYREWurwx20Js4kTuKCsFkUtg==} + '@types/web-bluetooth@0.0.16': resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} @@ -4507,6 +4631,9 @@ packages: '@types/web-bluetooth@0.0.21': resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + '@typescript-eslint/eslint-plugin@8.29.1': resolution: {integrity: sha512-ba0rr4Wfvg23vERs3eB+P3lfj2E+2g3lhWcCVukUuhtcdUx5lSIFZlGFEBHKr+3zizDa/TvZTptdNHVZWAkSBg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4948,10 +5075,17 @@ packages: peerDependencies: vue: ^3.5.13 + '@xmldom/xmldom@0.8.10': + resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} + engines: {node: '>=10.0.0'} + JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true + abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + abbrev@2.0.0: resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -5011,6 +5145,11 @@ packages: ajv: optional: true + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -5073,10 +5212,35 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} + app-builder-bin@5.0.0-alpha.10: + resolution: {integrity: sha512-Ev4jj3D7Bo+O0GPD2NMvJl+PGiBAfS7pUGawntBNpCbxtpncfUixqFj9z9Jme7V7s3LBGqsWZZP54fxBX3JKJw==} + + app-builder-lib@25.1.8: + resolution: {integrity: sha512-pCqe7dfsQFBABC1jeKZXQWhGcCPF3rPCXDdfqVKjIeWBcXzyC1iOWZdfFhGl+S9MyE/k//DFmC6FzuGAUudNDg==} + engines: {node: '>=14.0.0'} + peerDependencies: + dmg-builder: 25.1.8 + electron-builder-squirrel-windows: 25.1.8 + + aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + + archiver-utils@2.1.0: + resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} + engines: {node: '>= 6'} + + archiver-utils@3.0.4: + resolution: {integrity: sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==} + engines: {node: '>= 10'} + archiver-utils@5.0.2: resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} engines: {node: '>= 14'} + archiver@5.3.2: + resolution: {integrity: sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==} + engines: {node: '>= 10'} + archiver@7.0.1: resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} engines: {node: '>= 14'} @@ -5085,6 +5249,11 @@ packages: resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} engines: {node: '>=14'} + are-we-there-yet@3.0.1: + resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. + arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} @@ -5127,6 +5296,10 @@ packages: resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} engines: {node: '>=8'} + assert-plus@1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} @@ -5135,6 +5308,10 @@ packages: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} + async-exit-hook@2.0.1: + resolution: {integrity: sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==} + engines: {node: '>=0.12.0'} + async-function@1.0.0: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} @@ -5224,9 +5401,22 @@ packages: birpc@0.2.19: resolution: {integrity: sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==} + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + bluebird-lst@1.0.9: + resolution: {integrity: sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==} + + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + boolean@3.2.0: + resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + boxen@8.0.1: resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==} engines: {node: '>=18'} @@ -5246,6 +5436,9 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + buffer-crc32@1.0.0: resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} engines: {node: '>=8.0.0'} @@ -5256,9 +5449,19 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + builder-util-runtime@9.2.10: + resolution: {integrity: sha512-6p/gfG1RJSQeIbz8TK5aPNkoztgY1q5TgmGFMAXcY8itsGW6Y2ld1ALsZ5UJn8rog7hKF3zHx5iQbNQ8uLcRlw==} + engines: {node: '>=12.0.0'} + + builder-util@25.1.7: + resolution: {integrity: sha512-7jPjzBwEGRbwNcep0gGNpLXG9P94VA3CPAZQCzxkFXiV2GMQKlziMbY//rXPI7WKfhsvGgFXjTcXdBEwgXw9ww==} + builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} @@ -5283,6 +5486,18 @@ packages: resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==} engines: {node: '>= 10'} + cacache@16.1.3: + resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + cacheable-lookup@5.0.4: + resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} + engines: {node: '>=10.6.0'} + + cacheable-request@7.0.4: + resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} + engines: {node: '>=8'} + cacheable@1.8.9: resolution: {integrity: sha512-FicwAUyWnrtnd4QqYAoRlNs44/a1jTL7XDKqm5gJ90wz1DQPlC7U2Rd1Tydpv+E7WAr4sQHuw8Q8M3nZMAyecQ==} @@ -5388,6 +5603,9 @@ packages: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} + chromium-pickle-js@0.2.0: + resolution: {integrity: sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==} + ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} @@ -5426,6 +5644,10 @@ packages: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + cli-cursor@5.0.0: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} @@ -5434,6 +5656,10 @@ packages: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} + cli-truncate@2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} + cli-truncate@4.0.0: resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} engines: {node: '>=18'} @@ -5455,6 +5681,13 @@ packages: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} + clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} @@ -5470,6 +5703,10 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} @@ -5502,6 +5739,10 @@ packages: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} + commander@5.1.0: + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + engines: {node: '>= 6'} + commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} @@ -5534,12 +5775,20 @@ packages: compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + compare-version@0.1.2: + resolution: {integrity: sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==} + engines: {node: '>=0.10.0'} + compare-versions@6.1.1: resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==} compatx@0.1.8: resolution: {integrity: sha512-jcbsEAR81Bt5s1qOFymBufmCbXCXbk0Ql+K5ouj6gCyx2yHlu6AgmGIi9HxfKixpUDO5bCFJUHQ5uM6ecbTebw==} + compress-commons@4.1.2: + resolution: {integrity: sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==} + engines: {node: '>= 10'} + compress-commons@6.0.2: resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} engines: {node: '>= 14'} @@ -5559,6 +5808,9 @@ packages: config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + config-file-ts@0.2.8-rc1: + resolution: {integrity: sha512-GtNECbVI82bT4RiDIzBSVuTKoSHufnU7Ce7/42bkWZJZFLjmDF2WBpVsvRkhKCfKBnTBb3qZrBwPpFBU/Myvhg==} + configstore@7.0.0: resolution: {integrity: sha512-yk7/5PN5im4qwz0WFZW3PXnzHgPu9mX29Y8uZ3aefe2lBPC1FYttWZRcaW9fKkT0pBCJyuQ2HfbmPVaODi9jcQ==} engines: {node: '>=18'} @@ -5578,6 +5830,9 @@ packages: resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} + console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + conventional-changelog-angular@7.0.0: resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} engines: {node: '>=16'} @@ -5617,6 +5872,9 @@ packages: core-js@3.41.0: resolution: {integrity: sha512-SJ4/EHwS36QMJd6h/Rg+GyR4A5xE0FSI3eZ+iBVpfqf1x0eTSg1smWLHrA+2jQThZSh97fmSgFSU8B61nxosxA==} + core-util-is@1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -5646,10 +5904,17 @@ packages: engines: {node: '>=0.8'} hasBin: true + crc32-stream@4.0.3: + resolution: {integrity: sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==} + engines: {node: '>= 10'} + crc32-stream@6.0.0: resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} engines: {node: '>= 14'} + crc@3.8.0: + resolution: {integrity: sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==} + croner@9.0.0: resolution: {integrity: sha512-onMB0OkDjkXunhdW9htFjEhqrD54+M94i6ackoUkjHKbRnXdyEyKRelp4nJ1kAz32+s27jP1FsebpJCVl0BsvA==} engines: {node: '>=18.0'} @@ -5895,6 +6160,10 @@ packages: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} @@ -5921,6 +6190,13 @@ packages: resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} engines: {node: '>=18'} + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} @@ -5947,6 +6223,9 @@ packages: delegate@3.2.0: resolution: {integrity: sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==} + delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + denque@2.1.0: resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} engines: {node: '>=0.10'} @@ -5991,6 +6270,9 @@ packages: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} + detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -6000,6 +6282,9 @@ packages: dijkstrajs@1.0.3: resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} + dir-compare@4.2.0: + resolution: {integrity: sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==} + dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -6007,6 +6292,15 @@ packages: dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dmg-builder@25.1.8: + resolution: {integrity: sha512-NoXo6Liy2heSklTI5OIZbCgXC1RzrDQsZkeEwXhdOro3FT1VBOvbubvscdPnjVuQ4AMwwv61oaH96AbiYg9EnQ==} + + dmg-license@1.0.11: + resolution: {integrity: sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==} + engines: {node: '>=8'} + os: [darwin] + hasBin: true + doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} @@ -6054,6 +6348,10 @@ packages: resolution: {integrity: sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==} engines: {node: '>=18'} + dotenv-expand@11.0.7: + resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} + engines: {node: '>=12'} + dotenv-expand@8.0.3: resolution: {integrity: sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg==} engines: {node: '>=12'} @@ -6099,9 +6397,25 @@ packages: engines: {node: '>=0.10.0'} hasBin: true + electron-builder-squirrel-windows@25.1.8: + resolution: {integrity: sha512-2ntkJ+9+0GFP6nAISiMabKt6eqBB0kX1QqHNWFWAXgi0VULKGisM46luRFpIBiU3u/TDmhZMM8tzvo2Abn3ayg==} + + electron-builder@25.1.8: + resolution: {integrity: sha512-poRgAtUHHOnlzZnc9PK4nzG53xh74wj2Jy7jkTrqZ0MWPoHGh1M2+C//hGeYdA+4K8w4yiVCNYoLXF7ySj2Wig==} + engines: {node: '>=14.0.0'} + hasBin: true + + electron-publish@25.1.7: + resolution: {integrity: sha512-+jbTkR9m39eDBMP4gfbqglDd6UvBC7RLh5Y0MhFSsc6UkGHj9Vj9TWobxevHYMMqmoujL11ZLjfPpMX+Pt6YEg==} + electron-to-chromium@1.5.113: resolution: {integrity: sha512-wjT2O4hX+wdWPJ76gWSkMhcHAV2PTMX+QetUCPYEdCIe+cxmgzzSSiGRCKW8nuh4mwKZlpv0xvoW7OF2X+wmHg==} + electron@35.0.3: + resolution: {integrity: sha512-kjQAYEWXSr2TyK19IZoF85dzFIBaYuX7Yp/C+34b5Y/jmI2z270CGie+RjmEGMMitsy0G8YJKftukhYMuWlK6g==} + engines: {node: '>= 12.20.55'} + hasBin: true + element-plus@2.9.7: resolution: {integrity: sha512-6vjZh5SXBncLhUwJGTVKS5oDljfgGMh6J4zVTeAZK3YdMUN76FgpvHkwwFXocpJpMbii6rDYU3sgie64FyPerQ==} peerDependencies: @@ -6133,6 +6447,9 @@ packages: encoding@0.1.13: resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + enhanced-resolve@5.18.1: resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} engines: {node: '>=10.13.0'} @@ -6209,6 +6526,9 @@ packages: es-toolkit@1.34.1: resolution: {integrity: sha512-OA6cd94fJV9bm8dWhIySkWq4xV+rAQnBZUr2dnpXam0QJ8c+hurLbKA8/QooL9Mx4WCAxvIDsiEkid5KPQ5xgQ==} + es6-error@4.1.1: + resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} + esbuild@0.24.0: resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} engines: {node: '>=18'} @@ -6483,6 +6803,9 @@ packages: resolution: {integrity: sha512-80F22aiJ3GLyVnS/B3HzgR6RelZVumzj9jkL0Rhz4h0xYbNW9PjlQz5h3J/SShErbXBc295vseR4/MIbVmUbeA==} engines: {node: '>=12.0.0'} + exponential-backoff@3.1.2: + resolution: {integrity: sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==} + exsolve@1.0.4: resolution: {integrity: sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==} @@ -6497,6 +6820,15 @@ packages: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + + extsprintf@1.4.1: + resolution: {integrity: sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==} + engines: {'0': node >=0.6.0} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -6534,6 +6866,9 @@ packages: fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + fdir@6.4.3: resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} peerDependencies: @@ -6634,6 +6969,9 @@ packages: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} @@ -6681,6 +7019,11 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + gauge@4.0.4: + resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. + gensequence@7.0.0: resolution: {integrity: sha512-47Frx13aZh01afHJTB3zTtKIlFI6vWY+MYCN9Qpew6i52rfKjnhCF/l1YlC8UmEMvvntZZ6z4PiCcmyuedR2aQ==} engines: {node: '>=18'} @@ -6719,6 +7062,10 @@ packages: resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} engines: {node: '>=12'} + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} @@ -6769,6 +7116,10 @@ packages: engines: {node: '>=12'} deprecated: Glob versions prior to v9 are no longer supported + global-agent@3.0.0: + resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} + engines: {node: '>=10.0'} + global-directory@4.0.1: resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} engines: {node: '>=18'} @@ -6827,6 +7178,10 @@ packages: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} + got@11.8.6: + resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} + engines: {node: '>=10.19.0'} + graceful-fs@4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} @@ -6882,6 +7237,9 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} + has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -6916,6 +7274,10 @@ packages: hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + html-minifier-terser@6.1.0: resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} engines: {node: '>=12'} @@ -6950,10 +7312,22 @@ packages: resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} engines: {node: '>= 6'} + http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + http-shutdown@1.2.2: resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + http2-wrapper@1.0.3: + resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} + engines: {node: '>=10.19.0'} + https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} @@ -6985,6 +7359,11 @@ packages: engines: {node: '>=18'} hasBin: true + iconv-corefoundation@1.1.7: + resolution: {integrity: sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==} + engines: {node: ^8.11.2 || >=10} + os: [darwin] + iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -7105,6 +7484,10 @@ packages: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} + is-ci@3.0.1: + resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} + hasBin: true + is-ci@4.1.0: resolution: {integrity: sha512-Ab9bQDQ11lWootZUI5qxgN2ZXwxNI5hTwnsvOc1wyxQ7zQ8OkEDw79mI0+9jI3x432NfwbVRru+3noJfXF6lSQ==} hasBin: true @@ -7177,6 +7560,10 @@ packages: resolution: {integrity: sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==} engines: {node: '>=18'} + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + is-interactive@2.0.0: resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} engines: {node: '>=12'} @@ -7278,6 +7665,10 @@ packages: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + is-unicode-supported@1.3.0: resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} engines: {node: '>=12'} @@ -7327,6 +7718,14 @@ packages: isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + isbinaryfile@4.0.10: + resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} + engines: {node: '>= 8.0.0'} + + isbinaryfile@5.0.4: + resolution: {integrity: sha512-YKBKVkKhty7s8rxddb40oOkuP0NbaeXrQvLin6QMHL7Ypiy2RW9LwOVrVgZRyOrhQlayMd9t+D8yDy8MKFTSDQ==} + engines: {node: '>= 18.0.0'} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -7415,6 +7814,9 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} @@ -7483,6 +7885,9 @@ packages: resolution: {integrity: sha512-7W0vV3rqv5tokqkBAFV1LbR7HPOWzXQDpDgEuib/aJ1jsZZx6x3c2mBI+TJhJzOhkGeaLbCKEHXEXLfirtG2JA==} engines: {node: '>=18'} + lazy-val@1.0.5: + resolution: {integrity: sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==} + lazystream@1.0.1: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} @@ -7561,6 +7966,12 @@ packages: lodash.defaults@4.2.0: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + lodash.difference@4.5.0: + resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} + + lodash.flatten@4.4.0: + resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} + lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} deprecated: This package is deprecated. Use the optional chaining (?.) operator instead. @@ -7620,6 +8031,9 @@ packages: lodash.truncate@4.4.2: resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + lodash.union@4.6.0: + resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} + lodash.uniq@4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} @@ -7629,6 +8043,10 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + log-symbols@6.0.0: resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} engines: {node: '>=18'} @@ -7647,6 +8065,10 @@ packages: lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -7661,6 +8083,10 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} + lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + lucide-vue-next@0.469.0: resolution: {integrity: sha512-EjOap+vY3xEzCMrnaccDHO4BH3k3Lr+sOyvzRQCaayYxkxKla0w6Jr4h3cHAzA4vMSp63Dcy7vDiGeCPcCY+Gg==} peerDependencies: @@ -7679,6 +8105,10 @@ packages: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} + make-fetch-happen@10.2.1: + resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + make-fetch-happen@8.0.14: resolution: {integrity: sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==} engines: {node: '>= 10'} @@ -7686,6 +8116,10 @@ packages: mark.js@8.11.1: resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} + matcher@3.0.0: + resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} + engines: {node: '>=10'} + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -7761,6 +8195,11 @@ packages: engines: {node: '>=4'} hasBin: true + mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + mime@3.0.0: resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} engines: {node: '>=10.0.0'} @@ -7771,6 +8210,10 @@ packages: engines: {node: '>=16'} hasBin: true + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} @@ -7779,6 +8222,14 @@ packages: resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} engines: {node: '>=18'} + mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -7820,6 +8271,10 @@ packages: resolution: {integrity: sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==} engines: {node: '>=8'} + minipass-fetch@2.1.2: + resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + minipass-flush@1.0.5: resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} engines: {node: '>= 8'} @@ -7943,6 +8398,10 @@ packages: engines: {node: '>= 4.4.x'} hasBin: true + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + nitropack@2.11.8: resolution: {integrity: sha512-ummTu4R8Lhd1nO3nWrW7eeiHA2ey3ntbWFKkYakm4rcbvT6meWp+oykyrYBNFQKhobQl9CydmUWlCyztYXFPJw==} engines: {node: ^16.11.0 || >=17.0.0} @@ -7956,9 +8415,19 @@ packages: no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + node-abi@3.74.0: + resolution: {integrity: sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==} + engines: {node: '>=10'} + + node-addon-api@1.7.2: + resolution: {integrity: sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==} + node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + node-api-version@0.2.1: + resolution: {integrity: sha512-2xP/IGGMmmSQpI1+O/k72jF/ykvZ89JeuKX3TLJAYPDVLUalrshrLHkeVcCCZqG/eEa635cr8IBYzgnDvM2O8Q==} + node-cleanup@2.1.2: resolution: {integrity: sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw==} @@ -7982,6 +8451,11 @@ packages: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true + node-gyp@9.4.1: + resolution: {integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==} + engines: {node: ^12.13 || ^14.13 || >=16} + hasBin: true + node-html-parser@5.4.2: resolution: {integrity: sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==} @@ -7991,6 +8465,11 @@ packages: node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + nopt@6.0.0: + resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + hasBin: true + nopt@7.2.1: resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -8012,6 +8491,10 @@ packages: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} + normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + normalize-wheel-es@1.2.0: resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==} @@ -8036,6 +8519,11 @@ packages: resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} engines: {node: '>=18'} + npmlog@6.0.2: + resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. + nprogress@0.2.0: resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} @@ -8080,6 +8568,10 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} @@ -8103,6 +8595,10 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + ora@8.2.0: resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} engines: {node: '>=18'} @@ -8118,6 +8614,10 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} + p-cancelable@2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} engines: {node: '>=8'} @@ -8270,6 +8770,13 @@ packages: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} + pe-library@0.4.1: + resolution: {integrity: sha512-eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw==} + engines: {node: '>=12', npm: '>=6'} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} @@ -8340,6 +8847,10 @@ packages: please-upgrade-node@3.2.0: resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} + plist@3.1.0: + resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==} + engines: {node: '>=10.4.0'} + pluralize@8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} @@ -8870,6 +9381,10 @@ packages: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + promise-inflight@1.0.1: resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} peerDependencies: @@ -8899,6 +9414,9 @@ packages: engines: {node: '>=16'} hasBin: true + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -8922,6 +9440,10 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + radix-vue@1.9.17: resolution: {integrity: sha512-mVCu7I2vXt1L2IUYHTt0sZMz7s1K2ZtqKeTIxG3yC5mMFfLBG4FtE1FDeRMpDd+Hhg/ybi9+iXmAP1ISREndoQ==} peerDependencies: @@ -8944,6 +9466,10 @@ packages: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true + read-binary-file-arch@1.0.6: + resolution: {integrity: sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==} + hasBin: true + read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} @@ -8966,6 +9492,10 @@ packages: readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + readable-stream@4.7.0: resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -9079,9 +9609,16 @@ packages: require-package-name@2.0.1: resolution: {integrity: sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q==} + resedit@1.7.2: + resolution: {integrity: sha512-vHjcY2MlAITJhC0eRD/Vv8Vlgmu9Sd3LX9zZvtGzU5ZImdTN3+d6e/4mnTyV8vEbyf1sgNIrWxhWlrys52OkEA==} + engines: {node: '>=12', npm: '>=6'} + resize-observer-polyfill@1.5.1: resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + resolve-dir@1.0.1: resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} engines: {node: '>=0.10.0'} @@ -9106,6 +9643,13 @@ packages: engines: {node: '>= 0.4'} hasBin: true + responselike@2.0.1: + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + restore-cursor@5.1.0: resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} engines: {node: '>=18'} @@ -9135,6 +9679,10 @@ packages: engines: {node: 20 || >=22} hasBin: true + roarr@2.15.4: + resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} + engines: {node: '>=8.0'} + rollup-plugin-dts@6.1.1: resolution: {integrity: sha512-aSHRcJ6KG2IHIioYlvAOcEq6U99sVtqDDKVhnwt70rW6tsz3tv5OSjEiWcgzfsHdLyGXZ/3b/7b/+Za3Y6r1XA==} engines: {node: '>=16'} @@ -9206,6 +9754,9 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + sanitize-filename@1.6.3: + resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==} + sass@1.86.3: resolution: {integrity: sha512-iGtg8kus4GrsGLRDLRBRHY9dNVA78ZaS7xr01cWnS7PEMQyFtTqBiyCrfpTYTZXRWM94akzckYjh8oADfFNTzw==} engines: {node: '>=14.0.0'} @@ -9262,6 +9813,10 @@ packages: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} + serialize-error@7.0.1: + resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} + engines: {node: '>=10'} + serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} @@ -9327,10 +9882,17 @@ packages: siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + simple-update-notifier@2.0.0: + resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} + engines: {node: '>=10'} + sirv@3.0.1: resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==} engines: {node: '>=18'} @@ -9349,6 +9911,10 @@ packages: slashes@3.0.12: resolution: {integrity: sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==} + slice-ansi@3.0.0: + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + engines: {node: '>=8'} + slice-ansi@4.0.0: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} @@ -9372,6 +9938,10 @@ packages: resolution: {integrity: sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==} engines: {node: '>= 6'} + socks-proxy-agent@7.0.0: + resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} + engines: {node: '>= 10'} + socks@2.8.4: resolution: {integrity: sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} @@ -9441,6 +10011,10 @@ packages: resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} engines: {node: '>= 8'} + ssri@9.0.1: + resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + stable-hash@0.0.5: resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} @@ -9450,6 +10024,10 @@ packages: standard-as-callback@2.1.0: resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} + stat-mode@1.0.0: + resolution: {integrity: sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==} + engines: {node: '>= 6'} + statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} @@ -9643,6 +10221,10 @@ packages: engines: {node: '>=16 || 14 >=14.17'} hasBin: true + sumchecker@3.0.1: + resolution: {integrity: sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==} + engines: {node: '>= 8.0'} + superjson@2.2.2: resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==} engines: {node: '>=16'} @@ -9718,6 +10300,10 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} @@ -9733,6 +10319,9 @@ packages: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} + temp-file@3.4.0: + resolution: {integrity: sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==} + tempy@0.6.0: resolution: {integrity: sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==} engines: {node: '>=10'} @@ -9798,10 +10387,17 @@ packages: tippy.js@6.3.7: resolution: {integrity: sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==} + tmp-promise@3.0.3: + resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==} + tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} + tmp@0.2.3: + resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + engines: {node: '>=14.14'} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -9826,6 +10422,9 @@ packages: trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + truncate-utf8-bytes@1.0.2: + resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} + ts-api-utils@1.4.3: resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} engines: {node: '>=16'} @@ -9888,6 +10487,10 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} + type-fest@0.13.1: + resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} + engines: {node: '>=10'} + type-fest@0.16.0: resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} engines: {node: '>=10'} @@ -10008,9 +10611,17 @@ packages: unique-filename@1.1.1: resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} + unique-filename@2.0.1: + resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + unique-slug@2.0.2: resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} + unique-slug@3.0.0: + resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + unique-string@2.0.0: resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} engines: {node: '>=8'} @@ -10147,6 +10758,9 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + utf8-byte-length@1.0.5: + resolution: {integrity: sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==} + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -10163,6 +10777,10 @@ packages: peerDependencies: vue: ^3.5.13 + verror@1.10.1: + resolution: {integrity: sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==} + engines: {node: '>=0.6.0'} + vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} @@ -10193,6 +10811,17 @@ packages: vite: optional: true + vite-plugin-electron-renderer@0.14.6: + resolution: {integrity: sha512-oqkWFa7kQIkvHXG7+Mnl1RTroA4sP0yesKatmAy0gjZC4VwUqlvF9IvOpHd1fpLWsqYX/eZlVxlhULNtaQ78Jw==} + + vite-plugin-electron@0.29.0: + resolution: {integrity: sha512-HP0DI9Shg41hzt55IKYVnbrChWXHX95QtsEQfM+szQBpWjVhVGMlqRjVco6ebfQjWNr+Ga+PeoBjMIl8zMaufw==} + peerDependencies: + vite-plugin-electron-renderer: '*' + peerDependenciesMeta: + vite-plugin-electron-renderer: + optional: true + vite-plugin-html@3.2.2: resolution: {integrity: sha512-vb9C9kcdzcIo/Oc3CLZVS03dL5pDlOFuhGlZYDCJ840BhWl/0nGeZWf3Qy7NlOayscY4Cm/QRgULCQkEZige5Q==} peerDependencies: @@ -10434,6 +11063,9 @@ packages: watermark-js-plus@1.5.8: resolution: {integrity: sha512-dSQHNSq8hVe6abEAPGKPcjq88XKWu4wiikeELyUlcs48xqQOWG3eWeWNLHcG6Pegujp8HTLXPzKsDvzFLKC+iA==} + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -10501,6 +11133,9 @@ packages: engines: {node: '>=8'} hasBin: true + wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + widest-line@5.0.0: resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} engines: {node: '>=18'} @@ -10592,6 +11227,10 @@ packages: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} + xmlbuilder@15.1.1: + resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} + engines: {node: '>=8.0'} + y18n@4.0.3: resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} @@ -10646,6 +11285,9 @@ packages: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -10666,6 +11308,10 @@ packages: resolution: {integrity: sha512-y1aNsEeoLXnWb6pI9TvfNPIxySyo4Un3OGxKn7rsNj8+tgSquzXEWkzfA5y6gU0fvzmQgvx3JBn/p51qQ8Xg9A==} engines: {node: '>=18'} + zip-stream@4.1.1: + resolution: {integrity: sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==} + engines: {node: '>= 10'} + zip-stream@6.0.1: resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} engines: {node: '>= 14'} @@ -10691,6 +11337,8 @@ packages: snapshots: + 7zip-bin@5.2.0: {} + '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.20.4)(algoliasearch@5.20.4)(search-insights@2.17.3)': dependencies: '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.20.4)(algoliasearch@5.20.4)(search-insights@2.17.3) @@ -12320,6 +12968,11 @@ snapshots: '@ctrl/tinycolor@4.1.0': {} + '@develar/schema-utils@2.6.5': + dependencies: + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + '@docsearch/css@3.8.2': {} '@docsearch/js@3.8.2(@algolia/client-search@5.20.4)(search-insights@2.17.3)': @@ -12346,6 +12999,77 @@ snapshots: '@dual-bundle/import-meta-resolve@4.1.0': {} + '@electron/asar@3.4.1': + dependencies: + commander: 5.1.0 + glob: 7.2.3 + minimatch: 3.1.2 + + '@electron/get@2.0.3': + dependencies: + debug: 4.4.0 + env-paths: 2.2.1 + fs-extra: 8.1.0 + got: 11.8.6 + progress: 2.0.3 + semver: 6.3.1 + sumchecker: 3.0.1 + optionalDependencies: + global-agent: 3.0.0 + transitivePeerDependencies: + - supports-color + + '@electron/notarize@2.5.0': + dependencies: + debug: 4.4.0 + fs-extra: 9.1.0 + promise-retry: 2.0.1 + transitivePeerDependencies: + - supports-color + + '@electron/osx-sign@1.3.1': + dependencies: + compare-version: 0.1.2 + debug: 4.4.0 + fs-extra: 10.1.0 + isbinaryfile: 4.0.10 + minimist: 1.2.8 + plist: 3.1.0 + transitivePeerDependencies: + - supports-color + + '@electron/rebuild@3.6.1': + dependencies: + '@malept/cross-spawn-promise': 2.0.0 + chalk: 4.1.2 + debug: 4.4.0 + detect-libc: 2.0.3 + fs-extra: 10.1.0 + got: 11.8.6 + node-abi: 3.74.0 + node-api-version: 0.2.1 + node-gyp: 9.4.1 + ora: 5.4.1 + read-binary-file-arch: 1.0.6 + semver: 7.7.1 + tar: 6.2.1 + yargs: 17.7.2 + transitivePeerDependencies: + - bluebird + - supports-color + + '@electron/universal@2.0.1': + dependencies: + '@electron/asar': 3.4.1 + '@malept/cross-spawn-promise': 2.0.0 + debug: 4.4.0 + dir-compare: 4.2.0 + fs-extra: 11.3.0 + minimatch: 9.0.5 + plist: 3.1.0 + transitivePeerDependencies: + - supports-color + '@element-plus/icons-vue@2.3.1(vue@3.5.13(typescript@5.8.3))': dependencies: vue: 3.5.13(typescript@5.8.3) @@ -12716,6 +13440,19 @@ snapshots: dependencies: buffer: 6.0.3 + '@malept/cross-spawn-promise@2.0.0': + dependencies: + cross-spawn: 7.0.6 + + '@malept/flatpak-bundler@0.4.0': + dependencies: + debug: 4.4.0 + fs-extra: 9.1.0 + lodash: 4.17.21 + tmp-promise: 3.0.3 + transitivePeerDependencies: + - supports-color + '@manypkg/find-root@1.1.0': dependencies: '@babel/runtime': 7.26.9 @@ -12851,11 +13588,21 @@ snapshots: '@gar/promisify': 1.1.3 semver: 7.7.1 + '@npmcli/fs@2.1.2': + dependencies: + '@gar/promisify': 1.1.3 + semver: 7.7.1 + '@npmcli/move-file@1.1.2': dependencies: mkdirp: 1.0.4 rimraf: 3.0.2 + '@npmcli/move-file@2.0.1': + dependencies: + mkdirp: 1.0.4 + rimraf: 3.0.2 + '@nuxt/kit@3.16.0(magicast@0.3.5)': dependencies: c12: 3.0.2(magicast@0.3.5) @@ -13365,6 +14112,8 @@ snapshots: core-js: 3.41.0 nanopop: 2.4.2 + '@sindresorhus/is@4.6.0': {} + '@sindresorhus/is@7.0.1': {} '@sindresorhus/merge-streams@2.3.0': {} @@ -13397,6 +14146,10 @@ snapshots: '@sxzz/popperjs-es@2.11.7': {} + '@szmarczak/http-timer@4.0.6': + dependencies: + defer-to-connect: 2.0.1 + '@tailwindcss/nesting@0.0.0-insiders.565cd3e(postcss@8.5.3)': dependencies: postcss: 8.5.3 @@ -13441,6 +14194,8 @@ snapshots: '@tootallnate/once@1.1.2': {} + '@tootallnate/once@2.0.0': {} + '@trysound/sax@0.2.0': {} '@tybys/wasm-util@0.9.0': @@ -13456,9 +14211,20 @@ snapshots: '@types/bintrees@1.0.6': {} + '@types/cacheable-request@6.0.3': + dependencies: + '@types/http-cache-semantics': 4.0.4 + '@types/keyv': 3.1.4 + '@types/node': 22.14.0 + '@types/responselike': 1.0.3 + '@types/conventional-commits-parser@5.0.1': dependencies: - '@types/node': 22.13.17 + '@types/node': 22.14.0 + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 2.1.0 '@types/doctrine@0.0.9': {} @@ -13473,12 +14239,18 @@ snapshots: '@types/estree@1.0.7': {} + '@types/fs-extra@9.0.13': + dependencies: + '@types/node': 22.14.0 + '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 '@types/html-minifier-terser@7.0.2': {} + '@types/http-cache-semantics@4.0.4': {} + '@types/json-schema@7.0.15': {} '@types/jsonwebtoken@9.0.9': @@ -13488,6 +14260,10 @@ snapshots: '@types/katex@0.16.7': {} + '@types/keyv@3.1.4': + dependencies: + '@types/node': 22.14.0 + '@types/linkify-it@5.0.0': {} '@types/lodash-es@4.17.12': @@ -13547,6 +14323,12 @@ snapshots: '@types/parse-json@4.0.2': {} + '@types/plist@3.0.5': + dependencies: + '@types/node': 22.14.0 + xmlbuilder: 15.1.1 + optional: true + '@types/postcss-import@14.0.3': dependencies: postcss: 8.5.3 @@ -13563,18 +14345,30 @@ snapshots: '@types/resolve@1.20.2': {} + '@types/responselike@1.0.3': + dependencies: + '@types/node': 22.14.0 + '@types/sortablejs@1.15.8': {} '@types/trusted-types@2.0.7': {} '@types/unist@3.0.3': {} + '@types/verror@1.10.11': + optional: true + '@types/web-bluetooth@0.0.16': {} '@types/web-bluetooth@0.0.20': {} '@types/web-bluetooth@0.0.21': {} + '@types/yauzl@2.10.3': + dependencies: + '@types/node': 22.14.0 + optional: true + '@typescript-eslint/eslint-plugin@8.29.1(@typescript-eslint/parser@8.29.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 @@ -14148,11 +14942,15 @@ snapshots: vue: 3.5.13(typescript@5.8.3) xe-utils: 3.7.4 + '@xmldom/xmldom@0.8.10': {} + JSONStream@1.3.5: dependencies: jsonparse: 1.3.1 through: 2.3.8 + abbrev@1.1.1: {} + abbrev@2.0.0: {} abbrev@3.0.0: {} @@ -14196,6 +14994,10 @@ snapshots: optionalDependencies: ajv: 8.13.0 + ajv-keywords@3.5.2(ajv@6.12.6): + dependencies: + ajv: 6.12.6 + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 @@ -14297,6 +15099,76 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 + app-builder-bin@5.0.0-alpha.10: {} + + app-builder-lib@25.1.8(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.1.8): + dependencies: + '@develar/schema-utils': 2.6.5 + '@electron/notarize': 2.5.0 + '@electron/osx-sign': 1.3.1 + '@electron/rebuild': 3.6.1 + '@electron/universal': 2.0.1 + '@malept/flatpak-bundler': 0.4.0 + '@types/fs-extra': 9.0.13 + async-exit-hook: 2.0.1 + bluebird-lst: 1.0.9 + builder-util: 25.1.7 + builder-util-runtime: 9.2.10 + chromium-pickle-js: 0.2.0 + config-file-ts: 0.2.8-rc1 + debug: 4.4.0 + dmg-builder: 25.1.8(electron-builder-squirrel-windows@25.1.8) + dotenv: 16.4.7 + dotenv-expand: 11.0.7 + ejs: 3.1.10 + electron-builder-squirrel-windows: 25.1.8(dmg-builder@25.1.8) + electron-publish: 25.1.7 + form-data: 4.0.2 + fs-extra: 10.1.0 + hosted-git-info: 4.1.0 + is-ci: 3.0.1 + isbinaryfile: 5.0.4 + js-yaml: 4.1.0 + json5: 2.2.3 + lazy-val: 1.0.5 + minimatch: 10.0.1 + resedit: 1.7.2 + sanitize-filename: 1.6.3 + semver: 7.7.1 + tar: 6.2.1 + temp-file: 3.4.0 + transitivePeerDependencies: + - bluebird + - supports-color + + aproba@2.0.0: {} + + archiver-utils@2.1.0: + dependencies: + glob: 7.2.3 + graceful-fs: 4.2.11 + lazystream: 1.0.1 + lodash.defaults: 4.2.0 + lodash.difference: 4.5.0 + lodash.flatten: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.union: 4.6.0 + normalize-path: 3.0.0 + readable-stream: 2.3.8 + + archiver-utils@3.0.4: + dependencies: + glob: 7.2.3 + graceful-fs: 4.2.11 + lazystream: 1.0.1 + lodash.defaults: 4.2.0 + lodash.difference: 4.5.0 + lodash.flatten: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.union: 4.6.0 + normalize-path: 3.0.0 + readable-stream: 3.6.2 + archiver-utils@5.0.2: dependencies: glob: 10.4.5 @@ -14307,6 +15179,16 @@ snapshots: normalize-path: 3.0.0 readable-stream: 4.7.0 + archiver@5.3.2: + dependencies: + archiver-utils: 2.1.0 + async: 3.2.6 + buffer-crc32: 0.2.13 + readable-stream: 3.6.2 + readdir-glob: 1.1.3 + tar-stream: 2.2.0 + zip-stream: 4.1.1 + archiver@7.0.1: dependencies: archiver-utils: 5.0.2 @@ -14319,6 +15201,11 @@ snapshots: are-docs-informative@0.0.2: {} + are-we-there-yet@3.0.1: + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.2 + arg@5.0.2: {} argparse@1.0.10: @@ -14358,10 +15245,15 @@ snapshots: arrify@2.0.1: {} + assert-plus@1.0.0: + optional: true + assertion-error@2.0.1: {} astral-regex@2.0.0: {} + async-exit-hook@2.0.1: {} + async-function@1.0.0: {} async-sema@3.1.1: {} @@ -14456,8 +15348,23 @@ snapshots: birpc@0.2.19: {} + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + bluebird-lst@1.0.9: + dependencies: + bluebird: 3.7.2 + + bluebird@3.7.2: {} + boolbase@1.0.0: {} + boolean@3.2.0: + optional: true + boxen@8.0.1: dependencies: ansi-align: 3.0.1 @@ -14489,17 +15396,52 @@ snapshots: node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.4) + buffer-crc32@0.2.13: {} + buffer-crc32@1.0.0: {} buffer-equal-constant-time@1.0.1: {} buffer-from@1.1.2: {} + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + buffer@6.0.3: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 + builder-util-runtime@9.2.10: + dependencies: + debug: 4.4.0 + sax: 1.4.1 + transitivePeerDependencies: + - supports-color + + builder-util@25.1.7: + dependencies: + 7zip-bin: 5.2.0 + '@types/debug': 4.1.12 + app-builder-bin: 5.0.0-alpha.10 + bluebird-lst: 1.0.9 + builder-util-runtime: 9.2.10 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + fs-extra: 10.1.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + is-ci: 3.0.1 + js-yaml: 4.1.0 + source-map-support: 0.5.21 + stat-mode: 1.0.0 + temp-file: 3.4.0 + transitivePeerDependencies: + - supports-color + builtin-modules@3.3.0: {} bundle-name@4.1.0: @@ -14548,6 +15490,41 @@ snapshots: transitivePeerDependencies: - bluebird + cacache@16.1.3: + dependencies: + '@npmcli/fs': 2.1.2 + '@npmcli/move-file': 2.0.1 + chownr: 2.0.0 + fs-minipass: 2.1.0 + glob: 8.1.0 + infer-owner: 1.0.4 + lru-cache: 7.18.3 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + mkdirp: 1.0.4 + p-map: 4.0.0 + promise-inflight: 1.0.1 + rimraf: 3.0.2 + ssri: 9.0.1 + tar: 6.2.1 + unique-filename: 2.0.1 + transitivePeerDependencies: + - bluebird + + cacheable-lookup@5.0.4: {} + + cacheable-request@7.0.4: + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.1.1 + keyv: 4.5.4 + lowercase-keys: 2.0.0 + normalize-url: 6.1.0 + responselike: 2.0.1 + cacheable@1.8.9: dependencies: hookified: 1.7.1 @@ -14671,6 +15648,8 @@ snapshots: chownr@3.0.0: {} + chromium-pickle-js@0.2.0: {} + ci-info@3.9.0: {} ci-info@4.2.0: {} @@ -14714,12 +15693,22 @@ snapshots: cli-boxes@3.0.0: {} + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + cli-cursor@5.0.0: dependencies: restore-cursor: 5.1.0 cli-spinners@2.9.2: {} + cli-truncate@2.1.0: + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.3 + optional: true + cli-truncate@4.0.0: dependencies: slice-ansi: 5.0.0 @@ -14755,6 +15744,12 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + clone-response@1.0.3: + dependencies: + mimic-response: 1.0.1 + + clone@1.0.4: {} + clsx@2.1.1: {} cluster-key-slot@1.1.2: {} @@ -14765,6 +15760,8 @@ snapshots: color-name@1.1.4: {} + color-support@1.1.3: {} + colord@2.9.3: {} colorette@2.0.20: {} @@ -14785,6 +15782,8 @@ snapshots: commander@4.1.1: {} + commander@5.1.0: {} + commander@7.2.0: {} commander@8.3.0: {} @@ -14812,10 +15811,19 @@ snapshots: array-ify: 1.0.0 dot-prop: 5.3.0 + compare-version@0.1.2: {} + compare-versions@6.1.1: {} compatx@0.1.8: {} + compress-commons@4.1.2: + dependencies: + buffer-crc32: 0.2.13 + crc32-stream: 4.0.3 + normalize-path: 3.0.0 + readable-stream: 3.6.2 + compress-commons@6.0.2: dependencies: crc-32: 1.2.2 @@ -14837,6 +15845,11 @@ snapshots: ini: 1.3.8 proto-list: 1.2.4 + config-file-ts@0.2.8-rc1: + dependencies: + glob: 10.4.5 + typescript: 5.8.3 + configstore@7.0.0: dependencies: atomically: 2.0.3 @@ -14852,6 +15865,8 @@ snapshots: consola@3.4.2: {} + console-control-strings@1.1.0: {} + conventional-changelog-angular@7.0.0: dependencies: compare-func: 2.0.0 @@ -14889,6 +15904,9 @@ snapshots: core-js@3.41.0: {} + core-util-is@1.0.2: + optional: true + core-util-is@1.0.3: {} cosmiconfig-typescript-loader@6.1.0(@types/node@22.14.0)(cosmiconfig@9.0.0(typescript@5.8.3))(typescript@5.8.3): @@ -14917,11 +15935,21 @@ snapshots: crc-32@1.2.2: {} + crc32-stream@4.0.3: + dependencies: + crc-32: 1.2.2 + readable-stream: 3.6.2 + crc32-stream@6.0.0: dependencies: crc-32: 1.2.2 readable-stream: 4.7.0 + crc@3.8.0: + dependencies: + buffer: 5.7.1 + optional: true + croner@9.0.0: {} cross-env@7.0.3: @@ -15198,6 +16226,10 @@ snapshots: decamelize@1.2.0: {} + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + deep-eql@5.0.2: {} deep-extend@0.6.0: {} @@ -15215,6 +16247,12 @@ snapshots: bundle-name: 4.1.0 default-browser-id: 5.0.0 + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + defer-to-connect@2.0.1: {} + define-data-property@1.1.4: dependencies: es-define-property: 1.0.1 @@ -15237,6 +16275,8 @@ snapshots: delegate@3.2.0: {} + delegates@1.0.0: {} + denque@2.1.0: {} depcheck@1.4.7: @@ -15285,6 +16325,9 @@ snapshots: detect-libc@2.0.3: {} + detect-node@2.1.0: + optional: true + devlop@1.1.0: dependencies: dequal: 2.0.3 @@ -15293,12 +16336,44 @@ snapshots: dijkstrajs@1.0.3: {} + dir-compare@4.2.0: + dependencies: + minimatch: 3.1.2 + p-limit: 3.1.0 + dir-glob@3.0.1: dependencies: path-type: 4.0.0 dlv@1.1.3: {} + dmg-builder@25.1.8(electron-builder-squirrel-windows@25.1.8): + dependencies: + app-builder-lib: 25.1.8(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.1.8) + builder-util: 25.1.7 + builder-util-runtime: 9.2.10 + fs-extra: 10.1.0 + iconv-lite: 0.6.3 + js-yaml: 4.1.0 + optionalDependencies: + dmg-license: 1.0.11 + transitivePeerDependencies: + - bluebird + - electron-builder-squirrel-windows + - supports-color + + dmg-license@1.0.11: + dependencies: + '@types/plist': 3.0.5 + '@types/verror': 1.10.11 + ajv: 6.12.6 + crc: 3.8.0 + iconv-corefoundation: 1.1.7 + plist: 3.1.0 + smart-buffer: 4.2.0 + verror: 1.10.1 + optional: true + doctrine@3.0.0: dependencies: esutils: 2.0.3 @@ -15356,6 +16431,10 @@ snapshots: dependencies: type-fest: 4.37.0 + dotenv-expand@11.0.7: + dependencies: + dotenv: 16.4.7 + dotenv-expand@8.0.3: {} dotenv@16.0.3: {} @@ -15396,8 +16475,56 @@ snapshots: dependencies: jake: 10.9.2 + electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8): + dependencies: + app-builder-lib: 25.1.8(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.1.8) + archiver: 5.3.2 + builder-util: 25.1.7 + fs-extra: 10.1.0 + transitivePeerDependencies: + - bluebird + - dmg-builder + - supports-color + + electron-builder@25.1.8(electron-builder-squirrel-windows@25.1.8): + dependencies: + app-builder-lib: 25.1.8(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.1.8) + builder-util: 25.1.7 + builder-util-runtime: 9.2.10 + chalk: 4.1.2 + dmg-builder: 25.1.8(electron-builder-squirrel-windows@25.1.8) + fs-extra: 10.1.0 + is-ci: 3.0.1 + lazy-val: 1.0.5 + simple-update-notifier: 2.0.0 + yargs: 17.7.2 + transitivePeerDependencies: + - bluebird + - electron-builder-squirrel-windows + - supports-color + + electron-publish@25.1.7: + dependencies: + '@types/fs-extra': 9.0.13 + builder-util: 25.1.7 + builder-util-runtime: 9.2.10 + chalk: 4.1.2 + fs-extra: 10.1.0 + lazy-val: 1.0.5 + mime: 2.6.0 + transitivePeerDependencies: + - supports-color + electron-to-chromium@1.5.113: {} + electron@35.0.3: + dependencies: + '@electron/get': 2.0.3 + '@types/node': 22.14.0 + extract-zip: 2.0.1 + transitivePeerDependencies: + - supports-color + element-plus@2.9.7(vue@3.5.13(typescript@5.8.3)): dependencies: '@ctrl/tinycolor': 4.1.0 @@ -15441,6 +16568,10 @@ snapshots: iconv-lite: 0.6.3 optional: true + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + enhanced-resolve@5.18.1: dependencies: graceful-fs: 4.2.11 @@ -15557,6 +16688,9 @@ snapshots: es-toolkit@1.34.1: {} + es6-error@4.1.1: + optional: true + esbuild@0.24.0: optionalDependencies: '@esbuild/aix-ppc64': 0.24.0 @@ -15937,6 +17071,8 @@ snapshots: expect-type@1.2.0: {} + exponential-backoff@3.1.2: {} + exsolve@1.0.4: {} extend-shallow@2.0.1: @@ -15951,6 +17087,19 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 + extract-zip@2.0.1: + dependencies: + debug: 4.4.0 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + + extsprintf@1.4.1: + optional: true + fast-deep-equal@3.1.3: {} fast-diff@1.3.0: {} @@ -15981,6 +17130,10 @@ snapshots: dependencies: reusify: 1.1.0 + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + fdir@6.4.3(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 @@ -16088,6 +17241,8 @@ snapshots: fresh@0.5.2: {} + fs-constants@1.0.0: {} + fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 @@ -16144,6 +17299,17 @@ snapshots: functions-have-names@1.2.3: {} + gauge@4.0.4: + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + gensequence@7.0.0: {} gensync@1.0.0-beta.2: {} @@ -16178,6 +17344,10 @@ snapshots: get-stdin@9.0.0: {} + get-stream@5.2.0: + dependencies: + pump: 3.0.2 + get-stream@8.0.1: {} get-stream@9.0.1: @@ -16253,6 +17423,16 @@ snapshots: minimatch: 5.1.6 once: 1.4.0 + global-agent@3.0.0: + dependencies: + boolean: 3.2.0 + es6-error: 4.1.1 + matcher: 3.0.0 + roarr: 2.15.4 + semver: 7.7.1 + serialize-error: 7.0.1 + optional: true + global-directory@4.0.1: dependencies: ini: 4.1.1 @@ -16322,6 +17502,20 @@ snapshots: gopd@1.2.0: {} + got@11.8.6: + dependencies: + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 4.0.6 + '@types/cacheable-request': 6.0.3 + '@types/responselike': 1.0.3 + cacheable-lookup: 5.0.4 + cacheable-request: 7.0.4 + decompress-response: 6.0.0 + http2-wrapper: 1.0.3 + lowercase-keys: 2.0.0 + p-cancelable: 2.1.1 + responselike: 2.0.1 + graceful-fs@4.2.10: {} graceful-fs@4.2.11: {} @@ -16382,6 +17576,8 @@ snapshots: dependencies: has-symbols: 1.1.0 + has-unicode@2.0.1: {} + hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -16420,6 +17616,10 @@ snapshots: hosted-git-info@2.8.9: {} + hosted-git-info@4.1.0: + dependencies: + lru-cache: 6.0.0 + html-minifier-terser@6.1.0: dependencies: camel-case: 4.1.2 @@ -16476,8 +17676,28 @@ snapshots: transitivePeerDependencies: - supports-color + http-proxy-agent@5.0.0: + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.3 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + http-shutdown@1.2.2: {} + http2-wrapper@1.0.3: + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 @@ -16506,6 +17726,12 @@ snapshots: husky@9.1.7: {} + iconv-corefoundation@1.1.7: + dependencies: + cli-truncate: 2.1.0 + node-addon-api: 1.7.2 + optional: true + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 @@ -16621,6 +17847,10 @@ snapshots: is-callable@1.2.7: {} + is-ci@3.0.1: + dependencies: + ci-info: 3.9.0 + is-ci@4.1.0: dependencies: ci-info: 4.2.0 @@ -16682,6 +17912,8 @@ snapshots: global-directory: 4.0.1 is-path-inside: 4.0.0 + is-interactive@1.0.0: {} + is-interactive@2.0.0: {} is-lambda@1.0.1: {} @@ -16759,6 +17991,8 @@ snapshots: dependencies: which-typed-array: 1.1.19 + is-unicode-supported@0.1.0: {} + is-unicode-supported@1.3.0: {} is-unicode-supported@2.1.0: {} @@ -16796,6 +18030,10 @@ snapshots: isarray@2.0.5: {} + isbinaryfile@4.0.10: {} + + isbinaryfile@5.0.4: {} + isexe@2.0.0: {} jackspeak@3.4.3: @@ -16866,6 +18104,9 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} + json-stringify-safe@5.0.1: + optional: true + json5@2.2.3: {} jsonc-eslint-parser@2.4.0: @@ -16939,6 +18180,8 @@ snapshots: dependencies: package-json: 10.0.1 + lazy-val@1.0.5: {} + lazystream@1.0.1: dependencies: readable-stream: 2.3.8 @@ -17049,6 +18292,10 @@ snapshots: lodash.defaults@4.2.0: {} + lodash.difference@4.5.0: {} + + lodash.flatten@4.4.0: {} + lodash.get@4.4.2: {} lodash.includes@4.3.0: {} @@ -17087,12 +18334,19 @@ snapshots: lodash.truncate@4.4.2: {} + lodash.union@4.6.0: {} + lodash.uniq@4.5.0: {} lodash.upperfirst@4.3.1: {} lodash@4.17.21: {} + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + log-symbols@6.0.0: dependencies: chalk: 5.4.1 @@ -17116,6 +18370,8 @@ snapshots: dependencies: tslib: 2.8.1 + lowercase-keys@2.0.0: {} + lru-cache@10.4.3: {} lru-cache@11.0.2: {} @@ -17128,6 +18384,8 @@ snapshots: dependencies: yallist: 4.0.0 + lru-cache@7.18.3: {} + lucide-vue-next@0.469.0(vue@3.5.13(typescript@5.8.3)): dependencies: vue: 3.5.13(typescript@5.8.3) @@ -17152,6 +18410,28 @@ snapshots: semver: 5.7.2 optional: true + make-fetch-happen@10.2.1: + dependencies: + agentkeepalive: 4.6.0 + cacache: 16.1.3 + http-cache-semantics: 4.1.1 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-lambda: 1.0.1 + lru-cache: 7.18.3 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-fetch: 2.1.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.4 + promise-retry: 2.0.1 + socks-proxy-agent: 7.0.0 + ssri: 9.0.1 + transitivePeerDependencies: + - bluebird + - supports-color + make-fetch-happen@8.0.14: dependencies: agentkeepalive: 4.6.0 @@ -17175,6 +18455,11 @@ snapshots: mark.js@8.11.1: {} + matcher@3.0.0: + dependencies: + escape-string-regexp: 4.0.0 + optional: true + math-intrinsics@1.1.0: {} mathml-tag-names@2.1.3: {} @@ -17241,14 +18526,22 @@ snapshots: mime@1.6.0: {} + mime@2.6.0: {} + mime@3.0.0: {} mime@4.0.6: {} + mimic-fn@2.1.0: {} + mimic-fn@4.0.0: {} mimic-function@5.0.1: {} + mimic-response@1.0.1: {} + + mimic-response@3.1.0: {} + min-indent@1.0.1: {} minimatch@10.0.1: @@ -17293,6 +18586,14 @@ snapshots: optionalDependencies: encoding: 0.1.13 + minipass-fetch@2.1.2: + dependencies: + minipass: 3.3.6 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 + minipass-flush@1.0.5: dependencies: minipass: 3.3.6 @@ -17422,6 +18723,8 @@ snapshots: sax: 1.4.1 optional: true + negotiator@0.6.4: {} + nitropack@2.11.8(encoding@0.1.13): dependencies: '@cloudflare/kv-asset-handler': 0.4.0 @@ -17527,8 +18830,19 @@ snapshots: lower-case: 2.0.2 tslib: 2.8.1 + node-abi@3.74.0: + dependencies: + semver: 7.7.1 + + node-addon-api@1.7.2: + optional: true + node-addon-api@7.1.1: {} + node-api-version@0.2.1: + dependencies: + semver: 7.7.1 + node-cleanup@2.1.2: {} node-fetch-native@1.6.6: {} @@ -17543,6 +18857,23 @@ snapshots: node-gyp-build@4.8.4: {} + node-gyp@9.4.1: + dependencies: + env-paths: 2.2.1 + exponential-backoff: 3.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + make-fetch-happen: 10.2.1 + nopt: 6.0.0 + npmlog: 6.0.2 + rimraf: 3.0.2 + semver: 7.7.1 + tar: 6.2.1 + which: 2.0.2 + transitivePeerDependencies: + - bluebird + - supports-color + node-html-parser@5.4.2: dependencies: css-select: 4.3.0 @@ -17552,6 +18883,10 @@ snapshots: node-releases@2.0.19: {} + nopt@6.0.0: + dependencies: + abbrev: 1.1.1 + nopt@7.2.1: dependencies: abbrev: 2.0.0 @@ -17571,6 +18906,8 @@ snapshots: normalize-range@0.1.2: {} + normalize-url@6.1.0: {} + normalize-wheel-es@1.2.0: {} npm-bundled@2.0.1: @@ -17595,6 +18932,13 @@ snapshots: path-key: 4.0.0 unicorn-magic: 0.3.0 + npmlog@6.0.2: + dependencies: + are-we-there-yet: 3.0.1 + console-control-strings: 1.1.0 + gauge: 4.0.4 + set-blocking: 2.0.0 + nprogress@0.2.0: {} nth-check@2.1.1: @@ -17642,6 +18986,10 @@ snapshots: dependencies: wrappy: 1.0.2 + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + onetime@6.0.0: dependencies: mimic-fn: 4.0.0 @@ -17678,6 +19026,18 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + ora@8.2.0: dependencies: chalk: 5.4.1 @@ -17700,6 +19060,8 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 + p-cancelable@2.1.1: {} + p-filter@2.1.0: dependencies: p-map: 2.1.0 @@ -17836,6 +19198,10 @@ snapshots: pathval@2.0.0: {} + pe-library@0.4.1: {} + + pend@1.2.0: {} + perfect-debounce@1.0.0: {} picocolors@1.1.1: {} @@ -17897,6 +19263,12 @@ snapshots: dependencies: semver-compare: 1.0.0 + plist@3.1.0: + dependencies: + '@xmldom/xmldom': 0.8.10 + base64-js: 1.5.1 + xmlbuilder: 15.1.1 + pluralize@8.0.0: {} pngjs@5.0.0: {} @@ -18394,6 +19766,8 @@ snapshots: process@0.11.10: {} + progress@2.0.3: {} + promise-inflight@1.0.1: {} promise-retry@2.0.1: @@ -18416,6 +19790,11 @@ snapshots: picocolors: 1.1.1 sade: 1.8.1 + pump@3.0.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + punycode@2.3.1: {} pupa@3.1.0: @@ -18436,6 +19815,8 @@ snapshots: queue-microtask@1.2.3: {} + quick-lru@5.1.1: {} + radix-vue@1.9.17(vue@3.5.13(typescript@5.8.3)): dependencies: '@floating-ui/dom': 1.6.13 @@ -18473,6 +19854,12 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 + read-binary-file-arch@1.0.6: + dependencies: + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + read-cache@1.0.0: dependencies: pify: 2.3.0 @@ -18512,6 +19899,12 @@ snapshots: string_decoder: 1.1.1 util-deprecate: 1.0.2 + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + readable-stream@4.7.0: dependencies: abort-controller: 3.0.0 @@ -18630,8 +20023,14 @@ snapshots: require-package-name@2.0.1: {} + resedit@1.7.2: + dependencies: + pe-library: 0.4.1 + resize-observer-polyfill@1.5.1: {} + resolve-alpn@1.2.1: {} + resolve-dir@1.0.1: dependencies: expand-tilde: 2.0.2 @@ -18651,6 +20050,15 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + responselike@2.0.1: + dependencies: + lowercase-keys: 2.0.0 + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + restore-cursor@5.1.0: dependencies: onetime: 7.0.0 @@ -18675,6 +20083,16 @@ snapshots: glob: 11.0.1 package-json-from-dist: 1.0.1 + roarr@2.15.4: + dependencies: + boolean: 3.2.0 + detect-node: 2.1.0 + globalthis: 1.0.4 + json-stringify-safe: 5.0.1 + semver-compare: 1.0.0 + sprintf-js: 1.1.3 + optional: true + rollup-plugin-dts@6.1.1(rollup@4.35.0)(typescript@5.8.3): dependencies: magic-string: 0.30.17 @@ -18784,6 +20202,10 @@ snapshots: safer-buffer@2.1.2: {} + sanitize-filename@1.6.3: + dependencies: + truncate-utf8-bytes: 1.0.2 + sass@1.86.3: dependencies: chokidar: 4.0.3 @@ -18792,8 +20214,7 @@ snapshots: optionalDependencies: '@parcel/watcher': 2.5.1 - sax@1.4.1: - optional: true + sax@1.4.1: {} scroll-into-view-if-needed@2.2.31: dependencies: @@ -18848,6 +20269,11 @@ snapshots: transitivePeerDependencies: - supports-color + serialize-error@7.0.1: + dependencies: + type-fest: 0.13.1 + optional: true + serialize-javascript@6.0.2: dependencies: randombytes: 2.1.0 @@ -18945,8 +20371,14 @@ snapshots: siginfo@2.0.0: {} + signal-exit@3.0.7: {} + signal-exit@4.1.0: {} + simple-update-notifier@2.0.0: + dependencies: + semver: 7.7.1 + sirv@3.0.1: dependencies: '@polka/url': 1.0.0-next.28 @@ -18961,6 +20393,13 @@ snapshots: slashes@3.0.12: {} + slice-ansi@3.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + optional: true + slice-ansi@4.0.0: dependencies: ansi-styles: 4.3.0 @@ -18989,6 +20428,14 @@ snapshots: transitivePeerDependencies: - supports-color + socks-proxy-agent@7.0.0: + dependencies: + agent-base: 6.0.2 + debug: 4.4.0 + socks: 2.8.4 + transitivePeerDependencies: + - supports-color + socks@2.8.4: dependencies: ip-address: 9.0.5 @@ -19051,12 +20498,18 @@ snapshots: dependencies: minipass: 3.3.6 + ssri@9.0.1: + dependencies: + minipass: 3.3.6 + stable-hash@0.0.5: {} stackback@0.0.2: {} standard-as-callback@2.1.0: {} + stat-mode@1.0.0: {} + statuses@2.0.1: {} std-env@3.8.1: {} @@ -19311,6 +20764,12 @@ snapshots: pirates: 4.0.6 ts-interface-checker: 0.1.13 + sumchecker@3.0.1: + dependencies: + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + superjson@2.2.2: dependencies: copy-anything: 3.0.5 @@ -19409,6 +20868,14 @@ snapshots: tapable@2.2.1: {} + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + tar-stream@3.1.7: dependencies: b4a: 1.6.7 @@ -19435,6 +20902,11 @@ snapshots: temp-dir@2.0.0: {} + temp-file@3.4.0: + dependencies: + async-exit-hook: 2.0.1 + fs-extra: 10.1.0 + tempy@0.6.0: dependencies: is-stream: 2.0.1 @@ -19492,10 +20964,16 @@ snapshots: dependencies: '@popperjs/core': 2.11.8 + tmp-promise@3.0.3: + dependencies: + tmp: 0.2.3 + tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 + tmp@0.2.3: {} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -19514,6 +20992,10 @@ snapshots: trim-lines@3.0.1: {} + truncate-utf8-bytes@1.0.2: + dependencies: + utf8-byte-length: 1.0.5 + ts-api-utils@1.4.3(typescript@5.8.3): dependencies: typescript: 5.8.3 @@ -19561,6 +21043,9 @@ snapshots: dependencies: prelude-ls: 1.2.1 + type-fest@0.13.1: + optional: true + type-fest@0.16.0: {} type-fest@0.20.2: {} @@ -19713,10 +21198,18 @@ snapshots: dependencies: unique-slug: 2.0.2 + unique-filename@2.0.1: + dependencies: + unique-slug: 3.0.0 + unique-slug@2.0.2: dependencies: imurmurhash: 0.1.4 + unique-slug@3.0.0: + dependencies: + imurmurhash: 0.1.4 + unique-string@2.0.0: dependencies: crypto-random-string: 2.0.0 @@ -19852,6 +21345,8 @@ snapshots: dependencies: punycode: 2.3.1 + utf8-byte-length@1.0.5: {} + util-deprecate@1.0.2: {} validate-npm-package-license@3.0.4: @@ -19870,6 +21365,13 @@ snapshots: type-fest: 4.37.0 vue: 3.5.13(typescript@5.8.3) + verror@1.10.1: + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.4.1 + optional: true + vfile-message@4.0.2: dependencies: '@types/unist': 3.0.3 @@ -19930,6 +21432,12 @@ snapshots: - rollup - supports-color + vite-plugin-electron-renderer@0.14.6: {} + + vite-plugin-electron@0.29.0(vite-plugin-electron-renderer@0.14.6): + optionalDependencies: + vite-plugin-electron-renderer: 0.14.6 + vite-plugin-html@3.2.2(vite@6.2.5(@types/node@22.14.0)(jiti@2.4.2)(less@4.3.0)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.0)): dependencies: '@rollup/pluginutils': 4.2.1 @@ -20242,6 +21750,10 @@ snapshots: watermark-js-plus@1.5.8: {} + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + webidl-conversions@3.0.1: {} webidl-conversions@4.0.2: {} @@ -20327,6 +21839,10 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 + wide-align@1.1.5: + dependencies: + string-width: 4.2.3 + widest-line@5.0.0: dependencies: string-width: 7.2.0 @@ -20483,6 +21999,8 @@ snapshots: xml-name-validator@4.0.0: {} + xmlbuilder@15.1.1: {} + y18n@4.0.3: {} y18n@5.0.8: {} @@ -20545,6 +22063,11 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + yocto-queue@0.1.0: {} yocto-queue@1.2.0: {} @@ -20563,6 +22086,12 @@ snapshots: cookie: 1.0.2 youch-core: 0.3.2 + zip-stream@4.1.1: + dependencies: + archiver-utils: 3.0.4 + compress-commons: 4.1.2 + readable-stream: 3.6.2 + zip-stream@6.0.1: dependencies: archiver-utils: 5.0.2 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 1227ec91a..89fc18b13 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -87,6 +87,8 @@ catalog: depcheck: ^1.4.7 dotenv: ^16.4.7 echarts: ^5.6.0 + electron: ^35.0.3 + electron-builder: ^25.1.8 element-plus: ^2.9.7 eslint: ^9.24.0 eslint-config-turbo: ^2.5.0 @@ -169,6 +171,8 @@ catalog: vee-validate: ^4.15.0 vite: ^6.2.5 vite-plugin-compression: ^0.5.1 + vite-plugin-electron: ^0.29.0 + vite-plugin-electron-renderer: ^0.14.6 vite-plugin-dts: ^4.5.3 vite-plugin-html: ^3.2.2 vite-plugin-lazy-import: ^1.0.7