diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e0f596a4..036ee069 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,7 @@ jobs: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 with: - version: 10 + version: 10.11.0 - uses: actions/setup-node@v4 with: node-version: 20 @@ -46,7 +46,7 @@ jobs: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 with: - version: 10 + version: 10.11.0 - uses: actions/setup-node@v4 with: node-version: 20 @@ -129,7 +129,7 @@ jobs: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 with: - version: 10 + version: 10.11.0 - uses: actions/setup-node@v4 with: node-version: 20 @@ -137,3 +137,56 @@ jobs: - run: pnpm install - run: pnpm --filter @nnmodelling/mcp-server run build - run: pnpm --filter @nnmodelling/mcp-server run test + + flatpak-ci: + name: Flatpak build and smoke test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + with: + version: 10.11.0 + - uses: actions/setup-node@v4 + with: + node-version: 20 + cache: pnpm + - run: pnpm install --frozen-lockfile + - name: Test Electron host + run: pnpm --dir desktop test + - name: Install Flatpak tooling + run: | + sudo apt-get update + sudo apt-get install --yes dbus-daemon dbus-x11 flatpak flatpak-builder xauth xvfb + flatpak remote-add --if-not-exists --user flathub \ + https://dl.flathub.org/repo/flathub.flatpakrepo + - name: Build and install Flatpak + run: | + flatpak-builder --force-clean --user \ + --install-deps-from=flathub \ + --repo=repo --install builddir \ + io.github.LucaSforza.NNModelling.yml + - name: Validate installed Flatpak + run: | + flatpak info --user io.github.LucaSforza.NNModelling + test -x "$(flatpak info --user --show-location \ + io.github.LucaSforza.NNModelling)/files/bin/run.sh" + - name: Smoke test Flatpak launch + run: | + set +e + timeout --signal=TERM --kill-after=5s 20s \ + dbus-run-session -- xvfb-run -a -s "-screen 0 1280x1024x24" \ + flatpak run --user io.github.LucaSforza.NNModelling --disable-gpu + status=$? + if [ "$status" -ne 124 ]; then + echo "Flatpak exited before the smoke-test timeout (status $status)" + exit "$status" + fi + - name: Build Flatpak bundle + run: | + flatpak build-bundle repo NNModelling.flatpak \ + io.github.LucaSforza.NNModelling \ + --runtime-repo=https://dl.flathub.org/repo/flathub.flatpakrepo + - uses: actions/upload-artifact@v4 + with: + name: nnmodelling-flatpak + path: NNModelling.flatpak diff --git a/.github/workflows/deploy-pages.yml b/.github/workflows/deploy-pages.yml index f018f2ba..310f0148 100644 --- a/.github/workflows/deploy-pages.yml +++ b/.github/workflows/deploy-pages.yml @@ -27,7 +27,7 @@ jobs: - name: Set up pnpm uses: pnpm/action-setup@v4 with: - version: 10 + version: 10.11.0 - name: Set up Node.js uses: actions/setup-node@v4 diff --git a/.gitignore b/.gitignore index 67165b53..bbe7e479 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,12 @@ __pycache__/ dist/ front-end/dist/ mcp-server/dist/ +desktop/release/ +desktop/renderer/ +.flatpak-builder/ +builddir/ +repo/ +NNModelling.flatpak docs2/build/ diff --git a/README.md b/README.md index aa5f933f..54d98f5d 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,12 @@ A visual editor and DSL for designing neural networks. Create diagrams in the br The GitHub Pages demo contains the visual editor and runs entirely in the browser. Remote training, conversion, and MCP/browser integration require a local or separately deployed backend. +Linux users can also run the same editor as an Electron Flatpak. The Flatpak +contains the desktop shell and shared frontend; FastAPI, Valkey, Podman/Docker +and worker images remain in the separately managed backend. See the +[Linux desktop documentation](docs2/source/desktop.rst) for source builds, +installation and the exact `app://nnmodelling` backend origin. + ``` Stereotypes/ (JSON) → Svelte Flow Editor → NNTree (JSON) → convert.py → Hydra YAML → main.py → Training → infer.py → Inference diff --git a/converted/backend/README.md b/converted/backend/README.md index a9102679..27b414a2 100644 --- a/converted/backend/README.md +++ b/converted/backend/README.md @@ -26,6 +26,20 @@ NNM_ALLOWED_ORIGINS=http://192.168.1.30:5174 \ just --justfile converted/backend/justfile backend ``` +The Linux Flatpak uses the same remote backend as the web editor. Its renderer +origin is exactly `app://nnmodelling`; include that origin when the backend +is used by the packaged application, while retaining the origins for any web +frontends that should remain connected: + +```bash +NNM_ALLOWED_ORIGINS=http://127.0.0.1:5174,http://localhost:5174,app://nnmodelling \ +just --justfile converted/backend/justfile backend +``` + +The Flatpak does not bundle FastAPI, Valkey, Podman/Docker, worker images or +training jobs. Pairing and bearer-token ownership are unchanged across the web +and desktop renderers. Do not replace the explicit origin list with `*`. + `backend` creates an untracked `backend-secrets/admin.token` with mode `0600` when needed. Approve the code displayed by the frontend: diff --git a/converted/backend/docker-compose.yml b/converted/backend/docker-compose.yml index e80c2301..842138d3 100644 --- a/converted/backend/docker-compose.yml +++ b/converted/backend/docker-compose.yml @@ -48,7 +48,7 @@ services: NNM_BACKEND_PACKAGE_ROOT: ${NNM_HOST_JOBS:?set NNM_HOST_JOBS to the absolute host jobs directory}/packages NNM_BACKEND_DATASET_ROOT: ${NNM_HOST_JOBS:?set NNM_HOST_JOBS to the absolute host jobs directory}/datasets NNM_ADMIN_TOKEN_FILE: /run/secrets/nnm-admin-token - NNM_ALLOWED_ORIGINS: ${NNM_ALLOWED_ORIGINS:-http://127.0.0.1:5174,http://localhost:5174,http://127.0.0.1:5173,http://localhost:5173} + NNM_ALLOWED_ORIGINS: ${NNM_ALLOWED_ORIGINS:-http://127.0.0.1:5174,http://localhost:5174,http://127.0.0.1:5173,http://localhost:5173,app://nnmodelling} NNM_SESSION_TTL: ${NNM_SESSION_TTL:-24h} NNM_CONTAINER_ENGINE: "${NNM_CONTAINER_ENGINE:-podman}" NNM_CONTAINER_IMAGE: ${NNM_CONTAINER_IMAGE:?set NNM_CONTAINER_IMAGE to a digest-pinned worker image} diff --git a/converted/src/backend/app.py b/converted/src/backend/app.py index 98d909c6..8175a09e 100644 --- a/converted/src/backend/app.py +++ b/converted/src/backend/app.py @@ -50,6 +50,7 @@ "http://127.0.0.1:5174", "http://localhost:5173", "http://localhost:5174", + "app://nnmodelling", ] diff --git a/converted/src/tests/test_backend_origins.py b/converted/src/tests/test_backend_origins.py new file mode 100644 index 00000000..294073d1 --- /dev/null +++ b/converted/src/tests/test_backend_origins.py @@ -0,0 +1,53 @@ +"""Frontend-origin configuration contracts for the backend API.""" + +from __future__ import annotations + +import asyncio +from pathlib import Path +from types import SimpleNamespace + +import httpx + +from backend.app import DEFAULT_ALLOWED_ORIGINS, _allowed_origins_from_environment, create_app + + +def test_default_allowed_origins_include_the_flatpak_renderer() -> None: + """The packaged renderer has a stable, exact CORS origin.""" + + assert "app://nnmodelling" in DEFAULT_ALLOWED_ORIGINS + + +def test_configured_allowed_origins_preserve_the_desktop_origin(monkeypatch) -> None: + """Explicit deployment configuration remains authoritative and normalized.""" + + monkeypatch.setenv( + "NNM_ALLOWED_ORIGINS", + "https://editor.example, app://nnmodelling/", + ) + + assert _allowed_origins_from_environment() == [ + "https://editor.example", + "app://nnmodelling", + ] + + +def test_default_cors_allows_the_flatpak_renderer_origin() -> None: + """A desktop preflight receives the exact origin without wildcard access.""" + + app = create_app(manager=SimpleNamespace(artifact_root=Path("datasets"))) + + async def exercise() -> httpx.Response: + transport = httpx.ASGITransport(app=app) + async with httpx.AsyncClient(transport=transport, base_url="http://backend") as client: + return await client.options( + "/health", + headers={ + "Origin": "app://nnmodelling", + "Access-Control-Request-Method": "GET", + }, + ) + + response = asyncio.run(exercise()) + assert response.status_code == 200 + assert response.headers["access-control-allow-origin"] == "app://nnmodelling" + assert response.headers.get("access-control-allow-credentials") is None diff --git a/desktop/package.json b/desktop/package.json new file mode 100644 index 00000000..551b4ff5 --- /dev/null +++ b/desktop/package.json @@ -0,0 +1,50 @@ +{ + "name": "@nnmodelling/desktop", + "private": true, + "version": "0.1.0", + "description": "NNModelling Electron desktop host", + "author": "Luca Sforza", + "license": "GPL-3.0-or-later", + "desktopName": "io.github.LucaSforza.NNModelling.desktop", + "main": "dist/main.js", + "type": "commonjs", + "scripts": { + "build:renderer": "VITE_DESKTOP=1 pnpm --dir ../front-end build && rm -rf renderer && cp -a ../front-end/dist renderer", + "build:host": "rm -rf dist && tsc -p tsconfig.json", + "build": "pnpm run build:renderer && pnpm run build:host && electron-builder --linux dir", + "start": "electron .", + "package:dir": "electron-builder --linux dir", + "test": "vitest run src" + }, + "devDependencies": { + "@types/node": "^22.0.0", + "electron": "38.8.6", + "electron-builder": "26.15.3", + "typescript": "^5.8.3", + "vitest": "^4.1.7" + }, + "build": { + "appId": "io.github.LucaSforza.NNModelling", + "productName": "NNModelling", + "files": [ + "dist/**/*", + "renderer/**/*", + "package.json" + ], + "directories": { + "output": "release" + }, + "electronDownload": { + "unsafelyDisableChecksums": false, + "checksums": { + "electron-v38.8.6-linux-x64.zip": "41a8f2bc7c0be836b4dc8de19550a65947cffa58433753032af36ee3b849e8be", + "electron-v38.8.6-linux-arm64.zip": "add5aaa35ed57e60f84b780f6461064b912de55effd27ec11e338462243867a5" + } + }, + "linux": { + "target": ["dir"], + "executableName": "nnmodelling", + "category": "Education" + } + } +} diff --git a/desktop/src/__tests__/security.test.ts b/desktop/src/__tests__/security.test.ts new file mode 100644 index 00000000..a1a83eb1 --- /dev/null +++ b/desktop/src/__tests__/security.test.ts @@ -0,0 +1,20 @@ +import { describe, expect, test } from "vitest" +import { isAllowedNavigation, MAIN_WINDOW_WEB_PREFERENCES } from "../security" + +describe("desktop renderer boundary", () => { + test("keeps Node outside the sandboxed, context-isolated renderer", () => { + expect(MAIN_WINDOW_WEB_PREFERENCES).toMatchObject({ + contextIsolation: true, + nodeIntegration: false, + sandbox: true, + webSecurity: true, + }) + }) + + test("allows only application content and the configured development origin", () => { + expect(isAllowedNavigation("app://nnmodelling/index.html")).toBe(true) + expect(isAllowedNavigation("https://example.com/")).toBe(false) + expect(isAllowedNavigation("http://127.0.0.1:5173/editor", "http://127.0.0.1:5173")).toBe(true) + expect(isAllowedNavigation("http://127.0.0.1:5174/", "http://127.0.0.1:5173")).toBe(false) + }) +}) diff --git a/desktop/src/main.ts b/desktop/src/main.ts new file mode 100644 index 00000000..9fff4bac --- /dev/null +++ b/desktop/src/main.ts @@ -0,0 +1,232 @@ +import { app, BrowserWindow, dialog, ipcMain, net, protocol, session, type IpcMainInvokeEvent } from "electron" +import { randomUUID } from "node:crypto" +import { promises as fs } from "node:fs" +import { dirname, isAbsolute, join, relative, resolve, sep } from "node:path" +import { pathToFileURL } from "node:url" +import { IPC_CHANNELS, type DesktopProjectCapability, type DesktopProjectEntry, type DesktopProjectFile, type ProjectPathRequest, type ProjectRemoveRequest, type ProjectWriteRequest } from "./protocol" +import { isAllowedNavigation, MAIN_WINDOW_WEB_PREFERENCES } from "./security" + +protocol.registerSchemesAsPrivileged([{ + scheme: "app", + privileges: { standard: true, secure: true, supportFetchAPI: true, stream: true, corsEnabled: true }, +}]) + +type Capability = { + readonly root: string + readonly senderId: number +} + +const capabilities = new Map() +const MAX_PROJECT_FILE_BYTES = 256 * 1024 * 1024 +let rendererRoot = resolve(process.env.NNM_RENDERER_DIST ?? join(__dirname, "../../front-end/dist")) +let mainWindow: BrowserWindow | undefined + +function registerProjectHandlers(): void { + ipcMain.handle(IPC_CHANNELS.pickDirectory, async (event): Promise => { + assertMainRenderer(event) + const result = await dialog.showOpenDialog(mainWindow!, { + properties: ["openDirectory", "createDirectory"], + title: "Choose an NNModelling project directory", + }) + if (result.canceled || result.filePaths[0] === undefined) return null + const root = await fs.realpath(result.filePaths[0]) + const capability = randomUUID() + capabilities.set(capability, { root, senderId: event.sender.id }) + return { capability, name: root.split(sep).at(-1) || "project" } + }) + + ipcMain.handle(IPC_CHANNELS.ensureDirectory, async (event, request: ProjectPathRequest): Promise => { + const target = await capabilityPath(event, request) + await fs.mkdir(target, { recursive: true }) + }) + + ipcMain.handle(IPC_CHANNELS.stat, async (event, request: ProjectPathRequest): Promise<"file" | "directory" | null> => { + const target = await capabilityPath(event, request) + try { + const stat = await fs.lstat(target) + if (stat.isSymbolicLink()) throw new Error("symbolic links are not allowed in projects") + if (stat.isDirectory()) return "directory" + if (stat.isFile()) return "file" + throw new Error("project entry is not a regular file or directory") + } catch (error) { + if (isNotFound(error)) return null + throw error + } + }) + + ipcMain.handle(IPC_CHANNELS.listDirectory, async (event, request: ProjectPathRequest): Promise => { + const target = await capabilityPath(event, request) + const entries = await fs.readdir(target, { withFileTypes: true }) + return entries.map((entry) => { + if (entry.isSymbolicLink()) throw new Error(`symbolic links are not allowed in projects: ${entry.name}`) + if (!entry.isDirectory() && !entry.isFile()) throw new Error(`unsupported project entry: ${entry.name}`) + return { name: entry.name, kind: entry.isDirectory() ? "directory" : "file" } + }) + }) + + ipcMain.handle(IPC_CHANNELS.readFile, async (event, request: ProjectPathRequest): Promise => { + const target = await capabilityPath(event, request) + const stat = await fs.lstat(target) + if (stat.isSymbolicLink() || !stat.isFile()) throw new Error("project entry is not a regular file") + if (stat.size > MAX_PROJECT_FILE_BYTES) throw new Error("project file is too large") + const data = await fs.readFile(target) + return { encoding: "base64", data: data.toString("base64") } + }) + + ipcMain.handle(IPC_CHANNELS.writeFile, async (event, request: ProjectWriteRequest): Promise => { + const target = await capabilityPath(event, request) + const bytes = decodeFile(request.value) + if (bytes.byteLength > MAX_PROJECT_FILE_BYTES) throw new Error("project file is too large") + await fs.mkdir(dirname(target), { recursive: true }) + const temporary = `${target}.nnm-tmp-${randomUUID()}` + try { + await fs.writeFile(temporary, bytes, { flag: "wx", mode: 0o600 }) + await fs.rename(temporary, target) + } finally { + await fs.rm(temporary, { force: true }).catch(() => undefined) + } + }) + + ipcMain.handle(IPC_CHANNELS.removeEntry, async (event, request: ProjectRemoveRequest): Promise => { + if (!request.path) throw new Error("cannot remove the project root") + const target = await capabilityPath(event, request) + const stat = await fs.lstat(target) + if (stat.isSymbolicLink()) throw new Error("symbolic links are not allowed in projects") + await fs.rm(target, { recursive: request.recursive, force: false }) + }) +} + +function assertMainRenderer(event: IpcMainInvokeEvent): void { + if (mainWindow === undefined || event.sender.id !== mainWindow.webContents.id) throw new Error("unauthorized renderer") +} + +async function capabilityPath(event: IpcMainInvokeEvent, request: ProjectPathRequest): Promise { + assertMainRenderer(event) + if (typeof request?.capability !== "string") throw new Error("invalid project capability") + const capability = capabilities.get(request.capability) + if (!capability || capability.senderId !== event.sender.id) throw new Error("unknown project capability") + const path = normalizeRelativePath(request.path) + const target = path ? resolve(capability.root, ...path.split("/")) : capability.root + if (!isWithin(capability.root, target)) throw new Error("project path escapes its capability") + await assertNoSymlinkEscape(capability.root, target) + return target +} + +async function assertNoSymlinkEscape(root: string, target: string): Promise { + const existing = await fs.realpath(target).catch((error) => { + if (isNotFound(error)) return undefined + throw error + }) + if (existing !== undefined) { + if (!isWithin(root, existing)) throw new Error("project path escapes its capability") + return + } + let parent = dirname(target) + while (true) { + const resolvedParent = await fs.realpath(parent).catch((error) => { + if (isNotFound(error)) return undefined + throw error + }) + if (resolvedParent !== undefined) { + if (!isWithin(root, resolvedParent)) throw new Error("project path escapes its capability") + return + } + const next = dirname(parent) + if (next === parent) throw new Error("project path does not have a valid parent") + parent = next + } +} + +function normalizeRelativePath(path: string): string { + if (typeof path !== "string" || isAbsolute(path) || path.includes("\\") || path.includes("\0")) { + throw new Error("project path must be relative") + } + if (!path) return "" + const segments = path.split("/") + if (segments.some((segment) => !segment || segment === "." || segment === "..")) { + throw new Error("project path contains an unsafe segment") + } + return path +} + +function isWithin(root: string, target: string): boolean { + const boundary = relative(root, target) + return boundary === "" || (boundary !== ".." && !boundary.startsWith(`..${sep}`) && !isAbsolute(boundary)) +} + +function decodeFile(value: DesktopProjectFile): Buffer { + if (value?.encoding === "utf8" && typeof value.data === "string") return Buffer.from(value.data, "utf8") + if (value?.encoding === "base64" && typeof value.data === "string") return Buffer.from(value.data, "base64") + throw new Error("invalid project file payload") +} + +function isNotFound(error: unknown): boolean { return !!error && typeof error === "object" && (error as NodeJS.ErrnoException).code === "ENOENT" } + +function registerRendererProtocol(): void { + protocol.handle("app", async (request) => { + try { + const url = new URL(request.url) + if (url.hostname !== "nnmodelling") return new Response("Not found", { status: 404 }) + const requested = decodeURIComponent(url.pathname).replace(/^\/+/, "") || "index.html" + if (requested.includes("\0") || requested.includes("\\")) return new Response("Not found", { status: 404 }) + const file = resolve(rendererRoot, ...requested.split("/")) + if (!isWithin(rendererRoot, file)) return new Response("Not found", { status: 404 }) + return await net.fetch(pathToFileURL(file).toString()) + } catch { + return new Response("Not found", { status: 404 }) + } + }) +} + +async function createWindow(): Promise { + const developmentUrl = process.env.NNM_DEV_SERVER_URL + mainWindow = new BrowserWindow({ + width: 1440, + height: 960, + minWidth: 960, + minHeight: 640, + webPreferences: { + preload: join(__dirname, "preload.js"), + ...MAIN_WINDOW_WEB_PREFERENCES, + }, + }) + mainWindow.webContents.setWindowOpenHandler(() => ({ action: "deny" })) + mainWindow.webContents.on("will-navigate", (event, url) => { + if (!isAllowedNavigation(url, developmentUrl)) event.preventDefault() + }) + mainWindow.on("closed", () => { + capabilities.clear() + mainWindow = undefined + }) + if (developmentUrl) await mainWindow.loadURL(developmentUrl) + else await mainWindow.loadURL("app://nnmodelling/index.html") +} + +app.whenReady().then(async () => { + session.defaultSession.setPermissionRequestHandler((_webContents, _permission, callback) => callback(false)) + session.defaultSession.setPermissionCheckHandler(() => false) + rendererRoot = await findRendererRoot() + registerRendererProtocol() + registerProjectHandlers() + await createWindow() +}) + +app.on("window-all-closed", () => { + if (process.platform !== "darwin") app.quit() +}) + +app.on("before-quit", () => capabilities.clear()) + +async function findRendererRoot(): Promise { + const candidates = process.env.NNM_RENDERER_DIST + ? [process.env.NNM_RENDERER_DIST] + : [join(__dirname, "../renderer"), join(__dirname, "../../front-end/dist")] + for (const candidate of candidates) { + try { + if ((await fs.stat(candidate)).isDirectory()) return resolve(candidate) + } catch { + // Try the next packaging layout. + } + } + throw new Error("NNModelling renderer assets were not found") +} diff --git a/desktop/src/preload.ts b/desktop/src/preload.ts new file mode 100644 index 00000000..f1f4fa69 --- /dev/null +++ b/desktop/src/preload.ts @@ -0,0 +1,23 @@ +import { contextBridge, ipcRenderer } from "electron" +import { IPC_CHANNELS, type DesktopProjectFilesystemBridge, type ProjectRemoveRequest, type ProjectWriteRequest } from "./protocol" + +const bridge: DesktopProjectFilesystemBridge = { + version: 1, + pickDirectory: (options) => ipcRenderer.invoke(IPC_CHANNELS.pickDirectory, options), + ensureDirectory: (capability, path) => ipcRenderer.invoke(IPC_CHANNELS.ensureDirectory, { capability, path }), + stat: (capability, path) => ipcRenderer.invoke(IPC_CHANNELS.stat, { capability, path }), + listDirectory: (capability, path) => ipcRenderer.invoke(IPC_CHANNELS.listDirectory, { capability, path }), + readFile: (capability, path) => ipcRenderer.invoke(IPC_CHANNELS.readFile, { capability, path }), + writeFile: (capability, path, value) => { + const request: ProjectWriteRequest = { capability, path, value } + return ipcRenderer.invoke(IPC_CHANNELS.writeFile, request) + }, + removeEntry: (capability, path, recursive) => { + const request: ProjectRemoveRequest = { capability, path, recursive } + return ipcRenderer.invoke(IPC_CHANNELS.removeEntry, request) + }, +} + +// Expose only typed project operations. The renderer never receives ipcRenderer, +// an absolute path, or a Node.js capability outside the opaque token. +contextBridge.exposeInMainWorld("nnmodellingDesktop", bridge) diff --git a/desktop/src/protocol.ts b/desktop/src/protocol.ts new file mode 100644 index 00000000..10e1e02c --- /dev/null +++ b/desktop/src/protocol.ts @@ -0,0 +1,49 @@ +export type DesktopProjectCapability = { + readonly capability: string + readonly name: string +} + +export type DesktopProjectEntry = { + readonly name: string + readonly kind: "file" | "directory" +} + +export type DesktopProjectFile = { + readonly encoding: "utf8" | "base64" + readonly data: string +} + +/** The only renderer-facing filesystem surface exposed by preload. */ +export interface DesktopProjectFilesystemBridge { + readonly version: 1 + pickDirectory(options: { readonly mode: "readwrite" }): Promise + ensureDirectory(capability: string, path: string): Promise + stat(capability: string, path: string): Promise<"file" | "directory" | null> + listDirectory(capability: string, path: string): Promise + readFile(capability: string, path: string): Promise + writeFile(capability: string, path: string, value: DesktopProjectFile): Promise + removeEntry(capability: string, path: string, recursive: boolean): Promise +} + +export const IPC_CHANNELS = { + pickDirectory: "nnmodelling:project:pick-directory", + ensureDirectory: "nnmodelling:project:ensure-directory", + stat: "nnmodelling:project:stat", + listDirectory: "nnmodelling:project:list-directory", + readFile: "nnmodelling:project:read-file", + writeFile: "nnmodelling:project:write-file", + removeEntry: "nnmodelling:project:remove-entry", +} as const + +export type ProjectPathRequest = { + readonly capability: string + readonly path: string +} + +export type ProjectWriteRequest = ProjectPathRequest & { + readonly value: DesktopProjectFile +} + +export type ProjectRemoveRequest = ProjectPathRequest & { + readonly recursive: boolean +} diff --git a/desktop/src/security.ts b/desktop/src/security.ts new file mode 100644 index 00000000..9a6f8af3 --- /dev/null +++ b/desktop/src/security.ts @@ -0,0 +1,18 @@ +import type { WebPreferences } from "electron" + +export const MAIN_WINDOW_WEB_PREFERENCES = Object.freeze({ + contextIsolation: true, + nodeIntegration: false, + sandbox: true, + webSecurity: true, +} satisfies WebPreferences) + +export function isAllowedNavigation(url: string, developmentUrl?: string): boolean { + if (url.startsWith("app://nnmodelling/")) return true + if (!developmentUrl) return false + try { + return new URL(url).origin === new URL(developmentUrl).origin + } catch { + return false + } +} diff --git a/desktop/tsconfig.json b/desktop/tsconfig.json new file mode 100644 index 00000000..e37348d0 --- /dev/null +++ b/desktop/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "target": "ES2022", + "module": "CommonJS", + "moduleResolution": "Node", + "outDir": "dist", + "rootDir": "src", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "lib": ["ES2022", "DOM"], + "types": ["node"] + }, + "include": ["src/**/*.ts"], + "exclude": ["src/__tests__/**"] +} diff --git a/docs/archive/completed-plans/linux-flatpak/evidence/minimal-qa.md b/docs/archive/completed-plans/linux-flatpak/evidence/minimal-qa.md new file mode 100644 index 00000000..85d0b8b9 --- /dev/null +++ b/docs/archive/completed-plans/linux-flatpak/evidence/minimal-qa.md @@ -0,0 +1,30 @@ +# Minimal QA evidence — completed 2026-09-10 + +Scope follows the user's request for minimal final QA. The installed +create/edit/autosave/close/reopen workflow was not run and remains a manual +pre-release check. + +- Frontend type check: passed with 0 errors and 34 existing warnings. +- Focused desktop workspace adapter: 1 file, 2 tests passed. +- Desktop security boundary: 1 file, 2 tests passed. +- Frontend production web build: passed. +- Desktop Electron directory build: passed; packaged ASAR contains only the + host output, renderer, and package metadata. +- Backend desktop-origin regression: 3 tests passed. +- Desktop entry and AppStream validation: passed. +- Flathub manifest lint: passed with the runtime-update advisory for 26.08; + the required Electron BaseApp remains on the manifest's 25.08 branch. +- Offline Flatpak build and user installation: passed, commit + `52715eaa305a5b2df7984ba48451a326395fff4f3679877396fcb7a285eb7fab`. +- Effective permissions: network, IPC, Wayland/fallback-X11, and DRI only; + no home or host filesystem grant. +- Installed-file smoke check: passed. +- Installed launch smoke: process remained active for the bounded 10-second + run and was stopped by `timeout`; no application crash was observed. +- Bundle: `NNModelling.flatpak`, 81 MiB, + SHA-256 `78dd4bb3e2d63f1323ac1fa47b63beaedef9af399537ffab67fed0529336d207`. +- `git diff --check`: passed. + +The repository-wide package-only guard still reports the tracked pre-existing +fixture `examples/diagrams/package/models/transformer.spam/model.json` as +lacking exact package identities. This initiative did not modify that fixture. diff --git a/docs/archive/completed-plans/linux-flatpak/plan.md b/docs/archive/completed-plans/linux-flatpak/plan.md new file mode 100644 index 00000000..b93a54d4 --- /dev/null +++ b/docs/archive/completed-plans/linux-flatpak/plan.md @@ -0,0 +1,152 @@ +--- +id: linux-flatpak +kind: plan +status: done +updated: 2026-09-10 +areas: + - frontend + - desktop + - distribution + - testing +--- + +# Linux Flatpak desktop distribution + +## Goal + +Ship NNModelling as an installable Linux Flatpak that can create, open, edit, +automatically save, and reopen project directories while preserving the +existing web application and sharing its renderer, `DiagramCore`, package +runtime, type inference, and remote-training behavior. + +## Current behavior + +The Svelte/Vite application owns live diagram state in the browser and opens +writable projects through the browser File System Access API. The root pnpm +workspace has no desktop host, Flatpak manifest, Linux desktop metadata, or +installed-application verification path. See the accepted +[desktop distribution decision](../../../knowledge/decisions/web-and-flatpak-desktop-distribution.md). + +## Scope + +- Add a minimal Electron main/preload host for the existing frontend build. +- Select the browser or desktop project adapter at the host boundary without + duplicating project or graph semantics. +- Build an offline-capable Flatpak from pinned sources with an application + launcher, icon, desktop entry, and AppStream metadata. +- Retain web development, web production builds, browser project access, + browser-backed MCP, and remote backend connections. +- Perform minimal installed-artifact QA: build, install, inspect permissions, + and perform a bounded launch smoke. The exhaustive create/edit/save/reopen + workflow is an explicit manual pre-release follow-up owned by the user. + +## Non-goals + +- Embedding FastAPI, Valkey, Podman/Docker, workers, datasets, or training jobs. +- Windows or macOS installers, application stores, signing, or auto-update. +- A second desktop graph implementation or desktop-only model format. +- Broad home-directory or host-filesystem Flatpak access. +- Publishing to Flathub; the repository will produce a submission-ready local + manifest and bundle, while publication remains a release operation. + +## Decisions and invariants + +- The accepted + [shared web and Flatpak desktop decision](../../../knowledge/decisions/web-and-flatpak-desktop-distribution.md) + is normative. +- `DiagramCore` remains the only live graph authority. +- Web and desktop builds use the same frontend source and tests. +- Platform APIs terminate behind typed adapters; renderer Node integration is + disabled and the preload API is capability-specific. +- Project-relative paths retain existing validation, transactional creation, + ordered saves, and visible-error semantics. +- No absolute path, Electron capability identifier, or secret enters portable + project or backend data. +- The [Electron desktop host contract](../../../knowledge/contracts/desktop-host.md) + defines process ownership, bridge operations, origin and sandbox rules. + +## Contracts and control flow + +```text +web deployment ───────> shared Svelte renderer ───────> DiagramCore + │ │ │ +File System Access API project workspace port package/Lua runtime + │ +Electron renderer ── typed preload bridge ── Electron main ── portal-visible files + +shared renderer ── optional WebSocket ── thin MCP proxy +shared renderer ── authenticated HTTP ── remote training backend +``` + +## Task graph + +| Task | Role | Depends on | May run with | Write scope | Outcome | +| --- | --- | --- | --- | --- | --- | +| [`T01`](tasks/T01-electron-host-and-project-adapter.md) | `frontend` | — | — | `desktop/`, `front-end/src/project-workspace/`, `front-end/src/App.svelte`, workspace manifests | Shared renderer runs securely in Electron and preserves the web adapter | +| [`T02`](tasks/T02-flatpak-package.md) | `operations` | `T01` | `T03` | `flatpak/`, desktop package metadata | Flatpak manifest builds and exports a launchable Linux application | +| [`T03`](tasks/T03-desktop-tests-and-documentation.md) | `testing` | `T01` | `T02` | desktop/frontend tests, `docs2/`, current KB testing/operations | Host boundary and user workflow are documented and covered | +| [`T04`](tasks/T04-installed-flatpak-qa.md) | `integration` | `T02`, `T03` | — | plan status and retained evidence only | Built Flatpak is installed and passes a minimal launch/permission smoke test | + +Parallel tasks have non-overlapping implementation scopes. Shared manifest or +lockfile changes are integrated serially by the initiative owner. + +## Integration and review gates + +- Electron security review finds no renderer Node integration, raw IPC export, + navigation escape, shell execution, or arbitrary filesystem primitive. +- Frontend `check`, focused adapter tests, and production web build pass; the + package-only guard's unrelated tracked-fixture baseline is recorded. +- Desktop unit tests and packaged Electron smoke check pass. +- Flatpak metadata validation and `flatpak-builder` complete without network + access during build commands. +- The installed app remains active through the bounded launch smoke without + `--no-sandbox` and without blanket host filesystem permissions. +- Focused adapter tests preserve web and desktop create/open/save selection. + +## Acceptance criteria + +- [x] `pnpm --dir front-end build` still produces the deployable web app. +- [x] Electron loads the same frontend and the focused adapter tests cover the + shared create/open/read/write contract; exhaustive installed lifecycle + QA remains the user's manual pre-release step. +- [x] The Electron renderer is sandboxed, context-isolated, and has no Node + integration. +- [x] Flatpak build inputs are pinned and its build commands run offline. +- [x] The repository produces an installable `.flatpak` bundle with application + ID `io.github.LucaSforza.NNModelling`. +- [x] The installed Flatpak launches on Linux; exhaustive + project-lifecycle QA remains documented as a manual pre-release check. +- [x] Remote backend access and optional localhost MCP access remain possible + through the declared network permission. +- [x] Current architecture, project-workspace, testing, and operations KB text + describes both supported hosts without weakening portable-data rules. + +## Final verification + +Run from the repository root: + +```bash +pnpm --dir front-end check +pnpm --dir front-end test +pnpm --dir front-end guard:package-only +pnpm --dir front-end build +pnpm --dir desktop test +pnpm --dir desktop build +desktop-file-validate flatpak/io.github.LucaSforza.NNModelling.desktop +appstreamcli validate --no-net --explain flatpak/io.github.LucaSforza.NNModelling.metainfo.xml +flatpak-builder --force-clean --user --install-deps-from=flathub --repo=repo --install builddir io.github.LucaSforza.NNModelling.yml +flatpak run io.github.LucaSforza.NNModelling +flatpak build-bundle repo NNModelling.flatpak io.github.LucaSforza.NNModelling --runtime-repo=https://dl.flathub.org/repo/flathub.flatpakrepo +``` + +## Knowledge and archive impact + +- Add the accepted desktop-distribution decision and index it. +- Update system architecture and browser-MCP wording from browser-only to the + active frontend renderer where applicable. +- Amend writable-project workspace consequences for browser and desktop hosts. +- Add the desktop host contract and amend pairing for its exact application + origin. +- Add Flatpak lifecycle and installed-app QA to operations and testing. +- When every gate passes, mark all tasks and this initiative done, retain only + useful build evidence, and archive the initiative intact. diff --git a/docs/archive/completed-plans/linux-flatpak/tasks/T01-electron-host-and-project-adapter.md b/docs/archive/completed-plans/linux-flatpak/tasks/T01-electron-host-and-project-adapter.md new file mode 100644 index 00000000..1734f085 --- /dev/null +++ b/docs/archive/completed-plans/linux-flatpak/tasks/T01-electron-host-and-project-adapter.md @@ -0,0 +1,82 @@ +--- +id: T01 +kind: task +status: done +plan: ../plan.md +role: frontend +depends_on: [] +parallel_with: [] +write_scope: + - desktop/ + - front-end/src/project-workspace/ + - front-end/src/App.svelte + - pnpm-workspace.yaml + - pnpm-lock.yaml +--- + +# Electron host and desktop project adapter + +## Objective + +Run the shared Svelte renderer in a secure Electron window and satisfy the +existing writable-project behavior through a typed desktop filesystem bridge. + +## Context required + +- [Initiative plan](../plan.md) +- [Desktop distribution decision](../../../../knowledge/decisions/web-and-flatpak-desktop-distribution.md) +- `front-end/src/project-workspace/index.ts` +- `front-end/src/components/ProjectStart.svelte` +- `front-end/src/App.svelte` + +## Invariants + +- Web remains the default frontend host and continues using the File System + Access API. +- Main/preload processes never own diagram, package, or type state. +- The bridge exposes only validated project capabilities and serializable data. +- Project creation cannot merge with or overwrite an existing directory. +- Autosaves stay ordered and failures remain visible. + +## Allowed files + +Only the paths in `write_scope`; lockfile changes must correspond exactly to +the new workspace package and dependencies. + +## Out of scope + +- Flatpak metadata and permissions. +- Bundled backend services. +- Changes to graph or type semantics. + +## Work + +1. Add failing host-adapter and security-boundary tests. +2. Add the Electron package, main process, preload bridge, and typed renderer + declaration. +3. Inject a desktop project adapter only when the preload capability exists. +4. Build the frontend with a relative base and load it from the packaged app. +5. Exercise create, recursive read/write, autosave, collision, cancellation, + and reopen behavior. + +## Acceptance criteria + +- [x] Web and Electron select the correct adapter without source forks. +- [x] Electron security preferences and navigation restrictions are tested. +- [x] Desktop project operations preserve the accepted workspace contract. +- [x] Integrated workspace and package metadata changes remain scoped to the initiative. + +## Validation + +```bash +pnpm --dir desktop test +pnpm --dir desktop build +pnpm --dir front-end check +pnpm --dir front-end test +pnpm --dir front-end build +``` + +## Required handoff + +Return changed files, command results, security choices, project-workspace +compatibility evidence, and unresolved packaging risks. diff --git a/docs/archive/completed-plans/linux-flatpak/tasks/T02-flatpak-package.md b/docs/archive/completed-plans/linux-flatpak/tasks/T02-flatpak-package.md new file mode 100644 index 00000000..8bd64f92 --- /dev/null +++ b/docs/archive/completed-plans/linux-flatpak/tasks/T02-flatpak-package.md @@ -0,0 +1,72 @@ +--- +id: T02 +kind: task +status: done +plan: ../plan.md +role: operations +depends_on: [T01] +parallel_with: [T03] +write_scope: + - flatpak/ + - desktop/package.json +--- + +# Flatpak package + +## Objective + +Produce a pinned, offline-buildable Flatpak manifest and complete Linux desktop +metadata for the Electron application. + +## Context required + +- [Initiative plan](../plan.md) +- [Desktop distribution decision](../../../../knowledge/decisions/web-and-flatpak-desktop-distribution.md) +- Electron BaseApp and Flatpak Node generator documentation. + +## Invariants + +- Application ID is `io.github.LucaSforza.NNModelling`. +- Build commands have no network access after declared sources are fetched. +- No blanket home or host filesystem permission is granted. +- Electron runs through Zypak without disabling its sandbox. + +## Allowed files + +Only `flatpak/` and packaging fields in `desktop/package.json`. + +## Out of scope + +- Flathub publication and signing. +- Other Linux package formats. +- Backend service packaging. + +## Work + +1. Add application-ID-named manifest, desktop entry, AppStream metadata, icon, + and Zypak launcher. +2. Generate pinned pnpm/Electron Flatpak sources. +3. Build the unpacked Electron application inside `flatpak-builder` and install + exports under `/app`. +4. Validate metadata, permissions, offline behavior, and bundle generation. + +## Acceptance criteria + +- [x] Metadata validators pass. +- [x] `flatpak-builder` builds and installs the manifest. +- [x] A `.flatpak` bundle is produced from the local repository. +- [x] Packaging changes remain scoped to the initiative. + +## Validation + +```bash +desktop-file-validate flatpak/io.github.LucaSforza.NNModelling.desktop +appstreamcli validate --no-net --explain flatpak/io.github.LucaSforza.NNModelling.metainfo.xml +flatpak-builder --force-clean --user --install-deps-from=flathub --repo=repo --install builddir io.github.LucaSforza.NNModelling.yml +flatpak build-bundle repo NNModelling.flatpak io.github.LucaSforza.NNModelling --runtime-repo=https://dl.flathub.org/repo/flathub.flatpakrepo +``` + +## Required handoff + +Return artifacts, manifest permissions, pinned-source regeneration procedure, +exact validation results, and any Flathub-readiness limitation. diff --git a/docs/archive/completed-plans/linux-flatpak/tasks/T03-desktop-tests-and-documentation.md b/docs/archive/completed-plans/linux-flatpak/tasks/T03-desktop-tests-and-documentation.md new file mode 100644 index 00000000..c295433b --- /dev/null +++ b/docs/archive/completed-plans/linux-flatpak/tasks/T03-desktop-tests-and-documentation.md @@ -0,0 +1,72 @@ +--- +id: T03 +kind: task +status: done +plan: ../plan.md +role: testing +depends_on: [T01] +parallel_with: [T02] +write_scope: + - desktop/ + - front-end/src/__tests__/ + - docs2/ + - docs/knowledge/testing/ + - docs/knowledge/operations/ +--- + +# Desktop tests and user documentation + +## Objective + +Cover the desktop host boundary and document Linux Flatpak installation, +project access, remote backend use, and source-build verification. + +## Context required + +- [Initiative plan](../plan.md) +- [Testing strategy](../../../../knowledge/testing/strategy.md) +- [Local operations](../../../../knowledge/operations/local-stack.md) + +## Invariants + +- Tests prove shared behavior rather than duplicating frontend semantic suites. +- Documentation does not claim that the backend is bundled. +- Browser instructions remain valid. + +## Allowed files + +Only the paths in `write_scope`. + +## Out of scope + +- Distribution publishing and auto-update. +- Semantic changes to packages or diagrams. + +## Work + +1. Test preload allowlists, input validation, host selection, and filesystem + error mapping. +2. Document local Flatpak installation, launch, project access, permissions, + backend connectivity, and bundle regeneration. +3. Add the installed-application workflow to the KB testing contract and the + build/run procedure to operations. + +## Acceptance criteria + +- [x] Desktop tests fail on an unsafe or incompatible bridge. +- [x] User and operator documentation matches the built artifact. +- [x] Existing web documentation remains correct. +- [x] Testing and documentation changes remain scoped to the initiative. + +## Validation + +```bash +pnpm --dir desktop test +pnpm --dir front-end test +pnpm run docs +``` + +## Required handoff + +Return coverage added, documentation locations, exact validation results, and +any installed-workflow step reserved for T04. diff --git a/docs/archive/completed-plans/linux-flatpak/tasks/T04-installed-flatpak-qa.md b/docs/archive/completed-plans/linux-flatpak/tasks/T04-installed-flatpak-qa.md new file mode 100644 index 00000000..c1b4b903 --- /dev/null +++ b/docs/archive/completed-plans/linux-flatpak/tasks/T04-installed-flatpak-qa.md @@ -0,0 +1,72 @@ +--- +id: T04 +kind: task +status: done +plan: ../plan.md +role: integration +depends_on: [T02, T03] +parallel_with: [] +write_scope: + - docs/plans/active/linux-flatpak/ + - docs/archive/completed-plans/linux-flatpak/ +--- + +# Minimal installed Flatpak QA + +## Objective + +Prove the Flatpak can be built, installed, remains active through a bounded +launch smoke, and runs with the declared minimal permissions. Leave exhaustive +project-lifecycle QA as a documented manual pre-release follow-up for the user. + +## Context required + +- [Initiative plan](../plan.md) +- [Desktop distribution decision](../../../../knowledge/decisions/web-and-flatpak-desktop-distribution.md) +- [Testing strategy](../../../../knowledge/testing/strategy.md) + +## Invariants + +- QA uses the installed Flatpak, not only Electron development mode. +- Test data is isolated and does not modify an unrelated user project. +- A passing launch must not be reported as project-lifecycle evidence. + +## Allowed files + +Only plan status/evidence and final archival paths. + +## Out of scope + +- Feature expansion after acceptance passes. +- Flathub publication. + +## Work + +1. Build and install the Flatpak from a clean build directory. +2. Inspect effective permissions and perform a bounded installed-app launch. +3. Confirm the web production build and focused adapter tests still pass. +4. Record create/edit/save/reopen as manual pre-release QA that was not run. +5. Audit every acceptance criterion, mark tasks and plan done, retain concise + evidence, and archive the completed initiative. + +## Acceptance criteria + +- [x] Installed application remains running through the bounded launch smoke test. +- [x] Flatpak has no undeclared broad filesystem permission. +- [x] Web build and focused project-adapter tests remain valid. +- [x] Exhaustive installed project-lifecycle QA is explicitly left unclaimed. +- [x] Initiative is archived only after all gates pass. + +## Validation + +```bash +flatpak run io.github.LucaSforza.NNModelling +flatpak info --show-permissions io.github.LucaSforza.NNModelling +pnpm --dir front-end build +git diff --check +``` + +## Required handoff + +Return criterion-by-criterion evidence, artifact location, observed permissions, +remaining release-only work, and archive status. diff --git a/docs/knowledge/README.md b/docs/knowledge/README.md index c09a9f57..34db1534 100644 --- a/docs/knowledge/README.md +++ b/docs/knowledge/README.md @@ -13,6 +13,7 @@ behavior as a second supported contract or append narrative history. ## Contracts +- [Electron desktop host](contracts/desktop-host.md) - [Frontend package type system](contracts/package-type-system.md) - [Pairing and ownership](contracts/pairing.md) - [Portable model packages](contracts/model-package.md) @@ -32,6 +33,7 @@ UML: Current decisions: +- [Shared web and Flatpak desktop distribution](decisions/web-and-flatpak-desktop-distribution.md) - [Package type-system cutover](decisions/stereotype-type-system-migration.md) - [Upstream Cordis package runtime](decisions/local-package-runtime.md) - [Model-scoped custom stereotype packages](decisions/model-scoped-stereotype-packages.md) diff --git a/docs/knowledge/architecture/overview.md b/docs/knowledge/architecture/overview.md index 52b5f889..2893ba6a 100644 --- a/docs/knowledge/architecture/overview.md +++ b/docs/knowledge/architecture/overview.md @@ -1,20 +1,23 @@ --- kind: knowledge status: current -updated: 2026-08-29 +updated: 2026-09-10 --- # System architecture -NNModelling is a browser-owned visual DSL. The current editor builds package -graphs and infers their tensor semantics locally. Public user documentation -lives under `docs2/`. +NNModelling is a renderer-owned visual DSL delivered through the web and an +Electron Linux desktop shell. Both hosts build package graphs and infer their +tensor semantics locally from the same frontend source. Public user +documentation lives under `docs2/`. ## Components | Area | Responsibility | State authority | | --- | --- | --- | -| `front-end/` | Svelte editor, graph mutations, package catalog, Lua type inference and browser RPC | Browser `DiagramCore` | +| `front-end/` | Shared Svelte editor, graph mutations, package catalog, Lua type inference and renderer RPC | Active renderer `DiagramCore` | +| `desktop/` | Electron main/preload host and typed desktop platform bridge | No diagram or type state | +| `flatpak/` | Linux sandbox, launcher and distribution metadata | No application state | | `stereotype-packages/` | Globally shared core definitions, Lua inference and PyTorch entrypoints | Core package manifests and resources | | `mcp-server/` | Thin proxy to the selected browser tab | No diagram or type state | | `converted/` | Package compiler/runtime, authenticated API, scheduler and worker controller | Valkey job state and backend stores | @@ -38,9 +41,11 @@ model manifest + local package dirs ─┘ = core + current custom package visible editor + MCP backend bundle export ``` -The browser is the only source of truth for a live diagram. The MCP server -routes request/response RPC and must not mirror the graph, catalog or inferred -types. See [Browser-backed MCP](browser-mcp.md). +The active frontend renderer is the only source of truth for a live diagram, +whether hosted by a browser or Electron. Electron main/preload processes and +the MCP server must not mirror the graph, catalog or inferred types. See +[Browser-backed MCP](browser-mcp.md) and the accepted +[desktop distribution decision](../decisions/web-and-flatpak-desktop-distribution.md). Every frontend node persists only exact package ID and version. Definition metadata drives topology, parameters, presentation and dtype controls; diff --git a/docs/knowledge/contracts/desktop-host.md b/docs/knowledge/contracts/desktop-host.md new file mode 100644 index 00000000..553c7a8f --- /dev/null +++ b/docs/knowledge/contracts/desktop-host.md @@ -0,0 +1,81 @@ +--- +kind: knowledge +status: current +updated: 2026-09-10 +--- + +# Electron desktop host + +The Electron host packages the shared NNModelling frontend for Linux. It is a +platform boundary, not a second application core. + +## Process ownership + +- The renderer owns `DiagramCore`, the active package catalog, Lua inference, + viewport state, training-controller state, and project save orchestration. +- The main process owns application lifecycle, the trusted `app://nnmodelling` + protocol, native directory dialogs, and host filesystem calls. +- The preload process exposes only the typed project capability described + below. It owns no persistent project or diagram state. +- MCP remains a thin optional proxy to the active renderer. Electron main and + preload processes are never an alternate MCP graph authority. + +## Security contract + +Every application window uses: + +- `contextIsolation: true`; +- `nodeIntegration: false`; +- renderer sandboxing enabled; +- a fixed preload script shipped with the application; +- the privileged application content loaded only from the registered + `app://nnmodelling` scheme; +- denied unexpected navigation, popup, permission, and external-protocol + requests. + +The preload bridge must not expose `ipcRenderer`, Node.js modules, shell +execution, arbitrary IPC channels, or path-based general-purpose filesystem +methods. Main-process handlers validate channel arguments independently of +renderer validation. + +## Project capability + +Native directory selection returns an opaque, random, session-scoped +capability. Renderer calls combine that capability with a normalized relative +path and one explicit operation from the desktop project API: + +- select a parent or existing project directory; +- list one directory; +- read one file; +- create one child directory or file; +- replace one file's bytes; +- remove a newly created entry during proven rollback. + +The main process resolves every relative path beneath the capability root, +rejects absolute paths and traversal, and does not follow an operation outside +that root. Capabilities are invalid after application exit and are never +serialized into project, MCP, or backend data. + +File replacement must not expose partially written `model.json` content. +Errors preserve cancellation, permission, collision, missing-entry, and write +failure as distinguishable renderer outcomes. The shared +`ProjectModelWriter` remains responsible for save ordering and visible state. + +## Network boundary + +The renderer origin is `app://nnmodelling`. A remote-training backend must +allow that exact origin in `NNM_ALLOWED_ORIGINS`; wildcard origin access is not +part of this contract. The Flatpak network permission permits configured HTTP +backend and optional localhost MCP connections, but grants no backend identity +or authorization by itself. + +## Flatpak boundary + +The Flatpak does not request blanket `home` or `host` filesystem access. +Native selection must yield a portal-visible path usable inside the sandbox. +The application does not spawn or bundle FastAPI, Valkey, container engines, +workers, or training jobs. + +See the accepted +[shared web and desktop decision](../decisions/web-and-flatpak-desktop-distribution.md) +and [pairing contract](pairing.md). diff --git a/docs/knowledge/contracts/pairing.md b/docs/knowledge/contracts/pairing.md index 3b2459ff..ddaa351f 100644 --- a/docs/knowledge/contracts/pairing.md +++ b/docs/knowledge/contracts/pairing.md @@ -1,19 +1,20 @@ --- kind: knowledge status: current -updated: 2026-08-12 +updated: 2026-09-10 --- # Pairing and job ownership -Remote-training identity is an administrator-approved browser connection, not a -user account. The contract is intended for a trusted LAN and is not sufficient +Remote-training identity is an administrator-approved frontend connection, not +a user account. The frontend may run in a web browser or the supported Electron +desktop host. The contract is intended for a trusted LAN and is not sufficient for direct Internet exposure. ## Trust model -- A new browser requests pairing and receives a high-entropy opaque token plus - a short verification code. +- A new frontend host requests pairing and receives a high-entropy opaque token + plus a short verification code. - An administrator approves or rejects the request through protected backend commands/API. - Valkey stores a token digest, not the plaintext token. @@ -41,6 +42,9 @@ the configured admin token and are hidden from the public API schema. The frontend persists its backend URL and token locally, verifies the session on reuse, and distinguishes local forgetting from server-side revocation. +Backend CORS configuration must allow each deployed web origin explicitly. The +Electron distribution uses the exact `app://nnmodelling` origin. Wildcard +origins are not authorized by the desktop contract. ## Security boundary diff --git a/docs/knowledge/decisions/project-workspaces-and-stereotype-authoring.md b/docs/knowledge/decisions/project-workspaces-and-stereotype-authoring.md index 6b1ece31..27eaec32 100644 --- a/docs/knowledge/decisions/project-workspaces-and-stereotype-authoring.md +++ b/docs/knowledge/decisions/project-workspaces-and-stereotype-authoring.md @@ -1,7 +1,7 @@ --- kind: decision status: accepted -updated: 2026-08-29 +updated: 2026-09-10 --- # Writable project workspaces and model-owned stereotype authoring @@ -29,9 +29,11 @@ the user can edit the Lua and PyTorch implementations outside NNModelling. - New-project creation first asks for a parent directory. After the model form is accepted, NNModelling creates one child directory named by the validated model ID. An existing child is rejected; it is never merged or overwritten. -- Opening a project selects its directory through the same writable filesystem - capability. NNModelling reads `model.json` and all declared model resources, - then retains the directory handle only for the current browser session. +- Opening a project selects its directory through the host's writable + filesystem capability. NNModelling reads `model.json` and all declared model + resources, then retains the directory capability only for the current + renderer session. The web host uses the File System Access API; the Electron + host uses its typed preload bridge and native portal-visible selection. - Filesystem handles and absolute paths never enter `model.json`, package manifests, backend payloads, or browser RPC state. - The model form owns `id`, `version`, `name`, and optional `description`. @@ -75,8 +77,10 @@ the user can edit the Lua and PyTorch implementations outside NNModelling. ## Consequences -- The browser File System Access API is a required capability for editable - projects. Unsupported or denied access produces a clear startup error; a +- A writable host filesystem capability is required for editable projects. + The web distribution requires the browser File System Access API; the Linux + desktop distribution provides an equivalent typed Electron adapter. + Unsupported, cancelled, or denied access produces a clear startup result; a read-only file-input fallback would not satisfy stereotype creation or automatic saving. - Project creation, opening, graph editing, package authoring, and backend diff --git a/docs/knowledge/decisions/web-and-flatpak-desktop-distribution.md b/docs/knowledge/decisions/web-and-flatpak-desktop-distribution.md new file mode 100644 index 00000000..b96537bd --- /dev/null +++ b/docs/knowledge/decisions/web-and-flatpak-desktop-distribution.md @@ -0,0 +1,74 @@ +--- +kind: decision +status: accepted +updated: 2026-09-10 +--- + +# Shared web and Flatpak desktop distribution + +## Context + +NNModelling is currently delivered as a Vite web application. Linux users also +need an installable desktop application, while the web application must remain +a first-class distribution with the same model and type semantics. + +The frontend already keeps graph behavior in `DiagramCore` and places project +filesystem access behind `ProjectWorkspaceAdapter`. A desktop distribution can +therefore reuse the renderer instead of creating a second editor. + +## Decision + +- NNModelling has one Svelte renderer and two supported hosts: a web browser + and an Electron desktop shell. The hosts may provide different platform + adapters but must not fork graph, package, type-inference, persistence, or + training semantics. +- `DiagramCore` in the active renderer remains the only authority for the live + graph. Electron main and preload processes do not mirror diagram or package + state. +- The Linux desktop application is distributed as Flatpak with the stable + application ID `io.github.LucaSforza.NNModelling`. +- The Electron renderer loads the normal production frontend build with a + relative Vite base. The independently deployed web build retains its + configured web base path. +- Browser projects use the File System Access API. Electron projects use a + narrow, typed preload bridge backed by native directory selection and + main-process filesystem operations. Both satisfy the same + `ProjectWorkspaceAdapter` behavior: explicit selection, ordered automatic + saves, collision rejection, recursive resources, cancellation, and visible + failures. +- The preload bridge exposes task-specific project operations only. It never + exposes Node.js, `ipcRenderer`, arbitrary shell execution, or an unrestricted + filesystem API to the renderer. Electron uses context isolation, sandboxing, + and disabled renderer Node integration. +- Absolute paths and desktop capability identifiers are session-only. They + never enter `model.json`, package manifests, MCP messages, backend payloads, + or exported bundles. +- The Flatpak uses the Freedesktop runtime and Electron BaseApp, launches + through Zypak, and requests only display, GPU, IPC, and network permissions. + It does not receive blanket home-directory or host-filesystem access. +- The desktop application connects to the existing remote training backend. + Python, Valkey, Podman/Docker, worker images, and training jobs are not + embedded in the Flatpak. +- Browser-backed MCP remains an optional integration. When present, browser + and Electron renderer connections route to their own live `DiagramCore` + through the same thin proxy contract. + +## Consequences + +- Web and desktop releases exercise one frontend test suite; host-adapter tests + cover only platform-specific selection, file I/O, and security boundaries. +- A production Flatpak build must be network-independent after its declared + sources are fetched. Node and Electron sources are pinned from the workspace + lock and generated Flatpak source manifest. +- Flatpak exports an application-ID-named desktop file, icon, and AppStream + metadata. Before public release, manual QA builds, installs, launches, opens + or creates a project through the portal-visible filesystem, saves it, closes + the app, and reopens the project. +- Adding a bundled local backend would be a separate architectural decision + because it changes sandbox permissions, lifecycle, resource ownership, and + the least-privilege worker boundary. + +## Implementation + +The executable work is defined in +[`../../archive/completed-plans/linux-flatpak/plan.md`](../../archive/completed-plans/linux-flatpak/plan.md). diff --git a/docs/knowledge/operations/local-stack.md b/docs/knowledge/operations/local-stack.md index 855977cc..130463b0 100644 --- a/docs/knowledge/operations/local-stack.md +++ b/docs/knowledge/operations/local-stack.md @@ -1,7 +1,7 @@ --- kind: knowledge status: current -updated: 2026-09-09 +updated: 2026-09-10 --- # Local development stack @@ -22,6 +22,39 @@ WebSocket listener, normally on port 9339. Follow `.agents/skills/nnmodelling-mcp/SKILL.md` and its `scripts/nnm-stack.sh` helper. Direct browser work follows `.agents/skills/chrome-direct/SKILL.md`. +## Electron and Flatpak editor + +The Linux Flatpak is a desktop shell around the same production frontend. It +does not bundle FastAPI, Valkey, Podman/Docker, worker images or training jobs; +training remains an authenticated connection to an operator-managed backend. +The desktop renderer has the exact origin `app://nnmodelling`. Keep that origin +in `NNM_ALLOWED_ORIGINS` together with the origins used by web editors: + +```bash +NNM_ALLOWED_ORIGINS=http://127.0.0.1:5174,http://localhost:5174,app://nnmodelling \ +just --justfile converted/backend/justfile backend +``` + +From a source checkout, build the frontend and desktop host, then use the +Flatpak manifest to install a local build: + +```bash +pnpm install --frozen-lockfile +pnpm --dir front-end build +pnpm --dir desktop build +flatpak-builder --force-clean --user --install-deps-from=flathub \ + --repo=repo --install builddir \ + io.github.LucaSforza.NNModelling.yml +flatpak run io.github.LucaSforza.NNModelling +flatpak build-bundle repo NNModelling.flatpak \ + io.github.LucaSforza.NNModelling \ + --runtime-repo=https://dl.flathub.org/repo/flathub.flatpakrepo +``` + +Project directories are selected through the desktop portal bridge; the +Flatpak must not be granted blanket home-directory access. Browser users keep +using the File System Access API and the existing Pages/development commands. + ## Remote-training backend From `converted/`, run persistent Valkey and FastAPI with `PYTHONPATH=src` and diff --git a/docs/knowledge/testing/strategy.md b/docs/knowledge/testing/strategy.md index e6bddc69..573dbfec 100644 --- a/docs/knowledge/testing/strategy.md +++ b/docs/knowledge/testing/strategy.md @@ -1,7 +1,7 @@ --- kind: knowledge status: current -updated: 2026-08-28 +updated: 2026-09-10 --- # Testing strategy @@ -54,6 +54,24 @@ MCP Vitest suites cover tool schemas, thin-proxy behavior, multi-tab routing, errors and authenticated parity with browser-owned operations. An RPC contract change requires matching frontend handler and MCP proxy coverage. +## Linux desktop distribution + +Desktop host tests cover only the platform boundary: context isolation, +sandbox and navigation policy; preload operation allowlists and validation; +directory selection; recursive reads and writes; collisions; cancellation; and +error mapping. They reuse the frontend suites for diagram, package, type, +persistence and training semantics. + +An implementation handoff may use minimal installed-artifact QA when explicitly +requested: build and install the Flatpak, inspect its effective permissions, +launch to the project chooser, and retain the web production build and focused +host-adapter tests. This does not prove the complete project lifecycle. + +Before public release, manual QA must additionally exercise create, edit, +automatic save, close and reopen using the installed application. A successful +Electron development launch or an uninstalled `flatpak-builder` build is +insufficient release evidence. + ## Cross-boundary rule - Package/type change: focused host or package tests plus candidate/oracle diff --git a/docs2/source/desktop.rst b/docs2/source/desktop.rst new file mode 100644 index 00000000..9a824896 --- /dev/null +++ b/docs2/source/desktop.rst @@ -0,0 +1,61 @@ +Linux desktop (Flatpak) +======================= + +NNModelling is available as one shared Svelte renderer in two hosts: a web +browser and an Electron desktop application. The Linux desktop build is +distributed as a Flatpak with application ID +``io.github.LucaSforza.NNModelling``. It preserves the browser project format +and does not introduce a second graph or type-inference implementation. + +The Flatpak contains the editor shell only. FastAPI, Valkey, Podman/Docker, +worker images and training jobs remain in the existing remote backend +deployment. The browser distribution remains available through GitHub Pages +and the Vite development server. + +Build from source +----------------- + +Install the repository dependencies and build both the shared renderer and +desktop host: + +.. code-block:: console + + $ pnpm install --frozen-lockfile + $ pnpm --dir front-end build + $ pnpm --dir desktop build + +Build and install the local Flatpak with ``flatpak-builder``: + +.. code-block:: console + + $ flatpak-builder --force-clean --user --install-deps-from=flathub \ + --repo=repo --install builddir \ + io.github.LucaSforza.NNModelling.yml + $ flatpak run io.github.LucaSforza.NNModelling + +The manifest pins the runtime and build inputs. A release bundle can be +created from the local repository after the build: + +.. code-block:: console + + $ flatpak build-bundle repo NNModelling.flatpak \ + io.github.LucaSforza.NNModelling \ + --runtime-repo=https://dl.flathub.org/repo/flathub.flatpakrepo + +Backend connection +------------------ + +The desktop renderer uses the exact origin ``app://nnmodelling``. An operator +must include it in the backend's explicit ``NNM_ALLOWED_ORIGINS`` list, along +with any web origins that should remain supported: + +.. code-block:: console + + $ NNM_ALLOWED_ORIGINS=http://127.0.0.1:5174,http://localhost:5174,app://nnmodelling \ + just --justfile converted/backend/justfile backend + +Pairing, bearer-token ownership, package uploads and training permissions are +the same as for the web renderer. The Flatpak's network permission only allows +the configured HTTP backend and optional localhost MCP connection; it does not +grant backend authorization. Project selection uses the desktop portal bridge +and does not require blanket home-directory access. diff --git a/docs2/source/index.rst b/docs2/source/index.rst index 5deb208d..b846f085 100644 --- a/docs2/source/index.rst +++ b/docs2/source/index.rst @@ -22,9 +22,10 @@ formats or execute Python on the host. training_user_guide training_admin_guide architecture + desktop stereotypes python_api typescript_api type_system examples -license + license diff --git a/flatpak/README.md b/flatpak/README.md new file mode 100644 index 00000000..15dc9fc3 --- /dev/null +++ b/flatpak/README.md @@ -0,0 +1,28 @@ +# Flatpak packaging + +`../io.github.LucaSforza.NNModelling.yml` builds the Electron application from +the repository source with the Freedesktop 25.08 runtime and Electron BaseApp. +The build uses pinned pnpm binaries and runs dependency installation offline. + +Regenerate the pinned Node and Electron sources from the repository root after +every lockfile change with: + +```sh +./flatpak/generate-sources.sh +``` + +The helper uses a host `flatpak-node-generator` when available and otherwise +uses `org.flatpak.Builder` installed from Flathub. Commit the regenerated file +whenever `pnpm-lock.yaml` changes. + +Build and install locally (requires `flatpak-builder` and the Flathub runtime): + +```sh +flatpak-builder --force-clean --user --install-deps-from=flathub \ + --repo=repo --install builddir \ + io.github.LucaSforza.NNModelling.yml +flatpak run io.github.LucaSforza.NNModelling +flatpak build-bundle repo NNModelling.flatpak \ + io.github.LucaSforza.NNModelling \ + --runtime-repo=https://dl.flathub.org/repo/flathub.flatpakrepo +``` diff --git a/flatpak/generate-sources.sh b/flatpak/generate-sources.sh new file mode 100755 index 00000000..62e02520 --- /dev/null +++ b/flatpak/generate-sources.sh @@ -0,0 +1,20 @@ +#!/bin/sh +set -eu + +flatpak_dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd) +repo_dir=$(CDPATH= cd -- "$flatpak_dir/.." && pwd) + +generate() { + "$@" pnpm "$repo_dir/pnpm-lock.yaml" \ + --electron-node-headers \ + --output "$flatpak_dir/generated-sources.json" +} + +if command -v flatpak-node-generator >/dev/null 2>&1; then + generate flatpak-node-generator +elif flatpak info --user org.flatpak.Builder >/dev/null 2>&1; then + generate flatpak run --filesystem="$repo_dir" --command=flatpak-node-generator org.flatpak.Builder +else + echo "flatpak-node-generator is required; install org.flatpak.Builder from Flathub" >&2 + exit 1 +fi diff --git a/flatpak/generated-sources.json b/flatpak/generated-sources.json new file mode 100644 index 00000000..45ece03c --- /dev/null +++ b/flatpak/generated-sources.json @@ -0,0 +1,3564 @@ +[ + { + "type": "archive", + "url": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", + "strip-components": 1, + "sha512": "a955c1387412f9de58ef6d86c09cc952d38b957ee49b70ab68e686a2b985d690ed3ddd82fe5d521d13e08cbba72c67b9d5287961858a3050f25784b180c4184d", + "dest": "flatpak-node/cache/esbuild/.package/@esbuild/linux-arm@0.28.1", + "only-arches": [ + "arm" + ] + }, + { + "type": "archive", + "url": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", + "strip-components": 1, + "sha512": "c87b3ed2e73cfa7bc401f01fc6b59028ae6979237305ce0f7a070c3b4109da14fbd6e03bbc1f08860d9eefb4763fb486e6e6233db1e52cb9af7b82cb2d109fd2", + "dest": "flatpak-node/cache/esbuild/.package/@esbuild/linux-arm64@0.28.1", + "only-arches": [ + "aarch64" + ] + }, + { + "type": "archive", + "url": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", + "strip-components": 1, + "sha512": "775cf866e3f46a3adfcff161193e2fbf6efcad7f0a9cf3c9c7c8b9f80b4aed361bc7d2def45d61cb3bab669904ca39066bd7541a1428c380b5366786beac4ddb", + "dest": "flatpak-node/cache/esbuild/.package/@esbuild/linux-ia32@0.28.1", + "only-arches": [ + "i386" + ] + }, + { + "type": "archive", + "url": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", + "strip-components": 1, + "sha512": "bbf6a73581769a654e103c0bb67435c0eaf7119f6c4cd18b5abb18198c075b3180dd28bce083a41d795b5930f5341fbdff595c9f079828ee78ba1c59c9d3737c", + "dest": "flatpak-node/cache/esbuild/.package/@esbuild/linux-x64@0.28.1", + "only-arches": [ + "x86_64" + ] + }, + { + "type": "archive", + "url": "https://www.electronjs.org/headers/v38.8.6/node-v38.8.6-headers.tar.gz", + "strip-components": 1, + "sha256": "cb8a5e9a846dc6de31b61f743dbaec2d48a9cb558d36820fba25785261df2efd", + "dest": "flatpak-node/cache/node-gyp/38.8.6" + }, + { + "type": "file", + "url": "https://github.com/electron/electron/releases/download/v38.8.6/SHASUMS256.txt", + "sha256": "d6cf56d5737b0f8e1e934e659fe20f00812e49e6bd6dc9db1221d35dd4c28eee", + "dest-filename": "SHASUMS256.txt-38.8.6", + "dest": "flatpak-node/cache/electron" + }, + { + "type": "file", + "url": "https://github.com/electron/electron/releases/download/v38.8.6/electron-v38.8.6-linux-arm64.zip", + "sha256": "add5aaa35ed57e60f84b780f6461064b912de55effd27ec11e338462243867a5", + "dest-filename": "electron-v38.8.6-linux-arm64.zip", + "dest": "flatpak-node/cache/electron", + "only-arches": [ + "aarch64" + ] + }, + { + "type": "file", + "url": "https://github.com/electron/electron/releases/download/v38.8.6/electron-v38.8.6-linux-armv7l.zip", + "sha256": "cfbe4376edccbd1b9cd75ebb1def48fb9e35a4d794835ac9b5712da7bbdcca43", + "dest-filename": "electron-v38.8.6-linux-armv7l.zip", + "dest": "flatpak-node/cache/electron", + "only-arches": [ + "arm" + ] + }, + { + "type": "file", + "url": "https://github.com/electron/electron/releases/download/v38.8.6/electron-v38.8.6-linux-x64.zip", + "sha256": "41a8f2bc7c0be836b4dc8de19550a65947cffa58433753032af36ee3b849e8be", + "dest-filename": "electron-v38.8.6-linux-x64.zip", + "dest": "flatpak-node/cache/electron", + "only-arches": [ + "x86_64" + ] + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@dagrejs/dagre/-/dagre-3.1.1.tgz", + "sha512": "ceba1907574538588682fe1772b9f50dc901d68e1a3a290fa83d8d0d03d5d1633ffc25c6712eb1883d2b364a879b0e85120e2d69bb789f13cbc200964fe55bd8", + "dest-filename": "@dagrejs__dagre-3.1.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@dagrejs/graphlib/-/graphlib-4.0.5.tgz", + "sha512": "ef1ac14ea22db37a3e3cc5195fdef049cfbb4d46d6fbfad42f318d0933faca8a0d5435dbcf0e16bad83f1ffc4ebad4c1fdcfe4d18a8e01abe03e1e3f664f4f14", + "dest-filename": "@dagrejs__graphlib-4.0.5.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@electron/asar/-/asar-3.4.1.tgz", + "sha512": "8b8feb34f452f38b74bd245ad87a2b7ab1915d6c85e2f4e17c77acc347667161e9f9cb292bbe3751a9c0d2cb80e50e72f24cd8db2e982abbdb2149faf4108088", + "dest-filename": "@electron__asar-3.4.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@electron/fuses/-/fuses-1.8.0.tgz", + "sha512": "cf1d0422aefc5a563f9416f5b97973899983648e2e6dc09720c278b868d7cd95b49d2d7d4e348f7973c08f3cd398a425254666d126e66613ca3fbb6e4354ac13", + "dest-filename": "@electron__fuses-1.8.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz", + "sha512": "424ce9836b3d1a7555d88d818d192c522e375397bafb369031c8e8272d02f82e68c5a2a5f9f99c9060d016d469669655d0d41e92e659fad1b3ec403d4d59d0b5", + "dest-filename": "@electron__get-2.0.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@electron/get/-/get-3.1.0.tgz", + "sha512": "17e9ca734c56fa455b051845cda3203f2dcac26b8d4d85f57f1ebe171c684a7360c185fa2c3ec02814d6914d0c43a201a1eeddcf4ebd08d911ebbdec3c082409", + "dest-filename": "@electron__get-3.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.5.0.tgz", + "sha512": "8cd4fc9f01f57fd5f91842135da43c205fca76c92f2243857c1d82bf0ba6b2f79589dce949cfa6be185331d0064981773be36ae3d949ef2facb0e0d15eed3af8", + "dest-filename": "@electron__notarize-2.5.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.3.3.tgz", + "sha512": "299f26857bd6bf6ac812031b599e32df76c31f250a3179f1e0cd2c4f23cd2bfbdc07cd4899d798f4681dab2d1259b3038266eac90fa98607a387a57747642e4a", + "dest-filename": "@electron__osx-sign-1.3.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-4.2.0.tgz", + "sha512": "44a2ff3be8c6a1724cc6bc7fe7bef5cb59f4c532a616e39818ede0326c32a4133aaec1f4928bb49acc3075703626b848904e31c82eeff6f1a4d27e8d3f380ec5", + "dest-filename": "@electron__rebuild-4.2.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@electron/universal/-/universal-2.0.3.tgz", + "sha512": "5a7f6c3d8215151165e479b030990044209feeba8afc4bab91f43fac9675e261cfde26138d94883925689c40278567805f0b70ef339e90646573ac93b59d2dfa", + "dest-filename": "@electron__universal-2.0.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", + "sha512": "452bdb4261f374accdb0b61aff01eb6dcdca378b182ca01d3d9c6a88cd87013aaffd2064dbf10d487a6f5c668b38c72c032cf4a68106aa49a62981b739688911", + "dest-filename": "@emnapi__core-1.11.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", + "sha512": "be08fb477cb75a0c76e0841a18f03f47a6055cb1d530e674b951322103da5acfab7750337c43179400b6d856303b55e4291e8d3ecabb9946a7747f2821175917", + "dest-filename": "@emnapi__runtime-1.11.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", + "sha512": "73de6a39790777274d2a1b1c05379ba840b5095019a72a8e7d57c1cd0d6a833ca5de07de95d5232208036c86600cab072e09ec33e8a01fb4c9fde01ab1a56e30", + "dest-filename": "@emnapi__wasi-threads-1.2.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", + "sha512": "4af97bb6af24ff4f3ea7a0973e94634357ca5fed68747fc141b6f8f1f57a7e3dc258786ca083a863cef0d681d79b4a84a6420add97d5829d2179ddd7057cd731", + "dest-filename": "@esbuild__aix-ppc64-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", + "sha512": "d24d85d76f57762a354dd25fcc9f2ccb5438eef503d8d9f07618807fb76b50dd440537cf7f886c142b66320bbfea6f094b3b01ae59958ee74c050a8e7c6f2eb1", + "dest-filename": "@esbuild__android-arm-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", + "sha512": "df810611b088020a2c633ea0a0b728a57e8ca3b3721aff6d7f010cdbfec27b655c551939ebc892be788659c517232ef0103475c33a2573172b88556b59873006", + "dest-filename": "@esbuild__android-arm64-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", + "sha512": "75bc18ee5b523035ac45ab5c4690a7112e05fa29bcf0e094806663cb9dac842ec6a87444fdc625c4d6c1e19e14a49b30a5c738431776a04fee7ccd29eb520a9e", + "dest-filename": "@esbuild__android-x64-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", + "sha512": "4d96d691063b92f4c05db5d44fbb9500247970c1ec0e24b3f73ed92805ff453abf589124dd0c91af4c19a4d8410d7fbfd02b5da9420994e8a875072d6bab58dd", + "dest-filename": "@esbuild__darwin-arm64-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", + "sha512": "cdf77380af400813592c8fc2c874cec7cd52c8d6cce985e7eebc52817f7b563ca23e5f56d62e0a6b87e0284084a0508a1a9bc18f9a80ad62068108cec2482c91", + "dest-filename": "@esbuild__darwin-x64-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", + "sha512": "c06d8403c10d744234aa191264c8dfaab758fb38826023cc9ad6638c8c0e9971639b2cc41e7f94531939a1ff9262c8ed7ecdd5a67942ed02f3488e6163face03", + "dest-filename": "@esbuild__freebsd-arm64-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", + "sha512": "8bb759f6f4209ef482ce2feb6025cd82d17f53e78a64d241ceedde4d06d18079cceed3528b32ce911140977ab355cfcea7fbb96241c76b8a5fff70ce607b612d", + "dest-filename": "@esbuild__freebsd-x64-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", + "sha512": "a955c1387412f9de58ef6d86c09cc952d38b957ee49b70ab68e686a2b985d690ed3ddd82fe5d521d13e08cbba72c67b9d5287961858a3050f25784b180c4184d", + "dest-filename": "@esbuild__linux-arm-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", + "sha512": "c87b3ed2e73cfa7bc401f01fc6b59028ae6979237305ce0f7a070c3b4109da14fbd6e03bbc1f08860d9eefb4763fb486e6e6233db1e52cb9af7b82cb2d109fd2", + "dest-filename": "@esbuild__linux-arm64-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", + "sha512": "775cf866e3f46a3adfcff161193e2fbf6efcad7f0a9cf3c9c7c8b9f80b4aed361bc7d2def45d61cb3bab669904ca39066bd7541a1428c380b5366786beac4ddb", + "dest-filename": "@esbuild__linux-ia32-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", + "sha512": "339b118d4559ae49b53803d1ddd94e63336637e96864a1958b5554406af0baa2dc6d1eaa780cfe7da98c863012787dd854abd9cfecd3d63961fe4782dd18ff96", + "dest-filename": "@esbuild__linux-loong64-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", + "sha512": "99139b0597878763b170114f584fc58f296446065d62e893477bda4e8ceab8218e1f5e223fda0de31e067bcd42a080d842b5e6231a45ba6241bb932d6699d025", + "dest-filename": "@esbuild__linux-mips64el-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", + "sha512": "b2549c06c3006f71850dc76b0a02f066d3d84681f61ffca8bafd744226724639ac3f8f1fce7a2f796cad4a0088fd1d19714829734661214131e8b1edb3ccab7d", + "dest-filename": "@esbuild__linux-ppc64-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", + "sha512": "930d28c24d68d061444d42725b48dcd06e18cecd011d99f424367c2514f4f3cbe32585fbefb040b357c31b1002faaf37d6a3acd834c2f7a98db06da8a5d7f2c9", + "dest-filename": "@esbuild__linux-riscv64-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", + "sha512": "fe50088d7f1a605441ca187a2f9ad8b4f10346a6bd75eff857f8ee39772d6b97eb8efcd73b8feca84b72cadb1ed20df3645b96bb97033743242f3daa4430f602", + "dest-filename": "@esbuild__linux-s390x-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", + "sha512": "bbf6a73581769a654e103c0bb67435c0eaf7119f6c4cd18b5abb18198c075b3180dd28bce083a41d795b5930f5341fbdff595c9f079828ee78ba1c59c9d3737c", + "dest-filename": "@esbuild__linux-x64-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", + "sha512": "a24b340d86cbc1632669a913b026feccbe04f9a1d154ba26f48259380b6131010f8909b27571e4ce2604b06611c74b8d57f22310a18057de352731f4da97e5ab", + "dest-filename": "@esbuild__netbsd-arm64-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", + "sha512": "69e2fa9409cdf3d1f3e373258751bc0116ac6eea18bd22130c4c74b478796fb8c99c772cb2a823cbd631e37d060e99826ba3b2acaa12d1a3518caba77518b31a", + "dest-filename": "@esbuild__netbsd-x64-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", + "sha512": "3041497b90b747ca705dd679636d68a3a9bb78f892d1df695ae727f7d3bfc2fc896428682102ab403c4aac6796f05e7e4f4a244c77ac0260de8870d322ad15fd", + "dest-filename": "@esbuild__openbsd-arm64-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", + "sha512": "8bf64b20e69f13467c708fd700d2408b1a092ffb910284b6c4e037adbd3137e28ad0ad7bedc300b10624cc7b41aed31700ab8073b1c681c5a267fb110b537183", + "dest-filename": "@esbuild__openbsd-x64-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", + "sha512": "81ef99ec45c536dd813b5a0032c569890f04c27755f62d715deac079320aec0b4fb376ca15740cee7951c4348850831eb9e47508d5f1ab3b4bcdd35e45e28126", + "dest-filename": "@esbuild__openharmony-arm64-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", + "sha512": "0448e0b440a42f7bd8f9269243a9f355f8802d4785c696b0ca9f0999fe4fb5885fd54838d0dd61fe1c6586db3e7f516f4af6ab12281dc52dc1952308d8f24b71", + "dest-filename": "@esbuild__sunos-x64-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", + "sha512": "942bfd78afc7e992566c4edb8769f0e78099f4cda7ba907125c4ec764fd04275a47528ca1aec66987f3f196ae54f578c9997e7e1d19c0a346d7b7f7b5aa7d05c", + "dest-filename": "@esbuild__win32-arm64-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", + "sha512": "cef6ff981d9b482a093a9a0206060a2a95fa60cea624194151552d563e350e564954407aff408a9516313f9c169750b520b882a00539c19678ab53f7a9e4ba12", + "dest-filename": "@esbuild__win32-ia32-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", + "sha512": "6e6e0ca30aeff865cc969597fbe11c5f0fe22f2775a37f9b2640b60e4597615be0642a83fdb4a3f5cb59780302ddc2318234554760ee7da8aee183f1af9816d4", + "dest-filename": "@esbuild__win32-x64-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.14.tgz", + "sha512": "1b0b6f82d5f19d6b2e717bdb41791182a92c887d9079ddfb1fdc47668704e6c03737c3bc3bcffc140dee725417c5757373d5c166e10e30aefeaf4d85992a47b7", + "dest-filename": "@hono__node-server-1.19.14.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "sha512": "c209bd1219768e97aa3f7cf0ffb9a8de4447169e4c10386a01dc32d5f4c69070309e418e56c829bd084bf01e67d6a95bd358d5de7fdb23465f669e65580d64e3", + "dest-filename": "@isaacs__fs-minipass-4.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "sha512": "da492dffb9e227a32010fc45d1b61d43a7ad65a03e7d0bc370b29c921cb5c8840ecdaa0a8c10634a3eb7fda2d58d8137aa146de5dbccfae5327c283a50a0816c", + "dest-filename": "@jridgewell__gen-mapping-0.3.13.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "sha512": "2c8f6effe95a606e03b354c3292256d983eb22571560ec22d9f502eb1078de5b9e0a383157895f7ce0990ad605887e9334e5feb50297c7ded3e082876e1c8711", + "dest-filename": "@jridgewell__remapping-2.3.5.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "sha512": "6d12128022233f6d3fb5b5923d63048b9e1054f45913192e0fd9492fe508c542adc15240f305b54eb6f58ccb354455e8d42053359ff98690bd42f98a59da292b", + "dest-filename": "@jridgewell__resolve-uri-3.1.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "sha512": "71843ddf5d20aeac6e7966e5f96b885086a251a0dc8fb58eab97d58449633558117ce52163d7f2db34ef7e8a96b2779b87c4a5ef45527056c80af2672ca0743a", + "dest-filename": "@jridgewell__sourcemap-codec-1.5.5.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "sha512": "cf3351f9275048327373c8e869e3fc410a0242bf0db98c76748232b65d507811191c9f6e5ba85e6ecad881bcfc849c1441aa374d608cb667d5f0dbb5b7038b03", + "dest-filename": "@jridgewell__trace-mapping-0.3.31.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", + "sha512": "d43a4a5346794e196d0708cdc92302d788340a46f28426b3f45921c6a36c648eae00f257152f1c3179412a8dba149f19b96e92f4608c711f483b99365f9ffd16", + "dest-filename": "@malept__cross-spawn-promise-2.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", + "sha512": "f503ad35f7dc385fdcd6c78c0839e37246f747d587706df8b64cbe147a4d28a096d3073fb1c60bc0cb4efa9b721947cc5b4fdbfe7e2a46200b95a14773d3a3ed", + "dest-filename": "@malept__flatpak-bundler-0.4.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.29.0.tgz", + "sha512": "ce8dfb99903d8495a950b824469a307b07b3d72e8c2f91ac5c93d8f05234b4104277bec712fcdae230ea44a397807367f3aecf5460b24ddceaa73d22ceee598d", + "dest-filename": "@modelcontextprotocol__sdk-1.29.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz", + "sha512": "64bbff25d51f92f3b2f5e0a79c16867e23be5e299b8de6c078ef8c450a83fc1f85475b6744dd2da4a4891d16c4f2c15f4ba6aab1767aed34237f07ecc542d56e", + "dest-filename": "@napi-rs__wasm-runtime-1.1.6.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "sha512": "575249d564d152a1c7ace4a1e7dee151170ca9529518bfde6b792fd204a711db04674ffe5723e084cd6530d19cd34cfb088428ad2bdb2a9b89931bee1dbbdd6e", + "dest-filename": "@noble__hashes-1.4.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.4.0.tgz", + "sha512": "5f95da5566480424fb1c76469b923b6505c3c0b1be6c65ee4ab310016fbb66f97cee1d6499cd5907555244972951fa14ac6429e05928c66e6467e32cf9a5be78", + "dest-filename": "@noble__hashes-2.4.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@oxc-project/types/-/types-0.137.0.tgz", + "sha512": "593f866f6e22f219afa3ce4022fda8118a2e11791194a0254fd59a09add37cb80d08df8686b24e199b8894ca2e021dfc41ee103b1dba794395b2aef4a97af2c0", + "dest-filename": "@oxc-project__types-0.137.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.9.4.tgz", + "sha512": "1a3cde3dc4fd230f0dcde38f7fbde2352f7133e4c185dfc58a501f3fe4501a44cc4094d55adcad3772472400828dffc004d6aee52ee64b783e0dcbb199181812", + "dest-filename": "@peculiar__asn1-schema-2.9.4.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz", + "sha512": "72851fba831e201ec1f3f34c7a4c5a0f32e16989a9d0764d3c48d8466f60a11a2ef146480b7cf6d6cd2c2fd016a02c38106f3be90c8ede462b73ad56345f41ff", + "dest-filename": "@peculiar__json-schema-1.1.12.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@peculiar/utils/-/utils-2.0.3.tgz", + "sha512": "fa82f71cf151219d52b762b9d255825e28a82204a8c73cfb475277b85ea778edb2975b209a9818e975c91f805da680e4316ce741379817aa1634364b09d43879", + "dest-filename": "@peculiar__utils-2.0.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.7.1.tgz", + "sha512": "3833a8bf4b0630931fde33e89ce9201aa3e49d3b2ef83750ee40fefa0cfc688f9a14c38c1c56d6000dad6aa5d755374ff8e4ce411ff39c6bd2a6691e23459361", + "dest-filename": "@peculiar__webcrypto-1.7.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.3.tgz", + "sha512": "0d3e99dcf86f8a878732fc68fb11dcdcab6a820ac8ec20935c2982da1ff9cd4969e63562b6fed7132fbdab9ffbbfc228961962a1ac29328f0a834104072ec9d2", + "dest-filename": "@rolldown__binding-android-arm64-1.1.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.3.tgz", + "sha512": "d0dc20c2c8ccecbaecb959d730ade4a13a5a80134e865a1cfc13632aa663bf8579cc8e6bd77ab1ebdb95851c7ea39674cb2e07ceafa5a72ed3020506fe872faf", + "dest-filename": "@rolldown__binding-darwin-arm64-1.1.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.3.tgz", + "sha512": "62d881a78762b2ee95e7ad25a13e8f8cc76245a5a656f0cdad4ba701a95b885c76820789c31740b2064c72818fd7bbb202c4f0023e55d678a4b319479d54354b", + "dest-filename": "@rolldown__binding-darwin-x64-1.1.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.3.tgz", + "sha512": "c83dc49047579362f2a4fc677ff9126478ab6abb08f2070fcdceb64ae92147d5494f2bd5f85f50fc6c5636e0a88dceec5f2b950b80f144685d0cae17f154ac6f", + "dest-filename": "@rolldown__binding-freebsd-x64-1.1.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.3.tgz", + "sha512": "73ef2f89e41bb03ec73401ca200df8c34189f4579d145b89183fbb13abf3ed0deea8022e80be69e397e196c8f851a02c1e972696aba0056321034fe3ee8d2c22", + "dest-filename": "@rolldown__binding-linux-arm-gnueabihf-1.1.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.3.tgz", + "sha512": "e748c3d2e5302efbabed9cfd2c7cf5ee46807533e39f9c0df77844823be6605459c2247b649628bd37798a9c962430275cabd9fb081cfbf2246ba770485e4e70", + "dest-filename": "@rolldown__binding-linux-arm64-gnu-1.1.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.3.tgz", + "sha512": "04ef7ea0f2fc2bda6864905f60fb1736d6233c4e6e337a9e7a14f7685716e0b2133a5fa24aa869d1a6f38d1da758150d8c865e2978c0116059eb85a33681ddeb", + "dest-filename": "@rolldown__binding-linux-arm64-musl-1.1.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.3.tgz", + "sha512": "7f75692c1d6f434128e9e72bffa71e90b9ef60c145e18045a151a47e4bcf2ead5b0246c0c076103d92a80261ba389c93731c680be02f7b31b1fd2d686cd0b433", + "dest-filename": "@rolldown__binding-linux-ppc64-gnu-1.1.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.3.tgz", + "sha512": "026bab676e8fab1fd123d37583310e0a496429797ddbbca37d7594512d0eecfba1f0044cfce6fca9fac3dea9d692c49c770e9c4ab5b93d21c4f43c8bbbbf8fb4", + "dest-filename": "@rolldown__binding-linux-s390x-gnu-1.1.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.3.tgz", + "sha512": "249a6ab3c6d11884c339d6e434a9e5a23cc169b6ce1ebaa34af0ebd0856c64e6c4d6505c3e3c48b54118f5e5880dbc5a277706ad73d619f1a42311628e0fd446", + "dest-filename": "@rolldown__binding-linux-x64-gnu-1.1.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.3.tgz", + "sha512": "ad225c7633f1cc0fdbcbfebfad8b3ebfe6d753b523be76d45b3f0c25bea487afa49ea075742aed1e0d2ebbb0bfe216aa26fa9d9181d0e481a7fad087f462d6fe", + "dest-filename": "@rolldown__binding-linux-x64-musl-1.1.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.3.tgz", + "sha512": "850dff3d89032480a07afbf235c56b8a155eaaaee4d4fa77559f6563e75ab8061424a3be6aea80a6f00d86f475027f41866a982af5b632ed45f6ee035d230bc5", + "dest-filename": "@rolldown__binding-openharmony-arm64-1.1.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.3.tgz", + "sha512": "12572ffc1b4c2fd957ad5e89b8a21373f82b37691857d823b10a56f097f0e22a0ad133a48c18f27b49e7caa40dcbd49335a236d255cd690051ac3e604a047462", + "dest-filename": "@rolldown__binding-wasm32-wasi-1.1.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.3.tgz", + "sha512": "d83ac47e196e1fdca189a140a66b23b23c2b4986cd718d68153cd848fd5ae77e630db57df330856a703ff7a4c151dd220c57311a6c3d411131c06097cf753efe", + "dest-filename": "@rolldown__binding-win32-arm64-msvc-1.1.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.3.tgz", + "sha512": "38be0e324ed43d739e54619ddeaa39cc9c8f2258dfe0016093940090f3d2f8ea0bb8e3a8ce1b9a4060b5f0cc554e7c3fd3aabdde04a1009ce5c2748263d62da8", + "dest-filename": "@rolldown__binding-win32-x64-msvc-1.1.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "sha512": "da3f5b1ade4987c863faf3ed8333ed97bda3d324711c0cae9a8a3a4cd7c08ec2c1d3852da52bcf6cf703701331cfb9fef42601d1cd46c501716118368e29aa1b", + "dest-filename": "@rolldown__pluginutils-1.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "sha512": "b74f6f48ddcc75fb32087a057134421ff894b46ece2740ac8f307c72302629cfef6bf90881e0c8fd3c6c8a0767704ff86deef7e26d1cbc863035a5788b65ea03", + "dest-filename": "@sindresorhus__is-4.6.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "sha512": "976685cb98c02e19e21b91e0aab0fa8d72e2feb516acabea37fa89c7aca826c80a85b95577e8aaa94e110976af9bf8cf8adc83a394c2bca327a632a73ab8b2d3", + "dest-filename": "@standard-schema__spec-1.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@svelte-put/shortcut/-/shortcut-4.2.0.tgz", + "sha512": "86a34ba38c8473ef922e0024654beec0cc4802c8a2f6a8d0b53bb37dc6157f7c51c5afb41c571f69614aecb754de5fb5e6cf5261535b3c1d2a423f421c5a92bb", + "dest-filename": "@svelte-put__shortcut-4.2.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.10.tgz", + "sha512": "e167ca93af1e4e287e322243e1f49bc4dec4f2454199330f58750f623be5d8dd2b32ce7760b4d3f3f623294e43b67cf92ea0e397b2c4c3853b9574765b727958", + "dest-filename": "@sveltejs__acorn-typescript-1.0.10.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@sveltejs/load-config/-/load-config-0.2.0.tgz", + "sha512": "d4b819fea52a4a8abe428ac3f37964da191aefd3f1d305cd5b6ab95759d99711a1420c358ebb086d5cf962209eb9c54ba385ef14b8d7ba451a423222aa8c2472", + "dest-filename": "@sveltejs__load-config-0.2.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-7.1.2.tgz", + "sha512": "0eb50103651745f0e6517fd94e2128a5ddd7e34c9abec245d455f647281cb8849c1cbee8e585f57ccbe86270e18de2500b8c1e08e9258aba4d5a571bd8d89278", + "dest-filename": "@sveltejs__vite-plugin-svelte-7.1.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "sha512": "e0101f7f29183a03bee67cc1598c04dd6f74b0180b26850f45659c2fcc25ca233c201f22a49cf750c27d29741dd512905e92a9f13bad9fcd0766d5acbb6bbbeb", + "dest-filename": "@szmarczak__http-timer-4.0.6.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@tsconfig/svelte/-/svelte-5.0.8.tgz", + "sha512": "524367c35fe81447de711f32a721c842e5987643ef1e2c1c43bf2c87eca622262817eb9ce47d5405eb5b8f2a93faf806277a9037a9e1b9c26f897e877ac5ad29", + "dest-filename": "@tsconfig__svelte-5.0.8.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", + "sha512": "1777e8d4c62b44960bdf3111d0e50e9a4bad8ebd55a76de6eceb12829ee7ab848fe8ea97e82ff9e971483c09796eddf3681463996ed21b3deeffa2f016961c3a", + "dest-filename": "@tybys__wasm-util-0.10.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "sha512": "210dc46d3cc6c488a06f5237a8f65cd6b5899c7d019922afe506136a5130c1e16fc810cb4807b6e333f495efe1ca2ede7067d9565215020e0166a6fc581c0aab", + "dest-filename": "@types__cacheable-request-6.0.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "sha512": "330e79f28780f5f15bbfae7fcb8987b570ecf5b3e714c6402ff8f174f154a4e1c72175fdd667201076d2e4b6a1afea7064547c03b19095e456788e9c1850b650", + "dest-filename": "@types__chai-5.2.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "sha512": "88ef74b1cb61f5601b9a0bfba20a2ae7b3bd6292a61416e6a04a021c3076c4c058d3efca56ba806820f2084d7a754b2978ebc8c4515123ed2c12da83ab2d9be0", + "dest-filename": "@types__d3-color-3.1.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "sha512": "1c4de354a97353d01a31accdb9fa28449e59a5698b22873dd00dfb594d893267aadbcc35150a8266cc07677c51f92bb161fb731eae9653a2891efab12b34f1c5", + "dest-filename": "@types__d3-drag-3.0.7.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "sha512": "9a02cf11396ba55575611248825af8133e3b83b6318e5d658fb60ab223026f6ed5247f56f0d54ce816fd77c924a46fee0104b90266c0e3cab6200a2528aa3530", + "dest-filename": "@types__d3-interpolate-3.0.4.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", + "sha512": "6e1017bb6dc3256b2b238e7169f629910e0db5c28cc169c00bfbcaaddda5fa7c4c16ebce4f75cc613223da8a6ff2fabc00ee5887b41a73f9d278fff7ce34cad3", + "dest-filename": "@types__d3-selection-3.0.11.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "sha512": "b994b9b217f1ccedeb1a5bb4702ddb8e63052ac5eff9299965c829d0a0f6dadb38b865e9e445581b3bbfd1877065e2a675d85c01c718b511092a43df5e466e0a", + "dest-filename": "@types__d3-transition-3.0.9.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "sha512": "8aa302e3f6251424a53bcfb6222d461869620806385dd786ef8f30e6f4146debe56c3bb4cd28c7ffe8e88e8ad05412bfb1ed23e8350534f0464aa0f76166270f", + "dest-filename": "@types__d3-zoom-3.0.8.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", + "sha512": "2925609909b33303e59ad9633a899aca847cf56e05ca70808b713c3cfb3bbe60d53def38853faf18f2a425f4e19265ecd31d2301a6bd53cb96f1b6dfc92d9f5b", + "dest-filename": "@types__debug-4.1.13.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "sha512": "73d87d75554c8a030f7386f04ef0b9771aada8967040f78fb168cf96948e9e88dba2bea91aa764e78d657c0ec0a8542be6907505176ad23b98f5d6fcd41c3217", + "dest-filename": "@types__deep-eql-4.0.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.10.tgz", + "sha512": "4c1ffa841918409c6c6474aac9eb8ed49b74001fdb5ba1bbac7b7d83b94c2fb48e17a95b81c1efc3f2ebfbaf62a8dd2ac605cb856292700a27ef724d9e9b6e0f", + "dest-filename": "@types__emscripten-1.39.10.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "sha512": "1a174f832d5e978fc898fd395f4e54c38730dbf33ddc10949a712f599352b650b310a304e05924f98a680393a21cd426a12ec269f6fc5dadcfc9af26d50af37a", + "dest-filename": "@types__estree-1.0.9.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "sha512": "9c49f007efb5bb99550ccd94238735fb947e15868a7da0334b83a87287229a3566de7430dd3bb31f950db2872b71305b8677ab6e5c878f8038f6a5db22265da4", + "dest-filename": "@types__fs-extra-9.0.13.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "sha512": "2f72e08a62c75ed1a45a290a9ec3e0d3f545c7d38665a0be78dd6ee2bf8e0755d1a87de6781200542db3af559d307f911e69d192a962400387349fc4d23fded1", + "dest-filename": "@types__http-cache-semantics-4.2.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "sha512": "050e5a64d482a63ec3e8ada4b2b4424e62912c4a673ef58388b3dfa06ca167efbc62d88af5dff70c128f260af2df9f57fcfd4f7ebbb2630be7bf0163b8488422", + "dest-filename": "@types__keyv-3.1.4.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "sha512": "1ac0822190c4fe9de2f7abed12ac7eedd054197adcef37922b7c303c721a453852fbd3a15885d1ab3b3877a93549553c83dd43acd456c56506869e4a5d06f654", + "dest-filename": "@types__ms-2.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@types/node/-/node-22.20.0.tgz", + "sha512": "4169455b6c1fde74e30b5dff0ea46706947864edfa5491ff25506403fbdc9e66d304d40896739bab2a99135b5447bf8d8b6dcb75af11d41c4c7db5d1a42531e6", + "dest-filename": "@types__node-22.20.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@types/node/-/node-26.1.0.tgz", + "sha512": "3b40351b7c4f1b2e30ec081074041852543e04a9363a8bf0f1e469a1fca9e4a7416542e76def96a9a39536b9bbd39487a610a21b85c7b000ab4a63eed5ff8a83", + "dest-filename": "@types__node-26.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "sha512": "1fff8bf94913577dee7f8f4f1f9a420140553cd8f69c30574cdfaa4b574ec32ca0db897709c89c89c080edc6be1ccbc9059705825e6bf1ef9147a7a5b1be0bcb", + "dest-filename": "@types__responselike-1.0.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "sha512": "49c68f767d5d41cce06e5d101537933a65471542eddfde17260390368c95859eabdaf2e730b25f04f779dd2079d93ff71b7e95235fe0d8c65a5f47300ee5ec7f", + "dest-filename": "@types__trusted-types-2.0.7.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "sha512": "4e1545e83095840f24506cbe69acc543891743b1354f2ec0df2a4539ed0870957c3bf339d751bdf405b6e22acaad6e7a5ade38c86f7e8a3f056aaa011a4b815e", + "dest-filename": "@types__ws-8.18.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.9.tgz", + "sha512": "be5feb62c50a701af74a7427d7aebe5d1e5941c80cc770d084559d7e58bf716a4b9cb5266f166fcab259a2d2c552bca26fe2ed02b60c49327945b439ed9aab94", + "dest-filename": "@vitest__expect-4.1.9.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.9.tgz", + "sha512": "115917cc18eb3c633e70af3f00d5a006b91409f25f6f7f3f11f4d23bc87ba56bca9323e4a56c6f47b0640f633222d305eb60bdef3004a2a769522c7047f7be47", + "dest-filename": "@vitest__mocker-4.1.9.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.9.tgz", + "sha512": "b348ae7e7b37888162b5d826f9847b835c21080686b57cf8e7d552f7f3eac8a0c4105818221b07390997808803b980adec37909a2653d107b6380da9e193eee4", + "dest-filename": "@vitest__pretty-format-4.1.9.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.9.tgz", + "sha512": "2972cc0ed73ba1eef4fb79897c6acf5163deb2cc07fb7b13c40300325f031bb23c214413e175bbd7c758e480f7bcf51c9a5bb6ec270a7d8e0fde1dc8dbd48b26", + "dest-filename": "@vitest__runner-4.1.9.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.9.tgz", + "sha512": "25ced1286341a3c676f166089b43627a3e317523c1c917fa994e7c5691d091de99874e6b96703eb708db2b91f2788187c6bcec737989812e37b8cd0264acda20", + "dest-filename": "@vitest__snapshot-4.1.9.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.9.tgz", + "sha512": "7c7a6c4ba9888be3e2116faf71154e3245f5a1268f2a77b754e7254852023dc18e99f2a05cf5398806a1fb070d723db13eb08299fabdf480c67fe1288e186f84", + "dest-filename": "@vitest__spy-4.1.9.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.9.tgz", + "sha512": "039d68f3298ee4fa6a95636704ff591cf5c3229b8cb532e51928cdee56b8512f8b273a143328708c0e505e59b7f497b18301ca5b85e3b3c67677774b09739eb8", + "dest-filename": "@vitest__utils-4.1.9.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.15.tgz", + "sha512": "ff9355fef0c02d51435e02e67eccbd4d108194ac0ed8b341173a73bdbf62223fa347e79273a0cb618bd539d8af4ff8e6eccb54e9379b62e466cc4388ef0e3450", + "dest-filename": "@xmldom__xmldom-0.8.15.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@xyflow/svelte/-/svelte-1.6.1.tgz", + "sha512": "a3ce11a6358c02ce6d5e360f8fa3d48cc71c060785e13140f0396506a3126e78490f76712e1b6da7836674764020cd53e5b2b9340cc26adf8cdfbb93ffdfab4f", + "dest-filename": "@xyflow__svelte-1.6.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/@xyflow/system/-/system-0.0.78.tgz", + "sha512": "958d33daa3f7ddf5214ef6bd55ac6b93496a66d6b6a646f1075b6b1c0c75a269c9a91b4fbc3940418576af97e14ba01da64ba56266cd5b4b2fcbe038fede01fe", + "dest-filename": "@xyflow__system-0.0.78.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/abbrev/-/abbrev-4.0.0.tgz", + "sha512": "6b5c1f97268bd2d1ed25298b48e5726d8872db6bd18a1e1e76e861ae472382b5869d17eb66da2f2761518f1b93b64923e3b3bf6da7f447ce905393ae629cfc7c", + "dest-filename": "abbrev-4.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "sha512": "e5cbe0e82b4ac1f81d995a98d562225ca7374356e446a18b8bed96ffa6a8fba63b82efd10b046e021184ce1e41e0a96ccd2b932e0658baa16aa396c89a334a9e", + "dest-filename": "accepts-2.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/acorn/-/acorn-8.17.0.tgz", + "sha512": "c5141b0dbf419f00da7d8367e95c25f37f436158ea5d86f55d51ad58067591c0dcea2c002f8860dc1d5d665462b8434578ed87e778051b78a7eb6d4074445502", + "dest-filename": "acorn-8.17.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "sha512": "32703e613f1fc1f24f801c779bad0c36a6a49b7d173a4c88a07d72ea1b9342f0b43f0646ee48bc35a70b05cacf6cda28f2f119cbb269ba4efe8cc3be094a2f4d", + "dest-filename": "agent-base-7.1.4.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "sha512": "f2252a979d04511fae51c7514371c3a9ae84572a3776870bf20e5627714d7169aeeb621b90652e7bfa44c8b056f1518a2ae7133e0a9e92ce1f214d43038ca8c1", + "dest-filename": "ajv-formats-3.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "sha512": "4e16e58be3a53a3fa230f60505505f2773a60809da4b2367e0cd6fcfd4fa1a46b926df5b6bf1c8479ea3a32eb9b58ea4c7f142179557341f35f58eff194ac118", + "dest-filename": "ajv-8.20.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "sha512": "aae2505e54d25062f62c7f52517a3c570b18e2ca1a9e1828e8b3529bce04d4b05c13cb373b4c29762473c91f73fd9649325316bf7eea38e6fda5d26531410a15", + "dest-filename": "ansi-regex-5.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "sha512": "cdb07dac22404f5adb8e25436f686a2851cd60bc60b64f0d511c59dc86700f717a36dc5b5d94029e74a2d4b931f880e885d3e5169db6db05402c885e64941212", + "dest-filename": "ansi-styles-4.3.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-26.15.3.tgz", + "sha512": "d959f25a4aac3f9bf95db0612f7b43e52cb1f2234f058b2853b918e12d9fcfbc20f118ff9f3b5628253318a685453bf45f07f7fc7d39f024752afb5dff7951a3", + "dest-filename": "app-builder-lib-26.15.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "sha512": "f3ef56a9e6db173a57f4e47e59ae8edbd6ac22881e44ccdc1ad00835da4c1c7c80835d1fd3969215505b704a867ff3d7c35123019faadbf6c4060dc3beeacadd", + "dest-filename": "argparse-2.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.1.tgz", + "sha512": "67f65e3a0565edb712619feefeb8747cea6f129abffcb66675b917c9ceecc95ce33c085f39af5e6ec7534a31010d4e2fb399c2f7c29f76e8f5b85a34ab2113de", + "dest-filename": "aria-query-5.3.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.10.tgz", + "sha512": "4b6b3768ecad88a74545dba5c36a8f139d4cce3cd53a2b29a5c56fee354547e2b0d24c70bc5ac371803487b35da9b9a3d0790c2176166a88fb7e58bc920c757a", + "dest-filename": "asn1js-3.0.10.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "sha512": "2338bc45071f7ea09e3558058a02a58b5b2c92521ba479c261ce809275c662807a82b26ac9e6f2ee3bf5d895108264c09c80e76dc935bb192c4f87733773d604", + "dest-filename": "assertion-error-2.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "sha512": "356d9c5fc9b543b28f03b6b933650b41e676c11e6a2393c06f0e4bd1438cc5d8a8564f4f319d21d539b264490f62b0af6230e51480aeb0ebb576510a00079707", + "dest-filename": "async-exit-hook-2.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "sha512": "86d0940e5c72c822cc81a337c578340b42d6db1a9fb90ea9d39a42108b17bb243e6b592860a4ee04ccd13709b26df2e0bc90cc774af52d39f8f84d138ba0b600", + "dest-filename": "async-3.2.6.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "sha512": "39e8bd387e2d461d18a94dc6c615fbf5d33f9b0560bdb64969235a464f9bb21923d12e5c7c772061a92b7818eb1f06ad5ca6f3f88a087582f1aca8a6d8c8d6d1", + "dest-filename": "asynckit-0.4.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "sha512": "faafedec492fd440d8da5e8675ae8b2e25f5e2b53d4d5db459ade87de426c0f1596ce328f435eb2db3a315a69c9645ca5a27486a8a7000e6d00eac16b46523aa", + "dest-filename": "at-least-node-1.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "sha512": "9477badb3bdb4c1e5e100054562fc0c1587464a63dacc3038669be79ecaeb9441b437f89f9f38d550399ca3f8376bbc3e01637dee6278b2449e142486922807f", + "dest-filename": "aws4-1.13.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "sha512": "a888f41bdc196cc18d2e32e68353d3eafda613d007db3967003243ff6b42e84d348609a150e7c407a82b7873c07cb452b9f1ea44e2144e4c3a13e337947d0f4d", + "dest-filename": "axobject-query-4.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "sha512": "de849e50ed13315ebb84dd4099b5ec2b8c9aa94eed8e21e56f144364ea47d0a5bdf82797e1b440697d009f1b74b71d8cae94695b041a3f02252121098585393f", + "dest-filename": "balanced-match-1.0.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "sha512": "04bae011c453c17da8ea01b118e08dc8cbc64a9df96287ee633c3d87520c4d198aaadb40659554ebb6dd6fd3ebdaf50703cfa3de2dad25f8cee82ebee26c864c", + "dest-filename": "balanced-match-4.0.4.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "sha512": "00aa5a6251e7f2de1255b3870b2f9be7e28a82f478bebb03f2f6efadb890269b3b7ca0d3923903af2ea38b4ad42630b49336cd78f2f0cf1abc8b2a68e35a9e58", + "dest-filename": "base64-js-1.5.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "sha512": "5e9363e860d0cdd7d6fabd969e7ef189201ded33378f39311970464ed58ab925efd71515f9acf1026f2375664dd3a413424fb63765c1f6344392f6e6426711b6", + "dest-filename": "bluebird-3.7.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/body-parser/-/body-parser-2.3.0.tgz", + "sha512": "d9c1a626ea5a36083e414c152c0b9c0ee5aea0c67a117f621c346cc19e65b0d6049b03da4649cc3c22d9cf4ef24f356affcde9e28ff0cdb0d96c1ad3bc619323", + "dest-filename": "body-parser-2.3.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", + "sha512": "11d7a9fd7f5f1aa54d9b328156c0d820eb43fb3d6db9ecd5ef42c18dd0acb7d4eabbbea5b27bd1899ea84e27359fefc12305fa4031803bde0f3783764800efb7", + "dest-filename": "brace-expansion-1.1.18.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz", + "sha512": "8467d5ccfc6d85b7f7fb6ca383f441b3ad1c074161a814bfcef755ff8c27e3f0663746cd30c1cf73857f05b1627aa7f54ca0061801e76387928da8c29747f65e", + "dest-filename": "brace-expansion-2.1.4.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", + "sha512": "49c43822ebc8105d533253fb66dfaf8c9ffff7394f6f64837315b13376e4f2ceade8619d27b28ed5d09c4e274e3c929e3d6df42c4ff6713ef00b23e1a3dfd6c6", + "dest-filename": "brace-expansion-5.0.9.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "sha512": "54ef47b7ffa9dd237b48a5aa72b804ce319b4522584f1f90d694d00b4c2b5aa1f1d2fa49ada43a1ad1f1f2dbdc835ae52b56f2854e6071cc603a08fb0744c391", + "dest-filename": "buffer-crc32-0.2.13.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "sha512": "13e5d0091c126da6a20a1b6fea4e83c2073e6f1f81b3abee2891c7979928c7f05a29b8625f3a903b02b870edb6c84946a763829a3c15853dc79b18323c69c97d", + "dest-filename": "buffer-from-1.1.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.7.0.tgz", + "sha512": "83f911e76d208801589125d3cdc985de4a90abbc22f05e8de92cde0e066ba9304df951dd9a058ec93743d720fb0004c321dff25cbbee3f7e02c56e3afc1c0277", + "dest-filename": "builder-util-runtime-9.7.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/builder-util/-/builder-util-26.15.3.tgz", + "sha512": "ab6867ecc6e8da714d9157a43e21c5c7a35fa37854466112ded7c19fe9393eac65d919263f7406a995211ffabd3dc87fe06d3935184f8c39558f53bcab84f1bf", + "dest-filename": "builder-util-26.15.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "sha512": "fcd7fb4f2cd3c7a4b7c9124e6ce015efde7aafc72bdbe3a3f000b976df3048fdc1400a1e5f9f0da07c8253c3fccc690d5d2b634d28ba7f33ba174a4175c61b12", + "dest-filename": "bytes-3.1.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/bytestreamjs/-/bytestreamjs-2.0.1.tgz", + "sha512": "53567fa1bef557f6d77d5001bcdaff2ae99fe55c9e4110449ba4f16f43d0e92ed5e46a41337c3809bab3ff13c389c479b4dd2ebc389f9e0f02fb9a8409e1b0c9", + "dest-filename": "bytestreamjs-2.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "sha512": "dbf90db1c3e1a5cc6b3a280c6736e2585eddcfc8a585bfe72075371326625d65e97aafdabbca89f1585d7ed324b72de7ec68fa1c819a9501bca2204d07700980", + "dest-filename": "cacheable-lookup-5.0.4.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "sha512": "bfea7aa2782cae9d324c66c95e38313e8c36f832fddc30123f891708329bf3f6f046db7d384177c218209240e418dce0716cb65da1786bc9d98250bbb8496c72", + "dest-filename": "cacheable-request-7.0.4.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "sha512": "4a9d5a6e52748af0e44b38dc68977112e9cde7f5ef92c149dac30115fabac74af285057fd9bfcac057b6d5c329987b4f3928a3f0af7dff049fa04b9339b9ae31", + "dest-filename": "call-bind-apply-helpers-1.0.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "sha512": "fb2b3df7b53dea9a382b1fc0069042aa103d12ec49690583420ef6f791f8841a61bf72198346e804abb0629b78617a7a319e4099942753fb72313951a5a49e8e", + "dest-filename": "call-bound-1.0.4.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", + "sha512": "3543d196e39f3a24ca04abd63ed483e0f845bd60aa3a2d01192b4d5ace7b5fd8eced7193a6b4a6168cf9174b56851e163e335e47d8d7a9d0bbfd4a522539e546", + "dest-filename": "chai-6.2.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "sha512": "a0a9db845c91217a54b9ecfc881326c846b89db8f820e432ba173fc32f6463bfd654f73020ef5503aebc3eef1190eefed06efa48b44e7b2c3d0a9434eb58b898", + "dest-filename": "chalk-4.1.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "sha512": "420ceef247c1be8f9c038f7ada39cfd4a912e83a29e4d4ba83b4792c5609af86fc51bf783cf417524b02c3d3ef5e87973d145d751342e42d4941447648c1ad9c", + "dest-filename": "chokidar-4.0.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "sha512": "f88c7363d05939077f5ee60f466aef1158c5fe7aa3e64813e2412aed5a1fac3a0cd4cc6846311692b082dc4b4b8b9f5355ac314c09fea2b27015072ba84375fa", + "dest-filename": "chownr-3.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "sha512": "d51e45868fa306ad030f276dfbfbc75a3e4a24d24229d01128e0b06547a7f3823906b796a0ba912c0347d54f3b789cb5b620123ed3271aa249ab466c2e844f3b", + "dest-filename": "chromium-pickle-js-0.2.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "sha512": "59dcb6220bbc39c069236a5978f679a168cf0b7f2d983571e562945cac252d8900d28ce8f39b0bb0bbe405b067fec65a482305386649d787ef5bdb79fddee474", + "dest-filename": "ci-info-4.3.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "sha512": "efb3d2c1eadc09953615ce2c5fde1e17c93c3f1b5ee890302f8fc80992c58c92ea7a0b3b902b80b2aaa3ffbd0d405e93bc3a6016392e6d0076156d9965d76f42", + "dest-filename": "ci-info-4.4.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "sha512": "05278d9f2bacef90b8fff350f6042dd7f72c4d7ca8ffc49bf9a7cb024cc0a6d16e32ca1df4716890636e759a62fe8415ef786754afac47ee4f55131df83afb61", + "dest-filename": "cliui-8.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "sha512": "44ea0bf788c91f675454c2f663fe4f10335a48781e39d48389c5324bb8b3705eb71bab1373f1538cbb9be1bf0897d4bc4b46de39f62dd13680e6abc52bec34c0", + "dest-filename": "clone-response-1.0.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "sha512": "7989b441606d52b0566561b4777f3a386030d7a67df793e2395a3607b6e35926c779d1a5e5ed1959aabae6438681448d7ac1080e407d2126d383f24af5d84264", + "dest-filename": "clsx-2.1.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "sha512": "4511023ec8fb8aeff16f9a0a61cb051d2a6914d9ec8ffe763954d129be333f9a275f0545df3566993a0d70e7c60be0910e97cafd4e7ce1f320dfc64709a12529", + "dest-filename": "color-convert-2.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "sha512": "74ecbedc0b96ddadb035b64722e319a537208c6b8b53fb812ffb9b71917d3976c3a3c7dfe0ef32569e417f479f4bcb84a18a39ab8171edd63d3a04065e002c40", + "dest-filename": "color-name-1.1.4.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "sha512": "1503783117ee25e1dfedc05b04c2455e12920eafb690002b06599106f72f144e410751d9297b5214048385d973f73398c3187c943767be630e7bffb971da0476", + "dest-filename": "combined-stream-1.0.8.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "sha512": "3f40b2b0d0d0eebb55c3840842d9be311c55ebabca152be5b10bc6617656477a855348e530a1d9659830f1efbc0d26a1e140ca32a9e49d10d0cfec6e41743f66", + "dest-filename": "commander-5.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", + "sha512": "a490e1e7fe30ac49d75ff556459bebb8018793329daf8eb3d753a54cf37e56b0139565a148a7b03422757eeb423b90bb7890779cf305640d4b798b5c15ba19d8", + "dest-filename": "compare-version-0.1.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "sha512": "fd2aefe1db30c903417e8846a73f68e986f71b3dd2ad40ea047e6b4ee84647b6a1b656d82a7571c366c214c4658da03b1171da5d9f30b07768745bdb9212a6aa", + "dest-filename": "concat-map-0.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", + "sha512": "e634421fd67ff8344feeb92f63cdc1fb2188197f7a3987499b39e0aa7c364814b1a8214f774c36926dece626b0a465fc92b9f0486985d055b9361af41df6a2de", + "dest-filename": "content-disposition-1.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "sha512": "9d38ea7dc045122a4a7570afe180d05827e670b64a9bcd65745d29028a53bf2ac51956dc47a3ff54001de46ecdfb4b53afc42a894d2d15a743e852b836d27038", + "dest-filename": "content-type-1.0.5.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz", + "sha512": "8ff3bf77b19c642c8d97bfe1c1901beb4eabcea932bda0dcb4b99c91bc4bcc7bc50734c91ee1847687404dc3f7c884680eb2c790801326ebf36c5969fe48b671", + "dest-filename": "content-type-2.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "sha512": "2afa78e7d1eb576144275080b22d4abbe318de46ac1f5f53172913cf6c5698c7aae9b936354dd75ef7c9f90eb59b4c64b56c2dfb51d261fdc966c4e6b3769126", + "dest-filename": "convert-source-map-2.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "sha512": "0fbeae53bdee9525eb0f5517178284d93331555c21b270a07c0c9383d93c3fa2866639572ab38b7b874940a2370718b9c237ac6681572561253560633d931b86", + "dest-filename": "cookie-signature-1.2.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "sha512": "ca48b95e72ae7fbe74979d2e193965b7a90a20b6389d0d5e34841ab685c40726797568272aa6e7aa64eb044e41e0dee5acc24a436cad58c8933b6a34bfa130ff", + "dest-filename": "cookie-0.7.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/cordis/-/cordis-4.0.0-rc.8.tgz", + "sha512": "bd76982ba5d92652054e7383a7845df7bdd09ddfe09b77301735ac31369ebba710421780ecdf9a0341aa1d1365d1c148af1317594f1db2dd595c795442f7f247", + "dest-filename": "cordis-4.0.0-rc.8.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "sha512": "65006f8b50dca49e060ea6a78ee719d878f7c043b9a590d2f3d0566e472bbddc64b09a2bc140c365a997f65745929f5ac369660432e090e6c40380d6349f4561", + "dest-filename": "core-util-is-1.0.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "sha512": "b49b590411c0eaf8c801a17a12721aaba95a0413fd6aafd8de8b9526311fa076d105c1c100761c321ff0f0b0eb9363ef20c32af209a8a5ae43e15f1199baf11b", + "dest-filename": "cors-2.8.6.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/cosmokit/-/cosmokit-1.8.1.tgz", + "sha512": "3c306fe25f74c592ab52c674beda327206693bf8f8885b2a257ac0c6cc810ec9d0448ed93095c88e00c9b0a3637792fc8e75679e5ac309d86415b4e77200958d", + "dest-filename": "cosmokit-1.8.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "sha512": "b95d903963f69d6ceccb668ca7c69189b862f5d9731791e0879487681f4e893184c834e2249cb1d2ecb9d505ddc966ed00736e6b85c9cd429c6b73b3294777bc", + "dest-filename": "cross-spawn-7.0.6.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "sha512": "ce0fdc85b5f2781b4c4352db0ff592a16d83a42dc8d26a663dd5beca74538ffc760c0598ac863ba9e6481e2768cf0576e26e226afaf5e653702302f14663b184", + "dest-filename": "d3-color-3.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "sha512": "af35323d4fd2eebc147e53322dcd444c37818f4351b8728a01cbee928cf086c86bea0e9ce5df338787368108d8d9b6747577862d67353c5d7be0fdad56f2a17e", + "dest-filename": "d3-dispatch-3.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "sha512": "a566d424b7444d503c95034979c331a177c7eb1fa63b6510a3cad2999f90ab171bc80de17dea6b160213fff1d6da79470a159e2083304b616afa010046485392", + "dest-filename": "d3-drag-3.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "sha512": "c11fd72b70f75dc2c8670a5bbd0c10e5f2bef1891db358a9ec0d93c5ed32c6771749dab52fdb24706edb95c79d90e5fe65c83118098b5f516b4466c00f0ce2d3", + "dest-filename": "d3-ease-3.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "sha512": "ddb62cd6b383df7ba8f1aa897ca3f72563c089b830f199b6f8bf6f04a107276460faf89347ba39326bf999972278df854586803965f94890135fa9353d6cfbda", + "dest-filename": "d3-interpolate-3.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "sha512": "7e64d159b34c9ac996abac4957c0f5f54fe0c3f6f0ac77cd5f1ac837e1df6609f3a931e9f633a628c86c4d48d73899d939d658f50dbccb8c9e6cacea0ca97195", + "dest-filename": "d3-selection-3.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "sha512": "9dd7c9fc9c7131dde7c37d6ec8aa18da76a2bc5fabdbd57e2dcd2cbd9c5ed49bef2119a2f2152caccbdd3b0812d68eae0479a2cfdd60790d3294f3f46a3d5550", + "dest-filename": "d3-timer-3.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "sha512": "0292af7e3b1247ab60d3ac6b2f8df80b45b274bafb25ec0107757eff7f51307b1a5d3386d339adfce0177a78393392c19b4a239b126ba68990559d5a3ef04be3", + "dest-filename": "d3-transition-3.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "sha512": "6fc02657791f41aa9602e69c6cfb8d6cbeaf6a19ce25f94e85ec4bccc30d2e06badbefe7874273bc9d1a3bfe5ae4c560505192ec7bb53fd3f4de8ddf2640c2cb", + "dest-filename": "d3-zoom-3.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "sha512": "446c305a7c10be455f6af295b76d8518bc3ec5849dcc04709b4aeee83853540dee994e6165cdbc57790ee2cb6062bcab4e52e9baf808f468a28e5b408cd6dca8", + "dest-filename": "debug-4.4.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "sha512": "696df9c9933a05bff8a099599dc307d8b0a866d2574d1c444b5eef137868462a305369161da24a1644810e70d1f9c9bd27ef5085799113221fbf4a638bd7a309", + "dest-filename": "decompress-response-6.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "sha512": "dec52a6cc11cefb5eaa5d34eec547246883e796de987e19809b8feacafae63244cbb0b15cb4acc895b4f9fe40994a16f58fff53d8a5aa6a627d0c7b6927167f8", + "dest-filename": "deepmerge-4.3.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "sha512": "e2dbedb5ea571b555a606ad189b93913025dd6de2e76e9d239531d2d200bea621dd62c78dfca0fc0f64c00b638d450a28ee90ed4bd2dc0d706b1dcd2edd1e00e", + "dest-filename": "defer-to-connect-2.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "sha512": "672483ecd7fdd5a2c1d11c4be0a1ab28705797b11db350c098475ca156b05e72c3ed20e1a4d82db88236680920edaed04b8d63c4f499d7ba7855d1a730793731", + "dest-filename": "delayed-stream-1.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "sha512": "83b9c7e8fe9dc838a8268800006a6b1a90ad5489898693e4feba02cdd6f77c887ad7fb3f9cfb1f47aa27c8cc2408047f3a50b7c810b49444af52840402cb08af", + "dest-filename": "depd-2.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "sha512": "06d8f604e38ef37a375b21f9f5ef0c817b3111055c6ab9143a9118aee6c1d2eaf09cdd74c90dfae2bb22072535d67665a966199b4e62fe87fb8a8e26ce2841b5", + "dest-filename": "detect-libc-2.1.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/devalue/-/devalue-5.8.1.tgz", + "sha512": "e025c3611046a8dfb9ef054992e5c1626a405544a0dcbe890106bf0c5aa6db7f06ef7135c2ec9cfc9846409ccdeef51ffc23298586aedb35db7d6cc347969313", + "dest-filename": "devalue-5.8.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.2.0.tgz", + "sha512": "db130298ea0cadd4083c776c4dac0409d34fc2554507dcc6733de4ba19813ba537a14f94423b2e7b48bc6b22caa6005c9be85c5cf31548650df5dfa9bc9ebe55", + "dest-filename": "dir-compare-4.2.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-26.15.3.tgz", + "sha512": "3b7cc95055181c92a0ccfaa2a07c5fc730739520b5797092afbf6031204a04fe408238e99abc9d32c30ba2d120f5f009177eaf7549dc6fee27751371a0f76549", + "dest-filename": "dmg-builder-26.15.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", + "sha512": "cc81f09993d1b21b02769303c95b2a1a68323f4c93f060205d49e4740a098acc6f7f7de4ef23ba3aea0a99c4c6b973d64ac9bc3a1f3c9d989c44b03d634ad478", + "dest-filename": "dotenv-expand-11.0.7.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "sha512": "b81ab87a05874dc4eddf76bbdafa521b4cf71e73ee225e8da98713aca120d9ace81329768695b4cea971cacab6a4af47943207c87c9a91e61a627480c1df1ba3", + "dest-filename": "dotenv-16.6.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "sha512": "28837f9c3241411717c3430b561644f62407986ebca80548060f42aa65188e64088608a3f54e4c16faea9142f915bb72cb366e39e3add3375e45ee1463b72df8", + "dest-filename": "dunder-proto-1.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "sha512": "6ac2c555f596b49f746723941ccaa4eff4b6c3682e40ac542368ad8f777dd800c78715126c23068b57f5701709ef13354e8fa913f2a16f0a35cae35b3043ca78", + "dest-filename": "duplexer2-0.1.4.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "sha512": "58cc26f4b851528f9651a44dfaf46e113a86f3d22066985548d91d16079beac4bf1383ab0c837bb78f0201ec121d773a0bc95e7c3f0a29faf9bd8eb56eb425a3", + "dest-filename": "ee-first-1.1.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "sha512": "51e26615f3ab0104bc38958f678aad807c961316b4f3cfccb4ae54132a091851faedc0c45e4652be23a2291099e178a3d33c48dc9102818b37a0ac7e022cd004", + "dest-filename": "ejs-3.1.10.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-26.15.3.tgz", + "sha512": "25cd7d5cf57dcbdfb66c07593e45ee54d18d204141abda681c2eb597c2afe8574aec3446dfe21cd2b7ab0b40d739a787373f325b47e0fc99c5f0641138e17930", + "dest-filename": "electron-builder-squirrel-windows-26.15.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/electron-builder/-/electron-builder-26.15.3.tgz", + "sha512": "6b528ce617aa4b7810099ce2cd7108f118c9cb7415a2050b3dd792927b7beae2c3a41216fc70c6b0c83f5e03f4ae23fa3c8f423ac46f1484ca2860ea03c7c9c4", + "dest-filename": "electron-builder-26.15.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/electron-publish/-/electron-publish-26.15.3.tgz", + "sha512": "83fd9b9fc6136af63872e4b917e8ce4bbce665b5d7055f0a67cc8729f26314fa0ab7306aae909d34fc41777b6a741c0fec155dd251b37fb064dacd0a7ac599e1", + "dest-filename": "electron-publish-26.15.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/electron-winstaller/-/electron-winstaller-5.4.0.tgz", + "sha512": "6cedf2d7462292e53052e0d441133829fc0d90a867a553bb20f75bb2b7a3c0df7f000049cf34d0e06787c32ccd4ab54efad107dff369db9e5adec559a590e3be", + "dest-filename": "electron-winstaller-5.4.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/electron/-/electron-38.8.6.tgz", + "sha512": "9720617158bd4180192fa14eeabe6dc005808d69d8a26a378950efadbe5225996af76f0119e98738a1b4b4f22ae3534e2da0aef5fdd77441233248d03e3a6b46", + "dest-filename": "electron-38.8.6.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "sha512": "3128d8cdc58d380d1ec001e9cf4331a5816fc20eb28f2d4d1b7c6d7a8ab3eb8e150a8fd13e09ebd7f186b7e89cde2253cd0f04bb74dd335e126b09d5526184e8", + "dest-filename": "emoji-regex-8.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "sha512": "4349fd1d18b89ba26e188575785966bc907b644571bbddc8accca232c182d25acc24c5b3460c7a586aaec9f4206556f7d6f8468179df98f34d5e6c673a4441ae", + "dest-filename": "encodeurl-2.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "sha512": "a2810673a1cfdbac57abf37e18218e4f424a08b0c6aead9b41466b43b832ac989900d27ff180d3c53a5005718c9fe59b2105cd569c96ca69bb2985480909f23a", + "dest-filename": "end-of-stream-1.4.5.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "sha512": "fa1d6590b2a164c4d88e8835544a49346ecd64959cb9cd830e4feab2a49345108e5e22e3790d5dd7fb9dad41a1a8cc5480097028d67471fdaea9a9f918bb92d8", + "dest-filename": "env-paths-2.2.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "sha512": "d9b9a546934a0714ff09198f3a5c88490a4d8fea92798bdcca6fee4f4271d9b30e94a2ed4b2d5998bb95c5210a2b2a2bfcde7286fa7f6621b5a04dc311831214", + "dest-filename": "err-code-2.0.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "sha512": "7b79d17e07d4678acd18bdb7da05205f4e90372c9ecf4e0a76316b17e2d34683979ab3a014a0e0e0109db235bc1274faf5ea9d606991a49c223d560dac2696de", + "dest-filename": "es-define-property-1.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "sha512": "65fe47d8ac6ddb18d3bdb26f3f66562c4202c40ea3fa1026333225ca9cb8c5c060d6f2959f1f3d5b2d066d2fa47f9730095145cdd0858765d20853542d2e9cb3", + "dest-filename": "es-errors-1.3.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.2.0.tgz", + "sha512": "de51b17535c22df7b53187d3cf5cb692c00050ce0d00e3faacf123c4625528eed3679fadbc709a4161a90b8637217bd6dde71ed02cf57083f81560713a71824d", + "dest-filename": "es-module-lexer-2.2.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "sha512": "1d6701a0de8d8a57aab52c9d2b616a1db4bf2e80ddda9aab9d01cbc89cc18f890ea7f932d8c58c37af78c4e7e42bcfd29d4b16d831fb11fc9597274a0ac9b567", + "dest-filename": "es-object-atoms-1.1.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "sha512": "8fabd6cdfac655fc97c607be3b4c79b21e9cbf10288346bfe1175dd8adfacc2315e5e27effeb4e0278113bc70e0cc3566d545d5659866502f6612df247c6c850", + "dest-filename": "es-set-tostringtag-2.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", + "sha512": "1eb26bbd9bf96b2c41ccf7f0a613a837393338822589fce4d0a26b18ad9cf11e3e2caa4cb6960b41e51d8e7c235affcb665907da569993ee30efca62f7d0f857", + "dest-filename": "esbuild-0.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "sha512": "5948f6aa5c5a42d3b883a3eae5cdbd193716183c9df22b4bf334e58a98040b3dc97ac02288e2a8b5df0953aa2d0773c00a01bac64254c9585ba0c4be6e37bf8c", + "dest-filename": "escalade-3.2.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "sha512": "3624aea59e0e7ae1b0afaf251887b29bf92c219309a1d506392099fc54a74f172b7a46efaab81d53194938ca628da299563009ad6ac6b3fe89cbc38cbb28fda3", + "dest-filename": "escape-html-1.0.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", + "sha512": "129c6bbfe36bfc268be1970518f24860b585a26f98795d43a8c2c726811df52611c4d6da16bb81c1f117fe49075097f9e63dbe4d46e60dc9ae8a56cfd539971c", + "dest-filename": "esm-env-1.2.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/esrap/-/esrap-2.2.13.tgz", + "sha512": "9bc8c7e61660244d914542bf8e39063dc2440c057e7589d9605928b1068f4dc13e630e31ca75c73a8e8551dc1a581b5d4776f530c6bbc040d3487791d955ac18", + "dest-filename": "esrap-2.2.13.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "sha512": "ed150a7d781230c933b7a66e5e6a9aa4ebab2c63cf7e08fa97db9167b9511a896f934cb6ca871cdf92dd731282e4f419767d8332a8a8010d8da1672b4ca9a6ea", + "dest-filename": "estree-walker-3.0.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "sha512": "6882f9171ee66b055adf4d1a976067104e2236fa35a844f12eb3c8fe8d392fbcfa828edf0b0d49e844266cae05989d804bb920545fca1195ae7c17dd0a531c3e", + "dest-filename": "etag-1.8.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.1.0.tgz", + "sha512": "9097b3163f5814030b78e4728bb6822f12db0f9fea58c427a0c56554fc8722597b96044909cdc95659fd56097d9f0422d1890c9e17464cc367ec2911440a6d32", + "dest-filename": "eventsource-parser-3.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", + "sha512": "0914f5593cae4280fbef5196e7a5c464543f66849f5a27756a52860d832692ddb297c517ad5478a6ca6a58d11ca8abd523383a3c096d5a3c5c4923eb6e803888", + "dest-filename": "eventsource-3.0.7.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/expect-type/-/expect-type-1.4.0.tgz", + "sha512": "29f61b9a9466d156cb8c4bd56bdc86c028bd188df8c6f8bb03f1d761640eeb90920f6bb731ccd4252bb05ca148c651ac801422cd5f6ae49f4d1e3e151b49fea4", + "dest-filename": "expect-type-1.4.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", + "sha512": "66011e6578f7d2af88d0437e09b492a48c8f689e475500f5f19d66faed455db01e4fde26af5cf0e74ab8aba8e2882e38ecd97f61370861201fb621aa7adc1708", + "dest-filename": "exponential-backoff-3.1.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.5.2.tgz", + "sha512": "e4a6f7e22a4d5faf780c7e3cbcdf62ada935431df49dbd0f2d81d77c9830e18123882dd91266498703a9f957e2098c05cef153741f50900ad84b99176b6731d8", + "dest-filename": "express-rate-limit-8.5.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "sha512": "8484b889d5966a2ebd35ecc8751b76c455687da1788fee8834ea4995538b0cef335c6a54544573218935d94522d89ce313358bdc8380c5c4ee6e0cfd3e8d325f", + "dest-filename": "express-5.2.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "sha512": "183854f67b70b8ac865dd6415204c87bebd79d68f47e9a5412d3032f4fa275de52b5af131a91ecb27fdebac03d9ab3ebf6a343ca6e92c406198cdbc29fff5106", + "dest-filename": "extract-zip-2.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/fast-check/-/fast-check-4.8.0.tgz", + "sha512": "18e275e7c09432737a7126a1b2fe3e131011bc80eecf38a7163929d04f56b6205ae7371578ba3356459a13823315c73e638f16a7510395466c5d1c80ced41c4a", + "dest-filename": "fast-check-4.8.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "sha512": "7f7a90f68432f63d808417bf1fd542f75c0b98a042094fe00ce9ca340606e61b303bb04b2a3d3d1dce4760dcfd70623efb19690c22200da8ad56cd3701347ce1", + "dest-filename": "fast-deep-equal-3.1.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.3.tgz", + "sha512": "8bbd0bc0659476e5eace270a5d6b21a28abeb162f52b7594539aca64d1bfd22ddad4e4a85f71ea847e566d6c139aa59fa2be2ead46a418f89141c95e4594f03a", + "dest-filename": "fast-uri-3.1.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "sha512": "704d6ab01fd5c32428cd9faad5d1b147c2c160d65ea1f84475434648c6d00f71b0da50335fd65bdee214e846dcfc59b28e8f405967e79f4014087aad7afb3ff2", + "dest-filename": "fd-slicer-1.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "sha512": "b486d8b596ee70eb340511aa3c992c84951874bf920c7edd54cf208f2f84469dd60148cb105244fb4da46a7c87b708d63a7c2b298062c0098cd29e242c90275e", + "dest-filename": "fdir-6.5.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/filelist/-/filelist-1.0.6.tgz", + "sha512": "e608b2d8f90b618d5c3f7f69d7b11c87edb19694d12fd1cbb2939f1209b42fa0b005705382c2b9a2ed09b7362e7a9c64690fedbe1085209e6e5e8d0eaccd83c4", + "dest-filename": "filelist-1.0.6.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "sha512": "4bc2a866045937e6b9acdc2a4f195965e3e34ffe1c9e6d11395ef42de7511d9d29f2ef5f4480f484951942990a2f3ae8f0b7e60bcb31db76d8ead54dc6ff2940", + "dest-filename": "finalhandler-2.1.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", + "sha512": "bca6ad021e129557e06eff98b66862463844309b18a6c1b5636acc42d47e49549bcadb120f5606cc321cac026674579cf3cbbff95a069b19e5fbcd202f5b5109", + "dest-filename": "form-data-4.0.6.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "sha512": "6ee446d1fa41b511d24c238049eea10f6e7cb44b9b16844b6f864d03a3713151cdc3680e7301e8f70c9a6e5ccccce039cfdc40f4bd4a36393f36de8c4fd698a3", + "dest-filename": "forwarded-0.2.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "sha512": "471fd6c9c67ad0739aa8b2808ba70744a288ef3c566c9df53219ed9adc0ca1a4de17b5c51fd861069f2f21368c89d7e58d143a7985822a46932beca45491cfd8", + "dest-filename": "fresh-2.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "sha512": "a115c0a6ae78113463e1e3221731a71d61b2fb3a39adab9d8eec4dd1bf07eecfd1536a16d16becc7d3b400244dfe446af44f15bbf45eb24181e68de38be1731d", + "dest-filename": "fs-extra-10.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.1.tgz", + "sha512": "797bc61b067908bd7b652c0759dddb6e093b514a45e88147b4fe7b35861a90fbc73acf060e00dee4a248dfa8c82730e427a7898eecd103c78141be9290ab9ed2", + "dest-filename": "fs-extra-11.3.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.4.0.tgz", + "sha512": "110b05ccc509902286af578faa56000e42149875b5b37657af962acbac1b1ab7d40a986997699a33f932388440d87a4fdc06854136570f895d8de93e9dc71d74", + "dest-filename": "fs-extra-11.4.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "sha512": "6090da0896449c199c6f0d777ef74033d03034e2703b3ac4e29a8ca81ab99c5884a9752a1f094ae01fb7a54c3a24dbdf48fb57d39c451ed632ff59e2d357860b", + "dest-filename": "fs-extra-7.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "sha512": "ca1950800ea69ce25428eb11505b2025d402be42a1733f2d9591b91c141f45e619cb8e8ec0b718f9989ad26b5d1ec3a8f72fe13fe0b130dd1353d431a0eb46e2", + "dest-filename": "fs-extra-8.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "sha512": "85c8376667a94b7d3fec1485a91be8a370ce310bbb223ab13b99c20edfb333d5d68dbdf75a0ef388d4fe42fa9bb9cdfe816a733b4d89b9b5729361b866fa3539", + "dest-filename": "fs-extra-9.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "sha512": "38ed291f694ae9ad2166701d6aee48b731cf23aa5496f23b8cc567c54411b70e28c05db093c94e49a6ed1830933f81a0ae0d8c6c69d63bd5fc2b5b78f9f18c0f", + "dest-filename": "fs.realpath-1.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "sha512": "e71a037d7f9f2fb7da0139da82658fa5b16dc21fd1efb5a630caaa1c64bae42defbc1d181eb805f81d58999df8e35b4c8f99fade4d36d765cda09c339617df43", + "dest-filename": "fsevents-2.3.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "sha512": "ed71cdc47eea5fdc46e66230c6486e993a31fcc21135c3a00ebc56b0cb76a40af6dd61e9e8cad194dec50521690a9afea153b417be38894811f369c931f1b648", + "dest-filename": "function-bind-1.1.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "sha512": "0f214fdc133fdd81d340e0942ffc343991d1d25a4a786af1a2d70759ca8d11d9e5b6a1705d57e110143de1e228df801f429a34ac6922e1cc8889fb58d3a87616", + "dest-filename": "get-caller-file-2.0.5.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "sha512": "f5f4a349aa2cfdf448548a7ec5226513a95fc21112ecb36d29a08121a987b23af69dad418800493e8d263a38f3f062435116ab9823c6a9a89583999f8dbf7c09", + "dest-filename": "get-intrinsic-1.3.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "sha512": "b1349f063a17069f3d26f20a21e7eac3b53608279bb1cef892263a6b0886a202ada1219b823604fc6ffe97db05dcc5853cd73d21ca0e0b83837ca1dfc459a9d2", + "dest-filename": "get-proto-1.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "sha512": "9c117e175ac06550aefe9eeb8f3800f986f895f617ae997b6ba56626b53cc05f48d422af3ff4303cd6479ce9706d3918e9dbed148cc5312c905db2e84d03d1a4", + "dest-filename": "get-stream-5.2.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "sha512": "9c5474ccba54d9809a471c28089bcbe94bc21f6245c85548bf04cbb087f6d40b8794cb240358614dd93e2e5609b4e958b7dbfa76fb330f604646a04bfa240af5", + "dest-filename": "glob-7.2.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "sha512": "65429187afe4505a0089302d4d83d9277870f70371c7e04804e8a39e51bd3e7ac9b027128ecd70cb20fabc9a5a62d827cc3aca6114aa7f738ee917daf77c6c46", + "dest-filename": "gopd-1.2.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "sha512": "ead7d9f756ceafb6ce5e72bb3d10c21812dad47e14d3cd181cd6804362ac30694b13345b938e27b1917613521e45cdefb491cf55b2826207456da18eda58ddf2", + "dest-filename": "got-11.8.6.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "sha512": "45b279fe398570d342703579a3d7939c12c9fc7b33595d0fef76dcf857f89d2feb263f98692e881b288e2f45680585fe9755ab97793ade1fcaac7fa7849d17bd", + "dest-filename": "graceful-fs-4.2.11.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "sha512": "1329094ff4352a34d672da698080207d23b4b4a56e6548e180caf5ee4a93ba6325e807efdc421295e53ba99533a170c54c01d30c2e0d3a81bf67153712f94c3d", + "dest-filename": "has-flag-4.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "sha512": "d5c0cd77027625aa2199bdec8383a629a301c2e0b8f2c6278b91d4c360efb02f0b8c64cb2bd87e79bd57e91cae3877b8853d142c25baf22a26863528294aa53d", + "dest-filename": "has-symbols-1.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "sha512": "36a00307c5633c52ccd95d15bc751ec30c2cc3465605a21d828fa2787b4ade16ac2f3e2a78246361ca9f07a010ac182044aa69285f0be76fd5a9d56c3b8ec397", + "dest-filename": "has-tostringtag-1.0.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "sha512": "4f651b7db044177db089ea5722c3254d6f7e743602eb0321fedfef600e2db8e30aa96cff9f7bebd4d152c508b23fece4da65eca0c03f8bfeea57a2cabadd6dd4", + "dest-filename": "hasown-2.0.4.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/hono/-/hono-4.12.27.tgz", + "sha512": "d72adbffec3a1d6409ad408b909d881798cd20fbef1646e557944d39897a6d5f8e03aa7d18b70ca47145193a2c4af1ef7005226ee52e911aa1958238cf7d82ed", + "dest-filename": "hono-4.12.27.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "sha512": "9320ae10e5a326a66e0db447ccbf15f77373421c0807bd681564b2cd5a3e28f648fa99d03cfc6e71d92b399be42d19eb7f9511b1033e209d3d0f0dbd71100b20", + "dest-filename": "hosted-git-info-4.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/html-to-image/-/html-to-image-1.11.13.tgz", + "sha512": "72e38fa08ed6029ca10449534dbf68aac6b046f674ac785a1f082144b953b9f7e80f50766837a6942aee2de66b50821dbc6ee0b3dc5e10b10f9ba3e1b804aaae", + "dest-filename": "html-to-image-1.11.13.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "sha512": "753c5cbcf5ea3ef5c1429ab9754afa9843095f8a08105bfa6f0a26dc50f02910ecb888e324600daa106ea009fd73545024874029abf7dc40fae44db2b3ef3b41", + "dest-filename": "http-cache-semantics-4.2.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "sha512": "e056d17405fe6d2766a3801416e4b458d88fcfc36016dfabf138603569a5ae3423b7543b651f7ecd395c7b6f39f71e0a497af022c69e4ea0e82909ad3fca4b99", + "dest-filename": "http-errors-2.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "sha512": "4f58240226180d6631dd5e419b2bbb1dc7dcbcbee652b4d688ceb239f6b73c8a6156227f8053dbbe2750faf7aa48e1dc8bf3f105c0da6de50d0b3a4e3832598a", + "dest-filename": "http-proxy-agent-7.0.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "sha512": "57edb7b0332bd765a7cfb893703789af73ba008c659ef4ff6e66800003ff5dd6b7e42f74a7de7df69d05d5e1d1fcdd4a20b592a1654088e3058c105769748cc6", + "dest-filename": "http2-wrapper-1.0.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "sha512": "bcaf4fe7f8947dd97de4023e255c94b88715b5de287efb6b3abdc736d336cb10bd6e731b11da77c74d4e8503678dbf082588b7f159531379815f071fbf2c2e4b", + "dest-filename": "https-proxy-agent-7.0.6.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "sha512": "8a6f438c40d0e79b3d7cbe04633380bf4c8caa6301499a7a1b456f1724cc3ca5b1892047523f4d5bfaaa2e65d4c17aeb33b02fa9295309fbea45bd1c33cc98ab", + "dest-filename": "iconv-lite-0.7.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "sha512": "93dd88fdbd3cab8c2f16c71708bbea7ec1c2ae3ac5ef2897b10b8856f544ecdf365b7f9aaa9cee51d05b7e159ccbf159477ff82207e532028b3acbcf0eb18224", + "dest-filename": "inflight-1.0.6.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "sha512": "93fbc6697e3f6256b75b3c8c0af4d039761e207bea38ab67a8176ecd31e9ce9419cc0b2428c859d8af849c189233dcc64a820578ca572b16b8758799210a9ec1", + "dest-filename": "inherits-2.0.4.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz", + "sha512": "ffe4ba8f813d007bd6f5258c48463d5dfcbae8ee4f5af544274f0ed32e491b210a429a236f42b418aa73fefe4727f1b4be2dc3dac8c62bbf35d7da1765e134a8", + "dest-filename": "ip-address-10.2.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "sha512": "d0a23feb4ef1a31493a07ec68cdd457d26cba14d3e6ed4e2723b1049642587f859ca437c2a998c7fbb98c0f5b747e6a467a47fc35f199574870585e26143cede", + "dest-filename": "ipaddr.js-1.9.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "sha512": "cf29a6e7ebbeb02b125b20fda8d69e8d5dc316f84229c94a762cd868952e1c0f3744b8dbee74ae1a775d0871afd2193e298ec130096c59e2b851e83a115e9742", + "dest-filename": "is-fullwidth-code-point-3.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "sha512": "86fa6823a928ae124c9de8f6f3975283a9eed7e7babb1b3bcc6dc16009b96f2a83b2024d5b0c7333acfa8998808104784c9df42660533b0a99530dd69721f701", + "dest-filename": "is-promise-4.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", + "sha512": "8b1909a2a42f00ff3c13ac0bc9d2c61aa089b2b1549eaa07e879da73307c5e60c7d6869653ec71769b6f8a44e068486d679dcacba617881b942365972cc0b08f", + "dest-filename": "is-reference-3.0.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "sha512": "54b82121634ce842d0ce8ef3c26720d0d99357258a623bc878cf37ca3a74c110d39949eb33aefc7d06dc281a3a9f6089105d2cce81bfff2b60f932a56bcf402d", + "dest-filename": "isarray-1.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "sha512": "887aea7b9b21bc151c15b999abdcce40706878e85926ee91406ac3a4181e9d49bf026f85dc9336320423fab2b767ad357f3acbe602d95ad00f1f638169255ccb", + "dest-filename": "isbinaryfile-4.0.10.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.7.tgz", + "sha512": "827583d78261dc5cd2dc23e117403134e27c0b1a9e6e53d3003cc8dfcaf4c2df19c9097979da72ef99b2b74f041b6a0abe9ca2a92aacc7e5a4cfdbed91b4ea61", + "dest-filename": "isbinaryfile-5.0.7.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "sha512": "447c4c2e9f659ca1c61d19e0f5016144231b600715a67ebdb2648672addfdfac638155564e18f8aaa2db4cb96aed2b23f01f9f210d44b8210623694ab3241e23", + "dest-filename": "isexe-2.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz", + "sha512": "e81ded2ed16ab504b87a46abbcb54c67e5fe565bd07a46dee2d69491ffeb8553b777f874336adf0119bfa572dc3c4b238ccb0582b1604ab85023171256b073f3", + "dest-filename": "isexe-3.1.5.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", + "sha512": "14552d64ca6867c46a1d2dd77971261d62c0e2d847f99c42bf694e88f227d5773b0b1aea856ccd483cc3fbf7214bfcdb61ece68b058b7500b4f497502a6b613b", + "dest-filename": "isexe-4.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", + "sha512": "c291d8ce1c625502fe215d3904b1365e7df8cd6d52db6de1be3b6a934fa0b0faf077ff0934b5c981964cfe23c5b18735c72a6117ee8ce84bdd13913d3011a40c", + "dest-filename": "jake-10.9.4.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", + "sha512": "002ffb2687c9bd91abae779635a12725e38b531f89946b7bb4d6b4c198913d3e0c635c267ca8eddbee8eda9daecf6fac92597c39966624c36a7a47bb90a6cd81", + "dest-filename": "jiti-2.7.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/jose/-/jose-6.2.3.tgz", + "sha512": "61854322740a1497d1ff16b7a2351397c7362a84f088bd51e5683d602c9dc07d31d01f60adbce58391c2ee63230ad5098db43f627184648848e6d0a07d36f81f", + "dest-filename": "jose-6.2.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz", + "sha512": "48534ebd227e0e07fff409fdd38631f828129483c2908a5aa38aa8e7596979edb94c845e8dd1f7ae1478119306a0dc77fd33f73bec335ae893165e2ca9b96dcc", + "dest-filename": "js-yaml-4.3.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "sha512": "e1b57905f4769aa7d04c99be579b4f3dd7fe669ba1888bd3b8007983c91cad7399a534ff430c15456072c17d68cebea512e3dd6c7c70689966f46ea6236b1f49", + "dest-filename": "json-buffer-3.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "sha512": "34cf3f3fd9f75e35e12199f594b86415a0024ce5114178d6855e0103f4673aff31be0aadaa9017f483b89914314b1d51968e2dab37aa6f4b0e96bb9a3b2dddba", + "dest-filename": "json-schema-traverse-1.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz", + "sha512": "7d08685dd72f737576f31ec2ec132ce0fe7e90d96051445eda39944f54fffe8051303aeacb540f7a52629b0646a3b1e0f553d5dc4415e419eae216c5cb6bdeb4", + "dest-filename": "json-schema-typed-8.0.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "sha512": "5e63967bb7b21d81f5e1c2dd54fa3283e18e1f7ad85fef8aa73af2949c125bdf2ddcd93e53c5ce97c15628e830b7375bf255c67facd8c035337873167f16acca", + "dest-filename": "json5-2.2.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "sha512": "9ba175477cfc8e395fda29901d2d907b3e6c8ca590cdbbae86e27f14a605459bcf1373ee1dc48c559cdfb0b84654e91f776d286cbe5258405ec394a196ab8dc6", + "dest-filename": "jsonfile-4.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", + "sha512": "cf039374bdeb150fe545d0679ed295397ea4e5c289c047351dd8a54fbd41584bbb278d605c8076311a7ebf176e3d2c1924f581c44cefe321f5c182c91941d7e1", + "dest-filename": "jsonfile-6.2.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "sha512": "a3154790747f1097f608d5e75b144b5ba9a0ec9c82094706d03b441a62f672d528d4f3538a7d4f52297eafffb8af93295600bf7e7d648ecc7b9a34ae8caa88a7", + "dest-filename": "keyv-4.5.4.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", + "sha512": "d3f06718209fc943240697838168a16a720017d2666611c1814844ab3bdff9a7613462e83fa4da888e6817ca326f7238e4ff8f727aea8a149fd353349741b9f9", + "dest-filename": "lazy-val-1.0.5.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "sha512": "60aeff0a54ede2400ad2fa3ac375fe3e79b40f671fdaf3c76e139776836d8b519ad1a9753f84c1661c23013be33702c40429cabe325cda34201d71f4344c2502", + "dest-filename": "lightningcss-android-arm64-1.32.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "sha512": "473786f49bb96da83606fd7f97095526f044deae93b57b247592cb0b27e0e69b7e1cbcfd06a94808eecb64ced51cd4d39ffe4f4611c50528e4e65738726b1c3d", + "dest-filename": "lightningcss-darwin-arm64-1.32.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "sha512": "53e42c069da6fecdb0aa95184ffeb09e56a07596ed65d9dd4a6badfcd26a94270c2d35a9e66b82ac80fe2b9509ea3a83d8116c85e8c26179e23c36cd87bdd5f3", + "dest-filename": "lightningcss-darwin-x64-1.32.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "sha512": "2424e281e74492c664ded1d34ed86731d55f19feb5164cbc262d84e188d44c4417d78c62cbf953cd79eed6fc2265eddb61ed2af92a6c487fc24de0d72ba5878a", + "dest-filename": "lightningcss-freebsd-x64-1.32.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "sha512": "c7aae79e945ad862f4cd03a4b7aaedb376033f376e2e95afc0017a10c8571556570f8b4fac190416acc6a30cc2b085ac3e3a922beb723443835015de7951d293", + "dest-filename": "lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "sha512": "d279ccca8c8e2d12577db30e8a569245c2c7dc9c39cfd1c33467d3fe0c023e06838e7c748bcc3bbc1cc52c54757fa08c2ca17c8156de6e69143777dafe4409a5", + "dest-filename": "lightningcss-linux-arm64-gnu-1.32.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "sha512": "529424a1e9ebe14244ce054862923cd250c5bd198f560ea8a9ba0d1dfa07e024087cd03e1cead9ecca3b2993f4d9d0ba2e38213d025e06cbd7849a1dff09c806", + "dest-filename": "lightningcss-linux-arm64-musl-1.32.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "sha512": "57b42be7622166674a3d5afe56dc3ca3e58bb1025809377c96821fa4368c45619465f04e60425ec89224a862033193f03f1db8a5431fc12c7123ca61aff31b38", + "dest-filename": "lightningcss-linux-x64-gnu-1.32.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "sha512": "6d870ba7e55bd1ac2c89783ff34b8245ecc2607360d7f9779add20cc79d657d5cfd56e6c29ae7f4c274659a47fcc13363de17f1dbb10bff8f651134e895bb15a", + "dest-filename": "lightningcss-linux-x64-musl-1.32.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "sha512": "f126c2f01478d294ba6da08cf2c6ed6034b011541de099454ce95a0f78161877d385370006734305d6ba79365ea9ba1f6a5209845c74a8ace01c999c3d39c677", + "dest-filename": "lightningcss-win32-arm64-msvc-1.32.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "sha512": "026abd07f4a86587438b5905ae88e7a2a3cbc58850e16a395e22fc11526b56c07c011a02d4f596e951ad4f458a09e9a3cbc682fa5a2e2678d2ed4d7cc776f4e9", + "dest-filename": "lightningcss-win32-x64-msvc-1.32.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "sha512": "357601ce29cdadb95fada3c6cab6cfa03d7d0b587d95f23fd66ce0598bd75137b8d781b3fd7d450f65c165264ceeb453acc03c24bdceb4068689fac82a1439c9", + "dest-filename": "lightningcss-1.32.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", + "sha512": "496d77c2cec18da789ea9ed0e823b69dc85b6047375f727a5ab9934c3b68ef230fa954994d4c98e538db89df806fc80b9c04edca062d8832091904519f664e88", + "dest-filename": "locate-character-3.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "sha512": "74c22789c4cf544f1dd5ee68b5fc269a3971919a14a6254bc32793754b22fc26a3fe07f3cdb941702139b111d5fc0b23b829b15abb5ed93346498b82782abed1", + "dest-filename": "lodash-4.18.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "sha512": "b6a357ad2efca0c384ef734cc4ae0430b42c428c167fc8caa281fd83bc4f6af453ef4e91e9b91027a0d8d937bb42e91a66cba5c5adf4c10edb934a66e1788798", + "dest-filename": "lowercase-keys-2.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "sha512": "268e9d274e029928eece7c09492de951e5a677f1f47df4e59175e0c198be7aad540a6a90c0287e78bb183980b063df758b615a878875044302c78a938466ec88", + "dest-filename": "lru-cache-6.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "sha512": "bddd85e1853211728670b1e8abe4c4c828f1b9e49e1e7171cb28cda7cd328345d5e2f5219c37abfe5bef96a33f6ab0796d740de4adbfde88a7c82472c7c4f609", + "dest-filename": "magic-string-0.30.21.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "sha512": "fc85ed6f0124e474cfc84c32297ea11a4617c4cf676e3eb807e8a55499c2fd1e81d291f91b85776f4a556cbec3063e2d921040a696d05257fa17a5e5f4b1eed6", + "dest-filename": "math-intrinsics-1.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "sha512": "6a2b27ac33f818d7b4e9470a1675796df30d3c1530e23b0b19a5b059f9c7defd361a706e5d7d8c0959f945bad6a348f7a5ccd48a561b96aedf43b370dade572b", + "dest-filename": "media-typer-1.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "sha512": "4a7937d785796b214b869ddf914444b9be96b6305f3dd08f6352e7f3ff26ba7b8bba2621b000600555aca33006f8c58c6d512f71d7296e2f51ef0c36da5f50de", + "dest-filename": "merge-descriptors-2.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "sha512": "b0f538b95edd625bed589c70c311c3d0fba285536213b4f201b439496c43081f66518bce82ba103b061040e28f27c0886c4fb51135653a82b5502da7537818be", + "dest-filename": "mime-db-1.52.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "sha512": "694e4426e20dd960de982700a76bc505fa7f9b810085626750d492c348b1b3bfe45db77a3e0eb8126c0990d745841f1a5add6c1f60935eb2f1a3f880195de83d", + "dest-filename": "mime-db-1.54.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "sha512": "64363e6cf9b9cd34c5f98a42ac053d9cad148080983d3d10b53d4d65616fe2cfbe4cd91c815693d20ebee11dae238323423cf2b07075cf1b962f9d21cda7978b", + "dest-filename": "mime-types-2.1.35.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "sha512": "2db833764d21e23ba843d7c22975b86f2d1426a8fe9ce3ab23d309d6c4a3e2723c688d9ea35aa6bd01227b8543d6096c4b6e749f5e4bb16b18b42ba0892b52e4", + "dest-filename": "mime-types-3.0.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "sha512": "5123e431e113df5ace3226abb013481d928b1a0bca73f2eb8e87c09c194eb6d7f96a346faa2440f10b1e9db728a1cb4ae9de93b3a6aa657040f976e42ad86242", + "dest-filename": "mime-2.6.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "sha512": "8f911cb67907eda99f57fab91e09a86a5d60d901c5251ada3ad9b1d09a48aa4c6106123f9494a5d67329438e6155aaf03444cea161229a7759e102b4447c6ec5", + "dest-filename": "mimic-response-1.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "sha512": "cf4c9623ee050ebaf0792f199ade048f91dd266932d79f8bd9ee96827dfe88ae5f5b36fa4f77e1345ab6f8c79345bd3ae1ce96af837fc2fd03cd04e33731cd19", + "dest-filename": "mimic-response-3.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "sha512": "be92d012cf952c2af59d4d015d2d3b99a628170943007d209e042ebadb71230bad0c510c1ead9b957fbcbe98310dd2b72753f08c22627a9efb3a2b536782e5d4", + "dest-filename": "minimatch-10.2.6.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "sha512": "5608d652c9e74fa9fe35493a799abbef37857695b62d60f33facc51ab09b1d789836e9790f3aa4d871d0e6e147d83356e576e9f3e8d5cda78db7de2cb04125e3", + "dest-filename": "minimatch-3.1.5.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "sha512": "ee8d70100d91c8c3fb22eec635b6bdbdcd11596180089382641257d862568a9d22915fb070eb2056e63db84f023e2c908641854a586e4a464f6af37bbb573617", + "dest-filename": "minimatch-5.1.9.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "sha512": "381c0137d00be1daa61139694b6cdab31faf4de59c956ce46e57d993b2930398f78de38e373fed4429d9a26532bcd83cdf02f966ff52b3a1cc2570202fc47662", + "dest-filename": "minimatch-9.0.9.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "sha512": "db2c8047ca8190ddd8ba17896a7529582e54ddb6f9a2c0f2c0d07c4730d5943c031dba1c009bdeaaa8f5bbcf92543ee39164f8cafb070a95aaa96a80c5bd3308", + "dest-filename": "minimist-1.2.8.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "sha512": "b44047a839c8a0cff5ad7304d738246bd83a43695ca029311cbb9cece0c9e41c5b3f977873667970682d5c092ee7ddb4d02c7b762b874ce61f4810fc9fa9a6f0", + "dest-filename": "minipass-7.1.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "sha512": "299c58a350549160f64d514baf4310a0cf2f5148a0583dcb943f376bfef906a0bee2a1341dbd55a39bf516071f68d5ef7d7cebfb912143a8a783f09a0628d397", + "dest-filename": "minizlib-3.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "sha512": "14ffa9f1107c396a45dd86410ab3f982d0039ad5c0a41e4030b9febddc80f8fcb10a3ac2b34d268f2528cecb0edf77300de4f7c0d19d2f127933ffd8aad1c027", + "dest-filename": "mkdirp-0.5.6.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "sha512": "b73cec91bddb1bc2ef606145fe60d3a6ade3a48e90f707372c49816a086ef83742b2c77515a90dec17348553661321aad5bab74607e409bddc9902e934f3aba0", + "dest-filename": "mri-1.2.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "sha512": "e85973b9b4cb646dc9d9afcd542025784863ceae68c601f268253dc985ef70bb2fa1568726afece715c8ebf5d73fab73ed1f7100eb479d23bfb57b45dd645394", + "dest-filename": "ms-2.1.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.15.tgz", + "sha512": "cbb5b282fffb9843afc53b8440307c4ad5dd3110567f5911fed961033051505901da37dc2ce0313bf48798e3b6ce0cf5a5580adbdfe4caea67d39f7f6c21dd8c", + "dest-filename": "nanoid-3.3.15.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "sha512": "f0e7ecfc051087c31a11cae5ab9c4e5f4090f72a53179765efc9a394c35f38ad3c7f3a604c741140f07170f944b48c34c91a70b3e668ff7afee5645bcbbbb71a", + "dest-filename": "negotiator-1.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/node-abi/-/node-abi-4.35.0.tgz", + "sha512": "ca6938688cf174fa29c36822bfc16cd4473abf26c69239b2c54c15aa1908e0c0b2dad55f5dd90e1865a27965632f44c7807fbb6bc95175ebf2ba9a188f726cfd", + "dest-filename": "node-abi-4.35.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.2.1.tgz", + "sha512": "db13ff20618c9a6490a48d7e3bf93bda317fca4bd9f3d25eb8a5f74cb24060f0d52d46a5aec86b2c791e55c08266a1bf7846badf972bf08058ce09c3bccd8ef1", + "dest-filename": "node-api-version-0.2.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/node-gyp/-/node-gyp-12.4.0.tgz", + "sha512": "38c70f36fa9308552735a06599d82afa57cda98ee04e24a63510e3637b805d1cae75e299119c6edc22ed8cc42bc78cd9c425f66ff9a936a4edc2e08981784793", + "dest-filename": "node-gyp-12.4.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "sha512": "3b9973f75c5239ea173fa0ee9721df965a6af84834d0c5a2b5921bb4f7e8484bea207765e607dc63a858cc35a78f4a83e6dcf9d8f234f2ef6a52f49579405e1f", + "dest-filename": "node-int64-0.4.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/nopt/-/nopt-9.0.0.tgz", + "sha512": "661ab76bec852ab63048196e2f81fd5cfde6df2e6ebd0901ff4f42c03aee0a246647f5096279fd5b8478f2bcb4b860bbd1a7933ca2f29c1b6c70ff5e7c515c3f", + "dest-filename": "nopt-9.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "sha512": "0e52fe5f03b2dcdc4043cc6e0b4a243e02b8ea2b953402b4d5837b46e79806aa85786b018d5f5798203301d82dfbaebb6c297990f87d12a28a0f09da3c6d48ec", + "dest-filename": "normalize-url-6.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "sha512": "ac98134279149c7d6c170f324fa552537cc3dec5a6bbab19848b1e63c557f8646edcfe85ec5bbe24d0e85df9251256cb2529dcdc55101d57b8714e618fe05c52", + "dest-filename": "object-assign-4.1.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "sha512": "5baee22e5e09d845c41936df78709f7eb8c37e2b6f2c0360d14957df01545124f1f762974457a0307515812a84fb0be101b8b85aa8c683d733cac4d5d84a5b7b", + "dest-filename": "object-inspect-1.13.4.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/obug/-/obug-2.1.3.tgz", + "sha512": "f6688580cd8e15b6bb841fa9460bed57ce2961305aa131e886f98882246de9d448cdbc0438868d68ff9d2251acd9f345a01d127884acd09cf958555189de97ca", + "dest-filename": "obug-2.1.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "sha512": "a15973920dc4340842936cddbfb209c1dfd0503e33d91c51c2991c198f29b0255c09864dab8c189d55802c733e6ebb6e26378f5a2605fc2966b83afc0a1e7e92", + "dest-filename": "on-finished-2.4.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "sha512": "94d689808fb643951140191c7042874d038f697754c67659125413658d0c15402e684a9ed44f8dcaf81dcff688c8d8ba67d3333b976fd47f27e7cfc610ba77fb", + "dest-filename": "once-1.4.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "sha512": "0593abde74501ce9ed5234eb1fcf8b879e2c98a1e81f2babf167b557c0d2315ae5e40da66a538ec2e2519ca4438d29e4a1e061e1ab7a0701276f923b265df5c2", + "dest-filename": "p-cancelable-2.1.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "sha512": "4d839a9ccdf01b0346b193767154d83c0af0e39e319d78f9aa6585d5b12801ce3e714fe897b19587ba1d7af8e9d4534776e1dcdca64c70576ec54e5773ab8945", + "dest-filename": "p-limit-3.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "sha512": "0a2c9e3b1153fc96723799b4cfd3df5f0e1208127a4b2833d43a65d30aa39610c418604fd469ec51510bd29eb78681b57dc8f77c7ca75e2f4d60ee2758e2fea9", + "dest-filename": "parseurl-1.3.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "sha512": "0156f0dd42767bd6eaeb8bd2692f409b47e37b53daf296c6a934ec9977da2223299ebe4394385f24eb8b8fd49ff7964f5430147ab0df124f3c30f98f7bb50242", + "dest-filename": "path-is-absolute-1.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "sha512": "a2399e374a9dfb2d23b3312da18e3caf43deab97703049089423aee90e5fe3595f92cc17b8ab58ae18284e92e7c887079b6e1486ac7ee53aa6d889d2c0b844e9", + "dest-filename": "path-key-3.1.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", + "sha512": "a9172e21d3faf4d3e6e2a6c008af9a0e8808e42043322d6329ed2bcb9ad2409cfc2552ec0bb8d5f17a622631912cba25dcdf91e6284661cacf2d39e8ea901d04", + "dest-filename": "path-to-regexp-8.4.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "sha512": "5948c6700a8fd6041a72841ef8e049b0503b2dde03c97b9422367971cef970b1ef27b76d36c4ee8298712000f0b294be02b68051e3c22ab495b4f2c58ff17cf3", + "dest-filename": "pathe-2.0.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/pe-library/-/pe-library-0.4.1.tgz", + "sha512": "791581e4b073ecfa43bb83d49704f43e19d07d34099430dd3dadf9bab5783acae6d2dd00a901469fe508914de4959bf027c28f3b755b045b17aae03aa7a92a67", + "dest-filename": "pe-library-0.4.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "sha512": "1776acbf8d94b97721773b7ec57a9f5b538695505efa6c5ada6a88d29839c801d93ef16663763a76b49ffc643503ce9681610df4ace1fd6ae029aea219c1d72e", + "dest-filename": "pend-1.2.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "sha512": "c5c787dac9e1b5be4cf658aa0ec984c39ea57b7efa993664117fe311bfd1c4d1727a036e97b78db250973fd1438ff2dcbb45fc284c8c71e3f69eda5a1eb0c454", + "dest-filename": "picocolors-1.1.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "sha512": "40ff3c0402af31a9bfdcdc47eaf8f6a36d51e8c8f165401dea7970012fe99c6bcdf4854ba1c2c7c46608cc5860e9f510fb9b61e8fe1dbf8796f635f70d2223ec", + "dest-filename": "picomatch-4.0.4.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz", + "sha512": "c10d1bfd6e05af4d6ab691e5a92aaca5c8f712106f8a6b1d8742a51e11fc1d166732c11ad1e6b67d350b397392f5c710af7a26f86706464e1efa2b2b65657ca9", + "dest-filename": "pkce-challenge-5.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/pkijs/-/pkijs-3.4.0.tgz", + "sha512": "7a611c2eea26b768f4defc43e78822541e12c538e7b2a914ebddb164e6571c3568632ca9126f9bde3a624dc73e09ffa6ca8a1cfbf2f2d33d358ea78d1d58091b", + "dest-filename": "pkijs-3.4.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", + "sha512": "bb2b2e9b2aef9145f4ad7fdd115aadf200b7b13073778ce859f2de4b6f676f9de299d69756f2c83585d323618dab368cbaf69c371e2e250f3e6f7cd7474a6481", + "dest-filename": "plist-3.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/postcss/-/postcss-8.5.16.tgz", + "sha512": "beec22965be28a57ca66c8345468f947f630c1c1f1e122ec20e23fecaea64245b1fa5e5c5074e38f983401ab1305cc97b1b7d382bc2c50d99551be71570c8fc2", + "dest-filename": "postcss-8.5.16.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", + "sha512": "886f866257517f6050d140d401de8943f470cda432ea65e6b24fc8ce56326a5e00e12345c39e0c787e3fb4b905e08e56a161bd490c2ea96cd2f7d8da1501c1b9", + "dest-filename": "proc-log-6.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "sha512": "de8b943a9421b60adb39ad7b27bfaec4e4e92136166863fbfc0868477f80fbfd5ef6c92bcde9468bf757cc4632bdbc6e6c417a5a7db2a6c7132a22891459f56a", + "dest-filename": "process-nextick-args-2.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "sha512": "ecf887b4b965e4b767288330d74d08fbcc495d1e605b6430598913ea226f6b46d78ad64a6bf5ccad26dd9a0debd979da89dcfd42e99dd153da32b66517d57db0", + "dest-filename": "progress-2.0.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "sha512": "cbe58a165051f011979ec3652071463d99b20dfdc314ca0b85a7e5027c99815eab1bac6ef89c1eb13a3643d47a5f0626b66c001429009377b7e6311da1e87fde", + "dest-filename": "promise-retry-2.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "sha512": "4e334f6e537807001631753cb3d004cf82664319c3d4d34bedb34e63f00a533c9a99cdfbf4558049485cfcad692f69e855bf9799928b2faf1c8f32ec88e00c68", + "dest-filename": "proper-lockfile-4.1.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "sha512": "96542c30b4940d43d3e388ddad4fcedfbaa59e27e2b433fe670ae699972848ac8b2afb59c69c95d27dbf6c3fcde2d040019fe024475953b28cadaa0ad7e5d802", + "dest-filename": "proxy-addr-2.0.7.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", + "sha512": "552eec8dce8a47b7b5ba4445850498e4b336b8158050f88e3dafc0de690a9a23304a64455084edd31ba3fbf95eb209c2bfe74f204625933adcc9782ab881cc70", + "dest-filename": "pump-3.0.4.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/pure-rand/-/pure-rand-8.4.1.tgz", + "sha512": "739f11dbe48f15c4883d7a14f37e1037f28f0c339277cb17712aea7fa7bcdcc7ba46ba75118931ba49235cc56b2af29a003b3548ec8d91675fbcb7facd8f2a2d", + "dest-filename": "pure-rand-8.4.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", + "sha512": "3cb8105d0e87d8558269e45a93cbef935196e3ada5331079b37266ebbdcdf36cc8e2faad5543ee65d7df7596cf0c546853c900848b5616d3c25a23e9a78fc40e", + "dest-filename": "pvtsutils-1.3.6.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/pvutils/-/pvutils-1.2.0.tgz", + "sha512": "05bb9b7821324ee42354c6a4bc943f4b16dcf77176a7099bb3138d4ff651af053b51adfc77cba7613c17a5354b00a278043b87f481b3b428d071dfcdff7f43be", + "dest-filename": "pvutils-1.2.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz", + "sha512": "3bd825df30a5e61e5b970d4a194cd02a1039a145d297caf0508339a344b79c25cc9624afcb90f3c7bfc325c23e4b08080aff889de499c21061d684b210703bd4", + "dest-filename": "qs-6.15.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "sha512": "5aec802d18d63c31adb7fc3326269d3b901763ef2167cd215697ba3328af82b691116ef9d57dd26e146f1b778b28e60dfbc544bea2dc7f7c1d9ede386784b848", + "dest-filename": "quick-lru-5.1.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/range-parser/-/range-parser-1.3.0.tgz", + "sha512": "85e9369854293ee2381350412ab4ada3e054ddedf1e31b9aaec6e2c2bdfe95fee9e388eebc5315d171564003f7c54caa5c0e11ad72c8a1a49419b4add39e9933", + "dest-filename": "range-parser-1.3.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "sha512": "2b9cd08c3965c5691fed9e7125d574fc1d164cdab1eafc46ef4cc9138374901b382e8be6118589cd01b10bd6d2f5100abb76e0338d25adde73a0b275d8c43904", + "dest-filename": "raw-body-3.0.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz", + "sha512": "04d83d10ddc30f71ac0d75fb01af0ee29f76b2bca3926cd86209a04c073a080e2e18b103cc57f13b1ba0bb6d5a90ec697171e2120b18902ea73ec42f2cb2e612", + "dest-filename": "read-binary-file-arch-1.0.6.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "sha512": "f29d00524e173838087b04a2d25f04a63b3e1159d688aecda03204194d07844efe67263c0f520c63ba1dbb9951ac55c683bd4bd79286f10acf9ae9b8e514ed74", + "dest-filename": "readable-stream-2.3.8.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "sha512": "18387090b7f2c162f6b3abc48f286b8be79799f1fa8f52fb244dbb5a1a8b798ce887f0370c16981848f61ff1c56429ff90c7e29bbdc55f11094f0d3a5adc50c2", + "dest-filename": "readdirp-4.1.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "sha512": "7c6c4423bfb0b06f71aef763b2b9662f6d8e3134e21d1c0032ba2211e320abc833a0b0bf3d0afb46c4434932d483f6d9019b45f9354890773aff84482abba2f9", + "dest-filename": "require-directory-2.1.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "sha512": "5dfd2759ee91b1ece214cbbe029f5b8a251b9a996ae92f7fa7eef0ed85cffc904786b5030d48706bebc0372b9bbaa7d9593bde53ffc36151ac0c6ed128bfef13", + "dest-filename": "require-from-string-2.0.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/resedit/-/resedit-1.7.2.tgz", + "sha512": "bc78dc6363250084c9842d1e443fd5bfc565826bbd49ddcb5fdcd9bed1b353964899d4cddfe77a7bfe269d3c95f2f11bc9fd6c80d22b5b185696bcace763a410", + "dest-filename": "resedit-1.7.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "sha512": "d1ad45e25ef7fd915939a9099d0dc5be4276fa0493416cffaf6284e4e7436344f13e6e61e0692a91659f338ed3ec7b1b9ceb5c255105e1ea42572eaeed0dcafa", + "dest-filename": "resolve-alpn-1.2.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "sha512": "e20974df09f7863d473f7cb381d23b777942905f79176d4fcf804f1af2878a7c90cc02d1e426a9c02f32222d11879f0310c43f4a0b82d37c058f693433f98787", + "dest-filename": "responselike-2.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "sha512": "f4b9224f08d487aad3e79e43b44f6b4d7f81281c8f7eb333100b67944b5d130af73647dfc228a1a9ed9b5800e0f8e4118edf6097a20276607f6450c2180b52a3", + "dest-filename": "retry-0.12.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "sha512": "9b0a9e5b95ec036a807a31b8ea061d10d6b15e3c7da2744d09f9fb2f476eb8fe210ae4c88bf40eecf0cad3b2897e9d5dfa2cd63ebcc4243712a816b439942b88", + "dest-filename": "rimraf-2.6.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.3.tgz", + "sha512": "d45d5e12d501b45bdc1a6d4743d4e25085073d01bb99200e0eb848ce3c6850416ea3c39c6eb18b8952e47af3608fce131389671ef9ee9b01638493b912ed77e6", + "dest-filename": "rolldown-1.1.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "sha512": "9cb4eb50a9b653288beeb9616a9bbf665e3917036091919a0a965b2076a30d883094908eccb4a4f9c20f027b04a95f79e468c82c99ca6dd402d6754fcfe80061", + "dest-filename": "router-2.2.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "sha512": "c5a9770995f55e5a3f938029c0216b1d50028bd7c1a89ed5fa6c2106cb9fff520e29b072d3df057b1f966bfe5032e6f0d3da5267fbbc118f0f5a07af26c5e9d4", + "dest-filename": "sade-1.8.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "sha512": "19dd94641243917958ec66c9c5fb04f3f9ef2a45045351b7f1cd6c88de903fa6bd3d3f4c98707c1a7a6c71298c252a05f0b388aedf2e77fc0fb688f2b381bafa", + "dest-filename": "safe-buffer-5.1.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "sha512": "619a372bcd920fb462ca2d04d4440fa232f3ee4a5ea6749023d2323db1c78355d75debdbe5d248eeda72376003c467106c71bbbdcc911e4d1c6f0a9c42b894b6", + "dest-filename": "safer-buffer-2.1.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.4.tgz", + "sha512": "f59c88d3c3ecbdd425dabfdb0481ae6e955d477451f6c63a44389614fade036d42fc41654219a0a36d1466536364c31936e6eeb0b840428ce403439de49db512", + "dest-filename": "sanitize-filename-1.6.4.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/sax/-/sax-1.6.1.tgz", + "sha512": "e36b415702d69da42f5b9cdce076d9ad3b9671c1020997c18bdd850eec2dab16ac1fe25b3c1dff14e29bd66db6d8ae364785b1bb1cf332c4ecc1fce0b52bbae1", + "dest-filename": "sax-1.6.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "sha512": "701ce79d0f4a8c9a94ebb079d91302eb908c6ab2b6eb4d161676e471a8b05aadf1cbfe61685265b21827a63a2f31527e1df7f8f5df06127d1bf3b0b9a43435d2", + "dest-filename": "semver-5.7.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "sha512": "051ed5bc30951cefaadb10445ac9314ba0c9135a919dbec3c7352ba206fbd425a849f89c07162c88019df8a9749a6abf329ac6f7202b464cab4314cee978cccc", + "dest-filename": "semver-6.3.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "sha512": "bc5282d8812d427561a53efc875629f30cf0adff0233e33328c1c62597c1b738593727111675ec1e4e84e53c4892432c80d4bb99d5f700607bc7640cd9d8b894", + "dest-filename": "semver-7.7.4.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "sha512": "63bfca0ec6fc2e3a28669c1aa86cae94ee8342592c8029dc7211c693eb19218e1206f52870c044147e54af57c8e1d57e26f974c3a723bee71a222e34a6e462a0", + "dest-filename": "semver-7.8.5.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "sha512": "d609d97fb0c572821c6a34e34f08f0b838f3bb3e0f3dc6364ad28f96c180435f981f6d08455ac169749699d8e8c1327abbc45cd353e860e1875df3f599871935", + "dest-filename": "send-1.2.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "sha512": "c515c19f4a4fa904d54220bcc3242b2acd8c3a55f6e334343ce19a8f492e96dbe8382b2d050339caf3a1015494c0e32342d4efb0f5a83421df3c6c1a6902614f", + "dest-filename": "serve-static-2.2.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "sha512": "1392c35fb5aba7ce4a8a5e5b859bf8ea3f2339e6e82aae4932660cde05467461fcc45a4f59750cb0dae53830ab928c4c11e362fd7648c2e46f6385cdc18309a7", + "dest-filename": "setprototypeof-1.2.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "sha512": "907c6bdb366962d766acdd6a0e3aeb5ff675ad1d641bc0f1fa09292b51b87979af5ecc26704d614d6056614ce5ada630d7fc99a7a62e0d8efb62dbdb3747660c", + "dest-filename": "shebang-command-2.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "sha512": "efef9d161b5cc77df9dee05aabc0c347836ec417ad0730bb6503a19934089c711de9b4ab5dd884cb30af1b4ed9e3851874b4a1594c97b7933fca1cfc7a471bd4", + "dest-filename": "shebang-regex-3.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "sha512": "9a39ffd1b8bfa145118dce5797b21a5a2fce24926e9aea0915025f0c3c8ee3afa1056b1f69533ae53047ab67a864187397d11c8713a28e991b442f12541414d3", + "dest-filename": "side-channel-list-1.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "sha512": "5428c235f80cb1bcb7b53768d369db8ed33f7b0adaea33c79a94e17a7913621f291bdb9c67fd4ff12a38bb814605e93f063a4e56c0c23282c0fe2b8128815744", + "dest-filename": "side-channel-map-1.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "sha512": "58f4bf1ef1d04d89c78ac2e8f4c72a0473899361641cefed969be5772ae77a6e1a790a7885a8b7832b61b3083aa74d684a84e5e7cadca621408c5d9baf6024d8", + "dest-filename": "side-channel-weakmap-1.0.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "sha512": "eb1e9d2bacc97694f3178b1078d631c2dbc1cdfe848381ad95eb12f781cebd3b9d51ec8ad965c06887e60e0b32b2562b441785225b22e78018b05194ba19afad", + "dest-filename": "side-channel-1.1.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "sha512": "c9bc7458ed7ff1b4812c459766f11dee0316dd29f7245956dd3bd7d674446c32d135035a78d37c58ad26781c0f74068e23b4ed4514499ff12cd7386bac21eeee", + "dest-filename": "siginfo-2.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "sha512": "c270f6644fa5f923c2feea12d2f5de13d2f5fb4c2e68ca8a95fcfd00c528dfc26cc8b48159215c1d1d51ae2eb62d9735daf2ebd606f78e5ee2c10860c2901b19", + "dest-filename": "signal-exit-3.0.7.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "sha512": "6b607d6342a535797dbbfbec5bab1322ef6f184a5f2aedb0455ea5d47dd711ab3fd20508cc6cc1a0ffc8a2e4dc5106e6f495992c7dc23b1ca7d374d89456b1eb", + "dest-filename": "simple-update-notifier-2.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "sha512": "51758c2a12cec1529bef6f0852d40f5f17d853ebac7726ed52b2bff2e184f0240cbeb84ea70bf30c1c23d108522fb31073bbc8b084811bc550f3e203431a5f40", + "dest-filename": "source-map-js-1.2.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "sha512": "b811d4dcbddccec232617297f3c7ddac6a2fc5d482a13183459e92617b524712d95331e0e4fffae87b7aba85251eef4466877e8a75e12a8dea420c17513ff2d7", + "dest-filename": "source-map-support-0.5.21.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "sha512": "52381aa6e99695b3219018334fb624739617513e3a17488abbc4865ead1b7303f9773fe1d0f963e9e9c9aa3cf565bab697959aa989eb55bc16396332177178ee", + "dest-filename": "source-map-0.6.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "sha512": "d573091397d0a358c61fa63fede6e7c0f3811242049d3e10177d9de51d7e557757bde334201309b7ccdf6b15f53f7421570ad87bee7bebe8e400db524b69816f", + "dest-filename": "stackback-0.0.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", + "sha512": "8c7f4486d2888ee5d9d9c5b19974bc64ff345f20b789ab10c4c0d5f23ce1349a5f0dbed56d02d55b85afb31cfd419bf357e1b862849f05454a0cecb12f38bfb2", + "dest-filename": "stat-mode-1.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "sha512": "0ef132e795770c1eee927468fb888e193e5f3f5b2547cc10a2155d9278a064f32932cb5a289416870898040089137525da94e70138a18416274616501c606247", + "dest-filename": "statuses-2.0.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/std-env/-/std-env-4.1.0.tgz", + "sha512": "46aef26dc5f646e0b9e6bf6868f5445bbff1bb7b63f2ee067816070560b272116dccc22bf3a03b7b73cf1013d3dfbb074ad297dfe4e25ff16bfc00a624b5652d", + "dest-filename": "std-env-4.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "sha512": "c0ac90450a63274b08a7ad84ad265d1ac8cc256b1aa79a1136284786ee86ec954effd8c807a5327af2feb57b8eaab9e0f23fdcc4a4d6c96530bd24eb8a2673fe", + "dest-filename": "string-width-4.2.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "sha512": "9ff4a19ef0e2e851db6d57ef8aba3e5a88e2173bfeb3c30f30705ccd578f7d4a4324bc282d3d21b759786300426e2f29240bde104767907c8fc933ff9b345fc2", + "dest-filename": "string_decoder-1.1.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "sha512": "637f153d21dcaa416b0a916743dbee4979aabaebf9a1738aa46793e9a1abaf7a3719cf409556ba2417d448e0a76f1186645fbfd28a08ecaacfb944b3b54754e4", + "dest-filename": "strip-ansi-6.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "sha512": "32f8d7ce4cff04e7f2543906d2814eb41c475f6bb780a6cc1c817f7576e566c803dc158e14b987a2f229658ec1ca425d02372a442062d5660135d102f7223bbe", + "dest-filename": "sumchecker-3.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "sha512": "aa9080bd197db2db8e1ef78ab27ec79dc251befe74d6a21a70acd094effe2f0c5cf7ed2adb02f2bf80dfbedf34fc33e7da9a8e06c25d0e2a205c647df8ebf047", + "dest-filename": "supports-color-7.2.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.7.1.tgz", + "sha512": "14650e980ab15dd37f1fd666f2c96ba8eed22ed162b17441eeb7ceb07349dcc2d30f6a68ffe4ad83c5f212b929ba63c76ee52261372aac4233c695562932eab6", + "dest-filename": "svelte-check-4.7.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/svelte/-/svelte-5.56.4.tgz", + "sha512": "fddd101de86646e256f20573dfde4c4e43dc3e8cf1cdd8c130113ca04606cfc3b76fd293333cd0f591c940bb8528e1ce3d06d4ea4c7f5f88a277f1010731fb8b", + "dest-filename": "svelte-5.56.4.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/tar/-/tar-7.5.22.tgz", + "sha512": "3053bf433bed00e9896e484e6824ef6c670537d2fd6fe26e9c8b03c1a2a58d239d70b31e6b7349d64f54b33feb8dd7d25d3ab875fcdf792ed6e29e1838000778", + "dest-filename": "tar-7.5.22.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", + "sha512": "0b9b63942fc70ad5543a2dca595a24778bc755588e9868ed2f0221e0cbb33e8fe73184d5fe9d6eaeddd19cccf62165c374a106247de4e7e28fc6da91b14606b6", + "dest-filename": "temp-file-3.4.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", + "sha512": "c98aebb169eb5cc71db27bbfed83180287ccd64b692f9072eef6617f5e42ad78a3596ac461992ce405c1b9d6a57d25892e59de9ff4142540796a807492a65418", + "dest-filename": "temp-0.9.4.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/tiny-async-pool/-/tiny-async-pool-1.3.0.tgz", + "sha512": "d35100c39103adc56b760c822e0a123efab39c2d2c5710d255e88ecf4f455298e1ef51bbf550aa9de3abfb1beded3d6befa085e9965f3e31e8acddbe77ede6a8", + "dest-filename": "tiny-async-pool-1.3.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "sha512": "d3e0d4bea58c55a94b9a16ba96be240fc88030ad47cd5d3f68a9c2b566fdbfdeb8d539cffcc15becf7366f1a314234d7004aebc9756050e7efd98a8d965a867a", + "dest-filename": "tinybench-2.9.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.4.tgz", + "sha512": "4877ffaf8f1beef3ab8ef7bd3f1268dcc379bf9caeca31ef75472b41f7d3dd65cc51f9c69870d56c2e24dec1c96894e0642c29529948680a3900db4cca9dd81e", + "dest-filename": "tinyexec-1.2.4.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "sha512": "c1747f758a5ca8a99f5a911d66388a24ec023459dd0f40cc9eb5bf7188d51adb449017d581c2c51e836b963e3b9a339589cf72c8dbbae5a96c805e0d4324dada", + "dest-filename": "tinyglobby-0.2.17.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", + "sha512": "05ff882e6060adeb54add271cd73344a05cb6775df89a52e3a3fc82901ee4d78a9fb4e579febb21187558349180e2a5305c2eb095c94cc03f3ed0980adbd269b", + "dest-filename": "tinyrainbow-3.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "sha512": "47033b3283e88cfc6c381627c9dda1cb46f1b48955ae284db3da63e5252f63c673d6c41c406dad1b5852afc3c3c5f80407c44d28386a6c896ba086ab48d0cdb1", + "dest-filename": "tmp-promise-3.0.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/tmp/-/tmp-0.2.7.tgz", + "sha512": "7b4be8b48a69e14a36009612cd51d5eb109c6b0ba27b3dc3cea0c06eb4dcdd8c4192994de9ef9d335dd97887199c383f4294ae536cdf677af3c18f2e9049da5f", + "dest-filename": "tmp-0.2.7.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "sha512": "a39b123ca12483f0c840d987e37574fee7ab2eba7355e764521f2d18dbda797a5fa6ec2329e9e54a8c7fd8efc14e5654b447be246eece58844cfad3c3e500744", + "dest-filename": "toidentifier-1.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "sha512": "f793eed505d0bebb86121bfad9708c3b7326f741ac70e08296fac853008cd0f60e5cade4685de5dec207c71ef54e125f71b3363b902ee923b701609211f5b899", + "dest-filename": "truncate-utf8-bytes-1.0.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "sha512": "a0916ef781d06fe29576e49440bef09e99aa9df98bb0e03f9c087a6fa107d30084a0ad3f98f79753a737c0a0d5f373243ae1cf447b525ca294f7d2016b34bfdb", + "dest-filename": "tslib-2.8.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/tsx/-/tsx-4.22.4.tgz", + "sha512": "5fc117f97578411e710acae0c5a103f79e334c37d8f0aaa50edb242842f47078724bf3fc6f82053af183429b02f50d579cbabdd79c047f0c18ff3cec902b6686", + "dest-filename": "tsx-4.22.4.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/type-is/-/type-is-2.1.0.tgz", + "sha512": "7da607c346a705b73f916177cc54c49f14853801945fd1856ce06d86f0dd2ec22512858e14eb52d3380289063022c90bf6219764bde40170fc3a86781a63004c", + "dest-filename": "type-is-2.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "sha512": "8e5d6f6733c38a72ebf5e52ddc9feded5e8580d130f508ef04f772b33f4a7d00c3e357d0ac2d98e2f290762694a454f86d795bd511e12e9a7cc2d9ba3394e04b", + "dest-filename": "typescript-5.9.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "sha512": "8b00d9aa0d10006ae0f516afe47e27d0ceb87379a4479f5c27ac10a7eec2e2723482c984c5a79d6982cd3b8e1e4f802d041c236d38863cc96dd8c7744fd1fd25", + "dest-filename": "undici-types-6.21.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz", + "sha512": "8f7ef949c57ad1da26f9890f1487d32dc3a23f190dfdbb87cf91a86e32e18b116e00d68db370bd9781a6ad6a9e8e05d627b05b25c158a53114912d467bc6e965", + "dest-filename": "undici-types-8.3.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/undici/-/undici-6.28.1.tgz", + "sha512": "cd6a5d4d50f9e07e3c088c9b2f4ad6437ba4a5bf5ddb7c0cede1f946d7dd99e3fbd1c587363b5fa3b3f8bd95fee42a0370ee772783eee6e5e9ee535f8dce8344", + "dest-filename": "undici-6.28.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "sha512": "ac125e2390970259b2d6957eeb5ed607d27add4e9771acc71c5d9fd9d6c98b1e17ce9505d114b765b8f414620e080bdae4ffddfc604e61a002435c3ed1acd492", + "dest-filename": "universalify-0.1.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "sha512": "829b4735082120d9dcfef4c6224d12385185357c3b255ae5454b42a2725196f6b0e83b97d303b925e928f6c5ab301861f8fb18019ee85c088e9dffd42a88328b", + "dest-filename": "universalify-2.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "sha512": "a63cb66d8852b2e7f05a52b03dcfa5ddc37bfb0b8994aeaecf461d2443a54036e5ea3a3f6253e2e266fc6a0524542f0117b57c36ecdec8f36a464b00de1ced29", + "dest-filename": "unpipe-1.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/unzipper/-/unzipper-0.12.5.tgz", + "sha512": "b5760e8bd479ed48ffd99db948eb394514b3abcf3a301423da063c74f2fec65fe4bfab3a4af072a0a7c0b6f7d5784ba19ed583823776a3da7695be1354f033d0", + "dest-filename": "unzipper-0.12.5.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", + "sha512": "5e7d30dccb6243ace8cf6bc5c9456bb9a08be773bf0f052f90478ebe3faeba5326d019141985a6058572125a996922e163a643d2e95f537681adad9a553e317c", + "dest-filename": "utf8-byte-length-1.0.5.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "sha512": "10f0f9ab5b97c85c49a42acb9c27359c79eade039ae83641a1c008888d93692080ed5089d5424331a802cc891736c5187c3d5d68afff2d3110f318886eb1ed73", + "dest-filename": "util-deprecate-1.0.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "sha512": "04d19b58b7ddd1e50f69b8645d4566d23f2ebaf444c93879a2f45afddca8c3f06a01b649c82fb97d4f88cd03b39802b362a6110084a8461750af778867f3d7aa", + "dest-filename": "vary-1.1.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/vite/-/vite-8.1.2.tgz", + "sha512": "e9860f6d15d3c71e9b45798e9fb5dd9d0032e4340d1e10e0b638431c8d77a1ee2963dde491c746256c691b03a6fbefd68744294210eba48a1532b9abb08e4019", + "dest-filename": "vite-8.1.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.3.tgz", + "sha512": "b9be28907ed9e4a2e36fa843ca3aab197a96b56be861d5372069bf368ae98079dc2a82d309f4486ef961066eebd18b2d21a411625a78c846c5a8370a4b35d24a", + "dest-filename": "vitefu-1.1.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/vitest/-/vitest-4.1.9.tgz", + "sha512": "9c4dff2c4c9cd33f3bb8760b65e6ea09439a26bda176db8fa7b050e01a2c5459df96dc6002f306d3c372ad21a53e93945af476edce5f95299815336befc2fd19", + "dest-filename": "vitest-4.1.9.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/wasmoon/-/wasmoon-1.16.0.tgz", + "sha512": "16544b6f5e56c003b3d40f4e4036dfea838a29289e7e2e552b4651176c201fdc64de8e529d4d75b4d3da3a742e021d5472beba730c2f55769e55168575106de6", + "dest-filename": "wasmoon-1.16.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.9.2.tgz", + "sha512": "82c5de726f365103654c1511246baa396cb55b0d3c4b791951caf768e252d363e4d312ed91f7940150b4bb4c6181da271667bcd1e752254209caebcbffbdb9d1", + "dest-filename": "webcrypto-core-1.9.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "sha512": "04b2374e5d535b73ef97bd25df2ab763ae22f9ac29c17aac181616924a8cb676d782b303fb28fbae15b492e103c7325a6171a3116e6881aa4a34c10a34c8e26c", + "dest-filename": "which-2.0.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "sha512": "244746cc7c3092b6d6a063a5207a90e60b69aca18e7a7a431e9c44f73551d5b59b3ad611c8f3c731ef4568feb1eb50a635a4d385291bd03009b5ee630fe0e6cd", + "dest-filename": "which-5.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", + "sha512": "a062dee3a308ac246a5fbcad3d47fae84018bdd78c219627dd66a872aa8a640c6b06992a1df2ffaaf4f227f6d3939f80a870a35e6aefdc2116832dfaf3385152", + "dest-filename": "which-6.0.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "sha512": "854ae669605d543731bd8aa7ca1d3dcee9cacd13968db65388dcbc741123912ede8440d089b5c9ed7be59ad6f0b9372552223237e0b25d00f8566928f1f366f3", + "dest-filename": "why-is-node-running-2.3.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "sha512": "6151888f691a98b493c70e8db198e80717d2c2c9f4c9c75eb26738a7e436d5ce733ee675a65f8d7f155dc4fb5d1ef98d54e43a5d2606e0052dcadfc58bb0f5e9", + "dest-filename": "wrap-ansi-7.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "sha512": "9784a9fc346c7a8afdc0be84bd5dbe4ee427eb774c90f8d9feca7d5e48214c46d5f4a94f4b5c54b19deeeff2103b8c31b5c141e1b82940f45c477402bdeccf71", + "dest-filename": "wrappy-1.0.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", + "sha512": "56ca76f1bec345c8a6150bebaaed967a4df3d626310c25aa1d807c42c9e4fd2e117da090ccf18fc8136e563255ddc77a5222ad52da7ab0d33bee05afcdc087fa", + "dest-filename": "ws-8.21.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "sha512": "c8ca8606ab57c9e3757b74c662f80d803559de3f385b873090e5d0b30821a25e803e065669f7fd9676ef37b3076093a25ecbc63d7b634d8244882f49db0bfd12", + "dest-filename": "xmlbuilder-15.1.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "sha512": "d297c5cde81e0d62472480264cb44fd83c078dd179b3b8e8f6dbb3b5d43102120d09dbd2fb79c620da8f774d00a61a8947fd0b8403544baffeed209bf7c60e7c", + "dest-filename": "y18n-5.0.8.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "sha512": "df074689d672ab93c1d3ce172c44b94e9392440df08d7025216321ba6da445cbffe354a7d9e990d1dc9c416e2e6572de8f02af83a12cbdb76554bf8560472dec", + "dest-filename": "yallist-4.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "sha512": "620bd44dfc2ac9ced45d532b07e4889ac5584a64d2f17fed4abb5d35930898cfa7efe413ae2457c978a6d2606b4d735eab3545d0a5868073de8b2562145acd0f", + "dest-filename": "yallist-5.0.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "sha512": "b55a6c256ec376379c0221696c80757b7ab1210b04e8da0f739fde4ddadb6c80b88742d5b16867a1ade0fa6d87725048ba31f3b31678549540f8652e736fcb07", + "dest-filename": "yargs-parser-21.1.1.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz", + "sha512": "199b63c66fc9ff84d2c6e2f714d6230a62e4b414e7230feb56629223229e6006699890768a0f556ae082e71b1af3618d29528302aa4e9f7295ccdb74ce6ad4d2", + "dest-filename": "yargs-17.7.3.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "sha512": "a786bd23a5fa9eee888681a606a01c6c9cb59a50b88f6eef10f657f45e0be3fbd94f72f2ab5564147c3f57f3d4701f41ba8f831b7887913d31dd0c9ae7ccdcde", + "dest-filename": "yauzl-2.10.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "sha512": "ad592cbec9cd09d27fa2119ceb180fc3237c7a1782c6c88b33c9b1b84fedfe6395a897b03ee3b59a22e94c74224604ca08b7b12f831e00555a82db3b1e6359d9", + "dest-filename": "yocto-queue-0.1.0.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.4.tgz", + "sha512": "079f0d18112873c63d31658240697f82af710427b822228cd1adb1ec665d40a396e44c6bf12d56db827a3a03359e32bcc42446bc02482ff3315c77fa4a499029", + "dest-filename": "zimmerframe-1.1.4.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz", + "sha512": "3bf3e07e7a53d712920de4184827d12391b2de13dff7598a543b982d41d924c883169b6f3f8d4c4a75a87e6f1d9c29b4db9e9935f64833b0d2cee48c0059e31c", + "dest-filename": "zod-to-json-schema-3.25.2.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "file", + "url": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "sha512": "83352dfeab7cd675ec14628815c0b76277c4031e4d92e9c27e70e5bee0524854b4d9b717bb82e679ad001485306cb5b158fc7777da7c4b94286ae8ca70d43171", + "dest-filename": "zod-3.25.76.tgz", + "dest": "flatpak-node/pnpm-tarballs" + }, + { + "type": "inline", + "contents": "11", + "dest-filename": "installVersion", + "dest": "flatpak-node/cache/node-gyp/38.8.6" + }, + { + "type": "inline", + "contents": "from __future__ import annotations\n\nimport base64\nimport contextlib\nimport hashlib\nimport json\nimport os\nimport re\nimport sqlite3\nimport struct\nimport sys\nimport tarfile\nimport time\nfrom collections.abc import Mapping\n\n_SANITIZE_RE = re.compile(r'[\\\\/:*?\"<>|]')\n_MAX_LENGTH_WITHOUT_HASH = 120\n\n\ndef _msgpack_pack(obj: object) -> bytes:\n \"\"\"Minimal msgpack packer matching msgpackr with useRecords: true.\n\n msgpackr reserves the byte range 0x40-0x7F for record IDs when useRecords\n is enabled (pnpm's config). Standard msgpack uses 0x00-0x7F for positive\n fixints, but this packer caps them at 0x3F and emits a uint 8 prefix (0xcc)\n for 64-255 to avoid aliasing with record ID bytes.\n \"\"\"\n\n def _pack_int(val: int) -> bytes:\n # Positive fixint capped at 0x3F \u2014 0x40-0x7F are msgpackr record IDs\n if 0 <= val <= 0x3F:\n return val.to_bytes(1, 'big')\n if -32 <= val < 0:\n return val.to_bytes(1, 'big', signed=True)\n if val >= 0:\n if val <= 0xFF:\n return b'\\xcc' + val.to_bytes(1, 'big')\n if val <= 0xFFFF:\n return b'\\xcd' + val.to_bytes(2, 'big')\n if val <= 0xFFFFFFFF:\n return b'\\xce' + val.to_bytes(4, 'big')\n return b'\\xcf' + val.to_bytes(8, 'big')\n if val >= -0x80:\n return b'\\xd0' + val.to_bytes(1, 'big', signed=True)\n if val >= -0x8000:\n return b'\\xd1' + val.to_bytes(2, 'big', signed=True)\n if val >= -0x80000000:\n return b'\\xd2' + val.to_bytes(4, 'big', signed=True)\n return b'\\xd3' + val.to_bytes(8, 'big', signed=True)\n\n def _pack_str(val: str) -> bytes:\n data = val.encode('utf-8')\n length = len(data)\n if length <= 0x1F:\n return (0xA0 | length).to_bytes(1, 'big') + data\n if length <= 0xFF:\n return b'\\xd9' + length.to_bytes(1, 'big') + data\n if length <= 0xFFFF:\n return b'\\xda' + length.to_bytes(2, 'big') + data\n return b'\\xdb' + length.to_bytes(4, 'big') + data\n\n if obj is None:\n return b'\\xc0'\n if isinstance(obj, bool):\n return b'\\xc3' if obj else b'\\xc2'\n if isinstance(obj, int):\n return _pack_int(obj)\n if isinstance(obj, float):\n return b'\\xcb' + struct.pack('>d', obj)\n if isinstance(obj, str):\n return _pack_str(obj)\n if isinstance(obj, dict):\n length = len(obj)\n if length <= 0x0F:\n result = (0x80 | length).to_bytes(1, 'big')\n elif length <= 0xFFFF:\n result = b'\\xde' + length.to_bytes(2, 'big')\n else:\n result = b'\\xdf' + length.to_bytes(4, 'big')\n for key, val in obj.items():\n result += _msgpack_pack(key) + _msgpack_pack(val)\n return result\n if isinstance(obj, (list, tuple)):\n length = len(obj)\n if length <= 0x0F:\n result = (0x90 | length).to_bytes(1, 'big')\n elif length <= 0xFFFF:\n result = b'\\xdc' + length.to_bytes(2, 'big')\n else:\n result = b'\\xdd' + length.to_bytes(4, 'big')\n for item in obj:\n result += _msgpack_pack(item)\n return result\n raise TypeError(f'Unsupported type for msgpack: {type(obj)}')\n\n\nRECORD_HEADER = b'\\xd4\\x72'\n\n\ndef _pack_v11_store_entry(\n files: dict[str, dict[str, object]],\n manifest: dict[str, str] | None = None,\n) -> bytes:\n \"\"\"Encode a store v11 entry using msgpackr-compatible record extensions.\n\n msgpackr with ``useRecords: true, moreTypes: true`` decodes:\n\n - standard msgpack maps (0x80/0xde/0xdf) as JavaScript ``Map`` objects\n (iterable, supports ``for..of``)\n - record extensions (0x72) as plain objects (dot-notation access)\n\n The ``files`` field must be a Map so pnpm can iterate it with ``for..of``.\n Everything else must use record extensions so dot-notation works\n (e.g. ``pkgIndex.algo``, ``info.digest``, ``manifest.name``).\n \"\"\"\n\n def _record(obj: Mapping[str, object], struct_id: int) -> bytes:\n keys = list(obj.keys())\n result = RECORD_HEADER + struct_id.to_bytes(1, 'big')\n result += _msgpack_pack(keys)\n for k in keys:\n result += _msgpack_pack(obj[k])\n return result\n\n def _fixmap(length: int) -> bytes:\n if length <= 0x0F:\n return (0x80 | length).to_bytes(1, 'big')\n if length <= 0xFFFF:\n return b'\\xde' + length.to_bytes(2, 'big')\n return b'\\xdf' + length.to_bytes(4, 'big')\n\n # Pack file entries as records, build files map as standard msgpack map\n files_map_bytes = _fixmap(len(files))\n for fname, finfo in files.items():\n files_map_bytes += _msgpack_pack(fname) + _record(finfo, 0x41)\n\n # Outer store_entry as record (struct_id 0x40)\n store_entry_keys = ['algo', 'requiresBuild', 'files']\n if manifest is not None:\n store_entry_keys.append('manifest')\n\n # Record with fixed entries\n result = RECORD_HEADER + b'\\x40' + _msgpack_pack(store_entry_keys)\n # This is hardcoded to use sha512 per pnpm's behavior, see @pnpm/store.cafs/index and\n # file digest logic below\n result += _msgpack_pack('sha512') # algo\n result += _msgpack_pack(False) # requiresBuild\n result += files_map_bytes # files (standard map \u2192 iterable Map in JS)\n\n if manifest is not None:\n result += _record(manifest, 0x42)\n return result\n\n\ndef populate_store(manifest_path: str, tarball_dir: str, store_dir: str) -> None:\n with open(manifest_path, encoding='utf-8') as f:\n manifest = json.load(f)\n\n store_version = manifest['store_version']\n packages = manifest['packages']\n\n index_db: sqlite3.Connection | None = None\n\n store = os.path.join(store_dir, store_version)\n os.makedirs(os.path.join(store, 'files'), exist_ok=True)\n if store_version == 'v11':\n index_db = sqlite3.connect(os.path.join(store, 'index.db'))\n index_db.execute('PRAGMA busy_timeout=5000')\n index_db.execute('PRAGMA journal_mode=WAL')\n index_db.execute('PRAGMA synchronous=NORMAL')\n index_db.execute('PRAGMA temp_store=MEMORY')\n index_db.execute(\n 'CREATE TABLE IF NOT EXISTS package_index ('\n ' key TEXT PRIMARY KEY,'\n ' data BLOB NOT NULL'\n ') WITHOUT ROWID'\n )\n else:\n os.makedirs(os.path.join(store, 'index'), exist_ok=True)\n\n now = int(time.time() * 1000)\n\n for tarball_name, info in packages.items():\n tarball_path = os.path.join(tarball_dir, tarball_name)\n if not os.path.isfile(tarball_path):\n raise FileNotFoundError(tarball_path)\n\n _process_tarball(\n tarball_path=tarball_path,\n pkg_name=info['name'],\n pkg_version=info['version'],\n integrity=info['integrity'],\n integrity_digest=info['integrity_digest'],\n integrity_algo=info['integrity_algo'],\n store=store,\n now=now,\n tarball_url=info.get('tarball_url'),\n store_version=store_version,\n index_db=index_db,\n )\n\n if index_db is not None:\n index_db.commit()\n index_db.close()\n\n\ndef _process_tarball(\n *,\n tarball_path: str,\n pkg_name: str,\n pkg_version: str,\n integrity: str,\n integrity_digest: str,\n integrity_algo: str,\n store: str,\n now: int,\n tarball_url: str | None = None,\n store_version: str = 'v3',\n index_db: sqlite3.Connection | None = None,\n) -> None:\n index_files: dict[str, dict[str, object]] = {}\n file_digests: dict[str, str] = {}\n real_pkg_name = pkg_name\n real_pkg_version = pkg_version\n\n with tarfile.open(tarball_path, 'r:gz') as tf:\n for member in tf.getmembers():\n if not member.isfile():\n continue\n fobj = tf.extractfile(member)\n if fobj is None:\n continue\n data = fobj.read()\n\n if member.name.endswith('package.json') and member.name.count('/') <= 1:\n with contextlib.suppress(ValueError, TypeError, UnicodeDecodeError):\n pkg_data = json.loads(data.decode('utf-8'))\n if isinstance(pkg_data, dict):\n if 'name' in pkg_data and isinstance(pkg_data['name'], str):\n real_pkg_name = pkg_data['name']\n if 'version' in pkg_data and isinstance(\n pkg_data['version'], str\n ):\n real_pkg_version = pkg_data['version']\n\n digest = hashlib.sha512(data).digest()\n file_hex = digest.hex()\n is_exec = bool(member.mode & 0o111)\n\n cas_dir = os.path.join(store, 'files', file_hex[:2])\n cas_name = file_hex[2:] + ('-exec' if is_exec else '')\n cas_path = os.path.join(cas_dir, cas_name)\n if not os.path.exists(cas_path):\n os.makedirs(cas_dir, exist_ok=True)\n with open(cas_path, 'wb') as out:\n out.write(data)\n if is_exec:\n os.chmod(cas_path, 0o755)\n\n rel_name = member.name\n if '/' in rel_name:\n rel_name = rel_name.split('/', 1)[1]\n\n b64 = base64.b64encode(digest).decode()\n index_files[rel_name] = {\n 'checkedAt': now,\n 'integrity': f'sha512-{b64}',\n 'mode': member.mode,\n 'size': len(data),\n }\n file_digests[rel_name] = file_hex\n\n if store_version == 'v11':\n assert index_db is not None\n # pnpm v11 store index keys use the raw package name (e.g. @scope/pkg),\n # not the filesystem-sanitized form (@scope+pkg), since keys are stored\n # in SQLite, not as filenames.\n raw_pkg_id = f'{pkg_name}@{pkg_version}'\n key = f'{integrity_algo}-{integrity}\\t{raw_pkg_id}'\n\n v11_files: dict[str, dict[str, object]] = {}\n for rel_name, finfo in index_files.items():\n checked_at = finfo['checkedAt']\n assert isinstance(checked_at, int)\n v11_files[rel_name] = {\n 'checkedAt': float(checked_at), # float64 avoids msgpackr BigInt\n 'digest': file_digests[rel_name],\n 'mode': finfo['mode'],\n 'size': finfo['size'],\n }\n\n manifest = None\n if real_pkg_name or real_pkg_version:\n manifest = {\n 'name': real_pkg_name,\n 'version': real_pkg_version,\n }\n\n entry_bytes = _pack_v11_store_entry(v11_files, manifest)\n\n # It's currently not possible to fully determine which store key pnpm will use,\n # so we insert multiple keys to ensure pnpm can find the entry it wants.\n\n index_db.execute(\n 'INSERT OR REPLACE INTO package_index (key, data) VALUES (?, ?)',\n (key, entry_bytes),\n )\n\n if tarball_url:\n url_key = f'{tarball_url}\\t{raw_pkg_id}'\n index_db.execute(\n 'INSERT OR REPLACE INTO package_index (key, data) VALUES (?, ?)',\n (url_key, entry_bytes),\n )\n\n # pnpm looks up git-hosted tarballs (codeload.github.com,\n # bitbucket.org, gitlab.com) and tarballs without integrity by\n # {tarball_url}\\tbuilt(not-built) \u2014 see pickStoreIndexKey in @pnpm/store.index.\n pkgid_key = f'{tarball_url}\\t'\n index_db.execute(\n 'INSERT OR REPLACE INTO package_index (key, data) VALUES (?, ?)',\n (pkgid_key + 'built', entry_bytes),\n )\n index_db.execute(\n 'INSERT OR REPLACE INTO package_index (key, data) VALUES (?, ?)',\n (pkgid_key + 'not-built', entry_bytes),\n )\n else:\n pkg_id = _SANITIZE_RE.sub('+', f'{pkg_name}@{pkg_version}')\n\n index_data = {\n 'name': real_pkg_name,\n 'version': real_pkg_version,\n 'requiresBuild': False,\n 'files': index_files,\n }\n\n idx_prefix = integrity_digest[:2]\n idx_rest = integrity_digest[2:64]\n idx_dir = os.path.join(store, 'index', idx_prefix)\n os.makedirs(idx_dir, exist_ok=True)\n idx_path = os.path.join(idx_dir, f'{idx_rest}-{pkg_id}.json')\n with open(idx_path, 'w', encoding='utf-8') as out:\n json.dump(index_data, out)\n\n # For tarball-URL packages, also create an index entry keyed by the URL hash\n # this is how pnpm looks up tarball deps without integrity\n if tarball_url:\n if store_version == 'v3':\n url_hash = hashlib.sha256(tarball_url.encode()).hexdigest()\n url_idx_prefix = url_hash[:2]\n url_idx_rest = url_hash[2:64]\n url_idx_dir = os.path.join(store, 'index', url_idx_prefix)\n os.makedirs(url_idx_dir, exist_ok=True)\n url_idx_path = os.path.join(\n url_idx_dir, f'{url_idx_rest}-{pkg_id}.json'\n )\n with open(url_idx_path, 'w', encoding='utf-8') as out:\n json.dump(index_data, out)\n else:\n url_dir_name = re.sub(r'[:/]', '+', tarball_url)\n if (\n len(url_dir_name) > _MAX_LENGTH_WITHOUT_HASH\n or url_dir_name != url_dir_name.lower()\n ):\n url_dir_name = f'{url_dir_name[: _MAX_LENGTH_WITHOUT_HASH - 33]}_{hashlib.sha256(url_dir_name.encode()).hexdigest()[:32]}'\n url_idx_dir = os.path.join(store, url_dir_name)\n os.makedirs(url_idx_dir, exist_ok=True)\n url_idx_path = os.path.join(url_idx_dir, 'integrity.json')\n with open(url_idx_path, 'w', encoding='utf-8') as out:\n json.dump(index_data, out)\n\n\nif __name__ == '__main__':\n if len(sys.argv) != 4:\n print(\n f'Usage: {sys.argv[0]} ',\n file=sys.stderr,\n )\n sys.exit(1)\n populate_store(sys.argv[1], sys.argv[2], sys.argv[3])\n", + "dest-filename": "populate_pnpm_store.py", + "dest": "flatpak-node" + }, + { + "type": "inline", + "contents": "{\"packages\":{\"@dagrejs__dagre-3.1.1.tgz\":{\"integrity\":\"zroZB1dFOFiGgv4Xcrn1DckB1o4aOikPqD2NDQPV0WM//CXGcS6xiD0rNkqHmw6FEg4tabt4nxPLwgCWT+Vb2A==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"ceba1907574538588682fe1772b9f50dc901d68e1a3a290fa83d8d0d03d5d1633ffc25c6712eb1883d2b364a879b0e85120e2d69bb789f13cbc200964fe55bd8\",\"name\":\"@dagrejs/dagre\",\"version\":\"3.1.1\"},\"@dagrejs__graphlib-4.0.5.tgz\":{\"integrity\":\"7xrBTqIts3o+PMUZX97wSc+7TUbW+/rULzGNCTP6yooNVDXbzw4Wutg/H/xOutTB/c/k0YqOAavgPh4/Zk9PFA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"ef1ac14ea22db37a3e3cc5195fdef049cfbb4d46d6fbfad42f318d0933faca8a0d5435dbcf0e16bad83f1ffc4ebad4c1fdcfe4d18a8e01abe03e1e3f664f4f14\",\"name\":\"@dagrejs/graphlib\",\"version\":\"4.0.5\"},\"@electron__asar-3.4.1.tgz\":{\"integrity\":\"i4/rNPRS84t0vSRa2HorerGRXWyF4vThfHesw0dmcWHp+cspK743UanA0suA5Q5y8kzY2y6YKrvbIUn69BCAiA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"8b8feb34f452f38b74bd245ad87a2b7ab1915d6c85e2f4e17c77acc347667161e9f9cb292bbe3751a9c0d2cb80e50e72f24cd8db2e982abbdb2149faf4108088\",\"name\":\"@electron/asar\",\"version\":\"3.4.1\"},\"@electron__fuses-1.8.0.tgz\":{\"integrity\":\"zx0EIq78WlY/lBb1uXlziZmDZI4ubcCXIMJ4uGjXzZW0nS19TjSPeXPAjzzTmKQlJUZm0SbmZhPKP7tuQ1SsEw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"cf1d0422aefc5a563f9416f5b97973899983648e2e6dc09720c278b868d7cd95b49d2d7d4e348f7973c08f3cd398a425254666d126e66613ca3fbb6e4354ac13\",\"name\":\"@electron/fuses\",\"version\":\"1.8.0\"},\"@electron__get-2.0.3.tgz\":{\"integrity\":\"Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"424ce9836b3d1a7555d88d818d192c522e375397bafb369031c8e8272d02f82e68c5a2a5f9f99c9060d016d469669655d0d41e92e659fad1b3ec403d4d59d0b5\",\"name\":\"@electron/get\",\"version\":\"2.0.3\"},\"@electron__get-3.1.0.tgz\":{\"integrity\":\"F+nKc0xW+kVbBRhFzaMgPy3KwmuNTYX1fx6+FxxoSnNgwYX6LD7AKBTWkU0MQ6IBoe7dz069CNkR673sPAgkCQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"17e9ca734c56fa455b051845cda3203f2dcac26b8d4d85f57f1ebe171c684a7360c185fa2c3ec02814d6914d0c43a201a1eeddcf4ebd08d911ebbdec3c082409\",\"name\":\"@electron/get\",\"version\":\"3.1.0\"},\"@electron__notarize-2.5.0.tgz\":{\"integrity\":\"jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"8cd4fc9f01f57fd5f91842135da43c205fca76c92f2243857c1d82bf0ba6b2f79589dce949cfa6be185331d0064981773be36ae3d949ef2facb0e0d15eed3af8\",\"name\":\"@electron/notarize\",\"version\":\"2.5.0\"},\"@electron__osx-sign-1.3.3.tgz\":{\"integrity\":\"KZ8mhXvWv2rIEgMbWZ4y33bDHyUKMXnx4M0sTyPNK/vcB81ImdeY9Ggdqy0SWbMDgmbqyQ+phgejh6V3R2QuSg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"299f26857bd6bf6ac812031b599e32df76c31f250a3179f1e0cd2c4f23cd2bfbdc07cd4899d798f4681dab2d1259b3038266eac90fa98607a387a57747642e4a\",\"name\":\"@electron/osx-sign\",\"version\":\"1.3.3\"},\"@electron__rebuild-4.2.0.tgz\":{\"integrity\":\"RKL/O+jGoXJMxrx/5771y1n0xTKmFuOYGO3gMmwypBM6rsH0kou0mswwdXA2JrhIkE4xyC7v9vGk0n6NPzgOxQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"44a2ff3be8c6a1724cc6bc7fe7bef5cb59f4c532a616e39818ede0326c32a4133aaec1f4928bb49acc3075703626b848904e31c82eeff6f1a4d27e8d3f380ec5\",\"name\":\"@electron/rebuild\",\"version\":\"4.2.0\"},\"@electron__universal-2.0.3.tgz\":{\"integrity\":\"Wn9sPYIVFRFl5HmwMJkARCCf7rqK/EurkfQ/rJZ14mHP3iYTjZSIOSVonEAnhWeAXwtw7zOekGRlc6yTtZ0t+g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"5a7f6c3d8215151165e479b030990044209feeba8afc4bab91f43fac9675e261cfde26138d94883925689c40278567805f0b70ef339e90646573ac93b59d2dfa\",\"name\":\"@electron/universal\",\"version\":\"2.0.3\"},\"@emnapi__core-1.11.1.tgz\":{\"integrity\":\"RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"452bdb4261f374accdb0b61aff01eb6dcdca378b182ca01d3d9c6a88cd87013aaffd2064dbf10d487a6f5c668b38c72c032cf4a68106aa49a62981b739688911\",\"name\":\"@emnapi/core\",\"version\":\"1.11.1\"},\"@emnapi__runtime-1.11.1.tgz\":{\"integrity\":\"vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"be08fb477cb75a0c76e0841a18f03f47a6055cb1d530e674b951322103da5acfab7750337c43179400b6d856303b55e4291e8d3ecabb9946a7747f2821175917\",\"name\":\"@emnapi/runtime\",\"version\":\"1.11.1\"},\"@emnapi__wasi-threads-1.2.2.tgz\":{\"integrity\":\"c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"73de6a39790777274d2a1b1c05379ba840b5095019a72a8e7d57c1cd0d6a833ca5de07de95d5232208036c86600cab072e09ec33e8a01fb4c9fde01ab1a56e30\",\"name\":\"@emnapi/wasi-threads\",\"version\":\"1.2.2\"},\"@esbuild__aix-ppc64-0.28.1.tgz\":{\"integrity\":\"Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"4af97bb6af24ff4f3ea7a0973e94634357ca5fed68747fc141b6f8f1f57a7e3dc258786ca083a863cef0d681d79b4a84a6420add97d5829d2179ddd7057cd731\",\"name\":\"@esbuild/aix-ppc64\",\"version\":\"0.28.1\"},\"@esbuild__android-arm-0.28.1.tgz\":{\"integrity\":\"0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"d24d85d76f57762a354dd25fcc9f2ccb5438eef503d8d9f07618807fb76b50dd440537cf7f886c142b66320bbfea6f094b3b01ae59958ee74c050a8e7c6f2eb1\",\"name\":\"@esbuild/android-arm\",\"version\":\"0.28.1\"},\"@esbuild__android-arm64-0.28.1.tgz\":{\"integrity\":\"34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"df810611b088020a2c633ea0a0b728a57e8ca3b3721aff6d7f010cdbfec27b655c551939ebc892be788659c517232ef0103475c33a2573172b88556b59873006\",\"name\":\"@esbuild/android-arm64\",\"version\":\"0.28.1\"},\"@esbuild__android-x64-0.28.1.tgz\":{\"integrity\":\"dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"75bc18ee5b523035ac45ab5c4690a7112e05fa29bcf0e094806663cb9dac842ec6a87444fdc625c4d6c1e19e14a49b30a5c738431776a04fee7ccd29eb520a9e\",\"name\":\"@esbuild/android-x64\",\"version\":\"0.28.1\"},\"@esbuild__darwin-arm64-0.28.1.tgz\":{\"integrity\":\"TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"4d96d691063b92f4c05db5d44fbb9500247970c1ec0e24b3f73ed92805ff453abf589124dd0c91af4c19a4d8410d7fbfd02b5da9420994e8a875072d6bab58dd\",\"name\":\"@esbuild/darwin-arm64\",\"version\":\"0.28.1\"},\"@esbuild__darwin-x64-0.28.1.tgz\":{\"integrity\":\"zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"cdf77380af400813592c8fc2c874cec7cd52c8d6cce985e7eebc52817f7b563ca23e5f56d62e0a6b87e0284084a0508a1a9bc18f9a80ad62068108cec2482c91\",\"name\":\"@esbuild/darwin-x64\",\"version\":\"0.28.1\"},\"@esbuild__freebsd-arm64-0.28.1.tgz\":{\"integrity\":\"wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"c06d8403c10d744234aa191264c8dfaab758fb38826023cc9ad6638c8c0e9971639b2cc41e7f94531939a1ff9262c8ed7ecdd5a67942ed02f3488e6163face03\",\"name\":\"@esbuild/freebsd-arm64\",\"version\":\"0.28.1\"},\"@esbuild__freebsd-x64-0.28.1.tgz\":{\"integrity\":\"i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"8bb759f6f4209ef482ce2feb6025cd82d17f53e78a64d241ceedde4d06d18079cceed3528b32ce911140977ab355cfcea7fbb96241c76b8a5fff70ce607b612d\",\"name\":\"@esbuild/freebsd-x64\",\"version\":\"0.28.1\"},\"@esbuild__linux-arm-0.28.1.tgz\":{\"integrity\":\"qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"a955c1387412f9de58ef6d86c09cc952d38b957ee49b70ab68e686a2b985d690ed3ddd82fe5d521d13e08cbba72c67b9d5287961858a3050f25784b180c4184d\",\"name\":\"@esbuild/linux-arm\",\"version\":\"0.28.1\"},\"@esbuild__linux-arm64-0.28.1.tgz\":{\"integrity\":\"yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"c87b3ed2e73cfa7bc401f01fc6b59028ae6979237305ce0f7a070c3b4109da14fbd6e03bbc1f08860d9eefb4763fb486e6e6233db1e52cb9af7b82cb2d109fd2\",\"name\":\"@esbuild/linux-arm64\",\"version\":\"0.28.1\"},\"@esbuild__linux-ia32-0.28.1.tgz\":{\"integrity\":\"d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"775cf866e3f46a3adfcff161193e2fbf6efcad7f0a9cf3c9c7c8b9f80b4aed361bc7d2def45d61cb3bab669904ca39066bd7541a1428c380b5366786beac4ddb\",\"name\":\"@esbuild/linux-ia32\",\"version\":\"0.28.1\"},\"@esbuild__linux-loong64-0.28.1.tgz\":{\"integrity\":\"M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"339b118d4559ae49b53803d1ddd94e63336637e96864a1958b5554406af0baa2dc6d1eaa780cfe7da98c863012787dd854abd9cfecd3d63961fe4782dd18ff96\",\"name\":\"@esbuild/linux-loong64\",\"version\":\"0.28.1\"},\"@esbuild__linux-mips64el-0.28.1.tgz\":{\"integrity\":\"mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"99139b0597878763b170114f584fc58f296446065d62e893477bda4e8ceab8218e1f5e223fda0de31e067bcd42a080d842b5e6231a45ba6241bb932d6699d025\",\"name\":\"@esbuild/linux-mips64el\",\"version\":\"0.28.1\"},\"@esbuild__linux-ppc64-0.28.1.tgz\":{\"integrity\":\"slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"b2549c06c3006f71850dc76b0a02f066d3d84681f61ffca8bafd744226724639ac3f8f1fce7a2f796cad4a0088fd1d19714829734661214131e8b1edb3ccab7d\",\"name\":\"@esbuild/linux-ppc64\",\"version\":\"0.28.1\"},\"@esbuild__linux-riscv64-0.28.1.tgz\":{\"integrity\":\"kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"930d28c24d68d061444d42725b48dcd06e18cecd011d99f424367c2514f4f3cbe32585fbefb040b357c31b1002faaf37d6a3acd834c2f7a98db06da8a5d7f2c9\",\"name\":\"@esbuild/linux-riscv64\",\"version\":\"0.28.1\"},\"@esbuild__linux-s390x-0.28.1.tgz\":{\"integrity\":\"/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"fe50088d7f1a605441ca187a2f9ad8b4f10346a6bd75eff857f8ee39772d6b97eb8efcd73b8feca84b72cadb1ed20df3645b96bb97033743242f3daa4430f602\",\"name\":\"@esbuild/linux-s390x\",\"version\":\"0.28.1\"},\"@esbuild__linux-x64-0.28.1.tgz\":{\"integrity\":\"u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"bbf6a73581769a654e103c0bb67435c0eaf7119f6c4cd18b5abb18198c075b3180dd28bce083a41d795b5930f5341fbdff595c9f079828ee78ba1c59c9d3737c\",\"name\":\"@esbuild/linux-x64\",\"version\":\"0.28.1\"},\"@esbuild__netbsd-arm64-0.28.1.tgz\":{\"integrity\":\"oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"a24b340d86cbc1632669a913b026feccbe04f9a1d154ba26f48259380b6131010f8909b27571e4ce2604b06611c74b8d57f22310a18057de352731f4da97e5ab\",\"name\":\"@esbuild/netbsd-arm64\",\"version\":\"0.28.1\"},\"@esbuild__netbsd-x64-0.28.1.tgz\":{\"integrity\":\"aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"69e2fa9409cdf3d1f3e373258751bc0116ac6eea18bd22130c4c74b478796fb8c99c772cb2a823cbd631e37d060e99826ba3b2acaa12d1a3518caba77518b31a\",\"name\":\"@esbuild/netbsd-x64\",\"version\":\"0.28.1\"},\"@esbuild__openbsd-arm64-0.28.1.tgz\":{\"integrity\":\"MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"3041497b90b747ca705dd679636d68a3a9bb78f892d1df695ae727f7d3bfc2fc896428682102ab403c4aac6796f05e7e4f4a244c77ac0260de8870d322ad15fd\",\"name\":\"@esbuild/openbsd-arm64\",\"version\":\"0.28.1\"},\"@esbuild__openbsd-x64-0.28.1.tgz\":{\"integrity\":\"i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"8bf64b20e69f13467c708fd700d2408b1a092ffb910284b6c4e037adbd3137e28ad0ad7bedc300b10624cc7b41aed31700ab8073b1c681c5a267fb110b537183\",\"name\":\"@esbuild/openbsd-x64\",\"version\":\"0.28.1\"},\"@esbuild__openharmony-arm64-0.28.1.tgz\":{\"integrity\":\"ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"81ef99ec45c536dd813b5a0032c569890f04c27755f62d715deac079320aec0b4fb376ca15740cee7951c4348850831eb9e47508d5f1ab3b4bcdd35e45e28126\",\"name\":\"@esbuild/openharmony-arm64\",\"version\":\"0.28.1\"},\"@esbuild__sunos-x64-0.28.1.tgz\":{\"integrity\":\"BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"0448e0b440a42f7bd8f9269243a9f355f8802d4785c696b0ca9f0999fe4fb5885fd54838d0dd61fe1c6586db3e7f516f4af6ab12281dc52dc1952308d8f24b71\",\"name\":\"@esbuild/sunos-x64\",\"version\":\"0.28.1\"},\"@esbuild__win32-arm64-0.28.1.tgz\":{\"integrity\":\"lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"942bfd78afc7e992566c4edb8769f0e78099f4cda7ba907125c4ec764fd04275a47528ca1aec66987f3f196ae54f578c9997e7e1d19c0a346d7b7f7b5aa7d05c\",\"name\":\"@esbuild/win32-arm64\",\"version\":\"0.28.1\"},\"@esbuild__win32-ia32-0.28.1.tgz\":{\"integrity\":\"zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"cef6ff981d9b482a093a9a0206060a2a95fa60cea624194151552d563e350e564954407aff408a9516313f9c169750b520b882a00539c19678ab53f7a9e4ba12\",\"name\":\"@esbuild/win32-ia32\",\"version\":\"0.28.1\"},\"@esbuild__win32-x64-0.28.1.tgz\":{\"integrity\":\"bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"6e6e0ca30aeff865cc969597fbe11c5f0fe22f2775a37f9b2640b60e4597615be0642a83fdb4a3f5cb59780302ddc2318234554760ee7da8aee183f1af9816d4\",\"name\":\"@esbuild/win32-x64\",\"version\":\"0.28.1\"},\"@hono__node-server-1.19.14.tgz\":{\"integrity\":\"GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"1b0b6f82d5f19d6b2e717bdb41791182a92c887d9079ddfb1fdc47668704e6c03737c3bc3bcffc140dee725417c5757373d5c166e10e30aefeaf4d85992a47b7\",\"name\":\"@hono/node-server\",\"version\":\"1.19.14\"},\"@isaacs__fs-minipass-4.0.1.tgz\":{\"integrity\":\"wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"c209bd1219768e97aa3f7cf0ffb9a8de4447169e4c10386a01dc32d5f4c69070309e418e56c829bd084bf01e67d6a95bd358d5de7fdb23465f669e65580d64e3\",\"name\":\"@isaacs/fs-minipass\",\"version\":\"4.0.1\"},\"@jridgewell__gen-mapping-0.3.13.tgz\":{\"integrity\":\"2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"da492dffb9e227a32010fc45d1b61d43a7ad65a03e7d0bc370b29c921cb5c8840ecdaa0a8c10634a3eb7fda2d58d8137aa146de5dbccfae5327c283a50a0816c\",\"name\":\"@jridgewell/gen-mapping\",\"version\":\"0.3.13\"},\"@jridgewell__remapping-2.3.5.tgz\":{\"integrity\":\"LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"2c8f6effe95a606e03b354c3292256d983eb22571560ec22d9f502eb1078de5b9e0a383157895f7ce0990ad605887e9334e5feb50297c7ded3e082876e1c8711\",\"name\":\"@jridgewell/remapping\",\"version\":\"2.3.5\"},\"@jridgewell__resolve-uri-3.1.2.tgz\":{\"integrity\":\"bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"6d12128022233f6d3fb5b5923d63048b9e1054f45913192e0fd9492fe508c542adc15240f305b54eb6f58ccb354455e8d42053359ff98690bd42f98a59da292b\",\"name\":\"@jridgewell/resolve-uri\",\"version\":\"3.1.2\"},\"@jridgewell__sourcemap-codec-1.5.5.tgz\":{\"integrity\":\"cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"71843ddf5d20aeac6e7966e5f96b885086a251a0dc8fb58eab97d58449633558117ce52163d7f2db34ef7e8a96b2779b87c4a5ef45527056c80af2672ca0743a\",\"name\":\"@jridgewell/sourcemap-codec\",\"version\":\"1.5.5\"},\"@jridgewell__trace-mapping-0.3.31.tgz\":{\"integrity\":\"zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"cf3351f9275048327373c8e869e3fc410a0242bf0db98c76748232b65d507811191c9f6e5ba85e6ecad881bcfc849c1441aa374d608cb667d5f0dbb5b7038b03\",\"name\":\"@jridgewell/trace-mapping\",\"version\":\"0.3.31\"},\"@malept__cross-spawn-promise-2.0.0.tgz\":{\"integrity\":\"1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"d43a4a5346794e196d0708cdc92302d788340a46f28426b3f45921c6a36c648eae00f257152f1c3179412a8dba149f19b96e92f4608c711f483b99365f9ffd16\",\"name\":\"@malept/cross-spawn-promise\",\"version\":\"2.0.0\"},\"@malept__flatpak-bundler-0.4.0.tgz\":{\"integrity\":\"9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"f503ad35f7dc385fdcd6c78c0839e37246f747d587706df8b64cbe147a4d28a096d3073fb1c60bc0cb4efa9b721947cc5b4fdbfe7e2a46200b95a14773d3a3ed\",\"name\":\"@malept/flatpak-bundler\",\"version\":\"0.4.0\"},\"@modelcontextprotocol__sdk-1.29.0.tgz\":{\"integrity\":\"zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"ce8dfb99903d8495a950b824469a307b07b3d72e8c2f91ac5c93d8f05234b4104277bec712fcdae230ea44a397807367f3aecf5460b24ddceaa73d22ceee598d\",\"name\":\"@modelcontextprotocol/sdk\",\"version\":\"1.29.0\"},\"@napi-rs__wasm-runtime-1.1.6.tgz\":{\"integrity\":\"ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"64bbff25d51f92f3b2f5e0a79c16867e23be5e299b8de6c078ef8c450a83fc1f85475b6744dd2da4a4891d16c4f2c15f4ba6aab1767aed34237f07ecc542d56e\",\"name\":\"@napi-rs/wasm-runtime\",\"version\":\"1.1.6\"},\"@noble__hashes-1.4.0.tgz\":{\"integrity\":\"V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"575249d564d152a1c7ace4a1e7dee151170ca9529518bfde6b792fd204a711db04674ffe5723e084cd6530d19cd34cfb088428ad2bdb2a9b89931bee1dbbdd6e\",\"name\":\"@noble/hashes\",\"version\":\"1.4.0\"},\"@noble__hashes-2.4.0.tgz\":{\"integrity\":\"X5XaVWZIBCT7HHZGm5I7ZQXDwLG+bGXuSrMQAW+7Zvl87h1kmc1ZB1VSRJcpUfoUrGQp4Fkoxm5kZ+Ms+aW+eA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"5f95da5566480424fb1c76469b923b6505c3c0b1be6c65ee4ab310016fbb66f97cee1d6499cd5907555244972951fa14ac6429e05928c66e6467e32cf9a5be78\",\"name\":\"@noble/hashes\",\"version\":\"2.4.0\"},\"@oxc-project__types-0.137.0.tgz\":{\"integrity\":\"WT+Gb24i8hmvo85AIv2oEYouEXkRlKAlT9WaCa3TfLgNCN+GhrJOGZuIlMouAh38Qe4QOx26eUOVsq70qXrywA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"593f866f6e22f219afa3ce4022fda8118a2e11791194a0254fd59a09add37cb80d08df8686b24e199b8894ca2e021dfc41ee103b1dba794395b2aef4a97af2c0\",\"name\":\"@oxc-project/types\",\"version\":\"0.137.0\"},\"@peculiar__asn1-schema-2.9.4.tgz\":{\"integrity\":\"GjzePcT9Iw8NzeOPf73iNS9xM+TBhd/FilAfP+RQGkTMQJTVWtytN3JHJACCjf/ABNau5S7mS3g+DcuxmRgYEg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"1a3cde3dc4fd230f0dcde38f7fbde2352f7133e4c185dfc58a501f3fe4501a44cc4094d55adcad3772472400828dffc004d6aee52ee64b783e0dcbb199181812\",\"name\":\"@peculiar/asn1-schema\",\"version\":\"2.9.4\"},\"@peculiar__json-schema-1.1.12.tgz\":{\"integrity\":\"coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"72851fba831e201ec1f3f34c7a4c5a0f32e16989a9d0764d3c48d8466f60a11a2ef146480b7cf6d6cd2c2fd016a02c38106f3be90c8ede462b73ad56345f41ff\",\"name\":\"@peculiar/json-schema\",\"version\":\"1.1.12\"},\"@peculiar__utils-2.0.3.tgz\":{\"integrity\":\"+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"fa82f71cf151219d52b762b9d255825e28a82204a8c73cfb475277b85ea778edb2975b209a9818e975c91f805da680e4316ce741379817aa1634364b09d43879\",\"name\":\"@peculiar/utils\",\"version\":\"2.0.3\"},\"@peculiar__webcrypto-1.7.1.tgz\":{\"integrity\":\"ODOov0sGMJMf3jPonOkgGqPknTsu+DdQ7kD++gz8aI+aFMOMHFbWAA2taqXXVTdP+OTOQR/znGvSpmkeI0WTYQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"3833a8bf4b0630931fde33e89ce9201aa3e49d3b2ef83750ee40fefa0cfc688f9a14c38c1c56d6000dad6aa5d755374ff8e4ce411ff39c6bd2a6691e23459361\",\"name\":\"@peculiar/webcrypto\",\"version\":\"1.7.1\"},\"@rolldown__binding-android-arm64-1.1.3.tgz\":{\"integrity\":\"DT6Z3PhvioeHMvxo+xHc3KtqggrI7CCTXCmC2h/5zUlp5jVitv7XEy+9q5/7v8IolhlioawpMo8Kg0EEBy7J0g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"0d3e99dcf86f8a878732fc68fb11dcdcab6a820ac8ec20935c2982da1ff9cd4969e63562b6fed7132fbdab9ffbbfc228961962a1ac29328f0a834104072ec9d2\",\"name\":\"@rolldown/binding-android-arm64\",\"version\":\"1.1.3\"},\"@rolldown__binding-darwin-arm64-1.1.3.tgz\":{\"integrity\":\"0NwgwsjM7LrsuVnXMK3koTpagBNOhloc/BNjKqZjv4V5zI5r13qx69uVhRx+o5Z0yy4Hzq+lpy7TAgUG/ocvrw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"d0dc20c2c8ccecbaecb959d730ade4a13a5a80134e865a1cfc13632aa663bf8579cc8e6bd77ab1ebdb95851c7ea39674cb2e07ceafa5a72ed3020506fe872faf\",\"name\":\"@rolldown/binding-darwin-arm64\",\"version\":\"1.1.3\"},\"@rolldown__binding-darwin-x64-1.1.3.tgz\":{\"integrity\":\"YtiBp4disu6V560loT6PjMdiRaWmVvDNrUunAalbiFx2ggeJwxdAsgZMcoGP17uyAsTwAj5V1niksxlHnVQ1Sw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"62d881a78762b2ee95e7ad25a13e8f8cc76245a5a656f0cdad4ba701a95b885c76820789c31740b2064c72818fd7bbb202c4f0023e55d678a4b319479d54354b\",\"name\":\"@rolldown/binding-darwin-x64\",\"version\":\"1.1.3\"},\"@rolldown__binding-freebsd-x64-1.1.3.tgz\":{\"integrity\":\"yD3EkEdXk2LypPxnf/kSZHirarsI8gcPzc62SukhR9VJTyvV+F9Q/GxWNuCojc7sXyuVC4DxRGhdDK4X8VSsbw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"c83dc49047579362f2a4fc677ff9126478ab6abb08f2070fcdceb64ae92147d5494f2bd5f85f50fc6c5636e0a88dceec5f2b950b80f144685d0cae17f154ac6f\",\"name\":\"@rolldown/binding-freebsd-x64\",\"version\":\"1.1.3\"},\"@rolldown__binding-linux-arm-gnueabihf-1.1.3.tgz\":{\"integrity\":\"c+8vieQbsD7HNAHKIA34w0GJ9FedFFuJGD+7E6vz7Q3uqAIugL5p45fhlsj4UaAsHpcmlqugBWMhA0/j7o0sIg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"73ef2f89e41bb03ec73401ca200df8c34189f4579d145b89183fbb13abf3ed0deea8022e80be69e397e196c8f851a02c1e972696aba0056321034fe3ee8d2c22\",\"name\":\"@rolldown/binding-linux-arm-gnueabihf\",\"version\":\"1.1.3\"},\"@rolldown__binding-linux-arm64-gnu-1.1.3.tgz\":{\"integrity\":\"50jD0uUwLvur7Zz9LHz17kaAdTPjn5wN93hEgjvmYFRZwiR7ZJYovTd5ipyWJDAnXKvZ+wgc+/Ika6dwSF5OcA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"e748c3d2e5302efbabed9cfd2c7cf5ee46807533e39f9c0df77844823be6605459c2247b649628bd37798a9c962430275cabd9fb081cfbf2246ba770485e4e70\",\"name\":\"@rolldown/binding-linux-arm64-gnu\",\"version\":\"1.1.3\"},\"@rolldown__binding-linux-arm64-musl-1.1.3.tgz\":{\"integrity\":\"BO9+oPL8K9poZJBfYPsXNtYjPE5uM3qeehT3aFcW4LITOl+iSqhp0abzjR2nWBUNjIZeKXjAEWBZ64WjNoHd6w==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"04ef7ea0f2fc2bda6864905f60fb1736d6233c4e6e337a9e7a14f7685716e0b2133a5fa24aa869d1a6f38d1da758150d8c865e2978c0116059eb85a33681ddeb\",\"name\":\"@rolldown/binding-linux-arm64-musl\",\"version\":\"1.1.3\"},\"@rolldown__binding-linux-ppc64-gnu-1.1.3.tgz\":{\"integrity\":\"f3VpLB1vQ0Eo6ecr/6cekLnvYMFF4YBFoVGkfkvPLq1bAkbAwHYQPZKoAmG6OJyTcxxoC+AvezGx/S1obNC0Mw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"7f75692c1d6f434128e9e72bffa71e90b9ef60c145e18045a151a47e4bcf2ead5b0246c0c076103d92a80261ba389c93731c680be02f7b31b1fd2d686cd0b433\",\"name\":\"@rolldown/binding-linux-ppc64-gnu\",\"version\":\"1.1.3\"},\"@rolldown__binding-linux-s390x-gnu-1.1.3.tgz\":{\"integrity\":\"AmurZ26Pqx/RI9N1gzEOCklkKXl927yjfXWUUS0O7Puh8ARM/Ob8qfrD3qnWksScdw6cSrW5PSHE9DyLu7+PtA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"026bab676e8fab1fd123d37583310e0a496429797ddbbca37d7594512d0eecfba1f0044cfce6fca9fac3dea9d692c49c770e9c4ab5b93d21c4f43c8bbbbf8fb4\",\"name\":\"@rolldown/binding-linux-s390x-gnu\",\"version\":\"1.1.3\"},\"@rolldown__binding-linux-x64-gnu-1.1.3.tgz\":{\"integrity\":\"JJpqs8bRGITDOdbkNKnlojzBabbOHrqjSvDr0IVsZObE1lBcPjxItUEY9eWIDbxaJ3cGrXPWGfGkIxFijg/URg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"249a6ab3c6d11884c339d6e434a9e5a23cc169b6ce1ebaa34af0ebd0856c64e6c4d6505c3e3c48b54118f5e5880dbc5a277706ad73d619f1a42311628e0fd446\",\"name\":\"@rolldown/binding-linux-x64-gnu\",\"version\":\"1.1.3\"},\"@rolldown__binding-linux-x64-musl-1.1.3.tgz\":{\"integrity\":\"rSJcdjPxzA/by/6/rYs+v+bXU7UjvnbUWz8MJb6kh6+knqB1dCrtHg0uu7C/4haqJvqdkYHQ5IGn+tCH9GLW/g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"ad225c7633f1cc0fdbcbfebfad8b3ebfe6d753b523be76d45b3f0c25bea487afa49ea075742aed1e0d2ebbb0bfe216aa26fa9d9181d0e481a7fad087f462d6fe\",\"name\":\"@rolldown/binding-linux-x64-musl\",\"version\":\"1.1.3\"},\"@rolldown__binding-openharmony-arm64-1.1.3.tgz\":{\"integrity\":\"hQ3/PYkDJICgevvyNcVrihVeqq7k1Pp3VZ9lY+dauAYUJKO+auqApvANhvR1An9BhmqYKvW2Mu1F9u4DXSMLxQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"850dff3d89032480a07afbf235c56b8a155eaaaee4d4fa77559f6563e75ab8061424a3be6aea80a6f00d86f475027f41866a982af5b632ed45f6ee035d230bc5\",\"name\":\"@rolldown/binding-openharmony-arm64\",\"version\":\"1.1.3\"},\"@rolldown__binding-wasm32-wasi-1.1.3.tgz\":{\"integrity\":\"Elcv/BtML9lXrV6JuKITc/grN2kYV9gjsQpW8Jfw4ioK0TOkjBjye0nnyqQNy9STNaI20lXNaQBRrD5gSgR0Yg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"12572ffc1b4c2fd957ad5e89b8a21373f82b37691857d823b10a56f097f0e22a0ad133a48c18f27b49e7caa40dcbd49335a236d255cd690051ac3e604a047462\",\"name\":\"@rolldown/binding-wasm32-wasi\",\"version\":\"1.1.3\"},\"@rolldown__binding-win32-arm64-msvc-1.1.3.tgz\":{\"integrity\":\"2DrEfhluH9yhiaFApmsjsjwrSYbNcY1oFTzYSP1a535jDbV98zCFanA/96TBUd0iDFcxGmw9QRExwGCXz3U+/g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"d83ac47e196e1fdca189a140a66b23b23c2b4986cd718d68153cd848fd5ae77e630db57df330856a703ff7a4c151dd220c57311a6c3d411131c06097cf753efe\",\"name\":\"@rolldown/binding-win32-arm64-msvc\",\"version\":\"1.1.3\"},\"@rolldown__binding-win32-x64-msvc-1.1.3.tgz\":{\"integrity\":\"OL4OMk7UPXOeVGGd3qo5zJyPIljf4AFgk5QAkPPS+OoLuOOozhuaQGC18MxVTnw/06q93gShAJzlwnSCY9YtqA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"38be0e324ed43d739e54619ddeaa39cc9c8f2258dfe0016093940090f3d2f8ea0bb8e3a8ce1b9a4060b5f0cc554e7c3fd3aabdde04a1009ce5c2748263d62da8\",\"name\":\"@rolldown/binding-win32-x64-msvc\",\"version\":\"1.1.3\"},\"@rolldown__pluginutils-1.0.1.tgz\":{\"integrity\":\"2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"da3f5b1ade4987c863faf3ed8333ed97bda3d324711c0cae9a8a3a4cd7c08ec2c1d3852da52bcf6cf703701331cfb9fef42601d1cd46c501716118368e29aa1b\",\"name\":\"@rolldown/pluginutils\",\"version\":\"1.0.1\"},\"@sindresorhus__is-4.6.0.tgz\":{\"integrity\":\"t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"b74f6f48ddcc75fb32087a057134421ff894b46ece2740ac8f307c72302629cfef6bf90881e0c8fd3c6c8a0767704ff86deef7e26d1cbc863035a5788b65ea03\",\"name\":\"@sindresorhus/is\",\"version\":\"4.6.0\"},\"@standard-schema__spec-1.1.0.tgz\":{\"integrity\":\"l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"976685cb98c02e19e21b91e0aab0fa8d72e2feb516acabea37fa89c7aca826c80a85b95577e8aaa94e110976af9bf8cf8adc83a394c2bca327a632a73ab8b2d3\",\"name\":\"@standard-schema/spec\",\"version\":\"1.1.0\"},\"@svelte-put__shortcut-4.2.0.tgz\":{\"integrity\":\"hqNLo4yEc++SLgAkZUvuwMxIAsii9qjQtTuzfcYVf3xRxa+0HFcfaWFK7LdU3l+15s9SYVNbPB0qQj9CHFqSuw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"86a34ba38c8473ef922e0024654beec0cc4802c8a2f6a8d0b53bb37dc6157f7c51c5afb41c571f69614aecb754de5fb5e6cf5261535b3c1d2a423f421c5a92bb\",\"name\":\"@svelte-put/shortcut\",\"version\":\"4.2.0\"},\"@sveltejs__acorn-typescript-1.0.10.tgz\":{\"integrity\":\"4WfKk68eTih+MiJD4fSbxN7E8kVBmTMPWHUPYjvl2N0rMs53YLTT8/YjKU5Dtnz5LqDjl7LEw4U7lXR2W3J5WA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"e167ca93af1e4e287e322243e1f49bc4dec4f2454199330f58750f623be5d8dd2b32ce7760b4d3f3f623294e43b67cf92ea0e397b2c4c3853b9574765b727958\",\"name\":\"@sveltejs/acorn-typescript\",\"version\":\"1.0.10\"},\"@sveltejs__load-config-0.2.0.tgz\":{\"integrity\":\"1LgZ/qUqSoq+QorD83lk2hka79Px0wXNW2q5V1nZlxGhQgw1jrsIbVz5YiCeucVLo4XvFLjXukUaQjIiqowkcg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"d4b819fea52a4a8abe428ac3f37964da191aefd3f1d305cd5b6ab95759d99711a1420c358ebb086d5cf962209eb9c54ba385ef14b8d7ba451a423222aa8c2472\",\"name\":\"@sveltejs/load-config\",\"version\":\"0.2.0\"},\"@sveltejs__vite-plugin-svelte-7.1.2.tgz\":{\"integrity\":\"DrUBA2UXRfDmUX/ZTiEopd3X40yavsJF1FX2RygcuIScHL7o5YX1fMvoYnDhjeJQC4weCOklirpNWlcb2NiSeA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"0eb50103651745f0e6517fd94e2128a5ddd7e34c9abec245d455f647281cb8849c1cbee8e585f57ccbe86270e18de2500b8c1e08e9258aba4d5a571bd8d89278\",\"name\":\"@sveltejs/vite-plugin-svelte\",\"version\":\"7.1.2\"},\"@szmarczak__http-timer-4.0.6.tgz\":{\"integrity\":\"4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"e0101f7f29183a03bee67cc1598c04dd6f74b0180b26850f45659c2fcc25ca233c201f22a49cf750c27d29741dd512905e92a9f13bad9fcd0766d5acbb6bbbeb\",\"name\":\"@szmarczak/http-timer\",\"version\":\"4.0.6\"},\"@tsconfig__svelte-5.0.8.tgz\":{\"integrity\":\"UkNnw1/oFEfecR8ypyHIQuWYdkPvHiwcQ78sh+ymIiYoF+uc5H1UBetbjyqT+vgGJ3qQN6nhucJviX6HesWtKQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"524367c35fe81447de711f32a721c842e5987643ef1e2c1c43bf2c87eca622262817eb9ce47d5405eb5b8f2a93faf806277a9037a9e1b9c26f897e877ac5ad29\",\"name\":\"@tsconfig/svelte\",\"version\":\"5.0.8\"},\"@tybys__wasm-util-0.10.3.tgz\":{\"integrity\":\"F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"1777e8d4c62b44960bdf3111d0e50e9a4bad8ebd55a76de6eceb12829ee7ab848fe8ea97e82ff9e971483c09796eddf3681463996ed21b3deeffa2f016961c3a\",\"name\":\"@tybys/wasm-util\",\"version\":\"0.10.3\"},\"@types__cacheable-request-6.0.3.tgz\":{\"integrity\":\"IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"210dc46d3cc6c488a06f5237a8f65cd6b5899c7d019922afe506136a5130c1e16fc810cb4807b6e333f495efe1ca2ede7067d9565215020e0166a6fc581c0aab\",\"name\":\"@types/cacheable-request\",\"version\":\"6.0.3\"},\"@types__chai-5.2.3.tgz\":{\"integrity\":\"Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"330e79f28780f5f15bbfae7fcb8987b570ecf5b3e714c6402ff8f174f154a4e1c72175fdd667201076d2e4b6a1afea7064547c03b19095e456788e9c1850b650\",\"name\":\"@types/chai\",\"version\":\"5.2.3\"},\"@types__d3-color-3.1.3.tgz\":{\"integrity\":\"iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"88ef74b1cb61f5601b9a0bfba20a2ae7b3bd6292a61416e6a04a021c3076c4c058d3efca56ba806820f2084d7a754b2978ebc8c4515123ed2c12da83ab2d9be0\",\"name\":\"@types/d3-color\",\"version\":\"3.1.3\"},\"@types__d3-drag-3.0.7.tgz\":{\"integrity\":\"HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"1c4de354a97353d01a31accdb9fa28449e59a5698b22873dd00dfb594d893267aadbcc35150a8266cc07677c51f92bb161fb731eae9653a2891efab12b34f1c5\",\"name\":\"@types/d3-drag\",\"version\":\"3.0.7\"},\"@types__d3-interpolate-3.0.4.tgz\":{\"integrity\":\"mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"9a02cf11396ba55575611248825af8133e3b83b6318e5d658fb60ab223026f6ed5247f56f0d54ce816fd77c924a46fee0104b90266c0e3cab6200a2528aa3530\",\"name\":\"@types/d3-interpolate\",\"version\":\"3.0.4\"},\"@types__d3-selection-3.0.11.tgz\":{\"integrity\":\"bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"6e1017bb6dc3256b2b238e7169f629910e0db5c28cc169c00bfbcaaddda5fa7c4c16ebce4f75cc613223da8a6ff2fabc00ee5887b41a73f9d278fff7ce34cad3\",\"name\":\"@types/d3-selection\",\"version\":\"3.0.11\"},\"@types__d3-transition-3.0.9.tgz\":{\"integrity\":\"uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"b994b9b217f1ccedeb1a5bb4702ddb8e63052ac5eff9299965c829d0a0f6dadb38b865e9e445581b3bbfd1877065e2a675d85c01c718b511092a43df5e466e0a\",\"name\":\"@types/d3-transition\",\"version\":\"3.0.9\"},\"@types__d3-zoom-3.0.8.tgz\":{\"integrity\":\"iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"8aa302e3f6251424a53bcfb6222d461869620806385dd786ef8f30e6f4146debe56c3bb4cd28c7ffe8e88e8ad05412bfb1ed23e8350534f0464aa0f76166270f\",\"name\":\"@types/d3-zoom\",\"version\":\"3.0.8\"},\"@types__debug-4.1.13.tgz\":{\"integrity\":\"KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"2925609909b33303e59ad9633a899aca847cf56e05ca70808b713c3cfb3bbe60d53def38853faf18f2a425f4e19265ecd31d2301a6bd53cb96f1b6dfc92d9f5b\",\"name\":\"@types/debug\",\"version\":\"4.1.13\"},\"@types__deep-eql-4.0.2.tgz\":{\"integrity\":\"c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"73d87d75554c8a030f7386f04ef0b9771aada8967040f78fb168cf96948e9e88dba2bea91aa764e78d657c0ec0a8542be6907505176ad23b98f5d6fcd41c3217\",\"name\":\"@types/deep-eql\",\"version\":\"4.0.2\"},\"@types__emscripten-1.39.10.tgz\":{\"integrity\":\"TB/6hBkYQJxsZHSqyeuO1Jt0AB/bW6G7rHt9g7lML7SOF6lbgcHvw/Lr+69iqN0qxgXLhWKScAon73JNnptuDw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"4c1ffa841918409c6c6474aac9eb8ed49b74001fdb5ba1bbac7b7d83b94c2fb48e17a95b81c1efc3f2ebfbaf62a8dd2ac605cb856292700a27ef724d9e9b6e0f\",\"name\":\"@types/emscripten\",\"version\":\"1.39.10\"},\"@types__estree-1.0.9.tgz\":{\"integrity\":\"GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"1a174f832d5e978fc898fd395f4e54c38730dbf33ddc10949a712f599352b650b310a304e05924f98a680393a21cd426a12ec269f6fc5dadcfc9af26d50af37a\",\"name\":\"@types/estree\",\"version\":\"1.0.9\"},\"@types__fs-extra-9.0.13.tgz\":{\"integrity\":\"nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"9c49f007efb5bb99550ccd94238735fb947e15868a7da0334b83a87287229a3566de7430dd3bb31f950db2872b71305b8677ab6e5c878f8038f6a5db22265da4\",\"name\":\"@types/fs-extra\",\"version\":\"9.0.13\"},\"@types__http-cache-semantics-4.2.0.tgz\":{\"integrity\":\"L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"2f72e08a62c75ed1a45a290a9ec3e0d3f545c7d38665a0be78dd6ee2bf8e0755d1a87de6781200542db3af559d307f911e69d192a962400387349fc4d23fded1\",\"name\":\"@types/http-cache-semantics\",\"version\":\"4.2.0\"},\"@types__keyv-3.1.4.tgz\":{\"integrity\":\"BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"050e5a64d482a63ec3e8ada4b2b4424e62912c4a673ef58388b3dfa06ca167efbc62d88af5dff70c128f260af2df9f57fcfd4f7ebbb2630be7bf0163b8488422\",\"name\":\"@types/keyv\",\"version\":\"3.1.4\"},\"@types__ms-2.1.0.tgz\":{\"integrity\":\"GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"1ac0822190c4fe9de2f7abed12ac7eedd054197adcef37922b7c303c721a453852fbd3a15885d1ab3b3877a93549553c83dd43acd456c56506869e4a5d06f654\",\"name\":\"@types/ms\",\"version\":\"2.1.0\"},\"@types__node-22.20.0.tgz\":{\"integrity\":\"QWlFW2wf3nTjC13/DqRnBpR4ZO36VJH/JVBkA/vcnmbTBNQIlnObqyqZE1tUR7+Ni23Lda8R1BxMfbXRpCUx5g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"4169455b6c1fde74e30b5dff0ea46706947864edfa5491ff25506403fbdc9e66d304d40896739bab2a99135b5447bf8d8b6dcb75af11d41c4c7db5d1a42531e6\",\"name\":\"@types/node\",\"version\":\"22.20.0\"},\"@types__node-26.1.0.tgz\":{\"integrity\":\"O0A1G3xPGy4w7AgQdAQYUlQ+BKk2Oovw8eRpofyp5KdBZULnbe+WqaOVNrm705SHphCiG4XHsACrSmPu1f+Kgw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"3b40351b7c4f1b2e30ec081074041852543e04a9363a8bf0f1e469a1fca9e4a7416542e76def96a9a39536b9bbd39487a610a21b85c7b000ab4a63eed5ff8a83\",\"name\":\"@types/node\",\"version\":\"26.1.0\"},\"@types__responselike-1.0.3.tgz\":{\"integrity\":\"H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"1fff8bf94913577dee7f8f4f1f9a420140553cd8f69c30574cdfaa4b574ec32ca0db897709c89c89c080edc6be1ccbc9059705825e6bf1ef9147a7a5b1be0bcb\",\"name\":\"@types/responselike\",\"version\":\"1.0.3\"},\"@types__trusted-types-2.0.7.tgz\":{\"integrity\":\"ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"49c68f767d5d41cce06e5d101537933a65471542eddfde17260390368c95859eabdaf2e730b25f04f779dd2079d93ff71b7e95235fe0d8c65a5f47300ee5ec7f\",\"name\":\"@types/trusted-types\",\"version\":\"2.0.7\"},\"@types__ws-8.18.1.tgz\":{\"integrity\":\"ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"4e1545e83095840f24506cbe69acc543891743b1354f2ec0df2a4539ed0870957c3bf339d751bdf405b6e22acaad6e7a5ade38c86f7e8a3f056aaa011a4b815e\",\"name\":\"@types/ws\",\"version\":\"8.18.1\"},\"@vitest__expect-4.1.9.tgz\":{\"integrity\":\"vl/rYsUKcBr3SnQn166+XR5ZQcgMx3DQhFWdfli/cWpLnLUmbxZvyrJZotLFUryib+LtArYMSTJ5RbQ57ZqrlA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"be5feb62c50a701af74a7427d7aebe5d1e5941c80cc770d084559d7e58bf716a4b9cb5266f166fcab259a2d2c552bca26fe2ed02b60c49327945b439ed9aab94\",\"name\":\"@vitest/expect\",\"version\":\"4.1.9\"},\"@vitest__mocker-4.1.9.tgz\":{\"integrity\":\"EVkXzBjrPGM+cK8/ANWgBrkUCfJfb38/EfTSO8h7pWvKkyPkpWxvR7BkD2MyItMF62C97zAEoqdpUixwR/e+Rw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"115917cc18eb3c633e70af3f00d5a006b91409f25f6f7f3f11f4d23bc87ba56bca9323e4a56c6f47b0640f633222d305eb60bdef3004a2a769522c7047f7be47\",\"name\":\"@vitest/mocker\",\"version\":\"4.1.9\"},\"@vitest__pretty-format-4.1.9.tgz\":{\"integrity\":\"s0iufns3iIFitdgm+YR7g1whCAaGtXz459VS9/PqyKDEEFgYIhsHOQmXgIgDuYCt7DeQmiZT0Qe2OA2p4ZPu5A==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"b348ae7e7b37888162b5d826f9847b835c21080686b57cf8e7d552f7f3eac8a0c4105818221b07390997808803b980adec37909a2653d107b6380da9e193eee4\",\"name\":\"@vitest/pretty-format\",\"version\":\"4.1.9\"},\"@vitest__runner-4.1.9.tgz\":{\"integrity\":\"KXLMDtc7oe70+3mJfGrPUWPesswH+3sTxAMAMl8DG7I8IUQT4XW718dY5ID3vPUcmlu27CcKfY4P3h3I29SLJg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"2972cc0ed73ba1eef4fb79897c6acf5163deb2cc07fb7b13c40300325f031bb23c214413e175bbd7c758e480f7bcf51c9a5bb6ec270a7d8e0fde1dc8dbd48b26\",\"name\":\"@vitest/runner\",\"version\":\"4.1.9\"},\"@vitest__snapshot-4.1.9.tgz\":{\"integrity\":\"Jc7RKGNBo8Z28WYIm0Niej4xdSPByRf6mU58VpHQkd6Zh05rlnA+twjbK5HyeIGHxrzsc3mJgS43uM0CZKzaIA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"25ced1286341a3c676f166089b43627a3e317523c1c917fa994e7c5691d091de99874e6b96703eb708db2b91f2788187c6bcec737989812e37b8cd0264acda20\",\"name\":\"@vitest/snapshot\",\"version\":\"4.1.9\"},\"@vitest__spy-4.1.9.tgz\":{\"integrity\":\"fHpsS6mIi+PiEW+vcRVOMkX1oSaPKne3VOclSFICPcGOmfKgXPU5iAah+wcNcj2xPrCCmfq99IDGf+EojhhvhA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"7c7a6c4ba9888be3e2116faf71154e3245f5a1268f2a77b754e7254852023dc18e99f2a05cf5398806a1fb070d723db13eb08299fabdf480c67fe1288e186f84\",\"name\":\"@vitest/spy\",\"version\":\"4.1.9\"},\"@vitest__utils-4.1.9.tgz\":{\"integrity\":\"A51o8ymO5PpqlWNnBP9ZHPXDIpuMtTLlGSjN7la4US+LJzoUMyhwjA5QXlm39JexgwHKW4Xjs8Z2d3dLCXOeuA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"039d68f3298ee4fa6a95636704ff591cf5c3229b8cb532e51928cdee56b8512f8b273a143328708c0e505e59b7f497b18301ca5b85e3b3c67677774b09739eb8\",\"name\":\"@vitest/utils\",\"version\":\"4.1.9\"},\"@xmldom__xmldom-0.8.15.tgz\":{\"integrity\":\"/5NV/vDALVFDXgLmfsy9TRCBlKwO2LNBFzpzvb9iIj+jR+eSc6DLYYvVOdivT/jm7MtU6TebYuRmzEOI7w40UA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"ff9355fef0c02d51435e02e67eccbd4d108194ac0ed8b341173a73bdbf62223fa347e79273a0cb618bd539d8af4ff8e6eccb54e9379b62e466cc4388ef0e3450\",\"name\":\"@xmldom/xmldom\",\"version\":\"0.8.15\"},\"@xyflow__svelte-1.6.1.tgz\":{\"integrity\":\"o84RpjWMAs5tXjYPj6PUjMccBgeF4TFA8DllBqMSbnhJD3ZxLhttp4NmdHZAIM1T5bK5NAzCat+M37uT/9+rTw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"a3ce11a6358c02ce6d5e360f8fa3d48cc71c060785e13140f0396506a3126e78490f76712e1b6da7836674764020cd53e5b2b9340cc26adf8cdfbb93ffdfab4f\",\"name\":\"@xyflow/svelte\",\"version\":\"1.6.1\"},\"@xyflow__system-0.0.78.tgz\":{\"integrity\":\"lY0z2qP33fUhTva9Vaxrk0lqZta2pkbxB1trHAx1omnJqRtPvDlAQYV2r5fhS6AdpkulYmbNW0svy+A4/t4B/g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"958d33daa3f7ddf5214ef6bd55ac6b93496a66d6b6a646f1075b6b1c0c75a269c9a91b4fbc3940418576af97e14ba01da64ba56266cd5b4b2fcbe038fede01fe\",\"name\":\"@xyflow/system\",\"version\":\"0.0.78\"},\"abbrev-4.0.0.tgz\":{\"integrity\":\"a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"6b5c1f97268bd2d1ed25298b48e5726d8872db6bd18a1e1e76e861ae472382b5869d17eb66da2f2761518f1b93b64923e3b3bf6da7f447ce905393ae629cfc7c\",\"name\":\"abbrev\",\"version\":\"4.0.0\"},\"accepts-2.0.0.tgz\":{\"integrity\":\"5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"e5cbe0e82b4ac1f81d995a98d562225ca7374356e446a18b8bed96ffa6a8fba63b82efd10b046e021184ce1e41e0a96ccd2b932e0658baa16aa396c89a334a9e\",\"name\":\"accepts\",\"version\":\"2.0.0\"},\"acorn-8.17.0.tgz\":{\"integrity\":\"xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"c5141b0dbf419f00da7d8367e95c25f37f436158ea5d86f55d51ad58067591c0dcea2c002f8860dc1d5d665462b8434578ed87e778051b78a7eb6d4074445502\",\"name\":\"acorn\",\"version\":\"8.17.0\"},\"agent-base-7.1.4.tgz\":{\"integrity\":\"MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"32703e613f1fc1f24f801c779bad0c36a6a49b7d173a4c88a07d72ea1b9342f0b43f0646ee48bc35a70b05cacf6cda28f2f119cbb269ba4efe8cc3be094a2f4d\",\"name\":\"agent-base\",\"version\":\"7.1.4\"},\"ajv-8.20.0.tgz\":{\"integrity\":\"Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"4e16e58be3a53a3fa230f60505505f2773a60809da4b2367e0cd6fcfd4fa1a46b926df5b6bf1c8479ea3a32eb9b58ea4c7f142179557341f35f58eff194ac118\",\"name\":\"ajv\",\"version\":\"8.20.0\"},\"ajv-formats-3.0.1.tgz\":{\"integrity\":\"8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"f2252a979d04511fae51c7514371c3a9ae84572a3776870bf20e5627714d7169aeeb621b90652e7bfa44c8b056f1518a2ae7133e0a9e92ce1f214d43038ca8c1\",\"name\":\"ajv-formats\",\"version\":\"3.0.1\"},\"ansi-regex-5.0.1.tgz\":{\"integrity\":\"quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"aae2505e54d25062f62c7f52517a3c570b18e2ca1a9e1828e8b3529bce04d4b05c13cb373b4c29762473c91f73fd9649325316bf7eea38e6fda5d26531410a15\",\"name\":\"ansi-regex\",\"version\":\"5.0.1\"},\"ansi-styles-4.3.0.tgz\":{\"integrity\":\"zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"cdb07dac22404f5adb8e25436f686a2851cd60bc60b64f0d511c59dc86700f717a36dc5b5d94029e74a2d4b931f880e885d3e5169db6db05402c885e64941212\",\"name\":\"ansi-styles\",\"version\":\"4.3.0\"},\"app-builder-lib-26.15.3.tgz\":{\"integrity\":\"2VnyWkqsP5v5XbBhL3tD5Syx8iNPBYsoU7kY4S2fz7wg8Rj/nztWKCUzGKaFRTv0Xwf3/H058CR1Kvtd/3lRow==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"d959f25a4aac3f9bf95db0612f7b43e52cb1f2234f058b2853b918e12d9fcfbc20f118ff9f3b5628253318a685453bf45f07f7fc7d39f024752afb5dff7951a3\",\"name\":\"app-builder-lib\",\"version\":\"26.15.3\"},\"argparse-2.0.1.tgz\":{\"integrity\":\"8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"f3ef56a9e6db173a57f4e47e59ae8edbd6ac22881e44ccdc1ad00835da4c1c7c80835d1fd3969215505b704a867ff3d7c35123019faadbf6c4060dc3beeacadd\",\"name\":\"argparse\",\"version\":\"2.0.1\"},\"aria-query-5.3.1.tgz\":{\"integrity\":\"Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"67f65e3a0565edb712619feefeb8747cea6f129abffcb66675b917c9ceecc95ce33c085f39af5e6ec7534a31010d4e2fb399c2f7c29f76e8f5b85a34ab2113de\",\"name\":\"aria-query\",\"version\":\"5.3.1\"},\"asn1js-3.0.10.tgz\":{\"integrity\":\"S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"4b6b3768ecad88a74545dba5c36a8f139d4cce3cd53a2b29a5c56fee354547e2b0d24c70bc5ac371803487b35da9b9a3d0790c2176166a88fb7e58bc920c757a\",\"name\":\"asn1js\",\"version\":\"3.0.10\"},\"assertion-error-2.0.1.tgz\":{\"integrity\":\"Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"2338bc45071f7ea09e3558058a02a58b5b2c92521ba479c261ce809275c662807a82b26ac9e6f2ee3bf5d895108264c09c80e76dc935bb192c4f87733773d604\",\"name\":\"assertion-error\",\"version\":\"2.0.1\"},\"async-3.2.6.tgz\":{\"integrity\":\"htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"86d0940e5c72c822cc81a337c578340b42d6db1a9fb90ea9d39a42108b17bb243e6b592860a4ee04ccd13709b26df2e0bc90cc774af52d39f8f84d138ba0b600\",\"name\":\"async\",\"version\":\"3.2.6\"},\"async-exit-hook-2.0.1.tgz\":{\"integrity\":\"NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"356d9c5fc9b543b28f03b6b933650b41e676c11e6a2393c06f0e4bd1438cc5d8a8564f4f319d21d539b264490f62b0af6230e51480aeb0ebb576510a00079707\",\"name\":\"async-exit-hook\",\"version\":\"2.0.1\"},\"asynckit-0.4.0.tgz\":{\"integrity\":\"Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"39e8bd387e2d461d18a94dc6c615fbf5d33f9b0560bdb64969235a464f9bb21923d12e5c7c772061a92b7818eb1f06ad5ca6f3f88a087582f1aca8a6d8c8d6d1\",\"name\":\"asynckit\",\"version\":\"0.4.0\"},\"at-least-node-1.0.0.tgz\":{\"integrity\":\"+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"faafedec492fd440d8da5e8675ae8b2e25f5e2b53d4d5db459ade87de426c0f1596ce328f435eb2db3a315a69c9645ca5a27486a8a7000e6d00eac16b46523aa\",\"name\":\"at-least-node\",\"version\":\"1.0.0\"},\"aws4-1.13.2.tgz\":{\"integrity\":\"lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"9477badb3bdb4c1e5e100054562fc0c1587464a63dacc3038669be79ecaeb9441b437f89f9f38d550399ca3f8376bbc3e01637dee6278b2449e142486922807f\",\"name\":\"aws4\",\"version\":\"1.13.2\"},\"axobject-query-4.1.0.tgz\":{\"integrity\":\"qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"a888f41bdc196cc18d2e32e68353d3eafda613d007db3967003243ff6b42e84d348609a150e7c407a82b7873c07cb452b9f1ea44e2144e4c3a13e337947d0f4d\",\"name\":\"axobject-query\",\"version\":\"4.1.0\"},\"balanced-match-1.0.2.tgz\":{\"integrity\":\"3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"de849e50ed13315ebb84dd4099b5ec2b8c9aa94eed8e21e56f144364ea47d0a5bdf82797e1b440697d009f1b74b71d8cae94695b041a3f02252121098585393f\",\"name\":\"balanced-match\",\"version\":\"1.0.2\"},\"balanced-match-4.0.4.tgz\":{\"integrity\":\"BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"04bae011c453c17da8ea01b118e08dc8cbc64a9df96287ee633c3d87520c4d198aaadb40659554ebb6dd6fd3ebdaf50703cfa3de2dad25f8cee82ebee26c864c\",\"name\":\"balanced-match\",\"version\":\"4.0.4\"},\"base64-js-1.5.1.tgz\":{\"integrity\":\"AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"00aa5a6251e7f2de1255b3870b2f9be7e28a82f478bebb03f2f6efadb890269b3b7ca0d3923903af2ea38b4ad42630b49336cd78f2f0cf1abc8b2a68e35a9e58\",\"name\":\"base64-js\",\"version\":\"1.5.1\"},\"bluebird-3.7.2.tgz\":{\"integrity\":\"XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"5e9363e860d0cdd7d6fabd969e7ef189201ded33378f39311970464ed58ab925efd71515f9acf1026f2375664dd3a413424fb63765c1f6344392f6e6426711b6\",\"name\":\"bluebird\",\"version\":\"3.7.2\"},\"body-parser-2.3.0.tgz\":{\"integrity\":\"2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"d9c1a626ea5a36083e414c152c0b9c0ee5aea0c67a117f621c346cc19e65b0d6049b03da4649cc3c22d9cf4ef24f356affcde9e28ff0cdb0d96c1ad3bc619323\",\"name\":\"body-parser\",\"version\":\"2.3.0\"},\"brace-expansion-1.1.18.tgz\":{\"integrity\":\"Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"11d7a9fd7f5f1aa54d9b328156c0d820eb43fb3d6db9ecd5ef42c18dd0acb7d4eabbbea5b27bd1899ea84e27359fefc12305fa4031803bde0f3783764800efb7\",\"name\":\"brace-expansion\",\"version\":\"1.1.18\"},\"brace-expansion-2.1.4.tgz\":{\"integrity\":\"hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"8467d5ccfc6d85b7f7fb6ca383f441b3ad1c074161a814bfcef755ff8c27e3f0663746cd30c1cf73857f05b1627aa7f54ca0061801e76387928da8c29747f65e\",\"name\":\"brace-expansion\",\"version\":\"2.1.4\"},\"brace-expansion-5.0.9.tgz\":{\"integrity\":\"ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"49c43822ebc8105d533253fb66dfaf8c9ffff7394f6f64837315b13376e4f2ceade8619d27b28ed5d09c4e274e3c929e3d6df42c4ff6713ef00b23e1a3dfd6c6\",\"name\":\"brace-expansion\",\"version\":\"5.0.9\"},\"buffer-crc32-0.2.13.tgz\":{\"integrity\":\"VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"54ef47b7ffa9dd237b48a5aa72b804ce319b4522584f1f90d694d00b4c2b5aa1f1d2fa49ada43a1ad1f1f2dbdc835ae52b56f2854e6071cc603a08fb0744c391\",\"name\":\"buffer-crc32\",\"version\":\"0.2.13\"},\"buffer-from-1.1.2.tgz\":{\"integrity\":\"E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"13e5d0091c126da6a20a1b6fea4e83c2073e6f1f81b3abee2891c7979928c7f05a29b8625f3a903b02b870edb6c84946a763829a3c15853dc79b18323c69c97d\",\"name\":\"buffer-from\",\"version\":\"1.1.2\"},\"builder-util-26.15.3.tgz\":{\"integrity\":\"q2hn7Mbo2nFNkVekPiHFx6Nfo3hURmES3tfBn+k5Pqxl2RkmP3QGqZUhH/q9Pch/4G05NRhPjDlVj1O8q4Txvw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"ab6867ecc6e8da714d9157a43e21c5c7a35fa37854466112ded7c19fe9393eac65d919263f7406a995211ffabd3dc87fe06d3935184f8c39558f53bcab84f1bf\",\"name\":\"builder-util\",\"version\":\"26.15.3\"},\"builder-util-runtime-9.7.0.tgz\":{\"integrity\":\"g/kR520giAFYkSXTzcmF3kqQq7wi8F6N6SzeDgZrqTBN+VHdmgWOyTdD1yD7AATDId/yXLvuP34CxW46/BwCdw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"83f911e76d208801589125d3cdc985de4a90abbc22f05e8de92cde0e066ba9304df951dd9a058ec93743d720fb0004c321dff25cbbee3f7e02c56e3afc1c0277\",\"name\":\"builder-util-runtime\",\"version\":\"9.7.0\"},\"bytes-3.1.2.tgz\":{\"integrity\":\"/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"fcd7fb4f2cd3c7a4b7c9124e6ce015efde7aafc72bdbe3a3f000b976df3048fdc1400a1e5f9f0da07c8253c3fccc690d5d2b634d28ba7f33ba174a4175c61b12\",\"name\":\"bytes\",\"version\":\"3.1.2\"},\"bytestreamjs-2.0.1.tgz\":{\"integrity\":\"U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"53567fa1bef557f6d77d5001bcdaff2ae99fe55c9e4110449ba4f16f43d0e92ed5e46a41337c3809bab3ff13c389c479b4dd2ebc389f9e0f02fb9a8409e1b0c9\",\"name\":\"bytestreamjs\",\"version\":\"2.0.1\"},\"cacheable-lookup-5.0.4.tgz\":{\"integrity\":\"2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"dbf90db1c3e1a5cc6b3a280c6736e2585eddcfc8a585bfe72075371326625d65e97aafdabbca89f1585d7ed324b72de7ec68fa1c819a9501bca2204d07700980\",\"name\":\"cacheable-lookup\",\"version\":\"5.0.4\"},\"cacheable-request-7.0.4.tgz\":{\"integrity\":\"v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"bfea7aa2782cae9d324c66c95e38313e8c36f832fddc30123f891708329bf3f6f046db7d384177c218209240e418dce0716cb65da1786bc9d98250bbb8496c72\",\"name\":\"cacheable-request\",\"version\":\"7.0.4\"},\"call-bind-apply-helpers-1.0.2.tgz\":{\"integrity\":\"Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"4a9d5a6e52748af0e44b38dc68977112e9cde7f5ef92c149dac30115fabac74af285057fd9bfcac057b6d5c329987b4f3928a3f0af7dff049fa04b9339b9ae31\",\"name\":\"call-bind-apply-helpers\",\"version\":\"1.0.2\"},\"call-bound-1.0.4.tgz\":{\"integrity\":\"+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"fb2b3df7b53dea9a382b1fc0069042aa103d12ec49690583420ef6f791f8841a61bf72198346e804abb0629b78617a7a319e4099942753fb72313951a5a49e8e\",\"name\":\"call-bound\",\"version\":\"1.0.4\"},\"chai-6.2.2.tgz\":{\"integrity\":\"NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"3543d196e39f3a24ca04abd63ed483e0f845bd60aa3a2d01192b4d5ace7b5fd8eced7193a6b4a6168cf9174b56851e163e335e47d8d7a9d0bbfd4a522539e546\",\"name\":\"chai\",\"version\":\"6.2.2\"},\"chalk-4.1.2.tgz\":{\"integrity\":\"oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"a0a9db845c91217a54b9ecfc881326c846b89db8f820e432ba173fc32f6463bfd654f73020ef5503aebc3eef1190eefed06efa48b44e7b2c3d0a9434eb58b898\",\"name\":\"chalk\",\"version\":\"4.1.2\"},\"chokidar-4.0.3.tgz\":{\"integrity\":\"Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"420ceef247c1be8f9c038f7ada39cfd4a912e83a29e4d4ba83b4792c5609af86fc51bf783cf417524b02c3d3ef5e87973d145d751342e42d4941447648c1ad9c\",\"name\":\"chokidar\",\"version\":\"4.0.3\"},\"chownr-3.0.0.tgz\":{\"integrity\":\"+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"f88c7363d05939077f5ee60f466aef1158c5fe7aa3e64813e2412aed5a1fac3a0cd4cc6846311692b082dc4b4b8b9f5355ac314c09fea2b27015072ba84375fa\",\"name\":\"chownr\",\"version\":\"3.0.0\"},\"chromium-pickle-js-0.2.0.tgz\":{\"integrity\":\"1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"d51e45868fa306ad030f276dfbfbc75a3e4a24d24229d01128e0b06547a7f3823906b796a0ba912c0347d54f3b789cb5b620123ed3271aa249ab466c2e844f3b\",\"name\":\"chromium-pickle-js\",\"version\":\"0.2.0\"},\"ci-info-4.3.1.tgz\":{\"integrity\":\"Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"59dcb6220bbc39c069236a5978f679a168cf0b7f2d983571e562945cac252d8900d28ce8f39b0bb0bbe405b067fec65a482305386649d787ef5bdb79fddee474\",\"name\":\"ci-info\",\"version\":\"4.3.1\"},\"ci-info-4.4.0.tgz\":{\"integrity\":\"77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"efb3d2c1eadc09953615ce2c5fde1e17c93c3f1b5ee890302f8fc80992c58c92ea7a0b3b902b80b2aaa3ffbd0d405e93bc3a6016392e6d0076156d9965d76f42\",\"name\":\"ci-info\",\"version\":\"4.4.0\"},\"cliui-8.0.1.tgz\":{\"integrity\":\"BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"05278d9f2bacef90b8fff350f6042dd7f72c4d7ca8ffc49bf9a7cb024cc0a6d16e32ca1df4716890636e759a62fe8415ef786754afac47ee4f55131df83afb61\",\"name\":\"cliui\",\"version\":\"8.0.1\"},\"clone-response-1.0.3.tgz\":{\"integrity\":\"ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"44ea0bf788c91f675454c2f663fe4f10335a48781e39d48389c5324bb8b3705eb71bab1373f1538cbb9be1bf0897d4bc4b46de39f62dd13680e6abc52bec34c0\",\"name\":\"clone-response\",\"version\":\"1.0.3\"},\"clsx-2.1.1.tgz\":{\"integrity\":\"eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"7989b441606d52b0566561b4777f3a386030d7a67df793e2395a3607b6e35926c779d1a5e5ed1959aabae6438681448d7ac1080e407d2126d383f24af5d84264\",\"name\":\"clsx\",\"version\":\"2.1.1\"},\"color-convert-2.0.1.tgz\":{\"integrity\":\"RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"4511023ec8fb8aeff16f9a0a61cb051d2a6914d9ec8ffe763954d129be333f9a275f0545df3566993a0d70e7c60be0910e97cafd4e7ce1f320dfc64709a12529\",\"name\":\"color-convert\",\"version\":\"2.0.1\"},\"color-name-1.1.4.tgz\":{\"integrity\":\"dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"74ecbedc0b96ddadb035b64722e319a537208c6b8b53fb812ffb9b71917d3976c3a3c7dfe0ef32569e417f479f4bcb84a18a39ab8171edd63d3a04065e002c40\",\"name\":\"color-name\",\"version\":\"1.1.4\"},\"combined-stream-1.0.8.tgz\":{\"integrity\":\"FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"1503783117ee25e1dfedc05b04c2455e12920eafb690002b06599106f72f144e410751d9297b5214048385d973f73398c3187c943767be630e7bffb971da0476\",\"name\":\"combined-stream\",\"version\":\"1.0.8\"},\"commander-5.1.0.tgz\":{\"integrity\":\"P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"3f40b2b0d0d0eebb55c3840842d9be311c55ebabca152be5b10bc6617656477a855348e530a1d9659830f1efbc0d26a1e140ca32a9e49d10d0cfec6e41743f66\",\"name\":\"commander\",\"version\":\"5.1.0\"},\"compare-version-0.1.2.tgz\":{\"integrity\":\"pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"a490e1e7fe30ac49d75ff556459bebb8018793329daf8eb3d753a54cf37e56b0139565a148a7b03422757eeb423b90bb7890779cf305640d4b798b5c15ba19d8\",\"name\":\"compare-version\",\"version\":\"0.1.2\"},\"concat-map-0.0.1.tgz\":{\"integrity\":\"/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"fd2aefe1db30c903417e8846a73f68e986f71b3dd2ad40ea047e6b4ee84647b6a1b656d82a7571c366c214c4658da03b1171da5d9f30b07768745bdb9212a6aa\",\"name\":\"concat-map\",\"version\":\"0.0.1\"},\"content-disposition-1.1.0.tgz\":{\"integrity\":\"5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"e634421fd67ff8344feeb92f63cdc1fb2188197f7a3987499b39e0aa7c364814b1a8214f774c36926dece626b0a465fc92b9f0486985d055b9361af41df6a2de\",\"name\":\"content-disposition\",\"version\":\"1.1.0\"},\"content-type-1.0.5.tgz\":{\"integrity\":\"nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"9d38ea7dc045122a4a7570afe180d05827e670b64a9bcd65745d29028a53bf2ac51956dc47a3ff54001de46ecdfb4b53afc42a894d2d15a743e852b836d27038\",\"name\":\"content-type\",\"version\":\"1.0.5\"},\"content-type-2.0.0.tgz\":{\"integrity\":\"j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"8ff3bf77b19c642c8d97bfe1c1901beb4eabcea932bda0dcb4b99c91bc4bcc7bc50734c91ee1847687404dc3f7c884680eb2c790801326ebf36c5969fe48b671\",\"name\":\"content-type\",\"version\":\"2.0.0\"},\"convert-source-map-2.0.0.tgz\":{\"integrity\":\"Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"2afa78e7d1eb576144275080b22d4abbe318de46ac1f5f53172913cf6c5698c7aae9b936354dd75ef7c9f90eb59b4c64b56c2dfb51d261fdc966c4e6b3769126\",\"name\":\"convert-source-map\",\"version\":\"2.0.0\"},\"cookie-0.7.2.tgz\":{\"integrity\":\"yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"ca48b95e72ae7fbe74979d2e193965b7a90a20b6389d0d5e34841ab685c40726797568272aa6e7aa64eb044e41e0dee5acc24a436cad58c8933b6a34bfa130ff\",\"name\":\"cookie\",\"version\":\"0.7.2\"},\"cookie-signature-1.2.2.tgz\":{\"integrity\":\"D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"0fbeae53bdee9525eb0f5517178284d93331555c21b270a07c0c9383d93c3fa2866639572ab38b7b874940a2370718b9c237ac6681572561253560633d931b86\",\"name\":\"cookie-signature\",\"version\":\"1.2.2\"},\"cordis-4.0.0-rc.8.tgz\":{\"integrity\":\"vXaYK6XZJlIFTnODp4Rd973Qnd/gm3cwFzWsMTaeu6cQQheA7N+aA0GqHRNl0cFIrxMXWU8dst1ZXHlUQvfyRw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"bd76982ba5d92652054e7383a7845df7bdd09ddfe09b77301735ac31369ebba710421780ecdf9a0341aa1d1365d1c148af1317594f1db2dd595c795442f7f247\",\"name\":\"cordis\",\"version\":\"4.0.0-rc.8\"},\"core-util-is-1.0.3.tgz\":{\"integrity\":\"ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"65006f8b50dca49e060ea6a78ee719d878f7c043b9a590d2f3d0566e472bbddc64b09a2bc140c365a997f65745929f5ac369660432e090e6c40380d6349f4561\",\"name\":\"core-util-is\",\"version\":\"1.0.3\"},\"cors-2.8.6.tgz\":{\"integrity\":\"tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"b49b590411c0eaf8c801a17a12721aaba95a0413fd6aafd8de8b9526311fa076d105c1c100761c321ff0f0b0eb9363ef20c32af209a8a5ae43e15f1199baf11b\",\"name\":\"cors\",\"version\":\"2.8.6\"},\"cosmokit-1.8.1.tgz\":{\"integrity\":\"PDBv4l90xZKrUsZ0vtoycgZpO/j4iFsqJXrAxsyBDsnQRI7ZMJXIjgDJsKNjd5L8jnVnnlrDCdhkFbTncgCVjQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"3c306fe25f74c592ab52c674beda327206693bf8f8885b2a257ac0c6cc810ec9d0448ed93095c88e00c9b0a3637792fc8e75679e5ac309d86415b4e77200958d\",\"name\":\"cosmokit\",\"version\":\"1.8.1\"},\"cross-spawn-7.0.6.tgz\":{\"integrity\":\"uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"b95d903963f69d6ceccb668ca7c69189b862f5d9731791e0879487681f4e893184c834e2249cb1d2ecb9d505ddc966ed00736e6b85c9cd429c6b73b3294777bc\",\"name\":\"cross-spawn\",\"version\":\"7.0.6\"},\"d3-color-3.1.0.tgz\":{\"integrity\":\"zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"ce0fdc85b5f2781b4c4352db0ff592a16d83a42dc8d26a663dd5beca74538ffc760c0598ac863ba9e6481e2768cf0576e26e226afaf5e653702302f14663b184\",\"name\":\"d3-color\",\"version\":\"3.1.0\"},\"d3-dispatch-3.0.1.tgz\":{\"integrity\":\"rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"af35323d4fd2eebc147e53322dcd444c37818f4351b8728a01cbee928cf086c86bea0e9ce5df338787368108d8d9b6747577862d67353c5d7be0fdad56f2a17e\",\"name\":\"d3-dispatch\",\"version\":\"3.0.1\"},\"d3-drag-3.0.0.tgz\":{\"integrity\":\"pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"a566d424b7444d503c95034979c331a177c7eb1fa63b6510a3cad2999f90ab171bc80de17dea6b160213fff1d6da79470a159e2083304b616afa010046485392\",\"name\":\"d3-drag\",\"version\":\"3.0.0\"},\"d3-ease-3.0.1.tgz\":{\"integrity\":\"wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"c11fd72b70f75dc2c8670a5bbd0c10e5f2bef1891db358a9ec0d93c5ed32c6771749dab52fdb24706edb95c79d90e5fe65c83118098b5f516b4466c00f0ce2d3\",\"name\":\"d3-ease\",\"version\":\"3.0.1\"},\"d3-interpolate-3.0.1.tgz\":{\"integrity\":\"3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"ddb62cd6b383df7ba8f1aa897ca3f72563c089b830f199b6f8bf6f04a107276460faf89347ba39326bf999972278df854586803965f94890135fa9353d6cfbda\",\"name\":\"d3-interpolate\",\"version\":\"3.0.1\"},\"d3-selection-3.0.0.tgz\":{\"integrity\":\"fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"7e64d159b34c9ac996abac4957c0f5f54fe0c3f6f0ac77cd5f1ac837e1df6609f3a931e9f633a628c86c4d48d73899d939d658f50dbccb8c9e6cacea0ca97195\",\"name\":\"d3-selection\",\"version\":\"3.0.0\"},\"d3-timer-3.0.1.tgz\":{\"integrity\":\"ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"9dd7c9fc9c7131dde7c37d6ec8aa18da76a2bc5fabdbd57e2dcd2cbd9c5ed49bef2119a2f2152caccbdd3b0812d68eae0479a2cfdd60790d3294f3f46a3d5550\",\"name\":\"d3-timer\",\"version\":\"3.0.1\"},\"d3-transition-3.0.1.tgz\":{\"integrity\":\"ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"0292af7e3b1247ab60d3ac6b2f8df80b45b274bafb25ec0107757eff7f51307b1a5d3386d339adfce0177a78393392c19b4a239b126ba68990559d5a3ef04be3\",\"name\":\"d3-transition\",\"version\":\"3.0.1\"},\"d3-zoom-3.0.0.tgz\":{\"integrity\":\"b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"6fc02657791f41aa9602e69c6cfb8d6cbeaf6a19ce25f94e85ec4bccc30d2e06badbefe7874273bc9d1a3bfe5ae4c560505192ec7bb53fd3f4de8ddf2640c2cb\",\"name\":\"d3-zoom\",\"version\":\"3.0.0\"},\"debug-4.4.3.tgz\":{\"integrity\":\"RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"446c305a7c10be455f6af295b76d8518bc3ec5849dcc04709b4aeee83853540dee994e6165cdbc57790ee2cb6062bcab4e52e9baf808f468a28e5b408cd6dca8\",\"name\":\"debug\",\"version\":\"4.4.3\"},\"decompress-response-6.0.0.tgz\":{\"integrity\":\"aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"696df9c9933a05bff8a099599dc307d8b0a866d2574d1c444b5eef137868462a305369161da24a1644810e70d1f9c9bd27ef5085799113221fbf4a638bd7a309\",\"name\":\"decompress-response\",\"version\":\"6.0.0\"},\"deepmerge-4.3.1.tgz\":{\"integrity\":\"3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"dec52a6cc11cefb5eaa5d34eec547246883e796de987e19809b8feacafae63244cbb0b15cb4acc895b4f9fe40994a16f58fff53d8a5aa6a627d0c7b6927167f8\",\"name\":\"deepmerge\",\"version\":\"4.3.1\"},\"defer-to-connect-2.0.1.tgz\":{\"integrity\":\"4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"e2dbedb5ea571b555a606ad189b93913025dd6de2e76e9d239531d2d200bea621dd62c78dfca0fc0f64c00b638d450a28ee90ed4bd2dc0d706b1dcd2edd1e00e\",\"name\":\"defer-to-connect\",\"version\":\"2.0.1\"},\"delayed-stream-1.0.0.tgz\":{\"integrity\":\"ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"672483ecd7fdd5a2c1d11c4be0a1ab28705797b11db350c098475ca156b05e72c3ed20e1a4d82db88236680920edaed04b8d63c4f499d7ba7855d1a730793731\",\"name\":\"delayed-stream\",\"version\":\"1.0.0\"},\"depd-2.0.0.tgz\":{\"integrity\":\"g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"83b9c7e8fe9dc838a8268800006a6b1a90ad5489898693e4feba02cdd6f77c887ad7fb3f9cfb1f47aa27c8cc2408047f3a50b7c810b49444af52840402cb08af\",\"name\":\"depd\",\"version\":\"2.0.0\"},\"detect-libc-2.1.2.tgz\":{\"integrity\":\"Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"06d8f604e38ef37a375b21f9f5ef0c817b3111055c6ab9143a9118aee6c1d2eaf09cdd74c90dfae2bb22072535d67665a966199b4e62fe87fb8a8e26ce2841b5\",\"name\":\"detect-libc\",\"version\":\"2.1.2\"},\"devalue-5.8.1.tgz\":{\"integrity\":\"4CXDYRBGqN+57wVJkuXBYmpAVUSg3L6JAQa/DFqm238G73E1wuyc/JhGQJzN7vUf/CMphYau2zXbfWzDR5aTEw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"e025c3611046a8dfb9ef054992e5c1626a405544a0dcbe890106bf0c5aa6db7f06ef7135c2ec9cfc9846409ccdeef51ffc23298586aedb35db7d6cc347969313\",\"name\":\"devalue\",\"version\":\"5.8.1\"},\"dir-compare-4.2.0.tgz\":{\"integrity\":\"2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"db130298ea0cadd4083c776c4dac0409d34fc2554507dcc6733de4ba19813ba537a14f94423b2e7b48bc6b22caa6005c9be85c5cf31548650df5dfa9bc9ebe55\",\"name\":\"dir-compare\",\"version\":\"4.2.0\"},\"dmg-builder-26.15.3.tgz\":{\"integrity\":\"O3zJUFUYHJKgzPqioHxfxzBzlSC1eXCSr79gMSBKBP5AgjjpmrydMsMLotEg9fAJF36vdUncb+4ndRNxoPdlSQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"3b7cc95055181c92a0ccfaa2a07c5fc730739520b5797092afbf6031204a04fe408238e99abc9d32c30ba2d120f5f009177eaf7549dc6fee27751371a0f76549\",\"name\":\"dmg-builder\",\"version\":\"26.15.3\"},\"dotenv-16.6.1.tgz\":{\"integrity\":\"uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"b81ab87a05874dc4eddf76bbdafa521b4cf71e73ee225e8da98713aca120d9ace81329768695b4cea971cacab6a4af47943207c87c9a91e61a627480c1df1ba3\",\"name\":\"dotenv\",\"version\":\"16.6.1\"},\"dotenv-expand-11.0.7.tgz\":{\"integrity\":\"zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"cc81f09993d1b21b02769303c95b2a1a68323f4c93f060205d49e4740a098acc6f7f7de4ef23ba3aea0a99c4c6b973d64ac9bc3a1f3c9d989c44b03d634ad478\",\"name\":\"dotenv-expand\",\"version\":\"11.0.7\"},\"dunder-proto-1.0.1.tgz\":{\"integrity\":\"KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"28837f9c3241411717c3430b561644f62407986ebca80548060f42aa65188e64088608a3f54e4c16faea9142f915bb72cb366e39e3add3375e45ee1463b72df8\",\"name\":\"dunder-proto\",\"version\":\"1.0.1\"},\"duplexer2-0.1.4.tgz\":{\"integrity\":\"asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"6ac2c555f596b49f746723941ccaa4eff4b6c3682e40ac542368ad8f777dd800c78715126c23068b57f5701709ef13354e8fa913f2a16f0a35cae35b3043ca78\",\"name\":\"duplexer2\",\"version\":\"0.1.4\"},\"ee-first-1.1.1.tgz\":{\"integrity\":\"WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"58cc26f4b851528f9651a44dfaf46e113a86f3d22066985548d91d16079beac4bf1383ab0c837bb78f0201ec121d773a0bc95e7c3f0a29faf9bd8eb56eb425a3\",\"name\":\"ee-first\",\"version\":\"1.1.1\"},\"ejs-3.1.10.tgz\":{\"integrity\":\"UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"51e26615f3ab0104bc38958f678aad807c961316b4f3cfccb4ae54132a091851faedc0c45e4652be23a2291099e178a3d33c48dc9102818b37a0ac7e022cd004\",\"name\":\"ejs\",\"version\":\"3.1.10\"},\"electron-38.8.6.tgz\":{\"integrity\":\"lyBhcVi9QYAZL6FO6r5twAWAjWnYomo3iVDvrb5SJZlq928BGemHOKG0tPIq41NOLaCu9f3XdEEjMkjQPjprRg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"9720617158bd4180192fa14eeabe6dc005808d69d8a26a378950efadbe5225996af76f0119e98738a1b4b4f22ae3534e2da0aef5fdd77441233248d03e3a6b46\",\"name\":\"electron\",\"version\":\"38.8.6\"},\"electron-builder-26.15.3.tgz\":{\"integrity\":\"a1KM5heqS3gQCZzizXEI8RjJy3QVogULPdeSknt76uLDpBIW/HDGsMg/XgP0riP6PI9COsRvFITKKGDqA8fJxA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"6b528ce617aa4b7810099ce2cd7108f118c9cb7415a2050b3dd792927b7beae2c3a41216fc70c6b0c83f5e03f4ae23fa3c8f423ac46f1484ca2860ea03c7c9c4\",\"name\":\"electron-builder\",\"version\":\"26.15.3\"},\"electron-builder-squirrel-windows-26.15.3.tgz\":{\"integrity\":\"Jc19XPV9y9+2bAdZPkXuVNGNIEFBq9poHC61l8Kv6FdK7DRG3+Ic0rerC0DXOaeHNz8yW0fg/JnF8GQROOF5MA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"25cd7d5cf57dcbdfb66c07593e45ee54d18d204141abda681c2eb597c2afe8574aec3446dfe21cd2b7ab0b40d739a787373f325b47e0fc99c5f0641138e17930\",\"name\":\"electron-builder-squirrel-windows\",\"version\":\"26.15.3\"},\"electron-publish-26.15.3.tgz\":{\"integrity\":\"g/2bn8YTavY4cuS5F+jOS7zmZbXXBV8KZ8yHKfJjFPoKtzBqrpCdNPxBd3tqdBwP7BVd0lGzf7Bk2s0KesWZ4Q==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"83fd9b9fc6136af63872e4b917e8ce4bbce665b5d7055f0a67cc8729f26314fa0ab7306aae909d34fc41777b6a741c0fec155dd251b37fb064dacd0a7ac599e1\",\"name\":\"electron-publish\",\"version\":\"26.15.3\"},\"electron-winstaller-5.4.0.tgz\":{\"integrity\":\"bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"6cedf2d7462292e53052e0d441133829fc0d90a867a553bb20f75bb2b7a3c0df7f000049cf34d0e06787c32ccd4ab54efad107dff369db9e5adec559a590e3be\",\"name\":\"electron-winstaller\",\"version\":\"5.4.0\"},\"emoji-regex-8.0.0.tgz\":{\"integrity\":\"MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"3128d8cdc58d380d1ec001e9cf4331a5816fc20eb28f2d4d1b7c6d7a8ab3eb8e150a8fd13e09ebd7f186b7e89cde2253cd0f04bb74dd335e126b09d5526184e8\",\"name\":\"emoji-regex\",\"version\":\"8.0.0\"},\"encodeurl-2.0.0.tgz\":{\"integrity\":\"Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"4349fd1d18b89ba26e188575785966bc907b644571bbddc8accca232c182d25acc24c5b3460c7a586aaec9f4206556f7d6f8468179df98f34d5e6c673a4441ae\",\"name\":\"encodeurl\",\"version\":\"2.0.0\"},\"end-of-stream-1.4.5.tgz\":{\"integrity\":\"ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"a2810673a1cfdbac57abf37e18218e4f424a08b0c6aead9b41466b43b832ac989900d27ff180d3c53a5005718c9fe59b2105cd569c96ca69bb2985480909f23a\",\"name\":\"end-of-stream\",\"version\":\"1.4.5\"},\"env-paths-2.2.1.tgz\":{\"integrity\":\"+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"fa1d6590b2a164c4d88e8835544a49346ecd64959cb9cd830e4feab2a49345108e5e22e3790d5dd7fb9dad41a1a8cc5480097028d67471fdaea9a9f918bb92d8\",\"name\":\"env-paths\",\"version\":\"2.2.1\"},\"err-code-2.0.3.tgz\":{\"integrity\":\"2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"d9b9a546934a0714ff09198f3a5c88490a4d8fea92798bdcca6fee4f4271d9b30e94a2ed4b2d5998bb95c5210a2b2a2bfcde7286fa7f6621b5a04dc311831214\",\"name\":\"err-code\",\"version\":\"2.0.3\"},\"es-define-property-1.0.1.tgz\":{\"integrity\":\"e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"7b79d17e07d4678acd18bdb7da05205f4e90372c9ecf4e0a76316b17e2d34683979ab3a014a0e0e0109db235bc1274faf5ea9d606991a49c223d560dac2696de\",\"name\":\"es-define-property\",\"version\":\"1.0.1\"},\"es-errors-1.3.0.tgz\":{\"integrity\":\"Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"65fe47d8ac6ddb18d3bdb26f3f66562c4202c40ea3fa1026333225ca9cb8c5c060d6f2959f1f3d5b2d066d2fa47f9730095145cdd0858765d20853542d2e9cb3\",\"name\":\"es-errors\",\"version\":\"1.3.0\"},\"es-module-lexer-2.2.0.tgz\":{\"integrity\":\"3lGxdTXCLfe1MYfTz1y2ksAAUM4NAOP6rPEjxGJVKO7TZ5+tvHCaQWGpC4Y3IXvW3ece0Cz1cIP4FWBxOnGCTQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"de51b17535c22df7b53187d3cf5cb692c00050ce0d00e3faacf123c4625528eed3679fadbc709a4161a90b8637217bd6dde71ed02cf57083f81560713a71824d\",\"name\":\"es-module-lexer\",\"version\":\"2.2.0\"},\"es-object-atoms-1.1.2.tgz\":{\"integrity\":\"HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"1d6701a0de8d8a57aab52c9d2b616a1db4bf2e80ddda9aab9d01cbc89cc18f890ea7f932d8c58c37af78c4e7e42bcfd29d4b16d831fb11fc9597274a0ac9b567\",\"name\":\"es-object-atoms\",\"version\":\"1.1.2\"},\"es-set-tostringtag-2.1.0.tgz\":{\"integrity\":\"j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"8fabd6cdfac655fc97c607be3b4c79b21e9cbf10288346bfe1175dd8adfacc2315e5e27effeb4e0278113bc70e0cc3566d545d5659866502f6612df247c6c850\",\"name\":\"es-set-tostringtag\",\"version\":\"2.1.0\"},\"esbuild-0.28.1.tgz\":{\"integrity\":\"HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"1eb26bbd9bf96b2c41ccf7f0a613a837393338822589fce4d0a26b18ad9cf11e3e2caa4cb6960b41e51d8e7c235affcb665907da569993ee30efca62f7d0f857\",\"name\":\"esbuild\",\"version\":\"0.28.1\"},\"escalade-3.2.0.tgz\":{\"integrity\":\"WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"5948f6aa5c5a42d3b883a3eae5cdbd193716183c9df22b4bf334e58a98040b3dc97ac02288e2a8b5df0953aa2d0773c00a01bac64254c9585ba0c4be6e37bf8c\",\"name\":\"escalade\",\"version\":\"3.2.0\"},\"escape-html-1.0.3.tgz\":{\"integrity\":\"NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"3624aea59e0e7ae1b0afaf251887b29bf92c219309a1d506392099fc54a74f172b7a46efaab81d53194938ca628da299563009ad6ac6b3fe89cbc38cbb28fda3\",\"name\":\"escape-html\",\"version\":\"1.0.3\"},\"esm-env-1.2.2.tgz\":{\"integrity\":\"Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"129c6bbfe36bfc268be1970518f24860b585a26f98795d43a8c2c726811df52611c4d6da16bb81c1f117fe49075097f9e63dbe4d46e60dc9ae8a56cfd539971c\",\"name\":\"esm-env\",\"version\":\"1.2.2\"},\"esrap-2.2.13.tgz\":{\"integrity\":\"m8jH5hZgJE2RRUK/jjkGPcJEDAV+dYnZYFkosQaPTcE+Yw4xynXHOo6FUdwaWBtdR3b1MMa7wEDTSHeR2VWsGA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"9bc8c7e61660244d914542bf8e39063dc2440c057e7589d9605928b1068f4dc13e630e31ca75c73a8e8551dc1a581b5d4776f530c6bbc040d3487791d955ac18\",\"name\":\"esrap\",\"version\":\"2.2.13\"},\"estree-walker-3.0.3.tgz\":{\"integrity\":\"7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"ed150a7d781230c933b7a66e5e6a9aa4ebab2c63cf7e08fa97db9167b9511a896f934cb6ca871cdf92dd731282e4f419767d8332a8a8010d8da1672b4ca9a6ea\",\"name\":\"estree-walker\",\"version\":\"3.0.3\"},\"etag-1.8.1.tgz\":{\"integrity\":\"aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"6882f9171ee66b055adf4d1a976067104e2236fa35a844f12eb3c8fe8d392fbcfa828edf0b0d49e844266cae05989d804bb920545fca1195ae7c17dd0a531c3e\",\"name\":\"etag\",\"version\":\"1.8.1\"},\"eventsource-3.0.7.tgz\":{\"integrity\":\"CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"0914f5593cae4280fbef5196e7a5c464543f66849f5a27756a52860d832692ddb297c517ad5478a6ca6a58d11ca8abd523383a3c096d5a3c5c4923eb6e803888\",\"name\":\"eventsource\",\"version\":\"3.0.7\"},\"eventsource-parser-3.1.0.tgz\":{\"integrity\":\"kJezFj9YFAMLeORyi7aCLxLbD5/qWMQnoMVlVPyHIll7lgRJCc3JVln9Vgl9nwQi0YkMnhdGTMNn7CkRRAptMg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"9097b3163f5814030b78e4728bb6822f12db0f9fea58c427a0c56554fc8722597b96044909cdc95659fd56097d9f0422d1890c9e17464cc367ec2911440a6d32\",\"name\":\"eventsource-parser\",\"version\":\"3.1.0\"},\"expect-type-1.4.0.tgz\":{\"integrity\":\"KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"29f61b9a9466d156cb8c4bd56bdc86c028bd188df8c6f8bb03f1d761640eeb90920f6bb731ccd4252bb05ca148c651ac801422cd5f6ae49f4d1e3e151b49fea4\",\"name\":\"expect-type\",\"version\":\"1.4.0\"},\"exponential-backoff-3.1.3.tgz\":{\"integrity\":\"ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"66011e6578f7d2af88d0437e09b492a48c8f689e475500f5f19d66faed455db01e4fde26af5cf0e74ab8aba8e2882e38ecd97f61370861201fb621aa7adc1708\",\"name\":\"exponential-backoff\",\"version\":\"3.1.3\"},\"express-5.2.1.tgz\":{\"integrity\":\"hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"8484b889d5966a2ebd35ecc8751b76c455687da1788fee8834ea4995538b0cef335c6a54544573218935d94522d89ce313358bdc8380c5c4ee6e0cfd3e8d325f\",\"name\":\"express\",\"version\":\"5.2.1\"},\"express-rate-limit-8.5.2.tgz\":{\"integrity\":\"5Kb34ipNX694DH48vN9irak1Qx30nb0PLYHXfJgw4YEjiC3ZEmZJhwOp+VfiCYwFzvFTdB9QkArYS5kXa2cx2A==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"e4a6f7e22a4d5faf780c7e3cbcdf62ada935431df49dbd0f2d81d77c9830e18123882dd91266498703a9f957e2098c05cef153741f50900ad84b99176b6731d8\",\"name\":\"express-rate-limit\",\"version\":\"8.5.2\"},\"extract-zip-2.0.1.tgz\":{\"integrity\":\"GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"183854f67b70b8ac865dd6415204c87bebd79d68f47e9a5412d3032f4fa275de52b5af131a91ecb27fdebac03d9ab3ebf6a343ca6e92c406198cdbc29fff5106\",\"name\":\"extract-zip\",\"version\":\"2.0.1\"},\"fast-check-4.8.0.tgz\":{\"integrity\":\"GOJ158CUMnN6cSahsv4+ExARvIDuzzinFjkp0E9WtiBa5zcVeLozVkWaE4IzFcc+Y48Wp1EDlUZsXRyAztQcSg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"18e275e7c09432737a7126a1b2fe3e131011bc80eecf38a7163929d04f56b6205ae7371578ba3356459a13823315c73e638f16a7510395466c5d1c80ced41c4a\",\"name\":\"fast-check\",\"version\":\"4.8.0\"},\"fast-deep-equal-3.1.3.tgz\":{\"integrity\":\"f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"7f7a90f68432f63d808417bf1fd542f75c0b98a042094fe00ce9ca340606e61b303bb04b2a3d3d1dce4760dcfd70623efb19690c22200da8ad56cd3701347ce1\",\"name\":\"fast-deep-equal\",\"version\":\"3.1.3\"},\"fast-uri-3.1.3.tgz\":{\"integrity\":\"i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"8bbd0bc0659476e5eace270a5d6b21a28abeb162f52b7594539aca64d1bfd22ddad4e4a85f71ea847e566d6c139aa59fa2be2ead46a418f89141c95e4594f03a\",\"name\":\"fast-uri\",\"version\":\"3.1.3\"},\"fd-slicer-1.1.0.tgz\":{\"integrity\":\"cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"704d6ab01fd5c32428cd9faad5d1b147c2c160d65ea1f84475434648c6d00f71b0da50335fd65bdee214e846dcfc59b28e8f405967e79f4014087aad7afb3ff2\",\"name\":\"fd-slicer\",\"version\":\"1.1.0\"},\"fdir-6.5.0.tgz\":{\"integrity\":\"tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"b486d8b596ee70eb340511aa3c992c84951874bf920c7edd54cf208f2f84469dd60148cb105244fb4da46a7c87b708d63a7c2b298062c0098cd29e242c90275e\",\"name\":\"fdir\",\"version\":\"6.5.0\"},\"filelist-1.0.6.tgz\":{\"integrity\":\"5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"e608b2d8f90b618d5c3f7f69d7b11c87edb19694d12fd1cbb2939f1209b42fa0b005705382c2b9a2ed09b7362e7a9c64690fedbe1085209e6e5e8d0eaccd83c4\",\"name\":\"filelist\",\"version\":\"1.0.6\"},\"finalhandler-2.1.1.tgz\":{\"integrity\":\"S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"4bc2a866045937e6b9acdc2a4f195965e3e34ffe1c9e6d11395ef42de7511d9d29f2ef5f4480f484951942990a2f3ae8f0b7e60bcb31db76d8ead54dc6ff2940\",\"name\":\"finalhandler\",\"version\":\"2.1.1\"},\"form-data-4.0.6.tgz\":{\"integrity\":\"vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"bca6ad021e129557e06eff98b66862463844309b18a6c1b5636acc42d47e49549bcadb120f5606cc321cac026674579cf3cbbff95a069b19e5fbcd202f5b5109\",\"name\":\"form-data\",\"version\":\"4.0.6\"},\"forwarded-0.2.0.tgz\":{\"integrity\":\"buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"6ee446d1fa41b511d24c238049eea10f6e7cb44b9b16844b6f864d03a3713151cdc3680e7301e8f70c9a6e5ccccce039cfdc40f4bd4a36393f36de8c4fd698a3\",\"name\":\"forwarded\",\"version\":\"0.2.0\"},\"fresh-2.0.0.tgz\":{\"integrity\":\"Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"471fd6c9c67ad0739aa8b2808ba70744a288ef3c566c9df53219ed9adc0ca1a4de17b5c51fd861069f2f21368c89d7e58d143a7985822a46932beca45491cfd8\",\"name\":\"fresh\",\"version\":\"2.0.0\"},\"fs-extra-10.1.0.tgz\":{\"integrity\":\"oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"a115c0a6ae78113463e1e3221731a71d61b2fb3a39adab9d8eec4dd1bf07eecfd1536a16d16becc7d3b400244dfe446af44f15bbf45eb24181e68de38be1731d\",\"name\":\"fs-extra\",\"version\":\"10.1.0\"},\"fs-extra-11.3.1.tgz\":{\"integrity\":\"eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"797bc61b067908bd7b652c0759dddb6e093b514a45e88147b4fe7b35861a90fbc73acf060e00dee4a248dfa8c82730e427a7898eecd103c78141be9290ab9ed2\",\"name\":\"fs-extra\",\"version\":\"11.3.1\"},\"fs-extra-11.4.0.tgz\":{\"integrity\":\"EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"110b05ccc509902286af578faa56000e42149875b5b37657af962acbac1b1ab7d40a986997699a33f932388440d87a4fdc06854136570f895d8de93e9dc71d74\",\"name\":\"fs-extra\",\"version\":\"11.4.0\"},\"fs-extra-7.0.1.tgz\":{\"integrity\":\"YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"6090da0896449c199c6f0d777ef74033d03034e2703b3ac4e29a8ca81ab99c5884a9752a1f094ae01fb7a54c3a24dbdf48fb57d39c451ed632ff59e2d357860b\",\"name\":\"fs-extra\",\"version\":\"7.0.1\"},\"fs-extra-8.1.0.tgz\":{\"integrity\":\"yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"ca1950800ea69ce25428eb11505b2025d402be42a1733f2d9591b91c141f45e619cb8e8ec0b718f9989ad26b5d1ec3a8f72fe13fe0b130dd1353d431a0eb46e2\",\"name\":\"fs-extra\",\"version\":\"8.1.0\"},\"fs-extra-9.1.0.tgz\":{\"integrity\":\"hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"85c8376667a94b7d3fec1485a91be8a370ce310bbb223ab13b99c20edfb333d5d68dbdf75a0ef388d4fe42fa9bb9cdfe816a733b4d89b9b5729361b866fa3539\",\"name\":\"fs-extra\",\"version\":\"9.1.0\"},\"fs.realpath-1.0.0.tgz\":{\"integrity\":\"OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"38ed291f694ae9ad2166701d6aee48b731cf23aa5496f23b8cc567c54411b70e28c05db093c94e49a6ed1830933f81a0ae0d8c6c69d63bd5fc2b5b78f9f18c0f\",\"name\":\"fs.realpath\",\"version\":\"1.0.0\"},\"fsevents-2.3.3.tgz\":{\"integrity\":\"5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"e71a037d7f9f2fb7da0139da82658fa5b16dc21fd1efb5a630caaa1c64bae42defbc1d181eb805f81d58999df8e35b4c8f99fade4d36d765cda09c339617df43\",\"name\":\"fsevents\",\"version\":\"2.3.3\"},\"function-bind-1.1.2.tgz\":{\"integrity\":\"7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"ed71cdc47eea5fdc46e66230c6486e993a31fcc21135c3a00ebc56b0cb76a40af6dd61e9e8cad194dec50521690a9afea153b417be38894811f369c931f1b648\",\"name\":\"function-bind\",\"version\":\"1.1.2\"},\"get-caller-file-2.0.5.tgz\":{\"integrity\":\"DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"0f214fdc133fdd81d340e0942ffc343991d1d25a4a786af1a2d70759ca8d11d9e5b6a1705d57e110143de1e228df801f429a34ac6922e1cc8889fb58d3a87616\",\"name\":\"get-caller-file\",\"version\":\"2.0.5\"},\"get-intrinsic-1.3.0.tgz\":{\"integrity\":\"9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"f5f4a349aa2cfdf448548a7ec5226513a95fc21112ecb36d29a08121a987b23af69dad418800493e8d263a38f3f062435116ab9823c6a9a89583999f8dbf7c09\",\"name\":\"get-intrinsic\",\"version\":\"1.3.0\"},\"get-proto-1.0.1.tgz\":{\"integrity\":\"sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"b1349f063a17069f3d26f20a21e7eac3b53608279bb1cef892263a6b0886a202ada1219b823604fc6ffe97db05dcc5853cd73d21ca0e0b83837ca1dfc459a9d2\",\"name\":\"get-proto\",\"version\":\"1.0.1\"},\"get-stream-5.2.0.tgz\":{\"integrity\":\"nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"9c117e175ac06550aefe9eeb8f3800f986f895f617ae997b6ba56626b53cc05f48d422af3ff4303cd6479ce9706d3918e9dbed148cc5312c905db2e84d03d1a4\",\"name\":\"get-stream\",\"version\":\"5.2.0\"},\"glob-7.2.3.tgz\":{\"integrity\":\"nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"9c5474ccba54d9809a471c28089bcbe94bc21f6245c85548bf04cbb087f6d40b8794cb240358614dd93e2e5609b4e958b7dbfa76fb330f604646a04bfa240af5\",\"name\":\"glob\",\"version\":\"7.2.3\"},\"gopd-1.2.0.tgz\":{\"integrity\":\"ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"65429187afe4505a0089302d4d83d9277870f70371c7e04804e8a39e51bd3e7ac9b027128ecd70cb20fabc9a5a62d827cc3aca6114aa7f738ee917daf77c6c46\",\"name\":\"gopd\",\"version\":\"1.2.0\"},\"got-11.8.6.tgz\":{\"integrity\":\"6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"ead7d9f756ceafb6ce5e72bb3d10c21812dad47e14d3cd181cd6804362ac30694b13345b938e27b1917613521e45cdefb491cf55b2826207456da18eda58ddf2\",\"name\":\"got\",\"version\":\"11.8.6\"},\"graceful-fs-4.2.11.tgz\":{\"integrity\":\"RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"45b279fe398570d342703579a3d7939c12c9fc7b33595d0fef76dcf857f89d2feb263f98692e881b288e2f45680585fe9755ab97793ade1fcaac7fa7849d17bd\",\"name\":\"graceful-fs\",\"version\":\"4.2.11\"},\"has-flag-4.0.0.tgz\":{\"integrity\":\"EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"1329094ff4352a34d672da698080207d23b4b4a56e6548e180caf5ee4a93ba6325e807efdc421295e53ba99533a170c54c01d30c2e0d3a81bf67153712f94c3d\",\"name\":\"has-flag\",\"version\":\"4.0.0\"},\"has-symbols-1.1.0.tgz\":{\"integrity\":\"1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"d5c0cd77027625aa2199bdec8383a629a301c2e0b8f2c6278b91d4c360efb02f0b8c64cb2bd87e79bd57e91cae3877b8853d142c25baf22a26863528294aa53d\",\"name\":\"has-symbols\",\"version\":\"1.1.0\"},\"has-tostringtag-1.0.2.tgz\":{\"integrity\":\"NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"36a00307c5633c52ccd95d15bc751ec30c2cc3465605a21d828fa2787b4ade16ac2f3e2a78246361ca9f07a010ac182044aa69285f0be76fd5a9d56c3b8ec397\",\"name\":\"has-tostringtag\",\"version\":\"1.0.2\"},\"hasown-2.0.4.tgz\":{\"integrity\":\"T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"4f651b7db044177db089ea5722c3254d6f7e743602eb0321fedfef600e2db8e30aa96cff9f7bebd4d152c508b23fece4da65eca0c03f8bfeea57a2cabadd6dd4\",\"name\":\"hasown\",\"version\":\"2.0.4\"},\"hono-4.12.27.tgz\":{\"integrity\":\"1yrb/+w6HWQJrUCLkJ2IF5jNIPvvFkblV5RNOYl6bV+OA6p9GLcMpHFFGTosSvHvcAUibuUukRqhlYI4z32C7Q==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"d72adbffec3a1d6409ad408b909d881798cd20fbef1646e557944d39897a6d5f8e03aa7d18b70ca47145193a2c4af1ef7005226ee52e911aa1958238cf7d82ed\",\"name\":\"hono\",\"version\":\"4.12.27\"},\"hosted-git-info-4.1.0.tgz\":{\"integrity\":\"kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"9320ae10e5a326a66e0db447ccbf15f77373421c0807bd681564b2cd5a3e28f648fa99d03cfc6e71d92b399be42d19eb7f9511b1033e209d3d0f0dbd71100b20\",\"name\":\"hosted-git-info\",\"version\":\"4.1.0\"},\"html-to-image-1.11.13.tgz\":{\"integrity\":\"cuOPoI7WApyhBElTTb9oqsawRvZ0rHhaHwghRLlTuffoD1B2aDemlCruLeZrUIIdvG7gs9xeELEPm6PhuASqrg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"72e38fa08ed6029ca10449534dbf68aac6b046f674ac785a1f082144b953b9f7e80f50766837a6942aee2de66b50821dbc6ee0b3dc5e10b10f9ba3e1b804aaae\",\"name\":\"html-to-image\",\"version\":\"1.11.13\"},\"http-cache-semantics-4.2.0.tgz\":{\"integrity\":\"dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"753c5cbcf5ea3ef5c1429ab9754afa9843095f8a08105bfa6f0a26dc50f02910ecb888e324600daa106ea009fd73545024874029abf7dc40fae44db2b3ef3b41\",\"name\":\"http-cache-semantics\",\"version\":\"4.2.0\"},\"http-errors-2.0.1.tgz\":{\"integrity\":\"4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"e056d17405fe6d2766a3801416e4b458d88fcfc36016dfabf138603569a5ae3423b7543b651f7ecd395c7b6f39f71e0a497af022c69e4ea0e82909ad3fca4b99\",\"name\":\"http-errors\",\"version\":\"2.0.1\"},\"http-proxy-agent-7.0.2.tgz\":{\"integrity\":\"T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"4f58240226180d6631dd5e419b2bbb1dc7dcbcbee652b4d688ceb239f6b73c8a6156227f8053dbbe2750faf7aa48e1dc8bf3f105c0da6de50d0b3a4e3832598a\",\"name\":\"http-proxy-agent\",\"version\":\"7.0.2\"},\"http2-wrapper-1.0.3.tgz\":{\"integrity\":\"V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"57edb7b0332bd765a7cfb893703789af73ba008c659ef4ff6e66800003ff5dd6b7e42f74a7de7df69d05d5e1d1fcdd4a20b592a1654088e3058c105769748cc6\",\"name\":\"http2-wrapper\",\"version\":\"1.0.3\"},\"https-proxy-agent-7.0.6.tgz\":{\"integrity\":\"vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"bcaf4fe7f8947dd97de4023e255c94b88715b5de287efb6b3abdc736d336cb10bd6e731b11da77c74d4e8503678dbf082588b7f159531379815f071fbf2c2e4b\",\"name\":\"https-proxy-agent\",\"version\":\"7.0.6\"},\"iconv-lite-0.7.2.tgz\":{\"integrity\":\"im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"8a6f438c40d0e79b3d7cbe04633380bf4c8caa6301499a7a1b456f1724cc3ca5b1892047523f4d5bfaaa2e65d4c17aeb33b02fa9295309fbea45bd1c33cc98ab\",\"name\":\"iconv-lite\",\"version\":\"0.7.2\"},\"inflight-1.0.6.tgz\":{\"integrity\":\"k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"93dd88fdbd3cab8c2f16c71708bbea7ec1c2ae3ac5ef2897b10b8856f544ecdf365b7f9aaa9cee51d05b7e159ccbf159477ff82207e532028b3acbcf0eb18224\",\"name\":\"inflight\",\"version\":\"1.0.6\"},\"inherits-2.0.4.tgz\":{\"integrity\":\"k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"93fbc6697e3f6256b75b3c8c0af4d039761e207bea38ab67a8176ecd31e9ce9419cc0b2428c859d8af849c189233dcc64a820578ca572b16b8758799210a9ec1\",\"name\":\"inherits\",\"version\":\"2.0.4\"},\"ip-address-10.2.0.tgz\":{\"integrity\":\"/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"ffe4ba8f813d007bd6f5258c48463d5dfcbae8ee4f5af544274f0ed32e491b210a429a236f42b418aa73fefe4727f1b4be2dc3dac8c62bbf35d7da1765e134a8\",\"name\":\"ip-address\",\"version\":\"10.2.0\"},\"ipaddr.js-1.9.1.tgz\":{\"integrity\":\"0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"d0a23feb4ef1a31493a07ec68cdd457d26cba14d3e6ed4e2723b1049642587f859ca437c2a998c7fbb98c0f5b747e6a467a47fc35f199574870585e26143cede\",\"name\":\"ipaddr.js\",\"version\":\"1.9.1\"},\"is-fullwidth-code-point-3.0.0.tgz\":{\"integrity\":\"zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"cf29a6e7ebbeb02b125b20fda8d69e8d5dc316f84229c94a762cd868952e1c0f3744b8dbee74ae1a775d0871afd2193e298ec130096c59e2b851e83a115e9742\",\"name\":\"is-fullwidth-code-point\",\"version\":\"3.0.0\"},\"is-promise-4.0.0.tgz\":{\"integrity\":\"hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"86fa6823a928ae124c9de8f6f3975283a9eed7e7babb1b3bcc6dc16009b96f2a83b2024d5b0c7333acfa8998808104784c9df42660533b0a99530dd69721f701\",\"name\":\"is-promise\",\"version\":\"4.0.0\"},\"is-reference-3.0.3.tgz\":{\"integrity\":\"ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"8b1909a2a42f00ff3c13ac0bc9d2c61aa089b2b1549eaa07e879da73307c5e60c7d6869653ec71769b6f8a44e068486d679dcacba617881b942365972cc0b08f\",\"name\":\"is-reference\",\"version\":\"3.0.3\"},\"isarray-1.0.0.tgz\":{\"integrity\":\"VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"54b82121634ce842d0ce8ef3c26720d0d99357258a623bc878cf37ca3a74c110d39949eb33aefc7d06dc281a3a9f6089105d2cce81bfff2b60f932a56bcf402d\",\"name\":\"isarray\",\"version\":\"1.0.0\"},\"isbinaryfile-4.0.10.tgz\":{\"integrity\":\"iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"887aea7b9b21bc151c15b999abdcce40706878e85926ee91406ac3a4181e9d49bf026f85dc9336320423fab2b767ad357f3acbe602d95ad00f1f638169255ccb\",\"name\":\"isbinaryfile\",\"version\":\"4.0.10\"},\"isbinaryfile-5.0.7.tgz\":{\"integrity\":\"gnWD14Jh3FzS3CPhF0AxNOJ8CxqeblPTADzI38r0wt8ZyQl5edpy75myt08EG2oKvpyiqSqsx+Wkz9vtkbTqYQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"827583d78261dc5cd2dc23e117403134e27c0b1a9e6e53d3003cc8dfcaf4c2df19c9097979da72ef99b2b74f041b6a0abe9ca2a92aacc7e5a4cfdbed91b4ea61\",\"name\":\"isbinaryfile\",\"version\":\"5.0.7\"},\"isexe-2.0.0.tgz\":{\"integrity\":\"RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"447c4c2e9f659ca1c61d19e0f5016144231b600715a67ebdb2648672addfdfac638155564e18f8aaa2db4cb96aed2b23f01f9f210d44b8210623694ab3241e23\",\"name\":\"isexe\",\"version\":\"2.0.0\"},\"isexe-3.1.5.tgz\":{\"integrity\":\"6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"e81ded2ed16ab504b87a46abbcb54c67e5fe565bd07a46dee2d69491ffeb8553b777f874336adf0119bfa572dc3c4b238ccb0582b1604ab85023171256b073f3\",\"name\":\"isexe\",\"version\":\"3.1.5\"},\"isexe-4.0.0.tgz\":{\"integrity\":\"FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"14552d64ca6867c46a1d2dd77971261d62c0e2d847f99c42bf694e88f227d5773b0b1aea856ccd483cc3fbf7214bfcdb61ece68b058b7500b4f497502a6b613b\",\"name\":\"isexe\",\"version\":\"4.0.0\"},\"jake-10.9.4.tgz\":{\"integrity\":\"wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"c291d8ce1c625502fe215d3904b1365e7df8cd6d52db6de1be3b6a934fa0b0faf077ff0934b5c981964cfe23c5b18735c72a6117ee8ce84bdd13913d3011a40c\",\"name\":\"jake\",\"version\":\"10.9.4\"},\"jiti-2.7.0.tgz\":{\"integrity\":\"AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"002ffb2687c9bd91abae779635a12725e38b531f89946b7bb4d6b4c198913d3e0c635c267ca8eddbee8eda9daecf6fac92597c39966624c36a7a47bb90a6cd81\",\"name\":\"jiti\",\"version\":\"2.7.0\"},\"jose-6.2.3.tgz\":{\"integrity\":\"YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"61854322740a1497d1ff16b7a2351397c7362a84f088bd51e5683d602c9dc07d31d01f60adbce58391c2ee63230ad5098db43f627184648848e6d0a07d36f81f\",\"name\":\"jose\",\"version\":\"6.2.3\"},\"js-yaml-4.3.2.tgz\":{\"integrity\":\"SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"48534ebd227e0e07fff409fdd38631f828129483c2908a5aa38aa8e7596979edb94c845e8dd1f7ae1478119306a0dc77fd33f73bec335ae893165e2ca9b96dcc\",\"name\":\"js-yaml\",\"version\":\"4.3.2\"},\"json-buffer-3.0.1.tgz\":{\"integrity\":\"4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"e1b57905f4769aa7d04c99be579b4f3dd7fe669ba1888bd3b8007983c91cad7399a534ff430c15456072c17d68cebea512e3dd6c7c70689966f46ea6236b1f49\",\"name\":\"json-buffer\",\"version\":\"3.0.1\"},\"json-schema-traverse-1.0.0.tgz\":{\"integrity\":\"NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"34cf3f3fd9f75e35e12199f594b86415a0024ce5114178d6855e0103f4673aff31be0aadaa9017f483b89914314b1d51968e2dab37aa6f4b0e96bb9a3b2dddba\",\"name\":\"json-schema-traverse\",\"version\":\"1.0.0\"},\"json-schema-typed-8.0.2.tgz\":{\"integrity\":\"fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"7d08685dd72f737576f31ec2ec132ce0fe7e90d96051445eda39944f54fffe8051303aeacb540f7a52629b0646a3b1e0f553d5dc4415e419eae216c5cb6bdeb4\",\"name\":\"json-schema-typed\",\"version\":\"8.0.2\"},\"json5-2.2.3.tgz\":{\"integrity\":\"XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"5e63967bb7b21d81f5e1c2dd54fa3283e18e1f7ad85fef8aa73af2949c125bdf2ddcd93e53c5ce97c15628e830b7375bf255c67facd8c035337873167f16acca\",\"name\":\"json5\",\"version\":\"2.2.3\"},\"jsonfile-4.0.0.tgz\":{\"integrity\":\"m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"9ba175477cfc8e395fda29901d2d907b3e6c8ca590cdbbae86e27f14a605459bcf1373ee1dc48c559cdfb0b84654e91f776d286cbe5258405ec394a196ab8dc6\",\"name\":\"jsonfile\",\"version\":\"4.0.0\"},\"jsonfile-6.2.1.tgz\":{\"integrity\":\"zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"cf039374bdeb150fe545d0679ed295397ea4e5c289c047351dd8a54fbd41584bbb278d605c8076311a7ebf176e3d2c1924f581c44cefe321f5c182c91941d7e1\",\"name\":\"jsonfile\",\"version\":\"6.2.1\"},\"keyv-4.5.4.tgz\":{\"integrity\":\"oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"a3154790747f1097f608d5e75b144b5ba9a0ec9c82094706d03b441a62f672d528d4f3538a7d4f52297eafffb8af93295600bf7e7d648ecc7b9a34ae8caa88a7\",\"name\":\"keyv\",\"version\":\"4.5.4\"},\"lazy-val-1.0.5.tgz\":{\"integrity\":\"0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"d3f06718209fc943240697838168a16a720017d2666611c1814844ab3bdff9a7613462e83fa4da888e6817ca326f7238e4ff8f727aea8a149fd353349741b9f9\",\"name\":\"lazy-val\",\"version\":\"1.0.5\"},\"lightningcss-1.32.0.tgz\":{\"integrity\":\"NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"357601ce29cdadb95fada3c6cab6cfa03d7d0b587d95f23fd66ce0598bd75137b8d781b3fd7d450f65c165264ceeb453acc03c24bdceb4068689fac82a1439c9\",\"name\":\"lightningcss\",\"version\":\"1.32.0\"},\"lightningcss-android-arm64-1.32.0.tgz\":{\"integrity\":\"YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"60aeff0a54ede2400ad2fa3ac375fe3e79b40f671fdaf3c76e139776836d8b519ad1a9753f84c1661c23013be33702c40429cabe325cda34201d71f4344c2502\",\"name\":\"lightningcss-android-arm64\",\"version\":\"1.32.0\"},\"lightningcss-darwin-arm64-1.32.0.tgz\":{\"integrity\":\"RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"473786f49bb96da83606fd7f97095526f044deae93b57b247592cb0b27e0e69b7e1cbcfd06a94808eecb64ced51cd4d39ffe4f4611c50528e4e65738726b1c3d\",\"name\":\"lightningcss-darwin-arm64\",\"version\":\"1.32.0\"},\"lightningcss-darwin-x64-1.32.0.tgz\":{\"integrity\":\"U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"53e42c069da6fecdb0aa95184ffeb09e56a07596ed65d9dd4a6badfcd26a94270c2d35a9e66b82ac80fe2b9509ea3a83d8116c85e8c26179e23c36cd87bdd5f3\",\"name\":\"lightningcss-darwin-x64\",\"version\":\"1.32.0\"},\"lightningcss-freebsd-x64-1.32.0.tgz\":{\"integrity\":\"JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"2424e281e74492c664ded1d34ed86731d55f19feb5164cbc262d84e188d44c4417d78c62cbf953cd79eed6fc2265eddb61ed2af92a6c487fc24de0d72ba5878a\",\"name\":\"lightningcss-freebsd-x64\",\"version\":\"1.32.0\"},\"lightningcss-linux-arm-gnueabihf-1.32.0.tgz\":{\"integrity\":\"x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"c7aae79e945ad862f4cd03a4b7aaedb376033f376e2e95afc0017a10c8571556570f8b4fac190416acc6a30cc2b085ac3e3a922beb723443835015de7951d293\",\"name\":\"lightningcss-linux-arm-gnueabihf\",\"version\":\"1.32.0\"},\"lightningcss-linux-arm64-gnu-1.32.0.tgz\":{\"integrity\":\"0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"d279ccca8c8e2d12577db30e8a569245c2c7dc9c39cfd1c33467d3fe0c023e06838e7c748bcc3bbc1cc52c54757fa08c2ca17c8156de6e69143777dafe4409a5\",\"name\":\"lightningcss-linux-arm64-gnu\",\"version\":\"1.32.0\"},\"lightningcss-linux-arm64-musl-1.32.0.tgz\":{\"integrity\":\"UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"529424a1e9ebe14244ce054862923cd250c5bd198f560ea8a9ba0d1dfa07e024087cd03e1cead9ecca3b2993f4d9d0ba2e38213d025e06cbd7849a1dff09c806\",\"name\":\"lightningcss-linux-arm64-musl\",\"version\":\"1.32.0\"},\"lightningcss-linux-x64-gnu-1.32.0.tgz\":{\"integrity\":\"V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"57b42be7622166674a3d5afe56dc3ca3e58bb1025809377c96821fa4368c45619465f04e60425ec89224a862033193f03f1db8a5431fc12c7123ca61aff31b38\",\"name\":\"lightningcss-linux-x64-gnu\",\"version\":\"1.32.0\"},\"lightningcss-linux-x64-musl-1.32.0.tgz\":{\"integrity\":\"bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"6d870ba7e55bd1ac2c89783ff34b8245ecc2607360d7f9779add20cc79d657d5cfd56e6c29ae7f4c274659a47fcc13363de17f1dbb10bff8f651134e895bb15a\",\"name\":\"lightningcss-linux-x64-musl\",\"version\":\"1.32.0\"},\"lightningcss-win32-arm64-msvc-1.32.0.tgz\":{\"integrity\":\"8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"f126c2f01478d294ba6da08cf2c6ed6034b011541de099454ce95a0f78161877d385370006734305d6ba79365ea9ba1f6a5209845c74a8ace01c999c3d39c677\",\"name\":\"lightningcss-win32-arm64-msvc\",\"version\":\"1.32.0\"},\"lightningcss-win32-x64-msvc-1.32.0.tgz\":{\"integrity\":\"Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"026abd07f4a86587438b5905ae88e7a2a3cbc58850e16a395e22fc11526b56c07c011a02d4f596e951ad4f458a09e9a3cbc682fa5a2e2678d2ed4d7cc776f4e9\",\"name\":\"lightningcss-win32-x64-msvc\",\"version\":\"1.32.0\"},\"locate-character-3.0.0.tgz\":{\"integrity\":\"SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"496d77c2cec18da789ea9ed0e823b69dc85b6047375f727a5ab9934c3b68ef230fa954994d4c98e538db89df806fc80b9c04edca062d8832091904519f664e88\",\"name\":\"locate-character\",\"version\":\"3.0.0\"},\"lodash-4.18.1.tgz\":{\"integrity\":\"dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"74c22789c4cf544f1dd5ee68b5fc269a3971919a14a6254bc32793754b22fc26a3fe07f3cdb941702139b111d5fc0b23b829b15abb5ed93346498b82782abed1\",\"name\":\"lodash\",\"version\":\"4.18.1\"},\"lowercase-keys-2.0.0.tgz\":{\"integrity\":\"tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"b6a357ad2efca0c384ef734cc4ae0430b42c428c167fc8caa281fd83bc4f6af453ef4e91e9b91027a0d8d937bb42e91a66cba5c5adf4c10edb934a66e1788798\",\"name\":\"lowercase-keys\",\"version\":\"2.0.0\"},\"lru-cache-6.0.0.tgz\":{\"integrity\":\"Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"268e9d274e029928eece7c09492de951e5a677f1f47df4e59175e0c198be7aad540a6a90c0287e78bb183980b063df758b615a878875044302c78a938466ec88\",\"name\":\"lru-cache\",\"version\":\"6.0.0\"},\"magic-string-0.30.21.tgz\":{\"integrity\":\"vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"bddd85e1853211728670b1e8abe4c4c828f1b9e49e1e7171cb28cda7cd328345d5e2f5219c37abfe5bef96a33f6ab0796d740de4adbfde88a7c82472c7c4f609\",\"name\":\"magic-string\",\"version\":\"0.30.21\"},\"math-intrinsics-1.1.0.tgz\":{\"integrity\":\"/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"fc85ed6f0124e474cfc84c32297ea11a4617c4cf676e3eb807e8a55499c2fd1e81d291f91b85776f4a556cbec3063e2d921040a696d05257fa17a5e5f4b1eed6\",\"name\":\"math-intrinsics\",\"version\":\"1.1.0\"},\"media-typer-1.1.0.tgz\":{\"integrity\":\"aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"6a2b27ac33f818d7b4e9470a1675796df30d3c1530e23b0b19a5b059f9c7defd361a706e5d7d8c0959f945bad6a348f7a5ccd48a561b96aedf43b370dade572b\",\"name\":\"media-typer\",\"version\":\"1.1.0\"},\"merge-descriptors-2.0.0.tgz\":{\"integrity\":\"Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"4a7937d785796b214b869ddf914444b9be96b6305f3dd08f6352e7f3ff26ba7b8bba2621b000600555aca33006f8c58c6d512f71d7296e2f51ef0c36da5f50de\",\"name\":\"merge-descriptors\",\"version\":\"2.0.0\"},\"mime-2.6.0.tgz\":{\"integrity\":\"USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"5123e431e113df5ace3226abb013481d928b1a0bca73f2eb8e87c09c194eb6d7f96a346faa2440f10b1e9db728a1cb4ae9de93b3a6aa657040f976e42ad86242\",\"name\":\"mime\",\"version\":\"2.6.0\"},\"mime-db-1.52.0.tgz\":{\"integrity\":\"sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"b0f538b95edd625bed589c70c311c3d0fba285536213b4f201b439496c43081f66518bce82ba103b061040e28f27c0886c4fb51135653a82b5502da7537818be\",\"name\":\"mime-db\",\"version\":\"1.52.0\"},\"mime-db-1.54.0.tgz\":{\"integrity\":\"aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"694e4426e20dd960de982700a76bc505fa7f9b810085626750d492c348b1b3bfe45db77a3e0eb8126c0990d745841f1a5add6c1f60935eb2f1a3f880195de83d\",\"name\":\"mime-db\",\"version\":\"1.54.0\"},\"mime-types-2.1.35.tgz\":{\"integrity\":\"ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"64363e6cf9b9cd34c5f98a42ac053d9cad148080983d3d10b53d4d65616fe2cfbe4cd91c815693d20ebee11dae238323423cf2b07075cf1b962f9d21cda7978b\",\"name\":\"mime-types\",\"version\":\"2.1.35\"},\"mime-types-3.0.2.tgz\":{\"integrity\":\"Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"2db833764d21e23ba843d7c22975b86f2d1426a8fe9ce3ab23d309d6c4a3e2723c688d9ea35aa6bd01227b8543d6096c4b6e749f5e4bb16b18b42ba0892b52e4\",\"name\":\"mime-types\",\"version\":\"3.0.2\"},\"mimic-response-1.0.1.tgz\":{\"integrity\":\"j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"8f911cb67907eda99f57fab91e09a86a5d60d901c5251ada3ad9b1d09a48aa4c6106123f9494a5d67329438e6155aaf03444cea161229a7759e102b4447c6ec5\",\"name\":\"mimic-response\",\"version\":\"1.0.1\"},\"mimic-response-3.1.0.tgz\":{\"integrity\":\"z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"cf4c9623ee050ebaf0792f199ade048f91dd266932d79f8bd9ee96827dfe88ae5f5b36fa4f77e1345ab6f8c79345bd3ae1ce96af837fc2fd03cd04e33731cd19\",\"name\":\"mimic-response\",\"version\":\"3.1.0\"},\"minimatch-10.2.6.tgz\":{\"integrity\":\"vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"be92d012cf952c2af59d4d015d2d3b99a628170943007d209e042ebadb71230bad0c510c1ead9b957fbcbe98310dd2b72753f08c22627a9efb3a2b536782e5d4\",\"name\":\"minimatch\",\"version\":\"10.2.6\"},\"minimatch-3.1.5.tgz\":{\"integrity\":\"VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"5608d652c9e74fa9fe35493a799abbef37857695b62d60f33facc51ab09b1d789836e9790f3aa4d871d0e6e147d83356e576e9f3e8d5cda78db7de2cb04125e3\",\"name\":\"minimatch\",\"version\":\"3.1.5\"},\"minimatch-5.1.9.tgz\":{\"integrity\":\"7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"ee8d70100d91c8c3fb22eec635b6bdbdcd11596180089382641257d862568a9d22915fb070eb2056e63db84f023e2c908641854a586e4a464f6af37bbb573617\",\"name\":\"minimatch\",\"version\":\"5.1.9\"},\"minimatch-9.0.9.tgz\":{\"integrity\":\"OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"381c0137d00be1daa61139694b6cdab31faf4de59c956ce46e57d993b2930398f78de38e373fed4429d9a26532bcd83cdf02f966ff52b3a1cc2570202fc47662\",\"name\":\"minimatch\",\"version\":\"9.0.9\"},\"minimist-1.2.8.tgz\":{\"integrity\":\"2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"db2c8047ca8190ddd8ba17896a7529582e54ddb6f9a2c0f2c0d07c4730d5943c031dba1c009bdeaaa8f5bbcf92543ee39164f8cafb070a95aaa96a80c5bd3308\",\"name\":\"minimist\",\"version\":\"1.2.8\"},\"minipass-7.1.3.tgz\":{\"integrity\":\"tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"b44047a839c8a0cff5ad7304d738246bd83a43695ca029311cbb9cece0c9e41c5b3f977873667970682d5c092ee7ddb4d02c7b762b874ce61f4810fc9fa9a6f0\",\"name\":\"minipass\",\"version\":\"7.1.3\"},\"minizlib-3.1.0.tgz\":{\"integrity\":\"KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"299c58a350549160f64d514baf4310a0cf2f5148a0583dcb943f376bfef906a0bee2a1341dbd55a39bf516071f68d5ef7d7cebfb912143a8a783f09a0628d397\",\"name\":\"minizlib\",\"version\":\"3.1.0\"},\"mkdirp-0.5.6.tgz\":{\"integrity\":\"FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"14ffa9f1107c396a45dd86410ab3f982d0039ad5c0a41e4030b9febddc80f8fcb10a3ac2b34d268f2528cecb0edf77300de4f7c0d19d2f127933ffd8aad1c027\",\"name\":\"mkdirp\",\"version\":\"0.5.6\"},\"mri-1.2.0.tgz\":{\"integrity\":\"tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"b73cec91bddb1bc2ef606145fe60d3a6ade3a48e90f707372c49816a086ef83742b2c77515a90dec17348553661321aad5bab74607e409bddc9902e934f3aba0\",\"name\":\"mri\",\"version\":\"1.2.0\"},\"ms-2.1.3.tgz\":{\"integrity\":\"6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"e85973b9b4cb646dc9d9afcd542025784863ceae68c601f268253dc985ef70bb2fa1568726afece715c8ebf5d73fab73ed1f7100eb479d23bfb57b45dd645394\",\"name\":\"ms\",\"version\":\"2.1.3\"},\"nanoid-3.3.15.tgz\":{\"integrity\":\"y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"cbb5b282fffb9843afc53b8440307c4ad5dd3110567f5911fed961033051505901da37dc2ce0313bf48798e3b6ce0cf5a5580adbdfe4caea67d39f7f6c21dd8c\",\"name\":\"nanoid\",\"version\":\"3.3.15\"},\"negotiator-1.0.0.tgz\":{\"integrity\":\"8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"f0e7ecfc051087c31a11cae5ab9c4e5f4090f72a53179765efc9a394c35f38ad3c7f3a604c741140f07170f944b48c34c91a70b3e668ff7afee5645bcbbbb71a\",\"name\":\"negotiator\",\"version\":\"1.0.0\"},\"node-abi-4.35.0.tgz\":{\"integrity\":\"ymk4aIzxdPopw2giv8Fs1Ec6vybGkjmyxUwVqhkI4MCy2tVfXdkOGGWieWVjL0THgH+7a8lRdevyupoYj3Js/Q==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"ca6938688cf174fa29c36822bfc16cd4473abf26c69239b2c54c15aa1908e0c0b2dad55f5dd90e1865a27965632f44c7807fbb6bc95175ebf2ba9a188f726cfd\",\"name\":\"node-abi\",\"version\":\"4.35.0\"},\"node-api-version-0.2.1.tgz\":{\"integrity\":\"2xP/IGGMmmSQpI1+O/k72jF/ykvZ89JeuKX3TLJAYPDVLUalrshrLHkeVcCCZqG/eEa635cr8IBYzgnDvM2O8Q==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"db13ff20618c9a6490a48d7e3bf93bda317fca4bd9f3d25eb8a5f74cb24060f0d52d46a5aec86b2c791e55c08266a1bf7846badf972bf08058ce09c3bccd8ef1\",\"name\":\"node-api-version\",\"version\":\"0.2.1\"},\"node-gyp-12.4.0.tgz\":{\"integrity\":\"OMcPNvqTCFUnNaBlmdgq+lfNqY7gTiSmNRDjY3uAXRyudeKZEZxu3CLtjMQrx4zZxCX2b/mpNqTtwuCJgXhHkw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"38c70f36fa9308552735a06599d82afa57cda98ee04e24a63510e3637b805d1cae75e299119c6edc22ed8cc42bc78cd9c425f66ff9a936a4edc2e08981784793\",\"name\":\"node-gyp\",\"version\":\"12.4.0\"},\"node-int64-0.4.0.tgz\":{\"integrity\":\"O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"3b9973f75c5239ea173fa0ee9721df965a6af84834d0c5a2b5921bb4f7e8484bea207765e607dc63a858cc35a78f4a83e6dcf9d8f234f2ef6a52f49579405e1f\",\"name\":\"node-int64\",\"version\":\"0.4.0\"},\"nopt-9.0.0.tgz\":{\"integrity\":\"Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"661ab76bec852ab63048196e2f81fd5cfde6df2e6ebd0901ff4f42c03aee0a246647f5096279fd5b8478f2bcb4b860bbd1a7933ca2f29c1b6c70ff5e7c515c3f\",\"name\":\"nopt\",\"version\":\"9.0.0\"},\"normalize-url-6.1.0.tgz\":{\"integrity\":\"DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"0e52fe5f03b2dcdc4043cc6e0b4a243e02b8ea2b953402b4d5837b46e79806aa85786b018d5f5798203301d82dfbaebb6c297990f87d12a28a0f09da3c6d48ec\",\"name\":\"normalize-url\",\"version\":\"6.1.0\"},\"object-assign-4.1.1.tgz\":{\"integrity\":\"rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"ac98134279149c7d6c170f324fa552537cc3dec5a6bbab19848b1e63c557f8646edcfe85ec5bbe24d0e85df9251256cb2529dcdc55101d57b8714e618fe05c52\",\"name\":\"object-assign\",\"version\":\"4.1.1\"},\"object-inspect-1.13.4.tgz\":{\"integrity\":\"W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"5baee22e5e09d845c41936df78709f7eb8c37e2b6f2c0360d14957df01545124f1f762974457a0307515812a84fb0be101b8b85aa8c683d733cac4d5d84a5b7b\",\"name\":\"object-inspect\",\"version\":\"1.13.4\"},\"obug-2.1.3.tgz\":{\"integrity\":\"9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"f6688580cd8e15b6bb841fa9460bed57ce2961305aa131e886f98882246de9d448cdbc0438868d68ff9d2251acd9f345a01d127884acd09cf958555189de97ca\",\"name\":\"obug\",\"version\":\"2.1.3\"},\"on-finished-2.4.1.tgz\":{\"integrity\":\"oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"a15973920dc4340842936cddbfb209c1dfd0503e33d91c51c2991c198f29b0255c09864dab8c189d55802c733e6ebb6e26378f5a2605fc2966b83afc0a1e7e92\",\"name\":\"on-finished\",\"version\":\"2.4.1\"},\"once-1.4.0.tgz\":{\"integrity\":\"lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"94d689808fb643951140191c7042874d038f697754c67659125413658d0c15402e684a9ed44f8dcaf81dcff688c8d8ba67d3333b976fd47f27e7cfc610ba77fb\",\"name\":\"once\",\"version\":\"1.4.0\"},\"p-cancelable-2.1.1.tgz\":{\"integrity\":\"BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"0593abde74501ce9ed5234eb1fcf8b879e2c98a1e81f2babf167b557c0d2315ae5e40da66a538ec2e2519ca4438d29e4a1e061e1ab7a0701276f923b265df5c2\",\"name\":\"p-cancelable\",\"version\":\"2.1.1\"},\"p-limit-3.1.0.tgz\":{\"integrity\":\"TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"4d839a9ccdf01b0346b193767154d83c0af0e39e319d78f9aa6585d5b12801ce3e714fe897b19587ba1d7af8e9d4534776e1dcdca64c70576ec54e5773ab8945\",\"name\":\"p-limit\",\"version\":\"3.1.0\"},\"parseurl-1.3.3.tgz\":{\"integrity\":\"CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"0a2c9e3b1153fc96723799b4cfd3df5f0e1208127a4b2833d43a65d30aa39610c418604fd469ec51510bd29eb78681b57dc8f77c7ca75e2f4d60ee2758e2fea9\",\"name\":\"parseurl\",\"version\":\"1.3.3\"},\"path-is-absolute-1.0.1.tgz\":{\"integrity\":\"AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"0156f0dd42767bd6eaeb8bd2692f409b47e37b53daf296c6a934ec9977da2223299ebe4394385f24eb8b8fd49ff7964f5430147ab0df124f3c30f98f7bb50242\",\"name\":\"path-is-absolute\",\"version\":\"1.0.1\"},\"path-key-3.1.1.tgz\":{\"integrity\":\"ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"a2399e374a9dfb2d23b3312da18e3caf43deab97703049089423aee90e5fe3595f92cc17b8ab58ae18284e92e7c887079b6e1486ac7ee53aa6d889d2c0b844e9\",\"name\":\"path-key\",\"version\":\"3.1.1\"},\"path-to-regexp-8.4.2.tgz\":{\"integrity\":\"qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"a9172e21d3faf4d3e6e2a6c008af9a0e8808e42043322d6329ed2bcb9ad2409cfc2552ec0bb8d5f17a622631912cba25dcdf91e6284661cacf2d39e8ea901d04\",\"name\":\"path-to-regexp\",\"version\":\"8.4.2\"},\"pathe-2.0.3.tgz\":{\"integrity\":\"WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"5948c6700a8fd6041a72841ef8e049b0503b2dde03c97b9422367971cef970b1ef27b76d36c4ee8298712000f0b294be02b68051e3c22ab495b4f2c58ff17cf3\",\"name\":\"pathe\",\"version\":\"2.0.3\"},\"pe-library-0.4.1.tgz\":{\"integrity\":\"eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"791581e4b073ecfa43bb83d49704f43e19d07d34099430dd3dadf9bab5783acae6d2dd00a901469fe508914de4959bf027c28f3b755b045b17aae03aa7a92a67\",\"name\":\"pe-library\",\"version\":\"0.4.1\"},\"pend-1.2.0.tgz\":{\"integrity\":\"F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"1776acbf8d94b97721773b7ec57a9f5b538695505efa6c5ada6a88d29839c801d93ef16663763a76b49ffc643503ce9681610df4ace1fd6ae029aea219c1d72e\",\"name\":\"pend\",\"version\":\"1.2.0\"},\"picocolors-1.1.1.tgz\":{\"integrity\":\"xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"c5c787dac9e1b5be4cf658aa0ec984c39ea57b7efa993664117fe311bfd1c4d1727a036e97b78db250973fd1438ff2dcbb45fc284c8c71e3f69eda5a1eb0c454\",\"name\":\"picocolors\",\"version\":\"1.1.1\"},\"picomatch-4.0.4.tgz\":{\"integrity\":\"QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"40ff3c0402af31a9bfdcdc47eaf8f6a36d51e8c8f165401dea7970012fe99c6bcdf4854ba1c2c7c46608cc5860e9f510fb9b61e8fe1dbf8796f635f70d2223ec\",\"name\":\"picomatch\",\"version\":\"4.0.4\"},\"pkce-challenge-5.0.1.tgz\":{\"integrity\":\"wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"c10d1bfd6e05af4d6ab691e5a92aaca5c8f712106f8a6b1d8742a51e11fc1d166732c11ad1e6b67d350b397392f5c710af7a26f86706464e1efa2b2b65657ca9\",\"name\":\"pkce-challenge\",\"version\":\"5.0.1\"},\"pkijs-3.4.0.tgz\":{\"integrity\":\"emEcLuomt2j03vxD54giVB4SxTjnsqkU692xZOZXHDVoYyypEm+b3jpiTcc+Cf+myooc+/Ly0z01jqeNHVgJGw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"7a611c2eea26b768f4defc43e78822541e12c538e7b2a914ebddb164e6571c3568632ca9126f9bde3a624dc73e09ffa6ca8a1cfbf2f2d33d358ea78d1d58091b\",\"name\":\"pkijs\",\"version\":\"3.4.0\"},\"plist-3.1.0.tgz\":{\"integrity\":\"uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"bb2b2e9b2aef9145f4ad7fdd115aadf200b7b13073778ce859f2de4b6f676f9de299d69756f2c83585d323618dab368cbaf69c371e2e250f3e6f7cd7474a6481\",\"name\":\"plist\",\"version\":\"3.1.0\"},\"postcss-8.5.16.tgz\":{\"integrity\":\"vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"beec22965be28a57ca66c8345468f947f630c1c1f1e122ec20e23fecaea64245b1fa5e5c5074e38f983401ab1305cc97b1b7d382bc2c50d99551be71570c8fc2\",\"name\":\"postcss\",\"version\":\"8.5.16\"},\"proc-log-6.1.0.tgz\":{\"integrity\":\"iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"886f866257517f6050d140d401de8943f470cda432ea65e6b24fc8ce56326a5e00e12345c39e0c787e3fb4b905e08e56a161bd490c2ea96cd2f7d8da1501c1b9\",\"name\":\"proc-log\",\"version\":\"6.1.0\"},\"process-nextick-args-2.0.1.tgz\":{\"integrity\":\"3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"de8b943a9421b60adb39ad7b27bfaec4e4e92136166863fbfc0868477f80fbfd5ef6c92bcde9468bf757cc4632bdbc6e6c417a5a7db2a6c7132a22891459f56a\",\"name\":\"process-nextick-args\",\"version\":\"2.0.1\"},\"progress-2.0.3.tgz\":{\"integrity\":\"7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"ecf887b4b965e4b767288330d74d08fbcc495d1e605b6430598913ea226f6b46d78ad64a6bf5ccad26dd9a0debd979da89dcfd42e99dd153da32b66517d57db0\",\"name\":\"progress\",\"version\":\"2.0.3\"},\"promise-retry-2.0.1.tgz\":{\"integrity\":\"y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"cbe58a165051f011979ec3652071463d99b20dfdc314ca0b85a7e5027c99815eab1bac6ef89c1eb13a3643d47a5f0626b66c001429009377b7e6311da1e87fde\",\"name\":\"promise-retry\",\"version\":\"2.0.1\"},\"proper-lockfile-4.1.2.tgz\":{\"integrity\":\"TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"4e334f6e537807001631753cb3d004cf82664319c3d4d34bedb34e63f00a533c9a99cdfbf4558049485cfcad692f69e855bf9799928b2faf1c8f32ec88e00c68\",\"name\":\"proper-lockfile\",\"version\":\"4.1.2\"},\"proxy-addr-2.0.7.tgz\":{\"integrity\":\"llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"96542c30b4940d43d3e388ddad4fcedfbaa59e27e2b433fe670ae699972848ac8b2afb59c69c95d27dbf6c3fcde2d040019fe024475953b28cadaa0ad7e5d802\",\"name\":\"proxy-addr\",\"version\":\"2.0.7\"},\"pump-3.0.4.tgz\":{\"integrity\":\"VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"552eec8dce8a47b7b5ba4445850498e4b336b8158050f88e3dafc0de690a9a23304a64455084edd31ba3fbf95eb209c2bfe74f204625933adcc9782ab881cc70\",\"name\":\"pump\",\"version\":\"3.0.4\"},\"pure-rand-8.4.1.tgz\":{\"integrity\":\"c58R2+SPFcSIPXoU834QN/KPDDOSd8sXcSrqf6e83Me6Rrp1EYkxukkjXMVrKvKaADs1SOyNkWdfvLf6zY8qLQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"739f11dbe48f15c4883d7a14f37e1037f28f0c339277cb17712aea7fa7bcdcc7ba46ba75118931ba49235cc56b2af29a003b3548ec8d91675fbcb7facd8f2a2d\",\"name\":\"pure-rand\",\"version\":\"8.4.1\"},\"pvtsutils-1.3.6.tgz\":{\"integrity\":\"PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"3cb8105d0e87d8558269e45a93cbef935196e3ada5331079b37266ebbdcdf36cc8e2faad5543ee65d7df7596cf0c546853c900848b5616d3c25a23e9a78fc40e\",\"name\":\"pvtsutils\",\"version\":\"1.3.6\"},\"pvutils-1.2.0.tgz\":{\"integrity\":\"BbubeCEyTuQjVMakvJQ/Sxbc93F2pwmbsxONT/ZRrwU7Ua38d8unYTwXpTVLAKJ4BDuH9IGztCjQcd/N/39Dvg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"05bb9b7821324ee42354c6a4bc943f4b16dcf77176a7099bb3138d4ff651af053b51adfc77cba7613c17a5354b00a278043b87f481b3b428d071dfcdff7f43be\",\"name\":\"pvutils\",\"version\":\"1.2.0\"},\"qs-6.15.3.tgz\":{\"integrity\":\"O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"3bd825df30a5e61e5b970d4a194cd02a1039a145d297caf0508339a344b79c25cc9624afcb90f3c7bfc325c23e4b08080aff889de499c21061d684b210703bd4\",\"name\":\"qs\",\"version\":\"6.15.3\"},\"quick-lru-5.1.1.tgz\":{\"integrity\":\"WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"5aec802d18d63c31adb7fc3326269d3b901763ef2167cd215697ba3328af82b691116ef9d57dd26e146f1b778b28e60dfbc544bea2dc7f7c1d9ede386784b848\",\"name\":\"quick-lru\",\"version\":\"5.1.1\"},\"range-parser-1.3.0.tgz\":{\"integrity\":\"hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"85e9369854293ee2381350412ab4ada3e054ddedf1e31b9aaec6e2c2bdfe95fee9e388eebc5315d171564003f7c54caa5c0e11ad72c8a1a49419b4add39e9933\",\"name\":\"range-parser\",\"version\":\"1.3.0\"},\"raw-body-3.0.2.tgz\":{\"integrity\":\"K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"2b9cd08c3965c5691fed9e7125d574fc1d164cdab1eafc46ef4cc9138374901b382e8be6118589cd01b10bd6d2f5100abb76e0338d25adde73a0b275d8c43904\",\"name\":\"raw-body\",\"version\":\"3.0.2\"},\"read-binary-file-arch-1.0.6.tgz\":{\"integrity\":\"BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"04d83d10ddc30f71ac0d75fb01af0ee29f76b2bca3926cd86209a04c073a080e2e18b103cc57f13b1ba0bb6d5a90ec697171e2120b18902ea73ec42f2cb2e612\",\"name\":\"read-binary-file-arch\",\"version\":\"1.0.6\"},\"readable-stream-2.3.8.tgz\":{\"integrity\":\"8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"f29d00524e173838087b04a2d25f04a63b3e1159d688aecda03204194d07844efe67263c0f520c63ba1dbb9951ac55c683bd4bd79286f10acf9ae9b8e514ed74\",\"name\":\"readable-stream\",\"version\":\"2.3.8\"},\"readdirp-4.1.2.tgz\":{\"integrity\":\"GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"18387090b7f2c162f6b3abc48f286b8be79799f1fa8f52fb244dbb5a1a8b798ce887f0370c16981848f61ff1c56429ff90c7e29bbdc55f11094f0d3a5adc50c2\",\"name\":\"readdirp\",\"version\":\"4.1.2\"},\"require-directory-2.1.1.tgz\":{\"integrity\":\"fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"7c6c4423bfb0b06f71aef763b2b9662f6d8e3134e21d1c0032ba2211e320abc833a0b0bf3d0afb46c4434932d483f6d9019b45f9354890773aff84482abba2f9\",\"name\":\"require-directory\",\"version\":\"2.1.1\"},\"require-from-string-2.0.2.tgz\":{\"integrity\":\"Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"5dfd2759ee91b1ece214cbbe029f5b8a251b9a996ae92f7fa7eef0ed85cffc904786b5030d48706bebc0372b9bbaa7d9593bde53ffc36151ac0c6ed128bfef13\",\"name\":\"require-from-string\",\"version\":\"2.0.2\"},\"resedit-1.7.2.tgz\":{\"integrity\":\"vHjcY2MlAITJhC0eRD/Vv8Vlgmu9Sd3LX9zZvtGzU5ZImdTN3+d6e/4mnTyV8vEbyf1sgNIrWxhWlrys52OkEA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"bc78dc6363250084c9842d1e443fd5bfc565826bbd49ddcb5fdcd9bed1b353964899d4cddfe77a7bfe269d3c95f2f11bc9fd6c80d22b5b185696bcace763a410\",\"name\":\"resedit\",\"version\":\"1.7.2\"},\"resolve-alpn-1.2.1.tgz\":{\"integrity\":\"0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"d1ad45e25ef7fd915939a9099d0dc5be4276fa0493416cffaf6284e4e7436344f13e6e61e0692a91659f338ed3ec7b1b9ceb5c255105e1ea42572eaeed0dcafa\",\"name\":\"resolve-alpn\",\"version\":\"1.2.1\"},\"responselike-2.0.1.tgz\":{\"integrity\":\"4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"e20974df09f7863d473f7cb381d23b777942905f79176d4fcf804f1af2878a7c90cc02d1e426a9c02f32222d11879f0310c43f4a0b82d37c058f693433f98787\",\"name\":\"responselike\",\"version\":\"2.0.1\"},\"retry-0.12.0.tgz\":{\"integrity\":\"9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"f4b9224f08d487aad3e79e43b44f6b4d7f81281c8f7eb333100b67944b5d130af73647dfc228a1a9ed9b5800e0f8e4118edf6097a20276607f6450c2180b52a3\",\"name\":\"retry\",\"version\":\"0.12.0\"},\"rimraf-2.6.3.tgz\":{\"integrity\":\"mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"9b0a9e5b95ec036a807a31b8ea061d10d6b15e3c7da2744d09f9fb2f476eb8fe210ae4c88bf40eecf0cad3b2897e9d5dfa2cd63ebcc4243712a816b439942b88\",\"name\":\"rimraf\",\"version\":\"2.6.3\"},\"rolldown-1.1.3.tgz\":{\"integrity\":\"1F1eEtUBtFvcGm1HQ9TiUIUHPQG7mSAODrhIzjxoUEFuo8OcbrGLiVLkevNgj84TE4lnHvnumwFjhJO5Eu135g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"d45d5e12d501b45bdc1a6d4743d4e25085073d01bb99200e0eb848ce3c6850416ea3c39c6eb18b8952e47af3608fce131389671ef9ee9b01638493b912ed77e6\",\"name\":\"rolldown\",\"version\":\"1.1.3\"},\"router-2.2.0.tgz\":{\"integrity\":\"nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"9cb4eb50a9b653288beeb9616a9bbf665e3917036091919a0a965b2076a30d883094908eccb4a4f9c20f027b04a95f79e468c82c99ca6dd402d6754fcfe80061\",\"name\":\"router\",\"version\":\"2.2.0\"},\"sade-1.8.1.tgz\":{\"integrity\":\"xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"c5a9770995f55e5a3f938029c0216b1d50028bd7c1a89ed5fa6c2106cb9fff520e29b072d3df057b1f966bfe5032e6f0d3da5267fbbc118f0f5a07af26c5e9d4\",\"name\":\"sade\",\"version\":\"1.8.1\"},\"safe-buffer-5.1.2.tgz\":{\"integrity\":\"Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"19dd94641243917958ec66c9c5fb04f3f9ef2a45045351b7f1cd6c88de903fa6bd3d3f4c98707c1a7a6c71298c252a05f0b388aedf2e77fc0fb688f2b381bafa\",\"name\":\"safe-buffer\",\"version\":\"5.1.2\"},\"safer-buffer-2.1.2.tgz\":{\"integrity\":\"YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"619a372bcd920fb462ca2d04d4440fa232f3ee4a5ea6749023d2323db1c78355d75debdbe5d248eeda72376003c467106c71bbbdcc911e4d1c6f0a9c42b894b6\",\"name\":\"safer-buffer\",\"version\":\"2.1.2\"},\"sanitize-filename-1.6.4.tgz\":{\"integrity\":\"9ZyI08PsvdQl2r/bBIGubpVdR3RR9sY6RDiWFPreA21C/EFlQhmgo20UZlNjZMMZNubusLhAQozkA0Od5J21Eg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"f59c88d3c3ecbdd425dabfdb0481ae6e955d477451f6c63a44389614fade036d42fc41654219a0a36d1466536364c31936e6eeb0b840428ce403439de49db512\",\"name\":\"sanitize-filename\",\"version\":\"1.6.4\"},\"sax-1.6.1.tgz\":{\"integrity\":\"42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"e36b415702d69da42f5b9cdce076d9ad3b9671c1020997c18bdd850eec2dab16ac1fe25b3c1dff14e29bd66db6d8ae364785b1bb1cf332c4ecc1fce0b52bbae1\",\"name\":\"sax\",\"version\":\"1.6.1\"},\"semver-5.7.2.tgz\":{\"integrity\":\"cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"701ce79d0f4a8c9a94ebb079d91302eb908c6ab2b6eb4d161676e471a8b05aadf1cbfe61685265b21827a63a2f31527e1df7f8f5df06127d1bf3b0b9a43435d2\",\"name\":\"semver\",\"version\":\"5.7.2\"},\"semver-6.3.1.tgz\":{\"integrity\":\"BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"051ed5bc30951cefaadb10445ac9314ba0c9135a919dbec3c7352ba206fbd425a849f89c07162c88019df8a9749a6abf329ac6f7202b464cab4314cee978cccc\",\"name\":\"semver\",\"version\":\"6.3.1\"},\"semver-7.7.4.tgz\":{\"integrity\":\"vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"bc5282d8812d427561a53efc875629f30cf0adff0233e33328c1c62597c1b738593727111675ec1e4e84e53c4892432c80d4bb99d5f700607bc7640cd9d8b894\",\"name\":\"semver\",\"version\":\"7.7.4\"},\"semver-7.8.5.tgz\":{\"integrity\":\"Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"63bfca0ec6fc2e3a28669c1aa86cae94ee8342592c8029dc7211c693eb19218e1206f52870c044147e54af57c8e1d57e26f974c3a723bee71a222e34a6e462a0\",\"name\":\"semver\",\"version\":\"7.8.5\"},\"send-1.2.1.tgz\":{\"integrity\":\"1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"d609d97fb0c572821c6a34e34f08f0b838f3bb3e0f3dc6364ad28f96c180435f981f6d08455ac169749699d8e8c1327abbc45cd353e860e1875df3f599871935\",\"name\":\"send\",\"version\":\"1.2.1\"},\"serve-static-2.2.1.tgz\":{\"integrity\":\"xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"c515c19f4a4fa904d54220bcc3242b2acd8c3a55f6e334343ce19a8f492e96dbe8382b2d050339caf3a1015494c0e32342d4efb0f5a83421df3c6c1a6902614f\",\"name\":\"serve-static\",\"version\":\"2.2.1\"},\"setprototypeof-1.2.0.tgz\":{\"integrity\":\"E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"1392c35fb5aba7ce4a8a5e5b859bf8ea3f2339e6e82aae4932660cde05467461fcc45a4f59750cb0dae53830ab928c4c11e362fd7648c2e46f6385cdc18309a7\",\"name\":\"setprototypeof\",\"version\":\"1.2.0\"},\"shebang-command-2.0.0.tgz\":{\"integrity\":\"kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"907c6bdb366962d766acdd6a0e3aeb5ff675ad1d641bc0f1fa09292b51b87979af5ecc26704d614d6056614ce5ada630d7fc99a7a62e0d8efb62dbdb3747660c\",\"name\":\"shebang-command\",\"version\":\"2.0.0\"},\"shebang-regex-3.0.0.tgz\":{\"integrity\":\"7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"efef9d161b5cc77df9dee05aabc0c347836ec417ad0730bb6503a19934089c711de9b4ab5dd884cb30af1b4ed9e3851874b4a1594c97b7933fca1cfc7a471bd4\",\"name\":\"shebang-regex\",\"version\":\"3.0.0\"},\"side-channel-1.1.1.tgz\":{\"integrity\":\"6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"eb1e9d2bacc97694f3178b1078d631c2dbc1cdfe848381ad95eb12f781cebd3b9d51ec8ad965c06887e60e0b32b2562b441785225b22e78018b05194ba19afad\",\"name\":\"side-channel\",\"version\":\"1.1.1\"},\"side-channel-list-1.0.1.tgz\":{\"integrity\":\"mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"9a39ffd1b8bfa145118dce5797b21a5a2fce24926e9aea0915025f0c3c8ee3afa1056b1f69533ae53047ab67a864187397d11c8713a28e991b442f12541414d3\",\"name\":\"side-channel-list\",\"version\":\"1.0.1\"},\"side-channel-map-1.0.1.tgz\":{\"integrity\":\"VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"5428c235f80cb1bcb7b53768d369db8ed33f7b0adaea33c79a94e17a7913621f291bdb9c67fd4ff12a38bb814605e93f063a4e56c0c23282c0fe2b8128815744\",\"name\":\"side-channel-map\",\"version\":\"1.0.1\"},\"side-channel-weakmap-1.0.2.tgz\":{\"integrity\":\"WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"58f4bf1ef1d04d89c78ac2e8f4c72a0473899361641cefed969be5772ae77a6e1a790a7885a8b7832b61b3083aa74d684a84e5e7cadca621408c5d9baf6024d8\",\"name\":\"side-channel-weakmap\",\"version\":\"1.0.2\"},\"siginfo-2.0.0.tgz\":{\"integrity\":\"ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"c9bc7458ed7ff1b4812c459766f11dee0316dd29f7245956dd3bd7d674446c32d135035a78d37c58ad26781c0f74068e23b4ed4514499ff12cd7386bac21eeee\",\"name\":\"siginfo\",\"version\":\"2.0.0\"},\"signal-exit-3.0.7.tgz\":{\"integrity\":\"wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"c270f6644fa5f923c2feea12d2f5de13d2f5fb4c2e68ca8a95fcfd00c528dfc26cc8b48159215c1d1d51ae2eb62d9735daf2ebd606f78e5ee2c10860c2901b19\",\"name\":\"signal-exit\",\"version\":\"3.0.7\"},\"simple-update-notifier-2.0.0.tgz\":{\"integrity\":\"a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"6b607d6342a535797dbbfbec5bab1322ef6f184a5f2aedb0455ea5d47dd711ab3fd20508cc6cc1a0ffc8a2e4dc5106e6f495992c7dc23b1ca7d374d89456b1eb\",\"name\":\"simple-update-notifier\",\"version\":\"2.0.0\"},\"source-map-0.6.1.tgz\":{\"integrity\":\"UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"52381aa6e99695b3219018334fb624739617513e3a17488abbc4865ead1b7303f9773fe1d0f963e9e9c9aa3cf565bab697959aa989eb55bc16396332177178ee\",\"name\":\"source-map\",\"version\":\"0.6.1\"},\"source-map-js-1.2.1.tgz\":{\"integrity\":\"UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"51758c2a12cec1529bef6f0852d40f5f17d853ebac7726ed52b2bff2e184f0240cbeb84ea70bf30c1c23d108522fb31073bbc8b084811bc550f3e203431a5f40\",\"name\":\"source-map-js\",\"version\":\"1.2.1\"},\"source-map-support-0.5.21.tgz\":{\"integrity\":\"uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"b811d4dcbddccec232617297f3c7ddac6a2fc5d482a13183459e92617b524712d95331e0e4fffae87b7aba85251eef4466877e8a75e12a8dea420c17513ff2d7\",\"name\":\"source-map-support\",\"version\":\"0.5.21\"},\"stackback-0.0.2.tgz\":{\"integrity\":\"1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"d573091397d0a358c61fa63fede6e7c0f3811242049d3e10177d9de51d7e557757bde334201309b7ccdf6b15f53f7421570ad87bee7bebe8e400db524b69816f\",\"name\":\"stackback\",\"version\":\"0.0.2\"},\"stat-mode-1.0.0.tgz\":{\"integrity\":\"jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"8c7f4486d2888ee5d9d9c5b19974bc64ff345f20b789ab10c4c0d5f23ce1349a5f0dbed56d02d55b85afb31cfd419bf357e1b862849f05454a0cecb12f38bfb2\",\"name\":\"stat-mode\",\"version\":\"1.0.0\"},\"statuses-2.0.2.tgz\":{\"integrity\":\"DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"0ef132e795770c1eee927468fb888e193e5f3f5b2547cc10a2155d9278a064f32932cb5a289416870898040089137525da94e70138a18416274616501c606247\",\"name\":\"statuses\",\"version\":\"2.0.2\"},\"std-env-4.1.0.tgz\":{\"integrity\":\"Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"46aef26dc5f646e0b9e6bf6868f5445bbff1bb7b63f2ee067816070560b272116dccc22bf3a03b7b73cf1013d3dfbb074ad297dfe4e25ff16bfc00a624b5652d\",\"name\":\"std-env\",\"version\":\"4.1.0\"},\"string-width-4.2.3.tgz\":{\"integrity\":\"wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"c0ac90450a63274b08a7ad84ad265d1ac8cc256b1aa79a1136284786ee86ec954effd8c807a5327af2feb57b8eaab9e0f23fdcc4a4d6c96530bd24eb8a2673fe\",\"name\":\"string-width\",\"version\":\"4.2.3\"},\"string_decoder-1.1.1.tgz\":{\"integrity\":\"n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"9ff4a19ef0e2e851db6d57ef8aba3e5a88e2173bfeb3c30f30705ccd578f7d4a4324bc282d3d21b759786300426e2f29240bde104767907c8fc933ff9b345fc2\",\"name\":\"string_decoder\",\"version\":\"1.1.1\"},\"strip-ansi-6.0.1.tgz\":{\"integrity\":\"Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"637f153d21dcaa416b0a916743dbee4979aabaebf9a1738aa46793e9a1abaf7a3719cf409556ba2417d448e0a76f1186645fbfd28a08ecaacfb944b3b54754e4\",\"name\":\"strip-ansi\",\"version\":\"6.0.1\"},\"sumchecker-3.0.1.tgz\":{\"integrity\":\"MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"32f8d7ce4cff04e7f2543906d2814eb41c475f6bb780a6cc1c817f7576e566c803dc158e14b987a2f229658ec1ca425d02372a442062d5660135d102f7223bbe\",\"name\":\"sumchecker\",\"version\":\"3.0.1\"},\"supports-color-7.2.0.tgz\":{\"integrity\":\"qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"aa9080bd197db2db8e1ef78ab27ec79dc251befe74d6a21a70acd094effe2f0c5cf7ed2adb02f2bf80dfbedf34fc33e7da9a8e06c25d0e2a205c647df8ebf047\",\"name\":\"supports-color\",\"version\":\"7.2.0\"},\"svelte-5.56.4.tgz\":{\"integrity\":\"/d0QHehmRuJW8gVz395MTkPcPozxzdjBMBE8oEYGz8O3b9KTMzzQ9ZHJQLuFKOHOPQbU6kx/X4iid/EBBzH7iw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"fddd101de86646e256f20573dfde4c4e43dc3e8cf1cdd8c130113ca04606cfc3b76fd293333cd0f591c940bb8528e1ce3d06d4ea4c7f5f88a277f1010731fb8b\",\"name\":\"svelte\",\"version\":\"5.56.4\"},\"svelte-check-4.7.1.tgz\":{\"integrity\":\"FGUOmAqxXdN/H9Zm8slrqO7SLtFisXRB7rfOsHNJ3MLTD2po/+Stg8XyErkpumPHbuUiYTcqrEIzxpVWKTLqtg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"14650e980ab15dd37f1fd666f2c96ba8eed22ed162b17441eeb7ceb07349dcc2d30f6a68ffe4ad83c5f212b929ba63c76ee52261372aac4233c695562932eab6\",\"name\":\"svelte-check\",\"version\":\"4.7.1\"},\"tar-7.5.22.tgz\":{\"integrity\":\"MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"3053bf433bed00e9896e484e6824ef6c670537d2fd6fe26e9c8b03c1a2a58d239d70b31e6b7349d64f54b33feb8dd7d25d3ab875fcdf792ed6e29e1838000778\",\"name\":\"tar\",\"version\":\"7.5.22\"},\"temp-0.9.4.tgz\":{\"integrity\":\"yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"c98aebb169eb5cc71db27bbfed83180287ccd64b692f9072eef6617f5e42ad78a3596ac461992ce405c1b9d6a57d25892e59de9ff4142540796a807492a65418\",\"name\":\"temp\",\"version\":\"0.9.4\"},\"temp-file-3.4.0.tgz\":{\"integrity\":\"C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"0b9b63942fc70ad5543a2dca595a24778bc755588e9868ed2f0221e0cbb33e8fe73184d5fe9d6eaeddd19cccf62165c374a106247de4e7e28fc6da91b14606b6\",\"name\":\"temp-file\",\"version\":\"3.4.0\"},\"tiny-async-pool-1.3.0.tgz\":{\"integrity\":\"01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"d35100c39103adc56b760c822e0a123efab39c2d2c5710d255e88ecf4f455298e1ef51bbf550aa9de3abfb1beded3d6befa085e9965f3e31e8acddbe77ede6a8\",\"name\":\"tiny-async-pool\",\"version\":\"1.3.0\"},\"tinybench-2.9.0.tgz\":{\"integrity\":\"0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"d3e0d4bea58c55a94b9a16ba96be240fc88030ad47cd5d3f68a9c2b566fdbfdeb8d539cffcc15becf7366f1a314234d7004aebc9756050e7efd98a8d965a867a\",\"name\":\"tinybench\",\"version\":\"2.9.0\"},\"tinyexec-1.2.4.tgz\":{\"integrity\":\"SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"4877ffaf8f1beef3ab8ef7bd3f1268dcc379bf9caeca31ef75472b41f7d3dd65cc51f9c69870d56c2e24dec1c96894e0642c29529948680a3900db4cca9dd81e\",\"name\":\"tinyexec\",\"version\":\"1.2.4\"},\"tinyglobby-0.2.17.tgz\":{\"integrity\":\"wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"c1747f758a5ca8a99f5a911d66388a24ec023459dd0f40cc9eb5bf7188d51adb449017d581c2c51e836b963e3b9a339589cf72c8dbbae5a96c805e0d4324dada\",\"name\":\"tinyglobby\",\"version\":\"0.2.17\"},\"tinyrainbow-3.1.0.tgz\":{\"integrity\":\"Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"05ff882e6060adeb54add271cd73344a05cb6775df89a52e3a3fc82901ee4d78a9fb4e579febb21187558349180e2a5305c2eb095c94cc03f3ed0980adbd269b\",\"name\":\"tinyrainbow\",\"version\":\"3.1.0\"},\"tmp-0.2.7.tgz\":{\"integrity\":\"e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"7b4be8b48a69e14a36009612cd51d5eb109c6b0ba27b3dc3cea0c06eb4dcdd8c4192994de9ef9d335dd97887199c383f4294ae536cdf677af3c18f2e9049da5f\",\"name\":\"tmp\",\"version\":\"0.2.7\"},\"tmp-promise-3.0.3.tgz\":{\"integrity\":\"RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"47033b3283e88cfc6c381627c9dda1cb46f1b48955ae284db3da63e5252f63c673d6c41c406dad1b5852afc3c3c5f80407c44d28386a6c896ba086ab48d0cdb1\",\"name\":\"tmp-promise\",\"version\":\"3.0.3\"},\"toidentifier-1.0.1.tgz\":{\"integrity\":\"o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"a39b123ca12483f0c840d987e37574fee7ab2eba7355e764521f2d18dbda797a5fa6ec2329e9e54a8c7fd8efc14e5654b447be246eece58844cfad3c3e500744\",\"name\":\"toidentifier\",\"version\":\"1.0.1\"},\"truncate-utf8-bytes-1.0.2.tgz\":{\"integrity\":\"95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"f793eed505d0bebb86121bfad9708c3b7326f741ac70e08296fac853008cd0f60e5cade4685de5dec207c71ef54e125f71b3363b902ee923b701609211f5b899\",\"name\":\"truncate-utf8-bytes\",\"version\":\"1.0.2\"},\"tslib-2.8.1.tgz\":{\"integrity\":\"oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"a0916ef781d06fe29576e49440bef09e99aa9df98bb0e03f9c087a6fa107d30084a0ad3f98f79753a737c0a0d5f373243ae1cf447b525ca294f7d2016b34bfdb\",\"name\":\"tslib\",\"version\":\"2.8.1\"},\"tsx-4.22.4.tgz\":{\"integrity\":\"X8EX+XV4QR5xCsrgxaED954zTDfY8KqlDtskKEL0cHhyS/P8b4IFOvGDQpsC9Q1XnLq915wEfwwY/zzskCtmhg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"5fc117f97578411e710acae0c5a103f79e334c37d8f0aaa50edb242842f47078724bf3fc6f82053af183429b02f50d579cbabdd79c047f0c18ff3cec902b6686\",\"name\":\"tsx\",\"version\":\"4.22.4\"},\"type-is-2.1.0.tgz\":{\"integrity\":\"faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"7da607c346a705b73f916177cc54c49f14853801945fd1856ce06d86f0dd2ec22512858e14eb52d3380289063022c90bf6219764bde40170fc3a86781a63004c\",\"name\":\"type-is\",\"version\":\"2.1.0\"},\"typescript-5.9.3.tgz\":{\"integrity\":\"jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"8e5d6f6733c38a72ebf5e52ddc9feded5e8580d130f508ef04f772b33f4a7d00c3e357d0ac2d98e2f290762694a454f86d795bd511e12e9a7cc2d9ba3394e04b\",\"name\":\"typescript\",\"version\":\"5.9.3\"},\"undici-6.28.1.tgz\":{\"integrity\":\"zWpdTVD54H48CIybL0rWQ3ukpb9d23wM7eH5RtfdmeP70cWHNjtfo7P4vZX+5CoDcO53J4Pu5uXp7lNfjc6DRA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"cd6a5d4d50f9e07e3c088c9b2f4ad6437ba4a5bf5ddb7c0cede1f946d7dd99e3fbd1c587363b5fa3b3f8bd95fee42a0370ee772783eee6e5e9ee535f8dce8344\",\"name\":\"undici\",\"version\":\"6.28.1\"},\"undici-types-6.21.0.tgz\":{\"integrity\":\"iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"8b00d9aa0d10006ae0f516afe47e27d0ceb87379a4479f5c27ac10a7eec2e2723482c984c5a79d6982cd3b8e1e4f802d041c236d38863cc96dd8c7744fd1fd25\",\"name\":\"undici-types\",\"version\":\"6.21.0\"},\"undici-types-8.3.0.tgz\":{\"integrity\":\"j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"8f7ef949c57ad1da26f9890f1487d32dc3a23f190dfdbb87cf91a86e32e18b116e00d68db370bd9781a6ad6a9e8e05d627b05b25c158a53114912d467bc6e965\",\"name\":\"undici-types\",\"version\":\"8.3.0\"},\"universalify-0.1.2.tgz\":{\"integrity\":\"rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"ac125e2390970259b2d6957eeb5ed607d27add4e9771acc71c5d9fd9d6c98b1e17ce9505d114b765b8f414620e080bdae4ffddfc604e61a002435c3ed1acd492\",\"name\":\"universalify\",\"version\":\"0.1.2\"},\"universalify-2.0.1.tgz\":{\"integrity\":\"gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"829b4735082120d9dcfef4c6224d12385185357c3b255ae5454b42a2725196f6b0e83b97d303b925e928f6c5ab301861f8fb18019ee85c088e9dffd42a88328b\",\"name\":\"universalify\",\"version\":\"2.0.1\"},\"unpipe-1.0.0.tgz\":{\"integrity\":\"pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"a63cb66d8852b2e7f05a52b03dcfa5ddc37bfb0b8994aeaecf461d2443a54036e5ea3a3f6253e2e266fc6a0524542f0117b57c36ecdec8f36a464b00de1ced29\",\"name\":\"unpipe\",\"version\":\"1.0.0\"},\"unzipper-0.12.5.tgz\":{\"integrity\":\"tXYOi9R57Uj/2Z25SOs5RRSzq886MBQj2gY8dPL+xl/kv6s6SvByoKfAtvfVeEuhntWDgjd2o9p2lb4TVPAz0A==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"b5760e8bd479ed48ffd99db948eb394514b3abcf3a301423da063c74f2fec65fe4bfab3a4af072a0a7c0b6f7d5784ba19ed583823776a3da7695be1354f033d0\",\"name\":\"unzipper\",\"version\":\"0.12.5\"},\"utf8-byte-length-1.0.5.tgz\":{\"integrity\":\"Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"5e7d30dccb6243ace8cf6bc5c9456bb9a08be773bf0f052f90478ebe3faeba5326d019141985a6058572125a996922e163a643d2e95f537681adad9a553e317c\",\"name\":\"utf8-byte-length\",\"version\":\"1.0.5\"},\"util-deprecate-1.0.2.tgz\":{\"integrity\":\"EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"10f0f9ab5b97c85c49a42acb9c27359c79eade039ae83641a1c008888d93692080ed5089d5424331a802cc891736c5187c3d5d68afff2d3110f318886eb1ed73\",\"name\":\"util-deprecate\",\"version\":\"1.0.2\"},\"vary-1.1.2.tgz\":{\"integrity\":\"BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"04d19b58b7ddd1e50f69b8645d4566d23f2ebaf444c93879a2f45afddca8c3f06a01b649c82fb97d4f88cd03b39802b362a6110084a8461750af778867f3d7aa\",\"name\":\"vary\",\"version\":\"1.1.2\"},\"vite-8.1.2.tgz\":{\"integrity\":\"6YYPbRXTxx6bRXmOn7XdnQAy5DQNHhDgtjhDHI13oe4pY93kkcdGJWxpGwOm++/Wh0QpQhDrpIoVMrmrsI5AGQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"e9860f6d15d3c71e9b45798e9fb5dd9d0032e4340d1e10e0b638431c8d77a1ee2963dde491c746256c691b03a6fbefd68744294210eba48a1532b9abb08e4019\",\"name\":\"vite\",\"version\":\"8.1.2\"},\"vitefu-1.1.3.tgz\":{\"integrity\":\"ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"b9be28907ed9e4a2e36fa843ca3aab197a96b56be861d5372069bf368ae98079dc2a82d309f4486ef961066eebd18b2d21a411625a78c846c5a8370a4b35d24a\",\"name\":\"vitefu\",\"version\":\"1.1.3\"},\"vitest-4.1.9.tgz\":{\"integrity\":\"nE3/LEyc0z87uHYLZebqCUOaJr2hdtuPp7BQ4BosVFnfltxgAvMG08NyrSGlPpOUWvR27c5flSmYFTNr78L9GQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"9c4dff2c4c9cd33f3bb8760b65e6ea09439a26bda176db8fa7b050e01a2c5459df96dc6002f306d3c372ad21a53e93945af476edce5f95299815336befc2fd19\",\"name\":\"vitest\",\"version\":\"4.1.9\"},\"wasmoon-1.16.0.tgz\":{\"integrity\":\"FlRLb15WwAOz1A9OQDbf6oOKKSiefi5VK0ZRF2wgH9xk3o5SnU11tNPaOnQuAh1Ucr66cwwvVXaeVRaFdRBt5g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"16544b6f5e56c003b3d40f4e4036dfea838a29289e7e2e552b4651176c201fdc64de8e529d4d75b4d3da3a742e021d5472beba730c2f55769e55168575106de6\",\"name\":\"wasmoon\",\"version\":\"1.16.0\"},\"webcrypto-core-1.9.2.tgz\":{\"integrity\":\"gsXecm82UQNlTBURJGuqOWy1Ww08S3kZUcr3aOJS02Pk0xLtkfeUAVC0u0xhgdonFme80edSJUIJyuvL/7250Q==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"82c5de726f365103654c1511246baa396cb55b0d3c4b791951caf768e252d363e4d312ed91f7940150b4bb4c6181da271667bcd1e752254209caebcbffbdb9d1\",\"name\":\"webcrypto-core\",\"version\":\"1.9.2\"},\"which-2.0.2.tgz\":{\"integrity\":\"BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"04b2374e5d535b73ef97bd25df2ab763ae22f9ac29c17aac181616924a8cb676d782b303fb28fbae15b492e103c7325a6171a3116e6881aa4a34c10a34c8e26c\",\"name\":\"which\",\"version\":\"2.0.2\"},\"which-5.0.0.tgz\":{\"integrity\":\"JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"244746cc7c3092b6d6a063a5207a90e60b69aca18e7a7a431e9c44f73551d5b59b3ad611c8f3c731ef4568feb1eb50a635a4d385291bd03009b5ee630fe0e6cd\",\"name\":\"which\",\"version\":\"5.0.0\"},\"which-6.0.1.tgz\":{\"integrity\":\"oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"a062dee3a308ac246a5fbcad3d47fae84018bdd78c219627dd66a872aa8a640c6b06992a1df2ffaaf4f227f6d3939f80a870a35e6aefdc2116832dfaf3385152\",\"name\":\"which\",\"version\":\"6.0.1\"},\"why-is-node-running-2.3.0.tgz\":{\"integrity\":\"hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"854ae669605d543731bd8aa7ca1d3dcee9cacd13968db65388dcbc741123912ede8440d089b5c9ed7be59ad6f0b9372552223237e0b25d00f8566928f1f366f3\",\"name\":\"why-is-node-running\",\"version\":\"2.3.0\"},\"wrap-ansi-7.0.0.tgz\":{\"integrity\":\"YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"6151888f691a98b493c70e8db198e80717d2c2c9f4c9c75eb26738a7e436d5ce733ee675a65f8d7f155dc4fb5d1ef98d54e43a5d2606e0052dcadfc58bb0f5e9\",\"name\":\"wrap-ansi\",\"version\":\"7.0.0\"},\"wrappy-1.0.2.tgz\":{\"integrity\":\"l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"9784a9fc346c7a8afdc0be84bd5dbe4ee427eb774c90f8d9feca7d5e48214c46d5f4a94f4b5c54b19deeeff2103b8c31b5c141e1b82940f45c477402bdeccf71\",\"name\":\"wrappy\",\"version\":\"1.0.2\"},\"ws-8.21.0.tgz\":{\"integrity\":\"Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"56ca76f1bec345c8a6150bebaaed967a4df3d626310c25aa1d807c42c9e4fd2e117da090ccf18fc8136e563255ddc77a5222ad52da7ab0d33bee05afcdc087fa\",\"name\":\"ws\",\"version\":\"8.21.0\"},\"xmlbuilder-15.1.1.tgz\":{\"integrity\":\"yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"c8ca8606ab57c9e3757b74c662f80d803559de3f385b873090e5d0b30821a25e803e065669f7fd9676ef37b3076093a25ecbc63d7b634d8244882f49db0bfd12\",\"name\":\"xmlbuilder\",\"version\":\"15.1.1\"},\"y18n-5.0.8.tgz\":{\"integrity\":\"0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"d297c5cde81e0d62472480264cb44fd83c078dd179b3b8e8f6dbb3b5d43102120d09dbd2fb79c620da8f774d00a61a8947fd0b8403544baffeed209bf7c60e7c\",\"name\":\"y18n\",\"version\":\"5.0.8\"},\"yallist-4.0.0.tgz\":{\"integrity\":\"3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"df074689d672ab93c1d3ce172c44b94e9392440df08d7025216321ba6da445cbffe354a7d9e990d1dc9c416e2e6572de8f02af83a12cbdb76554bf8560472dec\",\"name\":\"yallist\",\"version\":\"4.0.0\"},\"yallist-5.0.0.tgz\":{\"integrity\":\"YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"620bd44dfc2ac9ced45d532b07e4889ac5584a64d2f17fed4abb5d35930898cfa7efe413ae2457c978a6d2606b4d735eab3545d0a5868073de8b2562145acd0f\",\"name\":\"yallist\",\"version\":\"5.0.0\"},\"yargs-17.7.3.tgz\":{\"integrity\":\"GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"199b63c66fc9ff84d2c6e2f714d6230a62e4b414e7230feb56629223229e6006699890768a0f556ae082e71b1af3618d29528302aa4e9f7295ccdb74ce6ad4d2\",\"name\":\"yargs\",\"version\":\"17.7.3\"},\"yargs-parser-21.1.1.tgz\":{\"integrity\":\"tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"b55a6c256ec376379c0221696c80757b7ab1210b04e8da0f739fde4ddadb6c80b88742d5b16867a1ade0fa6d87725048ba31f3b31678549540f8652e736fcb07\",\"name\":\"yargs-parser\",\"version\":\"21.1.1\"},\"yauzl-2.10.0.tgz\":{\"integrity\":\"p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"a786bd23a5fa9eee888681a606a01c6c9cb59a50b88f6eef10f657f45e0be3fbd94f72f2ab5564147c3f57f3d4701f41ba8f831b7887913d31dd0c9ae7ccdcde\",\"name\":\"yauzl\",\"version\":\"2.10.0\"},\"yocto-queue-0.1.0.tgz\":{\"integrity\":\"rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"ad592cbec9cd09d27fa2119ceb180fc3237c7a1782c6c88b33c9b1b84fedfe6395a897b03ee3b59a22e94c74224604ca08b7b12f831e00555a82db3b1e6359d9\",\"name\":\"yocto-queue\",\"version\":\"0.1.0\"},\"zimmerframe-1.1.4.tgz\":{\"integrity\":\"B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"079f0d18112873c63d31658240697f82af710427b822228cd1adb1ec665d40a396e44c6bf12d56db827a3a03359e32bcc42446bc02482ff3315c77fa4a499029\",\"name\":\"zimmerframe\",\"version\":\"1.1.4\"},\"zod-3.25.76.tgz\":{\"integrity\":\"gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"83352dfeab7cd675ec14628815c0b76277c4031e4d92e9c27e70e5bee0524854b4d9b717bb82e679ad001485306cb5b158fc7777da7c4b94286ae8ca70d43171\",\"name\":\"zod\",\"version\":\"3.25.76\"},\"zod-to-json-schema-3.25.2.tgz\":{\"integrity\":\"O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==\",\"integrity_algo\":\"sha512\",\"integrity_digest\":\"3bf3e07e7a53d712920de4184827d12391b2de13dff7598a543b982d41d924c883169b6f3f8d4c4a75a87e6f1d9c29b4db9e9935f64833b0d2cee48c0059e31c\",\"name\":\"zod-to-json-schema\",\"version\":\"3.25.2\"}},\"store_version\":\"v10\"}", + "dest-filename": "pnpm-manifest.json", + "dest": "flatpak-node" + }, + { + "type": "script", + "commands": [ + "case \"$FLATPAK_ARCH\" in", + "\"i386\")", + " export ELECTRON_BUILDER_ARCH_ARGS=\"--ia32\"", + " ;;", + "\"x86_64\")", + " export ELECTRON_BUILDER_ARCH_ARGS=\"--x64\"", + " ;;", + "\"arm\")", + " export ELECTRON_BUILDER_ARCH_ARGS=\"--armv7l\"", + " ;;", + "\"aarch64\")", + " export ELECTRON_BUILDER_ARCH_ARGS=\"--arm64\"", + " ;;", + "esac" + ], + "dest-filename": "electron-builder-arch-args.sh", + "dest": "flatpak-node" + }, + { + "type": "script", + "commands": [ + "version=$(node --version | sed \"s/^v//\")", + "nodedir=$(dirname \"$(dirname \"$(which node)\")\")", + "mkdir -p \"flatpak-node/cache/node-gyp/$version\"", + "ln -s \"$nodedir/include\" \"flatpak-node/cache/node-gyp/$version/include\"", + "echo 11 > \"flatpak-node/cache/node-gyp/$version/installVersion\"" + ], + "dest-filename": "setup_sdk_node_headers.sh", + "dest": "flatpak-node" + }, + { + "type": "shell", + "commands": [ + "mkdir -p \"88235104d26da3ef5ac14266e9fa3215cbe53b9c4c7af05394addc599109230d\"", + "ln -s \"../SHASUMS256.txt-38.8.6\" \"88235104d26da3ef5ac14266e9fa3215cbe53b9c4c7af05394addc599109230d/SHASUMS256.txt\"" + ], + "dest": "flatpak-node/cache/electron" + }, + { + "type": "shell", + "commands": [ + "mkdir -p \"88235104d26da3ef5ac14266e9fa3215cbe53b9c4c7af05394addc599109230d\"", + "ln -s \"../electron-v38.8.6-linux-arm64.zip\" \"88235104d26da3ef5ac14266e9fa3215cbe53b9c4c7af05394addc599109230d/electron-v38.8.6-linux-arm64.zip\"" + ], + "dest": "flatpak-node/cache/electron", + "only-arches": [ + "aarch64" + ] + }, + { + "type": "shell", + "commands": [ + "mkdir -p \"88235104d26da3ef5ac14266e9fa3215cbe53b9c4c7af05394addc599109230d\"", + "ln -s \"../electron-v38.8.6-linux-armv7l.zip\" \"88235104d26da3ef5ac14266e9fa3215cbe53b9c4c7af05394addc599109230d/electron-v38.8.6-linux-armv7l.zip\"" + ], + "dest": "flatpak-node/cache/electron", + "only-arches": [ + "arm" + ] + }, + { + "type": "shell", + "commands": [ + "mkdir -p \"88235104d26da3ef5ac14266e9fa3215cbe53b9c4c7af05394addc599109230d\"", + "ln -s \"../electron-v38.8.6-linux-x64.zip\" \"88235104d26da3ef5ac14266e9fa3215cbe53b9c4c7af05394addc599109230d/electron-v38.8.6-linux-x64.zip\"" + ], + "dest": "flatpak-node/cache/electron", + "only-arches": [ + "x86_64" + ] + }, + { + "type": "shell", + "commands": [ + "mkdir -p \"bin/@esbuild\"", + "cp \".package/@esbuild/linux-arm64@0.28.1/bin/esbuild\" \"bin/@esbuild/linux-arm64@0.28.1\"", + "ln -sf \"@esbuild/linux-arm64@0.28.1\" \"bin/esbuild-current\"" + ], + "dest": "flatpak-node/cache/esbuild", + "only-arches": [ + "aarch64" + ] + }, + { + "type": "shell", + "commands": [ + "mkdir -p \"bin/@esbuild\"", + "cp \".package/@esbuild/linux-arm@0.28.1/bin/esbuild\" \"bin/@esbuild/linux-arm@0.28.1\"", + "ln -sf \"@esbuild/linux-arm@0.28.1\" \"bin/esbuild-current\"" + ], + "dest": "flatpak-node/cache/esbuild", + "only-arches": [ + "arm" + ] + }, + { + "type": "shell", + "commands": [ + "mkdir -p \"bin/@esbuild\"", + "cp \".package/@esbuild/linux-ia32@0.28.1/bin/esbuild\" \"bin/@esbuild/linux-ia32@0.28.1\"", + "ln -sf \"@esbuild/linux-ia32@0.28.1\" \"bin/esbuild-current\"" + ], + "dest": "flatpak-node/cache/esbuild", + "only-arches": [ + "i386" + ] + }, + { + "type": "shell", + "commands": [ + "mkdir -p \"bin/@esbuild\"", + "cp \".package/@esbuild/linux-x64@0.28.1/bin/esbuild\" \"bin/@esbuild/linux-x64@0.28.1\"", + "ln -sf \"@esbuild/linux-x64@0.28.1\" \"bin/esbuild-current\"" + ], + "dest": "flatpak-node/cache/esbuild", + "only-arches": [ + "x86_64" + ] + }, + { + "type": "shell", + "commands": [ + "mkdir -p \"httpsgithub.comelectronelectronreleasesdownloadv38.8.6electron-v38.8.6-linux-arm64.zip\"", + "ln -s \"../electron-v38.8.6-linux-arm64.zip\" \"httpsgithub.comelectronelectronreleasesdownloadv38.8.6electron-v38.8.6-linux-arm64.zip/electron-v38.8.6-linux-arm64.zip\"" + ], + "dest": "flatpak-node/cache/electron", + "only-arches": [ + "aarch64" + ] + }, + { + "type": "shell", + "commands": [ + "mkdir -p \"httpsgithub.comelectronelectronreleasesdownloadv38.8.6electron-v38.8.6-linux-armv7l.zip\"", + "ln -s \"../electron-v38.8.6-linux-armv7l.zip\" \"httpsgithub.comelectronelectronreleasesdownloadv38.8.6electron-v38.8.6-linux-armv7l.zip/electron-v38.8.6-linux-armv7l.zip\"" + ], + "dest": "flatpak-node/cache/electron", + "only-arches": [ + "arm" + ] + }, + { + "type": "shell", + "commands": [ + "mkdir -p \"httpsgithub.comelectronelectronreleasesdownloadv38.8.6electron-v38.8.6-linux-x64.zip\"", + "ln -s \"../electron-v38.8.6-linux-x64.zip\" \"httpsgithub.comelectronelectronreleasesdownloadv38.8.6electron-v38.8.6-linux-x64.zip/electron-v38.8.6-linux-x64.zip\"" + ], + "dest": "flatpak-node/cache/electron", + "only-arches": [ + "x86_64" + ] + }, + { + "type": "shell", + "commands": [ + "python3 flatpak-node/populate_pnpm_store.py flatpak-node/pnpm-manifest.json flatpak-node/pnpm-tarballs flatpak-node/pnpm-store", + "echo \"store-dir=$PWD/flatpak-node/pnpm-store\" >> .npmrc", + "bash flatpak-node/setup_sdk_node_headers.sh" + ] + } +] \ No newline at end of file diff --git a/flatpak/io.github.LucaSforza.NNModelling.desktop b/flatpak/io.github.LucaSforza.NNModelling.desktop new file mode 100644 index 00000000..74541b7d --- /dev/null +++ b/flatpak/io.github.LucaSforza.NNModelling.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=NNModelling +Comment=Visual editor for designing neural networks +Exec=run.sh %U +Icon=io.github.LucaSforza.NNModelling +Terminal=false +Type=Application +Categories=Science; +StartupNotify=true +StartupWMClass=NNModelling diff --git a/flatpak/io.github.LucaSforza.NNModelling.metainfo.xml b/flatpak/io.github.LucaSforza.NNModelling.metainfo.xml new file mode 100644 index 00000000..8ba380a4 --- /dev/null +++ b/flatpak/io.github.LucaSforza.NNModelling.metainfo.xml @@ -0,0 +1,24 @@ + + + io.github.LucaSforza.NNModelling + NNModelling + Visual editor for designing neural networks + + Luca Sforza + + CC0-1.0 + GPL-3.0-or-later + +

+ NNModelling is a visual editor and domain-specific language for designing + neural networks and generating PyTorch and Lightning training pipelines. +

+
+ io.github.LucaSforza.NNModelling.desktop + https://github.com/LucaSforza/NNModelling + https://github.com/LucaSforza/NNModelling/issues + + + + +
diff --git a/flatpak/io.github.LucaSforza.NNModelling.svg b/flatpak/io.github.LucaSforza.NNModelling.svg new file mode 100644 index 00000000..3fcfd9d0 --- /dev/null +++ b/flatpak/io.github.LucaSforza.NNModelling.svg @@ -0,0 +1,9 @@ + + NNModelling + A neural-network graph with three connected nodes + + + + + + diff --git a/flatpak/run.sh b/flatpak/run.sh new file mode 100755 index 00000000..ec85520b --- /dev/null +++ b/flatpak/run.sh @@ -0,0 +1,11 @@ +#!/bin/sh +set -eu + +for executable in /app/main/nnmodelling /app/main/NNModelling; do + if [ -x "$executable" ]; then + exec zypak-wrapper.sh "$executable" "$@" + fi +done + +echo "NNModelling executable was not found in /app/main" >&2 +exit 1 diff --git a/front-end/package.json b/front-end/package.json index 9bc7bdce..10056b0a 100644 --- a/front-end/package.json +++ b/front-end/package.json @@ -33,10 +33,5 @@ "html-to-image": "^1.11.13", "wasmoon": "1.16.0" }, - "packageManager": "pnpm@10.11.0", - "pnpm": { - "onlyBuiltDependencies": [ - "esbuild" - ] - } + "packageManager": "pnpm@10.11.0" } diff --git a/front-end/src/App.svelte b/front-end/src/App.svelte index f388490f..7e7d1604 100644 --- a/front-end/src/App.svelte +++ b/front-end/src/App.svelte @@ -17,6 +17,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. import ProjectStart from "./components/ProjectStart.svelte"; import TrainingLogWindow from "./components/TrainingLogWindow.svelte"; import type { ProjectWorkspaceSession } from "./project-workspace"; + import { projectWorkspaceForHost } from "./project-workspace/desktop"; import { createPathProjectSession, type ProjectPathPayload } from "./project-workspace/path"; import { BrowserRPCHandler, type ProjectRPCBridge } from "./sync/BrowserRPCHandler"; import { TrainingController } from "./training/controller"; @@ -26,6 +27,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. let workspaceSession = $state(null); let workspaceError = $state(null); let readyWaiter: { resolve: () => void; reject: (error: Error) => void; previous: ProjectWorkspaceSession | null } | undefined; + const hostWorkspace = projectWorkspaceForHost(); const projectBridge: ProjectRPCBridge = { create: (payload) => activatePathProject(payload), @@ -33,6 +35,8 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. }; const trainingController = new TrainingController(); const rpcHandler = new BrowserRPCHandler(undefined, undefined, undefined, trainingController, projectBridge); + // Both web and desktop renderers connect to the external MCP WebSocket + // server; the renderer remains the sole owner of live diagram state. rpcHandler.connect(); function handleWorkspaceOpen(session: ProjectWorkspaceSession): void { @@ -92,6 +96,6 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. {/key} {:else} - + {/if} {/if} diff --git a/front-end/src/__tests__/desktopProjectWorkspace.test.ts b/front-end/src/__tests__/desktopProjectWorkspace.test.ts new file mode 100644 index 00000000..95723de0 --- /dev/null +++ b/front-end/src/__tests__/desktopProjectWorkspace.test.ts @@ -0,0 +1,66 @@ +import { describe, expect, test } from "vitest" +import { + desktopProjectDirectoryPicker, + type DesktopProjectEntry, + type DesktopProjectFile, + type DesktopProjectFilesystemBridge, +} from "../project-workspace/desktop" +import { ProjectSelectionCancelledError, ProjectWorkspaceAdapter } from "../project-workspace" + +const MODEL = JSON.stringify({ manifest: { schemaVersion: 1, id: "demo", version: "1.0.0", name: "Demo", customPackages: [] }, nodes: [], edges: [] }) + +class FakeBridge implements DesktopProjectFilesystemBridge { + readonly version = 1 as const + readonly files = new Map([["model.json", { encoding: "utf8", data: MODEL }]]) + readonly writes: Array<{ path: string; value: DesktopProjectFile }> = [] + + async pickDirectory(): Promise<{ capability: string; name: string }> { return { capability: "opaque-capability", name: "demo" } } + async ensureDirectory(): Promise {} + async stat(_capability: string, path: string): Promise<"file" | "directory" | null> { + return this.files.has(path) ? "file" : path === "" ? "directory" : null + } + async listDirectory(_capability: string, path: string): Promise { + if (path !== "") return [] + return [...this.files.keys()].map((name) => ({ name, kind: "file" as const })) + } + async readFile(_capability: string, path: string): Promise { + const value = this.files.get(path) + if (!value) throw new DOMException("missing", "NotFoundError") + return value + } + async writeFile(_capability: string, path: string, value: DesktopProjectFile): Promise { + this.writes.push({ path, value }) + this.files.set(path, value) + } + async removeEntry(): Promise {} +} + +describe("desktop project workspace bridge", () => { + test("preserves project loading and ordered model writes behind an opaque capability", async () => { + const bridge = new FakeBridge() + const adapter = new ProjectWorkspaceAdapter(desktopProjectDirectoryPicker(bridge)) + const session = await adapter.openProject() + + expect(session.modelJson).toBe(MODEL) + expect(session.directory.name).toBe("demo") + const changed = MODEL.replace('"Demo"', '"Changed"') + await session.save(changed) + + expect(bridge.writes).toEqual([{ path: "model.json", value: { encoding: "utf8", data: changed } }]) + }) + + test("maps a cancelled native picker to the existing workspace error", async () => { + const bridge: DesktopProjectFilesystemBridge = { + version: 1, + pickDirectory: async () => null, + ensureDirectory: async () => undefined, + stat: async () => null, + listDirectory: async () => [], + readFile: async () => ({ encoding: "utf8", data: "" }), + writeFile: async () => undefined, + removeEntry: async () => undefined, + } + await expect(new ProjectWorkspaceAdapter(desktopProjectDirectoryPicker(bridge)).openProject()) + .rejects.toBeInstanceOf(ProjectSelectionCancelledError) + }) +}) diff --git a/front-end/src/project-workspace/desktop.ts b/front-end/src/project-workspace/desktop.ts new file mode 100644 index 00000000..80634874 --- /dev/null +++ b/front-end/src/project-workspace/desktop.ts @@ -0,0 +1,184 @@ +import { + normalizeProjectPath, + ProjectSelectionCancelledError, + ProjectWorkspaceAdapter, + type ProjectDirectoryHandle, + type ProjectDirectoryPicker, + type ProjectFile, + type ProjectFileHandle, + type ProjectWritableFile, +} from "./index" + +export type DesktopProjectCapability = { + readonly capability: string + readonly name: string +} + +export type DesktopProjectEntry = { + readonly name: string + readonly kind: "file" | "directory" +} + +export type DesktopProjectFile = { + readonly encoding: "utf8" | "base64" + readonly data: string +} + +/** Narrow renderer-side surface exposed by the Electron preload script. */ +export interface DesktopProjectFilesystemBridge { + readonly version: 1 + pickDirectory(options: { readonly mode: "readwrite" }): Promise + ensureDirectory(capability: string, path: string): Promise + stat(capability: string, path: string): Promise<"file" | "directory" | null> + listDirectory(capability: string, path: string): Promise + readFile(capability: string, path: string): Promise + writeFile(capability: string, path: string, value: DesktopProjectFile): Promise + removeEntry(capability: string, path: string, recursive: boolean): Promise +} + +declare global { + interface Window { + readonly nnmodellingDesktop?: DesktopProjectFilesystemBridge + } +} + +export type HostProjectWorkspace = { + readonly adapter?: ProjectWorkspaceAdapter + readonly desktop: boolean +} + +/** Selects the native capability when Electron preload is present, web otherwise. */ +export function projectWorkspaceForHost(): HostProjectWorkspace { + const bridge = desktopProjectFilesystemBridge() + return bridge + ? { adapter: new ProjectWorkspaceAdapter(desktopProjectDirectoryPicker(bridge)), desktop: true } + : { desktop: false } +} + +export function desktopProjectFilesystemBridge(): DesktopProjectFilesystemBridge | undefined { + if (typeof window === "undefined") return undefined + const bridge = window.nnmodellingDesktop + return bridge?.version === 1 ? bridge : undefined +} + +export function desktopProjectDirectoryPicker( + bridge: DesktopProjectFilesystemBridge, +): ProjectDirectoryPicker { + return async (options) => { + const selected = await bridge.pickDirectory(options) + if (!selected) throw new ProjectSelectionCancelledError() + return new DesktopDirectoryHandle(bridge, selected.capability, "", selected.name) + } +} + +class DesktopDirectoryHandle implements ProjectDirectoryHandle { + readonly kind = "directory" as const + + constructor( + private readonly bridge: DesktopProjectFilesystemBridge, + private readonly capability: string, + private readonly prefix: string, + readonly name: string, + ) {} + + async getDirectoryHandle(name: string, options?: { readonly create?: boolean }): Promise { + const path = childPath(this.prefix, name) + if (options?.create === true) { + await this.bridge.ensureDirectory(this.capability, path) + } else if (await this.bridge.stat(this.capability, path) !== "directory") { + throw notFound(name) + } + return new DesktopDirectoryHandle(this.bridge, this.capability, path, leafName(path)) + } + + async getFileHandle(name: string, options?: { readonly create?: boolean }): Promise { + const path = childPath(this.prefix, name) + if (options?.create !== true && await this.bridge.stat(this.capability, path) !== "file") { + throw notFound(name) + } + return new DesktopFileHandle(this.bridge, this.capability, path, leafName(path)) + } + + async *entries(): AsyncIterable<[string, ProjectDirectoryHandle | ProjectFileHandle]> { + for (const entry of await this.bridge.listDirectory(this.capability, this.prefix)) { + const path = childPath(this.prefix, entry.name) + yield [ + entry.name, + entry.kind === "directory" + ? new DesktopDirectoryHandle(this.bridge, this.capability, path, entry.name) + : new DesktopFileHandle(this.bridge, this.capability, path, entry.name), + ] + } + } + + async queryPermission(): Promise { return "granted" } + async requestPermission(): Promise { return "granted" } + + async removeEntry(name: string, options?: { readonly recursive?: boolean }): Promise { + await this.bridge.removeEntry(this.capability, childPath(this.prefix, name), options?.recursive === true) + } +} + +class DesktopFileHandle implements ProjectFileHandle { + readonly kind = "file" as const + + constructor( + private readonly bridge: DesktopProjectFilesystemBridge, + private readonly capability: string, + private readonly path: string, + readonly name: string, + ) {} + + async getFile(): Promise { + const value = await this.bridge.readFile(this.capability, this.path) + return new DesktopFile(value) + } + + async createWritable(): Promise { + let pending: DesktopProjectFile | undefined + return { + write: async (value) => { + pending = typeof value === "string" + ? { encoding: "utf8", data: value } + : { encoding: "base64", data: encode(value) } + }, + close: async () => { + if (pending !== undefined) await this.bridge.writeFile(this.capability, this.path, pending) + }, + abort: async () => { pending = undefined }, + } + } +} + +class DesktopFile implements ProjectFile { + constructor(private readonly value: DesktopProjectFile) {} + + async text(): Promise { + return this.value.encoding === "utf8" ? this.value.data : new TextDecoder().decode(decode(this.value.data)) + } + + async arrayBuffer(): Promise { + const bytes = this.value.encoding === "utf8" ? new TextEncoder().encode(this.value.data) : decode(this.value.data) + return bytes.slice().buffer + } +} + +function childPath(prefix: string, name: string): string { + return normalizeProjectPath(prefix ? `${prefix}/${name}` : name) +} + +function leafName(path: string): string { return path.split("/").at(-1)! } + +function notFound(name: string): DOMException { + return new DOMException(`Entry '${name}' was not found`, "NotFoundError") +} + +function encode(bytes: Uint8Array): string { + let binary = "" + for (const byte of bytes) binary += String.fromCharCode(byte) + return btoa(binary) +} + +function decode(value: string): Uint8Array { + return Uint8Array.from(atob(value), (byte) => byte.charCodeAt(0)) +} diff --git a/front-end/src/project-workspace/index.ts b/front-end/src/project-workspace/index.ts index f10c427a..d2022c9f 100644 --- a/front-end/src/project-workspace/index.ts +++ b/front-end/src/project-workspace/index.ts @@ -81,7 +81,7 @@ export class ProjectWorkspaceError extends Error { } export class UnsupportedProjectFilesystemError extends ProjectWorkspaceError { - constructor() { super("The browser does not support writable project directories", "unsupported") } + constructor() { super("This runtime does not support writable project directories", "unsupported") } } export class ProjectSelectionCancelledError extends ProjectWorkspaceError { diff --git a/front-end/vite.config.ts b/front-end/vite.config.ts index 54b25d6f..5c4fcba0 100644 --- a/front-end/vite.config.ts +++ b/front-end/vite.config.ts @@ -4,7 +4,10 @@ import { svelte } from "@sveltejs/vite-plugin-svelte"; export default defineConfig({ // GitHub Pages serves project sites below //; locally Vite stays // available from the root URL. - base: process.env.VITE_BASE_PATH ?? "/", + // Electron loads the renderer through app://nnmodelling, where absolute + // asset URLs would escape the custom protocol. Web builds retain `/` (or + // the GitHub Pages override) unless the desktop build opts into `./`. + base: process.env.VITE_BASE_PATH ?? (process.env.VITE_DESKTOP === "1" ? "./" : "/"), plugins: [ svelte({ emitCss: false, diff --git a/io.github.LucaSforza.NNModelling.yml b/io.github.LucaSforza.NNModelling.yml new file mode 100644 index 00000000..5797f404 --- /dev/null +++ b/io.github.LucaSforza.NNModelling.yml @@ -0,0 +1,96 @@ +app-id: io.github.LucaSforza.NNModelling +runtime: org.freedesktop.Platform +runtime-version: '25.08' +sdk: org.freedesktop.Sdk +base: org.electronjs.Electron2.BaseApp +base-version: '25.08' +sdk-extensions: + - org.freedesktop.Sdk.Extension.node24 +command: run.sh +separate-locales: false + +finish-args: + # Electron's display and GPU integration. + - --share=ipc + - --socket=wayland + - --socket=fallback-x11 + - --device=dri + # The renderer may connect to the existing remote backend or MCP bridge. + - --share=network + - --env=GTK_USE_PORTAL=1 + +build-options: + append-path: /usr/lib/sdk/node24/bin + env: + NPM_CONFIG_LOGLEVEL: info + +modules: + - name: nnmodelling + buildsystem: simple + build-options: + prepend-path: /run/build/nnmodelling/pnpm-bin + env: + XDG_CACHE_HOME: /run/build/nnmodelling/flatpak-node/cache + npm_config_cache: /run/build/nnmodelling/flatpak-node/npm-cache + npm_config_offline: 'true' + ELECTRON_CACHE: /run/build/nnmodelling/flatpak-node/cache/electron + build-commands: + - chmod +x pnpm-bin/pnpm + - cd source && pnpm install --offline --frozen-lockfile --store-dir=/run/build/nnmodelling/flatpak-node/pnpm-store + - cd source && VITE_BASE_PATH=./ pnpm --dir desktop build + - install -d /app/main + - cp -a source/desktop/release/linux-unpacked/. /app/main/ + - install -Dm755 source/flatpak/run.sh /app/bin/run.sh + - install -Dm644 source/flatpak/io.github.LucaSforza.NNModelling.desktop /app/share/applications/io.github.LucaSforza.NNModelling.desktop + - install -Dm644 source/flatpak/io.github.LucaSforza.NNModelling.metainfo.xml /app/share/metainfo/io.github.LucaSforza.NNModelling.metainfo.xml + - install -Dm644 source/flatpak/io.github.LucaSforza.NNModelling.svg /app/share/icons/hicolor/scalable/apps/io.github.LucaSforza.NNModelling.svg + sources: + # pnpm is not part of the Freedesktop Node SDK extension. Keep the + # executable pinned and provide one source for each supported arch. + - type: file + url: https://github.com/pnpm/pnpm/releases/download/v10.11.0/pnpm-linux-x64 + sha256: fb28f89021562a8b251d8b34485a0b560683f096af17a0793139df6b4f3c4d5a + dest: pnpm-bin + dest-filename: pnpm + only-arches: + - x86_64 + - type: file + url: https://github.com/pnpm/pnpm/releases/download/v10.11.0/pnpm-linux-arm64 + sha256: fd030b0566a70862ae06102316ed16bde0a7f953130551923c8bc11bb2a8ed87 + dest: pnpm-bin + dest-filename: pnpm + only-arches: + - aarch64 + - type: file + path: package.json + dest: source + - type: file + path: pnpm-lock.yaml + dest: source + - type: file + path: pnpm-workspace.yaml + dest: source + - type: dir + path: front-end + dest: source/front-end + skip: + - node_modules + - dist + - type: dir + path: desktop + dest: source/desktop + skip: + - node_modules + - dist + - release + - renderer + - type: dir + path: stereotype-packages + dest: source/stereotype-packages + - type: dir + path: flatpak + dest: source/flatpak + skip: + - build + - repo + - flatpak/generated-sources.json diff --git a/package.json b/package.json index 36698870..6df15f6f 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "private": true, "version": "0.1.0", "description": "DSL for designing neural networks via visual node editor", + "packageManager": "pnpm@10.11.0", "scripts": { "docs": "pnpm run docs:typedoc && pnpm run docs:sphinx", "docs:typedoc": "pnpm --filter @nnmodelling/front-end exec typedoc --options typedoc.json", @@ -11,5 +12,11 @@ }, "engines": { "node": ">=18" + }, + "pnpm": { + "onlyBuiltDependencies": [ + "electron", + "esbuild" + ] } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a6bf3e41..257fd0d5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,24 @@ importers: .: {} + desktop: + devDependencies: + '@types/node': + specifier: ^22.0.0 + version: 22.20.0 + electron: + specifier: 38.8.6 + version: 38.8.6 + electron-builder: + specifier: 26.15.3 + version: 26.15.3(electron-builder-squirrel-windows@26.15.3) + typescript: + specifier: ^5.8.3 + version: 5.9.3 + vitest: + specifier: ^4.1.7 + version: 4.1.9(@types/node@22.20.0)(vite@8.1.2(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)) + front-end: dependencies: '@dagrejs/dagre': @@ -28,7 +46,7 @@ importers: devDependencies: '@sveltejs/vite-plugin-svelte': specifier: ^7.0.0 - version: 7.1.2(svelte@5.56.4)(vite@8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(tsx@4.22.4)) + version: 7.1.2(svelte@5.56.4)(vite@8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)) '@tsconfig/svelte': specifier: ^5.0.8 version: 5.0.8 @@ -52,10 +70,10 @@ importers: version: 5.9.3 vite: specifier: ^8.0.0 - version: 8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(tsx@4.22.4) + version: 8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4) vitest: specifier: ^4.1.7 - version: 4.1.9(@types/node@26.1.0)(vite@8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(tsx@4.22.4)) + version: 4.1.9(@types/node@26.1.0)(vite@8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)) mcp-server: dependencies: @@ -86,7 +104,7 @@ importers: version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.9(@types/node@22.20.0)(vite@8.1.2(@types/node@22.20.0)(esbuild@0.28.1)(tsx@4.22.4)) + version: 4.1.9(@types/node@22.20.0)(vite@8.1.2(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)) packages: @@ -96,6 +114,41 @@ packages: '@dagrejs/graphlib@4.0.5': resolution: {integrity: sha512-7xrBTqIts3o+PMUZX97wSc+7TUbW+/rULzGNCTP6yooNVDXbzw4Wutg/H/xOutTB/c/k0YqOAavgPh4/Zk9PFA==} + '@electron/asar@3.4.1': + resolution: {integrity: sha512-i4/rNPRS84t0vSRa2HorerGRXWyF4vThfHesw0dmcWHp+cspK743UanA0suA5Q5y8kzY2y6YKrvbIUn69BCAiA==} + 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'} + + '@electron/get@3.1.0': + resolution: {integrity: sha512-F+nKc0xW+kVbBRhFzaMgPy3KwmuNTYX1fx6+FxxoSnNgwYX6LD7AKBTWkU0MQ6IBoe7dz069CNkR673sPAgkCQ==} + engines: {node: '>=14'} + + '@electron/notarize@2.5.0': + resolution: {integrity: sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==} + engines: {node: '>= 10.0.0'} + + '@electron/osx-sign@1.3.3': + resolution: {integrity: sha512-KZ8mhXvWv2rIEgMbWZ4y33bDHyUKMXnx4M0sTyPNK/vcB81ImdeY9Ggdqy0SWbMDgmbqyQ+phgejh6V3R2QuSg==} + engines: {node: '>=12.0.0'} + hasBin: true + + '@electron/rebuild@4.2.0': + resolution: {integrity: sha512-RKL/O+jGoXJMxrx/5771y1n0xTKmFuOYGO3gMmwypBM6rsH0kou0mswwdXA2JrhIkE4xyC7v9vGk0n6NPzgOxQ==} + engines: {node: '>=22.12.0'} + hasBin: true + + '@electron/universal@2.0.3': + resolution: {integrity: sha512-Wn9sPYIVFRFl5HmwMJkARCCf7rqK/EurkfQ/rJZ14mHP3iYTjZSIOSVonEAnhWeAXwtw7zOekGRlc6yTtZ0t+g==} + engines: {node: '>=16.4'} + '@emnapi/core@1.11.1': resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} @@ -267,6 +320,10 @@ packages: peerDependencies: hono: ^4 + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -283,6 +340,14 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@malept/cross-spawn-promise@2.0.0': + resolution: {integrity: sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==} + engines: {node: '>= 12.13.0'} + + '@malept/flatpak-bundler@0.4.0': + resolution: {integrity: sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==} + engines: {node: '>= 10.0.0'} + '@modelcontextprotocol/sdk@1.29.0': resolution: {integrity: sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==} engines: {node: '>=18'} @@ -299,9 +364,32 @@ packages: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + + '@noble/hashes@2.4.0': + resolution: {integrity: sha512-X5XaVWZIBCT7HHZGm5I7ZQXDwLG+bGXuSrMQAW+7Zvl87h1kmc1ZB1VSRJcpUfoUrGQp4Fkoxm5kZ+Ms+aW+eA==} + engines: {node: '>= 20.19.0'} + '@oxc-project/types@0.137.0': resolution: {integrity: sha512-WT+Gb24i8hmvo85AIv2oEYouEXkRlKAlT9WaCa3TfLgNCN+GhrJOGZuIlMouAh38Qe4QOx26eUOVsq70qXrywA==} + '@peculiar/asn1-schema@2.9.4': + resolution: {integrity: sha512-GjzePcT9Iw8NzeOPf73iNS9xM+TBhd/FilAfP+RQGkTMQJTVWtytN3JHJACCjf/ABNau5S7mS3g+DcuxmRgYEg==} + engines: {node: '>=14'} + + '@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'} + '@rolldown/binding-android-arm64@1.1.3': resolution: {integrity: sha512-DT6Z3PhvioeHMvxo+xHc3KtqggrI7CCTXCmC2h/5zUlp5jVitv7XEy+9q5/7v8IolhlioawpMo8Kg0EEBy7J0g==} engines: {node: ^20.19.0 || >=22.12.0} @@ -337,42 +425,36 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - libc: [glibc] '@rolldown/binding-linux-arm64-musl@1.1.3': resolution: {integrity: sha512-BO9+oPL8K9poZJBfYPsXNtYjPE5uM3qeehT3aFcW4LITOl+iSqhp0abzjR2nWBUNjIZeKXjAEWBZ64WjNoHd6w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - libc: [musl] '@rolldown/binding-linux-ppc64-gnu@1.1.3': resolution: {integrity: sha512-f3VpLB1vQ0Eo6ecr/6cekLnvYMFF4YBFoVGkfkvPLq1bAkbAwHYQPZKoAmG6OJyTcxxoC+AvezGx/S1obNC0Mw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] - libc: [glibc] '@rolldown/binding-linux-s390x-gnu@1.1.3': resolution: {integrity: sha512-AmurZ26Pqx/RI9N1gzEOCklkKXl927yjfXWUUS0O7Puh8ARM/Ob8qfrD3qnWksScdw6cSrW5PSHE9DyLu7+PtA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] - libc: [glibc] '@rolldown/binding-linux-x64-gnu@1.1.3': resolution: {integrity: sha512-JJpqs8bRGITDOdbkNKnlojzBabbOHrqjSvDr0IVsZObE1lBcPjxItUEY9eWIDbxaJ3cGrXPWGfGkIxFijg/URg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - libc: [glibc] '@rolldown/binding-linux-x64-musl@1.1.3': resolution: {integrity: sha512-rSJcdjPxzA/by/6/rYs+v+bXU7UjvnbUWz8MJb6kh6+knqB1dCrtHg0uu7C/4haqJvqdkYHQ5IGn+tCH9GLW/g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - libc: [musl] '@rolldown/binding-openharmony-arm64@1.1.3': resolution: {integrity: sha512-hQ3/PYkDJICgevvyNcVrihVeqq7k1Pp3VZ9lY+dauAYUJKO+auqApvANhvR1An9BhmqYKvW2Mu1F9u4DXSMLxQ==} @@ -400,6 +482,10 @@ packages: '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} @@ -424,12 +510,19 @@ packages: svelte: ^5.46.4 vite: ^8.0.0-beta.7 || ^8.0.0 + '@szmarczak/http-timer@4.0.6': + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} + engines: {node: '>=10'} + '@tsconfig/svelte@5.0.8': resolution: {integrity: sha512-UkNnw1/oFEfecR8ypyHIQuWYdkPvHiwcQ78sh+ymIiYoF+uc5H1UBetbjyqT+vgGJ3qQN6nhucJviX6HesWtKQ==} '@tybys/wasm-util@0.10.3': resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} + '@types/cacheable-request@6.0.3': + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} + '@types/chai@5.2.3': resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} @@ -451,6 +544,9 @@ packages: '@types/d3-zoom@3.0.8': resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} + '@types/debug@4.1.13': + resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} + '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} @@ -460,12 +556,27 @@ packages: '@types/estree@1.0.9': resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + '@types/fs-extra@9.0.13': + resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} + + '@types/http-cache-semantics@4.2.0': + resolution: {integrity: sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==} + + '@types/keyv@3.1.4': + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + '@types/node@22.20.0': resolution: {integrity: sha512-QWlFW2wf3nTjC13/DqRnBpR4ZO36VJH/JVBkA/vcnmbTBNQIlnObqyqZE1tUR7+Ni23Lda8R1BxMfbXRpCUx5g==} '@types/node@26.1.0': resolution: {integrity: sha512-O0A1G3xPGy4w7AgQdAQYUlQ+BKk2Oovw8eRpofyp5KdBZULnbe+WqaOVNrm705SHphCiG4XHsACrSmPu1f+Kgw==} + '@types/responselike@1.0.3': + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} @@ -501,6 +612,10 @@ packages: '@vitest/utils@4.1.9': resolution: {integrity: sha512-A51o8ymO5PpqlWNnBP9ZHPXDIpuMtTLlGSjN7la4US+LJzoUMyhwjA5QXlm39JexgwHKW4Xjs8Z2d3dLCXOeuA==} + '@xmldom/xmldom@0.8.15': + resolution: {integrity: sha512-/5NV/vDALVFDXgLmfsy9TRCBlKwO2LNBFzpzvb9iIj+jR+eSc6DLYYvVOdivT/jm7MtU6TebYuRmzEOI7w40UA==} + engines: {node: '>=10.0.0'} + '@xyflow/svelte@1.6.1': resolution: {integrity: sha512-o84RpjWMAs5tXjYPj6PUjMccBgeF4TFA8DllBqMSbnhJD3ZxLhttp4NmdHZAIM1T5bK5NAzCat+M37uT/9+rTw==} peerDependencies: @@ -509,6 +624,10 @@ packages: '@xyflow/system@0.0.78': resolution: {integrity: sha512-lY0z2qP33fUhTva9Vaxrk0lqZta2pkbxB1trHAx1omnJqRtPvDlAQYV2r5fhS6AdpkulYmbNW0svy+A4/t4B/g==} + abbrev@4.0.0: + resolution: {integrity: sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==} + engines: {node: ^20.17.0 || >=22.9.0} + accepts@2.0.0: resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} engines: {node: '>= 0.6'} @@ -518,6 +637,10 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + ajv-formats@3.0.1: resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} peerDependencies: @@ -529,26 +652,114 @@ packages: ajv@8.20.0: resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + 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 + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + aria-query@5.3.1: resolution: {integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==} engines: {node: '>= 0.4'} + asn1js@3.0.10: + resolution: {integrity: sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==} + engines: {node: '>=12.0.0'} + assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} + async-exit-hook@2.0.1: + resolution: {integrity: sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==} + engines: {node: '>=0.12.0'} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + + aws4@1.13.2: + resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} + axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + body-parser@2.3.0: resolution: {integrity: sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==} engines: {node: '>=18'} + brace-expansion@1.1.18: + resolution: {integrity: sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==} + + brace-expansion@2.1.4: + resolution: {integrity: sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==} + + brace-expansion@5.0.9: + resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==} + engines: {node: 20 || >=22} + + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + 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'} + bytes@3.1.2: 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'} + + cacheable-lookup@5.0.4: + resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} + engines: {node: '>=10.6.0'} + + cacheable-request@7.0.4: + resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} + engines: {node: '>=8'} + call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} @@ -561,14 +772,62 @@ packages: resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + + chromium-pickle-js@0.2.0: + resolution: {integrity: sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==} + + ci-info@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'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@5.1.0: + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + engines: {node: '>= 6'} + + compare-version@0.1.2: + resolution: {integrity: sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==} + engines: {node: '>=0.10.0'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + content-disposition@1.1.0: resolution: {integrity: sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==} engines: {node: '>=18'} @@ -604,6 +863,9 @@ packages: '@cordisjs/plugin-loader': optional: true + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + cors@2.8.6: resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==} engines: {node: '>= 0.10'} @@ -662,10 +924,22 @@ packages: supports-color: optional: true + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -677,17 +951,72 @@ packages: devalue@5.8.1: resolution: {integrity: sha512-4CXDYRBGqN+57wVJkuXBYmpAVUSg3L6JAQa/DFqm238G73E1wuyc/JhGQJzN7vUf/CMphYau2zXbfWzDR5aTEw==} + dir-compare@4.2.0: + resolution: {integrity: sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==} + + dmg-builder@26.15.3: + resolution: {integrity: sha512-O3zJUFUYHJKgzPqioHxfxzBzlSC1eXCSr79gMSBKBP5AgjjpmrydMsMLotEg9fAJF36vdUncb+4ndRNxoPdlSQ==} + + dotenv-expand@11.0.7: + resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} + engines: {node: '>=12'} + + dotenv@16.6.1: + resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} + engines: {node: '>=12'} + dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} + duplexer2@0.1.4: + resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} + 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-publish@26.15.3: + resolution: {integrity: sha512-g/2bn8YTavY4cuS5F+jOS7zmZbXXBV8KZ8yHKfJjFPoKtzBqrpCdNPxBd3tqdBwP7BVd0lGzf7Bk2s0KesWZ4Q==} + + electron-winstaller@5.4.0: + resolution: {integrity: sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==} + engines: {node: '>=8.0.0'} + + electron@38.8.6: + resolution: {integrity: sha512-lyBhcVi9QYAZL6FO6r5twAWAjWnYomo3iVDvrb5SJZlq928BGemHOKG0tPIq41NOLaCu9f3XdEEjMkjQPjprRg==} + engines: {node: '>= 12.20.55'} + hasBin: true + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + encodeurl@2.0.0: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -703,11 +1032,19 @@ packages: resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} engines: {node: '>= 0.4'} + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + esbuild@0.28.1: resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} engines: {node: '>=18'} hasBin: true + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} @@ -741,6 +1078,9 @@ packages: resolution: {integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==} engines: {node: '>=12.0.0'} + exponential-backoff@3.1.3: + resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} + express-rate-limit@8.5.2: resolution: {integrity: sha512-5Kb34ipNX694DH48vN9irak1Qx30nb0PLYHXfJgw4YEjiC3ZEmZJhwOp+VfiCYwFzvFTdB9QkArYS5kXa2cx2A==} engines: {node: '>= 16'} @@ -751,6 +1091,11 @@ packages: resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} engines: {node: '>= 18'} + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + fast-check@4.8.0: resolution: {integrity: sha512-GOJ158CUMnN6cSahsv4+ExARvIDuzzinFjkp0E9WtiBa5zcVeLozVkWaE4IzFcc+Y48Wp1EDlUZsXRyAztQcSg==} engines: {node: '>=12.17.0'} @@ -761,6 +1106,9 @@ packages: fast-uri@3.1.3: resolution: {integrity: sha512-i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg==} + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -770,10 +1118,17 @@ packages: picomatch: optional: true + filelist@1.0.6: + resolution: {integrity: sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==} + finalhandler@2.1.1: resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} engines: {node: '>= 18.0.0'} + form-data@4.0.6: + resolution: {integrity: sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==} + engines: {node: '>= 6'} + forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -782,6 +1137,33 @@ packages: resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} engines: {node: '>= 0.8'} + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@11.3.1: + resolution: {integrity: sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==} + engines: {node: '>=14.14'} + + fs-extra@11.4.0: + resolution: {integrity: sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==} + engines: {node: '>=14.14'} + + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -790,6 +1172,10 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -798,14 +1184,37 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + glob@7.2.3: + 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 + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} + got@11.8.6: + resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} + engines: {node: '>=10.19.0'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + has-symbols@1.1.0: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + hasown@2.0.4: resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} engines: {node: '>= 0.4'} @@ -814,17 +1223,40 @@ packages: resolution: {integrity: sha512-1yrb/+w6HWQJrUCLkJ2IF5jNIPvvFkblV5RNOYl6bV+OA6p9GLcMpHFFGTosSvHvcAUibuUukRqhlYI4z32C7Q==} engines: {node: '>=16.9.0'} + hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + html-to-image@1.11.13: resolution: {integrity: sha512-cuOPoI7WApyhBElTTb9oqsawRvZ0rHhaHwghRLlTuffoD1B2aDemlCruLeZrUIIdvG7gs9xeELEPm6PhuASqrg==} + http-cache-semantics@4.2.0: + resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} + http-errors@2.0.1: resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + http2-wrapper@1.0.3: + resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} + engines: {node: '>=10.19.0'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + iconv-lite@0.7.2: resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} engines: {node: '>=0.10.0'} + 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. + inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -836,24 +1268,80 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + is-promise@4.0.0: resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} is-reference@3.0.3: resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} + 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'} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isexe@3.1.5: + resolution: {integrity: sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==} + engines: {node: '>=18'} + + isexe@4.0.0: + resolution: {integrity: sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==} + engines: {node: '>=20'} + + jake@10.9.4: + resolution: {integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==} + engines: {node: '>=10'} + hasBin: true + + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} + hasBin: true + jose@6.2.3: resolution: {integrity: sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==} + js-yaml@4.3.2: + resolution: {integrity: sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} json-schema-typed@8.0.2: resolution: {integrity: sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==} + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonfile@6.2.1: + resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + lazy-val@1.0.5: + resolution: {integrity: sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==} + lightningcss-android-arm64@1.32.0: resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} engines: {node: '>= 12.0.0'} @@ -889,28 +1377,24 @@ packages: engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - libc: [glibc] lightningcss-linux-arm64-musl@1.32.0: resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - libc: [musl] lightningcss-linux-x64-gnu@1.32.0: resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - libc: [glibc] lightningcss-linux-x64-musl@1.32.0: resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - libc: [musl] lightningcss-win32-arm64-msvc@1.32.0: resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} @@ -931,6 +1415,17 @@ packages: locate-character@3.0.0: resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} + + lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} @@ -946,14 +1441,65 @@ packages: resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} engines: {node: '>=18'} + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + mime-db@1.54.0: resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} engines: {node: '>= 0.6'} + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + mime-types@3.0.2: resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} engines: {node: '>=18'} + mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + + mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + minimatch@10.2.6: + resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==} + engines: {node: 18 || 20 || >=22} + + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + + minimatch@5.1.9: + resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} + engines: {node: '>=10'} + + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} + engines: {node: '>= 18'} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -970,6 +1516,30 @@ packages: resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} engines: {node: '>= 0.6'} + node-abi@4.35.0: + resolution: {integrity: sha512-ymk4aIzxdPopw2giv8Fs1Ec6vybGkjmyxUwVqhkI4MCy2tVfXdkOGGWieWVjL0THgH+7a8lRdevyupoYj3Js/Q==} + engines: {node: '>=22.12.0'} + + node-api-version@0.2.1: + resolution: {integrity: sha512-2xP/IGGMmmSQpI1+O/k72jF/ykvZ89JeuKX3TLJAYPDVLUalrshrLHkeVcCCZqG/eEa635cr8IBYzgnDvM2O8Q==} + + 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==} + + nopt@9.0.0: + resolution: {integrity: sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + + normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -989,10 +1559,22 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + p-cancelable@2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -1003,6 +1585,13 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + pe-library@0.4.1: + resolution: {integrity: sha512-eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw==} + engines: {node: '>=12', npm: '>=6'} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -1014,21 +1603,61 @@ packages: resolution: {integrity: sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==} engines: {node: '>=16.20.0'} + pkijs@3.4.0: + resolution: {integrity: sha512-emEcLuomt2j03vxD54giVB4SxTjnsqkU692xZOZXHDVoYyypEm+b3jpiTcc+Cf+myooc+/Ly0z01jqeNHVgJGw==} + engines: {node: '>=16.0.0'} + + plist@3.1.0: + resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==} + engines: {node: '>=10.4.0'} + postcss@8.5.16: resolution: {integrity: sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==} engines: {node: ^10 || ^12 || >=14} + 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==} + + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + + promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + + proper-lockfile@4.1.2: + resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} + proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} + pump@3.0.4: + resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} + pure-rand@8.4.1: resolution: {integrity: sha512-c58R2+SPFcSIPXoU834QN/KPDDOSd8sXcSrqf6e83Me6Rrp1EYkxukkjXMVrKvKaADs1SOyNkWdfvLf6zY8qLQ==} + pvtsutils@1.3.6: + resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} + + pvutils@1.2.0: + resolution: {integrity: sha512-BbubeCEyTuQjVMakvJQ/Sxbc93F2pwmbsxONT/ZRrwU7Ua38d8unYTwXpTVLAKJ4BDuH9IGztCjQcd/N/39Dvg==} + engines: {node: '>=16.0.0'} + qs@6.15.3: resolution: {integrity: sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==} engines: {node: '>=0.6'} + quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + range-parser@1.3.0: resolution: {integrity: sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==} engines: {node: '>= 0.6'} @@ -1037,14 +1666,44 @@ packages: resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} engines: {node: '>= 0.10'} + read-binary-file-arch@1.0.6: + resolution: {integrity: sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==} + hasBin: true + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + readdirp@4.1.2: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + resedit@1.7.2: + resolution: {integrity: sha512-vHjcY2MlAITJhC0eRD/Vv8Vlgmu9Sd3LX9zZvtGzU5ZImdTN3+d6e/4mnTyV8vEbyf1sgNIrWxhWlrys52OkEA==} + engines: {node: '>=12', npm: '>=6'} + + resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + + responselike@2.0.1: + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + + rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + rolldown@1.1.3: resolution: {integrity: sha512-1F1eEtUBtFvcGm1HQ9TiUIUHPQG7mSAODrhIzjxoUEFuo8OcbrGLiVLkevNgj84TE4lnHvnumwFjhJO5Eu135g==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1058,19 +1717,47 @@ packages: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - send@1.2.1: - resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} - engines: {node: '>= 18'} + sanitize-filename@1.6.4: + resolution: {integrity: sha512-9ZyI08PsvdQl2r/bBIGubpVdR3RR9sY6RDiWFPreA21C/EFlQhmgo20UZlNjZMMZNubusLhAQozkA0Od5J21Eg==} - serve-static@2.2.1: - resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} - engines: {node: '>= 18'} + sax@1.6.1: + resolution: {integrity: sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==} + engines: {node: '>=11.0.0'} - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + engines: {node: '>=10'} + hasBin: true + + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} + engines: {node: '>=10'} + hasBin: true + + send@1.2.1: + resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} + engines: {node: '>= 18'} + + serve-static@2.2.1: + resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} + engines: {node: '>= 18'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} @@ -1099,13 +1786,31 @@ packages: siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + simple-update-notifier@2.0.0: + resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} + engines: {node: '>=10'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + stat-mode@1.0.0: + resolution: {integrity: sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==} + engines: {node: '>= 6'} + statuses@2.0.2: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} @@ -1113,6 +1818,25 @@ packages: std-env@4.1.0: resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + sumchecker@3.0.1: + resolution: {integrity: sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==} + engines: {node: '>= 8.0'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + svelte-check@4.7.1: resolution: {integrity: sha512-FGUOmAqxXdN/H9Zm8slrqO7SLtFisXRB7rfOsHNJ3MLTD2po/+Stg8XyErkpumPHbuUiYTcqrEIzxpVWKTLqtg==} engines: {node: '>= 18.0.0'} @@ -1125,6 +1849,20 @@ packages: resolution: {integrity: sha512-/d0QHehmRuJW8gVz395MTkPcPozxzdjBMBE8oEYGz8O3b9KTMzzQ9ZHJQLuFKOHOPQbU6kx/X4iid/EBBzH7iw==} engines: {node: '>=18'} + tar@7.5.22: + resolution: {integrity: sha512-MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA==} + engines: {node: '>=18'} + + 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'} + + tiny-async-pool@1.3.0: + resolution: {integrity: sha512-01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA==} + tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} @@ -1140,10 +1878,20 @@ packages: resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} + tmp-promise@3.0.3: + resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==} + + tmp@0.2.7: + resolution: {integrity: sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==} + engines: {node: '>=14.14'} + toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} + truncate-utf8-bytes@1.0.2: + resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -1167,10 +1915,31 @@ packages: undici-types@8.3.0: resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} + undici@6.28.1: + resolution: {integrity: sha512-zWpdTVD54H48CIybL0rWQ3ukpb9d23wM7eH5RtfdmeP70cWHNjtfo7P4vZX+5CoDcO53J4Pu5uXp7lNfjc6DRA==} + engines: {node: '>=18.17'} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} + unzipper@0.12.5: + resolution: {integrity: sha512-tXYOi9R57Uj/2Z25SOs5RRSzq886MBQj2gY8dPL+xl/kv6s6SvByoKfAtvfVeEuhntWDgjd2o9p2lb4TVPAz0A==} + + utf8-byte-length@1.0.5: + resolution: {integrity: sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -1271,16 +2040,33 @@ packages: resolution: {integrity: sha512-FlRLb15WwAOz1A9OQDbf6oOKKSiefi5VK0ZRF2wgH9xk3o5SnU11tNPaOnQuAh1Ucr66cwwvVXaeVRaFdRBt5g==} hasBin: true + webcrypto-core@1.9.2: + resolution: {integrity: sha512-gsXecm82UQNlTBURJGuqOWy1Ww08S3kZUcr3aOJS02Pk0xLtkfeUAVC0u0xhgdonFme80edSJUIJyuvL/7250Q==} + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true + which@5.0.0: + resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==} + 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'} hasBin: true + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -1296,6 +2082,36 @@ packages: utf-8-validate: optional: true + xmlbuilder@15.1.1: + resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} + engines: {node: '>=8.0'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.3: + resolution: {integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==} + engines: {node: '>=12'} + + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + zimmerframe@1.1.4: resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==} @@ -1315,6 +2131,84 @@ snapshots: '@dagrejs/graphlib@4.0.5': {} + '@electron/asar@3.4.1': + dependencies: + commander: 5.1.0 + glob: 7.2.3 + minimatch: 3.1.5 + + '@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 + 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 + transitivePeerDependencies: + - 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/rebuild@4.2.0': + dependencies: + '@malept/cross-spawn-promise': 2.0.0 + debug: 4.4.3 + node-abi: 4.35.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 + '@malept/cross-spawn-promise': 2.0.0 + debug: 4.4.3 + dir-compare: 4.2.0 + fs-extra: 11.4.0 + minimatch: 9.0.9 + plist: 3.1.0 + transitivePeerDependencies: + - supports-color + '@emnapi/core@1.11.1': dependencies: '@emnapi/wasi-threads': 1.2.2 @@ -1413,6 +2307,10 @@ snapshots: dependencies: hono: 4.12.27 + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.3 + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -1432,6 +2330,19 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@malept/cross-spawn-promise@2.0.0': + dependencies: + cross-spawn: 7.0.6 + + '@malept/flatpak-bundler@0.4.0': + dependencies: + debug: 4.4.3 + fs-extra: 9.1.0 + lodash: 4.18.1 + tmp-promise: 3.0.3 + transitivePeerDependencies: + - supports-color + '@modelcontextprotocol/sdk@1.29.0(zod@3.25.76)': dependencies: '@hono/node-server': 1.19.14(hono@4.12.27) @@ -1461,8 +2372,34 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true + '@noble/hashes@1.4.0': {} + + '@noble/hashes@2.4.0': {} + '@oxc-project/types@0.137.0': {} + '@peculiar/asn1-schema@2.9.4': + 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.9.4 + '@peculiar/json-schema': 1.1.12 + '@peculiar/utils': 2.0.3 + tslib: 2.8.1 + webcrypto-core: 1.9.2 + '@rolldown/binding-android-arm64@1.1.3': optional: true @@ -1514,6 +2451,8 @@ snapshots: '@rolldown/pluginutils@1.0.1': {} + '@sindresorhus/is@4.6.0': {} + '@standard-schema/spec@1.1.0': {} '@svelte-put/shortcut@4.2.0(svelte@5.56.4)': @@ -1526,14 +2465,18 @@ snapshots: '@sveltejs/load-config@0.2.0': {} - '@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.4)(vite@8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(tsx@4.22.4))': + '@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.4)(vite@8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4))': dependencies: deepmerge: 4.3.1 magic-string: 0.30.21 obug: 2.1.3 svelte: 5.56.4 - vite: 8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(tsx@4.22.4) - vitefu: 1.1.3(vite@8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(tsx@4.22.4)) + vite: 8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4) + vitefu: 1.1.3(vite@8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)) + + '@szmarczak/http-timer@4.0.6': + dependencies: + defer-to-connect: 2.0.1 '@tsconfig/svelte@5.0.8': {} @@ -1542,6 +2485,13 @@ snapshots: tslib: 2.8.1 optional: true + '@types/cacheable-request@6.0.3': + dependencies: + '@types/http-cache-semantics': 4.2.0 + '@types/keyv': 3.1.4 + '@types/node': 26.1.0 + '@types/responselike': 1.0.3 + '@types/chai@5.2.3': dependencies: '@types/deep-eql': 4.0.2 @@ -1568,12 +2518,28 @@ snapshots: '@types/d3-interpolate': 3.0.4 '@types/d3-selection': 3.0.11 + '@types/debug@4.1.13': + dependencies: + '@types/ms': 2.1.0 + '@types/deep-eql@4.0.2': {} '@types/emscripten@1.39.10': {} '@types/estree@1.0.9': {} + '@types/fs-extra@9.0.13': + dependencies: + '@types/node': 26.1.0 + + '@types/http-cache-semantics@4.2.0': {} + + '@types/keyv@3.1.4': + dependencies: + '@types/node': 26.1.0 + + '@types/ms@2.1.0': {} + '@types/node@22.20.0': dependencies: undici-types: 6.21.0 @@ -1582,11 +2548,15 @@ snapshots: dependencies: undici-types: 8.3.0 + '@types/responselike@1.0.3': + dependencies: + '@types/node': 26.1.0 + '@types/trusted-types@2.0.7': {} '@types/ws@8.18.1': dependencies: - '@types/node': 22.20.0 + '@types/node': 26.1.0 '@vitest/expect@4.1.9': dependencies: @@ -1597,21 +2567,21 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.9(vite@8.1.2(@types/node@22.20.0)(esbuild@0.28.1)(tsx@4.22.4))': + '@vitest/mocker@4.1.9(vite@8.1.2(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4))': dependencies: '@vitest/spy': 4.1.9 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.1.2(@types/node@22.20.0)(esbuild@0.28.1)(tsx@4.22.4) + vite: 8.1.2(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4) - '@vitest/mocker@4.1.9(vite@8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(tsx@4.22.4))': + '@vitest/mocker@4.1.9(vite@8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4))': dependencies: '@vitest/spy': 4.1.9 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(tsx@4.22.4) + vite: 8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4) '@vitest/pretty-format@4.1.9': dependencies: @@ -1637,6 +2607,8 @@ snapshots: convert-source-map: 2.0.0 tinyrainbow: 3.1.0 + '@xmldom/xmldom@0.8.15': {} + '@xyflow/svelte@1.6.1(svelte@5.56.4)': dependencies: '@svelte-put/shortcut': 4.2.0(svelte@5.56.4) @@ -1655,6 +2627,8 @@ snapshots: d3-selection: 3.0.0 d3-zoom: 3.0.0 + abbrev@4.0.0: {} + accepts@2.0.0: dependencies: mime-types: 3.0.2 @@ -1662,6 +2636,8 @@ snapshots: acorn@8.17.0: {} + agent-base@7.1.4: {} + ajv-formats@3.0.1(ajv@8.20.0): optionalDependencies: ajv: 8.20.0 @@ -1673,12 +2649,92 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 + ansi-regex@5.0.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.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.2.0 + '@electron/universal': 2.0.3 + '@malept/flatpak-bundler': 0.4.0 + '@noble/hashes': 2.4.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.6.1 + 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.3.2 + json5: 2.2.3 + lazy-val: 1.0.5 + minimatch: 10.2.6 + pkijs: 3.4.0 + plist: 3.1.0 + proper-lockfile: 4.1.2 + resedit: 1.7.2 + semver: 7.7.4 + tar: 7.5.22 + temp-file: 3.4.0 + tiny-async-pool: 1.3.0 + unzipper: 0.12.5 + which: 5.0.0 + transitivePeerDependencies: + - supports-color + + argparse@2.0.1: {} + aria-query@5.3.1: {} + asn1js@3.0.10: + dependencies: + pvtsutils: 1.3.6 + pvutils: 1.2.0 + tslib: 2.8.1 + assertion-error@2.0.1: {} + async-exit-hook@2.0.1: {} + + async@3.2.6: {} + + asynckit@0.4.0: {} + + at-least-node@1.0.0: {} + + aws4@1.13.2: {} + axobject-query@4.1.0: {} + balanced-match@1.0.2: {} + + balanced-match@4.0.4: {} + + base64-js@1.5.1: {} + + bluebird@3.7.2: {} + body-parser@2.3.0: dependencies: bytes: 3.1.2 @@ -1693,8 +2749,65 @@ snapshots: transitivePeerDependencies: - supports-color + brace-expansion@1.1.18: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.1.4: + dependencies: + balanced-match: 1.0.2 + + brace-expansion@5.0.9: + dependencies: + balanced-match: 4.0.4 + + buffer-crc32@0.2.13: {} + + buffer-from@1.1.2: {} + + builder-util-runtime@9.7.0: + dependencies: + debug: 4.4.3 + sax: 1.6.1 + 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.3.2 + 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 + bytes@3.1.2: {} + bytestreamjs@2.0.1: {} + + cacheable-lookup@5.0.4: {} + + cacheable-request@7.0.4: + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.2.0 + keyv: 4.5.4 + lowercase-keys: 2.0.0 + normalize-url: 6.1.0 + responselike: 2.0.1 + call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 @@ -1707,12 +2820,51 @@ snapshots: chai@6.2.2: {} + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + chokidar@4.0.3: dependencies: readdirp: 4.1.2 + chownr@3.0.0: {} + + chromium-pickle-js@0.2.0: {} + + ci-info@4.3.1: {} + + ci-info@4.4.0: {} + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone-response@1.0.3: + dependencies: + mimic-response: 1.0.1 + clsx@2.1.1: {} + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@5.1.0: {} + + compare-version@0.1.2: {} + + concat-map@0.0.1: {} + content-disposition@1.1.0: {} content-type@1.0.5: {} @@ -1730,6 +2882,8 @@ snapshots: '@standard-schema/spec': 1.1.0 cosmokit: 1.8.1 + core-util-is@1.0.3: {} + cors@2.8.6: dependencies: object-assign: 4.1.1 @@ -1783,24 +2937,128 @@ snapshots: dependencies: ms: 2.1.3 + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + deepmerge@4.3.1: {} + defer-to-connect@2.0.1: {} + + delayed-stream@1.0.0: {} + depd@2.0.0: {} detect-libc@2.1.2: {} devalue@5.8.1: {} + dir-compare@4.2.0: + dependencies: + minimatch: 3.1.5 + p-limit: 3.1.0 + + 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.3.2 + transitivePeerDependencies: + - electron-builder-squirrel-windows + - supports-color + + dotenv-expand@11.0.7: + dependencies: + dotenv: 16.6.1 + + dotenv@16.6.1: {} + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 es-errors: 1.3.0 gopd: 1.2.0 + duplexer2@0.1.4: + dependencies: + readable-stream: 2.3.8 + 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.3 + transitivePeerDependencies: + - electron-builder-squirrel-windows + - supports-color + + 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.6 + fs-extra: 10.1.0 + lazy-val: 1.0.5 + mime: 2.6.0 + transitivePeerDependencies: + - supports-color + + electron-winstaller@5.4.0: + dependencies: + '@electron/asar': 3.4.1 + debug: 4.4.3 + fs-extra: 7.0.1 + lodash: 4.18.1 + temp: 0.9.4 + transitivePeerDependencies: + - supports-color + + electron@38.8.6: + dependencies: + '@electron/get': 2.0.3 + '@types/node': 22.20.0 + extract-zip: 2.0.1 + transitivePeerDependencies: + - supports-color + + emoji-regex@8.0.0: {} + encodeurl@2.0.0: {} + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + + env-paths@2.2.1: {} + + err-code@2.0.3: {} + es-define-property@1.0.1: {} es-errors@1.3.0: {} @@ -1811,6 +3069,13 @@ snapshots: dependencies: es-errors: 1.3.0 + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.4 + esbuild@0.28.1: optionalDependencies: '@esbuild/aix-ppc64': 0.28.1 @@ -1840,6 +3105,8 @@ snapshots: '@esbuild/win32-ia32': 0.28.1 '@esbuild/win32-x64': 0.28.1 + escalade@3.2.0: {} + escape-html@1.0.3: {} esm-env@1.2.2: {} @@ -1862,6 +3129,8 @@ snapshots: expect-type@1.4.0: {} + exponential-backoff@3.1.3: {} + express-rate-limit@8.5.2(express@5.2.1): dependencies: express: 5.2.1 @@ -1900,6 +3169,14 @@ snapshots: transitivePeerDependencies: - supports-color + extract-zip@2.0.1: + dependencies: + debug: 4.4.3 + get-stream: 5.2.0 + yauzl: 2.10.0 + transitivePeerDependencies: + - supports-color + fast-check@4.8.0: dependencies: pure-rand: 8.4.1 @@ -1908,10 +3185,18 @@ snapshots: fast-uri@3.1.3: {} + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + fdir@6.5.0(picomatch@4.0.4): optionalDependencies: picomatch: 4.0.4 + filelist@1.0.6: + dependencies: + minimatch: 5.1.9 + finalhandler@2.1.1: dependencies: debug: 4.4.3 @@ -1923,15 +3208,64 @@ snapshots: transitivePeerDependencies: - supports-color + form-data@4.0.6: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.4 + mime-types: 2.1.35 + forwarded@0.2.0: {} fresh@2.0.0: {} + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.1 + universalify: 2.0.1 + + fs-extra@11.3.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.1 + universalify: 2.0.1 + + fs-extra@11.4.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.1 + universalify: 2.0.1 + + fs-extra@7.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.2.1 + universalify: 2.0.1 + + fs.realpath@1.0.0: {} + fsevents@2.3.3: optional: true function-bind@1.1.2: {} + get-caller-file@2.0.5: {} + get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -1950,18 +3284,59 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.2 + get-stream@5.2.0: + dependencies: + pump: 3.0.4 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.5 + once: 1.4.0 + path-is-absolute: 1.0.1 + gopd@1.2.0: {} + got@11.8.6: + dependencies: + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 4.0.6 + '@types/cacheable-request': 6.0.3 + '@types/responselike': 1.0.3 + cacheable-lookup: 5.0.4 + cacheable-request: 7.0.4 + decompress-response: 6.0.0 + http2-wrapper: 1.0.3 + lowercase-keys: 2.0.0 + p-cancelable: 2.1.1 + responselike: 2.0.1 + + graceful-fs@4.2.11: {} + + has-flag@4.0.0: {} + has-symbols@1.1.0: {} + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + hasown@2.0.4: dependencies: function-bind: 1.1.2 hono@4.12.27: {} + hosted-git-info@4.1.0: + dependencies: + lru-cache: 6.0.0 + html-to-image@1.11.13: {} + http-cache-semantics@4.2.0: {} + http-errors@2.0.1: dependencies: depd: 2.0.0 @@ -1970,30 +3345,98 @@ snapshots: statuses: 2.0.2 toidentifier: 1.0.1 + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + http2-wrapper@1.0.3: + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + iconv-lite@0.7.2: dependencies: safer-buffer: 2.1.2 + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + inherits@2.0.4: {} ip-address@10.2.0: {} ipaddr.js@1.9.1: {} + is-fullwidth-code-point@3.0.0: {} + is-promise@4.0.0: {} is-reference@3.0.3: dependencies: '@types/estree': 1.0.9 + isarray@1.0.0: {} + + isbinaryfile@4.0.10: {} + + isbinaryfile@5.0.7: {} + isexe@2.0.0: {} + isexe@3.1.5: {} + + isexe@4.0.0: {} + + jake@10.9.4: + dependencies: + async: 3.2.6 + filelist: 1.0.6 + picocolors: 1.1.1 + + jiti@2.7.0: {} + jose@6.2.3: {} + js-yaml@4.3.2: + dependencies: + argparse: 2.0.1 + + json-buffer@3.0.1: {} + json-schema-traverse@1.0.0: {} json-schema-typed@8.0.2: {} + json5@2.2.3: {} + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@6.2.1: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + lazy-val@1.0.5: {} + lightningcss-android-arm64@1.32.0: optional: true @@ -2045,6 +3488,14 @@ snapshots: locate-character@3.0.0: {} + lodash@4.18.1: {} + + lowercase-keys@2.0.0: {} + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -2055,12 +3506,52 @@ snapshots: merge-descriptors@2.0.0: {} + mime-db@1.52.0: {} + mime-db@1.54.0: {} + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + mime-types@3.0.2: dependencies: mime-db: 1.54.0 + mime@2.6.0: {} + + mimic-response@1.0.1: {} + + mimic-response@3.1.0: {} + + minimatch@10.2.6: + dependencies: + brace-expansion: 5.0.9 + + minimatch@3.1.5: + dependencies: + brace-expansion: 1.1.18 + + minimatch@5.1.9: + dependencies: + brace-expansion: 2.1.4 + + minimatch@9.0.9: + dependencies: + brace-expansion: 2.1.4 + + minimist@1.2.8: {} + + minipass@7.1.3: {} + + minizlib@3.1.0: + dependencies: + minipass: 7.1.3 + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + mri@1.2.0: {} ms@2.1.3: {} @@ -2069,6 +3560,35 @@ snapshots: negotiator@1.0.0: {} + node-abi@4.35.0: + dependencies: + semver: 7.8.5 + + node-api-version@0.2.1: + dependencies: + semver: 7.8.5 + + 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.8.5 + tar: 7.5.22 + tinyglobby: 0.2.17 + undici: 6.28.1 + which: 6.0.1 + + node-int64@0.4.0: {} + + nopt@9.0.0: + dependencies: + abbrev: 4.0.0 + + normalize-url@6.1.0: {} + object-assign@4.1.1: {} object-inspect@1.13.4: {} @@ -2083,38 +3603,95 @@ snapshots: dependencies: wrappy: 1.0.2 + p-cancelable@2.1.1: {} + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + parseurl@1.3.3: {} + path-is-absolute@1.0.1: {} + path-key@3.1.1: {} path-to-regexp@8.4.2: {} pathe@2.0.3: {} + pe-library@0.4.1: {} + + pend@1.2.0: {} + picocolors@1.1.1: {} picomatch@4.0.4: {} pkce-challenge@5.0.1: {} + pkijs@3.4.0: + dependencies: + '@noble/hashes': 1.4.0 + asn1js: 3.0.10 + bytestreamjs: 2.0.1 + pvtsutils: 1.3.6 + pvutils: 1.2.0 + tslib: 2.8.1 + + plist@3.1.0: + dependencies: + '@xmldom/xmldom': 0.8.15 + base64-js: 1.5.1 + xmlbuilder: 15.1.1 + postcss@8.5.16: dependencies: nanoid: 3.3.15 picocolors: 1.1.1 source-map-js: 1.2.1 + proc-log@6.1.0: {} + + process-nextick-args@2.0.1: {} + + progress@2.0.3: {} + + promise-retry@2.0.1: + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + + proper-lockfile@4.1.2: + dependencies: + graceful-fs: 4.2.11 + retry: 0.12.0 + signal-exit: 3.0.7 + proxy-addr@2.0.7: dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 + pump@3.0.4: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + pure-rand@8.4.1: {} + pvtsutils@1.3.6: + dependencies: + tslib: 2.8.1 + + pvutils@1.2.0: {} + qs@6.15.3: dependencies: es-define-property: 1.0.1 side-channel: 1.1.1 + quick-lru@5.1.1: {} + range-parser@1.3.0: {} raw-body@3.0.2: @@ -2124,10 +3701,44 @@ snapshots: iconv-lite: 0.7.2 unpipe: 1.0.0 + read-binary-file-arch@1.0.6: + dependencies: + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + 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 + readdirp@4.1.2: {} + require-directory@2.1.1: {} + require-from-string@2.0.2: {} + resedit@1.7.2: + dependencies: + pe-library: 0.4.1 + + resolve-alpn@1.2.1: {} + + responselike@2.0.1: + dependencies: + lowercase-keys: 2.0.0 + + retry@0.12.0: {} + + rimraf@2.6.3: + dependencies: + glob: 7.2.3 + rolldown@1.1.3: dependencies: '@oxc-project/types': 0.137.0 @@ -2163,8 +3774,24 @@ snapshots: dependencies: mri: 1.2.0 + safe-buffer@5.1.2: {} + safer-buffer@2.1.2: {} + sanitize-filename@1.6.4: + dependencies: + truncate-utf8-bytes: 1.0.2 + + sax@1.6.1: {} + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.7.4: {} + + semver@7.8.5: {} + send@1.2.1: dependencies: debug: 4.4.3 @@ -2228,14 +3855,53 @@ snapshots: siginfo@2.0.0: {} + signal-exit@3.0.7: {} + + simple-update-notifier@2.0.0: + dependencies: + semver: 7.8.5 + source-map-js@1.2.1: {} + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + stackback@0.0.2: {} + stat-mode@1.0.0: {} + statuses@2.0.2: {} std-env@4.1.0: {} + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + sumchecker@3.0.1: + dependencies: + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + svelte-check@4.7.1(picomatch@4.0.4)(svelte@5.56.4)(typescript@5.9.3): dependencies: '@jridgewell/trace-mapping': 0.3.31 @@ -2270,6 +3936,28 @@ snapshots: transitivePeerDependencies: - '@typescript-eslint/types' + tar@7.5.22: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.3 + minizlib: 3.1.0 + yallist: 5.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 + + tiny-async-pool@1.3.0: + dependencies: + semver: 5.7.2 + tinybench@2.9.0: {} tinyexec@1.2.4: {} @@ -2281,8 +3969,18 @@ snapshots: tinyrainbow@3.1.0: {} + tmp-promise@3.0.3: + dependencies: + tmp: 0.2.7 + + tmp@0.2.7: {} + toidentifier@1.0.1: {} + truncate-utf8-bytes@1.0.2: + dependencies: + utf8-byte-length: 1.0.5 + tslib@2.8.1: {} tsx@4.22.4: @@ -2303,11 +4001,29 @@ snapshots: undici-types@8.3.0: {} + undici@6.28.1: {} + + universalify@0.1.2: {} + + universalify@2.0.1: {} + unpipe@1.0.0: {} + unzipper@0.12.5: + dependencies: + bluebird: 3.7.2 + duplexer2: 0.1.4 + fs-extra: 11.3.1 + graceful-fs: 4.2.11 + node-int64: 0.4.0 + + utf8-byte-length@1.0.5: {} + + util-deprecate@1.0.2: {} + vary@1.1.2: {} - vite@8.1.2(@types/node@22.20.0)(esbuild@0.28.1)(tsx@4.22.4): + vite@8.1.2(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 @@ -2318,9 +4034,10 @@ snapshots: '@types/node': 22.20.0 esbuild: 0.28.1 fsevents: 2.3.3 + jiti: 2.7.0 tsx: 4.22.4 - vite@8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(tsx@4.22.4): + vite@8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 @@ -2331,16 +4048,17 @@ snapshots: '@types/node': 26.1.0 esbuild: 0.28.1 fsevents: 2.3.3 + jiti: 2.7.0 tsx: 4.22.4 - vitefu@1.1.3(vite@8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(tsx@4.22.4)): + vitefu@1.1.3(vite@8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)): optionalDependencies: - vite: 8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(tsx@4.22.4) + vite: 8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4) - vitest@4.1.9(@types/node@22.20.0)(vite@8.1.2(@types/node@22.20.0)(esbuild@0.28.1)(tsx@4.22.4)): + vitest@4.1.9(@types/node@22.20.0)(vite@8.1.2(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)): dependencies: '@vitest/expect': 4.1.9 - '@vitest/mocker': 4.1.9(vite@8.1.2(@types/node@22.20.0)(esbuild@0.28.1)(tsx@4.22.4)) + '@vitest/mocker': 4.1.9(vite@8.1.2(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)) '@vitest/pretty-format': 4.1.9 '@vitest/runner': 4.1.9 '@vitest/snapshot': 4.1.9 @@ -2357,17 +4075,17 @@ snapshots: tinyexec: 1.2.4 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vite: 8.1.2(@types/node@22.20.0)(esbuild@0.28.1)(tsx@4.22.4) + vite: 8.1.2(@types/node@22.20.0)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.20.0 transitivePeerDependencies: - msw - vitest@4.1.9(@types/node@26.1.0)(vite@8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(tsx@4.22.4)): + vitest@4.1.9(@types/node@26.1.0)(vite@8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)): dependencies: '@vitest/expect': 4.1.9 - '@vitest/mocker': 4.1.9(vite@8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(tsx@4.22.4)) + '@vitest/mocker': 4.1.9(vite@8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)) '@vitest/pretty-format': 4.1.9 '@vitest/runner': 4.1.9 '@vitest/snapshot': 4.1.9 @@ -2384,7 +4102,7 @@ snapshots: tinyexec: 1.2.4 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vite: 8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(tsx@4.22.4) + vite: 8.1.2(@types/node@26.1.0)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 26.1.0 @@ -2395,19 +4113,68 @@ snapshots: dependencies: '@types/emscripten': 1.39.10 + webcrypto-core@1.9.2: + dependencies: + '@peculiar/asn1-schema': 2.9.4 + '@peculiar/json-schema': 1.1.12 + '@peculiar/utils': 2.0.3 + asn1js: 3.0.10 + tslib: 2.8.1 + which@2.0.2: dependencies: isexe: 2.0.0 + which@5.0.0: + dependencies: + isexe: 3.1.5 + + which@6.0.1: + dependencies: + isexe: 4.0.0 + why-is-node-running@2.3.0: dependencies: siginfo: 2.0.0 stackback: 0.0.2 + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrappy@1.0.2: {} ws@8.21.0: {} + xmlbuilder@15.1.1: {} + + y18n@5.0.8: {} + + yallist@4.0.0: {} + + yallist@5.0.0: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.3: + dependencies: + cliui: 8.0.1 + 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: 21.1.1 + + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + + yocto-queue@0.1.0: {} + zimmerframe@1.1.4: {} zod-to-json-schema@3.25.2(zod@3.25.76): diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index db524585..347f8e41 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,4 @@ packages: - "front-end" - "mcp-server" + - "desktop"