From 71b03d92b6dbaec00745cd2440671c0baad251c0 Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Fri, 19 Jun 2026 22:20:37 -0700 Subject: [PATCH 01/19] replace forge vite plugin with build/dev scripts --- apps/code/forge.config.ts | 28 ---- apps/code/forge.env.d.ts | 1 - apps/code/package.json | 12 +- apps/code/scripts/build.mjs | 41 +++++ apps/code/scripts/dev.mjs | 255 +++++++++++++++++++++++++++++ apps/code/src/main/window.ts | 4 +- apps/code/vite.main.config.mts | 14 ++ apps/code/vite.preload.config.mts | 26 +++ apps/code/vite.renderer.config.mts | 1 + 9 files changed, 345 insertions(+), 37 deletions(-) delete mode 100644 apps/code/forge.env.d.ts create mode 100644 apps/code/scripts/build.mjs create mode 100644 apps/code/scripts/dev.mjs diff --git a/apps/code/forge.config.ts b/apps/code/forge.config.ts index b88e085c80..2587a6cfe7 100644 --- a/apps/code/forge.config.ts +++ b/apps/code/forge.config.ts @@ -7,7 +7,6 @@ import { MakerDMG } from "@electron-forge/maker-dmg"; import { MakerRpm } from "@electron-forge/maker-rpm"; import { MakerSquirrel } from "@electron-forge/maker-squirrel"; import { MakerZIP } from "@electron-forge/maker-zip"; -import { VitePlugin } from "@electron-forge/plugin-vite"; import { PublisherGithub } from "@electron-forge/publisher-github"; import type { ForgeConfig } from "@electron-forge/shared-types"; import { MakerAppImage } from "@reforged/maker-appimage"; @@ -372,33 +371,6 @@ const config: ForgeConfig = { prerelease: false, }), ], - plugins: [ - new VitePlugin({ - build: [ - { - entry: "src/main/bootstrap.ts", - config: "vite.main.config.mts", - target: "main", - }, - { - entry: "src/main/preload.ts", - config: "vite.preload.config.mts", - target: "preload", - }, - { - entry: "node_modules/@posthog/workspace-server/src/serve.ts", - config: "vite.workspace-server.config.mts", - target: "main", - }, - ], - renderer: [ - { - name: "main_window", - config: "vite.renderer.config.mts", - }, - ], - }), - ], }; export default config; diff --git a/apps/code/forge.env.d.ts b/apps/code/forge.env.d.ts deleted file mode 100644 index 9700e0ae19..0000000000 --- a/apps/code/forge.env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/apps/code/package.json b/apps/code/package.json index 19ca6a9abc..de395b8a8c 100644 --- a/apps/code/package.json +++ b/apps/code/package.json @@ -10,12 +10,12 @@ }, "scripts": { "setup": "bash bin/setup", - "dev": "electron-forge start -- --remote-debugging-port=9222", - "start": "electron-forge start -- --remote-debugging-port=9222", - "start:debug": "electron-forge start -- --inspect=5858 --remote-debugging-port=9222", - "package": "electron-forge package", - "package:dev": "FORCE_DEV_MODE=1 SKIP_NOTARIZE=1 electron-forge package", - "make": "electron-forge make", + "dev": "node scripts/dev.mjs", + "start": "node scripts/dev.mjs", + "start:debug": "ELECTRON_INSPECT=5858 node scripts/dev.mjs", + "package": "node scripts/build.mjs && electron-forge package", + "package:dev": "FORCE_DEV_MODE=1 SKIP_NOTARIZE=1 node scripts/build.mjs && electron-forge package", + "make": "node scripts/build.mjs && electron-forge make", "make:linux": "bash scripts/build-linux-docker.sh", "publish": "electron-forge publish", "build": "pnpm package", diff --git a/apps/code/scripts/build.mjs b/apps/code/scripts/build.mjs new file mode 100644 index 0000000000..f6b7221ba1 --- /dev/null +++ b/apps/code/scripts/build.mjs @@ -0,0 +1,41 @@ +#!/usr/bin/env node +import { spawn } from "node:child_process"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const root = path.resolve(__dirname, ".."); + +function runViteBuild(config) { + return new Promise((resolve, reject) => { + const child = spawn( + "pnpm", + ["exec", "vite", "build", "--config", config], + { cwd: root, stdio: "inherit" }, + ); + child.on("close", (code) => { + if (code !== 0) { + reject(new Error(`vite build -c ${config} exited with code ${code}`)); + } else { + resolve(); + } + }); + child.on("error", reject); + }); +} + +async function main() { + // Main must run first — its plugins copy claude-cli, codex-acp, grammars, + // plugins/posthog and drizzle migrations into .vite/build. + await runViteBuild("vite.main.config.mts"); + + // Preload, workspace-server and renderer run after main. + await runViteBuild("vite.preload.config.mts"); + await runViteBuild("vite.workspace-server.config.mts"); + await runViteBuild("vite.renderer.config.mts"); +} + +main().catch((err) => { + console.error(err.message); + process.exit(1); +}); diff --git a/apps/code/scripts/dev.mjs b/apps/code/scripts/dev.mjs new file mode 100644 index 0000000000..8ccfd5d1ce --- /dev/null +++ b/apps/code/scripts/dev.mjs @@ -0,0 +1,255 @@ +#!/usr/bin/env node +import { spawn } from "node:child_process"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const root = path.resolve(__dirname, ".."); + +const DEV_SERVER_PORT = 5173; + +const children = []; + +function killAll(signal = "SIGTERM") { + for (const child of children) { + if (!child.killed) { + child.kill(signal); + } + } +} + +process.on("SIGINT", () => { + killAll("SIGTERM"); + process.exit(0); +}); +process.on("SIGTERM", () => { + killAll("SIGTERM"); + process.exit(0); +}); + +function spawnVite(args, { onLine } = {}) { + const child = spawn("pnpm", ["exec", "vite", ...args], { + cwd: root, + stdio: ["inherit", "pipe", "pipe"], + }); + children.push(child); + + function relay(stream, dest) { + stream.setEncoding("utf8"); + let buf = ""; + stream.on("data", (chunk) => { + buf += chunk; + let nl; + while ((nl = buf.indexOf("\n")) !== -1) { + const line = buf.slice(0, nl); + buf = buf.slice(nl + 1); + dest.write(line + "\n"); + if (onLine) onLine(line); + } + }); + stream.on("end", () => { + if (buf) { + dest.write(buf); + if (onLine) onLine(buf); + } + }); + } + + relay(child.stdout, process.stdout); + relay(child.stderr, process.stderr); + + return child; +} + +function waitForLine(child, pattern) { + return new Promise((resolve, reject) => { + let settled = false; + const handlers = { + stdout: [], + stderr: [], + }; + + function check(line) { + if (settled) return; + if (pattern.test(line)) { + settled = true; + resolve(line); + } + } + + child.stdout.setEncoding("utf8"); + child.stderr.setEncoding("utf8"); + + let stdoutBuf = ""; + let stderrBuf = ""; + + function processBuffer(buf, remaining, stream) { + buf += remaining; + let nl; + while ((nl = buf.indexOf("\n")) !== -1) { + const line = buf.slice(0, nl); + buf = buf.slice(nl + 1); + process[stream].write(line + "\n"); + check(line); + } + return buf; + } + + child.stdout.on("data", (chunk) => { + stdoutBuf = processBuffer(stdoutBuf, chunk, "stdout"); + }); + child.stderr.on("data", (chunk) => { + stderrBuf = processBuffer(stderrBuf, chunk, "stderr"); + }); + child.on("close", (code) => { + if (!settled) { + reject( + new Error(`Process exited with code ${code} before pattern matched`), + ); + } + }); + child.on("error", (err) => { + if (!settled) { + settled = true; + reject(err); + } + }); + }); +} + +async function main() { + // Start renderer Vite dev server on a fixed strict port. + const rendererServer = spawn( + "pnpm", + [ + "exec", + "vite", + "--config", + "vite.renderer.config.mts", + "--port", + String(DEV_SERVER_PORT), + "--strictPort", + "--mode", + "development", + ], + { + cwd: root, + stdio: ["inherit", "pipe", "pipe"], + }, + ); + children.push(rendererServer); + + // Track readiness: renderer URL + 3 watch build completions. + let devServerUrl = null; + const watchReady = { main: false, preload: false, ws: false }; + + function isReady() { + return ( + devServerUrl !== null && + watchReady.main && + watchReady.preload && + watchReady.ws + ); + } + + let electronStarted = false; + + function maybeStartElectron() { + if (!isReady() || electronStarted) return; + electronStarted = true; + + const inspectArg = process.env.ELECTRON_INSPECT + ? [`--inspect=${process.env.ELECTRON_INSPECT}`] + : []; + + const electron = spawn( + "pnpm", + ["exec", "electron", ".", "--remote-debugging-port=9222", ...inspectArg], + { + cwd: root, + stdio: "inherit", + env: { + ...process.env, + VITE_DEV_SERVER_URL: devServerUrl, + }, + }, + ); + children.push(electron); + electron.on("close", (code) => { + killAll("SIGTERM"); + process.exit(code ?? 0); + }); + } + + function forwardAndCheck(stream, dest, onLine) { + stream.setEncoding("utf8"); + let buf = ""; + stream.on("data", (chunk) => { + buf += chunk; + let nl; + while ((nl = buf.indexOf("\n")) !== -1) { + const line = buf.slice(0, nl); + buf = buf.slice(nl + 1); + dest.write(line + "\n"); + onLine(line); + } + }); + stream.on("end", () => { + if (buf) { + dest.write(buf); + onLine(buf); + } + }); + } + + // Monitor renderer server for its URL. + forwardAndCheck(rendererServer.stdout, process.stdout, (line) => { + if (devServerUrl === null && line.includes(`localhost:${DEV_SERVER_PORT}`)) { + devServerUrl = `http://localhost:${DEV_SERVER_PORT}`; + maybeStartElectron(); + } + }); + forwardAndCheck(rendererServer.stderr, process.stderr, () => {}); + + // Built pattern: Vite prints "built in" or "watching for file changes" after first build. + const builtPattern = /built in|watching for file changes/i; + + function startWatchBuild(config, readyKey) { + const child = spawn( + "pnpm", + [ + "exec", + "vite", + "build", + "--config", + config, + "--watch", + "--mode", + "development", + ], + { + cwd: root, + stdio: ["inherit", "pipe", "pipe"], + }, + ); + children.push(child); + forwardAndCheck(child.stdout, process.stdout, (line) => { + if (!watchReady[readyKey] && builtPattern.test(line)) { + watchReady[readyKey] = true; + maybeStartElectron(); + } + }); + forwardAndCheck(child.stderr, process.stderr, () => {}); + return child; + } + + startWatchBuild("vite.main.config.mts", "main"); + startWatchBuild("vite.preload.config.mts", "preload"); + startWatchBuild("vite.workspace-server.config.mts", "ws"); +} + +main().catch((err) => { + console.error(err.message); + killAll("SIGTERM"); + process.exit(1); +}); diff --git a/apps/code/src/main/window.ts b/apps/code/src/main/window.ts index 530cf95fbc..312de94655 100644 --- a/apps/code/src/main/window.ts +++ b/apps/code/src/main/window.ts @@ -23,8 +23,8 @@ import { type WindowStateSchema, windowStateStore } from "./utils/store"; const log = logger.scope("window"); -declare const MAIN_WINDOW_VITE_DEV_SERVER_URL: string | undefined; -declare const MAIN_WINDOW_VITE_NAME: string; +const MAIN_WINDOW_VITE_DEV_SERVER_URL = process.env.VITE_DEV_SERVER_URL; +const MAIN_WINDOW_VITE_NAME = "main_window"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); diff --git a/apps/code/vite.main.config.mts b/apps/code/vite.main.config.mts index 5dfe558118..e9a05aac37 100644 --- a/apps/code/vite.main.config.mts +++ b/apps/code/vite.main.config.mts @@ -1,3 +1,4 @@ +import { builtinModules } from "node:module"; import { execFile, execSync } from "node:child_process"; import { closeSync, @@ -635,9 +636,13 @@ export default defineConfig(({ mode }) => { }, resolve: { alias: mainAliases, + conditions: ["node"], + mainFields: ["module", "jsnext:main", "jsnext"], }, cacheDir: ".vite/cache", build: { + outDir: path.join(__dirname, ".vite/build"), + emptyOutDir: false, target: "node18", sourcemap: true, minify: false, @@ -645,8 +650,17 @@ export default defineConfig(({ mode }) => { commonjsOptions: { transformMixedEsModules: true, }, + lib: { + entry: path.resolve(__dirname, "src/main/bootstrap.ts"), + formats: ["cjs"], + fileName: () => "bootstrap.js", + }, rollupOptions: { external: [ + "electron", + "electron/main", + ...builtinModules, + ...builtinModules.map((m) => `node:${m}`), "node-pty", "@parcel/watcher", "file-icon", diff --git a/apps/code/vite.preload.config.mts b/apps/code/vite.preload.config.mts index 21aaa2b5c6..4766a6efd4 100644 --- a/apps/code/vite.preload.config.mts +++ b/apps/code/vite.preload.config.mts @@ -1,3 +1,4 @@ +import { builtinModules } from "node:module"; import path from "node:path"; import { fileURLToPath } from "node:url"; import { defineConfig } from "vite"; @@ -11,4 +12,29 @@ export default defineConfig({ tsconfigPaths(), autoServicesPlugin(path.join(__dirname, "src/main/services")), ], + resolve: { + conditions: ["node"], + mainFields: ["module", "jsnext:main", "jsnext"], + }, + build: { + outDir: path.join(__dirname, ".vite/build"), + emptyOutDir: false, + rollupOptions: { + input: path.resolve(__dirname, "src/main/preload.ts"), + external: [ + "electron", + "electron/renderer", + "electron/common", + ...builtinModules, + ...builtinModules.map((m) => `node:${m}`), + ], + output: { + format: "cjs", + inlineDynamicImports: true, + entryFileNames: "preload.js", + chunkFileNames: "[name].js", + assetFileNames: "[name].[ext]", + }, + }, + }, }); diff --git a/apps/code/vite.renderer.config.mts b/apps/code/vite.renderer.config.mts index d0205a2024..500bedb2d7 100644 --- a/apps/code/vite.renderer.config.mts +++ b/apps/code/vite.renderer.config.mts @@ -48,6 +48,7 @@ export default defineConfig(({ mode }) => { format: "es", }, build: { + outDir: path.join(__dirname, ".vite/renderer/main_window"), sourcemap: true, }, envDir: path.resolve(__dirname, "../.."), From 80052787c750d8130c3d2fb98a49284a11f76122 Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Fri, 19 Jun 2026 22:46:40 -0700 Subject: [PATCH 02/19] add electron-builder config and native staging --- .../code/build/entitlements.mac.inherit.plist | 14 + apps/code/electron-builder.config.cjs | 150 +++++ apps/code/package.json | 1 + apps/code/scripts/before-pack.cjs | 95 +++ pnpm-lock.yaml | 599 +++++++++++++++++- 5 files changed, 844 insertions(+), 15 deletions(-) create mode 100644 apps/code/build/entitlements.mac.inherit.plist create mode 100644 apps/code/electron-builder.config.cjs create mode 100644 apps/code/scripts/before-pack.cjs diff --git a/apps/code/build/entitlements.mac.inherit.plist b/apps/code/build/entitlements.mac.inherit.plist new file mode 100644 index 0000000000..df9a5e652f --- /dev/null +++ b/apps/code/build/entitlements.mac.inherit.plist @@ -0,0 +1,14 @@ + + + + + com.apple.security.cs.allow-jit + + com.apple.security.cs.allow-unsigned-executable-memory + + com.apple.security.cs.disable-library-validation + + com.apple.security.inherit + + + diff --git a/apps/code/electron-builder.config.cjs b/apps/code/electron-builder.config.cjs new file mode 100644 index 0000000000..dc3a617c36 --- /dev/null +++ b/apps/code/electron-builder.config.cjs @@ -0,0 +1,150 @@ +"use strict"; + +const skipNotarize = + process.env.SKIP_NOTARIZE === "1" || !process.env.APPLE_TEAM_ID; + +/** @type {import('electron-builder').Configuration} */ +module.exports = { + appId: "com.posthog.array", + productName: "PostHog Code", + executableName: "PostHog Code", + + directories: { + output: "out", + buildResources: "build", + }, + + electronVersion: require("electron/package.json").version, + npmRebuild: false, + nodeGypRebuild: false, + generateUpdatesFilesForAllChannels: true, + + beforePack: "./scripts/before-pack.cjs", + + // The vite bundle (.vite/build) already inlines all pure-JS deps, so the + // asar only needs the externalized native modules that beforePack stages + // into apps/code/node_modules. This mirrors Forge's packageAfterCopy list; + // pulling in node_modules/**/* instead duplicates the whole workspace + // (@posthog, @anthropic-ai, ...) for ~1.2GB of dead weight. + files: [ + ".vite/build/**/*", + ".vite/renderer/**/*", + "package.json", + "!node_modules/**/*", + "node_modules/node-pty/**/*", + "node_modules/node-addon-api/**/*", + "node_modules/@parcel/**/*", + "node_modules/better-sqlite3/**/*", + "node_modules/bindings/**/*", + "node_modules/file-uri-to-path/**/*", + "node_modules/file-icon/**/*", + "node_modules/p-map/**/*", + "node_modules/prebuild-install/**/*", + "node_modules/micromatch/**/*", + "node_modules/is-glob/**/*", + "node_modules/detect-libc/**/*", + "node_modules/braces/**/*", + "node_modules/picomatch/**/*", + "node_modules/is-extglob/**/*", + "node_modules/fill-range/**/*", + "node_modules/to-regex-range/**/*", + "node_modules/is-number/**/*", + ], + + asarUnpack: [ + "**/*.node", + "**/spawn-helper", + ".vite/build/claude-cli/**", + ".vite/build/plugins/posthog/**", + ".vite/build/codex-acp/**", + ".vite/build/grammars/**", + "node_modules/node-pty/**", + "node_modules/@parcel/**", + "node_modules/file-icon/**", + "node_modules/better-sqlite3/**", + "node_modules/bindings/**", + "node_modules/file-uri-to-path/**", + ], + + extraResources: [ + { from: "build/app-icon.png", to: "app-icon.png" }, + { from: "build/Assets.car", to: "Assets.car" }, + ], + + protocols: [ + { + name: "PostHog Code", + schemes: ["posthog-code"], + }, + ], + + mac: { + target: [ + { target: "dmg", arch: ["arm64", "x64"] }, + { target: "zip", arch: ["arm64", "x64"] }, + ], + icon: "build/app-icon.icns", + category: "public.app-category.productivity", + hardenedRuntime: true, + gatekeeperAssess: false, + entitlements: "build/entitlements.mac.plist", + entitlementsInherit: "build/entitlements.mac.inherit.plist", + extendInfo: { + CFBundleIconName: "Icon", + }, + notarize: skipNotarize ? false : { teamId: process.env.APPLE_TEAM_ID }, + }, + + dmg: { + format: "ULFO", + background: "build/dmg-background.png", + icon: "build/app-icon.icns", + iconSize: 80, + window: { width: 560, height: 380 }, + contents: [ + { x: 104, y: 55, type: "file" }, + { x: 104, y: 243, type: "link", path: "/Applications" }, + ], + }, + + win: { + target: [ + { target: "nsis", arch: ["x64"] }, + { target: "squirrel", arch: ["x64"] }, + ], + icon: "build/app-icon.ico", + }, + + nsis: { + oneClick: false, + deleteAppDataOnUninstall: false, + }, + + linux: { + target: [ + { target: "AppImage", arch: ["x64", "arm64"] }, + { target: "deb", arch: ["x64", "arm64"] }, + { target: "rpm", arch: ["x64", "arm64"] }, + ], + icon: "build/app-icon.png", + category: "Development", + mimeTypes: ["x-scheme-handler/posthog-code"], + }, + + deb: { + packageName: "posthog-code", + maintainer: "PostHog ", + packageCategory: "devel", + }, + + rpm: { + packageName: "posthog-code", + }, + + publish: { + provider: "github", + owner: "PostHog", + repo: "code", + releaseType: "draft", + }, +}; diff --git a/apps/code/package.json b/apps/code/package.json index de395b8a8c..e0b41feb9b 100644 --- a/apps/code/package.json +++ b/apps/code/package.json @@ -71,6 +71,7 @@ "@vitest/ui": "^4.1.8", "adm-zip": "^0.5.16", "electron": "^41.0.0", + "electron-builder": "^26.15.3", "husky": "^9.1.7", "jimp": "^1.6.0", "jsdom": "^26.0.0", diff --git a/apps/code/scripts/before-pack.cjs b/apps/code/scripts/before-pack.cjs new file mode 100644 index 0000000000..e140699e26 --- /dev/null +++ b/apps/code/scripts/before-pack.cjs @@ -0,0 +1,95 @@ +"use strict"; + +const { cpSync, existsSync, mkdirSync, rmSync } = require("node:fs"); +const path = require("node:path"); + +// Arch enum values from builder-util / app-builder-lib +// 0=ia32, 1=x64, 2=armv7l, 3=arm64, 4=universal +const ARCH_X64 = 1; +const ARCH_ARM64 = 3; + +function copyDep(name, rootNodeModules, localNodeModules) { + const src = path.join(rootNodeModules, name); + if (!existsSync(src)) { + const localSrc = path.join(localNodeModules, name); + if (existsSync(localSrc)) { + console.log(`[before-pack] "${name}" already in local node_modules, skipping`); + return; + } + console.warn(`[before-pack] "${name}" not found in root or local node_modules, skipping`); + return; + } + + const dest = path.join(localNodeModules, name); + const parentDir = path.dirname(dest); + mkdirSync(parentDir, { recursive: true }); + rmSync(dest, { recursive: true, force: true }); + cpSync(src, dest, { recursive: true, dereference: true }); + console.log(`[before-pack] staged "${name}"`); +} + +module.exports = async function beforePack(context) { + const platformName = context.packager.platform.name; // 'mac', 'win', 'linux' + const arch = context.arch; // numeric Arch enum + + // Paths relative to this script's location (apps/code/scripts/) + const rootNodeModules = path.resolve(__dirname, "../../../node_modules"); + const localNodeModules = path.resolve(__dirname, "../node_modules"); + + console.log(`[before-pack] platform=${platformName} arch=${arch}`); + console.log(`[before-pack] root node_modules: ${rootNodeModules}`); + console.log(`[before-pack] local node_modules: ${localNodeModules}`); + + const commonDeps = [ + "node-pty", + "node-addon-api", + "@parcel/watcher", + "micromatch", + "is-glob", + "detect-libc", + "braces", + "picomatch", + "is-extglob", + "fill-range", + "to-regex-range", + "is-number", + "better-sqlite3", + "bindings", + "file-uri-to-path", + "prebuild-install", + ]; + + for (const dep of commonDeps) { + copyDep(dep, rootNodeModules, localNodeModules); + } + + if (platformName === "mac") { + const watcherPkg = + arch === ARCH_X64 + ? "@parcel/watcher-darwin-x64" + : "@parcel/watcher-darwin-arm64"; + copyDep(watcherPkg, rootNodeModules, localNodeModules); + copyDep("file-icon", rootNodeModules, localNodeModules); + copyDep("p-map", rootNodeModules, localNodeModules); + } else if (platformName === "win") { + const watcherPkg = + arch === ARCH_ARM64 + ? "@parcel/watcher-win32-arm64" + : "@parcel/watcher-win32-x64"; + copyDep(watcherPkg, rootNodeModules, localNodeModules); + } else if (platformName === "linux") { + const watcherPkg = + arch === ARCH_ARM64 + ? "@parcel/watcher-linux-arm64-glibc" + : "@parcel/watcher-linux-x64-glibc"; + copyDep(watcherPkg, rootNodeModules, localNodeModules); + } + + // Remove @parcel/watcher/build so the host-compiled fallback binary cannot + // shadow the required platform-specific optional dependency at runtime. + const watcherBuild = path.join(localNodeModules, "@parcel/watcher/build"); + if (existsSync(watcherBuild)) { + rmSync(watcherBuild, { recursive: true, force: true }); + console.log("[before-pack] removed @parcel/watcher/build"); + } +}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 216ed2a996..e104bd400b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -408,6 +408,9 @@ importers: electron: specifier: ^41.0.0 version: 41.0.2 + electron-builder: + specifier: ^26.15.3 + version: 26.15.3(electron-builder-squirrel-windows@26.15.3) husky: specifier: ^9.1.7 version: 9.1.7 @@ -2583,6 +2586,10 @@ packages: engines: {node: '>=10.12.0'} hasBin: true + '@electron/fuses@1.8.0': + resolution: {integrity: sha512-zx0EIq78WlY/lBb1uXlziZmDZI4ubcCXIMJ4uGjXzZW0nS19TjSPeXPAjzzTmKQlJUZm0SbmZhPKP7tuQ1SsEw==} + hasBin: true + '@electron/get@2.0.3': resolution: {integrity: sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==} engines: {node: '>=12'} @@ -2621,6 +2628,11 @@ packages: engines: {node: '>=22.12.0'} hasBin: true + '@electron/rebuild@4.0.4': + resolution: {integrity: sha512-Rzc39XPdk/+/wBG8MfwAHohXflep0ITUfulb6Rgz3R0NeSB1noE+E9/M/cb8ftCAiyDD9PPhLuuWgE1GaInbKg==} + engines: {node: '>=22.12.0'} + hasBin: true + '@electron/universal@2.0.3': resolution: {integrity: sha512-Wn9sPYIVFRFl5HmwMJkARCCf7rqK/EurkfQ/rJZ14mHP3iYTjZSIOSVonEAnhWeAXwtw7zOekGRlc6yTtZ0t+g==} engines: {node: '>=16.4'} @@ -3930,6 +3942,10 @@ packages: 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'} + '@marijn/find-cluster-break@1.0.2': resolution: {integrity: sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==} @@ -3991,10 +4007,18 @@ packages: resolution: {integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==} engines: {node: ^14.21.3 || >=16} + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + '@noble/hashes@1.8.0': resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} engines: {node: ^14.21.3 || >=16} + '@noble/hashes@2.2.0': + resolution: {integrity: sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==} + engines: {node: '>= 20.19.0'} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -4495,6 +4519,20 @@ packages: resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==} engines: {node: '>= 10.0.0'} + '@peculiar/asn1-schema@2.8.0': + resolution: {integrity: sha512-7YT0U/ze0tF2QOBbE15gKZwy5tvgGyLRiRHLzhlbOpf7BT032oBSd0haZqXn5W6l26WLlu3dyxzjM+2638/z2Q==} + + '@peculiar/json-schema@1.1.12': + resolution: {integrity: sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==} + engines: {node: '>=8.0.0'} + + '@peculiar/utils@2.0.3': + resolution: {integrity: sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ==} + + '@peculiar/webcrypto@1.7.1': + resolution: {integrity: sha512-ODOov0sGMJMf3jPonOkgGqPknTsu+DdQ7kD++gz8aI+aFMOMHFbWAA2taqXXVTdP+OTOQR/znGvSpmkeI0WTYQ==} + engines: {node: '>=14.18.0'} + '@phosphor-icons/react@2.1.10': resolution: {integrity: sha512-vt8Tvq8GLjheAZZYa+YG/pW7HDbov8El/MANW8pOAz4eGxrwhnbfrQZq0Cp4q8zBEu8NIhHdnr+r8thnfRSNYA==} engines: {node: '>=10'} @@ -6791,6 +6829,10 @@ packages: resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} engines: {node: ^18.17.0 || >=20.5.0} + abbrev@4.0.0: + resolution: {integrity: sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==} + engines: {node: ^20.17.0 || >=22.9.0} + abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -6866,6 +6908,9 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + ajv@8.20.0: + resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} + anser@1.4.10: resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} @@ -6923,6 +6968,13 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} + app-builder-lib@26.15.3: + resolution: {integrity: sha512-2VnyWkqsP5v5XbBhL3tD5Syx8iNPBYsoU7kY4S2fz7wg8Rj/nztWKCUzGKaFRTv0Xwf3/H058CR1Kvtd/3lRow==} + engines: {node: '>=14.0.0'} + peerDependencies: + dmg-builder: 26.15.3 + electron-builder-squirrel-windows: 26.15.3 + appdmg@0.6.6: resolution: {integrity: sha512-GRmFKlCG+PWbcYF4LUNonTYmy0GjguDy6Jh9WP8mpd0T6j80XIJyXBiWlD0U+MLNhqV9Nhx49Gl9GpVToulpLg==} engines: {node: '>=8.5'} @@ -6958,6 +7010,10 @@ packages: asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + asn1js@3.0.10: + resolution: {integrity: sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==} + engines: {node: '>=12.0.0'} + assert@2.1.0: resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} @@ -6969,12 +7025,19 @@ packages: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} + async-exit-hook@2.0.1: + resolution: {integrity: sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==} + engines: {node: '>=0.12.0'} + async-limiter@1.0.1: resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} async@1.5.2: resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==} + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -6997,6 +7060,9 @@ packages: resolution: {integrity: sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g==} engines: {node: '>=6.0.0'} + aws4@1.13.2: + resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} + axe-core@4.11.1: resolution: {integrity: sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A==} engines: {node: '>=4'} @@ -7199,6 +7265,14 @@ packages: buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + builder-util-runtime@9.7.0: + resolution: {integrity: sha512-g/kR520giAFYkSXTzcmF3kqQq7wi8F6N6SzeDgZrqTBN+VHdmgWOyTdD1yD7AATDId/yXLvuP34CxW46/BwCdw==} + engines: {node: '>=12.0.0'} + + builder-util@26.15.3: + resolution: {integrity: sha512-q2hn7Mbo2nFNkVekPiHFx6Nfo3hURmES3tfBn+k5Pqxl2RkmP3QGqZUhH/q9Pch/4G05NRhPjDlVj1O8q4Txvw==} + engines: {node: '>=14.0.0'} + bun-types@1.3.14: resolution: {integrity: sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ==} @@ -7216,6 +7290,10 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} + bytestreamjs@2.0.1: + resolution: {integrity: sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==} + engines: {node: '>=6.0.0'} + cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -7350,6 +7428,9 @@ packages: chromium-edge-launcher@0.2.0: resolution: {integrity: sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==} + chromium-pickle-js@0.2.0: + resolution: {integrity: sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==} + ci-info@2.0.0: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} @@ -7357,6 +7438,14 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} + ci-info@4.3.1: + resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==} + engines: {node: '>=8'} + + ci-info@4.4.0: + resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} + engines: {node: '>=8'} + class-variance-authority@0.7.1: resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} @@ -7859,6 +7948,9 @@ packages: dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dmg-builder@26.15.3: + resolution: {integrity: sha512-O3zJUFUYHJKgzPqioHxfxzBzlSC1eXCSr79gMSBKBP5AgjjpmrydMsMLotEg9fAJF36vdUncb+4ndRNxoPdlSQ==} + doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} @@ -8007,6 +8099,9 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} + duplexer2@0.1.4: + resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} + earcut@3.0.2: resolution: {integrity: sha512-X7hshQbLyMJ/3RPhyObLARM2sNxxmRALLKx1+NVFFnQ9gKzmCrxm9+uLIAdBcvc8FNLpctqlQ2V6AE92Ol9UDQ==} @@ -8026,6 +8121,19 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + + electron-builder-squirrel-windows@26.15.3: + resolution: {integrity: sha512-Jc19XPV9y9+2bAdZPkXuVNGNIEFBq9poHC61l8Kv6FdK7DRG3+Ic0rerC0DXOaeHNz8yW0fg/JnF8GQROOF5MA==} + + electron-builder@26.15.3: + resolution: {integrity: sha512-a1KM5heqS3gQCZzizXEI8RjJy3QVogULPdeSknt76uLDpBIW/HDGsMg/XgP0riP6PI9COsRvFITKKGDqA8fJxA==} + engines: {node: '>=14.0.0'} + hasBin: true + electron-installer-common@0.10.4: resolution: {integrity: sha512-8gMNPXfAqUE5CfXg8RL0vXpLE9HAaPkgLXVoHE3BMUzogMWenf4LmwQ27BdCUrEhkjrKl+igs2IHJibclR3z3Q==} engines: {node: '>= 10.0.0'} @@ -8051,6 +8159,9 @@ packages: resolution: {integrity: sha512-sOUsM3LjZdugatazSQ/XTyNcw8dfvH1SYhXWiJyfYodAAKOZdHs0txPiLDXFzOZbhXgAgshQkshH2ccq0feyLQ==} engines: {node: '>= 14'} + electron-publish@26.15.3: + resolution: {integrity: sha512-g/2bn8YTavY4cuS5F+jOS7zmZbXXBV8KZ8yHKfJjFPoKtzBqrpCdNPxBd3tqdBwP7BVd0lGzf7Bk2s0KesWZ4Q==} + electron-store@11.0.2: resolution: {integrity: sha512-4VkNRdN+BImL2KcCi41WvAYbh6zLX5AUTi4so68yPqiItjbgTjqpEnGAqasgnG+lB6GuAyUltKwVopp6Uv+gwQ==} engines: {node: '>=20'} @@ -8663,6 +8774,9 @@ packages: file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + filelist@1.0.6: + resolution: {integrity: sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==} + filename-reserved-regex@2.0.0: resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==} engines: {node: '>=4'} @@ -9106,6 +9220,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'} + hosted-git-info@7.0.2: resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} @@ -9465,10 +9583,17 @@ packages: resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} engines: {node: '>=16'} + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + isbinaryfile@4.0.10: resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} engines: {node: '>= 8.0.0'} + isbinaryfile@5.0.7: + resolution: {integrity: sha512-gnWD14Jh3FzS3CPhF0AxNOJ8CxqeblPTADzI38r0wt8ZyQl5edpy75myt08EG2oKvpyiqSqsx+Wkz9vtkbTqYQ==} + engines: {node: '>= 18.0.0'} + isbot@5.1.40: resolution: {integrity: sha512-yNeeynhhtIVRBk12tBV4eHNxwB42HzR4Q3Ea7vCOiJhImGaAIdIMrbJtacQlBizGLjUPw+akkFI5Dn9T70XoVQ==} engines: {node: '>=18'} @@ -9480,6 +9605,10 @@ packages: resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} engines: {node: '>=16'} + isexe@4.0.0: + resolution: {integrity: sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==} + engines: {node: '>=20'} + ismobilejs@1.1.1: resolution: {integrity: sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==} @@ -9510,6 +9639,11 @@ packages: resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} engines: {node: 20 || >=22} + jake@10.9.4: + resolution: {integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==} + engines: {node: '>=10'} + hasBin: true + jest-diff@30.4.1: resolution: {integrity: sha512-CRpFK0RtLriVDGcPPAnR6HMVI8bSR2jnUIgralhauzYQZIb4RH9AtEInTuQr65LmmGggGcRT6HIASxwqsVsmlA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -9692,6 +9826,9 @@ packages: launch-editor@2.14.1: resolution: {integrity: sha512-QWBrQsMpH7gPr965dsKD/3cKWiNoTjpATQf++Xq63N6sKRGMwlVXz41O1IZTMfZQgBctD/K5Zt06+/I6pP6+HA==} + lazy-val@1.0.5: + resolution: {integrity: sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==} + leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -10049,6 +10186,10 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + lru-cache@7.18.3: resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} engines: {node: '>=12'} @@ -10375,6 +10516,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'} @@ -10636,6 +10782,11 @@ packages: engines: {node: ^18.17.0 || >=20.5.0} hasBin: true + node-gyp@12.4.0: + resolution: {integrity: sha512-OMcPNvqTCFUnNaBlmdgq+lfNqY7gTiSmNRDjY3uAXRyudeKZEZxu3CLtjMQrx4zZxCX2b/mpNqTtwuCJgXhHkw==} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} @@ -10658,6 +10809,11 @@ packages: engines: {node: ^18.17.0 || >=20.5.0} hasBin: true + nopt@9.0.0: + resolution: {integrity: sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -11023,6 +11179,10 @@ packages: resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} engines: {node: '>= 14.16'} + pe-library@0.4.1: + resolution: {integrity: sha512-eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw==} + engines: {node: '>=12', npm: '>=6'} + pe-library@1.0.1: resolution: {integrity: sha512-nh39Mo1eGWmZS7y+mK/dQIqg7S1lp38DpRxkyoHf0ZcUs/HDc+yyTjuOtTvSMZHmfSLuSQaX945u05Y2Q6UWZg==} engines: {node: '>=14', npm: '>=7'} @@ -11083,6 +11243,10 @@ packages: pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + pkijs@3.4.0: + resolution: {integrity: sha512-emEcLuomt2j03vxD54giVB4SxTjnsqkU692xZOZXHDVoYyypEm+b3jpiTcc+Cf+myooc+/Ly0z01jqeNHVgJGw==} + engines: {node: '>=16.0.0'} + playwright-core@1.58.1: resolution: {integrity: sha512-bcWzOaTxcW+VOOGBCQgnaKToLJ65d6AqfLVKEWvexyS3AS6rbXl+xdpYRMGSRBClPvyj44njOWoxjNdL/H9UNg==} engines: {node: '>=18'} @@ -11285,6 +11449,13 @@ packages: resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==} engines: {node: ^18.17.0 || >=20.5.0} + proc-log@6.1.0: + resolution: {integrity: sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==} + engines: {node: ^20.17.0 || >=22.9.0} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} @@ -11318,6 +11489,9 @@ packages: prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + proper-lockfile@4.1.2: + resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} + property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} @@ -11405,6 +11579,13 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + pvtsutils@1.3.6: + resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} + + pvutils@1.1.5: + resolution: {integrity: sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==} + engines: {node: '>=16.0.0'} + qrcode-terminal@0.11.0: resolution: {integrity: sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==} hasBin: true @@ -11686,6 +11867,9 @@ packages: resolution: {integrity: sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==} engines: {node: '>=4'} + 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'} @@ -11789,6 +11973,10 @@ packages: resolution: {integrity: sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==} engines: {node: '>= 4.0.0'} + resedit@1.7.2: + resolution: {integrity: sha512-vHjcY2MlAITJhC0eRD/Vv8Vlgmu9Sd3LX9zZvtGzU5ZImdTN3+d6e/4mnTyV8vEbyf1sgNIrWxhWlrys52OkEA==} + engines: {node: '>=12', npm: '>=6'} + resedit@2.0.3: resolution: {integrity: sha512-oTeemxwoMuxxTYxXUwjkrOPfngTQehlv0/HoYFNkB4uzsP1Un1A9nI8JQKGOFkxpqkC7qkMs0lUsGrvUlbLNUA==} engines: {node: '>=14', npm: '>=7'} @@ -11906,6 +12094,9 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} @@ -11916,9 +12107,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sax@1.4.4: - resolution: {integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==} - engines: {node: '>=11.0.0'} + sanitize-filename@1.6.4: + resolution: {integrity: sha512-9ZyI08PsvdQl2r/bBIGubpVdR3RR9sY6RDiWFPreA21C/EFlQhmgo20UZlNjZMMZNubusLhAQozkA0Od5J21Eg==} sax@1.6.0: resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} @@ -12093,6 +12283,10 @@ packages: simple-swizzle@0.2.4: resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} + simple-update-notifier@2.0.0: + resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} + engines: {node: '>=10'} + simple-xml-to-json@1.2.3: resolution: {integrity: sha512-kWJDCr9EWtZ+/EYYM5MareWj2cRnZGF93YDNpH4jQiHB+hBIZnfPFSQiVMzZOdk+zXWqTZ/9fTeQNu2DqeiudA==} engines: {node: '>=20.12.2'} @@ -12225,6 +12419,10 @@ packages: standardwebhooks@1.0.0: resolution: {integrity: sha512-BbHGOQK9olHPMvQNHWul6MYlrRTAOKn03rOe4A8O3CLWhNf4YHBqq2HJKKC+sfqpxiBY52pNeesD6jIiLDz8jg==} + stat-mode@1.0.0: + resolution: {integrity: sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==} + engines: {node: '>= 6'} + statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} @@ -12279,6 +12477,9 @@ packages: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} @@ -12461,6 +12662,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==} + temp@0.9.4: resolution: {integrity: sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==} engines: {node: '>=6.0.0'} @@ -12510,6 +12714,9 @@ packages: throat@5.0.0: resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} + tiny-async-pool@1.3.0: + resolution: {integrity: sha512-01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA==} + tiny-each-async@2.0.3: resolution: {integrity: sha512-5ROII7nElnAirvFn8g7H7MtpfV1daMcyfTGQwsn/x2VtyV+VPiO5CjReCJtWLvoKTDEDmZocf3cNPraiMnBXLA==} @@ -12655,6 +12862,9 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + truncate-utf8-bytes@1.0.2: + resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} + ts-algebra@2.0.0: resolution: {integrity: sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==} @@ -12842,6 +13052,10 @@ packages: resolution: {integrity: sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==} engines: {node: '>=18.17'} + undici@6.26.0: + resolution: {integrity: sha512-4yqz8a3n5HmGTlsbADNtr/dJlhkh/55Rq798G6ibiULcXbDtaLpTl1pvdqcbFfeoj3iSi52lePFM7h9H21cw/A==} + engines: {node: '>=18.17'} + unicode-canonical-property-names-ecmascript@2.0.1: resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} engines: {node: '>=4'} @@ -12930,6 +13144,9 @@ packages: until-async@3.0.2: resolution: {integrity: sha512-IiSk4HlzAMqTUseHHe3VhIGyuFmN90zMTpD3Z3y8jeQbzLIq500MVM7Jq2vUAnTKAFPJrqwkzr6PoTcPhGcOiw==} + unzipper@0.12.3: + resolution: {integrity: sha512-PZ8hTS+AqcGxsaQntl3IRBw65QrBI6lxzqDEL7IAo/XCEqRTKGfOX56Vea5TH9SZczRVxuzk1re04z/YjuYCJA==} + update-browserslist-db@1.2.3: resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true @@ -12970,6 +13187,9 @@ packages: resolution: {integrity: sha512-PCKbdWw85JsYMvmCv5GH3kXmM66rCd9m1hBEDutPNv94b/pqCMT4NtcKyeWYvLFiE8b+ha1Jdl8XAaUdPn5QTg==} engines: {node: '>=8'} + utf8-byte-length@1.0.5: + resolution: {integrity: sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==} + utif2@4.1.0: resolution: {integrity: sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w==} @@ -13284,6 +13504,9 @@ packages: web-vitals@5.1.0: resolution: {integrity: sha512-ArI3kx5jI0atlTtmV0fWU3fjpLmq/nD3Zr1iFFlJLaqa5wLBkUSzINwBPySCX/8jRyjlmy1Volw1kz1g9XE4Jg==} + webcrypto-core@1.9.2: + resolution: {integrity: sha512-gsXecm82UQNlTBURJGuqOWy1Ww08S3kZUcr3aOJS02Pk0xLtkfeUAVC0u0xhgdonFme80edSJUIJyuvL/7250Q==} + webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -13361,6 +13584,11 @@ packages: engines: {node: ^18.17.0 || >=20.5.0} hasBin: true + which@6.0.1: + resolution: {integrity: sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + why-is-node-running@2.3.0: resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} engines: {node: '>=8'} @@ -15015,6 +15243,12 @@ snapshots: glob: 7.2.3 minimatch: 3.1.2 + '@electron/fuses@1.8.0': + dependencies: + chalk: 4.1.2 + fs-extra: 9.1.0 + minimist: 1.2.8 + '@electron/get@2.0.3': dependencies: debug: 4.4.3 @@ -15142,6 +15376,17 @@ snapshots: transitivePeerDependencies: - supports-color + '@electron/rebuild@4.0.4': + dependencies: + '@malept/cross-spawn-promise': 2.0.0 + debug: 4.4.3 + node-abi: 4.26.0 + node-api-version: 0.2.1 + node-gyp: 12.4.0 + read-binary-file-arch: 1.0.6 + transitivePeerDependencies: + - supports-color + '@electron/universal@2.0.3': dependencies: '@electron/asar': 3.4.1 @@ -16621,6 +16866,15 @@ snapshots: dependencies: cross-spawn: 7.0.6 + '@malept/flatpak-bundler@0.4.0': + dependencies: + debug: 4.4.3 + fs-extra: 9.1.0 + lodash: 4.17.23 + tmp-promise: 3.0.3 + transitivePeerDependencies: + - supports-color + '@marijn/find-cluster-break@1.0.2': {} '@mdx-js/react@3.1.1(@types/react@19.2.11)(react@19.1.0)': @@ -16735,8 +16989,12 @@ snapshots: dependencies: '@noble/hashes': 1.8.0 + '@noble/hashes@1.4.0': {} + '@noble/hashes@1.8.0': {} + '@noble/hashes@2.2.0': {} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -17120,6 +17378,28 @@ snapshots: '@parcel/watcher-win32-ia32': 2.5.6 '@parcel/watcher-win32-x64': 2.5.6 + '@peculiar/asn1-schema@2.8.0': + dependencies: + '@peculiar/utils': 2.0.3 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/json-schema@1.1.12': + dependencies: + tslib: 2.8.1 + + '@peculiar/utils@2.0.3': + dependencies: + tslib: 2.8.1 + + '@peculiar/webcrypto@1.7.1': + dependencies: + '@peculiar/asn1-schema': 2.8.0 + '@peculiar/json-schema': 1.1.12 + '@peculiar/utils': 2.0.3 + tslib: 2.8.1 + webcrypto-core: 1.9.2 + '@phosphor-icons/react@2.1.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: react: 19.1.0 @@ -19220,7 +19500,6 @@ snapshots: '@types/fs-extra@9.0.13': dependencies: '@types/node': 24.12.0 - optional: true '@types/graceful-fs@4.1.9': dependencies: @@ -19722,6 +20001,8 @@ snapshots: abbrev@3.0.1: {} + abbrev@4.0.0: {} + abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 @@ -19785,6 +20066,13 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 + ajv@8.20.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.0 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + anser@1.4.10: {} ansi-escapes@4.3.2: @@ -19828,6 +20116,54 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 + app-builder-lib@26.15.3(dmg-builder@26.15.3)(electron-builder-squirrel-windows@26.15.3): + dependencies: + '@electron/asar': 3.4.1 + '@electron/fuses': 1.8.0 + '@electron/get': 3.1.0 + '@electron/notarize': 2.5.0 + '@electron/osx-sign': 1.3.3 + '@electron/rebuild': 4.0.4 + '@electron/universal': 2.0.3 + '@malept/flatpak-bundler': 0.4.0 + '@noble/hashes': 2.2.0 + '@peculiar/webcrypto': 1.7.1 + '@types/fs-extra': 9.0.13 + ajv: 8.20.0 + asn1js: 3.0.10 + async-exit-hook: 2.0.1 + builder-util: 26.15.3 + builder-util-runtime: 9.7.0 + chromium-pickle-js: 0.2.0 + ci-info: 4.3.1 + debug: 4.4.3 + dmg-builder: 26.15.3(electron-builder-squirrel-windows@26.15.3) + dotenv: 16.4.7 + dotenv-expand: 11.0.7 + ejs: 3.1.10 + electron-builder-squirrel-windows: 26.15.3(dmg-builder@26.15.3) + electron-publish: 26.15.3 + fs-extra: 10.1.0 + hosted-git-info: 4.1.0 + isbinaryfile: 5.0.7 + jiti: 2.7.0 + js-yaml: 4.1.1 + json5: 2.2.3 + lazy-val: 1.0.5 + minimatch: 10.2.5 + pkijs: 3.4.0 + plist: 3.1.0 + proper-lockfile: 4.1.2 + resedit: 1.7.2 + semver: 7.7.3 + tar: 7.5.7 + temp-file: 3.4.0 + tiny-async-pool: 1.3.0 + unzipper: 0.12.3 + which: 5.0.0 + transitivePeerDependencies: + - supports-color + appdmg@0.6.6: dependencies: async: 1.5.2 @@ -19870,6 +20206,12 @@ snapshots: asap@2.0.6: {} + asn1js@3.0.10: + dependencies: + pvtsutils: 1.3.6 + pvutils: 1.1.5 + tslib: 2.8.1 + assert@2.1.0: dependencies: call-bind: 1.0.9 @@ -19884,11 +20226,15 @@ snapshots: dependencies: tslib: 2.8.1 + async-exit-hook@2.0.1: {} + async-limiter@1.0.1: {} async@1.5.2: optional: true + async@3.2.6: {} + asynckit@0.4.0: {} at-least-node@1.0.0: {} @@ -19906,6 +20252,8 @@ snapshots: await-to-js@3.0.0: {} + aws4@1.13.2: {} + axe-core@4.11.1: {} axios-proxy-builder@0.1.2: @@ -20195,6 +20543,32 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 + builder-util-runtime@9.7.0: + dependencies: + debug: 4.4.3 + sax: 1.6.0 + transitivePeerDependencies: + - supports-color + + builder-util@26.15.3: + dependencies: + '@types/debug': 4.1.13 + builder-util-runtime: 9.7.0 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3 + fs-extra: 10.1.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + js-yaml: 4.1.1 + sanitize-filename: 1.6.4 + source-map-support: 0.5.21 + stat-mode: 1.0.0 + temp-file: 3.4.0 + tiny-async-pool: 1.3.0 + transitivePeerDependencies: + - supports-color + bun-types@1.3.14: dependencies: '@types/node': 24.12.0 @@ -20210,6 +20584,8 @@ snapshots: bytes@3.1.2: {} + bytestreamjs@2.0.1: {} + cac@6.7.14: {} cacache@16.1.3: @@ -20378,10 +20754,16 @@ snapshots: transitivePeerDependencies: - supports-color + chromium-pickle-js@0.2.0: {} + ci-info@2.0.0: {} ci-info@3.9.0: {} + ci-info@4.3.1: {} + + ci-info@4.4.0: {} + class-variance-authority@0.7.1: dependencies: clsx: 2.1.1 @@ -20830,6 +21212,16 @@ snapshots: dlv@1.1.3: {} + dmg-builder@26.15.3(electron-builder-squirrel-windows@26.15.3): + dependencies: + app-builder-lib: 26.15.3(dmg-builder@26.15.3)(electron-builder-squirrel-windows@26.15.3) + builder-util: 26.15.3 + fs-extra: 10.1.0 + js-yaml: 4.1.1 + transitivePeerDependencies: + - electron-builder-squirrel-windows + - supports-color + doctrine@3.0.0: dependencies: esutils: 2.0.3 @@ -20906,6 +21298,10 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 + duplexer2@0.1.4: + dependencies: + readable-stream: 2.3.8 + earcut@3.0.2: {} eastasianwidth@0.2.0: {} @@ -20927,6 +21323,35 @@ snapshots: ee-first@1.1.1: {} + ejs@3.1.10: + dependencies: + jake: 10.9.4 + + electron-builder-squirrel-windows@26.15.3(dmg-builder@26.15.3): + dependencies: + app-builder-lib: 26.15.3(dmg-builder@26.15.3)(electron-builder-squirrel-windows@26.15.3) + builder-util: 26.15.3 + electron-winstaller: 5.4.0 + transitivePeerDependencies: + - dmg-builder + - supports-color + + electron-builder@26.15.3(electron-builder-squirrel-windows@26.15.3): + dependencies: + app-builder-lib: 26.15.3(dmg-builder@26.15.3)(electron-builder-squirrel-windows@26.15.3) + builder-util: 26.15.3 + builder-util-runtime: 9.7.0 + chalk: 4.1.2 + ci-info: 4.4.0 + dmg-builder: 26.15.3(electron-builder-squirrel-windows@26.15.3) + fs-extra: 10.1.0 + lazy-val: 1.0.5 + simple-update-notifier: 2.0.0 + yargs: 17.7.2 + transitivePeerDependencies: + - electron-builder-squirrel-windows + - supports-color + electron-installer-common@0.10.4: dependencies: '@electron/asar': 3.4.1 @@ -20984,6 +21409,20 @@ snapshots: electron-log@5.4.3: {} + electron-publish@26.15.3: + dependencies: + '@types/fs-extra': 9.0.13 + aws4: 1.13.2 + builder-util: 26.15.3 + builder-util-runtime: 9.7.0 + chalk: 4.1.2 + form-data: 4.0.5 + fs-extra: 10.1.0 + lazy-val: 1.0.5 + mime: 2.6.0 + transitivePeerDependencies: + - supports-color + electron-store@11.0.2: dependencies: conf: 15.1.0 @@ -21002,7 +21441,6 @@ snapshots: '@electron/windows-sign': 1.2.2 transitivePeerDependencies: - supports-color - optional: true electron@41.0.2: dependencies: @@ -21770,6 +22208,10 @@ snapshots: file-uri-to-path@1.0.0: {} + filelist@1.0.6: + dependencies: + minimatch: 5.1.9 + filename-reserved-regex@2.0.0: {} filenamify@4.3.0: @@ -21908,7 +22350,6 @@ snapshots: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 - optional: true fs-extra@8.1.0: dependencies: @@ -22310,6 +22751,10 @@ snapshots: hosted-git-info@2.8.9: {} + hosted-git-info@4.1.0: + dependencies: + lru-cache: 6.0.0 + hosted-git-info@7.0.2: dependencies: lru-cache: 10.4.3 @@ -22614,14 +23059,20 @@ snapshots: dependencies: is-inside-container: 1.0.0 + isarray@1.0.0: {} + isbinaryfile@4.0.10: {} + isbinaryfile@5.0.7: {} + isbot@5.1.40: {} isexe@2.0.0: {} isexe@3.1.1: {} + isexe@4.0.0: {} + ismobilejs@1.1.1: {} istanbul-lib-coverage@3.2.2: {} @@ -22665,6 +23116,12 @@ snapshots: dependencies: '@isaacs/cliui': 8.0.2 + jake@10.9.4: + dependencies: + async: 3.2.6 + filelist: 1.0.6 + picocolors: 1.1.1 + jest-diff@30.4.1: dependencies: '@jest/diff-sequences': 30.4.0 @@ -22934,6 +23391,8 @@ snapshots: picocolors: 1.1.1 shell-quote: 1.8.4 + lazy-val@1.0.5: {} + leven@3.1.0: {} lighthouse-logger@1.4.2: @@ -23229,6 +23688,10 @@ snapshots: dependencies: yallist: 3.1.1 + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + lru-cache@7.18.3: {} lru_map@0.4.1: {} @@ -23909,6 +24372,8 @@ snapshots: mime@1.6.0: {} + mime@2.6.0: {} + mime@3.0.0: {} mimic-fn@1.2.0: {} @@ -24013,7 +24478,6 @@ snapshots: mkdirp@0.5.6: dependencies: minimist: 1.2.8 - optional: true mkdirp@1.0.4: {} @@ -24216,6 +24680,19 @@ snapshots: transitivePeerDependencies: - supports-color + node-gyp@12.4.0: + dependencies: + env-paths: 2.2.1 + exponential-backoff: 3.1.3 + graceful-fs: 4.2.11 + nopt: 9.0.0 + proc-log: 6.1.0 + semver: 7.7.3 + tar: 7.5.7 + tinyglobby: 0.2.15 + undici: 6.26.0 + which: 6.0.1 + node-int64@0.4.0: {} node-machine-id@1.1.12: {} @@ -24234,6 +24711,10 @@ snapshots: dependencies: abbrev: 3.0.1 + nopt@9.0.0: + dependencies: + abbrev: 4.0.0 + normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 @@ -24638,6 +25119,8 @@ snapshots: pathval@2.0.1: {} + pe-library@0.4.1: {} + pe-library@1.0.1: {} peek-readable@4.1.0: {} @@ -24689,6 +25172,15 @@ snapshots: mlly: 1.8.0 pathe: 2.0.3 + pkijs@3.4.0: + dependencies: + '@noble/hashes': 1.4.0 + asn1js: 3.0.10 + bytestreamjs: 2.0.1 + pvtsutils: 1.3.6 + pvutils: 1.1.5 + tslib: 2.8.1 + playwright-core@1.58.1: {} playwright@1.58.1: @@ -24869,6 +25361,10 @@ snapshots: proc-log@5.0.0: {} + proc-log@6.1.0: {} + + process-nextick-args@2.0.1: {} + process@0.11.10: {} progress@2.0.3: {} @@ -24899,6 +25395,12 @@ snapshots: object-assign: 4.1.1 react-is: 16.13.1 + proper-lockfile@4.1.2: + dependencies: + graceful-fs: 4.2.11 + retry: 0.12.0 + signal-exit: 3.0.7 + property-information@7.1.0: {} prosemirror-changeset@2.3.1: @@ -25037,6 +25539,12 @@ snapshots: punycode@2.3.1: {} + pvtsutils@1.3.6: + dependencies: + tslib: 2.8.1 + + pvutils@1.1.5: {} + qrcode-terminal@0.11.0: {} qs@6.15.0: @@ -25457,6 +25965,16 @@ snapshots: normalize-package-data: 2.5.0 path-type: 2.0.0 + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + readable-stream@3.6.2: dependencies: inherits: 2.0.4 @@ -25593,6 +26111,10 @@ snapshots: rc: 1.2.8 resolve: 1.7.1 + resedit@1.7.2: + dependencies: + pe-library: 0.4.1 + resedit@2.0.3: dependencies: pe-library: 1.0.1 @@ -25660,7 +26182,6 @@ snapshots: rimraf@2.6.3: dependencies: glob: 7.2.3 - optional: true rimraf@3.0.2: dependencies: @@ -25734,6 +26255,8 @@ snapshots: dependencies: queue-microtask: 1.2.3 + safe-buffer@5.1.2: {} + safe-buffer@5.2.1: {} safe-regex-test@1.1.0: @@ -25744,7 +26267,9 @@ snapshots: safer-buffer@2.1.2: {} - sax@1.4.4: {} + sanitize-filename@1.6.4: + dependencies: + truncate-utf8-bytes: 1.0.2 sax@1.6.0: {} @@ -25994,6 +26519,10 @@ snapshots: dependencies: is-arrayish: 0.3.4 + simple-update-notifier@2.0.0: + dependencies: + semver: 7.7.3 + simple-xml-to-json@1.2.3: {} sirv@3.0.2: @@ -26125,6 +26654,8 @@ snapshots: '@stablelib/base64': 1.0.1 fast-sha256: 1.3.0 + stat-mode@1.0.0: {} + statuses@1.5.0: {} statuses@2.0.2: {} @@ -26184,6 +26715,10 @@ snapshots: get-east-asian-width: 1.4.0 strip-ansi: 7.1.2 + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 @@ -26391,11 +26926,15 @@ snapshots: temp-dir@2.0.0: {} + temp-file@3.4.0: + dependencies: + async-exit-hook: 2.0.1 + fs-extra: 10.1.0 + temp@0.9.4: dependencies: mkdirp: 0.5.6 rimraf: 2.6.3 - optional: true terminal-link@2.1.1: dependencies: @@ -26440,6 +26979,10 @@ snapshots: throat@5.0.0: {} + tiny-async-pool@1.3.0: + dependencies: + semver: 5.7.2 + tiny-each-async@2.0.3: optional: true @@ -26491,14 +27034,12 @@ snapshots: tmp-promise@3.0.3: dependencies: tmp: 0.2.7 - optional: true tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 - tmp@0.2.7: - optional: true + tmp@0.2.7: {} tmpl@1.0.5: {} @@ -26553,6 +27094,10 @@ snapshots: trough@2.2.0: {} + truncate-utf8-bytes@1.0.2: + dependencies: + utf8-byte-length: 1.0.5 + ts-algebra@2.0.0: {} ts-dedent@2.2.0: {} @@ -26718,6 +27263,8 @@ snapshots: undici@6.23.0: {} + undici@6.26.0: {} + unicode-canonical-property-names-ecmascript@2.0.1: {} unicode-match-property-ecmascript@2.0.0: @@ -26810,6 +27357,14 @@ snapshots: until-async@3.0.2: {} + unzipper@0.12.3: + dependencies: + bluebird: 3.7.2 + duplexer2: 0.1.4 + fs-extra: 11.3.3 + graceful-fs: 4.2.11 + node-int64: 0.4.0 + update-browserslist-db@1.2.3(browserslist@4.28.1): dependencies: browserslist: 4.28.1 @@ -26844,6 +27399,8 @@ snapshots: execa: 1.0.0 mem: 4.3.0 + utf8-byte-length@1.0.5: {} + utif2@4.1.0: dependencies: pako: 1.0.11 @@ -27278,6 +27835,14 @@ snapshots: web-vitals@5.1.0: {} + webcrypto-core@1.9.2: + dependencies: + '@peculiar/asn1-schema': 2.8.0 + '@peculiar/json-schema': 1.1.12 + '@peculiar/utils': 2.0.3 + asn1js: 3.0.10 + tslib: 2.8.1 + webidl-conversions@3.0.1: {} webidl-conversions@5.0.0: {} @@ -27372,6 +27937,10 @@ snapshots: dependencies: isexe: 3.1.1 + which@6.0.1: + dependencies: + isexe: 4.0.0 + why-is-node-running@2.3.0: dependencies: siginfo: 2.0.0 @@ -27441,12 +28010,12 @@ snapshots: xml2js@0.5.0: dependencies: - sax: 1.4.4 + sax: 1.6.0 xmlbuilder: 11.0.1 xml2js@0.6.0: dependencies: - sax: 1.4.4 + sax: 1.6.0 xmlbuilder: 11.0.1 xmlbuilder@11.0.1: {} From 3c44865a446a233448b70c9c0dcdb6e12be0a002 Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Fri, 19 Jun 2026 22:50:32 -0700 Subject: [PATCH 03/19] swap built-in updater for electron-updater --- apps/code/package.json | 1 + .../platform-adapters/electron-updater.ts | 29 ++++++++++----- pnpm-lock.yaml | 35 +++++++++++++++++++ 3 files changed, 57 insertions(+), 8 deletions(-) diff --git a/apps/code/package.json b/apps/code/package.json index e0b41feb9b..6149a55e69 100644 --- a/apps/code/package.json +++ b/apps/code/package.json @@ -131,6 +131,7 @@ "drizzle-orm": "^0.45.1", "electron-log": "^5.4.3", "electron-store": "^11.0.0", + "electron-updater": "^6.8.9", "fflate": "^0.8.2", "file-icon": "^6.0.0", "fzf": "^0.5.2", diff --git a/apps/code/src/main/platform-adapters/electron-updater.ts b/apps/code/src/main/platform-adapters/electron-updater.ts index c0d6d5a752..1c675a7244 100644 --- a/apps/code/src/main/platform-adapters/electron-updater.ts +++ b/apps/code/src/main/platform-adapters/electron-updater.ts @@ -1,9 +1,20 @@ import type { IUpdater } from "@posthog/platform/updater"; -import { app, autoUpdater } from "electron"; +import { app } from "electron"; +import log from "electron-log/main"; +import { autoUpdater, type UpdateInfo } from "electron-updater"; import { injectable } from "inversify"; @injectable() export class ElectronUpdater implements IUpdater { + constructor() { + autoUpdater.logger = log; + autoUpdater.autoDownload = true; + autoUpdater.autoInstallOnAppQuit = true; + // Differential (blockmap) downloads are flaky behind some proxies/AV; + // prefer full-package downloads for reliability. + autoUpdater.disableDifferentialDownload = true; + } + public isSupported(): boolean { return ( app.isPackaged && @@ -12,16 +23,19 @@ export class ElectronUpdater implements IUpdater { ); } - public setFeedUrl(url: string): void { - autoUpdater.setFeedURL({ url }); + // electron-updater configures itself from the app-update.yml that + // electron-builder bakes into the package from the publish config, so there + // is no runtime feed URL to set. Kept as a no-op for IUpdater compatibility. + public setFeedUrl(_url: string): void { + return; } public check(): void { - autoUpdater.checkForUpdates(); + void autoUpdater.checkForUpdates(); } public quitAndInstall(): void { - autoUpdater.quitAndInstall(); + autoUpdater.quitAndInstall(false, true); } public onCheckStart(handler: () => void): () => void { @@ -31,14 +45,13 @@ export class ElectronUpdater implements IUpdater { } public onUpdateAvailable(handler: () => void): () => void { - const l = () => handler(); + const l = (_info: UpdateInfo) => handler(); autoUpdater.on("update-available", l); return () => autoUpdater.off("update-available", l); } public onUpdateDownloaded(handler: (version: string) => void): () => void { - const l = (_event: unknown, _releaseNotes: string, releaseName: string) => - handler(releaseName); + const l = (info: UpdateInfo) => handler(info.version); autoUpdater.on("update-downloaded", l); return () => autoUpdater.off("update-downloaded", l); } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e104bd400b..7843dfde45 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -248,6 +248,9 @@ importers: electron-store: specifier: ^11.0.0 version: 11.0.2 + electron-updater: + specifier: ^6.8.9 + version: 6.8.9 fflate: specifier: ^0.8.2 version: 0.8.2 @@ -8169,6 +8172,9 @@ packages: electron-to-chromium@1.5.286: resolution: {integrity: sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==} + electron-updater@6.8.9: + resolution: {integrity: sha512-ZhVxM9iGONUpZGI1FxdMRgJjUFXi7AYGVa5PwKlO1tV1/4zDxQmfKpXOHVztKrd6L9rLcFjERvi1Mf2vxyTkig==} + electron-winstaller@5.4.0: resolution: {integrity: sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==} engines: {node: '>=8.0.0'} @@ -10105,6 +10111,9 @@ packages: lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + lodash.escaperegexp@4.1.2: + resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==} + 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. @@ -10115,6 +10124,10 @@ packages: lodash.isboolean@3.0.3: resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. + lodash.isinteger@4.0.4: resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} @@ -12727,6 +12740,9 @@ packages: resolution: {integrity: sha512-w/Te7uMUVeH0CR8vZIjr+XiN41V+30lkDdK+NRIDCUYKKuL9VcmaUEmaPISuwGhLlrTGh5yu18lENtR9axSxYw==} engines: {node: '>=12'} + tiny-typed-emitter@2.1.0: + resolution: {integrity: sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==} + tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} @@ -21430,6 +21446,19 @@ snapshots: electron-to-chromium@1.5.286: {} + electron-updater@6.8.9: + dependencies: + builder-util-runtime: 9.7.0 + fs-extra: 10.1.0 + js-yaml: 4.1.1 + lazy-val: 1.0.5 + lodash.escaperegexp: 4.1.2 + lodash.isequal: 4.5.0 + semver: 7.7.3 + tiny-typed-emitter: 2.1.0 + transitivePeerDependencies: + - supports-color + electron-winstaller@5.4.0: dependencies: '@electron/asar': 3.4.1 @@ -23614,12 +23643,16 @@ snapshots: lodash.debounce@4.0.8: {} + lodash.escaperegexp@4.1.2: {} + lodash.get@4.4.2: {} lodash.includes@4.3.0: {} lodash.isboolean@3.0.3: {} + lodash.isequal@4.5.0: {} + lodash.isinteger@4.0.4: {} lodash.isnumber@3.0.3: {} @@ -26990,6 +27023,8 @@ snapshots: tiny-lru@11.4.7: {} + tiny-typed-emitter@2.1.0: {} + tinybench@2.9.0: {} tinycolor2@1.6.0: {} From a6f29b260ec70f4fddce4ebcde1958293ed5d1cf Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Fri, 19 Jun 2026 23:19:13 -0700 Subject: [PATCH 04/19] switch release ci to electron-builder --- .github/workflows/code-release.yml | 188 +++++++++++++++++----- apps/code/electron-builder.config.cjs | 31 ++-- apps/code/scripts/merge-mac-manifests.mjs | 32 ++++ apps/code/tests/e2e/fixtures/electron.ts | 15 +- 4 files changed, 207 insertions(+), 59 deletions(-) create mode 100644 apps/code/scripts/merge-mac-manifests.mjs diff --git a/.github/workflows/code-release.yml b/.github/workflows/code-release.yml index 4348815bad..9b439b3d63 100644 --- a/.github/workflows/code-release.yml +++ b/.github/workflows/code-release.yml @@ -68,13 +68,11 @@ jobs: POSTHOG_SOURCEMAP_API_KEY: ${{ secrets.POSTHOG_SOURCEMAP_API_KEY }} POSTHOG_ENV_ID: ${{ secrets.POSTHOG_ENV_ID }} POSTHOG_HOST: ${{ secrets.POSTHOG_HOST }} - APPLE_CODESIGN_IDENTITY: ${{ secrets.APPLE_CODESIGN_IDENTITY }} + CSC_LINK: ${{ secrets.APPLE_CODESIGN_CERT_BASE64 }} + CSC_KEY_PASSWORD: ${{ secrets.APPLE_CODESIGN_CERT_PASSWORD }} APPLE_ID: ${{ secrets.APPLE_ID }} APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }} APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} - APPLE_CODESIGN_CERT_BASE64: ${{ secrets.APPLE_CODESIGN_CERT_BASE64 }} - APPLE_CODESIGN_CERT_PASSWORD: ${{ secrets.APPLE_CODESIGN_CERT_PASSWORD }} - APPLE_CODESIGN_KEYCHAIN_PASSWORD: ${{ secrets.APPLE_CODESIGN_KEYCHAIN_PASSWORD }} steps: - name: Get app token id: app-token @@ -145,35 +143,52 @@ jobs: - name: Build agent package run: pnpm --filter @posthog/agent run build - - name: Import code signing certificate - if: env.APPLE_CODESIGN_IDENTITY != '' - env: - CERT_BASE64: ${{ env.APPLE_CODESIGN_CERT_BASE64 }} - CERT_PASSWORD: ${{ env.APPLE_CODESIGN_CERT_PASSWORD }} - KEYCHAIN_PASSWORD: ${{ env.APPLE_CODESIGN_KEYCHAIN_PASSWORD }} - run: | - if [ -z "$CERT_BASE64" ] || [ -z "$CERT_PASSWORD" ] || [ -z "$KEYCHAIN_PASSWORD" ]; then - echo "Missing code signing certificate secrets" - exit 1 - fi - KEYCHAIN="$RUNNER_TEMP/codesign.keychain-db" - echo "$CERT_BASE64" | base64 --decode > "$RUNNER_TEMP/certificate.p12" - security create-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN" - security set-keychain-settings -lut 21600 "$KEYCHAIN" - security unlock-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN" - security import "$RUNNER_TEMP/certificate.p12" -k "$KEYCHAIN" -P "$CERT_PASSWORD" -T /usr/bin/codesign -T /usr/bin/security - security list-keychains -d user -s "$KEYCHAIN" $(security list-keychains -d user | tr -d '"') - security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$KEYCHAIN_PASSWORD" "$KEYCHAIN" - rm "$RUNNER_TEMP/certificate.p12" - - name: Build native modules run: pnpm --filter code run build-native - name: Build release artifacts env: APP_VERSION: ${{ steps.version.outputs.version }} - GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} - run: pnpm --filter code exec electron-forge publish --dry-run --arch=${{ matrix.arch }} --platform=darwin + working-directory: apps/code + run: | + node scripts/build.mjs + if [[ "${{ matrix.arch }}" == "arm64" ]]; then + pnpm exec electron-builder build --mac --arm64 --publish never --config electron-builder.config.cjs + else + pnpm exec electron-builder build --mac --x64 --publish never --config electron-builder.config.cjs + fi + + - name: Verify package + run: | + if [[ "${{ matrix.arch }}" == "arm64" ]]; then + APP_BUNDLE="apps/code/out/mac-arm64/PostHog Code.app" + else + APP_BUNDLE="apps/code/out/mac/PostHog Code.app" + fi + RESOURCES="$APP_BUNDLE/Contents/Resources" + UNPACKED="$RESOURCES/app.asar.unpacked/node_modules" + + if [[ ! -f "$RESOURCES/app-update.yml" ]]; then + echo "FAIL: app-update.yml missing at $RESOURCES/app-update.yml" + exit 1 + fi + echo "OK: app-update.yml" + + for mod in node-pty better-sqlite3 "@parcel/watcher"; do + if [[ ! -d "$UNPACKED/$mod" ]]; then + echo "FAIL: $mod missing in app.asar.unpacked/node_modules" + exit 1 + fi + echo "OK: $mod" + done + + for bin in claude-cli codex-acp; do + if [[ ! -d "$RESOURCES/app.asar.unpacked/.vite/build/$bin" ]]; then + echo "FAIL: $bin missing in bundled binaries" + exit 1 + fi + echo "OK: $bin" + done - name: Install Playwright run: pnpm --filter code exec playwright install @@ -192,11 +207,22 @@ jobs: path: apps/code/playwright-report/ retention-days: 7 - - name: Publish release artifacts + - name: Upload release artifacts env: + GH_TOKEN: ${{ steps.app-token.outputs.token }} APP_VERSION: ${{ steps.version.outputs.version }} - GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} - run: pnpm --filter code exec electron-forge publish --from-dry-run + run: | + gh release upload "v$APP_VERSION" --repo PostHog/code --clobber \ + apps/code/out/*.dmg \ + apps/code/out/*-mac.zip \ + apps/code/out/*.blockmap + + - name: Upload mac manifest artifact + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + with: + name: mac-manifest-${{ matrix.arch }} + path: apps/code/out/latest-mac.yml + retention-days: 1 publish-windows: needs: [prepare-release] @@ -274,18 +300,49 @@ jobs: - name: Build agent package run: pnpm --filter @posthog/agent run build - - name: Publish with Electron Forge + - name: Build native modules + run: pnpm --filter code run build-native + + - name: Build release artifacts env: APP_VERSION: ${{ steps.version.outputs.version }} - GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} - run: pnpm --filter code run publish + working-directory: apps/code + run: | + node scripts/build.mjs + pnpm exec electron-builder build --win --x64 --publish never --config electron-builder.config.cjs + + - name: Upload release artifacts + shell: pwsh + env: + GH_TOKEN: ${{ steps.app-token.outputs.token }} + APP_VERSION: ${{ steps.version.outputs.version }} + run: | + $out = "apps/code/out" + $sq = Join-Path $out "squirrel-windows" + $items = @() + # NSIS installer + electron-updater metadata live in the output root. + $items += Get-ChildItem $out -File -Filter "*.exe" + $items += Get-ChildItem $out -File -Filter "latest.yml" + $items += Get-ChildItem $out -File -Filter "*.blockmap" + # Squirrel.Windows artifacts (nupkg + RELEASES + Setup) land in out/squirrel-windows. + if (Test-Path $sq) { + $items += Get-ChildItem $sq -File -Filter "*.nupkg" + $items += Get-ChildItem $sq -File -Filter "RELEASES" + $items += Get-ChildItem $sq -File -Filter "*.exe" + } + $files = $items | Select-Object -ExpandProperty FullName + gh release upload "v$env:APP_VERSION" --repo PostHog/code --clobber @files publish-linux: needs: [prepare-release] strategy: fail-fast: false matrix: - runner: [ubuntu-24.04, ubuntu-24.04-arm] + include: + - runner: ubuntu-24.04 + arch: x64 + - runner: ubuntu-24.04-arm + arch: arm64 runs-on: ${{ matrix.runner }} permissions: id-token: write @@ -362,11 +419,27 @@ jobs: - name: Build agent package run: pnpm --filter @posthog/agent run build - - name: Publish with Electron Forge + - name: Build release artifacts env: APP_VERSION: ${{ steps.version.outputs.version }} - GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} - run: pnpm --filter code run publish + working-directory: apps/code + run: | + node scripts/build.mjs + if [[ "${{ matrix.arch }}" == "arm64" ]]; then + pnpm exec electron-builder build --linux --arm64 --publish never --config electron-builder.config.cjs + else + pnpm exec electron-builder build --linux --x64 --publish never --config electron-builder.config.cjs + fi + + - name: Upload release artifacts + env: + GH_TOKEN: ${{ steps.app-token.outputs.token }} + APP_VERSION: ${{ steps.version.outputs.version }} + run: | + gh release upload "v$APP_VERSION" --repo PostHog/code --clobber \ + apps/code/out/*.AppImage \ + apps/code/out/*.deb \ + apps/code/out/*.rpm finalize-release: needs: [publish-macos, publish-windows, publish-linux] @@ -391,6 +464,47 @@ jobs: TAG_VERSION="${GITHUB_REF#refs/tags/v}" echo "version=$TAG_VERSION" >> "$GITHUB_OUTPUT" + - name: Checkout merge script + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + sparse-checkout: | + apps/code/scripts/merge-mac-manifests.mjs + sparse-checkout-cone-mode: false + + - name: Setup Node.js + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + node-version: 22 + + - name: Install yaml dependency + run: npm install --prefix apps/code yaml + + - name: Download arm64 mac manifest + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 + with: + name: mac-manifest-arm64 + path: /tmp/mac-manifests/arm64 + + - name: Download x64 mac manifest + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 + with: + name: mac-manifest-x64 + path: /tmp/mac-manifests/x64 + + - name: Merge mac manifests + run: | + node apps/code/scripts/merge-mac-manifests.mjs \ + /tmp/mac-manifests/arm64/latest-mac.yml \ + /tmp/mac-manifests/x64/latest-mac.yml \ + /tmp/latest-mac.yml + + - name: Upload merged mac manifest + env: + GH_TOKEN: ${{ steps.app-token.outputs.token }} + APP_VERSION: ${{ steps.version.outputs.version }} + run: | + gh release upload "v$APP_VERSION" --repo PostHog/code --clobber /tmp/latest-mac.yml + - name: Publish GitHub release env: GH_TOKEN: ${{ steps.app-token.outputs.token }} diff --git a/apps/code/electron-builder.config.cjs b/apps/code/electron-builder.config.cjs index dc3a617c36..ce6b1e0866 100644 --- a/apps/code/electron-builder.config.cjs +++ b/apps/code/electron-builder.config.cjs @@ -79,10 +79,12 @@ module.exports = { ], mac: { - target: [ - { target: "dmg", arch: ["arm64", "x64"] }, - { target: "zip", arch: ["arm64", "x64"] }, - ], + // Plain target list so the --arm64/--x64 CLI flag selects the arch + // (per-arch CI runners). Space-free artifactName so the on-disk filename + // matches the (sanitized) url electron-builder writes into latest-mac.yml, + // which is what `gh release upload` puts on the GitHub release. + target: ["dmg", "zip"], + artifactName: "PostHog-Code-${version}-${arch}-mac.${ext}", icon: "build/app-icon.icns", category: "public.app-category.productivity", hardenedRuntime: true, @@ -97,6 +99,7 @@ module.exports = { dmg: { format: "ULFO", + size: "4g", background: "build/dmg-background.png", icon: "build/app-icon.icns", iconSize: 80, @@ -108,10 +111,8 @@ module.exports = { }, win: { - target: [ - { target: "nsis", arch: ["x64"] }, - { target: "squirrel", arch: ["x64"] }, - ], + target: ["nsis", "squirrel"], + artifactName: "PostHog-Code-${version}-${arch}-win.${ext}", icon: "build/app-icon.ico", }, @@ -120,12 +121,16 @@ module.exports = { deleteAppDataOnUninstall: false, }, + // Match the legacy Forge MakerSquirrel package identity so existing + // Squirrel.Windows installs keep auto-updating through the transition. + squirrelWindows: { + name: "PostHogCode", + }, + linux: { - target: [ - { target: "AppImage", arch: ["x64", "arm64"] }, - { target: "deb", arch: ["x64", "arm64"] }, - { target: "rpm", arch: ["x64", "arm64"] }, - ], + // Plain target list so --arm64/--x64 selects the arch on each runner. + // deb/rpm keep their own packageName-based names; AppImage isn't auto-updated. + target: ["AppImage", "deb", "rpm"], icon: "build/app-icon.png", category: "Development", mimeTypes: ["x-scheme-handler/posthog-code"], diff --git a/apps/code/scripts/merge-mac-manifests.mjs b/apps/code/scripts/merge-mac-manifests.mjs new file mode 100644 index 0000000000..a154609b06 --- /dev/null +++ b/apps/code/scripts/merge-mac-manifests.mjs @@ -0,0 +1,32 @@ +#!/usr/bin/env node +import { readFileSync, writeFileSync } from "node:fs"; +import { parse, stringify } from "yaml"; + +const [, , arm64Path, x64Path, outputPath] = process.argv; + +if (!arm64Path || !x64Path || !outputPath) { + console.error( + "Usage: merge-mac-manifests.mjs ", + ); + process.exit(1); +} + +const arm64 = parse(readFileSync(arm64Path, "utf8")); +const x64 = parse(readFileSync(x64Path, "utf8")); + +const seenUrls = new Set(); +const mergedFiles = []; + +for (const file of [...arm64.files, ...x64.files]) { + if (!seenUrls.has(file.url)) { + seenUrls.add(file.url); + mergedFiles.push(file); + } +} + +const merged = { ...arm64, files: mergedFiles }; + +writeFileSync(outputPath, stringify(merged), "utf8"); +console.log( + `Merged ${mergedFiles.length} files from arm64+x64 manifests -> ${outputPath}`, +); diff --git a/apps/code/tests/e2e/fixtures/electron.ts b/apps/code/tests/e2e/fixtures/electron.ts index 19f93290f9..e2e7d44e24 100644 --- a/apps/code/tests/e2e/fixtures/electron.ts +++ b/apps/code/tests/e2e/fixtures/electron.ts @@ -14,21 +14,21 @@ function getAppPath(): string { if (process.platform === "darwin") { const arm64Path = path.join( outDir, - "PostHog Code-darwin-arm64/PostHog Code.app/Contents/MacOS/PostHog Code", + "mac-arm64/PostHog Code.app/Contents/MacOS/PostHog Code", ); const x64Path = path.join( outDir, - "PostHog Code-darwin-x64/PostHog Code.app/Contents/MacOS/PostHog Code", + "mac/PostHog Code.app/Contents/MacOS/PostHog Code", ); if (requestedArch === "arm64") { if (existsSync(arm64Path)) return arm64Path; - throw new Error(`No darwin-arm64 packaged app found at ${arm64Path}.`); + throw new Error(`No mac-arm64 packaged app found at ${arm64Path}.`); } if (requestedArch === "x64") { if (existsSync(x64Path)) return x64Path; - throw new Error(`No darwin-x64 packaged app found at ${x64Path}.`); + throw new Error(`No mac x64 packaged app found at ${x64Path}.`); } if (existsSync(arm64Path)) return arm64Path; @@ -40,10 +40,7 @@ function getAppPath(): string { } if (process.platform === "win32") { - const winPath = path.join( - outDir, - "PostHog Code-win32-x64/PostHog Code.exe", - ); + const winPath = path.join(outDir, "win-unpacked/PostHog Code.exe"); if (existsSync(winPath)) return winPath; throw new Error( @@ -52,7 +49,7 @@ function getAppPath(): string { } if (process.platform === "linux") { - const linuxPath = path.join(outDir, "PostHog Code-linux-x64/PostHog Code"); + const linuxPath = path.join(outDir, "linux-unpacked/PostHog Code"); if (existsSync(linuxPath)) return linuxPath; throw new Error( From 019cb52ef676feaedb5bbae2a8773cd39d85fcea Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Fri, 19 Jun 2026 23:32:47 -0700 Subject: [PATCH 05/19] remove electron forge and update release docs --- .github/workflows/code-release.yml | 12 +- .github/workflows/test.yml | 3 - apps/code/forge.config.ts | 376 --- apps/code/package.json | 20 +- apps/code/scripts/build-linux-docker.sh | 22 +- apps/code/scripts/build-native-modules.sh | 32 - apps/code/scripts/postinstall.sh | 2 +- apps/code/src/main/utils/env.ts | 2 +- apps/code/vite.main.config.mts | 2 +- docs/UPDATES.md | 14 +- knip.json | 1 - pnpm-lock.yaml | 2646 +-------------------- pnpm-workspace.yaml | 2 - 13 files changed, 147 insertions(+), 2987 deletions(-) delete mode 100644 apps/code/forge.config.ts delete mode 100755 apps/code/scripts/build-native-modules.sh diff --git a/.github/workflows/code-release.yml b/.github/workflows/code-release.yml index 9b439b3d63..f267017508 100644 --- a/.github/workflows/code-release.yml +++ b/.github/workflows/code-release.yml @@ -34,9 +34,9 @@ jobs: APP_VERSION: ${{ steps.version.outputs.version }} run: | # Pre-create a single draft release so every parallel publish job uploads - # into the same release. Without this, electron-forge's GitHub publisher - # creates-if-missing from each job at once, producing multiple releases for - # one tag and scattering assets (the orphans get left as drafts). + # into the same release. Without this, parallel jobs each create-if-missing + # at once, producing multiple releases for one tag and scattering assets + # (the orphans get left as drafts). if gh release view "v$APP_VERSION" --repo PostHog/code >/dev/null 2>&1; then echo "Release v$APP_VERSION already exists — reusing it" else @@ -143,9 +143,6 @@ jobs: - name: Build agent package run: pnpm --filter @posthog/agent run build - - name: Build native modules - run: pnpm --filter code run build-native - - name: Build release artifacts env: APP_VERSION: ${{ steps.version.outputs.version }} @@ -300,9 +297,6 @@ jobs: - name: Build agent package run: pnpm --filter @posthog/agent run build - - name: Build native modules - run: pnpm --filter code run build-native - - name: Build release artifacts env: APP_VERSION: ${{ steps.version.outputs.version }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6c5c567fc2..6b73328466 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -126,9 +126,6 @@ jobs: pnpm --filter agent build & wait - - name: Build native modules - run: pnpm --filter code run build-native - - name: Package Electron app run: pnpm --filter code run package env: diff --git a/apps/code/forge.config.ts b/apps/code/forge.config.ts deleted file mode 100644 index 2587a6cfe7..0000000000 --- a/apps/code/forge.config.ts +++ /dev/null @@ -1,376 +0,0 @@ -import type { ChildProcess } from "node:child_process"; -import { execSync } from "node:child_process"; -import { cpSync, existsSync, mkdirSync, rmSync } from "node:fs"; -import path from "node:path"; -import { MakerDeb } from "@electron-forge/maker-deb"; -import { MakerDMG } from "@electron-forge/maker-dmg"; -import { MakerRpm } from "@electron-forge/maker-rpm"; -import { MakerSquirrel } from "@electron-forge/maker-squirrel"; -import { MakerZIP } from "@electron-forge/maker-zip"; -import { PublisherGithub } from "@electron-forge/publisher-github"; -import type { ForgeConfig } from "@electron-forge/shared-types"; -import { MakerAppImage } from "@reforged/maker-appimage"; - -const appleCodesignIdentity = process.env.APPLE_CODESIGN_IDENTITY; -const appleTeamId = process.env.APPLE_TEAM_ID; -const appleId = process.env.APPLE_ID; -const appleIdPassword = - process.env.APPLE_APP_SPECIFIC_PASSWORD ?? process.env.APPLE_ID_PASSWORD; -const appleApiKey = process.env.APPLE_API_KEY; -const appleApiKeyId = process.env.APPLE_API_KEY_ID; -const appleApiIssuer = process.env.APPLE_API_ISSUER; -const appleNotarizeKeychainProfile = - process.env.APPLE_NOTARIZE_KEYCHAIN_PROFILE; -const appleNotarizeKeychain = process.env.APPLE_NOTARIZE_KEYCHAIN; -const shouldSignMacApp = Boolean(appleCodesignIdentity); -const skipNotarize = process.env.SKIP_NOTARIZE === "1"; - -type NotaryToolCredentials = - | { - appleId: string; - appleIdPassword: string; - teamId: string; - } - | { - appleApiKey: string; - appleApiKeyId: string; - appleApiIssuer: string; - } - | { - keychainProfile: string; - keychain?: string; - }; - -let notarizeCredentials: NotaryToolCredentials | undefined; - -if (appleId && appleIdPassword && appleTeamId) { - notarizeCredentials = { - appleId: appleId, - appleIdPassword: appleIdPassword, - teamId: appleTeamId, - }; -} else if (appleApiKey && appleApiKeyId && appleApiIssuer) { - notarizeCredentials = { - appleApiKey, - appleApiKeyId, - appleApiIssuer, - }; -} else if (appleNotarizeKeychainProfile) { - notarizeCredentials = { - keychainProfile: appleNotarizeKeychainProfile, - ...(appleNotarizeKeychain ? { keychain: appleNotarizeKeychain } : {}), - }; -} - -const notarizeConfig = - !skipNotarize && shouldSignMacApp && notarizeCredentials - ? notarizeCredentials - : undefined; - -let electronChild: ChildProcess | null = null; - -function killElectronChild() { - if (electronChild && !electronChild.killed) { - console.log("[forge] Killing Electron child process"); - electronChild.kill("SIGTERM"); - electronChild = null; - } -} - -process.on("SIGINT", killElectronChild); -process.on("SIGTERM", killElectronChild); -const osxSignConfig = - shouldSignMacApp && appleCodesignIdentity - ? ({ - identity: appleCodesignIdentity, - optionsForFile: () => { - // Entitlements for all binaries/frameworks - return { - hardenedRuntime: true, - entitlements: "build/entitlements.mac.plist", - }; - }, - } satisfies Record) - : undefined; - -function copyNativeDependency( - dependency: string, - destinationRoot: string, -): boolean { - const source = path.resolve("../../node_modules", dependency); - if (!existsSync(source)) { - // Fallback to local node_modules - const localSource = path.resolve("node_modules", dependency); - if (existsSync(localSource)) { - copySync(dependency, destinationRoot, localSource); - return true; - } - - console.warn( - `[forge] Native dependency "${dependency}" not found, skipping copy`, - ); - return false; - } - - const nodeModulesDir = path.join(destinationRoot, "node_modules"); - mkdirSync(nodeModulesDir, { recursive: true }); - - const destination = path.join(nodeModulesDir, dependency); - rmSync(destination, { recursive: true, force: true }); - cpSync(source, destination, { recursive: true, dereference: true }); - console.log( - `[forge] Copied native dependency "${dependency}" into ${path.relative( - process.cwd(), - destination, - )}`, - ); - return true; -} - -function copySync(dependency: string, destinationRoot: string, source: string) { - const nodeModulesDir = path.join(destinationRoot, "node_modules"); - mkdirSync(nodeModulesDir, { recursive: true }); - - const destination = path.join(nodeModulesDir, dependency); - rmSync(destination, { recursive: true, force: true }); - cpSync(source, destination, { recursive: true, dereference: true }); - console.log( - `[forge] Copied native dependency "${dependency}" into ${path.relative( - process.cwd(), - destination, - )}`, - ); -} - -const hasAssetsCar = existsSync("build/Assets.car"); - -const sharedLinuxOptions = { - name: "posthog-code", - productName: "PostHog Code", - genericName: "Code Editor", - description: "PostHog Code desktop app", - // Must match packagerConfig.executableName — the maker locates the packaged binary by this name - bin: "PostHog Code", - icon: "./build/app-icon.png", - categories: ["Development"], - homepage: "https://github.com/PostHog/code", - mimeType: ["x-scheme-handler/posthog-code"], -}; - -const config: ForgeConfig = { - packagerConfig: { - asar: { - unpack: - "{**/*.node,**/spawn-helper,**/.vite/build/claude-cli/**,**/.vite/build/plugins/posthog/**,**/.vite/build/codex-acp/**,**/.vite/build/grammars/**,**/node_modules/node-pty/**,**/node_modules/@parcel/**,**/node_modules/file-icon/**,**/node_modules/better-sqlite3/**,**/node_modules/bindings/**,**/node_modules/file-uri-to-path/**}", - }, - prune: false, - name: "PostHog Code", - executableName: "PostHog Code", - icon: "./build/app-icon", // Forge adds .icns/.ico/.png based on platform - appBundleId: "com.posthog.array", - appCategoryType: "public.app-category.productivity", - extraResource: hasAssetsCar - ? ["build/Assets.car", "build/app-icon.png"] - : ["build/app-icon.png"], - extendInfo: hasAssetsCar - ? { - CFBundleIconName: "Icon", - } - : {}, - ...(osxSignConfig - ? { - osxSign: osxSignConfig, - } - : {}), - ...(notarizeConfig - ? { - osxNotarize: notarizeConfig, - } - : {}), - }, - rebuildConfig: {}, - makers: [ - new MakerDMG({ - icon: "./build/app-icon.icns", - format: "ULFO", - background: "./build/dmg-background.png", - iconSize: 80, - window: { size: { width: 560, height: 380 } }, - contents: (opts) => [ - { x: 104, y: 55, type: "file", path: opts.appPath }, - { x: 104, y: 243, type: "link", path: "/Applications" }, - ], - ...(shouldSignMacApp && appleCodesignIdentity - ? { - "code-sign": { - "signing-identity": appleCodesignIdentity, - identifier: "com.posthog.array", - }, - } - : {}), - }), - new MakerSquirrel({ - name: "PostHogCode", - setupIcon: "./build/app-icon.ico", - }), - new MakerAppImage({ - options: { - icon: "./build/app-icon.png", - categories: ["Development"], - bin: "PostHog Code", - // Declare the deep-link scheme in the bundled .desktop entry so - // AppImage integrators (e.g. AppImageLauncher) register the handler. - // Non-integrated runs are covered at runtime in DeepLinkService. - mimeType: ["x-scheme-handler/posthog-code"], - }, - }), - new MakerDeb({ - options: { - ...sharedLinuxOptions, - section: "devel", - maintainer: "PostHog ", - }, - }), - new MakerRpm({ - options: { - ...sharedLinuxOptions, - license: "MIT", - }, - }), - new MakerZIP({}, ["darwin", "linux"]), - ], - hooks: { - generateAssets: async () => { - if (process.platform !== "darwin") return; - - if ( - existsSync("build/app-icon.png") && - !existsSync("build/app-icon.icns") - ) { - execSync("bash scripts/generate-icns.sh", { stdio: "inherit" }); - } - - if (existsSync("build/icon.icon") && !existsSync("build/Assets.car")) { - execSync("bash scripts/compile-glass-icon.sh", { stdio: "inherit" }); - } - }, - prePackage: async () => { - if (process.platform !== "darwin") return; - - // Build native modules for DMG maker on Node.js 22. These run on the - // build host (DMG creation is host-side), so we force npm to target the - // host arch even when the rest of the build is cross-targeting (e.g. - // building darwin-x64 on an arm64 runner). - const modules = ["macos-alias", "fs-xattr"]; - const hostBuildEnv = { - ...process.env, - npm_config_arch: process.arch, - npm_config_platform: process.platform, - }; - - for (const mod of modules) { - const candidates = [ - path.join("node_modules", mod), - path.resolve("../../node_modules", mod), - ]; - const modulePath = candidates.find((p) => existsSync(p)); - - if (modulePath) { - console.log(`Building native module: ${mod} (${modulePath})`); - execSync("npm install", { - cwd: modulePath, - stdio: "inherit", - env: hostBuildEnv, - }); - } - } - }, - postStart: async (_forgeConfig, child) => { - electronChild = child; - }, - packageAfterCopy: async ( - _forgeConfig, - buildPath, - _electronVersion, - platform, - targetArch, - ) => { - copyNativeDependency("node-pty", buildPath); - copyNativeDependency("node-addon-api", buildPath); - copyNativeDependency("@parcel/watcher", buildPath); - - // Platform-specific native dependencies - if (platform === "darwin") { - const watcherPkg = - targetArch === "x64" - ? "@parcel/watcher-darwin-x64" - : "@parcel/watcher-darwin-arm64"; - if (!copyNativeDependency(watcherPkg, buildPath)) { - throw new Error( - `[forge] Missing required native dependency "${watcherPkg}" for darwin-${targetArch}`, - ); - } - copyNativeDependency("file-icon", buildPath); - copyNativeDependency("p-map", buildPath); - } else if (platform === "win32") { - const watcherPkg = - targetArch === "arm64" - ? "@parcel/watcher-win32-arm64" - : "@parcel/watcher-win32-x64"; - if (!copyNativeDependency(watcherPkg, buildPath)) { - throw new Error( - `[forge] Missing required native dependency "${watcherPkg}" for win32-${targetArch}`, - ); - } - } else if (platform === "linux") { - const watcherPkg = - targetArch === "arm64" - ? "@parcel/watcher-linux-arm64-glibc" - : "@parcel/watcher-linux-x64-glibc"; - if (!copyNativeDependency(watcherPkg, buildPath)) { - throw new Error( - `[forge] Missing required native dependency "${watcherPkg}" for linux-${targetArch}`, - ); - } - } - - // Copy @parcel/watcher's hoisted dependencies - copyNativeDependency("micromatch", buildPath); - copyNativeDependency("is-glob", buildPath); - copyNativeDependency("detect-libc", buildPath); - // Copy transitive dependencies (full chain) - copyNativeDependency("braces", buildPath); - copyNativeDependency("picomatch", buildPath); - copyNativeDependency("is-extglob", buildPath); - copyNativeDependency("fill-range", buildPath); - copyNativeDependency("to-regex-range", buildPath); - copyNativeDependency("is-number", buildPath); - copyNativeDependency("better-sqlite3", buildPath); - copyNativeDependency("bindings", buildPath); - copyNativeDependency("file-uri-to-path", buildPath); - copyNativeDependency("prebuild-install", buildPath); - }, - packageAfterPrune: async (_forgeConfig, buildPath) => { - // @parcel/watcher tries @parcel/watcher-{platform}-{arch} first, then - // falls back to build/Release/watcher.node. Remove that fallback from - // release bundles so a host-compiled binary cannot shadow the required - // target-specific optional dependency. - rmSync(path.join(buildPath, "node_modules/@parcel/watcher/build"), { - recursive: true, - force: true, - }); - }, - }, - publishers: [ - new PublisherGithub({ - repository: { - owner: "PostHog", - name: "code", - }, - draft: true, - prerelease: false, - }), - ], -}; - -export default config; diff --git a/apps/code/package.json b/apps/code/package.json index 6149a55e69..570dcb973d 100644 --- a/apps/code/package.json +++ b/apps/code/package.json @@ -13,13 +13,12 @@ "dev": "node scripts/dev.mjs", "start": "node scripts/dev.mjs", "start:debug": "ELECTRON_INSPECT=5858 node scripts/dev.mjs", - "package": "node scripts/build.mjs && electron-forge package", - "package:dev": "FORCE_DEV_MODE=1 SKIP_NOTARIZE=1 node scripts/build.mjs && electron-forge package", - "make": "node scripts/build.mjs && electron-forge make", + "package": "node scripts/build.mjs && electron-builder build --dir --config electron-builder.config.cjs", + "package:dev": "FORCE_DEV_MODE=1 SKIP_NOTARIZE=1 node scripts/build.mjs && electron-builder build --dir --config electron-builder.config.cjs", + "make": "node scripts/build.mjs && electron-builder build --config electron-builder.config.cjs", "make:linux": "bash scripts/build-linux-docker.sh", - "publish": "electron-forge publish", + "publish": "node scripts/build.mjs && electron-builder build --publish always --config electron-builder.config.cjs", "build": "pnpm package", - "build-native": "bash scripts/build-native-modules.sh", "build-icons": "bash scripts/generate-icns.sh", "typecheck": "tsc -p tsconfig.node.json --noEmit && tsc -p tsconfig.web.json --noEmit", "generate-client": "tsx scripts/update-openapi-client.ts", @@ -41,19 +40,8 @@ "license": "MIT", "devDependencies": { "@biomejs/biome": "2.2.4", - "@electron-forge/cli": "^7.11.1", - "@electron-forge/maker-deb": "^7.11.1", - "@electron-forge/maker-dmg": "^7.11.1", - "@electron-forge/maker-rpm": "^7.11.1", - "@electron-forge/maker-squirrel": "^7.11.1", - "@electron-forge/maker-zip": "^7.11.1", - "@electron-forge/plugin-vite": "^7.11.1", - "@electron-forge/publisher-github": "^7.11.1", - "@electron-forge/shared-types": "^7.11.1", - "@electron/rebuild": "^4.0.3", "@playwright/test": "^1.42.0", "@posthog/rollup-plugin": "^1.4.0", - "@reforged/maker-appimage": "^5.2.0", "@storybook/addon-a11y": "10.2.0", "@storybook/addon-docs": "10.2.0", "@storybook/react-vite": "10.2.0", diff --git a/apps/code/scripts/build-linux-docker.sh b/apps/code/scripts/build-linux-docker.sh index 5e6a27b22d..269fe6dd1b 100755 --- a/apps/code/scripts/build-linux-docker.sh +++ b/apps/code/scripts/build-linux-docker.sh @@ -8,8 +8,8 @@ case "$ARCH" in *) echo "Unsupported ARCH=$ARCH (expected x64 or arm64)" >&2; exit 1 ;; esac -# Optional maker targets. Without any, all configured makers run (default). -# Accept friendly aliases or full maker package names, via repeatable +# Optional builder targets. Without any, all configured targets run (default). +# Accept friendly aliases or electron-builder target names, via repeatable # --target/--targets flags (comma-separated) or the TARGETS env var. RAW_TARGETS="${TARGETS:-}" while [ $# -gt 0 ]; do @@ -28,10 +28,6 @@ if [ -n "$RAW_TARGETS" ]; then for t in "${_targets[@]}"; do t="$(echo "$t" | tr '[:upper:]' '[:lower:]' | xargs)" # lowercase + trim [ -z "$t" ] && continue - # Forge's --targets matches each configured maker's `.name` (its display - # name), NOT its npm package name. Passing the package name makes Forge - # fall back to a fresh, UNCONFIGURED maker (dropping options like `bin`), - # which then fails to locate the packaged executable. Map to `.name`. case "$t" in deb) pkg="deb" ;; rpm) pkg="rpm" ;; @@ -39,7 +35,7 @@ if [ -n "$RAW_TARGETS" ]; then appimage) pkg="AppImage" ;; *) echo "Unknown target '$t' (expected: deb, rpm, zip, or appimage)" >&2; exit 1 ;; esac - MAKE_TARGETS="${MAKE_TARGETS:+$MAKE_TARGETS,}$pkg" + MAKE_TARGETS="${MAKE_TARGETS:+$MAKE_TARGETS }$pkg" done fi @@ -96,9 +92,13 @@ COPYFILE_DISABLE=1 tar -cf - \ pnpm --filter @posthog/git build pnpm --filter @posthog/enricher build pnpm --filter @posthog/agent build - MAKE_TARGETS_FLAG="" - [ -n "${MAKE_TARGETS:-}" ] && MAKE_TARGETS_FLAG="--targets=$MAKE_TARGETS" - pnpm --filter code make --platform=linux --arch="$ARCH" $MAKE_TARGETS_FLAG + cd apps/code + node scripts/build.mjs + if [ -n "${MAKE_TARGETS:-}" ]; then + pnpm exec electron-builder build --linux $MAKE_TARGETS --${ARCH} --config electron-builder.config.cjs + else + pnpm exec electron-builder build --linux --${ARCH} --config electron-builder.config.cjs + fi mkdir -p /out - cp -r apps/code/out/make /out/ + cp -r out/. /out/ ' diff --git a/apps/code/scripts/build-native-modules.sh b/apps/code/scripts/build-native-modules.sh deleted file mode 100755 index fc21828ecb..0000000000 --- a/apps/code/scripts/build-native-modules.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -# Build native modules for DMG maker on Node.js 22 -# This script compiles macos-alias and fs-xattr native modules - -set -e - -echo "Building native modules for DMG maker..." - -# Compile macos-alias -if [ -d "node_modules/macos-alias" ]; then - echo "Compiling macos-alias..." - cd node_modules/macos-alias - npm install - cd ../.. - echo "✓ macos-alias compiled" -else - echo "⚠ macos-alias not found, skipping" -fi - -# Compile fs-xattr -if [ -d "node_modules/fs-xattr" ]; then - echo "Compiling fs-xattr..." - cd node_modules/fs-xattr - npm install - cd ../.. - echo "✓ fs-xattr compiled" -else - echo "⚠ fs-xattr not found, skipping" -fi - -echo "✓ Native modules built successfully" diff --git a/apps/code/scripts/postinstall.sh b/apps/code/scripts/postinstall.sh index b620ad8cda..255d14f29b 100755 --- a/apps/code/scripts/postinstall.sh +++ b/apps/code/scripts/postinstall.sh @@ -12,7 +12,7 @@ SCRIPTS_DIR="$(cd "$(dirname "$0")" && pwd)" # pnpm skips package-level postinstall scripts when the lockfile is already # satisfied, so if node_modules/electron/dist gets wiped (interrupted download, # cache eviction, arch change, manual cleanup), `pnpm install` won't notice — -# and `electron-forge start` then fails with "Electron failed to install +# and `node scripts/dev.mjs` then fails with "Electron failed to install # correctly, please delete node_modules/electron and try installing again". # Detect the missing binary and invoke Electron's own install script to fetch it. ELECTRON_DIST="$REPO_ROOT/node_modules/electron/dist" diff --git a/apps/code/src/main/utils/env.ts b/apps/code/src/main/utils/env.ts index e11826792a..06bc80efea 100644 --- a/apps/code/src/main/utils/env.ts +++ b/apps/code/src/main/utils/env.ts @@ -12,7 +12,7 @@ function requireEnv(name: string): string { } /** - * Whether this is a development build (running via electron-forge start). + * Whether this is a development build (running via node scripts/dev.mjs). * Use this for dev/prod feature gates. Use `isPackaged` from @posthog/platform/app-meta * via DI only when you need ASAR-related behavior (e.g. .unpacked paths). */ diff --git a/apps/code/vite.main.config.mts b/apps/code/vite.main.config.mts index e9a05aac37..718e8ab9d6 100644 --- a/apps/code/vite.main.config.mts +++ b/apps/code/vite.main.config.mts @@ -507,7 +507,7 @@ function copyEnricherGrammars(): Plugin { return { name: "copy-enricher-grammars", writeBundle() { - // `.vite/grammars` is what the bundle resolves at dev-time; electron-forge + // `.vite/grammars` is what the bundle resolves at dev-time; electron-builder // only copies `.vite/build/**` into the packaged app, so we need both. const destDirs = [ join(__dirname, ".vite/grammars"), diff --git a/docs/UPDATES.md b/docs/UPDATES.md index 5c6102f4d4..0cdcd5d9c2 100644 --- a/docs/UPDATES.md +++ b/docs/UPDATES.md @@ -9,7 +9,19 @@ The version in `apps/code/package.json` is set to `0.0.0-dev` - this is intentio - **major.minor**: Controlled by git tags (e.g., `v0.15.0`, `v1.0.0`) - **patch**: Auto-calculated as number of commits since the minor tag -**Important:** Releases must use proper three-part semver versions (e.g., `v0.22.1`, not `v0.22`). The Electron auto-updater uses update.electronjs.org, which requires valid semver for version comparison. Two-part versions will break auto-updates. +**Important:** Releases must use proper three-part semver versions (e.g., `v0.22.1`, not `v0.22`). The auto-updater requires valid semver for version comparison. Two-part versions will break auto-updates. + +## Auto-Update Mechanism + +PostHog Code uses [electron-updater](https://www.electron.build/auto-update) (the npm package, not the built-in Electron autoUpdater). On startup the app checks for updates against the GitHub Release for PostHog/code. + +electron-builder generates and uploads a `latest-mac.yml` (macOS) or `latest.yml` (Windows) manifest to the GitHub Release during CI. The path to these manifests is baked into `app-update.yml` inside the app bundle at package time. + +**macOS**: DMG + zip artifacts are uploaded; the merged `latest-mac.yml` covers both arm64 and x64 so the correct build is selected per architecture. + +**Windows**: Both NSIS and Squirrel.Windows installers are shipped during the transition period. Existing Squirrel users continue receiving updates via the legacy feed; once they reinstall via the NSIS installer they move to the electron-updater flow permanently. + +**Linux**: No auto-update. AppImage, deb and rpm packages are manual downloads from the GitHub Release. ## How It Works diff --git a/knip.json b/knip.json index 03dfdecbfc..58d14ebc84 100644 --- a/knip.json +++ b/knip.json @@ -13,7 +13,6 @@ "src/renderer/main.tsx", "src/renderer/desktop-services.ts", "src/renderer/desktop-contributions.ts", - "forge.config.ts", "vite.main.config.mts", "vite.preload.config.mts", "vite.renderer.config.mts", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7843dfde45..38a1266ffc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -321,45 +321,12 @@ importers: '@biomejs/biome': specifier: 2.2.4 version: 2.2.4 - '@electron-forge/cli': - specifier: ^7.11.1 - version: 7.11.1(encoding@0.1.13)(esbuild@0.27.2) - '@electron-forge/maker-deb': - specifier: ^7.11.1 - version: 7.11.2 - '@electron-forge/maker-dmg': - specifier: ^7.11.1 - version: 7.11.1 - '@electron-forge/maker-rpm': - specifier: ^7.11.1 - version: 7.11.2 - '@electron-forge/maker-squirrel': - specifier: ^7.11.1 - version: 7.11.1 - '@electron-forge/maker-zip': - specifier: ^7.11.1 - version: 7.11.1 - '@electron-forge/plugin-vite': - specifier: ^7.11.1 - version: 7.11.1 - '@electron-forge/publisher-github': - specifier: ^7.11.1 - version: 7.11.1 - '@electron-forge/shared-types': - specifier: ^7.11.1 - version: 7.11.1 - '@electron/rebuild': - specifier: ^4.0.3 - version: 4.0.3 '@playwright/test': specifier: ^1.42.0 version: 1.58.1 '@posthog/rollup-plugin': specifier: ^1.4.0 version: 1.4.0(rollup@4.57.1) - '@reforged/maker-appimage': - specifier: ^5.2.0 - version: 5.2.0 '@storybook/addon-a11y': specifier: 10.2.0 version: 10.2.0(storybook@10.2.0(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)) @@ -2491,99 +2458,6 @@ packages: peerDependencies: '@noble/ciphers': ^1.0.0 - '@electron-forge/cli@7.11.1': - resolution: {integrity: sha512-pk8AoLsr7t7LBAt0cFD06XFA6uxtPdvtLx06xeal7O9o7GHGCbj29WGwFoJ8Br/ENM0Ho868S3PrAn1PtBXt5g==} - engines: {node: '>= 16.4.0'} - hasBin: true - - '@electron-forge/core-utils@7.11.1': - resolution: {integrity: sha512-9UxRWVsfcziBsbAA2MS0Oz4yYovQCO2BhnGIfsbKNTBtMc/RcVSxAS0NMyymce44i43p1ZC/FqWhnt1XqYw3bQ==} - engines: {node: '>= 16.4.0'} - - '@electron-forge/core@7.11.1': - resolution: {integrity: sha512-YtuPLzggPKPabFAD2rOZFE0s7f4KaUTpGRduhSMbZUqpqD1TIPyfoDBpYiZvao3Ht8pyZeOJjbzcC0LpFs9gIQ==} - engines: {node: '>= 16.4.0'} - - '@electron-forge/maker-base@7.11.1': - resolution: {integrity: sha512-yhZrCGoN6bDeiB5DHFaueZ1h84AReElEj+f0hl2Ph4UbZnO0cnLpbx+Bs+XfMLAiA+beC8muB5UDK5ysfuT9BQ==} - engines: {node: '>= 16.4.0'} - - '@electron-forge/maker-base@7.11.2': - resolution: {integrity: sha512-9934zYu9WVdgCYQXvtS+eL1oyLagsY8JlWhZmoK8yWTYftSAydH7jb3seVpfy6n85SYmY/yjcAy2lvOTy5dUwA==} - engines: {node: '>= 16.4.0'} - - '@electron-forge/maker-deb@7.11.2': - resolution: {integrity: sha512-MYSdCTsqzKNmsmaq7CIFh2kJdBWUZ4njxnVGrIRClzueVITk5Kots3+eQo+e5QQLvXTVn2XTNDc2nYjvtBh+Mw==} - engines: {node: '>= 16.4.0'} - - '@electron-forge/maker-dmg@7.11.1': - resolution: {integrity: sha512-7zs5/Ewz1PcOl4N1102stFgBiFGWxU18+UPFUSd/fgf9MErBl4HBWuVNMIHyeJ/56rdfkcmTxTqE+9TBEYrZcg==} - engines: {node: '>= 16.4.0'} - - '@electron-forge/maker-rpm@7.11.2': - resolution: {integrity: sha512-BEj/DcW6bSpmOyKUa3UsOgT7Hm3ZuP0Wa6OuQEunjxeCWn7yoDTDtjuYA0xRvzk+T4NCyDO3RBGjy6nYNSPU2Q==} - engines: {node: '>= 16.4.0'} - - '@electron-forge/maker-squirrel@7.11.1': - resolution: {integrity: sha512-oSg7fgad6l+X0DjtRkSpMzB0AjzyDO4mb2gzM4kTodkP1ADeiMi08bxy0ZeCESqLm5+fG72cAPmEr3BAPvI1yw==} - engines: {node: '>= 16.4.0'} - - '@electron-forge/maker-zip@7.11.1': - resolution: {integrity: sha512-30rcp0AbJLfkFBX2hmO14LKXx7z9V61LffTVbTCFMh5vUB2kZvcA5xAhsBk2oUJWfGVxe1DuSEU0rDR9bUMHUg==} - engines: {node: '>= 16.4.0'} - - '@electron-forge/plugin-base@7.11.1': - resolution: {integrity: sha512-lKpSOV1GA3FoYiD9k05i6v4KaQVmojnRgCr7d6VL1bFp13QOtXSaAWhFI9mtSY7rGElOacX6Zt7P7rPoB8T9eQ==} - engines: {node: '>= 16.4.0'} - - '@electron-forge/plugin-vite@7.11.1': - resolution: {integrity: sha512-kc/WQs/0+9VC9Q4oSSocMa02YxKDvAYxhWtNcL+qlswZMJlxe8gX7vl/yXq9AjPQxw7f3jzf7nruUPKQ+vyLLg==} - engines: {node: '>= 16.4.0'} - - '@electron-forge/publisher-base@7.11.1': - resolution: {integrity: sha512-rXE9oMFGMtdQrixnumWYH5TTGsp99iPHZb3jI74YWq518ctCh6DlIgWlhf6ok2X0+lhWovcIb45KJucUFAQ13w==} - engines: {node: '>= 16.4.0'} - - '@electron-forge/publisher-github@7.11.1': - resolution: {integrity: sha512-3S7DS1NZRrYvf59eqH0F2ke9oLD5FQqW5+t6kY1EuEo6I8HF+u6dOkGnvzhRh+uvKkjy4ynV3j735PlqBbClGQ==} - engines: {node: '>= 16.4.0'} - - '@electron-forge/shared-types@7.11.1': - resolution: {integrity: sha512-vvBWdAEh53UJlDGUevpaJk1+sqDMQibfrbHR+0IPA4MPyQex7/Uhv3vYH9oGHujBVAChQahjAuJt0fG6IJBLZg==} - engines: {node: '>= 16.4.0'} - - '@electron-forge/shared-types@7.11.2': - resolution: {integrity: sha512-Tcles7y74xy3jN5dEC+Pt1duJYk4c7W2xu98tjWW8RewmfKD2uHkie6I1I3yifPFZXZ/QfTlaFOOoKIQ9ENZjg==} - engines: {node: '>= 16.4.0'} - - '@electron-forge/template-base@7.11.1': - resolution: {integrity: sha512-XpTaEf+EfQw+0BlSAtSpZKYIKYvKu4raNzSGHZZoSYHp+HDC7R+MlpFQmSJiGdYQzQ14C+uxO42tVjgM0DMbpw==} - engines: {node: '>= 16.4.0'} - - '@electron-forge/template-vite-typescript@7.11.1': - resolution: {integrity: sha512-Us4AHXFb+4z+gXgZImSqMBS63oKnsQWLOhqRg321xiDzu2UcQPlwgWNb4rAEKNVC1e7LXrUNDHuBiTrQkvWXbg==} - engines: {node: '>= 16.4.0'} - - '@electron-forge/template-vite@7.11.1': - resolution: {integrity: sha512-Or8Lxf4awoeUZoMTKJEw5KQDIhqOFs24WhVka3yZXxc6VgVWN79KmYKYM6uM/YMQttmafhsBhY2t1Lxo1WR/ug==} - engines: {node: '>= 16.4.0'} - - '@electron-forge/template-webpack-typescript@7.11.1': - resolution: {integrity: sha512-6ExfFnFkHBz8rvRFTFg5HVGTC12uJpbVk4q8DVg0R8rhhxhqiVNh8lF2UPtZ2yT2UtGWjXNVlyP3Y3T6q6E3GQ==} - engines: {node: '>= 16.4.0'} - - '@electron-forge/template-webpack@7.11.1': - resolution: {integrity: sha512-15lbXxi+er461MPk6sbwAOyjofAHwmQjTvxNCiNpaU2naEwbj3t0SlLq/BMr5HxnVOaMmA7+lKV9afkIom+d4Q==} - engines: {node: '>= 16.4.0'} - - '@electron-forge/tracer@7.11.1': - resolution: {integrity: sha512-tiB6cglVQFcSw9N8GRwVwZUeB9u0DOx2Mj7aFXBUsFLUYQapvVGv51tUSy/UAW5lvmubGscYIILuVko+II3+NA==} - engines: {node: '>= 14.17.5'} - - '@electron-forge/tracer@7.11.2': - resolution: {integrity: sha512-U8j5Hyj2Zt7I5PciJvPJfmEv69Gb/Da9v+k655z3Jj1cuY0UnToEJ61IhXrzlTYqo+jUKC+fgAjDJ6vltJTS0A==} - engines: {node: '>= 14.17.5'} - '@electron/asar@3.4.1': resolution: {integrity: sha512-i4/rNPRS84t0vSRa2HorerGRXWyF4vThfHesw0dmcWHp+cspK743UanA0suA5Q5y8kzY2y6YKrvbIUn69BCAiA==} engines: {node: '>=10.12.0'} @@ -2601,12 +2475,6 @@ packages: resolution: {integrity: sha512-F+nKc0xW+kVbBRhFzaMgPy3KwmuNTYX1fx6+FxxoSnNgwYX6LD7AKBTWkU0MQ6IBoe7dz069CNkR673sPAgkCQ==} engines: {node: '>=14'} - '@electron/node-gyp@https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2': - resolution: {tarball: https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2} - version: 10.2.0-electron.1 - engines: {node: '>=12.13.0'} - hasBin: true - '@electron/notarize@2.5.0': resolution: {integrity: sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==} engines: {node: '>= 10.0.0'} @@ -2616,21 +2484,6 @@ packages: engines: {node: '>=12.0.0'} hasBin: true - '@electron/packager@18.4.4': - resolution: {integrity: sha512-fTUCmgL25WXTcFpM1M72VmFP8w3E4d+KNzWxmTDRpvwkfn/S206MAtM2cy0GF78KS9AwASMOUmlOIzCHeNxcGQ==} - engines: {node: '>= 16.13.0'} - hasBin: true - - '@electron/rebuild@3.7.2': - resolution: {integrity: sha512-19/KbIR/DAxbsCkiaGMXIdPnMCJLkcf8AvGnduJtWBs/CBwiAjY1apCqOLVxrXg+rtXFCngbXhBanWjxLUt1Mg==} - engines: {node: '>=12.13.0'} - hasBin: true - - '@electron/rebuild@4.0.3': - resolution: {integrity: sha512-u9vpTHRMkOYCs/1FLiSVAFZ7FbjsXK+bQuzviJZa+lG7BHZl1nz52/IcGvwa3sk80/fc3llutBkbCq10Vh8WQA==} - engines: {node: '>=22.12.0'} - hasBin: true - '@electron/rebuild@4.0.4': resolution: {integrity: sha512-Rzc39XPdk/+/wBG8MfwAHohXflep0ITUfulb6Rgz3R0NeSB1noE+E9/M/cb8ftCAiyDD9PPhLuuWgE1GaInbKg==} engines: {node: '>=22.12.0'} @@ -3397,9 +3250,6 @@ packages: '@fontsource-variable/inter@5.2.8': resolution: {integrity: sha512-kOfP2D+ykbcX/P3IFnokOhVRNoTozo5/JxhAIVYLpea/UBmCQ/YWPBfWIDuBImXX/15KH+eKh4xpEUyS2sQQGQ==} - '@gar/promisify@1.1.3': - resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} - '@hono/node-server@1.19.9': resolution: {integrity: sha512-vHL6w3ecZsky+8P5MD+eFfaGTyCeOHUIFYMGpQGbrBTSmNNoxv0if69rEZ5giu36weC5saFuznL411gRX7bJDw==} engines: {node: '>=18.14.1'} @@ -3420,14 +3270,6 @@ packages: resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} engines: {node: '>=18'} - '@inquirer/checkbox@3.0.1': - resolution: {integrity: sha512-0hm2nrToWUdD6/UHnel/UKGdk1//ke5zGUpHIvk5ZWmaKezlGxZkOJXNSWsdxO/rEqTkbB3lNC2J6nBElV2aAQ==} - engines: {node: '>=18'} - - '@inquirer/confirm@4.0.1': - resolution: {integrity: sha512-46yL28o2NJ9doViqOy0VDcoTzng7rAb6yPQKU7VDLqkmbCaH4JqK4yk4XqlzNWy9PVC5pG1ZUXPBQv+VqnYs2w==} - engines: {node: '>=18'} - '@inquirer/confirm@5.1.21': resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==} engines: {node: '>=18'} @@ -3446,58 +3288,10 @@ packages: '@types/node': optional: true - '@inquirer/core@9.2.1': - resolution: {integrity: sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==} - engines: {node: '>=18'} - - '@inquirer/editor@3.0.1': - resolution: {integrity: sha512-VA96GPFaSOVudjKFraokEEmUQg/Lub6OXvbIEZU1SDCmBzRkHGhxoFAVaF30nyiB4m5cEbDgiI2QRacXZ2hw9Q==} - engines: {node: '>=18'} - - '@inquirer/expand@3.0.1': - resolution: {integrity: sha512-ToG8d6RIbnVpbdPdiN7BCxZGiHOTomOX94C2FaT5KOHupV40tKEDozp12res6cMIfRKrXLJyexAZhWVHgbALSQ==} - engines: {node: '>=18'} - '@inquirer/figures@1.0.15': resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} engines: {node: '>=18'} - '@inquirer/input@3.0.1': - resolution: {integrity: sha512-BDuPBmpvi8eMCxqC5iacloWqv+5tQSJlUafYWUe31ow1BVXjW2a5qe3dh4X/Z25Wp22RwvcaLCc2siHobEOfzg==} - engines: {node: '>=18'} - - '@inquirer/number@2.0.1': - resolution: {integrity: sha512-QpR8jPhRjSmlr/mD2cw3IR8HRO7lSVOnqUvQa8scv1Lsr3xoAMMworcYW3J13z3ppjBFBD2ef1Ci6AE5Qn8goQ==} - engines: {node: '>=18'} - - '@inquirer/password@3.0.1': - resolution: {integrity: sha512-haoeEPUisD1NeE2IanLOiFr4wcTXGWrBOyAyPZi1FfLJuXOzNmxCJPgUrGYKVh+Y8hfGJenIfz5Wb/DkE9KkMQ==} - engines: {node: '>=18'} - - '@inquirer/prompts@6.0.1': - resolution: {integrity: sha512-yl43JD/86CIj3Mz5mvvLJqAOfIup7ncxfJ0Btnl0/v5TouVUyeEdcpknfgc+yMevS/48oH9WAkkw93m7otLb/A==} - engines: {node: '>=18'} - - '@inquirer/rawlist@3.0.1': - resolution: {integrity: sha512-VgRtFIwZInUzTiPLSfDXK5jLrnpkuSOh1ctfaoygKAdPqjcjKYmGh6sCY1pb0aGnCGsmhUxoqLDUAU0ud+lGXQ==} - engines: {node: '>=18'} - - '@inquirer/search@2.0.1': - resolution: {integrity: sha512-r5hBKZk3g5MkIzLVoSgE4evypGqtOannnB3PKTG9NRZxyFRKcfzrdxXXPcoJQsxJPzvdSU2Rn7pB7lw0GCmGAg==} - engines: {node: '>=18'} - - '@inquirer/select@3.0.1': - resolution: {integrity: sha512-lUDGUxPhdWMkN/fHy1Lk7pF3nK1fh/gqeyWXmctefhxLYxlDsc7vsPBEpxrfVGDsVdyYJsiJoD4bJ1b623cV1Q==} - engines: {node: '>=18'} - - '@inquirer/type@1.5.5': - resolution: {integrity: sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==} - engines: {node: '>=18'} - - '@inquirer/type@2.0.0': - resolution: {integrity: sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==} - engines: {node: '>=18'} - '@inquirer/type@3.0.10': resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==} engines: {node: '>=18'} @@ -3931,16 +3725,6 @@ packages: '@lezer/yaml@1.0.4': resolution: {integrity: sha512-2lrrHqxalACEbxIbsjhqGpSW8kWpUKuY6RHgnSAFZa6qK62wvnPxA8hGOwOoDbwHcOFs5M4o27mjGu+P7TvBmw==} - '@listr2/prompt-adapter-inquirer@2.0.22': - resolution: {integrity: sha512-hV36ZoY+xKL6pYOt1nPNnkciFkn89KZwqLhAFzJvYysAvL5uBQdiADZx/8bIDXIukzzwG0QlPYolgMzQUtKgpQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@inquirer/prompts': '>= 3 < 8' - - '@malept/cross-spawn-promise@1.1.1': - resolution: {integrity: sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==} - engines: {node: '>= 10'} - '@malept/cross-spawn-promise@2.0.0': resolution: {integrity: sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==} engines: {node: '>= 12.13.0'} @@ -4034,87 +3818,6 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@npmcli/agent@3.0.0': - resolution: {integrity: sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==} - engines: {node: ^18.17.0 || >=20.5.0} - - '@npmcli/fs@2.1.2': - resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - '@npmcli/fs@4.0.0': - resolution: {integrity: sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==} - engines: {node: ^18.17.0 || >=20.5.0} - - '@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 - - '@octokit/auth-token@4.0.0': - resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} - engines: {node: '>= 18'} - - '@octokit/core@5.2.2': - resolution: {integrity: sha512-/g2d4sW9nUDJOMz3mabVQvOGhVa4e/BN/Um7yca9Bb2XTzPPnfTWHWQg+IsEYO7M3Vx+EXvaM/I2pJWIMun1bg==} - engines: {node: '>= 18'} - - '@octokit/endpoint@9.0.6': - resolution: {integrity: sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==} - engines: {node: '>= 18'} - - '@octokit/graphql@7.1.1': - resolution: {integrity: sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==} - engines: {node: '>= 18'} - - '@octokit/openapi-types@12.11.0': - resolution: {integrity: sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==} - - '@octokit/openapi-types@24.2.0': - resolution: {integrity: sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==} - - '@octokit/plugin-paginate-rest@11.4.4-cjs.2': - resolution: {integrity: sha512-2dK6z8fhs8lla5PaOTgqfCGBxgAv/le+EhPs27KklPhm1bKObpu6lXzwfUEQ16ajXzqNrKMujsFyo9K2eaoISw==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': '5' - - '@octokit/plugin-request-log@4.0.1': - resolution: {integrity: sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': '5' - - '@octokit/plugin-rest-endpoint-methods@13.3.2-cjs.1': - resolution: {integrity: sha512-VUjIjOOvF2oELQmiFpWA1aOPdawpyaCUqcEBc/UOUnj3Xp6DJGrJ1+bjUIIDzdHjnFNO6q57ODMfdEZnoBkCwQ==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': ^5 - - '@octokit/plugin-retry@6.1.0': - resolution: {integrity: sha512-WrO3bvq4E1Xh1r2mT9w6SDFg01gFmP81nIG77+p/MqW1JeXXgL++6umim3t6x0Zj5pZm3rXAN+0HEjmmdhIRig==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': '5' - - '@octokit/request-error@5.1.1': - resolution: {integrity: sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==} - engines: {node: '>= 18'} - - '@octokit/request@8.4.1': - resolution: {integrity: sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==} - engines: {node: '>= 18'} - - '@octokit/rest@20.1.2': - resolution: {integrity: sha512-GmYiltypkHHtihFwPRxlaorG5R9VAHuk/vbszVoRTGXnAsY60wYLkh/E2XiFmdZmqrisw+9FaazS1i5SbdWYgA==} - engines: {node: '>= 18'} - - '@octokit/types@13.10.0': - resolution: {integrity: sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==} - - '@octokit/types@6.41.0': - resolution: {integrity: sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==} - '@open-draft/deferred-promise@2.2.0': resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} @@ -4576,10 +4279,6 @@ packages: '@pixi/colord@2.9.6': resolution: {integrity: sha512-nezytU2pw587fQstUu1AsJZDVEynjskwOL+kibwcdxsMBFqPsFFNA7xl0ii/gXuDi6M0xj3mfRJj8pBSc2jCfA==} - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - '@playwright/test@1.58.1': resolution: {integrity: sha512-6LdVIUERWxQMmUSSQi0I53GgCBYgM2RpGngCPY7hSeju+VrKjq3lvs7HpJoPbDiY5QM5EYRtRX5fvrinnMAz3w==} engines: {node: '>=18'} @@ -5527,13 +5226,6 @@ packages: '@react-navigation/routers@7.5.3': resolution: {integrity: sha512-1tJHg4KKRJuQ1/EvJxatrMef3NZXEPzwUIUZ3n1yJ2t7Q97siwRtbynRpQG9/69ebbtiZ8W3ScOZF/OmhvM4Rg==} - '@reforged/maker-appimage@5.2.0': - resolution: {integrity: sha512-5u7spsDMyMfwqAnTRsSipVgTIy+DW+wlfhceaRghCuTvyY8Sti8/tFhVKj4vb+dYTqPvS7m30Gl0InGv22J8RQ==} - engines: {node: '>=19.0.0 || ^18.11.0'} - - '@reforged/maker-types@2.1.0': - resolution: {integrity: sha512-gNMAFO6mxqGwuUov0CzXGTHUMfAawlM6v/uYrqVnKeMwmceaLBt3HtfPcuNapDSH4br6D4EZ14WuWbgefmDfOQ==} - '@remirror/core-constants@3.0.0': resolution: {integrity: sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==} @@ -5770,9 +5462,6 @@ packages: peerDependencies: solid-js: ^1.6.12 - '@spacingbat3/lss@1.2.0': - resolution: {integrity: sha512-aywhxHNb6l7COooF3m439eT/6QN8E/RSl5IVboSKthMHcp0GlZYMSoS7546rqDLmFRxTD8f1tu/NIS9vtDwYAg==} - '@stablelib/base64@1.0.1': resolution: {integrity: sha512-1bnPQqSxSuc3Ii6MhBysoWCg58j97aUjuCSZrGSmDxNqtytIi0k8utUenAwTZN4V5mXXYGsVUI9zeBqy+jBOSQ==} @@ -6369,10 +6058,6 @@ packages: '@tokenizer/token@0.3.0': resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} - '@tootallnate/once@2.0.1': - resolution: {integrity: sha512-HqmEUIGRJ5fSXchkVgR5F7qn48bDBzv0kWj/Kfu5e6uci4UlEeng4331LnBkWffb++Ei3FOVLxo8JJWMFBDMeQ==} - engines: {node: '>= 10'} - '@trpc/client@11.12.0': resolution: {integrity: sha512-zTwFKQdE99pvNm7kXFdHo5xIQpGqpQJHtqVkT9o+i8h/0fbDOUBEEbFVICiMsNA+GiXskoaDRX2l+z6ir+Ug3w==} peerDependencies: @@ -6410,9 +6095,6 @@ packages: '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} - '@types/appdmg@0.5.5': - resolution: {integrity: sha512-G+n6DgZTZFOteITE30LnWj+HRVIGr7wMlAiLWOO02uJFWVEitaPU9JVXm9wJokkgshBawb2O1OykdcsmkkZfgg==} - '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} @@ -6521,18 +6203,12 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/mute-stream@0.0.4': - resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} - '@types/node@16.9.1': resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==} '@types/node@20.19.41': resolution: {integrity: sha512-ECymXOukMnOoVkC2bb1Vc/w/836DXncOg5m8Xj1RH7xSHZJWNYY6Zh7EH477vcnD5egKNNfy2RpNOmuChhFPgQ==} - '@types/node@22.19.8': - resolution: {integrity: sha512-ebO/Yl+EAvVe8DnMfi+iaAyIqYdK0q/q0y0rw82INWEKJOBe6b/P3YWE8NW7oOlF/nXFNrHwhARrN/hdgDkraA==} - '@types/node@24.12.0': resolution: {integrity: sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==} @@ -6590,9 +6266,6 @@ packages: '@types/validate-npm-package-name@4.0.2': resolution: {integrity: sha512-lrpDziQipxCEeK5kWxvljWYhUvOiB2A9izZd9B2AFarYAkqZshb4lPbRs7zKEic6eGtH8V/2qJW+dPp9OtF6bw==} - '@types/wrap-ansi@3.0.0': - resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} - '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} @@ -6740,9 +6413,6 @@ packages: '@vitest/utils@4.1.8': resolution: {integrity: sha512-uOJamYALNhfJ6iolExyQM40yIQwDqYnkKtQ5VCiSe17E33H0aQ/u+1GlRuz4LZBk6Mm3sg90G9hEbmEt37C1Zg==} - '@vscode/sudo-prompt@9.3.2': - resolution: {integrity: sha512-gcXoCN00METUNFeQOFJ+C9xUI0DKB+0EGMVg7wbVYRHBw2Eq3fKisDZOkRdOz3kqXRKOENMfShPOmypw1/8nOw==} - '@webassemblyjs/ast@1.14.1': resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} @@ -6825,13 +6495,6 @@ packages: '@xtuc/long@4.2.2': resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - - abbrev@3.0.1: - resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} - engines: {node: ^18.17.0 || >=20.5.0} - abbrev@4.0.0: resolution: {integrity: sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==} engines: {node: ^20.17.0 || >=22.9.0} @@ -6863,22 +6526,10 @@ packages: resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} engines: {node: '>=12.0'} - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - agent-base@7.1.4: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} - agentkeepalive@4.6.0: - resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} - engines: {node: '>= 8.0.0'} - - aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - ajv-draft-04@1.0.0: resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} peerDependencies: @@ -6921,10 +6572,6 @@ packages: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} - ansi-escapes@5.0.0: - resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} - engines: {node: '>=12'} - ansi-escapes@7.2.0: resolution: {integrity: sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==} engines: {node: '>=18'} @@ -6978,12 +6625,6 @@ packages: dmg-builder: 26.15.3 electron-builder-squirrel-windows: 26.15.3 - appdmg@0.6.6: - resolution: {integrity: sha512-GRmFKlCG+PWbcYF4LUNonTYmy0GjguDy6Jh9WP8mpd0T6j80XIJyXBiWlD0U+MLNhqV9Nhx49Gl9GpVToulpLg==} - engines: {node: '>=8.5'} - os: [darwin] - hasBin: true - arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} @@ -7035,9 +6676,6 @@ packages: async-limiter@1.0.1: resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} - async@1.5.2: - resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==} - async@3.2.6: resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} @@ -7051,10 +6689,6 @@ packages: atomically@2.1.0: resolution: {integrity: sha512-+gDffFXRW6sl/HCwbta7zK4uNqbPjv4YJEAdz7Vu+FLQHe77eZ4bvbJGi4hE0QPeJlMYMA3piXEr1UL3dAwx7Q==} - author-regex@1.0.0: - resolution: {integrity: sha512-KbWgR8wOYRAPekEmMXrYYdc7BRyhn2Ftk7KWfMUnQ43hFdojWEFRxhhRUm3/OFEdPa1r0KAvTTg9YQK57xTe0g==} - engines: {node: '>=0.8'} - available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} @@ -7159,9 +6793,6 @@ packages: barcode-detector@3.1.2: resolution: {integrity: sha512-Q5kjXpVH5I3ItykNzbWmfWnNryFN1ZTWp10k9/PKJuS0RnoKR7jTrHEJODR4fn04bRomq7TJwie/Dr9fj/GoGQ==} - base32-encode@1.2.0: - resolution: {integrity: sha512-cHFU8XeRyx0GgmoWi5qHMCVRiqU6J3MHWxVgun7jggCBUpVzm1Ir7M9dYr2whjSNc3tFeXfQ/oZjQu/4u55h9A==} - base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -7169,9 +6800,6 @@ packages: resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} hasBin: true - before-after-hook@2.2.3: - resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} - better-opn@3.0.2: resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} engines: {node: '>=12.0.0'} @@ -7211,12 +6839,6 @@ packages: resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - bottleneck@2.19.5: - resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} - - bplist-creator@0.0.8: - resolution: {integrity: sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA==} - bplist-creator@0.1.0: resolution: {integrity: sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==} @@ -7301,14 +6923,6 @@ packages: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - cacache@16.1.3: - resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - cacache@19.0.1: - resolution: {integrity: sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==} - engines: {node: ^18.17.0 || >=20.5.0} - cacheable-lookup@5.0.4: resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} engines: {node: '>=10.6.0'} @@ -7389,9 +7003,6 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - check-error@2.1.3: resolution: {integrity: sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==} engines: {node: '>= 16'} @@ -7411,10 +7022,6 @@ packages: chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - chownr@3.0.0: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} @@ -7455,22 +7062,10 @@ packages: classnames@2.5.1: resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} - clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - cli-cursor@2.1.0: resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} engines: {node: '>=4'} - cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - - cli-cursor@4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - cli-cursor@5.0.0: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} @@ -7479,10 +7074,6 @@ packages: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} - cli-truncate@3.1.0: - resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - cli-truncate@4.0.0: resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} engines: {node: '>=18'} @@ -7494,9 +7085,6 @@ packages: client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -7521,9 +7109,6 @@ packages: code-block-writer@13.0.3: resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==} - color-convert@0.5.3: - resolution: {integrity: sha512-RwBeO/B/vZR3dfKL1ye/vx8MHZ40ugzpyfeVG5GsiuGnrlMWe2o8wxBbLCpw9CsxV+wHuzYlCiWnybrIA0ling==} - color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -7697,18 +7282,10 @@ packages: cross-fetch@3.2.0: resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} - cross-spawn@6.0.6: - resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==} - engines: {node: '>=4.8'} - cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - cross-zip@4.0.1: - resolution: {integrity: sha512-n63i0lZ0rvQ6FXiGQ+/JFCKAUyPFhLQYJIqKaa+tSJtfKeULF/IDNDAbdnSIxgS4NTuw2b0+lj8LzfITuq+ZxQ==} - engines: {node: '>=12.10'} - crypto-random-string@2.0.0: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} @@ -7909,9 +7486,6 @@ packages: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} - deprecation@2.3.1: - resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} - dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -8095,9 +7669,6 @@ packages: sqlite3: optional: true - ds-store@0.1.6: - resolution: {integrity: sha512-kY21M6Lz+76OS3bnCzjdsJSF7LBpLYGCVfavW8TgQD2XkcqIZ86W0y9qUDZu6fp7SIZzqosMDW2zi7zVFfv4hw==} - dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} @@ -8137,27 +7708,6 @@ packages: engines: {node: '>=14.0.0'} hasBin: true - electron-installer-common@0.10.4: - resolution: {integrity: sha512-8gMNPXfAqUE5CfXg8RL0vXpLE9HAaPkgLXVoHE3BMUzogMWenf4LmwQ27BdCUrEhkjrKl+igs2IHJibclR3z3Q==} - engines: {node: '>= 10.0.0'} - - electron-installer-debian@3.2.0: - resolution: {integrity: sha512-58ZrlJ1HQY80VucsEIG9tQ//HrTlG6sfofA3nRGr6TmkX661uJyu4cMPPh6kXW+aHdq/7+q25KyQhDrXvRL7jw==} - engines: {node: '>= 10.0.0'} - os: [darwin, linux] - hasBin: true - - electron-installer-dmg@5.0.1: - resolution: {integrity: sha512-qOa1aAQdX57C+vzhDk3549dd/PRlNL4F8y736MTD1a43qptD+PvHY97Bo9gSf+OZ8iUWE7BrYSpk/FgLUe40EA==} - engines: {node: '>= 16'} - hasBin: true - - electron-installer-redhat@3.4.0: - resolution: {integrity: sha512-gEISr3U32Sgtj+fjxUAlSDo3wyGGq6OBx7rF5UdpIgbnpUvMN4W5uYb0ThpnAZ42VEJh/3aODQXHbFS4f5J3Iw==} - engines: {node: '>= 10.0.0'} - os: [darwin, linux] - hasBin: true - electron-log@5.4.3: resolution: {integrity: sha512-sOUsM3LjZdugatazSQ/XTyNcw8dfvH1SYhXWiJyfYodAAKOZdHs0txPiLDXFzOZbhXgAgshQkshH2ccq0feyLQ==} engines: {node: '>= 14'} @@ -8197,9 +7747,6 @@ packages: resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} engines: {node: '>=14'} - encode-utf8@1.0.3: - resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} - encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} @@ -8384,10 +7931,6 @@ packages: exec-async@2.2.0: resolution: {integrity: sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==} - execa@1.0.0: - resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} - engines: {node: '>=6'} - execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -8699,10 +8242,6 @@ packages: extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - external-editor@3.1.0: - 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'} @@ -8783,14 +8322,6 @@ packages: filelist@1.0.6: resolution: {integrity: sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==} - filename-reserved-regex@2.0.0: - resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==} - engines: {node: '>=4'} - - filenamify@4.3.0: - resolution: {integrity: sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==} - engines: {node: '>=8'} - fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -8807,34 +8338,19 @@ packages: resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} engines: {node: '>= 18.0.0'} - find-up@2.1.0: - resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} - engines: {node: '>=4'} - find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - fix-dts-default-cjs-exports@1.0.1: resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} flatted@3.4.2: resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} - flora-colossus@2.0.0: - resolution: {integrity: sha512-dz4HxH6pOvbUzZpZ/yXhafjbR2I8cenK5xL0KtBFb7U2ADsR+OwXifnxZjij/pZWF775uSCMzWVd+jDik2H2IA==} - engines: {node: '>= 12'} - flow-enums-runtime@0.0.6: resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} - fmix@0.1.0: - resolution: {integrity: sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==} - follow-redirects@1.15.11: resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} engines: {node: '>=4.0'} @@ -8921,22 +8437,6 @@ packages: resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} engines: {node: '>=10'} - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - - fs-minipass@3.0.3: - resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - fs-temp@1.2.1: - resolution: {integrity: sha512-okTwLB7/Qsq82G6iN5zZJFsOfZtx2/pqrA7Hk/9fvy+c+eJS9CvgGXT2uNxwnI14BDY9L/jQPkaBgSvlKfSW9w==} - - fs-xattr@0.3.1: - resolution: {integrity: sha512-UVqkrEW0GfDabw4C3HOrFlxKfx0eeigfRne69FxSBdHIP8Qt5Sq6Pu3RM9KmMlkygtC4pPKkj5CiPO5USnj2GA==} - engines: {node: '>=8.6.0'} - os: ['!win32'] - fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -8963,20 +8463,6 @@ packages: fzf@0.5.2: resolution: {integrity: sha512-Tt4kuxLXFKHy8KT40zwsUPUkg1CrsgY25FxA2U/j/0WgEDCk3ddc/zLTCCcbSHX9FcKtLuVaDGtGE/STWC+j3Q==} - galactus@1.0.0: - resolution: {integrity: sha512-R1fam6D4CyKQGNlvJne4dkNF+PvUUl7TAJInvTGa9fti9qAv95quQz29GXapA4d8Ec266mJJxFVh82M4GIIGDQ==} - engines: {node: '>= 12'} - - gar@1.0.4: - resolution: {integrity: sha512-w4n9cPWyP7aHxKxYHFQMegj7WIAsL/YX/C4Bs5Rr8s1H9M1rNtRWRsw+ovYMkXDQ5S4ZbYHsHAPmevPjPgw44w==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - - generate-function@2.3.1: - resolution: {integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==} - - generate-object-property@1.2.0: - resolution: {integrity: sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==} - generator-function@2.0.1: resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} engines: {node: '>= 0.4'} @@ -8993,10 +8479,6 @@ packages: resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} engines: {node: '>=18'} - get-folder-size@2.0.1: - resolution: {integrity: sha512-+CEb+GDCM7tkOS2wdMKTn9vU7DgnKUTuDlehkNJKNSovdCOVxs14OfKCk4cvSaR3za4gj+OBdl9opPN9xrJ0zA==} - hasBin: true - get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -9009,10 +8491,6 @@ packages: resolution: {integrity: sha512-PKsK2FSrQCyxcGHsGrLDcK0lx+0Ke+6e8KFFozA9/fIQLhQzPaRvJFdcz7+Axg3jUH/Mq+NI4xa5u/UT2tQskA==} engines: {node: '>=14.16'} - get-package-info@1.0.0: - resolution: {integrity: sha512-SCbprXGAPdIhKAXiG+Mk6yeoFH61JlYunqdFQFHDtLjJlDjFf6x07dsS8acO+xWt52jpdVo49AlVDnUVK1sDNw==} - engines: {node: '>= 4.0'} - get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} @@ -9021,10 +8499,6 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} - get-stream@4.1.0: - resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} - engines: {node: '>=6'} - get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} @@ -9080,11 +8554,6 @@ packages: glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.5.0: - resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - hasBin: true - glob@11.1.0: resolution: {integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==} engines: {node: 20 || >=22} @@ -9103,11 +8572,6 @@ packages: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - global-agent@3.0.0: resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} engines: {node: '>=10.0'} @@ -9116,10 +8580,6 @@ packages: resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} engines: {node: '>=4'} - global-dirs@3.0.1: - resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} - engines: {node: '>=10'} - globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} @@ -9223,9 +8683,6 @@ packages: resolution: {integrity: sha512-l7qMiNee7t82bH3SeyUCt9UF15EVmaBvsppY2zQtrbIhl/yzBTny+YUxsVjSjQ6gaqaeVtZmGocom8TzBlA4Yw==} engines: {node: '>=16.9.0'} - 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'} @@ -9254,10 +8711,6 @@ packages: resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} - 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'} @@ -9266,10 +8719,6 @@ packages: 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'} - https-proxy-agent@7.0.6: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} @@ -9286,9 +8735,6 @@ packages: resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} engines: {node: '>=18.18.0'} - humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - humps@2.0.1: resolution: {integrity: sha512-E0eIbrFWUhwfXJmsbdjRQFQPrl5pTEoKlz163j1mTqqUnU9PgR4AgB8AIITzuB3vLBdxZXyZ9TDIrwB2OASz4g==} @@ -9304,10 +8750,6 @@ packages: hyphenate-style-name@1.1.0: resolution: {integrity: sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==} - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} @@ -9330,11 +8772,6 @@ packages: image-q@4.0.0: resolution: {integrity: sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==} - image-size@0.7.5: - resolution: {integrity: sha512-Hiyv+mXHfFEP7LzUL/llg9RwFxxY+o9N3JVLIeG5E7iFIFAalxvRU9UZthBdYDEVnzHMgjnKJPPpay5BWf1g9g==} - engines: {node: '>=6.9.0'} - hasBin: true - image-size@1.2.1: resolution: {integrity: sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==} engines: {node: '>=16.x'} @@ -9347,10 +8784,6 @@ packages: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} - imul@1.0.1: - resolution: {integrity: sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==} - engines: {node: '>=0.10.0'} - imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -9359,9 +8792,6 @@ packages: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} - infer-owner@1.0.4: - resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} - inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. @@ -9372,10 +8802,6 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - ini@2.0.0: - resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} - engines: {node: '>=10'} - inline-style-parser@0.2.7: resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} @@ -9386,10 +8812,6 @@ packages: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} - interpret@3.1.1: - resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} - engines: {node: '>=10.13.0'} - invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} @@ -9400,10 +8822,6 @@ packages: resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} engines: {node: '>= 12'} - ip-address@10.2.0: - resolution: {integrity: sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==} - engines: {node: '>= 12'} - ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -9485,23 +8903,10 @@ packages: engines: {node: '>=14.16'} hasBin: true - 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'} - is-lambda@1.0.1: - resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} - - is-my-ip-valid@1.0.1: - resolution: {integrity: sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg==} - - is-my-json-valid@2.20.6: - resolution: {integrity: sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw==} - is-nan@1.3.2: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} engines: {node: '>= 0.4'} @@ -9531,9 +8936,6 @@ packages: is-promise@4.0.0: resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} - is-property@1.0.2: - resolution: {integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==} - is-regex@1.2.1: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} @@ -9545,10 +8947,6 @@ packages: is-ssh@1.4.1: resolution: {integrity: sha512-JNeu1wQsHjyHgn9NcWTaXq6zWSR6hqE0++zhfZlkFBbScNkyvxCdeV8sRkSBaeLKxmbpR21brail63ACNxJ0Tg==} - is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -9565,10 +8963,6 @@ 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'} @@ -9638,9 +9032,6 @@ packages: resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jackspeak@4.1.1: resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} engines: {node: 20 || >=22} @@ -9788,18 +9179,10 @@ packages: jsonfile@6.2.0: resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} - jsonpointer@5.0.1: - resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} - engines: {node: '>=0.10.0'} - jsonwebtoken@9.0.3: resolution: {integrity: sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==} engines: {node: '>=12', npm: '>=6'} - junk@3.1.0: - resolution: {integrity: sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==} - engines: {node: '>=8'} - jwa@2.0.1: resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} @@ -10076,18 +9459,10 @@ packages: engines: {node: '>=18.12.0'} hasBin: true - listr2@7.0.2: - resolution: {integrity: sha512-rJysbR9GKIalhTbVL2tYbF2hVyDnrf7pFUZBwjPaMIdadYHmeT+EVi/Bu3qd7ETQPahTotg2WRCatXwRBW554g==} - engines: {node: '>=16.0.0'} - listr2@8.3.3: resolution: {integrity: sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==} engines: {node: '>=18.0.0'} - load-json-file@2.0.0: - resolution: {integrity: sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==} - engines: {node: '>=4'} - load-tsconfig@0.2.5: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -10096,28 +9471,16 @@ packages: resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} engines: {node: '>=6.11.5'} - locate-path@2.0.0: - resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} - engines: {node: '>=4'} - locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} lodash.escaperegexp@4.1.2: resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==} - 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. - lodash.includes@4.3.0: resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} @@ -10153,18 +9516,10 @@ packages: resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} engines: {node: '>=4'} - 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'} - log-update@5.0.1: - resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - log-update@6.1.0: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} @@ -10203,10 +9558,6 @@ 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'} - lru_map@0.4.1: resolution: {integrity: sha512-I+lBvqMMFfqaV8CJCISjI3wbjmwVu/VyOoU7+qtu9d7ioW5klMgsTTiUOUp+DJvfTTzKXoPbyC6YfgkNcyPSOg==} @@ -10224,10 +9575,6 @@ packages: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true - macos-alias@0.2.12: - resolution: {integrity: sha512-yiLHa7cfJcGRFq4FrR4tMlpNHb4Vy4mWnpajlSSIFM5k4Lv8/7BbbDLzCAVogWNl0LlLhizRp1drXv0hK9h0Yw==} - os: [darwin] - magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} @@ -10235,21 +9582,9 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} - 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@14.0.3: - resolution: {integrity: sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==} - engines: {node: ^18.17.0 || >=20.5.0} - makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - map-age-cleaner@0.1.3: - resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} - engines: {node: '>=6'} - markdown-it@14.1.0: resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} hasBin: true @@ -10332,10 +9667,6 @@ packages: resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} - mem@4.3.0: - resolution: {integrity: sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==} - engines: {node: '>=6'} - memfs@4.56.10: resolution: {integrity: sha512-eLvzyrwqLHnLYalJP7YZ3wBe79MXktMdfQbvMrVD80K+NhrIukCVBvgP30zTJYEEDh9hZ/ep9z0KOdD7FSHo7w==} peerDependencies: @@ -10589,50 +9920,10 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass-collect@1.0.2: - resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} - engines: {node: '>= 8'} - - minipass-collect@2.0.1: - resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} - engines: {node: '>=16 || 14 >=14.17'} - - minipass-fetch@2.1.2: - resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - minipass-fetch@4.0.1: - resolution: {integrity: sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ==} - engines: {node: ^18.17.0 || >=20.5.0} - - minipass-flush@1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} - engines: {node: '>= 8'} - - minipass-flush@1.0.7: - resolution: {integrity: sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA==} - engines: {node: '>= 8'} - - minipass-pipeline@1.2.4: - resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} - engines: {node: '>=8'} - - minipass-sized@1.0.3: - resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} - engines: {node: '>=8'} - - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - minipass@4.2.8: resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} engines: {node: '>=8'} - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} @@ -10641,10 +9932,6 @@ packages: resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} engines: {node: '>=16 || 14 >=14.17'} - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - minizlib@3.1.0: resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} engines: {node: '>= 18'} @@ -10695,13 +9982,6 @@ packages: typescript: optional: true - murmur-32@0.2.0: - resolution: {integrity: sha512-ZkcWZudylwF+ir3Ld1n7gL6bI2mQAzXvSobPwVtu8aYi2sbXeipeSkdcanRLzIofLcM5F53lGaKm2dk7orBi7Q==} - - mute-stream@1.0.0: - resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - mute-stream@2.0.0: resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} engines: {node: ^18.17.0 || >=20.5.0} @@ -10709,9 +9989,6 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nan@2.25.0: - resolution: {integrity: sha512-0M90Ag7Xn5KMLLZ7zliPWP3rT90P6PN+IzVFS0VqmnPktBk3700xUVv8Ikm9EUaUE5SDWdp/BIxdENzVznpm1g==} - nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -10744,9 +10021,6 @@ packages: nested-error-stacks@2.0.1: resolution: {integrity: sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==} - nice-try@1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} @@ -10790,11 +10064,6 @@ packages: resolution: {integrity: sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==} engines: {node: '>= 6.13.0'} - node-gyp@11.5.0: - resolution: {integrity: sha512-ra7Kvlhxn5V9Slyus0ygMa2h+UqExPqUIkfk7Pc8QTLT956JLSy51uWFwHtIYy0vI8cB4BDhc/S03+880My/LQ==} - engines: {node: ^18.17.0 || >=20.5.0} - hasBin: true - node-gyp@12.4.0: resolution: {integrity: sha512-OMcPNvqTCFUnNaBlmdgq+lfNqY7gTiSmNRDjY3uAXRyudeKZEZxu3CLtjMQrx4zZxCX2b/mpNqTtwuCJgXhHkw==} engines: {node: ^20.17.0 || >=22.9.0} @@ -10812,24 +10081,11 @@ packages: node-releases@2.0.27: resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} - 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@8.1.0: - resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} - engines: {node: ^18.17.0 || >=20.5.0} - hasBin: true - nopt@9.0.0: resolution: {integrity: sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==} engines: {node: ^20.17.0 || >=22.9.0} hasBin: true - normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -10842,10 +10098,6 @@ packages: resolution: {integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==} engines: {node: ^16.14.0 || >=18.0.0} - npm-run-path@2.0.2: - resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} - engines: {node: '>=4'} - npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -10968,10 +10220,6 @@ packages: resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==} engines: {node: '>=6'} - 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'} @@ -10979,10 +10227,6 @@ packages: orderedmap@2.1.1: resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==} - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - outvariant@1.4.3: resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} @@ -10997,22 +10241,6 @@ packages: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} engines: {node: '>=8'} - p-defer@1.0.0: - resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} - engines: {node: '>=4'} - - p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} - - p-is-promise@2.1.0: - resolution: {integrity: sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==} - engines: {node: '>=6'} - - p-limit@1.3.0: - resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} - engines: {node: '>=4'} - p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -11021,30 +10249,14 @@ packages: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - p-locate@2.0.0: - resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} - engines: {node: '>=4'} - p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - p-map@7.0.4: resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==} engines: {node: '>=18'} - p-try@1.0.0: - resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} - engines: {node: '>=4'} - p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -11059,10 +10271,6 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} - parse-author@2.0.0: - resolution: {integrity: sha512-yx5DfvkN8JsHL2xk2Os9oTia467qnvRgey4ahSm2X8epehBLx/gWLcy5KI+Y36ful5DzGbCS6RazqZGgy1gHNw==} - engines: {node: '>=0.10.0'} - parse-bmfont-ascii@1.0.6: resolution: {integrity: sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==} @@ -11072,16 +10280,9 @@ packages: parse-bmfont-xml@1.1.6: resolution: {integrity: sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==} - parse-color@1.0.0: - resolution: {integrity: sha512-fuDHYgFHJGbpGMgw9skY/bj3HL/Jrn4l/5rSspy00DoT4RyLnDcRvPxdZ+r6OFwIsgAuhDh4I09tAId4mI12bw==} - parse-entities@4.0.2: resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} - parse-json@2.2.0: - resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==} - engines: {node: '>=0.10.0'} - parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -11129,10 +10330,6 @@ packages: path-dirname@1.0.2: resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} - path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -11141,10 +10338,6 @@ packages: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -11156,10 +10349,6 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - path-scurry@2.0.1: resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} engines: {node: 20 || >=22} @@ -11174,10 +10363,6 @@ packages: path-to-regexp@8.3.0: resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==} - path-type@2.0.0: - resolution: {integrity: sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==} - engines: {node: '>=4'} - path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -11196,10 +10381,6 @@ packages: resolution: {integrity: sha512-eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw==} engines: {node: '>=12', npm: '>=6'} - pe-library@1.0.1: - resolution: {integrity: sha512-nh39Mo1eGWmZS7y+mK/dQIqg7S1lp38DpRxkyoHf0ZcUs/HDc+yyTjuOtTvSMZHmfSLuSQaX945u05Y2Q6UWZg==} - engines: {node: '>=14', npm: '>=7'} - peek-readable@4.1.0: resolution: {integrity: sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==} engines: {node: '>=8'} @@ -11450,18 +10631,10 @@ packages: resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} engines: {node: '>=18'} - proc-log@2.0.1: - resolution: {integrity: sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - proc-log@4.2.0: resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - proc-log@5.0.0: - resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==} - engines: {node: ^18.17.0 || >=20.5.0} - proc-log@6.1.0: resolution: {integrity: sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==} engines: {node: ^20.17.0 || >=22.9.0} @@ -11477,14 +10650,6 @@ packages: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} - promise-inflight@1.0.1: - resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} - peerDependencies: - bluebird: '*' - peerDependenciesMeta: - bluebird: - optional: true - promise-retry@2.0.1: resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} engines: {node: '>=10'} @@ -11640,9 +10805,6 @@ packages: '@types/react-dom': optional: true - random-path@0.1.2: - resolution: {integrity: sha512-4jY0yoEaQ5v9StCl5kZbNIQlg1QheIDBrdkDn53EynpPb9FgO6//p3X/tgMnrC45XN6QZCzU1Xz/+pSSsJBpRw==} - randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} @@ -11872,14 +11034,6 @@ packages: read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - read-pkg-up@2.0.0: - resolution: {integrity: sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==} - engines: {node: '>=4'} - - read-pkg@2.0.0: - resolution: {integrity: sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==} - engines: {node: '>=4'} - readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} @@ -11911,10 +11065,6 @@ packages: resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} engines: {node: '>= 4'} - rechoir@0.8.0: - resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} - engines: {node: '>= 10.13.0'} - redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -11970,10 +11120,6 @@ packages: remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - repeat-string@1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -11990,10 +11136,6 @@ packages: resolution: {integrity: sha512-vHjcY2MlAITJhC0eRD/Vv8Vlgmu9Sd3LX9zZvtGzU5ZImdTN3+d6e/4mnTyV8vEbyf1sgNIrWxhWlrys52OkEA==} engines: {node: '>=12', npm: '>=6'} - resedit@2.0.3: - resolution: {integrity: sha512-oTeemxwoMuxxTYxXUwjkrOPfngTQehlv0/HoYFNkB4uzsP1Un1A9nI8JQKGOFkxpqkC7qkMs0lUsGrvUlbLNUA==} - engines: {node: '>=14', npm: '>=7'} - reselect@5.1.1: resolution: {integrity: sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==} @@ -12037,14 +11179,6 @@ packages: resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} engines: {node: '>=4'} - restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - - restore-cursor@4.0.0: - resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - restore-cursor@5.1.0: resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} engines: {node: '>=18'} @@ -12225,18 +11359,10 @@ packages: shallowequal@1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} - shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} - shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} @@ -12327,10 +11453,6 @@ packages: resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} engines: {node: '>=8.0.0'} - smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - smol-toml@1.6.0: resolution: {integrity: sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==} engines: {node: '>= 18'} @@ -12338,22 +11460,6 @@ packages: snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} - socks-proxy-agent@7.0.0: - resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} - engines: {node: '>= 10'} - - socks-proxy-agent@8.0.5: - resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} - engines: {node: '>= 14'} - - socks@2.8.7: - resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} - engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - - socks@2.8.9: - resolution: {integrity: sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw==} - engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - solid-js@1.9.13: resolution: {integrity: sha512-6hJeJMOcEX8ktqjpDoJZEmld3ijvcvWBDtiXBm7f4332SiFN66QeAQI1REQshvyUoISsSeJ4PHDauKYbwao9JQ==} @@ -12385,18 +11491,6 @@ packages: space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - - spdx-exceptions@2.5.0: - resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} - - spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - - spdx-license-ids@3.0.22: - resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==} - split-on-first@1.1.0: resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} engines: {node: '>=6'} @@ -12407,14 +11501,6 @@ packages: sprintf-js@1.1.3: resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - ssri@12.0.0: - resolution: {integrity: sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==} - engines: {node: ^18.17.0 || >=20.5.0} - - ssri@9.0.1: - resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} @@ -12519,10 +11605,6 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} - strip-eof@1.0.0: - resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} - engines: {node: '>=0.10.0'} - strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} @@ -12551,10 +11633,6 @@ packages: resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==} engines: {node: '>=14.16'} - strip-outer@1.0.1: - resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} - engines: {node: '>=0.10.0'} - strtok3@6.3.0: resolution: {integrity: sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==} engines: {node: '>=10'} @@ -12661,11 +11739,6 @@ packages: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} - deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - tar@7.5.7: resolution: {integrity: sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==} engines: {node: '>=18'} @@ -12730,9 +11803,6 @@ packages: tiny-async-pool@1.3.0: resolution: {integrity: sha512-01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA==} - tiny-each-async@2.0.3: - resolution: {integrity: sha512-5ROII7nElnAirvFn8g7H7MtpfV1daMcyfTGQwsn/x2VtyV+VPiO5CjReCJtWLvoKTDEDmZocf3cNPraiMnBXLA==} - tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} @@ -12804,10 +11874,6 @@ packages: 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.7: resolution: {integrity: sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==} engines: {node: '>=14.14'} @@ -12815,13 +11881,6 @@ packages: tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - tn1150@0.1.0: - resolution: {integrity: sha512-DbplOfQFkqG5IHcDyyrs/lkvSr3mPUVsFf/RbDppOshs22yTPnSJWEe6FkYd1txAwU/zcnR905ar2fi4kwF29w==} - engines: {node: '>=0.12'} - - to-data-view@1.1.0: - resolution: {integrity: sha512-1eAdufMg6mwgmlojAx3QeMnzB/BTVp7Tbndi3U7ftcT2zCZadjxkkmLmd97zmaxWi+sgGcgWrokmpEoy0Dn0vQ==} - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -12871,10 +11930,6 @@ packages: trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - trim-repeated@1.0.0: - resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} - engines: {node: '>=0.10.0'} - trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} @@ -13006,10 +12061,6 @@ packages: resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} engines: {node: '>=8'} - type-fest@1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} - engines: {node: '>=10'} - type-fest@3.13.1: resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} engines: {node: '>=14.16'} @@ -13030,11 +12081,6 @@ packages: resolution: {integrity: sha512-OVSqe63hAvk+aaCIsdmnwjvUruhY6x5yRLiux583iTzDoBKJ247ZVj30oYqvNFD31TzzCPx8P0SNs9KJhXYZnA==} hasBin: true - typescript@5.4.5: - resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} - engines: {node: '>=14.17'} - hasBin: true - typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} @@ -13095,22 +12141,6 @@ packages: unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - 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-filename@4.0.0: - resolution: {integrity: sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==} - engines: {node: ^18.17.0 || >=20.5.0} - - 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-slug@5.0.0: - resolution: {integrity: sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==} - engines: {node: ^18.17.0 || >=20.5.0} - unique-string@2.0.0: resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} engines: {node: '>=8'} @@ -13130,9 +12160,6 @@ packages: unist-util-visit@5.1.0: resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} - universal-user-agent@6.0.1: - resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} - universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} @@ -13141,10 +12168,6 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - unorm@1.6.0: - resolution: {integrity: sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==} - engines: {node: '>= 0.4.0'} - unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} @@ -13199,10 +12222,6 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - username@5.1.0: - resolution: {integrity: sha512-PCKbdWw85JsYMvmCv5GH3kXmM66rCd9m1hBEDutPNv94b/pqCMT4NtcKyeWYvLFiE8b+ha1Jdl8XAaUdPn5QTg==} - engines: {node: '>=8'} - utf8-byte-length@1.0.5: resolution: {integrity: sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==} @@ -13236,9 +12255,6 @@ packages: resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} engines: {node: '>=10.12.0'} - validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - validate-npm-package-name@5.0.1: resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -13581,10 +12597,6 @@ packages: resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} engines: {node: '>= 0.4'} - which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -13613,10 +12625,6 @@ packages: wonka@6.3.5: resolution: {integrity: sha512-SSil+ecw6B4/Dm7Pf2sAshKQ5hWFvfyGlfPbEd6A14dOH6VDjrmbY86u6nZvy9omGwwIPFR8V41+of1EezgoUw==} - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -13713,10 +12721,6 @@ packages: xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -13736,18 +12740,10 @@ packages: engines: {node: '>= 14.6'} hasBin: true - yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} - yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} @@ -14970,440 +13966,77 @@ snapshots: dependencies: '@noble/ciphers': 1.3.0 - '@electron-forge/cli@7.11.1(encoding@0.1.13)(esbuild@0.27.2)': + '@electron/asar@3.4.1': dependencies: - '@electron-forge/core': 7.11.1(encoding@0.1.13)(esbuild@0.27.2) - '@electron-forge/core-utils': 7.11.1 - '@electron-forge/shared-types': 7.11.1 - '@electron/get': 3.1.0 - '@inquirer/prompts': 6.0.1 - '@listr2/prompt-adapter-inquirer': 2.0.22(@inquirer/prompts@6.0.1) - chalk: 4.1.2 - commander: 11.1.0 - debug: 4.4.3 - fs-extra: 10.1.0 - listr2: 7.0.2 - log-symbols: 4.1.0 - semver: 7.7.3 - transitivePeerDependencies: - - '@swc/core' - - bluebird - - encoding - - esbuild - - supports-color - - uglify-js - - webpack-cli + commander: 5.1.0 + glob: 7.2.3 + minimatch: 3.1.2 - '@electron-forge/core-utils@7.11.1': + '@electron/fuses@1.8.0': dependencies: - '@electron-forge/shared-types': 7.11.1 - '@electron/rebuild': 3.7.2 - '@malept/cross-spawn-promise': 2.0.0 chalk: 4.1.2 + fs-extra: 9.1.0 + minimist: 1.2.8 + + '@electron/get@2.0.3': + dependencies: debug: 4.4.3 - find-up: 5.0.0 - fs-extra: 10.1.0 - log-symbols: 4.1.0 - parse-author: 2.0.0 - semver: 7.7.3 + 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: - - bluebird - supports-color - '@electron-forge/core@7.11.1(encoding@0.1.13)(esbuild@0.27.2)': - dependencies: - '@electron-forge/core-utils': 7.11.1 - '@electron-forge/maker-base': 7.11.1 - '@electron-forge/plugin-base': 7.11.1 - '@electron-forge/publisher-base': 7.11.1 - '@electron-forge/shared-types': 7.11.1 - '@electron-forge/template-base': 7.11.1 - '@electron-forge/template-vite': 7.11.1 - '@electron-forge/template-vite-typescript': 7.11.1 - '@electron-forge/template-webpack': 7.11.1 - '@electron-forge/template-webpack-typescript': 7.11.1(esbuild@0.27.2) - '@electron-forge/tracer': 7.11.1 - '@electron/get': 3.1.0 - '@electron/packager': 18.4.4 - '@electron/rebuild': 3.7.2 - '@malept/cross-spawn-promise': 2.0.0 - '@vscode/sudo-prompt': 9.3.2 - chalk: 4.1.2 + '@electron/get@3.1.0': + dependencies: debug: 4.4.3 - fast-glob: 3.3.3 - filenamify: 4.3.0 - find-up: 5.0.0 - fs-extra: 10.1.0 - global-dirs: 3.0.1 + env-paths: 2.2.1 + fs-extra: 8.1.0 got: 11.8.6 - interpret: 3.1.1 - jiti: 2.6.1 - listr2: 7.0.2 - lodash: 4.17.23 - log-symbols: 4.1.0 - node-fetch: 2.7.0(encoding@0.1.13) - rechoir: 0.8.0 - semver: 7.7.3 - source-map-support: 0.5.21 - username: 5.1.0 + progress: 2.0.3 + semver: 6.3.1 + sumchecker: 3.0.1 + optionalDependencies: + global-agent: 3.0.0 transitivePeerDependencies: - - '@swc/core' - - bluebird - - encoding - - esbuild - supports-color - - uglify-js - - webpack-cli - '@electron-forge/maker-base@7.11.1': + '@electron/notarize@2.5.0': dependencies: - '@electron-forge/shared-types': 7.11.1 - fs-extra: 10.1.0 - which: 2.0.2 + debug: 4.4.3 + fs-extra: 9.1.0 + promise-retry: 2.0.1 transitivePeerDependencies: - - bluebird - supports-color - '@electron-forge/maker-base@7.11.2': + '@electron/osx-sign@1.3.3': dependencies: - '@electron-forge/shared-types': 7.11.2 + compare-version: 0.1.2 + debug: 4.4.3 fs-extra: 10.1.0 - which: 2.0.2 + isbinaryfile: 4.0.10 + minimist: 1.2.8 + plist: 3.1.0 transitivePeerDependencies: - - bluebird - supports-color - '@electron-forge/maker-deb@7.11.2': + '@electron/rebuild@4.0.4': dependencies: - '@electron-forge/maker-base': 7.11.2 - '@electron-forge/shared-types': 7.11.2 - optionalDependencies: - electron-installer-debian: 3.2.0 + '@malept/cross-spawn-promise': 2.0.0 + debug: 4.4.3 + node-abi: 4.26.0 + node-api-version: 0.2.1 + node-gyp: 12.4.0 + read-binary-file-arch: 1.0.6 transitivePeerDependencies: - - bluebird - supports-color - '@electron-forge/maker-dmg@7.11.1': - dependencies: - '@electron-forge/maker-base': 7.11.1 - '@electron-forge/shared-types': 7.11.1 - fs-extra: 10.1.0 - optionalDependencies: - electron-installer-dmg: 5.0.1 - transitivePeerDependencies: - - bluebird - - supports-color - - '@electron-forge/maker-rpm@7.11.2': - dependencies: - '@electron-forge/maker-base': 7.11.2 - '@electron-forge/shared-types': 7.11.2 - optionalDependencies: - electron-installer-redhat: 3.4.0 - transitivePeerDependencies: - - bluebird - - supports-color - - '@electron-forge/maker-squirrel@7.11.1': - dependencies: - '@electron-forge/maker-base': 7.11.1 - '@electron-forge/shared-types': 7.11.1 - fs-extra: 10.1.0 - optionalDependencies: - electron-winstaller: 5.4.0 - transitivePeerDependencies: - - bluebird - - supports-color - - '@electron-forge/maker-zip@7.11.1': - dependencies: - '@electron-forge/maker-base': 7.11.1 - '@electron-forge/shared-types': 7.11.1 - cross-zip: 4.0.1 - fs-extra: 10.1.0 - got: 11.8.6 - transitivePeerDependencies: - - bluebird - - supports-color - - '@electron-forge/plugin-base@7.11.1': - dependencies: - '@electron-forge/shared-types': 7.11.1 - transitivePeerDependencies: - - bluebird - - supports-color - - '@electron-forge/plugin-vite@7.11.1': - dependencies: - '@electron-forge/plugin-base': 7.11.1 - '@electron-forge/shared-types': 7.11.1 - chalk: 4.1.2 - debug: 4.4.3 - fs-extra: 10.1.0 - listr2: 7.0.2 - transitivePeerDependencies: - - bluebird - - supports-color - - '@electron-forge/publisher-base@7.11.1': - dependencies: - '@electron-forge/shared-types': 7.11.1 - transitivePeerDependencies: - - bluebird - - supports-color - - '@electron-forge/publisher-github@7.11.1': - dependencies: - '@electron-forge/publisher-base': 7.11.1 - '@electron-forge/shared-types': 7.11.1 - '@octokit/core': 5.2.2 - '@octokit/plugin-retry': 6.1.0(@octokit/core@5.2.2) - '@octokit/request-error': 5.1.1 - '@octokit/rest': 20.1.2 - '@octokit/types': 6.41.0 - chalk: 4.1.2 - debug: 4.4.3 - fs-extra: 10.1.0 - log-symbols: 4.1.0 - mime-types: 2.1.35 - transitivePeerDependencies: - - bluebird - - supports-color - - '@electron-forge/shared-types@7.11.1': - dependencies: - '@electron-forge/tracer': 7.11.1 - '@electron/packager': 18.4.4 - '@electron/rebuild': 3.7.2 - listr2: 7.0.2 - transitivePeerDependencies: - - bluebird - - supports-color - - '@electron-forge/shared-types@7.11.2': - dependencies: - '@electron-forge/tracer': 7.11.2 - '@electron/packager': 18.4.4 - '@electron/rebuild': 3.7.2 - listr2: 7.0.2 - transitivePeerDependencies: - - bluebird - - supports-color - - '@electron-forge/template-base@7.11.1': - dependencies: - '@electron-forge/core-utils': 7.11.1 - '@electron-forge/shared-types': 7.11.1 - '@malept/cross-spawn-promise': 2.0.0 - debug: 4.4.3 - fs-extra: 10.1.0 - semver: 7.7.3 - username: 5.1.0 - transitivePeerDependencies: - - bluebird - - supports-color - - '@electron-forge/template-vite-typescript@7.11.1': - dependencies: - '@electron-forge/shared-types': 7.11.1 - '@electron-forge/template-base': 7.11.1 - fs-extra: 10.1.0 - transitivePeerDependencies: - - bluebird - - supports-color - - '@electron-forge/template-vite@7.11.1': - dependencies: - '@electron-forge/shared-types': 7.11.1 - '@electron-forge/template-base': 7.11.1 - fs-extra: 10.1.0 - transitivePeerDependencies: - - bluebird - - supports-color - - '@electron-forge/template-webpack-typescript@7.11.1(esbuild@0.27.2)': - dependencies: - '@electron-forge/shared-types': 7.11.1 - '@electron-forge/template-base': 7.11.1 - fs-extra: 10.1.0 - typescript: 5.4.5 - webpack: 5.105.0(esbuild@0.27.2) - transitivePeerDependencies: - - '@swc/core' - - bluebird - - esbuild - - supports-color - - uglify-js - - webpack-cli - - '@electron-forge/template-webpack@7.11.1': - dependencies: - '@electron-forge/shared-types': 7.11.1 - '@electron-forge/template-base': 7.11.1 - fs-extra: 10.1.0 - transitivePeerDependencies: - - bluebird - - supports-color - - '@electron-forge/tracer@7.11.1': - dependencies: - chrome-trace-event: 1.0.4 - - '@electron-forge/tracer@7.11.2': - dependencies: - chrome-trace-event: 1.0.4 - - '@electron/asar@3.4.1': - dependencies: - commander: 5.1.0 - glob: 7.2.3 - minimatch: 3.1.2 - - '@electron/fuses@1.8.0': - dependencies: - chalk: 4.1.2 - fs-extra: 9.1.0 - minimist: 1.2.8 - - '@electron/get@2.0.3': - dependencies: - debug: 4.4.3 - 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/get@3.1.0': - dependencies: - debug: 4.4.3 - 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/node-gyp@https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2': - dependencies: - env-paths: 2.2.1 - exponential-backoff: 3.1.3 - glob: 8.1.0 - graceful-fs: 4.2.11 - make-fetch-happen: 10.2.1 - nopt: 6.0.0 - proc-log: 2.0.1 - semver: 7.7.3 - tar: 6.2.1 - which: 2.0.2 - transitivePeerDependencies: - - bluebird - - supports-color - - '@electron/notarize@2.5.0': - dependencies: - debug: 4.4.3 - fs-extra: 9.1.0 - promise-retry: 2.0.1 - transitivePeerDependencies: - - supports-color - - '@electron/osx-sign@1.3.3': - dependencies: - compare-version: 0.1.2 - debug: 4.4.3 - fs-extra: 10.1.0 - isbinaryfile: 4.0.10 - minimist: 1.2.8 - plist: 3.1.0 - transitivePeerDependencies: - - supports-color - - '@electron/packager@18.4.4': - dependencies: - '@electron/asar': 3.4.1 - '@electron/get': 3.1.0 - '@electron/notarize': 2.5.0 - '@electron/osx-sign': 1.3.3 - '@electron/universal': 2.0.3 - '@electron/windows-sign': 1.2.2 - '@malept/cross-spawn-promise': 2.0.0 - debug: 4.4.3 - extract-zip: 2.0.1 - filenamify: 4.3.0 - fs-extra: 11.3.3 - galactus: 1.0.0 - get-package-info: 1.0.0 - junk: 3.1.0 - parse-author: 2.0.0 - plist: 3.1.0 - prettier: 3.8.1 - resedit: 2.0.3 - resolve: 1.22.11 - semver: 7.7.3 - yargs-parser: 21.1.1 - transitivePeerDependencies: - - supports-color - - '@electron/rebuild@3.7.2': - dependencies: - '@electron/node-gyp': https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2 - '@malept/cross-spawn-promise': 2.0.0 - chalk: 4.1.2 - debug: 4.4.3 - detect-libc: 2.1.2 - fs-extra: 10.1.0 - got: 11.8.6 - node-abi: 3.87.0 - node-api-version: 0.2.1 - ora: 5.4.1 - read-binary-file-arch: 1.0.6 - semver: 7.7.3 - tar: 6.2.1 - yargs: 17.7.2 - transitivePeerDependencies: - - bluebird - - supports-color - - '@electron/rebuild@4.0.3': - dependencies: - '@malept/cross-spawn-promise': 2.0.0 - debug: 4.4.3 - detect-libc: 2.1.2 - got: 11.8.6 - graceful-fs: 4.2.11 - node-abi: 4.26.0 - node-api-version: 0.2.1 - node-gyp: 11.5.0 - ora: 5.4.1 - read-binary-file-arch: 1.0.6 - semver: 7.7.3 - tar: 7.5.7 - yargs: 17.7.2 - transitivePeerDependencies: - - supports-color - - '@electron/rebuild@4.0.4': - dependencies: - '@malept/cross-spawn-promise': 2.0.0 - debug: 4.4.3 - node-abi: 4.26.0 - node-api-version: 0.2.1 - node-gyp: 12.4.0 - read-binary-file-arch: 1.0.6 - transitivePeerDependencies: - - supports-color - - '@electron/universal@2.0.3': + '@electron/universal@2.0.3': dependencies: '@electron/asar': 3.4.1 '@malept/cross-spawn-promise': 2.0.0 @@ -15424,6 +14057,7 @@ snapshots: postject: 1.0.0-alpha.6 transitivePeerDependencies: - supports-color + optional: true '@emnapi/core@1.8.1': dependencies: @@ -16086,8 +14720,6 @@ snapshots: '@fontsource-variable/inter@5.2.8': {} - '@gar/promisify@1.1.3': {} - '@hono/node-server@1.19.9(hono@4.11.7)': dependencies: hono: 4.11.7 @@ -16101,19 +14733,6 @@ snapshots: '@inquirer/ansi@1.0.2': {} - '@inquirer/checkbox@3.0.1': - dependencies: - '@inquirer/core': 9.2.1 - '@inquirer/figures': 1.0.15 - '@inquirer/type': 2.0.0 - ansi-escapes: 4.3.2 - yoctocolors-cjs: 2.1.3 - - '@inquirer/confirm@4.0.1': - dependencies: - '@inquirer/core': 9.2.1 - '@inquirer/type': 2.0.0 - '@inquirer/confirm@5.1.21(@types/node@20.19.41)': dependencies: '@inquirer/core': 10.3.2(@types/node@20.19.41) @@ -16176,93 +14795,8 @@ snapshots: optionalDependencies: '@types/node': 25.2.0 - '@inquirer/core@9.2.1': - dependencies: - '@inquirer/figures': 1.0.15 - '@inquirer/type': 2.0.0 - '@types/mute-stream': 0.0.4 - '@types/node': 22.19.8 - '@types/wrap-ansi': 3.0.0 - ansi-escapes: 4.3.2 - cli-width: 4.1.0 - mute-stream: 1.0.0 - signal-exit: 4.1.0 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.3 - - '@inquirer/editor@3.0.1': - dependencies: - '@inquirer/core': 9.2.1 - '@inquirer/type': 2.0.0 - external-editor: 3.1.0 - - '@inquirer/expand@3.0.1': - dependencies: - '@inquirer/core': 9.2.1 - '@inquirer/type': 2.0.0 - yoctocolors-cjs: 2.1.3 - '@inquirer/figures@1.0.15': {} - '@inquirer/input@3.0.1': - dependencies: - '@inquirer/core': 9.2.1 - '@inquirer/type': 2.0.0 - - '@inquirer/number@2.0.1': - dependencies: - '@inquirer/core': 9.2.1 - '@inquirer/type': 2.0.0 - - '@inquirer/password@3.0.1': - dependencies: - '@inquirer/core': 9.2.1 - '@inquirer/type': 2.0.0 - ansi-escapes: 4.3.2 - - '@inquirer/prompts@6.0.1': - dependencies: - '@inquirer/checkbox': 3.0.1 - '@inquirer/confirm': 4.0.1 - '@inquirer/editor': 3.0.1 - '@inquirer/expand': 3.0.1 - '@inquirer/input': 3.0.1 - '@inquirer/number': 2.0.1 - '@inquirer/password': 3.0.1 - '@inquirer/rawlist': 3.0.1 - '@inquirer/search': 2.0.1 - '@inquirer/select': 3.0.1 - - '@inquirer/rawlist@3.0.1': - dependencies: - '@inquirer/core': 9.2.1 - '@inquirer/type': 2.0.0 - yoctocolors-cjs: 2.1.3 - - '@inquirer/search@2.0.1': - dependencies: - '@inquirer/core': 9.2.1 - '@inquirer/figures': 1.0.15 - '@inquirer/type': 2.0.0 - yoctocolors-cjs: 2.1.3 - - '@inquirer/select@3.0.1': - dependencies: - '@inquirer/core': 9.2.1 - '@inquirer/figures': 1.0.15 - '@inquirer/type': 2.0.0 - ansi-escapes: 4.3.2 - yoctocolors-cjs: 2.1.3 - - '@inquirer/type@1.5.5': - dependencies: - mute-stream: 1.0.0 - - '@inquirer/type@2.0.0': - dependencies: - mute-stream: 1.0.0 - '@inquirer/type@3.0.10(@types/node@20.19.41)': optionalDependencies: '@types/node': 20.19.41 @@ -16868,16 +15402,6 @@ snapshots: '@lezer/highlight': 1.2.3 '@lezer/lr': 1.4.8 - '@listr2/prompt-adapter-inquirer@2.0.22(@inquirer/prompts@6.0.1)': - dependencies: - '@inquirer/prompts': 6.0.1 - '@inquirer/type': 1.5.5 - - '@malept/cross-spawn-promise@1.1.1': - dependencies: - cross-spawn: 7.0.6 - optional: true - '@malept/cross-spawn-promise@2.0.0': dependencies: cross-spawn: 7.0.6 @@ -17023,106 +15547,6 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 - '@npmcli/agent@3.0.0': - dependencies: - agent-base: 7.1.4 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - lru-cache: 10.4.3 - socks-proxy-agent: 8.0.5 - transitivePeerDependencies: - - supports-color - - '@npmcli/fs@2.1.2': - dependencies: - '@gar/promisify': 1.1.3 - semver: 7.7.3 - - '@npmcli/fs@4.0.0': - dependencies: - semver: 7.7.3 - - '@npmcli/move-file@2.0.1': - dependencies: - mkdirp: 1.0.4 - rimraf: 3.0.2 - - '@octokit/auth-token@4.0.0': {} - - '@octokit/core@5.2.2': - dependencies: - '@octokit/auth-token': 4.0.0 - '@octokit/graphql': 7.1.1 - '@octokit/request': 8.4.1 - '@octokit/request-error': 5.1.1 - '@octokit/types': 13.10.0 - before-after-hook: 2.2.3 - universal-user-agent: 6.0.1 - - '@octokit/endpoint@9.0.6': - dependencies: - '@octokit/types': 13.10.0 - universal-user-agent: 6.0.1 - - '@octokit/graphql@7.1.1': - dependencies: - '@octokit/request': 8.4.1 - '@octokit/types': 13.10.0 - universal-user-agent: 6.0.1 - - '@octokit/openapi-types@12.11.0': {} - - '@octokit/openapi-types@24.2.0': {} - - '@octokit/plugin-paginate-rest@11.4.4-cjs.2(@octokit/core@5.2.2)': - dependencies: - '@octokit/core': 5.2.2 - '@octokit/types': 13.10.0 - - '@octokit/plugin-request-log@4.0.1(@octokit/core@5.2.2)': - dependencies: - '@octokit/core': 5.2.2 - - '@octokit/plugin-rest-endpoint-methods@13.3.2-cjs.1(@octokit/core@5.2.2)': - dependencies: - '@octokit/core': 5.2.2 - '@octokit/types': 13.10.0 - - '@octokit/plugin-retry@6.1.0(@octokit/core@5.2.2)': - dependencies: - '@octokit/core': 5.2.2 - '@octokit/request-error': 5.1.1 - '@octokit/types': 13.10.0 - bottleneck: 2.19.5 - - '@octokit/request-error@5.1.1': - dependencies: - '@octokit/types': 13.10.0 - deprecation: 2.3.1 - once: 1.4.0 - - '@octokit/request@8.4.1': - dependencies: - '@octokit/endpoint': 9.0.6 - '@octokit/request-error': 5.1.1 - '@octokit/types': 13.10.0 - universal-user-agent: 6.0.1 - - '@octokit/rest@20.1.2': - dependencies: - '@octokit/core': 5.2.2 - '@octokit/plugin-paginate-rest': 11.4.4-cjs.2(@octokit/core@5.2.2) - '@octokit/plugin-request-log': 4.0.1(@octokit/core@5.2.2) - '@octokit/plugin-rest-endpoint-methods': 13.3.2-cjs.1(@octokit/core@5.2.2) - - '@octokit/types@13.10.0': - dependencies: - '@octokit/openapi-types': 24.2.0 - - '@octokit/types@6.41.0': - dependencies: - '@octokit/openapi-types': 12.11.0 - '@open-draft/deferred-promise@2.2.0': {} '@open-draft/logger@0.3.0': @@ -17447,9 +15871,6 @@ snapshots: '@pixi/colord@2.9.6': {} - '@pkgjs/parseargs@0.11.0': - optional: true - '@playwright/test@1.58.1': dependencies: playwright: 1.58.1 @@ -18530,18 +16951,6 @@ snapshots: dependencies: nanoid: 3.3.11 - '@reforged/maker-appimage@5.2.0': - dependencies: - '@electron-forge/maker-base': 7.11.1 - '@reforged/maker-types': 2.1.0 - '@spacingbat3/lss': 1.2.0 - semver: 7.7.3 - transitivePeerDependencies: - - bluebird - - supports-color - - '@reforged/maker-types@2.1.0': {} - '@remirror/core-constants@3.0.0': {} '@rolldown/pluginutils@1.0.0-beta.27': {} @@ -18727,8 +17136,6 @@ snapshots: dependencies: solid-js: 1.9.13 - '@spacingbat3/lss@1.2.0': {} - '@stablelib/base64@1.0.1': {} '@standard-schema/spec@1.1.0': {} @@ -19396,8 +17803,6 @@ snapshots: '@tokenizer/token@0.3.0': {} - '@tootallnate/once@2.0.1': {} - '@trpc/client@11.12.0(@trpc/server@11.12.0(typescript@5.9.3))(typescript@5.9.3)': dependencies: '@trpc/server': 11.12.0(typescript@5.9.3) @@ -19435,11 +17840,6 @@ snapshots: tslib: 2.8.1 optional: true - '@types/appdmg@0.5.5': - dependencies: - '@types/node': 24.12.0 - optional: true - '@types/aria-query@5.0.4': {} '@types/babel__core@7.20.5': @@ -19501,11 +17901,13 @@ snapshots: dependencies: '@types/eslint': 9.6.1 '@types/estree': 1.0.8 + optional: true '@types/eslint@9.6.1': dependencies: '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 + optional: true '@types/estree-jsx@1.0.5': dependencies: @@ -19567,20 +17969,12 @@ snapshots: '@types/ms@2.1.0': {} - '@types/mute-stream@0.0.4': - dependencies: - '@types/node': 24.12.0 - '@types/node@16.9.1': {} '@types/node@20.19.41': dependencies: undici-types: 6.21.0 - '@types/node@22.19.8': - dependencies: - undici-types: 6.21.0 - '@types/node@24.12.0': dependencies: undici-types: 7.16.0 @@ -19635,8 +18029,6 @@ snapshots: '@types/validate-npm-package-name@4.0.2': {} - '@types/wrap-ansi@3.0.0': {} - '@types/yargs-parser@21.0.3': {} '@types/yargs@17.0.35': @@ -19909,26 +18301,30 @@ snapshots: convert-source-map: 2.0.0 tinyrainbow: 3.1.0 - '@vscode/sudo-prompt@9.3.2': {} - '@webassemblyjs/ast@1.14.1': dependencies: '@webassemblyjs/helper-numbers': 1.13.2 '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + optional: true - '@webassemblyjs/floating-point-hex-parser@1.13.2': {} + '@webassemblyjs/floating-point-hex-parser@1.13.2': + optional: true - '@webassemblyjs/helper-api-error@1.13.2': {} + '@webassemblyjs/helper-api-error@1.13.2': + optional: true - '@webassemblyjs/helper-buffer@1.14.1': {} + '@webassemblyjs/helper-buffer@1.14.1': + optional: true '@webassemblyjs/helper-numbers@1.13.2': dependencies: '@webassemblyjs/floating-point-hex-parser': 1.13.2 '@webassemblyjs/helper-api-error': 1.13.2 '@xtuc/long': 4.2.2 + optional: true - '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} + '@webassemblyjs/helper-wasm-bytecode@1.13.2': + optional: true '@webassemblyjs/helper-wasm-section@1.14.1': dependencies: @@ -19936,16 +18332,20 @@ snapshots: '@webassemblyjs/helper-buffer': 1.14.1 '@webassemblyjs/helper-wasm-bytecode': 1.13.2 '@webassemblyjs/wasm-gen': 1.14.1 + optional: true '@webassemblyjs/ieee754@1.13.2': dependencies: '@xtuc/ieee754': 1.2.0 + optional: true '@webassemblyjs/leb128@1.13.2': dependencies: '@xtuc/long': 4.2.2 + optional: true - '@webassemblyjs/utf8@1.13.2': {} + '@webassemblyjs/utf8@1.13.2': + optional: true '@webassemblyjs/wasm-edit@1.14.1': dependencies: @@ -19957,6 +18357,7 @@ snapshots: '@webassemblyjs/wasm-opt': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 '@webassemblyjs/wast-printer': 1.14.1 + optional: true '@webassemblyjs/wasm-gen@1.14.1': dependencies: @@ -19965,6 +18366,7 @@ snapshots: '@webassemblyjs/ieee754': 1.13.2 '@webassemblyjs/leb128': 1.13.2 '@webassemblyjs/utf8': 1.13.2 + optional: true '@webassemblyjs/wasm-opt@1.14.1': dependencies: @@ -19972,6 +18374,7 @@ snapshots: '@webassemblyjs/helper-buffer': 1.14.1 '@webassemblyjs/wasm-gen': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 + optional: true '@webassemblyjs/wasm-parser@1.14.1': dependencies: @@ -19981,11 +18384,13 @@ snapshots: '@webassemblyjs/ieee754': 1.13.2 '@webassemblyjs/leb128': 1.13.2 '@webassemblyjs/utf8': 1.13.2 + optional: true '@webassemblyjs/wast-printer@1.14.1': dependencies: '@webassemblyjs/ast': 1.14.1 '@xtuc/long': 4.2.2 + optional: true '@webgpu/types@0.1.69': {} @@ -20009,13 +18414,11 @@ snapshots: '@xterm/xterm@5.5.0': {} - '@xtuc/ieee754@1.2.0': {} - - '@xtuc/long@4.2.2': {} - - abbrev@1.1.1: {} + '@xtuc/ieee754@1.2.0': + optional: true - abbrev@3.0.1: {} + '@xtuc/long@4.2.2': + optional: true abbrev@4.0.0: {} @@ -20036,44 +18439,32 @@ snapshots: acorn-import-phases@1.0.4(acorn@8.15.0): dependencies: acorn: 8.15.0 + optional: true acorn@8.15.0: {} - adm-zip@0.5.16: {} - - agent-base@6.0.2: - dependencies: - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - - agent-base@7.1.4: {} - - agentkeepalive@4.6.0: - dependencies: - humanize-ms: 1.2.1 + adm-zip@0.5.16: {} - aggregate-error@3.1.0: - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 + agent-base@7.1.4: {} ajv-draft-04@1.0.0(ajv@8.17.1): optionalDependencies: ajv: 8.17.1 - ajv-formats@2.1.1(ajv@8.17.1): + ajv-formats@2.1.1(ajv@8.20.0): optionalDependencies: - ajv: 8.17.1 + ajv: 8.20.0 + optional: true ajv-formats@3.0.1(ajv@8.17.1): optionalDependencies: ajv: 8.17.1 - ajv-keywords@5.1.0(ajv@8.17.1): + ajv-keywords@5.1.0(ajv@8.20.0): dependencies: - ajv: 8.17.1 + ajv: 8.20.0 fast-deep-equal: 3.1.3 + optional: true ajv@8.17.1: dependencies: @@ -20095,10 +18486,6 @@ snapshots: dependencies: type-fest: 0.21.3 - ansi-escapes@5.0.0: - dependencies: - type-fest: 1.4.0 - ansi-escapes@7.2.0: dependencies: environment: 1.1.0 @@ -20180,21 +18567,6 @@ snapshots: transitivePeerDependencies: - supports-color - appdmg@0.6.6: - dependencies: - async: 1.5.2 - ds-store: 0.1.6 - execa: 1.0.0 - fs-temp: 1.2.1 - fs-xattr: 0.3.1 - image-size: 0.7.5 - is-my-json-valid: 2.20.6 - minimist: 1.2.8 - parse-color: 1.0.0 - path-exists: 4.0.0 - repeat-string: 1.6.1 - optional: true - arg@5.0.2: {} argparse@1.0.10: @@ -20246,9 +18618,6 @@ snapshots: async-limiter@1.0.1: {} - async@1.5.2: - optional: true - async@3.2.6: {} asynckit@0.4.0: {} @@ -20260,8 +18629,6 @@ snapshots: stubborn-fs: 2.0.0 when-exit: 2.1.5 - author-regex@1.0.0: {} - available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.1.0 @@ -20434,17 +18801,10 @@ snapshots: transitivePeerDependencies: - '@types/emscripten' - base32-encode@1.2.0: - dependencies: - to-data-view: 1.1.0 - optional: true - base64-js@1.5.1: {} baseline-browser-mapping@2.9.19: {} - before-after-hook@2.2.3: {} - better-opn@3.0.2: dependencies: open: 8.4.2 @@ -20491,13 +18851,6 @@ snapshots: boolean@3.2.0: optional: true - bottleneck@2.19.5: {} - - bplist-creator@0.0.8: - dependencies: - stream-buffers: 2.2.0 - optional: true - bplist-creator@0.1.0: dependencies: stream-buffers: 2.2.0 @@ -20604,44 +18957,6 @@ snapshots: cac@6.7.14: {} - 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.7 - 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 - - cacache@19.0.1: - dependencies: - '@npmcli/fs': 4.0.0 - fs-minipass: 3.0.3 - glob: 10.5.0 - lru-cache: 10.4.3 - minipass: 7.1.2 - minipass-collect: 2.0.1 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - p-map: 7.0.4 - ssri: 12.0.0 - tar: 7.5.7 - unique-filename: 4.0.0 - cacheable-lookup@5.0.4: {} cacheable-request@7.0.4: @@ -20718,8 +19033,6 @@ snapshots: character-reference-invalid@2.0.1: {} - chardet@0.7.0: {} - check-error@2.1.3: {} chokidar@3.6.0: @@ -20744,8 +19057,6 @@ snapshots: chownr@1.1.4: {} - chownr@2.0.0: {} - chownr@3.0.0: {} chrome-launcher@0.15.2: @@ -20757,7 +19068,8 @@ snapshots: transitivePeerDependencies: - supports-color - chrome-trace-event@1.0.4: {} + chrome-trace-event@1.0.4: + optional: true chromium-edge-launcher@0.2.0: dependencies: @@ -20786,31 +19098,16 @@ snapshots: classnames@2.5.1: {} - clean-stack@2.2.0: {} - cli-cursor@2.1.0: dependencies: restore-cursor: 2.0.0 - cli-cursor@3.1.0: - dependencies: - restore-cursor: 3.1.0 - - cli-cursor@4.0.0: - dependencies: - restore-cursor: 4.0.0 - cli-cursor@5.0.0: dependencies: restore-cursor: 5.1.0 cli-spinners@2.9.2: {} - cli-truncate@3.1.0: - dependencies: - slice-ansi: 5.0.0 - string-width: 5.1.2 - cli-truncate@4.0.0: dependencies: slice-ansi: 5.0.0 @@ -20820,13 +19117,6 @@ snapshots: client-only@0.0.1: {} - cliui@7.0.4: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - optional: true - cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -20855,9 +19145,6 @@ snapshots: code-block-writer@13.0.3: {} - color-convert@0.5.3: - optional: true - color-convert@1.9.3: dependencies: color-name: 1.1.3 @@ -20904,7 +19191,8 @@ snapshots: commander@7.2.0: {} - commander@9.5.0: {} + commander@9.5.0: + optional: true comment-json@4.5.1: dependencies: @@ -21012,7 +19300,8 @@ snapshots: crelt@1.0.6: {} - cross-dirname@0.1.0: {} + cross-dirname@0.1.0: + optional: true cross-fetch@3.2.0(encoding@0.1.13): dependencies: @@ -21020,22 +19309,12 @@ snapshots: transitivePeerDependencies: - encoding - cross-spawn@6.0.6: - dependencies: - nice-try: 1.0.5 - path-key: 2.0.1 - semver: 5.7.2 - shebang-command: 1.2.0 - which: 1.3.1 - cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - cross-zip@4.0.1: {} - crypto-random-string@2.0.0: {} css-in-js-utils@3.1.0: @@ -21198,8 +19477,6 @@ snapshots: depd@2.0.0: {} - deprecation@2.3.1: {} - dequal@2.0.3: {} destroy@1.2.0: {} @@ -21301,13 +19578,6 @@ snapshots: better-sqlite3: 12.8.0 bun-types: 1.3.14 - ds-store@0.1.6: - dependencies: - bplist-creator: 0.0.8 - macos-alias: 0.2.12 - tn1150: 0.1.0 - optional: true - dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 @@ -21368,61 +19638,6 @@ snapshots: - electron-builder-squirrel-windows - supports-color - electron-installer-common@0.10.4: - dependencies: - '@electron/asar': 3.4.1 - '@malept/cross-spawn-promise': 1.1.1 - debug: 4.4.3 - fs-extra: 9.1.0 - glob: 7.2.3 - lodash: 4.17.23 - parse-author: 2.0.0 - semver: 7.7.3 - tmp-promise: 3.0.3 - optionalDependencies: - '@types/fs-extra': 9.0.13 - transitivePeerDependencies: - - supports-color - optional: true - - electron-installer-debian@3.2.0: - dependencies: - '@malept/cross-spawn-promise': 1.1.1 - debug: 4.4.3 - electron-installer-common: 0.10.4 - fs-extra: 9.1.0 - get-folder-size: 2.0.1 - lodash: 4.17.23 - word-wrap: 1.2.5 - yargs: 16.2.0 - transitivePeerDependencies: - - supports-color - optional: true - - electron-installer-dmg@5.0.1: - dependencies: - '@types/appdmg': 0.5.5 - debug: 4.4.3 - minimist: 1.2.8 - optionalDependencies: - appdmg: 0.6.6 - transitivePeerDependencies: - - supports-color - optional: true - - electron-installer-redhat@3.4.0: - dependencies: - '@malept/cross-spawn-promise': 1.1.1 - debug: 4.4.3 - electron-installer-common: 0.10.4 - fs-extra: 9.1.0 - lodash: 4.17.23 - word-wrap: 1.2.5 - yargs: 16.2.0 - transitivePeerDependencies: - - supports-color - optional: true - electron-log@5.4.3: {} electron-publish@26.15.3: @@ -21487,9 +19702,6 @@ snapshots: empathic@2.0.0: {} - encode-utf8@1.0.3: - optional: true - encodeurl@1.0.2: {} encodeurl@2.0.0: {} @@ -21684,16 +19896,20 @@ snapshots: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 + optional: true esprima@4.0.1: {} esrecurse@4.3.0: dependencies: estraverse: 5.3.0 + optional: true - estraverse@4.3.0: {} + estraverse@4.3.0: + optional: true - estraverse@5.3.0: {} + estraverse@5.3.0: + optional: true estree-util-is-identifier-name@3.0.0: {} @@ -21721,16 +19937,6 @@ snapshots: exec-async@2.2.0: {} - execa@1.0.0: - dependencies: - cross-spawn: 6.0.6 - get-stream: 4.1.0 - is-stream: 1.1.0 - npm-run-path: 2.0.2 - p-finally: 1.0.0 - signal-exit: 3.0.7 - strip-eof: 1.0.0 - execa@5.1.1: dependencies: cross-spawn: 7.0.6 @@ -22144,12 +20350,6 @@ snapshots: extend@3.0.2: {} - external-editor@3.1.0: - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - extract-zip@2.0.1: dependencies: debug: 4.4.3 @@ -22241,14 +20441,6 @@ snapshots: dependencies: minimatch: 5.1.9 - filename-reserved-regex@2.0.0: {} - - filenamify@4.3.0: - dependencies: - filename-reserved-regex: 2.0.0 - strip-outer: 1.0.1 - trim-repeated: 1.0.0 - fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -22278,20 +20470,11 @@ snapshots: transitivePeerDependencies: - supports-color - find-up@2.1.0: - dependencies: - locate-path: 2.0.0 - find-up@4.1.0: dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - fix-dts-default-cjs-exports@1.0.1: dependencies: magic-string: 0.30.21 @@ -22300,20 +20483,8 @@ snapshots: flatted@3.4.2: {} - flora-colossus@2.0.0: - dependencies: - debug: 4.4.3 - fs-extra: 10.1.0 - transitivePeerDependencies: - - supports-color - flow-enums-runtime@0.0.6: {} - fmix@0.1.0: - dependencies: - imul: 1.0.1 - optional: true - follow-redirects@1.15.11: {} fontfaceobserver@2.3.0: {} @@ -22393,22 +20564,6 @@ snapshots: jsonfile: 6.2.0 universalify: 2.0.1 - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 - - fs-minipass@3.0.3: - dependencies: - minipass: 7.1.3 - - fs-temp@1.2.1: - dependencies: - random-path: 0.1.2 - optional: true - - fs-xattr@0.3.1: - optional: true - fs.realpath@1.0.0: {} fsevents@2.3.2: @@ -22425,27 +20580,6 @@ snapshots: fzf@0.5.2: {} - galactus@1.0.0: - dependencies: - debug: 4.4.3 - flora-colossus: 2.0.0 - fs-extra: 10.1.0 - transitivePeerDependencies: - - supports-color - - gar@1.0.4: - optional: true - - generate-function@2.3.1: - dependencies: - is-property: 1.0.2 - optional: true - - generate-object-property@1.2.0: - dependencies: - is-property: 1.0.2 - optional: true - generator-function@2.0.1: {} gensync@1.0.0-beta.2: {} @@ -22454,12 +20588,6 @@ snapshots: get-east-asian-width@1.4.0: {} - get-folder-size@2.0.1: - dependencies: - gar: 1.0.4 - tiny-each-async: 2.0.3 - optional: true - get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -22477,15 +20605,6 @@ snapshots: get-own-enumerable-keys@1.0.0: {} - get-package-info@1.0.0: - dependencies: - bluebird: 3.7.2 - debug: 2.6.9 - lodash.get: 4.4.2 - read-pkg-up: 2.0.0 - transitivePeerDependencies: - - supports-color - get-package-type@0.1.0: {} get-proto@1.0.1: @@ -22493,10 +20612,6 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 - get-stream@4.1.0: - dependencies: - pump: 3.0.3 - get-stream@5.2.0: dependencies: pump: 3.0.3 @@ -22548,16 +20663,8 @@ snapshots: dependencies: tslib: 2.8.1 - glob-to-regexp@0.4.1: {} - - glob@10.5.0: - dependencies: - foreground-child: 3.3.1 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.3 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 + glob-to-regexp@0.4.1: + optional: true glob@11.1.0: dependencies: @@ -22589,14 +20696,6 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - glob@8.1.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.9 - once: 1.4.0 - global-agent@3.0.0: dependencies: boolean: 3.2.0 @@ -22611,10 +20710,6 @@ snapshots: dependencies: ini: 1.3.8 - global-dirs@3.0.1: - dependencies: - ini: 2.0.0 - globalthis@1.0.4: dependencies: define-properties: 1.2.1 @@ -22778,8 +20873,6 @@ snapshots: hono@4.11.7: {} - hosted-git-info@2.8.9: {} - hosted-git-info@4.1.0: dependencies: lru-cache: 6.0.0 @@ -22808,14 +20901,6 @@ snapshots: statuses: 2.0.2 toidentifier: 1.0.1 - http-proxy-agent@5.0.0: - dependencies: - '@tootallnate/once': 2.0.1 - agent-base: 6.0.2 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.4 @@ -22828,13 +20913,6 @@ snapshots: quick-lru: 5.1.1 resolve-alpn: 1.2.1 - https-proxy-agent@5.0.1: - dependencies: - agent-base: 6.0.2 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 @@ -22848,10 +20926,6 @@ snapshots: human-signals@8.0.1: {} - humanize-ms@1.2.1: - dependencies: - ms: 2.1.3 - humps@2.0.1: {} husky@9.1.7: {} @@ -22860,10 +20934,6 @@ snapshots: hyphenate-style-name@1.1.0: {} - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 - iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 @@ -22882,9 +20952,6 @@ snapshots: dependencies: '@types/node': 16.9.1 - image-size@0.7.5: - optional: true - image-size@1.2.1: dependencies: queue: 6.0.2 @@ -22897,15 +20964,10 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 - imul@1.0.1: - optional: true - imurmurhash@0.1.4: {} indent-string@4.0.0: {} - infer-owner@1.0.4: {} - inflight@1.0.6: dependencies: once: 1.4.0 @@ -22915,8 +20977,6 @@ snapshots: ini@1.3.8: {} - ini@2.0.0: {} - inline-style-parser@0.2.7: {} inline-style-prefixer@7.0.1: @@ -22925,8 +20985,6 @@ snapshots: internmap@2.0.3: {} - interpret@3.1.1: {} - invariant@2.2.4: dependencies: loose-envify: 1.4.0 @@ -22941,8 +20999,6 @@ snapshots: ip-address@10.1.0: {} - ip-address@10.2.0: {} - ipaddr.js@1.9.1: {} is-alphabetical@2.0.1: {} @@ -23007,24 +21063,8 @@ snapshots: dependencies: is-docker: 3.0.0 - is-interactive@1.0.0: {} - is-interactive@2.0.0: {} - is-lambda@1.0.1: {} - - is-my-ip-valid@1.0.1: - optional: true - - is-my-json-valid@2.20.6: - dependencies: - generate-function: 2.3.1 - generate-object-property: 1.2.0 - is-my-ip-valid: 1.0.1 - jsonpointer: 5.0.1 - xtend: 4.0.2 - optional: true - is-nan@1.3.2: dependencies: call-bind: 1.0.9 @@ -23044,9 +21084,6 @@ snapshots: is-promise@4.0.0: {} - is-property@1.0.2: - optional: true - is-regex@1.2.1: dependencies: call-bound: 1.0.4 @@ -23060,8 +21097,6 @@ snapshots: dependencies: protocols: 2.0.2 - is-stream@1.1.0: {} - is-stream@2.0.1: {} is-stream@3.0.0: {} @@ -23072,8 +21107,6 @@ snapshots: dependencies: which-typed-array: 1.1.20 - is-unicode-supported@0.1.0: {} - is-unicode-supported@1.3.0: {} is-unicode-supported@2.1.0: {} @@ -23135,12 +21168,6 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - jackspeak@4.1.1: dependencies: '@isaacs/cliui': 8.0.2 @@ -23235,6 +21262,7 @@ snapshots: '@types/node': 24.12.0 merge-stream: 2.0.0 supports-color: 8.1.1 + optional: true jest-worker@29.7.0: dependencies: @@ -23359,9 +21387,6 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 - jsonpointer@5.0.1: - optional: true - jsonwebtoken@9.0.3: dependencies: jws: 4.0.1 @@ -23375,8 +21400,6 @@ snapshots: ms: 2.1.3 semver: 7.7.3 - junk@3.1.0: {} - jwa@2.0.1: dependencies: buffer-equal-constant-time: 1.0.1 @@ -23599,15 +21622,6 @@ snapshots: transitivePeerDependencies: - supports-color - listr2@7.0.2: - dependencies: - cli-truncate: 3.1.0 - colorette: 2.0.20 - eventemitter3: 5.0.4 - log-update: 5.0.1 - rfdc: 1.4.1 - wrap-ansi: 8.1.0 - listr2@8.3.3: dependencies: cli-truncate: 4.0.0 @@ -23617,36 +21631,19 @@ snapshots: rfdc: 1.4.1 wrap-ansi: 9.0.2 - load-json-file@2.0.0: - dependencies: - graceful-fs: 4.2.11 - parse-json: 2.2.0 - pify: 2.3.0 - strip-bom: 3.0.0 - load-tsconfig@0.2.5: {} - loader-runner@4.3.1: {} - - locate-path@2.0.0: - dependencies: - p-locate: 2.0.0 - path-exists: 3.0.0 + loader-runner@4.3.1: + optional: true locate-path@5.0.0: dependencies: - p-locate: 4.1.0 - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 + p-locate: 4.1.0 lodash.debounce@4.0.8: {} lodash.escaperegexp@4.1.2: {} - lodash.get@4.4.2: {} - lodash.includes@4.3.0: {} lodash.isboolean@3.0.3: {} @@ -23671,24 +21668,11 @@ snapshots: dependencies: chalk: 2.4.2 - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - log-symbols@6.0.0: dependencies: chalk: 5.6.2 is-unicode-supported: 1.3.0 - log-update@5.0.1: - dependencies: - ansi-escapes: 5.0.0 - cli-cursor: 4.0.0 - slice-ansi: 5.0.0 - strip-ansi: 7.1.2 - wrap-ansi: 8.1.0 - log-update@6.1.0: dependencies: ansi-escapes: 7.2.0 @@ -23725,8 +21709,6 @@ snapshots: dependencies: yallist: 4.0.0 - lru-cache@7.18.3: {} - lru_map@0.4.1: {} lucide-react@0.577.0(react@19.1.0): @@ -23739,11 +21721,6 @@ snapshots: lz-string@1.5.0: {} - macos-alias@0.2.12: - dependencies: - nan: 2.25.0 - optional: true - magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -23752,52 +21729,10 @@ snapshots: dependencies: semver: 7.7.3 - make-fetch-happen@10.2.1: - dependencies: - agentkeepalive: 4.6.0 - cacache: 16.1.3 - http-cache-semantics: 4.2.0 - 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.7 - 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@14.0.3: - dependencies: - '@npmcli/agent': 3.0.0 - cacache: 19.0.1 - http-cache-semantics: 4.2.0 - minipass: 7.1.2 - minipass-fetch: 4.0.1 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - negotiator: 1.0.0 - proc-log: 5.0.0 - promise-retry: 2.0.1 - ssri: 12.0.0 - transitivePeerDependencies: - - supports-color - makeerror@1.0.12: dependencies: tmpl: 1.0.5 - map-age-cleaner@0.1.3: - dependencies: - p-defer: 1.0.0 - markdown-it@14.1.0: dependencies: argparse: 2.0.1 @@ -23983,12 +21918,6 @@ snapshots: media-typer@1.1.0: {} - mem@4.3.0: - dependencies: - map-age-cleaner: 0.1.3 - mimic-fn: 2.1.0 - p-is-promise: 2.1.0 - memfs@4.56.10(tslib@2.8.1): dependencies: '@jsonjoy.com/fs-core': 4.56.10(tslib@2.8.1) @@ -24445,63 +22374,12 @@ snapshots: minimist@1.2.8: {} - minipass-collect@1.0.2: - dependencies: - minipass: 3.3.6 - - minipass-collect@2.0.1: - dependencies: - minipass: 7.1.3 - - 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-fetch@4.0.1: - dependencies: - minipass: 7.1.2 - minipass-sized: 1.0.3 - minizlib: 3.1.0 - optionalDependencies: - encoding: 0.1.13 - - minipass-flush@1.0.5: - dependencies: - minipass: 3.3.6 - - minipass-flush@1.0.7: - dependencies: - minipass: 3.3.6 - - minipass-pipeline@1.2.4: - dependencies: - minipass: 3.3.6 - - minipass-sized@1.0.3: - dependencies: - minipass: 3.3.6 - - minipass@3.3.6: - dependencies: - yallist: 4.0.0 - minipass@4.2.8: {} - minipass@5.0.0: {} - minipass@7.1.2: {} minipass@7.1.3: {} - minizlib@2.1.2: - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - minizlib@3.1.0: dependencies: minipass: 7.1.2 @@ -24611,15 +22489,6 @@ snapshots: transitivePeerDependencies: - '@types/node' - murmur-32@0.2.0: - dependencies: - encode-utf8: 1.0.3 - fmix: 0.1.0 - imul: 1.0.1 - optional: true - - mute-stream@1.0.0: {} - mute-stream@2.0.0: {} mz@2.7.0: @@ -24628,9 +22497,6 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nan@2.25.0: - optional: true - nanoid@3.3.11: {} napi-build-utils@2.0.0: {} @@ -24655,12 +22521,11 @@ snapshots: negotiator@1.0.0: {} - neo-async@2.6.2: {} + neo-async@2.6.2: + optional: true nested-error-stacks@2.0.1: {} - nice-try@1.0.5: {} - no-case@3.0.4: dependencies: lower-case: 2.0.2 @@ -24698,21 +22563,6 @@ snapshots: node-forge@1.3.3: {} - node-gyp@11.5.0: - dependencies: - env-paths: 2.2.1 - exponential-backoff: 3.1.3 - graceful-fs: 4.2.11 - make-fetch-happen: 14.0.3 - nopt: 8.1.0 - proc-log: 5.0.0 - semver: 7.7.3 - tar: 7.5.7 - tinyglobby: 0.2.15 - which: 5.0.0 - transitivePeerDependencies: - - supports-color - node-gyp@12.4.0: dependencies: env-paths: 2.2.1 @@ -24736,25 +22586,10 @@ snapshots: node-releases@2.0.27: {} - nopt@6.0.0: - dependencies: - abbrev: 1.1.1 - - nopt@8.1.0: - dependencies: - abbrev: 3.0.1 - nopt@9.0.0: dependencies: abbrev: 4.0.0 - normalize-package-data@2.5.0: - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.11 - semver: 5.7.2 - validate-npm-package-license: 3.0.4 - normalize-path@3.0.0: {} normalize-url@6.1.0: {} @@ -24766,10 +22601,6 @@ snapshots: semver: 7.7.3 validate-npm-package-name: 5.0.1 - npm-run-path@2.0.2: - dependencies: - path-key: 2.0.1 - npm-run-path@4.0.1: dependencies: path-key: 3.1.1 @@ -24903,18 +22734,6 @@ snapshots: strip-ansi: 5.2.0 wcwidth: 1.0.1 - 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.6.2 @@ -24929,8 +22748,6 @@ snapshots: orderedmap@2.1.1: {} - os-tmpdir@1.0.2: {} - outvariant@1.4.3: {} oxc-parser@0.120.0: @@ -24983,16 +22800,6 @@ snapshots: p-cancelable@2.1.1: {} - p-defer@1.0.0: {} - - p-finally@1.0.0: {} - - p-is-promise@2.1.0: {} - - p-limit@1.3.0: - dependencies: - p-try: 1.0.0 - p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -25001,26 +22808,12 @@ snapshots: dependencies: yocto-queue: 0.1.0 - p-locate@2.0.0: - dependencies: - p-limit: 1.3.0 - p-locate@4.1.0: dependencies: p-limit: 2.3.0 - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - p-map@4.0.0: - dependencies: - aggregate-error: 3.1.0 - p-map@7.0.4: {} - p-try@1.0.0: {} - p-try@2.2.0: {} package-json-from-dist@1.0.1: {} @@ -25031,10 +22824,6 @@ snapshots: dependencies: callsites: 3.1.0 - parse-author@2.0.0: - dependencies: - author-regex: 1.0.0 - parse-bmfont-ascii@1.0.6: {} parse-bmfont-binary@1.0.6: {} @@ -25044,11 +22833,6 @@ snapshots: xml-parse-from-string: 1.0.1 xml2js: 0.5.0 - parse-color@1.0.0: - dependencies: - color-convert: 0.5.3 - optional: true - parse-entities@4.0.2: dependencies: '@types/unist': 2.0.11 @@ -25059,10 +22843,6 @@ snapshots: is-decimal: 2.0.1 is-hexadecimal: 2.0.1 - parse-json@2.2.0: - dependencies: - error-ex: 1.3.4 - parse-json@5.2.0: dependencies: '@babel/code-frame': 7.29.0 @@ -25107,25 +22887,16 @@ snapshots: path-dirname@1.0.2: {} - path-exists@3.0.0: {} - path-exists@4.0.0: {} path-is-absolute@1.0.1: {} - path-key@2.0.1: {} - path-key@3.1.1: {} path-key@4.0.0: {} path-parse@1.0.7: {} - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.3 - path-scurry@2.0.1: dependencies: lru-cache: 11.2.5 @@ -25140,10 +22911,6 @@ snapshots: path-to-regexp@8.3.0: {} - path-type@2.0.0: - dependencies: - pify: 2.3.0 - path-type@4.0.0: {} pathe@1.1.2: {} @@ -25154,8 +22921,6 @@ snapshots: pe-library@0.4.1: {} - pe-library@1.0.1: {} - peek-readable@4.1.0: {} pend@1.2.0: {} @@ -25337,6 +23102,7 @@ snapshots: postject@1.0.0-alpha.6: dependencies: commander: 9.5.0 + optional: true powershell-utils@0.1.0: {} @@ -25388,12 +23154,8 @@ snapshots: dependencies: parse-ms: 4.0.0 - proc-log@2.0.1: {} - proc-log@4.2.0: {} - proc-log@5.0.0: {} - proc-log@6.1.0: {} process-nextick-args@2.0.1: {} @@ -25402,8 +23164,6 @@ snapshots: progress@2.0.3: {} - promise-inflight@1.0.1: {} - promise-retry@2.0.1: dependencies: err-code: 2.0.3 @@ -25666,15 +23426,10 @@ snapshots: '@types/react': 19.2.11 '@types/react-dom': 19.2.3(@types/react@19.2.11) - random-path@0.1.2: - dependencies: - base32-encode: 1.2.0 - murmur-32: 0.2.0 - optional: true - randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 + optional: true range-parser@1.2.1: {} @@ -25987,17 +23742,6 @@ snapshots: dependencies: pify: 2.3.0 - read-pkg-up@2.0.0: - dependencies: - find-up: 2.1.0 - read-pkg: 2.0.0 - - read-pkg@2.0.0: - dependencies: - load-json-file: 2.0.0 - normalize-package-data: 2.5.0 - path-type: 2.0.0 - readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 @@ -26042,10 +23786,6 @@ snapshots: tiny-invariant: 1.3.3 tslib: 2.8.1 - rechoir@0.8.0: - dependencies: - resolve: 1.22.11 - redent@3.0.0: dependencies: indent-string: 4.0.0 @@ -26131,9 +23871,6 @@ snapshots: mdast-util-to-markdown: 2.1.2 unified: 11.0.5 - repeat-string@1.6.1: - optional: true - require-directory@2.1.1: {} require-from-string@2.0.2: {} @@ -26148,10 +23885,6 @@ snapshots: dependencies: pe-library: 0.4.1 - resedit@2.0.3: - dependencies: - pe-library: 1.0.1 - reselect@5.1.1: {} resolve-alpn@1.2.1: {} @@ -26189,16 +23922,6 @@ snapshots: onetime: 2.0.1 signal-exit: 3.0.7 - restore-cursor@3.1.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - - restore-cursor@4.0.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - restore-cursor@5.1.0: dependencies: onetime: 7.0.0 @@ -26315,9 +24038,10 @@ snapshots: schema-utils@4.3.3: dependencies: '@types/json-schema': 7.0.15 - ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) - ajv-keywords: 5.1.0(ajv@8.17.1) + ajv: 8.20.0 + ajv-formats: 2.1.1(ajv@8.20.0) + ajv-keywords: 5.1.0(ajv@8.20.0) + optional: true semver-compare@1.0.0: optional: true @@ -26376,6 +24100,7 @@ snapshots: serialize-javascript@6.0.2: dependencies: randombytes: 2.1.0 + optional: true seroval-plugins@1.5.4(seroval@1.5.4): dependencies: @@ -26463,16 +24188,10 @@ snapshots: shallowequal@1.1.0: {} - shebang-command@1.2.0: - dependencies: - shebang-regex: 1.0.0 - shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 - shebang-regex@1.0.0: {} - shebang-regex@3.0.0: {} shell-quote@1.8.3: {} @@ -26580,8 +24299,6 @@ snapshots: slugify@1.6.6: {} - smart-buffer@4.2.0: {} - smol-toml@1.6.0: {} snake-case@3.0.4: @@ -26589,32 +24306,6 @@ snapshots: dot-case: 3.0.4 tslib: 2.8.1 - socks-proxy-agent@7.0.0: - dependencies: - agent-base: 6.0.2 - debug: 4.4.3 - socks: 2.8.9 - transitivePeerDependencies: - - supports-color - - socks-proxy-agent@8.0.5: - dependencies: - agent-base: 7.1.4 - debug: 4.4.3 - socks: 2.8.7 - transitivePeerDependencies: - - supports-color - - socks@2.8.7: - dependencies: - ip-address: 10.1.0 - smart-buffer: 4.2.0 - - socks@2.8.9: - dependencies: - ip-address: 10.2.0 - smart-buffer: 4.2.0 - solid-js@1.9.13: dependencies: csstype: 3.2.3 @@ -26641,20 +24332,6 @@ snapshots: space-separated-tokens@2.0.2: {} - spdx-correct@3.2.0: - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.22 - - spdx-exceptions@2.5.0: {} - - spdx-expression-parse@3.0.1: - dependencies: - spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.22 - - spdx-license-ids@3.0.22: {} - split-on-first@1.1.0: {} sprintf-js@1.0.3: {} @@ -26662,14 +24339,6 @@ snapshots: sprintf-js@1.1.3: optional: true - ssri@12.0.0: - dependencies: - minipass: 7.1.2 - - ssri@9.0.1: - dependencies: - minipass: 3.3.6 - stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 @@ -26781,8 +24450,6 @@ snapshots: strip-bom@3.0.0: {} - strip-eof@1.0.0: {} - strip-final-newline@2.0.0: {} strip-final-newline@3.0.0: {} @@ -26799,10 +24466,6 @@ snapshots: strip-json-comments@5.0.3: {} - strip-outer@1.0.1: - dependencies: - escape-string-regexp: 1.0.5 - strtok3@6.3.0: dependencies: '@tokenizer/token': 0.3.0 @@ -26940,15 +24603,6 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - tar@6.2.1: - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - tar@7.5.7: dependencies: '@isaacs/fs-minipass': 4.0.1 @@ -26984,6 +24638,7 @@ snapshots: webpack: 5.105.0(esbuild@0.27.2) optionalDependencies: esbuild: 0.27.2 + optional: true terser@5.46.0: dependencies: @@ -27016,9 +24671,6 @@ snapshots: dependencies: semver: 5.7.2 - tiny-each-async@2.0.3: - optional: true - tiny-invariant@1.3.3: {} tiny-lru@11.4.7: {} @@ -27070,22 +24722,10 @@ snapshots: dependencies: tmp: 0.2.7 - tmp@0.0.33: - dependencies: - os-tmpdir: 1.0.2 - tmp@0.2.7: {} tmpl@1.0.5: {} - tn1150@0.1.0: - dependencies: - unorm: 1.6.0 - optional: true - - to-data-view@1.1.0: - optional: true - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -27123,10 +24763,6 @@ snapshots: trim-lines@3.0.1: {} - trim-repeated@1.0.0: - dependencies: - escape-string-regexp: 1.0.5 - trough@2.2.0: {} truncate-utf8-bytes@1.0.2: @@ -27243,8 +24879,6 @@ snapshots: type-fest@0.7.1: {} - type-fest@1.4.0: {} - type-fest@3.13.1: {} type-fest@5.4.3: @@ -27278,8 +24912,6 @@ snapshots: - supports-color - xstate - typescript@5.4.5: {} - typescript@5.9.3: {} ua-parser-js@0.7.41: {} @@ -27323,22 +24955,6 @@ snapshots: trough: 2.2.0 vfile: 6.0.3 - unique-filename@2.0.1: - dependencies: - unique-slug: 3.0.0 - - unique-filename@4.0.0: - dependencies: - unique-slug: 5.0.0 - - unique-slug@3.0.0: - dependencies: - imurmurhash: 0.1.4 - - unique-slug@5.0.0: - dependencies: - imurmurhash: 0.1.4 - unique-string@2.0.0: dependencies: crypto-random-string: 2.0.0 @@ -27366,15 +24982,10 @@ snapshots: unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 - universal-user-agent@6.0.1: {} - universalify@0.1.2: {} universalify@2.0.1: {} - unorm@1.6.0: - optional: true - unpipe@1.0.0: {} unplugin@2.3.11: @@ -27429,11 +25040,6 @@ snapshots: dependencies: react: 19.1.0 - username@5.1.0: - dependencies: - execa: 1.0.0 - mem: 4.3.0 - utf8-byte-length@1.0.5: {} utif2@4.1.0: @@ -27464,11 +25070,6 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 - validate-npm-package-license@3.0.4: - dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 - validate-npm-package-name@5.0.1: {} validate-npm-package-name@7.0.2: {} @@ -27857,6 +25458,7 @@ snapshots: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 + optional: true wcwidth@1.0.1: dependencies: @@ -27884,7 +25486,8 @@ snapshots: webidl-conversions@7.0.0: {} - webpack-sources@3.3.3: {} + webpack-sources@3.3.3: + optional: true webpack-virtual-modules@0.6.2: {} @@ -27919,6 +25522,7 @@ snapshots: - '@swc/core' - esbuild - uglify-js + optional: true whatwg-encoding@3.1.1: dependencies: @@ -27956,10 +25560,6 @@ snapshots: gopd: 1.2.0 has-tostringtag: 1.0.2 - which@1.3.1: - dependencies: - isexe: 2.0.0 - which@2.0.2: dependencies: isexe: 2.0.0 @@ -27983,9 +25583,6 @@ snapshots: wonka@6.3.5: {} - word-wrap@1.2.5: - optional: true - wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -28059,9 +25656,6 @@ snapshots: xmlchars@2.2.0: {} - xtend@4.0.2: - optional: true - y18n@5.0.8: {} yallist@3.1.1: {} @@ -28072,22 +25666,8 @@ snapshots: yaml@2.8.2: {} - yargs-parser@20.2.9: - optional: true - yargs-parser@21.1.1: {} - yargs@16.2.0: - dependencies: - cliui: 7.0.4 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - optional: true - yargs@17.7.2: dependencies: cliui: 8.0.1 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 52fcf91201..c248b64425 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -87,8 +87,6 @@ onlyBuiltDependencies: - electron - electron-winstaller - esbuild - - fs-xattr - - macos-alias - node-pty - tree-sitter-cli From 86582dff6be95e7da39b64df0880bc461a936866 Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Fri, 19 Jun 2026 23:52:44 -0700 Subject: [PATCH 06/19] remove unused build keys and updater flags --- apps/code/electron-builder.config.cjs | 2 -- apps/code/src/main/platform-adapters/electron-updater.ts | 9 ++++----- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/apps/code/electron-builder.config.cjs b/apps/code/electron-builder.config.cjs index ce6b1e0866..f169edc8ba 100644 --- a/apps/code/electron-builder.config.cjs +++ b/apps/code/electron-builder.config.cjs @@ -17,7 +17,6 @@ module.exports = { electronVersion: require("electron/package.json").version, npmRebuild: false, nodeGypRebuild: false, - generateUpdatesFilesForAllChannels: true, beforePack: "./scripts/before-pack.cjs", @@ -99,7 +98,6 @@ module.exports = { dmg: { format: "ULFO", - size: "4g", background: "build/dmg-background.png", icon: "build/app-icon.icns", iconSize: 80, diff --git a/apps/code/src/main/platform-adapters/electron-updater.ts b/apps/code/src/main/platform-adapters/electron-updater.ts index 1c675a7244..687b3167d6 100644 --- a/apps/code/src/main/platform-adapters/electron-updater.ts +++ b/apps/code/src/main/platform-adapters/electron-updater.ts @@ -7,12 +7,11 @@ import { injectable } from "inversify"; @injectable() export class ElectronUpdater implements IUpdater { constructor() { + // Without a logger electron-updater swallows its own errors, so route them + // to electron-log like the rest of the main process. autoDownload and + // install-on-quit are left at electron-updater's defaults (both already on), + // which is what UpdatesService's state machine expects. autoUpdater.logger = log; - autoUpdater.autoDownload = true; - autoUpdater.autoInstallOnAppQuit = true; - // Differential (blockmap) downloads are flaky behind some proxies/AV; - // prefer full-package downloads for reliability. - autoUpdater.disableDifferentialDownload = true; } public isSupported(): boolean { From 58149c37aa0aa48db7b06c705e6d41dfb9dc4441 Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Sat, 20 Jun 2026 00:01:39 -0700 Subject: [PATCH 07/19] restore settings and remove comments --- apps/code/electron-builder.config.cjs | 15 ++------------- apps/code/scripts/before-pack.cjs | 5 ----- apps/code/scripts/build.mjs | 4 ---- apps/code/scripts/dev.mjs | 4 ---- .../main/platform-adapters/electron-updater.ts | 8 +------- 5 files changed, 3 insertions(+), 33 deletions(-) diff --git a/apps/code/electron-builder.config.cjs b/apps/code/electron-builder.config.cjs index f169edc8ba..2d3268a6f3 100644 --- a/apps/code/electron-builder.config.cjs +++ b/apps/code/electron-builder.config.cjs @@ -17,14 +17,10 @@ module.exports = { electronVersion: require("electron/package.json").version, npmRebuild: false, nodeGypRebuild: false, + generateUpdatesFilesForAllChannels: true, beforePack: "./scripts/before-pack.cjs", - // The vite bundle (.vite/build) already inlines all pure-JS deps, so the - // asar only needs the externalized native modules that beforePack stages - // into apps/code/node_modules. This mirrors Forge's packageAfterCopy list; - // pulling in node_modules/**/* instead duplicates the whole workspace - // (@posthog, @anthropic-ai, ...) for ~1.2GB of dead weight. files: [ ".vite/build/**/*", ".vite/renderer/**/*", @@ -78,10 +74,6 @@ module.exports = { ], mac: { - // Plain target list so the --arm64/--x64 CLI flag selects the arch - // (per-arch CI runners). Space-free artifactName so the on-disk filename - // matches the (sanitized) url electron-builder writes into latest-mac.yml, - // which is what `gh release upload` puts on the GitHub release. target: ["dmg", "zip"], artifactName: "PostHog-Code-${version}-${arch}-mac.${ext}", icon: "build/app-icon.icns", @@ -98,6 +90,7 @@ module.exports = { dmg: { format: "ULFO", + size: "4g", background: "build/dmg-background.png", icon: "build/app-icon.icns", iconSize: 80, @@ -119,15 +112,11 @@ module.exports = { deleteAppDataOnUninstall: false, }, - // Match the legacy Forge MakerSquirrel package identity so existing - // Squirrel.Windows installs keep auto-updating through the transition. squirrelWindows: { name: "PostHogCode", }, linux: { - // Plain target list so --arm64/--x64 selects the arch on each runner. - // deb/rpm keep their own packageName-based names; AppImage isn't auto-updated. target: ["AppImage", "deb", "rpm"], icon: "build/app-icon.png", category: "Development", diff --git a/apps/code/scripts/before-pack.cjs b/apps/code/scripts/before-pack.cjs index e140699e26..0809d69e7d 100644 --- a/apps/code/scripts/before-pack.cjs +++ b/apps/code/scripts/before-pack.cjs @@ -3,8 +3,6 @@ const { cpSync, existsSync, mkdirSync, rmSync } = require("node:fs"); const path = require("node:path"); -// Arch enum values from builder-util / app-builder-lib -// 0=ia32, 1=x64, 2=armv7l, 3=arm64, 4=universal const ARCH_X64 = 1; const ARCH_ARM64 = 3; @@ -32,7 +30,6 @@ module.exports = async function beforePack(context) { const platformName = context.packager.platform.name; // 'mac', 'win', 'linux' const arch = context.arch; // numeric Arch enum - // Paths relative to this script's location (apps/code/scripts/) const rootNodeModules = path.resolve(__dirname, "../../../node_modules"); const localNodeModules = path.resolve(__dirname, "../node_modules"); @@ -85,8 +82,6 @@ module.exports = async function beforePack(context) { copyDep(watcherPkg, rootNodeModules, localNodeModules); } - // Remove @parcel/watcher/build so the host-compiled fallback binary cannot - // shadow the required platform-specific optional dependency at runtime. const watcherBuild = path.join(localNodeModules, "@parcel/watcher/build"); if (existsSync(watcherBuild)) { rmSync(watcherBuild, { recursive: true, force: true }); diff --git a/apps/code/scripts/build.mjs b/apps/code/scripts/build.mjs index f6b7221ba1..c4ddcd82cd 100644 --- a/apps/code/scripts/build.mjs +++ b/apps/code/scripts/build.mjs @@ -25,11 +25,7 @@ function runViteBuild(config) { } async function main() { - // Main must run first — its plugins copy claude-cli, codex-acp, grammars, - // plugins/posthog and drizzle migrations into .vite/build. await runViteBuild("vite.main.config.mts"); - - // Preload, workspace-server and renderer run after main. await runViteBuild("vite.preload.config.mts"); await runViteBuild("vite.workspace-server.config.mts"); await runViteBuild("vite.renderer.config.mts"); diff --git a/apps/code/scripts/dev.mjs b/apps/code/scripts/dev.mjs index 8ccfd5d1ce..543fe7c411 100644 --- a/apps/code/scripts/dev.mjs +++ b/apps/code/scripts/dev.mjs @@ -118,7 +118,6 @@ function waitForLine(child, pattern) { } async function main() { - // Start renderer Vite dev server on a fixed strict port. const rendererServer = spawn( "pnpm", [ @@ -139,7 +138,6 @@ async function main() { ); children.push(rendererServer); - // Track readiness: renderer URL + 3 watch build completions. let devServerUrl = null; const watchReady = { main: false, preload: false, ws: false }; @@ -202,7 +200,6 @@ async function main() { }); } - // Monitor renderer server for its URL. forwardAndCheck(rendererServer.stdout, process.stdout, (line) => { if (devServerUrl === null && line.includes(`localhost:${DEV_SERVER_PORT}`)) { devServerUrl = `http://localhost:${DEV_SERVER_PORT}`; @@ -211,7 +208,6 @@ async function main() { }); forwardAndCheck(rendererServer.stderr, process.stderr, () => {}); - // Built pattern: Vite prints "built in" or "watching for file changes" after first build. const builtPattern = /built in|watching for file changes/i; function startWatchBuild(config, readyKey) { diff --git a/apps/code/src/main/platform-adapters/electron-updater.ts b/apps/code/src/main/platform-adapters/electron-updater.ts index 687b3167d6..219c613c0f 100644 --- a/apps/code/src/main/platform-adapters/electron-updater.ts +++ b/apps/code/src/main/platform-adapters/electron-updater.ts @@ -7,11 +7,8 @@ import { injectable } from "inversify"; @injectable() export class ElectronUpdater implements IUpdater { constructor() { - // Without a logger electron-updater swallows its own errors, so route them - // to electron-log like the rest of the main process. autoDownload and - // install-on-quit are left at electron-updater's defaults (both already on), - // which is what UpdatesService's state machine expects. autoUpdater.logger = log; + autoUpdater.disableDifferentialDownload = true; } public isSupported(): boolean { @@ -22,9 +19,6 @@ export class ElectronUpdater implements IUpdater { ); } - // electron-updater configures itself from the app-update.yml that - // electron-builder bakes into the package from the publish config, so there - // is no runtime feed URL to set. Kept as a no-op for IUpdater compatibility. public setFeedUrl(_url: string): void { return; } From 06919afee1e67355727feabd6d7cb7c4eb4f21b3 Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Sat, 20 Jun 2026 00:23:34 -0700 Subject: [PATCH 08/19] fix review findings and remove dead feed code --- apps/code/scripts/before-pack.cjs | 31 +++-- apps/code/scripts/build.mjs | 9 +- apps/code/scripts/dev.mjs | 106 ++---------------- .../platform-adapters/electron-updater.ts | 4 - packages/core/src/updates/updates.test.ts | 35 +----- packages/core/src/updates/updates.ts | 18 --- packages/platform/src/updater.ts | 1 - 7 files changed, 40 insertions(+), 164 deletions(-) diff --git a/apps/code/scripts/before-pack.cjs b/apps/code/scripts/before-pack.cjs index 0809d69e7d..dabd24bd4f 100644 --- a/apps/code/scripts/before-pack.cjs +++ b/apps/code/scripts/before-pack.cjs @@ -11,11 +11,15 @@ function copyDep(name, rootNodeModules, localNodeModules) { if (!existsSync(src)) { const localSrc = path.join(localNodeModules, name); if (existsSync(localSrc)) { - console.log(`[before-pack] "${name}" already in local node_modules, skipping`); - return; + console.log( + `[before-pack] "${name}" already in local node_modules, skipping`, + ); + return true; } - console.warn(`[before-pack] "${name}" not found in root or local node_modules, skipping`); - return; + console.warn( + `[before-pack] "${name}" not found in root or local node_modules, skipping`, + ); + return false; } const dest = path.join(localNodeModules, name); @@ -24,11 +28,20 @@ function copyDep(name, rootNodeModules, localNodeModules) { rmSync(dest, { recursive: true, force: true }); cpSync(src, dest, { recursive: true, dereference: true }); console.log(`[before-pack] staged "${name}"`); + return true; +} + +function copyRequiredDep(name, rootNodeModules, localNodeModules) { + if (!copyDep(name, rootNodeModules, localNodeModules)) { + throw new Error( + `[before-pack] required native dependency "${name}" not found in node_modules`, + ); + } } module.exports = async function beforePack(context) { - const platformName = context.packager.platform.name; // 'mac', 'win', 'linux' - const arch = context.arch; // numeric Arch enum + const platformName = context.packager.platform.name; + const arch = context.arch; const rootNodeModules = path.resolve(__dirname, "../../../node_modules"); const localNodeModules = path.resolve(__dirname, "../node_modules"); @@ -65,7 +78,7 @@ module.exports = async function beforePack(context) { arch === ARCH_X64 ? "@parcel/watcher-darwin-x64" : "@parcel/watcher-darwin-arm64"; - copyDep(watcherPkg, rootNodeModules, localNodeModules); + copyRequiredDep(watcherPkg, rootNodeModules, localNodeModules); copyDep("file-icon", rootNodeModules, localNodeModules); copyDep("p-map", rootNodeModules, localNodeModules); } else if (platformName === "win") { @@ -73,13 +86,13 @@ module.exports = async function beforePack(context) { arch === ARCH_ARM64 ? "@parcel/watcher-win32-arm64" : "@parcel/watcher-win32-x64"; - copyDep(watcherPkg, rootNodeModules, localNodeModules); + copyRequiredDep(watcherPkg, rootNodeModules, localNodeModules); } else if (platformName === "linux") { const watcherPkg = arch === ARCH_ARM64 ? "@parcel/watcher-linux-arm64-glibc" : "@parcel/watcher-linux-x64-glibc"; - copyDep(watcherPkg, rootNodeModules, localNodeModules); + copyRequiredDep(watcherPkg, rootNodeModules, localNodeModules); } const watcherBuild = path.join(localNodeModules, "@parcel/watcher/build"); diff --git a/apps/code/scripts/build.mjs b/apps/code/scripts/build.mjs index c4ddcd82cd..7886cc0191 100644 --- a/apps/code/scripts/build.mjs +++ b/apps/code/scripts/build.mjs @@ -8,11 +8,10 @@ const root = path.resolve(__dirname, ".."); function runViteBuild(config) { return new Promise((resolve, reject) => { - const child = spawn( - "pnpm", - ["exec", "vite", "build", "--config", config], - { cwd: root, stdio: "inherit" }, - ); + const child = spawn("pnpm", ["exec", "vite", "build", "--config", config], { + cwd: root, + stdio: "inherit", + }); child.on("close", (code) => { if (code !== 0) { reject(new Error(`vite build -c ${config} exited with code ${code}`)); diff --git a/apps/code/scripts/dev.mjs b/apps/code/scripts/dev.mjs index 543fe7c411..a224c1bd7c 100644 --- a/apps/code/scripts/dev.mjs +++ b/apps/code/scripts/dev.mjs @@ -27,96 +27,6 @@ process.on("SIGTERM", () => { process.exit(0); }); -function spawnVite(args, { onLine } = {}) { - const child = spawn("pnpm", ["exec", "vite", ...args], { - cwd: root, - stdio: ["inherit", "pipe", "pipe"], - }); - children.push(child); - - function relay(stream, dest) { - stream.setEncoding("utf8"); - let buf = ""; - stream.on("data", (chunk) => { - buf += chunk; - let nl; - while ((nl = buf.indexOf("\n")) !== -1) { - const line = buf.slice(0, nl); - buf = buf.slice(nl + 1); - dest.write(line + "\n"); - if (onLine) onLine(line); - } - }); - stream.on("end", () => { - if (buf) { - dest.write(buf); - if (onLine) onLine(buf); - } - }); - } - - relay(child.stdout, process.stdout); - relay(child.stderr, process.stderr); - - return child; -} - -function waitForLine(child, pattern) { - return new Promise((resolve, reject) => { - let settled = false; - const handlers = { - stdout: [], - stderr: [], - }; - - function check(line) { - if (settled) return; - if (pattern.test(line)) { - settled = true; - resolve(line); - } - } - - child.stdout.setEncoding("utf8"); - child.stderr.setEncoding("utf8"); - - let stdoutBuf = ""; - let stderrBuf = ""; - - function processBuffer(buf, remaining, stream) { - buf += remaining; - let nl; - while ((nl = buf.indexOf("\n")) !== -1) { - const line = buf.slice(0, nl); - buf = buf.slice(nl + 1); - process[stream].write(line + "\n"); - check(line); - } - return buf; - } - - child.stdout.on("data", (chunk) => { - stdoutBuf = processBuffer(stdoutBuf, chunk, "stdout"); - }); - child.stderr.on("data", (chunk) => { - stderrBuf = processBuffer(stderrBuf, chunk, "stderr"); - }); - child.on("close", (code) => { - if (!settled) { - reject( - new Error(`Process exited with code ${code} before pattern matched`), - ); - } - }); - child.on("error", (err) => { - if (!settled) { - settled = true; - reject(err); - } - }); - }); -} - async function main() { const rendererServer = spawn( "pnpm", @@ -137,6 +47,10 @@ async function main() { }, ); children.push(rendererServer); + rendererServer.on("close", (code) => { + killAll("SIGTERM"); + process.exit(code ?? 0); + }); let devServerUrl = null; const watchReady = { main: false, preload: false, ws: false }; @@ -184,12 +98,13 @@ async function main() { let buf = ""; stream.on("data", (chunk) => { buf += chunk; - let nl; - while ((nl = buf.indexOf("\n")) !== -1) { + let nl = buf.indexOf("\n"); + while (nl !== -1) { const line = buf.slice(0, nl); buf = buf.slice(nl + 1); - dest.write(line + "\n"); + dest.write(`${line}\n`); onLine(line); + nl = buf.indexOf("\n"); } }); stream.on("end", () => { @@ -201,7 +116,10 @@ async function main() { } forwardAndCheck(rendererServer.stdout, process.stdout, (line) => { - if (devServerUrl === null && line.includes(`localhost:${DEV_SERVER_PORT}`)) { + if ( + devServerUrl === null && + line.includes(`localhost:${DEV_SERVER_PORT}`) + ) { devServerUrl = `http://localhost:${DEV_SERVER_PORT}`; maybeStartElectron(); } diff --git a/apps/code/src/main/platform-adapters/electron-updater.ts b/apps/code/src/main/platform-adapters/electron-updater.ts index 219c613c0f..f973c58f63 100644 --- a/apps/code/src/main/platform-adapters/electron-updater.ts +++ b/apps/code/src/main/platform-adapters/electron-updater.ts @@ -19,10 +19,6 @@ export class ElectronUpdater implements IUpdater { ); } - public setFeedUrl(_url: string): void { - return; - } - public check(): void { void autoUpdater.checkForUpdates(); } diff --git a/packages/core/src/updates/updates.test.ts b/packages/core/src/updates/updates.test.ts index eff612ba9e..3ba6e9f8d3 100644 --- a/packages/core/src/updates/updates.test.ts +++ b/packages/core/src/updates/updates.test.ts @@ -31,7 +31,6 @@ const { updaterHandlers, mockUpdater: { isSupported: vi.fn(() => true), - setFeedUrl: vi.fn(), check: vi.fn(), quitAndInstall: vi.fn(), onCheckStart: vi.fn((h: () => void) => { @@ -201,27 +200,10 @@ describe("UpdatesService", () => { it("prevents multiple initializations", async () => { await initializeService(service); - const firstCallCount = mockUpdater.setFeedUrl.mock.calls.length; - - // Simulate whenReady resolving again (shouldn't happen, but testing guard) - await initializeService(service); - - // setFeedURL should not be called again - expect(mockUpdater.setFeedUrl.mock.calls.length).toBe(firstCallCount); - }); - }); - - describe("feedUrl", () => { - it("constructs correct feed URL with platform, arch, and version", async () => { - mockAppMeta.platform = "darwin"; - mockAppMeta.arch = "arm64"; - mockAppMeta.version = "2.0.0"; - + const firstCallCount = mockUpdater.onError.mock.calls.length; await initializeService(service); - expect(mockUpdater.setFeedUrl).toHaveBeenCalledWith( - "https://update.electronjs.org/PostHog/code/darwin-arm64/2.0.0", - ); + expect(mockUpdater.onError.mock.calls.length).toBe(firstCallCount); }); }); @@ -986,18 +968,5 @@ describe("UpdatesService", () => { // Should not throw expect(() => service.checkForUpdates()).not.toThrow(); }); - - it("handles setFeedURL failure gracefully", async () => { - mockUpdater.setFeedUrl.mockImplementation(() => { - throw new Error("Invalid URL"); - }); - - // Should not throw - expect(() => { - const newService = new UpdatesService(); - injectPorts(newService); - newService.init(); - }).not.toThrow(); - }); }); }); diff --git a/packages/core/src/updates/updates.ts b/packages/core/src/updates/updates.ts index 8824a2483a..9804ab5671 100644 --- a/packages/core/src/updates/updates.ts +++ b/packages/core/src/updates/updates.ts @@ -42,9 +42,6 @@ type TransitionContext = { @injectable() export class UpdatesService extends TypedEventEmitter { - private static readonly SERVER_HOST = "https://update.electronjs.org"; - private static readonly REPO_OWNER = "PostHog"; - private static readonly REPO_NAME = "code"; private static readonly CHECK_INTERVAL_MS = 60 * 60 * 1000; // 1 hour private static readonly CHECK_TIMEOUT_MS = 60 * 1000; // 1 minute timeout for checks private static readonly INSTALL_SHUTDOWN_TIMEOUT_MS = 3000; @@ -98,11 +95,6 @@ export class UpdatesService extends TypedEventEmitter { return this.updater.isSupported(); } - private get feedUrl(): string { - const ctor = this.constructor as typeof UpdatesService; - return `${ctor.SERVER_HOST}/${ctor.REPO_OWNER}/${ctor.REPO_NAME}/${this.appMeta.platform}-${this.appMeta.arch}/${this.appMeta.version}`; - } - @postConstruct() init(): void { if (!this.isEnabled) { @@ -237,21 +229,12 @@ export class UpdatesService extends TypedEventEmitter { } this.initialized = true; - const feedUrl = this.feedUrl; this.log.info("Setting up auto updater", { - feedUrl, currentVersion: this.appMeta.version, platform: this.appMeta.platform, arch: this.appMeta.arch, }); - try { - this.updater.setFeedUrl(feedUrl); - } catch (error) { - this.log.error("Failed to set feed URL", { error }); - return; - } - this.unsubscribes.push( this.updater.onError((error) => this.handleError(error)), this.updater.onCheckStart(() => this.log.info("Checking for updates...")), @@ -284,7 +267,6 @@ export class UpdatesService extends TypedEventEmitter { this.log.error("Auto update error", { message: error.message, stack: error.stack, - feedUrl: this.feedUrl, state: this.state, }); diff --git a/packages/platform/src/updater.ts b/packages/platform/src/updater.ts index 4f375d0c62..7c314c3680 100644 --- a/packages/platform/src/updater.ts +++ b/packages/platform/src/updater.ts @@ -1,6 +1,5 @@ export interface IUpdater { isSupported(): boolean; - setFeedUrl(url: string): void; check(): void; quitAndInstall(): void; onCheckStart(handler: () => void): () => void; From 86035de39551ce0e54ddcfec0f937523819585b1 Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Sat, 20 Jun 2026 00:33:11 -0700 Subject: [PATCH 09/19] Update vite.main.config.mts --- apps/code/vite.main.config.mts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/code/vite.main.config.mts b/apps/code/vite.main.config.mts index 718e8ab9d6..f1b29546e9 100644 --- a/apps/code/vite.main.config.mts +++ b/apps/code/vite.main.config.mts @@ -1,4 +1,3 @@ -import { builtinModules } from "node:module"; import { execFile, execSync } from "node:child_process"; import { closeSync, @@ -13,6 +12,7 @@ import { statSync, } from "node:fs"; import { cp, mkdir, readdir, rm, writeFile } from "node:fs/promises"; +import { builtinModules } from "node:module"; import { tmpdir } from "node:os"; import path, { dirname, join } from "node:path"; import { fileURLToPath } from "node:url"; From 1c26bf1b15ffe3a1e68700e7660ced027284f0a3 Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Sat, 20 Jun 2026 00:33:59 -0700 Subject: [PATCH 10/19] Update electron-builder.config.cjs --- apps/code/electron-builder.config.cjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/code/electron-builder.config.cjs b/apps/code/electron-builder.config.cjs index 2d3268a6f3..0271b96121 100644 --- a/apps/code/electron-builder.config.cjs +++ b/apps/code/electron-builder.config.cjs @@ -75,6 +75,7 @@ module.exports = { mac: { target: ["dmg", "zip"], + // biome-ignore lint/suspicious/noTemplateCurlyInString: electron-builder interpolation tokens, not JS template literals artifactName: "PostHog-Code-${version}-${arch}-mac.${ext}", icon: "build/app-icon.icns", category: "public.app-category.productivity", @@ -103,6 +104,7 @@ module.exports = { win: { target: ["nsis", "squirrel"], + // biome-ignore lint/suspicious/noTemplateCurlyInString: electron-builder interpolation tokens, not JS template literals artifactName: "PostHog-Code-${version}-${arch}-win.${ext}", icon: "build/app-icon.ico", }, From cadcca4d50f91b74f7012fe4c86d9c0f9ad086f5 Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Sat, 20 Jun 2026 00:44:34 -0700 Subject: [PATCH 11/19] Update rebuild-better-sqlite3-node.mjs --- scripts/rebuild-better-sqlite3-node.mjs | 27 ++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/scripts/rebuild-better-sqlite3-node.mjs b/scripts/rebuild-better-sqlite3-node.mjs index 116c080c8f..2252d04cfd 100644 --- a/scripts/rebuild-better-sqlite3-node.mjs +++ b/scripts/rebuild-better-sqlite3-node.mjs @@ -7,6 +7,10 @@ // before the workspace-server DB tests (CI does this in test.yml) to swap the // binary back to a Node-ABI build. Re-run `pnpm install` (or the app's // postinstall) to restore the Electron build before running the app again. +// +// Falls back to compiling with node-gyp when prebuild-install has no binary for +// the running Node (e.g. a release too new to have published prebuilds), +// mirroring rebuild-better-sqlite3-electron.mjs. import { execFileSync } from "node:child_process"; import { realpathSync, rmSync } from "node:fs"; import { createRequire } from "node:module"; @@ -15,10 +19,19 @@ const pkg = realpathSync("node_modules/better-sqlite3"); rmSync(`${pkg}/build`, { recursive: true, force: true }); rmSync(`${pkg}/prebuilds`, { recursive: true, force: true }); -const prebuildInstall = createRequire(`${pkg}/`).resolve( - "prebuild-install/bin.js", -); -execFileSync(process.execPath, [prebuildInstall], { - cwd: pkg, - stdio: "inherit", -}); +const moduleRequire = createRequire(`${pkg}/`); +const run = (args) => + execFileSync(process.execPath, args, { cwd: pkg, stdio: "inherit" }); + +try { + run([moduleRequire.resolve("prebuild-install/bin.js")]); +} catch (err) { + console.warn( + `prebuild-install failed (${err.message}); compiling with node-gyp...`, + ); + run([ + moduleRequire.resolve("node-gyp/bin/node-gyp.js"), + "rebuild", + "--release", + ]); +} From 629b8037442db1ef5c24995183f4e5f29141f8b9 Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Sat, 20 Jun 2026 01:00:00 -0700 Subject: [PATCH 12/19] Update vite.renderer.config.mts --- apps/code/vite.renderer.config.mts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/code/vite.renderer.config.mts b/apps/code/vite.renderer.config.mts index 500bedb2d7..ae4b1cc67d 100644 --- a/apps/code/vite.renderer.config.mts +++ b/apps/code/vite.renderer.config.mts @@ -18,10 +18,11 @@ const pkg = JSON.parse( readFileSync(path.resolve(__dirname, "package.json"), "utf-8"), ); -export default defineConfig(({ mode }) => { +export default defineConfig(({ command, mode }) => { const env = loadEnv(mode, path.resolve(__dirname, "../.."), ""); return { + base: command === "build" ? "./" : "/", plugins: [ // Source Inspector: hold Shift+Alt+Ctrl (⌘ on Mac) and click any element // in dev to jump to its source. Dev-only so the data-tsd-source attrs it From 8b83765b4dfa7804ed415767b26883687b7e9e3e Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Sat, 20 Jun 2026 08:33:23 -0700 Subject: [PATCH 13/19] ignore tsconfig-paths errors from agent worktrees --- apps/code/vite.main.config.mts | 2 +- apps/code/vite.preload.config.mts | 2 +- apps/code/vite.renderer.config.mts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/code/vite.main.config.mts b/apps/code/vite.main.config.mts index f1b29546e9..96e7d03897 100644 --- a/apps/code/vite.main.config.mts +++ b/apps/code/vite.main.config.mts @@ -608,7 +608,7 @@ export default defineConfig(({ mode }) => { return { plugins: [ - tsconfigPaths(), + tsconfigPaths({ ignoreConfigErrors: true }), autoServicesPlugin(join(__dirname, "src/main/services")), fixFilenameCircularRef(), copyClaudeExecutable(), diff --git a/apps/code/vite.preload.config.mts b/apps/code/vite.preload.config.mts index 4766a6efd4..f912952373 100644 --- a/apps/code/vite.preload.config.mts +++ b/apps/code/vite.preload.config.mts @@ -9,7 +9,7 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url)); export default defineConfig({ plugins: [ - tsconfigPaths(), + tsconfigPaths({ ignoreConfigErrors: true }), autoServicesPlugin(path.join(__dirname, "src/main/services")), ], resolve: { diff --git a/apps/code/vite.renderer.config.mts b/apps/code/vite.renderer.config.mts index ae4b1cc67d..58d744e78c 100644 --- a/apps/code/vite.renderer.config.mts +++ b/apps/code/vite.renderer.config.mts @@ -42,7 +42,7 @@ export default defineConfig(({ command, mode }) => { }), tailwindcss(), react(), - tsconfigPaths(), + tsconfigPaths({ ignoreConfigErrors: true }), createPosthogPlugin(env, "posthog-code-renderer"), ].filter(Boolean), worker: { From 118a477f9cd2fd0c41a5855f9bdcf6ee8a3807c7 Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Sat, 20 Jun 2026 08:38:17 -0700 Subject: [PATCH 14/19] Update ProjectSwitcher.tsx --- packages/ui/src/features/sidebar/components/ProjectSwitcher.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/ui/src/features/sidebar/components/ProjectSwitcher.tsx b/packages/ui/src/features/sidebar/components/ProjectSwitcher.tsx index b6dda7b26c..3439ca6423 100644 --- a/packages/ui/src/features/sidebar/components/ProjectSwitcher.tsx +++ b/packages/ui/src/features/sidebar/components/ProjectSwitcher.tsx @@ -171,6 +171,7 @@ export function ProjectSwitcher({ return ( Date: Sat, 20 Jun 2026 08:48:06 -0700 Subject: [PATCH 15/19] Update vite.main.config.mts --- apps/code/vite.main.config.mts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/code/vite.main.config.mts b/apps/code/vite.main.config.mts index 96e7d03897..14d8b22b07 100644 --- a/apps/code/vite.main.config.mts +++ b/apps/code/vite.main.config.mts @@ -668,6 +668,8 @@ export default defineConfig(({ mode }) => { ], onwarn(warning, warn) { if (warning.code === "UNUSED_EXTERNAL_IMPORT") return; + if (warning.code === "EVAL" && warning.id?.includes("web-tree-sitter")) + return; warn(warning); }, }, From 9ef7ae37ec4288529bf2845d3196547f6b930c14 Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Sat, 20 Jun 2026 15:28:14 -0700 Subject: [PATCH 16/19] format onwarn block in vite main config --- apps/code/vite.main.config.mts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/code/vite.main.config.mts b/apps/code/vite.main.config.mts index 14d8b22b07..a8cf0602eb 100644 --- a/apps/code/vite.main.config.mts +++ b/apps/code/vite.main.config.mts @@ -668,7 +668,10 @@ export default defineConfig(({ mode }) => { ], onwarn(warning, warn) { if (warning.code === "UNUSED_EXTERNAL_IMPORT") return; - if (warning.code === "EVAL" && warning.id?.includes("web-tree-sitter")) + if ( + warning.code === "EVAL" && + warning.id?.includes("web-tree-sitter") + ) return; warn(warning); }, From de167fbd5885ce544d507ce9071536e7b0d2f0a7 Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Sat, 20 Jun 2026 15:28:17 -0700 Subject: [PATCH 17/19] pin node-gyp undici to fix native build crash --- pnpm-lock.yaml | 11 ++++++----- pnpm-workspace.yaml | 7 +++++++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 38a1266ffc..4fb9699f4e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -85,6 +85,7 @@ catalogs: overrides: zod: 4.3.6 '@posthog/quill>@base-ui/react': ^1.3.0 + node-gyp>undici: 8.4.1 patchedDependencies: node-pty: @@ -12114,9 +12115,9 @@ packages: resolution: {integrity: sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==} engines: {node: '>=18.17'} - undici@6.26.0: - resolution: {integrity: sha512-4yqz8a3n5HmGTlsbADNtr/dJlhkh/55Rq798G6ibiULcXbDtaLpTl1pvdqcbFfeoj3iSi52lePFM7h9H21cw/A==} - engines: {node: '>=18.17'} + undici@8.4.1: + resolution: {integrity: sha512-RNHlB4fxZK0IrkhBsxhlbx7s8kFWwr7rzzOqj5nvZugw3ig3RsB7KW3zVlV0eu8POl+rx5d1hmL7rRg0z1owow==} + engines: {node: '>=22.19.0'} unicode-canonical-property-names-ecmascript@2.0.1: resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} @@ -22573,7 +22574,7 @@ snapshots: semver: 7.7.3 tar: 7.5.7 tinyglobby: 0.2.15 - undici: 6.26.0 + undici: 8.4.1 which: 6.0.1 node-int64@0.4.0: {} @@ -24930,7 +24931,7 @@ snapshots: undici@6.23.0: {} - undici@6.26.0: {} + undici@8.4.1: {} unicode-canonical-property-names-ecmascript@2.0.1: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index c248b64425..41749eda88 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -78,6 +78,13 @@ overrides: # catalog protocol leaked into the published package and can't resolve for an # external dep); pin it to a real version so installs of quill succeed. '@posthog/quill>@base-ui/react': ^1.3.0 + # node-gyp 12 downloads Node headers via undici (^6.25.0). undici through 7.27.2 + # crashes intermittently with `assert(!this.paused)` in the H1 parser's finish() + # when the socket ends while the body stream is paused, which happens when a + # native module compiles from source under backpressure (e.g. node-pty in CI). + # undici 8.4.1 dropped that assertion and handles the paused case gracefully; + # node-gyp only uses stable public exports (fetch/Agent), so 8.x is safe. + 'node-gyp>undici': 8.4.1 onlyBuiltDependencies: - '@parcel/watcher' From 68343006a82affcca4a4b10bfc655710b8441d5a Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Sat, 20 Jun 2026 23:09:24 -0700 Subject: [PATCH 18/19] harden mac manifest merge and build scripts --- .github/workflows/code-release.yml | 10 ++- apps/code/scripts/dev.mjs | 12 ++- apps/code/scripts/merge-mac-manifests.mjs | 62 +++++++++----- .../code/scripts/merge-mac-manifests.test.mjs | 81 +++++++++++++++++++ 4 files changed, 139 insertions(+), 26 deletions(-) create mode 100644 apps/code/scripts/merge-mac-manifests.test.mjs diff --git a/.github/workflows/code-release.yml b/.github/workflows/code-release.yml index f267017508..d6b0ede275 100644 --- a/.github/workflows/code-release.yml +++ b/.github/workflows/code-release.yml @@ -146,18 +146,21 @@ jobs: - name: Build release artifacts env: APP_VERSION: ${{ steps.version.outputs.version }} + MATRIX_ARCH: ${{ matrix.arch }} working-directory: apps/code run: | node scripts/build.mjs - if [[ "${{ matrix.arch }}" == "arm64" ]]; then + if [[ "$MATRIX_ARCH" == "arm64" ]]; then pnpm exec electron-builder build --mac --arm64 --publish never --config electron-builder.config.cjs else pnpm exec electron-builder build --mac --x64 --publish never --config electron-builder.config.cjs fi - name: Verify package + env: + MATRIX_ARCH: ${{ matrix.arch }} run: | - if [[ "${{ matrix.arch }}" == "arm64" ]]; then + if [[ "$MATRIX_ARCH" == "arm64" ]]; then APP_BUNDLE="apps/code/out/mac-arm64/PostHog Code.app" else APP_BUNDLE="apps/code/out/mac/PostHog Code.app" @@ -416,10 +419,11 @@ jobs: - name: Build release artifacts env: APP_VERSION: ${{ steps.version.outputs.version }} + MATRIX_ARCH: ${{ matrix.arch }} working-directory: apps/code run: | node scripts/build.mjs - if [[ "${{ matrix.arch }}" == "arm64" ]]; then + if [[ "$MATRIX_ARCH" == "arm64" ]]; then pnpm exec electron-builder build --linux --arm64 --publish never --config electron-builder.config.cjs else pnpm exec electron-builder build --linux --x64 --publish never --config electron-builder.config.cjs diff --git a/apps/code/scripts/dev.mjs b/apps/code/scripts/dev.mjs index a224c1bd7c..56eb4feb95 100644 --- a/apps/code/scripts/dev.mjs +++ b/apps/code/scripts/dev.mjs @@ -18,6 +18,14 @@ function killAll(signal = "SIGTERM") { } } +function onSpawnError(label) { + return (err) => { + console.error(`Failed to start ${label}: ${err.message}`); + killAll("SIGTERM"); + process.exit(1); + }; +} + process.on("SIGINT", () => { killAll("SIGTERM"); process.exit(0); @@ -47,6 +55,7 @@ async function main() { }, ); children.push(rendererServer); + rendererServer.on("error", onSpawnError("renderer dev server")); rendererServer.on("close", (code) => { killAll("SIGTERM"); process.exit(code ?? 0); @@ -87,6 +96,7 @@ async function main() { }, ); children.push(electron); + electron.on("error", onSpawnError("electron")); electron.on("close", (code) => { killAll("SIGTERM"); process.exit(code ?? 0); @@ -147,6 +157,7 @@ async function main() { }, ); children.push(child); + child.on("error", onSpawnError(`vite watch (${readyKey})`)); forwardAndCheck(child.stdout, process.stdout, (line) => { if (!watchReady[readyKey] && builtPattern.test(line)) { watchReady[readyKey] = true; @@ -154,7 +165,6 @@ async function main() { } }); forwardAndCheck(child.stderr, process.stderr, () => {}); - return child; } startWatchBuild("vite.main.config.mts", "main"); diff --git a/apps/code/scripts/merge-mac-manifests.mjs b/apps/code/scripts/merge-mac-manifests.mjs index a154609b06..46285a6db2 100644 --- a/apps/code/scripts/merge-mac-manifests.mjs +++ b/apps/code/scripts/merge-mac-manifests.mjs @@ -1,32 +1,50 @@ #!/usr/bin/env node -import { readFileSync, writeFileSync } from "node:fs"; +import { readFileSync, realpathSync, writeFileSync } from "node:fs"; +import { fileURLToPath } from "node:url"; import { parse, stringify } from "yaml"; -const [, , arm64Path, x64Path, outputPath] = process.argv; +export function mergeManifests(arm64, x64) { + if (arm64.version !== x64.version) { + throw new Error( + `Manifest version mismatch: arm64=${arm64.version} x64=${x64.version}`, + ); + } -if (!arm64Path || !x64Path || !outputPath) { - console.error( - "Usage: merge-mac-manifests.mjs ", - ); - process.exit(1); -} + const seenUrls = new Set(); + const mergedFiles = []; + for (const file of [...arm64.files, ...x64.files]) { + if (!seenUrls.has(file.url)) { + seenUrls.add(file.url); + mergedFiles.push(file); + } + } -const arm64 = parse(readFileSync(arm64Path, "utf8")); -const x64 = parse(readFileSync(x64Path, "utf8")); + return { ...arm64, files: mergedFiles }; +} -const seenUrls = new Set(); -const mergedFiles = []; +function main() { + const [, , arm64Path, x64Path, outputPath] = process.argv; -for (const file of [...arm64.files, ...x64.files]) { - if (!seenUrls.has(file.url)) { - seenUrls.add(file.url); - mergedFiles.push(file); + if (!arm64Path || !x64Path || !outputPath) { + console.error( + "Usage: merge-mac-manifests.mjs ", + ); + process.exit(1); } -} -const merged = { ...arm64, files: mergedFiles }; + const arm64 = parse(readFileSync(arm64Path, "utf8")); + const x64 = parse(readFileSync(x64Path, "utf8")); + const merged = mergeManifests(arm64, x64); -writeFileSync(outputPath, stringify(merged), "utf8"); -console.log( - `Merged ${mergedFiles.length} files from arm64+x64 manifests -> ${outputPath}`, -); + writeFileSync(outputPath, stringify(merged), "utf8"); + console.log( + `Merged ${merged.files.length} files from arm64+x64 manifests -> ${outputPath}`, + ); +} + +if ( + process.argv[1] && + realpathSync(process.argv[1]) === fileURLToPath(import.meta.url) +) { + main(); +} diff --git a/apps/code/scripts/merge-mac-manifests.test.mjs b/apps/code/scripts/merge-mac-manifests.test.mjs new file mode 100644 index 0000000000..9493491cfd --- /dev/null +++ b/apps/code/scripts/merge-mac-manifests.test.mjs @@ -0,0 +1,81 @@ +import { describe, expect, it } from "vitest"; +import { mergeManifests } from "./merge-mac-manifests.mjs"; + +const arm64Manifest = () => ({ + version: "1.2.3", + releaseDate: "2026-06-20T00:00:00.000Z", + path: "PostHog-Code-1.2.3-arm64-mac.zip", + sha512: "arm64-sha", + files: [ + { url: "PostHog-Code-1.2.3-arm64-mac.zip", sha512: "arm64-sha", size: 1 }, + ], +}); + +const x64Manifest = () => ({ + version: "1.2.3", + releaseDate: "2026-06-20T00:00:01.000Z", + path: "PostHog-Code-1.2.3-x64-mac.zip", + sha512: "x64-sha", + files: [ + { url: "PostHog-Code-1.2.3-x64-mac.zip", sha512: "x64-sha", size: 2 }, + ], +}); + +describe("mergeManifests", () => { + it("combines distinct files from both manifests, arm64 first", () => { + const merged = mergeManifests(arm64Manifest(), x64Manifest()); + + expect(merged.files.map((f) => f.url)).toEqual([ + "PostHog-Code-1.2.3-arm64-mac.zip", + "PostHog-Code-1.2.3-x64-mac.zip", + ]); + }); + + it("dedupes files that share a url, keeping the arm64 entry", () => { + const shared = { url: "shared.zip", sha512: "from-arm64", size: 1 }; + const arm64 = { ...arm64Manifest(), files: [shared] }; + const x64 = { + ...x64Manifest(), + files: [{ url: "shared.zip", sha512: "from-x64", size: 2 }], + }; + + const merged = mergeManifests(arm64, x64); + + expect(merged.files).toHaveLength(1); + expect(merged.files[0].sha512).toBe("from-arm64"); + }); + + it("takes top-level metadata from the arm64 manifest", () => { + const merged = mergeManifests(arm64Manifest(), x64Manifest()); + + expect(merged.version).toBe("1.2.3"); + expect(merged.releaseDate).toBe("2026-06-20T00:00:00.000Z"); + expect(merged.path).toBe("PostHog-Code-1.2.3-arm64-mac.zip"); + expect(merged.sha512).toBe("arm64-sha"); + }); + + it("throws when the two manifests report different versions", () => { + const x64 = { ...x64Manifest(), version: "1.2.4" }; + + expect(() => mergeManifests(arm64Manifest(), x64)).toThrow( + "version mismatch", + ); + }); + + it("keeps the entries from the non-empty side when one has no files", () => { + const arm64 = { ...arm64Manifest(), files: [] }; + + const merged = mergeManifests(arm64, x64Manifest()); + + expect(merged.files.map((f) => f.url)).toEqual([ + "PostHog-Code-1.2.3-x64-mac.zip", + ]); + }); + + it("returns an empty file list when both sides are empty", () => { + const arm64 = { ...arm64Manifest(), files: [] }; + const x64 = { ...x64Manifest(), files: [] }; + + expect(mergeManifests(arm64, x64).files).toEqual([]); + }); +}); From 5e901640f1739713986532ab076adad0d33bb234 Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Sat, 20 Jun 2026 23:09:39 -0700 Subject: [PATCH 19/19] tidy updater event wrappers and naming --- .../src/main/platform-adapters/electron-updater.ts | 10 ++++------ packages/core/src/updates/updates.ts | 8 ++++---- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/apps/code/src/main/platform-adapters/electron-updater.ts b/apps/code/src/main/platform-adapters/electron-updater.ts index f973c58f63..e4c9cbf9be 100644 --- a/apps/code/src/main/platform-adapters/electron-updater.ts +++ b/apps/code/src/main/platform-adapters/electron-updater.ts @@ -28,9 +28,8 @@ export class ElectronUpdater implements IUpdater { } public onCheckStart(handler: () => void): () => void { - const l = () => handler(); - autoUpdater.on("checking-for-update", l); - return () => autoUpdater.off("checking-for-update", l); + autoUpdater.on("checking-for-update", handler); + return () => autoUpdater.off("checking-for-update", handler); } public onUpdateAvailable(handler: () => void): () => void { @@ -46,9 +45,8 @@ export class ElectronUpdater implements IUpdater { } public onNoUpdate(handler: () => void): () => void { - const l = () => handler(); - autoUpdater.on("update-not-available", l); - return () => autoUpdater.off("update-not-available", l); + autoUpdater.on("update-not-available", handler); + return () => autoUpdater.off("update-not-available", handler); } public onError(handler: (error: Error) => void): () => void { diff --git a/packages/core/src/updates/updates.ts b/packages/core/src/updates/updates.ts index 9804ab5671..04f02128c6 100644 --- a/packages/core/src/updates/updates.ts +++ b/packages/core/src/updates/updates.ts @@ -329,21 +329,21 @@ export class UpdatesService extends TypedEventEmitter { } } - private handleUpdateDownloaded(releaseName?: string): void { + private handleUpdateDownloaded(version?: string): void { this.clearCheckTimeout(); if (this.isUpdateStaged()) { this.log.info("Ignoring duplicate update-downloaded event", { existingVersion: this.downloadedVersion, - incomingVersion: releaseName, + incomingVersion: version, }); return; } - this.downloadedVersion = releaseName ?? null; + this.downloadedVersion = version ?? null; this.transitionTo("ready", { reason: "update downloaded", - incomingVersion: releaseName ?? null, + incomingVersion: version ?? null, }); this.clearCheckInterval(); this.emitStatus(this.stagedStatusPayload());