mirror of
https://github.com/lone-cloud/gerbil
synced 2026-06-03 09:33:10 -07:00
upgrade to latest electron-vite v5, better cloudflared implementation to download on demand to reduce bundle size
This commit is contained in:
parent
9aca174a48
commit
d302f07e79
6 changed files with 276 additions and 184 deletions
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
|
|
@ -13,5 +13,8 @@
|
|||
"editor.defaultFormatter": "prettier.prettier-vscode",
|
||||
"[typescriptreact]": {
|
||||
"editor.defaultFormatter": "prettier.prettier-vscode"
|
||||
},
|
||||
"[json]": {
|
||||
"editor.defaultFormatter": "prettier.prettier-vscode"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,13 @@
|
|||
import { defineConfig, externalizeDepsPlugin } from 'electron-vite';
|
||||
import { defineConfig } from 'electron-vite';
|
||||
import react from '@vitejs/plugin-react';
|
||||
import { resolve } from 'path';
|
||||
import { visualizer } from 'rollup-plugin-visualizer';
|
||||
|
||||
export default defineConfig({
|
||||
main: {
|
||||
plugins: [externalizeDepsPlugin()],
|
||||
build: {
|
||||
externalizeDeps: true,
|
||||
},
|
||||
resolve: {
|
||||
alias: {
|
||||
'@': resolve(__dirname, './src'),
|
||||
|
|
@ -13,7 +15,9 @@ export default defineConfig({
|
|||
},
|
||||
},
|
||||
preload: {
|
||||
plugins: [externalizeDepsPlugin()],
|
||||
build: {
|
||||
externalizeDeps: true,
|
||||
},
|
||||
resolve: {
|
||||
alias: {
|
||||
'@': resolve(__dirname, './src'),
|
||||
|
|
|
|||
49
package.json
49
package.json
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "gerbil",
|
||||
"productName": "Gerbil",
|
||||
"version": "1.15.1",
|
||||
"version": "1.16.0",
|
||||
"description": "Run Large Language Models locally",
|
||||
"main": "out/main/index.js",
|
||||
"homepage": "./",
|
||||
|
|
@ -37,6 +37,28 @@
|
|||
"email": "lonecloud604@proton.me"
|
||||
},
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"dependencies": {
|
||||
"@codemirror/search": "^6.5.11",
|
||||
"@codemirror/theme-one-dark": "^6.1.3",
|
||||
"@codemirror/view": "^6.38.8",
|
||||
"@fontsource/inter": "^5.2.8",
|
||||
"@huggingface/gguf": "^0.3.2",
|
||||
"@mantine/core": "^8.3.9",
|
||||
"@mantine/hooks": "^8.3.9",
|
||||
"@uiw/react-codemirror": "^4.25.3",
|
||||
"electron-updater": "^6.6.2",
|
||||
"execa": "^9.6.1",
|
||||
"lucide-react": "^0.556.0",
|
||||
"mime-types": "^3.0.2",
|
||||
"react": "^19.2.1",
|
||||
"react-dom": "^19.2.1",
|
||||
"react-error-boundary": "^6.0.0",
|
||||
"systeminformation": "^5.27.11",
|
||||
"winston": "^3.19.0",
|
||||
"winston-daily-rotate-file": "^5.0.0",
|
||||
"yauzl": "^3.2.0",
|
||||
"zustand": "^5.0.9"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.39.1",
|
||||
"@types/mime-types": "^3.0.1",
|
||||
|
|
@ -50,7 +72,7 @@
|
|||
"cross-env": "^10.1.0",
|
||||
"electron": "^38.7.2",
|
||||
"electron-builder": "^26.0.12",
|
||||
"electron-vite": "^4.0.1",
|
||||
"electron-vite": "^5.0.0",
|
||||
"eslint": "^9.39.1",
|
||||
"eslint-plugin-import": "^2.32.0",
|
||||
"eslint-plugin-no-comments": "^1.1.10",
|
||||
|
|
@ -65,29 +87,6 @@
|
|||
"typescript": "^5.9.3",
|
||||
"vite": "^7.2.6"
|
||||
},
|
||||
"dependencies": {
|
||||
"@codemirror/search": "^6.5.11",
|
||||
"@codemirror/theme-one-dark": "^6.1.3",
|
||||
"@codemirror/view": "^6.38.8",
|
||||
"@fontsource/inter": "^5.2.8",
|
||||
"@huggingface/gguf": "^0.3.2",
|
||||
"@mantine/core": "^8.3.9",
|
||||
"@mantine/hooks": "^8.3.9",
|
||||
"@uiw/react-codemirror": "^4.25.3",
|
||||
"cloudflared": "^0.7.1",
|
||||
"electron-updater": "^6.6.2",
|
||||
"execa": "^9.6.1",
|
||||
"lucide-react": "^0.556.0",
|
||||
"mime-types": "^3.0.2",
|
||||
"react": "^19.2.1",
|
||||
"react-dom": "^19.2.1",
|
||||
"react-error-boundary": "^6.0.0",
|
||||
"systeminformation": "^5.27.11",
|
||||
"winston": "^3.18.3",
|
||||
"winston-daily-rotate-file": "^5.0.0",
|
||||
"yauzl": "^3.2.0",
|
||||
"zustand": "^5.0.9"
|
||||
},
|
||||
"build": {
|
||||
"appId": "com.gerbil.app",
|
||||
"productName": "Gerbil",
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ export const GITHUB_API = {
|
|||
KOBOLDCPP_REPO: 'LostRuins/koboldcpp',
|
||||
KOBOLDCPP_ROCM_REPO: 'YellowRoseCx/koboldcpp-rocm',
|
||||
GERBIL_REPO: 'lone-cloud/gerbil',
|
||||
CLOUDFLARED_REPO: 'cloudflare/cloudflared',
|
||||
get LATEST_RELEASE_URL() {
|
||||
return `${this.BASE_URL}/repos/${this.KOBOLDCPP_REPO}/releases/latest` as const;
|
||||
},
|
||||
|
|
@ -60,6 +61,12 @@ export const GITHUB_API = {
|
|||
get GERBIL_LATEST_RELEASE_URL() {
|
||||
return `${this.BASE_URL}/repos/${this.GERBIL_REPO}/releases/latest` as const;
|
||||
},
|
||||
get CLOUDFLARED_LATEST_RELEASE_URL() {
|
||||
return `${this.BASE_URL}/repos/${this.CLOUDFLARED_REPO}/releases/latest` as const;
|
||||
},
|
||||
getCloudflaredDownloadUrl(version: string, filename: string) {
|
||||
return `${this.GITHUB_BASE_URL}/${this.CLOUDFLARED_REPO}/releases/download/${version}/${filename}` as const;
|
||||
},
|
||||
} as const;
|
||||
|
||||
export const ASSET_SUFFIXES = {
|
||||
|
|
|
|||
|
|
@ -1,16 +1,19 @@
|
|||
import fs from 'fs';
|
||||
import { createWriteStream } from 'fs';
|
||||
import { chmod, access } from 'fs/promises';
|
||||
import path from 'path';
|
||||
import { Tunnel, install, use as setCloudflaredBin } from 'cloudflared';
|
||||
import { platform } from 'process';
|
||||
import { platform, arch } from 'process';
|
||||
import { pipeline } from 'stream/promises';
|
||||
import { Readable } from 'stream';
|
||||
import { execa, type ResultPromise } from 'execa';
|
||||
|
||||
import { logError } from '@/utils/node/logging';
|
||||
import { sendKoboldOutput, sendToRenderer } from '../window';
|
||||
import { PROXY } from '@/constants/proxy';
|
||||
import { SILLYTAVERN, OPENWEBUI } from '@/constants';
|
||||
import { SILLYTAVERN, OPENWEBUI, GITHUB_API } from '@/constants';
|
||||
import { getInstallDir } from '@/main/modules/config';
|
||||
import type { FrontendPreference } from '@/types';
|
||||
|
||||
let activeTunnel: Tunnel | null = null;
|
||||
let activeTunnel: ResultPromise | null = null;
|
||||
let tunnelUrl: string | null = null;
|
||||
|
||||
const getCloudflaredBin = () => {
|
||||
|
|
@ -18,6 +21,55 @@ const getCloudflaredBin = () => {
|
|||
return path.join(getInstallDir(), binName);
|
||||
};
|
||||
|
||||
const getCloudflaredAssetName = () => {
|
||||
const archSuffix = arch === 'arm64' ? 'arm64' : 'amd64';
|
||||
|
||||
if (platform === 'win32') {
|
||||
return 'cloudflared-windows-amd64.exe';
|
||||
} else if (platform === 'darwin') {
|
||||
return `cloudflared-darwin-${archSuffix}`;
|
||||
} else {
|
||||
return `cloudflared-linux-${archSuffix}`;
|
||||
}
|
||||
};
|
||||
|
||||
const getCloudflaredDownloadUrl = async () => {
|
||||
const response = await fetch(GITHUB_API.CLOUDFLARED_LATEST_RELEASE_URL);
|
||||
if (!response.ok) {
|
||||
throw new Error(
|
||||
`Failed to fetch latest cloudflared release: ${response.statusText}`
|
||||
);
|
||||
}
|
||||
|
||||
const release = (await response.json()) as { tag_name: string };
|
||||
return GITHUB_API.getCloudflaredDownloadUrl(
|
||||
release.tag_name,
|
||||
getCloudflaredAssetName()
|
||||
);
|
||||
};
|
||||
|
||||
const downloadCloudflared = async (binPath: string) => {
|
||||
const url = await getCloudflaredDownloadUrl();
|
||||
sendKoboldOutput(`Downloading cloudflared from ${url}...`);
|
||||
|
||||
const response = await fetch(url);
|
||||
if (!response.ok || !response.body) {
|
||||
throw new Error(`Failed to download cloudflared: ${response.statusText}`);
|
||||
}
|
||||
|
||||
await pipeline(
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
Readable.fromWeb(response.body as any),
|
||||
createWriteStream(binPath)
|
||||
);
|
||||
|
||||
if (platform !== 'win32') {
|
||||
await chmod(binPath, 0o755);
|
||||
}
|
||||
|
||||
sendKoboldOutput(`Downloaded cloudflared to ${binPath}`);
|
||||
};
|
||||
|
||||
const getTunnelTarget = (frontendPreference: FrontendPreference) => {
|
||||
switch (frontendPreference) {
|
||||
case 'sillytavern':
|
||||
|
|
@ -41,42 +93,74 @@ export const startTunnel = async (
|
|||
|
||||
const bin = getCloudflaredBin();
|
||||
|
||||
if (!fs.existsSync(bin)) {
|
||||
sendKoboldOutput(`Installing cloudflared binary to ${bin}...`);
|
||||
await install(bin);
|
||||
const binExists = await access(bin)
|
||||
.then(() => true)
|
||||
.catch(() => false);
|
||||
|
||||
if (!binExists) {
|
||||
await downloadCloudflared(bin);
|
||||
}
|
||||
|
||||
setCloudflaredBin(bin);
|
||||
|
||||
const tunnelTarget = getTunnelTarget(frontendPreference);
|
||||
const tunnel = Tunnel.quick(tunnelTarget, { '--no-autoupdate': true });
|
||||
const tunnel = execa(bin, [
|
||||
'tunnel',
|
||||
'--url',
|
||||
tunnelTarget,
|
||||
'--no-autoupdate',
|
||||
]);
|
||||
|
||||
activeTunnel = tunnel;
|
||||
|
||||
let rateLimited = false;
|
||||
let output = '';
|
||||
let urlFound = false;
|
||||
|
||||
tunnel.on('stderr', (data: string) => {
|
||||
if (data.includes('429') || data.includes('Too Many Requests')) {
|
||||
tunnel.stderr?.on('data', (data: Buffer) => {
|
||||
const text = data.toString();
|
||||
output += text;
|
||||
if (text.includes('429') || text.includes('Too Many Requests')) {
|
||||
rateLimited = true;
|
||||
}
|
||||
});
|
||||
|
||||
tunnel.stdout?.on('data', (data: Buffer) => {
|
||||
output += data.toString();
|
||||
});
|
||||
|
||||
const url = await new Promise<string>((resolve, reject) => {
|
||||
const timeout = setTimeout(() => {
|
||||
const message = rateLimited
|
||||
? 'Cloudflare rate limit exceeded. Please wait a few minutes and try again.'
|
||||
: 'Tunnel connection timed out';
|
||||
tunnel.kill();
|
||||
reject(new Error(message));
|
||||
}, 30000);
|
||||
|
||||
tunnel.once('url', (url) => {
|
||||
clearTimeout(timeout);
|
||||
resolve(url);
|
||||
});
|
||||
const checkForUrl = () => {
|
||||
const match = output.match(/https:\/\/[a-z0-9-]+\.trycloudflare\.com/);
|
||||
if (match) {
|
||||
urlFound = true;
|
||||
clearTimeout(timeout);
|
||||
clearInterval(checkInterval);
|
||||
resolve(match[0]);
|
||||
}
|
||||
};
|
||||
|
||||
const checkInterval = setInterval(checkForUrl, 100);
|
||||
|
||||
tunnel.once('error', (error) => {
|
||||
clearTimeout(timeout);
|
||||
clearInterval(checkInterval);
|
||||
reject(error);
|
||||
});
|
||||
|
||||
tunnel.once('exit', (code) => {
|
||||
if (!urlFound) {
|
||||
clearTimeout(timeout);
|
||||
clearInterval(checkInterval);
|
||||
reject(new Error(`Tunnel process exited with code ${code}`));
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
tunnelUrl = url;
|
||||
|
|
@ -88,7 +172,7 @@ export const startTunnel = async (
|
|||
sendKoboldOutput(`Tunnel error: ${error.message}`);
|
||||
});
|
||||
|
||||
tunnel.on('exit', (code, signal) => {
|
||||
tunnel.on('exit', (code: number, signal: string) => {
|
||||
sendKoboldOutput(
|
||||
`Tunnel process exited (code: ${code}, signal: ${signal})`
|
||||
);
|
||||
|
|
@ -102,7 +186,12 @@ export const startTunnel = async (
|
|||
const errorMessage = error instanceof Error ? error.message : String(error);
|
||||
logError(`Failed to start tunnel: ${errorMessage}`, error as Error);
|
||||
sendKoboldOutput(`Failed to start tunnel: ${errorMessage}`);
|
||||
activeTunnel = null;
|
||||
|
||||
if (activeTunnel) {
|
||||
activeTunnel.kill();
|
||||
activeTunnel = null;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
|
@ -114,7 +203,7 @@ export const stopTunnel = () => {
|
|||
|
||||
try {
|
||||
sendKoboldOutput('Stopping Cloudflare tunnel...');
|
||||
activeTunnel.stop();
|
||||
activeTunnel.kill();
|
||||
activeTunnel = null;
|
||||
tunnelUrl = null;
|
||||
sendToRenderer('tunnel-url-changed', null);
|
||||
|
|
|
|||
262
yarn.lock
262
yarn.lock
|
|
@ -30,7 +30,7 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/core@npm:^7.24.4, @babel/core@npm:^7.27.7, @babel/core@npm:^7.28.5":
|
||||
"@babel/core@npm:^7.24.4, @babel/core@npm:^7.28.4, @babel/core@npm:^7.28.5":
|
||||
version: 7.28.5
|
||||
resolution: "@babel/core@npm:7.28.5"
|
||||
dependencies:
|
||||
|
|
@ -474,184 +474,184 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@esbuild/aix-ppc64@npm:0.25.11":
|
||||
version: 0.25.11
|
||||
resolution: "@esbuild/aix-ppc64@npm:0.25.11"
|
||||
"@esbuild/aix-ppc64@npm:0.25.12":
|
||||
version: 0.25.12
|
||||
resolution: "@esbuild/aix-ppc64@npm:0.25.12"
|
||||
conditions: os=aix & cpu=ppc64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@esbuild/android-arm64@npm:0.25.11":
|
||||
version: 0.25.11
|
||||
resolution: "@esbuild/android-arm64@npm:0.25.11"
|
||||
"@esbuild/android-arm64@npm:0.25.12":
|
||||
version: 0.25.12
|
||||
resolution: "@esbuild/android-arm64@npm:0.25.12"
|
||||
conditions: os=android & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@esbuild/android-arm@npm:0.25.11":
|
||||
version: 0.25.11
|
||||
resolution: "@esbuild/android-arm@npm:0.25.11"
|
||||
"@esbuild/android-arm@npm:0.25.12":
|
||||
version: 0.25.12
|
||||
resolution: "@esbuild/android-arm@npm:0.25.12"
|
||||
conditions: os=android & cpu=arm
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@esbuild/android-x64@npm:0.25.11":
|
||||
version: 0.25.11
|
||||
resolution: "@esbuild/android-x64@npm:0.25.11"
|
||||
"@esbuild/android-x64@npm:0.25.12":
|
||||
version: 0.25.12
|
||||
resolution: "@esbuild/android-x64@npm:0.25.12"
|
||||
conditions: os=android & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@esbuild/darwin-arm64@npm:0.25.11":
|
||||
version: 0.25.11
|
||||
resolution: "@esbuild/darwin-arm64@npm:0.25.11"
|
||||
"@esbuild/darwin-arm64@npm:0.25.12":
|
||||
version: 0.25.12
|
||||
resolution: "@esbuild/darwin-arm64@npm:0.25.12"
|
||||
conditions: os=darwin & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@esbuild/darwin-x64@npm:0.25.11":
|
||||
version: 0.25.11
|
||||
resolution: "@esbuild/darwin-x64@npm:0.25.11"
|
||||
"@esbuild/darwin-x64@npm:0.25.12":
|
||||
version: 0.25.12
|
||||
resolution: "@esbuild/darwin-x64@npm:0.25.12"
|
||||
conditions: os=darwin & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@esbuild/freebsd-arm64@npm:0.25.11":
|
||||
version: 0.25.11
|
||||
resolution: "@esbuild/freebsd-arm64@npm:0.25.11"
|
||||
"@esbuild/freebsd-arm64@npm:0.25.12":
|
||||
version: 0.25.12
|
||||
resolution: "@esbuild/freebsd-arm64@npm:0.25.12"
|
||||
conditions: os=freebsd & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@esbuild/freebsd-x64@npm:0.25.11":
|
||||
version: 0.25.11
|
||||
resolution: "@esbuild/freebsd-x64@npm:0.25.11"
|
||||
"@esbuild/freebsd-x64@npm:0.25.12":
|
||||
version: 0.25.12
|
||||
resolution: "@esbuild/freebsd-x64@npm:0.25.12"
|
||||
conditions: os=freebsd & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@esbuild/linux-arm64@npm:0.25.11":
|
||||
version: 0.25.11
|
||||
resolution: "@esbuild/linux-arm64@npm:0.25.11"
|
||||
"@esbuild/linux-arm64@npm:0.25.12":
|
||||
version: 0.25.12
|
||||
resolution: "@esbuild/linux-arm64@npm:0.25.12"
|
||||
conditions: os=linux & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@esbuild/linux-arm@npm:0.25.11":
|
||||
version: 0.25.11
|
||||
resolution: "@esbuild/linux-arm@npm:0.25.11"
|
||||
"@esbuild/linux-arm@npm:0.25.12":
|
||||
version: 0.25.12
|
||||
resolution: "@esbuild/linux-arm@npm:0.25.12"
|
||||
conditions: os=linux & cpu=arm
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@esbuild/linux-ia32@npm:0.25.11":
|
||||
version: 0.25.11
|
||||
resolution: "@esbuild/linux-ia32@npm:0.25.11"
|
||||
"@esbuild/linux-ia32@npm:0.25.12":
|
||||
version: 0.25.12
|
||||
resolution: "@esbuild/linux-ia32@npm:0.25.12"
|
||||
conditions: os=linux & cpu=ia32
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@esbuild/linux-loong64@npm:0.25.11":
|
||||
version: 0.25.11
|
||||
resolution: "@esbuild/linux-loong64@npm:0.25.11"
|
||||
"@esbuild/linux-loong64@npm:0.25.12":
|
||||
version: 0.25.12
|
||||
resolution: "@esbuild/linux-loong64@npm:0.25.12"
|
||||
conditions: os=linux & cpu=loong64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@esbuild/linux-mips64el@npm:0.25.11":
|
||||
version: 0.25.11
|
||||
resolution: "@esbuild/linux-mips64el@npm:0.25.11"
|
||||
"@esbuild/linux-mips64el@npm:0.25.12":
|
||||
version: 0.25.12
|
||||
resolution: "@esbuild/linux-mips64el@npm:0.25.12"
|
||||
conditions: os=linux & cpu=mips64el
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@esbuild/linux-ppc64@npm:0.25.11":
|
||||
version: 0.25.11
|
||||
resolution: "@esbuild/linux-ppc64@npm:0.25.11"
|
||||
"@esbuild/linux-ppc64@npm:0.25.12":
|
||||
version: 0.25.12
|
||||
resolution: "@esbuild/linux-ppc64@npm:0.25.12"
|
||||
conditions: os=linux & cpu=ppc64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@esbuild/linux-riscv64@npm:0.25.11":
|
||||
version: 0.25.11
|
||||
resolution: "@esbuild/linux-riscv64@npm:0.25.11"
|
||||
"@esbuild/linux-riscv64@npm:0.25.12":
|
||||
version: 0.25.12
|
||||
resolution: "@esbuild/linux-riscv64@npm:0.25.12"
|
||||
conditions: os=linux & cpu=riscv64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@esbuild/linux-s390x@npm:0.25.11":
|
||||
version: 0.25.11
|
||||
resolution: "@esbuild/linux-s390x@npm:0.25.11"
|
||||
"@esbuild/linux-s390x@npm:0.25.12":
|
||||
version: 0.25.12
|
||||
resolution: "@esbuild/linux-s390x@npm:0.25.12"
|
||||
conditions: os=linux & cpu=s390x
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@esbuild/linux-x64@npm:0.25.11":
|
||||
version: 0.25.11
|
||||
resolution: "@esbuild/linux-x64@npm:0.25.11"
|
||||
"@esbuild/linux-x64@npm:0.25.12":
|
||||
version: 0.25.12
|
||||
resolution: "@esbuild/linux-x64@npm:0.25.12"
|
||||
conditions: os=linux & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@esbuild/netbsd-arm64@npm:0.25.11":
|
||||
version: 0.25.11
|
||||
resolution: "@esbuild/netbsd-arm64@npm:0.25.11"
|
||||
"@esbuild/netbsd-arm64@npm:0.25.12":
|
||||
version: 0.25.12
|
||||
resolution: "@esbuild/netbsd-arm64@npm:0.25.12"
|
||||
conditions: os=netbsd & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@esbuild/netbsd-x64@npm:0.25.11":
|
||||
version: 0.25.11
|
||||
resolution: "@esbuild/netbsd-x64@npm:0.25.11"
|
||||
"@esbuild/netbsd-x64@npm:0.25.12":
|
||||
version: 0.25.12
|
||||
resolution: "@esbuild/netbsd-x64@npm:0.25.12"
|
||||
conditions: os=netbsd & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@esbuild/openbsd-arm64@npm:0.25.11":
|
||||
version: 0.25.11
|
||||
resolution: "@esbuild/openbsd-arm64@npm:0.25.11"
|
||||
"@esbuild/openbsd-arm64@npm:0.25.12":
|
||||
version: 0.25.12
|
||||
resolution: "@esbuild/openbsd-arm64@npm:0.25.12"
|
||||
conditions: os=openbsd & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@esbuild/openbsd-x64@npm:0.25.11":
|
||||
version: 0.25.11
|
||||
resolution: "@esbuild/openbsd-x64@npm:0.25.11"
|
||||
"@esbuild/openbsd-x64@npm:0.25.12":
|
||||
version: 0.25.12
|
||||
resolution: "@esbuild/openbsd-x64@npm:0.25.12"
|
||||
conditions: os=openbsd & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@esbuild/openharmony-arm64@npm:0.25.11":
|
||||
version: 0.25.11
|
||||
resolution: "@esbuild/openharmony-arm64@npm:0.25.11"
|
||||
"@esbuild/openharmony-arm64@npm:0.25.12":
|
||||
version: 0.25.12
|
||||
resolution: "@esbuild/openharmony-arm64@npm:0.25.12"
|
||||
conditions: os=openharmony & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@esbuild/sunos-x64@npm:0.25.11":
|
||||
version: 0.25.11
|
||||
resolution: "@esbuild/sunos-x64@npm:0.25.11"
|
||||
"@esbuild/sunos-x64@npm:0.25.12":
|
||||
version: 0.25.12
|
||||
resolution: "@esbuild/sunos-x64@npm:0.25.12"
|
||||
conditions: os=sunos & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@esbuild/win32-arm64@npm:0.25.11":
|
||||
version: 0.25.11
|
||||
resolution: "@esbuild/win32-arm64@npm:0.25.11"
|
||||
"@esbuild/win32-arm64@npm:0.25.12":
|
||||
version: 0.25.12
|
||||
resolution: "@esbuild/win32-arm64@npm:0.25.12"
|
||||
conditions: os=win32 & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@esbuild/win32-ia32@npm:0.25.11":
|
||||
version: 0.25.11
|
||||
resolution: "@esbuild/win32-ia32@npm:0.25.11"
|
||||
"@esbuild/win32-ia32@npm:0.25.12":
|
||||
version: 0.25.12
|
||||
resolution: "@esbuild/win32-ia32@npm:0.25.12"
|
||||
conditions: os=win32 & cpu=ia32
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@esbuild/win32-x64@npm:0.25.11":
|
||||
version: 0.25.11
|
||||
resolution: "@esbuild/win32-x64@npm:0.25.11"
|
||||
"@esbuild/win32-x64@npm:0.25.12":
|
||||
version: 0.25.12
|
||||
resolution: "@esbuild/win32-x64@npm:0.25.12"
|
||||
conditions: os=win32 & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
|
@ -2304,15 +2304,6 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"cloudflared@npm:^0.7.1":
|
||||
version: 0.7.1
|
||||
resolution: "cloudflared@npm:0.7.1"
|
||||
bin:
|
||||
cloudflared: lib/cloudflared.js
|
||||
checksum: 10c0/e5cb2a44f514c19f80078eed019cf772d545ff58e528359b5d31a96de0885e959085fee37b21d3c99053d93b5a4abeb8c23b5cb66127257ad4dc92ef01912626
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"clsx@npm:^2.1.1":
|
||||
version: 2.1.1
|
||||
resolution: "clsx@npm:2.1.1"
|
||||
|
|
@ -2779,15 +2770,15 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"electron-vite@npm:^4.0.1":
|
||||
version: 4.0.1
|
||||
resolution: "electron-vite@npm:4.0.1"
|
||||
"electron-vite@npm:^5.0.0":
|
||||
version: 5.0.0
|
||||
resolution: "electron-vite@npm:5.0.0"
|
||||
dependencies:
|
||||
"@babel/core": "npm:^7.27.7"
|
||||
"@babel/core": "npm:^7.28.4"
|
||||
"@babel/plugin-transform-arrow-functions": "npm:^7.27.1"
|
||||
cac: "npm:^6.7.14"
|
||||
esbuild: "npm:^0.25.5"
|
||||
magic-string: "npm:^0.30.17"
|
||||
esbuild: "npm:^0.25.11"
|
||||
magic-string: "npm:^0.30.19"
|
||||
picocolors: "npm:^1.1.1"
|
||||
peerDependencies:
|
||||
"@swc/core": ^1.0.0
|
||||
|
|
@ -2797,7 +2788,7 @@ __metadata:
|
|||
optional: true
|
||||
bin:
|
||||
electron-vite: bin/electron-vite.js
|
||||
checksum: 10c0/4e81ac4e4ede6060ffec56ba9b1d5ff95bb263496e62527345e8c79542924c54c54def39de9b466a81ed250b68774792c2106b93274c790b4cd8e7be448f6af8
|
||||
checksum: 10c0/e7797910b23f23f39c12ded92d07d7164c5c6adab294aa13278c1b49ada3b12868b13ace8546d2656db4dbab89978cf8368a659d1ce6a2fb9f1aeddb1c8de557
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
|
@ -3015,36 +3006,36 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"esbuild@npm:^0.25.0, esbuild@npm:^0.25.5":
|
||||
version: 0.25.11
|
||||
resolution: "esbuild@npm:0.25.11"
|
||||
"esbuild@npm:^0.25.0, esbuild@npm:^0.25.11":
|
||||
version: 0.25.12
|
||||
resolution: "esbuild@npm:0.25.12"
|
||||
dependencies:
|
||||
"@esbuild/aix-ppc64": "npm:0.25.11"
|
||||
"@esbuild/android-arm": "npm:0.25.11"
|
||||
"@esbuild/android-arm64": "npm:0.25.11"
|
||||
"@esbuild/android-x64": "npm:0.25.11"
|
||||
"@esbuild/darwin-arm64": "npm:0.25.11"
|
||||
"@esbuild/darwin-x64": "npm:0.25.11"
|
||||
"@esbuild/freebsd-arm64": "npm:0.25.11"
|
||||
"@esbuild/freebsd-x64": "npm:0.25.11"
|
||||
"@esbuild/linux-arm": "npm:0.25.11"
|
||||
"@esbuild/linux-arm64": "npm:0.25.11"
|
||||
"@esbuild/linux-ia32": "npm:0.25.11"
|
||||
"@esbuild/linux-loong64": "npm:0.25.11"
|
||||
"@esbuild/linux-mips64el": "npm:0.25.11"
|
||||
"@esbuild/linux-ppc64": "npm:0.25.11"
|
||||
"@esbuild/linux-riscv64": "npm:0.25.11"
|
||||
"@esbuild/linux-s390x": "npm:0.25.11"
|
||||
"@esbuild/linux-x64": "npm:0.25.11"
|
||||
"@esbuild/netbsd-arm64": "npm:0.25.11"
|
||||
"@esbuild/netbsd-x64": "npm:0.25.11"
|
||||
"@esbuild/openbsd-arm64": "npm:0.25.11"
|
||||
"@esbuild/openbsd-x64": "npm:0.25.11"
|
||||
"@esbuild/openharmony-arm64": "npm:0.25.11"
|
||||
"@esbuild/sunos-x64": "npm:0.25.11"
|
||||
"@esbuild/win32-arm64": "npm:0.25.11"
|
||||
"@esbuild/win32-ia32": "npm:0.25.11"
|
||||
"@esbuild/win32-x64": "npm:0.25.11"
|
||||
"@esbuild/aix-ppc64": "npm:0.25.12"
|
||||
"@esbuild/android-arm": "npm:0.25.12"
|
||||
"@esbuild/android-arm64": "npm:0.25.12"
|
||||
"@esbuild/android-x64": "npm:0.25.12"
|
||||
"@esbuild/darwin-arm64": "npm:0.25.12"
|
||||
"@esbuild/darwin-x64": "npm:0.25.12"
|
||||
"@esbuild/freebsd-arm64": "npm:0.25.12"
|
||||
"@esbuild/freebsd-x64": "npm:0.25.12"
|
||||
"@esbuild/linux-arm": "npm:0.25.12"
|
||||
"@esbuild/linux-arm64": "npm:0.25.12"
|
||||
"@esbuild/linux-ia32": "npm:0.25.12"
|
||||
"@esbuild/linux-loong64": "npm:0.25.12"
|
||||
"@esbuild/linux-mips64el": "npm:0.25.12"
|
||||
"@esbuild/linux-ppc64": "npm:0.25.12"
|
||||
"@esbuild/linux-riscv64": "npm:0.25.12"
|
||||
"@esbuild/linux-s390x": "npm:0.25.12"
|
||||
"@esbuild/linux-x64": "npm:0.25.12"
|
||||
"@esbuild/netbsd-arm64": "npm:0.25.12"
|
||||
"@esbuild/netbsd-x64": "npm:0.25.12"
|
||||
"@esbuild/openbsd-arm64": "npm:0.25.12"
|
||||
"@esbuild/openbsd-x64": "npm:0.25.12"
|
||||
"@esbuild/openharmony-arm64": "npm:0.25.12"
|
||||
"@esbuild/sunos-x64": "npm:0.25.12"
|
||||
"@esbuild/win32-arm64": "npm:0.25.12"
|
||||
"@esbuild/win32-ia32": "npm:0.25.12"
|
||||
"@esbuild/win32-x64": "npm:0.25.12"
|
||||
dependenciesMeta:
|
||||
"@esbuild/aix-ppc64":
|
||||
optional: true
|
||||
|
|
@ -3100,7 +3091,7 @@ __metadata:
|
|||
optional: true
|
||||
bin:
|
||||
esbuild: bin/esbuild
|
||||
checksum: 10c0/7f819b16a9f502091ddc6e1855291eaa5ede32c2b792cd8a8a60cc24faee469e3c7b607e2f22ea8684eb7c7bc377b2509e9f1cd50f10b3bf5042d1e9e4234be3
|
||||
checksum: 10c0/c205357531423220a9de8e1e6c6514242bc9b1666e762cd67ccdf8fdfdc3f1d0bd76f8d9383958b97ad4c953efdb7b6e8c1f9ca5951cd2b7c5235e8755b34a6b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
|
@ -3728,12 +3719,11 @@ __metadata:
|
|||
"@typescript-eslint/parser": "npm:^8.48.1"
|
||||
"@uiw/react-codemirror": "npm:^4.25.3"
|
||||
"@vitejs/plugin-react": "npm:^5.1.1"
|
||||
cloudflared: "npm:^0.7.1"
|
||||
cross-env: "npm:^10.1.0"
|
||||
electron: "npm:^38.7.2"
|
||||
electron-builder: "npm:^26.0.12"
|
||||
electron-updater: "npm:^6.6.2"
|
||||
electron-vite: "npm:^4.0.1"
|
||||
electron-vite: "npm:^5.0.0"
|
||||
eslint: "npm:^9.39.1"
|
||||
eslint-plugin-import: "npm:^2.32.0"
|
||||
eslint-plugin-no-comments: "npm:^1.1.10"
|
||||
|
|
@ -3754,7 +3744,7 @@ __metadata:
|
|||
systeminformation: "npm:^5.27.11"
|
||||
typescript: "npm:^5.9.3"
|
||||
vite: "npm:^7.2.6"
|
||||
winston: "npm:^3.18.3"
|
||||
winston: "npm:^3.19.0"
|
||||
winston-daily-rotate-file: "npm:^5.0.0"
|
||||
yauzl: "npm:^3.2.0"
|
||||
zustand: "npm:^5.0.9"
|
||||
|
|
@ -4813,12 +4803,12 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"magic-string@npm:^0.30.17":
|
||||
version: 0.30.19
|
||||
resolution: "magic-string@npm:0.30.19"
|
||||
"magic-string@npm:^0.30.19":
|
||||
version: 0.30.21
|
||||
resolution: "magic-string@npm:0.30.21"
|
||||
dependencies:
|
||||
"@jridgewell/sourcemap-codec": "npm:^1.5.5"
|
||||
checksum: 10c0/db23fd2e2ee98a1aeb88a4cdb2353137fcf05819b883c856dd79e4c7dfb25151e2a5a4d5dbd88add5e30ed8ae5c51bcf4accbc6becb75249d924ec7b4fbcae27
|
||||
checksum: 10c0/299378e38f9a270069fc62358522ddfb44e94244baa0d6a8980ab2a9b2490a1d03b236b447eee309e17eb3bddfa482c61259d47960eb018a904f0ded52780c4a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
|
@ -7156,9 +7146,9 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"winston@npm:^3.18.3":
|
||||
version: 3.18.3
|
||||
resolution: "winston@npm:3.18.3"
|
||||
"winston@npm:^3.19.0":
|
||||
version: 3.19.0
|
||||
resolution: "winston@npm:3.19.0"
|
||||
dependencies:
|
||||
"@colors/colors": "npm:^1.6.0"
|
||||
"@dabh/diagnostics": "npm:^2.0.8"
|
||||
|
|
@ -7171,7 +7161,7 @@ __metadata:
|
|||
stack-trace: "npm:0.0.x"
|
||||
triple-beam: "npm:^1.3.0"
|
||||
winston-transport: "npm:^4.9.0"
|
||||
checksum: 10c0/0bd666590d7f1f2e1fa1273b699463e14b2fcf2bab503e16bc62f275c4b52f14c3dda7bb255d5cc4cef046dd3e112c45518ec8f3c3536ab666421b7265d8c45b
|
||||
checksum: 10c0/341a8ccfb726120209d34e2466040e2ca72cadb1a3402c4fc90425facad002b81275675b4ab9b4432a624311bc47ef7c9fb7652c86fca454d2be2f2ee1882226
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue