From a02d1fb7c0de5cdf4eed4d24e664048db2cef543 Mon Sep 17 00:00:00 2001 From: MythEclipse Date: Thu, 14 May 2026 01:07:50 +0700 Subject: [PATCH] chore: add pnpm workspace configuration with only built dependencies --- CLAUDE.md | 46 +- bun.lockb | Bin 159290 -> 0 bytes package.json | 8 +- pnpm-lock.yaml | 3626 +++++++++++++++++++++++++++++++++++++++ pnpm-workspace.yaml | 4 + src/index.ts | 12 +- src/logger.ts | 5 + src/muxer-queue.ts | 2 +- src/player.ts | 1 - src/recorder/decoder.ts | 2 +- src/recorder/segment.ts | 2 +- src/webserver.ts | 2 +- tsconfig.json | 2 +- 13 files changed, 3679 insertions(+), 33 deletions(-) delete mode 100755 bun.lockb create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml diff --git a/CLAUDE.md b/CLAUDE.md index 69f42e8..ad89b7a 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -6,7 +6,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co **Discord Moderation Watcher Bot** — A comprehensive monitoring bot that captures voice, text messages, and images from Discord servers. Records audio from voice channels, captures all text messages (new/edited/deleted) from channels and threads, and uploads attachments to external storage. All data stored in SQLite with real-time dashboard. -Built with **Bun** + **discord.js-selfbot-v13** + **@discordjs/voice** + **Express** + **WebSocket**. +Built with **Node.js/pnpm** + **discord.js-selfbot-v13** + **@discordjs/voice** + **Express** + **WebSocket**. ## Architecture @@ -73,28 +73,28 @@ attachments (SQLite): ```bash # Install dependencies -bun install +pnpm install # Development (auto-restart on file changes) -bun run dev +pnpm run dev # Production -bun run start +pnpm run start # Type checking -bun run typecheck +pnpm run typecheck # Linting (Biome) -bun run lint +pnpm run lint # Format code (Biome) -bun run format +pnpm run format # Run tests -bun run test +pnpm run test # Build TypeScript -bun run build +pnpm run build ``` ## Configuration @@ -136,7 +136,7 @@ All config via `.env` (see `.env.example`). Key variables: ## Testing -Tests use **Vitest** in `tests/` directory. Run with `bun run test`. +Tests use **Vitest** in `tests/` directory. Run with `pnpm run test`. **Test Coverage:** - `tests/moderation/messageStore.test.ts` — Message store CRUD operations @@ -290,7 +290,7 @@ Handles SIGINT/SIGTERM/uncaughtException/unhandledRejection: ## Notes - Bot uses selfbot variant (user account) rather than standard bot token — check Discord ToS -- Opus decoding disabled on Bun without native opus to avoid crashes +- Opus decoding requires native `@discordjs/opus` under Node.js - OGG segments include metadata JSON for each segment (user info, timestamps, duration) - WebSocket broadcasts PCM in real-time; browser can transmit audio back to Discord - Graceful shutdown ensures clean disconnection and resource cleanup @@ -327,7 +327,7 @@ Handles SIGINT/SIGTERM/uncaughtException/unhandledRejection: - **Recorder subsystem** (`src/recorder/`): - `audioStream.ts` — Subscribes to Discord audio receiver, emits Opus packets - - `decoder.ts` — Opus decoder with runtime checks (Bun vs Node), cooldown/rotation logic for web PCM broadcast + - `decoder.ts` — Opus decoder with runtime checks, cooldown/rotation logic for web PCM broadcast - `segment.ts` — Manages OGG file rotation (5s default segments per user) - `metadata.ts` — Collects user/role info, creates segment metadata JSON @@ -363,28 +363,28 @@ Each segment is 5s (configurable). Metadata JSON includes user info, roles, time ```bash # Install dependencies -bun install +pnpm install # Development (auto-restart on file changes) -bun run dev +pnpm run dev # Production -bun run start +pnpm run start # Type checking -bun run typecheck +pnpm run typecheck # Linting (Biome) -bun run lint +pnpm run lint # Format code (Biome) -bun run format +pnpm run format # Run tests -bun run test +pnpm run test # Build TypeScript -bun run build +pnpm run build ``` ## Configuration @@ -404,9 +404,9 @@ All config via `.env` (see `.env.example`). Key variables: ## Testing -Tests use **Vitest** in `tests/` directory. Run with `bun run test`. +Tests use **Vitest** in `tests/` directory. Run with `pnpm run test`. -Example: `tests/decoder.test.ts` tests Opus decoder runtime detection (Bun vs Node, native opus availability). +Example: `tests/decoder.test.ts` tests Opus decoder runtime detection and native opus availability. ## Code Style @@ -507,7 +507,7 @@ These will likely require: ## Notes - Bot uses selfbot variant (user account) rather than standard bot token — check Discord ToS -- Opus decoding disabled on Bun without native opus to avoid crashes +- Opus decoding requires native `@discordjs/opus` under Node.js - OGG segments include metadata JSON for each segment (user info, timestamps, duration) - WebSocket broadcasts PCM in real-time; browser can transmit audio back to Discord - Graceful shutdown ensures clean disconnection and resource cleanup diff --git a/bun.lockb b/bun.lockb deleted file mode 100755 index abf75ad393e148c01cebb269dfbc57d96d8dbb41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159290 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≠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 diff --git a/package.json b/package.json index eedd919..24e4ac1 100644 --- a/package.json +++ b/package.json @@ -3,9 +3,10 @@ "version": "1.0.0", "description": "Discord bot that joins a voice channel and records audio", "main": "src/index.ts", + "packageManager": "pnpm@10.25.0", "scripts": { - "dev": "bun --watch src/index.ts", - "start": "bun src/index.ts", + "dev": "tsx watch src/index.ts", + "start": "tsx src/index.ts", "build": "tsc --outDir dist", "typecheck": "tsc --noEmit", "lint": "biome check --diagnostic-level=error .", @@ -39,9 +40,10 @@ "@types/better-sqlite3": "^7.6.13", "@types/express": "^5.0.6", "@types/fluent-ffmpeg": "^2.1.28", + "@types/node": "^24.10.1", "@types/ws": "^8.18.1", - "bun-types": "latest", "pino-pretty": "^10.3.1", + "tsx": "^4.20.6", "vitest": "latest" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..8a80054 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,3626 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@discordjs/opus': + specifier: ^0.10.0 + version: 0.10.0 + '@discordjs/voice': + specifier: ^0.19.1 + version: 0.19.2(@discordjs/opus@0.10.0)(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + '@snazzah/davey': + specifier: ^0.1.10 + version: 0.1.11(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + better-sqlite3: + specifier: ^12.10.0 + version: 12.10.0 + class-transformer: + specifier: ^0.5.1 + version: 0.5.1 + class-validator: + specifier: ^0.15.1 + version: 0.15.1 + discord.js-selfbot-v13: + specifier: ^3.7.1 + version: 3.7.1(@discordjs/opus@0.10.0) + dotenv: + specifier: ^17.4.2 + version: 17.4.2 + express: + specifier: ^5.2.1 + version: 5.2.1 + fluent-ffmpeg: + specifier: ^2.1.3 + version: 2.1.3 + helmet: + specifier: ^8.1.0 + version: 8.1.0 + libsodium-wrappers: + specifier: ^0.8.2 + version: 0.8.4 + p-retry: + specifier: ^6.2.0 + version: 6.2.1 + pino: + specifier: ^9.4.0 + version: 9.14.0 + pino-http: + specifier: ^11.0.0 + version: 11.0.0 + prism-media: + specifier: 2.0.0-alpha.0 + version: 2.0.0-alpha.0 + prom-client: + specifier: ^15.1.3 + version: 15.1.3 + sodium-native: + specifier: ^4.3.2 + version: 4.3.3 + ws: + specifier: ^8.20.1 + version: 8.20.1 + zod: + specifier: ^4.4.3 + version: 4.4.3 + devDependencies: + '@biomejs/biome': + specifier: latest + version: 2.4.15 + '@types/better-sqlite3': + specifier: ^7.6.13 + version: 7.6.13 + '@types/express': + specifier: ^5.0.6 + version: 5.0.6 + '@types/fluent-ffmpeg': + specifier: ^2.1.28 + version: 2.1.28 + '@types/node': + specifier: ^24.10.1 + version: 24.12.4 + '@types/ws': + specifier: ^8.18.1 + version: 8.18.1 + pino-pretty: + specifier: ^10.3.1 + version: 10.3.1 + tsx: + specifier: ^4.20.6 + version: 4.21.0 + vitest: + specifier: latest + version: 4.1.6(@opentelemetry/api@1.9.1)(@types/node@24.12.4)(vite@8.0.12(@types/node@24.12.4)(esbuild@0.27.7)(tsx@4.21.0)) + +packages: + + '@biomejs/biome@2.4.15': + resolution: {integrity: sha512-j5VH3a/h/HXTKBM50MDMxRCzkeLv9S2XJcW2WgnZT1+xyisi+0bISrXR82gCX+8S9lvK0skEvHJRN+3Ktr2hlw==} + engines: {node: '>=14.21.3'} + hasBin: true + + '@biomejs/cli-darwin-arm64@2.4.15': + resolution: {integrity: sha512-rF3PPqLq1yoST79zaQbDjVJwsuIeci/O+9bgNmC5QpgOqz6aqYuzA4abyAGx+mgyiDXn4A049xAN8gijbuR1Qg==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [darwin] + + '@biomejs/cli-darwin-x64@2.4.15': + resolution: {integrity: sha512-/5KHXYMfSJs1fNXiX30xFtI8JcCFV6zaVVLxOa0M2sfqBKHkpQhRTv94yxQWxeTY2lzo2OuTlNvPC+hDQt2wcQ==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [darwin] + + '@biomejs/cli-linux-arm64-musl@2.4.15': + resolution: {integrity: sha512-ZPcxznxm0pogHBLZhYntyR3sR+MrZjqJIKEr7ZqVen0Rl+P/4upVmfYXjftizi9RoqZntg33fv/1fbdhbYXpEQ==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + + '@biomejs/cli-linux-arm64@2.4.15': + resolution: {integrity: sha512-owaAMZD/T4LrD0ELNCk0Km3qrRHuM0X6EAyVE1FSqGY0rbLoiDLrO4Us2tllm6cAeB2Ioa9C2C08NZPdr8+0Ug==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + + '@biomejs/cli-linux-x64-musl@2.4.15': + resolution: {integrity: sha512-CNq/9W38SYSH023lfcQ4KKU8K0YX8T//FZUhcgtMMRABDojx5XsMV7jlweAvGSl389wJQB29Qo6Zb/a+jdvt+w==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + + '@biomejs/cli-linux-x64@2.4.15': + resolution: {integrity: sha512-0jj7THz12GbUOLmMibktK6DZjqz2zV64KFxyBtcFTKPiiOIY0a7vns1elpO1dERvxpsZ5ik0oFfz0oGwFde1+g==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + + '@biomejs/cli-win32-arm64@2.4.15': + resolution: {integrity: sha512-ouhkYdlhp/1GghEJPdWwD/Vi3gQ1nFxuSpMolWsbq3Lsq3QUR4jl6UdhhscdCugKU5vOEuMiJhvKj66O0OCq+w==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [win32] + + '@biomejs/cli-win32-x64@2.4.15': + resolution: {integrity: sha512-zBrGq5mx5wwpnow4+2BxUvleDM+GNd4sLbPaMapsSLQLD0NGRCquqPBTgN+7XkUteHvj7M+BstuI8tmnV7+HgQ==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [win32] + + '@discordjs/builders@1.14.1': + resolution: {integrity: sha512-gSKkhXLqs96TCzk66VZuHHl8z2bQMJFGwrXC0f33ngK+FLNau4hU1PYny3DNJfNdSH+gVMzE85/d5FQ2BpcNwQ==} + engines: {node: '>=16.11.0'} + + '@discordjs/collection@2.1.1': + resolution: {integrity: sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg==} + engines: {node: '>=18'} + + '@discordjs/formatters@0.6.2': + resolution: {integrity: sha512-y4UPwWhH6vChKRkGdMB4odasUbHOUwy7KL+OVwF86PvT6QVOwElx+TiI1/6kcmcEe+g5YRXJFiXSXUdabqZOvQ==} + engines: {node: '>=16.11.0'} + + '@discordjs/node-pre-gyp@0.4.5': + resolution: {integrity: sha512-YJOVVZ545x24mHzANfYoy0BJX5PDyeZlpiJjDkUBM/V/Ao7TFX9lcUvCN4nr0tbr5ubeaXxtEBILUrHtTphVeQ==} + hasBin: true + + '@discordjs/opus@0.10.0': + resolution: {integrity: sha512-HHEnSNrSPmFEyndRdQBJN2YE6egyXS9JUnJWyP6jficK0Y+qKMEZXyYTgmzpjrxXP1exM/hKaNP7BRBUEWkU5w==} + engines: {node: '>=12.0.0'} + + '@discordjs/util@1.2.0': + resolution: {integrity: sha512-3LKP7F2+atl9vJFhaBjn4nOaSWahZ/yWjOvA4e5pnXkt2qyXRCHLxoBQy81GFtLGCq7K9lPm9R517M1U+/90Qg==} + engines: {node: '>=18'} + + '@discordjs/voice@0.19.2': + resolution: {integrity: sha512-3yJ255e4ag3wfZu/DSxeOZK1UtnqNxnspmLaQetGT0pDkThNZoHs+Zg6dgZZ19JEVomXygvfHn9lNpICZuYtEA==} + engines: {node: '>=22.12.0'} + + '@emnapi/core@1.10.0': + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} + + '@emnapi/runtime@1.10.0': + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} + + '@esbuild/aix-ppc64@0.27.7': + resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.27.7': + resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.27.7': + resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.27.7': + resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.27.7': + resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.7': + resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.27.7': + resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.7': + resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.27.7': + resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.27.7': + resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.27.7': + resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.27.7': + resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.27.7': + resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.27.7': + resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.27.7': + resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.27.7': + resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.27.7': + resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.27.7': + resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.7': + resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.27.7': + resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.7': + resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.27.7': + resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.27.7': + resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.27.7': + resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.27.7': + resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.27.7': + resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@minhducsun2002/leb128@1.0.0': + resolution: {integrity: sha512-eFrYUPDVHeuwWHluTG1kwNQUEUcFjVKYwPkU8z9DR1JH3AW7JtJsG9cRVGmwz809kKtGfwGJj58juCZxEvnI/g==} + + '@napi-rs/wasm-runtime@1.1.4': + resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 + + '@opentelemetry/api@1.9.1': + resolution: {integrity: sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==} + engines: {node: '>=8.0.0'} + + '@otplib/core@12.0.1': + resolution: {integrity: sha512-4sGntwbA/AC+SbPhbsziRiD+jNDdIzsZ3JUyfZwjtKyc/wufl1pnSIaG4Uqx8ymPagujub0o92kgBnB89cuAMA==} + + '@otplib/plugin-crypto@12.0.1': + resolution: {integrity: sha512-qPuhN3QrT7ZZLcLCyKOSNhuijUi9G5guMRVrxq63r9YNOxxQjPm59gVxLM+7xGnHnM6cimY57tuKsjK7y9LM1g==} + deprecated: Please upgrade to v13 of otplib. Refer to otplib docs for migration paths + + '@otplib/plugin-thirty-two@12.0.1': + resolution: {integrity: sha512-MtT+uqRso909UkbrrYpJ6XFjj9D+x2Py7KjTO9JDPhL0bJUYVu5kFP4TFZW4NFAywrAtFRxOVY261u0qwb93gA==} + deprecated: Please upgrade to v13 of otplib. Refer to otplib docs for migration paths + + '@otplib/preset-default@12.0.1': + resolution: {integrity: sha512-xf1v9oOJRyXfluBhMdpOkr+bsE+Irt+0D5uHtvg6x1eosfmHCsCC6ej/m7FXiWqdo0+ZUI6xSKDhJwc8yfiOPQ==} + deprecated: Please upgrade to v13 of otplib. Refer to otplib docs for migration paths + + '@otplib/preset-v11@12.0.1': + resolution: {integrity: sha512-9hSetMI7ECqbFiKICrNa4w70deTUfArtwXykPUvSHWOdzOlfa9ajglu7mNCntlvxycTiOAXkQGwjQCzzDEMRMg==} + + '@oxc-project/types@0.129.0': + resolution: {integrity: sha512-3oz8m3FGdr2nDXVqmFUw7jolKliC4MoyXYIG2c7gpjBnzUWQpUGIYcXYKxTdTi+N2jusvt610ckTMkxdwHkYEg==} + + '@pinojs/redact@0.4.0': + resolution: {integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==} + + '@rolldown/binding-android-arm64@1.0.0': + resolution: {integrity: sha512-TWMZnRLMe63C2Lhyicviu7ZHaU4kxa6PS3rofvc9GmcvptzNN11BcfQ4Sl7MwTOsisQoa2keB/EBdNCAnUo8vA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.0.0': + resolution: {integrity: sha512-6XcD+8k0gPVItNagEw78/qqcBDwKcwDYS8V2hRmVsfUSIrd8cWe/CBvRDI5toqFyPfj+FJr6t8U6Xj2P2prEew==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.0': + resolution: {integrity: sha512-iN/tWVXRQDWvmZlKdceP1Dwug9GDpEymhb9p4xnEe6zvCg5lFmzVljl+1qR1NVx3yfGpr2Na+CuLmv5IU8uzfQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.0': + resolution: {integrity: sha512-jjQMDvvwSOuhOwMszD/klSOjyWMM3zI64hWTj9KT5x4MxRbZAf+7vLQ6qouRhtsLVFHr3f0ILaJAfgENPiQdAQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0': + resolution: {integrity: sha512-d//Dtg2x6/m3mbV64yUGNnDGNZaDGRpDLLNGerHQUVObuNaIQaaDp25yUiqGXtHEXX+NP2d0wAlmKgpYgIAJ2A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.0.0': + resolution: {integrity: sha512-n7Ofp0mx+aB2cC+Sdy5YtMnXtY9lchnHbY+3Yt0uq9JsWQExf4f5Whu0tK0R8Jdc9S6RchTHjIFY7uc92puOVQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-arm64-musl@1.0.0': + resolution: {integrity: sha512-EIVjy2cgd7uuMMo94FVkBp7F6DhcZAUwNURkSG3RwUmvAXR6s0ISxM81U+IydcZByPG0pZIHsf1b6kTxoFDgJA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-ppc64-gnu@1.0.0': + resolution: {integrity: sha512-JEwwOPcwTLAcpDQlqSmjEmfs63xJnSiUNIGvLcDLUHCWK4XowpS/7c7tUsUH6uT/ct6bMUTdXKfI8967FYj6mg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + + '@rolldown/binding-linux-s390x-gnu@1.0.0': + resolution: {integrity: sha512-0wjCFhLrihtAubnT9iA0N++0pSV0z5Hg7tNGdNJ4RFaINceHadoF+kiFGyY1qSSNVIAZtLotG8Ju1bgDPkjnFA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + + '@rolldown/binding-linux-x64-gnu@1.0.0': + resolution: {integrity: sha512-Dfn7iak9BcMMePxcoJfpSbWqnEyrp/dRF63/8qW/eHBdOZov6x5aShLLEYGYdIeSJ6vMLK/XCVB+lGIxm41bQA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-linux-x64-musl@1.0.0': + resolution: {integrity: sha512-5/utzzDmD/pD/bmuaUcbTf/sZYy0aztwIVlfpoW1fTjCZ0BaPOMVWGZL1zvgxyi7ZIVYWlxKONHmSbHuiOh8Jw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-openharmony-arm64@1.0.0': + resolution: {integrity: sha512-ouJs8VcUomfLfpbUECqFMRqdV4x6aeAK3MA4m6vTrJJjKyWTV5KnxZx7Jd9G+GlDaQQxubcba00x16OyJ1meig==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.0.0': + resolution: {integrity: sha512-E+oHKGiDA+lsKMmFtffDDw91EryDT7uJocrIuCHqhm6bCTM6xFK+3gaCkYOHfPwQr0cCNarSM2xaELoQDz9jJg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.0': + resolution: {integrity: sha512-yYK02n8Rngo+gbm1y6G0+7jk1sJ/2Wt7K0me0Y7k/ErBpyf+LJ2gFpqWVTcRV1rUepBlQRmpgWkTQCiiwrK0Ow==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.0': + resolution: {integrity: sha512-14bpChMahXRRXiTwahSl+zzHPW6qQTXtkMuJBFlbo+pqSAews2d4BdCSHfrJ/MBsCZtpmTafsY+1QhBzitcmdg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.0': + resolution: {integrity: sha512-aKs/3GSWyV0mrhNmt/96/Z3yczC3yvrzYATCiCXQebBsGyYzjNdUphRVLeJQ67ySKVXRfMxt2lm12pmXvbPFQQ==} + + '@sapphire/async-queue@1.5.5': + resolution: {integrity: sha512-cvGzxbba6sav2zZkH8GPf2oGk9yYoD5qrNWdu9fRehifgnFZJMV+nuy2nON2roRO4yQQ+v7MK/Pktl/HgfsUXg==} + engines: {node: '>=v14.0.0', npm: '>=7.0.0'} + + '@sapphire/shapeshift@4.0.0': + resolution: {integrity: sha512-d9dUmWVA7MMiKobL3VpLF8P2aeanRTu6ypG2OIaEv/ZHH/SUQ2iHOVyi5wAPjQ+HmnMuL0whK9ez8I/raWbtIg==} + engines: {node: '>=v16'} + + '@shinyoshiaki/jspack@0.0.6': + resolution: {integrity: sha512-SdsNhLjQh4onBlyPrn4ia1Pdx5bXT88G/LIEpOYAjx2u4xeY/m/HB5yHqlkJB1uQR3Zw4R3hBWLj46STRAN0rg==} + + '@snazzah/davey-android-arm-eabi@0.1.11': + resolution: {integrity: sha512-T1RYbNYKN6tLOcGIDKJd8OI6FBSEemwL7DOYdTMmhqfhhMr3YVN8WOhfoxGg63OcnpTN2e2c5tdY2bAx25RmQQ==} + engines: {node: '>= 10'} + cpu: [arm] + os: [android] + + '@snazzah/davey-android-arm64@0.1.11': + resolution: {integrity: sha512-ksJn/x2VU8h6w9eku1HT96ugSRZ7lKVkKNKbFleaFN+U99DJaPM+gMu2YvnFU4V54HR06ZBnRihnVG6VLXQpDw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@snazzah/davey-darwin-arm64@0.1.11': + resolution: {integrity: sha512-E1d7PbaaVMO3Lj9EiAPqOVbuV0xg5+PsHzHH097DDXiD1+zUDXvJaTnUWsnm5z50pJniHpi4GtaYmk+ieB/guA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@snazzah/davey-darwin-x64@0.1.11': + resolution: {integrity: sha512-Tl4TI/LTmgJZepgbgVMYDi8RqlAkPtPg1OEBPl7a9Tn3AwR36Vs6lyIT1cs/lGy/ds/+B+mKI4rPObN1cyILTw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@snazzah/davey-freebsd-x64@0.1.11': + resolution: {integrity: sha512-T8Iw9FXkuI1T+YBAFzh9v/TXf9IOTOSqnd/BFpTRTrlW72PR2lhIidzSmg027VxO7r5pX47iFwiOkb9I/NU/EA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@snazzah/davey-linux-arm-gnueabihf@0.1.11': + resolution: {integrity: sha512-1Txj+8pqA8uq/OGtaUaBFWAPnNMQzFgIywj0iA7EI4xZl+mab48/pv+YZ1pNb/suC6ynsW44oB9efiXSdcUAgA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@snazzah/davey-linux-arm64-gnu@0.1.11': + resolution: {integrity: sha512-ERzF5nM/IYW1BcN3wLXpEwBCGLFf0kGJUVhaV6yfiInz0tkU8UmvrrgpaMaACfMjIhfWdq5CcX+aTkXo/saNcg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@snazzah/davey-linux-arm64-musl@0.1.11': + resolution: {integrity: sha512-e6pX6Hiabtz99q+H/YHNkm9JVlpqN8HGh0qPib8G2+UY4/SSH8WvqWipk3v581dMy2oyCHt7MOoY1aU1P1N/xA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@snazzah/davey-linux-x64-gnu@0.1.11': + resolution: {integrity: sha512-TW5bSoqChOJMbvsDb4wAATYrxmAXuNnse7wFNVSAJUaZKSeRfZbu3UAiPWSNn7GwLwSfU6hg322KZUn8IWCuvg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@snazzah/davey-linux-x64-musl@0.1.11': + resolution: {integrity: sha512-5j6Pmc+Wzv5lSxVP6quA7teYRJXibkZqQyYGfTDnTsUOO5dPpcojpqlXlkhyvsA1OAQTj4uxbOCciN3cVWwzug==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@snazzah/davey-wasm32-wasi@0.1.11': + resolution: {integrity: sha512-rKOwZ/0J8lp+4VEyOdMDBRP9KR+PksZpa9V1Qn0veMzy4FqTVKthkxwGqewheFe0SFg9fdvt798l/PBFrfDeZw==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@snazzah/davey-win32-arm64-msvc@0.1.11': + resolution: {integrity: sha512-5fptJU4tX901m3mj0SHiBljMrPT4ZEsynbBhR7bK1yn9TY1jjyhN8EFi7QF5IWtUEni+0mia2BCMHZ5ZkmFZqQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@snazzah/davey-win32-ia32-msvc@0.1.11': + resolution: {integrity: sha512-ualexn8SeLsiMHhWfzVrzRcjHgcBapg++FPaVgJJxoh2S/jCRiklXOu3luqIZdJdNKvhe2V9SwO/cImPeIIBKw==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@snazzah/davey-win32-x64-msvc@0.1.11': + resolution: {integrity: sha512-muNhc8UKXtknzsH/w4AIkbPR2I8BuvApn0pDXar0IEvY8PCjqU/M8MPbOOEYwQVvQRMwVTgExtxzrkBPSXB4nA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@snazzah/davey@0.1.11': + resolution: {integrity: sha512-oBN+msHzPnm1M5DDx3wVD7iBwpNXFUtkh2MrAbUJu0OhKjliLChi28hq++mu1+qdMpAVQO5JKAvQQxYVbyneiw==} + engines: {node: '>= 10'} + + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + + '@tybys/wasm-util@0.10.2': + resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} + + '@types/better-sqlite3@7.6.13': + resolution: {integrity: sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==} + + '@types/body-parser@1.19.6': + resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + + '@types/express-serve-static-core@5.1.1': + resolution: {integrity: sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==} + + '@types/express@5.0.6': + resolution: {integrity: sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==} + + '@types/fluent-ffmpeg@2.1.28': + resolution: {integrity: sha512-5ovxsDwBcPfJ+eYs1I/ZpcYCnkce7pvH9AHSvrZllAp1ZPpTRDZAFjF3TRFbukxSgIYTTNYePbS0rKUmaxVbXw==} + + '@types/http-errors@2.0.5': + resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} + + '@types/node@24.12.4': + resolution: {integrity: sha512-GUUEShf+PBCGW2KaXwcIt3Yk+e3pkKwWKb9GSyM9WQVE+ep2jzmHdGsHzu4wgcZy5fN9FBdVzjpBQsYlpfpgLA==} + + '@types/qs@6.15.1': + resolution: {integrity: sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + + '@types/retry@0.12.2': + resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} + + '@types/send@1.2.1': + resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==} + + '@types/serve-static@2.2.0': + resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==} + + '@types/validator@13.15.10': + resolution: {integrity: sha512-T8L6i7wCuyoK8A/ZeLYt1+q0ty3Zb9+qbSSvrIVitzT3YjZqkTZ40IbRsPanlB4h1QB3JVL1SYCdR6ngtFYcuA==} + + '@types/ws@8.18.1': + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + + '@vitest/expect@4.1.6': + resolution: {integrity: sha512-7EHDquPthALSV0jhhjgEW8FXaviMx7rSqu8W6oqCoAuOhKov814P99QDV1pxMA3QPv21YudvJngIhjrNI4opLg==} + + '@vitest/mocker@4.1.6': + resolution: {integrity: sha512-MCFc63czMjEInOlcY2cpQCvCN+KgbAn+60xu9cMgP4sKaLC5JNAKw7JH8QdAnoAC88hW1IiSNZ+GgVXlN1UcMQ==} + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@4.1.6': + resolution: {integrity: sha512-h5SxD/IzNhZYnrSZRsUZQIC+vD0GY8cUvq0iwsmkFKixRCKLLWqCXa/FIQ4S1R+sI+PGoojkHsdNrbZiM9Qpgw==} + + '@vitest/runner@4.1.6': + resolution: {integrity: sha512-nOPCmn2+yD0ZNmKdsXGv/UxMMWbMuKeD6GyYncNwdkYDxpQvrPSKYj2rWuDjC2Y4b6w6hjip5dBKFzEUuZe3vA==} + + '@vitest/snapshot@4.1.6': + resolution: {integrity: sha512-YhsdE6xAVfTDmzjxL2ZDUvjj+ZsgyOKe+TdQzqkD72wIOmHka8NuGQ6NpTNZv9D2Z63fbwWKJPeVpEw4EQgYxw==} + + '@vitest/spy@4.1.6': + resolution: {integrity: sha512-JFKxMx6udhwKh/Ldo270e17QX710vgunMkuPAvXjHSvC6oqLWAHhVhjg/I71q0u0CBSErIODV1Kjv0FQNSWjdg==} + + '@vitest/utils@4.1.6': + resolution: {integrity: sha512-FxIY+U81R3LGKCxaHHFRQ5+g6/iRgGLmeHWdp2Amj4ljQRrEIWHmZyDfDYBRZlpyqA7qKxtS9DD1dhk8RnRIVQ==} + + abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + accepts@2.0.0: + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} + engines: {node: '>= 0.6'} + + aes-js@3.1.2: + resolution: {integrity: sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==} + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + 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'} + + aproba@2.1.0: + resolution: {integrity: sha512-tLIEcj5GuR2RSTnxNKdkK0dJ/GrC7P38sUkiDmDuHfsHmbagTFAxDVIBltoklXEVIQ/f14IL8IMJ5pn9Hez1Ew==} + + are-we-there-yet@2.0.0: + resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} + engines: {node: '>=10'} + deprecated: This package is no longer supported. + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + async@0.2.10: + resolution: {integrity: sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==} + + atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + bare-addon-resolve@1.10.0: + resolution: {integrity: sha512-sSd0jieRJlDaODOzj0oe0RjFVC1QI0ZIjGIdPkbrTXsdVVtENg14c+lHHAhHwmWCZ2nQlMhy8jA3Y5LYPc/isA==} + peerDependencies: + bare-url: '*' + peerDependenciesMeta: + bare-url: + optional: true + + bare-module-resolve@1.12.2: + resolution: {integrity: sha512-j+hiD5k99qec4KjJvYsI67q5AOBifmy9JG3oeMVxTmvrhn2sIdp8StrUvZu4YNgwTpO+NhniQG16N1ETDe1k5w==} + peerDependencies: + bare-url: '*' + peerDependenciesMeta: + bare-url: + optional: true + + bare-semver@1.0.3: + resolution: {integrity: sha512-HS/A30bi2+PiRJfU6R4+Kp+6KeLSCSByjYM2iiobOKzLAvtu1CT+S8xWfiU7wz0erknjkUoC+yXy108tzIuP5Q==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + better-sqlite3@12.10.0: + resolution: {integrity: sha512-CyzaZRQKyHkB2ZInfTTl2nvT33EbDpjkLEbE8/Zck3Ll6O0qqvuGdrJ45HgtH+HykRg88ITY3AdreBGN70aBSQ==} + engines: {node: 20.x || 22.x || 23.x || 24.x || 25.x || 26.x} + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + bintrees@1.0.2: + resolution: {integrity: sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + body-parser@2.2.2: + resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==} + engines: {node: '>=18'} + + brace-expansion@1.1.14: + resolution: {integrity: sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + class-transformer@0.5.1: + resolution: {integrity: sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==} + + class-validator@0.15.1: + resolution: {integrity: sha512-LqoS80HBBSCVhz/3KloUly0ovokxpdOLR++Al3J3+dHXWt9sTKlKd4eYtoxhxyUjoe5+UcIM+5k9MIxyBWnRTw==} + + cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + + 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==} + + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + commander@14.0.3: + resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} + engines: {node: '>=20'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + + content-disposition@1.1.0: + resolution: {integrity: sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==} + engines: {node: '>=18'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + content-type@2.0.0: + resolution: {integrity: sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==} + engines: {node: '>=18'} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} + + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + + dateformat@4.6.3: + resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + dijkstrajs@1.0.3: + resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} + + discord-api-types@0.38.47: + resolution: {integrity: sha512-XgXQodHQBAE6kfD7kMvVo30863iHX1LHSqNq6MGUTDwIFCCvHva13+rwxyxVXDqudyApMNAd32PGjgVETi5rjA==} + + discord.js-selfbot-v13@3.7.1: + resolution: {integrity: sha512-cq5AW/CVvNIUVTSBdZmhsob7v+wjxnkFjuNULcxBXvxutVBnSZqZupsT/9CDtdnT71iKUn9N8GGL6GPg9aZlGA==} + engines: {node: '>=20.18'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + dotenv@17.4.2: + resolution: {integrity: sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==} + engines: {node: '>=12'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + duplex-child-process@1.0.1: + resolution: {integrity: sha512-tWbt4tyioDjyK5nh+qicbdvBvNjSXsTUF5zKUwSauuKPg1mokjwn/HezwfvWhh6hXoLdgetY+ZlzU/sMwUMJkg==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + 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==} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@2.1.0: + resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + esbuild@0.27.7: + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} + engines: {node: '>=18'} + hasBin: true + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + engines: {node: '>=12.0.0'} + + express@5.2.1: + resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} + engines: {node: '>= 18'} + + fast-copy@3.0.2: + resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fetch-cookie@3.2.0: + resolution: {integrity: sha512-n61pQIxP25C6DRhcJxn7BDzgHP/+S56Urowb5WFxtcRMpU6drqXD90xjyAsVQYsNSNNVbaCcYY1DuHsdkZLuiA==} + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + finalhandler@2.1.1: + resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} + engines: {node: '>= 18.0.0'} + + find-process@2.1.1: + resolution: {integrity: sha512-SrQDx3QhlmHM90iqn9rdjCQcw/T+WlpOkHFsjoRgB+zTpDfltNA1VSNYeYELwhUTJy12UFxqjWhmhOrJc+o4sA==} + hasBin: true + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + fluent-ffmpeg@2.1.3: + resolution: {integrity: sha512-Be3narBNt2s6bsaqP6Jzq91heDgOEaDCJAXcE3qcma/EJBSy5FB4cvO31XBInuAuKBx8Kptf8dkhjK0IOru39Q==} + engines: {node: '>=18'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fresh@2.0.0: + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + engines: {node: '>= 0.8'} + + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + 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} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gauge@3.0.2: + resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} + engines: {node: '>=10'} + deprecated: This package is no longer supported. + + 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'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.14.0: + resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} + + github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + + 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'} + + 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-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + + hasown@2.0.3: + resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} + engines: {node: '>= 0.4'} + + helmet@8.1.0: + resolution: {integrity: sha512-jOiHyAZsmnr8LqoPGmCjYAaiuWwjAPLgY8ZX2XrmHawt99/u1y6RgrZMTeoPfpUbV96HOalYgz1qzkRbw54Pmg==} + engines: {node: '>=18.0.0'} + + help-me@5.0.0: + resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} + + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + iconv-lite@0.7.2: + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} + engines: {node: '>=0.10.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + 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==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + ipaddr.js@1.9.1: + 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-network-error@1.3.2: + resolution: {integrity: sha512-PhBY86zaxNZUuWP6h13Vu5oFe0XY6/UlKzQnYFELzGVHygP3MxmvTfYSG7GN3aIab/iWudSMgjSnG9Dq+nHrgA==} + engines: {node: '>=16'} + + is-promise@4.0.0: + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + + libphonenumber-js@1.13.1: + resolution: {integrity: sha512-GEw0GLL7YUUA6nv21IsCvVjtI5Ejn84sjbdfQ9KxdbqEVOk1PZh7xejn01EEiniKw+dBeCfim+8MGeuvVuE2BA==} + + libsodium-wrappers@0.8.4: + resolution: {integrity: sha512-mu8aAWucZjTB5O/BtGXtW4e1agy7uHxNYG7zPthmmD1jU43LCDmSWZLN4JhflbdPXj3yDO4lxM1O9hLDgIOXDw==} + + libsodium@0.8.4: + resolution: {integrity: sha512-lMcYaRi0zcs7tarATsQUYC7rstliIXZuoq0c6zXSgNtSNtdvBgkSegjWhpMJAXzKX3SUSwIp7+zEsob+j3LuRw==} + + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + 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] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} + + loglevel@1.9.2: + resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} + engines: {node: '>= 0.6.0'} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + media-typer@1.1.0: + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + engines: {node: '>= 0.8'} + + merge-descriptors@2.0.0: + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} + engines: {node: '>=18'} + + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime-types@3.0.2: + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} + engines: {node: '>=18'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mp4box@0.5.4: + resolution: {integrity: sha512-GcCH0fySxBurJtvr0dfhz0IxHZjc1RP+F+I8xw+LIwkU1a+7HJx8NCDiww1I5u4Hz6g4eR1JlGADEGJ9r4lSfA==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.12: + resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + napi-build-utils@2.0.0: + resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} + + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} + + node-abi@3.92.0: + resolution: {integrity: sha512-KdHvFWZjEKDf0cakgFjebl371GPsISX2oZHcuyKqM7DtogIsHrqKeLTo8wBHxaXRAQlY2PsPlZmfo+9ZCxEREQ==} + engines: {node: '>=10'} + + node-addon-api@8.7.0: + resolution: {integrity: sha512-9MdFxmkKaOYVTV+XVRG8ArDwwQ77XIgIPyKASB1k3JPq3M8fGQQQE3YpMOrKm6g//Ktx8ivZr8xo1Qmtqub+GA==} + engines: {node: ^18 || ^20 || >= 21} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + nopt@5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true + + npmlog@5.0.1: + resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + deprecated: This package is no longer supported. + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + + on-exit-leak-free@2.1.2: + resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} + engines: {node: '>=14.0.0'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + otplib@12.0.1: + resolution: {integrity: sha512-xDGvUOQjop7RDgxTQ+o4pOol0/3xSZzawTiPKRrHnQWAy0WjhNs/5HdIDJCrqC4MBynmjXgULc6YfioaxZeFgg==} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-retry@6.2.1: + resolution: {integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==} + engines: {node: '>=16.17'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-to-regexp@8.4.2: + resolution: {integrity: sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + + pino-abstract-transport@1.2.0: + resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==} + + pino-abstract-transport@2.0.0: + resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} + + pino-abstract-transport@3.0.0: + resolution: {integrity: sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg==} + + pino-http@11.0.0: + resolution: {integrity: sha512-wqg5XIAGRRIWtTk8qPGxkbrfiwEWz1lgedVLvhLALudKXvg1/L2lTFgTGPJ4Z2e3qcRmxoFxDuSdMdMGNM6I1g==} + + pino-pretty@10.3.1: + resolution: {integrity: sha512-az8JbIYeN/1iLj2t0jR9DV48/LQ3RC6hZPpapKPkb84Q+yTidMCpgWxIT3N0flnBDilyBQ1luWNpOeJptjdp/g==} + hasBin: true + + pino-std-serializers@7.1.0: + resolution: {integrity: sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==} + + pino@10.3.1: + resolution: {integrity: sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg==} + hasBin: true + + pino@9.14.0: + resolution: {integrity: sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w==} + hasBin: true + + pngjs@5.0.0: + resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} + engines: {node: '>=10.13.0'} + + postcss@8.5.14: + resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} + engines: {node: ^10 || ^12 || >=14} + + prebuild-install@7.1.3: + resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} + engines: {node: '>=10'} + deprecated: No longer maintained. Please contact the author of the relevant native addon; alternatives are available. + hasBin: true + + prism-media@1.3.5: + resolution: {integrity: sha512-IQdl0Q01m4LrkN1EGIE9lphov5Hy7WWlH6ulf5QdGePLlPas9p2mhgddTEHrlaXYjjFToM1/rWuwF37VF4taaA==} + peerDependencies: + '@discordjs/opus': '>=0.8.0 <1.0.0' + ffmpeg-static: ^5.0.2 || ^4.2.7 || ^3.0.0 || ^2.4.0 + node-opus: ^0.3.3 + opusscript: ^0.0.8 + peerDependenciesMeta: + '@discordjs/opus': + optional: true + ffmpeg-static: + optional: true + node-opus: + optional: true + opusscript: + optional: true + + prism-media@2.0.0-alpha.0: + resolution: {integrity: sha512-QL9rnO4xo0grgj7ptsA+AzSCYLirGWM4+ZcyboFmbkYHSgaXIESzHq/SXNizz2iHIfuM2og0cPhmSnTVMeFjKg==} + + process-warning@5.0.0: + resolution: {integrity: sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + prom-client@15.1.3: + resolution: {integrity: sha512-6ZiOBfCywsD4k1BN9IX0uZhF+tJkV8q8llP64G5Hajs4JOeVLPCwpPVcpXy3BwYiUGgyJzsJJQeOIv7+hDSq8g==} + engines: {node: ^16 || ^18 || >=20} + + 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==} + + qrcode@1.5.4: + resolution: {integrity: sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==} + engines: {node: '>=10.13.0'} + hasBin: true + + qs@6.15.1: + resolution: {integrity: sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==} + engines: {node: '>=0.6'} + + quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@3.0.2: + resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} + engines: {node: '>= 0.10'} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readable-stream@4.7.0: + resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + real-require@0.2.0: + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} + engines: {node: '>= 12.13.0'} + + real-require@1.0.0: + resolution: {integrity: sha512-P4nbQYQfePJxRSmY+v/KINxVucm4NF3p3s7pJveMTtom52FR4YGltUQLB8idDXwDDWW+eYrWDFbuzUnjoWHF7g==} + + require-addon@1.2.0: + resolution: {integrity: sha512-VNPDZlYgIYQwWp9jMTzljx+k0ZtatKlcvOhktZ/anNPI3dQ9NXk7cq2U4iJ1wd9IrytRnYhyEocFWbkdPb+MYA==} + engines: {bare: '>=1.10.0'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rolldown@1.0.0: + resolution: {integrity: sha512-yD986aXDESFGS95spT1LAv0jssywP4npMEjmMHyN2/5+eE8qQJUype2AaKkRiLgBgyD0LFlubwAht7VmY8rGoA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + router@2.2.0: + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} + engines: {node: '>= 18'} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + secure-json-parse@2.7.0: + resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.8.0: + resolution: {integrity: sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==} + 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'} + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + set-cookie-parser@2.7.2: + resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + side-channel-list@1.0.1: + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + + simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + + sodium-native@4.3.3: + resolution: {integrity: sha512-OnxSlN3uyY8D0EsLHpmm2HOFmKddQVvEMmsakCrXUzSd8kjjbzL413t4ZNF3n0UxSwNgwTyUvkmZHTfuCeiYSw==} + + sonic-boom@3.8.1: + resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==} + + sonic-boom@4.2.1: + resolution: {integrity: sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} + + 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.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + tar-fs@2.1.4: + resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==} + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + + tdigest@0.1.2: + resolution: {integrity: sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==} + + thirty-two@1.0.2: + resolution: {integrity: sha512-OEI0IWCe+Dw46019YLl6V10Us5bi574EvlJEOcAkB29IzQ/mYD1A6RyNHLjZPiHCmuodxvgF6U+vZO1L15lxVA==} + engines: {node: '>=0.2.6'} + + thread-stream@3.1.0: + resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} + + thread-stream@4.1.0: + resolution: {integrity: sha512-Bw6h2iBDt16v6iHLChBIoVYU8CBo9GPsW8TG7h1hRVhqKhIkH6N8qkxNSmiOZTKsCLPbtWG4ViWLkU6KeKXpig==} + engines: {node: '>=20'} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@1.1.2: + resolution: {integrity: sha512-dAqSqE/RabpBKI8+h26GfLq6Vb3JVXs30XYQjdMjaj/c2tS8IYYMbIzP599KtRj7c57/wYApb3QjgRgXmrCukA==} + engines: {node: '>=18'} + + tinyglobby@0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} + engines: {node: '>=12.0.0'} + + tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} + engines: {node: '>=14.0.0'} + + tldts-core@6.1.86: + resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} + + tldts-core@7.0.30: + resolution: {integrity: sha512-uiHN8PIB1VmWyS98eZYja4xzlYqeFZVjb4OuYlJQnZAuJhMw4PbKQOKgHKhBdJR3FE/t5mUQ1Kd80++B+qhD1Q==} + + tldts@6.1.86: + resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} + hasBin: true + + tldts@7.0.30: + resolution: {integrity: sha512-ELrFxuqsDdHUwoh0XxDbxuLD3Wnz49Z57IFvTtvWy1hJdcMZjXLIuonjilCiWHlT2GbE4Wlv1wKVTzDFnXH1aw==} + hasBin: true + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + tough-cookie@5.1.2: + resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} + engines: {node: '>=16'} + + tough-cookie@6.0.1: + resolution: {integrity: sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==} + engines: {node: '>=16'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + ts-mixer@6.0.4: + resolution: {integrity: sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tsx@4.21.0: + resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} + engines: {node: '>=18.0.0'} + hasBin: true + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + type-is@2.1.0: + resolution: {integrity: sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==} + engines: {node: '>= 18'} + + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + + undici@7.25.0: + resolution: {integrity: sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==} + engines: {node: '>=20.18.1'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + validator@13.15.35: + resolution: {integrity: sha512-TQ5pAGhd5whStmqWvYF4OjQROlmv9SMFVt37qoCBdqRffuuklWYQlCNnEs2ZaIBD1kZRNnikiZOS1eqgkar0iw==} + engines: {node: '>= 0.10'} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vite@8.0.12: + resolution: {integrity: sha512-w2dDofOWv2QB09ZITZBsvKTVAlYvPR4IAmrY/v0ir9KvLs0xybR7i48wxhM1/oyBWO34wPns+bPGw5ZrZqDpZg==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.1.18 + esbuild: ^0.27.0 || ^0.28.0 + jiti: '>=1.21.0' + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true + jiti: + optional: true + less: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@4.1.6: + resolution: {integrity: sha512-6lvjbS3p9b4CrdCmguzbh2/4uoXhGE2q71R4OX5sqF9R1bo9Xd6fGrMAfvp5wnCzlBnFVdCOp6onuTQVbo8iUQ==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.6 + '@vitest/browser-preview': 4.1.6 + '@vitest/browser-webdriverio': 4.1.6 + '@vitest/coverage-istanbul': 4.1.6 + '@vitest/coverage-v8': 4.1.6 + '@vitest/ui': 4.1.6 + happy-dom: '*' + jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + werift-rtp@0.8.8: + resolution: {integrity: sha512-GiYMSdvCyScQaw5bnEsraSoHUVZpjfokJAiLV4R1FsiB06t6XiebPYPpkqB9nYNNKiA8Z/cYWsym7wISq1sYSQ==} + engines: {node: '>=10'} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@8.20.1: + resolution: {integrity: sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + + yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + + zod@4.4.3: + resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} + +snapshots: + + '@biomejs/biome@2.4.15': + optionalDependencies: + '@biomejs/cli-darwin-arm64': 2.4.15 + '@biomejs/cli-darwin-x64': 2.4.15 + '@biomejs/cli-linux-arm64': 2.4.15 + '@biomejs/cli-linux-arm64-musl': 2.4.15 + '@biomejs/cli-linux-x64': 2.4.15 + '@biomejs/cli-linux-x64-musl': 2.4.15 + '@biomejs/cli-win32-arm64': 2.4.15 + '@biomejs/cli-win32-x64': 2.4.15 + + '@biomejs/cli-darwin-arm64@2.4.15': + optional: true + + '@biomejs/cli-darwin-x64@2.4.15': + optional: true + + '@biomejs/cli-linux-arm64-musl@2.4.15': + optional: true + + '@biomejs/cli-linux-arm64@2.4.15': + optional: true + + '@biomejs/cli-linux-x64-musl@2.4.15': + optional: true + + '@biomejs/cli-linux-x64@2.4.15': + optional: true + + '@biomejs/cli-win32-arm64@2.4.15': + optional: true + + '@biomejs/cli-win32-x64@2.4.15': + optional: true + + '@discordjs/builders@1.14.1': + dependencies: + '@discordjs/formatters': 0.6.2 + '@discordjs/util': 1.2.0 + '@sapphire/shapeshift': 4.0.0 + discord-api-types: 0.38.47 + fast-deep-equal: 3.1.3 + ts-mixer: 6.0.4 + tslib: 2.8.1 + + '@discordjs/collection@2.1.1': {} + + '@discordjs/formatters@0.6.2': + dependencies: + discord-api-types: 0.38.47 + + '@discordjs/node-pre-gyp@0.4.5': + dependencies: + detect-libc: 2.1.2 + https-proxy-agent: 5.0.1 + make-dir: 3.1.0 + node-fetch: 2.7.0 + nopt: 5.0.0 + npmlog: 5.0.1 + rimraf: 3.0.2 + semver: 7.8.0 + tar: 6.2.1 + transitivePeerDependencies: + - encoding + - supports-color + + '@discordjs/opus@0.10.0': + dependencies: + '@discordjs/node-pre-gyp': 0.4.5 + node-addon-api: 8.7.0 + transitivePeerDependencies: + - encoding + - supports-color + + '@discordjs/util@1.2.0': + dependencies: + discord-api-types: 0.38.47 + + '@discordjs/voice@0.19.2(@discordjs/opus@0.10.0)(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + dependencies: + '@snazzah/davey': 0.1.11(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + '@types/ws': 8.18.1 + discord-api-types: 0.38.47 + prism-media: 1.3.5(@discordjs/opus@0.10.0) + tslib: 2.8.1 + ws: 8.20.1 + transitivePeerDependencies: + - '@discordjs/opus' + - '@emnapi/core' + - '@emnapi/runtime' + - bufferutil + - ffmpeg-static + - node-opus + - opusscript + - utf-8-validate + + '@emnapi/core@1.10.0': + dependencies: + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.10.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@esbuild/aix-ppc64@0.27.7': + optional: true + + '@esbuild/android-arm64@0.27.7': + optional: true + + '@esbuild/android-arm@0.27.7': + optional: true + + '@esbuild/android-x64@0.27.7': + optional: true + + '@esbuild/darwin-arm64@0.27.7': + optional: true + + '@esbuild/darwin-x64@0.27.7': + optional: true + + '@esbuild/freebsd-arm64@0.27.7': + optional: true + + '@esbuild/freebsd-x64@0.27.7': + optional: true + + '@esbuild/linux-arm64@0.27.7': + optional: true + + '@esbuild/linux-arm@0.27.7': + optional: true + + '@esbuild/linux-ia32@0.27.7': + optional: true + + '@esbuild/linux-loong64@0.27.7': + optional: true + + '@esbuild/linux-mips64el@0.27.7': + optional: true + + '@esbuild/linux-ppc64@0.27.7': + optional: true + + '@esbuild/linux-riscv64@0.27.7': + optional: true + + '@esbuild/linux-s390x@0.27.7': + optional: true + + '@esbuild/linux-x64@0.27.7': + optional: true + + '@esbuild/netbsd-arm64@0.27.7': + optional: true + + '@esbuild/netbsd-x64@0.27.7': + optional: true + + '@esbuild/openbsd-arm64@0.27.7': + optional: true + + '@esbuild/openbsd-x64@0.27.7': + optional: true + + '@esbuild/openharmony-arm64@0.27.7': + optional: true + + '@esbuild/sunos-x64@0.27.7': + optional: true + + '@esbuild/win32-arm64@0.27.7': + optional: true + + '@esbuild/win32-ia32@0.27.7': + optional: true + + '@esbuild/win32-x64@0.27.7': + optional: true + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@minhducsun2002/leb128@1.0.0': {} + + '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.2 + optional: true + + '@opentelemetry/api@1.9.1': {} + + '@otplib/core@12.0.1': {} + + '@otplib/plugin-crypto@12.0.1': + dependencies: + '@otplib/core': 12.0.1 + + '@otplib/plugin-thirty-two@12.0.1': + dependencies: + '@otplib/core': 12.0.1 + thirty-two: 1.0.2 + + '@otplib/preset-default@12.0.1': + dependencies: + '@otplib/core': 12.0.1 + '@otplib/plugin-crypto': 12.0.1 + '@otplib/plugin-thirty-two': 12.0.1 + + '@otplib/preset-v11@12.0.1': + dependencies: + '@otplib/core': 12.0.1 + '@otplib/plugin-crypto': 12.0.1 + '@otplib/plugin-thirty-two': 12.0.1 + + '@oxc-project/types@0.129.0': {} + + '@pinojs/redact@0.4.0': {} + + '@rolldown/binding-android-arm64@1.0.0': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.0': + optional: true + + '@rolldown/binding-darwin-x64@1.0.0': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.0': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.0': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.0': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.0.0': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.0.0': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.0': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.0': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.0': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.0': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.0': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.0': + optional: true + + '@rolldown/pluginutils@1.0.0': {} + + '@sapphire/async-queue@1.5.5': {} + + '@sapphire/shapeshift@4.0.0': + dependencies: + fast-deep-equal: 3.1.3 + lodash: 4.18.1 + + '@shinyoshiaki/jspack@0.0.6': {} + + '@snazzah/davey-android-arm-eabi@0.1.11': + optional: true + + '@snazzah/davey-android-arm64@0.1.11': + optional: true + + '@snazzah/davey-darwin-arm64@0.1.11': + optional: true + + '@snazzah/davey-darwin-x64@0.1.11': + optional: true + + '@snazzah/davey-freebsd-x64@0.1.11': + optional: true + + '@snazzah/davey-linux-arm-gnueabihf@0.1.11': + optional: true + + '@snazzah/davey-linux-arm64-gnu@0.1.11': + optional: true + + '@snazzah/davey-linux-arm64-musl@0.1.11': + optional: true + + '@snazzah/davey-linux-x64-gnu@0.1.11': + optional: true + + '@snazzah/davey-linux-x64-musl@0.1.11': + optional: true + + '@snazzah/davey-wasm32-wasi@0.1.11(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + dependencies: + '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + optional: true + + '@snazzah/davey-win32-arm64-msvc@0.1.11': + optional: true + + '@snazzah/davey-win32-ia32-msvc@0.1.11': + optional: true + + '@snazzah/davey-win32-x64-msvc@0.1.11': + optional: true + + '@snazzah/davey@0.1.11(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + optionalDependencies: + '@snazzah/davey-android-arm-eabi': 0.1.11 + '@snazzah/davey-android-arm64': 0.1.11 + '@snazzah/davey-darwin-arm64': 0.1.11 + '@snazzah/davey-darwin-x64': 0.1.11 + '@snazzah/davey-freebsd-x64': 0.1.11 + '@snazzah/davey-linux-arm-gnueabihf': 0.1.11 + '@snazzah/davey-linux-arm64-gnu': 0.1.11 + '@snazzah/davey-linux-arm64-musl': 0.1.11 + '@snazzah/davey-linux-x64-gnu': 0.1.11 + '@snazzah/davey-linux-x64-musl': 0.1.11 + '@snazzah/davey-wasm32-wasi': 0.1.11(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + '@snazzah/davey-win32-arm64-msvc': 0.1.11 + '@snazzah/davey-win32-ia32-msvc': 0.1.11 + '@snazzah/davey-win32-x64-msvc': 0.1.11 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + + '@standard-schema/spec@1.1.0': {} + + '@tybys/wasm-util@0.10.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/better-sqlite3@7.6.13': + dependencies: + '@types/node': 24.12.4 + + '@types/body-parser@1.19.6': + dependencies: + '@types/connect': 3.4.38 + '@types/node': 24.12.4 + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/connect@3.4.38': + dependencies: + '@types/node': 24.12.4 + + '@types/deep-eql@4.0.2': {} + + '@types/estree@1.0.9': {} + + '@types/express-serve-static-core@5.1.1': + dependencies: + '@types/node': 24.12.4 + '@types/qs': 6.15.1 + '@types/range-parser': 1.2.7 + '@types/send': 1.2.1 + + '@types/express@5.0.6': + dependencies: + '@types/body-parser': 1.19.6 + '@types/express-serve-static-core': 5.1.1 + '@types/serve-static': 2.2.0 + + '@types/fluent-ffmpeg@2.1.28': + dependencies: + '@types/node': 24.12.4 + + '@types/http-errors@2.0.5': {} + + '@types/node@24.12.4': + dependencies: + undici-types: 7.16.0 + + '@types/qs@6.15.1': {} + + '@types/range-parser@1.2.7': {} + + '@types/retry@0.12.2': {} + + '@types/send@1.2.1': + dependencies: + '@types/node': 24.12.4 + + '@types/serve-static@2.2.0': + dependencies: + '@types/http-errors': 2.0.5 + '@types/node': 24.12.4 + + '@types/validator@13.15.10': {} + + '@types/ws@8.18.1': + dependencies: + '@types/node': 24.12.4 + + '@vitest/expect@4.1.6': + dependencies: + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.1.6 + '@vitest/utils': 4.1.6 + chai: 6.2.2 + tinyrainbow: 3.1.0 + + '@vitest/mocker@4.1.6(vite@8.0.12(@types/node@24.12.4)(esbuild@0.27.7)(tsx@4.21.0))': + dependencies: + '@vitest/spy': 4.1.6 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 8.0.12(@types/node@24.12.4)(esbuild@0.27.7)(tsx@4.21.0) + + '@vitest/pretty-format@4.1.6': + dependencies: + tinyrainbow: 3.1.0 + + '@vitest/runner@4.1.6': + dependencies: + '@vitest/utils': 4.1.6 + pathe: 2.0.3 + + '@vitest/snapshot@4.1.6': + dependencies: + '@vitest/pretty-format': 4.1.6 + '@vitest/utils': 4.1.6 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/spy@4.1.6': {} + + '@vitest/utils@4.1.6': + dependencies: + '@vitest/pretty-format': 4.1.6 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 + + abbrev@1.1.1: {} + + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + + accepts@2.0.0: + dependencies: + mime-types: 3.0.2 + negotiator: 1.0.0 + + aes-js@3.1.2: {} + + agent-base@6.0.2: + dependencies: + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + ansi-regex@5.0.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + aproba@2.1.0: {} + + are-we-there-yet@2.0.0: + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.2 + + assertion-error@2.0.1: {} + + async@0.2.10: {} + + atomic-sleep@1.0.0: {} + + balanced-match@1.0.2: {} + + bare-addon-resolve@1.10.0: + dependencies: + bare-module-resolve: 1.12.2 + bare-semver: 1.0.3 + + bare-module-resolve@1.12.2: + dependencies: + bare-semver: 1.0.3 + + bare-semver@1.0.3: {} + + base64-js@1.5.1: {} + + better-sqlite3@12.10.0: + dependencies: + bindings: 1.5.0 + prebuild-install: 7.1.3 + + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + + bintrees@1.0.2: {} + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + body-parser@2.2.2: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 4.4.3 + http-errors: 2.0.1 + iconv-lite: 0.7.2 + on-finished: 2.4.1 + qs: 6.15.1 + raw-body: 3.0.2 + type-is: 2.1.0 + transitivePeerDependencies: + - supports-color + + brace-expansion@1.1.14: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bytes@3.1.2: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + camelcase@5.3.1: {} + + chai@6.2.2: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chownr@1.1.4: {} + + chownr@2.0.0: {} + + class-transformer@0.5.1: {} + + class-validator@0.15.1: + dependencies: + '@types/validator': 13.15.10 + libphonenumber-js: 1.13.1 + validator: 13.15.35 + + cliui@6.0.0: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + color-support@1.1.3: {} + + colorette@2.0.20: {} + + commander@14.0.3: {} + + concat-map@0.0.1: {} + + console-control-strings@1.1.0: {} + + content-disposition@1.1.0: {} + + content-type@1.0.5: {} + + content-type@2.0.0: {} + + convert-source-map@2.0.0: {} + + cookie-signature@1.2.2: {} + + cookie@0.7.2: {} + + dateformat@4.6.3: {} + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + decamelize@1.2.0: {} + + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + + deep-extend@0.6.0: {} + + delegates@1.0.0: {} + + depd@2.0.0: {} + + detect-libc@2.1.2: {} + + dijkstrajs@1.0.3: {} + + discord-api-types@0.38.47: {} + + discord.js-selfbot-v13@3.7.1(@discordjs/opus@0.10.0): + dependencies: + '@discordjs/builders': 1.14.1 + '@discordjs/collection': 2.1.1 + '@sapphire/async-queue': 1.5.5 + '@sapphire/shapeshift': 4.0.0 + discord-api-types: 0.38.47 + fetch-cookie: 3.2.0 + find-process: 2.1.1 + otplib: 12.0.1 + prism-media: 1.3.5(@discordjs/opus@0.10.0) + qrcode: 1.5.4 + tough-cookie: 5.1.2 + tree-kill: 1.2.2 + undici: 7.25.0 + werift-rtp: 0.8.8 + ws: 8.20.1 + transitivePeerDependencies: + - '@discordjs/opus' + - bufferutil + - ffmpeg-static + - node-opus + - opusscript + - utf-8-validate + + dotenv@17.4.2: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + duplex-child-process@1.0.1: {} + + ee-first@1.1.1: {} + + emoji-regex@8.0.0: {} + + encodeurl@2.0.0: {} + + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@2.1.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + esbuild@0.27.7: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.7 + '@esbuild/android-arm': 0.27.7 + '@esbuild/android-arm64': 0.27.7 + '@esbuild/android-x64': 0.27.7 + '@esbuild/darwin-arm64': 0.27.7 + '@esbuild/darwin-x64': 0.27.7 + '@esbuild/freebsd-arm64': 0.27.7 + '@esbuild/freebsd-x64': 0.27.7 + '@esbuild/linux-arm': 0.27.7 + '@esbuild/linux-arm64': 0.27.7 + '@esbuild/linux-ia32': 0.27.7 + '@esbuild/linux-loong64': 0.27.7 + '@esbuild/linux-mips64el': 0.27.7 + '@esbuild/linux-ppc64': 0.27.7 + '@esbuild/linux-riscv64': 0.27.7 + '@esbuild/linux-s390x': 0.27.7 + '@esbuild/linux-x64': 0.27.7 + '@esbuild/netbsd-arm64': 0.27.7 + '@esbuild/netbsd-x64': 0.27.7 + '@esbuild/openbsd-arm64': 0.27.7 + '@esbuild/openbsd-x64': 0.27.7 + '@esbuild/openharmony-arm64': 0.27.7 + '@esbuild/sunos-x64': 0.27.7 + '@esbuild/win32-arm64': 0.27.7 + '@esbuild/win32-ia32': 0.27.7 + '@esbuild/win32-x64': 0.27.7 + + escape-html@1.0.3: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.9 + + etag@1.8.1: {} + + event-target-shim@5.0.1: {} + + events@3.3.0: {} + + expand-template@2.0.3: {} + + expect-type@1.3.0: {} + + express@5.2.1: + dependencies: + accepts: 2.0.0 + body-parser: 2.2.2 + content-disposition: 1.1.0 + content-type: 1.0.5 + cookie: 0.7.2 + cookie-signature: 1.2.2 + debug: 4.4.3 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 2.1.1 + fresh: 2.0.0 + http-errors: 2.0.1 + merge-descriptors: 2.0.0 + mime-types: 3.0.2 + on-finished: 2.4.1 + once: 1.4.0 + parseurl: 1.3.3 + proxy-addr: 2.0.7 + qs: 6.15.1 + range-parser: 1.2.1 + router: 2.2.0 + send: 1.2.1 + serve-static: 2.2.1 + statuses: 2.0.2 + type-is: 2.1.0 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + fast-copy@3.0.2: {} + + fast-deep-equal@3.1.3: {} + + fast-safe-stringify@2.1.1: {} + + fdir@6.5.0(picomatch@4.0.4): + optionalDependencies: + picomatch: 4.0.4 + + fetch-cookie@3.2.0: + dependencies: + set-cookie-parser: 2.7.2 + tough-cookie: 6.0.1 + + file-uri-to-path@1.0.0: {} + + finalhandler@2.1.1: + dependencies: + debug: 4.4.3 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.2 + transitivePeerDependencies: + - supports-color + + find-process@2.1.1: + dependencies: + chalk: 4.1.2 + commander: 14.0.3 + loglevel: 1.9.2 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + fluent-ffmpeg@2.1.3: + dependencies: + async: 0.2.10 + which: 1.3.1 + + forwarded@0.2.0: {} + + fresh@2.0.0: {} + + fs-constants@1.0.0: {} + + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gauge@3.0.2: + dependencies: + aproba: 2.1.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + object-assign: 4.1.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + + get-caller-file@2.0.5: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.3 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-tsconfig@4.14.0: + dependencies: + resolve-pkg-maps: 1.0.0 + + github-from-package@0.0.0: {} + + 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: {} + + has-flag@4.0.0: {} + + has-symbols@1.1.0: {} + + has-unicode@2.0.1: {} + + hasown@2.0.3: + dependencies: + function-bind: 1.1.2 + + helmet@8.1.0: {} + + help-me@5.0.0: {} + + http-errors@2.0.1: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.2 + toidentifier: 1.0.1 + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + iconv-lite@0.7.2: + dependencies: + safer-buffer: 2.1.2 + + ieee754@1.2.1: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: {} + + ipaddr.js@1.9.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-network-error@1.3.2: {} + + is-promise@4.0.0: {} + + isexe@2.0.0: {} + + joycon@3.1.1: {} + + libphonenumber-js@1.13.1: {} + + libsodium-wrappers@0.8.4: + dependencies: + libsodium: 0.8.4 + + libsodium@0.8.4: {} + + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + lodash@4.18.1: {} + + loglevel@1.9.2: {} + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + make-dir@3.1.0: + dependencies: + semver: 6.3.1 + + math-intrinsics@1.1.0: {} + + media-typer@1.1.0: {} + + merge-descriptors@2.0.0: {} + + mime-db@1.54.0: {} + + mime-types@3.0.2: + dependencies: + mime-db: 1.54.0 + + mimic-response@3.1.0: {} + + minimatch@3.1.5: + dependencies: + brace-expansion: 1.1.14 + + minimist@1.2.8: {} + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@5.0.0: {} + + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + + mkdirp-classic@0.5.3: {} + + mkdirp@1.0.4: {} + + mp4box@0.5.4: {} + + ms@2.1.3: {} + + nanoid@3.3.12: {} + + napi-build-utils@2.0.0: {} + + negotiator@1.0.0: {} + + node-abi@3.92.0: + dependencies: + semver: 7.8.0 + + node-addon-api@8.7.0: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + nopt@5.0.0: + dependencies: + abbrev: 1.1.1 + + npmlog@5.0.1: + dependencies: + are-we-there-yet: 2.0.0 + console-control-strings: 1.1.0 + gauge: 3.0.2 + set-blocking: 2.0.0 + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + obug@2.1.1: {} + + on-exit-leak-free@2.1.2: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + otplib@12.0.1: + dependencies: + '@otplib/core': 12.0.1 + '@otplib/preset-default': 12.0.1 + '@otplib/preset-v11': 12.0.1 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-retry@6.2.1: + dependencies: + '@types/retry': 0.12.2 + is-network-error: 1.3.2 + retry: 0.13.1 + + p-try@2.2.0: {} + + parseurl@1.3.3: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-to-regexp@8.4.2: {} + + pathe@2.0.3: {} + + picocolors@1.1.1: {} + + picomatch@4.0.4: {} + + pino-abstract-transport@1.2.0: + dependencies: + readable-stream: 4.7.0 + split2: 4.2.0 + + pino-abstract-transport@2.0.0: + dependencies: + split2: 4.2.0 + + pino-abstract-transport@3.0.0: + dependencies: + split2: 4.2.0 + + pino-http@11.0.0: + dependencies: + get-caller-file: 2.0.5 + pino: 10.3.1 + pino-std-serializers: 7.1.0 + process-warning: 5.0.0 + + pino-pretty@10.3.1: + dependencies: + colorette: 2.0.20 + dateformat: 4.6.3 + fast-copy: 3.0.2 + fast-safe-stringify: 2.1.1 + help-me: 5.0.0 + joycon: 3.1.1 + minimist: 1.2.8 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 1.2.0 + pump: 3.0.4 + readable-stream: 4.7.0 + secure-json-parse: 2.7.0 + sonic-boom: 3.8.1 + strip-json-comments: 3.1.1 + + pino-std-serializers@7.1.0: {} + + pino@10.3.1: + dependencies: + '@pinojs/redact': 0.4.0 + atomic-sleep: 1.0.0 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 3.0.0 + pino-std-serializers: 7.1.0 + process-warning: 5.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.2.0 + safe-stable-stringify: 2.5.0 + sonic-boom: 4.2.1 + thread-stream: 4.1.0 + + pino@9.14.0: + dependencies: + '@pinojs/redact': 0.4.0 + atomic-sleep: 1.0.0 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 2.0.0 + pino-std-serializers: 7.1.0 + process-warning: 5.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.2.0 + safe-stable-stringify: 2.5.0 + sonic-boom: 4.2.1 + thread-stream: 3.1.0 + + pngjs@5.0.0: {} + + postcss@8.5.14: + dependencies: + nanoid: 3.3.12 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prebuild-install@7.1.3: + dependencies: + detect-libc: 2.1.2 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 2.0.0 + node-abi: 3.92.0 + pump: 3.0.4 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.4 + tunnel-agent: 0.6.0 + + prism-media@1.3.5(@discordjs/opus@0.10.0): + optionalDependencies: + '@discordjs/opus': 0.10.0 + + prism-media@2.0.0-alpha.0: + dependencies: + duplex-child-process: 1.0.1 + + process-warning@5.0.0: {} + + process@0.11.10: {} + + prom-client@15.1.3: + dependencies: + '@opentelemetry/api': 1.9.1 + tdigest: 0.1.2 + + 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 + + qrcode@1.5.4: + dependencies: + dijkstrajs: 1.0.3 + pngjs: 5.0.0 + yargs: 15.4.1 + + qs@6.15.1: + dependencies: + side-channel: 1.1.0 + + quick-format-unescaped@4.0.4: {} + + range-parser@1.2.1: {} + + raw-body@3.0.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.1 + iconv-lite: 0.7.2 + unpipe: 1.0.0 + + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readable-stream@4.7.0: + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + + real-require@0.2.0: {} + + real-require@1.0.0: {} + + require-addon@1.2.0: + dependencies: + bare-addon-resolve: 1.10.0 + transitivePeerDependencies: + - bare-url + + require-directory@2.1.1: {} + + require-main-filename@2.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + retry@0.13.1: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rolldown@1.0.0: + dependencies: + '@oxc-project/types': 0.129.0 + '@rolldown/pluginutils': 1.0.0 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.0 + '@rolldown/binding-darwin-arm64': 1.0.0 + '@rolldown/binding-darwin-x64': 1.0.0 + '@rolldown/binding-freebsd-x64': 1.0.0 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0 + '@rolldown/binding-linux-arm64-gnu': 1.0.0 + '@rolldown/binding-linux-arm64-musl': 1.0.0 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0 + '@rolldown/binding-linux-s390x-gnu': 1.0.0 + '@rolldown/binding-linux-x64-gnu': 1.0.0 + '@rolldown/binding-linux-x64-musl': 1.0.0 + '@rolldown/binding-openharmony-arm64': 1.0.0 + '@rolldown/binding-wasm32-wasi': 1.0.0 + '@rolldown/binding-win32-arm64-msvc': 1.0.0 + '@rolldown/binding-win32-x64-msvc': 1.0.0 + + router@2.2.0: + dependencies: + debug: 4.4.3 + depd: 2.0.0 + is-promise: 4.0.0 + parseurl: 1.3.3 + path-to-regexp: 8.4.2 + transitivePeerDependencies: + - supports-color + + safe-buffer@5.2.1: {} + + safe-stable-stringify@2.5.0: {} + + safer-buffer@2.1.2: {} + + secure-json-parse@2.7.0: {} + + semver@6.3.1: {} + + semver@7.8.0: {} + + send@1.2.1: + dependencies: + debug: 4.4.3 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 2.0.0 + http-errors: 2.0.1 + mime-types: 3.0.2 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.2 + transitivePeerDependencies: + - supports-color + + serve-static@2.2.1: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 1.2.1 + transitivePeerDependencies: + - supports-color + + set-blocking@2.0.0: {} + + set-cookie-parser@2.7.2: {} + + setprototypeof@1.2.0: {} + + side-channel-list@1.0.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.1 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + siginfo@2.0.0: {} + + signal-exit@3.0.7: {} + + simple-concat@1.0.1: {} + + simple-get@4.0.1: + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + + sodium-native@4.3.3: + dependencies: + require-addon: 1.2.0 + transitivePeerDependencies: + - bare-url + + sonic-boom@3.8.1: + dependencies: + atomic-sleep: 1.0.0 + + sonic-boom@4.2.1: + dependencies: + atomic-sleep: 1.0.0 + + source-map-js@1.2.1: {} + + split2@4.2.0: {} + + stackback@0.0.2: {} + + 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.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-json-comments@2.0.1: {} + + strip-json-comments@3.1.1: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + tar-fs@2.1.4: + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.4 + tar-stream: 2.2.0 + + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.5 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + + tar@6.2.1: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + + tdigest@0.1.2: + dependencies: + bintrees: 1.0.2 + + thirty-two@1.0.2: {} + + thread-stream@3.1.0: + dependencies: + real-require: 0.2.0 + + thread-stream@4.1.0: + dependencies: + real-require: 1.0.0 + + tinybench@2.9.0: {} + + tinyexec@1.1.2: {} + + tinyglobby@0.2.16: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + + tinyrainbow@3.1.0: {} + + tldts-core@6.1.86: {} + + tldts-core@7.0.30: {} + + tldts@6.1.86: + dependencies: + tldts-core: 6.1.86 + + tldts@7.0.30: + dependencies: + tldts-core: 7.0.30 + + toidentifier@1.0.1: {} + + tough-cookie@5.1.2: + dependencies: + tldts: 6.1.86 + + tough-cookie@6.0.1: + dependencies: + tldts: 7.0.30 + + tr46@0.0.3: {} + + tree-kill@1.2.2: {} + + ts-mixer@6.0.4: {} + + tslib@2.8.1: {} + + tsx@4.21.0: + dependencies: + esbuild: 0.27.7 + get-tsconfig: 4.14.0 + optionalDependencies: + fsevents: 2.3.3 + + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + + type-is@2.1.0: + dependencies: + content-type: 2.0.0 + media-typer: 1.1.0 + mime-types: 3.0.2 + + undici-types@7.16.0: {} + + undici@7.25.0: {} + + unpipe@1.0.0: {} + + util-deprecate@1.0.2: {} + + validator@13.15.35: {} + + vary@1.1.2: {} + + vite@8.0.12(@types/node@24.12.4)(esbuild@0.27.7)(tsx@4.21.0): + dependencies: + lightningcss: 1.32.0 + picomatch: 4.0.4 + postcss: 8.5.14 + rolldown: 1.0.0 + tinyglobby: 0.2.16 + optionalDependencies: + '@types/node': 24.12.4 + esbuild: 0.27.7 + fsevents: 2.3.3 + tsx: 4.21.0 + + vitest@4.1.6(@opentelemetry/api@1.9.1)(@types/node@24.12.4)(vite@8.0.12(@types/node@24.12.4)(esbuild@0.27.7)(tsx@4.21.0)): + dependencies: + '@vitest/expect': 4.1.6 + '@vitest/mocker': 4.1.6(vite@8.0.12(@types/node@24.12.4)(esbuild@0.27.7)(tsx@4.21.0)) + '@vitest/pretty-format': 4.1.6 + '@vitest/runner': 4.1.6 + '@vitest/snapshot': 4.1.6 + '@vitest/spy': 4.1.6 + '@vitest/utils': 4.1.6 + es-module-lexer: 2.1.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 4.1.0 + tinybench: 2.9.0 + tinyexec: 1.1.2 + tinyglobby: 0.2.16 + tinyrainbow: 3.1.0 + vite: 8.0.12(@types/node@24.12.4)(esbuild@0.27.7)(tsx@4.21.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@opentelemetry/api': 1.9.1 + '@types/node': 24.12.4 + transitivePeerDependencies: + - msw + + webidl-conversions@3.0.1: {} + + werift-rtp@0.8.8: + dependencies: + '@minhducsun2002/leb128': 1.0.0 + '@shinyoshiaki/jspack': 0.0.6 + aes-js: 3.1.2 + buffer: 6.0.3 + mp4box: 0.5.4 + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which-module@2.0.1: {} + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + wide-align@1.1.5: + dependencies: + string-width: 4.2.3 + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrappy@1.0.2: {} + + ws@8.20.1: {} + + y18n@4.0.3: {} + + yallist@4.0.0: {} + + yargs-parser@18.1.3: + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + + yargs@15.4.1: + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 + + zod@4.4.3: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..e5f5733 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,4 @@ +onlyBuiltDependencies: + - '@discordjs/opus' + - better-sqlite3 + - esbuild diff --git a/src/index.ts b/src/index.ts index 020d3c6..6d57008 100644 --- a/src/index.ts +++ b/src/index.ts @@ -15,10 +15,15 @@ import { getDatabase } from "./muxer-queue"; const logger = createChildLogger("bot"); const token = config.DISCORD_TOKEN; +logger.info({ hasToken: token.length > 0, tokenLength: token.length }, "Config loaded"); +logger.info("Creating Discord client"); const client = new Client(); const voiceController = new VoiceController(client); + +logger.info("Opening database"); const db = getDatabase(); +logger.info("Database ready"); let isShuttingDown = false; @@ -84,5 +89,10 @@ process.on("unhandledRejection", (reason, promise) => { gracefulShutdown("unhandledRejection"); }); -client.login(token); +logger.info("Calling Discord client.login"); +client.login(token).then(() => { + logger.info("Discord client.login resolved"); +}).catch((error) => { + logger.error({ error }, "Discord client.login failed"); +}); diff --git a/src/logger.ts b/src/logger.ts index ea65876..c0e7c7f 100644 --- a/src/logger.ts +++ b/src/logger.ts @@ -4,6 +4,11 @@ const isDev = process.env.NODE_ENV !== "production"; export const logger = pino({ level: process.env.LOG_LEVEL || (isDev ? "debug" : "info"), + serializers: { + error: pino.stdSerializers.err, + err: pino.stdSerializers.err, + reason: (value) => value instanceof Error ? pino.stdSerializers.err(value) : value, + }, transport: isDev ? { target: "pino-pretty", diff --git a/src/muxer-queue.ts b/src/muxer-queue.ts index 6ba2e50..5771aa4 100644 --- a/src/muxer-queue.ts +++ b/src/muxer-queue.ts @@ -1,5 +1,5 @@ import path from "node:path"; -import { Database } from "bun:sqlite"; +import Database from "better-sqlite3"; import { createChildLogger } from "./logger"; const logger = createChildLogger("muxer-queue"); diff --git a/src/player.ts b/src/player.ts index dc6ee6e..7b15854 100644 --- a/src/player.ts +++ b/src/player.ts @@ -6,7 +6,6 @@ import { StreamType, VoiceConnection, } from "@discordjs/voice"; -import prism from "prism-media"; import { Readable } from "stream"; export class DiscordPlayer { diff --git a/src/recorder/decoder.ts b/src/recorder/decoder.ts index b4e4814..0803716 100644 --- a/src/recorder/decoder.ts +++ b/src/recorder/decoder.ts @@ -1,5 +1,5 @@ import { createRequire } from "node:module"; -import prism from "prism-media"; +import * as prism from "prism-media"; import { config } from "../config"; const require = createRequire(import.meta.url); diff --git a/src/recorder/segment.ts b/src/recorder/segment.ts index 4ad1567..e850d29 100644 --- a/src/recorder/segment.ts +++ b/src/recorder/segment.ts @@ -1,6 +1,6 @@ import fs from "node:fs"; import path from "node:path"; -import prism from "prism-media"; +import * as prism from "prism-media"; import type { SegmentState } from "../types"; export function buildSegmentPaths( diff --git a/src/webserver.ts b/src/webserver.ts index ee04c19..6da5916 100644 --- a/src/webserver.ts +++ b/src/webserver.ts @@ -4,7 +4,7 @@ import helmet from "helmet"; import http from "http"; import path from "path"; import pinoHttp from "pino-http"; -import prism from "prism-media"; +import * as prism from "prism-media"; import { WebSocketServer } from "ws"; import { AppError } from "./errors"; import { createChildLogger, logger } from "./logger"; diff --git a/tsconfig.json b/tsconfig.json index 74fc610..662913d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,7 +6,7 @@ "strict": true, "esModuleInterop": true, "skipLibCheck": true, - "types": ["bun-types"], + "types": ["node"], "outDir": "dist", "rootDir": "src", "experimentalDecorators": true,