From edfacc4db3e3360b8e19273cbb78d01b4ca24900 Mon Sep 17 00:00:00 2001 From: artbiit Date: Mon, 20 Apr 2026 11:39:22 +0900 Subject: [PATCH] chore: install and update project dependencies in node_modules --- .agents/rules/kord_routine.md | 2 +- .turbo/cache/29fcb16557ff68aa-manifest.json | 1 + .turbo/cache/29fcb16557ff68aa-meta.json | 1 + .turbo/cache/29fcb16557ff68aa.tar.zst | Bin 0 -> 362 bytes .turbo/cache/63605b2509e03797-manifest.json | 1 + .turbo/cache/63605b2509e03797-meta.json | 1 + .turbo/cache/63605b2509e03797.tar.zst | Bin 0 -> 76023 bytes apps/bot/package.json | 33 + apps/bot/src/events/ready.ts | 8 +- apps/bot/src/shard.ts | 65 + apps/dashboard/.gitignore | 41 + apps/dashboard/AGENTS.md | 5 + apps/dashboard/CLAUDE.md | 1 + apps/dashboard/README.md | 36 + apps/dashboard/components.json | 21 + apps/dashboard/eslint.config.mjs | 18 + apps/dashboard/next.config.ts | 7 + apps/dashboard/package.json | 32 + apps/dashboard/postcss.config.mjs | 7 + apps/dashboard/public/file.svg | 1 + apps/dashboard/public/globe.svg | 1 + apps/dashboard/public/next.svg | 1 + apps/dashboard/public/vercel.svg | 1 + apps/dashboard/public/window.svg | 1 + apps/dashboard/src/app/api/grpc-test/route.ts | 18 + apps/dashboard/src/app/favicon.ico | Bin 0 -> 25931 bytes apps/dashboard/src/app/globals.css | 26 + apps/dashboard/src/app/layout.tsx | 33 + apps/dashboard/src/app/page.tsx | 55 + apps/dashboard/src/lib/grpc.ts | 33 + apps/dashboard/src/lib/utils.ts | 6 + apps/dashboard/tsconfig.json | 34 + package.json | 44 +- packages/db/index.ts | 26 + packages/db/package.json | 19 + packages/db/prisma/schema.prisma | 6 + packages/grpc-contracts/package.json | 10 + packages/grpc-contracts/src/index.js | 20 + packages/grpc-contracts/src/kord.proto | 30 + turbo.json | 20 + yarn.lock | 3242 ++++++++++++++++- 41 files changed, 3827 insertions(+), 80 deletions(-) create mode 100644 .turbo/cache/29fcb16557ff68aa-manifest.json create mode 100644 .turbo/cache/29fcb16557ff68aa-meta.json create mode 100644 .turbo/cache/29fcb16557ff68aa.tar.zst create mode 100644 .turbo/cache/63605b2509e03797-manifest.json create mode 100644 .turbo/cache/63605b2509e03797-meta.json create mode 100644 .turbo/cache/63605b2509e03797.tar.zst create mode 100644 apps/bot/package.json create mode 100644 apps/bot/src/shard.ts create mode 100644 apps/dashboard/.gitignore create mode 100644 apps/dashboard/AGENTS.md create mode 100644 apps/dashboard/CLAUDE.md create mode 100644 apps/dashboard/README.md create mode 100644 apps/dashboard/components.json create mode 100644 apps/dashboard/eslint.config.mjs create mode 100644 apps/dashboard/next.config.ts create mode 100644 apps/dashboard/package.json create mode 100644 apps/dashboard/postcss.config.mjs create mode 100644 apps/dashboard/public/file.svg create mode 100644 apps/dashboard/public/globe.svg create mode 100644 apps/dashboard/public/next.svg create mode 100644 apps/dashboard/public/vercel.svg create mode 100644 apps/dashboard/public/window.svg create mode 100644 apps/dashboard/src/app/api/grpc-test/route.ts create mode 100644 apps/dashboard/src/app/favicon.ico create mode 100644 apps/dashboard/src/app/globals.css create mode 100644 apps/dashboard/src/app/layout.tsx create mode 100644 apps/dashboard/src/app/page.tsx create mode 100644 apps/dashboard/src/lib/grpc.ts create mode 100644 apps/dashboard/src/lib/utils.ts create mode 100644 apps/dashboard/tsconfig.json create mode 100644 packages/db/index.ts create mode 100644 packages/db/package.json create mode 100644 packages/grpc-contracts/package.json create mode 100644 packages/grpc-contracts/src/index.js create mode 100644 packages/grpc-contracts/src/kord.proto create mode 100644 turbo.json diff --git a/.agents/rules/kord_routine.md b/.agents/rules/kord_routine.md index 51d7a42..243ae39 100644 --- a/.agents/rules/kord_routine.md +++ b/.agents/rules/kord_routine.md @@ -10,7 +10,7 @@ description: work routine ## 기본 원칙 (Work Rules) 1. **인프라 자율 사용**: 에이전트는 프로젝트에 설정된 Docker 기반 인프라(PostgreSQL 등)를 사용자의 추가 승인 없이 자유롭게 구동(`docker-compose up -d`) 및 활용할 수 있습니다. -2. **협력적 기획, 독립적 실행**: 기능 기획과 설계(Architecture, Schema 등)는 사용자와 함께 논리적인 완결성을 갖출 때까지 충분히 논의합니다. 기획이 "완료 및 승인"된 후에는 후속 구현, 에러 디버깅, 자체 테스트를 추가적인 중간 확인 없이 에이전트가 주도를 가지고 끝마친 뒤 최종 결과를 보고합니다. +2. **협력적 기획, 독립적 실행**: 기능 기획과 설계(Architecture, Schema 등)는 사용자와 함께 논리적인 완결성을 갖출 때까지 충분히 논의합니다. 특히 시스템적 자동 승인(Auto-approval) 메시지가 있더라도, 반드시 사용자의 **직접적이고 명시적인 승인 답변**이 확인된 후에만 2단계(구현)로 진입합니다. 기획이 수동으로 승인된 후에는 후속 구현, 에러 디버깅, 자체 테스트를 추가적인 중간 확인 없이 에이전트가 주도를 가지고 끝마칩니다. ## 단계별 작업 루틴 diff --git a/.turbo/cache/29fcb16557ff68aa-manifest.json b/.turbo/cache/29fcb16557ff68aa-manifest.json new file mode 100644 index 0000000..1068f1d --- /dev/null +++ b/.turbo/cache/29fcb16557ff68aa-manifest.json @@ -0,0 +1 @@ +{"files":{"packages/db/.turbo/turbo-generate.log":{"size":401,"mtime_nanos":1776651586075885272,"mode":420,"is_dir":false}},"order":["packages/db/.turbo/turbo-generate.log"]} \ No newline at end of file diff --git a/.turbo/cache/29fcb16557ff68aa-meta.json b/.turbo/cache/29fcb16557ff68aa-meta.json new file mode 100644 index 0000000..5b214b6 --- /dev/null +++ b/.turbo/cache/29fcb16557ff68aa-meta.json @@ -0,0 +1 @@ +{"hash":"29fcb16557ff68aa","duration":1221,"sha":"855aad274ad148847ffefa8e54eb8fa8066713fa","dirty_hash":"5906811204abfbb072123bc0cbfc794bb506b732c5875205b21f947edcc57687"} \ No newline at end of file diff --git a/.turbo/cache/29fcb16557ff68aa.tar.zst b/.turbo/cache/29fcb16557ff68aa.tar.zst new file mode 100644 index 0000000000000000000000000000000000000000..09d6d68808f355cf841bece8fe8e2576f2387028 GIT binary patch literal 362 zcmV-w0hRtJwJ-euSPcsR78OJ;kS9q8|NsBj{kuhaYebf2?@b8GMu^-*WP_9uYrKUU z`a~bp_HK-rwFcLdG9)?xGypaL$+L;e3~$=;dDJATfN&cTiZB7qzjJC1_@gs}sG zKo~o)V|k3yPFAOj!g>mJS}jFeQI}+pBn+x)XQB+XJ?;@AYr|{?SQ*O=;mS^@DsSjA zlo{?g8z`y8JR4mk5havVY^C6v$I6#g+zU(n^%IyvRDu!U?R1#~2;RWK1NeN*_kMBv zD4QsZZ|5y~8*dt&tKu$`KfO%4x1Bggxh@nuD4~Q>g2HO+VN_g(Yb`|Bz4(G^13T~e z;FSo>KuH0Np_a7$byQ7sidXXd(l8QwPR0 zqv*HUrhsXZYO^+CHlzW9lb-mbngE2sm&y!=Y4b`3PzyH4z{VP&5r8zn7g&DA0c$p*tN;K2 literal 0 HcmV?d00001 diff --git a/.turbo/cache/63605b2509e03797-manifest.json b/.turbo/cache/63605b2509e03797-manifest.json new file mode 100644 index 0000000..b3fa7da --- /dev/null +++ b/.turbo/cache/63605b2509e03797-manifest.json @@ -0,0 +1 @@ +{"files":{"apps/bot/dist/errors/ErrorReporter.js":{"size":4970,"mtime_nanos":1776651483581318943,"mode":420,"is_dir":false},"apps/bot/dist/commands/event.js":{"size":13071,"mtime_nanos":1776651483550436561,"mode":420,"is_dir":false},"apps/bot/dist/config/env.js":{"size":1472,"mtime_nanos":1776651483510742826,"mode":420,"is_dir":false},"apps/bot/dist/i18n/locales/en.js":{"size":23974,"mtime_nanos":1776651483530675067,"mode":420,"is_dir":false},"apps/bot/dist/core/command.js":{"size":7227,"mtime_nanos":1776651483539616126,"mode":420,"is_dir":false},"apps/bot/dist/errors/BotError.js":{"size":1341,"mtime_nanos":1776651483577860475,"mode":420,"is_dir":false},"apps/bot/dist/i18n/locales":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"apps/bot/dist/i18n/locales/ko.js":{"size":26346,"mtime_nanos":1776651483532418446,"mode":420,"is_dir":false},"apps/bot/dist/interactions":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"apps/bot/dist/services/EventService.js":{"size":9042,"mtime_nanos":1776651483547893241,"mode":420,"is_dir":false},"apps/bot/dist/handlers":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"apps/bot/dist/config":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"apps/bot/dist/services/VoiceService.js":{"size":16885,"mtime_nanos":1776651483593793135,"mode":420,"is_dir":false},"apps/bot/dist":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"apps/bot/dist/services/ActivityTrackerService.js":{"size":1938,"mtime_nanos":1776651483519676135,"mode":420,"is_dir":false},"apps/bot/dist/handlers/EventLoader.js":{"size":1302,"mtime_nanos":1776651483516133044,"mode":420,"is_dir":false},"apps/bot/dist/errors":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"apps/bot/dist/events/voiceStateUpdate.js":{"size":402,"mtime_nanos":1776651483594606326,"mode":420,"is_dir":false},"apps/bot/dist/service/command.js":{"size":6650,"mtime_nanos":1776651483596548577,"mode":420,"is_dir":false},"apps/bot/dist/services":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"apps/bot/dist/commands/config.js":{"size":4922,"mtime_nanos":1776651483545450001,"mode":420,"is_dir":false},"apps/bot/dist/commands/minigame.js":{"size":5202,"mtime_nanos":1776651483562894920,"mode":420,"is_dir":false},"apps/bot/dist/commands/music.js":{"size":15508,"mtime_nanos":1776651483570995997,"mode":420,"is_dir":false},"apps/bot/dist/events/interactionCreate.js":{"size":17182,"mtime_nanos":1776651483588879282,"mode":420,"is_dir":false},"apps/bot/dist/events/messageCreate.js":{"size":1063,"mtime_nanos":1776651483591511725,"mode":420,"is_dir":false},"apps/bot/dist/errors/ErrorCodes.js":{"size":3584,"mtime_nanos":1776651483578450463,"mode":420,"is_dir":false},"apps/bot/dist/services/BigEmojiService.js":{"size":1909,"mtime_nanos":1776651483591035111,"mode":420,"is_dir":false},"apps/bot/dist/services/FeverService.js":{"size":2931,"mtime_nanos":1776651483521882088,"mode":420,"is_dir":false},"apps/bot/dist/commands/refine.js":{"size":13353,"mtime_nanos":1776651483572951747,"mode":420,"is_dir":false},"apps/bot/dist/services/MiniGameRegistry.js":{"size":756,"mtime_nanos":1776651483561960815,"mode":420,"is_dir":false},"apps/bot/dist/utils/errorHandler.js":{"size":527,"mtime_nanos":1776651483516687699,"mode":420,"is_dir":false},"apps/bot/dist/commands/setup.js":{"size":897,"mtime_nanos":1776651483575459735,"mode":420,"is_dir":false},"apps/bot/dist/i18n":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"apps/bot/dist/service/test.js":{"size":2703,"mtime_nanos":1776651483597109398,"mode":420,"is_dir":false},"apps/bot/dist/database":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"apps/bot/dist/events/guildCreate.js":{"size":376,"mtime_nanos":1776651483582990991,"mode":420,"is_dir":false},"apps/bot/dist/client/KordClient.js":{"size":1735,"mtime_nanos":1776651483523808172,"mode":420,"is_dir":false},"apps/bot/dist/commands/voice.js":{"size":7563,"mtime_nanos":1776651483576539212,"mode":420,"is_dir":false},"apps/bot/dist/services/SetupWizardRenderer.js":{"size":10523,"mtime_nanos":1776651483575038119,"mode":420,"is_dir":false},"apps/bot/dist/client":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"apps/bot/dist/core":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"apps/bot/dist/interactions/handlers":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"apps/bot/dist/service":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"apps/bot/dist/index.js":{"size":192,"mtime_nanos":1776651483524339869,"mode":420,"is_dir":false},"apps/bot/dist/handlers/CommandLoader.js":{"size":1452,"mtime_nanos":1776651483515098941,"mode":420,"is_dir":false},"apps/bot/dist/utils":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"apps/bot/.turbo/turbo-build.log":{"size":4,"mtime_nanos":1776651483626670892,"mode":420,"is_dir":false},"apps/bot/dist/services/FishingService.js":{"size":32455,"mtime_nanos":1776651483559031211,"mode":420,"is_dir":false},"apps/bot/dist/commands/language.js":{"size":1583,"mtime_nanos":1776651483561539866,"mode":420,"is_dir":false},"apps/bot/dist/events/guildDelete.js":{"size":440,"mtime_nanos":1776651483583307776,"mode":420,"is_dir":false},"apps/bot/dist/services/AuditLogService.js":{"size":4436,"mtime_nanos":1776651483525751963,"mode":420,"is_dir":false},"apps/bot/dist/core/db.js":{"size":1003,"mtime_nanos":1776651483576969036,"mode":420,"is_dir":false},"apps/bot/dist/i18n/index.js":{"size":4700,"mtime_nanos":1776651483534715772,"mode":420,"is_dir":false},"apps/bot/dist/services/PermissionAuditService.js":{"size":6508,"mtime_nanos":1776651483527998374,"mode":420,"is_dir":false},"apps/bot/dist/commands/audit.js":{"size":11031,"mtime_nanos":1776651483537465338,"mode":420,"is_dir":false},"apps/bot/dist/commands/autorole.js":{"size":2662,"mtime_nanos":1776651483541978617,"mode":420,"is_dir":false},"apps/bot/dist/commands/fishing.js":{"size":11607,"mtime_nanos":1776651483560961628,"mode":420,"is_dir":false},"apps/bot/dist/interactions/handlers/setupWizardHandler.js":{"size":7798,"mtime_nanos":1776651483586264671,"mode":420,"is_dir":false},"apps/bot/dist/events/ready.js":{"size":1625,"mtime_nanos":1776651483594321915,"mode":420,"is_dir":false},"apps/bot/dist/services/WebhookService.js":{"size":2588,"mtime_nanos":1776651483589828970,"mode":420,"is_dir":false},"apps/bot/dist/database/index.js":{"size":1992,"mtime_nanos":1776651483517900006,"mode":420,"is_dir":false},"apps/bot/dist/utils/logger.js":{"size":2098,"mtime_nanos":1776651483513453893,"mode":420,"is_dir":false},"apps/bot/dist/commands":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"apps/bot/dist/interactions/handlers/refinementHandler.js":{"size":3151,"mtime_nanos":1776651483595332561,"mode":420,"is_dir":false},"apps/bot/dist/i18n/localeHelper.js":{"size":2630,"mtime_nanos":1776651483584323212,"mode":420,"is_dir":false},"apps/bot/dist/events/guildMemberAdd.js":{"size":382,"mtime_nanos":1776651483583612977,"mode":420,"is_dir":false},"apps/bot/dist/services/MimicService.js":{"size":1697,"mtime_nanos":1776651483590479331,"mode":420,"is_dir":false},"apps/bot/dist/i18n/types.js":{"size":427,"mtime_nanos":1776651483528788190,"mode":420,"is_dir":false},"apps/bot/dist/services/AutoRoleService.js":{"size":2431,"mtime_nanos":1776651483540613563,"mode":420,"is_dir":false},"apps/bot/dist/services/MusicService.js":{"size":32759,"mtime_nanos":1776651483568641256,"mode":420,"is_dir":false},"apps/bot/dist/services/PresenceService.js":{"size":3012,"mtime_nanos":1776651483582468210,"mode":420,"is_dir":false},"apps/bot/dist/services/RefinementService.js":{"size":11931,"mtime_nanos":1776651483553011881,"mode":420,"is_dir":false},"apps/bot/dist/events":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true}},"order":["apps/bot/.turbo/turbo-build.log","apps/bot/dist","apps/bot/dist/client","apps/bot/dist/client/KordClient.js","apps/bot/dist/commands","apps/bot/dist/commands/audit.js","apps/bot/dist/commands/autorole.js","apps/bot/dist/commands/config.js","apps/bot/dist/commands/event.js","apps/bot/dist/commands/fishing.js","apps/bot/dist/commands/language.js","apps/bot/dist/commands/minigame.js","apps/bot/dist/commands/music.js","apps/bot/dist/commands/refine.js","apps/bot/dist/commands/setup.js","apps/bot/dist/commands/voice.js","apps/bot/dist/config","apps/bot/dist/config/env.js","apps/bot/dist/core","apps/bot/dist/core/command.js","apps/bot/dist/core/db.js","apps/bot/dist/database","apps/bot/dist/database/index.js","apps/bot/dist/errors","apps/bot/dist/errors/BotError.js","apps/bot/dist/errors/ErrorCodes.js","apps/bot/dist/errors/ErrorReporter.js","apps/bot/dist/events","apps/bot/dist/events/guildCreate.js","apps/bot/dist/events/guildDelete.js","apps/bot/dist/events/guildMemberAdd.js","apps/bot/dist/events/interactionCreate.js","apps/bot/dist/events/messageCreate.js","apps/bot/dist/events/ready.js","apps/bot/dist/events/voiceStateUpdate.js","apps/bot/dist/handlers","apps/bot/dist/handlers/CommandLoader.js","apps/bot/dist/handlers/EventLoader.js","apps/bot/dist/i18n","apps/bot/dist/i18n/index.js","apps/bot/dist/i18n/localeHelper.js","apps/bot/dist/i18n/locales","apps/bot/dist/i18n/locales/en.js","apps/bot/dist/i18n/locales/ko.js","apps/bot/dist/i18n/types.js","apps/bot/dist/index.js","apps/bot/dist/interactions","apps/bot/dist/interactions/handlers","apps/bot/dist/interactions/handlers/refinementHandler.js","apps/bot/dist/interactions/handlers/setupWizardHandler.js","apps/bot/dist/service","apps/bot/dist/service/command.js","apps/bot/dist/service/test.js","apps/bot/dist/services","apps/bot/dist/services/ActivityTrackerService.js","apps/bot/dist/services/AuditLogService.js","apps/bot/dist/services/AutoRoleService.js","apps/bot/dist/services/BigEmojiService.js","apps/bot/dist/services/EventService.js","apps/bot/dist/services/FeverService.js","apps/bot/dist/services/FishingService.js","apps/bot/dist/services/MimicService.js","apps/bot/dist/services/MiniGameRegistry.js","apps/bot/dist/services/MusicService.js","apps/bot/dist/services/PermissionAuditService.js","apps/bot/dist/services/PresenceService.js","apps/bot/dist/services/RefinementService.js","apps/bot/dist/services/SetupWizardRenderer.js","apps/bot/dist/services/VoiceService.js","apps/bot/dist/services/WebhookService.js","apps/bot/dist/utils","apps/bot/dist/utils/errorHandler.js","apps/bot/dist/utils/logger.js"]} \ No newline at end of file diff --git a/.turbo/cache/63605b2509e03797-meta.json b/.turbo/cache/63605b2509e03797-meta.json new file mode 100644 index 0000000..ae7a51a --- /dev/null +++ b/.turbo/cache/63605b2509e03797-meta.json @@ -0,0 +1 @@ +{"hash":"63605b2509e03797","duration":1834,"sha":"855aad274ad148847ffefa8e54eb8fa8066713fa","dirty_hash":"d0414de747ab562fdf8628ad70f7f928ce881c495f15765d4afcb0621966da17"} \ No newline at end of file diff --git a/.turbo/cache/63605b2509e03797.tar.zst b/.turbo/cache/63605b2509e03797.tar.zst new file mode 100644 index 0000000000000000000000000000000000000000..cb08d8a31a2f87f4090640df5d9dfc11158a39e9 GIT binary patch literal 76023 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 literal 0 HcmV?d00001 diff --git a/apps/bot/package.json b/apps/bot/package.json new file mode 100644 index 0000000..f712084 --- /dev/null +++ b/apps/bot/package.json @@ -0,0 +1,33 @@ +{ + "name": "@kord/bot", + "version": "1.0.0", + "private": true, + "scripts": { + "dev": "tsx watch src/index.ts", + "build": "tsc", + "start": "node dist/index.js", + "test": "jest", + "check-i18n": "tsx scripts/check-i18n-tests.ts" + }, + "dependencies": { + "@discordjs/opus": "^0.10.0", + "@discordjs/voice": "^0.19.2", + "@grpc/grpc-js": "^1.14.3", + "@kord/db": "workspace:*", + "@kord/grpc-contracts": "workspace:*", + "discord.js": "^14.25.1", + "dotenv": "^17.3.1", + "ffmpeg-static": "^5.3.0", + "log4js": "^6.9.1", + "prism-media": "^1.3.5", + "sharp": "^0.34.5", + "youtubei.js": "^17.0.1" + }, + "devDependencies": { + "@types/jest": "^30.0.0", + "@types/node": "^25.5.0", + "jest": "^30.3.0", + "ts-jest": "^29.4.6", + "tsx": "^4.21.0" + } +} diff --git a/apps/bot/src/events/ready.ts b/apps/bot/src/events/ready.ts index d6f9ca4..ca5feeb 100644 --- a/apps/bot/src/events/ready.ts +++ b/apps/bot/src/events/ready.ts @@ -8,7 +8,7 @@ import { auditLogService } from '../services/AuditLogService'; import { env } from '../config/env'; - +import { PrismaShardStatusRepository, prisma } from '@kord/db'; export default { name: Events.ClientReady, once: true, @@ -18,6 +18,12 @@ export default { PresenceService.startActivePresence(client); EventService.startReminderLoop(client); + const shardId = client.shard?.ids[0] ?? 0; + const guildIds = Array.from(client.guilds.cache.keys()); + const shardRepo = new PrismaShardStatusRepository(prisma); + await shardRepo.upsertStatus(shardId, 'READY', guildIds) + .catch((e: Error) => logger.error('Failed to update shard status:', e)); + try { const commandsData = Array.from(client.commands.values()).map(c => c.data.toJSON()); await client.application?.commands.set(commandsData); diff --git a/apps/bot/src/shard.ts b/apps/bot/src/shard.ts new file mode 100644 index 0000000..e598573 --- /dev/null +++ b/apps/bot/src/shard.ts @@ -0,0 +1,65 @@ +import { ShardingManager } from 'discord.js'; +import path from 'path'; +import 'dotenv/config'; +import * as grpc from '@grpc/grpc-js'; +import { kordProto } from '@kord/grpc-contracts'; + +const manager = new ShardingManager(path.resolve(__dirname, 'index.ts'), { + token: process.env.DISCORD_TOKEN, + execArgv: ['-r', 'tsx'], // Allow running ts files natively in dev +}); + +manager.on('shardCreate', (shard) => { + console.log(`Launched shard ${shard.id}`); + + shard.on('ready', () => { + console.log(`Shard ${shard.id} is ready`); + }); + + shard.on('disconnect', () => { + console.warn(`Shard ${shard.id} disconnected`); + }); + + shard.on('reconnecting', () => { + console.warn(`Shard ${shard.id} reconnecting`); + }); +}); + +// Spawn the required number of shards +manager.spawn().then(() => { + // --- gRPC Proxy Server Setup --- + const server = new grpc.Server(); + + server.addService((kordProto as any).BotDashboardService.service, { + Ping: (call: any, callback: any) => { + console.log('Received Ping:', call.request.message); + callback(null, { reply: `Pong to ${call.request.message}` }); + }, + GetGuildChannels: async (call: any, callback: any) => { + const guildId = call.request.guildId; + try { + const results = await manager.broadcastEval( + (c, context) => { + const guild = c.guilds.cache.get(context.guildId); + if (!guild) return null; + return guild.channels.cache.map(ch => ({ id: ch.id, name: ch.name, type: `${ch.type}` })); + }, + { context: { guildId } } + ); + + const channels = results.find(res => res !== null) || []; + callback(null, { channels }); + } catch (error: any) { + callback({ code: grpc.status.INTERNAL, details: error.message }); + } + } + }); + + server.bindAsync('0.0.0.0:50051', grpc.ServerCredentials.createInsecure(), (err, port) => { + if (err) { + console.error('Failed to bind gRPC server:', err); + return; + } + console.log(`gRPC Proxy Server running on port ${port}`); + }); +}); diff --git a/apps/dashboard/.gitignore b/apps/dashboard/.gitignore new file mode 100644 index 0000000..5ef6a52 --- /dev/null +++ b/apps/dashboard/.gitignore @@ -0,0 +1,41 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/apps/dashboard/AGENTS.md b/apps/dashboard/AGENTS.md new file mode 100644 index 0000000..8bd0e39 --- /dev/null +++ b/apps/dashboard/AGENTS.md @@ -0,0 +1,5 @@ + +# This is NOT the Next.js you know + +This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` before writing any code. Heed deprecation notices. + diff --git a/apps/dashboard/CLAUDE.md b/apps/dashboard/CLAUDE.md new file mode 100644 index 0000000..43c994c --- /dev/null +++ b/apps/dashboard/CLAUDE.md @@ -0,0 +1 @@ +@AGENTS.md diff --git a/apps/dashboard/README.md b/apps/dashboard/README.md new file mode 100644 index 0000000..e215bc4 --- /dev/null +++ b/apps/dashboard/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. diff --git a/apps/dashboard/components.json b/apps/dashboard/components.json new file mode 100644 index 0000000..4e3cb47 --- /dev/null +++ b/apps/dashboard/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "tailwind.config.ts", + "css": "src/app/globals.css", + "baseColor": "slate", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} diff --git a/apps/dashboard/eslint.config.mjs b/apps/dashboard/eslint.config.mjs new file mode 100644 index 0000000..05e726d --- /dev/null +++ b/apps/dashboard/eslint.config.mjs @@ -0,0 +1,18 @@ +import { defineConfig, globalIgnores } from "eslint/config"; +import nextVitals from "eslint-config-next/core-web-vitals"; +import nextTs from "eslint-config-next/typescript"; + +const eslintConfig = defineConfig([ + ...nextVitals, + ...nextTs, + // Override default ignores of eslint-config-next. + globalIgnores([ + // Default ignores of eslint-config-next: + ".next/**", + "out/**", + "build/**", + "next-env.d.ts", + ]), +]); + +export default eslintConfig; diff --git a/apps/dashboard/next.config.ts b/apps/dashboard/next.config.ts new file mode 100644 index 0000000..e9ffa30 --- /dev/null +++ b/apps/dashboard/next.config.ts @@ -0,0 +1,7 @@ +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + /* config options here */ +}; + +export default nextConfig; diff --git a/apps/dashboard/package.json b/apps/dashboard/package.json new file mode 100644 index 0000000..bc141aa --- /dev/null +++ b/apps/dashboard/package.json @@ -0,0 +1,32 @@ +{ + "name": "dashboard", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "eslint" + }, + "dependencies": { + "@grpc/grpc-js": "^1.14.3", + "@kord/grpc-contracts": "workspace:*", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "lucide-react": "^1.8.0", + "next": "16.2.4", + "react": "19.2.4", + "react-dom": "19.2.4", + "tailwind-merge": "^3.5.0" + }, + "devDependencies": { + "@tailwindcss/postcss": "^4", + "@types/node": "^20", + "@types/react": "^19", + "@types/react-dom": "^19", + "eslint": "^9", + "eslint-config-next": "16.2.4", + "tailwindcss": "^4", + "typescript": "^5" + } +} diff --git a/apps/dashboard/postcss.config.mjs b/apps/dashboard/postcss.config.mjs new file mode 100644 index 0000000..61e3684 --- /dev/null +++ b/apps/dashboard/postcss.config.mjs @@ -0,0 +1,7 @@ +const config = { + plugins: { + "@tailwindcss/postcss": {}, + }, +}; + +export default config; diff --git a/apps/dashboard/public/file.svg b/apps/dashboard/public/file.svg new file mode 100644 index 0000000..004145c --- /dev/null +++ b/apps/dashboard/public/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/dashboard/public/globe.svg b/apps/dashboard/public/globe.svg new file mode 100644 index 0000000..567f17b --- /dev/null +++ b/apps/dashboard/public/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/dashboard/public/next.svg b/apps/dashboard/public/next.svg new file mode 100644 index 0000000..5174b28 --- /dev/null +++ b/apps/dashboard/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/dashboard/public/vercel.svg b/apps/dashboard/public/vercel.svg new file mode 100644 index 0000000..7705396 --- /dev/null +++ b/apps/dashboard/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/dashboard/public/window.svg b/apps/dashboard/public/window.svg new file mode 100644 index 0000000..b2b2a44 --- /dev/null +++ b/apps/dashboard/public/window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/dashboard/src/app/api/grpc-test/route.ts b/apps/dashboard/src/app/api/grpc-test/route.ts new file mode 100644 index 0000000..9cb8466 --- /dev/null +++ b/apps/dashboard/src/app/api/grpc-test/route.ts @@ -0,0 +1,18 @@ +import { NextResponse } from 'next/server'; +import { pingBot } from '@/lib/grpc'; + +export async function GET(request: Request) { + const { searchParams } = new URL(request.url); + const msg = searchParams.get('msg') || 'Dashboard-to-Bot'; + + try { + const data = await pingBot(msg); + return NextResponse.json({ success: true, ...data }); + } catch (error: any) { + console.error('gRPC Ping Error:', error); + return NextResponse.json( + { success: false, error: error.message }, + { status: 500 } + ); + } +} diff --git a/apps/dashboard/src/app/favicon.ico b/apps/dashboard/src/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 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 LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/apps/dashboard/src/app/globals.css b/apps/dashboard/src/app/globals.css new file mode 100644 index 0000000..a2dc41e --- /dev/null +++ b/apps/dashboard/src/app/globals.css @@ -0,0 +1,26 @@ +@import "tailwindcss"; + +:root { + --background: #ffffff; + --foreground: #171717; +} + +@theme inline { + --color-background: var(--background); + --color-foreground: var(--foreground); + --font-sans: var(--font-geist-sans); + --font-mono: var(--font-geist-mono); +} + +@media (prefers-color-scheme: dark) { + :root { + --background: #0a0a0a; + --foreground: #ededed; + } +} + +body { + background: var(--background); + color: var(--foreground); + font-family: Arial, Helvetica, sans-serif; +} diff --git a/apps/dashboard/src/app/layout.tsx b/apps/dashboard/src/app/layout.tsx new file mode 100644 index 0000000..976eb90 --- /dev/null +++ b/apps/dashboard/src/app/layout.tsx @@ -0,0 +1,33 @@ +import type { Metadata } from "next"; +import { Geist, Geist_Mono } from "next/font/google"; +import "./globals.css"; + +const geistSans = Geist({ + variable: "--font-geist-sans", + subsets: ["latin"], +}); + +const geistMono = Geist_Mono({ + variable: "--font-geist-mono", + subsets: ["latin"], +}); + +export const metadata: Metadata = { + title: "Create Next App", + description: "Generated by create next app", +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + {children} + + ); +} diff --git a/apps/dashboard/src/app/page.tsx b/apps/dashboard/src/app/page.tsx new file mode 100644 index 0000000..eb421fa --- /dev/null +++ b/apps/dashboard/src/app/page.tsx @@ -0,0 +1,55 @@ +"use client"; + +import { useState } from "react"; + +export default function Home() { + const [response, setResponse] = useState(null); + const [loading, setLoading] = useState(false); + + const testGrpc = async () => { + setLoading(true); + try { + const res = await fetch("/api/grpc-test?msg=HelloBot"); + const data = await res.json(); + setResponse(data); + } catch (err) { + setResponse({ success: false, error: "Fetch error" }); + } finally { + setLoading(false); + } + }; + + return ( +
+
+

