From 8548717074affe0ccedaf4503351330d997150f7 Mon Sep 17 00:00:00 2001 From: ImBenji Date: Mon, 27 Apr 2026 20:56:49 +0100 Subject: [PATCH] initialize project with basic structure and dependencies --- .env.example | 13 + .gitignore | 38 + Dockerfile | 27 + README.md | 75 + app/app.vue | 8 + app/assets/css/main.css | 75 + app/components/TheSidebar.vue | 198 + app/layouts/default.vue | 8 + app/pages/course/[id].vue | 830 ++ app/pages/index.vue | 573 + app/pages/learn/[id]/dl.vue | 44 + app/pages/learn/[id]/index.vue | 1508 +++ app/pages/new.vue | 534 + data/.gitkeep | 0 docker-compose.yml | 17 + drizzle.config.ts | 10 + drizzle/0000_curved_aqueduct.sql | 58 + drizzle/0001_nervous_the_fury.sql | 1 + drizzle/0002_special_korg.sql | 1 + drizzle/0003_adhd_mode_audio.sql | 1 + drizzle/0004_adhd_mode_audio_chunks.sql | 1 + drizzle/0005_cost_ai.sql | 1 + drizzle/0006_cost_audio.sql | 1 + drizzle/0007_branch_took.sql | 1 + drizzle/0008_branch_count.sql | 1 + drizzle/0009_audit_report.sql | 1 + drizzle/0010_audit_score.sql | 1 + drizzle/0011_tts_provider.sql | 1 + drizzle/0012_organisation.sql | 1 + drizzle/0013_relevant_files.sql | 1 + drizzle/meta/0000_snapshot.json | 414 + drizzle/meta/0001_snapshot.json | 421 + drizzle/meta/0002_snapshot.json | 428 + drizzle/meta/_journal.json | 104 + nuxt.config.ts | 37 + package-lock.json | 12216 +++++++++++++++++++++ public/audio/branch-transition.mp3 | Bin 0 -> 35570 bytes public/audio/correct_1.mp3 | Bin 0 -> 17135 bytes public/audio/correct_2.mp3 | Bin 0 -> 11283 bytes public/audio/correct_3.mp3 | Bin 0 -> 17971 bytes public/audio/correct_4.mp3 | Bin 0 -> 13373 bytes public/audio/labels/A_1.mp3 | Bin 0 -> 12582 bytes public/audio/labels/A_2.mp3 | Bin 0 -> 12582 bytes public/audio/labels/A_3.mp3 | Bin 0 -> 16344 bytes public/audio/labels/A_4.mp3 | Bin 0 -> 13836 bytes public/audio/labels/B_1.mp3 | Bin 0 -> 12582 bytes public/audio/labels/B_2.mp3 | Bin 0 -> 11328 bytes public/audio/labels/B_3.mp3 | Bin 0 -> 11328 bytes public/audio/labels/B_4.mp3 | Bin 0 -> 12582 bytes public/audio/labels/C_1.mp3 | Bin 0 -> 12582 bytes public/audio/labels/C_2.mp3 | Bin 0 -> 13836 bytes public/audio/labels/C_3.mp3 | Bin 0 -> 11328 bytes public/audio/labels/C_4.mp3 | Bin 0 -> 15090 bytes public/audio/labels/D_1.mp3 | Bin 0 -> 20106 bytes public/audio/labels/D_2.mp3 | Bin 0 -> 11328 bytes public/audio/labels/D_3.mp3 | Bin 0 -> 16344 bytes public/audio/labels/D_4.mp3 | Bin 0 -> 34316 bytes public/favicon.ico | Bin 0 -> 4286 bytes public/robots.txt | 2 + scripts/rebuild.sh | 9 + server/api/courses/[id]/generate.post.ts | 20 + server/api/courses/[id]/index.get.ts | 43 + server/api/courses/[id]/index.patch.ts | 27 + server/api/courses/[id]/upload.post.ts | 52 + server/api/courses/index.get.ts | 35 + server/api/courses/index.post.ts | 16 + server/api/topics/[id]/lesson.get.ts | 18 + server/api/topics/[id]/progress.post.ts | 46 + server/api/topics/[id]/quiz.get.ts | 21 + server/api/uploads/[id].patch.ts | 25 + server/db/index.ts | 12 + server/db/migrate.ts | 8 + server/db/schema.ts | 92 + server/plugins/generateLabels.ts | 7 + server/plugins/migrate.ts | 9 + server/plugins/resumeGeneration.ts | 29 + server/utils/auditCourse.ts | 196 + server/utils/detectUploadType.ts | 50 + server/utils/generateCourse.ts | 732 ++ server/utils/generateLabels.ts | 84 + server/utils/generateTTS.ts | 329 + server/utils/openrouter.ts | 111 + server/utils/parsePdf.ts | 9 + tsconfig.json | 3 + uploads/.gitkeep | 0 85 files changed, 19634 insertions(+) create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 app/app.vue create mode 100644 app/assets/css/main.css create mode 100644 app/components/TheSidebar.vue create mode 100644 app/layouts/default.vue create mode 100644 app/pages/course/[id].vue create mode 100644 app/pages/index.vue create mode 100644 app/pages/learn/[id]/dl.vue create mode 100644 app/pages/learn/[id]/index.vue create mode 100644 app/pages/new.vue create mode 100644 data/.gitkeep create mode 100644 docker-compose.yml create mode 100644 drizzle.config.ts create mode 100644 drizzle/0000_curved_aqueduct.sql create mode 100644 drizzle/0001_nervous_the_fury.sql create mode 100644 drizzle/0002_special_korg.sql create mode 100644 drizzle/0003_adhd_mode_audio.sql create mode 100644 drizzle/0004_adhd_mode_audio_chunks.sql create mode 100644 drizzle/0005_cost_ai.sql create mode 100644 drizzle/0006_cost_audio.sql create mode 100644 drizzle/0007_branch_took.sql create mode 100644 drizzle/0008_branch_count.sql create mode 100644 drizzle/0009_audit_report.sql create mode 100644 drizzle/0010_audit_score.sql create mode 100644 drizzle/0011_tts_provider.sql create mode 100644 drizzle/0012_organisation.sql create mode 100644 drizzle/0013_relevant_files.sql create mode 100644 drizzle/meta/0000_snapshot.json create mode 100644 drizzle/meta/0001_snapshot.json create mode 100644 drizzle/meta/0002_snapshot.json create mode 100644 drizzle/meta/_journal.json create mode 100644 nuxt.config.ts create mode 100644 package-lock.json create mode 100644 public/audio/branch-transition.mp3 create mode 100644 public/audio/correct_1.mp3 create mode 100644 public/audio/correct_2.mp3 create mode 100644 public/audio/correct_3.mp3 create mode 100644 public/audio/correct_4.mp3 create mode 100644 public/audio/labels/A_1.mp3 create mode 100644 public/audio/labels/A_2.mp3 create mode 100644 public/audio/labels/A_3.mp3 create mode 100644 public/audio/labels/A_4.mp3 create mode 100644 public/audio/labels/B_1.mp3 create mode 100644 public/audio/labels/B_2.mp3 create mode 100644 public/audio/labels/B_3.mp3 create mode 100644 public/audio/labels/B_4.mp3 create mode 100644 public/audio/labels/C_1.mp3 create mode 100644 public/audio/labels/C_2.mp3 create mode 100644 public/audio/labels/C_3.mp3 create mode 100644 public/audio/labels/C_4.mp3 create mode 100644 public/audio/labels/D_1.mp3 create mode 100644 public/audio/labels/D_2.mp3 create mode 100644 public/audio/labels/D_3.mp3 create mode 100644 public/audio/labels/D_4.mp3 create mode 100644 public/favicon.ico create mode 100644 public/robots.txt create mode 100755 scripts/rebuild.sh create mode 100644 server/api/courses/[id]/generate.post.ts create mode 100644 server/api/courses/[id]/index.get.ts create mode 100644 server/api/courses/[id]/index.patch.ts create mode 100644 server/api/courses/[id]/upload.post.ts create mode 100644 server/api/courses/index.get.ts create mode 100644 server/api/courses/index.post.ts create mode 100644 server/api/topics/[id]/lesson.get.ts create mode 100644 server/api/topics/[id]/progress.post.ts create mode 100644 server/api/topics/[id]/quiz.get.ts create mode 100644 server/api/uploads/[id].patch.ts create mode 100644 server/db/index.ts create mode 100644 server/db/migrate.ts create mode 100644 server/db/schema.ts create mode 100644 server/plugins/generateLabels.ts create mode 100644 server/plugins/migrate.ts create mode 100644 server/plugins/resumeGeneration.ts create mode 100644 server/utils/auditCourse.ts create mode 100644 server/utils/detectUploadType.ts create mode 100644 server/utils/generateCourse.ts create mode 100644 server/utils/generateLabels.ts create mode 100644 server/utils/generateTTS.ts create mode 100644 server/utils/openrouter.ts create mode 100644 server/utils/parsePdf.ts create mode 100644 tsconfig.json create mode 100644 uploads/.gitkeep diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..023b668 --- /dev/null +++ b/.env.example @@ -0,0 +1,13 @@ +NUXT_OPENROUTER_API_KEY=your_openrouter_api_key_here +NUXT_OPENROUTER_MODEL=deepseek/deepseek-v4-flash +NUXT_OPENROUTER_CLASSIFICATION_MODEL=deepseek/deepseek-v4-flash +NUXT_OPENROUTER_EVALUATOR_MODEL=deepseek/deepseek-r1 + +# TTS provider: "elevenlabs" or "fishaudio" +NUXT_TTS_PROVIDER=elevenlabs + +NUXT_ELEVENLABS_API_KEY=your_elevenlabs_api_key_here +NUXT_ELEVENLABS_VOICE_ID=21m00Tcm4TlvDq8ikWAM + +NUXT_FISH_AUDIO_API_KEY=your_fish_audio_api_key_here +NUXT_FISH_AUDIO_VOICE_ID=your_fish_audio_reference_id_here diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..94a1bbf --- /dev/null +++ b/.gitignore @@ -0,0 +1,38 @@ +# Nuxt dev/build outputs +.output +.data +.nuxt +.nitro +.cache +dist + +# Node dependencies +node_modules + +# Logs +logs +*.log + +# Misc +.DS_Store +.fleet +.idea + +# Local env files +.env +.env.* +!.env.example + +# SQLite db files +*.db +*.db-shm +*.db-wal + +# Docker data volumes (keep dirs, not content) +data/* +!data/.gitkeep +uploads/* +!uploads/.gitkeep + +# Generated lesson audio +public/audio/lessons/ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7ea3725 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,27 @@ +FROM node:22-alpine AS builder + +WORKDIR /app + +COPY package*.json ./ +RUN npm ci + +COPY . . +RUN npm run build + + +FROM node:22-alpine + +WORKDIR /app + +COPY --from=builder /app/.output /app/.output +COPY --from=builder /app/package*.json ./ + +RUN mkdir -p /app/uploads /app/data + +ENV NODE_ENV=production +ENV NITRO_PORT=3000 +ENV NITRO_HOST=0.0.0.0 + +EXPOSE 3000 + +CMD ["node", "/app/.output/server/index.mjs"] diff --git a/README.md b/README.md new file mode 100644 index 0000000..25b5821 --- /dev/null +++ b/README.md @@ -0,0 +1,75 @@ +# Nuxt Minimal Starter + +Look at the [Nuxt documentation](https://nuxt.com/docs/getting-started/introduction) to learn more. + +## Setup + +Make sure to install dependencies: + +```bash +# npm +npm install + +# pnpm +pnpm install + +# yarn +yarn install + +# bun +bun install +``` + +## Development Server + +Start the development server on `http://localhost:3000`: + +```bash +# npm +npm run dev + +# pnpm +pnpm dev + +# yarn +yarn dev + +# bun +bun run dev +``` + +## Production + +Build the application for production: + +```bash +# npm +npm run build + +# pnpm +pnpm build + +# yarn +yarn build + +# bun +bun run build +``` + +Locally preview production build: + +```bash +# npm +npm run preview + +# pnpm +pnpm preview + +# yarn +yarn preview + +# bun +bun run preview +``` + +Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information. diff --git a/app/app.vue b/app/app.vue new file mode 100644 index 0000000..ed9e94c --- /dev/null +++ b/app/app.vue @@ -0,0 +1,8 @@ + diff --git a/app/assets/css/main.css b/app/assets/css/main.css new file mode 100644 index 0000000..9a72db1 --- /dev/null +++ b/app/assets/css/main.css @@ -0,0 +1,75 @@ +@import url("https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500&family=DM+Sans:wght@300;400;500;600&display=swap"); +@import "tailwindcss"; + +:root { + --bg: oklch(97.5% 0.008 78); + --surface: oklch(95.5% 0.012 76); + --surface-2: oklch(93% 0.016 74); + --surface-3: oklch(90% 0.020 72); + --border: oklch(88% 0.022 73); + --border-2: oklch(82% 0.026 70); + --text: oklch(20% 0.020 55); + --text-2: oklch(42% 0.020 60); + --text-3: oklch(60% 0.016 68); + --accent: oklch(54% 0.140 44); + --accent-light: oklch(93% 0.040 76); + --accent-dim: oklch(88% 0.060 72); + --green: oklch(54% 0.130 158); + --green-light: oklch(93% 0.040 155); + --blue: oklch(54% 0.130 255); + --blue-light: oklch(93% 0.035 255); + --sidebar-w: 228px; + --r-card: 16px; + --r-surface: 14px; + --r-item: 12px; + --r-btn: 10px; + --r-sm: 8px; +} + +@theme { + --font-serif: "Lora", Georgia, serif; + --font-sans: "DM Sans", system-ui, sans-serif; + --font-mono: ui-monospace, "SFMono-Regular", Menlo, monospace; +} + +*, *::before, *::after { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +html, body { + height: 100%; +} + +html { + font-size: 16px; +} + +body { + font-family: "DM Sans", sans-serif; + background: var(--bg); + color: var(--text); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +button { + font-family: inherit; + cursor: pointer; + border: none; + background: none; +} + +input, textarea, select { + font-family: inherit; +} + +::selection { + background: var(--accent); + color: white; +} + +::-webkit-scrollbar { width: 6px; } +::-webkit-scrollbar-track { background: transparent; } +::-webkit-scrollbar-thumb { background: var(--border-2); border-radius: 3px; } diff --git a/app/components/TheSidebar.vue b/app/components/TheSidebar.vue new file mode 100644 index 0000000..9c6144c --- /dev/null +++ b/app/components/TheSidebar.vue @@ -0,0 +1,198 @@ + + + + + diff --git a/app/layouts/default.vue b/app/layouts/default.vue new file mode 100644 index 0000000..c038766 --- /dev/null +++ b/app/layouts/default.vue @@ -0,0 +1,8 @@ + diff --git a/app/pages/course/[id].vue b/app/pages/course/[id].vue new file mode 100644 index 0000000..bc672b0 --- /dev/null +++ b/app/pages/course/[id].vue @@ -0,0 +1,830 @@ + + + + + diff --git a/app/pages/index.vue b/app/pages/index.vue new file mode 100644 index 0000000..7b2d087 --- /dev/null +++ b/app/pages/index.vue @@ -0,0 +1,573 @@ + + + + + diff --git a/app/pages/learn/[id]/dl.vue b/app/pages/learn/[id]/dl.vue new file mode 100644 index 0000000..34e99a2 --- /dev/null +++ b/app/pages/learn/[id]/dl.vue @@ -0,0 +1,44 @@ + + + diff --git a/app/pages/learn/[id]/index.vue b/app/pages/learn/[id]/index.vue new file mode 100644 index 0000000..20bfe50 --- /dev/null +++ b/app/pages/learn/[id]/index.vue @@ -0,0 +1,1508 @@ + + + + + diff --git a/app/pages/new.vue b/app/pages/new.vue new file mode 100644 index 0000000..5b622e6 --- /dev/null +++ b/app/pages/new.vue @@ -0,0 +1,534 @@ + + + + + diff --git a/data/.gitkeep b/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..18d55ed --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,17 @@ +services: + revisione: + build: . + restart: unless-stopped + env_file: + - .env + volumes: + - ./data:/app/data + - ./uploads:/app/uploads + environment: + - DATABASE_PATH=/app/data/revisione.db + networks: + - nginx_proxy_manager_default + +networks: + nginx_proxy_manager_default: + external: true diff --git a/drizzle.config.ts b/drizzle.config.ts new file mode 100644 index 0000000..78e9d88 --- /dev/null +++ b/drizzle.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from "drizzle-kit"; + +export default defineConfig({ + schema: "./server/db/schema.ts", + out: "./drizzle", + dialect: "sqlite", + dbCredentials: { + url: "./revisione.db", + }, +}); diff --git a/drizzle/0000_curved_aqueduct.sql b/drizzle/0000_curved_aqueduct.sql new file mode 100644 index 0000000..83e4059 --- /dev/null +++ b/drizzle/0000_curved_aqueduct.sql @@ -0,0 +1,58 @@ +CREATE TABLE `courses` ( + `id` text PRIMARY KEY NOT NULL, + `title` text NOT NULL, + `subject` text NOT NULL, + `status` text DEFAULT 'processing' NOT NULL, + `created_at` text DEFAULT (datetime('now')) NOT NULL +); +--> statement-breakpoint +CREATE TABLE `lessons` ( + `id` text PRIMARY KEY NOT NULL, + `topic_id` text NOT NULL, + `content` text NOT NULL, + `created_at` text DEFAULT (datetime('now')) NOT NULL, + FOREIGN KEY (`topic_id`) REFERENCES `topics`(`id`) ON UPDATE no action ON DELETE no action +); +--> statement-breakpoint +CREATE TABLE `quiz_questions` ( + `id` text PRIMARY KEY NOT NULL, + `topic_id` text NOT NULL, + `question` text NOT NULL, + `type` text NOT NULL, + `options` text, + `answer` text NOT NULL, + `explanation` text NOT NULL, + FOREIGN KEY (`topic_id`) REFERENCES `topics`(`id`) ON UPDATE no action ON DELETE no action +); +--> statement-breakpoint +CREATE TABLE `topics` ( + `id` text PRIMARY KEY NOT NULL, + `course_id` text NOT NULL, + `title` text NOT NULL, + `description` text NOT NULL, + `order` integer NOT NULL, + `prerequisite_topic_ids` text DEFAULT '[]' NOT NULL, + `difficulty` integer DEFAULT 1 NOT NULL, + FOREIGN KEY (`course_id`) REFERENCES `courses`(`id`) ON UPDATE no action ON DELETE no action +); +--> statement-breakpoint +CREATE TABLE `uploads` ( + `id` text PRIMARY KEY NOT NULL, + `course_id` text NOT NULL, + `filename` text NOT NULL, + `type` text NOT NULL, + `stored_path` text NOT NULL, + `created_at` text DEFAULT (datetime('now')) NOT NULL, + FOREIGN KEY (`course_id`) REFERENCES `courses`(`id`) ON UPDATE no action ON DELETE no action +); +--> statement-breakpoint +CREATE TABLE `user_progress` ( + `id` text PRIMARY KEY NOT NULL, + `course_id` text NOT NULL, + `topic_id` text NOT NULL, + `lesson_complete` integer DEFAULT false NOT NULL, + `quiz_score` integer, + `updated_at` text DEFAULT (datetime('now')) NOT NULL, + FOREIGN KEY (`course_id`) REFERENCES `courses`(`id`) ON UPDATE no action ON DELETE no action, + FOREIGN KEY (`topic_id`) REFERENCES `topics`(`id`) ON UPDATE no action ON DELETE no action +); diff --git a/drizzle/0001_nervous_the_fury.sql b/drizzle/0001_nervous_the_fury.sql new file mode 100644 index 0000000..15c47cc --- /dev/null +++ b/drizzle/0001_nervous_the_fury.sql @@ -0,0 +1 @@ +ALTER TABLE `uploads` ADD `extracted_text` text; \ No newline at end of file diff --git a/drizzle/0002_special_korg.sql b/drizzle/0002_special_korg.sql new file mode 100644 index 0000000..07677b0 --- /dev/null +++ b/drizzle/0002_special_korg.sql @@ -0,0 +1 @@ +ALTER TABLE `courses` ADD `stage` text; \ No newline at end of file diff --git a/drizzle/0003_adhd_mode_audio.sql b/drizzle/0003_adhd_mode_audio.sql new file mode 100644 index 0000000..944c27e --- /dev/null +++ b/drizzle/0003_adhd_mode_audio.sql @@ -0,0 +1 @@ +ALTER TABLE `lessons` ADD `audio_path` text; diff --git a/drizzle/0004_adhd_mode_audio_chunks.sql b/drizzle/0004_adhd_mode_audio_chunks.sql new file mode 100644 index 0000000..828eb15 --- /dev/null +++ b/drizzle/0004_adhd_mode_audio_chunks.sql @@ -0,0 +1 @@ +ALTER TABLE `lessons` ADD `audio_chunks` text; diff --git a/drizzle/0005_cost_ai.sql b/drizzle/0005_cost_ai.sql new file mode 100644 index 0000000..497deec --- /dev/null +++ b/drizzle/0005_cost_ai.sql @@ -0,0 +1 @@ +ALTER TABLE `courses` ADD `cost_ai` real DEFAULT 0; diff --git a/drizzle/0006_cost_audio.sql b/drizzle/0006_cost_audio.sql new file mode 100644 index 0000000..bb0df54 --- /dev/null +++ b/drizzle/0006_cost_audio.sql @@ -0,0 +1 @@ +ALTER TABLE `courses` ADD `cost_audio` real DEFAULT 0; diff --git a/drizzle/0007_branch_took.sql b/drizzle/0007_branch_took.sql new file mode 100644 index 0000000..bfb2fdf --- /dev/null +++ b/drizzle/0007_branch_took.sql @@ -0,0 +1 @@ +ALTER TABLE user_progress ADD COLUMN took_branches INTEGER NOT NULL DEFAULT 0; diff --git a/drizzle/0008_branch_count.sql b/drizzle/0008_branch_count.sql new file mode 100644 index 0000000..8ec4e1c --- /dev/null +++ b/drizzle/0008_branch_count.sql @@ -0,0 +1 @@ +ALTER TABLE user_progress ADD COLUMN branch_count INTEGER NOT NULL DEFAULT 0; diff --git a/drizzle/0009_audit_report.sql b/drizzle/0009_audit_report.sql new file mode 100644 index 0000000..ee6da4e --- /dev/null +++ b/drizzle/0009_audit_report.sql @@ -0,0 +1 @@ +ALTER TABLE courses ADD COLUMN audit_report TEXT; diff --git a/drizzle/0010_audit_score.sql b/drizzle/0010_audit_score.sql new file mode 100644 index 0000000..2aeb932 --- /dev/null +++ b/drizzle/0010_audit_score.sql @@ -0,0 +1 @@ +ALTER TABLE courses ADD COLUMN audit_score INTEGER; diff --git a/drizzle/0011_tts_provider.sql b/drizzle/0011_tts_provider.sql new file mode 100644 index 0000000..6dfec29 --- /dev/null +++ b/drizzle/0011_tts_provider.sql @@ -0,0 +1 @@ +ALTER TABLE `lessons` ADD `tts_provider` text; diff --git a/drizzle/0012_organisation.sql b/drizzle/0012_organisation.sql new file mode 100644 index 0000000..d7e7bff --- /dev/null +++ b/drizzle/0012_organisation.sql @@ -0,0 +1 @@ +ALTER TABLE `courses` ADD `organisation` text; diff --git a/drizzle/0013_relevant_files.sql b/drizzle/0013_relevant_files.sql new file mode 100644 index 0000000..9ab1ece --- /dev/null +++ b/drizzle/0013_relevant_files.sql @@ -0,0 +1 @@ +ALTER TABLE `topics` ADD `relevant_files` text; diff --git a/drizzle/meta/0000_snapshot.json b/drizzle/meta/0000_snapshot.json new file mode 100644 index 0000000..a9bc4d0 --- /dev/null +++ b/drizzle/meta/0000_snapshot.json @@ -0,0 +1,414 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "42b7d448-5f22-45aa-850d-dde77533d699", + "prevId": "00000000-0000-0000-0000-000000000000", + "tables": { + "courses": { + "name": "courses", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "subject": { + "name": "subject", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'processing'" + }, + "created_at": { + "name": "created_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(datetime('now'))" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "lessons": { + "name": "lessons", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "topic_id": { + "name": "topic_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(datetime('now'))" + } + }, + "indexes": {}, + "foreignKeys": { + "lessons_topic_id_topics_id_fk": { + "name": "lessons_topic_id_topics_id_fk", + "tableFrom": "lessons", + "tableTo": "topics", + "columnsFrom": [ + "topic_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "quiz_questions": { + "name": "quiz_questions", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "topic_id": { + "name": "topic_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "question": { + "name": "question", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "options": { + "name": "options", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "answer": { + "name": "answer", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "explanation": { + "name": "explanation", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "quiz_questions_topic_id_topics_id_fk": { + "name": "quiz_questions_topic_id_topics_id_fk", + "tableFrom": "quiz_questions", + "tableTo": "topics", + "columnsFrom": [ + "topic_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "topics": { + "name": "topics", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "course_id": { + "name": "course_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "prerequisite_topic_ids": { + "name": "prerequisite_topic_ids", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'[]'" + }, + "difficulty": { + "name": "difficulty", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + } + }, + "indexes": {}, + "foreignKeys": { + "topics_course_id_courses_id_fk": { + "name": "topics_course_id_courses_id_fk", + "tableFrom": "topics", + "tableTo": "courses", + "columnsFrom": [ + "course_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "uploads": { + "name": "uploads", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "course_id": { + "name": "course_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "filename": { + "name": "filename", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "stored_path": { + "name": "stored_path", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(datetime('now'))" + } + }, + "indexes": {}, + "foreignKeys": { + "uploads_course_id_courses_id_fk": { + "name": "uploads_course_id_courses_id_fk", + "tableFrom": "uploads", + "tableTo": "courses", + "columnsFrom": [ + "course_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "user_progress": { + "name": "user_progress", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "course_id": { + "name": "course_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "topic_id": { + "name": "topic_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "lesson_complete": { + "name": "lesson_complete", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "quiz_score": { + "name": "quiz_score", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(datetime('now'))" + } + }, + "indexes": {}, + "foreignKeys": { + "user_progress_course_id_courses_id_fk": { + "name": "user_progress_course_id_courses_id_fk", + "tableFrom": "user_progress", + "tableTo": "courses", + "columnsFrom": [ + "course_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "user_progress_topic_id_topics_id_fk": { + "name": "user_progress_topic_id_topics_id_fk", + "tableFrom": "user_progress", + "tableTo": "topics", + "columnsFrom": [ + "topic_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/0001_snapshot.json b/drizzle/meta/0001_snapshot.json new file mode 100644 index 0000000..9cb2bee --- /dev/null +++ b/drizzle/meta/0001_snapshot.json @@ -0,0 +1,421 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "58920b2c-2c0f-42b4-a675-2b30e03bd747", + "prevId": "42b7d448-5f22-45aa-850d-dde77533d699", + "tables": { + "courses": { + "name": "courses", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "subject": { + "name": "subject", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'processing'" + }, + "created_at": { + "name": "created_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(datetime('now'))" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "lessons": { + "name": "lessons", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "topic_id": { + "name": "topic_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(datetime('now'))" + } + }, + "indexes": {}, + "foreignKeys": { + "lessons_topic_id_topics_id_fk": { + "name": "lessons_topic_id_topics_id_fk", + "tableFrom": "lessons", + "tableTo": "topics", + "columnsFrom": [ + "topic_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "quiz_questions": { + "name": "quiz_questions", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "topic_id": { + "name": "topic_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "question": { + "name": "question", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "options": { + "name": "options", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "answer": { + "name": "answer", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "explanation": { + "name": "explanation", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "quiz_questions_topic_id_topics_id_fk": { + "name": "quiz_questions_topic_id_topics_id_fk", + "tableFrom": "quiz_questions", + "tableTo": "topics", + "columnsFrom": [ + "topic_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "topics": { + "name": "topics", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "course_id": { + "name": "course_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "prerequisite_topic_ids": { + "name": "prerequisite_topic_ids", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'[]'" + }, + "difficulty": { + "name": "difficulty", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + } + }, + "indexes": {}, + "foreignKeys": { + "topics_course_id_courses_id_fk": { + "name": "topics_course_id_courses_id_fk", + "tableFrom": "topics", + "tableTo": "courses", + "columnsFrom": [ + "course_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "uploads": { + "name": "uploads", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "course_id": { + "name": "course_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "filename": { + "name": "filename", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "stored_path": { + "name": "stored_path", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "extracted_text": { + "name": "extracted_text", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(datetime('now'))" + } + }, + "indexes": {}, + "foreignKeys": { + "uploads_course_id_courses_id_fk": { + "name": "uploads_course_id_courses_id_fk", + "tableFrom": "uploads", + "tableTo": "courses", + "columnsFrom": [ + "course_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "user_progress": { + "name": "user_progress", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "course_id": { + "name": "course_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "topic_id": { + "name": "topic_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "lesson_complete": { + "name": "lesson_complete", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "quiz_score": { + "name": "quiz_score", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(datetime('now'))" + } + }, + "indexes": {}, + "foreignKeys": { + "user_progress_course_id_courses_id_fk": { + "name": "user_progress_course_id_courses_id_fk", + "tableFrom": "user_progress", + "tableTo": "courses", + "columnsFrom": [ + "course_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "user_progress_topic_id_topics_id_fk": { + "name": "user_progress_topic_id_topics_id_fk", + "tableFrom": "user_progress", + "tableTo": "topics", + "columnsFrom": [ + "topic_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/0002_snapshot.json b/drizzle/meta/0002_snapshot.json new file mode 100644 index 0000000..f9fbeb9 --- /dev/null +++ b/drizzle/meta/0002_snapshot.json @@ -0,0 +1,428 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "85b190a4-a50e-4a71-a0df-ac5c1ac5c869", + "prevId": "58920b2c-2c0f-42b4-a675-2b30e03bd747", + "tables": { + "courses": { + "name": "courses", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "subject": { + "name": "subject", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'processing'" + }, + "stage": { + "name": "stage", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(datetime('now'))" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "lessons": { + "name": "lessons", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "topic_id": { + "name": "topic_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(datetime('now'))" + } + }, + "indexes": {}, + "foreignKeys": { + "lessons_topic_id_topics_id_fk": { + "name": "lessons_topic_id_topics_id_fk", + "tableFrom": "lessons", + "tableTo": "topics", + "columnsFrom": [ + "topic_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "quiz_questions": { + "name": "quiz_questions", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "topic_id": { + "name": "topic_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "question": { + "name": "question", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "options": { + "name": "options", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "answer": { + "name": "answer", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "explanation": { + "name": "explanation", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "quiz_questions_topic_id_topics_id_fk": { + "name": "quiz_questions_topic_id_topics_id_fk", + "tableFrom": "quiz_questions", + "tableTo": "topics", + "columnsFrom": [ + "topic_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "topics": { + "name": "topics", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "course_id": { + "name": "course_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "prerequisite_topic_ids": { + "name": "prerequisite_topic_ids", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'[]'" + }, + "difficulty": { + "name": "difficulty", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + } + }, + "indexes": {}, + "foreignKeys": { + "topics_course_id_courses_id_fk": { + "name": "topics_course_id_courses_id_fk", + "tableFrom": "topics", + "tableTo": "courses", + "columnsFrom": [ + "course_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "uploads": { + "name": "uploads", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "course_id": { + "name": "course_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "filename": { + "name": "filename", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "stored_path": { + "name": "stored_path", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "extracted_text": { + "name": "extracted_text", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(datetime('now'))" + } + }, + "indexes": {}, + "foreignKeys": { + "uploads_course_id_courses_id_fk": { + "name": "uploads_course_id_courses_id_fk", + "tableFrom": "uploads", + "tableTo": "courses", + "columnsFrom": [ + "course_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "user_progress": { + "name": "user_progress", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "course_id": { + "name": "course_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "topic_id": { + "name": "topic_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "lesson_complete": { + "name": "lesson_complete", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "quiz_score": { + "name": "quiz_score", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(datetime('now'))" + } + }, + "indexes": {}, + "foreignKeys": { + "user_progress_course_id_courses_id_fk": { + "name": "user_progress_course_id_courses_id_fk", + "tableFrom": "user_progress", + "tableTo": "courses", + "columnsFrom": [ + "course_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "user_progress_topic_id_topics_id_fk": { + "name": "user_progress_topic_id_topics_id_fk", + "tableFrom": "user_progress", + "tableTo": "topics", + "columnsFrom": [ + "topic_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/_journal.json b/drizzle/meta/_journal.json new file mode 100644 index 0000000..f31f0b9 --- /dev/null +++ b/drizzle/meta/_journal.json @@ -0,0 +1,104 @@ +{ + "version": "7", + "dialect": "sqlite", + "entries": [ + { + "idx": 0, + "version": "6", + "when": 1777109155026, + "tag": "0000_curved_aqueduct", + "breakpoints": true + }, + { + "idx": 1, + "version": "6", + "when": 1777110758287, + "tag": "0001_nervous_the_fury", + "breakpoints": true + }, + { + "idx": 2, + "version": "6", + "when": 1777111595079, + "tag": "0002_special_korg", + "breakpoints": true + }, + { + "idx": 3, + "version": "6", + "when": 1777200000000, + "tag": "0003_adhd_mode_audio", + "breakpoints": true + }, + { + "idx": 4, + "version": "6", + "when": 1777200000001, + "tag": "0004_adhd_mode_audio_chunks", + "breakpoints": true + }, + { + "idx": 5, + "version": "6", + "when": 1777200000002, + "tag": "0005_cost_ai", + "breakpoints": true + }, + { + "idx": 6, + "version": "6", + "when": 1777200000003, + "tag": "0006_cost_audio", + "breakpoints": true + }, + { + "idx": 7, + "version": "6", + "when": 1777200000004, + "tag": "0007_branch_took", + "breakpoints": true + }, + { + "idx": 8, + "version": "6", + "when": 1777200000005, + "tag": "0008_branch_count", + "breakpoints": true + }, + { + "idx": 9, + "version": "6", + "when": 1777200000006, + "tag": "0009_audit_report", + "breakpoints": true + }, + { + "idx": 10, + "version": "6", + "when": 1777200000007, + "tag": "0010_audit_score", + "breakpoints": true + }, + { + "idx": 11, + "version": "6", + "when": 1777200000008, + "tag": "0011_tts_provider", + "breakpoints": true + }, + { + "idx": 12, + "version": "6", + "when": 1777200000009, + "tag": "0012_organisation", + "breakpoints": true + }, + { + "idx": 13, + "version": "6", + "when": 1777200000010, + "tag": "0013_relevant_files", + "breakpoints": true + } + ] +} \ No newline at end of file diff --git a/nuxt.config.ts b/nuxt.config.ts new file mode 100644 index 0000000..8b8ddc4 --- /dev/null +++ b/nuxt.config.ts @@ -0,0 +1,37 @@ +import tailwindcss from "@tailwindcss/vite"; + +export default defineNuxtConfig({ + app: { + head: { + title: "Revisi.one", + }, + }, + compatibilityDate: "2025-07-15", + devtools: { enabled: true }, + + future: { compatibilityVersion: 4 }, + + vite: { + plugins: [tailwindcss()], + }, + + css: ["~/assets/css/main.css"], + + runtimeConfig: { + openrouterApiKey: "", + openrouterModel: "deepseek/deepseek-v4-flash", + openrouterClassificationModel: "deepseek/deepseek-v4-flash", + openrouterEvaluatorModel: "deepseek/deepseek-r1", + ttsProvider: "elevenlabs", + elevenlabsApiKey: "", + elevenlabsVoiceId: "21m00Tcm4TlvDq8ikWAM", + fishAudioApiKey: "", + fishAudioVoiceId: "", + }, + + nitro: { + experimental: { + asyncContext: true, + }, + }, +}); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..c0a6132 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,12216 @@ +{ + "name": "lumina", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "lumina", + "hasInstallScript": true, + "dependencies": { + "better-sqlite3": "^12.9.0", + "canvas-confetti": "^1.9.4", + "drizzle-orm": "^0.45.2", + "multer": "^2.1.1", + "nuxt": "^3.17.2", + "pdf-parse": "^1.1.1", + "vue": "latest", + "vue-router": "latest" + }, + "devDependencies": { + "@tailwindcss/vite": "^4.2.4", + "@types/better-sqlite3": "^7.6.13", + "@types/canvas-confetti": "^1.9.0", + "@types/multer": "^2.1.0", + "@types/pdf-parse": "^1.1.5", + "drizzle-kit": "^0.31.10", + "tailwindcss": "^4.2.4", + "tsx": "^4.21.0", + "typescript": "^6.0.3" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", + "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz", + "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bomb.sh/tab": { + "version": "0.0.14", + "resolved": "https://registry.npmjs.org/@bomb.sh/tab/-/tab-0.0.14.tgz", + "integrity": "sha512-cHMk2LI430MVoX1unTt9oK1iZzQS4CYDz97MSxKLNErW69T43Z2QLFTpdS/3jVOIKrIADWfuxQ+nQNJkNV7E4w==", + "license": "MIT", + "bin": { + "tab": "dist/bin/cli.mjs" + }, + "peerDependencies": { + "cac": "^6.7.14", + "citty": "^0.1.6 || ^0.2.0", + "commander": "^13.1.0" + }, + "peerDependenciesMeta": { + "cac": { + "optional": true + }, + "citty": { + "optional": true + }, + "commander": { + "optional": true + } + } + }, + "node_modules/@clack/core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@clack/core/-/core-1.2.0.tgz", + "integrity": "sha512-qfxof/3T3t9DPU/Rj3OmcFyZInceqj/NVtO9rwIuJqCUgh32gwPjpFQQp/ben07qKlhpwq7GzfWpST4qdJ5Drg==", + "license": "MIT", + "dependencies": { + "fast-wrap-ansi": "^0.1.3", + "sisteransi": "^1.0.5" + } + }, + "node_modules/@clack/prompts": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-1.2.0.tgz", + "integrity": "sha512-4jmztR9fMqPMjz6H/UZXj0zEmE43ha1euENwkckKKel4XpSfokExPo5AiVStdHSAlHekz4d0CA/r45Ok1E4D3w==", + "license": "MIT", + "dependencies": { + "@clack/core": "1.2.0", + "fast-string-width": "^1.1.0", + "fast-wrap-ansi": "^0.1.3", + "sisteransi": "^1.0.5" + } + }, + "node_modules/@cloudflare/kv-asset-handler": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.4.2.tgz", + "integrity": "sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==", + "license": "MIT OR Apache-2.0", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@colordx/core": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/@colordx/core/-/core-5.4.2.tgz", + "integrity": "sha512-oC//VDid7CrDg+iXE/8RBq1s+MP+EFh5ggJOkpM9+ZathjC736A67Yg9LMAQULQ1blj9E0m0g8PubOu1/HniaQ==", + "license": "MIT" + }, + "node_modules/@drizzle-team/brocli": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@drizzle-team/brocli/-/brocli-0.10.2.tgz", + "integrity": "sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@dxup/nuxt": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@dxup/nuxt/-/nuxt-0.4.1.tgz", + "integrity": "sha512-gtYffW6OfWNvoLW+XD3Mx/K8uUq08PMGLYJoDxc92EzZAWqR0FhcR5iaLm5r/OxyGTKz+P5f5Y7Aoir9+SjYaw==", + "license": "MIT", + "dependencies": { + "@dxup/unimport": "^0.1.2", + "@nuxt/kit": "^4.4.2", + "chokidar": "^5.0.0", + "pathe": "^2.0.3", + "tinyglobby": "^0.2.16" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@dxup/nuxt/node_modules/@nuxt/kit": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-4.4.2.tgz", + "integrity": "sha512-5+IPRNX2CjkBhuWUwz0hBuLqiaJPRoKzQ+SvcdrQDbAyE+VDeFt74VpSFr5/R0ujrK4b+XnSHUJWdS72w6hsog==", + "license": "MIT", + "dependencies": { + "c12": "^3.3.3", + "consola": "^3.4.2", + "defu": "^6.1.4", + "destr": "^2.0.5", + "errx": "^0.1.0", + "exsolve": "^1.0.8", + "ignore": "^7.0.5", + "jiti": "^2.6.1", + "klona": "^2.0.6", + "mlly": "^1.8.1", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0", + "rc9": "^3.0.0", + "scule": "^1.3.0", + "semver": "^7.7.4", + "tinyglobby": "^0.2.15", + "ufo": "^1.6.3", + "unctx": "^2.5.0", + "untyped": "^2.0.0" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/@dxup/unimport": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@dxup/unimport/-/unimport-0.1.2.tgz", + "integrity": "sha512-/B8YJGPzaYq1NbsQmwgP8EZqg40NpTw4ZB3suuI0TplbxKHeK94jeaawLmVhCv+YwUnOpiWEz9U6SeThku/8JQ==", + "license": "MIT" + }, + "node_modules/@emnapi/core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", + "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild-kit/core-utils": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.3.2.tgz", + "integrity": "sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==", + "deprecated": "Merged into tsx: https://tsx.is", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.18.20", + "source-map-support": "^0.5.21" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/@esbuild-kit/esm-loader": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@esbuild-kit/esm-loader/-/esm-loader-2.6.5.tgz", + "integrity": "sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==", + "deprecated": "Merged into tsx: https://tsx.is", + "dev": true, + "license": "MIT", + "dependencies": { + "@esbuild-kit/core-utils": "^3.3.2", + "get-tsconfig": "^4.7.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", + "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", + "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", + "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", + "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", + "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", + "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", + "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", + "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", + "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", + "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", + "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", + "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", + "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", + "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", + "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", + "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", + "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", + "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", + "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", + "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", + "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", + "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", + "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", + "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", + "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", + "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@ioredis/commands": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.5.1.tgz", + "integrity": "sha512-JH8ZL/ywcJyR9MmJ5BNqZllXNZQqQbnVZOqpPQqE1vHiFgAw4NHbvE0FOduNU8IX9babitBT46571OnPTT0Zcw==", + "license": "MIT" + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@kwsites/file-exists": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", + "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", + "license": "MIT", + "dependencies": { + "debug": "^4.1.1" + } + }, + "node_modules/@kwsites/promise-deferred": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", + "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", + "license": "MIT" + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-2.0.3.tgz", + "integrity": "sha512-uwPAhccfFJlsfCxMYTwOdVfOz3xqyj8xYL3zJj8f0pb30tLohnnFPhLuqp4/qoEz8sNxe4SESZedcBojRefIzg==", + "license": "BSD-3-Clause", + "dependencies": { + "consola": "^3.2.3", + "detect-libc": "^2.0.0", + "https-proxy-agent": "^7.0.5", + "node-fetch": "^2.6.7", + "nopt": "^8.0.0", + "semver": "^7.5.3", + "tar": "^7.4.0" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", + "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nuxt/cli": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/@nuxt/cli/-/cli-3.34.0.tgz", + "integrity": "sha512-KVI4xSo96UtUUbmxr9ouWTytbj1LzTw5alsM4vC/gSY/l8kPMRAlq0XpNSAVTDJyALzLY70WhaIMX24LJLpdFw==", + "license": "MIT", + "dependencies": { + "@bomb.sh/tab": "^0.0.14", + "@clack/prompts": "^1.1.0", + "c12": "^3.3.3", + "citty": "^0.2.1", + "confbox": "^0.2.4", + "consola": "^3.4.2", + "debug": "^4.4.3", + "defu": "^6.1.4", + "exsolve": "^1.0.8", + "fuse.js": "^7.1.0", + "fzf": "^0.5.2", + "giget": "^3.1.2", + "jiti": "^2.6.1", + "listhen": "^1.9.0", + "nypm": "^0.6.5", + "ofetch": "^1.5.1", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "perfect-debounce": "^2.1.0", + "pkg-types": "^2.3.0", + "scule": "^1.3.0", + "semver": "^7.7.4", + "srvx": "^0.11.9", + "std-env": "^3.10.0", + "tinyclip": "^0.1.12", + "tinyexec": "^1.0.2", + "ufo": "^1.6.3", + "youch": "^4.1.0" + }, + "bin": { + "nuxi": "bin/nuxi.mjs", + "nuxi-ng": "bin/nuxi.mjs", + "nuxt": "bin/nuxi.mjs", + "nuxt-cli": "bin/nuxi.mjs" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + }, + "peerDependencies": { + "@nuxt/schema": "^4.3.1" + }, + "peerDependenciesMeta": { + "@nuxt/schema": { + "optional": true + } + } + }, + "node_modules/@nuxt/cli/node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "license": "MIT" + }, + "node_modules/@nuxt/devalue": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nuxt/devalue/-/devalue-2.0.2.tgz", + "integrity": "sha512-GBzP8zOc7CGWyFQS6dv1lQz8VVpz5C2yRszbXufwG/9zhStTIH50EtD87NmWbTMwXDvZLNg8GIpb1UFdH93JCA==", + "license": "MIT" + }, + "node_modules/@nuxt/devtools": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@nuxt/devtools/-/devtools-3.2.4.tgz", + "integrity": "sha512-VPbFy7hlPzWpEZk4BsuVpNuHq1ZYGV9xezjb7/NGuePuNLqeNn74YZugU+PCtva7OwKhEeTXmMK0Mqo/6+nwNA==", + "license": "MIT", + "dependencies": { + "@nuxt/devtools-kit": "3.2.4", + "@nuxt/devtools-wizard": "3.2.4", + "@nuxt/kit": "^4.4.2", + "@vue/devtools-core": "^8.1.0", + "@vue/devtools-kit": "^8.1.0", + "birpc": "^4.0.0", + "consola": "^3.4.2", + "destr": "^2.0.5", + "error-stack-parser-es": "^1.0.5", + "execa": "^8.0.1", + "fast-npm-meta": "^1.4.2", + "get-port-please": "^3.2.0", + "hookable": "^6.1.0", + "image-meta": "^0.2.2", + "is-installed-globally": "^1.0.0", + "launch-editor": "^2.13.1", + "local-pkg": "^1.1.2", + "magicast": "^0.5.2", + "nypm": "^0.6.5", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "perfect-debounce": "^2.1.0", + "pkg-types": "^2.3.0", + "semver": "^7.7.4", + "simple-git": "^3.33.0", + "sirv": "^3.0.2", + "structured-clone-es": "^2.0.0", + "tinyglobby": "^0.2.15", + "vite-plugin-inspect": "^11.3.3", + "vite-plugin-vue-tracer": "^1.3.0", + "which": "^6.0.1", + "ws": "^8.19.0" + }, + "bin": { + "devtools": "cli.mjs" + }, + "peerDependencies": { + "@vitejs/devtools": "*", + "vite": ">=6.0" + }, + "peerDependenciesMeta": { + "@vitejs/devtools": { + "optional": true + } + } + }, + "node_modules/@nuxt/devtools-kit": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@nuxt/devtools-kit/-/devtools-kit-3.2.4.tgz", + "integrity": "sha512-Yxy2Xgmq5hf3dQy983V0xh0OJV2mYwRZz9eVIGc3EaribdFGPDNGMMbYqX9qCty3Pbxn/bCF3J0UyPaNlHVayQ==", + "license": "MIT", + "dependencies": { + "@nuxt/kit": "^4.4.2", + "execa": "^8.0.1" + }, + "peerDependencies": { + "vite": ">=6.0" + } + }, + "node_modules/@nuxt/devtools-kit/node_modules/@nuxt/kit": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-4.4.2.tgz", + "integrity": "sha512-5+IPRNX2CjkBhuWUwz0hBuLqiaJPRoKzQ+SvcdrQDbAyE+VDeFt74VpSFr5/R0ujrK4b+XnSHUJWdS72w6hsog==", + "license": "MIT", + "dependencies": { + "c12": "^3.3.3", + "consola": "^3.4.2", + "defu": "^6.1.4", + "destr": "^2.0.5", + "errx": "^0.1.0", + "exsolve": "^1.0.8", + "ignore": "^7.0.5", + "jiti": "^2.6.1", + "klona": "^2.0.6", + "mlly": "^1.8.1", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0", + "rc9": "^3.0.0", + "scule": "^1.3.0", + "semver": "^7.7.4", + "tinyglobby": "^0.2.15", + "ufo": "^1.6.3", + "unctx": "^2.5.0", + "untyped": "^2.0.0" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/@nuxt/devtools-wizard": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@nuxt/devtools-wizard/-/devtools-wizard-3.2.4.tgz", + "integrity": "sha512-5tu2+Quu9XTxwtpzM8CUN0UKn/bzZIfJcoGd+at5Yy1RiUQJ4E52tRK0idW1rMSUDkbkvX3dSnu8Tpj7SAtWdQ==", + "license": "MIT", + "dependencies": { + "@clack/prompts": "^1.1.0", + "consola": "^3.4.2", + "diff": "^8.0.3", + "execa": "^8.0.1", + "magicast": "^0.5.2", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0", + "semver": "^7.7.4" + }, + "bin": { + "devtools-wizard": "cli.mjs" + } + }, + "node_modules/@nuxt/devtools/node_modules/@nuxt/kit": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-4.4.2.tgz", + "integrity": "sha512-5+IPRNX2CjkBhuWUwz0hBuLqiaJPRoKzQ+SvcdrQDbAyE+VDeFt74VpSFr5/R0ujrK4b+XnSHUJWdS72w6hsog==", + "license": "MIT", + "dependencies": { + "c12": "^3.3.3", + "consola": "^3.4.2", + "defu": "^6.1.4", + "destr": "^2.0.5", + "errx": "^0.1.0", + "exsolve": "^1.0.8", + "ignore": "^7.0.5", + "jiti": "^2.6.1", + "klona": "^2.0.6", + "mlly": "^1.8.1", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0", + "rc9": "^3.0.0", + "scule": "^1.3.0", + "semver": "^7.7.4", + "tinyglobby": "^0.2.15", + "ufo": "^1.6.3", + "unctx": "^2.5.0", + "untyped": "^2.0.0" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/@nuxt/devtools/node_modules/hookable": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-6.1.1.tgz", + "integrity": "sha512-U9LYDy1CwhMCnprUfeAZWZGByVbhd54hwepegYTK7Pi5NvqEj63ifz5z+xukznehT7i6NIZRu89Ay1AZmRsLEQ==", + "license": "MIT" + }, + "node_modules/@nuxt/kit": { + "version": "3.21.2", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.21.2.tgz", + "integrity": "sha512-Bd6m6mrDrqpBEbX+g0rc66/ALd1sxlgdx5nfK9MAYO0yKLTOSK7McSYz1KcOYn3LQFCXOWfvXwaqih/b+REI1g==", + "license": "MIT", + "dependencies": { + "c12": "^3.3.3", + "consola": "^3.4.2", + "defu": "^6.1.4", + "destr": "^2.0.5", + "errx": "^0.1.0", + "exsolve": "^1.0.8", + "ignore": "^7.0.5", + "jiti": "^2.6.1", + "klona": "^2.0.6", + "knitwork": "^1.3.0", + "mlly": "^1.8.1", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0", + "rc9": "^3.0.0", + "scule": "^1.3.0", + "semver": "^7.7.4", + "tinyglobby": "^0.2.15", + "ufo": "^1.6.3", + "unctx": "^2.5.0", + "untyped": "^2.0.0" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/@nuxt/nitro-server": { + "version": "3.21.2", + "resolved": "https://registry.npmjs.org/@nuxt/nitro-server/-/nitro-server-3.21.2.tgz", + "integrity": "sha512-tJiyrG+chze1JP1JNDFR2Ib+EhnMzmZXW7AmW7Wbxz2LLTSapLzJCLgHcy4OBcBK22bs06bI/ivn95JNvvxWbQ==", + "license": "MIT", + "dependencies": { + "@nuxt/devalue": "^2.0.2", + "@nuxt/kit": "3.21.2", + "@unhead/vue": "^2.1.12", + "@vue/shared": "^3.5.30", + "consola": "^3.4.2", + "defu": "^6.1.4", + "destr": "^2.0.5", + "devalue": "^5.6.3", + "errx": "^0.1.0", + "escape-string-regexp": "^5.0.0", + "exsolve": "^1.0.8", + "h3": "^1.15.6", + "impound": "^1.1.5", + "klona": "^2.0.6", + "mocked-exports": "^0.1.1", + "nitropack": "^2.13.1", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0", + "rou3": "^0.8.1", + "std-env": "^4.0.0", + "ufo": "^1.6.3", + "unctx": "^2.5.0", + "unstorage": "^1.17.4", + "vue": "^3.5.30", + "vue-bundle-renderer": "^2.2.0", + "vue-devtools-stub": "^0.1.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "nuxt": "^3.21.2" + } + }, + "node_modules/@nuxt/telemetry": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@nuxt/telemetry/-/telemetry-2.8.0.tgz", + "integrity": "sha512-zAwXY24KYvpLTmiV+osagd2EHkfs5IF+7oDZYTQoit5r0kPlwaCNlzHp5I/wUAWT4LBw6lG8gZ6bWidAdv/erQ==", + "license": "MIT", + "dependencies": { + "citty": "^0.2.1", + "consola": "^3.4.2", + "ofetch": "^2.0.0-alpha.3", + "rc9": "^3.0.0", + "std-env": "^4.0.0" + }, + "bin": { + "nuxt-telemetry": "bin/nuxt-telemetry.mjs" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "@nuxt/kit": ">=3.0.0" + } + }, + "node_modules/@nuxt/telemetry/node_modules/ofetch": { + "version": "2.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-2.0.0-alpha.3.tgz", + "integrity": "sha512-zpYTCs2byOuft65vI3z43Dd6iSdFbOZZLb9/d21aCpx2rGastVU9dOCv0lu4ykc1Ur1anAYjDi3SUvR0vq50JA==", + "license": "MIT" + }, + "node_modules/@nuxt/vite-builder": { + "version": "3.21.2", + "resolved": "https://registry.npmjs.org/@nuxt/vite-builder/-/vite-builder-3.21.2.tgz", + "integrity": "sha512-AwfvmogMzBmX8oS8QPjh9uZiUtnWmOV8w4Ei4DMukVELemkRugDOqWzCzuFneOFQ8khhOOMZ/lRcoTiPryZS5A==", + "license": "MIT", + "dependencies": { + "@nuxt/kit": "3.21.2", + "@rollup/plugin-replace": "^6.0.3", + "@vitejs/plugin-vue": "^6.0.4", + "@vitejs/plugin-vue-jsx": "^5.1.4", + "autoprefixer": "^10.4.27", + "consola": "^3.4.2", + "cssnano": "^7.1.3", + "defu": "^6.1.4", + "escape-string-regexp": "^5.0.0", + "exsolve": "^1.0.8", + "externality": "^1.0.2", + "get-port-please": "^3.2.0", + "jiti": "^2.6.1", + "knitwork": "^1.3.0", + "magic-string": "^0.30.21", + "mlly": "^1.8.1", + "mocked-exports": "^0.1.1", + "nypm": "^0.6.5", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "perfect-debounce": "^2.1.0", + "pkg-types": "^2.3.0", + "postcss": "^8.5.8", + "seroval": "^1.5.1", + "std-env": "^4.0.0", + "ufo": "^1.6.3", + "unenv": "^2.0.0-rc.24", + "vite": "^7.3.1", + "vite-node": "^5.3.0", + "vite-plugin-checker": "^0.12.0", + "vue-bundle-renderer": "^2.2.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "nuxt": "3.21.2", + "rolldown": "^1.0.0-beta.38", + "rollup-plugin-visualizer": "^6.0.0 || ^7.0.1", + "vue": "^3.3.4" + }, + "peerDependenciesMeta": { + "rolldown": { + "optional": true + }, + "rollup-plugin-visualizer": { + "optional": true + } + } + }, + "node_modules/@oxc-minify/binding-android-arm-eabi": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-android-arm-eabi/-/binding-android-arm-eabi-0.117.0.tgz", + "integrity": "sha512-5Hf2KsGRjxp3HnPU/mse7cQJa5tWfMFUPZQcgSMVsv2JZnGFFOIDzA0Oja2KDD+VPJqMpEJKc2dCHAGZgJxsGg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-android-arm64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-android-arm64/-/binding-android-arm64-0.117.0.tgz", + "integrity": "sha512-uuxGwxA5J4Sap+gz4nxyM/rer6q2A4X1Oe8HpE0CZQyb5cSBULQ15btZiVG3xOBctI5O+c2dwR1aZAP4oGKcLw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-darwin-arm64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-darwin-arm64/-/binding-darwin-arm64-0.117.0.tgz", + "integrity": "sha512-lLBf75cxUSLydumToKtGTwbLqO/1urScblJ33Vx0uF38M2ZbL2x51AybBV5vlfLjYNrxvQ8ov0Bj/OhsVO/biA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-darwin-x64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-darwin-x64/-/binding-darwin-x64-0.117.0.tgz", + "integrity": "sha512-wBWwP1voLZMuN4hpe1HRtkPBd4/o/1qan5XssmmI/hewBvGHEHkyvVLS0zu+cKqXDxYzYvb/p+EqU+xSXhEl4A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-freebsd-x64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-freebsd-x64/-/binding-freebsd-x64-0.117.0.tgz", + "integrity": "sha512-pYSacHw698oH2vb70iP1cHk6x0zhvAuOvdskvNtEqvfziu8MSjKXa699vA9Cx72+DH5rwVuj1I3f+7no2fWglA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-arm-gnueabihf": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.117.0.tgz", + "integrity": "sha512-Ugm4Qj7F2+bccjhHCjjnSNHBDPyvjPXWrntID4WJpSrPqt+Az/o0EGdty9sWOjQXRZiTVpa80uqCWZQUn94yTA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-arm-musleabihf": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.117.0.tgz", + "integrity": "sha512-qrY6ZviO9wVRI/jl4nRZO4B9os8jaJQemMeWIyFInZNk3lhqihId8iBqMKibJnRaf+JRxLM9j68atXkFRhOHrg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-arm64-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.117.0.tgz", + "integrity": "sha512-2VLJHKEFBRhCihT/8uesuDPhXpbWu1OlHCxqQ7pdFVqKik1Maj5E9oSDcYzxqfaCRStvTHkmLVWJBK5CVcIadg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-arm64-musl": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.117.0.tgz", + "integrity": "sha512-C3zapJconWpl2Y7LR3GkRkH6jxpuV2iVUfkFcHT5Ffn4Zu7l88mZa2dhcfdULZDybN1Phka/P34YUzuskUUrXw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-ppc64-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.117.0.tgz", + "integrity": "sha512-2T/Bm+3/qTfuNS4gKSzL8qbiYk+ErHW2122CtDx+ilZAzvWcJ8IbqdZIbEWOlwwe03lESTxPwTBLFqVgQU2OeQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-riscv64-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.117.0.tgz", + "integrity": "sha512-MKLjpldYkeoB4T+yAi4aIAb0waifxUjLcKkCUDmYAY3RqBJTvWK34KtfaKZL0IBMIXfD92CbKkcxQirDUS9Xcg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-riscv64-musl": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.117.0.tgz", + "integrity": "sha512-UFVcbPvKUStry6JffriobBp8BHtjmLLPl4bCY+JMxIn/Q3pykCpZzRwFTcDurG/kY8tm+uSNfKKdRNa5Nh9A7g==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-s390x-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.117.0.tgz", + "integrity": "sha512-B9GyPQ1NKbvpETVAMyJMfRlD3c6UJ7kiuFUAlx9LTYiQL+YIyT6vpuRlq1zgsXxavZluVrfeJv6x0owV4KDx4Q==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-x64-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.117.0.tgz", + "integrity": "sha512-fXfhtr+WWBGNy4M5GjAF5vu/lpulR4Me34FjTyaK9nDrTZs7LM595UDsP1wliksqp4hD/KdoqHGmbCrC+6d4vA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-x64-musl": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-x64-musl/-/binding-linux-x64-musl-0.117.0.tgz", + "integrity": "sha512-jFBgGbx1oLadb83ntJmy1dWlAHSQanXTS21G4PgkxyONmxZdZ/UMKr7KsADzMuoPsd2YhJHxzRpwJd9U+4BFBw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-openharmony-arm64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-openharmony-arm64/-/binding-openharmony-arm64-0.117.0.tgz", + "integrity": "sha512-nxPd9vx1vYz8IlIMdl9HFdOK/ood1H5hzbSFsyO8JU55tkcJoBL8TLCbuFf9pHpOy27l2gcPyV6z3p4eAcTH5Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-wasm32-wasi": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-wasm32-wasi/-/binding-wasm32-wasi-0.117.0.tgz", + "integrity": "sha512-pSvjJ6cCCfEXSteWSiVfZhdRzvpmS3tLhlXrXTYiuTDFrkRCobRP39SRwAzK23rE9i/m2JAaES2xPEW6+xu85g==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^1.1.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@oxc-minify/binding-win32-arm64-msvc": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.117.0.tgz", + "integrity": "sha512-9NoT9baFrWPdJRIZVQ1jzPZW9TjPT2sbzQyDdoK7uD1V8JXCe1L2y7sp9k2ldZZheaIcmtNwHc7jyD7kYz/0XQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-win32-ia32-msvc": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.117.0.tgz", + "integrity": "sha512-E51LTjkRei5u2dpFiYSObuh+e43xg45qlmilSTd0XDGFdYJCOv62Q0MEn61TR+efQYPNleYwWdTS9t+tp9p/4w==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-win32-x64-msvc": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.117.0.tgz", + "integrity": "sha512-I8vniPOxWQdxfIbXNvQLaJ1n8SrnqES6wuiAX10CU72sKsizkds9kDaJ1KzWvDy39RKhTBmD1cJsU2uxPFgizQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-android-arm-eabi": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-android-arm-eabi/-/binding-android-arm-eabi-0.117.0.tgz", + "integrity": "sha512-XarGPJpaobgKjfm7xRfCGWWszuPbm/OeP91NdMhxtcLZ/qLTmWF0P0z0gqmr0Uysi1F1v1BNtcST11THMrcEOw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-android-arm64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-android-arm64/-/binding-android-arm64-0.117.0.tgz", + "integrity": "sha512-EPTs2EBijGmyhPso4rXAL0NSpECXER9IaVKFZEv83YcA6h4uhKW47kmYt+OZcSp130zhHx+lTWILDQ/LDkCRNA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-darwin-arm64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-darwin-arm64/-/binding-darwin-arm64-0.117.0.tgz", + "integrity": "sha512-3bAEpyih6r/Kb+Xzn1em1qBMClOS7NsVWgF86k95jpysR5ix/HlKFKSy7cax6PcS96HeHR4kjlME20n/XK1zNg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-darwin-x64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-darwin-x64/-/binding-darwin-x64-0.117.0.tgz", + "integrity": "sha512-W7S99zFwVZhSbCxvjfZkioStFU249DBc4TJw/kK6kfKwx2Zew+jvizX5Y3ZPkAh7fBVUSNOdSeOqLBHLiP50tw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-freebsd-x64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-freebsd-x64/-/binding-freebsd-x64-0.117.0.tgz", + "integrity": "sha512-xH76lqSdjCSY0KUMPwLXlvQ3YEm3FFVEQmgiOCGNf+stZ6E4Mo3nC102Bo8yKd7aW0foIPAFLYsHgj7vVI/axw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-arm-gnueabihf": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.117.0.tgz", + "integrity": "sha512-9Hdm1imzrn4RdMYnQKKcy+7p7QsSPIrgVIZmpGSJT02nYDuBWLdG1pdYMPFoEo46yiXry3tS3RoHIpNbT1IiyQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-arm-musleabihf": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.117.0.tgz", + "integrity": "sha512-Itszer/VCeYhYVJLcuKnHktlY8QyGnVxapltP68S1XRGlV6IsM9HQAElJRMwQhT6/GkMjOhANmkv2Qu/9v44lw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-arm64-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.117.0.tgz", + "integrity": "sha512-jBxD7DtlHQ36ivjjZdH0noQJgWNouenzpLmXNKnYaCsBfo3jY95m5iyjYQEiWkvkhJ3TJUAs7tQ1/kEpY7x/Kg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-arm64-musl": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.117.0.tgz", + "integrity": "sha512-QagKTDF4lrz8bCXbUi39Uq5xs7C7itAseKm51f33U+Dyar9eJY/zGKqfME9mKLOiahX7Fc1J3xMWVS0AdDXLPg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-ppc64-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.117.0.tgz", + "integrity": "sha512-RPddpcE/0xxWaommWy0c5i/JdrXcXAkxBS2GOrAUh5LKmyCh03hpJedOAWszG4ADsKQwoUQQ1/tZVGRhZIWtKA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-riscv64-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.117.0.tgz", + "integrity": "sha512-ur/WVZF9FSOiZGxyP+nfxZzuv6r5OJDYoVxJnUR7fM/hhXLh4V/be6rjbzm9KLCDBRwYCEKJtt+XXNccwd06IA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-riscv64-musl": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.117.0.tgz", + "integrity": "sha512-ujGcAx8xAMvhy7X5sBFi3GXML1EtyORuJZ5z2T6UV3U416WgDX/4OCi3GnoteeenvxIf6JgP45B+YTHpt71vpA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-s390x-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.117.0.tgz", + "integrity": "sha512-hbsfKjUwRjcMZZvvmpZSc+qS0bHcHRu8aV/I3Ikn9BzOA0ZAgUE7ctPtce5zCU7bM8dnTLi4sJ1Pi9YHdx6Urw==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-x64-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.117.0.tgz", + "integrity": "sha512-1QrTrf8rige7UPJrYuDKJLQOuJlgkt+nRSJLBMHWNm9TdivzP48HaK3f4q18EjNlglKtn03lgjMu4fryDm8X4A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-x64-musl": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-x64-musl/-/binding-linux-x64-musl-0.117.0.tgz", + "integrity": "sha512-gRvK6HPzF5ITRL68fqb2WYYs/hGviPIbkV84HWCgiJX+LkaOpp+HIHQl3zVZdyKHwopXToTbXbtx/oFjDjl8pg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-openharmony-arm64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-openharmony-arm64/-/binding-openharmony-arm64-0.117.0.tgz", + "integrity": "sha512-QPJvFbnnDZZY7xc+xpbIBWLThcGBakwaYA9vKV8b3+oS5MGfAZUoTFJcix5+Zg2Ri46sOfrUim6Y6jsKNcssAQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-wasm32-wasi": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-wasm32-wasi/-/binding-wasm32-wasi-0.117.0.tgz", + "integrity": "sha512-+XRSNA0xt3pk/6CUHM7pykVe7M8SdifJk8LX1+fIp/zefvR3HBieZCbwG5un8gogNgh7srLycoh/cQA9uozv5g==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^1.1.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@oxc-parser/binding-win32-arm64-msvc": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.117.0.tgz", + "integrity": "sha512-GpxeGS+Vo030DsrXeRPc7OSJOQIyAHkM3mzwBcnQjg/79XnOIDDMXJ5X6/aNdkVt/+Pv35pqKzGA4TQau97x8w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-win32-ia32-msvc": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.117.0.tgz", + "integrity": "sha512-tchWEYiso1+objTZirmlR+w3fcIel6PVBOJ8NuC2Jr30dxBOiKUfFLovJLANwHg1+TzeD6pVSLIIIEf2T5o5lQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-win32-x64-msvc": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.117.0.tgz", + "integrity": "sha512-ysRJAjIbB4e5y+t9PZs7TwbgOV/GVT//s30AORLCT/pedYwpYzHq6ApXK7is9fvyfZtgT3anNir8+esurmyaDw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.117.0.tgz", + "integrity": "sha512-C/kPXBphID44fXdsa2xSOCuzX8fKZiFxPsvucJ6Yfkr6CJlMA+kNLPNKyLoI+l9XlDsNxBrz6h7IIjKU8pB69w==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@oxc-transform/binding-android-arm-eabi": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-android-arm-eabi/-/binding-android-arm-eabi-0.117.0.tgz", + "integrity": "sha512-17giX7h5VR9Eodru4OoSCFdgwLFIaUxeEn8JWe0vMZrAuRbT9NiDTy5dXdbGQBoO8aXPkbGS38FGlvbi31aujw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-android-arm64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-android-arm64/-/binding-android-arm64-0.117.0.tgz", + "integrity": "sha512-1LrDd1CPochtLx04pAafdah6QtOQQj0/Evttevi+0u8rCI5FKucIG7pqBHkIQi/y7pycFYIj+GebhET80maeUg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-darwin-arm64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-darwin-arm64/-/binding-darwin-arm64-0.117.0.tgz", + "integrity": "sha512-K1Xo52xJOvFfHSkz2ax9X5Qsku23RCfTIPbHZWdUCAQ1TQooI+sFcewSubhVUJ4DVK12/tYT//XXboumin+FHA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-darwin-x64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-darwin-x64/-/binding-darwin-x64-0.117.0.tgz", + "integrity": "sha512-ftFT/8Laolfq49mRRWLkIhd1AbJ0MI5bW3LwddvdoAg9zXwkx4qhzTYyBPRZhvXWftts+NjlHfHsXCOqI4tPtw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-freebsd-x64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-freebsd-x64/-/binding-freebsd-x64-0.117.0.tgz", + "integrity": "sha512-QDRyw0atg9BMnwOwnJeW6REzWPLEjiWtsCc2Sj612F1hCdvP+n0L3o8sHinEWM+BiOkOYtUxHA69WjUslc3G+g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-arm-gnueabihf": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.117.0.tgz", + "integrity": "sha512-UvpvOjyQVgiIJahIpMT0qAsLJT8O1ibHTBgXGOsZkQgw1xmjARPQ07dpRcucPPn6cqCF3wrxfbqtr2vFHaMkdA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-arm-musleabihf": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.117.0.tgz", + "integrity": "sha512-cIhztGFjKk8ngP+/7EPkEhzWMGr2neezxgWirSn/f/MirjH234oHHGJ2diKIbGQEsy0aOuJMTkL9NLfzfmH51A==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-arm64-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.117.0.tgz", + "integrity": "sha512-mXbDfvDN0RZVg7v4LohNzU0kK3fMAZgkUKTkpFVgxEvzibEG5VpSznkypUwHI4a8U8pz+K6mGaLetX3Xt+CvvA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-arm64-musl": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.117.0.tgz", + "integrity": "sha512-ykxpPQp0eAcSmhy0Y3qKvdanHY4d8THPonDfmCoktUXb6r0X6qnjpJB3V+taN1wevW55bOEZd97kxtjTKjqhmg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-ppc64-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.117.0.tgz", + "integrity": "sha512-Rvspti4Kr7eq6zSrURK5WjscfWQPvmy/KjJZV45neRKW8RLonE3r9+NgrwSLGoHvQ3F24fbqlkplox1RtlhH5A==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-riscv64-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.117.0.tgz", + "integrity": "sha512-Dr2ZW9ZZ4l1eQ5JUEUY3smBh4JFPCPuybWaDZTLn3ADZjyd8ZtNXEjeMT8rQbbhbgSL9hEgbwaqraole3FNThQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-riscv64-musl": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.117.0.tgz", + "integrity": "sha512-oD1Bnes1bIC3LVBSrWEoSUBj6fvatESPwAVWfJVGVQlqWuOs/ZBn1e4Nmbipo3KGPHK7DJY75r/j7CQCxhrOFQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-s390x-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.117.0.tgz", + "integrity": "sha512-qT//IAPLvse844t99Kff5j055qEbXfwzWgvCMb0FyjisnB8foy25iHZxZIocNBe6qwrCYWUP1M8rNrB/WyfS1Q==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-x64-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.117.0.tgz", + "integrity": "sha512-2YEO5X+KgNzFqRVO5dAkhjcI5gwxus4NSWVl/+cs2sI6P0MNPjqE3VWPawl4RTC11LvetiiZdHcujUCPM8aaUw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-x64-musl": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-x64-musl/-/binding-linux-x64-musl-0.117.0.tgz", + "integrity": "sha512-3wqWbTSaIFZvDr1aqmTul4cg8PRWYh6VC52E8bLI7ytgS/BwJLW+sDUU2YaGIds4sAf/1yKeJRmudRCDPW9INg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-openharmony-arm64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-openharmony-arm64/-/binding-openharmony-arm64-0.117.0.tgz", + "integrity": "sha512-Ebxx6NPqhzlrjvx4+PdSqbOq+li0f7X59XtJljDghkbJsbnkHvhLmPR09ifHt5X32UlZN63ekjwcg/nbmHLLlA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-wasm32-wasi": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-wasm32-wasi/-/binding-wasm32-wasi-0.117.0.tgz", + "integrity": "sha512-Nn8mmcBiQ0XKHLTb05QBlH+CDkn7jf5YDVv9FtKhy4zJT0NEU9y3dXVbfcurOpsVrG9me4ktzDQNCaAoJjUQyw==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^1.1.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@oxc-transform/binding-win32-arm64-msvc": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.117.0.tgz", + "integrity": "sha512-15cbsF8diXWGnHrTsVgVeabETiT/KdMAfRAcot99xsaVecJs3pITNNjC6Qj+/TPNpehbgIFjlhhxOVSbQsTBgg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-win32-ia32-msvc": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.117.0.tgz", + "integrity": "sha512-I6DkhCuFX6p9rckdWiLuZfBWrrYUC7sNX+zLaCfa5zvrPNwo1/29KkefvqXVxu3AWT/6oZAbtc0A8/mqhETJPQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-win32-x64-msvc": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.117.0.tgz", + "integrity": "sha512-V7YzavQnYcRJBeJkp0qpb3FKrlm5I57XJetCYB4jsjStuboQmnFMZ/XQH55Szlf/kVyeU9ddQwv72gJJ5BrGjQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz", + "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.3", + "is-glob": "^4.0.3", + "node-addon-api": "^7.0.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.6", + "@parcel/watcher-darwin-arm64": "2.5.6", + "@parcel/watcher-darwin-x64": "2.5.6", + "@parcel/watcher-freebsd-x64": "2.5.6", + "@parcel/watcher-linux-arm-glibc": "2.5.6", + "@parcel/watcher-linux-arm-musl": "2.5.6", + "@parcel/watcher-linux-arm64-glibc": "2.5.6", + "@parcel/watcher-linux-arm64-musl": "2.5.6", + "@parcel/watcher-linux-x64-glibc": "2.5.6", + "@parcel/watcher-linux-x64-musl": "2.5.6", + "@parcel/watcher-win32-arm64": "2.5.6", + "@parcel/watcher-win32-ia32": "2.5.6", + "@parcel/watcher-win32-x64": "2.5.6" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz", + "integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz", + "integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz", + "integrity": "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz", + "integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz", + "integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz", + "integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz", + "integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz", + "integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz", + "integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz", + "integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-wasm": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-wasm/-/watcher-wasm-2.5.6.tgz", + "integrity": "sha512-byAiBZ1t3tXQvc8dMD/eoyE7lTXYorhn+6uVW5AC+JGI1KtJC/LvDche5cfUE+qiefH+Ybq0bUCJU0aB1cSHUA==", + "bundleDependencies": [ + "napi-wasm" + ], + "license": "MIT", + "dependencies": { + "is-glob": "^4.0.3", + "napi-wasm": "^1.1.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-wasm/node_modules/napi-wasm": { + "version": "1.1.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz", + "integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz", + "integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz", + "integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", + "license": "MIT" + }, + "node_modules/@poppinss/colors": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@poppinss/colors/-/colors-4.1.6.tgz", + "integrity": "sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==", + "license": "MIT", + "dependencies": { + "kleur": "^4.1.5" + } + }, + "node_modules/@poppinss/dumper": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@poppinss/dumper/-/dumper-0.7.0.tgz", + "integrity": "sha512-0UTYalzk2t6S4rA2uHOz5bSSW2CHdv4vggJI6Alg90yvl0UgXs6XSXpH96OH+bRkX4J/06djv29pqXJ0lq5Kag==", + "license": "MIT", + "dependencies": { + "@poppinss/colors": "^4.1.5", + "@sindresorhus/is": "^7.0.2", + "supports-color": "^10.0.0" + } + }, + "node_modules/@poppinss/exception": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@poppinss/exception/-/exception-1.2.3.tgz", + "integrity": "sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==", + "license": "MIT" + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.13", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.13.tgz", + "integrity": "sha512-3ngTAv6F/Py35BsYbeeLeecvhMKdsKm4AoOETVhAA+Qc8nrA2I0kF7oa93mE9qnIurngOSpMnQ0x2nQY2FPviA==", + "license": "MIT" + }, + "node_modules/@rollup/plugin-alias": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-6.0.0.tgz", + "integrity": "sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==", + "license": "MIT", + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "rollup": ">=4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "29.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-29.0.2.tgz", + "integrity": "sha512-S/ggWH1LU7jTyi9DxZOKyxpVd4hF/OZ0JrEbeLjXk/DFXwRny0tjD2c992zOUYQobLrVkRVMDdmHP16HKP7GRg==", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "fdir": "^6.2.0", + "is-reference": "1.2.1", + "magic-string": "^0.30.3", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=16.0.0 || 14 >= 14.17" + }, + "peerDependencies": { + "rollup": "^2.68.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-inject": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz", + "integrity": "sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-json": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz", + "integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.1.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.3.tgz", + "integrity": "sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-6.0.3.tgz", + "integrity": "sha512-J4RZarRvQAm5IF0/LwUUg+obsm+xZhYnbMXmXROyoSE1ATJe3oXSb9L5MMppdxP2ylNSjv6zFBwKYjcKMucVfA==", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-terser": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-1.0.0.tgz", + "integrity": "sha512-FnCxhTBx6bMOYQrar6C8h3scPt8/JwIzw3+AJ2K++6guogH5fYaIFia+zZuhqv0eo1RN7W1Pz630SyvLbDjhtQ==", + "license": "MIT", + "dependencies": { + "serialize-javascript": "^7.0.3", + "smob": "^1.0.0", + "terser": "^5.17.4" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.2.tgz", + "integrity": "sha512-dnlp69efPPg6Uaw2dVqzWRfAWRnYVb1XJ8CyyhIbZeaq4CA5/mLeZ1IEt9QqQxmbdvagjLIm2ZL8BxXv5lH4Yw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.2.tgz", + "integrity": "sha512-OqZTwDRDchGRHHm/hwLOL7uVPB9aUvI0am/eQuWMNyFHf5PSEQmyEeYYheA0EPPKUO/l0uigCp+iaTjoLjVoHg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.2.tgz", + "integrity": "sha512-UwRE7CGpvSVEQS8gUMBe1uADWjNnVgP3Iusyda1nSRwNDCsRjnGc7w6El6WLQsXmZTbLZx9cecegumcitNfpmA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.2.tgz", + "integrity": "sha512-gjEtURKLCC5VXm1I+2i1u9OhxFsKAQJKTVB8WvDAHF+oZlq0GTVFOlTlO1q3AlCTE/DF32c16ESvfgqR7343/g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.2.tgz", + "integrity": "sha512-Bcl6CYDeAgE70cqZaMojOi/eK63h5Me97ZqAQoh77VPjMysA/4ORQBRGo3rRy45x4MzVlU9uZxs8Uwy7ZaKnBw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.2.tgz", + "integrity": "sha512-LU+TPda3mAE2QB0/Hp5VyeKJivpC6+tlOXd1VMoXV/YFMvk/MNk5iXeBfB4MQGRWyOYVJ01625vjkr0Az98OJQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.2.tgz", + "integrity": "sha512-2QxQrM+KQ7DAW4o22j+XZ6RKdxjLD7BOWTP0Bv0tmjdyhXSsr2Ul1oJDQqh9Zf5qOwTuTc7Ek83mOFaKnodPjg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.2.tgz", + "integrity": "sha512-TbziEu2DVsTEOPif2mKWkMeDMLoYjx95oESa9fkQQK7r/Orta0gnkcDpzwufEcAO2BLBsD7mZkXGFqEdMRRwfw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.2.tgz", + "integrity": "sha512-bO/rVDiDUuM2YfuCUwZ1t1cP+/yqjqz+Xf2VtkdppefuOFS2OSeAfgafaHNkFn0t02hEyXngZkxtGqXcXwO8Rg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.2.tgz", + "integrity": "sha512-hr26p7e93Rl0Za+JwW7EAnwAvKkehh12BU1Llm9Ykiibg4uIr2rbpxG9WCf56GuvidlTG9KiiQT/TXT1yAWxTA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.2.tgz", + "integrity": "sha512-pOjB/uSIyDt+ow3k/RcLvUAOGpysT2phDn7TTUB3n75SlIgZzM6NKAqlErPhoFU+npgY3/n+2HYIQVbF70P9/A==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.2.tgz", + "integrity": "sha512-2/w+q8jszv9Ww1c+6uJT3OwqhdmGP2/4T17cu8WuwyUuuaCDDJ2ojdyYwZzCxx0GcsZBhzi3HmH+J5pZNXnd+Q==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.2.tgz", + "integrity": "sha512-11+aL5vKheYgczxtPVVRhdptAM2H7fcDR5Gw4/bTcteuZBlH4oP9f5s9zYO9aGZvoGeBpqXI/9TZZihZ609wKw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.2.tgz", + "integrity": "sha512-i16fokAGK46IVZuV8LIIwMdtqhin9hfYkCh8pf8iC3QU3LpwL+1FSFGej+O7l3E/AoknL6Dclh2oTdnRMpTzFQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.2.tgz", + "integrity": "sha512-49FkKS6RGQoriDSK/6E2GkAsAuU5kETFCh7pG4yD/ylj9rKhTmO3elsnmBvRD4PgJPds5W2PkhC82aVwmUcJ7A==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.2.tgz", + "integrity": "sha512-mjYNkHPfGpUR00DuM1ZZIgs64Hpf4bWcz9Z41+4Q+pgDx73UwWdAYyf6EG/lRFldmdHHzgrYyge5akFUW0D3mQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.2.tgz", + "integrity": "sha512-ALyvJz965BQk8E9Al/JDKKDLH2kfKFLTGMlgkAbbYtZuJt9LU8DW3ZoDMCtQpXAltZxwBHevXz5u+gf0yA0YoA==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.2.tgz", + "integrity": "sha512-UQjrkIdWrKI626Du8lCQ6MJp/6V1LAo2bOK9OTu4mSn8GGXIkPXk/Vsp4bLHCd9Z9Iz2OTEaokUE90VweJgIYQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.2.tgz", + "integrity": "sha512-bTsRGj6VlSdn/XD4CGyzMnzaBs9bsRxy79eTqTCBsA8TMIEky7qg48aPkvJvFe1HyzQ5oMZdg7AnVlWQSKLTnw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.2.tgz", + "integrity": "sha512-6d4Z3534xitaA1FcMWP7mQPq5zGwBmGbhphh2DwaA1aNIXUu3KTOfwrWpbwI4/Gr0uANo7NTtaykFyO2hPuFLg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.2.tgz", + "integrity": "sha512-NetAg5iO2uN7eB8zE5qrZ3CSil+7IJt4WDFLcC75Ymywq1VZVD6qJ6EvNLjZ3rEm6gB7XW5JdT60c6MN35Z85Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.2.tgz", + "integrity": "sha512-NCYhOotpgWZ5kdxCZsv6Iudx0wX8980Q/oW4pNFNihpBKsDbEA1zpkfxJGC0yugsUuyDZ7gL37dbzwhR0VI7pQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.2.tgz", + "integrity": "sha512-RXsaOqXxfoUBQoOgvmmijVxJnW2IGB0eoMO7F8FAjaj0UTywUO/luSqimWBJn04WNgUkeNhh7fs7pESXajWmkg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.2.tgz", + "integrity": "sha512-qdAzEULD+/hzObedtmV6iBpdL5TIbKVztGiK7O3/KYSf+HIzU257+MX1EXJcyIiDbMAqmbwaufcYPvyRryeZtA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.2.tgz", + "integrity": "sha512-Nd/SgG27WoA9e+/TdK74KnHz852TLa94ovOYySo/yMPuTmpckK/jIF2jSwS3g7ELSKXK13/cVdmg1Z/DaCWKxA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@simple-git/args-pathspec": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@simple-git/args-pathspec/-/args-pathspec-1.0.3.tgz", + "integrity": "sha512-ngJMaHlsWDTfjyq9F3VIQ8b7NXbBLq5j9i5bJ6XLYtD6qlDXT7fdKY2KscWWUF8t18xx052Y/PUO1K1TRc9yKA==", + "license": "MIT" + }, + "node_modules/@simple-git/argv-parser": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@simple-git/argv-parser/-/argv-parser-1.1.1.tgz", + "integrity": "sha512-Q9lBcfQ+VQCpQqGJFHe5yooOS5hGdLFFbJ5R+R5aDsnkPCahtn1hSkMcORX65J2Z5lxSkD0lQorMsncuBQxYUw==", + "license": "MIT", + "dependencies": { + "@simple-git/args-pathspec": "^1.0.3" + } + }, + "node_modules/@sindresorhus/is": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-7.2.0.tgz", + "integrity": "sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@speed-highlight/core": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@speed-highlight/core/-/core-1.2.15.tgz", + "integrity": "sha512-BMq1K3DsElxDWawkX6eLg9+CKJrTVGCBAWVuHXVUV2u0s2711qiChLSId6ikYPfxhdYocLNt3wWwSvDiTvFabw==", + "license": "CC0-1.0" + }, + "node_modules/@tailwindcss/node": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.2.4.tgz", + "integrity": "sha512-Ai7+yQPxz3ddrDQzFfBKdHEVBg0w3Zl83jnjuwxnZOsnH9pGn93QHQtpU0p/8rYWxvbFZHneni6p1BSLK4DkGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.19.0", + "jiti": "^2.6.1", + "lightningcss": "1.32.0", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.2.4" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.2.4.tgz", + "integrity": "sha512-9El/iI069DKDSXwTvB9J4BwdO5JhRrOweGaK25taBAvBXyXqJAX+Jqdvs8r8gKpsI/1m0LeJLyQYTf/WLrBT1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.2.4", + "@tailwindcss/oxide-darwin-arm64": "4.2.4", + "@tailwindcss/oxide-darwin-x64": "4.2.4", + "@tailwindcss/oxide-freebsd-x64": "4.2.4", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.4", + "@tailwindcss/oxide-linux-arm64-gnu": "4.2.4", + "@tailwindcss/oxide-linux-arm64-musl": "4.2.4", + "@tailwindcss/oxide-linux-x64-gnu": "4.2.4", + "@tailwindcss/oxide-linux-x64-musl": "4.2.4", + "@tailwindcss/oxide-wasm32-wasi": "4.2.4", + "@tailwindcss/oxide-win32-arm64-msvc": "4.2.4", + "@tailwindcss/oxide-win32-x64-msvc": "4.2.4" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.2.4.tgz", + "integrity": "sha512-e7MOr1SAn9U8KlZzPi1ZXGZHeC5anY36qjNwmZv9pOJ8E4Q6jmD1vyEHkQFmNOIN7twGPEMXRHmitN4zCMN03g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.2.4.tgz", + "integrity": "sha512-tSC/Kbqpz/5/o/C2sG7QvOxAKqyd10bq+ypZNf+9Fi2TvbVbv1zNpcEptcsU7DPROaSbVgUXmrzKhurFvo5eDg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.2.4.tgz", + "integrity": "sha512-yPyUXn3yO/ufR6+Kzv0t4fCg2qNr90jxXc5QqBpjlPNd0NqyDXcmQb/6weunH/MEDXW5dhyEi+agTDiqa3WsGg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.2.4.tgz", + "integrity": "sha512-BoMIB4vMQtZsXdGLVc2z+P9DbETkiopogfWZKbWwM8b/1Vinbs4YcUwo+kM/KeLkX3Ygrf4/PsRndKaYhS8Eiw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.2.4.tgz", + "integrity": "sha512-7pIHBLTHYRAlS7V22JNuTh33yLH4VElwKtB3bwchK/UaKUPpQ0lPQiOWcbm4V3WP2I6fNIJ23vABIvoy2izdwA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.2.4.tgz", + "integrity": "sha512-+E4wxJ0ZGOzSH325reXTWB48l42i93kQqMvDyz5gqfRzRZ7faNhnmvlV4EPGJU3QJM/3Ab5jhJ5pCRUsKn6OQw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.2.4.tgz", + "integrity": "sha512-bBADEGAbo4ASnppIziaQJelekCxdMaxisrk+fB7Thit72IBnALp9K6ffA2G4ruj90G9XRS2VQ6q2bCKbfFV82g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.2.4.tgz", + "integrity": "sha512-7Mx25E4WTfnht0TVRTyC00j3i0M+EeFe7wguMDTlX4mRxafznw0CA8WJkFjWYH5BlgELd1kSjuU2JiPnNZbJDA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.2.4.tgz", + "integrity": "sha512-2wwJRF7nyhOR0hhHoChc04xngV3iS+akccHTGtz965FwF0up4b2lOdo6kI1EbDaEXKgvcrFBYcYQQ/rrnWFVfA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.2.4.tgz", + "integrity": "sha512-FQsqApeor8Fo6gUEklzmaa9994orJZZDBAlQpK2Mq+DslRKFJeD6AjHpBQ0kZFQohVr8o85PPh8eOy86VlSCmw==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.8.1", + "@emnapi/runtime": "^1.8.1", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.1.1", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.2.4.tgz", + "integrity": "sha512-L9BXqxC4ToVgwMFqj3pmZRqyHEztulpUJzCxUtLjobMCzTPsGt1Fa9enKbOpY2iIyVtaHNeNvAK8ERP/64sqGQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.2.4.tgz", + "integrity": "sha512-ESlKG0EpVJQwRjXDDa9rLvhEAh0mhP1sF7sap9dNZT0yyl9SAG6T7gdP09EH0vIv0UNTlo6jPWyujD6559fZvw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.2.4.tgz", + "integrity": "sha512-pCvohwOCspk3ZFn6eJzrrX3g4n2JY73H6MmYC87XfGPyTty4YsCjYTMArRZm/zOI8dIt3+EcrLHAFPe5A4bgtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.2.4", + "@tailwindcss/oxide": "4.2.4", + "tailwindcss": "4.2.4" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7 || ^8" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/better-sqlite3": { + "version": "7.6.13", + "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.13.tgz", + "integrity": "sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/canvas-confetti": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@types/canvas-confetti/-/canvas-confetti-1.9.0.tgz", + "integrity": "sha512-aBGj/dULrimR1XDZLtG9JwxX1b4HPRF6CX9Yfwh3NvstZEm1ZL7RBnel4keCPSqs1ANRu1u2Aoz9R+VmtjYuTg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz", + "integrity": "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^5.0.0", + "@types/serve-static": "^2" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", + "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/multer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/multer/-/multer-2.1.0.tgz", + "integrity": "sha512-zYZb0+nJhOHtPpGDb3vqPjwpdeGlGC157VpkqNQL+UU2qwoacoQ7MpsAmUptI/0Oa127X32JzWDqQVEXp2RcIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/node": { + "version": "25.6.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.0.tgz", + "integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.19.0" + } + }, + "node_modules/@types/pdf-parse": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@types/pdf-parse/-/pdf-parse-1.1.5.tgz", + "integrity": "sha512-kBfrSXsloMnUJOKi25s3+hRmkycHfLK6A09eRGqF/N8BkQoPUmaCr+q8Cli5FnfohEz/rsv82zAiPz/LXtOGhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/qs": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*" + } + }, + "node_modules/@unhead/vue": { + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-2.1.13.tgz", + "integrity": "sha512-HYy0shaHRnLNW9r85gppO8IiGz0ONWVV3zGdlT8CQ0tbTwixznJCIiyqV4BSV1aIF1jJIye0pd1p/k6Eab8Z/A==", + "license": "MIT", + "dependencies": { + "hookable": "^6.0.1", + "unhead": "2.1.13" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + }, + "peerDependencies": { + "vue": ">=3.5.18" + } + }, + "node_modules/@unhead/vue/node_modules/hookable": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-6.1.1.tgz", + "integrity": "sha512-U9LYDy1CwhMCnprUfeAZWZGByVbhd54hwepegYTK7Pi5NvqEj63ifz5z+xukznehT7i6NIZRu89Ay1AZmRsLEQ==", + "license": "MIT" + }, + "node_modules/@vercel/nft": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-1.5.0.tgz", + "integrity": "sha512-IWTDeIoWhQ7ZtRO/JRKH+jhmeQvZYhtGPmzw/QGDY+wDCQqfm25P9yIdoAFagu4fWsK4IwZXDFIjrmp5rRm/sA==", + "license": "MIT", + "dependencies": { + "@mapbox/node-pre-gyp": "^2.0.0", + "@rollup/pluginutils": "^5.1.3", + "acorn": "^8.6.0", + "acorn-import-attributes": "^1.9.5", + "async-sema": "^3.1.1", + "bindings": "^1.4.0", + "estree-walker": "2.0.2", + "glob": "^13.0.0", + "graceful-fs": "^4.2.9", + "node-gyp-build": "^4.2.2", + "picomatch": "^4.0.2", + "resolve-from": "^5.0.0" + }, + "bin": { + "nft": "out/cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-6.0.6.tgz", + "integrity": "sha512-u9HHgfrq3AjXlysn0eINFnWQOJQLO9WN6VprZ8FXl7A2bYisv3Hui9Ij+7QZ41F/WYWarHjwBbXtD7dKg3uxbg==", + "license": "MIT", + "dependencies": { + "@rolldown/pluginutils": "1.0.0-rc.13" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vitejs/plugin-vue-jsx": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-5.1.5.tgz", + "integrity": "sha512-jIAsvHOEtWpslLOI2MeElGFxH7M8pM83BU/Tor4RLyiwH0FM4nUW3xdvbw20EeU9wc5IspQwMq225K3CMnJEpA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.29.0", + "@babel/plugin-syntax-typescript": "^7.28.6", + "@babel/plugin-transform-typescript": "^7.28.6", + "@rolldown/pluginutils": "^1.0.0-rc.2", + "@vue/babel-plugin-jsx": "^2.0.1" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "vue": "^3.0.0" + } + }, + "node_modules/@volar/language-core": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.28.tgz", + "integrity": "sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==", + "license": "MIT", + "dependencies": { + "@volar/source-map": "2.4.28" + } + }, + "node_modules/@volar/source-map": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.28.tgz", + "integrity": "sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==", + "license": "MIT" + }, + "node_modules/@vue-macros/common": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@vue-macros/common/-/common-3.1.2.tgz", + "integrity": "sha512-h9t4ArDdniO9ekYHAD95t9AZcAbb19lEGK+26iAjUODOIJKmObDNBSe4+6ELQAA3vtYiFPPBtHh7+cQCKi3Dng==", + "license": "MIT", + "dependencies": { + "@vue/compiler-sfc": "^3.5.22", + "ast-kit": "^2.1.2", + "local-pkg": "^1.1.2", + "magic-string-ast": "^1.0.2", + "unplugin-utils": "^0.3.0" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/vue-macros" + }, + "peerDependencies": { + "vue": "^2.7.0 || ^3.2.25" + }, + "peerDependenciesMeta": { + "vue": { + "optional": true + } + } + }, + "node_modules/@vue/babel-helper-vue-transform-on": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-2.0.1.tgz", + "integrity": "sha512-uZ66EaFbnnZSYqYEyplWvn46GhZ1KuYSThdT68p+am7MgBNbQ3hphTL9L+xSIsWkdktwhPYLwPgVWqo96jDdRA==", + "license": "MIT" + }, + "node_modules/@vue/babel-plugin-jsx": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-2.0.1.tgz", + "integrity": "sha512-a8CaLQjD/s4PVdhrLD/zT574ZNPnZBOY+IhdtKWRB4HRZ0I2tXBi5ne7d9eCfaYwp5gU5+4KIyFTV1W1YL9xZA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.4", + "@babel/types": "^7.28.4", + "@vue/babel-helper-vue-transform-on": "2.0.1", + "@vue/babel-plugin-resolve-type": "2.0.1", + "@vue/shared": "^3.5.22" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + } + } + }, + "node_modules/@vue/babel-plugin-resolve-type": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-2.0.1.tgz", + "integrity": "sha512-ybwgIuRGRRBhOU37GImDoWQoz+TlSqap65qVI6iwg/J7FfLTLmMf97TS7xQH9I7Qtr/gp161kYVdhr1ZMraSYQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/parser": "^7.28.4", + "@vue/compiler-sfc": "^3.5.22" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.33", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.33.tgz", + "integrity": "sha512-3PZLQwFw4Za3TC8t0FvTy3wI16Kt+pmwcgNZca4Pj9iWL2E72a/gZlpBtAJvEdDMdCxdG/qq0C7PN0bsJuv0Rw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.2", + "@vue/shared": "3.5.33", + "entities": "^7.0.1", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.33", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.33.tgz", + "integrity": "sha512-PXq0yrfCLzzL07rbXO4awtXY1Z06LG2eu6Adg3RJFa/j3Cii217XxxLXG22N330gw7GmALCY0Z8RgXEviwgpjA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.33", + "@vue/shared": "3.5.33" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.33", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.33.tgz", + "integrity": "sha512-UTUvRO9cY+rROrx/pvN9P5Z7FgA6QGfokUCfhQE4EnmUj3rVnK+CHI0LsEO1pg+I7//iRYMUfcNcCPe7tg0CoA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.2", + "@vue/compiler-core": "3.5.33", + "@vue/compiler-dom": "3.5.33", + "@vue/compiler-ssr": "3.5.33", + "@vue/shared": "3.5.33", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.21", + "postcss": "^8.5.10", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.33", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.33.tgz", + "integrity": "sha512-IErjYdnj1qIupG5xxiVIYiiRvDhGWV4zuh/RCrwfYpuL+HWQzeU6lCk/nF9r7olWMnjKxCAkOctT2qFWFkzb1A==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.33", + "@vue/shared": "3.5.33" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", + "license": "MIT" + }, + "node_modules/@vue/devtools-core": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-core/-/devtools-core-8.1.1.tgz", + "integrity": "sha512-bCCsSABp1/ot4j8xJEycM6Mtt2wbuucfByr6hMgjbYhrtlscOJypZKvy8f1FyWLYrLTchB5Qz216Lm92wfbq0A==", + "license": "MIT", + "dependencies": { + "@vue/devtools-kit": "^8.1.1", + "@vue/devtools-shared": "^8.1.1" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/@vue/devtools-kit": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-8.1.1.tgz", + "integrity": "sha512-gVBaBv++i+adg4JpH71k9ppl4soyR7Y2McEqO5YNgv0BI1kMZ7BDX5gnwkZ5COYgiCyhejZG+yGNrBAjj6Coqg==", + "license": "MIT", + "dependencies": { + "@vue/devtools-shared": "^8.1.1", + "birpc": "^2.6.1", + "hookable": "^5.5.3", + "perfect-debounce": "^2.0.0" + } + }, + "node_modules/@vue/devtools-kit/node_modules/birpc": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.9.0.tgz", + "integrity": "sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vue/devtools-shared": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-8.1.1.tgz", + "integrity": "sha512-+h4ttmJYl/txpxHKaoZcaKpC+pvckgLzIDiSQlaQ7kKthKh8KuwoLW2D8hPJEnqKzXOvu15UHEoGyngAXCz0EQ==", + "license": "MIT" + }, + "node_modules/@vue/language-core": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-3.2.7.tgz", + "integrity": "sha512-Gn4q/tRxbpVGLEuARQ43p3YELlNAFgRUVCgW9U5Cr+5q4vfD2bWDWpl3ABbJMXUt5xlE1dF8dkigg2aUq7JYYw==", + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.28", + "@vue/compiler-dom": "^3.5.0", + "@vue/shared": "^3.5.0", + "alien-signals": "^3.1.2", + "muggle-string": "^0.4.1", + "path-browserify": "^1.0.1", + "picomatch": "^4.0.4" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.33", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.33.tgz", + "integrity": "sha512-p8UfIqyIhb0rYGlSgSBV+lPhF2iUSBcRy7enhTmPqKWadHy9kcOFYF1AejYBP9P+avnd3OBbD49DU4pLWX/94A==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.33" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.33", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.33.tgz", + "integrity": "sha512-UpFF45RI9//a7rvq7RdOQblb4tup7hHG9QsmIrxkFQLzQ7R8/iNQ5LE15NhLZ1/WcHMU2b47u6P33CPUelHyIQ==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.33", + "@vue/shared": "3.5.33" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.33", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.33.tgz", + "integrity": "sha512-IOxMsAOwquhfITgmOgaPYl7/j8gKUxUFoflRc+u4LxyD3+783xne8vNta1PONVCvCV9A0w7hkyEepINDqfO0tw==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.33", + "@vue/runtime-core": "3.5.33", + "@vue/shared": "3.5.33", + "csstype": "^3.2.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.33", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.33.tgz", + "integrity": "sha512-0xylq/8/h44lVG0pZFknv1XIdEgymq2E9n59uTWJBG+dIgiT0TMCSsxrN7nO16Z0MU0MPjFcguBbZV8Itk52Hw==", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.33", + "@vue/shared": "3.5.33" + }, + "peerDependencies": { + "vue": "3.5.33" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.33", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.33.tgz", + "integrity": "sha512-5vR2QIlmaLG77Ygd4pMP6+SGQ5yox9VhtnbDWTy9DzMzdmeLxZ1QqxrywEZ9sa1AVubfIJyaCG3ytyWU81ufcQ==", + "license": "MIT" + }, + "node_modules/abbrev": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz", + "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==", + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/alien-signals": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-3.1.2.tgz", + "integrity": "sha512-d9dYqZTS90WLiU0I5c6DHj/HcKkF8ZyGN3G5x8wSbslulz70KOxaqCT0hQCo9KOyhVqzqGojvNdJXoTumZOtcw==", + "license": "MIT" + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ansis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.2.0.tgz", + "integrity": "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==", + "license": "ISC", + "engines": { + "node": ">=14" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", + "license": "MIT" + }, + "node_modules/archiver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", + "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", + "license": "MIT", + "dependencies": { + "archiver-utils": "^5.0.2", + "async": "^3.2.4", + "buffer-crc32": "^1.0.0", + "readable-stream": "^4.0.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^3.0.0", + "zip-stream": "^6.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/archiver-utils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", + "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", + "license": "MIT", + "dependencies": { + "glob": "^10.0.0", + "graceful-fs": "^4.2.0", + "is-stream": "^2.0.1", + "lazystream": "^1.0.0", + "lodash": "^4.17.15", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/archiver-utils/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/archiver-utils/node_modules/brace-expansion": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/archiver-utils/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/archiver-utils/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/archiver-utils/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/archiver-utils/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/archiver-utils/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ast-kit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ast-kit/-/ast-kit-2.2.0.tgz", + "integrity": "sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "pathe": "^2.0.3" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/ast-walker-scope": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/ast-walker-scope/-/ast-walker-scope-0.8.3.tgz", + "integrity": "sha512-cbdCP0PGOBq0ASG+sjnKIoYkWMKhhz+F/h9pRexUdX2Hd38+WOlBkRKlqkGOSm0YQpcFMQBJeK4WspUAkwsEdg==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.4", + "ast-kit": "^2.1.3" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" + }, + "node_modules/async-sema": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/async-sema/-/async-sema-3.1.1.tgz", + "integrity": "sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==", + "license": "MIT" + }, + "node_modules/autoprefixer": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.0.tgz", + "integrity": "sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.2", + "caniuse-lite": "^1.0.30001787", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/b4a": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.8.0.tgz", + "integrity": "sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==", + "license": "Apache-2.0", + "peerDependencies": { + "react-native-b4a": "*" + }, + "peerDependenciesMeta": { + "react-native-b4a": { + "optional": true + } + } + }, + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/bare-events": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", + "license": "Apache-2.0", + "peerDependencies": { + "bare-abort-controller": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } + } + }, + "node_modules/bare-fs": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.7.1.tgz", + "integrity": "sha512-WDRsyVN52eAx/lBamKD6uyw8H4228h/x0sGGGegOamM2cd7Pag88GfMQalobXI+HaEUxpCkbKQUDOQqt9wawRw==", + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4", + "bare-url": "^2.2.2", + "fast-fifo": "^1.3.2" + }, + "engines": { + "bare": ">=1.16.0" + }, + "peerDependencies": { + "bare-buffer": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + } + } + }, + "node_modules/bare-os": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.9.0.tgz", + "integrity": "sha512-JTjuZyNIDpw+GytMO4a6TK1VXdVKKJr6DRxEHasyuYyShV2deuiHJK/ahGZlebc+SG0/wJCB9XK8gprBGDFi/Q==", + "license": "Apache-2.0", + "engines": { + "bare": ">=1.14.0" + } + }, + "node_modules/bare-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", + "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", + "license": "Apache-2.0", + "dependencies": { + "bare-os": "^3.0.1" + } + }, + "node_modules/bare-stream": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.13.0.tgz", + "integrity": "sha512-3zAJRZMDFGjdn+RVnNpF9kuELw+0Fl3lpndM4NcEOhb9zwtSo/deETfuIwMSE5BXanA0FrN1qVjffGwAg2Y7EA==", + "license": "Apache-2.0", + "dependencies": { + "streamx": "^2.25.0", + "teex": "^1.0.1" + }, + "peerDependencies": { + "bare-abort-controller": "*", + "bare-buffer": "*", + "bare-events": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + }, + "bare-buffer": { + "optional": true + }, + "bare-events": { + "optional": true + } + } + }, + "node_modules/bare-url": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.2.tgz", + "integrity": "sha512-/9a2j4ac6ckpmAHvod/ob7x439OAHst/drc2Clnq+reRYd/ovddwcF4LfoxHyNk5AuGBnPg+HqFjmE/Zpq6v0A==", + "license": "Apache-2.0", + "dependencies": { + "bare-path": "^3.0.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.21", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.21.tgz", + "integrity": "sha512-Q+rUQ7Uz8AHM7DEaNdwvfFCTq7a43lNTzuS94eiWqwyxfV/wJv+oUivef51T91mmRY4d4A1u9rcSvkeufCVXlA==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/better-sqlite3": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.9.0.tgz", + "integrity": "sha512-wqUv4Gm3toFpHDQmaKD4QhZm3g1DjUBI0yzS4UBl6lElUmXFYdTQmmEDpAFa5o8FiFiymURypEnfVHzILKaxqQ==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "bindings": "^1.5.0", + "prebuild-install": "^7.1.1" + }, + "engines": { + "node": "20.x || 22.x || 23.x || 24.x || 25.x" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "license": "MIT", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/birpc": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-4.0.0.tgz", + "integrity": "sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-crc32": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", + "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/c12": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/c12/-/c12-3.3.4.tgz", + "integrity": "sha512-cM0ApFQSBXuourJejzwv/AuPRvAxordTyParRVcHjjtXirtkzM0uK2L9TTn9s0cXZbG7E55jCivRQzoxYmRAlA==", + "license": "MIT", + "dependencies": { + "chokidar": "^5.0.0", + "confbox": "^0.2.4", + "defu": "^6.1.6", + "dotenv": "^17.3.1", + "exsolve": "^1.0.8", + "giget": "^3.2.0", + "jiti": "^2.6.1", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "perfect-debounce": "^2.1.0", + "pkg-types": "^2.3.0", + "rc9": "^3.0.1" + }, + "peerDependencies": { + "magicast": "*" + }, + "peerDependenciesMeta": { + "magicast": { + "optional": true + } + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001790", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001790.tgz", + "integrity": "sha512-bOoxfJPyYo+ds6W0YfptaCWbFnJYjh2Y1Eow5lRv+vI2u8ganPZqNm1JwNh0t2ELQCqIWg4B3dWEusgAmsoyOw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/canvas-confetti": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/canvas-confetti/-/canvas-confetti-1.9.4.tgz", + "integrity": "sha512-yxQbJkAVrFXWNbTUjPqjF7G+g6pDotOUHGbkZq2NELZUMDpiJ85rIEazVb8GTaAptNW2miJAXbs1BtioA251Pw==", + "license": "ISC", + "funding": { + "type": "donate", + "url": "https://www.paypal.me/kirilvatev" + } + }, + "node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "license": "MIT", + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/citty": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.2.2.tgz", + "integrity": "sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w==", + "license": "MIT" + }, + "node_modules/cliui": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", + "license": "ISC", + "dependencies": { + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/cluster-key-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", + "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "license": "MIT" + }, + "node_modules/compatx": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/compatx/-/compatx-0.2.0.tgz", + "integrity": "sha512-6gLRNt4ygsi5NyMVhceOCFv14CIdDFN7fQjX1U4+47qVE/+kjPoXMK65KWK+dWxmFzMTuKazoQ9sch6pM0p5oA==", + "license": "MIT" + }, + "node_modules/compress-commons": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", + "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "crc32-stream": "^6.0.0", + "is-stream": "^2.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/compress-commons/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "engines": [ + "node >= 6.0" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/confbox": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.4.tgz", + "integrity": "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==", + "license": "MIT" + }, + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/cookie-es": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-2.0.1.tgz", + "integrity": "sha512-aVf4A4hI2w70LnF7GG+7xDQUkliwiXWXFvTjkip4+b64ygDQ2sJPRSKFDHbxn8o0xu9QzPkMuuiWIXyFSE2slA==", + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", + "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/croner": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/croner/-/croner-10.0.1.tgz", + "integrity": "sha512-ixNtAJndqh173VQ4KodSdJEI6nuioBWI0V1ITNKhZZsO0pEMoDxz539T4FTTbSZ/xIOSuDnzxLVRqBVSvPNE2g==", + "funding": [ + { + "type": "other", + "url": "https://paypal.me/hexagonpp" + }, + { + "type": "github", + "url": "https://github.com/sponsors/hexagon" + } + ], + "license": "MIT", + "engines": { + "node": ">=18.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crossws": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz", + "integrity": "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==", + "license": "MIT", + "dependencies": { + "uncrypto": "^0.1.3" + } + }, + "node_modules/css-declaration-sorter": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.4.0.tgz", + "integrity": "sha512-LTuzjPoyA2vMGKKcaOqKSp7Ub2eGrNfKiZH4LpezxpNrsICGCSFvsQOI29psISxNZtaXibkC2CXzrQ5enMeGGw==", + "license": "ISC", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz", + "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.27.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.1.7.tgz", + "integrity": "sha512-N5LGn/OlhMxDTvKACwUPMzT34SSj1b022pvUAE/Vh6r2WD1aUCbc+QNIP/JjX9VVxebdJWZQ3352Lt4oF7dQ/g==", + "license": "MIT", + "dependencies": { + "cssnano-preset-default": "^7.0.15", + "lilconfig": "^3.1.3" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/cssnano-preset-default": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.15.tgz", + "integrity": "sha512-60kx7lJ40//HA85cIfQXSOJFby2D2V1pOMNHVCxue3KFWCjRzmiQyL9OvI+NAhwUlaojOfF9eK3nGvrJLCBUfQ==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.2", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^5.0.2", + "postcss-calc": "^10.1.1", + "postcss-colormin": "^7.0.9", + "postcss-convert-values": "^7.0.11", + "postcss-discard-comments": "^7.0.7", + "postcss-discard-duplicates": "^7.0.3", + "postcss-discard-empty": "^7.0.2", + "postcss-discard-overridden": "^7.0.2", + "postcss-merge-longhand": "^7.0.6", + "postcss-merge-rules": "^7.0.10", + "postcss-minify-font-values": "^7.0.2", + "postcss-minify-gradients": "^7.0.4", + "postcss-minify-params": "^7.0.8", + "postcss-minify-selectors": "^7.1.0", + "postcss-normalize-charset": "^7.0.2", + "postcss-normalize-display-values": "^7.0.2", + "postcss-normalize-positions": "^7.0.3", + "postcss-normalize-repeat-style": "^7.0.3", + "postcss-normalize-string": "^7.0.2", + "postcss-normalize-timing-functions": "^7.0.2", + "postcss-normalize-unicode": "^7.0.8", + "postcss-normalize-url": "^7.0.2", + "postcss-normalize-whitespace": "^7.0.2", + "postcss-ordered-values": "^7.0.3", + "postcss-reduce-initial": "^7.0.8", + "postcss-reduce-transforms": "^7.0.2", + "postcss-svgo": "^7.1.2", + "postcss-unique-selectors": "^7.0.6" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/cssnano-utils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-5.0.2.tgz", + "integrity": "sha512-kt41WLK7FLKfePzPi645Y+/NtW/nNM7Su6nlNUfJyRNW3JcuU3JU7+cWJc+JexTeZ8dRBvFufefdG2XpXkIo0A==", + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "license": "MIT", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "license": "CC0-1.0" + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/db0": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/db0/-/db0-0.3.4.tgz", + "integrity": "sha512-RiXXi4WaNzPTHEOu8UPQKMooIbqOEyqA1t7Z6MsdxSCeb8iUC9ko3LcmsLmeUt2SM5bctfArZKkRQggKZz7JNw==", + "license": "MIT", + "peerDependencies": { + "@electric-sql/pglite": "*", + "@libsql/client": "*", + "better-sqlite3": "*", + "drizzle-orm": "*", + "mysql2": "*", + "sqlite3": "*" + }, + "peerDependenciesMeta": { + "@electric-sql/pglite": { + "optional": true + }, + "@libsql/client": { + "optional": true + }, + "better-sqlite3": { + "optional": true + }, + "drizzle-orm": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "sqlite3": { + "optional": true + } + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-browser": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", + "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defu": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.7.tgz", + "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==", + "license": "MIT" + }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", + "license": "MIT" + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/devalue": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.7.1.tgz", + "integrity": "sha512-MUbZ586EgQqdRnC4yDrlod3BEdyvE4TapGYHMW2CiaW+KkkFmWEFqBUaLltEZCGi0iFXCEjRF0OjF0DV2QHjOA==", + "license": "MIT" + }, + "node_modules/diff": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", + "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-prop": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-10.1.0.tgz", + "integrity": "sha512-MVUtAugQMOff5RnBy2d9N31iG0lNwg1qAoAOn7pOK5wf94WIaE3My2p3uwTQuvS2AcqchkcR3bHByjaM0mmi7Q==", + "license": "MIT", + "dependencies": { + "type-fest": "^5.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dotenv": { + "version": "17.4.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.2.tgz", + "integrity": "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/drizzle-kit": { + "version": "0.31.10", + "resolved": "https://registry.npmjs.org/drizzle-kit/-/drizzle-kit-0.31.10.tgz", + "integrity": "sha512-7OZcmQUrdGI+DUNNsKBn1aW8qSoKuTH7d0mYgSP8bAzdFzKoovxEFnoGQp2dVs82EOJeYycqRtciopszwUf8bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@drizzle-team/brocli": "^0.10.2", + "@esbuild-kit/esm-loader": "^2.5.5", + "esbuild": "^0.25.4", + "tsx": "^4.21.0" + }, + "bin": { + "drizzle-kit": "bin.cjs" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/drizzle-kit/node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/drizzle-orm": { + "version": "0.45.2", + "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.45.2.tgz", + "integrity": "sha512-kY0BSaTNYWnoDMVoyY8uxmyHjpJW1geOmBMdSSicKo9CIIWkSxMIj2rkeSR51b8KAPB7m+qysjuHme5nKP+E5Q==", + "license": "Apache-2.0", + "peerDependencies": { + "@aws-sdk/client-rds-data": ">=3", + "@cloudflare/workers-types": ">=4", + "@electric-sql/pglite": ">=0.2.0", + "@libsql/client": ">=0.10.0", + "@libsql/client-wasm": ">=0.10.0", + "@neondatabase/serverless": ">=0.10.0", + "@op-engineering/op-sqlite": ">=2", + "@opentelemetry/api": "^1.4.1", + "@planetscale/database": ">=1.13", + "@prisma/client": "*", + "@tidbcloud/serverless": "*", + "@types/better-sqlite3": "*", + "@types/pg": "*", + "@types/sql.js": "*", + "@upstash/redis": ">=1.34.7", + "@vercel/postgres": ">=0.8.0", + "@xata.io/client": "*", + "better-sqlite3": ">=7", + "bun-types": "*", + "expo-sqlite": ">=14.0.0", + "gel": ">=2", + "knex": "*", + "kysely": "*", + "mysql2": ">=2", + "pg": ">=8", + "postgres": ">=3", + "sql.js": ">=1", + "sqlite3": ">=5" + }, + "peerDependenciesMeta": { + "@aws-sdk/client-rds-data": { + "optional": true + }, + "@cloudflare/workers-types": { + "optional": true + }, + "@electric-sql/pglite": { + "optional": true + }, + "@libsql/client": { + "optional": true + }, + "@libsql/client-wasm": { + "optional": true + }, + "@neondatabase/serverless": { + "optional": true + }, + "@op-engineering/op-sqlite": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@prisma/client": { + "optional": true + }, + "@tidbcloud/serverless": { + "optional": true + }, + "@types/better-sqlite3": { + "optional": true + }, + "@types/pg": { + "optional": true + }, + "@types/sql.js": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/postgres": { + "optional": true + }, + "@xata.io/client": { + "optional": true + }, + "better-sqlite3": { + "optional": true + }, + "bun-types": { + "optional": true + }, + "expo-sqlite": { + "optional": true + }, + "gel": { + "optional": true + }, + "knex": { + "optional": true + }, + "kysely": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "pg": { + "optional": true + }, + "postgres": { + "optional": true + }, + "prisma": { + "optional": true + }, + "sql.js": { + "optional": true + }, + "sqlite3": { + "optional": true + } + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "license": "MIT" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.344", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.344.tgz", + "integrity": "sha512-4MxfbmNDm+KPh066EZy+eUnkcDPcZ35wNmOWzFuh/ijvHsve6kbLTLURy88uCNK5FbpN+yk2nQY6BYh1GEt+wg==", + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.21.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.0.tgz", + "integrity": "sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-stack-parser-es": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-1.0.5.tgz", + "integrity": "sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/errx": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/errx/-/errx-0.1.0.tgz", + "integrity": "sha512-fZmsRiDNv07K6s2KkKFTiD2aIvECa7++PKyD5NC32tpRw46qZA3sOz+aM+/V9V0GDHxVTKLziveV4JhzBHDp9Q==", + "license": "MIT" + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", + "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.7", + "@esbuild/android-arm": "0.27.7", + "@esbuild/android-arm64": "0.27.7", + "@esbuild/android-x64": "0.27.7", + "@esbuild/darwin-arm64": "0.27.7", + "@esbuild/darwin-x64": "0.27.7", + "@esbuild/freebsd-arm64": "0.27.7", + "@esbuild/freebsd-x64": "0.27.7", + "@esbuild/linux-arm": "0.27.7", + "@esbuild/linux-arm64": "0.27.7", + "@esbuild/linux-ia32": "0.27.7", + "@esbuild/linux-loong64": "0.27.7", + "@esbuild/linux-mips64el": "0.27.7", + "@esbuild/linux-ppc64": "0.27.7", + "@esbuild/linux-riscv64": "0.27.7", + "@esbuild/linux-s390x": "0.27.7", + "@esbuild/linux-x64": "0.27.7", + "@esbuild/netbsd-arm64": "0.27.7", + "@esbuild/netbsd-x64": "0.27.7", + "@esbuild/openbsd-arm64": "0.27.7", + "@esbuild/openbsd-x64": "0.27.7", + "@esbuild/openharmony-arm64": "0.27.7", + "@esbuild/sunos-x64": "0.27.7", + "@esbuild/win32-arm64": "0.27.7", + "@esbuild/win32-ia32": "0.27.7", + "@esbuild/win32-x64": "0.27.7" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.7.0" + } + }, + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "license": "(MIT OR WTFPL)", + "engines": { + "node": ">=6" + } + }, + "node_modules/exsolve": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.8.tgz", + "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==", + "license": "MIT" + }, + "node_modules/externality": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/externality/-/externality-1.0.2.tgz", + "integrity": "sha512-LyExtJWKxtgVzmgtEHyQtLFpw1KFhQphF9nTG8TpAIVkiI/xQ3FJh75tRFLYl4hkn7BNIIdLJInuDAavX35pMw==", + "license": "MIT", + "dependencies": { + "enhanced-resolve": "^5.14.1", + "mlly": "^1.3.0", + "pathe": "^1.1.1", + "ufo": "^1.1.2" + } + }, + "node_modules/externality/node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "license": "MIT" + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-npm-meta": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/fast-npm-meta/-/fast-npm-meta-1.5.0.tgz", + "integrity": "sha512-71pTBPrA9WPPsJQ0Q06ZlTQQVJPYd87xZsvFwxFqru7a6kdriMVW1Hjd37W3W13ZuF/K/Zzq6eVlAHVoZCHuQw==", + "license": "MIT", + "bin": { + "fast-npm-meta": "dist/cli.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/fast-string-truncated-width": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-1.2.1.tgz", + "integrity": "sha512-Q9acT/+Uu3GwGj+5w/zsGuQjh9O1TyywhIwAxHudtWrgF09nHOPrvTLhQevPbttcxjr/SNN7mJmfOw/B1bXgow==", + "license": "MIT" + }, + "node_modules/fast-string-width": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-1.1.0.tgz", + "integrity": "sha512-O3fwIVIH5gKB38QNbdg+3760ZmGz0SZMgvwJbA1b2TGXceKE6A2cOlfogh1iw8lr049zPyd7YADHy+B7U4W9bQ==", + "license": "MIT", + "dependencies": { + "fast-string-truncated-width": "^1.2.0" + } + }, + "node_modules/fast-wrap-ansi": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.1.6.tgz", + "integrity": "sha512-HlUwET7a5gqjURj70D5jl7aC3Zmy4weA1SHUfM0JFI0Ptq987NH2TwbBFLoERhfwk+E+eaq4EK3jXoT+R3yp3w==", + "license": "MIT", + "dependencies": { + "fast-string-width": "^1.1.0" + } + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "license": "MIT" + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/fuse.js": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.3.0.tgz", + "integrity": "sha512-plz8RVjfcDedTGfVngWH1jmJvBvAwi1v2jecfDerbEnMcmOYUEEwKFTHbNoCiYyzaK2Ws8lABkTCcRSqCY1q4w==", + "license": "Apache-2.0", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/krisk" + } + }, + "node_modules/fzf": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fzf/-/fzf-0.5.2.tgz", + "integrity": "sha512-Tt4kuxLXFKHy8KT40zwsUPUkg1CrsgY25FxA2U/j/0WgEDCk3ddc/zLTCCcbSHX9FcKtLuVaDGtGE/STWC+j3Q==", + "license": "BSD-3-Clause" + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", + "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-port-please": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.2.0.tgz", + "integrity": "sha512-I9QVvBw5U/hw3RmWpYKRumUeaDgxTPd401x364rLmWBJcOQ753eov1eTgzDqRG9bqFIfDc7gfzcQEWrUri3o1A==", + "license": "MIT" + }, + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-tsconfig": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz", + "integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/giget": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/giget/-/giget-3.2.0.tgz", + "integrity": "sha512-GvHTWcykIR/fP8cj8dMpuMMkvaeJfPvYnhq0oW+chSeIr+ldX21ifU2Ms6KBoyKZQZmVaUAAhQ2EZ68KJF8a7A==", + "license": "MIT", + "bin": { + "giget": "dist/cli.mjs" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "license": "MIT" + }, + "node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/global-directory": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", + "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", + "license": "MIT", + "dependencies": { + "ini": "4.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-16.2.0.tgz", + "integrity": "sha512-QrJia2qDf5BB/V6HYlDTs0I0lBahyjLzpGQg3KT7FnCdTonAyPy2RtY802m2k4ALx6Dp752f82WsOczEVr3l6Q==", + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "fast-glob": "^3.3.3", + "ignore": "^7.0.5", + "is-path-inside": "^4.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.4.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/gzip-size": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-7.0.0.tgz", + "integrity": "sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==", + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/h3": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.11.tgz", + "integrity": "sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==", + "license": "MIT", + "dependencies": { + "cookie-es": "^1.2.3", + "crossws": "^0.3.5", + "defu": "^6.1.6", + "destr": "^2.0.5", + "iron-webcrypto": "^1.2.1", + "node-mock-http": "^1.0.4", + "radix3": "^1.1.2", + "ufo": "^1.6.3", + "uncrypto": "^0.1.3" + } + }, + "node_modules/h3/node_modules/cookie-es": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.3.tgz", + "integrity": "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==", + "license": "MIT" + }, + "node_modules/hasown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", + "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/http-shutdown": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/http-shutdown/-/http-shutdown-1.2.2.tgz", + "integrity": "sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==", + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/httpxy": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/httpxy/-/httpxy-0.5.1.tgz", + "integrity": "sha512-JPhqYiixe1A1I+MXDewWDZqeudBGU8Q9jCHYN8ML+779RQzLjTi78HBvWz4jMxUD6h2/vUL12g4q/mFM0OUw1A==", + "license": "MIT" + }, + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-meta": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/image-meta/-/image-meta-0.2.2.tgz", + "integrity": "sha512-3MOLanc3sb3LNGWQl1RlQlNWURE5g32aUphrDyFeCsxBTk08iE3VNe4CwsUZ0Qs1X+EfX0+r29Sxdpza4B+yRA==", + "license": "MIT" + }, + "node_modules/impound": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/impound/-/impound-1.1.5.tgz", + "integrity": "sha512-5AUn+QE0UofqNHu5f2Skf6Svukdg4ehOIq8O0EtqIx4jta0CDZYBPqpIHt0zrlUTiFVYlLpeH39DoikXBjPKpA==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.31", + "es-module-lexer": "^2.0.0", + "pathe": "^2.0.3", + "unplugin": "^3.0.0", + "unplugin-utils": "^0.3.1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ioredis": { + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.10.1.tgz", + "integrity": "sha512-HuEDBTI70aYdx1v6U97SbNx9F1+svQKBDo30o0b9fw055LMepzpOOd0Ccg9Q6tbqmBSJaMuY0fB7yw9/vjBYCA==", + "license": "MIT", + "dependencies": { + "@ioredis/commands": "1.5.1", + "cluster-key-slot": "^1.1.0", + "debug": "^4.3.4", + "denque": "^2.1.0", + "lodash.defaults": "^4.2.0", + "lodash.isarguments": "^3.1.0", + "redis-errors": "^1.2.0", + "redis-parser": "^3.0.0", + "standard-as-callback": "^2.1.0" + }, + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ioredis" + } + }, + "node_modules/iron-webcrypto": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", + "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/brc-dd" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-in-ssh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-in-ssh/-/is-in-ssh-1.0.0.tgz", + "integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-installed-globally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-1.0.0.tgz", + "integrity": "sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==", + "license": "MIT", + "dependencies": { + "global-directory": "^4.0.1", + "is-path-inside": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "license": "MIT" + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", + "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=20" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/knitwork": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/knitwork/-/knitwork-1.3.0.tgz", + "integrity": "sha512-4LqMNoONzR43B1W0ek0fhXMsDNW/zxa1NdFAVMY+k28pgZLovR4G3PB5MrpTxCy1QaZCqNoiaKPr5w5qZHfSNw==", + "license": "MIT" + }, + "node_modules/launch-editor": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.13.2.tgz", + "integrity": "sha512-4VVDnbOpLXy/s8rdRCSXb+zfMeFR0WlJWpET1iA9CQdlZDfwyLjUuGQzXU4VeOoey6AicSAluWan7Etga6Kcmg==", + "license": "MIT", + "dependencies": { + "picocolors": "^1.1.1", + "shell-quote": "^1.8.3" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "license": "MIT", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "devOptional": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/listhen": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/listhen/-/listhen-1.9.1.tgz", + "integrity": "sha512-4EhoyVcXEpNlY5HJRSQpH7Rba94M8N2JmI62ePjl0lrJKXSfG0F1FAgHGxBoz/T3pe41sUEwkIRRIcaUL0/Ofw==", + "license": "MIT", + "dependencies": { + "@parcel/watcher": "^2.5.6", + "@parcel/watcher-wasm": "^2.5.6", + "citty": "^0.2.2", + "consola": "^3.4.2", + "crossws": ">=0.2.0 <0.5.0", + "defu": "^6.1.6", + "get-port-please": "^3.2.0", + "h3": "^1.15.11", + "http-shutdown": "^1.2.2", + "jiti": "^2.6.1", + "mlly": "^1.8.2", + "node-forge": "^1.4.0", + "pathe": "^2.0.3", + "std-env": "^4.0.0", + "tinyclip": "^0.1.12", + "ufo": "^1.6.3", + "untun": "^0.1.3", + "uqr": "^0.1.2" + }, + "bin": { + "listen": "bin/listhen.mjs", + "listhen": "bin/listhen.mjs" + } + }, + "node_modules/local-pkg": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.2.tgz", + "integrity": "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==", + "license": "MIT", + "dependencies": { + "mlly": "^1.7.4", + "pkg-types": "^2.3.0", + "quansync": "^0.2.11" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "license": "MIT" + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "license": "MIT" + }, + "node_modules/lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==", + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-regexp": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/magic-regexp/-/magic-regexp-0.10.0.tgz", + "integrity": "sha512-Uly1Bu4lO1hwHUW0CQeSWuRtzCMNO00CmXtS8N6fyvB3B979GOEEeAkiTUDsmbYLAbvpUS/Kt5c4ibosAzVyVg==", + "license": "MIT", + "dependencies": { + "estree-walker": "^3.0.3", + "magic-string": "^0.30.12", + "mlly": "^1.7.2", + "regexp-tree": "^0.1.27", + "type-level-regexp": "~0.1.17", + "ufo": "^1.5.4", + "unplugin": "^2.0.0" + } + }, + "node_modules/magic-regexp/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/magic-regexp/node_modules/unplugin": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.11.tgz", + "integrity": "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "acorn": "^8.15.0", + "picomatch": "^4.0.3", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/magic-string-ast": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/magic-string-ast/-/magic-string-ast-1.0.3.tgz", + "integrity": "sha512-CvkkH1i81zl7mmb94DsRiFeG9V2fR2JeuK8yDgS8oiZSFa++wWLEgZ5ufEOyLHbvSbD1gTRKv9NdX69Rnvr9JA==", + "license": "MIT", + "dependencies": { + "magic-string": "^0.30.19" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/magicast": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.2.tgz", + "integrity": "sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "source-map-js": "^1.2.1" + } + }, + "node_modules/mdn-data": { + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz", + "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==", + "license": "CC0-1.0" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mime": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.1.0.tgz", + "integrity": "sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw==", + "funding": [ + "https://github.com/sponsors/broofa" + ], + "license": "MIT", + "bin": { + "mime": "bin/cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "license": "MIT" + }, + "node_modules/mlly": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.2.tgz", + "integrity": "sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==", + "license": "MIT", + "dependencies": { + "acorn": "^8.16.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.3" + } + }, + "node_modules/mlly/node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "license": "MIT" + }, + "node_modules/mlly/node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "node_modules/mocked-exports": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/mocked-exports/-/mocked-exports-0.1.1.tgz", + "integrity": "sha512-aF7yRQr/Q0O2/4pIXm6PZ5G+jAd7QS4Yu8m+WEeEHGnbo+7mE36CbLSDQiXYV8bVL3NfmdeqPJct0tUlnjVSnA==", + "license": "MIT" + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/muggle-string": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", + "license": "MIT" + }, + "node_modules/multer": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-2.1.1.tgz", + "integrity": "sha512-mo+QTzKlx8R7E5ylSXxWzGoXoZbOsRMpyitcht8By2KHvMbf3tjwosZ/Mu/XYU6UuJ3VZnODIrak5ZrPiPyB6A==", + "license": "MIT", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.6.0", + "concat-stream": "^2.0.0", + "type-is": "^1.6.18" + }, + "engines": { + "node": ">= 10.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nanotar": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/nanotar/-/nanotar-0.3.0.tgz", + "integrity": "sha512-Kv2JYYiCzt16Kt5QwAc9BFG89xfPNBx+oQL4GQXD9nLqPkZBiNaqaCWtwnbk/q7UVsTYevvM1b0UF8zmEI4pCg==", + "license": "MIT" + }, + "node_modules/napi-build-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", + "license": "MIT" + }, + "node_modules/nitropack": { + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/nitropack/-/nitropack-2.13.3.tgz", + "integrity": "sha512-C8vO7RxkU0AQ3HbYUumuG6MVM5JjRaBchke/rYFOp3EvrLtTBHZYhDVGECdpa27vNuOYRzm3GtQMn2YDOjDJLA==", + "license": "MIT", + "dependencies": { + "@cloudflare/kv-asset-handler": "^0.4.2", + "@rollup/plugin-alias": "^6.0.0", + "@rollup/plugin-commonjs": "^29.0.2", + "@rollup/plugin-inject": "^5.0.5", + "@rollup/plugin-json": "^6.1.0", + "@rollup/plugin-node-resolve": "^16.0.3", + "@rollup/plugin-replace": "^6.0.3", + "@rollup/plugin-terser": "^1.0.0", + "@vercel/nft": "^1.5.0", + "archiver": "^7.0.1", + "c12": "^3.3.4", + "chokidar": "^5.0.0", + "citty": "^0.2.2", + "compatx": "^0.2.0", + "confbox": "^0.2.4", + "consola": "^3.4.2", + "cookie-es": "^2.0.1", + "croner": "^10.0.1", + "crossws": "^0.3.5", + "db0": "^0.3.4", + "defu": "^6.1.6", + "destr": "^2.0.5", + "dot-prop": "^10.1.0", + "esbuild": "^0.27.5", + "escape-string-regexp": "^5.0.0", + "etag": "^1.8.1", + "exsolve": "^1.0.8", + "globby": "^16.2.0", + "gzip-size": "^7.0.0", + "h3": "^1.15.10", + "hookable": "^5.5.3", + "httpxy": "^0.5.0", + "ioredis": "^5.10.1", + "jiti": "^2.6.1", + "klona": "^2.0.6", + "knitwork": "^1.3.0", + "listhen": "^1.9.1", + "magic-string": "^0.30.21", + "magicast": "^0.5.2", + "mime": "^4.1.0", + "mlly": "^1.8.2", + "node-fetch-native": "^1.6.7", + "node-mock-http": "^1.0.4", + "ofetch": "^1.5.1", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "perfect-debounce": "^2.1.0", + "pkg-types": "^2.3.0", + "pretty-bytes": "^7.1.0", + "radix3": "^1.1.2", + "rollup": "^4.60.1", + "rollup-plugin-visualizer": "^7.0.1", + "scule": "^1.3.0", + "semver": "^7.7.4", + "serve-placeholder": "^2.0.2", + "serve-static": "^2.2.1", + "source-map": "^0.7.6", + "std-env": "^4.0.0", + "ufo": "^1.6.3", + "ultrahtml": "^1.6.0", + "uncrypto": "^0.1.3", + "unctx": "^2.5.0", + "unenv": "2.0.0-rc.24", + "unimport": "^6.0.2", + "unplugin-utils": "^0.3.1", + "unstorage": "^1.17.5", + "untyped": "^2.0.0", + "unwasm": "^0.5.3", + "youch": "^4.1.1", + "youch-core": "^0.3.3" + }, + "bin": { + "nitro": "dist/cli/index.mjs", + "nitropack": "dist/cli/index.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "xml2js": "^0.6.2" + }, + "peerDependenciesMeta": { + "xml2js": { + "optional": true + } + } + }, + "node_modules/node-abi": { + "version": "3.89.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.89.0.tgz", + "integrity": "sha512-6u9UwL0HlAl21+agMN3YAMXcKByMqwGx+pq+P76vii5f7hTPtKDp08/H9py6DY+cfDw7kQNTGEj/rly3IgbNQA==", + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "license": "MIT" + }, + "node_modules/node-ensure": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/node-ensure/-/node-ensure-0.0.0.tgz", + "integrity": "sha512-DRI60hzo2oKN1ma0ckc6nQWlHU69RH6xN0sjQTjMpChPfTYvKZdcQFfdYK2RWbJcKyUizSIy/l8OTGxMAM1QDw==", + "license": "MIT" + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch-native": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", + "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==", + "license": "MIT" + }, + "node_modules/node-forge": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz", + "integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==", + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-mock-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.4.tgz", + "integrity": "sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==", + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.38", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.38.tgz", + "integrity": "sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==", + "license": "MIT" + }, + "node_modules/nopt": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz", + "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==", + "license": "ISC", + "dependencies": { + "abbrev": "^3.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nuxt": { + "version": "3.21.2", + "resolved": "https://registry.npmjs.org/nuxt/-/nuxt-3.21.2.tgz", + "integrity": "sha512-XzZFj2KMK16zE0TfrGpjvgc378wZWvDzIpunHOHOT0Jj8zbV5qT1uQKaJb+fAHv6lf1A4nOMMWHrTmjAK4u0Zg==", + "license": "MIT", + "dependencies": { + "@dxup/nuxt": "^0.4.0", + "@nuxt/cli": "^3.34.0", + "@nuxt/devtools": "^3.2.3", + "@nuxt/kit": "3.21.2", + "@nuxt/nitro-server": "3.21.2", + "@nuxt/schema": "3.21.2", + "@nuxt/telemetry": "^2.7.0", + "@nuxt/vite-builder": "3.21.2", + "@unhead/vue": "^2.1.12", + "@vue/shared": "^3.5.30", + "c12": "^3.3.3", + "chokidar": "^5.0.0", + "compatx": "^0.2.0", + "consola": "^3.4.2", + "cookie-es": "^2.0.0", + "defu": "^6.1.4", + "destr": "^2.0.5", + "devalue": "^5.6.3", + "errx": "^0.1.0", + "escape-string-regexp": "^5.0.0", + "exsolve": "^1.0.8", + "h3": "^1.15.6", + "hookable": "^5.5.3", + "ignore": "^7.0.5", + "impound": "^1.1.5", + "jiti": "^2.6.1", + "klona": "^2.0.6", + "knitwork": "^1.3.0", + "magic-string": "^0.30.21", + "mlly": "^1.8.1", + "nanotar": "^0.3.0", + "nypm": "^0.6.5", + "ofetch": "^1.5.1", + "ohash": "^2.0.11", + "on-change": "^6.0.2", + "oxc-minify": "^0.117.0", + "oxc-parser": "^0.117.0", + "oxc-transform": "^0.117.0", + "oxc-walker": "^0.7.0", + "pathe": "^2.0.3", + "perfect-debounce": "^2.1.0", + "pkg-types": "^2.3.0", + "rou3": "^0.8.1", + "scule": "^1.3.0", + "semver": "^7.7.4", + "std-env": "^4.0.0", + "tinyglobby": "^0.2.15", + "ufo": "^1.6.3", + "ultrahtml": "^1.6.0", + "uncrypto": "^0.1.3", + "unctx": "^2.5.0", + "unimport": "^6.0.1", + "unplugin": "^3.0.0", + "unplugin-vue-router": "^0.19.2", + "untyped": "^2.0.0", + "vue": "^3.5.30", + "vue-router": "^4.6.4" + }, + "bin": { + "nuxi": "bin/nuxt.mjs", + "nuxt": "bin/nuxt.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "@parcel/watcher": "^2.1.0", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "peerDependenciesMeta": { + "@parcel/watcher": { + "optional": true + }, + "@types/node": { + "optional": true + } + } + }, + "node_modules/nuxt/node_modules/@nuxt/schema": { + "version": "3.21.2", + "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-3.21.2.tgz", + "integrity": "sha512-yZaJrZizRP4OQVCM7qRG3xIJ1xZ59npgg9jd3ng+BDs5ZvLqYP9rXnFikShc8EPUtR6+zhSPgKgy6L8wWcBKzQ==", + "license": "MIT", + "dependencies": { + "@vue/shared": "^3.5.30", + "defu": "^6.1.4", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0", + "std-env": "^4.0.0" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/nypm": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.6.tgz", + "integrity": "sha512-vRyr0r4cbBapw07Xw8xrj9Teq3o7MUD35rSaTcanDbW+aK2XHDgJFiU6ZTj2GBw7Q12ysdsyFss+Vdz4hQ0Y6Q==", + "license": "MIT", + "dependencies": { + "citty": "^0.2.2", + "pathe": "^2.0.3", + "tinyexec": "^1.1.1" + }, + "bin": { + "nypm": "dist/cli.mjs" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/obug": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT" + }, + "node_modules/ofetch": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.5.1.tgz", + "integrity": "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==", + "license": "MIT", + "dependencies": { + "destr": "^2.0.5", + "node-fetch-native": "^1.6.7", + "ufo": "^1.6.1" + } + }, + "node_modules/ohash": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", + "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", + "license": "MIT" + }, + "node_modules/on-change": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/on-change/-/on-change-6.0.2.tgz", + "integrity": "sha512-08+12qcOVEA0fS9g/VxKS27HaT94nRutUT77J2dr8zv/unzXopvhBuF8tNLWsoLQ5IgrQ6eptGeGqUYat82U1w==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sindresorhus/on-change?sponsor=1" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/open/-/open-11.0.0.tgz", + "integrity": "sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==", + "license": "MIT", + "dependencies": { + "default-browser": "^5.4.0", + "define-lazy-prop": "^3.0.0", + "is-in-ssh": "^1.0.0", + "is-inside-container": "^1.0.0", + "powershell-utils": "^0.1.0", + "wsl-utils": "^0.3.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/oxc-minify": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/oxc-minify/-/oxc-minify-0.117.0.tgz", + "integrity": "sha512-JHsv/b+bmBJkAzkHXgTN7RThloVxLHPT0ojHfjqxVeHuQB7LPpLUbJ2qfwz37sto9stZ9+AVwUP4b3gtR7p/Tw==", + "license": "MIT", + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/sponsors/Boshen" + }, + "optionalDependencies": { + "@oxc-minify/binding-android-arm-eabi": "0.117.0", + "@oxc-minify/binding-android-arm64": "0.117.0", + "@oxc-minify/binding-darwin-arm64": "0.117.0", + "@oxc-minify/binding-darwin-x64": "0.117.0", + "@oxc-minify/binding-freebsd-x64": "0.117.0", + "@oxc-minify/binding-linux-arm-gnueabihf": "0.117.0", + "@oxc-minify/binding-linux-arm-musleabihf": "0.117.0", + "@oxc-minify/binding-linux-arm64-gnu": "0.117.0", + "@oxc-minify/binding-linux-arm64-musl": "0.117.0", + "@oxc-minify/binding-linux-ppc64-gnu": "0.117.0", + "@oxc-minify/binding-linux-riscv64-gnu": "0.117.0", + "@oxc-minify/binding-linux-riscv64-musl": "0.117.0", + "@oxc-minify/binding-linux-s390x-gnu": "0.117.0", + "@oxc-minify/binding-linux-x64-gnu": "0.117.0", + "@oxc-minify/binding-linux-x64-musl": "0.117.0", + "@oxc-minify/binding-openharmony-arm64": "0.117.0", + "@oxc-minify/binding-wasm32-wasi": "0.117.0", + "@oxc-minify/binding-win32-arm64-msvc": "0.117.0", + "@oxc-minify/binding-win32-ia32-msvc": "0.117.0", + "@oxc-minify/binding-win32-x64-msvc": "0.117.0" + } + }, + "node_modules/oxc-parser": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/oxc-parser/-/oxc-parser-0.117.0.tgz", + "integrity": "sha512-l3cbgK5wUvWDVNWM/JFU77qDdGZK1wudnLsFcrRyNo/bL1CyU8pC25vDhMHikVY29lbK2InTWsX42RxVSutUdQ==", + "license": "MIT", + "dependencies": { + "@oxc-project/types": "^0.117.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/sponsors/Boshen" + }, + "optionalDependencies": { + "@oxc-parser/binding-android-arm-eabi": "0.117.0", + "@oxc-parser/binding-android-arm64": "0.117.0", + "@oxc-parser/binding-darwin-arm64": "0.117.0", + "@oxc-parser/binding-darwin-x64": "0.117.0", + "@oxc-parser/binding-freebsd-x64": "0.117.0", + "@oxc-parser/binding-linux-arm-gnueabihf": "0.117.0", + "@oxc-parser/binding-linux-arm-musleabihf": "0.117.0", + "@oxc-parser/binding-linux-arm64-gnu": "0.117.0", + "@oxc-parser/binding-linux-arm64-musl": "0.117.0", + "@oxc-parser/binding-linux-ppc64-gnu": "0.117.0", + "@oxc-parser/binding-linux-riscv64-gnu": "0.117.0", + "@oxc-parser/binding-linux-riscv64-musl": "0.117.0", + "@oxc-parser/binding-linux-s390x-gnu": "0.117.0", + "@oxc-parser/binding-linux-x64-gnu": "0.117.0", + "@oxc-parser/binding-linux-x64-musl": "0.117.0", + "@oxc-parser/binding-openharmony-arm64": "0.117.0", + "@oxc-parser/binding-wasm32-wasi": "0.117.0", + "@oxc-parser/binding-win32-arm64-msvc": "0.117.0", + "@oxc-parser/binding-win32-ia32-msvc": "0.117.0", + "@oxc-parser/binding-win32-x64-msvc": "0.117.0" + } + }, + "node_modules/oxc-transform": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/oxc-transform/-/oxc-transform-0.117.0.tgz", + "integrity": "sha512-u1Stl2uhDh9bFuOGjGXQIqx46IRUNMyHQkq59LayXNGS2flNv7RpZpRSWs5S5deuNP6jJZ12gtMBze+m4dOhmw==", + "license": "MIT", + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/sponsors/Boshen" + }, + "optionalDependencies": { + "@oxc-transform/binding-android-arm-eabi": "0.117.0", + "@oxc-transform/binding-android-arm64": "0.117.0", + "@oxc-transform/binding-darwin-arm64": "0.117.0", + "@oxc-transform/binding-darwin-x64": "0.117.0", + "@oxc-transform/binding-freebsd-x64": "0.117.0", + "@oxc-transform/binding-linux-arm-gnueabihf": "0.117.0", + "@oxc-transform/binding-linux-arm-musleabihf": "0.117.0", + "@oxc-transform/binding-linux-arm64-gnu": "0.117.0", + "@oxc-transform/binding-linux-arm64-musl": "0.117.0", + "@oxc-transform/binding-linux-ppc64-gnu": "0.117.0", + "@oxc-transform/binding-linux-riscv64-gnu": "0.117.0", + "@oxc-transform/binding-linux-riscv64-musl": "0.117.0", + "@oxc-transform/binding-linux-s390x-gnu": "0.117.0", + "@oxc-transform/binding-linux-x64-gnu": "0.117.0", + "@oxc-transform/binding-linux-x64-musl": "0.117.0", + "@oxc-transform/binding-openharmony-arm64": "0.117.0", + "@oxc-transform/binding-wasm32-wasi": "0.117.0", + "@oxc-transform/binding-win32-arm64-msvc": "0.117.0", + "@oxc-transform/binding-win32-ia32-msvc": "0.117.0", + "@oxc-transform/binding-win32-x64-msvc": "0.117.0" + } + }, + "node_modules/oxc-walker": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/oxc-walker/-/oxc-walker-0.7.0.tgz", + "integrity": "sha512-54B4KUhrzbzc4sKvKwVYm7E2PgeROpGba0/2nlNZMqfDyca+yOor5IMb4WLGBatGDT0nkzYdYuzylg7n3YfB7A==", + "license": "MIT", + "dependencies": { + "magic-regexp": "^0.10.0" + }, + "peerDependencies": { + "oxc-parser": ">=0.98.0" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "license": "MIT" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.5.tgz", + "integrity": "sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, + "node_modules/pdf-parse": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pdf-parse/-/pdf-parse-1.1.1.tgz", + "integrity": "sha512-v6ZJ/efsBpGrGGknjtq9J/oC8tZWq0KWL5vQrk2GlzLEQPUDB1ex+13Rmidl1neNN358Jn9EHZw5y07FFtaC7A==", + "license": "MIT", + "dependencies": { + "debug": "^3.1.0", + "node-ensure": "^0.0.0" + }, + "engines": { + "node": ">=6.8.1" + } + }, + "node_modules/pdf-parse/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/perfect-debounce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-2.1.0.tgz", + "integrity": "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-types": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz", + "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==", + "license": "MIT", + "dependencies": { + "confbox": "^0.2.2", + "exsolve": "^1.0.7", + "pathe": "^2.0.3" + } + }, + "node_modules/postcss": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.10.tgz", + "integrity": "sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.1.1.tgz", + "integrity": "sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12 || ^20.9 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.38" + } + }, + "node_modules/postcss-colormin": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.9.tgz", + "integrity": "sha512-EZpoUlmbXQUpe+g4ZaGM2kjGlHrQ7Bjzb3xHcNrC9ysI1tGoib6DAYvxg6aB7MGxsjgLF+Qx/jwZQkJ5cKDvXA==", + "license": "MIT", + "dependencies": { + "@colordx/core": "^5.2.0", + "browserslist": "^4.28.2", + "caniuse-api": "^3.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/postcss-convert-values": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.11.tgz", + "integrity": "sha512-H+s7P0f9jJylSysAHs3/5MhAx7GthDO05uw1h56L2xyEqpiLTFLEqBNw3PUYzD5p/AKwWaigCXf6FGELpOw9lw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/postcss-discard-comments": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.7.tgz", + "integrity": "sha512-FJhE3fSte7HaRNL4iwD8LTG9vWqj3puxXIdig6LfrFqc1TJRUhY4kXOkeTXZZfTXYny+k+SO7fd2fymj1wduJg==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.1.1" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.3.tgz", + "integrity": "sha512-9cRxXwhEM/aNZon1qZyToX4NmjbFbxOGbww+0CnbYFDbbPRGZ8jg4IbM8UlA+CzkXxM35itxyaHKNqBBg/RTDg==", + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/postcss-discard-empty": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.2.tgz", + "integrity": "sha512-NZFouOmOwtngJVgkNeI1LtkzFdYqIurxgy4wq3qNvIiXFURTZ3b/K7q3dP3QitlWQ5imHDQL0qSorItQhoxb1g==", + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-7.0.2.tgz", + "integrity": "sha512-Ym01X4v6U3sY8X0P1J9P+RTar+7JyLTOzDrxKSeaArFsLmkVu4KcAKPBWDYRIyZ/q4jwpSPnOnekeSSqXSXKUw==", + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.6.tgz", + "integrity": "sha512-lDsWeKRsssX/9vKFpingoRiuvGajtOGCJhs1kyaTJ5fzaVzs0aPPYe38UZ/ukMFEA5iuRIjQJHIkH2niYO3ubQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^7.0.10" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/postcss-merge-rules": { + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.10.tgz", + "integrity": "sha512-UXYKxkg8Cy1so/evF7AE/25PNXZb3E0SrvjdbtbGf+MW+doLenKqRLQzz6YZW469ktiXK2MVLFWtel/DftCV0Q==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.2", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^5.0.2", + "postcss-selector-parser": "^7.1.1" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-7.0.2.tgz", + "integrity": "sha512-Z82NUmnvhPrvMUaHfkaAVBmWQq9F8Dox4Dy0LiwbaTxfmDUWLQtS+0WCgKViwdWCPPajiY9YzoQftgqKdXkM5g==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-7.0.4.tgz", + "integrity": "sha512-g8MNeNyN+lbwKy8DCtJ6zU6awBL0InBsSOaKmgZ1MdRLVItLQUNFNAzzzBnOp4qowOcyyB6GetTlQ0/0UNXvag==", + "license": "MIT", + "dependencies": { + "@colordx/core": "^5.2.0", + "cssnano-utils": "^5.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/postcss-minify-params": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.8.tgz", + "integrity": "sha512-DIUKM5DZGTmxN7KFKT+rxt0FdPDmRrdK/k3n3+6Po+N/QYn06juwagHcfOVBG0CfCHwcnI612GAUCZc3eT+ZEg==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.2", + "cssnano-utils": "^5.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.1.0.tgz", + "integrity": "sha512-HYl/6I0aL+UvpA10t65BSa7h+tVjBgE6oRI5N/3ylX3vtwvlDL67G3FT3vYDPnTksxr0riiyJcT0tBtyRVoloA==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1", + "caniuse-api": "^3.0.0", + "cssesc": "^3.0.0", + "postcss-selector-parser": "^7.1.1" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-7.0.2.tgz", + "integrity": "sha512-YoINoiR4YKlzfB95Y93b0DSxWy7FLw+1SADIaznMHb88AKizpzfF80tolmiDEbYr1UM4r4Hw+NZq37SwT5f3uw==", + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.2.tgz", + "integrity": "sha512-wu/NTSjnp8sX5TnEHVPN+eScjAtRs18ELtEduG+Ek3GxjeUDUT+VAA3PJjVIXBcVIk6fiLYFj2iKH0q99S3T2Q==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-7.0.3.tgz", + "integrity": "sha512-1CJI++oA3yK/fQlPUcEngUfcSWS08Pkt9fK+jVgL53mmtHDBHi0YiuB0m3D9BXwZjmfvCc2GQmFqCAF/CVcPzQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.3.tgz", + "integrity": "sha512-RvImJ2Ml4LZSx31qC2C8LDiz65IgBNATtwEr9r3Aue+D0cCGbj4rjNojb/uGpEm4QxnOTzFqMvaDYuKiT1Cmpg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/postcss-normalize-string": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-7.0.2.tgz", + "integrity": "sha512-FqtrUh2BU2MnVeLeWBbJ2rwOjuDnA91XvoImc1BbgMWIxdxiPTaquflBHsmFBA3xh3pC3wPZO9W5MaIc7wU/Xw==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.2.tgz", + "integrity": "sha512-5H5fpXBnMACEXzn7k9RP7qWZ1eWg8cuZkUuFygStY7icOj+UucwMWXeMmdkF/iITvTVa7fP85tdRCJeznpdFfQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.8.tgz", + "integrity": "sha512-imCM3cwK3hvlAG4z1AzYM24m8BPA3/Jk/S71wfbn2I6+E2b+UwFaGvlNqydihXTSl3OFPeQXztqCzg+NGeSibQ==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/postcss-normalize-url": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-7.0.2.tgz", + "integrity": "sha512-bLnNY7t76NLRb9QQyCVmCN4qwoHxiq6vABH/CXav9wTuR6dNGHGQ72AyO/+h2quWxZk3l7BqxNL1vtDi9H6y1g==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.2.tgz", + "integrity": "sha512-TNSVkuhkeOhl36WruQlflxOb7HweoeZowSusNpfsM1+ZvqJ24Mc+xksu05ecMQxlu+0zgI8pyznO2EWqDCQbLA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/postcss-ordered-values": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-7.0.3.tgz", + "integrity": "sha512-FTt6R9RF7NAYfpOHa2XFPm89FVuo5GiIbcfwOXFy1MYF38BeiNW9ke8ybw9Pk62eEsUlRVVbxHWA3B7ERYqOOA==", + "license": "MIT", + "dependencies": { + "cssnano-utils": "^5.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.8.tgz", + "integrity": "sha512-VeVRmbgpgTZuRcDQdqnsB4iYTeS2dBRV07UdwK6V3x61F1xTQ2pgIzHBIR4rQYRlXRNKBTGYYhEL1eNA7w9vaQ==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.2", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.2.tgz", + "integrity": "sha512-OV5P9hMnf7kEkeXVXyS5ESqxbIls7a3TqFymUAV5JICO/9YCBEU+QQhQjZiDHaLwFdV7/CL481kVeBUk5FdY3w==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-7.1.2.tgz", + "integrity": "sha512-ixExc8m+/68yuSYQzV/1DgtTup/7nI2dN9eiDS5GMRUzeCH4q9UcqeZPwcSVhdf8ay9fRwXDUHwcY5/XzQSszQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^4.0.1" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >= 18" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.6.tgz", + "integrity": "sha512-cDxnYw1QuBMW5w3svZ0BlYF0IA4Amr+1JoTLXzu6vDFPNwohN2QU+sPZNx15b930LR7ce+/600h28/cYoxO9vw==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.1.1" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, + "node_modules/powershell-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.1.0.tgz", + "integrity": "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/prebuild-install": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "deprecated": "No longer maintained. Please contact the author of the relevant native addon; alternatives are available.", + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^2.0.0", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/pretty-bytes": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-7.1.0.tgz", + "integrity": "sha512-nODzvTiYVRGRqAOvE84Vk5JDPyyxsVk0/fbA/bq7RqlnhksGpset09XTxbpvLTIjoaF7K8Z8DG8yHtKGTPSYRw==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/quansync": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", + "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/radix3": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz", + "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==", + "license": "MIT" + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/rc9": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rc9/-/rc9-3.0.1.tgz", + "integrity": "sha512-gMDyleLWVE+i6Sgtc0QbbY6pEKqYs97NGi6isHQPqYlLemPoO8dxQ3uGi0f4NiP98c+jMW6cG1Kx9dDwfvqARQ==", + "license": "MIT", + "dependencies": { + "defu": "^6.1.6", + "destr": "^2.0.5" + } + }, + "node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/readdir-glob/node_modules/brace-expansion": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/readdirp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", + "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/redis-errors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", + "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/redis-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", + "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", + "license": "MIT", + "dependencies": { + "redis-errors": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regexp-tree": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", + "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", + "license": "MIT", + "bin": { + "regexp-tree": "bin/regexp-tree" + } + }, + "node_modules/resolve": { + "version": "1.22.12", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", + "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "devOptional": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.2.tgz", + "integrity": "sha512-J9qZyW++QK/09NyN/zeO0dG/1GdGfyp9lV8ajHnRVLfo/uFsbji5mHnDgn/qYdUHyCkM2N+8VyspgZclfAh0eQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.60.2", + "@rollup/rollup-android-arm64": "4.60.2", + "@rollup/rollup-darwin-arm64": "4.60.2", + "@rollup/rollup-darwin-x64": "4.60.2", + "@rollup/rollup-freebsd-arm64": "4.60.2", + "@rollup/rollup-freebsd-x64": "4.60.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.2", + "@rollup/rollup-linux-arm-musleabihf": "4.60.2", + "@rollup/rollup-linux-arm64-gnu": "4.60.2", + "@rollup/rollup-linux-arm64-musl": "4.60.2", + "@rollup/rollup-linux-loong64-gnu": "4.60.2", + "@rollup/rollup-linux-loong64-musl": "4.60.2", + "@rollup/rollup-linux-ppc64-gnu": "4.60.2", + "@rollup/rollup-linux-ppc64-musl": "4.60.2", + "@rollup/rollup-linux-riscv64-gnu": "4.60.2", + "@rollup/rollup-linux-riscv64-musl": "4.60.2", + "@rollup/rollup-linux-s390x-gnu": "4.60.2", + "@rollup/rollup-linux-x64-gnu": "4.60.2", + "@rollup/rollup-linux-x64-musl": "4.60.2", + "@rollup/rollup-openbsd-x64": "4.60.2", + "@rollup/rollup-openharmony-arm64": "4.60.2", + "@rollup/rollup-win32-arm64-msvc": "4.60.2", + "@rollup/rollup-win32-ia32-msvc": "4.60.2", + "@rollup/rollup-win32-x64-gnu": "4.60.2", + "@rollup/rollup-win32-x64-msvc": "4.60.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-visualizer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-7.0.1.tgz", + "integrity": "sha512-UJUT4+1Ho4OcWmPYU3sYXgUqI8B8Ayfe06MX7y0qCJ1K8aGoKtR/NDd/2nZqM7ADkrzny+I99Ul7GgyoiVNAgg==", + "license": "MIT", + "dependencies": { + "open": "^11.0.0", + "picomatch": "^4.0.2", + "source-map": "^0.7.4", + "yargs": "^18.0.0" + }, + "bin": { + "rollup-plugin-visualizer": "dist/bin/cli.js" + }, + "engines": { + "node": ">=22" + }, + "peerDependencies": { + "rolldown": "1.x || ^1.0.0-beta || ^1.0.0-rc", + "rollup": "2.x || 3.x || 4.x" + }, + "peerDependenciesMeta": { + "rolldown": { + "optional": true + }, + "rollup": { + "optional": true + } + } + }, + "node_modules/rou3": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/rou3/-/rou3-0.8.1.tgz", + "integrity": "sha512-ePa+XGk00/3HuCqrEnK3LxJW7I0SdNg6EFzKUJG73hMAdDcOUC/i/aSz7LSDwLrGr33kal/rqOGydzwl6U7zBA==", + "license": "MIT" + }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz", + "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/scule": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz", + "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serialize-javascript": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.5.tgz", + "integrity": "sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/seroval": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/seroval/-/seroval-1.5.2.tgz", + "integrity": "sha512-xcRN39BdsnO9Tf+VzsE7b3JyTJASItIV1FVFewJKCFcW4s4haIKS3e6vj8PGB9qBwC7tnuOywQMdv5N4qkzi7Q==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/serve-placeholder": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/serve-placeholder/-/serve-placeholder-2.0.2.tgz", + "integrity": "sha512-/TMG8SboeiQbZJWRlfTCqMs2DD3SZgWp0kDQePz9yUuCnDfDh/92gf7/PxGhzXTKBIPASIHxFcZndoNbp6QOLQ==", + "license": "MIT", + "dependencies": { + "defu": "^6.1.4" + } + }, + "node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/simple-git": { + "version": "3.36.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.36.0.tgz", + "integrity": "sha512-cGQjLjK8bxJw4QuYT7gxHw3/IouVESbhahSsHrX97MzCL1gu2u7oy38W6L2ZIGECEfIBG4BabsWDPjBxJENv9Q==", + "license": "MIT", + "dependencies": { + "@kwsites/file-exists": "^1.1.1", + "@kwsites/promise-deferred": "^1.1.1", + "@simple-git/args-pathspec": "^1.0.3", + "@simple-git/argv-parser": "^1.1.0", + "debug": "^4.4.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/steveukx/git-js?sponsor=1" + } + }, + "node_modules/sirv": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", + "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/smob": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/smob/-/smob-1.6.1.tgz", + "integrity": "sha512-KAkBqZl3c2GvNgNhcoyJae1aKldDW0LO279wF9bk1PnluRTETKBq0WyzRXxEhoQLk56yHaOY4JCBEKDuJIET5g==", + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/srvx": { + "version": "0.11.15", + "resolved": "https://registry.npmjs.org/srvx/-/srvx-0.11.15.tgz", + "integrity": "sha512-iXsux0UcOjdvs0LCMa2Ws3WwcDUozA3JN3BquNXkaFPP7TpRqgunKdEgoZ/uwb1J6xaYHfxtz9Twlh6yzwM6Tg==", + "license": "MIT", + "bin": { + "srvx": "bin/srvx.mjs" + }, + "engines": { + "node": ">=20.16.0" + } + }, + "node_modules/standard-as-callback": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", + "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==", + "license": "MIT" + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/std-env": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.1.0.tgz", + "integrity": "sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==", + "license": "MIT" + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/streamx": { + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.25.0.tgz", + "integrity": "sha512-0nQuG6jf1w+wddNEEXCF4nTg3LtufWINB5eFEN+5TNZW7KWJp6x87+JFL43vaAUPyCfH1wID+mNVyW6OHtFamg==", + "license": "MIT", + "dependencies": { + "events-universal": "^1.0.0", + "fast-fifo": "^1.3.2", + "text-decoder": "^1.1.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-literal": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz", + "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==", + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "license": "MIT" + }, + "node_modules/structured-clone-es": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/structured-clone-es/-/structured-clone-es-2.0.0.tgz", + "integrity": "sha512-5UuAHmBLXYPCl22xWJrFuGmIhBKQzxISPVz6E7nmTmTcAOpUzlbjKJsRrCE4vADmMQ0dzeCnlWn9XufnAGf76Q==", + "license": "ISC" + }, + "node_modules/stylehacks": { + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.10.tgz", + "integrity": "sha512-sRJ7klmhe/Fl5woJcbJUa2qP1Ueffsl1CQI4ePvqXLkZmcIuAt09aP9uT/FOFPqXh9Rh8M5UkgEnwTdTKn/Aag==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.2", + "postcss-selector-parser": "^7.1.1" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.10" + } + }, + "node_modules/supports-color": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz", + "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svgo": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.1.tgz", + "integrity": "sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w==", + "license": "MIT", + "dependencies": { + "commander": "^11.1.0", + "css-select": "^5.1.0", + "css-tree": "^3.0.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.1.1", + "sax": "^1.5.0" + }, + "bin": { + "svgo": "bin/svgo.js" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/tagged-tag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tagged-tag/-/tagged-tag-1.0.0.tgz", + "integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tailwindcss": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.2.4.tgz", + "integrity": "sha512-HhKppgO81FQof5m6TEnuBWCZGgfRAWbaeOaGT00KOy/Pf/j6oUihdvBpA7ltCeAvZpFhW3j0PTclkxsd4IXYDA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tar": { + "version": "7.5.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.13.tgz", + "integrity": "sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tar-fs": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", + "license": "MIT", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-fs/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "license": "ISC" + }, + "node_modules/tar-fs/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/tar-fs/node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.8.tgz", + "integrity": "sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ==", + "license": "MIT", + "dependencies": { + "b4a": "^1.6.4", + "bare-fs": "^4.5.5", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/teex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", + "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", + "license": "MIT", + "dependencies": { + "streamx": "^2.12.5" + } + }, + "node_modules/terser": { + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.2.tgz", + "integrity": "sha512-uxfo9fPcSgLDYob/w1FuL0c99MWiJDnv+5qXSQc5+Ki5NjVNsYi66INnMFBjf6uFz6OnX12piJQPF4IpjJTNTw==", + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/text-decoder": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz", + "integrity": "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==", + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, + "node_modules/tinyclip": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/tinyclip/-/tinyclip-0.1.12.tgz", + "integrity": "sha512-Ae3OVUqifDw0wBriIBS7yVaW44Dp6eSHQcyq4Igc7eN2TJH/2YsicswaW+J/OuMvhpDPOKEgpAZCjkb4hpoyeA==", + "license": "MIT", + "engines": { + "node": "^16.14.0 || >= 17.3.0" + } + }, + "node_modules/tinyexec": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.1.1.tgz", + "integrity": "sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD", + "optional": true + }, + "node_modules/tsx": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz", + "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.27.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type-fest": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.6.0.tgz", + "integrity": "sha512-8ZiHFm91orbSAe2PSAiSVBVko18pbhbiB3U9GglSzF/zCGkR+rxpHx6sEMCUm4kxY4LjDIUGgCfUMtwfZfjfUA==", + "license": "(MIT OR CC0-1.0)", + "dependencies": { + "tagged-tag": "^1.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-level-regexp": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/type-level-regexp/-/type-level-regexp-0.1.17.tgz", + "integrity": "sha512-wTk4DH3cxwk196uGLK/E9pE45aLfeKJacKmcEgEOA/q5dnPGNxXt0cfYdFxb57L+sEpf1oJH4Dnx/pnRcku9jg==", + "license": "MIT" + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "license": "MIT" + }, + "node_modules/typescript": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ufo": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz", + "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==", + "license": "MIT" + }, + "node_modules/ultrahtml": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.6.0.tgz", + "integrity": "sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==", + "license": "MIT" + }, + "node_modules/uncrypto": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", + "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==", + "license": "MIT" + }, + "node_modules/unctx": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/unctx/-/unctx-2.5.0.tgz", + "integrity": "sha512-p+Rz9x0R7X+CYDkT+Xg8/GhpcShTlU8n+cf9OtOEf7zEQsNcCZO1dPKNRDqvUTaq+P32PMMkxWHwfrxkqfqAYg==", + "license": "MIT", + "dependencies": { + "acorn": "^8.15.0", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21", + "unplugin": "^2.3.11" + } + }, + "node_modules/unctx/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/unctx/node_modules/unplugin": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.11.tgz", + "integrity": "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "acorn": "^8.15.0", + "picomatch": "^4.0.3", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/undici-types": { + "version": "7.19.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz", + "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/unenv": { + "version": "2.0.0-rc.24", + "resolved": "https://registry.npmjs.org/unenv/-/unenv-2.0.0-rc.24.tgz", + "integrity": "sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==", + "license": "MIT", + "dependencies": { + "pathe": "^2.0.3" + } + }, + "node_modules/unhead": { + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/unhead/-/unhead-2.1.13.tgz", + "integrity": "sha512-jO9M1sI6b2h/1KpIu4Jeu+ptumLmUKboRRLxys5pYHFeT+lqTzfNHbYUX9bxVDhC1FBszAGuWcUVlmvIPsah8Q==", + "license": "MIT", + "dependencies": { + "hookable": "^6.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + } + }, + "node_modules/unhead/node_modules/hookable": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-6.1.1.tgz", + "integrity": "sha512-U9LYDy1CwhMCnprUfeAZWZGByVbhd54hwepegYTK7Pi5NvqEj63ifz5z+xukznehT7i6NIZRu89Ay1AZmRsLEQ==", + "license": "MIT" + }, + "node_modules/unicorn-magic": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.4.0.tgz", + "integrity": "sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unimport": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/unimport/-/unimport-6.1.1.tgz", + "integrity": "sha512-ZY3adHF8WFSaiF1O+Eqtltt4wMZPGQ+WWLtnbc31TxglU/dx7q8B66kvXdfyGTWA25X8OO00X9b9iyLzrWOZmw==", + "license": "MIT", + "dependencies": { + "acorn": "^8.16.0", + "escape-string-regexp": "^5.0.0", + "estree-walker": "^3.0.3", + "local-pkg": "^1.1.2", + "magic-string": "^0.30.21", + "mlly": "^1.8.2", + "pathe": "^2.0.3", + "picomatch": "^4.0.4", + "pkg-types": "^2.3.0", + "scule": "^1.3.0", + "strip-literal": "^3.1.0", + "tinyglobby": "^0.2.16", + "unplugin": "^3.0.0", + "unplugin-utils": "^0.3.1" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/unimport/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/unplugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-3.0.0.tgz", + "integrity": "sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "picomatch": "^4.0.3", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/unplugin-utils": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/unplugin-utils/-/unplugin-utils-0.3.1.tgz", + "integrity": "sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==", + "license": "MIT", + "dependencies": { + "pathe": "^2.0.3", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/unplugin-vue-router": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/unplugin-vue-router/-/unplugin-vue-router-0.19.2.tgz", + "integrity": "sha512-u5dgLBarxE5cyDK/hzJGfpCTLIAyiTXGlo85COuD4Nssj6G7NxS+i9mhCWz/1p/ud1eMwdcUbTXehQe41jYZUA==", + "deprecated": "Merged into vuejs/router. Migrate: https://router.vuejs.org/guide/migration/v4-to-v5.html", + "license": "MIT", + "dependencies": { + "@babel/generator": "^7.28.5", + "@vue-macros/common": "^3.1.1", + "@vue/language-core": "^3.2.1", + "ast-walker-scope": "^0.8.3", + "chokidar": "^5.0.0", + "json5": "^2.2.3", + "local-pkg": "^1.1.2", + "magic-string": "^0.30.21", + "mlly": "^1.8.0", + "muggle-string": "^0.4.1", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "scule": "^1.3.0", + "tinyglobby": "^0.2.15", + "unplugin": "^2.3.11", + "unplugin-utils": "^0.3.1", + "yaml": "^2.8.2" + }, + "peerDependencies": { + "@vue/compiler-sfc": "^3.5.17", + "vue-router": "^4.6.0" + }, + "peerDependenciesMeta": { + "vue-router": { + "optional": true + } + } + }, + "node_modules/unplugin-vue-router/node_modules/unplugin": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.11.tgz", + "integrity": "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "acorn": "^8.15.0", + "picomatch": "^4.0.3", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/unstorage": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.5.tgz", + "integrity": "sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg==", + "license": "MIT", + "dependencies": { + "anymatch": "^3.1.3", + "chokidar": "^5.0.0", + "destr": "^2.0.5", + "h3": "^1.15.10", + "lru-cache": "^11.2.7", + "node-fetch-native": "^1.6.7", + "ofetch": "^1.5.1", + "ufo": "^1.6.3" + }, + "peerDependencies": { + "@azure/app-configuration": "^1.8.0", + "@azure/cosmos": "^4.2.0", + "@azure/data-tables": "^13.3.0", + "@azure/identity": "^4.6.0", + "@azure/keyvault-secrets": "^4.9.0", + "@azure/storage-blob": "^12.26.0", + "@capacitor/preferences": "^6 || ^7 || ^8", + "@deno/kv": ">=0.9.0", + "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", + "@planetscale/database": "^1.19.0", + "@upstash/redis": "^1.34.3", + "@vercel/blob": ">=0.27.1", + "@vercel/functions": "^2.2.12 || ^3.0.0", + "@vercel/kv": "^1 || ^2 || ^3", + "aws4fetch": "^1.0.20", + "db0": ">=0.2.1", + "idb-keyval": "^6.2.1", + "ioredis": "^5.4.2", + "uploadthing": "^7.4.4" + }, + "peerDependenciesMeta": { + "@azure/app-configuration": { + "optional": true + }, + "@azure/cosmos": { + "optional": true + }, + "@azure/data-tables": { + "optional": true + }, + "@azure/identity": { + "optional": true + }, + "@azure/keyvault-secrets": { + "optional": true + }, + "@azure/storage-blob": { + "optional": true + }, + "@capacitor/preferences": { + "optional": true + }, + "@deno/kv": { + "optional": true + }, + "@netlify/blobs": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/blob": { + "optional": true + }, + "@vercel/functions": { + "optional": true + }, + "@vercel/kv": { + "optional": true + }, + "aws4fetch": { + "optional": true + }, + "db0": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "uploadthing": { + "optional": true + } + } + }, + "node_modules/unstorage/node_modules/lru-cache": { + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.5.tgz", + "integrity": "sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/untun": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/untun/-/untun-0.1.3.tgz", + "integrity": "sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==", + "license": "MIT", + "dependencies": { + "citty": "^0.1.5", + "consola": "^3.2.3", + "pathe": "^1.1.1" + }, + "bin": { + "untun": "bin/untun.mjs" + } + }, + "node_modules/untun/node_modules/citty": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", + "license": "MIT", + "dependencies": { + "consola": "^3.2.3" + } + }, + "node_modules/untun/node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "license": "MIT" + }, + "node_modules/untyped": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/untyped/-/untyped-2.0.0.tgz", + "integrity": "sha512-nwNCjxJTjNuLCgFr42fEak5OcLuB3ecca+9ksPFNvtfYSLpjf+iJqSIaSnIile6ZPbKYxI5k2AfXqeopGudK/g==", + "license": "MIT", + "dependencies": { + "citty": "^0.1.6", + "defu": "^6.1.4", + "jiti": "^2.4.2", + "knitwork": "^1.2.0", + "scule": "^1.3.0" + }, + "bin": { + "untyped": "dist/cli.mjs" + } + }, + "node_modules/untyped/node_modules/citty": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", + "license": "MIT", + "dependencies": { + "consola": "^3.2.3" + } + }, + "node_modules/unwasm": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/unwasm/-/unwasm-0.5.3.tgz", + "integrity": "sha512-keBgTSfp3r6+s9ZcSma+0chwxQdmLbB5+dAD9vjtB21UTMYuKAxHXCU1K2CbCtnP09EaWeRvACnXk0EJtUx+hw==", + "license": "MIT", + "dependencies": { + "exsolve": "^1.0.8", + "knitwork": "^1.3.0", + "magic-string": "^0.30.21", + "mlly": "^1.8.0", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uqr": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/uqr/-/uqr-0.1.3.tgz", + "integrity": "sha512-0rjE8iEJe4YmT9TOhwsZtqCMRLc5DXZUI2UEYUUg63ikBkqqE5EYWaI0etFe/5KUcmcYwLih2RND1kq+hrUJXA==", + "license": "MIT" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/vite": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.2.tgz", + "integrity": "sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-dev-rpc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vite-dev-rpc/-/vite-dev-rpc-1.1.0.tgz", + "integrity": "sha512-pKXZlgoXGoE8sEKiKJSng4hI1sQ4wi5YT24FCrwrLt6opmkjlqPPVmiPWWJn8M8byMxRGzp1CrFuqQs4M/Z39A==", + "license": "MIT", + "dependencies": { + "birpc": "^2.4.0", + "vite-hot-client": "^2.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.1 || ^7.0.0-0" + } + }, + "node_modules/vite-dev-rpc/node_modules/birpc": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.9.0.tgz", + "integrity": "sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/vite-hot-client": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vite-hot-client/-/vite-hot-client-2.1.0.tgz", + "integrity": "sha512-7SpgZmU7R+dDnSmvXE1mfDtnHLHQSisdySVR7lO8ceAXvM0otZeuQQ6C8LrS5d/aYyP/QZ0hI0L+dIPrm4YlFQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0" + } + }, + "node_modules/vite-node": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-5.3.0.tgz", + "integrity": "sha512-8f20COPYJujc3OKPX6OuyBy3ZIv2det4eRRU4GY1y2MjbeGSUmPjedxg1b72KnTagCofwvZ65ThzjxDW2AtQFQ==", + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "es-module-lexer": "^2.0.0", + "obug": "^2.1.1", + "pathe": "^2.0.3", + "vite": "^7.3.1" + }, + "bin": { + "vite-node": "dist/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://opencollective.com/antfu" + } + }, + "node_modules/vite-plugin-checker": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/vite-plugin-checker/-/vite-plugin-checker-0.12.0.tgz", + "integrity": "sha512-CmdZdDOGss7kdQwv73UyVgLPv0FVYe5czAgnmRX2oKljgEvSrODGuClaV3PDR2+3ou7N/OKGauDDBjy2MB07Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "chokidar": "^4.0.3", + "npm-run-path": "^6.0.0", + "picocolors": "^1.1.1", + "picomatch": "^4.0.3", + "tiny-invariant": "^1.3.3", + "tinyglobby": "^0.2.15", + "vscode-uri": "^3.1.0" + }, + "engines": { + "node": ">=16.11" + }, + "peerDependencies": { + "@biomejs/biome": ">=1.7", + "eslint": ">=9.39.1", + "meow": "^13.2.0", + "optionator": "^0.9.4", + "oxlint": ">=1", + "stylelint": ">=16", + "typescript": "*", + "vite": ">=5.4.21", + "vls": "*", + "vti": "*", + "vue-tsc": "~2.2.10 || ^3.0.0" + }, + "peerDependenciesMeta": { + "@biomejs/biome": { + "optional": true + }, + "eslint": { + "optional": true + }, + "meow": { + "optional": true + }, + "optionator": { + "optional": true + }, + "oxlint": { + "optional": true + }, + "stylelint": { + "optional": true + }, + "typescript": { + "optional": true + }, + "vls": { + "optional": true + }, + "vti": { + "optional": true + }, + "vue-tsc": { + "optional": true + } + } + }, + "node_modules/vite-plugin-checker/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/vite-plugin-checker/node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vite-plugin-checker/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vite-plugin-checker/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/vite-plugin-checker/node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vite-plugin-inspect": { + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-11.3.3.tgz", + "integrity": "sha512-u2eV5La99oHoYPHE6UvbwgEqKKOQGz86wMg40CCosP6q8BkB6e5xPneZfYagK4ojPJSj5anHCrnvC20DpwVdRA==", + "license": "MIT", + "dependencies": { + "ansis": "^4.1.0", + "debug": "^4.4.1", + "error-stack-parser-es": "^1.0.5", + "ohash": "^2.0.11", + "open": "^10.2.0", + "perfect-debounce": "^2.0.0", + "sirv": "^3.0.1", + "unplugin-utils": "^0.3.0", + "vite-dev-rpc": "^1.1.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "@nuxt/kit": { + "optional": true + } + } + }, + "node_modules/vite-plugin-inspect/node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vite-plugin-inspect/node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vite-plugin-vue-tracer": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/vite-plugin-vue-tracer/-/vite-plugin-vue-tracer-1.3.0.tgz", + "integrity": "sha512-Cgfce6VikzOw5MUJTpeg50s5rRjzU1Vr61ZjuHunVVHLjZZ5AUlgyExHthZ3r59vtoz9W2rDt23FYG81avYBKw==", + "license": "MIT", + "dependencies": { + "estree-walker": "^3.0.3", + "exsolve": "^1.0.8", + "magic-string": "^0.30.21", + "pathe": "^2.0.3", + "source-map-js": "^1.2.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^6.0.0 || ^7.0.0", + "vue": "^3.5.0" + } + }, + "node_modules/vite-plugin-vue-tracer/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/vscode-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", + "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", + "license": "MIT" + }, + "node_modules/vue": { + "version": "3.5.33", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.33.tgz", + "integrity": "sha512-1AgChhx5w3ALgT4oK3acm2Es/7jyZhWSVUfs3rOBlGQC0rjEDkS7G4lWlJJGGNQD+BV3reCwbQrOe1mPNwKHBQ==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.33", + "@vue/compiler-sfc": "3.5.33", + "@vue/runtime-dom": "3.5.33", + "@vue/server-renderer": "3.5.33", + "@vue/shared": "3.5.33" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-bundle-renderer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vue-bundle-renderer/-/vue-bundle-renderer-2.2.0.tgz", + "integrity": "sha512-sz/0WEdYH1KfaOm0XaBmRZOWgYTEvUDt6yPYaUzl4E52qzgWLlknaPPTTZmp6benaPTlQAI/hN1x3tAzZygycg==", + "license": "MIT", + "dependencies": { + "ufo": "^1.6.1" + } + }, + "node_modules/vue-devtools-stub": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/vue-devtools-stub/-/vue-devtools-stub-0.1.0.tgz", + "integrity": "sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ==", + "license": "MIT" + }, + "node_modules/vue-router": { + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.6.4.tgz", + "integrity": "sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.4" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/webpack-virtual-modules": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", + "license": "MIT" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", + "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", + "license": "ISC", + "dependencies": { + "isexe": "^4.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", + "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/wsl-utils": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.3.1.tgz", + "integrity": "sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==", + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0", + "powershell-utils": "^0.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", + "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yargs": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", + "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", + "license": "MIT", + "dependencies": { + "cliui": "^9.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "string-width": "^7.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^22.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/yargs-parser": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", + "license": "ISC", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/youch": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/youch/-/youch-4.1.1.tgz", + "integrity": "sha512-mxW3qiSnl+GRxXsaUMzv2Mbada1Y8CDltET9UxejDQe6DBYlSekghl5U5K0ReAikcHDi0G1vKZEmmo/NWAGKLA==", + "license": "MIT", + "dependencies": { + "@poppinss/colors": "^4.1.6", + "@poppinss/dumper": "^0.7.0", + "@speed-highlight/core": "^1.2.14", + "cookie-es": "^3.0.1", + "youch-core": "^0.3.3" + } + }, + "node_modules/youch-core": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/youch-core/-/youch-core-0.3.3.tgz", + "integrity": "sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==", + "license": "MIT", + "dependencies": { + "@poppinss/exception": "^1.2.2", + "error-stack-parser-es": "^1.0.5" + } + }, + "node_modules/youch/node_modules/cookie-es": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-3.1.1.tgz", + "integrity": "sha512-UaXxwISYJPTr9hwQxMFYZ7kNhSXboMXP+Z3TRX6f1/NyaGPfuNUZOWP1pUEb75B2HjfklIYLVRfWiFZJyC6Npg==", + "license": "MIT" + }, + "node_modules/zip-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", + "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", + "license": "MIT", + "dependencies": { + "archiver-utils": "^5.0.0", + "compress-commons": "^6.0.2", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + } + } +} diff --git a/public/audio/branch-transition.mp3 b/public/audio/branch-transition.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..79202597e5aeac1736c69ba08ebe3458a53e93db GIT binary patch literal 35570 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 literal 0 HcmV?d00001 diff --git a/public/audio/correct_1.mp3 b/public/audio/correct_1.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..12eb8d361708a50cc31444cb6b8df579e382a791 GIT binary patch literal 17135 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 literal 0 HcmV?d00001 diff --git a/public/audio/correct_4.mp3 b/public/audio/correct_4.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..8c2863d8ff2fd47c9adcda5ad1ac916b346e2fb9 GIT binary patch literal 13373 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 literal 0 HcmV?d00001 diff --git a/public/audio/labels/A_1.mp3 b/public/audio/labels/A_1.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..17afb34144a669d76ff99ba6533106afbd24d964 GIT binary patch literal 12582 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 literal 0 HcmV?d00001 diff --git a/public/audio/labels/A_3.mp3 b/public/audio/labels/A_3.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..53023cdd24e5b2852b2749fb2e301281d168a1b8 GIT binary patch literal 16344 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 D`8`d- literal 0 HcmV?d00001 diff --git a/public/audio/labels/A_4.mp3 b/public/audio/labels/A_4.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..46c071cf085a8703f21229a25a9cf167f7ba372e GIT binary patch literal 13836 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 literal 0 HcmV?d00001 diff --git a/public/audio/labels/B_1.mp3 b/public/audio/labels/B_1.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..cf9e10cd26d97376cbcb3943acf0b62c1f665b72 GIT binary patch literal 12582 zcmd_RWmH>H*R~tn-Q8Upw0Loc;ske>;?@GeU4jHck>XAXt}X8FP}-u!DORj4`RMb! z-x%i|=lA(_?jPB6?X@zpGOjW2HTT+kt0@Yh0{)4`Kwn?!`A7f&plI3zIEn)K1w{D; zfWZIs{`Uj%JH7A!(fn_y=IQw6IePvcfDQlvJ^+Y_h^VNjn4iVX%`NmSNl8h?XK89` z8a~Uy!otzf(eqh>fq~)AijR+nJPQVcl{~Aarlz^Mx%*i|Lqk)~T3%lM`m7&6ew;t+ z?(PnOK>YjVf0O)o{9j^475i@+_}~@n)BV5t{(sPT1~dc!5POI63SR?oQeN(pNL&E$ z<&4y3`g%|pRWao$>lBtxe}1oBKK>O101(PXAfqA!tOf1IGubs^$f%fvjL)b3+md|d z0{m}7dzM``0+pGW5hm!e{yaFHQ8to@h~k-_%X9dz=O3D#f5`t|0h8o2%9ej!Bm~d; z2f^Ut0@WQE2>{mgb5Fj&O?_`LZHh5tuCHl{ITUjtOKcNFNJ)YgG3>-U;j?lqXrfw)Q7cP3NK5aeU#UvQP>>B2TC5n|eEre_|Eru;i{uE?nwn{xqSOu?+r1a+T}lNBB#tbD+Mf1^yP42&Ud6DWA1E!XE@Ekh zD^~TPFYIGbNd#2`*Zd9f*+tm^XMmKer>4@v=glvgRsIak_v2@u#LPX&8 zc?b<&Z_>mAd>2v&B>KsJ`I^UVLcBwuks;AhxQVbQ-?+Nr)b|WavyXj1!%L^}%==4u z;}uG=pl%U<=>l{20A#BXA8&AjSUYaOWeBx2(zHyF`r6u+8BMu9Q9F{je|z3Nh)5fw z|0%IK0m8JikQ8D#0`OR|uQDBAB_JwiqlAV+noMNH6hcc-$2ZP+3^ol6{ae~sAsd(uQKFj9i%wo`(VxiVGrp71Ui_kg*W%2}t!h~)mSc3#3B3okF{ zEroks!r-O+A~9EhlU#%2+QX|gGlDi~AnD{_Xh&*n;V~-Ey{U+&#m*jdp@p_ny^z(L zAD5?i+f;Yr=w?LDgW3J=Fgto$|Fn#nXk`Ta8ZP~!?m!?_x8t*JVY1_6$C=^h2s*C- z_HRt5XIglNc2aCv?lVrm9qZ=m!@9dk@Q*JSqe2;&9I(4!3D86}-}RrNg55=oq0YAUvupPyC<${z@WEUfc&2nb=`-2sRB5pp zOQ(eD!>HbAI!f#P4e@}WX@AUZ+#mks%fAn8^_6~uKzyDmr6|6SZp!q7ygO<-^IX_B zZ4(LneDGXO3?4hrFinVeUv`EC*~~sT@a3N%7fNp-vHJq$6IH8<-tDPH&exZIaM*#5 zM02u37EvLMSp*SSQAUNfSkSyv8C&&!yQvZe^hW3UujCH3dMNyj$2l$R0}&XB-u?U` zpDMzYiG{Ob(`u!K#hN$8#JxM~O>Kp*_W9uoDh04}tKRP5w~%MkN*$?PO0Da9{0lf zz-7;EMmID=;mNO+ZKrELgr~8V;XI!3;PLLz8H%f_He;JNzuPGiL1(K^R+R8fPc40) zJd11my&pB8YEJ0uCHRYTnjb#zU!1pVy!d=`dtEszgE;tp&an9^_(@_kyeFJ*@$UEM zziahsyhYU^h2If~r1WZGr6&gT9)lDogPKI zh#WKc*Vd7-dtoZO{6kU4g2D}Do&q%?51y?lcBooys)bbNuA9@MMxU<^#EYipjL&!# zxZix8aEGt@PrXDS^i<@34U*n0UyRbif0!ZuUL&6MtGnR4WDeq3zY8>7ojdJ*i9r0} zwWxhV@PihCxc{?x+Qp{8TaE=lBJ3<7d9KH-I{^UX_s;z&Li_(EL~$8q^6>0(K!N&j z0WdPI^|s9i+CjGsk6Rvx;-Gj__U6d#R#orgQYU+IS^Bgd_IO{+V_i8LD5f1xd=pl= zyRx+d`qh5N(`&RLEemoy(v=UK<-H76sM6SC_%EAYa=FIXg@FXZW1t413}RK+?VuSq z6hE7??(h2TbXWt*YCnPrOj5t%Y1ApNj;S6Mi#DRbv3MuXpc|%LC%lfC zedtf5D&{A^-bwtvtk_nld0)R-b1^{SbtuAXv)y6hor%3DzP!#ae(o=u^#La*8rgcw zhdX;=+Y_e2O3}xQe}-z!!?|CjWy^$}O63}5DREWNI&J7{m>nJcF7j&sru_Z4|Jhy8 z!hVj(*Dteao1cxYXFLmg^q-z+_P%}o<;Hi7xIm2benLDMeIFn93*n+Hgo0)fPli4s z{G(@v&1ne4_KR8Ucb#uU02o3K332j@0+3K$Yh-FKoFzeY-v4pA-V}$21TYSTfIC6} zjO1MX$s3#2hJbxtR2DfQgM&Ov%+?+Kj(I435<{NiB87bzSFNLbD8GO(+Hp7!FvQ=S z3<1wG_8+4>3fe0gq4Dzz(!ylhDAUu0c<~8a7WxX}u6W&bWfI7ghI>+(c5{Qq#+Jr< zMwE^zHmBCyp<{47rYQ)r%>-+W+7av2WWEqPo{Cs}W(9r{mwUEGIbsT;r?S#wKK@cQ zPsTp8Eb}Qb;PsOMBdd+5tvSbRUIPG=t<{^*c}M}!X4GUkd)S9;KuY9?+@-O~Kp`Yf zpaf27Y+d{N1zd2CRkx(YMpxKO`j$%rpPsc+w>F_%^`r}@X}8(tR-aO0b<_U#&T=#J z^Dld=&e;dW8*#jOv*cS>k?((8KK`T;(^tsVv&cE2ZF*XmGfY^Rk z{$k(6BSEw2ujj7ub$cMg-)rAr;-+_N-`-9lK0~b#_olFK4ZCRvpAiUeZe_MNnQpnjd z8laqeuUJ-?^NUttqC6_fY~1|=5o(7hPpXJUwSUsFM9X#CQ^)dmzhrbQ5oUf;)ogJ! zpJ0RS)R%t17qZLytt=~fKVI4SOorz4WnY#DnDCuEPg(0tZ?Xoj{^FOv7R_~TVb$WX z*U1XR7=J$wd>J1Nc`dMa@63pWAT=#7V|O zIJZJ(*3I7o#9xc`6|wU+lW+v$Rq)l5HK5`l=MAAMfDwI16OFwYE$oF~sDi^f`bUk6 z0NosY*7?}dgr^mDUF}VI-nJ=vd{+N%@oukgG$zWX3%~z#vvm>xRrxFry4x%3!;fTm zofM?0+d1DJ)rX5{eUfMU*zBUgyjf$cq>;RO@aN~bkLKSIc21YN$)@m{g@yIiaH#hv z!F`rPW!E|COG{m=kn@J^v^3nk-2rq@Qyr1jc`YUSuEvL;xBNfv5B&!?}8Ht)VY zPk+QBm#RUD#mnxD2ns-t>Z(idw?@KJ6JjIqtP8MBjQF2*2p;9|j}R?iJwhNIIhrXV z(%P9R%F@V~ska&MquuHcJ-h7p&p3`Q8i_CtpdUY3s@ub&&b?P~Re zF|>;lj1Un2jchqnHteE}{WEjb-H-kC!w0=e) zs!=957#>|5r2j}F5UHoTq;vWJMYUWt0X=VE;lclmIEB7bL7YCJ@ZNqercb^2SJ#{RE+ZI+_SZYMJWa=@9$$U^C0Sa54% z#eL&4m*}jalBMtDZ3a5)B$i-%F$=?>d&j|+2>XCOZqt|H;_>yW9GRk;{NW~ zDzahyQc#wl;F4@b+l&u#h6XPbZYY9ET(cRjB^{A8W|_f zA%j0BNlgdjOQ_idA>$|5+xAx>6cTpihN|um)?}oT93)jHxz^*u7FkA9#)`=ms}v11 zGRNC21=ZZ9a5%6P$})H;%!gBXudCMsPoJ7DtKY2^2nw1eC$e3kDyT&b+a^xyJvtt` zeSDx)#t#O*CMkn;dIJGL+C9guMnGgdxFBX*xUxI_CMI|rK#imqt;9?1GY=G};PPaV zmZWrI8&L0P?1QOe5|@Ei@{q;9aaR-4Z#bciy><=yV CmtCENH~MxL^$$C*gxI1* zGheUZnb}N0cEm*0xq7z{(R2M-K6p8}OAP9Th0ZQ}JRSKLY!qoAe*UQukmC#cHW6Ol zOF#0%>g#S@;Ip$mLXPWAR|E$i0^hCf#vz{09kMM=yN$09h&xLe#9G7??Ptz|SBT@E z)Mjn2gk(mr3S&ckAs=y57jchHO@ZKSJCXmo9OY$-|HE@FM=5anybb|W7S7g^3>j`w z2leIpI?&lsl7D`pjkI&9b#h_8N&d?G-OtdFllk{k^|!Zk3Uw04$^o5gq^1W<@dL~{ zS{gea>;}#z!hD;OsE%(9;orNUM|<9>KHn&+kIqi0JNECNPQH|t!Molay%HNvF{*er z;T4~yPlZL)>e_*!gVJAS3H|`jQVvojCJ{V;z8(Emi(75)Qr958>Z$%+^a`;LdV-JS z{M*S>BMI2MnvyAJOa~Z+oh4SrDM;kQS&>$LPI2%dxhQp^O>)!Ad?i!l8|*WMA# z!pd&k^;H+H?asWn{+^?Zp4WzUVo%251m`s8=ObbDd9C$2Cf!uab#*qsxPXKBPJG2F z#>tBge@7aABkoU35dSe~qt6!KK8H-amvJzH=KS;K1^sQ?Z;d~nE4`D=idya*<9e+w z#*?;{kvybI68jSS3R6L9oK>;F^=4oOa(m0%iff&b)CE}$3%ZwH;8$YEVVF88h3 z+uSP{SC8L;)Xe-PEhGa7>09HelZoxdWj1mVeJNNx7%os+qHb7ONfXRtIF+G-L!@Q< z9f`YEkD2y_0xq!Iq2e3=Bt3UGOS_z$JJ3aQI3;t}dszeIF~o?RL{*nLty9fnJEd$N zO8cp?YjhWk@+TZ=_*A`rxjyLiM-RQc$|qVy{&$Y7bIfjtKY?Suw_IyxA1Piv{oTI{ zuQ~ys8s7OE3c{(X&8r)6yZ_+j2MOMnZjs$_=H->?ePXq*u(lq_?fW?p)z1}FQYSYQ zKwGxY9WSU;-jYL_IAOZ(?o!vGL0^YPY5^xlqt;nQxVD~XDu9%JR`UH-;Qrb>&Km4s zTWIzAb-_C)5NYBqJg=f&YqN3Y8^iZ*+@)Hstj*SHL*cKYR(5!<8F#O8+*eZq^iAJO zb$=W!LiBjtT|8gNZJY6aem3Z=p^Bl}td&~*XMg+Y^nIp0b^F=(DpNGtO;=7#zXB{s^7L;ASu9+nRS*f6`fH(RmpN27ZTtD zhH0)9(ehXti6JXox#!o%lXfi+u1Slr#>_?o+#vrrcd$LYNN!Zdh-Hw&V& z<}oEKCz15EB$zBbPtMg1%%9|D(gr0&h%(Nbychn8Hojv%Ad#N8Kr$74F*dTa zKMAnP@hpeF)?k_2tMZl5JStK$>{ZCF(nwjCc67rpl(MfDZ_EOrSK)FKlPA&Br5C<5 z+J#e0)UpT(f<8g*PAEK1OwU5rUp>_hz?{!x6;iTnDKQm`8Ec;U2u}zB#G@~9bU+U< z{&o~xtT1B($ZAM6-MYCz!vql4s*=CYR{0H<-r*^NW+L>I8{GWBH(uSr&N`huA}6V; z(mW{*8Qa880GKH?6fs{>*-*yBWX(!aSp90KPdGRrC>V|2pB@-E)UB3c>%vIjbQl=a zu(963sW*i}z0_44FlzAD)@y#$e_ixgzdofwH zlV5q)CL09=nAH4Y5%rYzvg z!@io!Fp*GJDjse6M@Sl+6=C(t6WBBHmiJJg4ZAbY7T$4FBa)~Q(}alGUy4oiE?o`o znp%K%BPvZe--_))I|GnwBK!f@_*e9E=iWUO7YGfyLV)7#R3` ziG*hLlEddygThTn?{8z;TCGYe{e?udYEOMOe5&S$ zdqEZNvY)gM1JV~6?Y#t8ap}3fzyR`f08Hc`CP}a@dV3-WCuR`xknJprc-XhVht-^` zQ(q%a*Zncag!GQ-ott;Gb!H@|JtlLu)ukD*yo>Y-YXjPuJVE82#)~kzxKa~7YM*JB zi(&hZz5culwbIA-d;<13$}ruNxt2|_3XJjq8re+_WFNajdIsRwkge#A`C%e7h>g_x5!fH%O7F@s!E9g_EBA?Z zhN!fyqb73{OY!YzW0vhVp4=<;OB}-jj^z@?Vz1I$j>;3>aKxwgmQ`baOwyASR43uD zwF*{$ z-Sw$%QMyErMt#7Hj**>*DDg{Z_=v6M8Jh4>FnzDrVo2@gDIU`TZN9=264_|j%8X=q1FQmZXtW~sbc|#4eTPViDC9aTzZ9@Lyq%sbi6%L- zjmsc+ScPTQ^Hq6r8<;eF4=zH@Y@4GD8(>CESwK1qtk_vVCJz08Dz=yaZPaCOK$jD0 zlr&+k2jIkXI#KkKx2*Umnh@Mv9%W2cp3pw5LGdD0Xgn%yOGd`JfjMi@FlnRFf$`CS zdqJmwqs1jci?J-2Cy(uj$57GO%QWS@*jEkoB=x1jNHEVfV;~yjuS;tU%A-o5vEt1( z;2Y@_UiWedpExCvkKSh<*0&IOZ^9bV8pOx!o@p6UqyHumds7yG#Ob+!9}j_r?x_0%7SC^J!tb%*yhp+@f4eDU6rm7tJ%)KmuEWD=5 z=-ss^9~VwmBu`mY;2d6btCPCE?ytP~MM>QG`?!*wLF7#K^g?P4zqx@QRj7>an|P-r z2`#An>^$P*-g+J$f~uhl%3cZMvL{A%gu33Qw&`&t`v<|ye)gL!8{>GM^;qYmF4lgH9U{+Kq_)PZznJl6mvU zj zamBDschUC1n)}vpx*aAca&YdG-q@;$)u;gj;rUVa0RIPD)obg<34H+a71|*39HwK7 z81lCQwwO()tl1?sErPUJOe9Wfbpw!@jodCz@tt0AndVVKL5@(=BeND!gSdcL=4}xu z%sbzHI9!3b;2)uT@TPbg6)yY?helwx7%I~_Pss#ZK$&DUU8nO#NjRJcb5zwr&CDW8 zowDW4gJwdv*%(DliVbd#1a~IcY`e&h8Vz1iK{04X0`k9&02wF>Uy9og&q@%Z`uI64 zmRv&iv7t5*XoB~d4F}(NC9*S!V@w^0P&Y5T+|(d2V3Y7j;b`|33IMaekP+}G4swMgv2hkkw%oBgupO^V8ehZ zjr(tKq})_&E0T2_Gc=EFxXHpmlTj@BW;&XA>t^v?q{a^R@?He*Sg4x*t^$(ls8vR% z`Uo;><7-O;^zmd{1)T{b&CQe@ulpZEx)OA8%Wg&Sxz-+&B!&2B%|Y0^{a;j~KGKwH z7|fHrejh#7&{%i8$@C*XBhLg%}3yS2v(?h{eiS~ha`a4I&TzS8%G2R7=-utNXG#%;etCZ=DP3^ht zww|cPl?xd<{3CP>UQNlSua}NcAQ#x(u7ooMD~^BNi0&7dM}12-9<{-C;9$Mi?x=F{ zC24m$LCLON{YDS0!Z0zomG7R=HdDoe9?{P-A+*{h;E8n&; z4{BKtaa^yC06tdk5?}5TmYcS&S;%;8U1lye?LsAiB9#SIuEvTzzN<`ggl44@2IHua zmWGLtR9iDaIKy#vR)|Rfc`-Zl8b}HJIa6(l0LD$4uqwkto3d=O+$4$8B#fFe2PYmh z{1c)R-5~3o)?247Vp)QGf3rifJ8v+OUVe4)6L8B!vPMh*iAN3E(djGHqBZK0sO5*A zX9yx^F@Kn=5E6A@jwsvPt7FVGbHPo)+I~p4?=-XYsXA=RD8H9dcUY{Vb>9!(85rLQ zO4h8amH;_}AL1Ve+l{ALV>xra)$1N^hHtyM5+w;YXQ=i^%kAh~yJ8loe@ll4;Z;uB zlsiB;QPBwrJ9d<5l_98fD#u#ZPcK>ooxBt4_29kA{9Z-x!b{TM3rIV3eVWCGUln+m zB>KZ)2?jI&2wecyy))_SdgByO;JeE?a28CJ9bLaqAt`=r0z-eM4&_9Jc(CWFEwe*( zSsM)q$mR&r0?ndJ#9pWl-pk2_DB-jB{o)ifsF#SnOlrUfk;3! zfJ7~C?N-H3S?ziiS-pjYRzUYOuiI5NxjvWRsw^KBK0(WleM|VF8Bhb*n=N;Sv#kUwo&Xu#yG(T5Pfhp!es7#j0S_5k35nAXO9pE(|66*to)cJ0`4 zsUA)PIOD&BHpH`O@uV}6_nKIlpzPv!h7Zm|fn9oX_NUhi66}R9gh0&s^sF*$5tnXE zL!^We5IGiPtVIl4iC=a*d&03!W6zG54z7wjmSgC?4goq_b&Aan3EH82)-U0Jl?hm4Atlr&3|yK>O45QHH|S{S}2I`8Cm)k}l|IAT!utyxP8okpN%kY(IxE4lLaNMm6@) z%4kyAkC8+AOixP{WFBi~=AYms!P4)r3`|NMMk$Nta$;5DBJzQ7rRN+G744f;ExoCl zTT~+-*BZn#nmWws^%9;>^wDnuA2~)o5U1p2?ooG+)Hxs4kW;0P>FV*yPyA@` z@e=<>=n}A=0HLjuPRGF&D2>Pmihs+)J*`|^A{ng=OIsGQTM{S~_toO?yq}TRW_ffB zNxYN^iFj39olK=JEOuf(k(#9v`Q|7IPm`sgP(aLfo^GY)!K)h$%(phRv3> zMAyUu;;oX@%@kVNHDE6-;M{X7JxlLXEIL#M(at(M^j z?PQ!(=U8>W(+BG7I}7)8Gyh07&n3D)HrWWwEX280X+%N+9{ExbFC&m@wcMNQ7J2Qk6l&~(sxSdaWi}rg=c>sYryH?_ zsuimCgnrDTFT^_BGofW3YNlMzs_$hLT%bwCc(!OS8CEfqfo|91)1&j@d z#3_a}>)lm8esXpJt0H9)BT;pG)5~_DDpKI8UZ}bhzCWzM4}H^M7~e^@%VIQiY8Z&r zuITsLifgO>)Fii6CEFYBjP~IZ|AuP^-U4li(Wa~3?I;T+5EJ(h_0m4FxPn>H{BjGx zNg8qBS@#e(u-@A)(!uRyBM}?@F~*b=3q9s@lBmJm5}w?++PhhXGX|G&PEgD6 zleW0;nmHNTi=U?e#=_53$6v{H z9S~_*AY|2C14JvhYY|}*cZz*Am zngs9xz)eiRXluu0IuR{dxgY7#8JID1z%n`|+j|PUavU}3!g+3yn+W->j!7{_WTzgs zpV6qCj9ZO3*}NJ}C1aeX>C&_ga~5Skw70O)S8U{^OUID849e465}85ZvAN+$)HafA z%726$q7L9NbbKeA!9Bqeq@Er^9Cz4o;fr}+joXN7^BL7tBl0rj#0~ly?s`%xgTq1z zMPmbJELp~h?|W!KFoj8pFDaIM^c$aLP6>B&V5z3gQk7dgo4#O7oY<#Jrp7XPp45m* z?bvsTfW}&Vak*$h4u2LVT2zTP!eO%=oh3_!>d+_&Gp2lrQ?Ws{H9QLQ(#ELFc99#J z5*>+z^}QWQY(FuC0)`-Nduo)mE3jS{lV*@??TI;Up^xPeoidA#siO;=X=- zo!r5J;)9)kjbfzxLz>my*wuUxIK|gSA(FAdrk=$KD|6*%**jEzS*5r(P00nqP!GDM zl*2F*VH$mV5y6cT1LvDrc#MXMvM6P7$5LSlWjK(i$KP6N3X!nt#=4N8Sa>ZkX{7J_ z`SE|H$Xq&bU>r=2s!3>!BWNxsw8Tot=;_cT8Pq(|!1I$muE&yp+~%Gd8ESBt?8m}JSNtWwSWmdGiPhK%AWST)!%H%9IW8xDZDQIo?84?> z_m2=En9>76h$|f_cgm;F3dsH2^@F34iqF(mjeYUrBqM=YO~iGBj<0$=AwEOPdTeNT z)cL^V+%7XZZu8%T^0noXz@jL9aD-%d2h+7!?(@=GfTe(~!$ZmI*YHHASo` zO+XkT)|4c;`}|x~u#=Nh3M)1)D<&w?4p|L35rvR9(k(9_pyT=O%-(z@x$Z@tqPB3! zlr)+_bL()oq~yC2<$M>V+`P#D8SFwNwvYt8Atljb^fwIG#50iVTh^4*QWE<2cEZ0m J3jV*>{{fQ122lV2 literal 0 HcmV?d00001 diff --git a/public/audio/labels/B_2.mp3 b/public/audio/labels/B_2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..860eadd2ed2640248358baa7d82d8d8a0d996cac GIT binary patch literal 11328 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 L|DXTsE%3hp7}>8U literal 0 HcmV?d00001 diff --git a/public/audio/labels/B_4.mp3 b/public/audio/labels/B_4.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..0ca7f110c6fe0e3e52ebb238e5522c02319acf5c GIT binary patch literal 12582 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 I_y3yz0M0i#egFUf literal 0 HcmV?d00001 diff --git a/public/audio/labels/D_2.mp3 b/public/audio/labels/D_2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..f97844bd919e0487f4aeec80a2dbaaedd39f210d GIT binary patch literal 11328 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 XeL+=PO`iWgiS<77^#AjJVFdmcCMCm$ literal 0 HcmV?d00001 diff --git a/public/audio/labels/D_3.mp3 b/public/audio/labels/D_3.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..d07c0aa6e9f1149799c5e0e78b46e315611fafba GIT binary patch literal 16344 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 Q|Nc8(`~S=Tr8Drq0C9$|f&c&j literal 0 HcmV?d00001 diff --git a/public/audio/labels/D_4.mp3 b/public/audio/labels/D_4.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..c2b1cb3a01bcd676cf8a64e769ebdf02a2d44b1a GIT binary patch literal 34316 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