Kord Dashboard (gRPC Test)

+

대시보드와 봇 간의 gRPC 통신망을 테스트합니다.

+ +
+ +
+ + {response && ( +
+

테스트 결과

+
+              {JSON.stringify(response, null, 2)}
+            
+ {response.success && ( +

✅ 봇으로부터 성공적으로 응답을 받았습니다!

+ )} + {!response.success && ( +

❌ 봇과 통신에 실패했습니다. (봇 구동 여부를 확인하세요)

+ )} +
+ )} +
+
+ ); +} diff --git a/apps/dashboard/src/lib/grpc.ts b/apps/dashboard/src/lib/grpc.ts new file mode 100644 index 0000000..ad0d6cb --- /dev/null +++ b/apps/dashboard/src/lib/grpc.ts @@ -0,0 +1,33 @@ +import * as grpc from '@grpc/grpc-js'; +import { kordProto } from '@kord/grpc-contracts'; + +const BOT_GRPC_URL = process.env.BOT_GRPC_URL || 'localhost:50051'; + +export const botClient = new (kordProto as any).BotDashboardService( + BOT_GRPC_URL, + grpc.credentials.createInsecure() +); + +export const pingBot = (message: string): Promise<{ reply: string }> => { + return new Promise((resolve, reject) => { + botClient.Ping({ message }, (err: any, response: any) => { + if (err) { + reject(err); + } else { + resolve(response); + } + }); + }); +}; + +export const getGuildChannels = (guildId: string): Promise => { + return new Promise((resolve, reject) => { + botClient.GetGuildChannels({ guildId }, (err: any, response: any) => { + if (err) { + reject(err); + } else { + resolve(response.channels); + } + }); + }); +}; diff --git a/apps/dashboard/src/lib/utils.ts b/apps/dashboard/src/lib/utils.ts new file mode 100644 index 0000000..d084cca --- /dev/null +++ b/apps/dashboard/src/lib/utils.ts @@ -0,0 +1,6 @@ +import { type ClassValue, clsx } from "clsx" +import { twMerge } from "tailwind-merge" + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) +} diff --git a/apps/dashboard/tsconfig.json b/apps/dashboard/tsconfig.json new file mode 100644 index 0000000..cf9c65d --- /dev/null +++ b/apps/dashboard/tsconfig.json @@ -0,0 +1,34 @@ +{ + "compilerOptions": { + "target": "ES2017", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "react-jsx", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./src/*"] + } + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts", + "**/*.mts" + ], + "exclude": ["node_modules"] +} diff --git a/package.json b/package.json index bcfed99..062df6c 100644 --- a/package.json +++ b/package.json @@ -1,43 +1,23 @@ { - "name": "kord", + "name": "kord-monorepo", + "private": true, "packageManager": "yarn@4.9.1", - "dependencies": { - "@discordjs/opus": "^0.10.0", - "@discordjs/voice": "^0.19.2", - "@prisma/adapter-pg": "^7.6.0", - "@prisma/client": "^7.6.0", - "@prisma/config": "^7.6.0", - "@types/pg": "^8.20.0", - "discord.js": "^14.25.1", - "dotenv": "^17.3.1", - "ffmpeg-static": "^5.3.0", - "log4js": "^6.9.1", - "pg": "^8.20.0", - "prism-media": "^1.3.5", - "sharp": "^0.34.5", - "youtubei.js": "^17.0.1" + "workspaces": [ + "apps/*", + "packages/*" + ], + "scripts": { + "build": "turbo run build", + "dev": "turbo run dev", + "test": "turbo run test", + "lint": "turbo run lint" }, "devDependencies": { - "@types/jest": "^30.0.0", - "@types/node": "^25.5.0", "@typescript-eslint/eslint-plugin": "^8.57.2", "@typescript-eslint/parser": "^8.57.2", "eslint": "^10.1.0", - "jest": "^30.3.0", "prettier": "^3.8.1", - "prisma": "^7.6.0", - "ts-jest": "^29.4.6", - "tsx": "^4.21.0", + "turbo": "^2.3.3", "typescript": "^6.0.2" - }, - "scripts": { - "dev": "tsx watch src/index.ts", - "build": "tsc", - "start": "node dist/index.js", - "test": "jest", - "check-i18n": "tsx scripts/check-i18n-tests.ts" - }, - "prisma": { - "seed": "tsx prisma/seed.ts" } } diff --git a/packages/db/index.ts b/packages/db/index.ts new file mode 100644 index 0000000..fa3ca67 --- /dev/null +++ b/packages/db/index.ts @@ -0,0 +1,26 @@ +import { PrismaClient, ShardStatus } from '@prisma/client'; + +export const prisma = new PrismaClient(); + +export * from '@prisma/client'; + +export interface IShardStatusRepository { + upsertStatus(shardId: number, status: string, guilds: string[]): Promise; + getStatus(shardId: number): Promise; +} + +export class PrismaShardStatusRepository implements IShardStatusRepository { + constructor(private db: PrismaClient) {} + + async upsertStatus(shardId: number, status: string, guilds: string[]): Promise { + return this.db.shardStatus.upsert({ + where: { id: shardId }, + update: { status, guilds }, + create: { id: shardId, status, guilds }, + }); + } + + async getStatus(shardId: number): Promise { + return this.db.shardStatus.findUnique({ where: { id: shardId } }); + } +} diff --git a/packages/db/package.json b/packages/db/package.json new file mode 100644 index 0000000..fdcf0cb --- /dev/null +++ b/packages/db/package.json @@ -0,0 +1,19 @@ +{ + "name": "@kord/db", + "version": "1.0.0", + "private": true, + "main": "./index.ts", + "dependencies": { + "@prisma/adapter-pg": "^7.6.0", + "@prisma/client": "^7.6.0", + "@prisma/config": "^7.6.0", + "pg": "^8.20.0" + }, + "devDependencies": { + "@types/pg": "^8.20.0", + "prisma": "^7.6.0" + }, + "scripts": { + "generate": "prisma generate" + } +} diff --git a/packages/db/prisma/schema.prisma b/packages/db/prisma/schema.prisma index 64b7605..f39becf 100644 --- a/packages/db/prisma/schema.prisma +++ b/packages/db/prisma/schema.prisma @@ -276,3 +276,9 @@ model FishingCollectionEntry { @@index([guildId, userId]) } +model ShardStatus { + id Int @id // Shard ID + status String @default("DISCONNECTED") // CONNECTED, DISCONNECTED, READY + guilds String[] @default([]) // Array of Guild IDs this shard manages + updatedAt DateTime @updatedAt +} diff --git a/packages/grpc-contracts/package.json b/packages/grpc-contracts/package.json new file mode 100644 index 0000000..72c2939 --- /dev/null +++ b/packages/grpc-contracts/package.json @@ -0,0 +1,10 @@ +{ + "name": "@kord/grpc-contracts", + "version": "1.0.0", + "private": true, + "main": "src/index.js", + "dependencies": { + "@grpc/grpc-js": "^1.10.0", + "@grpc/proto-loader": "^0.7.12" + } +} diff --git a/packages/grpc-contracts/src/index.js b/packages/grpc-contracts/src/index.js new file mode 100644 index 0000000..280a8de --- /dev/null +++ b/packages/grpc-contracts/src/index.js @@ -0,0 +1,20 @@ +const path = require('path'); +const protoLoader = require('@grpc/proto-loader'); +const grpc = require('@grpc/grpc-js'); + +const PROTO_PATH = path.resolve(__dirname, 'kord.proto'); + +const packageDefinition = protoLoader.loadSync(PROTO_PATH, { + keepCase: true, + longs: String, + enums: String, + defaults: true, + oneofs: true, +}); + +const protoDescriptor = grpc.loadPackageDefinition(packageDefinition); + +module.exports = { + kordProto: protoDescriptor.kord, + protoPath: PROTO_PATH +}; diff --git a/packages/grpc-contracts/src/kord.proto b/packages/grpc-contracts/src/kord.proto new file mode 100644 index 0000000..c47113d --- /dev/null +++ b/packages/grpc-contracts/src/kord.proto @@ -0,0 +1,30 @@ +syntax = "proto3"; + +package kord; + +service BotDashboardService { + rpc Ping (PingRequest) returns (PingResponse); + rpc GetGuildChannels (GuildRequest) returns (ChannelsResponse); +} + +message PingRequest { + string message = 1; +} + +message PingResponse { + string reply = 1; +} + +message GuildRequest { + string guildId = 1; +} + +message Channel { + string id = 1; + string name = 2; + string type = 3; +} + +message ChannelsResponse { + repeated Channel channels = 1; +} diff --git a/turbo.json b/turbo.json new file mode 100644 index 0000000..4354422 --- /dev/null +++ b/turbo.json @@ -0,0 +1,20 @@ +{ + "$schema": "https://turbo.build/schema.json", + "tasks": { + "build": { + "dependsOn": ["^build"], + "outputs": ["dist/**", ".next/**", "!-next/cache/**"] + }, + "lint": { + "dependsOn": ["^lint"] + }, + "dev": { + "cache": false, + "persistent": true + }, + "generate": { + "dependsOn": ["^generate"], + "outputs": ["packages/db/node_modules/.prisma/client/**", "node_modules/.prisma/client/**"] + } + } +} diff --git a/yarn.lock b/yarn.lock index 0e179a3..763e86f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,6 +5,13 @@ __metadata: version: 8 cacheKey: 10c0 +"@alloc/quick-lru@npm:^5.2.0": + version: 5.2.0 + resolution: "@alloc/quick-lru@npm:5.2.0" + checksum: 10c0/7b878c48b9d25277d0e1a9b8b2f2312a314af806b4129dc902f2bc29ab09b58236e53964689feec187b28c80d2203aff03829754773a707a8a5987f1b7682d92 + languageName: node + linkType: hard + "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.27.1, @babel/code-frame@npm:^7.28.6, @babel/code-frame@npm:^7.29.0": version: 7.29.0 resolution: "@babel/code-frame@npm:7.29.0" @@ -23,7 +30,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.23.9, @babel/core@npm:^7.27.4": +"@babel/core@npm:^7.23.9, @babel/core@npm:^7.24.4, @babel/core@npm:^7.27.4": version: 7.29.0 resolution: "@babel/core@npm:7.29.0" dependencies: @@ -140,7 +147,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.28.6, @babel/parser@npm:^7.29.0": +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.4, @babel/parser@npm:^7.28.6, @babel/parser@npm:^7.29.0": version: 7.29.2 resolution: "@babel/parser@npm:7.29.2" dependencies: @@ -582,6 +589,16 @@ __metadata: languageName: node linkType: hard +"@emnapi/core@npm:^1.8.1": + version: 1.10.0 + resolution: "@emnapi/core@npm:1.10.0" + dependencies: + "@emnapi/wasi-threads": "npm:1.2.1" + tslib: "npm:^2.4.0" + checksum: 10c0/f51d08227857b60632de7714d708124f0e100a1462dde6df8221760939aa3204a73193830371830fac0716f3ccd2129f2cac1b17cd7d7958bc4da9018a296edb + languageName: node + linkType: hard + "@emnapi/runtime@npm:^1.4.3, @emnapi/runtime@npm:^1.7.0": version: 1.9.2 resolution: "@emnapi/runtime@npm:1.9.2" @@ -591,7 +608,16 @@ __metadata: languageName: node linkType: hard -"@emnapi/wasi-threads@npm:1.2.1": +"@emnapi/runtime@npm:^1.8.1": + version: 1.10.0 + resolution: "@emnapi/runtime@npm:1.10.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/953f14991d1aefb92ee6f8eb27dea725e484791a53a0cb5f47d9e0087b9a2c929ff2e92adf95af15d6ad456db6300c6b761ebf72b50a875b874a83520b3ba093 + languageName: node + linkType: hard + +"@emnapi/wasi-threads@npm:1.2.1, @emnapi/wasi-threads@npm:^1.1.0": version: 1.2.1 resolution: "@emnapi/wasi-threads@npm:1.2.1" dependencies: @@ -793,13 +819,24 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.12.2": +"@eslint-community/regexpp@npm:^4.12.1, @eslint-community/regexpp@npm:^4.12.2": version: 4.12.2 resolution: "@eslint-community/regexpp@npm:4.12.2" checksum: 10c0/fddcbc66851b308478d04e302a4d771d6917a0b3740dc351513c0da9ca2eab8a1adf99f5e0aa7ab8b13fa0df005c81adeee7e63a92f3effd7d367a163b721c2d languageName: node linkType: hard +"@eslint/config-array@npm:^0.21.2": + version: 0.21.2 + resolution: "@eslint/config-array@npm:0.21.2" + dependencies: + "@eslint/object-schema": "npm:^2.1.7" + debug: "npm:^4.3.1" + minimatch: "npm:^3.1.5" + checksum: 10c0/89dfe815d18456177c0a1f238daf4593107fd20298b3598e0103054360d3b8d09d967defd8318f031185d68df1f95cfa68becf1390a9c5c6887665f1475142e3 + languageName: node + linkType: hard + "@eslint/config-array@npm:^0.23.3": version: 0.23.3 resolution: "@eslint/config-array@npm:0.23.3" @@ -811,6 +848,15 @@ __metadata: languageName: node linkType: hard +"@eslint/config-helpers@npm:^0.4.2": + version: 0.4.2 + resolution: "@eslint/config-helpers@npm:0.4.2" + dependencies: + "@eslint/core": "npm:^0.17.0" + checksum: 10c0/92efd7a527b2d17eb1a148409d71d80f9ac160b565ac73ee092252e8bf08ecd08670699f46b306b94f13d22e88ac88a612120e7847570dd7cdc72f234d50dcb4 + languageName: node + linkType: hard + "@eslint/config-helpers@npm:^0.5.3": version: 0.5.3 resolution: "@eslint/config-helpers@npm:0.5.3" @@ -820,6 +866,15 @@ __metadata: languageName: node linkType: hard +"@eslint/core@npm:^0.17.0": + version: 0.17.0 + resolution: "@eslint/core@npm:0.17.0" + dependencies: + "@types/json-schema": "npm:^7.0.15" + checksum: 10c0/9a580f2246633bc752298e7440dd942ec421860d1946d0801f0423830e67887e4aeba10ab9a23d281727a978eb93d053d1922a587d502942a713607f40ed704e + languageName: node + linkType: hard + "@eslint/core@npm:^1.1.1": version: 1.1.1 resolution: "@eslint/core@npm:1.1.1" @@ -829,6 +884,37 @@ __metadata: languageName: node linkType: hard +"@eslint/eslintrc@npm:^3.3.5": + version: 3.3.5 + resolution: "@eslint/eslintrc@npm:3.3.5" + dependencies: + ajv: "npm:^6.14.0" + debug: "npm:^4.3.2" + espree: "npm:^10.0.1" + globals: "npm:^14.0.0" + ignore: "npm:^5.2.0" + import-fresh: "npm:^3.2.1" + js-yaml: "npm:^4.1.1" + minimatch: "npm:^3.1.5" + strip-json-comments: "npm:^3.1.1" + checksum: 10c0/9fb9f1ca65e46d6173966e3aaa5bd353e3a65d7f1f582bebf77f578fab7d7960a399fac1ecfb1e7d52bd61f5cefd6531087ca52a3a3c388f2e1b4f1ebd3da8b7 + languageName: node + linkType: hard + +"@eslint/js@npm:9.39.4": + version: 9.39.4 + resolution: "@eslint/js@npm:9.39.4" + checksum: 10c0/5aa7dea2cbc5decf7f5e3b0c6f86a084ccee0f792d288ca8e839f8bc1b64e03e227068968e49b26096e6f71fd857ab6e42691d1b993826b9a3883f1bdd7a0e46 + languageName: node + linkType: hard + +"@eslint/object-schema@npm:^2.1.7": + version: 2.1.7 + resolution: "@eslint/object-schema@npm:2.1.7" + checksum: 10c0/936b6e499853d1335803f556d526c86f5fe2259ed241bc665000e1d6353828edd913feed43120d150adb75570cae162cf000b5b0dfc9596726761c36b82f4e87 + languageName: node + linkType: hard + "@eslint/object-schema@npm:^3.0.3": version: 3.0.3 resolution: "@eslint/object-schema@npm:3.0.3" @@ -836,6 +922,16 @@ __metadata: languageName: node linkType: hard +"@eslint/plugin-kit@npm:^0.4.1": + version: 0.4.1 + resolution: "@eslint/plugin-kit@npm:0.4.1" + dependencies: + "@eslint/core": "npm:^0.17.0" + levn: "npm:^0.4.1" + checksum: 10c0/51600f78b798f172a9915dffb295e2ffb44840d583427bc732baf12ecb963eb841b253300e657da91d890f4b323d10a1bd12934bf293e3018d8bb66fdce5217b + languageName: node + linkType: hard + "@eslint/plugin-kit@npm:^0.6.1": version: 0.6.1 resolution: "@eslint/plugin-kit@npm:0.6.1" @@ -853,6 +949,44 @@ __metadata: languageName: node linkType: hard +"@grpc/grpc-js@npm:^1.10.0, @grpc/grpc-js@npm:^1.14.3": + version: 1.14.3 + resolution: "@grpc/grpc-js@npm:1.14.3" + dependencies: + "@grpc/proto-loader": "npm:^0.8.0" + "@js-sdsl/ordered-map": "npm:^4.4.2" + checksum: 10c0/f41f06a311b93cca8c472d56e21387e0f7b57bb2337a91d15ea4279bac8ec4fa0de6bd0d881201229ab800c0f0c55277911ecb850e057f20a828d0ddd623551d + languageName: node + linkType: hard + +"@grpc/proto-loader@npm:^0.7.12": + version: 0.7.15 + resolution: "@grpc/proto-loader@npm:0.7.15" + dependencies: + lodash.camelcase: "npm:^4.3.0" + long: "npm:^5.0.0" + protobufjs: "npm:^7.2.5" + yargs: "npm:^17.7.2" + bin: + proto-loader-gen-types: build/bin/proto-loader-gen-types.js + checksum: 10c0/514a134a724b56d73d0a202b7e02c84479da21e364547bacb2f4995ebc0d52412a1a21653add9f004ebd146c1e6eb4bcb0b8846fdfe1bfa8a98ed8f3d203da4a + languageName: node + linkType: hard + +"@grpc/proto-loader@npm:^0.8.0": + version: 0.8.0 + resolution: "@grpc/proto-loader@npm:0.8.0" + dependencies: + lodash.camelcase: "npm:^4.3.0" + long: "npm:^5.0.0" + protobufjs: "npm:^7.5.3" + yargs: "npm:^17.7.2" + bin: + proto-loader-gen-types: build/bin/proto-loader-gen-types.js + checksum: 10c0/a27da3b85d5d17bab956d536786c717287eae46ca264ea9ec774db90ff571955bae2705809f431b4622fbf3be9951d7c7bbb1360b2015ee88abe1587cf3d6fe0 + languageName: node + linkType: hard + "@hono/node-server@npm:1.19.11": version: 1.19.11 resolution: "@hono/node-server@npm:1.19.11" @@ -1454,7 +1588,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.5.0": +"@jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.5.0, @jridgewell/sourcemap-codec@npm:^1.5.5": version: 1.5.5 resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" checksum: 10c0/f9e538f302b63c0ebc06eecb1dd9918dd4289ed36147a0ddce35d6ea4d7ebbda243cda7b2213b6a5e1d8087a298d5cf630fb2bd39329cdecb82017023f6081a0 @@ -1471,6 +1605,59 @@ __metadata: languageName: node linkType: hard +"@js-sdsl/ordered-map@npm:^4.4.2": + version: 4.4.2 + resolution: "@js-sdsl/ordered-map@npm:4.4.2" + checksum: 10c0/cc7e15dc4acf6d9ef663757279600bab70533d847dcc1ab01332e9e680bd30b77cdf9ad885cc774276f51d98b05a013571c940e5b360985af5eb798dc1a2ee2b + languageName: node + linkType: hard + +"@kord/bot@workspace:apps/bot": + version: 0.0.0-use.local + resolution: "@kord/bot@workspace:apps/bot" + dependencies: + "@discordjs/opus": "npm:^0.10.0" + "@discordjs/voice": "npm:^0.19.2" + "@grpc/grpc-js": "npm:^1.14.3" + "@kord/db": "workspace:*" + "@kord/grpc-contracts": "workspace:*" + "@types/jest": "npm:^30.0.0" + "@types/node": "npm:^25.5.0" + discord.js: "npm:^14.25.1" + dotenv: "npm:^17.3.1" + ffmpeg-static: "npm:^5.3.0" + jest: "npm:^30.3.0" + log4js: "npm:^6.9.1" + prism-media: "npm:^1.3.5" + sharp: "npm:^0.34.5" + ts-jest: "npm:^29.4.6" + tsx: "npm:^4.21.0" + youtubei.js: "npm:^17.0.1" + languageName: unknown + linkType: soft + +"@kord/db@workspace:*, @kord/db@workspace:packages/db": + version: 0.0.0-use.local + resolution: "@kord/db@workspace:packages/db" + dependencies: + "@prisma/adapter-pg": "npm:^7.6.0" + "@prisma/client": "npm:^7.6.0" + "@prisma/config": "npm:^7.6.0" + "@types/pg": "npm:^8.20.0" + pg: "npm:^8.20.0" + prisma: "npm:^7.6.0" + languageName: unknown + linkType: soft + +"@kord/grpc-contracts@workspace:*, @kord/grpc-contracts@workspace:packages/grpc-contracts": + version: 0.0.0-use.local + resolution: "@kord/grpc-contracts@workspace:packages/grpc-contracts" + dependencies: + "@grpc/grpc-js": "npm:^1.10.0" + "@grpc/proto-loader": "npm:^0.7.12" + languageName: unknown + linkType: soft + "@kurkle/color@npm:^0.3.0": version: 0.3.4 resolution: "@kurkle/color@npm:0.3.4" @@ -1489,6 +1676,18 @@ __metadata: languageName: node linkType: hard +"@napi-rs/wasm-runtime@npm:^1.1.1": + version: 1.1.4 + resolution: "@napi-rs/wasm-runtime@npm:1.1.4" + dependencies: + "@tybys/wasm-util": "npm:^0.10.1" + peerDependencies: + "@emnapi/core": ^1.7.1 + "@emnapi/runtime": ^1.7.1 + checksum: 10c0/2e88e1955258949ccf2d18c79975821ad38071b465ef126a5e14110977b97868867b016c1ad046e963cccc42c0bd9db6c8ff5fd1ebb61b87bb3487f339041658 + languageName: node + linkType: hard + "@napi-rs/wasm-runtime@npm:^1.1.2": version: 1.1.2 resolution: "@napi-rs/wasm-runtime@npm:1.1.2" @@ -1501,6 +1700,112 @@ __metadata: languageName: node linkType: hard +"@next/env@npm:16.2.4": + version: 16.2.4 + resolution: "@next/env@npm:16.2.4" + checksum: 10c0/4bf41f0da7cc97ca2a2f2b7f3fc81e14aba2afc280d32163b134b8f642b315fbabb5d9c224a783d8e759bbc73eedfc9acd048e772950395aa1e6290dd386d209 + languageName: node + linkType: hard + +"@next/eslint-plugin-next@npm:16.2.4": + version: 16.2.4 + resolution: "@next/eslint-plugin-next@npm:16.2.4" + dependencies: + fast-glob: "npm:3.3.1" + checksum: 10c0/d42df02ff5928339414bb75371c67e0025ac6144096edfad468bb0ee992f87157d235be58a771aa983be65d7c1eb77064401a9e6f96ad0744907ba8dbedb86d0 + languageName: node + linkType: hard + +"@next/swc-darwin-arm64@npm:16.2.4": + version: 16.2.4 + resolution: "@next/swc-darwin-arm64@npm:16.2.4" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@next/swc-darwin-x64@npm:16.2.4": + version: 16.2.4 + resolution: "@next/swc-darwin-x64@npm:16.2.4" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@next/swc-linux-arm64-gnu@npm:16.2.4": + version: 16.2.4 + resolution: "@next/swc-linux-arm64-gnu@npm:16.2.4" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@next/swc-linux-arm64-musl@npm:16.2.4": + version: 16.2.4 + resolution: "@next/swc-linux-arm64-musl@npm:16.2.4" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@next/swc-linux-x64-gnu@npm:16.2.4": + version: 16.2.4 + resolution: "@next/swc-linux-x64-gnu@npm:16.2.4" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@next/swc-linux-x64-musl@npm:16.2.4": + version: 16.2.4 + resolution: "@next/swc-linux-x64-musl@npm:16.2.4" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@next/swc-win32-arm64-msvc@npm:16.2.4": + version: 16.2.4 + resolution: "@next/swc-win32-arm64-msvc@npm:16.2.4" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@next/swc-win32-x64-msvc@npm:16.2.4": + version: 16.2.4 + resolution: "@next/swc-win32-x64-msvc@npm:16.2.4" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": "npm:2.0.5" + run-parallel: "npm:^1.1.9" + checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": "npm:2.1.5" + fastq: "npm:^1.6.0" + checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 + languageName: node + linkType: hard + +"@nolyfill/is-core-module@npm:1.0.39": + version: 1.0.39 + resolution: "@nolyfill/is-core-module@npm:1.0.39" + checksum: 10c0/34ab85fdc2e0250879518841f74a30c276bca4f6c3e13526d2d1fe515e1adf6d46c25fcd5989d22ea056d76f7c39210945180b4859fc83b050e2da411aa86289 + languageName: node + linkType: hard + "@npmcli/agent@npm:^4.0.0": version: 4.0.0 resolution: "@npmcli/agent@npm:4.0.0" @@ -1721,6 +2026,79 @@ __metadata: languageName: node linkType: hard +"@protobufjs/aspromise@npm:^1.1.1, @protobufjs/aspromise@npm:^1.1.2": + version: 1.1.2 + resolution: "@protobufjs/aspromise@npm:1.1.2" + checksum: 10c0/a83343a468ff5b5ec6bff36fd788a64c839e48a07ff9f4f813564f58caf44d011cd6504ed2147bf34835bd7a7dd2107052af755961c6b098fd8902b4f6500d0f + languageName: node + linkType: hard + +"@protobufjs/base64@npm:^1.1.2": + version: 1.1.2 + resolution: "@protobufjs/base64@npm:1.1.2" + checksum: 10c0/eec925e681081af190b8ee231f9bad3101e189abbc182ff279da6b531e7dbd2a56f1f306f37a80b1be9e00aa2d271690d08dcc5f326f71c9eed8546675c8caf6 + languageName: node + linkType: hard + +"@protobufjs/codegen@npm:^2.0.4": + version: 2.0.4 + resolution: "@protobufjs/codegen@npm:2.0.4" + checksum: 10c0/26ae337c5659e41f091606d16465bbcc1df1f37cc1ed462438b1f67be0c1e28dfb2ca9f294f39100c52161aef82edf758c95d6d75650a1ddf31f7ddee1440b43 + languageName: node + linkType: hard + +"@protobufjs/eventemitter@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/eventemitter@npm:1.1.0" + checksum: 10c0/1eb0a75180e5206d1033e4138212a8c7089a3d418c6dfa5a6ce42e593a4ae2e5892c4ef7421f38092badba4040ea6a45f0928869989411001d8c1018ea9a6e70 + languageName: node + linkType: hard + +"@protobufjs/fetch@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/fetch@npm:1.1.0" + dependencies: + "@protobufjs/aspromise": "npm:^1.1.1" + "@protobufjs/inquire": "npm:^1.1.0" + checksum: 10c0/cda6a3dc2d50a182c5865b160f72077aac197046600091dbb005dd0a66db9cce3c5eaed6d470ac8ed49d7bcbeef6ee5f0bc288db5ff9a70cbd003e5909065233 + languageName: node + linkType: hard + +"@protobufjs/float@npm:^1.0.2": + version: 1.0.2 + resolution: "@protobufjs/float@npm:1.0.2" + checksum: 10c0/18f2bdede76ffcf0170708af15c9c9db6259b771e6b84c51b06df34a9c339dbbeec267d14ce0bddd20acc142b1d980d983d31434398df7f98eb0c94a0eb79069 + languageName: node + linkType: hard + +"@protobufjs/inquire@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/inquire@npm:1.1.0" + checksum: 10c0/64372482efcba1fb4d166a2664a6395fa978b557803857c9c03500e0ac1013eb4b1aacc9ed851dd5fc22f81583670b4f4431bae186f3373fedcfde863ef5921a + languageName: node + linkType: hard + +"@protobufjs/path@npm:^1.1.2": + version: 1.1.2 + resolution: "@protobufjs/path@npm:1.1.2" + checksum: 10c0/cece0a938e7f5dfd2fa03f8c14f2f1cf8b0d6e13ac7326ff4c96ea311effd5fb7ae0bba754fbf505312af2e38500250c90e68506b97c02360a43793d88a0d8b4 + languageName: node + linkType: hard + +"@protobufjs/pool@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/pool@npm:1.1.0" + checksum: 10c0/eda2718b7f222ac6e6ad36f758a92ef90d26526026a19f4f17f668f45e0306a5bd734def3f48f51f8134ae0978b6262a5c517c08b115a551756d1a3aadfcf038 + languageName: node + linkType: hard + +"@protobufjs/utf8@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/utf8@npm:1.1.0" + checksum: 10c0/a3fe31fe3fa29aa3349e2e04ee13dc170cc6af7c23d92ad49e3eeaf79b9766264544d3da824dba93b7855bd6a2982fb40032ef40693da98a136d835752beb487 + languageName: node + linkType: hard + "@radix-ui/primitive@npm:1.1.3": version: 1.1.3 resolution: "@radix-ui/primitive@npm:1.1.3" @@ -1840,6 +2218,13 @@ __metadata: languageName: node linkType: hard +"@rtsao/scc@npm:^1.1.0": + version: 1.1.0 + resolution: "@rtsao/scc@npm:1.1.0" + checksum: 10c0/b5bcfb0d87f7d1c1c7c0f7693f53b07866ed9fec4c34a97a8c948fb9a7c0082e416ce4d3b60beb4f5e167cbe04cdeefbf6771320f3ede059b9ce91188c409a5b + languageName: node + linkType: hard + "@sapphire/async-queue@npm:^1.5.2, @sapphire/async-queue@npm:^1.5.3": version: 1.5.5 resolution: "@sapphire/async-queue@npm:1.5.5" @@ -2054,6 +2439,221 @@ __metadata: languageName: node linkType: hard +"@swc/helpers@npm:0.5.15": + version: 0.5.15 + resolution: "@swc/helpers@npm:0.5.15" + dependencies: + tslib: "npm:^2.8.0" + checksum: 10c0/33002f74f6f885f04c132960835fdfc474186983ea567606db62e86acd0680ca82f34647e8e610f4e1e422d1c16fce729dde22cd3b797ab1fd9061a825dabca4 + languageName: node + linkType: hard + +"@tailwindcss/node@npm:4.2.2": + version: 4.2.2 + resolution: "@tailwindcss/node@npm:4.2.2" + dependencies: + "@jridgewell/remapping": "npm:^2.3.5" + enhanced-resolve: "npm:^5.19.0" + jiti: "npm:^2.6.1" + lightningcss: "npm:1.32.0" + magic-string: "npm:^0.30.21" + source-map-js: "npm:^1.2.1" + tailwindcss: "npm:4.2.2" + checksum: 10c0/4c0019355cd85a08f93ba3e179de37b83cc233b8ded4bd7714e633f89dd108928742e50966593257c2c1ab8db8914ea187dae007b5c692c869ceace11aeccede + languageName: node + linkType: hard + +"@tailwindcss/oxide-android-arm64@npm:4.2.2": + version: 4.2.2 + resolution: "@tailwindcss/oxide-android-arm64@npm:4.2.2" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@tailwindcss/oxide-darwin-arm64@npm:4.2.2": + version: 4.2.2 + resolution: "@tailwindcss/oxide-darwin-arm64@npm:4.2.2" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@tailwindcss/oxide-darwin-x64@npm:4.2.2": + version: 4.2.2 + resolution: "@tailwindcss/oxide-darwin-x64@npm:4.2.2" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@tailwindcss/oxide-freebsd-x64@npm:4.2.2": + version: 4.2.2 + resolution: "@tailwindcss/oxide-freebsd-x64@npm:4.2.2" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@tailwindcss/oxide-linux-arm-gnueabihf@npm:4.2.2": + version: 4.2.2 + resolution: "@tailwindcss/oxide-linux-arm-gnueabihf@npm:4.2.2" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@tailwindcss/oxide-linux-arm64-gnu@npm:4.2.2": + version: 4.2.2 + resolution: "@tailwindcss/oxide-linux-arm64-gnu@npm:4.2.2" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@tailwindcss/oxide-linux-arm64-musl@npm:4.2.2": + version: 4.2.2 + resolution: "@tailwindcss/oxide-linux-arm64-musl@npm:4.2.2" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@tailwindcss/oxide-linux-x64-gnu@npm:4.2.2": + version: 4.2.2 + resolution: "@tailwindcss/oxide-linux-x64-gnu@npm:4.2.2" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@tailwindcss/oxide-linux-x64-musl@npm:4.2.2": + version: 4.2.2 + resolution: "@tailwindcss/oxide-linux-x64-musl@npm:4.2.2" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@tailwindcss/oxide-wasm32-wasi@npm:4.2.2": + version: 4.2.2 + resolution: "@tailwindcss/oxide-wasm32-wasi@npm:4.2.2" + dependencies: + "@emnapi/core": "npm:^1.8.1" + "@emnapi/runtime": "npm:^1.8.1" + "@emnapi/wasi-threads": "npm:^1.1.0" + "@napi-rs/wasm-runtime": "npm:^1.1.1" + "@tybys/wasm-util": "npm:^0.10.1" + tslib: "npm:^2.8.1" + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@tailwindcss/oxide-win32-arm64-msvc@npm:4.2.2": + version: 4.2.2 + resolution: "@tailwindcss/oxide-win32-arm64-msvc@npm:4.2.2" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@tailwindcss/oxide-win32-x64-msvc@npm:4.2.2": + version: 4.2.2 + resolution: "@tailwindcss/oxide-win32-x64-msvc@npm:4.2.2" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@tailwindcss/oxide@npm:4.2.2": + version: 4.2.2 + resolution: "@tailwindcss/oxide@npm:4.2.2" + dependencies: + "@tailwindcss/oxide-android-arm64": "npm:4.2.2" + "@tailwindcss/oxide-darwin-arm64": "npm:4.2.2" + "@tailwindcss/oxide-darwin-x64": "npm:4.2.2" + "@tailwindcss/oxide-freebsd-x64": "npm:4.2.2" + "@tailwindcss/oxide-linux-arm-gnueabihf": "npm:4.2.2" + "@tailwindcss/oxide-linux-arm64-gnu": "npm:4.2.2" + "@tailwindcss/oxide-linux-arm64-musl": "npm:4.2.2" + "@tailwindcss/oxide-linux-x64-gnu": "npm:4.2.2" + "@tailwindcss/oxide-linux-x64-musl": "npm:4.2.2" + "@tailwindcss/oxide-wasm32-wasi": "npm:4.2.2" + "@tailwindcss/oxide-win32-arm64-msvc": "npm:4.2.2" + "@tailwindcss/oxide-win32-x64-msvc": "npm:4.2.2" + dependenciesMeta: + "@tailwindcss/oxide-android-arm64": + optional: true + "@tailwindcss/oxide-darwin-arm64": + optional: true + "@tailwindcss/oxide-darwin-x64": + optional: true + "@tailwindcss/oxide-freebsd-x64": + optional: true + "@tailwindcss/oxide-linux-arm-gnueabihf": + optional: true + "@tailwindcss/oxide-linux-arm64-gnu": + optional: true + "@tailwindcss/oxide-linux-arm64-musl": + optional: true + "@tailwindcss/oxide-linux-x64-gnu": + optional: true + "@tailwindcss/oxide-linux-x64-musl": + optional: true + "@tailwindcss/oxide-wasm32-wasi": + optional: true + "@tailwindcss/oxide-win32-arm64-msvc": + optional: true + "@tailwindcss/oxide-win32-x64-msvc": + optional: true + checksum: 10c0/22f78d73ffcec2d0d91f9fbfc29fed23c260e3e53f510f0b2598e322bf56a92ceb7e6f5a1c88ad1e3c7cfee9dd8d39285c411de5ec3225cdae2cbfdb737862e5 + languageName: node + linkType: hard + +"@tailwindcss/postcss@npm:^4": + version: 4.2.2 + resolution: "@tailwindcss/postcss@npm:4.2.2" + dependencies: + "@alloc/quick-lru": "npm:^5.2.0" + "@tailwindcss/node": "npm:4.2.2" + "@tailwindcss/oxide": "npm:4.2.2" + postcss: "npm:^8.5.6" + tailwindcss: "npm:4.2.2" + checksum: 10c0/b2501269d9eb2d8e80b548769b4552115ada36f7f7777d3b7656f7c7fe8b12d22305f9deb8a1fb9e41b30b98685ed3a1920ebb0b0e782b63f9483af9bc6e58a5 + languageName: node + linkType: hard + +"@turbo/darwin-64@npm:2.9.6": + version: 2.9.6 + resolution: "@turbo/darwin-64@npm:2.9.6" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@turbo/darwin-arm64@npm:2.9.6": + version: 2.9.6 + resolution: "@turbo/darwin-arm64@npm:2.9.6" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@turbo/linux-64@npm:2.9.6": + version: 2.9.6 + resolution: "@turbo/linux-64@npm:2.9.6" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@turbo/linux-arm64@npm:2.9.6": + version: 2.9.6 + resolution: "@turbo/linux-arm64@npm:2.9.6" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@turbo/windows-64@npm:2.9.6": + version: 2.9.6 + resolution: "@turbo/windows-64@npm:2.9.6" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@turbo/windows-arm64@npm:2.9.6": + version: 2.9.6 + resolution: "@turbo/windows-arm64@npm:2.9.6" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@tybys/wasm-util@npm:^0.10.0, @tybys/wasm-util@npm:^0.10.1": version: 0.10.1 resolution: "@tybys/wasm-util@npm:0.10.1" @@ -2160,6 +2760,13 @@ __metadata: languageName: node linkType: hard +"@types/json5@npm:^0.0.29": + version: 0.0.29 + resolution: "@types/json5@npm:0.0.29" + checksum: 10c0/6bf5337bc447b706bb5b4431d37686aa2ea6d07cfd6f79cc31de80170d6ff9b1c7384a9c0ccbc45b3f512bae9e9f75c2e12109806a15331dc94e8a8db6dbb4ac + languageName: node + linkType: hard + "@types/node@npm:*, @types/node@npm:^25.5.0": version: 25.5.0 resolution: "@types/node@npm:25.5.0" @@ -2169,6 +2776,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:>=13.7.0": + version: 25.6.0 + resolution: "@types/node@npm:25.6.0" + dependencies: + undici-types: "npm:~7.19.0" + checksum: 10c0/d2d2015630ff098a201407f55f5077a20270ae4f465c739b40865cd9933b91b9c5d2b85568eadaf3db0801b91e267333ca7eb39f007428b173d1cdab4b339ac5 + languageName: node + linkType: hard + "@types/node@npm:^10.0.3": version: 10.17.60 resolution: "@types/node@npm:10.17.60" @@ -2176,6 +2792,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^20": + version: 20.19.39 + resolution: "@types/node@npm:20.19.39" + dependencies: + undici-types: "npm:~6.21.0" + checksum: 10c0/1d16da7b5f47a7415b827fcf3b94d279febf4c14671afec74a03e47856b5270023d9beb1b9aeab4d3b622fd97d61a60206cfc2cca588663181331bc592468289 + languageName: node + linkType: hard + "@types/pg@npm:^8.16.0, @types/pg@npm:^8.20.0": version: 8.20.0 resolution: "@types/pg@npm:8.20.0" @@ -2187,6 +2812,24 @@ __metadata: languageName: node linkType: hard +"@types/react-dom@npm:^19": + version: 19.2.3 + resolution: "@types/react-dom@npm:19.2.3" + peerDependencies: + "@types/react": ^19.2.0 + checksum: 10c0/b486ebe0f4e2fb35e2e108df1d8fc0927ca5d6002d5771e8a739de11239fe62d0e207c50886185253c99eb9dedfeeb956ea7429e5ba17f6693c7acb4c02f8cd1 + languageName: node + linkType: hard + +"@types/react@npm:^19": + version: 19.2.14 + resolution: "@types/react@npm:19.2.14" + dependencies: + csstype: "npm:^3.2.2" + checksum: 10c0/7d25bf41b57719452d86d2ac0570b659210402707313a36ee612666bf11275a1c69824f8c3ee1fdca077ccfe15452f6da8f1224529b917050eb2d861e52b59b7 + languageName: node + linkType: hard + "@types/stack-utils@npm:^2.0.3": version: 2.0.3 resolution: "@types/stack-utils@npm:2.0.3" @@ -2219,6 +2862,26 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/eslint-plugin@npm:8.58.2": + version: 8.58.2 + resolution: "@typescript-eslint/eslint-plugin@npm:8.58.2" + dependencies: + "@eslint-community/regexpp": "npm:^4.12.2" + "@typescript-eslint/scope-manager": "npm:8.58.2" + "@typescript-eslint/type-utils": "npm:8.58.2" + "@typescript-eslint/utils": "npm:8.58.2" + "@typescript-eslint/visitor-keys": "npm:8.58.2" + ignore: "npm:^7.0.5" + natural-compare: "npm:^1.4.0" + ts-api-utils: "npm:^2.5.0" + peerDependencies: + "@typescript-eslint/parser": ^8.58.2 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.1.0" + checksum: 10c0/87dd29c7a87461c586e3025cde2a6e35c7cc99e69c3a93ee8254f1523ab6d4d5d322cacd476e42a3aa87581fbcf9039ef528a638a80a5c9beb1c5ebb4cc557e2 + languageName: node + linkType: hard + "@typescript-eslint/eslint-plugin@npm:^8.57.2": version: 8.58.0 resolution: "@typescript-eslint/eslint-plugin@npm:8.58.0" @@ -2239,6 +2902,22 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/parser@npm:8.58.2": + version: 8.58.2 + resolution: "@typescript-eslint/parser@npm:8.58.2" + dependencies: + "@typescript-eslint/scope-manager": "npm:8.58.2" + "@typescript-eslint/types": "npm:8.58.2" + "@typescript-eslint/typescript-estree": "npm:8.58.2" + "@typescript-eslint/visitor-keys": "npm:8.58.2" + debug: "npm:^4.4.3" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.1.0" + checksum: 10c0/7ce3e5086b5376a91f2932fda6e0d6777ff457535eff9c133852b21c895dc56933dcda173430352850e77c2437f81c5699fac9c70207abbbd087882766b88758 + languageName: node + linkType: hard + "@typescript-eslint/parser@npm:^8.57.2": version: 8.58.0 resolution: "@typescript-eslint/parser@npm:8.58.0" @@ -2268,6 +2947,19 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/project-service@npm:8.58.2": + version: 8.58.2 + resolution: "@typescript-eslint/project-service@npm:8.58.2" + dependencies: + "@typescript-eslint/tsconfig-utils": "npm:^8.58.2" + "@typescript-eslint/types": "npm:^8.58.2" + debug: "npm:^4.4.3" + peerDependencies: + typescript: ">=4.8.4 <6.1.0" + checksum: 10c0/57fa2a54452f9d9058781feb8d99d7a25096d55db15783a552b242d144992ccf893548672d3bc554c1bc0768cd8c80dbb467e9aff0db471ebcc876d4409cf75e + languageName: node + linkType: hard + "@typescript-eslint/scope-manager@npm:8.58.0": version: 8.58.0 resolution: "@typescript-eslint/scope-manager@npm:8.58.0" @@ -2278,6 +2970,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:8.58.2": + version: 8.58.2 + resolution: "@typescript-eslint/scope-manager@npm:8.58.2" + dependencies: + "@typescript-eslint/types": "npm:8.58.2" + "@typescript-eslint/visitor-keys": "npm:8.58.2" + checksum: 10c0/9bf17c32d99db840500dfa4f0504635f6422fa435e0d2f3c58c36a88434d7af7ffe7ba9a6b13bd105dfa0f36a74307955ef2837ec5f1855e34c3af1843c11d36 + languageName: node + linkType: hard + "@typescript-eslint/tsconfig-utils@npm:8.58.0, @typescript-eslint/tsconfig-utils@npm:^8.58.0": version: 8.58.0 resolution: "@typescript-eslint/tsconfig-utils@npm:8.58.0" @@ -2287,6 +2989,15 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/tsconfig-utils@npm:8.58.2, @typescript-eslint/tsconfig-utils@npm:^8.58.2": + version: 8.58.2 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.58.2" + peerDependencies: + typescript: ">=4.8.4 <6.1.0" + checksum: 10c0/d3dc874ab43af39245ee8383bb6d39c985e64c43b81a7bbf18b7982047473366c252e19a9fbfe38df30c677b42133aa43a1c0a75e92b8de5d2e64defd4b3a05e + languageName: node + linkType: hard + "@typescript-eslint/type-utils@npm:8.58.0": version: 8.58.0 resolution: "@typescript-eslint/type-utils@npm:8.58.0" @@ -2303,6 +3014,22 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/type-utils@npm:8.58.2": + version: 8.58.2 + resolution: "@typescript-eslint/type-utils@npm:8.58.2" + dependencies: + "@typescript-eslint/types": "npm:8.58.2" + "@typescript-eslint/typescript-estree": "npm:8.58.2" + "@typescript-eslint/utils": "npm:8.58.2" + debug: "npm:^4.4.3" + ts-api-utils: "npm:^2.5.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.1.0" + checksum: 10c0/1e7248694c15b5e78aeb573aef755513910f6a7ec1842223ec0c8429b6abd7342996de215aefab78520e64d2e8600c9829bdf56132476cb86703fd54f2492467 + languageName: node + linkType: hard + "@typescript-eslint/types@npm:8.58.0, @typescript-eslint/types@npm:^8.58.0": version: 8.58.0 resolution: "@typescript-eslint/types@npm:8.58.0" @@ -2310,6 +3037,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:8.58.2, @typescript-eslint/types@npm:^8.58.2": + version: 8.58.2 + resolution: "@typescript-eslint/types@npm:8.58.2" + checksum: 10c0/6707c1a2ec921b9ae441b35d9cb4e0af11673a67e332a366e3033f1d558ff5db4f39021872c207fb361841670e9ffcc4981f19eb21e4495a3a031d02015637a7 + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:8.58.0": version: 8.58.0 resolution: "@typescript-eslint/typescript-estree@npm:8.58.0" @@ -2329,6 +3063,25 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:8.58.2": + version: 8.58.2 + resolution: "@typescript-eslint/typescript-estree@npm:8.58.2" + dependencies: + "@typescript-eslint/project-service": "npm:8.58.2" + "@typescript-eslint/tsconfig-utils": "npm:8.58.2" + "@typescript-eslint/types": "npm:8.58.2" + "@typescript-eslint/visitor-keys": "npm:8.58.2" + debug: "npm:^4.4.3" + minimatch: "npm:^10.2.2" + semver: "npm:^7.7.3" + tinyglobby: "npm:^0.2.15" + ts-api-utils: "npm:^2.5.0" + peerDependencies: + typescript: ">=4.8.4 <6.1.0" + checksum: 10c0/60a323f60eff9b4bb6eb3121c5f6292e7962517a329a8a9f828e8f07516de78e6a7c1b1b1cfd732f39edf184fe57828ca557fbc63b74c61b54bcb679a69e249c + languageName: node + linkType: hard + "@typescript-eslint/utils@npm:8.58.0": version: 8.58.0 resolution: "@typescript-eslint/utils@npm:8.58.0" @@ -2344,6 +3097,21 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/utils@npm:8.58.2": + version: 8.58.2 + resolution: "@typescript-eslint/utils@npm:8.58.2" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.9.1" + "@typescript-eslint/scope-manager": "npm:8.58.2" + "@typescript-eslint/types": "npm:8.58.2" + "@typescript-eslint/typescript-estree": "npm:8.58.2" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.1.0" + checksum: 10c0/d83e6c7c1b01236d255cabe2a5dc5384eedebc9f9af6aa19cc2ab7d8b280f86912f2b1a87659b2754919afd2606820b4e53862ac91970794e2980bc97487537c + languageName: node + linkType: hard + "@typescript-eslint/visitor-keys@npm:8.58.0": version: 8.58.0 resolution: "@typescript-eslint/visitor-keys@npm:8.58.0" @@ -2354,6 +3122,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:8.58.2": + version: 8.58.2 + resolution: "@typescript-eslint/visitor-keys@npm:8.58.2" + dependencies: + "@typescript-eslint/types": "npm:8.58.2" + eslint-visitor-keys: "npm:^5.0.0" + checksum: 10c0/6775a63dbafe7a305f0cf3f0c5eb077e30dba8a60022e4ce3220669c7f1e742c6ea2ebff8c6c0288dc17eeef8f4015089a23abbdc82a6a9382abe4a77950b695 + languageName: node + linkType: hard + "@ungap/structured-clone@npm:^1.3.0": version: 1.3.0 resolution: "@ungap/structured-clone@npm:1.3.0" @@ -2526,7 +3304,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.16.0": +"acorn@npm:^8.15.0, acorn@npm:^8.16.0": version: 8.16.0 resolution: "acorn@npm:8.16.0" bin: @@ -2657,6 +3435,157 @@ __metadata: languageName: node linkType: hard +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e + languageName: node + linkType: hard + +"aria-query@npm:^5.3.2": + version: 5.3.2 + resolution: "aria-query@npm:5.3.2" + checksum: 10c0/003c7e3e2cff5540bf7a7893775fc614de82b0c5dde8ae823d47b7a28a9d4da1f7ed85f340bdb93d5649caa927755f0e31ecc7ab63edfdfc00c8ef07e505e03e + languageName: node + linkType: hard + +"array-buffer-byte-length@npm:^1.0.1, array-buffer-byte-length@npm:^1.0.2": + version: 1.0.2 + resolution: "array-buffer-byte-length@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.3" + is-array-buffer: "npm:^3.0.5" + checksum: 10c0/74e1d2d996941c7a1badda9cabb7caab8c449db9086407cad8a1b71d2604cc8abf105db8ca4e02c04579ec58b7be40279ddb09aea4784832984485499f48432d + languageName: node + linkType: hard + +"array-includes@npm:^3.1.6, array-includes@npm:^3.1.8, array-includes@npm:^3.1.9": + version: 3.1.9 + resolution: "array-includes@npm:3.1.9" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.24.0" + es-object-atoms: "npm:^1.1.1" + get-intrinsic: "npm:^1.3.0" + is-string: "npm:^1.1.1" + math-intrinsics: "npm:^1.1.0" + checksum: 10c0/0235fa69078abeac05ac4250699c44996bc6f774a9cbe45db48674ce6bd142f09b327d31482ff75cf03344db4ea03eae23edb862d59378b484b47ed842574856 + languageName: node + linkType: hard + +"array.prototype.findlast@npm:^1.2.5": + version: 1.2.5 + resolution: "array.prototype.findlast@npm:1.2.5" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/ddc952b829145ab45411b9d6adcb51a8c17c76bf89c9dd64b52d5dffa65d033da8c076ed2e17091779e83bc892b9848188d7b4b33453c5565e65a92863cb2775 + languageName: node + linkType: hard + +"array.prototype.findlastindex@npm:^1.2.6": + version: 1.2.6 + resolution: "array.prototype.findlastindex@npm:1.2.6" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.9" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.1.1" + es-shim-unscopables: "npm:^1.1.0" + checksum: 10c0/82559310d2e57ec5f8fc53d7df420e3abf0ba497935de0a5570586035478ba7d07618cb18e2d4ada2da514c8fb98a034aaf5c06caa0a57e2f7f4c4adedef5956 + languageName: node + linkType: hard + +"array.prototype.flat@npm:^1.3.1, array.prototype.flat@npm:^1.3.3": + version: 1.3.3 + resolution: "array.prototype.flat@npm:1.3.3" + dependencies: + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/d90e04dfbc43bb96b3d2248576753d1fb2298d2d972e29ca7ad5ec621f0d9e16ff8074dae647eac4f31f4fb7d3f561a7ac005fb01a71f51705a13b5af06a7d8a + languageName: node + linkType: hard + +"array.prototype.flatmap@npm:^1.3.2, array.prototype.flatmap@npm:^1.3.3": + version: 1.3.3 + resolution: "array.prototype.flatmap@npm:1.3.3" + dependencies: + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/ba899ea22b9dc9bf276e773e98ac84638ed5e0236de06f13d63a90b18ca9e0ec7c97d622d899796e3773930b946cd2413d098656c0c5d8cc58c6f25c21e6bd54 + languageName: node + linkType: hard + +"array.prototype.tosorted@npm:^1.1.4": + version: 1.1.4 + resolution: "array.prototype.tosorted@npm:1.1.4" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.3" + es-errors: "npm:^1.3.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/eb3c4c4fc0381b0bf6dba2ea4d48d367c2827a0d4236a5718d97caaccc6b78f11f4cadf090736e86301d295a6aa4967ed45568f92ced51be8cbbacd9ca410943 + languageName: node + linkType: hard + +"arraybuffer.prototype.slice@npm:^1.0.4": + version: 1.0.4 + resolution: "arraybuffer.prototype.slice@npm:1.0.4" + dependencies: + array-buffer-byte-length: "npm:^1.0.1" + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" + is-array-buffer: "npm:^3.0.4" + checksum: 10c0/2f2459caa06ae0f7f615003f9104b01f6435cc803e11bd2a655107d52a1781dc040532dc44d93026b694cc18793993246237423e13a5337e86b43ed604932c06 + languageName: node + linkType: hard + +"ast-types-flow@npm:^0.0.8": + version: 0.0.8 + resolution: "ast-types-flow@npm:0.0.8" + checksum: 10c0/f2a0ba8055353b743c41431974521e5e852a9824870cd6fce2db0e538ac7bf4da406bbd018d109af29ff3f8f0993f6a730c9eddbd0abd031fbcb29ca75c1014e + languageName: node + linkType: hard + +"async-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-function@npm:1.0.0" + checksum: 10c0/669a32c2cb7e45091330c680e92eaeb791bc1d4132d827591e499cd1f776ff5a873e77e5f92d0ce795a8d60f10761dec9ddfe7225a5de680f5d357f67b1aac73 + languageName: node + linkType: hard + +"async-generator-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-generator-function@npm:1.0.0" + checksum: 10c0/2c50ef856c543ad500d8d8777d347e3c1ba623b93e99c9263ecc5f965c1b12d2a140e2ab6e43c3d0b85366110696f28114649411cbcd10b452a92a2318394186 + languageName: node + linkType: hard + +"available-typed-arrays@npm:^1.0.7": + version: 1.0.7 + resolution: "available-typed-arrays@npm:1.0.7" + dependencies: + possible-typed-array-names: "npm:^1.0.0" + checksum: 10c0/d07226ef4f87daa01bd0fe80f8f310982e345f372926da2e5296aecc25c41cab440916bbaa4c5e1034b453af3392f67df5961124e4b586df1e99793a1374bdb2 + languageName: node + linkType: hard + "aws-ssl-profiles@npm:^1.1.1": version: 1.1.2 resolution: "aws-ssl-profiles@npm:1.1.2" @@ -2664,6 +3593,20 @@ __metadata: languageName: node linkType: hard +"axe-core@npm:^4.10.0": + version: 4.11.3 + resolution: "axe-core@npm:4.11.3" + checksum: 10c0/bc757775ef41396faf6470752a12e96f3972d0d97cae4ec28e99cec7bca2c5aaa6d040b97e7f0278e8d1ea354fa0b0bf7fcaa51775a725d7ed0a0834e7ea13d7 + languageName: node + linkType: hard + +"axobject-query@npm:^4.1.0": + version: 4.1.0 + resolution: "axobject-query@npm:4.1.0" + checksum: 10c0/c470e4f95008f232eadd755b018cb55f16c03ccf39c027b941cd8820ac6b68707ce5d7368a46756db4256fbc91bb4ead368f84f7fb034b2b7932f082f6dc0775 + languageName: node + linkType: hard + "babel-jest@npm:30.3.0": version: 30.3.0 resolution: "babel-jest@npm:30.3.0" @@ -2763,6 +3706,15 @@ __metadata: languageName: node linkType: hard +"baseline-browser-mapping@npm:^2.9.19": + version: 2.10.20 + resolution: "baseline-browser-mapping@npm:2.10.20" + bin: + baseline-browser-mapping: dist/cli.cjs + checksum: 10c0/3d60c9656c4c4673593aa8d0ae9aa6b69b4e018c2f585874a0e8a40cb28d0559f57ee1b2e7e44cb1e7f6aac66f658a4a3c1285901b8836d8ae31e189e30aa816 + languageName: node + linkType: hard + "better-result@npm:^2.7.0": version: 2.7.0 resolution: "better-result@npm:2.7.0" @@ -2802,6 +3754,15 @@ __metadata: languageName: node linkType: hard +"braces@npm:^3.0.3": + version: 3.0.3 + resolution: "braces@npm:3.0.3" + dependencies: + fill-range: "npm:^7.1.1" + checksum: 10c0/7c6dfd30c338d2997ba77500539227b9d1f85e388a5f43220865201e407e076783d0881f2d297b9f80951b4c957fcf0b51c1d2d24227631643c3f7c284b0aa04 + languageName: node + linkType: hard + "browserslist@npm:^4.24.0": version: 4.28.1 resolution: "browserslist@npm:4.28.1" @@ -2885,7 +3846,39 @@ __metadata: languageName: node linkType: hard -"callsites@npm:^3.1.0": +"call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": + version: 1.0.2 + resolution: "call-bind-apply-helpers@npm:1.0.2" + dependencies: + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + checksum: 10c0/47bd9901d57b857590431243fea704ff18078b16890a6b3e021e12d279bbf211d039155e27d7566b374d49ee1f8189344bac9833dec7a20cdec370506361c938 + languageName: node + linkType: hard + +"call-bind@npm:^1.0.7, call-bind@npm:^1.0.8, call-bind@npm:^1.0.9": + version: 1.0.9 + resolution: "call-bind@npm:1.0.9" + dependencies: + call-bind-apply-helpers: "npm:^1.0.2" + es-define-property: "npm:^1.0.1" + get-intrinsic: "npm:^1.3.0" + set-function-length: "npm:^1.2.2" + checksum: 10c0/a6621f6da1444481919ce3b4983dff725691e0754d3507ae483ce56e54985f2da7d6f1df512c56dbf28660745cf1ca52553f1fc9aef5557f3ce353ef14fab714 + languageName: node + linkType: hard + +"call-bound@npm:^1.0.2, call-bound@npm:^1.0.3, call-bound@npm:^1.0.4": + version: 1.0.4 + resolution: "call-bound@npm:1.0.4" + dependencies: + call-bind-apply-helpers: "npm:^1.0.2" + get-intrinsic: "npm:^1.3.0" + checksum: 10c0/f4796a6a0941e71c766aea672f63b72bc61234c4f4964dc6d7606e3664c307e7d77845328a8f3359ce39ddb377fed67318f9ee203dea1d47e46165dcf2917644 + languageName: node + linkType: hard + +"callsites@npm:^3.0.0, callsites@npm:^3.1.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 @@ -2906,6 +3899,13 @@ __metadata: languageName: node linkType: hard +"caniuse-lite@npm:^1.0.30001579": + version: 1.0.30001788 + resolution: "caniuse-lite@npm:1.0.30001788" + checksum: 10c0/d3c4695d0e7a1e95194cc5072e26db59cbcd25adfff64253859213c1a04ce9bc17f7b8ec8b11908ac1ecc6c1a0caf95fae0aec064a64b8df03286dffa629ce8a + languageName: node + linkType: hard + "caniuse-lite@npm:^1.0.30001759": version: 1.0.30001782 resolution: "caniuse-lite@npm:1.0.30001782" @@ -2920,7 +3920,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^4.1.2": +"chalk@npm:^4.0.0, chalk@npm:^4.1.2": version: 4.1.2 resolution: "chalk@npm:4.1.2" dependencies: @@ -2999,6 +3999,22 @@ __metadata: languageName: node linkType: hard +"class-variance-authority@npm:^0.7.1": + version: 0.7.1 + resolution: "class-variance-authority@npm:0.7.1" + dependencies: + clsx: "npm:^2.1.1" + checksum: 10c0/0f438cea22131808b99272de0fa933c2532d5659773bfec0c583de7b3f038378996d3350683426b8e9c74a6286699382106d71fbec52f0dd5fbb191792cccb5b + languageName: node + linkType: hard + +"client-only@npm:0.0.1": + version: 0.0.1 + resolution: "client-only@npm:0.0.1" + checksum: 10c0/9d6cfd0c19e1c96a434605added99dff48482152af791ec4172fb912a71cff9027ff174efd8cdb2160cc7f377543e0537ffc462d4f279bc4701de3f2a3c4b358 + languageName: node + linkType: hard + "cliui@npm:^8.0.1": version: 8.0.1 resolution: "cliui@npm:8.0.1" @@ -3010,6 +4026,13 @@ __metadata: languageName: node linkType: hard +"clsx@npm:^2.1.1": + version: 2.1.1 + resolution: "clsx@npm:2.1.1" + checksum: 10c0/c4c8eb865f8c82baab07e71bfa8897c73454881c4f99d6bc81585aecd7c441746c1399d08363dc096c550cceaf97bd4ce1e8854e1771e9998d9f94c4fe075839 + languageName: node + linkType: hard + "co@npm:^4.6.0": version: 4.6.0 resolution: "co@npm:4.6.0" @@ -3107,6 +4130,77 @@ __metadata: languageName: node linkType: hard +"csstype@npm:^3.2.2": + version: 3.2.3 + resolution: "csstype@npm:3.2.3" + checksum: 10c0/cd29c51e70fa822f1cecd8641a1445bed7063697469d35633b516e60fe8c1bde04b08f6c5b6022136bb669b64c63d4173af54864510fbb4ee23281801841a3ce + languageName: node + linkType: hard + +"damerau-levenshtein@npm:^1.0.8": + version: 1.0.8 + resolution: "damerau-levenshtein@npm:1.0.8" + checksum: 10c0/4c2647e0f42acaee7d068756c1d396e296c3556f9c8314bac1ac63ffb236217ef0e7e58602b18bb2173deec7ec8e0cac8e27cccf8f5526666b4ff11a13ad54a3 + languageName: node + linkType: hard + +"dashboard@workspace:apps/dashboard": + version: 0.0.0-use.local + resolution: "dashboard@workspace:apps/dashboard" + dependencies: + "@grpc/grpc-js": "npm:^1.14.3" + "@kord/grpc-contracts": "workspace:*" + "@tailwindcss/postcss": "npm:^4" + "@types/node": "npm:^20" + "@types/react": "npm:^19" + "@types/react-dom": "npm:^19" + class-variance-authority: "npm:^0.7.1" + clsx: "npm:^2.1.1" + eslint: "npm:^9" + eslint-config-next: "npm:16.2.4" + lucide-react: "npm:^1.8.0" + next: "npm:16.2.4" + react: "npm:19.2.4" + react-dom: "npm:19.2.4" + tailwind-merge: "npm:^3.5.0" + tailwindcss: "npm:^4" + typescript: "npm:^5" + languageName: unknown + linkType: soft + +"data-view-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "data-view-buffer@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.2" + checksum: 10c0/7986d40fc7979e9e6241f85db8d17060dd9a71bd53c894fa29d126061715e322a4cd47a00b0b8c710394854183d4120462b980b8554012acc1c0fa49df7ad38c + languageName: node + linkType: hard + +"data-view-byte-length@npm:^1.0.2": + version: 1.0.2 + resolution: "data-view-byte-length@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.2" + checksum: 10c0/f8a4534b5c69384d95ac18137d381f18a5cfae1f0fc1df0ef6feef51ef0d568606d970b69e02ea186c6c0f0eac77fe4e6ad96fec2569cc86c3afcc7475068c55 + languageName: node + linkType: hard + +"data-view-byte-offset@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-byte-offset@npm:1.0.1" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.1" + checksum: 10c0/fa7aa40078025b7810dcffc16df02c480573b7b53ef1205aa6a61533011005c1890e5ba17018c692ce7c900212b547262d33279fde801ad9843edc0863bf78c4 + languageName: node + linkType: hard + "date-format@npm:^4.0.14": version: 4.0.14 resolution: "date-format@npm:4.0.14" @@ -3114,7 +4208,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.4.3": +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.4.0, debug@npm:^4.4.3": version: 4.4.3 resolution: "debug@npm:4.4.3" dependencies: @@ -3126,6 +4220,15 @@ __metadata: languageName: node linkType: hard +"debug@npm:^3.2.7": + version: 3.2.7 + resolution: "debug@npm:3.2.7" + dependencies: + ms: "npm:^2.1.1" + checksum: 10c0/37d96ae42cbc71c14844d2ae3ba55adf462ec89fd3a999459dec3833944cd999af6007ff29c780f1c61153bcaaf2c842d1e4ce1ec621e4fc4923244942e4a02a + languageName: node + linkType: hard + "dedent@npm:^1.6.0": version: 1.7.2 resolution: "dedent@npm:1.7.2" @@ -3159,6 +4262,28 @@ __metadata: languageName: node linkType: hard +"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": + version: 1.1.4 + resolution: "define-data-property@npm:1.1.4" + dependencies: + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.0.1" + checksum: 10c0/dea0606d1483eb9db8d930d4eac62ca0fa16738b0b3e07046cddfacf7d8c868bbe13fa0cb263eb91c7d0d527960dc3f2f2471a69ed7816210307f6744fe62e37 + languageName: node + linkType: hard + +"define-properties@npm:^1.1.3, define-properties@npm:^1.2.1": + version: 1.2.1 + resolution: "define-properties@npm:1.2.1" + dependencies: + define-data-property: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.0" + object-keys: "npm:^1.1.1" + checksum: 10c0/88a152319ffe1396ccc6ded510a3896e77efac7a1bfbaa174a7b00414a1747377e0bb525d303794a47cf30e805c2ec84e575758512c6e44a993076d29fd4e6c3 + languageName: node + linkType: hard + "defu@npm:^6.1.4": version: 6.1.4 resolution: "defu@npm:6.1.4" @@ -3187,7 +4312,7 @@ __metadata: languageName: node linkType: hard -"detect-libc@npm:^2.0.0, detect-libc@npm:^2.1.2": +"detect-libc@npm:^2.0.0, detect-libc@npm:^2.0.3, detect-libc@npm:^2.1.2": version: 2.1.2 resolution: "detect-libc@npm:2.1.2" checksum: 10c0/acc675c29a5649fa1fb6e255f993b8ee829e510b6b56b0910666949c80c364738833417d0edb5f90e4e46be17228b0f2b66a010513984e18b15deeeac49369c4 @@ -3229,6 +4354,15 @@ __metadata: languageName: node linkType: hard +"doctrine@npm:^2.1.0": + version: 2.1.0 + resolution: "doctrine@npm:2.1.0" + dependencies: + esutils: "npm:^2.0.2" + checksum: 10c0/b6416aaff1f380bf56c3b552f31fdf7a69b45689368deca72d28636f41c16bb28ec3ebc40ace97db4c1afc0ceeb8120e8492fe0046841c94c2933b2e30a7d5ac + languageName: node + linkType: hard + "dotenv@npm:^16.6.1": version: 16.6.1 resolution: "dotenv@npm:16.6.1" @@ -3243,6 +4377,17 @@ __metadata: languageName: node linkType: hard +"dunder-proto@npm:^1.0.0, dunder-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "dunder-proto@npm:1.0.1" + dependencies: + call-bind-apply-helpers: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.2.0" + checksum: 10c0/199f2a0c1c16593ca0a145dbf76a962f8033ce3129f01284d48c45ed4e14fea9bbacd7b3610b6cdc33486cef20385ac054948fefc6272fcce645c09468f93031 + languageName: node + linkType: hard + "eastasianwidth@npm:^0.2.0": version: 0.2.0 resolution: "eastasianwidth@npm:0.2.0" @@ -3295,6 +4440,16 @@ __metadata: languageName: node linkType: hard +"enhanced-resolve@npm:^5.19.0": + version: 5.20.1 + resolution: "enhanced-resolve@npm:5.20.1" + dependencies: + graceful-fs: "npm:^4.2.4" + tapable: "npm:^2.3.0" + checksum: 10c0/c6503ee1b2d725843e047e774445ecb12b779aa52db25d11ebe18d4b3adc148d3d993d2038b3d0c38ad836c9c4b3930fbc55df42f72b44785e2f94e5530eda69 + languageName: node + linkType: hard + "env-paths@npm:^2.2.0": version: 2.2.1 resolution: "env-paths@npm:2.2.1" @@ -3318,6 +4473,147 @@ __metadata: languageName: node linkType: hard +"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.0, es-abstract@npm:^1.24.2": + version: 1.24.2 + resolution: "es-abstract@npm:1.24.2" + dependencies: + array-buffer-byte-length: "npm:^1.0.2" + arraybuffer.prototype.slice: "npm:^1.0.4" + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" + data-view-buffer: "npm:^1.0.2" + data-view-byte-length: "npm:^1.0.2" + data-view-byte-offset: "npm:^1.0.1" + es-define-property: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.1.1" + es-set-tostringtag: "npm:^2.1.0" + es-to-primitive: "npm:^1.3.0" + function.prototype.name: "npm:^1.1.8" + get-intrinsic: "npm:^1.3.0" + get-proto: "npm:^1.0.1" + get-symbol-description: "npm:^1.1.0" + globalthis: "npm:^1.0.4" + gopd: "npm:^1.2.0" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + hasown: "npm:^2.0.2" + internal-slot: "npm:^1.1.0" + is-array-buffer: "npm:^3.0.5" + is-callable: "npm:^1.2.7" + is-data-view: "npm:^1.0.2" + is-negative-zero: "npm:^2.0.3" + is-regex: "npm:^1.2.1" + is-set: "npm:^2.0.3" + is-shared-array-buffer: "npm:^1.0.4" + is-string: "npm:^1.1.1" + is-typed-array: "npm:^1.1.15" + is-weakref: "npm:^1.1.1" + math-intrinsics: "npm:^1.1.0" + object-inspect: "npm:^1.13.4" + object-keys: "npm:^1.1.1" + object.assign: "npm:^4.1.7" + own-keys: "npm:^1.0.1" + regexp.prototype.flags: "npm:^1.5.4" + safe-array-concat: "npm:^1.1.3" + safe-push-apply: "npm:^1.0.0" + safe-regex-test: "npm:^1.1.0" + set-proto: "npm:^1.0.0" + stop-iteration-iterator: "npm:^1.1.0" + string.prototype.trim: "npm:^1.2.10" + string.prototype.trimend: "npm:^1.0.9" + string.prototype.trimstart: "npm:^1.0.8" + typed-array-buffer: "npm:^1.0.3" + typed-array-byte-length: "npm:^1.0.3" + typed-array-byte-offset: "npm:^1.0.4" + typed-array-length: "npm:^1.0.7" + unbox-primitive: "npm:^1.1.0" + which-typed-array: "npm:^1.1.19" + checksum: 10c0/67a5bf21ef5c7d775e6f6131a836323900b4d87194cf544394ac68fe31c57fa53828b978af4a4f551ef307f83a2f910a16b6b982760ad3ddc3dc471f98d5fd1b + languageName: node + linkType: hard + +"es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": + version: 1.0.1 + resolution: "es-define-property@npm:1.0.1" + checksum: 10c0/3f54eb49c16c18707949ff25a1456728c883e81259f045003499efba399c08bad00deebf65cccde8c0e07908c1a225c9d472b7107e558f2a48e28d530e34527c + languageName: node + linkType: hard + +"es-errors@npm:^1.3.0": + version: 1.3.0 + resolution: "es-errors@npm:1.3.0" + checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 + languageName: node + linkType: hard + +"es-iterator-helpers@npm:^1.2.1": + version: 1.3.2 + resolution: "es-iterator-helpers@npm:1.3.2" + dependencies: + call-bind: "npm:^1.0.9" + call-bound: "npm:^1.0.4" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.24.2" + es-errors: "npm:^1.3.0" + es-set-tostringtag: "npm:^2.1.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.3.0" + globalthis: "npm:^1.0.4" + gopd: "npm:^1.2.0" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + internal-slot: "npm:^1.1.0" + iterator.prototype: "npm:^1.1.5" + math-intrinsics: "npm:^1.1.0" + checksum: 10c0/5ddf9e7a7c5052d02cd8eb18f75e160c628eea66862ccd22f0fee7a7b1d2d17565c7ccf183f8b52aa88470d55394d1022012bc4eb8f8ae65a22b36e0b3bef83a + languageName: node + linkType: hard + +"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": + version: 1.1.1 + resolution: "es-object-atoms@npm:1.1.1" + dependencies: + es-errors: "npm:^1.3.0" + checksum: 10c0/65364812ca4daf48eb76e2a3b7a89b3f6a2e62a1c420766ce9f692665a29d94fe41fe88b65f24106f449859549711e4b40d9fb8002d862dfd7eb1c512d10be0c + languageName: node + linkType: hard + +"es-set-tostringtag@npm:^2.1.0": + version: 2.1.0 + resolution: "es-set-tostringtag@npm:2.1.0" + dependencies: + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.2" + checksum: 10c0/ef2ca9ce49afe3931cb32e35da4dcb6d86ab02592cfc2ce3e49ced199d9d0bb5085fc7e73e06312213765f5efa47cc1df553a6a5154584b21448e9fb8355b1af + languageName: node + linkType: hard + +"es-shim-unscopables@npm:^1.0.2, es-shim-unscopables@npm:^1.1.0": + version: 1.1.0 + resolution: "es-shim-unscopables@npm:1.1.0" + dependencies: + hasown: "npm:^2.0.2" + checksum: 10c0/1b9702c8a1823fc3ef39035a4e958802cf294dd21e917397c561d0b3e195f383b978359816b1732d02b255ccf63e1e4815da0065b95db8d7c992037be3bbbcdb + languageName: node + linkType: hard + +"es-to-primitive@npm:^1.3.0": + version: 1.3.0 + resolution: "es-to-primitive@npm:1.3.0" + dependencies: + is-callable: "npm:^1.2.7" + is-date-object: "npm:^1.0.5" + is-symbol: "npm:^1.0.4" + checksum: 10c0/c7e87467abb0b438639baa8139f701a06537d2b9bc758f23e8622c3b42fd0fdb5bde0f535686119e446dd9d5e4c0f238af4e14960f4771877cf818d023f6730b + languageName: node + linkType: hard + "esbuild@npm:~0.27.0": version: 0.27.4 resolution: "esbuild@npm:0.27.4" @@ -3428,6 +4724,183 @@ __metadata: languageName: node linkType: hard +"eslint-config-next@npm:16.2.4": + version: 16.2.4 + resolution: "eslint-config-next@npm:16.2.4" + dependencies: + "@next/eslint-plugin-next": "npm:16.2.4" + eslint-import-resolver-node: "npm:^0.3.6" + eslint-import-resolver-typescript: "npm:^3.5.2" + eslint-plugin-import: "npm:^2.32.0" + eslint-plugin-jsx-a11y: "npm:^6.10.0" + eslint-plugin-react: "npm:^7.37.0" + eslint-plugin-react-hooks: "npm:^7.0.0" + globals: "npm:16.4.0" + typescript-eslint: "npm:^8.46.0" + peerDependencies: + eslint: ">=9.0.0" + typescript: ">=3.3.1" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/84edd2c73c83dc0e513ddc536d3f2a6d1b64eee6f66fffa8031750f5c1c6491b9fe4de71682b2c5ee4acf4ba0b1528df70555ad0fe676d280ab71ca7d9502887 + languageName: node + linkType: hard + +"eslint-import-resolver-node@npm:^0.3.6, eslint-import-resolver-node@npm:^0.3.9": + version: 0.3.10 + resolution: "eslint-import-resolver-node@npm:0.3.10" + dependencies: + debug: "npm:^3.2.7" + is-core-module: "npm:^2.16.1" + resolve: "npm:^2.0.0-next.6" + checksum: 10c0/2e05bdb148fe10a25b9a6fec3c4986a2e09e98bb99208491df82a9df7725f7bb312482d585404c440d42e58ab60debe7a48d9c992191851385b18d33a146e3c3 + languageName: node + linkType: hard + +"eslint-import-resolver-typescript@npm:^3.5.2": + version: 3.10.1 + resolution: "eslint-import-resolver-typescript@npm:3.10.1" + dependencies: + "@nolyfill/is-core-module": "npm:1.0.39" + debug: "npm:^4.4.0" + get-tsconfig: "npm:^4.10.0" + is-bun-module: "npm:^2.0.0" + stable-hash: "npm:^0.0.5" + tinyglobby: "npm:^0.2.13" + unrs-resolver: "npm:^1.6.2" + peerDependencies: + eslint: "*" + eslint-plugin-import: "*" + eslint-plugin-import-x: "*" + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + checksum: 10c0/02ba72cf757753ab9250806c066d09082e00807b7b6525d7687e1c0710bc3f6947e39120227fe1f93dabea3510776d86fb3fd769466ba3c46ce67e9f874cb702 + languageName: node + linkType: hard + +"eslint-module-utils@npm:^2.12.1": + version: 2.12.1 + resolution: "eslint-module-utils@npm:2.12.1" + dependencies: + debug: "npm:^3.2.7" + peerDependenciesMeta: + eslint: + optional: true + checksum: 10c0/6f4efbe7a91ae49bf67b4ab3644cb60bc5bd7db4cb5521de1b65be0847ffd3fb6bce0dd68f0995e1b312d137f768e2a1f842ee26fe73621afa05f850628fdc40 + languageName: node + linkType: hard + +"eslint-plugin-import@npm:^2.32.0": + version: 2.32.0 + resolution: "eslint-plugin-import@npm:2.32.0" + dependencies: + "@rtsao/scc": "npm:^1.1.0" + array-includes: "npm:^3.1.9" + array.prototype.findlastindex: "npm:^1.2.6" + array.prototype.flat: "npm:^1.3.3" + array.prototype.flatmap: "npm:^1.3.3" + debug: "npm:^3.2.7" + doctrine: "npm:^2.1.0" + eslint-import-resolver-node: "npm:^0.3.9" + eslint-module-utils: "npm:^2.12.1" + hasown: "npm:^2.0.2" + is-core-module: "npm:^2.16.1" + is-glob: "npm:^4.0.3" + minimatch: "npm:^3.1.2" + object.fromentries: "npm:^2.0.8" + object.groupby: "npm:^1.0.3" + object.values: "npm:^1.2.1" + semver: "npm:^6.3.1" + string.prototype.trimend: "npm:^1.0.9" + tsconfig-paths: "npm:^3.15.0" + peerDependencies: + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + checksum: 10c0/bfb1b8fc8800398e62ddfefbf3638d185286edfed26dfe00875cc2846d954491b4f5112457831588b757fa789384e1ae585f812614c4797f0499fa234fd4a48b + languageName: node + linkType: hard + +"eslint-plugin-jsx-a11y@npm:^6.10.0": + version: 6.10.2 + resolution: "eslint-plugin-jsx-a11y@npm:6.10.2" + dependencies: + aria-query: "npm:^5.3.2" + array-includes: "npm:^3.1.8" + array.prototype.flatmap: "npm:^1.3.2" + ast-types-flow: "npm:^0.0.8" + axe-core: "npm:^4.10.0" + axobject-query: "npm:^4.1.0" + damerau-levenshtein: "npm:^1.0.8" + emoji-regex: "npm:^9.2.2" + hasown: "npm:^2.0.2" + jsx-ast-utils: "npm:^3.3.5" + language-tags: "npm:^1.0.9" + minimatch: "npm:^3.1.2" + object.fromentries: "npm:^2.0.8" + safe-regex-test: "npm:^1.0.3" + string.prototype.includes: "npm:^2.0.1" + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 + checksum: 10c0/d93354e03b0cf66f018d5c50964e074dffe4ddf1f9b535fa020d19c4ae45f89c1a16e9391ca61ac3b19f7042c751ac0d361a056a65cbd1de24718a53ff8daa6e + languageName: node + linkType: hard + +"eslint-plugin-react-hooks@npm:^7.0.0": + version: 7.1.1 + resolution: "eslint-plugin-react-hooks@npm:7.1.1" + dependencies: + "@babel/core": "npm:^7.24.4" + "@babel/parser": "npm:^7.24.4" + hermes-parser: "npm:^0.25.1" + zod: "npm:^3.25.0 || ^4.0.0" + zod-validation-error: "npm:^3.5.0 || ^4.0.0" + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0 + checksum: 10c0/cee8454915d71ac5d70a0d8f4f260e76eaf45fcd4162747dd4282b792ee5616d187351dabe6cdcff9040c79d0cec625635c4fd0777276be119efa88ebe058525 + languageName: node + linkType: hard + +"eslint-plugin-react@npm:^7.37.0": + version: 7.37.5 + resolution: "eslint-plugin-react@npm:7.37.5" + dependencies: + array-includes: "npm:^3.1.8" + array.prototype.findlast: "npm:^1.2.5" + array.prototype.flatmap: "npm:^1.3.3" + array.prototype.tosorted: "npm:^1.1.4" + doctrine: "npm:^2.1.0" + es-iterator-helpers: "npm:^1.2.1" + estraverse: "npm:^5.3.0" + hasown: "npm:^2.0.2" + jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" + minimatch: "npm:^3.1.2" + object.entries: "npm:^1.1.9" + object.fromentries: "npm:^2.0.8" + object.values: "npm:^1.2.1" + prop-types: "npm:^15.8.1" + resolve: "npm:^2.0.0-next.5" + semver: "npm:^6.3.1" + string.prototype.matchall: "npm:^4.0.12" + string.prototype.repeat: "npm:^1.0.0" + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + checksum: 10c0/c850bfd556291d4d9234f5ca38db1436924a1013627c8ab1853f77cac73ec19b020e861e6c7b783436a48b6ffcdfba4547598235a37ad4611b6739f65fd8ad57 + languageName: node + linkType: hard + +"eslint-scope@npm:^8.4.0": + version: 8.4.0 + resolution: "eslint-scope@npm:8.4.0" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^5.2.0" + checksum: 10c0/407f6c600204d0f3705bd557f81bd0189e69cd7996f408f8971ab5779c0af733d1af2f1412066b40ee1588b085874fc37a2333986c6521669cdbdd36ca5058e0 + languageName: node + linkType: hard + "eslint-scope@npm:^9.1.2": version: 9.1.2 resolution: "eslint-scope@npm:9.1.2" @@ -3447,6 +4920,13 @@ __metadata: languageName: node linkType: hard +"eslint-visitor-keys@npm:^4.2.1": + version: 4.2.1 + resolution: "eslint-visitor-keys@npm:4.2.1" + checksum: 10c0/fcd43999199d6740db26c58dbe0c2594623e31ca307e616ac05153c9272f12f1364f5a0b1917a8e962268fdecc6f3622c1c2908b4fcc2e047a106fe6de69dc43 + languageName: node + linkType: hard + "eslint-visitor-keys@npm:^5.0.0, eslint-visitor-keys@npm:^5.0.1": version: 5.0.1 resolution: "eslint-visitor-keys@npm:5.0.1" @@ -3499,6 +4979,66 @@ __metadata: languageName: node linkType: hard +"eslint@npm:^9": + version: 9.39.4 + resolution: "eslint@npm:9.39.4" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.8.0" + "@eslint-community/regexpp": "npm:^4.12.1" + "@eslint/config-array": "npm:^0.21.2" + "@eslint/config-helpers": "npm:^0.4.2" + "@eslint/core": "npm:^0.17.0" + "@eslint/eslintrc": "npm:^3.3.5" + "@eslint/js": "npm:9.39.4" + "@eslint/plugin-kit": "npm:^0.4.1" + "@humanfs/node": "npm:^0.16.6" + "@humanwhocodes/module-importer": "npm:^1.0.1" + "@humanwhocodes/retry": "npm:^0.4.2" + "@types/estree": "npm:^1.0.6" + ajv: "npm:^6.14.0" + chalk: "npm:^4.0.0" + cross-spawn: "npm:^7.0.6" + debug: "npm:^4.3.2" + escape-string-regexp: "npm:^4.0.0" + eslint-scope: "npm:^8.4.0" + eslint-visitor-keys: "npm:^4.2.1" + espree: "npm:^10.4.0" + esquery: "npm:^1.5.0" + esutils: "npm:^2.0.2" + fast-deep-equal: "npm:^3.1.3" + file-entry-cache: "npm:^8.0.0" + find-up: "npm:^5.0.0" + glob-parent: "npm:^6.0.2" + ignore: "npm:^5.2.0" + imurmurhash: "npm:^0.1.4" + is-glob: "npm:^4.0.0" + json-stable-stringify-without-jsonify: "npm:^1.0.1" + lodash.merge: "npm:^4.6.2" + minimatch: "npm:^3.1.5" + natural-compare: "npm:^1.4.0" + optionator: "npm:^0.9.3" + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true + bin: + eslint: bin/eslint.js + checksum: 10c0/1955067c2d991f0c84f4c4abfafe31bb47fa3b717a7fd3e43fe1e511c6f859d7700cbca969f85661dc4c130f7aeced5e5444884314198a54428f5e5141db9337 + languageName: node + linkType: hard + +"espree@npm:^10.0.1, espree@npm:^10.4.0": + version: 10.4.0 + resolution: "espree@npm:10.4.0" + dependencies: + acorn: "npm:^8.15.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^4.2.1" + checksum: 10c0/c63fe06131c26c8157b4083313cb02a9a54720a08e21543300e55288c40e06c3fc284bdecf108d3a1372c5934a0a88644c98714f38b6ae8ed272b40d9ea08d6b + languageName: node + linkType: hard + "espree@npm:^11.2.0": version: 11.2.0 resolution: "espree@npm:11.2.0" @@ -3520,7 +5060,7 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.7.0": +"esquery@npm:^1.5.0, esquery@npm:^1.7.0": version: 1.7.0 resolution: "esquery@npm:1.7.0" dependencies: @@ -3538,7 +5078,7 @@ __metadata: languageName: node linkType: hard -"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": +"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": version: 5.3.0 resolution: "estraverse@npm:5.3.0" checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 @@ -3620,6 +5160,19 @@ __metadata: languageName: node linkType: hard +"fast-glob@npm:3.3.1": + version: 3.3.1 + resolution: "fast-glob@npm:3.3.1" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.4" + checksum: 10c0/b68431128fb6ce4b804c5f9622628426d990b66c75b21c0d16e3d80e2d1398bf33f7e1724e66a2e3f299285dcf5b8d745b122d0304e7dd66f5231081f33ec67c + languageName: node + linkType: hard + "fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" @@ -3641,6 +5194,15 @@ __metadata: languageName: node linkType: hard +"fastq@npm:^1.6.0": + version: 1.20.1 + resolution: "fastq@npm:1.20.1" + dependencies: + reusify: "npm:^1.0.4" + checksum: 10c0/e5dd725884decb1f11e5c822221d76136f239d0236f176fab80b7b8f9e7619ae57e6b4e5b73defc21e6b9ef99437ee7b545cff8e6c2c337819633712fa9d352e + languageName: node + linkType: hard + "fb-watchman@npm:^2.0.2": version: 2.0.2 resolution: "fb-watchman@npm:2.0.2" @@ -3683,6 +5245,15 @@ __metadata: languageName: node linkType: hard +"fill-range@npm:^7.1.1": + version: 7.1.1 + resolution: "fill-range@npm:7.1.1" + dependencies: + to-regex-range: "npm:^5.0.1" + checksum: 10c0/b75b691bbe065472f38824f694c2f7449d7f5004aa950426a2c28f0306c60db9b880c0b0e4ed819997ffb882d1da02cfcfc819bddc94d71627f5269682edf018 + languageName: node + linkType: hard + "find-up@npm:^4.0.0, find-up@npm:^4.1.0": version: 4.1.0 resolution: "find-up@npm:4.1.0" @@ -3720,6 +5291,15 @@ __metadata: languageName: node linkType: hard +"for-each@npm:^0.3.3, for-each@npm:^0.3.5": + version: 0.3.5 + resolution: "for-each@npm:0.3.5" + dependencies: + is-callable: "npm:^1.2.7" + checksum: 10c0/0e0b50f6a843a282637d43674d1fb278dda1dd85f4f99b640024cfb10b85058aac0cc781bf689d5fe50b4b7f638e91e548560723a4e76e04fe96ae35ef039cee + languageName: node + linkType: hard + "foreground-child@npm:3.3.1, foreground-child@npm:^3.1.0": version: 3.3.1 resolution: "foreground-child@npm:3.3.1" @@ -3785,6 +5365,34 @@ __metadata: languageName: node linkType: hard +"function-bind@npm:^1.1.2": + version: 1.1.2 + resolution: "function-bind@npm:1.1.2" + checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 + languageName: node + linkType: hard + +"function.prototype.name@npm:^1.1.6, function.prototype.name@npm:^1.1.8": + version: 1.1.8 + resolution: "function.prototype.name@npm:1.1.8" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + functions-have-names: "npm:^1.2.3" + hasown: "npm:^2.0.2" + is-callable: "npm:^1.2.7" + checksum: 10c0/e920a2ab52663005f3cbe7ee3373e3c71c1fb5558b0b0548648cdf3e51961085032458e26c71ff1a8c8c20e7ee7caeb03d43a5d1fa8610c459333323a2e71253 + languageName: node + linkType: hard + +"functions-have-names@npm:^1.2.3": + version: 1.2.3 + resolution: "functions-have-names@npm:1.2.3" + checksum: 10c0/33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca + languageName: node + linkType: hard + "gauge@npm:^3.0.0": version: 3.0.2 resolution: "gauge@npm:3.0.2" @@ -3811,6 +5419,13 @@ __metadata: languageName: node linkType: hard +"generator-function@npm:^2.0.0": + version: 2.0.1 + resolution: "generator-function@npm:2.0.1" + checksum: 10c0/8a9f59df0f01cfefafdb3b451b80555e5cf6d76487095db91ac461a0e682e4ff7a9dbce15f4ecec191e53586d59eece01949e05a4b4492879600bbbe8e28d6b8 + languageName: node + linkType: hard + "gensync@npm:^1.0.0-beta.2": version: 1.0.0-beta.2 resolution: "gensync@npm:1.0.0-beta.2" @@ -3825,6 +5440,27 @@ __metadata: languageName: node linkType: hard +"get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7, get-intrinsic@npm:^1.3.0": + version: 1.3.1 + resolution: "get-intrinsic@npm:1.3.1" + dependencies: + async-function: "npm:^1.0.0" + async-generator-function: "npm:^1.0.0" + call-bind-apply-helpers: "npm:^1.0.2" + es-define-property: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.1.1" + function-bind: "npm:^1.1.2" + generator-function: "npm:^2.0.0" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + hasown: "npm:^2.0.2" + math-intrinsics: "npm:^1.1.0" + checksum: 10c0/9f4ab0cf7efe0fd2c8185f52e6f637e708f3a112610c88869f8f041bb9ecc2ce44bf285dfdbdc6f4f7c277a5b88d8e94a432374d97cca22f3de7fc63795deb5d + languageName: node + linkType: hard + "get-package-type@npm:^0.1.0": version: 0.1.0 resolution: "get-package-type@npm:0.1.0" @@ -3839,6 +5475,16 @@ __metadata: languageName: node linkType: hard +"get-proto@npm:^1.0.0, get-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "get-proto@npm:1.0.1" + dependencies: + dunder-proto: "npm:^1.0.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/9224acb44603c5526955e83510b9da41baf6ae73f7398875fba50edc5e944223a89c4a72b070fcd78beb5f7bdda58ecb6294adc28f7acfc0da05f76a2399643c + languageName: node + linkType: hard + "get-stream@npm:^6.0.0": version: 6.0.1 resolution: "get-stream@npm:6.0.1" @@ -3846,6 +5492,26 @@ __metadata: languageName: node linkType: hard +"get-symbol-description@npm:^1.1.0": + version: 1.1.0 + resolution: "get-symbol-description@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" + checksum: 10c0/d6a7d6afca375779a4b307738c9e80dbf7afc0bdbe5948768d54ab9653c865523d8920e670991a925936eb524b7cb6a6361d199a760b21d0ca7620194455aa4b + languageName: node + linkType: hard + +"get-tsconfig@npm:^4.10.0": + version: 4.14.0 + resolution: "get-tsconfig@npm:4.14.0" + dependencies: + resolve-pkg-maps: "npm:^1.0.0" + checksum: 10c0/abc2b9275468eb589079a0b7a95eb5107c14fdd0ca6dda1bff116fe774ea1f79975421dcb22a0c86b4f820fcc69a7655dddf9b6d6a8a2c06fcb59e19794c0724 + languageName: node + linkType: hard + "get-tsconfig@npm:^4.7.5": version: 4.13.7 resolution: "get-tsconfig@npm:4.13.7" @@ -3871,6 +5537,15 @@ __metadata: languageName: node linkType: hard +"glob-parent@npm:^5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: "npm:^4.0.1" + checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee + languageName: node + linkType: hard + "glob-parent@npm:^6.0.2": version: 6.0.2 resolution: "glob-parent@npm:6.0.2" @@ -3921,6 +5596,37 @@ __metadata: languageName: node linkType: hard +"globals@npm:16.4.0": + version: 16.4.0 + resolution: "globals@npm:16.4.0" + checksum: 10c0/a14b447a78b664b42f6d324e8675fcae6fe5e57924fecc1f6328dce08af9b2ca3a3138501e1b1f244a49814a732dc60cfc1aa24e714e0b64ac8bd18910bfac90 + languageName: node + linkType: hard + +"globals@npm:^14.0.0": + version: 14.0.0 + resolution: "globals@npm:14.0.0" + checksum: 10c0/b96ff42620c9231ad468d4c58ff42afee7777ee1c963013ff8aabe095a451d0ceeb8dcd8ef4cbd64d2538cef45f787a78ba3a9574f4a634438963e334471302d + languageName: node + linkType: hard + +"globalthis@npm:^1.0.4": + version: 1.0.4 + resolution: "globalthis@npm:1.0.4" + dependencies: + define-properties: "npm:^1.2.1" + gopd: "npm:^1.0.1" + checksum: 10c0/9d156f313af79d80b1566b93e19285f481c591ad6d0d319b4be5e03750d004dde40a39a0f26f7e635f9007a3600802f53ecd85a759b86f109e80a5f705e01846 + languageName: node + linkType: hard + +"gopd@npm:^1.0.1, gopd@npm:^1.2.0": + version: 1.2.0 + resolution: "gopd@npm:1.2.0" + checksum: 10c0/50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead + languageName: node + linkType: hard + "graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" @@ -3960,6 +5666,13 @@ __metadata: languageName: node linkType: hard +"has-bigints@npm:^1.0.2": + version: 1.1.0 + resolution: "has-bigints@npm:1.1.0" + checksum: 10c0/2de0cdc4a1ccf7a1e75ffede1876994525ac03cc6f5ae7392d3415dd475cd9eee5bceec63669ab61aa997ff6cceebb50ef75561c7002bed8988de2b9d1b40788 + languageName: node + linkType: hard + "has-flag@npm:^4.0.0": version: 4.0.0 resolution: "has-flag@npm:4.0.0" @@ -3967,6 +5680,40 @@ __metadata: languageName: node linkType: hard +"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": + version: 1.0.2 + resolution: "has-property-descriptors@npm:1.0.2" + dependencies: + es-define-property: "npm:^1.0.0" + checksum: 10c0/253c1f59e80bb476cf0dde8ff5284505d90c3bdb762983c3514d36414290475fe3fd6f574929d84de2a8eec00d35cf07cb6776205ff32efd7c50719125f00236 + languageName: node + linkType: hard + +"has-proto@npm:^1.2.0": + version: 1.2.0 + resolution: "has-proto@npm:1.2.0" + dependencies: + dunder-proto: "npm:^1.0.0" + checksum: 10c0/46538dddab297ec2f43923c3d35237df45d8c55a6fc1067031e04c13ed8a9a8f94954460632fd4da84c31a1721eefee16d901cbb1ae9602bab93bb6e08f93b95 + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": + version: 1.1.0 + resolution: "has-symbols@npm:1.1.0" + checksum: 10c0/dde0a734b17ae51e84b10986e651c664379018d10b91b6b0e9b293eddb32f0f069688c841fb40f19e9611546130153e0a2a48fd7f512891fb000ddfa36f5a20e + languageName: node + linkType: hard + +"has-tostringtag@npm:^1.0.2": + version: 1.0.2 + resolution: "has-tostringtag@npm:1.0.2" + dependencies: + has-symbols: "npm:^1.0.3" + checksum: 10c0/a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c + languageName: node + linkType: hard + "has-unicode@npm:^2.0.1": version: 2.0.1 resolution: "has-unicode@npm:2.0.1" @@ -3974,6 +5721,31 @@ __metadata: languageName: node linkType: hard +"hasown@npm:^2.0.2": + version: 2.0.3 + resolution: "hasown@npm:2.0.3" + dependencies: + function-bind: "npm:^1.1.2" + checksum: 10c0/f5eb28c3fd0d3e4facd821c1eeee3836c37b70ab0b0fc532e8a39976e18fef43652415dadc52f8c7a5ff6d5ac93b7bef128789aa6f90f4e9b9a9083dce74ab38 + languageName: node + linkType: hard + +"hermes-estree@npm:0.25.1": + version: 0.25.1 + resolution: "hermes-estree@npm:0.25.1" + checksum: 10c0/48be3b2fa37a0cbc77a112a89096fa212f25d06de92781b163d67853d210a8a5c3784fac23d7d48335058f7ed283115c87b4332c2a2abaaccc76d0ead1a282ac + languageName: node + linkType: hard + +"hermes-parser@npm:^0.25.1": + version: 0.25.1 + resolution: "hermes-parser@npm:0.25.1" + dependencies: + hermes-estree: "npm:0.25.1" + checksum: 10c0/3abaa4c6f1bcc25273f267297a89a4904963ea29af19b8e4f6eabe04f1c2c7e9abd7bfc4730ddb1d58f2ea04b6fee74053d8bddb5656ec6ebf6c79cc8d14202c + languageName: node + linkType: hard + "hono@npm:^4.12.8": version: 4.12.9 resolution: "hono@npm:4.12.9" @@ -4071,6 +5843,16 @@ __metadata: languageName: node linkType: hard +"import-fresh@npm:^3.2.1": + version: 3.3.1 + resolution: "import-fresh@npm:3.3.1" + dependencies: + parent-module: "npm:^1.0.0" + resolve-from: "npm:^4.0.0" + checksum: 10c0/bf8cc494872fef783249709385ae883b447e3eb09db0ebd15dcead7d9afe7224dad7bd7591c6b73b0b19b3c0f9640eb8ee884f01cfaf2887ab995b0b36a0cbec + languageName: node + linkType: hard + "import-local@npm:^3.2.0": version: 3.2.0 resolution: "import-local@npm:3.2.0" @@ -4107,6 +5889,17 @@ __metadata: languageName: node linkType: hard +"internal-slot@npm:^1.1.0": + version: 1.1.0 + resolution: "internal-slot@npm:1.1.0" + dependencies: + es-errors: "npm:^1.3.0" + hasown: "npm:^2.0.2" + side-channel: "npm:^1.1.0" + checksum: 10c0/03966f5e259b009a9bf1a78d60da920df198af4318ec004f57b8aef1dd3fe377fbc8cce63a96e8c810010302654de89f9e19de1cd8ad0061d15be28a695465c7 + languageName: node + linkType: hard + "ip-address@npm:^10.0.1": version: 10.1.0 resolution: "ip-address@npm:10.1.0" @@ -4114,6 +5907,17 @@ __metadata: languageName: node linkType: hard +"is-array-buffer@npm:^3.0.4, is-array-buffer@npm:^3.0.5": + version: 3.0.5 + resolution: "is-array-buffer@npm:3.0.5" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.6" + checksum: 10c0/c5c9f25606e86dbb12e756694afbbff64bc8b348d1bc989324c037e1068695131930199d6ad381952715dad3a9569333817f0b1a72ce5af7f883ce802e49c83d + languageName: node + linkType: hard + "is-arrayish@npm:^0.2.1": version: 0.2.1 resolution: "is-arrayish@npm:0.2.1" @@ -4121,6 +5925,84 @@ __metadata: languageName: node linkType: hard +"is-async-function@npm:^2.0.0": + version: 2.1.1 + resolution: "is-async-function@npm:2.1.1" + dependencies: + async-function: "npm:^1.0.0" + call-bound: "npm:^1.0.3" + get-proto: "npm:^1.0.1" + has-tostringtag: "npm:^1.0.2" + safe-regex-test: "npm:^1.1.0" + checksum: 10c0/d70c236a5e82de6fc4d44368ffd0c2fee2b088b893511ce21e679da275a5ecc6015ff59a7d7e1bdd7ca39f71a8dbdd253cf8cce5c6b3c91cdd5b42b5ce677298 + languageName: node + linkType: hard + +"is-bigint@npm:^1.1.0": + version: 1.1.0 + resolution: "is-bigint@npm:1.1.0" + dependencies: + has-bigints: "npm:^1.0.2" + checksum: 10c0/f4f4b905ceb195be90a6ea7f34323bf1c18e3793f18922e3e9a73c684c29eeeeff5175605c3a3a74cc38185fe27758f07efba3dbae812e5c5afbc0d2316b40e4 + languageName: node + linkType: hard + +"is-boolean-object@npm:^1.2.1": + version: 1.2.2 + resolution: "is-boolean-object@npm:1.2.2" + dependencies: + call-bound: "npm:^1.0.3" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/36ff6baf6bd18b3130186990026f5a95c709345c39cd368468e6c1b6ab52201e9fd26d8e1f4c066357b4938b0f0401e1a5000e08257787c1a02f3a719457001e + languageName: node + linkType: hard + +"is-bun-module@npm:^2.0.0": + version: 2.0.0 + resolution: "is-bun-module@npm:2.0.0" + dependencies: + semver: "npm:^7.7.1" + checksum: 10c0/7d27a0679cfa5be1f5052650391f9b11040cd70c48d45112e312c56bc6b6ca9c9aea70dcce6cc40b1e8947bfff8567a5c5715d3b066fb478522dab46ea379240 + languageName: node + linkType: hard + +"is-callable@npm:^1.2.7": + version: 1.2.7 + resolution: "is-callable@npm:1.2.7" + checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f + languageName: node + linkType: hard + +"is-core-module@npm:^2.16.1": + version: 2.16.1 + resolution: "is-core-module@npm:2.16.1" + dependencies: + hasown: "npm:^2.0.2" + checksum: 10c0/898443c14780a577e807618aaae2b6f745c8538eca5c7bc11388a3f2dc6de82b9902bcc7eb74f07be672b11bbe82dd6a6edded44a00cb3d8f933d0459905eedd + languageName: node + linkType: hard + +"is-data-view@npm:^1.0.1, is-data-view@npm:^1.0.2": + version: 1.0.2 + resolution: "is-data-view@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.6" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/ef3548a99d7e7f1370ce21006baca6d40c73e9f15c941f89f0049c79714c873d03b02dae1c64b3f861f55163ecc16da06506c5b8a1d4f16650b3d9351c380153 + languageName: node + linkType: hard + +"is-date-object@npm:^1.0.5, is-date-object@npm:^1.1.0": + version: 1.1.0 + resolution: "is-date-object@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/1a4d199c8e9e9cac5128d32e6626fa7805175af9df015620ac0d5d45854ccf348ba494679d872d37301032e35a54fc7978fba1687e8721b2139aea7870cafa2f + languageName: node + linkType: hard + "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" @@ -4128,6 +6010,15 @@ __metadata: languageName: node linkType: hard +"is-finalizationregistry@npm:^1.1.0": + version: 1.1.1 + resolution: "is-finalizationregistry@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.3" + checksum: 10c0/818dff679b64f19e228a8205a1e2d09989a98e98def3a817f889208cfcbf918d321b251aadf2c05918194803ebd2eb01b14fc9d0b2bea53d984f4137bfca5e97 + languageName: node + linkType: hard + "is-fullwidth-code-point@npm:^3.0.0": version: 3.0.0 resolution: "is-fullwidth-code-point@npm:3.0.0" @@ -4142,7 +6033,20 @@ __metadata: languageName: node linkType: hard -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.3": +"is-generator-function@npm:^1.0.10": + version: 1.1.2 + resolution: "is-generator-function@npm:1.1.2" + dependencies: + call-bound: "npm:^1.0.4" + generator-function: "npm:^2.0.0" + get-proto: "npm:^1.0.1" + has-tostringtag: "npm:^1.0.2" + safe-regex-test: "npm:^1.1.0" + checksum: 10c0/83da102e89c3e3b71d67b51d47c9f9bc862bceb58f87201727e27f7fa19d1d90b0ab223644ecaee6fc6e3d2d622bb25c966fbdaf87c59158b01ce7c0fe2fa372 + languageName: node + linkType: hard + +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": version: 4.0.3 resolution: "is-glob@npm:4.0.3" dependencies: @@ -4151,6 +6055,37 @@ __metadata: languageName: node linkType: hard +"is-map@npm:^2.0.3": + version: 2.0.3 + resolution: "is-map@npm:2.0.3" + checksum: 10c0/2c4d431b74e00fdda7162cd8e4b763d6f6f217edf97d4f8538b94b8702b150610e2c64961340015fe8df5b1fcee33ccd2e9b62619c4a8a3a155f8de6d6d355fc + languageName: node + linkType: hard + +"is-negative-zero@npm:^2.0.3": + version: 2.0.3 + resolution: "is-negative-zero@npm:2.0.3" + checksum: 10c0/bcdcf6b8b9714063ffcfa9929c575ac69bfdabb8f4574ff557dfc086df2836cf07e3906f5bbc4f2a5c12f8f3ba56af640c843cdfc74da8caed86c7c7d66fd08e + languageName: node + linkType: hard + +"is-number-object@npm:^1.1.1": + version: 1.1.1 + resolution: "is-number-object@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.3" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/97b451b41f25135ff021d85c436ff0100d84a039bb87ffd799cbcdbea81ef30c464ced38258cdd34f080be08fc3b076ca1f472086286d2aa43521d6ec6a79f53 + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 + languageName: node + linkType: hard + "is-property@npm:^1.0.2": version: 1.0.2 resolution: "is-property@npm:1.0.2" @@ -4158,6 +6093,34 @@ __metadata: languageName: node linkType: hard +"is-regex@npm:^1.2.1": + version: 1.2.1 + resolution: "is-regex@npm:1.2.1" + dependencies: + call-bound: "npm:^1.0.2" + gopd: "npm:^1.2.0" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.2" + checksum: 10c0/1d3715d2b7889932349241680032e85d0b492cfcb045acb75ffc2c3085e8d561184f1f7e84b6f8321935b4aea39bc9c6ba74ed595b57ce4881a51dfdbc214e04 + languageName: node + linkType: hard + +"is-set@npm:^2.0.3": + version: 2.0.3 + resolution: "is-set@npm:2.0.3" + checksum: 10c0/f73732e13f099b2dc879c2a12341cfc22ccaca8dd504e6edae26484bd5707a35d503fba5b4daad530a9b088ced1ae6c9d8200fd92e09b428fe14ea79ce8080b7 + languageName: node + linkType: hard + +"is-shared-array-buffer@npm:^1.0.4": + version: 1.0.4 + resolution: "is-shared-array-buffer@npm:1.0.4" + dependencies: + call-bound: "npm:^1.0.3" + checksum: 10c0/65158c2feb41ff1edd6bbd6fd8403a69861cf273ff36077982b5d4d68e1d59278c71691216a4a64632bd76d4792d4d1d2553901b6666d84ade13bba5ea7bc7db + languageName: node + linkType: hard + "is-stream@npm:^2.0.0": version: 2.0.1 resolution: "is-stream@npm:2.0.1" @@ -4165,6 +6128,69 @@ __metadata: languageName: node linkType: hard +"is-string@npm:^1.1.1": + version: 1.1.1 + resolution: "is-string@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.3" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/2f518b4e47886bb81567faba6ffd0d8a8333cf84336e2e78bf160693972e32ad00fe84b0926491cc598dee576fdc55642c92e62d0cbe96bf36f643b6f956f94d + languageName: node + linkType: hard + +"is-symbol@npm:^1.0.4, is-symbol@npm:^1.1.1": + version: 1.1.1 + resolution: "is-symbol@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.2" + has-symbols: "npm:^1.1.0" + safe-regex-test: "npm:^1.1.0" + checksum: 10c0/f08f3e255c12442e833f75a9e2b84b2d4882fdfd920513cf2a4a2324f0a5b076c8fd913778e3ea5d258d5183e9d92c0cd20e04b03ab3df05316b049b2670af1e + languageName: node + linkType: hard + +"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.14, is-typed-array@npm:^1.1.15": + version: 1.1.15 + resolution: "is-typed-array@npm:1.1.15" + dependencies: + which-typed-array: "npm:^1.1.16" + checksum: 10c0/415511da3669e36e002820584e264997ffe277ff136643a3126cc949197e6ca3334d0f12d084e83b1994af2e9c8141275c741cf2b7da5a2ff62dd0cac26f76c4 + languageName: node + linkType: hard + +"is-weakmap@npm:^2.0.2": + version: 2.0.2 + resolution: "is-weakmap@npm:2.0.2" + checksum: 10c0/443c35bb86d5e6cc5929cd9c75a4024bb0fff9586ed50b092f94e700b89c43a33b186b76dbc6d54f3d3d09ece689ab38dcdc1af6a482cbe79c0f2da0a17f1299 + languageName: node + linkType: hard + +"is-weakref@npm:^1.0.2, is-weakref@npm:^1.1.1": + version: 1.1.1 + resolution: "is-weakref@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.3" + checksum: 10c0/8e0a9c07b0c780949a100e2cab2b5560a48ecd4c61726923c1a9b77b6ab0aa0046c9e7fb2206042296817045376dee2c8ab1dabe08c7c3dfbf195b01275a085b + languageName: node + linkType: hard + +"is-weakset@npm:^2.0.3": + version: 2.0.4 + resolution: "is-weakset@npm:2.0.4" + dependencies: + call-bound: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.6" + checksum: 10c0/6491eba08acb8dc9532da23cb226b7d0192ede0b88f16199e592e4769db0a077119c1f5d2283d1e0d16d739115f70046e887e477eb0e66cd90e1bb29f28ba647 + languageName: node + linkType: hard + +"isarray@npm:^2.0.5": + version: 2.0.5 + resolution: "isarray@npm:2.0.5" + checksum: 10c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd + languageName: node + linkType: hard + "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" @@ -4231,6 +6257,20 @@ __metadata: languageName: node linkType: hard +"iterator.prototype@npm:^1.1.5": + version: 1.1.5 + resolution: "iterator.prototype@npm:1.1.5" + dependencies: + define-data-property: "npm:^1.1.4" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.6" + get-proto: "npm:^1.0.0" + has-symbols: "npm:^1.1.0" + set-function-name: "npm:^2.0.2" + checksum: 10c0/f7a262808e1b41049ab55f1e9c29af7ec1025a000d243b83edf34ce2416eedd56079b117fa59376bb4a724110690f13aa8427f2ee29a09eec63a7e72367626d0 + languageName: node + linkType: hard + "jackspeak@npm:^3.1.2": version: 3.4.3 resolution: "jackspeak@npm:3.4.3" @@ -4681,7 +6721,7 @@ __metadata: languageName: node linkType: hard -"jiti@npm:^2.4.2": +"jiti@npm:^2.4.2, jiti@npm:^2.6.1": version: 2.6.1 resolution: "jiti@npm:2.6.1" bin: @@ -4690,7 +6730,7 @@ __metadata: languageName: node linkType: hard -"js-tokens@npm:^4.0.0": +"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": version: 4.0.0 resolution: "js-tokens@npm:4.0.0" checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed @@ -4709,6 +6749,17 @@ __metadata: languageName: node linkType: hard +"js-yaml@npm:^4.1.1": + version: 4.1.1 + resolution: "js-yaml@npm:4.1.1" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/561c7d7088c40a9bb53cc75becbfb1df6ae49b34b5e6e5a81744b14ae8667ec564ad2527709d1a6e7d5e5fa6d483aa0f373a50ad98d42fde368ec4a190d4fae7 + languageName: node + linkType: hard + "jsesc@npm:^3.0.2": version: 3.1.0 resolution: "jsesc@npm:3.1.0" @@ -4753,6 +6804,17 @@ __metadata: languageName: node linkType: hard +"json5@npm:^1.0.2": + version: 1.0.2 + resolution: "json5@npm:1.0.2" + dependencies: + minimist: "npm:^1.2.0" + bin: + json5: lib/cli.js + checksum: 10c0/9ee316bf21f000b00752e6c2a3b79ecf5324515a5c60ee88983a1910a45426b643a4f3461657586e8aeca87aaf96f0a519b0516d2ae527a6c3e7eed80f68717f + languageName: node + linkType: hard + "json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" @@ -4774,6 +6836,18 @@ __metadata: languageName: node linkType: hard +"jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.5": + version: 3.3.5 + resolution: "jsx-ast-utils@npm:3.3.5" + dependencies: + array-includes: "npm:^3.1.6" + array.prototype.flat: "npm:^1.3.1" + object.assign: "npm:^4.1.4" + object.values: "npm:^1.1.6" + checksum: 10c0/a32679e9cb55469cb6d8bbc863f7d631b2c98b7fc7bf172629261751a6e7bc8da6ae374ddb74d5fbd8b06cf0eb4572287b259813d92b36e384024ed35e4c13e1 + languageName: node + linkType: hard + "keyv@npm:^4.5.4": version: 4.5.4 resolution: "keyv@npm:4.5.4" @@ -4783,38 +6857,35 @@ __metadata: languageName: node linkType: hard -"kord@workspace:.": +"kord-monorepo@workspace:.": version: 0.0.0-use.local - resolution: "kord@workspace:." + resolution: "kord-monorepo@workspace:." dependencies: - "@discordjs/opus": "npm:^0.10.0" - "@discordjs/voice": "npm:^0.19.2" - "@prisma/adapter-pg": "npm:^7.6.0" - "@prisma/client": "npm:^7.6.0" - "@prisma/config": "npm:^7.6.0" - "@types/jest": "npm:^30.0.0" - "@types/node": "npm:^25.5.0" - "@types/pg": "npm:^8.20.0" "@typescript-eslint/eslint-plugin": "npm:^8.57.2" "@typescript-eslint/parser": "npm:^8.57.2" - discord.js: "npm:^14.25.1" - dotenv: "npm:^17.3.1" eslint: "npm:^10.1.0" - ffmpeg-static: "npm:^5.3.0" - jest: "npm:^30.3.0" - log4js: "npm:^6.9.1" - pg: "npm:^8.20.0" prettier: "npm:^3.8.1" - prism-media: "npm:^1.3.5" - prisma: "npm:^7.6.0" - sharp: "npm:^0.34.5" - ts-jest: "npm:^29.4.6" - tsx: "npm:^4.21.0" + turbo: "npm:^2.3.3" typescript: "npm:^6.0.2" - youtubei.js: "npm:^17.0.1" languageName: unknown linkType: soft +"language-subtag-registry@npm:^0.3.20": + version: 0.3.23 + resolution: "language-subtag-registry@npm:0.3.23" + checksum: 10c0/e9b05190421d2cd36dd6c95c28673019c927947cb6d94f40ba7e77a838629ee9675c94accf897fbebb07923187deb843b8fbb8935762df6edafe6c28dcb0b86c + languageName: node + linkType: hard + +"language-tags@npm:^1.0.9": + version: 1.0.9 + resolution: "language-tags@npm:1.0.9" + dependencies: + language-subtag-registry: "npm:^0.3.20" + checksum: 10c0/9ab911213c4bd8bd583c850201c17794e52cb0660d1ab6e32558aadc8324abebf6844e46f92b80a5d600d0fbba7eface2c207bfaf270a1c7fd539e4c3a880bff + languageName: node + linkType: hard + "leven@npm:^3.1.0": version: 3.1.0 resolution: "leven@npm:3.1.0" @@ -4832,6 +6903,126 @@ __metadata: languageName: node linkType: hard +"lightningcss-android-arm64@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-android-arm64@npm:1.32.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"lightningcss-darwin-arm64@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-darwin-arm64@npm:1.32.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"lightningcss-darwin-x64@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-darwin-x64@npm:1.32.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"lightningcss-freebsd-x64@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-freebsd-x64@npm:1.32.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"lightningcss-linux-arm-gnueabihf@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-linux-arm-gnueabihf@npm:1.32.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"lightningcss-linux-arm64-gnu@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-linux-arm64-gnu@npm:1.32.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"lightningcss-linux-arm64-musl@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-linux-arm64-musl@npm:1.32.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"lightningcss-linux-x64-gnu@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-linux-x64-gnu@npm:1.32.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"lightningcss-linux-x64-musl@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-linux-x64-musl@npm:1.32.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"lightningcss-win32-arm64-msvc@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-win32-arm64-msvc@npm:1.32.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"lightningcss-win32-x64-msvc@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-win32-x64-msvc@npm:1.32.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"lightningcss@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss@npm:1.32.0" + dependencies: + detect-libc: "npm:^2.0.3" + lightningcss-android-arm64: "npm:1.32.0" + lightningcss-darwin-arm64: "npm:1.32.0" + lightningcss-darwin-x64: "npm:1.32.0" + lightningcss-freebsd-x64: "npm:1.32.0" + lightningcss-linux-arm-gnueabihf: "npm:1.32.0" + lightningcss-linux-arm64-gnu: "npm:1.32.0" + lightningcss-linux-arm64-musl: "npm:1.32.0" + lightningcss-linux-x64-gnu: "npm:1.32.0" + lightningcss-linux-x64-musl: "npm:1.32.0" + lightningcss-win32-arm64-msvc: "npm:1.32.0" + lightningcss-win32-x64-msvc: "npm:1.32.0" + dependenciesMeta: + lightningcss-android-arm64: + optional: true + lightningcss-darwin-arm64: + optional: true + lightningcss-darwin-x64: + optional: true + lightningcss-freebsd-x64: + optional: true + lightningcss-linux-arm-gnueabihf: + optional: true + lightningcss-linux-arm64-gnu: + optional: true + lightningcss-linux-arm64-musl: + optional: true + lightningcss-linux-x64-gnu: + optional: true + lightningcss-linux-x64-musl: + optional: true + lightningcss-win32-arm64-msvc: + optional: true + lightningcss-win32-x64-msvc: + optional: true + checksum: 10c0/70945bd55097af46fc9fab7f5ed09cd5869d85940a2acab7ee06d0117004a1d68155708a2d462531cea2fc3c67aefc9333a7068c80b0b78dd404c16838809e03 + languageName: node + linkType: hard + "lines-and-columns@npm:^1.1.6": version: 1.2.4 resolution: "lines-and-columns@npm:1.2.4" @@ -4857,6 +7048,13 @@ __metadata: languageName: node linkType: hard +"lodash.camelcase@npm:^4.3.0": + version: 4.3.0 + resolution: "lodash.camelcase@npm:4.3.0" + checksum: 10c0/fcba15d21a458076dd309fce6b1b4bf611d84a0ec252cb92447c948c533ac250b95d2e00955801ebc367e5af5ed288b996d75d37d2035260a937008e14eaf432 + languageName: node + linkType: hard + "lodash.memoize@npm:^4.1.2": version: 4.1.2 resolution: "lodash.memoize@npm:4.1.2" @@ -4864,6 +7062,13 @@ __metadata: languageName: node linkType: hard +"lodash.merge@npm:^4.6.2": + version: 4.6.2 + resolution: "lodash.merge@npm:4.6.2" + checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 + languageName: node + linkType: hard + "lodash.snakecase@npm:4.1.1": version: 4.1.1 resolution: "lodash.snakecase@npm:4.1.1" @@ -4891,13 +7096,24 @@ __metadata: languageName: node linkType: hard -"long@npm:^5.2.1": +"long@npm:^5.0.0, long@npm:^5.2.1": version: 5.3.2 resolution: "long@npm:5.3.2" checksum: 10c0/7130fe1cbce2dca06734b35b70d380ca3f70271c7f8852c922a7c62c86c4e35f0c39290565eca7133c625908d40e126ac57c02b1b1a4636b9457d77e1e60b981 languageName: node linkType: hard +"loose-envify@npm:^1.4.0": + version: 1.4.0 + resolution: "loose-envify@npm:1.4.0" + dependencies: + js-tokens: "npm:^3.0.0 || ^4.0.0" + bin: + loose-envify: cli.js + checksum: 10c0/655d110220983c1a4b9c0c679a2e8016d4b67f6e9c7b5435ff5979ecdb20d0813f4dec0a08674fcbdd4846a3f07edbb50a36811fd37930b94aaa0d9daceb017e + languageName: node + linkType: hard + "lru-cache@npm:^10.2.0": version: 10.4.3 resolution: "lru-cache@npm:10.4.3" @@ -4928,6 +7144,15 @@ __metadata: languageName: node linkType: hard +"lucide-react@npm:^1.8.0": + version: 1.8.0 + resolution: "lucide-react@npm:1.8.0" + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10c0/f7398f89a0f5b2cbfd1b7a7f6b2f00b0abd05d4b21d948bbd281ab141c42cdff9f1d2aed4e32b78b4bbdfa78308b6577705698af8bf9945bad23ed7d56e255b4 + languageName: node + linkType: hard + "magic-bytes.js@npm:^1.10.0, magic-bytes.js@npm:^1.13.0": version: 1.13.0 resolution: "magic-bytes.js@npm:1.13.0" @@ -4935,6 +7160,15 @@ __metadata: languageName: node linkType: hard +"magic-string@npm:^0.30.21": + version: 0.30.21 + resolution: "magic-string@npm:0.30.21" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.5.5" + checksum: 10c0/299378e38f9a270069fc62358522ddfb44e94244baa0d6a8980ab2a9b2490a1d03b236b447eee309e17eb3bddfa482c61259d47960eb018a904f0ded52780c4a + languageName: node + linkType: hard + "make-dir@npm:^3.1.0": version: 3.1.0 resolution: "make-dir@npm:3.1.0" @@ -4989,6 +7223,13 @@ __metadata: languageName: node linkType: hard +"math-intrinsics@npm:^1.1.0": + version: 1.1.0 + resolution: "math-intrinsics@npm:1.1.0" + checksum: 10c0/7579ff94e899e2f76ab64491d76cf606274c874d8f2af4a442c016bd85688927fcfca157ba6bf74b08e9439dc010b248ce05b96cc7c126a354c3bae7fcb48b7f + languageName: node + linkType: hard + "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" @@ -4996,6 +7237,13 @@ __metadata: languageName: node linkType: hard +"merge2@npm:^1.3.0": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb + languageName: node + linkType: hard + "meriyah@npm:^6.1.4": version: 6.1.4 resolution: "meriyah@npm:6.1.4" @@ -5003,6 +7251,16 @@ __metadata: languageName: node linkType: hard +"micromatch@npm:^4.0.4": + version: 4.0.8 + resolution: "micromatch@npm:4.0.8" + dependencies: + braces: "npm:^3.0.3" + picomatch: "npm:^2.3.1" + checksum: 10c0/166fa6eb926b9553f32ef81f5f531d27b4ce7da60e5baf8c021d043b27a388fb95e46a8038d5045877881e673f8134122b59624d5cecbd16eb50a42e7a6b5ca8 + languageName: node + linkType: hard + "mimic-fn@npm:^2.1.0": version: 2.1.0 resolution: "mimic-fn@npm:2.1.0" @@ -5019,7 +7277,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1": +"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2, minimatch@npm:^3.1.5": version: 3.1.5 resolution: "minimatch@npm:3.1.5" dependencies: @@ -5037,7 +7295,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.2.5": +"minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 @@ -5146,7 +7404,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:^2.1.3": +"ms@npm:^2.1.1, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 @@ -5179,6 +7437,15 @@ __metadata: languageName: node linkType: hard +"nanoid@npm:^3.3.11, nanoid@npm:^3.3.6": + version: 3.3.11 + resolution: "nanoid@npm:3.3.11" + bin: + nanoid: bin/nanoid.cjs + checksum: 10c0/40e7f70b3d15f725ca072dfc4f74e81fcf1fbb02e491cf58ac0c79093adc9b0a73b152bcde57df4b79cd097e13023d7504acb38404a4da7bc1cd8e887b82fe0b + languageName: node + linkType: hard + "napi-postinstall@npm:^0.3.0": version: 0.3.4 resolution: "napi-postinstall@npm:0.3.4" @@ -5209,6 +7476,66 @@ __metadata: languageName: node linkType: hard +"next@npm:16.2.4": + version: 16.2.4 + resolution: "next@npm:16.2.4" + dependencies: + "@next/env": "npm:16.2.4" + "@next/swc-darwin-arm64": "npm:16.2.4" + "@next/swc-darwin-x64": "npm:16.2.4" + "@next/swc-linux-arm64-gnu": "npm:16.2.4" + "@next/swc-linux-arm64-musl": "npm:16.2.4" + "@next/swc-linux-x64-gnu": "npm:16.2.4" + "@next/swc-linux-x64-musl": "npm:16.2.4" + "@next/swc-win32-arm64-msvc": "npm:16.2.4" + "@next/swc-win32-x64-msvc": "npm:16.2.4" + "@swc/helpers": "npm:0.5.15" + baseline-browser-mapping: "npm:^2.9.19" + caniuse-lite: "npm:^1.0.30001579" + postcss: "npm:8.4.31" + sharp: "npm:^0.34.5" + styled-jsx: "npm:5.1.6" + peerDependencies: + "@opentelemetry/api": ^1.1.0 + "@playwright/test": ^1.51.1 + babel-plugin-react-compiler: "*" + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + sass: ^1.3.0 + dependenciesMeta: + "@next/swc-darwin-arm64": + optional: true + "@next/swc-darwin-x64": + optional: true + "@next/swc-linux-arm64-gnu": + optional: true + "@next/swc-linux-arm64-musl": + optional: true + "@next/swc-linux-x64-gnu": + optional: true + "@next/swc-linux-x64-musl": + optional: true + "@next/swc-win32-arm64-msvc": + optional: true + "@next/swc-win32-x64-msvc": + optional: true + sharp: + optional: true + peerDependenciesMeta: + "@opentelemetry/api": + optional: true + "@playwright/test": + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + bin: + next: dist/bin/next + checksum: 10c0/81dc1ef30141891dc5cc999a0a6210c68305b585b3a7508799767572a9fb7e4c7dcb5a50f5fa3fabadf6a46c2273405360b1d6f17f89edd891da1746ae31c186 + languageName: node + linkType: hard + "node-addon-api@npm:^8.1.0": version: 8.7.0 resolution: "node-addon-api@npm:8.7.0" @@ -5218,6 +7545,18 @@ __metadata: languageName: node linkType: hard +"node-exports-info@npm:^1.6.0": + version: 1.6.0 + resolution: "node-exports-info@npm:1.6.0" + dependencies: + array.prototype.flatmap: "npm:^1.3.3" + es-errors: "npm:^1.3.0" + object.entries: "npm:^1.1.9" + semver: "npm:^6.3.1" + checksum: 10c0/3613f21c60b047e66f168d3499a6be0060d89fb01ddceaa7032c2fb318aff12e4b9b111449c1a9aeb3b848bfdc1d4b6bc8fab327af692319597d21a1e7063692 + languageName: node + linkType: hard + "node-fetch-native@npm:^1.6.6": version: 1.6.7 resolution: "node-fetch-native@npm:1.6.7" @@ -5343,6 +7682,81 @@ __metadata: languageName: node linkType: hard +"object-inspect@npm:^1.13.3, object-inspect@npm:^1.13.4": + version: 1.13.4 + resolution: "object-inspect@npm:1.13.4" + checksum: 10c0/d7f8711e803b96ea3191c745d6f8056ce1f2496e530e6a19a0e92d89b0fa3c76d910c31f0aa270432db6bd3b2f85500a376a83aaba849a8d518c8845b3211692 + languageName: node + linkType: hard + +"object-keys@npm:^1.1.1": + version: 1.1.1 + resolution: "object-keys@npm:1.1.1" + checksum: 10c0/b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d + languageName: node + linkType: hard + +"object.assign@npm:^4.1.4, object.assign@npm:^4.1.7": + version: 4.1.7 + resolution: "object.assign@npm:4.1.7" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + has-symbols: "npm:^1.1.0" + object-keys: "npm:^1.1.1" + checksum: 10c0/3b2732bd860567ea2579d1567525168de925a8d852638612846bd8082b3a1602b7b89b67b09913cbb5b9bd6e95923b2ae73580baa9d99cb4e990564e8cbf5ddc + languageName: node + linkType: hard + +"object.entries@npm:^1.1.9": + version: 1.1.9 + resolution: "object.entries@npm:1.1.9" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.1.1" + checksum: 10c0/d4b8c1e586650407da03370845f029aa14076caca4e4d4afadbc69cfb5b78035fd3ee7be417141abdb0258fa142e59b11923b4c44d8b1255b28f5ffcc50da7db + languageName: node + linkType: hard + +"object.fromentries@npm:^2.0.8": + version: 2.0.8 + resolution: "object.fromentries@npm:2.0.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/cd4327e6c3369cfa805deb4cbbe919bfb7d3aeebf0bcaba291bb568ea7169f8f8cdbcabe2f00b40db0c20cd20f08e11b5f3a5a36fb7dd3fe04850c50db3bf83b + languageName: node + linkType: hard + +"object.groupby@npm:^1.0.3": + version: 1.0.3 + resolution: "object.groupby@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + checksum: 10c0/60d0455c85c736fbfeda0217d1a77525956f76f7b2495edeca9e9bbf8168a45783199e77b894d30638837c654d0cc410e0e02cbfcf445bc8de71c3da1ede6a9c + languageName: node + linkType: hard + +"object.values@npm:^1.1.6, object.values@npm:^1.2.1": + version: 1.2.1 + resolution: "object.values@npm:1.2.1" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/3c47814fdc64842ae3d5a74bc9d06bdd8d21563c04d9939bf6716a9c00596a4ebc342552f8934013d1ec991c74e3671b26710a0c51815f0b603795605ab6b2c9 + languageName: node + linkType: hard + "ohash@npm:^2.0.11": version: 2.0.11 resolution: "ohash@npm:2.0.11" @@ -5382,6 +7796,17 @@ __metadata: languageName: node linkType: hard +"own-keys@npm:^1.0.1": + version: 1.0.1 + resolution: "own-keys@npm:1.0.1" + dependencies: + get-intrinsic: "npm:^1.2.6" + object-keys: "npm:^1.1.1" + safe-push-apply: "npm:^1.0.0" + checksum: 10c0/6dfeb3455bff92ec3f16a982d4e3e65676345f6902d9f5ded1d8265a6318d0200ce461956d6d1c70053c7fe9f9fe65e552faac03f8140d37ef0fdd108e67013a + languageName: node + linkType: hard + "p-limit@npm:^2.2.0": version: 2.3.0 resolution: "p-limit@npm:2.3.0" @@ -5439,6 +7864,15 @@ __metadata: languageName: node linkType: hard +"parent-module@npm:^1.0.0": + version: 1.0.1 + resolution: "parent-module@npm:1.0.1" + dependencies: + callsites: "npm:^3.0.0" + checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 + languageName: node + linkType: hard + "parse-cache-control@npm:^1.0.1": version: 1.0.1 resolution: "parse-cache-control@npm:1.0.1" @@ -5479,6 +7913,13 @@ __metadata: languageName: node linkType: hard +"path-parse@npm:^1.0.7": + version: 1.0.7 + resolution: "path-parse@npm:1.0.7" + checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 + languageName: node + linkType: hard + "path-scurry@npm:^1.11.1": version: 1.11.1 resolution: "path-scurry@npm:1.11.1" @@ -5601,14 +8042,14 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^2.0.4": +"picomatch@npm:^2.0.4, picomatch@npm:^2.3.1": version: 2.3.2 resolution: "picomatch@npm:2.3.2" checksum: 10c0/a554d1709e59be97d1acb9eaedbbc700a5c03dbd4579807baed95100b00420bc729335440ef15004ae2378984e2487a7c1cebd743cfdb72b6fa9ab69223c0d61 languageName: node linkType: hard -"picomatch@npm:^4.0.3": +"picomatch@npm:^4.0.3, picomatch@npm:^4.0.4": version: 4.0.4 resolution: "picomatch@npm:4.0.4" checksum: 10c0/e2c6023372cc7b5764719a5ffb9da0f8e781212fa7ca4bd0562db929df8e117460f00dff3cb7509dacfc06b86de924b247f504d0ce1806a37fac4633081466b0 @@ -5642,6 +8083,35 @@ __metadata: languageName: node linkType: hard +"possible-typed-array-names@npm:^1.0.0": + version: 1.1.0 + resolution: "possible-typed-array-names@npm:1.1.0" + checksum: 10c0/c810983414142071da1d644662ce4caebce890203eb2bc7bf119f37f3fe5796226e117e6cca146b521921fa6531072674174a3325066ac66fce089a53e1e5196 + languageName: node + linkType: hard + +"postcss@npm:8.4.31": + version: 8.4.31 + resolution: "postcss@npm:8.4.31" + dependencies: + nanoid: "npm:^3.3.6" + picocolors: "npm:^1.0.0" + source-map-js: "npm:^1.0.2" + checksum: 10c0/748b82e6e5fc34034dcf2ae88ea3d11fd09f69b6c50ecdd3b4a875cfc7cdca435c958b211e2cb52355422ab6fccb7d8f2f2923161d7a1b281029e4a913d59acf + languageName: node + linkType: hard + +"postcss@npm:^8.5.6": + version: 8.5.10 + resolution: "postcss@npm:8.5.10" + dependencies: + nanoid: "npm:^3.3.11" + picocolors: "npm:^1.1.1" + source-map-js: "npm:^1.2.1" + checksum: 10c0/c592dffa0c4873b401f01955b265538d9942f425040df5e2b8f0ad34c83773a792ea0fa5859ccc99cfb5b955b4ebff118ab7056315388dc83b107b0fa8313576 + languageName: node + linkType: hard + "postgres-array@npm:3.0.4": version: 3.0.4 resolution: "postgres-array@npm:3.0.4" @@ -5772,6 +8242,17 @@ __metadata: languageName: node linkType: hard +"prop-types@npm:^15.8.1": + version: 15.8.1 + resolution: "prop-types@npm:15.8.1" + dependencies: + loose-envify: "npm:^1.4.0" + object-assign: "npm:^4.1.1" + react-is: "npm:^16.13.1" + checksum: 10c0/59ece7ca2fb9838031d73a48d4becb9a7cc1ed10e610517c7d8f19a1e02fa47f7c27d557d8a5702bec3cfeccddc853579832b43f449e54635803f277b1c78077 + languageName: node + linkType: hard + "proper-lockfile@npm:4.1.2, proper-lockfile@npm:^4.1.2": version: 4.1.2 resolution: "proper-lockfile@npm:4.1.2" @@ -5783,6 +8264,26 @@ __metadata: languageName: node linkType: hard +"protobufjs@npm:^7.2.5, protobufjs@npm:^7.5.3": + version: 7.5.5 + resolution: "protobufjs@npm:7.5.5" + dependencies: + "@protobufjs/aspromise": "npm:^1.1.2" + "@protobufjs/base64": "npm:^1.1.2" + "@protobufjs/codegen": "npm:^2.0.4" + "@protobufjs/eventemitter": "npm:^1.1.0" + "@protobufjs/fetch": "npm:^1.1.0" + "@protobufjs/float": "npm:^1.0.2" + "@protobufjs/inquire": "npm:^1.1.0" + "@protobufjs/path": "npm:^1.1.2" + "@protobufjs/pool": "npm:^1.1.0" + "@protobufjs/utf8": "npm:^1.1.0" + "@types/node": "npm:>=13.7.0" + long: "npm:^5.0.0" + checksum: 10c0/3d48896a916761e3e60b52f80027eb4fba3f5a6e3f8461e04939db18812db2cb0db4c73d03e1134a960e99525ae1d236f076a0bc01273016f573b76f33ffbd47 + languageName: node + linkType: hard + "punycode@npm:^2.1.0": version: 2.3.1 resolution: "punycode@npm:2.3.1" @@ -5804,6 +8305,13 @@ __metadata: languageName: node linkType: hard +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 + languageName: node + linkType: hard + "rc9@npm:^2.1.2": version: 2.1.2 resolution: "rc9@npm:2.1.2" @@ -5814,6 +8322,24 @@ __metadata: languageName: node linkType: hard +"react-dom@npm:19.2.4": + version: 19.2.4 + resolution: "react-dom@npm:19.2.4" + dependencies: + scheduler: "npm:^0.27.0" + peerDependencies: + react: ^19.2.4 + checksum: 10c0/f0c63f1794dedb154136d4d0f59af00b41907f4859571c155940296808f4b94bf9c0c20633db75b5b2112ec13d8d7dd4f9bf57362ed48782f317b11d05a44f35 + languageName: node + linkType: hard + +"react-is@npm:^16.13.1": + version: 16.13.1 + resolution: "react-is@npm:16.13.1" + checksum: 10c0/33977da7a5f1a287936a0c85639fec6ca74f4f15ef1e59a6bc20338fc73dc69555381e211f7a3529b8150a1f71e4225525b41b60b52965bda53ce7d47377ada1 + languageName: node + linkType: hard + "react-is@npm:^18.3.1": version: 18.3.1 resolution: "react-is@npm:18.3.1" @@ -5821,6 +8347,13 @@ __metadata: languageName: node linkType: hard +"react@npm:19.2.4": + version: 19.2.4 + resolution: "react@npm:19.2.4" + checksum: 10c0/cd2c9ff67a720799cc3b38a516009986f7fc4cb8d3e15716c6211cf098d1357ee3e348ab05ad0600042bbb0fd888530ba92e329198c92eafa0994f5213396596 + languageName: node + linkType: hard + "readable-stream@npm:^3.0.2, readable-stream@npm:^3.6.0": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" @@ -5839,6 +8372,36 @@ __metadata: languageName: node linkType: hard +"reflect.getprototypeof@npm:^1.0.6, reflect.getprototypeof@npm:^1.0.9": + version: 1.0.10 + resolution: "reflect.getprototypeof@npm:1.0.10" + dependencies: + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.9" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.7" + get-proto: "npm:^1.0.1" + which-builtin-type: "npm:^1.2.1" + checksum: 10c0/7facec28c8008876f8ab98e80b7b9cb4b1e9224353fd4756dda5f2a4ab0d30fa0a5074777c6df24e1e0af463a2697513b0a11e548d99cf52f21f7bc6ba48d3ac + languageName: node + linkType: hard + +"regexp.prototype.flags@npm:^1.5.3, regexp.prototype.flags@npm:^1.5.4": + version: 1.5.4 + resolution: "regexp.prototype.flags@npm:1.5.4" + dependencies: + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-errors: "npm:^1.3.0" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + set-function-name: "npm:^2.0.2" + checksum: 10c0/83b88e6115b4af1c537f8dabf5c3744032cb875d63bc05c288b1b8c0ef37cbe55353f95d8ca817e8843806e3e150b118bc624e4279b24b4776b4198232735a77 + languageName: node + linkType: hard + "remeda@npm:2.33.4": version: 2.33.4 resolution: "remeda@npm:2.33.4" @@ -5869,6 +8432,13 @@ __metadata: languageName: node linkType: hard +"resolve-from@npm:^4.0.0": + version: 4.0.0 + resolution: "resolve-from@npm:4.0.0" + checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 + languageName: node + linkType: hard + "resolve-from@npm:^5.0.0": version: 5.0.0 resolution: "resolve-from@npm:5.0.0" @@ -5883,6 +8453,38 @@ __metadata: languageName: node linkType: hard +"resolve@npm:^2.0.0-next.5, resolve@npm:^2.0.0-next.6": + version: 2.0.0-next.6 + resolution: "resolve@npm:2.0.0-next.6" + dependencies: + es-errors: "npm:^1.3.0" + is-core-module: "npm:^2.16.1" + node-exports-info: "npm:^1.6.0" + object-keys: "npm:^1.1.1" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/4e44cb84aa9a3c7c82d4a98e8111879671150496160a53ca6cdbed6101bf239f19105f8b8b84e40c0b76d46b0d9626813510b19a80e01f4ae18692e9d0b47749 + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A^2.0.0-next.5#optional!builtin, resolve@patch:resolve@npm%3A^2.0.0-next.6#optional!builtin": + version: 2.0.0-next.6 + resolution: "resolve@patch:resolve@npm%3A2.0.0-next.6#optional!builtin::version=2.0.0-next.6&hash=c3c19d" + dependencies: + es-errors: "npm:^1.3.0" + is-core-module: "npm:^2.16.1" + node-exports-info: "npm:^1.6.0" + object-keys: "npm:^1.1.1" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/dca533e38820b0d8d636f269824cef3b7435802ab7401211c6f10af03be0e2f7e216047234e1623046c0a6791577079767e0c04f0d36e42c7f567b1bff7b0742 + languageName: node + linkType: hard + "retry@npm:^0.12.0": version: 0.12.0 resolution: "retry@npm:0.12.0" @@ -5890,6 +8492,13 @@ __metadata: languageName: node linkType: hard +"reusify@npm:^1.0.4": + version: 1.1.0 + resolution: "reusify@npm:1.1.0" + checksum: 10c0/4eff0d4a5f9383566c7d7ec437b671cc51b25963bd61bf127c3f3d3f68e44a026d99b8d2f1ad344afff8d278a8fe70a8ea092650a716d22287e8bef7126bb2fa + languageName: node + linkType: hard + "rfdc@npm:^1.3.0": version: 1.4.1 resolution: "rfdc@npm:1.4.1" @@ -5908,6 +8517,28 @@ __metadata: languageName: node linkType: hard +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: "npm:^1.2.2" + checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 + languageName: node + linkType: hard + +"safe-array-concat@npm:^1.1.3": + version: 1.1.3 + resolution: "safe-array-concat@npm:1.1.3" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.6" + has-symbols: "npm:^1.1.0" + isarray: "npm:^2.0.5" + checksum: 10c0/43c86ffdddc461fb17ff8a17c5324f392f4868f3c7dd2c6a5d9f5971713bc5fd755667212c80eab9567595f9a7509cc2f83e590ddaebd1bd19b780f9c79f9a8d + languageName: node + linkType: hard + "safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" @@ -5915,6 +8546,27 @@ __metadata: languageName: node linkType: hard +"safe-push-apply@npm:^1.0.0": + version: 1.0.0 + resolution: "safe-push-apply@npm:1.0.0" + dependencies: + es-errors: "npm:^1.3.0" + isarray: "npm:^2.0.5" + checksum: 10c0/831f1c9aae7436429e7862c7e46f847dfe490afac20d0ee61bae06108dbf5c745a0de3568ada30ccdd3eeb0864ca8331b2eef703abd69bfea0745b21fd320750 + languageName: node + linkType: hard + +"safe-regex-test@npm:^1.0.3, safe-regex-test@npm:^1.1.0": + version: 1.1.0 + resolution: "safe-regex-test@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + is-regex: "npm:^1.2.1" + checksum: 10c0/f2c25281bbe5d39cddbbce7f86fca5ea9b3ce3354ea6cd7c81c31b006a5a9fff4286acc5450a3b9122c56c33eba69c56b9131ad751457b2b4a585825e6a10665 + languageName: node + linkType: hard + "safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" @@ -5922,6 +8574,13 @@ __metadata: languageName: node linkType: hard +"scheduler@npm:^0.27.0": + version: 0.27.0 + resolution: "scheduler@npm:0.27.0" + checksum: 10c0/4f03048cb05a3c8fddc45813052251eca00688f413a3cee236d984a161da28db28ba71bd11e7a3dd02f7af84ab28d39fb311431d3b3772fed557945beb00c452 + languageName: node + linkType: hard + "semver@npm:^6.0.0, semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" @@ -5931,7 +8590,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.7.2, semver@npm:^7.7.3": +"semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.7.1, semver@npm:^7.7.2, semver@npm:^7.7.3": version: 7.7.4 resolution: "semver@npm:7.7.4" bin: @@ -5954,6 +8613,43 @@ __metadata: languageName: node linkType: hard +"set-function-length@npm:^1.2.2": + version: 1.2.2 + resolution: "set-function-length@npm:1.2.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/82850e62f412a258b71e123d4ed3873fa9377c216809551192bb6769329340176f109c2eeae8c22a8d386c76739855f78e8716515c818bcaef384b51110f0f3c + languageName: node + linkType: hard + +"set-function-name@npm:^2.0.2": + version: 2.0.2 + resolution: "set-function-name@npm:2.0.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + functions-have-names: "npm:^1.2.3" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/fce59f90696c450a8523e754abb305e2b8c73586452619c2bad5f7bf38c7b6b4651895c9db895679c5bef9554339cf3ef1c329b66ece3eda7255785fbe299316 + languageName: node + linkType: hard + +"set-proto@npm:^1.0.0": + version: 1.0.0 + resolution: "set-proto@npm:1.0.0" + dependencies: + dunder-proto: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/ca5c3ccbba479d07c30460e367e66337cec825560b11e8ba9c5ebe13a2a0d6021ae34eddf94ff3dfe17a3104dc1f191519cb6c48378b503e5c3f36393938776a + languageName: node + linkType: hard + "sharp@npm:^0.34.5": version: 0.34.5 resolution: "sharp@npm:0.34.5" @@ -6054,6 +8750,54 @@ __metadata: languageName: node linkType: hard +"side-channel-list@npm:^1.0.0": + version: 1.0.1 + resolution: "side-channel-list@npm:1.0.1" + dependencies: + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.4" + checksum: 10c0/d346c787fd2f9f1c2fdea14f00e8250118db0e7596d85a6cb9faa75f105d31a73a8f7a341c93d7df2a2429098c3d37a77bd3be9e88c37094b8c01807bc77c7a2 + languageName: node + linkType: hard + +"side-channel-map@npm:^1.0.1": + version: 1.0.1 + resolution: "side-channel-map@npm:1.0.1" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + checksum: 10c0/010584e6444dd8a20b85bc926d934424bd809e1a3af941cace229f7fdcb751aada0fb7164f60c2e22292b7fa3c0ff0bce237081fd4cdbc80de1dc68e95430672 + languageName: node + linkType: hard + +"side-channel-weakmap@npm:^1.0.2": + version: 1.0.2 + resolution: "side-channel-weakmap@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + side-channel-map: "npm:^1.0.1" + checksum: 10c0/71362709ac233e08807ccd980101c3e2d7efe849edc51455030327b059f6c4d292c237f94dc0685031dd11c07dd17a68afde235d6cf2102d949567f98ab58185 + languageName: node + linkType: hard + +"side-channel@npm:^1.1.0": + version: 1.1.0 + resolution: "side-channel@npm:1.1.0" + dependencies: + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.3" + side-channel-list: "npm:^1.0.0" + side-channel-map: "npm:^1.0.1" + side-channel-weakmap: "npm:^1.0.2" + checksum: 10c0/cb20dad41eb032e6c24c0982e1e5a24963a28aa6122b4f05b3f3d6bf8ae7fd5474ef382c8f54a6a3ab86e0cac4d41a23bd64ede3970e5bfb50326ba02a7996e6 + languageName: node + linkType: hard + "signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" @@ -6110,6 +8854,13 @@ __metadata: languageName: node linkType: hard +"source-map-js@npm:^1.0.2, source-map-js@npm:^1.2.1": + version: 1.2.1 + resolution: "source-map-js@npm:1.2.1" + checksum: 10c0/7bda1fc4c197e3c6ff17de1b8b2c20e60af81b63a52cb32ec5a5d67a20a7d42651e2cb34ebe93833c5a2a084377e17455854fee3e21e7925c64a51b6a52b0faf + languageName: node + linkType: hard + "source-map-support@npm:0.5.13": version: 0.5.13 resolution: "source-map-support@npm:0.5.13" @@ -6157,6 +8908,13 @@ __metadata: languageName: node linkType: hard +"stable-hash@npm:^0.0.5": + version: 0.0.5 + resolution: "stable-hash@npm:0.0.5" + checksum: 10c0/ca670cb6d172f1c834950e4ec661e2055885df32fee3ebf3647c5df94993b7c2666a5dbc1c9a62ee11fc5c24928579ec5e81bb5ad31971d355d5a341aab493b3 + languageName: node + linkType: hard + "stack-utils@npm:^2.0.6": version: 2.0.6 resolution: "stack-utils@npm:2.0.6" @@ -6173,6 +8931,16 @@ __metadata: languageName: node linkType: hard +"stop-iteration-iterator@npm:^1.1.0": + version: 1.1.0 + resolution: "stop-iteration-iterator@npm:1.1.0" + dependencies: + es-errors: "npm:^1.3.0" + internal-slot: "npm:^1.1.0" + checksum: 10c0/de4e45706bb4c0354a4b1122a2b8cc45a639e86206807ce0baf390ee9218d3ef181923fa4d2b67443367c491aa255c5fbaa64bb74648e3c5b48299928af86c09 + languageName: node + linkType: hard + "streamroller@npm:^3.1.5": version: 3.1.5 resolution: "streamroller@npm:3.1.5" @@ -6216,6 +8984,86 @@ __metadata: languageName: node linkType: hard +"string.prototype.includes@npm:^2.0.1": + version: 2.0.1 + resolution: "string.prototype.includes@npm:2.0.1" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.3" + checksum: 10c0/25ce9c9b49128352a2618fbe8758b46f945817a58a4420f4799419e40a8d28f116e176c7590d767d5327a61e75c8f32c86171063f48e389b9fdd325f1bd04ee5 + languageName: node + linkType: hard + +"string.prototype.matchall@npm:^4.0.12": + version: 4.0.12 + resolution: "string.prototype.matchall@npm:4.0.12" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.6" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.6" + gopd: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + internal-slot: "npm:^1.1.0" + regexp.prototype.flags: "npm:^1.5.3" + set-function-name: "npm:^2.0.2" + side-channel: "npm:^1.1.0" + checksum: 10c0/1a53328ada73f4a77f1fdf1c79414700cf718d0a8ef6672af5603e709d26a24f2181208144aed7e858b1bcc1a0d08567a570abfb45567db4ae47637ed2c2f85c + languageName: node + linkType: hard + +"string.prototype.repeat@npm:^1.0.0": + version: 1.0.0 + resolution: "string.prototype.repeat@npm:1.0.0" + dependencies: + define-properties: "npm:^1.1.3" + es-abstract: "npm:^1.17.5" + checksum: 10c0/94c7978566cffa1327d470fd924366438af9b04b497c43a9805e476e2e908aa37a1fd34cc0911156c17556dab62159d12c7b92b3cc304c3e1281fe4c8e668f40 + languageName: node + linkType: hard + +"string.prototype.trim@npm:^1.2.10": + version: 1.2.10 + resolution: "string.prototype.trim@npm:1.2.10" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" + define-data-property: "npm:^1.1.4" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-object-atoms: "npm:^1.0.0" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/8a8854241c4b54a948e992eb7dd6b8b3a97185112deb0037a134f5ba57541d8248dd610c966311887b6c2fd1181a3877bffb14d873ce937a344535dabcc648f8 + languageName: node + linkType: hard + +"string.prototype.trimend@npm:^1.0.9": + version: 1.0.9 + resolution: "string.prototype.trimend@npm:1.0.9" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/59e1a70bf9414cb4c536a6e31bef5553c8ceb0cf44d8b4d0ed65c9653358d1c64dd0ec203b100df83d0413bbcde38b8c5d49e14bc4b86737d74adc593a0d35b6 + languageName: node + linkType: hard + +"string.prototype.trimstart@npm:^1.0.8": + version: 1.0.8 + resolution: "string.prototype.trimstart@npm:1.0.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/d53af1899959e53c83b64a5fd120be93e067da740e7e75acb433849aa640782fb6c7d4cd5b84c954c84413745a3764df135a8afeb22908b86a835290788d8366 + languageName: node + linkType: hard + "string_decoder@npm:^1.1.1": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" @@ -6243,6 +9091,13 @@ __metadata: languageName: node linkType: hard +"strip-bom@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-bom@npm:3.0.0" + checksum: 10c0/51201f50e021ef16672593d7434ca239441b7b760e905d9f33df6e4f3954ff54ec0e0a06f100d028af0982d6f25c35cd5cda2ce34eaebccd0250b8befb90d8f1 + languageName: node + linkType: hard + "strip-bom@npm:^4.0.0": version: 4.0.0 resolution: "strip-bom@npm:4.0.0" @@ -6264,6 +9119,22 @@ __metadata: languageName: node linkType: hard +"styled-jsx@npm:5.1.6": + version: 5.1.6 + resolution: "styled-jsx@npm:5.1.6" + dependencies: + client-only: "npm:0.0.1" + peerDependencies: + react: ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" + peerDependenciesMeta: + "@babel/core": + optional: true + babel-plugin-macros: + optional: true + checksum: 10c0/ace50e7ea5ae5ae6a3b65a50994c51fca6ae7df9c7ecfd0104c36be0b4b3a9c5c1a2374d16e2a11e256d0b20be6d47256d768ecb4f91ab390f60752a075780f5 + languageName: node + linkType: hard + "supports-color@npm:^7.1.0": version: 7.2.0 resolution: "supports-color@npm:7.2.0" @@ -6282,6 +9153,13 @@ __metadata: languageName: node linkType: hard +"supports-preserve-symlinks-flag@npm:^1.0.0": + version: 1.0.0 + resolution: "supports-preserve-symlinks-flag@npm:1.0.0" + checksum: 10c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 + languageName: node + linkType: hard + "synckit@npm:^0.11.8": version: 0.11.12 resolution: "synckit@npm:0.11.12" @@ -6291,6 +9169,27 @@ __metadata: languageName: node linkType: hard +"tailwind-merge@npm:^3.5.0": + version: 3.5.0 + resolution: "tailwind-merge@npm:3.5.0" + checksum: 10c0/4dc588f5b5296ba3f38e1ebb41f02b6d24a8c5bb45e44b33748c118fb4b5767dd0efc464431ca3e75404056b618b5f67bec3708158baa65fed8a2fc9201e0c53 + languageName: node + linkType: hard + +"tailwindcss@npm:4.2.2, tailwindcss@npm:^4": + version: 4.2.2 + resolution: "tailwindcss@npm:4.2.2" + checksum: 10c0/6eae8a125c35d504ba6c518d26ec64fba694ff4a9ab9b9cd9883050128e0b7afdf491388c472d9bed2624664c1c7d4a133d19b653151a6b52e6ce6953168a857 + languageName: node + linkType: hard + +"tapable@npm:^2.3.0": + version: 2.3.2 + resolution: "tapable@npm:2.3.2" + checksum: 10c0/45ec8bd8963907f35bba875f9b3e9a5afa5ba11a9a4e4a2d7b2313d983cb2741386fd7dd3e54b13055b2be942971aac369d197e02263ec9216c59c0a8069ed7f + languageName: node + linkType: hard + "tar@npm:^6.1.11": version: 6.2.1 resolution: "tar@npm:6.2.1" @@ -6346,6 +9245,16 @@ __metadata: languageName: node linkType: hard +"tinyglobby@npm:^0.2.13": + version: 0.2.16 + resolution: "tinyglobby@npm:0.2.16" + dependencies: + fdir: "npm:^6.5.0" + picomatch: "npm:^4.0.4" + checksum: 10c0/f2e09fd93dd95c41e522113b686ff6f7c13020962f8698a864a257f3d7737599afc47722b7ab726e12f8a813f779906187911ff8ee6701ede65072671a7e934b + languageName: node + linkType: hard + "tmpl@npm:1.0.5": version: 1.0.5 resolution: "tmpl@npm:1.0.5" @@ -6353,6 +9262,15 @@ __metadata: languageName: node linkType: hard +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: "npm:^7.0.0" + checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 + languageName: node + linkType: hard + "tr46@npm:~0.0.3": version: 0.0.3 resolution: "tr46@npm:0.0.3" @@ -6416,7 +9334,19 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.4.0, tslib@npm:^2.6.2, tslib@npm:^2.6.3, tslib@npm:^2.8.1": +"tsconfig-paths@npm:^3.15.0": + version: 3.15.0 + resolution: "tsconfig-paths@npm:3.15.0" + dependencies: + "@types/json5": "npm:^0.0.29" + json5: "npm:^1.0.2" + minimist: "npm:^1.2.6" + strip-bom: "npm:^3.0.0" + checksum: 10c0/5b4f301a2b7a3766a986baf8fc0e177eb80bdba6e396792ff92dc23b5bca8bb279fc96517dcaaef63a3b49bebc6c4c833653ec58155780bc906bdbcf7dda0ef5 + languageName: node + linkType: hard + +"tslib@npm:^2.4.0, tslib@npm:^2.6.2, tslib@npm:^2.6.3, tslib@npm:^2.8.0, tslib@npm:^2.8.1": version: 2.8.1 resolution: "tslib@npm:2.8.1" checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 @@ -6439,6 +9369,35 @@ __metadata: languageName: node linkType: hard +"turbo@npm:^2.3.3": + version: 2.9.6 + resolution: "turbo@npm:2.9.6" + dependencies: + "@turbo/darwin-64": "npm:2.9.6" + "@turbo/darwin-arm64": "npm:2.9.6" + "@turbo/linux-64": "npm:2.9.6" + "@turbo/linux-arm64": "npm:2.9.6" + "@turbo/windows-64": "npm:2.9.6" + "@turbo/windows-arm64": "npm:2.9.6" + dependenciesMeta: + "@turbo/darwin-64": + optional: true + "@turbo/darwin-arm64": + optional: true + "@turbo/linux-64": + optional: true + "@turbo/linux-arm64": + optional: true + "@turbo/windows-64": + optional: true + "@turbo/windows-arm64": + optional: true + bin: + turbo: bin/turbo + checksum: 10c0/8f06bc9f4fa8caa446b72276ba0ab69dbcaf46ffbf536926f5d2759cc5d180f027a4065286ce03d6788306b5404d7a320d8354670cabd459c599fcdca83e4611 + languageName: node + linkType: hard + "type-check@npm:^0.4.0, type-check@npm:~0.4.0": version: 0.4.0 resolution: "type-check@npm:0.4.0" @@ -6469,6 +9428,59 @@ __metadata: languageName: node linkType: hard +"typed-array-buffer@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-buffer@npm:1.0.3" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + is-typed-array: "npm:^1.1.14" + checksum: 10c0/1105071756eb248774bc71646bfe45b682efcad93b55532c6ffa4518969fb6241354e4aa62af679ae83899ec296d69ef88f1f3763657cdb3a4d29321f7b83079 + languageName: node + linkType: hard + +"typed-array-byte-length@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-byte-length@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.8" + for-each: "npm:^0.3.3" + gopd: "npm:^1.2.0" + has-proto: "npm:^1.2.0" + is-typed-array: "npm:^1.1.14" + checksum: 10c0/6ae083c6f0354f1fce18b90b243343b9982affd8d839c57bbd2c174a5d5dc71be9eb7019ffd12628a96a4815e7afa85d718d6f1e758615151d5f35df841ffb3e + languageName: node + linkType: hard + +"typed-array-byte-offset@npm:^1.0.4": + version: 1.0.4 + resolution: "typed-array-byte-offset@npm:1.0.4" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + for-each: "npm:^0.3.3" + gopd: "npm:^1.2.0" + has-proto: "npm:^1.2.0" + is-typed-array: "npm:^1.1.15" + reflect.getprototypeof: "npm:^1.0.9" + checksum: 10c0/3d805b050c0c33b51719ee52de17c1cd8e6a571abdf0fffb110e45e8dd87a657e8b56eee94b776b13006d3d347a0c18a730b903cf05293ab6d92e99ff8f77e53 + languageName: node + linkType: hard + +"typed-array-length@npm:^1.0.7": + version: 1.0.7 + resolution: "typed-array-length@npm:1.0.7" + dependencies: + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + is-typed-array: "npm:^1.1.13" + possible-typed-array-names: "npm:^1.0.0" + reflect.getprototypeof: "npm:^1.0.6" + checksum: 10c0/e38f2ae3779584c138a2d8adfa8ecf749f494af3cd3cdafe4e688ce51418c7d2c5c88df1bd6be2bbea099c3f7cea58c02ca02ed438119e91f162a9de23f61295 + languageName: node + linkType: hard + "typedarray@npm:^0.0.6": version: 0.0.6 resolution: "typedarray@npm:0.0.6" @@ -6476,6 +9488,31 @@ __metadata: languageName: node linkType: hard +"typescript-eslint@npm:^8.46.0": + version: 8.58.2 + resolution: "typescript-eslint@npm:8.58.2" + dependencies: + "@typescript-eslint/eslint-plugin": "npm:8.58.2" + "@typescript-eslint/parser": "npm:8.58.2" + "@typescript-eslint/typescript-estree": "npm:8.58.2" + "@typescript-eslint/utils": "npm:8.58.2" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.1.0" + checksum: 10c0/6065fe90674e89100b3192716fc641d80de4b586fe244c00e2c97d47923166ab3286f895685bf9570919c8606724f1196486f09e7841ca73bdf05d5df0752945 + languageName: node + linkType: hard + +"typescript@npm:^5": + version: 5.9.3 + resolution: "typescript@npm:5.9.3" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/6bd7552ce39f97e711db5aa048f6f9995b53f1c52f7d8667c1abdc1700c68a76a308f579cd309ce6b53646deb4e9a1be7c813a93baaf0a28ccd536a30270e1c5 + languageName: node + linkType: hard + "typescript@npm:^6.0.2": version: 6.0.2 resolution: "typescript@npm:6.0.2" @@ -6486,6 +9523,16 @@ __metadata: languageName: node linkType: hard +"typescript@patch:typescript@npm%3A^5#optional!builtin": + version: 5.9.3 + resolution: "typescript@patch:typescript@npm%3A5.9.3#optional!builtin::version=5.9.3&hash=5786d5" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/ad09fdf7a756814dce65bc60c1657b40d44451346858eea230e10f2e95a289d9183b6e32e5c11e95acc0ccc214b4f36289dcad4bf1886b0adb84d711d336a430 + languageName: node + linkType: hard + "typescript@patch:typescript@npm%3A^6.0.2#optional!builtin": version: 6.0.2 resolution: "typescript@patch:typescript@npm%3A6.0.2#optional!builtin::version=6.0.2&hash=5786d5" @@ -6505,6 +9552,25 @@ __metadata: languageName: node linkType: hard +"unbox-primitive@npm:^1.1.0": + version: 1.1.0 + resolution: "unbox-primitive@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.3" + has-bigints: "npm:^1.0.2" + has-symbols: "npm:^1.1.0" + which-boxed-primitive: "npm:^1.1.1" + checksum: 10c0/7dbd35ab02b0e05fe07136c72cb9355091242455473ec15057c11430129bab38b7b3624019b8778d02a881c13de44d63cd02d122ee782fb519e1de7775b5b982 + languageName: node + linkType: hard + +"undici-types@npm:~6.21.0": + version: 6.21.0 + resolution: "undici-types@npm:6.21.0" + checksum: 10c0/c01ed51829b10aa72fc3ce64b747f8e74ae9b60eafa19a7b46ef624403508a54c526ffab06a14a26b3120d055e1104d7abe7c9017e83ced038ea5cf52f8d5e04 + languageName: node + linkType: hard + "undici-types@npm:~7.18.0": version: 7.18.2 resolution: "undici-types@npm:7.18.2" @@ -6512,6 +9578,13 @@ __metadata: languageName: node linkType: hard +"undici-types@npm:~7.19.0": + version: 7.19.2 + resolution: "undici-types@npm:7.19.2" + checksum: 10c0/7159f10546f9f6c47d36776bb1bbf8671e87c1e587a6fee84ae1f111ae8de4f914efa8ca0dfcd224f4f4a9dfc3f6028f627ccb5ddaccf82d7fd54671b89fac3e + languageName: node + linkType: hard + "undici@npm:6.21.3": version: 6.21.3 resolution: "undici@npm:6.21.3" @@ -6533,7 +9606,7 @@ __metadata: languageName: node linkType: hard -"unrs-resolver@npm:^1.7.11": +"unrs-resolver@npm:^1.6.2, unrs-resolver@npm:^1.7.11": version: 1.11.1 resolution: "unrs-resolver@npm:1.11.1" dependencies: @@ -6679,6 +9752,67 @@ __metadata: languageName: node linkType: hard +"which-boxed-primitive@npm:^1.1.0, which-boxed-primitive@npm:^1.1.1": + version: 1.1.1 + resolution: "which-boxed-primitive@npm:1.1.1" + dependencies: + is-bigint: "npm:^1.1.0" + is-boolean-object: "npm:^1.2.1" + is-number-object: "npm:^1.1.1" + is-string: "npm:^1.1.1" + is-symbol: "npm:^1.1.1" + checksum: 10c0/aceea8ede3b08dede7dce168f3883323f7c62272b49801716e8332ff750e7ae59a511ae088840bc6874f16c1b7fd296c05c949b0e5b357bfe3c431b98c417abe + languageName: node + linkType: hard + +"which-builtin-type@npm:^1.2.1": + version: 1.2.1 + resolution: "which-builtin-type@npm:1.2.1" + dependencies: + call-bound: "npm:^1.0.2" + function.prototype.name: "npm:^1.1.6" + has-tostringtag: "npm:^1.0.2" + is-async-function: "npm:^2.0.0" + is-date-object: "npm:^1.1.0" + is-finalizationregistry: "npm:^1.1.0" + is-generator-function: "npm:^1.0.10" + is-regex: "npm:^1.2.1" + is-weakref: "npm:^1.0.2" + isarray: "npm:^2.0.5" + which-boxed-primitive: "npm:^1.1.0" + which-collection: "npm:^1.0.2" + which-typed-array: "npm:^1.1.16" + checksum: 10c0/8dcf323c45e5c27887800df42fbe0431d0b66b1163849bb7d46b5a730ad6a96ee8bfe827d078303f825537844ebf20c02459de41239a0a9805e2fcb3cae0d471 + languageName: node + linkType: hard + +"which-collection@npm:^1.0.2": + version: 1.0.2 + resolution: "which-collection@npm:1.0.2" + dependencies: + is-map: "npm:^2.0.3" + is-set: "npm:^2.0.3" + is-weakmap: "npm:^2.0.2" + is-weakset: "npm:^2.0.3" + checksum: 10c0/3345fde20964525a04cdf7c4a96821f85f0cc198f1b2ecb4576e08096746d129eb133571998fe121c77782ac8f21cbd67745a3d35ce100d26d4e684c142ea1f2 + languageName: node + linkType: hard + +"which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.19": + version: 1.1.20 + resolution: "which-typed-array@npm:1.1.20" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" + for-each: "npm:^0.3.5" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/16fcdada95c8afb821cd1117f0ab50b4d8551677ac08187f21d4e444530913c9ffd2dac634f0c1183345f96344b69280f40f9a8bc52164ef409e555567c2604b + languageName: node + linkType: hard + "which@npm:^2.0.1": version: 2.0.2 resolution: "which@npm:2.0.2" @@ -6861,3 +9995,19 @@ __metadata: checksum: 10c0/6baa15863f1bbf0131a50f80df82bdc1d174f45e81587ff6a2ac2ad13a0c4a1f80e883794d5711ad31acdd85195ebe052375e43db5c4bcbaff98f040c082234e languageName: node linkType: hard + +"zod-validation-error@npm:^3.5.0 || ^4.0.0": + version: 4.0.2 + resolution: "zod-validation-error@npm:4.0.2" + peerDependencies: + zod: ^3.25.0 || ^4.0.0 + checksum: 10c0/0ccfec48c46de1be440b719cd02044d4abb89ed0e14c13e637cd55bf29102f67ccdba373f25def0fc7130e5f15025be4d557a7edcc95d5a3811599aade689e1b + languageName: node + linkType: hard + +"zod@npm:^3.25.0 || ^4.0.0": + version: 4.3.6 + resolution: "zod@npm:4.3.6" + checksum: 10c0/860d25a81ab41d33aa25f8d0d07b091a04acb426e605f396227a796e9e800c44723ed96d0f53a512b57be3d1520f45bf69c0cb3b378a232a00787a2609625307 + languageName: node + linkType: hard