Aw*o%lLVfK>y2%m< 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 literal 0 HcmV?d00001 diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..18993ad91cfd43e03b074dd0b5cc3f37ab38e49c GIT binary patch literal 4286 zcmeHLOKuuL5PjK%MHWVi6lD zOGiREbCw`xmFozJ^aNatJY>w+g ze6a2@u~m#^BZm@8wco9#Crlli0uLb^3E$t2-WIc^#(?t)*@`UpuofJ(Uyh@F>b3Ph z$D^m8Xq~pTkGJ4Q`Q2)te3mgkWYZ^Ijq|hkiP^9`De={bQQ%heZC$QU2UpP(-tbl8 zPWD2abEew;oat@w`uP3J^YpsgT%~jT(Dk%oU}sa$7|n6hBjDj`+I;RX(>)%lm_7N{+B7Mu%H?422lE%MBJH!!YTN2oT7xr>>N-8OF$C&qU^ z>vLsa{$0X%q1fjOe3P1mCv#lN{xQ4_*HCSAZjTb1`}mlc+9rl8$B3OP%VT@mch_~G z7Y+4b{r>9e=M+7vSI;BgB?ryZDY4m>&wcHSn81VH1N~`0gvwH{ z8dv#hG|OK`>1;j7tM#B)Z7zDN?{6=dUal}$e { + const id = getRouterParam(event, "id")!; + + const course = await db.query.courses.findFirst({ where: eq(courses.id, id) }); + if (!course) throw createError({ statusCode: 404, message: "Course not found" }); + + await db.update(courses).set({ status: "processing", stage: "parsing_pdfs" }).where(eq(courses.id, id)); + + // fire and forget — response returns immediately + console.log(`[revisione:${id.slice(0, 8)}] background generation triggered for "${course.title}"`); + generateCourseInBackground(id).catch(() => {}); + + setResponseStatus(event, 202); + return { message: "Course generation started" }; +}); diff --git a/server/api/courses/[id]/index.get.ts b/server/api/courses/[id]/index.get.ts new file mode 100644 index 0000000..c1cecbd --- /dev/null +++ b/server/api/courses/[id]/index.get.ts @@ -0,0 +1,43 @@ +import { db } from "../../../db/index"; +import { courses, topics, userProgress, lessons } from "../../../db/schema"; +import { eq, inArray } from "drizzle-orm"; + +export default defineEventHandler(async (event) => { + const id = getRouterParam(event, "id")!; + + const course = await db.query.courses.findFirst({ + where: eq(courses.id, id), + }); + + if (!course) throw createError({ statusCode: 404, message: "Course not found" }); + + const topicRows = await db.query.topics.findMany({ + where: eq(topics.courseId, id), + orderBy: (t, { asc }) => asc(t.order), + }); + + const progressRows = await db.query.userProgress.findMany({ + where: eq(userProgress.courseId, id), + }); + + const progressMap: Record = {}; + for (const p of progressRows) progressMap[p.topicId] = p; + + const topicIds = topicRows.map((t) => t.id); + + const lessonRows = topicIds.length + ? await db.query.lessons.findMany({ where: inArray(lessons.topicId, topicIds) }) + : []; + + const lessonTopicIds = new Set(lessonRows.map((l) => l.topicId)); + + return { + ...course, + topics: topicRows.map((t) => ({ + ...t, + prerequisiteTopicIds: JSON.parse(t.prerequisiteTopicIds ?? "[]"), + progress: progressMap[t.id] ?? null, + hasLesson: lessonTopicIds.has(t.id), + })), + }; +}); diff --git a/server/api/courses/[id]/index.patch.ts b/server/api/courses/[id]/index.patch.ts new file mode 100644 index 0000000..437c34e --- /dev/null +++ b/server/api/courses/[id]/index.patch.ts @@ -0,0 +1,27 @@ +import { db } from "../../../db/index"; +import { courses } from "../../../db/schema"; +import { eq } from "drizzle-orm"; + +export default defineEventHandler(async (event) => { + const id = getRouterParam(event, "id")!; + const body = await readBody(event); + + const course = await db.query.courses.findFirst({ where: eq(courses.id, id) }); + if (!course) throw createError({ statusCode: 404, message: "Course not found" }); + + const updates: Partial = {}; + + if (body.title !== undefined) { + if (!body.title.trim()) throw createError({ statusCode: 400, message: "Title cannot be empty" }); + updates.title = body.title.trim(); + } + if (body.subject !== undefined) updates.subject = body.subject; + + if (Object.keys(updates).length === 0) { + throw createError({ statusCode: 400, message: "Nothing to update" }); + } + + await db.update(courses).set(updates).where(eq(courses.id, id)); + + return { ok: true }; +}); diff --git a/server/api/courses/[id]/upload.post.ts b/server/api/courses/[id]/upload.post.ts new file mode 100644 index 0000000..ec277fd --- /dev/null +++ b/server/api/courses/[id]/upload.post.ts @@ -0,0 +1,52 @@ +import { db } from "../../../db/index"; +import { uploads, courses } from "../../../db/schema"; +import { eq } from "drizzle-orm"; +import { randomUUID } from "crypto"; +import { writeFile, mkdir } from "fs/promises"; +import { resolve } from "path"; +import { parsePdf } from "../../../utils/parsePdf"; +import { detectUploadType } from "../../../utils/detectUploadType"; + +export default defineEventHandler(async (event) => { + const id = getRouterParam(event, "id")!; + + const course = await db.query.courses.findFirst({ where: eq(courses.id, id) }); + if (!course) throw createError({ statusCode: 404, message: "Course not found" }); + + const formData = await readFormData(event); + const file = formData.get("file") as File | null; + + if (!file) { + throw createError({ statusCode: 400, message: "file is required" }); + } + + const uploadDir = resolve(process.cwd(), "uploads", id); + await mkdir(uploadDir, { recursive: true }); + + const uploadId = randomUUID(); + const safeFilename = `${uploadId}-${file.name.replace(/[^a-zA-Z0-9._-]/g, "_")}`; + const storedPath = resolve(uploadDir, safeFilename); + + const buffer = Buffer.from(await file.arrayBuffer()); + await writeFile(storedPath, buffer); + + let extractedText: string | null = null; + try { + extractedText = await parsePdf(buffer); + } catch { + // non-fatal + } + + const detectedType = await detectUploadType(file.name, extractedText ?? ""); + + await db.insert(uploads).values({ + id: uploadId, + courseId: id, + filename: file.name, + type: detectedType, + storedPath, + extractedText, + }); + + return { uploadId, filename: file.name, type: detectedType }; +}); diff --git a/server/api/courses/index.get.ts b/server/api/courses/index.get.ts new file mode 100644 index 0000000..bd04248 --- /dev/null +++ b/server/api/courses/index.get.ts @@ -0,0 +1,35 @@ +import { db } from "../../db/index"; +import { courses, topics, userProgress } from "../../db/schema"; +import { eq, and } from "drizzle-orm"; + +export default defineEventHandler(async () => { + const allCourses = await db.query.courses.findMany({ + orderBy: (c, { desc }) => desc(c.createdAt), + }); + + const result = []; + + for (const course of allCourses) { + const topicRows = await db.query.topics.findMany({ + where: eq(topics.courseId, course.id), + }); + + const topicCount = topicRows.length; + + let completedCount = 0; + if (topicCount > 0) { + const progressRows = await db.query.userProgress.findMany({ + where: eq(userProgress.courseId, course.id), + }); + completedCount = progressRows.filter((p) => p.lessonComplete).length; + } + + result.push({ + ...course, + topicCount, + completedCount, + }); + } + + return result; +}); diff --git a/server/api/courses/index.post.ts b/server/api/courses/index.post.ts new file mode 100644 index 0000000..4403835 --- /dev/null +++ b/server/api/courses/index.post.ts @@ -0,0 +1,16 @@ +import { db } from "../../db/index"; +import { courses } from "../../db/schema"; +import { randomUUID } from "crypto"; + +export default defineEventHandler(async () => { + const id = randomUUID(); + + await db.insert(courses).values({ + id, + title: "Untitled Course", + subject: "Unknown", + status: "processing", + }); + + return { courseId: id }; +}); diff --git a/server/api/topics/[id]/lesson.get.ts b/server/api/topics/[id]/lesson.get.ts new file mode 100644 index 0000000..c59a5f8 --- /dev/null +++ b/server/api/topics/[id]/lesson.get.ts @@ -0,0 +1,18 @@ +import { db } from "../../../db/index"; +import { topics, lessons } from "../../../db/schema"; +import { eq } from "drizzle-orm"; + +export default defineEventHandler(async (event) => { + const id = getRouterParam(event, "id")!; + + const topic = await db.query.topics.findFirst({ where: eq(topics.id, id) }); + if (!topic) throw createError({ statusCode: 404, message: "Topic not found" }); + + const lesson = await db.query.lessons.findFirst({ where: eq(lessons.topicId, id) }); + if (!lesson) throw createError({ statusCode: 404, message: "Lesson not yet generated" }); + + return { + ...lesson, + content: JSON.parse(lesson.content), + }; +}); diff --git a/server/api/topics/[id]/progress.post.ts b/server/api/topics/[id]/progress.post.ts new file mode 100644 index 0000000..8b6e1e9 --- /dev/null +++ b/server/api/topics/[id]/progress.post.ts @@ -0,0 +1,46 @@ +import { db } from "../../../db/index"; +import { topics, userProgress } from "../../../db/schema"; +import { eq, and } from "drizzle-orm"; +import { randomUUID } from "crypto"; + +export default defineEventHandler(async (event) => { + const id = getRouterParam(event, "id")!; + + const topic = await db.query.topics.findFirst({ where: eq(topics.id, id) }); + if (!topic) throw createError({ statusCode: 404, message: "Topic not found" }); + + const body = await readBody(event); + const { lessonComplete, quizScore, tookBranches, branchCount } = body ?? {}; + + const existing = await db.query.userProgress.findFirst({ + where: and( + eq(userProgress.topicId, id), + eq(userProgress.courseId, topic.courseId) + ), + }); + + if (existing) { + await db + .update(userProgress) + .set({ + lessonComplete: lessonComplete ?? existing.lessonComplete, + quizScore: quizScore ?? existing.quizScore, + tookBranches: tookBranches ?? existing.tookBranches, + branchCount: branchCount ?? existing.branchCount, + updatedAt: new Date().toISOString(), + }) + .where(eq(userProgress.id, existing.id)); + } else { + await db.insert(userProgress).values({ + id: randomUUID(), + courseId: topic.courseId, + topicId: id, + lessonComplete: lessonComplete ?? false, + quizScore: quizScore ?? null, + tookBranches: tookBranches ?? false, + branchCount: branchCount ?? 0, + }); + } + + return { ok: true }; +}); diff --git a/server/api/topics/[id]/quiz.get.ts b/server/api/topics/[id]/quiz.get.ts new file mode 100644 index 0000000..fcf3d94 --- /dev/null +++ b/server/api/topics/[id]/quiz.get.ts @@ -0,0 +1,21 @@ +import { db } from "../../../db/index"; +import { topics, quizQuestions } from "../../../db/schema"; +import { eq } from "drizzle-orm"; + +export default defineEventHandler(async (event) => { + const id = getRouterParam(event, "id")!; + + const topic = await db.query.topics.findFirst({ where: eq(topics.id, id) }); + if (!topic) throw createError({ statusCode: 404, message: "Topic not found" }); + + const questions = await db.query.quizQuestions.findMany({ + where: eq(quizQuestions.topicId, id), + }); + + if (questions.length === 0) throw createError({ statusCode: 404, message: "Quiz not yet generated" }); + + return questions.map((q) => ({ + ...q, + options: q.options ? JSON.parse(q.options) : null, + })); +}); diff --git a/server/api/uploads/[id].patch.ts b/server/api/uploads/[id].patch.ts new file mode 100644 index 0000000..9d7c144 --- /dev/null +++ b/server/api/uploads/[id].patch.ts @@ -0,0 +1,25 @@ +import { db } from "../../db/index"; +import { uploads } from "../../db/schema"; +import { eq } from "drizzle-orm"; + +export default defineEventHandler(async (event) => { + const id = getRouterParam(event, "id")!; + + const upload = await db.query.uploads.findFirst({ where: eq(uploads.id, id) }); + if (!upload) throw createError({ statusCode: 404, message: "Upload not found" }); + + const body = await readBody(event); + const { type } = body ?? {}; + + const valid = ["slides", "past_paper", "lab_worksheet"]; + if (!type || !valid.includes(type)) { + throw createError({ statusCode: 400, message: "type must be slides, past_paper, or lab_worksheet" }); + } + + await db + .update(uploads) + .set({ type: type as "slides" | "past_paper" | "lab_worksheet" }) + .where(eq(uploads.id, id)); + + return { ok: true, type }; +}); diff --git a/server/db/index.ts b/server/db/index.ts new file mode 100644 index 0000000..0aff869 --- /dev/null +++ b/server/db/index.ts @@ -0,0 +1,12 @@ +import { drizzle } from "drizzle-orm/better-sqlite3"; +import Database from "better-sqlite3"; +import * as schema from "./schema"; +import { resolve } from "path"; + +const dbPath = process.env.DATABASE_PATH || resolve(process.cwd(), "revisione.db"); + +const sqlite = new Database(dbPath); +sqlite.pragma("journal_mode = WAL"); +sqlite.pragma("foreign_keys = ON"); + +export const db = drizzle(sqlite, { schema }); diff --git a/server/db/migrate.ts b/server/db/migrate.ts new file mode 100644 index 0000000..1b4e545 --- /dev/null +++ b/server/db/migrate.ts @@ -0,0 +1,8 @@ +import { migrate } from "drizzle-orm/better-sqlite3/migrator"; +import { db } from "./index"; +import { resolve } from "path"; + +const migrationsFolder = resolve(process.cwd(), "drizzle"); + +migrate(db, { migrationsFolder }); +console.log("Migrations complete"); diff --git a/server/db/schema.ts b/server/db/schema.ts new file mode 100644 index 0000000..ad107b7 --- /dev/null +++ b/server/db/schema.ts @@ -0,0 +1,92 @@ +import { sqliteTable, text, integer, real } from "drizzle-orm/sqlite-core"; +import { sql } from "drizzle-orm"; + +export const courses = sqliteTable("courses", { + id: text("id").primaryKey(), + title: text("title").notNull(), + subject: text("subject").notNull(), + status: text("status", { enum: ["processing", "ready", "error"] }) + .notNull() + .default("processing"), + stage: text("stage", { + enum: ["parsing_pdfs", "analysing_sources", "building_curriculum", "finalising", "ready", "error"], + }), + costAI: real("cost_ai").default(0), + costAudio: real("cost_audio").default(0), + auditReport: text("audit_report"), + auditScore: integer("audit_score"), + organisation: text("organisation"), + createdAt: text("created_at") + .notNull() + .default(sql`(datetime('now'))`), +}); + +export const uploads = sqliteTable("uploads", { + id: text("id").primaryKey(), + courseId: text("course_id") + .notNull() + .references(() => courses.id), + filename: text("filename").notNull(), + type: text("type", { enum: ["slides", "past_paper", "lab_worksheet"] }).notNull(), + storedPath: text("stored_path").notNull(), + extractedText: text("extracted_text"), + createdAt: text("created_at") + .notNull() + .default(sql`(datetime('now'))`), +}); + +export const topics = sqliteTable("topics", { + id: text("id").primaryKey(), + courseId: text("course_id") + .notNull() + .references(() => courses.id), + title: text("title").notNull(), + description: text("description").notNull(), + order: integer("order").notNull(), + prerequisiteTopicIds: text("prerequisite_topic_ids").notNull().default("[]"), + difficulty: integer("difficulty").notNull().default(1), + relevantFiles: text("relevant_files"), +}); + +export const lessons = sqliteTable("lessons", { + id: text("id").primaryKey(), + topicId: text("topic_id") + .notNull() + .references(() => topics.id), + content: text("content").notNull(), + ttsProvider: text("tts_provider"), + createdAt: text("created_at") + .notNull() + .default(sql`(datetime('now'))`), +}); + +export const quizQuestions = sqliteTable("quiz_questions", { + id: text("id").primaryKey(), + topicId: text("topic_id") + .notNull() + .references(() => topics.id), + question: text("question").notNull(), + type: text("type", { enum: ["mcq", "short_answer", "worked"] }).notNull(), + options: text("options"), + answer: text("answer").notNull(), + explanation: text("explanation").notNull(), +}); + +export const userProgress = sqliteTable("user_progress", { + id: text("id").primaryKey(), + courseId: text("course_id") + .notNull() + .references(() => courses.id), + topicId: text("topic_id") + .notNull() + .references(() => topics.id), + lessonComplete: integer("lesson_complete", { mode: "boolean" }) + .notNull() + .default(false), + quizScore: integer("quiz_score"), + tookBranches: integer("took_branches", { mode: "boolean" }).notNull().default(false), + branchCount: integer("branch_count").notNull().default(0), + updatedAt: text("updated_at") + .notNull() + .default(sql`(datetime('now'))`), +}); diff --git a/server/plugins/generateLabels.ts b/server/plugins/generateLabels.ts new file mode 100644 index 0000000..cea5076 --- /dev/null +++ b/server/plugins/generateLabels.ts @@ -0,0 +1,7 @@ +import { generateLabels } from "../utils/generateLabels"; + +export default defineNitroPlugin(async () => { + generateLabels().catch((err) => { + console.error("[labels] startup generation failed:", err?.message ?? err); + }); +}); diff --git a/server/plugins/migrate.ts b/server/plugins/migrate.ts new file mode 100644 index 0000000..3d42d26 --- /dev/null +++ b/server/plugins/migrate.ts @@ -0,0 +1,9 @@ +import { migrate } from "drizzle-orm/better-sqlite3/migrator"; +import { db } from "../db/index"; +import { resolve } from "path"; + +export default defineNitroPlugin(async () => { + const migrationsFolder = resolve(process.cwd(), "drizzle"); + migrate(db, { migrationsFolder }); + console.log("[revisione] db migrations applied"); +}); diff --git a/server/plugins/resumeGeneration.ts b/server/plugins/resumeGeneration.ts new file mode 100644 index 0000000..a9bbe84 --- /dev/null +++ b/server/plugins/resumeGeneration.ts @@ -0,0 +1,29 @@ +import { db } from "../db/index"; +import { courses } from "../db/schema"; +import { eq } from "drizzle-orm"; +import { generateCourseInBackground } from "../utils/generateCourse"; + +export default defineNitroPlugin(async () => { + console.log("[revisione] resumeGeneration plugin started"); + + try { + const stuck = await db.query.courses.findMany({ + where: eq(courses.status, "processing"), + }); + + console.log(`[revisione] query complete — found ${stuck.length} course(s)`); + + if (stuck.length === 0) return; + + console.log(`[revisione] found ${stuck.length} course(s) stuck in processing — resuming`); + + for (const course of stuck) { + console.log(`[revisione] resuming "${course.title}" (${course.id.slice(0, 8)})`); + generateCourseInBackground(course.id).catch((err) => { + console.error(`[revisione] background generation threw:`, err?.message ?? err); + }); + } + } catch (err: any) { + console.error("[revisione] resumeGeneration plugin error:", err?.message ?? err); + } +}); diff --git a/server/utils/auditCourse.ts b/server/utils/auditCourse.ts new file mode 100644 index 0000000..e3e0aea --- /dev/null +++ b/server/utils/auditCourse.ts @@ -0,0 +1,196 @@ +import { db } from "../db/index"; +import { courses, uploads, topics, lessons, quizQuestions } from "../db/schema"; +import { eq } from "drizzle-orm"; +import { askAI } from "./openrouter"; + +function parseJSON(raw: string): T { + try { + return JSON.parse(raw); + } catch { + const cleaned = raw.replace(/^```[a-z]*\n?/i, "").replace(/\n?```$/i, "").trim(); + return JSON.parse(cleaned); + } +} + +function renderSteps(steps: any[]): string { + return steps.map((s: any, i: number) => { + const lines: string[] = [` Step ${i + 1} [${s.type.toUpperCase()}]`]; + + if (s.title) lines.push(` Title: ${s.title}`); + if (s.body) lines.push(` Body: ${s.body}`); + if (s.callout) lines.push(` Callout: ${s.callout}`); + if (Array.isArray(s.bullets)) { + lines.push(` Bullets:\n${s.bullets.map((b: string) => ` - ${b}`).join("\n")}`); + } + if (Array.isArray(s.options)) { + lines.push(` Options:\n${s.options.map((o: string, oi: number) => ` ${["A","B","C","D"][oi]}: ${o}`).join("\n")}`); + lines.push(` Answer: ${s.answer}`); + if (s.explanation) lines.push(` Explanation: ${s.explanation}`); + } + + // include branches if present + if (s.branches && typeof s.branches === "object") { + for (const [wrongOpt, branch] of Object.entries(s.branches as Record)) { + lines.push(` Branch for wrong answer "${wrongOpt}":`); + for (const bs of branch.steps ?? []) { + lines.push(` [BRANCH CONCEPT] ${bs.title ?? ""}: ${bs.body ?? ""}`); + } + if (branch.confirmQuestion) { + const cq = branch.confirmQuestion; + lines.push(` [CONFIRM QUESTION] ${cq.body}`); + if (Array.isArray(cq.options)) { + lines.push(` Options: ${cq.options.join(" | ")}`); + } + lines.push(` Answer: ${cq.answer}`); + } + if (branch.hardStop) { + lines.push(` [HARD STOP] ${branch.hardStop}`); + } + } + } + + return lines.join("\n"); + }).join("\n"); +} + +export async function auditCourse(courseId: string): Promise { + console.log(`[audit:${courseId.slice(0, 8)}] starting post-generation audit`); + + try { + const course = await db.query.courses.findFirst({ where: eq(courses.id, courseId) }); + if (!course) throw new Error("Course not found"); + + const uploadRows = await db.query.uploads.findMany({ where: eq(uploads.courseId, courseId) }); + const topicRows = await db.query.topics.findMany({ + where: eq(topics.courseId, courseId), + orderBy: (t, { asc }) => asc(t.order), + }); + + const lessonMap: Record = {}; + for (const topic of topicRows) { + const lesson = await db.query.lessons.findFirst({ where: eq(lessons.topicId, topic.id) }); + if (lesson) lessonMap[topic.id] = lesson; + } + + const quizMap: Record = {}; + for (const topic of topicRows) { + quizMap[topic.id] = await db.query.quizQuestions.findMany({ where: eq(quizQuestions.topicId, topic.id) }); + } + + // full source text — no truncation + const primaryParts: string[] = []; + const secondaryParts: string[] = []; + for (const u of uploadRows) { + if (!u.extractedText) continue; + if (u.type === "past_paper" || u.type === "lab_worksheet") { + primaryParts.push(`--- ${u.filename} (${u.type}) ---\n${u.extractedText}`); + } else { + secondaryParts.push(`--- ${u.filename} (${u.type}) ---\n${u.extractedText}`); + } + } + + const primaryText = primaryParts.join("\n\n") || "(none)"; + const secondaryText = secondaryParts.join("\n\n") || "(none)"; + + // topics block + const topicsBlock = topicRows + .map((t) => `${t.order + 1}. ${t.title} (difficulty ${t.difficulty}/5)\n ${t.description}`) + .join("\n"); + + // full lesson block — every step, every branch, every confirm question, every hard stop + const lessonsBlock = topicRows.map((t) => { + const lesson = lessonMap[t.id]; + if (!lesson) return `Topic: ${t.title}\n (no lesson generated)`; + let content: any = {}; + try { content = JSON.parse(lesson.content); } catch {} + const keyConcepts = (content.keyConcepts ?? []).join(", "); + const steps = renderSteps(content.steps ?? []); + return `Topic: ${t.title}\nKey concepts: ${keyConcepts}\n${steps}`; + }).join("\n\n---\n\n"); + + // full quiz block — question, all options, answer, explanation + const quizBlock = topicRows.map((t) => { + const qs = quizMap[t.id] ?? []; + if (qs.length === 0) return `Topic: ${t.title}\n (no quiz questions)`; + const qList = qs.map((q: any, i: number) => { + const lines = [` Q${i + 1} [${q.type}]: ${q.question}`]; + if (q.options) { + try { + const opts: string[] = JSON.parse(q.options); + lines.push(` Options: ${opts.join(" | ")}`); + } catch {} + } + lines.push(` Answer: ${q.answer}`); + lines.push(` Explanation: ${q.explanation}`); + return lines.join("\n"); + }).join("\n"); + return `Topic: ${t.title}\n${qList}`; + }).join("\n\n---\n\n"); + + const prompt = `You are auditing an AI-generated course against a single standard: can a student who completes this course answer every question in every past paper and lab worksheet provided? + +This is a pass/fail standard, not a score. However, also provide a score for tracking progress toward that standard. + +PRIMARY SOURCES (past papers + lab worksheets): +${primaryText} + +SECONDARY SOURCES (lecture slides): +${secondaryText} + +THE GENERATED COURSE: +${course.title} + +TOPICS COVERED (${topicRows.length} topics): +${topicsBlock} + +LESSONS GENERATED: +${lessonsBlock} + +QUIZ QUESTIONS: +${quizBlock} + +YOUR AUDIT PROCESS: +1. Go through every past paper question one by one. For each question, determine: could a student who completed this course answer it fully and correctly? If not, why not — what is missing or underdeveloped? +2. Go through every lab worksheet task one by one. Same question. +3. Go through every concept in the lecture slides. Is it covered in the course to a level of full understanding? +4. Identify every gap — topics missing, algorithms not taught to implementation level, calculations not drilled, pseudocode not covered, procedures not walked through. + +Return only valid JSON, no markdown: +{ + "overallScore": 0-100, + "passesStandard": true/false, + "examReadiness": "honest plain English verdict", + "unansweredPaperQuestions": [ + { "source": "2023 Q2(a)", "question": "brief description", "gap": "what the course fails to teach that would be needed" } + ], + "coverageAnalysis": { "totalExaminedTopics": 0, "coveredTopics": 0, "coveragePercent": 0 }, + "gaps": [ + { "topic": "...", "severity": "high/medium/low", "appearsInSources": "...", "courseCoverage": "..." } + ], + "lessonQuality": [ + { "topicTitle": "...", "score": 0-100, "notes": "..." } + ], + "recommendations": ["..."] +}`; + + const config = useRuntimeConfig(); + const evaluatorModel = (config as any).openrouterEvaluatorModel; + + const result = await askAI( + [{ role: "user", content: prompt }], + { maxRetries: 2, maxTokens: 4000, ...(evaluatorModel ? { model: evaluatorModel } : {}) } + ); + const report = parseJSON<{ overallScore: number }>(result.text); + + await db.update(courses) + .set({ auditReport: result.text, auditScore: report.overallScore ?? null }) + .where(eq(courses.id, courseId)); + + console.log(`[audit:${courseId.slice(0, 8)}] ✓ audit complete — score: ${report.overallScore ?? "?"}/100`); + } catch (err: any) { + console.error(`[audit:${courseId.slice(0, 8)}] ✗ audit failed: ${err?.message ?? err}`); + await db.update(courses) + .set({ auditReport: null }) + .where(eq(courses.id, courseId)); + } +} diff --git a/server/utils/detectUploadType.ts b/server/utils/detectUploadType.ts new file mode 100644 index 0000000..06de0e5 --- /dev/null +++ b/server/utils/detectUploadType.ts @@ -0,0 +1,50 @@ +import { askAI } from "./openrouter"; +import { useRuntimeConfig } from "#imports"; + +type UploadType = "slides" | "past_paper" | "lab_worksheet"; + +const PAST_PAPER_RE = /exam|past[\s_-]?paper|specimen|mock|resit|20(1[9]|2[0-6])/i; +const LAB_RE = /lab|worksheet|practical|experiment|\bprac\b/i; +const SLIDES_RE = /lecture|slides|\blec\b|week\d|topic\d|chapter/i; + +export async function detectUploadType(filename: string, extractedText: string): Promise { + const name = filename.toLowerCase(); + + // layer 1 — filename heuristics + if (PAST_PAPER_RE.test(name)) return "past_paper"; + if (LAB_RE.test(name)) return "lab_worksheet"; + if (SLIDES_RE.test(name)) return "slides"; + + // layer 2 — AI classification + const opening = extractedText.slice(0, 1500); + + const prompt = `You are classifying a university document. Based on the filename and the opening text, classify it as exactly one of: past_paper, lab_worksheet, or slides. + +past_paper: an exam or test with questions students must answer under exam conditions +lab_worksheet: a practical worksheet with experiments, procedures, or guided tasks +slides: lecture slides or course notes presenting theory and concepts + +Filename: ${filename} +Opening text: ${opening} + +Respond with only one of: past_paper, lab_worksheet, slides`; + + try { + const config = useRuntimeConfig(); + const classificationModel = (config as any).openrouterClassificationModel ?? "anthropic/claude-haiku-4-5"; + + const { text } = await askAI( + [{ role: "user", content: prompt }], + { model: classificationModel, temperature: 0 } + ); + + const result = text.trim().toLowerCase() as UploadType; + if (result === "past_paper" || result === "lab_worksheet" || result === "slides") { + return result; + } + } catch { + // fall through to default + } + + return "slides"; +} diff --git a/server/utils/generateCourse.ts b/server/utils/generateCourse.ts new file mode 100644 index 0000000..bb5da15 --- /dev/null +++ b/server/utils/generateCourse.ts @@ -0,0 +1,732 @@ +import { db } from "../db/index"; +import { courses, uploads, topics, lessons, quizQuestions } from "../db/schema"; +import { eq } from "drizzle-orm"; +import { randomUUID } from "crypto"; +import { askAI } from "./openrouter"; +import { auditCourse } from "./auditCourse"; +import { generateStepTTS, generateQuestionTTS, generateOptionTTS, generateTTSToPath } from "./generateTTS"; + +type Stage = "parsing_pdfs" | "analysing_sources" | "building_curriculum" | "finalising" | "ready" | "error"; + +interface CourseContext { + courseTitle: string; + subject: string; + topicsInOrder: { order: number; title: string; description: string }[]; + completedLessons: { + order: number; + title: string; + keyConcepts: string[]; + analogiesUsed: string[]; + }[]; +} + +function log(courseId: string, msg: string) { + const short = courseId.slice(0, 8); + console.log(`[revisione:${short}] ${msg}`); +} + +async function setStage(courseId: string, stage: Stage) { + await db.update(courses).set({ stage }).where(eq(courses.id, courseId)); + log(courseId, `stage → ${stage}`); +} + +function parseJSON(raw: string): T { + try { + return JSON.parse(raw); + } catch { + const cleaned = raw.replace(/^```[a-z]*\n?/i, "").replace(/\n?```$/i, "").trim(); + return JSON.parse(cleaned); + } +} + +// returns mutated steps array with audioPath/audioChunks embedded, and total audio cost +async function generateLessonAudio( + steps: any[], + lessonId: string, + courseId: string +): Promise<{ steps: any[]; cost: number }> { + let cost = 0; + + for (let si = 0; si < steps.length; si++) { + const step = steps[si]; + + if (step.type === "concept" || step.type === "example") { + const text = [step.body, step.callout].filter(Boolean).join(" "); + if (!text.trim()) continue; + + const result = await generateStepTTS(text, lessonId, si); + if (result) { + step.audioPath = result.audioPath; + step.audioChunks = result.audioChunks; + cost += result.cost; + } + } else if (step.type === "summary") { + const text = Array.isArray(step.bullets) ? step.bullets.join(". ") : ""; + if (!text.trim()) continue; + + const result = await generateStepTTS(text, lessonId, si); + if (result) { + step.audioPath = result.audioPath; + step.audioChunks = result.audioChunks; + cost += result.cost; + } + } else if (step.type === "question") { + // question narration + if (step.body?.trim()) { + const qResult = await generateQuestionTTS(step.body, lessonId, si); + if (qResult) { + step.questionAudioPath = qResult.audioPath; + step.questionAudioChunks = qResult.audioChunks; + cost += qResult.cost; + } + } + + // per-option audio + if (Array.isArray(step.options)) { + step.optionAudioPaths = []; + for (let oi = 0; oi < step.options.length; oi++) { + const optText = step.options[oi]; + if (optText?.trim()) { + const oResult = await generateOptionTTS(optText, lessonId, si, oi); + if (oResult) { + step.optionAudioPaths[oi] = oResult.audioPath; + cost += oResult.cost; + } else { + step.optionAudioPaths[oi] = null; + } + } else { + step.optionAudioPaths[oi] = null; + } + } + } + } + + log(courseId, ` step ${si} (${step.type}) TTS done`); + } + + return { steps, cost }; +} + +export async function generateCourseInBackground(courseId: string) { + try { + const course = await db.query.courses.findFirst({ where: eq(courses.id, courseId) }); + if (!course) throw new Error(`Course ${courseId} not found`); + + const costs = { ai: 0, audio: 0 }; + + log(courseId, `starting generation for "${course.title}"`); + + // ── STEP 1 — load uploads ─────────────────────────────────────────────── + await setStage(courseId, "parsing_pdfs"); + + const uploadRows = await db.query.uploads.findMany({ + where: eq(uploads.courseId, courseId), + }); + + if (uploadRows.length === 0) throw new Error("No uploads found for this course"); + + log(courseId, `found ${uploadRows.length} upload(s)`); + + const primaryParts: string[] = []; + const secondaryParts: string[] = []; + + for (const upload of uploadRows) { + if (!upload.extractedText) { + log(courseId, ` skipping "${upload.filename}" — no extracted text`); + continue; + } + const snippet = `--- ${upload.filename} ---\n${upload.extractedText}`; + log(courseId, ` loaded "${upload.filename}" (${upload.type}, ${upload.extractedText.length} chars)`); + + if (upload.type === "past_paper" || upload.type === "lab_worksheet") { + primaryParts.push(snippet); + } else { + secondaryParts.push(snippet); + } + } + + log(courseId, `source split — primary: ${primaryParts.length}, secondary: ${secondaryParts.length}`); + + // ── STEP 1b — infer title, subject, and topic count ──────────────────── + await setStage(courseId, "analysing_sources"); + + const allExtracted = [ + ...primaryParts.join("\n\n"), + ...secondaryParts.join("\n\n"), + ].join("\n\n"); + + log(courseId, "inferring course title and subject from documents…"); + + const inferenceResult = await askAI([{ + role: "user", + content: `You are analysing a set of university course documents including lecture slides, past exam papers, and lab worksheets. + +Based on the content, return a JSON object with: +- "title": a concise course name (e.g. "Computer Vision", "Thermodynamics", "Microeconomics") +- "subject": the broader academic discipline (e.g. "Computer Science", "Physics", "Economics") +- "organisation": the university or institution these materials are from (e.g. "University of Essex", "Imperial College London"). Infer this from headers, exam paper footers, logos described in text, or module codes. Return null if you genuinely cannot determine it. + +Return only valid JSON, no markdown. + +DOCUMENTS: +${allExtracted}`, + }]); + costs.ai += inferenceResult.cost; + + let inferredMeta: { title: string; subject: string; organisation?: string | null } = { + title: course.title, + subject: course.subject, + }; + try { + inferredMeta = parseJSON(inferenceResult.text); + } catch { + log(courseId, "inference parse failed, using defaults"); + } + + log(courseId, `inferred → title: "${inferredMeta.title}", subject: "${inferredMeta.subject}"`); + + await db.update(courses) + .set({ + title: inferredMeta.title, + subject: inferredMeta.subject, + ...(inferredMeta.organisation != null ? { organisation: inferredMeta.organisation } : {}), + }) + .where(eq(courses.id, courseId)); + + // ── STEP 2 — generate topic list (skip if topics already saved) ───────── + + let savedTopics = await db.query.topics.findMany({ + where: eq(topics.courseId, courseId), + orderBy: (t, { asc }) => asc(t.order), + }); + + if (savedTopics.length > 0) { + log(courseId, `resuming — found ${savedTopics.length} existing topic(s), skipping curriculum generation`); + } else { + const primaryText = primaryParts.join("\n\n"); + const secondaryText = secondaryParts.join("\n\n"); + + const availableFilesBlock = uploadRows + .map((u) => `- ${u.filename} (${u.type})`) + .join("\n"); + + const curriculumPrompt = `You are designing a complete revision course from scratch. + +Your only measure of success is this: a student who completes every lesson in this course must be able to: +- Answer every question in every past paper provided, including calculation questions, pseudocode questions, diagram questions, and scenario questions +- Perform every procedure, method, and algorithm named in the source material — not just describe them, but actually do them +- Fully understand every concept present in the source material, with no gaps + +This is a non-negotiable standard. Do not summarise. Do not compress topics together if doing so would leave any gap in the student's ability to answer a past paper question. If meeting this standard requires 50 topics, generate 50 topics. If it requires 8, generate 8. There is no limit in either direction. + +BEFORE generating topics, do the following analysis mentally: +1. Read every past paper question carefully. For each question, ask: what does a student need to know and be able to DO to answer this? List every distinct skill, concept, calculation method, algorithm, and procedure required. +2. Read every lab worksheet. For each task, ask: what does a student need to know and be able to DO to complete this? Add any new skills, concepts, or procedures to the list. +3. Read the lecture slides. Add any concept or topic that appears in the slides but is not yet in the list. +4. Now organise the list into topics, ordered from simplest to most complex, such that each topic assumes only the knowledge of topics before it. + +TOPIC REQUIREMENTS: +- Every distinct algorithm named in the source material must have at least one dedicated topic that teaches it to implementation level — the student must be able to apply it step by step, not just name it +- Every calculation that appears in a past paper must be covered in a topic that teaches the student to perform that exact type of calculation by hand, with worked examples matching the exam style +- Every procedure that appears in a lab worksheet must be covered in a topic that teaches the student to carry out that procedure +- If a past paper asks for pseudocode, the corresponding topic must teach the student to write that pseudocode +- Conceptual understanding alone is never sufficient. Every topic must result in a student who can DO something, not just know something + +AVAILABLE SOURCE FILES (you must reference these exact filenames in relevantFiles): +${availableFilesBlock} + +PRIMARY SOURCES (past papers + lab worksheets — these define what the student must be able to do): +${primaryText || "(none provided)"} + +SECONDARY SOURCES (lecture slides — use for additional concepts and explanations): +${secondaryText || "(none provided)"} + +Return only valid JSON — an array of topics with no markdown: +[{ "title": "...", "description": "...", "difficulty": 1-5, "order": 1, "relevantFiles": ["filename.pdf"] }] + +relevantFiles must list only filenames from the AVAILABLE SOURCE FILES list that directly contain content for this topic. Include at minimum the files that have past paper questions or lab tasks this topic must prepare the student for. + +The description must be specific about what the student will be able to DO after completing this topic, not just what it covers.`; + + await setStage(courseId, "building_curriculum"); + log(courseId, "calling OpenRouter for curriculum…"); + const curriculumResult = await askAI([{ role: "user", content: curriculumPrompt }]); + costs.ai += curriculumResult.cost; + const curriculum = parseJSON<{ title: string; description: string; difficulty: number; relevantFiles?: string[] }[]>(curriculumResult.text); + + if (!Array.isArray(curriculum) || curriculum.length === 0) { + throw new Error("AI returned an empty curriculum"); + } + + log(courseId, `curriculum received — ${curriculum.length} topics:`); + curriculum.forEach((t, i) => log(courseId, ` ${i + 1}. ${t.title} (difficulty ${t.difficulty})`)); + + await setStage(courseId, "finalising"); + + for (let i = 0; i < curriculum.length; i++) { + const t = curriculum[i]; + await db.insert(topics).values({ + id: randomUUID(), + courseId, + title: t.title, + description: t.description, + order: i, + difficulty: Math.min(5, Math.max(1, t.difficulty ?? 1)), + prerequisiteTopicIds: "[]", + relevantFiles: JSON.stringify(t.relevantFiles ?? []), + }); + } + + // re-fetch so we have the real DB rows with IDs + savedTopics = await db.query.topics.findMany({ + where: eq(topics.courseId, courseId), + orderBy: (t, { asc }) => asc(t.order), + }); + + log(courseId, `saved ${savedTopics.length} topics to DB`); + } + + await setStage(courseId, "finalising"); + + // ── STEP 3 — build course context from what's already done ───────────── + const courseSubject = inferredMeta?.subject ?? course.subject; + const topicListText = savedTopics.map((t) => `${t.order + 1}. ${t.title}`).join("\n"); + + const courseContext: CourseContext = { + courseTitle: course.title, + subject: course.subject, + topicsInOrder: savedTopics.map((t) => ({ + order: t.order, + title: t.title, + description: t.description, + })), + completedLessons: [], + }; + + // ── STEP 4 — generate lessons + quizzes, skipping completed ones ──────── + for (const topic of savedTopics) { + const i = topic.order; + const isFirst = i === 0; + + // check what's already generated for this topic + const existingLesson = await db.query.lessons.findFirst({ + where: eq(lessons.topicId, topic.id), + }); + const existingQuiz = await db.query.quizQuestions.findMany({ + where: eq(quizQuestions.topicId, topic.id), + }); + + if (existingLesson && existingQuiz.length > 0) { + // fully done — just add to context and move on + const content = JSON.parse(existingLesson.content) as { + keyConcepts?: string[]; + analogiesUsed?: string[]; + }; + courseContext.completedLessons.push({ + order: i, + title: topic.title, + keyConcepts: content.keyConcepts ?? [], + analogiesUsed: content.analogiesUsed ?? [], + }); + log(courseId, ` [${i + 1}/${savedTopics.length}] "${topic.title}" already complete — skipping`); + continue; + } + + // build prior knowledge block from what's completed so far + let priorKnowledge: string; + if (courseContext.completedLessons.length === 0) { + priorKnowledge = "This is the very first lesson — assume zero prior knowledge of the subject."; + } else { + priorKnowledge = courseContext.completedLessons + .map((l) => `- ${l.title}: covered concepts [${l.keyConcepts.join(", ")}] using analogies [${l.analogiesUsed.join(", ")}]`) + .join("\n"); + } + + // build source context for this topic from its relevantFiles, falling back to all primary sources + const topicRelevantFiles: string[] = (() => { + try { return JSON.parse(topic.relevantFiles ?? "[]"); } catch { return []; } + })(); + + const relevantUploads = topicRelevantFiles.length > 0 + ? uploadRows.filter((u) => topicRelevantFiles.includes(u.filename) && u.extractedText) + : uploadRows.filter((u) => (u.type === "past_paper" || u.type === "lab_worksheet") && u.extractedText); + + const primaryTextForLesson = relevantUploads + .map((u) => `--- ${u.filename} ---\n${u.extractedText}`) + .join("\n\n"); + + const secondaryTextForLesson = topicRelevantFiles.length > 0 + ? uploadRows + .filter((u) => topicRelevantFiles.includes(u.filename) && u.extractedText && u.type === "slides") + .map((u) => `--- ${u.filename} ---\n${u.extractedText}`) + .join("\n\n") + : secondaryParts.join("\n\n"); + + // generate lesson if missing + let lessonContent: { keyConcepts: string[]; analogiesUsed: string[]; steps: any[] }; + + if (existingLesson) { + log(courseId, ` [${i + 1}/${savedTopics.length}] lesson already exists for "${topic.title}", generating quiz only`); + lessonContent = JSON.parse(existingLesson.content); + } else { + const lessonPrompt = `You are writing a lesson for a course on ${courseSubject}. + +YOUR ONLY MEASURE OF SUCCESS: +A student who completes this lesson must be able to answer any past paper or lab question that requires knowledge of this topic. That means they must be able to DO the thing, not just understand it. If this topic involves a calculation, they must be able to perform it. If it involves an algorithm, they must be able to apply it step by step. If it involves pseudocode, they must be able to write it. Conceptual understanding alone is never the goal — competence is the goal. + +WHAT THE STUDENT KNOWS: +- Basic English, everyday maths (arithmetic, simple algebra, fractions, proportions), and general school-level science +- Nothing domain-specific about ${courseSubject} unless it appears below +- Everything explicitly taught in previous lessons: + +${isFirst ? `This is the very first lesson. The student knows nothing about this subject yet. Start from absolute zero.` : courseContext.completedLessons.map((l) => `Lesson ${l.order + 1} — ${l.title}: ${l.keyConcepts.join(", ")}`).join("\n")} + +DO NOT use any technical term that does not appear in the above list or is not introduced and explained in the current lesson. This is a hard rule. It applies everywhere — questions, options, callouts, summaries. + +COURSE STRUCTURE: +This course has ${savedTopics.length} lessons in this order: +${topicListText} + +YOUR CURRENT LESSON: ${topic.title} — ${topic.description} + +SOURCE MATERIAL: +The following are the actual source files relevant to this topic — past papers, lab worksheets, and lecture slides. Your lesson must prepare the student to answer every question in these files that relates to this topic: +${primaryTextForLesson || "(no primary sources provided)"} +${secondaryTextForLesson ? `\nLECTURE SLIDES:\n${secondaryTextForLesson}` : ""} + +TEACHING PHILOSOPHY: + +OPENING: +- The very first sentence must make the student curious, smile, or feel something. Never open with a definition, a recap, or a statement of what they are about to learn. +- Open with the analogy or human moment immediately. + +ANALOGIES: +- Every concept step must open with a concrete real-world analogy before any technical language. +- The analogy comes first. The technical idea is revealed through it. +- Never repeat an analogy used in a previous lesson. +- Analogies must connect to everyday life, not the subject domain. + +BUILDING ON PRIOR KNOWLEDGE: +- Freely use terms and concepts from completed lessons without re-explaining them. +- Reference prior concepts as bridges: "remember how X worked — this is that same idea applied to Y." + +MATHEMATICS, ALGORITHMS, AND PROCEDURES: +- Before any formula, write one sentence in plain English saying what the relationship means intuitively. Vary the phrasing — never use "In plain terms" more than once per lesson. +- After introducing a formula or algorithm, immediately show a complete worked example that matches the style of the past paper questions for this topic. +- Never show more than one formula per step. +- Never introduce a variable without saying in plain English what it represents. +- If this topic requires the student to perform a procedure step by step, there must be at least one example step that walks through the complete procedure on a concrete example, showing every step explicitly. +- If past papers ask for pseudocode on this topic, there must be a concept or example step that shows the pseudocode and explains each line. + +QUESTIONS: +- Every question must be answerable using only what has been explicitly taught in this lesson up to that point, plus concepts from completed lessons. +- Questions immediately after the first concept step must be the simplest — their only job is to confirm the student understood the core analogy. +- Never ask a student to perform a full calculation in a single question. Use only: + (a) PARTIAL WORKING: Show known values and partial working, ask the student to identify the correct next step. + (b) INTERPRET THE RESULT: Give the numerical answer, ask what it means in context. + (c) SPOT THE ERROR: Show a worked example with a mistake, ask the student to identify what went wrong and why. +- Answer options must be short and scannable — under 15 words each. +- Wrong answer options must represent genuine conceptual misconceptions, not arithmetic errors. +- Never use a technical term in any answer option that has not already been taught. + +RHYTHM AND PACING: +- Never place two question steps consecutively without a concept or example step between them. +- The lesson must not become more question-heavy in the second half. +- A concept or example step must always appear after the final question and before the summary. +- Every concept and example step body: 3-4 sentences maximum. +- The lesson should feel like it has a rhythm: teach, check, teach, check, show, check, land. + +TONE: +- Warm, clear, occasionally witty. The most engaging teacher the student has ever had. +- Never dry, never robotic, never formal for formality's sake. +- Short sentences. Active voice. Concrete over abstract. + +SUMMARY: +- Bullet count must exactly match keyConcepts count. +- Each bullet must be a complete thought that makes sense without reading the lesson. +- The final bullet must gesture forward — what will this knowledge unlock? + +OUTPUT FORMAT: +Return only valid JSON with no markdown fences: +{ + "keyConcepts": ["..."], + "analogiesUsed": ["..."], + "steps": [ + { "type": "concept", "title": "...", "body": "..." }, + { "type": "question", "body": "...", "options": ["...", "...", "...", "..."], "answer": "full correct answer text", "explanation": "..." }, + { "type": "example", "title": "...", "body": "...", "callout": "..." }, + { "type": "question", "body": "...", "options": ["...", "...", "...", "..."], "answer": "full correct answer text", "explanation": "..." }, + { "type": "summary", "title": "Key Takeaways", "bullets": ["...", "..."] } + ] +} + +Steps must interleave concept/example and question types — never two questions or two concepts in a row. Minimum 6 steps, maximum 16. Use more steps when the topic requires it to achieve full competence.`; + + log(courseId, ` [${i + 1}/${savedTopics.length}] generating lesson for "${topic.title}"…`); + const lessonResult = await askAI([{ role: "user", content: lessonPrompt }]); + costs.ai += lessonResult.cost; + lessonContent = parseJSON(lessonResult.text); + + const lessonId = randomUUID(); + + const ttsProvider = (useRuntimeConfig().ttsProvider as string | undefined)?.toLowerCase() ?? "elevenlabs"; + + await db.insert(lessons).values({ + id: lessonId, + topicId: topic.id, + content: JSON.stringify(lessonContent), + ttsProvider, + }); + + log(courseId, ` [${i + 1}/${savedTopics.length}] lesson saved — ${lessonContent.steps?.length ?? 0} steps, concepts: [${(lessonContent.keyConcepts ?? []).join(", ")}]`); + + // generate per-step TTS — non-fatal, embeds audio into step objects + log(courseId, ` [${i + 1}/${savedTopics.length}] generating per-step TTS for lesson ${lessonId}…`); + try { + const { steps: stepsWithAudio, cost: audioCost } = await generateLessonAudio( + lessonContent.steps as any[], + lessonId, + courseId + ); + lessonContent.steps = stepsWithAudio; + costs.audio += audioCost; + + // update DB with embedded audio + await db.update(lessons) + .set({ content: JSON.stringify(lessonContent) }) + .where(eq(lessons.id, lessonId)); + } catch (err: any) { + console.error(`[revisione] TTS generation failed for lesson ${lessonId}: ${err?.message ?? err}`); + } + + // ── generate branches for each question step ────────────────────── + log(courseId, ` [${i + 1}/${savedTopics.length}] generating branches for lesson ${lessonId}…`); + let branchesChanged = false; + + for (let si = 0; si < lessonContent.steps.length; si++) { + const step = lessonContent.steps[si] as any; + if (step.type !== "question") continue; + + const OPTION_LABELS = ["A", "B", "C", "D"]; + const optionsText = (step.options as string[]) + .map((o: string, idx: number) => `${OPTION_LABELS[idx]}: ${o}`) + .join("\n"); + + const priorBlock = courseContext.completedLessons.length + ? courseContext.completedLessons + .map((l) => `- ${l.title}: [${l.keyConcepts.join(", ")}]`) + .join("\n") + : "This is the first lesson."; + + const branchPrompt = `You are writing remediation branches for a question in a lesson about ${courseSubject}. + +SOURCE MATERIAL FOR THIS TOPIC: +${primaryTextForLesson || "(none)"} + +THE QUESTION: +${step.body} + +THE OPTIONS: +${optionsText} + +THE CORRECT ANSWER: ${step.answer} + +WHAT THE STUDENT KNOWS SO FAR: +${priorBlock} + +YOUR TASK: +For each wrong answer option, write a branch that: +1. Opens by acknowledging the specific thinking behind that wrong answer — not generically ("that's wrong") but specifically ("It makes sense to think that, because X — but here is where that reasoning breaks down...") +2. Contains 1-2 short teaching steps that directly address the specific misconception behind that wrong answer +3. Ends with a confirming question that tests whether the student now understands the correct concept +4. Includes a warm, honest hard-stop message for if they fail the confirming question too + +BRANCH TEACHING RULES: +- Each branch must feel like a patient teacher who has seen this exact mistake before and knows exactly how to fix it +- The opening must name the misconception specifically — never say "incorrect" or "wrong" — say "here is what that answer is actually describing..." or "that reasoning would be right if... but in this case..." +- Steps must be 2-3 sentences maximum — these are micro-lessons, not full explanations +- The confirming question must be simpler than the original question — it tests the core concept only +- The confirming question options must be short and scannable — under 12 words each +- The hard stop message must be warm, not discouraging — acknowledge that some concepts need more time, tell them specifically what to look up, and invite them back +- Never use technical terms that haven't been taught yet + +Return only valid JSON, no markdown. Structure: +{ + "branches": { + "{exact text of wrong option}": { + "steps": [ + { "type": "concept", "title": "...", "body": "..." } + ], + "confirmQuestion": { + "body": "...", + "options": ["...", "...", "...", "..."], + "answer": "full correct answer text", + "explanation": "..." + }, + "hardStop": "..." + } + } +} + +Only generate branches for the 3 wrong options. Do not generate a branch for the correct answer.`; + + try { + const branchResult = await askAI([{ role: "user", content: branchPrompt }]); + costs.ai += branchResult.cost; + + const parsed = parseJSON<{ branches: Record }>(branchResult.text); + step.branches = parsed.branches ?? {}; + branchesChanged = true; + + log(courseId, ` step ${si} branches generated — ${Object.keys(step.branches).length} wrong options`); + + // TTS for each branch + const wrongOptions = (step.options as string[]).filter((o: string) => o !== step.answer); + for (let bi = 0; bi < wrongOptions.length; bi++) { + const wrongOpt = wrongOptions[bi]; + const branch = step.branches[wrongOpt]; + if (!branch) continue; + + // branch concept steps + for (let bsi = 0; bsi < (branch.steps ?? []).length; bsi++) { + const bStep = branch.steps[bsi]; + const text = [bStep.body, bStep.callout].filter(Boolean).join(" "); + if (!text.trim()) continue; + const r = await generateTTSToPath(text, lessonId, `branch_${si}_${bi}_step_${bsi}.mp3`); + if (r) { + bStep.audioPath = r.audioPath; + bStep.audioChunks = r.audioChunks; + costs.audio += r.cost; + } + } + + // confirm question narration + if (branch.confirmQuestion?.body?.trim()) { + const r = await generateTTSToPath(branch.confirmQuestion.body, lessonId, `branch_${si}_${bi}_confirm_q.mp3`); + if (r) { + branch.confirmQuestion.questionAudioPath = r.audioPath; + branch.confirmQuestion.questionAudioChunks = r.audioChunks; + costs.audio += r.cost; + } + } + + // confirm question options + if (Array.isArray(branch.confirmQuestion?.options)) { + branch.confirmQuestion.optionAudioPaths = []; + for (let oi = 0; oi < branch.confirmQuestion.options.length; oi++) { + const optText = branch.confirmQuestion.options[oi]; + if (optText?.trim()) { + const r = await generateTTSToPath(optText, lessonId, `branch_${si}_${bi}_confirm_opt_${oi}.mp3`); + branch.confirmQuestion.optionAudioPaths[oi] = r ? r.audioPath : null; + if (r) costs.audio += r.cost; + } else { + branch.confirmQuestion.optionAudioPaths[oi] = null; + } + } + } + + // hard stop narration + if (branch.hardStop?.trim()) { + const r = await generateTTSToPath(branch.hardStop, lessonId, `branch_${si}_${bi}_hardstop.mp3`); + if (r) { + branch.hardStopAudioPath = r.audioPath; + costs.audio += r.cost; + } + } + + log(courseId, ` step ${si} branch ${bi} TTS done`); + } + } catch (err: any) { + console.error(`[revisione] branch gen failed for step ${si} in lesson ${lessonId}: ${err?.message ?? err}`); + } + } + + if (branchesChanged) { + await db.update(lessons) + .set({ content: JSON.stringify(lessonContent) }) + .where(eq(lessons.id, lessonId)); + log(courseId, ` [${i + 1}/${savedTopics.length}] branches + audio saved to DB`); + } + } + + courseContext.completedLessons.push({ + order: i, + title: topic.title, + keyConcepts: lessonContent.keyConcepts ?? [], + analogiesUsed: lessonContent.analogiesUsed ?? [], + }); + + // generate quiz if missing + if (existingQuiz.length > 0) { + log(courseId, ` [${i + 1}/${savedTopics.length}] quiz already exists for "${topic.title}" — skipping`); + } else { + const quizPrompt = `You are an exam question writer for a university course on ${courseSubject}. + +COURSE CONTEXT: +The student has just completed a lesson on "${topic.title}" which covered: ${(lessonContent.keyConcepts ?? []).join(", ")}. +This is topic ${i + 1} of ${savedTopics.length} — difficulty level: ${topic.difficulty}/5. + +SOURCE MATERIAL FOR THIS TOPIC (use these to match question style, difficulty, and content exactly): +${primaryTextForLesson || "(none provided)"} + +Generate 4 quiz questions for this topic. Mix MCQ and short_answer types. For MCQ, provide 4 options labeled A, B, C, D. +Match the difficulty level — topic 1 should be very approachable, later topics can be more demanding. + +Respond with ONLY valid JSON array, no markdown fences: +[ + { + "question": "...", + "type": "mcq", + "options": ["A. ...", "B. ...", "C. ...", "D. ..."], + "answer": "A", + "explanation": "..." + }, + { + "question": "...", + "type": "short_answer", + "options": null, + "answer": "...", + "explanation": "..." + } +]`; + + log(courseId, ` [${i + 1}/${savedTopics.length}] generating quiz for "${topic.title}"…`); + const quizResult = await askAI([{ role: "user", content: quizPrompt }]); + costs.ai += quizResult.cost; + const questions = parseJSON<{ + question: string; + type: string; + options: string[] | null; + answer: string; + explanation: string; + }[]>(quizResult.text); + + for (const q of questions) { + await db.insert(quizQuestions).values({ + id: randomUUID(), + topicId: topic.id, + question: q.question, + type: q.type as "mcq" | "short_answer" | "worked", + options: q.options ? JSON.stringify(q.options) : null, + answer: q.answer, + explanation: q.explanation, + }); + } + + log(courseId, ` [${i + 1}/${savedTopics.length}] quiz saved — ${questions.length} questions`); + } + } + + // ── STEP 5 — mark ready ───────────────────────────────────────────────── + await db.update(courses) + .set({ status: "ready", stage: "ready", costAI: costs.ai, costAudio: costs.audio }) + .where(eq(courses.id, courseId)); + log(courseId, `✓ generation complete — ${savedTopics.length} topics | cost: AI $${costs.ai.toFixed(4)}, audio $${costs.audio.toFixed(4)}`); + + // ── STEP 6 — post-generation audit (non-blocking) ─────────────────────── + await auditCourse(courseId); + } catch (err: any) { + console.error(`[revisione:${courseId.slice(0, 8)}] ✗ generation failed: ${err?.message ?? err}`); + await db.update(courses).set({ status: "error", stage: "error" }).where(eq(courses.id, courseId)); + } +} diff --git a/server/utils/generateLabels.ts b/server/utils/generateLabels.ts new file mode 100644 index 0000000..6d72971 --- /dev/null +++ b/server/utils/generateLabels.ts @@ -0,0 +1,84 @@ +import { resolve } from "path"; +import { generateClip, fileExists } from "./generateTTS"; + +const LABEL_CLIPS: Record = { + A_1: "[calm] A,", + A_2: "[calm] A,", + A_3: "[thoughtful] A,", + A_4: "[measured] A,", + + B_1: "[calm] B,", + B_2: "[thoughtful] B,", + B_3: "[calm] B,", + B_4: "[measured] B,", + + C_1: "[thoughtful] C,", + C_2: "[calm] C,", + C_3: "[measured] C,", + C_4: "[calm] C,", + + D_1: "[measured] D.", + D_2: "[calm] D.", + D_3: "[thoughtful] D.", + D_4: "[measured] D.", +}; + +const VOICE_SETTINGS = { stability: 0.3, similarity_boost: 0.75 }; + +const TRANSITION_TEXT = "[thoughtful] Let's look at this a different way..."; + +const CORRECT_CLIPS: Record = { + correct_1: "Exactly right.", + correct_2: "That's it.", + correct_3: "Spot on.", + correct_4: "Perfect.", +}; + +export async function generateLabels() { + const config = useRuntimeConfig(); + const apiKey = config.elevenlabsApiKey; + const voiceId = config.elevenlabsVoiceId; + + if (!apiKey) { + console.warn("[labels] ELEVENLABS_API_KEY not set — skipping label generation"); + return; + } + + const labelsDir = resolve(process.cwd(), "public/audio/labels"); + + for (const [key, text] of Object.entries(LABEL_CLIPS)) { + const outPath = `${labelsDir}/${key}.mp3`; + + if (await fileExists(outPath)) continue; + + console.log(`[labels] generating ${key}.mp3…`); + await generateClip(text, outPath, apiKey, voiceId, { + model: "eleven_v3", + voice_settings: VOICE_SETTINGS, + }); + } + + // branch transition clip + const transitionPath = resolve(process.cwd(), "public/audio/branch-transition.mp3"); + if (!(await fileExists(transitionPath))) { + console.log("[labels] generating branch-transition.mp3…"); + await generateClip(TRANSITION_TEXT, transitionPath, apiKey, voiceId, { + model: "eleven_v3", + voice_settings: VOICE_SETTINGS, + }); + } + + // correct affirmation clips + const audioDir = resolve(process.cwd(), "public/audio"); + for (const [key, text] of Object.entries(CORRECT_CLIPS)) { + const outPath = `${audioDir}/${key}.mp3`; + if (await fileExists(outPath)) continue; + console.log(`[labels] generating ${key}.mp3…`); + await generateClip(text, outPath, apiKey, voiceId, { + model: "eleven_v3", + voice_settings: { stability: 0.35, similarity_boost: 0.8 }, + }); + } + + console.log("[labels] all label clips ready"); +} diff --git a/server/utils/generateTTS.ts b/server/utils/generateTTS.ts new file mode 100644 index 0000000..025ce56 --- /dev/null +++ b/server/utils/generateTTS.ts @@ -0,0 +1,329 @@ +import { mkdir, writeFile, access } from "fs/promises"; +import { resolve } from "path"; + +export interface AudioChunk { + text: string; + start: number; + end: number; +} + +export interface TTSResult { + audioPath: string; + audioChunks: AudioChunk[]; + cost: number; +} + + +async function callElevenLabs( + text: string, + apiKey: string, + voiceId: string +): Promise<{ audio: Buffer; chunks: AudioChunk[]; cost: number } | null> { + const res = await fetch( + `https://api.elevenlabs.io/v1/text-to-speech/${voiceId}/with-timestamps`, + { + method: "POST", + headers: { + "xi-api-key": apiKey, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + text, + model_id: "eleven_turbo_v2_5", + output_format: "mp3_44100_128", + }), + } + ); + + if (!res.ok) { + const errText = await res.text().catch(() => ""); + console.error(`[tts] ElevenLabs error ${res.status}: ${errText}`); + return null; + } + + const charCost = parseInt(res.headers.get("character-cost") ?? "0", 10); + const cost = charCost * 0.0003; + + const data = await res.json() as { + audio_base64: string; + alignment: { + characters: string[]; + character_start_times_seconds: number[]; + character_end_times_seconds: number[]; + }; + }; + + const audio = Buffer.from(data.audio_base64, "base64"); + const { characters, character_start_times_seconds: starts, character_end_times_seconds: ends } = data.alignment; + + const words: { word: string; charStart: number; charEnd: number }[] = []; + let i = 0; + while (i < text.length) { + while (i < text.length && /\s/.test(text[i])) i++; + if (i >= text.length) break; + const wordStart = i; + while (i < text.length && !/\s/.test(text[i])) i++; + words.push({ word: text.slice(wordStart, i), charStart: wordStart, charEnd: i - 1 }); + } + + function timeForChar(charIdx: number, side: "start" | "end"): number { + let accumulated = 0; + for (let ci = 0; ci < characters.length; ci++) { + const c = characters[ci]; + if (accumulated + c.length > charIdx) { + return side === "start" ? starts[ci] : ends[ci]; + } + accumulated += c.length; + } + const last = side === "start" ? starts[starts.length - 1] : ends[ends.length - 1]; + return last ?? 0; + } + + const chunks: AudioChunk[] = []; + for (let wi = 0; wi < words.length; wi += 3) { + const slice = words.slice(wi, wi + 3); + chunks.push({ + text: slice.map(w => w.word).join(" "), + start: timeForChar(slice[0].charStart, "start"), + end: timeForChar(slice[slice.length - 1].charEnd, "end"), + }); + } + + return { audio, chunks, cost }; +} + + +// Fish Audio doesnt return alignment data, so we return empty chunks +async function callFishAudio( + text: string, + apiKey: string, + voiceId: string +): Promise<{ audio: Buffer; chunks: AudioChunk[]; cost: number } | null> { + const res = await fetch("https://api.fish.audio/v1/tts", { + method: "POST", + headers: { + "Authorization": `Bearer ${apiKey}`, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + text, + reference_id: voiceId, + format: "mp3", + mp3_bitrate: 128, + streaming: false, + }), + }); + + if (!res.ok) { + const errText = await res.text().catch(() => ""); + console.error(`[tts] Fish Audio error ${res.status}: ${errText}`); + return null; + } + + const audio = Buffer.from(await res.arrayBuffer()); + return { audio, chunks: [], cost: 0 }; +} + + +function getProvider() { + const config = useRuntimeConfig(); + return (config.ttsProvider as string | undefined)?.toLowerCase() ?? "elevenlabs"; +} + +async function callTTS( + text: string +): Promise<{ audio: Buffer; chunks: AudioChunk[]; cost: number } | null> { + const config = useRuntimeConfig(); + const provider = getProvider(); + + if (provider === "fishaudio") { + const apiKey = config.fishAudioApiKey as string; + const voiceId = config.fishAudioVoiceId as string; + if (!apiKey) return null; + return callFishAudio(text, apiKey, voiceId); + } + + const apiKey = config.elevenlabsApiKey as string; + const voiceId = config.elevenlabsVoiceId as string; + if (!apiKey) return null; + return callElevenLabs(text, apiKey, voiceId); +} + + +export async function generateStepTTS( + text: string, + lessonId: string, + stepIndex: number +): Promise { + try { + const result = await callTTS(text); + if (!result) return null; + + const dir = resolve(process.cwd(), `public/audio/lessons/${lessonId}`); + await mkdir(dir, { recursive: true }); + const filename = `step_${stepIndex}.mp3`; + await writeFile(`${dir}/${filename}`, result.audio); + + const audioPath = `/audio/lessons/${lessonId}/${filename}`; + console.log(`[tts] step ${stepIndex} for lesson ${lessonId} — ${result.chunks.length} chunks | $${result.cost.toFixed(4)}`); + return { audioPath, audioChunks: result.chunks, cost: result.cost }; + } catch (err: any) { + console.error(`[tts] step ${stepIndex} for lesson ${lessonId} failed: ${err?.message ?? err}`); + return null; + } +} + +export async function generateQuestionTTS( + text: string, + lessonId: string, + stepIndex: number +): Promise { + try { + const result = await callTTS(text); + if (!result) return null; + + const dir = resolve(process.cwd(), `public/audio/lessons/${lessonId}`); + await mkdir(dir, { recursive: true }); + const filename = `step_${stepIndex}_question.mp3`; + await writeFile(`${dir}/${filename}`, result.audio); + + const audioPath = `/audio/lessons/${lessonId}/${filename}`; + return { audioPath, audioChunks: result.chunks, cost: result.cost }; + } catch (err: any) { + console.error(`[tts] question ${stepIndex} for lesson ${lessonId} failed: ${err?.message ?? err}`); + return null; + } +} + +export async function generateOptionTTS( + text: string, + lessonId: string, + stepIndex: number, + optionIndex: number +): Promise<{ audioPath: string; cost: number } | null> { + try { + const result = await callTTS(text); + if (!result) return null; + + const dir = resolve(process.cwd(), `public/audio/lessons/${lessonId}`); + await mkdir(dir, { recursive: true }); + const filename = `step_${stepIndex}_option_${optionIndex}.mp3`; + await writeFile(`${dir}/${filename}`, result.audio); + + const audioPath = `/audio/lessons/${lessonId}/${filename}`; + return { audioPath, cost: result.cost }; + } catch (err: any) { + console.error(`[tts] option ${stepIndex}/${optionIndex} for lesson ${lessonId} failed: ${err?.message ?? err}`); + return null; + } +} + +// generate a plain audio clip with no timestamp data (used for label clips) +// opts are ElevenLabs-specific and are ignored when using Fish Audio +export async function generateClip( + text: string, + outPath: string, + apiKey: string, + voiceId: string, + opts?: { model?: string; voice_settings?: Record } +): Promise<{ cost: number } | null> { + const provider = getProvider(); + + try { + let buffer: Buffer; + let cost = 0; + + if (provider === "fishaudio") { + const config = useRuntimeConfig(); + const fishKey = config.fishAudioApiKey as string; + const fishVoice = (config.fishAudioVoiceId as string) || voiceId; + + const res = await fetch("https://api.fish.audio/v1/tts", { + method: "POST", + headers: { + "Authorization": `Bearer ${fishKey}`, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + text, + reference_id: fishVoice, + format: "mp3", + mp3_bitrate: 128, + streaming: false, + }), + }); + + if (!res.ok) { + const errText = await res.text().catch(() => ""); + console.error(`[tts] Fish Audio clip error ${res.status}: ${errText}`); + return null; + } + + buffer = Buffer.from(await res.arrayBuffer()); + } else { + const res = await fetch( + `https://api.elevenlabs.io/v1/text-to-speech/${voiceId}`, + { + method: "POST", + headers: { + "xi-api-key": apiKey, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + text, + model_id: opts?.model ?? "eleven_turbo_v2_5", + output_format: "mp3_44100_128", + ...(opts?.voice_settings ? { voice_settings: opts.voice_settings } : {}), + }), + } + ); + + if (!res.ok) { + const errText = await res.text().catch(() => ""); + console.error(`[tts] clip error ${res.status}: ${errText}`); + return null; + } + + const charCost = parseInt(res.headers.get("character-cost") ?? "0", 10); + cost = charCost * 0.0003; + buffer = Buffer.from(await res.arrayBuffer()); + } + + await mkdir(resolve(process.cwd(), "public/audio/labels"), { recursive: true }); + await writeFile(outPath, buffer); + return { cost }; + } catch (err: any) { + console.error(`[tts] clip failed for ${outPath}: ${err?.message ?? err}`); + return null; + } +} + +export async function generateTTSToPath( + text: string, + lessonId: string, + filename: string +): Promise { + try { + const result = await callTTS(text); + if (!result) return null; + + const dir = resolve(process.cwd(), `public/audio/lessons/${lessonId}`); + await mkdir(dir, { recursive: true }); + await writeFile(`${dir}/${filename}`, result.audio); + + const audioPath = `/audio/lessons/${lessonId}/${filename}`; + return { audioPath, audioChunks: result.chunks, cost: result.cost }; + } catch (err: any) { + console.error(`[tts] ${filename} for lesson ${lessonId} failed: ${err?.message ?? err}`); + return null; + } +} + +export async function fileExists(path: string): Promise { + try { + await access(path); + return true; + } catch { + return false; + } +} diff --git a/server/utils/openrouter.ts b/server/utils/openrouter.ts new file mode 100644 index 0000000..ae7888c --- /dev/null +++ b/server/utils/openrouter.ts @@ -0,0 +1,111 @@ +interface Message { + role: "system" | "user" | "assistant"; + content: string; +} + +interface AskAIOptions { + model?: string; + temperature?: number; + maxRetries?: number; + maxTokens?: number; +} + +export interface AskAIResult { + text: string; + cost: number; +} + +function sleep(ms: number) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} + + +export async function askAI(messages: Message[], options: AskAIOptions = {}): Promise { + const config = useRuntimeConfig(); + const apiKey = config.openrouterApiKey; + + if (!apiKey) throw new Error("OPENROUTER_API_KEY is not set"); + + const model = options.model ?? (config as any).openrouterModel ?? "anthropic/claude-sonnet-4-5"; + const maxRetries = options.maxRetries ?? 4; + + let lastError: any; + + for (let attempt = 0; attempt <= maxRetries; attempt++) { + const label = attempt > 0 ? ` (attempt ${attempt + 1}/${maxRetries + 1})` : ""; + const promptPreview = messages[messages.length - 1]?.content?.slice(0, 120).replace(/\n/g, " "); + console.log(`[openrouter] → ${model}${label} | prompt: "${promptPreview}…"`); + const t0 = Date.now(); + + try { + const res = await $fetch<{ id?: string; choices: { message: { content: string } }[]; usage?: { prompt_tokens?: number; completion_tokens?: number; cost?: number } }>( + "https://openrouter.ai/api/v1/chat/completions", + { + method: "POST", + headers: { + Authorization: `Bearer ${apiKey}`, + "Content-Type": "application/json", + "HTTP-Referer": "https://revisi.one", + "X-Title": "Revisi.one", + }, + body: { + model, + messages, + temperature: options.temperature ?? 0.3, + ...(options.maxTokens ? { max_tokens: options.maxTokens } : {}), + }, + } + ); + + const elapsed = ((Date.now() - t0) / 1000).toFixed(1); + const content = res.choices?.[0]?.message?.content; + + if (!content) { + console.error(`[openrouter] ✗ empty response after ${elapsed}s — full response:`, JSON.stringify(res)); + throw new Error("Empty response from OpenRouter"); + } + + const usage = res.usage; + const tokenInfo = usage ? ` | tokens: ${usage.prompt_tokens ?? "?"}→${usage.completion_tokens ?? "?"}` : ""; + console.log(`[openrouter] ✓ ${elapsed}s${tokenInfo} | reply: "${content.slice(0, 120).replace(/\n/g, " ")}…"`); + + const cost = usage?.cost ?? 0; + + return { text: content, cost }; + } catch (err: any) { + lastError = err; + const elapsed = ((Date.now() - t0) / 1000).toFixed(1); + const status = err?.response?.status ?? err?.statusCode ?? err?.status; + const body = err?.data ?? err?.response?._data ?? "(no body)"; + + console.error(`[openrouter] ✗ ${elapsed}s — status: ${status ?? "unknown"} | error: ${err?.message}`); + if (body && body !== "(no body)") { + console.error(`[openrouter] response body:`, JSON.stringify(body).slice(0, 400)); + } + + // 402 = insufficient credits — wait 60s and keep retrying indefinitely + if (status === 402) { + console.warn(`[openrouter] insufficient credits — waiting 60s before retry…`); + await sleep(60_000); + attempt--; // don't count against maxRetries + continue; + } + + // only retry on 429 and 5xx + if (status !== 429 && (status < 500 || status > 599)) throw err; + + if (attempt < maxRetries) { + const retryAfterHeader = err?.response?.headers?.get?.("retry-after"); + const retryAfterSec = retryAfterHeader ? parseInt(retryAfterHeader, 10) : NaN; + const backoffMs = isNaN(retryAfterSec) + ? Math.min(1000 * 2 ** attempt + Math.random() * 500, 30000) + : retryAfterSec * 1000; + + console.warn(`[openrouter] retrying in ${Math.round(backoffMs)}ms…`); + await sleep(backoffMs); + } + } + } + + throw lastError; +} diff --git a/server/utils/parsePdf.ts b/server/utils/parsePdf.ts new file mode 100644 index 0000000..8851181 --- /dev/null +++ b/server/utils/parsePdf.ts @@ -0,0 +1,9 @@ +import { createRequire } from "module"; + +const require = createRequire(import.meta.url); +const pdfParse = require("pdf-parse"); + +export async function parsePdf(buffer: Buffer): Promise { + const data = await pdfParse(buffer); + return data.text; +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..4b34df1 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "./.nuxt/tsconfig.json" +} diff --git a/uploads/.gitkeep b/uploads/.gitkeep new file mode 100644 index 0000000..e69de29