From 59dfbe4155f3918c08196d0349b51faca8306fc1 Mon Sep 17 00:00:00 2001 From: Valentin Le Moign Date: Sun, 5 Jul 2026 18:37:09 +0200 Subject: [PATCH] =?UTF-8?q?G=C3=A9n=C3=A9rateur=20de=20portfolios=20PDF=20?= =?UTF-8?q?Figures=20Libres=20(app=20Nuxt=20autonome)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit App Nuxt 3 + Nuxt UI qui lit les projets du CMS Grav et compose des portfolios A3 paysage exportés en PDF (gabarit book_v3) : composeur WYSIWYG, templates cover/toc/projet/grille/page libre, pipeline Playwright + Ghostscript, gel du contenu à la génération, partage public opt-in. Dépôt autonome : Dockerfile (base Playwright + Ghostscript + ffmpeg + rsync) inclus. Co-Authored-By: Claude Opus 4.8 --- .dockerignore | 9 + .gitignore | 10 + CLAUDE.md | 67 + Dockerfile | 21 + README.md | 39 + app.vue | 7 + assets/css/main.css | 8 + assets/css/theme.css | 137 + components/composer/BackgroundEditor.vue | 51 + components/composer/BandColorPicker.vue | 44 + components/composer/GridIcon.vue | 44 + components/composer/MediaCuration.vue | 69 + components/composer/MediaPickerModal.vue | 70 + components/composer/ProjectPickerModal.vue | 130 + components/preview/PageRenderer.vue | 214 + components/preview/PageViewport.vue | 23 + components/templates/CoverTemplate.vue | 59 + components/templates/FreeTextPage.vue | 39 + components/templates/ProjectCoverPage.vue | 95 + components/templates/ProjectGridPage.vue | 134 + components/templates/TocTemplate.vue | 77 + composables/useFormat.ts | 35 + composables/useGrids.ts | 219 + composables/usePageScrollSpy.ts | 69 + composables/useTheme.ts | 97 + layouts/default.vue | 66 + middleware/auth.global.ts | 12 + nuxt.config.ts | 42 + package-lock.json | 13987 ++++++++++++++++ package.json | 23 + pages/index.vue | 146 + pages/login.vue | 46 + pages/portfolios/[id].vue | 827 + pages/print/[id].vue | 71 + pages/view/[id].vue | 128 + public/fonts/Avara-bold-italic.woff2 | Bin 0 -> 12600 bytes public/fonts/Lato-bold-italic.woff2 | Bin 0 -> 25460 bytes public/fonts/Lato-bold.woff2 | Bin 0 -> 24084 bytes public/fonts/Lato-italic.woff2 | Bin 0 -> 25460 bytes public/fonts/Lato-regular.woff2 | Bin 0 -> 24480 bytes .../fonts/ManifontGrotesk-bold-italic.woff2 | Bin 0 -> 9508 bytes public/fonts/Moche-bold.woff2 | Bin 0 -> 10484 bytes public/fonts/PlayfairDisplay-italic.woff2 | Bin 0 -> 19784 bytes public/fonts/Syne-bold.woff2 | Bin 0 -> 10968 bytes public/fonts/Syne-regular.woff2 | Bin 0 -> 10964 bytes scripts/dev-composer-shots.mjs | 23 + scripts/dev-pages-shots.mjs | 23 + scripts/dev-picker-shot.mjs | 24 + scripts/dev-raw-pdf.mjs | 50 + scripts/dev-screenshot.mjs | 18 + scripts/dev-test-generate.mjs | 20 + server/api/auth/login.post.ts | 11 + server/api/auth/logout.post.ts | 6 + server/api/auth/me.get.ts | 5 + server/api/exports/[file].get.ts | 22 + server/api/media/[...path].get.ts | 28 + server/api/portfolios/[id]/duplicate.post.ts | 7 + server/api/portfolios/[id]/generate.post.ts | 23 + server/api/portfolios/[id]/index.delete.ts | 6 + server/api/portfolios/[id]/index.get.ts | 7 + server/api/portfolios/[id]/index.put.ts | 21 + server/api/portfolios/[id]/share.post.ts | 30 + server/api/portfolios/[id]/unfreeze.post.ts | 16 + server/api/portfolios/index.get.ts | 5 + server/api/portfolios/index.post.ts | 6 + server/api/projects/[...id].get.ts | 10 + server/api/projects/index.get.ts | 7 + server/api/public/[id].get.ts | 19 + server/api/public/[id]/media/[...path].get.ts | 28 + server/api/sync.post.ts | 7 + server/lib/content-source.ts | 140 + server/lib/grav-reader.ts | 198 + server/lib/media.ts | 186 + server/lib/pdf-pipeline.ts | 198 + server/lib/portfolio-store.ts | 104 + server/lib/session.ts | 48 + server/middleware/01.auth.ts | 16 + tsconfig.json | 3 + types/index.ts | 157 + 79 files changed, 18587 insertions(+) create mode 100644 .dockerignore create mode 100644 .gitignore create mode 100644 CLAUDE.md create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 app.vue create mode 100644 assets/css/main.css create mode 100644 assets/css/theme.css create mode 100644 components/composer/BackgroundEditor.vue create mode 100644 components/composer/BandColorPicker.vue create mode 100644 components/composer/GridIcon.vue create mode 100644 components/composer/MediaCuration.vue create mode 100644 components/composer/MediaPickerModal.vue create mode 100644 components/composer/ProjectPickerModal.vue create mode 100644 components/preview/PageRenderer.vue create mode 100644 components/preview/PageViewport.vue create mode 100644 components/templates/CoverTemplate.vue create mode 100644 components/templates/FreeTextPage.vue create mode 100644 components/templates/ProjectCoverPage.vue create mode 100644 components/templates/ProjectGridPage.vue create mode 100644 components/templates/TocTemplate.vue create mode 100644 composables/useFormat.ts create mode 100644 composables/useGrids.ts create mode 100644 composables/usePageScrollSpy.ts create mode 100644 composables/useTheme.ts create mode 100644 layouts/default.vue create mode 100644 middleware/auth.global.ts create mode 100644 nuxt.config.ts create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 pages/index.vue create mode 100644 pages/login.vue create mode 100644 pages/portfolios/[id].vue create mode 100644 pages/print/[id].vue create mode 100644 pages/view/[id].vue create mode 100644 public/fonts/Avara-bold-italic.woff2 create mode 100644 public/fonts/Lato-bold-italic.woff2 create mode 100644 public/fonts/Lato-bold.woff2 create mode 100644 public/fonts/Lato-italic.woff2 create mode 100644 public/fonts/Lato-regular.woff2 create mode 100644 public/fonts/ManifontGrotesk-bold-italic.woff2 create mode 100644 public/fonts/Moche-bold.woff2 create mode 100644 public/fonts/PlayfairDisplay-italic.woff2 create mode 100644 public/fonts/Syne-bold.woff2 create mode 100644 public/fonts/Syne-regular.woff2 create mode 100644 scripts/dev-composer-shots.mjs create mode 100644 scripts/dev-pages-shots.mjs create mode 100644 scripts/dev-picker-shot.mjs create mode 100644 scripts/dev-raw-pdf.mjs create mode 100644 scripts/dev-screenshot.mjs create mode 100644 scripts/dev-test-generate.mjs create mode 100644 server/api/auth/login.post.ts create mode 100644 server/api/auth/logout.post.ts create mode 100644 server/api/auth/me.get.ts create mode 100644 server/api/exports/[file].get.ts create mode 100644 server/api/media/[...path].get.ts create mode 100644 server/api/portfolios/[id]/duplicate.post.ts create mode 100644 server/api/portfolios/[id]/generate.post.ts create mode 100644 server/api/portfolios/[id]/index.delete.ts create mode 100644 server/api/portfolios/[id]/index.get.ts create mode 100644 server/api/portfolios/[id]/index.put.ts create mode 100644 server/api/portfolios/[id]/share.post.ts create mode 100644 server/api/portfolios/[id]/unfreeze.post.ts create mode 100644 server/api/portfolios/index.get.ts create mode 100644 server/api/portfolios/index.post.ts create mode 100644 server/api/projects/[...id].get.ts create mode 100644 server/api/projects/index.get.ts create mode 100644 server/api/public/[id].get.ts create mode 100644 server/api/public/[id]/media/[...path].get.ts create mode 100644 server/api/sync.post.ts create mode 100644 server/lib/content-source.ts create mode 100644 server/lib/grav-reader.ts create mode 100644 server/lib/media.ts create mode 100644 server/lib/pdf-pipeline.ts create mode 100644 server/lib/portfolio-store.ts create mode 100644 server/lib/session.ts create mode 100644 server/middleware/01.auth.ts create mode 100644 tsconfig.json create mode 100644 types/index.ts diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..987c7d5 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,9 @@ +# Le contexte de build ne doit pas embarquer les artefacts ni les données. +# En dev comme en prod, le code est monté en volume (voir docker-compose). +node_modules +.nuxt +.output +data +*.log +.env +.git diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7f5de66 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +node_modules +.nuxt +.output +.env +data/content-cache +data/exports +data/cache +data/portfolios +data/frozen +*.log diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..6ef48d7 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,67 @@ +# CLAUDE.md — générateur de portfolios + +App Nuxt (Nuxt 3 + Nuxt UI v3) qui lit les projets du CMS Grav de Figures Libres +et compose des portfolios **A3 paysage** exportés en PDF, fidèles au gabarit +`book_v3`. Ce dépôt est **autonome et déployable seul** (son `Dockerfile` est ici). + +## Tout tourne dans Docker + +Node, build Nuxt, Playwright/Chromium, Ghostscript, ffmpeg, rsync — **rien sur +l'hôte**. En dev, l'app est lancée via le dépôt d'orchestration `portfolio-stack` +(`docker compose up -d`), qui monte ce dossier en volume sur le port 8091. + +```bash +# depuis le dépôt stack (ce dossier cloné en ./generator) : +docker compose run --rm --no-deps generator npm install # dépendances +docker compose exec generator npm run build # build de prod (.output) +docker logs -f figureslibres-portfolio-generator # logs du dev server +``` + +Mot de passe dev : `figureslibres` (`PORTFOLIO_PASSWORD`). + +## Architecture + +- `server/lib/` — le cœur : + - `content-source.ts` : abstrait la source de contenu. Mode `dev` = lecture + directe du FS Grav monté en `:ro` ; mode `prod` = cache alimenté par rsync/SSH. + - `grav-reader.ts` : parse les pages Grav (frontmatter YAML, `media_order`, + taxonomies) en `Project` (voir `types/index.ts`). + - `pdf-pipeline.ts` : rend `/print/` via Playwright/Chromium en A3 paysage + (1190,55 × 841,89 pt), images à 2× (sharp), post-traitement Ghostscript, métadonnées. + - `portfolio-store.ts` : CRUD des portfolios (JSON sur disque), gel/dégel du contenu. + - `media.ts`, `session.ts`. +- `server/api/` — endpoints (auth, projects, portfolios, media, sync, exports, public). +- `components/templates/` — pages du gabarit (cover, toc, projet, grille, page libre). +- `components/preview/` — `PageRenderer` (dispatch) + `PageViewport` (aperçu à l'échelle). +- `components/composer/` — UI de composition (curation médias, fonds, pickers). +- `pages/print/[id].vue` — **rendu print servant à la génération PDF** (ne pas casser). +- `types/index.ts` — modèle de données complet et commenté (source de vérité du schéma). + +## Modèle de données (résumé) + +Un `Portfolio` = `cover` (CoverConfig) + `pages[]`. Types de page : `cover`, +`toc`, `project` (couverture bandeau + image), `project-grid` (grille d'images +entières), `free`. Le contenu Grav (`Project`, `MediaAsset`) est **en lecture +seule**. À la génération, le contenu utilisé est **figé** dans `data/frozen//` +(`FrozenSnapshot`) : régénérer redonne le même PDF ; « Réactualiser depuis Grav » +resynchronise volontairement. + +## Contraintes fermes + +- Le contenu Grav n'est jamais modifié par l'app (monté `:ro` côté stack). +- Les images ne sont **jamais tronquées** dans les grilles (calées entières). +- Les vidéos ne sont pas sélectionnables dans les grilles. +- Format PDF : A3 paysage aux dimensions exactes du gabarit. + +## Pièges Chromium print (avant de toucher aux templates) + +- **`columns-*` (CSS multicol) = page PDF blanche** dans Chromium print. Ne pas + utiliser de colonnes CSS dans les templates ; vérifier chaque template via `pdftoppm`. +- **Webfonts en `font-display: block` = texte absent du PDF**. Le pipeline + réinvalide les styles avant `page.pdf()` — ne pas retirer cette étape. + +## Données + +Tout est sur disque dans `data/` (sauvegarde = copie du dossier), git-ignoré : +`portfolios/*.json`, `exports/*.pdf`, `frozen//`, `cache/` (régénérable), +`content-cache/` (rsync prod). diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..98edae6 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,21 @@ +# Image du générateur de portfolios PDF (Figures Libres). +# Base officielle Playwright : Node + Chromium + dépendances déjà présents. +# On y ajoute Ghostscript (optimisation PDF), ffmpeg (posters des vidéos) +# et rsync/ssh (synchro prod). +FROM mcr.microsoft.com/playwright:v1.61.1-noble + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ghostscript \ + ffmpeg \ + rsync \ + openssh-client \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /app + +ENV NUXT_TELEMETRY_DISABLED=1 \ + PLAYWRIGHT_BROWSERS_PATH=/ms-playwright + +# En dev, le code est monté dans /app et la commande est fournie par compose. +CMD ["npm", "run", "dev"] diff --git a/README.md b/README.md new file mode 100644 index 0000000..0b12084 --- /dev/null +++ b/README.md @@ -0,0 +1,39 @@ +# Générateur de portfolios — Figures Libres + +App **Nuxt 3** (+ Nuxt UI v3) qui lit les projets du CMS Grav de Figures Libres et +compose des **portfolios A3 paysage** exportés en PDF, fidèles au gabarit `book_v3`. + +Dépôt **autonome et déployable seul** : son `Dockerfile` (base Playwright + +Ghostscript + ffmpeg + rsync) est inclus. En dev, il se lance via le dépôt +d'orchestration `portfolio-stack`, qui le clone en `./generator` et le monte en +volume sur le port **8091** (mot de passe partagé : `figureslibres`). + +## Lancer + +Tout tourne dans Docker (rien sur l'hôte). Depuis le dépôt stack : + +```bash +docker compose up -d # dev (port 8091) +docker compose run --rm --no-deps generator npm install # dépendances +docker compose exec generator npm run build # build de prod (.output) +``` + +## Repères + +- `server/lib/` — `content-source` (dev FS Grav `:ro` / prod cache rsync), + `grav-reader` (parse Grav → `Project`), `pdf-pipeline` (Playwright → PDF A3, + images 2× via sharp, post-traitement Ghostscript), `portfolio-store` (gel/dégel). +- `server/api/` — auth, projects, portfolios, media, sync, exports, public. +- `components/` — `templates/` (cover, toc, projet, grille, page libre), + `preview/` (rendu + aperçu), `composer/` (UI de composition). +- `pages/print/[id].vue` — rendu print utilisé pour la génération PDF. +- `types/index.ts` — modèle de données (source de vérité du schéma). + +Voir `CLAUDE.md` pour l'architecture détaillée, les contraintes fermes et les +pièges Chromium print. + +## Données + +Sur disque dans `data/` (git-ignoré) : `portfolios/*.json`, `exports/*.pdf`, +`frozen//` (snapshots figés à la génération), `cache/` (régénérable), +`content-cache/` (rsync prod). diff --git a/app.vue b/app.vue new file mode 100644 index 0000000..d370507 --- /dev/null +++ b/app.vue @@ -0,0 +1,7 @@ + diff --git a/assets/css/main.css b/assets/css/main.css new file mode 100644 index 0000000..1eb4ecc --- /dev/null +++ b/assets/css/main.css @@ -0,0 +1,8 @@ +@import "tailwindcss"; +@import "@nuxt/ui"; + +:root { + /* Charte Figures Libres (thème Grav figureslibres-v2) */ + --fl-base: #f5f5f5; + --fl-ink: #0e1229; +} diff --git a/assets/css/theme.css b/assets/css/theme.css new file mode 100644 index 0000000..e5fb5ef --- /dev/null +++ b/assets/css/theme.css @@ -0,0 +1,137 @@ +/* Charte Figures Libres — fontes du thème Grav figureslibres-v2 et canvas + de page A3 paysage (gabarit_book_v3 : 1190,55 × 841,89 pt), communs à + l'aperçu et au PDF. 1 pt = 4/3 px → page = 1587,4 × 1122,5 px. */ + +@font-face { + font-family: 'Syne'; + src: url('/fonts/Syne-regular.woff2') format('woff2'); + font-weight: 400; + font-style: normal; + font-display: block; +} +@font-face { + font-family: 'Syne'; + src: url('/fonts/Syne-bold.woff2') format('woff2'); + font-weight: 700; + font-style: normal; + font-display: block; +} +@font-face { + font-family: 'Moche'; + src: url('/fonts/Moche-bold.woff2') format('woff2'); + font-weight: 700; + font-style: normal; + font-display: block; +} +@font-face { + font-family: 'Lato'; + src: url('/fonts/Lato-regular.woff2') format('woff2'); + font-weight: 400; + font-style: normal; + font-display: block; +} +@font-face { + font-family: 'Lato'; + src: url('/fonts/Lato-bold.woff2') format('woff2'); + font-weight: 700; + font-style: normal; + font-display: block; +} +@font-face { + font-family: 'Lato'; + src: url('/fonts/Lato-italic.woff2') format('woff2'); + font-weight: 400; + font-style: italic; + font-display: block; +} +@font-face { + font-family: 'Lato'; + src: url('/fonts/Lato-bold-italic.woff2') format('woff2'); + font-weight: 700; + font-style: italic; + font-display: block; +} +/* Fontes de titre par « utilité » (mixins du thème Grav) */ +@font-face { + font-family: 'Avara'; + src: url('/fonts/Avara-bold-italic.woff2') format('woff2'); + font-weight: 700; + font-style: italic; + font-display: block; +} +@font-face { + font-family: 'PlayfairDisplay'; + src: url('/fonts/PlayfairDisplay-italic.woff2') format('woff2'); + font-weight: 400; + font-style: italic; + font-display: block; +} +@font-face { + font-family: 'ManifontGrotesk'; + src: url('/fonts/ManifontGrotesk-bold-italic.woff2') format('woff2'); + font-weight: 700; + font-style: italic; + font-display: block; +} + +/* ---- Canvas de page A3 paysage — métriques mesurées dans le gabarit ---- */ + +:root { + --fl-page-w: 1587.4px; /* 420 mm */ + --fl-page-h: 1122.5px; /* 297 mm */ + --fl-margin: 30.2px; /* 8 mm — marge extérieure */ + --fl-gutter: 14.4px; /* 3,8 mm — gouttière des grilles */ + --fl-strip: 18.9px; /* 5 mm — filet haut des pages grille */ + --fl-band: 208px; /* 55 mm — bandeau des pages couverture */ +} + +.fl-page { + position: relative; + width: var(--fl-page-w); + height: var(--fl-page-h); + overflow: hidden; + flex-shrink: 0; + background: #ffffff; + color: #000000; + font-family: 'Syne', sans-serif; + font-size: 16px; /* 12 pt */ + line-height: 21.33px; /* 16 pt */ +} + +.fl-page :is(h1, h2, h3) { + font-family: 'Syne', sans-serif; + font-weight: 700; + line-height: 1.1; +} + +.fl-page img { + display: block; +} + +/* Fontes de titre par catégorie (utilité) — plus spécifiques que la règle + Syne des h1/h2/h3 ci-dessus */ +.fl-page .fl-font-publique { + font-family: 'PlayfairDisplay', serif; + font-weight: 400; + font-style: italic; +} +.fl-page .fl-font-sociale { + font-family: 'ManifontGrotesk', sans-serif; + font-weight: 700; + font-style: italic; +} +.fl-page .fl-font-culturelle { + font-family: 'Avara', serif; + font-weight: 700; + font-style: italic; +} + +/* Texte courant issu du Markdown — Syne 12 pt / interligne 16 pt (gabarit) */ +.fl-prose p { margin: 0 0 0.75em; } +.fl-prose p:last-child { margin-bottom: 0; } +.fl-prose a { text-decoration: underline; text-underline-offset: 2px; } +.fl-prose ul, .fl-prose ol { margin: 0 0 0.75em; padding-left: 1.2em; } +.fl-prose ul { list-style: disc; } +.fl-prose ol { list-style: decimal; } +.fl-prose strong { font-weight: 700; } +.fl-prose em { font-style: italic; } diff --git a/components/composer/BackgroundEditor.vue b/components/composer/BackgroundEditor.vue new file mode 100644 index 0000000..9457958 --- /dev/null +++ b/components/composer/BackgroundEditor.vue @@ -0,0 +1,51 @@ + + + diff --git a/components/composer/BandColorPicker.vue b/components/composer/BandColorPicker.vue new file mode 100644 index 0000000..1b3e534 --- /dev/null +++ b/components/composer/BandColorPicker.vue @@ -0,0 +1,44 @@ + + + diff --git a/components/composer/GridIcon.vue b/components/composer/GridIcon.vue new file mode 100644 index 0000000..f6f2e09 --- /dev/null +++ b/components/composer/GridIcon.vue @@ -0,0 +1,44 @@ + + + diff --git a/components/composer/MediaCuration.vue b/components/composer/MediaCuration.vue new file mode 100644 index 0000000..d82d609 --- /dev/null +++ b/components/composer/MediaCuration.vue @@ -0,0 +1,69 @@ + + + diff --git a/components/composer/MediaPickerModal.vue b/components/composer/MediaPickerModal.vue new file mode 100644 index 0000000..7174d16 --- /dev/null +++ b/components/composer/MediaPickerModal.vue @@ -0,0 +1,70 @@ + + + diff --git a/components/composer/ProjectPickerModal.vue b/components/composer/ProjectPickerModal.vue new file mode 100644 index 0000000..e1a21ea --- /dev/null +++ b/components/composer/ProjectPickerModal.vue @@ -0,0 +1,130 @@ + + + diff --git a/components/preview/PageRenderer.vue b/components/preview/PageRenderer.vue new file mode 100644 index 0000000..b453aa1 --- /dev/null +++ b/components/preview/PageRenderer.vue @@ -0,0 +1,214 @@ + + + diff --git a/components/preview/PageViewport.vue b/components/preview/PageViewport.vue new file mode 100644 index 0000000..71b4f05 --- /dev/null +++ b/components/preview/PageViewport.vue @@ -0,0 +1,23 @@ + + + diff --git a/components/templates/CoverTemplate.vue b/components/templates/CoverTemplate.vue new file mode 100644 index 0000000..11600a7 --- /dev/null +++ b/components/templates/CoverTemplate.vue @@ -0,0 +1,59 @@ + + + diff --git a/components/templates/FreeTextPage.vue b/components/templates/FreeTextPage.vue new file mode 100644 index 0000000..99754ae --- /dev/null +++ b/components/templates/FreeTextPage.vue @@ -0,0 +1,39 @@ + + + diff --git a/components/templates/ProjectCoverPage.vue b/components/templates/ProjectCoverPage.vue new file mode 100644 index 0000000..817b866 --- /dev/null +++ b/components/templates/ProjectCoverPage.vue @@ -0,0 +1,95 @@ + + + diff --git a/components/templates/ProjectGridPage.vue b/components/templates/ProjectGridPage.vue new file mode 100644 index 0000000..cb48513 --- /dev/null +++ b/components/templates/ProjectGridPage.vue @@ -0,0 +1,134 @@ + + + diff --git a/components/templates/TocTemplate.vue b/components/templates/TocTemplate.vue new file mode 100644 index 0000000..86056d0 --- /dev/null +++ b/components/templates/TocTemplate.vue @@ -0,0 +1,77 @@ + + + diff --git a/composables/useFormat.ts b/composables/useFormat.ts new file mode 100644 index 0000000..9075c98 --- /dev/null +++ b/composables/useFormat.ts @@ -0,0 +1,35 @@ +import type { Project } from '~~/types' + +const dateFormatter = new Intl.DateTimeFormat('fr-FR', { month: 'long', year: 'numeric' }) + +export function formatProjectDate(iso?: string): string { + if (!iso) return '' + const d = new Date(iso) + return Number.isNaN(d.getTime()) ? '' : dateFormatter.format(d) +} + +export const CATEGORY_LABELS: Record = { + culturelle: 'Culturelle', + publique: 'Publique', + sociale: 'Sociale', +} + +// Valeurs par défaut du header de la vue publique (surchargées par la couverture). +export const DEFAULT_SITE_URL = 'https://figureslibres.cc' +export const DEFAULT_CONTACT_EMAIL = 'bonjour@figureslibres.io' + +/** + * URL de miniature basse résolution d'un média de projet. + * `base` permet de router vers la route publique (/api/public//media) en + * vue publique au lieu de la route authentifiée par défaut. + */ +export function mediaUrl(projectId: string, filename: string, width?: number, base = '/api/media'): string { + const url = `${base}/${projectId.split('/').map(encodeURIComponent).join('/')}/${encodeURIComponent(filename)}` + return width ? `${url}?w=${width}` : url +} + +/** Vignette de couverture d'un projet (aura.image ou 1re image). */ +export function projectThumb(project: Project, width = 480): string | null { + const cover = project.coverImage ?? project.media.find(m => m.type === 'image')?.filename + return cover ? mediaUrl(project.id, cover, width) : null +} diff --git a/composables/useGrids.ts b/composables/useGrids.ts new file mode 100644 index 0000000..5893a6e --- /dev/null +++ b/composables/useGrids.ts @@ -0,0 +1,219 @@ +// Grilles ADAPTATIVES des pages d'images : chaque « famille » de grille se +// construit selon le nombre d'images posées (2 images = 2 cases, jamais de +// case vide) et l'orientation du lot. Le damier vise le format écran 16:9 +// (majorité des paysages) ou affiche (~1/√2) pour les lots portrait. +// Les compositions du gabarit (p.2/4/6/8) restent les familles « grande à +// gauche + bandeaux » et « file + grande à droite ». La même définition sert +// au rendu (CSS grid) et aux icônes SVG du composeur. + +export interface GridCell { + c: number // colonne de départ (0-based) + r: number // ligne de départ + cs?: number // colspan + rs?: number // rowspan +} + +export interface GridDef { + id: string + label: string + cols: number[] // proportions (fr) + rows: number[] + cells: GridCell[] +} + +export interface GridFamily { + id: string + label: string + max: number // nombre maximal d'images +} + +export const GRID_FAMILIES: GridFamily[] = [ + { id: 'mosaic', label: 'Damier (s\'adapte au format)', max: 8 }, + { id: 'rows', label: 'Pleine largeur, empilées', max: 4 }, + { id: 'cols', label: 'Pleine hauteur, côte à côte', max: 4 }, + { id: 'hero-left', label: 'Grande à gauche + bandeaux', max: 6 }, + { id: 'hero-right', label: 'File + grande à droite', max: 5 }, +] + +// Anciens ids de grilles fixes → famille équivalente (portfolios existants) +const LEGACY_IDS: Record = { + 'full': 'mosaic', + 'duo': 'cols', + 'cols-3': 'cols', + 'rows-2': 'rows', + 'rows-3': 'rows', + 'large-left-2': 'hero-left', + 'large-left-3': 'hero-left', + 'large-left-4': 'hero-left', + 'stack3-large': 'hero-right', + 'quad': 'mosaic', + 'six': 'mosaic', + 'land-2x3': 'mosaic', + 'port-4x2': 'mosaic', + 'tall-5': 'hero-left', + 'tall-banners': 'hero-left', +} + +export function gridFamily(id: string): GridFamily { + const fid = LEGACY_IDS[id] ?? id + return GRID_FAMILIES.find(f => f.id === fid) ?? GRID_FAMILIES[0] +} + +export type ImageOrientation = 'landscape' | 'portrait' | 'mixed' + +/** + * Orientation dominante d'un lot d'images (≥ 70 % dans le même sens), + * d'après leurs ratios largeur/hauteur. + */ +export function dominantOrientation(ratios: number[]): ImageOrientation { + const known = ratios.filter(r => r > 0) + if (!known.length) return 'mixed' + const landscape = known.filter(r => r >= 1.15).length + const portrait = known.filter(r => r <= 0.87).length + if (landscape / known.length >= 0.7) return 'landscape' + if (portrait / known.length >= 0.7) return 'portrait' + return 'mixed' +} + +// Zone utile A3 paysage hors marges, en mm (sert aux calculs de ratios) +const INNER_W_MM = 404 +const INNER_H_MM = 281 + +function pgcd(a: number, b: number): number { + return b ? pgcd(b, a % b) : a +} + +/** + * Damier : choisit le nombre de colonnes qui maximise la surface d'une image + * au ratio cible (16:9 en paysage/mixte — la majorité des paysages sont des + * écrans —, ~1/√2 en portrait). Les images de la dernière rangée incomplète + * se partagent toute la largeur (pas de case vide). + */ +function mosaicDef(n: number, orientation: ImageOrientation): GridDef { + const target = orientation === 'portrait' ? 0.707 : 16 / 9 + let bestC = 1 + let bestArea = 0 + for (let c = 1; c <= Math.min(n, 4); c++) { + const r = Math.ceil(n / c) + const w = INNER_W_MM / c + const h = INNER_H_MM / r + const iw = Math.min(w, h * target) + const area = iw * (iw / target) + if (area > bestArea) { + bestArea = area + bestC = c + } + } + const C = bestC + const R = Math.ceil(n / C) + const rem = n % C + const cells: GridCell[] = [] + if (!rem || R === 1) { + for (let i = 0; i < n; i++) cells.push({ c: i % C, r: Math.floor(i / C) }) + return { id: 'mosaic', label: 'Damier', cols: Array(C).fill(1), rows: Array(R).fill(1), cells } + } + // Dernière rangée incomplète : rem images se partagent la largeur. + // Grille exprimée en L = ppcm(C, rem) colonnes pour des spans entiers. + const L = (C * rem) / pgcd(C, rem) + const fullSpan = L / C + const remSpan = L / rem + const full = n - rem + for (let i = 0; i < full; i++) { + cells.push({ c: (i % C) * fullSpan, r: Math.floor(i / C), cs: fullSpan }) + } + for (let i = 0; i < rem; i++) { + cells.push({ c: i * remSpan, r: R - 1, cs: remSpan }) + } + return { id: 'mosaic', label: 'Damier', cols: Array(L).fill(1), rows: Array(R).fill(1), cells } +} + +/** + * Définition effective d'une grille : famille × nombre d'images × orientation. + */ +export function gridDef(id: string, count = 1, orientation: ImageOrientation = 'mixed'): GridDef { + const fam = gridFamily(id) + const n = Math.max(1, Math.min(count, fam.max)) + if (n === 1) { + return { id: fam.id, label: fam.label, cols: [1], rows: [1], cells: [{ c: 0, r: 0 }] } + } + switch (fam.id) { + case 'rows': + return { + id: fam.id, + label: fam.label, + cols: [1], + rows: Array(n).fill(1), + cells: Array.from({ length: n }, (_, i) => ({ c: 0, r: i })), + } + case 'cols': + return { + id: fam.id, + label: fam.label, + cols: Array(n).fill(1), + rows: [1], + cells: Array.from({ length: n }, (_, i) => ({ c: i, r: 0 })), + } + case 'hero-left': { + // Grande image pleine hauteur à gauche + bandeaux empilés à droite. + // Image de gauche à largeur maximale (gabarit p.2/p.8 : 60/40 puis 70/30) + // et marges toujours égales entre les bandeaux (rangées 1fr). + const cols = n <= 3 ? [60, 40] : [70, 30] + return { + id: fam.id, + label: fam.label, + cols, + rows: Array(n - 1).fill(1), + cells: [ + { c: 0, r: 0, rs: n - 1 }, + ...Array.from({ length: n - 1 }, (_, i) => ({ c: 1, r: i })), + ], + } + } + case 'hero-right': + // Gabarit p.4 : file à gauche (30 %), grande à droite (70 %) + return { + id: fam.id, + label: fam.label, + cols: [30, 70], + rows: Array(n - 1).fill(1), + cells: [ + ...Array.from({ length: n - 1 }, (_, i) => ({ c: 0, r: i })), + { c: 1, r: 0, rs: n - 1 }, + ], + } + default: + return mosaicDef(n, orientation) + } +} + +/** + * Famille par défaut : compositions du gabarit en lot mixte, damier + * auto-optimisé (16:9 ou affiche) sinon. + */ +export function defaultGridFor(count: number, orientation: ImageOrientation = 'mixed'): string { + if (count <= 1) return 'mosaic' + if (orientation === 'mixed') return count <= 6 ? 'hero-left' : 'mosaic' + return 'mosaic' +} + +/** + * Rectangles des cellules en fractions [0..1] de la zone utile (pour les + * icônes SVG et le calcul des largeurs d'affichage). Les gouttières sont + * exprimées en fraction de la largeur (gapX) et de la hauteur (gapY) utiles. + */ +export function gridCellRects(def: GridDef, gapX = 0.0095, gapY = gapX): { x: number; y: number; w: number; h: number }[] { + const colTotal = def.cols.reduce((a, b) => a + b, 0) + const rowTotal = def.rows.reduce((a, b) => a + b, 0) + const availW = 1 - gapX * (def.cols.length - 1) + const availH = 1 - gapY * (def.rows.length - 1) + const colW = def.cols.map(c => (c / colTotal) * availW) + const rowH = def.rows.map(r => (r / rowTotal) * availH) + const colX = colW.map((_, i) => colW.slice(0, i).reduce((a, b) => a + b, 0) + gapX * i) + const rowY = rowH.map((_, i) => rowH.slice(0, i).reduce((a, b) => a + b, 0) + gapY * i) + return def.cells.map(cell => ({ + x: colX[cell.c], + y: rowY[cell.r], + w: colW.slice(cell.c, cell.c + (cell.cs ?? 1)).reduce((a, b) => a + b, 0) + gapX * ((cell.cs ?? 1) - 1), + h: rowH.slice(cell.r, cell.r + (cell.rs ?? 1)).reduce((a, b) => a + b, 0) + gapY * ((cell.rs ?? 1) - 1), + })) +} diff --git a/composables/usePageScrollSpy.ts b/composables/usePageScrollSpy.ts new file mode 100644 index 0000000..b4f3ad4 --- /dev/null +++ b/composables/usePageScrollSpy.ts @@ -0,0 +1,69 @@ +import type { Ref } from 'vue' + +/** + * Scroll-spy des pages empilées : la page active suit en temps réel la page au + * centre du conteneur défilable, et permet de défiler vers une page donnée. + * Partagé par le composeur (pages/portfolios/[id].vue) et la vue publique + * (pages/view/[id].vue) — chacun câble sa propre ref `active` et son `idPrefix`. + * + * - `container` : élément défilable (l'aperçu). + * - `pages` : liste courante des pages (on lit `.id` et l'ordre). + * - `active` : ref d'id écrite à chaque défilement (jamais de re-scroll). + * - `idPrefix` : préfixe des id DOM des pages (`preview-page` / `view-page`), + * suffixés par la position 1-based. + */ +export function usePageScrollSpy(options: { + container: Ref + pages: Ref<{ id: string }[]> + active: Ref + idPrefix: string +}) { + const { container, pages, active, idPrefix } = options + + function elementFor(index: number): HTMLElement | null { + return document.getElementById(`${idPrefix}-${index + 1}`) + } + + function scrollToIndex(i: number) { + nextTick(() => { + elementFor(i)?.scrollIntoView({ behavior: 'smooth', block: 'start' }) + }) + } + + function scrollToId(id: string) { + const i = pages.value.findIndex(p => p.id === id) + if (i !== -1) scrollToIndex(i) + } + + // Une mise à jour par frame (rAF) pour rester fluide sans recalcul redondant. + let rafPending = false + function onScroll() { + if (rafPending) return + rafPending = true + requestAnimationFrame(() => { + rafPending = false + updateActiveFromScroll() + }) + } + + function updateActiveFromScroll() { + const cont = container.value + if (!cont) return + const mid = cont.getBoundingClientRect().top + cont.clientHeight / 2 + let bestId: string | undefined + let bestDist = Infinity + pages.value.forEach((page, i) => { + const el = elementFor(i) + if (!el) return + const r = el.getBoundingClientRect() + const dist = Math.abs(r.top + r.height / 2 - mid) + if (dist < bestDist) { + bestDist = dist + bestId = page.id + } + }) + if (bestId && bestId !== active.value) active.value = bestId + } + + return { onScroll, scrollToIndex, scrollToId } +} diff --git a/composables/useTheme.ts b/composables/useTheme.ts new file mode 100644 index 0000000..48ad839 --- /dev/null +++ b/composables/useTheme.ts @@ -0,0 +1,97 @@ +import type { Background, InkMode } from '~~/types' + +// Charte Figures Libres — valeurs mesurées dans gabarit_book_v3.pdf et +// reprises du thème Grav figureslibres-v2 (scss/configuration/_variable.scss). +export const FL_INK = '#0e1229' +export const FL_BASE = '#f5f5f5' + +/** Couleurs de bandeau du gabarit PDF (aplats CMJN convertis). */ +export const PDF_COLORS = [ + '#ec008c', // magenta 100% — utilité publique + '#8bd261', // vert C45 J71 — utilité sociale + '#fff766', // jaune 60% — utilité culturelle (bandeau) + '#fff200', // jaune 100% — utilité culturelle (filet) +] + +/** Couleurs du site Grav (hover des keywords de l'index). */ +export const SITE_COLORS = [ + '#ffaeab', // publique + '#71ff94', // sociale + '#feff74', // culturelle + '#fabbde', // commanditaires + '#82f8ee', // figures libres + '#4bffc9', // projets +] + +/** Palette proposée pour les bandeaux de pages projet. */ +export const BAND_COLORS = [...PDF_COLORS, ...SITE_COLORS] + +/** Couleur de bandeau par catégorie (page couverture de projet, gabarit). */ +export const CATEGORY_BAND: Record = { + publique: '#ec008c', + sociale: '#8bd261', + culturelle: '#fff766', +} + +/** Couleur de filet par catégorie (pages grille — jaune à 100 %). */ +export const CATEGORY_STRIP: Record = { + publique: '#ec008c', + sociale: '#8bd261', + culturelle: '#fff200', +} + +/** Classe CSS de la fonte de titre par catégorie (mixins du thème Grav). */ +export const CATEGORY_TITLE_CLASS: Record = { + publique: 'fl-font-publique', + sociale: 'fl-font-sociale', + culturelle: 'fl-font-culturelle', +} + +/** Aplats clairs proposés pour le mode « teinté ». */ +export const TINT_PRESETS = [ + '#f5f5f5', // gris clair (base) + '#efece3', // beige + '#ffeceb', // rose pâle + '#fbfbdc', // jaune pâle + '#e9fbee', // vert pâle + '#e2fff6', // menthe pâle +] + +/** Pleines couleurs de la charte pour le mode « couleur ». */ +export const COLOR_PRESETS = [FL_INK, ...PDF_COLORS, ...SITE_COLORS] + +function luminance(hex: string): number { + const m = hex.replace('#', '') + if (m.length < 6) return 1 + const [r, g, b] = [0, 2, 4].map(i => parseInt(m.slice(i, i + 2), 16) / 255) + return 0.2126 * r + 0.7152 * g + 0.0722 * b +} + +/** Encre lisible sur un fond donné — le gabarit imprime en noir/blanc purs. */ +export function inkOn(color: string, ink: InkMode = 'auto'): string { + if (ink === 'black') return '#000000' + if (ink === 'white') return '#ffffff' + return luminance(color) < 0.45 ? '#ffffff' : '#000000' +} + +export function bandColorOf(category: string | undefined, override?: string): string { + return override || CATEGORY_BAND[category ?? ''] || FL_INK +} + +export function stripColorOf(category: string | undefined, override?: string): string { + return override || CATEGORY_STRIP[category ?? ''] || FL_INK +} + +export function backgroundColorOf(bg: Background): string { + if (bg.mode === 'white') return '#ffffff' + return bg.color || (bg.mode === 'tint' ? FL_BASE : FL_INK) +} + +/** Style inline d'une page : fond + couleur d'encre lisible. */ +export function backgroundStyle(bg: Background): Record { + const color = backgroundColorOf(bg) + return { + backgroundColor: color, + color: luminance(color) < 0.45 ? '#ffffff' : FL_INK, + } +} diff --git a/layouts/default.vue b/layouts/default.vue new file mode 100644 index 0000000..abdce0c --- /dev/null +++ b/layouts/default.vue @@ -0,0 +1,66 @@ + + + diff --git a/middleware/auth.global.ts b/middleware/auth.global.ts new file mode 100644 index 0000000..7920bfa --- /dev/null +++ b/middleware/auth.global.ts @@ -0,0 +1,12 @@ +// Redirige vers /login toute page visitée sans session valide. +export default defineNuxtRouteMiddleware(async (to) => { + if (to.path === '/login' || to.path.startsWith('/print') || to.path.startsWith('/view')) return + try { + const { authenticated } = await $fetch<{ authenticated: boolean }>('/api/auth/me', { + headers: import.meta.server ? useRequestHeaders(['cookie']) : undefined, + }) + if (!authenticated) return navigateTo('/login') + } catch { + return navigateTo('/login') + } +}) diff --git a/nuxt.config.ts b/nuxt.config.ts new file mode 100644 index 0000000..c77b45b --- /dev/null +++ b/nuxt.config.ts @@ -0,0 +1,42 @@ +export default defineNuxtConfig({ + compatibilityDate: '2026-07-01', + devtools: { enabled: false }, + telemetry: false, + + modules: ['@nuxt/ui'], + components: [{ path: '~/components', pathPrefix: false }], + css: ['~/assets/css/main.css', '~/assets/css/theme.css'], + + routeRules: { + // L'accueil est la liste des portfolios ; l'ancienne URL reste valide. + '/portfolios': { redirect: '/' }, + }, + + app: { + head: { + title: 'Portfolios — Figures Libres', + htmlAttrs: { lang: 'fr' }, + }, + }, + + runtimeConfig: { + // Surchargées par les variables d'env NUXT_* (voir docker-compose.yml) + sessionSecret: 'dev-secret-figures-libres', + portfolioPassword: 'figureslibres', + internalToken: 'dev-internal-token', + contentSource: 'dev', // 'dev' (FS local) | 'prod' (cache rsync) + contentDir: '/content/02.projets', + dataDir: '/app/data', + // Mode prod : synchro rsync (phase 3) + syncRemote: '', // ex. user@host:/chemin/vers/user/pages/02.projets/ + syncSshKey: '', // chemin de la clé privée dans le conteneur + public: { + appName: 'Portfolios Figures Libres', + }, + }, + + nitro: { + // Les données (portfolios JSON, exports PDF, cache) vivent hors du bundle. + storage: {}, + }, +}) diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..fdb3db0 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,13987 @@ +{ + "name": "figureslibres-portfolio-generator", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "figureslibres-portfolio-generator", + "version": "0.1.0", + "hasInstallScript": true, + "dependencies": { + "@nuxt/ui": "^3.3.0", + "marked": "^15.0.0", + "nanoid": "^5.1.0", + "nuxt": "^3.17.0", + "pagedjs": "^0.4.3", + "playwright": "1.61.1", + "sharp": "^0.34.0", + "vuedraggable": "^4.1.0", + "yaml": "^2.8.0" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@antfu/install-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", + "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==", + "license": "MIT", + "dependencies": { + "package-manager-detector": "^1.3.0", + "tinyexec": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@antfu/utils": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-8.1.1.tgz", + "integrity": "sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", + "@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.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", + "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7", + "@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.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz", + "integrity": "sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "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.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.7.tgz", + "integrity": "sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-member-expression-to-functions": "^7.29.7", + "@babel/helper-optimise-call-expression": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", + "@babel/traverse": "^7.29.7", + "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.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.29.7.tgz", + "integrity": "sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.29.7.tgz", + "integrity": "sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.29.7.tgz", + "integrity": "sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.29.7", + "@babel/helper-optimise-call-expression": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.29.7.tgz", + "integrity": "sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", + "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.29.7.tgz", + "integrity": "sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.29.7.tgz", + "integrity": "sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.29.7.tgz", + "integrity": "sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", + "@babel/plugin-syntax-typescript": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/polyfill": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.12.1.tgz", + "integrity": "sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==", + "deprecated": "🚨 This package has been deprecated in favor of separate inclusion of a polyfill and regenerator-runtime (when needed). See the @babel/polyfill docs (https://babeljs.io/docs/en/babel-polyfill) for more information.", + "license": "MIT", + "dependencies": { + "core-js": "^2.6.5", + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", + "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", + "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", + "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bomb.sh/tab": { + "version": "0.0.17", + "resolved": "https://registry.npmjs.org/@bomb.sh/tab/-/tab-0.0.17.tgz", + "integrity": "sha512-rGhqfWwaSF6qN5Gm5P9EH9eybrwLEowHTkV+wsRgFewT6aQCQWVWXLclVk0McgVIlWCGX+W9mYYC1Egsg+Znsw==", + "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/@capsizecss/metrics": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@capsizecss/metrics/-/metrics-3.7.0.tgz", + "integrity": "sha512-NHdEMrl/zd2XgiSv2xHRF/FxGc2OTBKjhPzr9SgbHzqmoTVn8BbRK88Dtq0m65idX/RMD7ptyVdbGHFcvlErSw==", + "license": "MIT" + }, + "node_modules/@capsizecss/unpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-2.4.0.tgz", + "integrity": "sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q==", + "license": "MIT", + "dependencies": { + "blob-to-buffer": "^1.2.8", + "cross-fetch": "^3.0.4", + "fontkit": "^2.0.2" + } + }, + "node_modules/@clack/core": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@clack/core/-/core-1.4.2.tgz", + "integrity": "sha512-0Ty/1Gfm+Kb07sXcuESjyKfwEhSy4Ns1AgeEisHb/bDY5fWme0tTeTkU14T1Gmcs17YIjB/teiDe4uaCghbYqQ==", + "license": "MIT", + "dependencies": { + "fast-wrap-ansi": "^0.2.0", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 20.12.0" + } + }, + "node_modules/@clack/prompts": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-1.6.0.tgz", + "integrity": "sha512-EYlRokl8szrP9Z25qT5aepMdBjzBvHF9ZEhzIiUBc9guz/T31EqRgvD0QSgZcpE93xiwrr+OkB4nz0BZyF6fSA==", + "license": "MIT", + "dependencies": { + "@clack/core": "1.4.2", + "fast-string-width": "^3.0.2", + "fast-wrap-ansi": "^0.2.0", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 20.12.0" + } + }, + "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.5.0", + "resolved": "https://registry.npmjs.org/@colordx/core/-/core-5.5.0.tgz", + "integrity": "sha512-3PxTH8itZzltK0U9jTwVVnjLXvnDYuq3m+QXsHkENxWiPRh4WaoLcs1SQjqgZ55kS+QyirpH5BVwzP2gMVG6EQ==", + "license": "MIT" + }, + "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/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/aix-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", + "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", + "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", + "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", + "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", + "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", + "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", + "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", + "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", + "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", + "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", + "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", + "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", + "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", + "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", + "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", + "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", + "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", + "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", + "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", + "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", + "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", + "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", + "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", + "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", + "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", + "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.5.tgz", + "integrity": "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.11" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.6.tgz", + "integrity": "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.5", + "@floating-ui/utils": "^0.2.11" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.11.tgz", + "integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==", + "license": "MIT" + }, + "node_modules/@floating-ui/vue": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@floating-ui/vue/-/vue-1.1.11.tgz", + "integrity": "sha512-HzHKCNVxnGS35r9fCHBc3+uCnjw9IWIlCPL683cGgM9Kgj2BiAl8x1mS7vtvP6F9S/e/q4O6MApwSHj8hNLGfw==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.7.6", + "@floating-ui/utils": "^0.2.11", + "vue-demi": ">=0.13.0" + } + }, + "node_modules/@floating-ui/vue/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@iconify/collections": { + "version": "1.0.704", + "resolved": "https://registry.npmjs.org/@iconify/collections/-/collections-1.0.704.tgz", + "integrity": "sha512-rwIk2LK/wsfUY5TG3NSncyVuUzLVcYdqehtWEXatkqXpsvcFwvJLePx0CcXv4iaRhL+Y+Lo5uzPRkzVqDvf6Gg==", + "license": "MIT", + "dependencies": { + "@iconify/types": "*" + } + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "license": "MIT" + }, + "node_modules/@iconify/utils": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.3.0.tgz", + "integrity": "sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==", + "license": "MIT", + "dependencies": { + "@antfu/install-pkg": "^1.0.0", + "@antfu/utils": "^8.1.0", + "@iconify/types": "^2.0.0", + "debug": "^4.4.0", + "globals": "^15.14.0", + "kolorist": "^1.8.0", + "local-pkg": "^1.0.0", + "mlly": "^1.7.4" + } + }, + "node_modules/@iconify/vue": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@iconify/vue/-/vue-5.0.1.tgz", + "integrity": "sha512-aumwwooJlFJ5H5qYWB6ZTAyM0C8hpfcSVLB9/a3qnH1GGvIJ+FEbpEs4s/HfErYe/M5qZeLjwmESR5fFm3lXEw==", + "license": "MIT", + "dependencies": { + "@iconify/types": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/cyberalien" + }, + "peerDependencies": { + "vue": ">=3.0.0" + } + }, + "node_modules/@img/colour": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", + "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", + "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", + "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", + "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", + "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", + "cpu": [ + "arm" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", + "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", + "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", + "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", + "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", + "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", + "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", + "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", + "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", + "cpu": [ + "arm" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", + "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", + "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", + "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", + "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", + "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", + "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", + "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", + "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.7.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", + "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", + "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", + "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@internationalized/date": { + "version": "3.12.2", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.12.2.tgz", + "integrity": "sha512-FY1Y+H64NDs+HAF6omlnWxm3mEpfgaCSWtL5l551ZZfImA+kGjPFgrnJrGjH6lfmLL0g8Z/mBu1R3kufeCp6Jw==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@internationalized/number": { + "version": "3.6.7", + "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.6.7.tgz", + "integrity": "sha512-3ji1fcrT+FPAK86UqEhB/psHixYo6niWPJtt7+qRaYFynt/BaJG8GhAPimtWUpEiVSTq8ZM8L5psMxGquiB/Vg==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@ioredis/commands": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.10.0.tgz", + "integrity": "sha512-UmeW7z4LfctwoQ5wkhVzgq8tXkreED2xZGpX+Bg+zA+WJFZCT6c062AfCK/Dfk81xZnnwdhJCUMkitihRaoC2Q==", + "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.6", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz", + "integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==", + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.3" + }, + "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.36.1", + "resolved": "https://registry.npmjs.org/@nuxt/cli/-/cli-3.36.1.tgz", + "integrity": "sha512-qu0LLFjOr1alMSrcVb3k3fWYXGeETeOIN5UoGoGEjwWVtf+KxQbN5IAzdXb7ip5D3pfKLcrAOTbIGf9XFmeGFQ==", + "license": "MIT", + "dependencies": { + "@bomb.sh/tab": "^0.0.17", + "@clack/prompts": "^1.6.0", + "c12": "^3.3.4", + "citty": "^0.2.2", + "confbox": "^0.2.4", + "consola": "^3.4.2", + "debug": "^4.4.3", + "defu": "^6.1.7", + "exsolve": "^1.0.8", + "fuse.js": "^7.4.2", + "fzf": "^0.5.2", + "giget": "^3.3.0", + "jiti": "^2.7.0", + "listhen": "^1.10.0", + "nypm": "^0.6.7", + "ofetch": "^1.5.1", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "perfect-debounce": "^2.1.0", + "pkg-types": "^2.3.1", + "scule": "^1.3.0", + "semver": "^7.8.5", + "srvx": "^0.11.17", + "std-env": "^4.1.0", + "tinyclip": "^0.1.14", + "tinyexec": "^1.2.4", + "ufo": "^1.6.4", + "youch": "^4.1.1" + }, + "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.4.6" + }, + "peerDependenciesMeta": { + "@nuxt/schema": { + "optional": true + } + } + }, + "node_modules/@nuxt/cli/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/@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": "2.7.0", + "resolved": "https://registry.npmjs.org/@nuxt/devtools-kit/-/devtools-kit-2.7.0.tgz", + "integrity": "sha512-MIJdah6CF6YOW2GhfKnb8Sivu6HpcQheqdjOlZqShBr+1DyjtKQbAKSCAyKPaoIzZP4QOo2SmTFV6aN8jBeEIQ==", + "license": "MIT", + "dependencies": { + "@nuxt/kit": "^3.19.3", + "execa": "^8.0.1" + }, + "peerDependencies": { + "vite": ">=6.0" + } + }, + "node_modules/@nuxt/devtools-kit/node_modules/@nuxt/kit": { + "version": "3.21.8", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.21.8.tgz", + "integrity": "sha512-kg63DUPY5AHPn+9XM7u8rYcdWHXjzwfUscgRDuiC5YUciQ+xdLRhdwXelYFxEAx2nxJHossliiQXbMm/Fleivw==", + "license": "MIT", + "dependencies": { + "c12": "^3.3.4", + "consola": "^3.4.2", + "defu": "^6.1.7", + "destr": "^2.0.5", + "errx": "^0.1.0", + "exsolve": "^1.0.8", + "ignore": "^7.0.5", + "jiti": "^2.7.0", + "klona": "^2.0.6", + "knitwork": "^1.3.0", + "mlly": "^1.8.2", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "pkg-types": "^2.3.1", + "rc9": "^3.0.1", + "scule": "^1.3.0", + "semver": "^7.8.0", + "tinyglobby": "^0.2.16", + "ufo": "^1.6.4", + "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/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/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/devtools/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/@nuxt/devtools/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/@nuxt/fonts": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/@nuxt/fonts/-/fonts-0.11.4.tgz", + "integrity": "sha512-GbLavsC+9FejVwY+KU4/wonJsKhcwOZx/eo4EuV57C4osnF/AtEmev8xqI0DNlebMEhEGZbu1MGwDDDYbeR7Bw==", + "license": "MIT", + "dependencies": { + "@nuxt/devtools-kit": "^2.4.0", + "@nuxt/kit": "^3.17.3", + "consola": "^3.4.2", + "css-tree": "^3.1.0", + "defu": "^6.1.4", + "esbuild": "^0.25.4", + "fontaine": "^0.6.0", + "h3": "^1.15.3", + "jiti": "^2.4.2", + "magic-regexp": "^0.10.0", + "magic-string": "^0.30.17", + "node-fetch-native": "^1.6.6", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "sirv": "^3.0.1", + "tinyglobby": "^0.2.13", + "ufo": "^1.6.1", + "unifont": "^0.4.1", + "unplugin": "^2.3.3", + "unstorage": "^1.16.0" + } + }, + "node_modules/@nuxt/fonts/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" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/fonts/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" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/fonts/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" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/fonts/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" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/fonts/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" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/fonts/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" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/fonts/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" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/fonts/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" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/fonts/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" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/fonts/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" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/fonts/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" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/fonts/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" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/fonts/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" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/fonts/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" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/fonts/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" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/fonts/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" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/fonts/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" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/fonts/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" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/fonts/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" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/fonts/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" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/fonts/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" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/fonts/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" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/fonts/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" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/fonts/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" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/fonts/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" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/fonts/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" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/fonts/node_modules/@nuxt/kit": { + "version": "3.21.8", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.21.8.tgz", + "integrity": "sha512-kg63DUPY5AHPn+9XM7u8rYcdWHXjzwfUscgRDuiC5YUciQ+xdLRhdwXelYFxEAx2nxJHossliiQXbMm/Fleivw==", + "license": "MIT", + "dependencies": { + "c12": "^3.3.4", + "consola": "^3.4.2", + "defu": "^6.1.7", + "destr": "^2.0.5", + "errx": "^0.1.0", + "exsolve": "^1.0.8", + "ignore": "^7.0.5", + "jiti": "^2.7.0", + "klona": "^2.0.6", + "knitwork": "^1.3.0", + "mlly": "^1.8.2", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "pkg-types": "^2.3.1", + "rc9": "^3.0.1", + "scule": "^1.3.0", + "semver": "^7.8.0", + "tinyglobby": "^0.2.16", + "ufo": "^1.6.4", + "unctx": "^2.5.0", + "untyped": "^2.0.0" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/@nuxt/fonts/node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "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/@nuxt/icon": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@nuxt/icon/-/icon-1.15.0.tgz", + "integrity": "sha512-kA0rxqr1B601zNJNcOXera8CyYcxUCEcT7dXEC7rwAz71PRCN5emf7G656eKEQgtqrD4JSj6NQqWDgrmFcf/GQ==", + "license": "MIT", + "dependencies": { + "@iconify/collections": "^1.0.563", + "@iconify/types": "^2.0.0", + "@iconify/utils": "^2.3.0", + "@iconify/vue": "^5.0.0", + "@nuxt/devtools-kit": "^2.5.0", + "@nuxt/kit": "^3.17.5", + "consola": "^3.4.2", + "local-pkg": "^1.1.1", + "mlly": "^1.7.4", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "picomatch": "^4.0.2", + "std-env": "^3.9.0", + "tinyglobby": "^0.2.14" + } + }, + "node_modules/@nuxt/icon/node_modules/@nuxt/kit": { + "version": "3.21.8", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.21.8.tgz", + "integrity": "sha512-kg63DUPY5AHPn+9XM7u8rYcdWHXjzwfUscgRDuiC5YUciQ+xdLRhdwXelYFxEAx2nxJHossliiQXbMm/Fleivw==", + "license": "MIT", + "dependencies": { + "c12": "^3.3.4", + "consola": "^3.4.2", + "defu": "^6.1.7", + "destr": "^2.0.5", + "errx": "^0.1.0", + "exsolve": "^1.0.8", + "ignore": "^7.0.5", + "jiti": "^2.7.0", + "klona": "^2.0.6", + "knitwork": "^1.3.0", + "mlly": "^1.8.2", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "pkg-types": "^2.3.1", + "rc9": "^3.0.1", + "scule": "^1.3.0", + "semver": "^7.8.0", + "tinyglobby": "^0.2.16", + "ufo": "^1.6.4", + "unctx": "^2.5.0", + "untyped": "^2.0.0" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/@nuxt/kit": { + "version": "4.4.8", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-4.4.8.tgz", + "integrity": "sha512-ZUlZ5iYfyfJFDPluhn6ZxFWcsuxWbLnZBc8w3MAROcQ4lYfZ+qFpALBLSNlpc0zhOa++33EE+5PEbOAdVIY+dw==", + "license": "MIT", + "dependencies": { + "c12": "^3.3.4", + "consola": "^3.4.2", + "defu": "^6.1.7", + "destr": "^2.0.5", + "errx": "^0.1.0", + "exsolve": "^1.0.8", + "ignore": "^7.0.5", + "jiti": "^2.7.0", + "klona": "^2.0.6", + "mlly": "^1.8.2", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "pkg-types": "^2.3.1", + "rc9": "^3.0.1", + "scule": "^1.3.0", + "semver": "^7.8.1", + "tinyglobby": "^0.2.17", + "ufo": "^1.6.4", + "unctx": "^2.5.0", + "untyped": "^2.0.0" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/@nuxt/nitro-server": { + "version": "3.21.8", + "resolved": "https://registry.npmjs.org/@nuxt/nitro-server/-/nitro-server-3.21.8.tgz", + "integrity": "sha512-GWYO2vdZhWekQHFEP7SLNzqHkQ1bVdjFtfJF4SXpl4v3w0jMa2JGIQkuQ0x/YpY1Yt0jAgqJREX8lFud8Cy2gQ==", + "license": "MIT", + "dependencies": { + "@nuxt/devalue": "^2.0.2", + "@nuxt/kit": "3.21.8", + "@unhead/vue": "^2.1.15", + "@vue/shared": "^3.5.34", + "consola": "^3.4.2", + "defu": "^6.1.7", + "destr": "^2.0.5", + "devalue": "^5.8.1", + "errx": "^0.1.0", + "escape-string-regexp": "^5.0.0", + "exsolve": "^1.0.8", + "h3": "^1.15.11", + "impound": "^1.1.5", + "klona": "^2.0.6", + "mocked-exports": "^0.1.1", + "nitropack": "^2.13.4", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "pkg-types": "^2.3.1", + "rou3": "^0.8.1", + "std-env": "^4.1.0", + "ufo": "^1.6.4", + "unctx": "^2.5.0", + "unstorage": "^1.17.5", + "vue": "^3.5.34", + "vue-bundle-renderer": "^2.2.0", + "vue-devtools-stub": "^0.1.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "nuxt": "^3.21.8" + } + }, + "node_modules/@nuxt/nitro-server/node_modules/@nuxt/kit": { + "version": "3.21.8", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.21.8.tgz", + "integrity": "sha512-kg63DUPY5AHPn+9XM7u8rYcdWHXjzwfUscgRDuiC5YUciQ+xdLRhdwXelYFxEAx2nxJHossliiQXbMm/Fleivw==", + "license": "MIT", + "dependencies": { + "c12": "^3.3.4", + "consola": "^3.4.2", + "defu": "^6.1.7", + "destr": "^2.0.5", + "errx": "^0.1.0", + "exsolve": "^1.0.8", + "ignore": "^7.0.5", + "jiti": "^2.7.0", + "klona": "^2.0.6", + "knitwork": "^1.3.0", + "mlly": "^1.8.2", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "pkg-types": "^2.3.1", + "rc9": "^3.0.1", + "scule": "^1.3.0", + "semver": "^7.8.0", + "tinyglobby": "^0.2.16", + "ufo": "^1.6.4", + "unctx": "^2.5.0", + "untyped": "^2.0.0" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/@nuxt/nitro-server/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/@nuxt/schema": { + "version": "4.4.8", + "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-4.4.8.tgz", + "integrity": "sha512-igfWuMF0x0Pmx/XwhPwH/bcXgbuwNnjUjqxCAsY6VQhmGKo0e9soJq3Q0ohj+rBkBfX6o2ysTP1/t2M82aK4qA==", + "license": "MIT", + "dependencies": { + "@vue/shared": "^3.5.35", + "defu": "^6.1.7", + "pathe": "^2.0.3", + "pkg-types": "^2.3.1", + "std-env": "^4.1.0" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/@nuxt/schema/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/@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/telemetry/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/@nuxt/ui": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@nuxt/ui/-/ui-3.3.7.tgz", + "integrity": "sha512-pTUb/Uk3J2XVWDFks7baTmq9hfp+T+nvnXP7/QypBIAZLdkSMgEsFmP7xgX5Gugc/LaThIkAifzfks4wiSGuVA==", + "license": "MIT", + "dependencies": { + "@iconify/vue": "^5.0.0", + "@internationalized/date": "^3.10.0", + "@internationalized/number": "^3.6.5", + "@nuxt/fonts": "^0.11.4", + "@nuxt/icon": "^1.15.0", + "@nuxt/kit": "^4.1.2", + "@nuxt/schema": "^4.1.2", + "@nuxtjs/color-mode": "^3.5.2", + "@standard-schema/spec": "^1.0.0", + "@tailwindcss/postcss": "^4.1.16", + "@tailwindcss/vite": "^4.1.16", + "@tanstack/vue-table": "^8.21.3", + "@unhead/vue": "^2.0.19", + "@vueuse/core": "^13.9.0", + "@vueuse/integrations": "^13.9.0", + "colortranslator": "^5.0.0", + "consola": "^3.4.2", + "defu": "^6.1.4", + "embla-carousel-auto-height": "^8.6.0", + "embla-carousel-auto-scroll": "^8.6.0", + "embla-carousel-autoplay": "^8.6.0", + "embla-carousel-class-names": "^8.6.0", + "embla-carousel-fade": "^8.6.0", + "embla-carousel-vue": "^8.6.0", + "embla-carousel-wheel-gestures": "^8.1.0", + "fuse.js": "^7.1.0", + "hookable": "^5.5.3", + "knitwork": "^1.2.0", + "magic-string": "^0.30.19", + "mlly": "^1.8.0", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "reka-ui": "2.6.0", + "scule": "^1.3.0", + "tailwind-merge": "^3.3.1", + "tailwind-variants": "^3.1.1", + "tailwindcss": "^4.1.16", + "tinyglobby": "^0.2.15", + "unplugin": "^2.3.10", + "unplugin-auto-import": "^20.2.0", + "unplugin-vue-components": "^30.0.0", + "vaul-vue": "0.4.1", + "vue-component-type-helpers": "^3.1.1" + }, + "bin": { + "nuxt-ui": "cli/index.mjs" + }, + "peerDependencies": { + "@inertiajs/vue3": "^2.0.7", + "joi": "^17.13.0", + "superstruct": "^2.0.0", + "typescript": "^5.6.3", + "valibot": "^1.0.0", + "vue-router": "^4.5.0", + "yup": "^1.6.0", + "zod": "^3.24.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "@inertiajs/vue3": { + "optional": true + }, + "joi": { + "optional": true + }, + "superstruct": { + "optional": true + }, + "valibot": { + "optional": true + }, + "vue-router": { + "optional": true + }, + "yup": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, + "node_modules/@nuxt/vite-builder": { + "version": "3.21.8", + "resolved": "https://registry.npmjs.org/@nuxt/vite-builder/-/vite-builder-3.21.8.tgz", + "integrity": "sha512-aapUWCQGuLEzUj5hx+J/lfpzqt/fBYV8hmCQ930R4SM4BvEzqMR0wVkbU0ry0CDK+uQzb/2n50qIHcEp0ywc0Q==", + "license": "MIT", + "dependencies": { + "@nuxt/kit": "3.21.8", + "@rollup/plugin-replace": "^6.0.3", + "@vitejs/plugin-vue": "^6.0.7", + "@vitejs/plugin-vue-jsx": "^5.1.5", + "autoprefixer": "^10.5.0", + "consola": "^3.4.2", + "cssnano": "^7.1.9", + "defu": "^6.1.7", + "escape-string-regexp": "^5.0.0", + "exsolve": "^1.0.8", + "externality": "^1.0.2", + "get-port-please": "^3.2.0", + "jiti": "^2.7.0", + "knitwork": "^1.3.0", + "magic-string": "^0.30.21", + "mlly": "^1.8.2", + "mocked-exports": "^0.1.1", + "nypm": "^0.6.6", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "perfect-debounce": "^2.1.0", + "pkg-types": "^2.3.1", + "postcss": "^8.5.14", + "seroval": "^1.5.4", + "std-env": "^4.1.0", + "ufo": "^1.6.4", + "unenv": "^2.0.0-rc.24", + "vite": "^7.3.3", + "vite-node": "^5.3.0", + "vite-plugin-checker": "^0.13.0", + "vue-bundle-renderer": "^2.2.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "nuxt": "3.21.8", + "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/@nuxt/vite-builder/node_modules/@nuxt/kit": { + "version": "3.21.8", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.21.8.tgz", + "integrity": "sha512-kg63DUPY5AHPn+9XM7u8rYcdWHXjzwfUscgRDuiC5YUciQ+xdLRhdwXelYFxEAx2nxJHossliiQXbMm/Fleivw==", + "license": "MIT", + "dependencies": { + "c12": "^3.3.4", + "consola": "^3.4.2", + "defu": "^6.1.7", + "destr": "^2.0.5", + "errx": "^0.1.0", + "exsolve": "^1.0.8", + "ignore": "^7.0.5", + "jiti": "^2.7.0", + "klona": "^2.0.6", + "knitwork": "^1.3.0", + "mlly": "^1.8.2", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "pkg-types": "^2.3.1", + "rc9": "^3.0.1", + "scule": "^1.3.0", + "semver": "^7.8.0", + "tinyglobby": "^0.2.16", + "ufo": "^1.6.4", + "unctx": "^2.5.0", + "untyped": "^2.0.0" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/@nuxt/vite-builder/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/@nuxt/vite-builder/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/@nuxt/vite-builder/node_modules/vite": { + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.6.tgz", + "integrity": "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0 || ^0.28.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/@nuxtjs/color-mode": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@nuxtjs/color-mode/-/color-mode-3.5.2.tgz", + "integrity": "sha512-cC6RfgZh3guHBMLLjrBB2Uti5eUoGM9KyauOaYS9ETmxNWBMTvpgjvSiSJp1OFljIXPIqVTJ3xtJpSNZiO3ZaA==", + "license": "MIT", + "dependencies": { + "@nuxt/kit": "^3.13.2", + "pathe": "^1.1.2", + "pkg-types": "^1.2.1", + "semver": "^7.6.3" + } + }, + "node_modules/@nuxtjs/color-mode/node_modules/@nuxt/kit": { + "version": "3.21.8", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.21.8.tgz", + "integrity": "sha512-kg63DUPY5AHPn+9XM7u8rYcdWHXjzwfUscgRDuiC5YUciQ+xdLRhdwXelYFxEAx2nxJHossliiQXbMm/Fleivw==", + "license": "MIT", + "dependencies": { + "c12": "^3.3.4", + "consola": "^3.4.2", + "defu": "^6.1.7", + "destr": "^2.0.5", + "errx": "^0.1.0", + "exsolve": "^1.0.8", + "ignore": "^7.0.5", + "jiti": "^2.7.0", + "klona": "^2.0.6", + "knitwork": "^1.3.0", + "mlly": "^1.8.2", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "pkg-types": "^2.3.1", + "rc9": "^3.0.1", + "scule": "^1.3.0", + "semver": "^7.8.0", + "tinyglobby": "^0.2.16", + "ufo": "^1.6.4", + "unctx": "^2.5.0", + "untyped": "^2.0.0" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/@nuxtjs/color-mode/node_modules/@nuxt/kit/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/@nuxtjs/color-mode/node_modules/@nuxt/kit/node_modules/pkg-types": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.1.tgz", + "integrity": "sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==", + "license": "MIT", + "dependencies": { + "confbox": "^0.2.4", + "exsolve": "^1.0.8", + "pathe": "^2.0.3" + } + }, + "node_modules/@nuxtjs/color-mode/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/@nuxtjs/color-mode/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/@nuxtjs/color-mode/node_modules/pkg-types/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/@nuxtjs/color-mode/node_modules/pkg-types/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/@oxc-minify/binding-android-arm-eabi": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-android-arm-eabi/-/binding-android-arm-eabi-0.132.0.tgz", + "integrity": "sha512-NXxgL3FNGEBz8r+8iSl8wSdyCEMGisVmn2GVuJc5GycWgGzxiP9V9/svgD039JnO9nRAi0j+hP3FNAuDCP4aQg==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-android-arm64/-/binding-android-arm64-0.132.0.tgz", + "integrity": "sha512-XYogHG1aSjNEMKWUfWmBWtN9rnpQ2nA4MiecdiAOfofDHTQiU5ybrPH6VvDAtRXf2kr8WtPNX7eenhC3uWFWoA==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-darwin-arm64/-/binding-darwin-arm64-0.132.0.tgz", + "integrity": "sha512-gm/M5dgm7IvA/g9tweMqiFyD15yKrxGUX3myjFP+EYIYVW+RYuvwU5MAIZUOxXY0GnjU1/iRN/JkLhwvhZVsDQ==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-darwin-x64/-/binding-darwin-x64-0.132.0.tgz", + "integrity": "sha512-s7ecbOJeLccy3nqQlkiq9cV0D0q8j1OyHmxRz22m8qZlcKrc3s4gmhwj5ertipA8ePn3FOXv4azf8b5gatDDug==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-freebsd-x64/-/binding-freebsd-x64-0.132.0.tgz", + "integrity": "sha512-pdYVNmY9NgKetEWzXlVIUlPm4Z3Gz979nTbZUpHlqpjU/rtulpm0fgROo6rlTk+W0HhZCCZ0Jzy1LBKgn5g3mg==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.132.0.tgz", + "integrity": "sha512-QdV2II2mrbygZO/D+umhb+jMs+kmNO2pvQ+kahY8DN7qZVvaR2CiWBQaAxi3yuI0JvmymcUBEFhRrXsaL/lUqg==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.132.0.tgz", + "integrity": "sha512-6OJMBb53luST+xxNSzzg/rRkxMnR4NFQegdu3PCuDEUtP2OEgjmpvvBrHghITpzRsUqnQ/YTl/ItDiLVeoslUA==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.132.0.tgz", + "integrity": "sha512-ND2GZp6StGQWhSBwOfX13kCCG7O/Z6sEL/dBsWSIgZaetEDUPLOWtKIm2f+TuYUSSmU5nJTSSE5psh9kGcCweQ==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-arm64-musl": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.132.0.tgz", + "integrity": "sha512-3k8ezEKmxs9Wel4N4vfF/8u764mA57j065P8nB4cU2PO/lLKloN0OA41ynfDUrSM1f5jBuF8+mLOj++aNnu4OA==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-ppc64-gnu": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.132.0.tgz", + "integrity": "sha512-vM6jZIxoHoIS5rPb3K3Di0IureL4oU+wOWBy6tLSrjwW2IHqy0442CzO/Ks2U9VCuHV1q0bUGCF0H6AxCEjJHQ==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-riscv64-gnu": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.132.0.tgz", + "integrity": "sha512-KburrmtWpeZg58uo275QRwy5bbNOXQd1WDI2tGxkY2dJBlO7N5V9+Uthvqn6KI/6RBtjd2T5NO4dCC0fgUxGvw==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-riscv64-musl": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.132.0.tgz", + "integrity": "sha512-MnahA2MNEtEdxWdUy24JXkMUNgGPqH285GL2L22Zz7k9ixsguFD+bTbbcR88pNqdb075nazozzv3edF83+azCA==", + "cpu": [ + "riscv64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-s390x-gnu": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.132.0.tgz", + "integrity": "sha512-VE99UPZyQO2MAG4gLGXzrBumD5PGNaiWe+EakaROGCVbT0YH/d9z2ByYqbdWAMEBiTHjthyZp6UUEFVda+LnpQ==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-x64-gnu": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.132.0.tgz", + "integrity": "sha512-FKxBkYrSAWNF4V6MacAJ/1E2SJobKKQ2CtW6Aq+pLzzEOjgk2SmxnK7I0bATlFH/O70tbTKDzWb17bySGYRcog==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-x64-musl": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-x64-musl/-/binding-linux-x64-musl-0.132.0.tgz", + "integrity": "sha512-W8IqA2XRvg/b6l/f+2SdV45/KKmpmwTabrjiMtpg/wzJU5cmKUoHihtJXPc9NA0Ls9S/oP0wB3PMCRQoNr5J1A==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-openharmony-arm64": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-openharmony-arm64/-/binding-openharmony-arm64-0.132.0.tgz", + "integrity": "sha512-X1BL65pI9bfOesLdVUcErjbEAUA3qmzjXCwXPCYsFZT7ela7SsK85+sN3m2TJNxmX1mrFKNg5g8bH+d2zHresw==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-wasm32-wasi/-/binding-wasm32-wasi-0.132.0.tgz", + "integrity": "sha512-QcIiwBOj+bV5ub5x39Xb+v0boviykxUtVvVJaIEbG/IH97avFzZcBXec8awYlemLDvgG4WKQwr17x7COR5zwFg==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "1.10.0", + "@emnapi/runtime": "1.10.0", + "@napi-rs/wasm-runtime": "^1.1.4" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-win32-arm64-msvc": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.132.0.tgz", + "integrity": "sha512-ahFMaa84QVTIROWpLhZcS9jKIv+CXzsJaMmgje7JtlVp1Kaar6tzVCt3EH2aPhSc8RvbGqfmnGdQu/kGwPAZVA==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.132.0.tgz", + "integrity": "sha512-tpBkLklqOnaYtlIh6gjmL60pP0Kn2hwaw1Fw3sJyIKwdkCPHsOPy/MRgBUpM0a/SeGFbsZRQkHnWfZXS1GTbbQ==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.132.0.tgz", + "integrity": "sha512-a69yKrBl2p9O8cdAHbHih56eKhcpKJRVkRu/S+CwCdR2Zsh4nnqYIllF96Lxg3jDjRQNL3t0xZNdYBDG5Vgq+w==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-android-arm-eabi/-/binding-android-arm-eabi-0.132.0.tgz", + "integrity": "sha512-KrLaPWa5c9Y7LkW+rKkaUE3y7DBDrQtaf7rlsSDfv6KAHUjgzAIRA761Lrrp6//Yd/Rlie/yEOt9YENCoJnOcw==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-android-arm64/-/binding-android-arm64-0.132.0.tgz", + "integrity": "sha512-SThDrSeamB/kG2+NxcJ5/wSLcV6dUqDknrPLqFYQ0ST/55mtBP4M7Q/f3QbubH6aAd11wpzZn/nwbVRSdobOpg==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-darwin-arm64/-/binding-darwin-arm64-0.132.0.tgz", + "integrity": "sha512-Lc0f/TYoKBghE5/2Gsv7bLXk+TJZunx2Tf61X8hG4ARXdc8UYI26dCGccFSd1AyFbK3jfaNXtMnupggDbjPXdQ==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-darwin-x64/-/binding-darwin-x64-0.132.0.tgz", + "integrity": "sha512-RG2eJIpf7C21z9HSSXFw1bTArdpKe7Y4fwcJTwRq1yCSe1vSavaN9GA1sm9KqzemTLAGVktQ+7qBTGp0vQeUZg==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-freebsd-x64/-/binding-freebsd-x64-0.132.0.tgz", + "integrity": "sha512-wQIPntPLtJ8NcBpvKPbEv3NqzV6k8eP8tP/jE9Rg8HTg/j7urZGFSsTCPCW5k77Qfw2DM4vRvc9p3I4yq/Shvw==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.132.0.tgz", + "integrity": "sha512-PixKEpeSe3yxQWqNyOCBALRYc72+Tj7ILDofUl3iXo25cVOzLA6jHUhmOINRtWIPh7dbUie3QNeabwaQpZTw6w==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.132.0.tgz", + "integrity": "sha512-sCR+DzGHlyHKnbA2z9zWjTUhIo8Sy0enJl4RDsBwPmkxYynPatpwOAWe8W5127SlW0boqUWHGtr1NWn5UwIhXQ==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.132.0.tgz", + "integrity": "sha512-sQBix5P2cW+IpzTcCwYxnh9yALrKSIkKJThspBvMGcygSMnbzkSvhN7SfuX1hvBk8y1XEChsdkU3ET0V5DmzUw==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-arm64-musl": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.132.0.tgz", + "integrity": "sha512-WozHg3Kc//8Sk756HXXgMbEAvqtG+Lzb9JOojwQzIGDtN78Az2dLttkb71akWYUF/8IgYfDSlfKh4Uot8is5Vw==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-ppc64-gnu": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.132.0.tgz", + "integrity": "sha512-CmX/ulNBOEwWTyVRmcpYKAcAizW6+OjtLJgo7fXoL9OqQvjF4VER8tPomv44vwzfSCy1BHbsB0ZlZYzYJNj4cA==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-riscv64-gnu": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.132.0.tgz", + "integrity": "sha512-j9oQS+hM90SdhviNGWbPgT4+Rlq+ac++q/zjgwPD1mVHgxHzATvoRGtDx0sXGmFOQ9J9YkwAhYGb5MAHL6TAsA==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-riscv64-musl": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.132.0.tgz", + "integrity": "sha512-bLz+Xi+Agnfmd7kWPEsSVwCn2k4EyIalZkNBcQ0OGIv9rqn8VgCPLNd03tM9mKX/5TdlvDXalz0q71BIrOPNqg==", + "cpu": [ + "riscv64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-s390x-gnu": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.132.0.tgz", + "integrity": "sha512-U6t2qbJU0ypTfyj9QV3W1Y6mITDTL8ai/OR6NUn85vyHthOvobKWgXzU4tu0EskSzlpuVFz1g0jFGulDIUKHxQ==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-x64-gnu": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.132.0.tgz", + "integrity": "sha512-WcEaSNHFk8yz5YFlQQAlhq6jOFmZBB/RKE7uzhyCIf+pF1Lmv9gUH4221mle2Gd9iHyWT3ySNph8yZgb1xYdWg==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-x64-musl": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-x64-musl/-/binding-linux-x64-musl-0.132.0.tgz", + "integrity": "sha512-iQrV4iJzQgRwK3BWRmQl1C3C6g3wYpXN2WLdQdyR+efoUnncdShZAVp9OgcojtlD3MDRbuOMGG3SjxF4fL4nlQ==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-openharmony-arm64": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-openharmony-arm64/-/binding-openharmony-arm64-0.132.0.tgz", + "integrity": "sha512-FWzmUGrZ6GUby4U7WIwcCtab6tdmlTO3xTRRKyb5kjIJVEiaUAT8animUG/nK8ZCA8gkRkPOTId4rl6uTqUmJQ==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-wasm32-wasi/-/binding-wasm32-wasi-0.132.0.tgz", + "integrity": "sha512-TlbMppxJI5CjWDes0QaP6G3aneVg1yikBu5QYI+DUShF9WDL66ccgKFNNGmi/Wybtszw6hxwAvv76T4DaPKnHw==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "1.10.0", + "@emnapi/runtime": "1.10.0", + "@napi-rs/wasm-runtime": "^1.1.4" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-win32-arm64-msvc": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.132.0.tgz", + "integrity": "sha512-RH/NbFjGKqdUAUi7Oh3LQPxUk2hsWFEEQ38HSnbRQT8QjBZFKqL1fMbmsB3N4jy/KPh9iX94+9dmkEMBBbambw==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.132.0.tgz", + "integrity": "sha512-JUr4jQY9jxoIB/YTLXr6XofSi5xikj6p5/Ns1h0VOBDT0j1jKU+kMsv2xxv51RwnETcXpA1Yw/9oUAfcqfaqEA==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.132.0.tgz", + "integrity": "sha512-2dapgHpA5X8DSXF4AU36hJWYf6zP0tKjMXFRAZFBD62pkevW/uhFDXoFH9Y/3Fd2EtDrw5ByNnR1wVE9X9y0SQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.132.0.tgz", + "integrity": "sha512-FESMOxil5Se014ui/Eq8fT5uHJo6nIRwH0PfJrZJXs6Gek3ZVFOrpUv3YIZT20m+extU98Hg1Ym72U58rlsxUQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@oxc-transform/binding-android-arm-eabi": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-android-arm-eabi/-/binding-android-arm-eabi-0.132.0.tgz", + "integrity": "sha512-UEC6fwIer1e2H8+KYXfhfYMsDgqxrG93lCj3FkrKkJ2O05rikqiJLYGd9ZntmKne+9bOMMuznVKLGErub++mAg==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-android-arm64/-/binding-android-arm64-0.132.0.tgz", + "integrity": "sha512-sr2BbEHtc5OkAN2nt5BpWGg/MnDkyQKf6tSjaZZ6k7Bb2FOa2CzZDy2pvH6tYdg+Ch/p/OGXXhENFVV9GU7ASw==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-darwin-arm64/-/binding-darwin-arm64-0.132.0.tgz", + "integrity": "sha512-yjL1GbN9Bb1HqjE8CS8NSwoZtDWgUGy43VbuFhmT4LEDx4Ph0guzVAyUKhc2CqqA4/x60qDvcH6QxwrguaqEVA==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-darwin-x64/-/binding-darwin-x64-0.132.0.tgz", + "integrity": "sha512-e3vVXEbNw93aHr3si8eVpUgl+jWF6Ry8RgUihgSxiI+2c/VMxiPsEDghkqPcjujqsMYDRdISWJi23xk+PP72ow==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-freebsd-x64/-/binding-freebsd-x64-0.132.0.tgz", + "integrity": "sha512-dIhAhkX8/It4IaKI944fN3jmfzunqv2sEG2G4fQdP5/1psycdqUHoVaY23DbpuYRIu4sWAdn/e1zQFP0GMkQOQ==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.132.0.tgz", + "integrity": "sha512-eR0dfj1us7DNbGZ6eBdAqWnLZRkLqHFqewSHudX4gV7di3By8E05+M+qsGTB/zq/78Z0BYJeK1zGWu9un6jocw==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.132.0.tgz", + "integrity": "sha512-naNx0WaV70hKtgQ5LUS/jzRTy6XEQZ1krK7KTFZQLI1mEz+GqLrwsLCqEmtrQ6HcqLhvGvA6GAWfFrc/0mWryA==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.132.0.tgz", + "integrity": "sha512-TWk1p0tbtE1tkMEABftfgXhMEfuoz3QieqBtMBXXyijizw/2YKNzbVSndG+vV73cSZgbyfoZ346pmuz0tQMzyw==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-arm64-musl": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.132.0.tgz", + "integrity": "sha512-LxURDI0Wm2KCQm/3ynNlI+nTgPdfmAfmrl54XPx+gaIqty8S/XWNCCTvLJWaCb0e5eKqnzrcTuhMDOdawqoYIA==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-ppc64-gnu": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.132.0.tgz", + "integrity": "sha512-eKEeG6SLtj01iDvi5QgMNzyEXt/K2BNWafZ0jGECmvqTWWaO2l4qBxUW+X+sAXp5vZBoT2WO3ZnshvIWXWjtKw==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-riscv64-gnu": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.132.0.tgz", + "integrity": "sha512-Kz6tg1Msra7+2iGV8K5xANLO2SmpP6n+91/Yy+JJh9EagU4hvMm7loReszzz2bwhs6Xs4HPrglxIngMdqnHpXw==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-riscv64-musl": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.132.0.tgz", + "integrity": "sha512-dtUSp80ElrxUhfBNmFWGkFQQ51j3tRoZkKBXxEWh+hb+S6bbEdZCW/VuCYo/gCTH3DywwyTeWiG+dtZfJiHKvg==", + "cpu": [ + "riscv64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-s390x-gnu": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.132.0.tgz", + "integrity": "sha512-9qVyCbYSs8dwVPpqKKWxuUAnLJ1+LyC5A4oNMZTzymRhuQr3coqAP/XWfJ8LlhQqI9GvhK0SWCOK0iM3HFUAnA==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-x64-gnu": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.132.0.tgz", + "integrity": "sha512-dUtJkDCYndDaxcuiSMyRoSb7sXmTbcJ61rDsUjIakghP6BkKwH57lyHYvSUhT1ZswXWwCjf3ksxlT8nA0iU6ag==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-x64-musl": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-x64-musl/-/binding-linux-x64-musl-0.132.0.tgz", + "integrity": "sha512-I7BkkktnrriiO7o1dF3RDgKZoSmFKX9IE0W2LE1WdfmpZcAa3fbv5BW6oVbzk40iD29hWSP69A65WT9l6dxuzg==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-openharmony-arm64": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-openharmony-arm64/-/binding-openharmony-arm64-0.132.0.tgz", + "integrity": "sha512-yiXaRYqgySJguURNZUFLDzSI1NTkP1jJKrowr8lQCKwY5N8DsESbQJ1RpSlEbeXGiy201puA+QC2fdr+ywQM/A==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-wasm32-wasi/-/binding-wasm32-wasi-0.132.0.tgz", + "integrity": "sha512-KNago0Mv+zl2yl5hK2G9V4Yb7Tgpn+z6lgzgaHXkGp7S+iuUtN3av+QqPCD/J+Odq6EjjyXJrFPfmyjbXXbf4Q==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "1.10.0", + "@emnapi/runtime": "1.10.0", + "@napi-rs/wasm-runtime": "^1.1.4" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-win32-arm64-msvc": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.132.0.tgz", + "integrity": "sha512-3fprECrLHwPP809a1SRzszDxp8Fpp8IOg0V2EO49wS+3JmRFOo090h5c37faZvym5VnRZ12DH2tkT6ZVXwlOsA==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.132.0.tgz", + "integrity": "sha512-n616QqZ3hXasHytVoFjo6pLzIfo6hQwBEir0kOcaObKaAw0ZbncIe1h5a6IMnCOJGLP30WwnhwLW20tIV78MAA==", + "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.132.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.132.0.tgz", + "integrity": "sha512-P7A4Cz/0C0Oxa2zH/oCruzA/5EHr5RRz0x6KXYz3wwhS+dFqIBxP9yo8FKjXhKXHRKa+M+QHo+bqYiqqlVsEQg==", + "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" + ], + "libc": [ + "glibc" + ], + "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" + ], + "libc": [ + "musl" + ], + "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" + ], + "libc": [ + "glibc" + ], + "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" + ], + "libc": [ + "musl" + ], + "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" + ], + "libc": [ + "glibc" + ], + "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" + ], + "libc": [ + "musl" + ], + "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/binding-android-arm64": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.4.tgz", + "integrity": "sha512-EZLpf/8y7GXkkra90ML47kzik/GMP3EMcE9bPyHmRfxLC6z9+aW5A8poCsoxjrT5GfEcNAAvWwUHjvP1pUQkfw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.4.tgz", + "integrity": "sha512-aUi+HBvmYb7j8krl1+qJgkG8C17fO79gk3c+jPw4S8glRFc1DTija9S3EyaTSQUm5GJXYKDAsugBEhFHH2vYiQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.4.tgz", + "integrity": "sha512-F7hHC3gwY11+vByKPRWqwGbeXWVgKmL+pTGCinaEhdihzBV2aQ0fvZOch9cXYUOKuKKq429HeYXOqQLc7wFCEg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.4.tgz", + "integrity": "sha512-sI5yw+7s92SK6odiEhD5lKCBlWcpjHS5qyqpVQbZAJ0fIzEUXrmbl3DH2ybR3PZogulNJF+COLtmA8hUfvkCCQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.4.tgz", + "integrity": "sha512-mCi0OKgEieFircrtVYmQAFGszRtMnZ6fpZAXrxanXAu7lqZcsK1E1RAaZNG0uKAnxox3B1f4EyQNnoyMfN1vAA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.4.tgz", + "integrity": "sha512-B9Ial3Kv5sh0SHnB1g/QWcUQCEvCF6QKGAl4zXypYj65mVI+B4AhFBwPtSN7pDrJeIx8Z7zdy4ntx+wQABom7w==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.4.tgz", + "integrity": "sha512-lZVym0PuHE1KZ22gmFTC15lAkrg9iTszR617oYRB/iPY1A56ywoJzVKOJBKaot5RiikCObmur6pogpse3gRcng==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.4.tgz", + "integrity": "sha512-t2DNiLJWNTbnEHyUzTumldML6ET4/g16467LZoDDJ3tSxGvguL5/NyC2lCsNKuyRycg9XeDQF5SSv+TNOhQEXg==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.4.tgz", + "integrity": "sha512-0WIRnL1Uw4BvTZRLQt+PVgo6ZKTJadlC2btP+/EOXv2f/DWbY0rEgl+y834mIVwP1FkTlWVTrGGJXf12lru7EQ==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.4.tgz", + "integrity": "sha512-JWtGshGfX+oENAKonoNkqEJX+7hC8yfhi9GUyPX1VX4mdh1y5r+ZiJLR5XzAB0aoP6s/PcILsGjKq8O0mm24bw==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.4.tgz", + "integrity": "sha512-rT6yQcxUuXs4CnbofqwHRRV0iem349rLMYpTjkgQGLjrY4ado/eDzwPZPTCgTOlF6Nkp8NEv70yLMTn6qkWxsQ==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.4.tgz", + "integrity": "sha512-KXMGoboq5cyaCQjDA4GLuRiOwBQ0EyFnJoVViLeZ45/3rFItRODEr+NdsBcVpll40hhNArlm/speWGRvj08LzA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.4.tgz", + "integrity": "sha512-5K83rb36oJiY7BCyE9zLZtGcPV4g5wvq+xwdO0XPIwDVZI8cyB/AUjkNXGb92/rnmezEkjMOpgY61rtwjQtFwg==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@emnapi/core": "1.11.1", + "@emnapi/runtime": "1.11.1", + "@napi-rs/wasm-runtime": "^1.1.6" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@emnapi/core": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", + "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.2", + "tslib": "^2.4.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@emnapi/runtime": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", + "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@emnapi/wasi-threads": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", + "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.4.tgz", + "integrity": "sha512-PnWBtw3TV5KOg69HQQDR0mnQuyCmSGR2pAB4DC1rPF808fgKeTUMj2EOEyKATpgiuxuR5APQmiDO7PDgEjTFSA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.4.tgz", + "integrity": "sha512-M1lpniBePobTfsa7Ks9a199e1akxsXn+GYBUKsEzv3YFzOm1HJAMNwKI3qr0Zq+mxwx9gOZoTdP1yXRYsZUocQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", + "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.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-29.0.3.tgz", + "integrity": "sha512-ZaOxZceP7SOUW7Lqw5IRVweSQYWaeIPnXIGLiB690EBA3FGJTO40EEr2L5yZplJWsgTCogILRSpcAe7+U0Otdg==", + "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-commonjs/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/@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-inject/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/@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.4.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.4.0.tgz", + "integrity": "sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==", + "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/pluginutils/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/@rollup/rollup-android-arm-eabi": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.2.tgz", + "integrity": "sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.2.tgz", + "integrity": "sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.2.tgz", + "integrity": "sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.2.tgz", + "integrity": "sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.2.tgz", + "integrity": "sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.2.tgz", + "integrity": "sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.2.tgz", + "integrity": "sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==", + "cpu": [ + "arm" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.2.tgz", + "integrity": "sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==", + "cpu": [ + "arm" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.2.tgz", + "integrity": "sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.2.tgz", + "integrity": "sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.2.tgz", + "integrity": "sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==", + "cpu": [ + "loong64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.2.tgz", + "integrity": "sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==", + "cpu": [ + "loong64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.2.tgz", + "integrity": "sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.2.tgz", + "integrity": "sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==", + "cpu": [ + "ppc64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.2.tgz", + "integrity": "sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.2.tgz", + "integrity": "sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==", + "cpu": [ + "riscv64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.2.tgz", + "integrity": "sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.2.tgz", + "integrity": "sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.2.tgz", + "integrity": "sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.2.tgz", + "integrity": "sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.2.tgz", + "integrity": "sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.2.tgz", + "integrity": "sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.2.tgz", + "integrity": "sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.2.tgz", + "integrity": "sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.2.tgz", + "integrity": "sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==", + "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.17", + "resolved": "https://registry.npmjs.org/@speed-highlight/core/-/core-1.2.17.tgz", + "integrity": "sha512-Z92FwKpCtfaW1V0jTU/fh3QzYEZN8wDwrzRIBoADCJfn4mJCNcJN/XegifX7BDrQ8/h9Xh/JnbyMchL0FqXrkg==", + "license": "CC0-1.0" + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "license": "MIT" + }, + "node_modules/@swc/helpers": { + "version": "0.5.23", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.23.tgz", + "integrity": "sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.2.tgz", + "integrity": "sha512-yWP/sqEcBLaD8JuA6zNwxoYKr75qxTioYwlRwekj5Jr/I5GXnoJfjetH/psLUIv74cYTH2lBUEzBkinthoYcBg==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "5.21.6", + "jiti": "^2.7.0", + "lightningcss": "1.32.0", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.3.2" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.2.tgz", + "integrity": "sha512-z8ZgnzX8gdNoWLBLqBPoh/sjnxkwvf9ZuWjnO0l0yIzbLa5/9S+eC5QxGZKRobVHIC3/1BoMWjHblqWjcgFgag==", + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.3.2", + "@tailwindcss/oxide-darwin-arm64": "4.3.2", + "@tailwindcss/oxide-darwin-x64": "4.3.2", + "@tailwindcss/oxide-freebsd-x64": "4.3.2", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.2", + "@tailwindcss/oxide-linux-arm64-gnu": "4.3.2", + "@tailwindcss/oxide-linux-arm64-musl": "4.3.2", + "@tailwindcss/oxide-linux-x64-gnu": "4.3.2", + "@tailwindcss/oxide-linux-x64-musl": "4.3.2", + "@tailwindcss/oxide-wasm32-wasi": "4.3.2", + "@tailwindcss/oxide-win32-arm64-msvc": "4.3.2", + "@tailwindcss/oxide-win32-x64-msvc": "4.3.2" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.2.tgz", + "integrity": "sha512-WHxqIuHpvZ5VtdX6GTl1Ik/Vp2YuN42Et+0CdeaVd/frQ9jAvGmvR8vLT+jk3e8/Q3x8kECB9+R17pgpp2BulA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.2.tgz", + "integrity": "sha512-GZypeUY/IDJW3877KeM+O67vbXr3MBnbtEL4aYhNErv/JWZhye2vGSWWG9tB6iiqR2MqRNkY8IOUy4NdSZV26w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.2.tgz", + "integrity": "sha512-UIIzmefR6KO1sDU7MzRqAxC8iBpft/VhkGjTjnhoS6k7Z3rQ9wEgA1ODSiyH/tcSYssulNm4Ci3hOeK1jH7ccQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.2.tgz", + "integrity": "sha512-GN+uAmcI6DNspnCDwtOAZrTz6oukJnp337qZvxqCGLd3BHBzJpO0ZbTLRvJNdztOeAmTzewewGIMPb0tk2R4WA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.2.tgz", + "integrity": "sha512-4ABn7qSbdHRwTiDiuWNegCyb5+2FJ4vKIKc3DmKrvAFw7MU1Lm11dIkTPwUaFdTzc7IsOpDbqBrlh0x6y36U/w==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.2.tgz", + "integrity": "sha512-wDgEIGwoM8w8pufh9LVt1PahDgNdKXrLC2qfAnV3vAmococ9RWbxeAw4pxPttd/TsJfwjyLf90Dg1y9y8I6Emw==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.2.tgz", + "integrity": "sha512-J5Nuk0uZQIiMTJj3LEx4sAA9tMFUoXQZFv1J6An+QGYe53HKRJuFDi0rpq/tuouCZeAbOBY3kQ6g8qeD4TUjtA==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.2.tgz", + "integrity": "sha512-kqCZpSKOBEJO4mz7OqWoofBZeXTAwaVGPj0ErAj7CojmhKpWVWVOnrt9dE8odoIraZq4oj3ausM37kXi+Tow8w==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.2.tgz", + "integrity": "sha512-cixpqbh2toJDmkuCRI68nXA8ZxNmdK9Y+9v5h3MC3ZQKy/0BO8AWzlkWyRM7JAFSGBlfig4YVTPsK6MVgqz1uw==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.2.tgz", + "integrity": "sha512-4ec2Z/LOmRsAgU23CS4xeJfcJlmRg94A/XrbGRCF1gyU/zdDfRLYDVsS+ynSZCmGNxQ1jQriQOKMQeQxBA3Isw==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.11.1", + "@emnapi/runtime": "^1.11.1", + "@emnapi/wasi-threads": "^1.2.2", + "@napi-rs/wasm-runtime": "^1.1.4", + "@tybys/wasm-util": "^0.10.2", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.2.tgz", + "integrity": "sha512-Zyr/M0+XcYZu3bZrUytc7TXvrk0ftWfl8gN2MwekNDzhqhKRUucMPSeOzM0o0wH5AWOU49BsKRrfKxI2atCPMQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.2.tgz", + "integrity": "sha512-QI9BO7KlNZsp2GuO0jwAAj5jCDABOKXRkCk2XuKTSaNEFSdfzqswYVTtCHBNKHLsqyjFyFkqlDiwkNbTYSssMQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/postcss": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.3.2.tgz", + "integrity": "sha512-rjVWYCa7Ngbi5AarT6k8TkxUG3Wl1QKzHdIZVsjZSzf36Jmo2IKZt/NHRAwly8oDkbBOH0YTu+CHuf9jPxMc+g==", + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "@tailwindcss/node": "4.3.2", + "@tailwindcss/oxide": "4.3.2", + "postcss": "^8.5.15", + "tailwindcss": "4.3.2" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.3.2.tgz", + "integrity": "sha512-eHpMeX4JXfVNJDEcsouTeCBubJBTcTLigeaw/NTUW6PB5ATKKXdyonnXgTBX2VuRbjz1hjfz6C5XAhr52ImQXA==", + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.3.2", + "@tailwindcss/oxide": "4.3.2", + "tailwindcss": "4.3.2" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7 || ^8" + } + }, + "node_modules/@tanstack/table-core": { + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.21.3.tgz", + "integrity": "sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/virtual-core": { + "version": "3.17.3", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.17.3.tgz", + "integrity": "sha512-8Np/TFELpI0ySuJoVmjvOrQYXH/8sTX0Biv9szhFhY39xOdAAY+smrMxjxOum/ux3eM8MUJQsEJ0/R0UpvC8dw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/vue-table": { + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/@tanstack/vue-table/-/vue-table-8.21.3.tgz", + "integrity": "sha512-rusRyd77c5tDPloPskctMyPLFEQUeBzxdQ+2Eow4F7gDPlPOB1UnnhzfpdvqZ8ZyX2rRNGmqNnQWm87OI2OQPw==", + "license": "MIT", + "dependencies": { + "@tanstack/table-core": "8.21.3" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "vue": ">=3.2" + } + }, + "node_modules/@tanstack/vue-virtual": { + "version": "3.13.31", + "resolved": "https://registry.npmjs.org/@tanstack/vue-virtual/-/vue-virtual-3.13.31.tgz", + "integrity": "sha512-wZMEoSf852jQqaf3Ika1J7PiBae6341LNy/2CxmIyn0XKDQXMuK41wVX+xp6G0yx8jyR95Ef+Tdr13DK7mbJtQ==", + "license": "MIT", + "dependencies": { + "@tanstack/virtual-core": "3.17.3" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "vue": "^2.7.0 || ^3.0.0" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", + "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "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/web-bluetooth": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", + "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", + "license": "MIT" + }, + "node_modules/@unhead/vue": { + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-2.1.15.tgz", + "integrity": "sha512-SSByXfEjhzPn8gXdEdgpYqpLMPSkLUH2HVE0GxZfOtNsJ0GgOHQs0g9T67ZZ1z0kTELLKdtOtYrzrbv9+ffF7g==", + "license": "MIT", + "dependencies": { + "hookable": "^6.0.1", + "unhead": "2.1.15" + }, + "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.10.2", + "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-1.10.2.tgz", + "integrity": "sha512-w+WyX5Ulmj4dtTZrxaulqrjaLZHSbnPzx75SJsTNYmotKsqn1JlLnDJa+lz5hn90HJofhl/2MAtw0mCrgM3qYw==", + "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/@vercel/nft/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/@vitejs/plugin-vue": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-6.0.7.tgz", + "integrity": "sha512-km+p+XdSz9Sxm5rqUbqcSfZYaAniKxWBj1KURl+Jr7UaPvvX7BmaWMdP69I5rrFDeQGyxAG7NXdc57vz+snhWg==", + "license": "MIT", + "dependencies": { + "@rolldown/pluginutils": "^1.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.2.25" + } + }, + "node_modules/@vitejs/plugin-vue-jsx": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-5.1.6.tgz", + "integrity": "sha512-YXvi4as2clxt6DFw5+a0tTA97ntiQXm/raR8ofNj3aNwwdlVGTiG2gp7EvfZW17P50acL/9bP0ccF4XnqNmlgA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.29.0", + "@babel/plugin-syntax-typescript": "^7.29.7", + "@babel/plugin-transform-typescript": "^7.29.7", + "@rolldown/pluginutils": "^1.0.1", + "@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.39", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.39.tgz", + "integrity": "sha512-16KBTEXAJCpDr0mwlw+AZyhu8iyC7R3S2vBwsI7QnWJU6X3WKc9VKeNEZpiMdZ569qWhz9574L3vV55qRL0Vtw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.7", + "@vue/shared": "3.5.39", + "entities": "^7.0.1", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-core/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/@vue/compiler-dom": { + "version": "3.5.39", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.39.tgz", + "integrity": "sha512-oQPigALqYbNxTNPvNgSOe+czwVExfbVF02lz8jP0S3AXJiu3jxYDygNUiqSep4ezzW8XgnubqH63My2A7JR/vg==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.39", + "@vue/shared": "3.5.39" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.39", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.39.tgz", + "integrity": "sha512-d0ki86iOyN8LoZPBmk5SJWNwHP19CnDDCfuo//+2WJa2g5Ke0Jay983PIBIcSSzldC68I8DrD5GrHV3OSDfodg==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.7", + "@vue/compiler-core": "3.5.39", + "@vue/compiler-dom": "3.5.39", + "@vue/compiler-ssr": "3.5.39", + "@vue/shared": "3.5.39", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.21", + "postcss": "^8.5.15", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-sfc/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/@vue/compiler-ssr": { + "version": "3.5.39", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.39.tgz", + "integrity": "sha512-Ce7/wvwMHai74bdszfXExdazFigYnlF9zgCmEQUcM1j0fOymlouZ7XilTYNo8oUjhlnjYOZbGrcYKuqjz89Ucw==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.39", + "@vue/shared": "3.5.39" + } + }, + "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.5", + "resolved": "https://registry.npmjs.org/@vue/devtools-core/-/devtools-core-8.1.5.tgz", + "integrity": "sha512-5e5jQOEssCdZA1wlFEUkIDtb+cAOWuLNWJ52fm4PBWbF7e3oTnM2fneaL42E5lJoolAaUQ678tv/XEb3h4e86Q==", + "license": "MIT", + "dependencies": { + "@vue/devtools-kit": "^8.1.5", + "@vue/devtools-shared": "^8.1.5" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/@vue/devtools-kit": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-8.1.5.tgz", + "integrity": "sha512-FcSAxsi4eWuXLCB7Rv9lj0aIVHHPNVQ2BazGf4RJTc2JCqb4BQg0hk87ZFhminCfl+mD5OUI0rX2cgyu4kJOGA==", + "license": "MIT", + "dependencies": { + "@vue/devtools-shared": "^8.1.5", + "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.5", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-8.1.5.tgz", + "integrity": "sha512-mhT4zcPFhF+Xk1O4BfhhrbXzpmfqY03fS6xGpcllbQG7lDjhQf8pQHcTIhqQIYx1hfwtHmk/6jM96ele0UxPqQ==", + "license": "MIT" + }, + "node_modules/@vue/language-core": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-3.3.6.tgz", + "integrity": "sha512-LgBMZAy2sR3cQWknpyaxnI6yBkqDfLBPkbdhwRhQCvzfNJRQXPilgQIrdI/v4ytJ0sAq9bWhaPsjqBqneomJ3Q==", + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.28", + "@vue/compiler-dom": "^3.5.0", + "@vue/shared": "^3.5.0", + "alien-signals": "^3.2.0", + "muggle-string": "^0.4.1", + "path-browserify": "^1.0.1", + "picomatch": "^4.0.4" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.39", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.39.tgz", + "integrity": "sha512-TpsuBJ9gGlZa5d23XcM2y8EXanz9dZeVDQBXRwzy46ItgvM+rWpzs+UVM0wcRLxGvcav0HE5jz2gNL53xlRAog==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.39" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.39", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.39.tgz", + "integrity": "sha512-9GLtNyRvPAUMbX+7ono0RC2j0guo2LXVi8LvcmAooImACUKm0oFf0jjwbX8/H0AE/t1nxhAkn8RSl9PMCzzxZw==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.39", + "@vue/shared": "3.5.39" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.39", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.39.tgz", + "integrity": "sha512-7Y6aAGboKcXAZ3ECuUy7RrS5yy2r47dhTp2SKaJmYxjopImaVFaNa5Ne66NwGovsrxVAl5S5rwc7m22UG7Lmww==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.39", + "@vue/runtime-core": "3.5.39", + "@vue/shared": "3.5.39", + "csstype": "^3.2.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.39", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.39.tgz", + "integrity": "sha512-yZSakiAGw85rZfG7UM8akMnIF+FmeiNk47uvHf2nVBBSe+dIKUhZuZq9+XgJhbV3nS5Z4ALH23/MpXofW+mbcw==", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.39", + "@vue/shared": "3.5.39" + }, + "peerDependencies": { + "vue": "3.5.39" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.39", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.39.tgz", + "integrity": "sha512-l1rrBtBfTnmxvtsvdQDXltUUy8S1Y+ZaqdfUzmAnJkTd8Z8rv5v/ytW+TKiqEOWyHPoqtPlNFSs0lhRmYVSHVA==", + "license": "MIT" + }, + "node_modules/@vueuse/core": { + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-13.9.0.tgz", + "integrity": "sha512-ts3regBQyURfCE2BcytLqzm8+MmLlo5Ln/KLoxDVcsZ2gzIwVNnQpQOL/UKV8alUqjSZOlpFZcRNsLRqj+OzyA==", + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.21", + "@vueuse/metadata": "13.9.0", + "@vueuse/shared": "13.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, + "node_modules/@vueuse/integrations": { + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-13.9.0.tgz", + "integrity": "sha512-SDobKBbPIOe0cVL7QxMzGkuUGHvWTdihi9zOrrWaWUgFKe15cwEcwfWmgrcNzjT6kHnNmWuTajPHoIzUjYNYYQ==", + "license": "MIT", + "dependencies": { + "@vueuse/core": "13.9.0", + "@vueuse/shared": "13.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "async-validator": "^4", + "axios": "^1", + "change-case": "^5", + "drauu": "^0.4", + "focus-trap": "^7", + "fuse.js": "^7", + "idb-keyval": "^6", + "jwt-decode": "^4", + "nprogress": "^0.2", + "qrcode": "^1.5", + "sortablejs": "^1", + "universal-cookie": "^7 || ^8", + "vue": "^3.5.0" + }, + "peerDependenciesMeta": { + "async-validator": { + "optional": true + }, + "axios": { + "optional": true + }, + "change-case": { + "optional": true + }, + "drauu": { + "optional": true + }, + "focus-trap": { + "optional": true + }, + "fuse.js": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "jwt-decode": { + "optional": true + }, + "nprogress": { + "optional": true + }, + "qrcode": { + "optional": true + }, + "sortablejs": { + "optional": true + }, + "universal-cookie": { + "optional": true + } + } + }, + "node_modules/@vueuse/metadata": { + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-13.9.0.tgz", + "integrity": "sha512-1AFRvuiGphfF7yWixZa0KwjYH8ulyjDCC0aFgrGRz8+P4kvDFSdXLVfTk5xAN9wEuD1J6z4/myMoYbnHoX07zg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-13.9.0.tgz", + "integrity": "sha512-e89uuTLMh0U5cZ9iDpEI2senqPGfbPRTHM/0AaQkcxnpqjkZqDYP8rpfm7edOz8s+pOCOROEy1PIveSW8+fL5g==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, + "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.17.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.17.0.tgz", + "integrity": "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==", + "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.2.1", + "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-3.2.1.tgz", + "integrity": "sha512-I8FjmltrfnDFoZedi5CG8DghVYNhzb/Ijluz7tCSJH0xpd0484Kowhbb1XDYOxfJpU1p5wnM2X54dA+IfGyD1g==", + "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.3.1", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.3.1.tgz", + "integrity": "sha512-BJ8/l4R5LRE7hW9WdSuGYrLSHi2ynxeFpDFbH0K/CgNeY/tyhk+vO6TYxXC5r5CpUhNVX310xzPsN/H9lCdfOA==", + "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/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.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", + "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", + "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/aria-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.2.tgz", + "integrity": "sha512-rD5t5DwOjJdmSORcTq64j8MawTC+tbQ+HHqjR4NDumamy/ambn1UJrlKL+KdwujWxMkFjPM3pPHOEA9tl4767Q==", + "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.4", + "caniuse-lite": "^1.0.30001799", + "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.1", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.8.1.tgz", + "integrity": "sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw==", + "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.9.1", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.9.1.tgz", + "integrity": "sha512-Z0oHEHAFDZkffN8Qc39zNZjQlMDkPJRyyyZieU1VH7u8c5S+qHZ2S8ixdKIAxEjfHO7FJxXmJWgteOghVanIsg==", + "license": "Apache-2.0", + "peerDependencies": { + "bare-abort-controller": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } + } + }, + "node_modules/bare-fs": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.7.2.tgz", + "integrity": "sha512-aTvMFUWkBmjzKtEQMDGGDNF8bkfpD5N1b/FCwt7A3wrU4t1o/e/85Wzkluh6JlODCjqVESYCkQCdTXqZ9G7VFg==", + "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.3", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.9.3.tgz", + "integrity": "sha512-fF4Q7QsyKVF5Rj0qvI8BgUNjqzC2JvQlpTaPLjVJVxYVUX5Zr9un+y3w1HmA4nNKdFmRBT8z/WmrjvXzXVerKQ==", + "license": "Apache-2.0", + "engines": { + "bare": ">=1.14.0" + } + }, + "node_modules/bare-path": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.1.tgz", + "integrity": "sha512-ghj2DSK/2e99a1anTVPCV4m4YIYtrbXhfM7V3D7XZLOTsybnYyaJloymGqssQc8l/or0UoDyRtNQkmkEF/ysgQ==", + "license": "Apache-2.0", + "dependencies": { + "bare-os": "^3.0.1" + } + }, + "node_modules/bare-stream": { + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.13.3.tgz", + "integrity": "sha512-Kc+brLqvEqGkjyfiwJmImAOqLZL7OsoLKuavx+hJjgVV3nLTOjloJyPMFxjUPerGGHrNH0fLU06jjykMLWrERQ==", + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.8.1", + "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.5", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.5.tgz", + "integrity": "sha512-K+y9xF1tN+CdPu4qWwr0QiK1Al07eFPGYK5M2pDXcmHdMdgC/tT/bpmMe1hrmRHaidKLkXrC+cRNYf3XVDUhSQ==", + "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.40", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.40.tgz", + "integrity": "sha512-BSSLZ9/Cjjv7Gtj5B68ZzXcXUg8iOf3fme+FCuh8rC/Go+Kmh8cox7M3A8dolou16s64QjLPOSdngh7GxXvkSw==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "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/blob-to-buffer": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/blob-to-buffer/-/blob-to-buffer-1.2.9.tgz", + "integrity": "sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA==", + "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/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.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.7.tgz", + "integrity": "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==", + "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/brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.1.2" + } + }, + "node_modules/browserslist": { + "version": "4.28.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.4.tgz", + "integrity": "sha512-MTc8i/x9jBQd1iMw2CFGS+rwMa07eYjLR0CCTLDACl9xhxy+nIs3KeML/biicXtk9JrZ6dnnTatmc7ErPXIxqw==", + "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.38", + "caniuse-lite": "^1.0.30001799", + "electron-to-chromium": "^1.5.376", + "node-releases": "^2.0.48", + "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/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.30001800", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001800.tgz", + "integrity": "sha512-MMHtuAz9Ys840zAY5F4k6fV5GaivZ9sPk+nz0mY+GYVzRBnYkN0mpqkSR92oWRQ19yQWo4HvBV/FnC16AJX8MA==", + "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/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/clear-cut": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/clear-cut/-/clear-cut-2.0.2.tgz", + "integrity": "sha512-WVgn/gSejQ+0aoR8ucbKIdo6icduPZW6AbWwyUmAUgxy63rUYjwa5rj/HeoNPhf0/XPrl82X8bO/hwBkSmsFtg==", + "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/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/cluster-key-slot": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.1.tgz", + "integrity": "sha512-rwHwUfXL40Chm1r08yrhU3qpUvdVlgkKNeyeGPOxnW8/SyVDvgRaed/Uz54AqWNaTCAThlj6QAs3TZcKI0xDEw==", + "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/colortranslator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/colortranslator/-/colortranslator-5.0.0.tgz", + "integrity": "sha512-Z3UPUKasUVDFCDYAjP2fmlVRf1jFHJv1izAmPjiOa0OCIw1W7iC8PZ2GsoDa8uZv+mKyWopxxStT9q05+27h7w==", + "license": "Apache-2.0" + }, + "node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "extraneous": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "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/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": "1.2.3", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.3.tgz", + "integrity": "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==", + "license": "MIT" + }, + "node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "hasInstallScript": true, + "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-fetch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.7.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/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.9", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.1.9.tgz", + "integrity": "sha512-uPR75+5Dk/WJ/YSPR1/YDHdwMM9c5FsaARljfKWgeCKLKOtJ0we21xy/RcCjn53fZnD/f6yYEIZ8pu18+GnbNQ==", + "license": "MIT", + "dependencies": { + "cssnano-preset-default": "^7.0.17", + "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.13" + } + }, + "node_modules/cssnano-preset-default": { + "version": "7.0.17", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.17.tgz", + "integrity": "sha512-11qO63A+czwguQFJCaTdICvbaxn0pJzz/XghLlv+OT7WyToDxAMR0Xb3/26/l0y0hQJywwNbj/SLSQlGBHE1OA==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.2", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^5.0.3", + "postcss-calc": "^10.1.1", + "postcss-colormin": "^7.0.10", + "postcss-convert-values": "^7.0.12", + "postcss-discard-comments": "^7.0.8", + "postcss-discard-duplicates": "^7.0.4", + "postcss-discard-empty": "^7.0.3", + "postcss-discard-overridden": "^7.0.3", + "postcss-merge-longhand": "^7.0.7", + "postcss-merge-rules": "^7.0.11", + "postcss-minify-font-values": "^7.0.3", + "postcss-minify-gradients": "^7.0.5", + "postcss-minify-params": "^7.0.9", + "postcss-minify-selectors": "^7.1.2", + "postcss-normalize-charset": "^7.0.3", + "postcss-normalize-display-values": "^7.0.3", + "postcss-normalize-positions": "^7.0.4", + "postcss-normalize-repeat-style": "^7.0.4", + "postcss-normalize-string": "^7.0.3", + "postcss-normalize-timing-functions": "^7.0.3", + "postcss-normalize-unicode": "^7.0.9", + "postcss-normalize-url": "^7.0.3", + "postcss-normalize-whitespace": "^7.0.3", + "postcss-ordered-values": "^7.0.4", + "postcss-reduce-initial": "^7.0.9", + "postcss-reduce-transforms": "^7.0.3", + "postcss-svgo": "^7.1.3", + "postcss-unique-selectors": "^7.0.7" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.13" + } + }, + "node_modules/cssnano-utils": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-5.0.3.tgz", + "integrity": "sha512-ynIREMICLxkxm7e9bCR9sh75s4Q5drICi0ua1yxo5jH2XPBqSKkl4dOh4EbFqtUmnTMhRffHgYL0EKKkMjtJTg==", + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.13" + } + }, + "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/d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "license": "ISC", + "dependencies": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } + }, + "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/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.8.1", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.8.1.tgz", + "integrity": "sha512-4CXDYRBGqN+57wVJkuXBYmpAVUSg3L6JAQa/DFqm238G73E1wuyc/JhGQJzN7vUf/CMphYau2zXbfWzDR5aTEw==", + "license": "MIT" + }, + "node_modules/dfa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==", + "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/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.384", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.384.tgz", + "integrity": "sha512-g6KAKY1vkYsADvSPWvdJsuYT0ixdcu6lUtD9P/wJKGBEDlZVXh2AX42j1mPqqaQPDluWjara9ziQ7xqAeXCt5A==", + "license": "ISC" + }, + "node_modules/embla-carousel": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.6.0.tgz", + "integrity": "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==", + "license": "MIT" + }, + "node_modules/embla-carousel-auto-height": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-auto-height/-/embla-carousel-auto-height-8.6.0.tgz", + "integrity": "sha512-/HrJQOEM6aol/oF33gd2QlINcXy3e19fJWvHDuHWp2bpyTa+2dm9tVVJak30m2Qy6QyQ6Fc8DkImtv7pxWOJUQ==", + "license": "MIT", + "peerDependencies": { + "embla-carousel": "8.6.0" + } + }, + "node_modules/embla-carousel-auto-scroll": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-auto-scroll/-/embla-carousel-auto-scroll-8.6.0.tgz", + "integrity": "sha512-WT9fWhNXFpbQ6kP+aS07oF5IHYLZ1Dx4DkwgCY8Hv2ZyYd2KMCPfMV1q/cA3wFGuLO7GMgKiySLX90/pQkcOdQ==", + "license": "MIT", + "peerDependencies": { + "embla-carousel": "8.6.0" + } + }, + "node_modules/embla-carousel-autoplay": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-autoplay/-/embla-carousel-autoplay-8.6.0.tgz", + "integrity": "sha512-OBu5G3nwaSXkZCo1A6LTaFMZ8EpkYbwIaH+bPqdBnDGQ2fh4+NbzjXjs2SktoPNKCtflfVMc75njaDHOYXcrsA==", + "license": "MIT", + "peerDependencies": { + "embla-carousel": "8.6.0" + } + }, + "node_modules/embla-carousel-class-names": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-class-names/-/embla-carousel-class-names-8.6.0.tgz", + "integrity": "sha512-l1hm1+7GxQ+zwdU2sea/LhD946on7XO2qk3Xq2XWSwBaWfdgchXdK567yzLtYSHn4sWYdiX+x4nnaj+saKnJkw==", + "license": "MIT", + "peerDependencies": { + "embla-carousel": "8.6.0" + } + }, + "node_modules/embla-carousel-fade": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-fade/-/embla-carousel-fade-8.6.0.tgz", + "integrity": "sha512-qaYsx5mwCz72ZrjlsXgs1nKejSrW+UhkbOMwLgfRT7w2LtdEB03nPRI06GHuHv5ac2USvbEiX2/nAHctcDwvpg==", + "license": "MIT", + "peerDependencies": { + "embla-carousel": "8.6.0" + } + }, + "node_modules/embla-carousel-reactive-utils": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.6.0.tgz", + "integrity": "sha512-fMVUDUEx0/uIEDM0Mz3dHznDhfX+znCCDCeIophYb1QGVM7YThSWX+wz11zlYwWFOr74b4QLGg0hrGPJeG2s4A==", + "license": "MIT", + "peerDependencies": { + "embla-carousel": "8.6.0" + } + }, + "node_modules/embla-carousel-vue": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-vue/-/embla-carousel-vue-8.6.0.tgz", + "integrity": "sha512-v8UO5UsyLocZnu/LbfQA7Dn2QHuZKurJY93VUmZYP//QRWoCWOsionmvLLAlibkET3pGPs7++03VhJKbWD7vhQ==", + "license": "MIT", + "dependencies": { + "embla-carousel": "8.6.0", + "embla-carousel-reactive-utils": "8.6.0" + }, + "peerDependencies": { + "vue": "^3.2.37" + } + }, + "node_modules/embla-carousel-wheel-gestures": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/embla-carousel-wheel-gestures/-/embla-carousel-wheel-gestures-8.1.0.tgz", + "integrity": "sha512-J68jkYrxbWDmXOm2n2YHl+uMEXzkGSKjWmjaEgL9xVvPb3HqVmg6rJSKfI3sqIDVvm7mkeTy87wtG/5263XqHQ==", + "license": "MIT", + "dependencies": { + "wheel-gestures": "^2.2.5" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "embla-carousel": "^8.0.0 || ~8.0.0-rc03" + } + }, + "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/enhanced-resolve": { + "version": "5.21.6", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.6.tgz", + "integrity": "sha512-aNnGCvbJ/RIyWo1IuhNdVjnNF+EjH9wpzpNHt+ci/m9He9LJvUN8wrCcXjp9cWsGNAuvSpVFTx/vraAFQ8qGjQ==", + "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.2.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.2.0.tgz", + "integrity": "sha512-3lGxdTXCLfe1MYfTz1y2ksAAUM4NAOP6rPEjxGJVKO7TZ5+tvHCaQWGpC4Y3IXvW3ece0Cz1cIP4FWBxOnGCTQ==", + "license": "MIT" + }, + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "hasInstallScript": true, + "license": "ISC", + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "license": "ISC", + "dependencies": { + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/esbuild": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", + "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.28.1", + "@esbuild/android-arm": "0.28.1", + "@esbuild/android-arm64": "0.28.1", + "@esbuild/android-x64": "0.28.1", + "@esbuild/darwin-arm64": "0.28.1", + "@esbuild/darwin-x64": "0.28.1", + "@esbuild/freebsd-arm64": "0.28.1", + "@esbuild/freebsd-x64": "0.28.1", + "@esbuild/linux-arm": "0.28.1", + "@esbuild/linux-arm64": "0.28.1", + "@esbuild/linux-ia32": "0.28.1", + "@esbuild/linux-loong64": "0.28.1", + "@esbuild/linux-mips64el": "0.28.1", + "@esbuild/linux-ppc64": "0.28.1", + "@esbuild/linux-riscv64": "0.28.1", + "@esbuild/linux-s390x": "0.28.1", + "@esbuild/linux-x64": "0.28.1", + "@esbuild/netbsd-arm64": "0.28.1", + "@esbuild/netbsd-x64": "0.28.1", + "@esbuild/openbsd-arm64": "0.28.1", + "@esbuild/openbsd-x64": "0.28.1", + "@esbuild/openharmony-arm64": "0.28.1", + "@esbuild/sunos-x64": "0.28.1", + "@esbuild/win32-arm64": "0.28.1", + "@esbuild/win32-ia32": "0.28.1", + "@esbuild/win32-x64": "0.28.1" + } + }, + "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/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "license": "ISC", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "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/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-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "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/exsolve": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.1.0.tgz", + "integrity": "sha512-D+42+T12DdIlJM3uepa55qGiL3sYdLBOxIl2ifQCzCHz4c7eiolaHsi3BIqEr7JxBzxv2pYZQX9kw16ziMcEmw==", + "license": "MIT" + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "license": "ISC", + "dependencies": { + "type": "^2.7.2" + } + }, + "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-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "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.1", + "resolved": "https://registry.npmjs.org/fast-npm-meta/-/fast-npm-meta-1.5.1.tgz", + "integrity": "sha512-tWhw7z4jFuQgZB9tbQyUh5BY9nNd/wimM+fBLfmmJjakkJDNvbJKm0nQ5ruPKC0us1HGg7L6iBk1fxpSzcgSaA==", + "license": "MIT", + "bin": { + "fast-npm-meta": "dist/cli.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/fast-string-truncated-width": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", + "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==", + "license": "MIT" + }, + "node_modules/fast-string-width": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz", + "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==", + "license": "MIT", + "dependencies": { + "fast-string-truncated-width": "^3.0.2" + } + }, + "node_modules/fast-wrap-ansi": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.2.tgz", + "integrity": "sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==", + "license": "MIT", + "dependencies": { + "fast-string-width": "^3.0.2" + } + }, + "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/fontaine": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/fontaine/-/fontaine-0.6.0.tgz", + "integrity": "sha512-cfKqzB62GmztJhwJ0YXtzNsmpqKAcFzTqsakJ//5COTzbou90LU7So18U+4D8z+lDXr4uztaAUZBonSoPDcj1w==", + "license": "MIT", + "dependencies": { + "@capsizecss/metrics": "^3.5.0", + "@capsizecss/unpack": "^2.4.0", + "css-tree": "^3.1.0", + "magic-regexp": "^0.10.0", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "ufo": "^1.6.1", + "unplugin": "^2.3.2" + } + }, + "node_modules/fontkit": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-2.0.4.tgz", + "integrity": "sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==", + "license": "MIT", + "dependencies": { + "@swc/helpers": "^0.5.12", + "brotli": "^1.3.2", + "clone": "^2.1.2", + "dfa": "^1.2.0", + "fast-deep-equal": "^3.1.3", + "restructure": "^3.0.0", + "tiny-inflate": "^1.0.3", + "unicode-properties": "^1.4.0", + "unicode-trie": "^2.0.0" + } + }, + "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/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "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.4.2", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.4.2.tgz", + "integrity": "sha512-LVbzjD4WA6UP5B1UnP8wuaXJiLnqMdM/E4fiJXTJ5haJ5b/MBNsK29h2fm6swEoQaVQjvYFWKLE2RanyZIoRVQ==", + "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.6.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz", + "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==", + "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/giget": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/giget/-/giget-3.3.0.tgz", + "integrity": "sha512-gzi2D96p+AMfDcmJHGDj3KJ9NRiwvlFAU5yfa3ROwWZmFUjX4P43x3BcyRaOMMLto1vUo7C+86+MFhYTl6Ryiw==", + "license": "MIT", + "bin": { + "giget": "dist/cli.mjs" + } + }, + "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/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "license": "MIT", + "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/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "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.4", + "resolved": "https://registry.npmjs.org/httpxy/-/httpxy-0.5.4.tgz", + "integrity": "sha512-URfeibL0kTH6VuIxxaJDXWQWEk8fKr+9L8MGv6CuAiNy0fGnoVhWbXBvJR1mkdsvCDUxvhX9cW60k2AhtH5s6w==", + "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/impound/node_modules/unplugin": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-3.3.0.tgz", + "integrity": "sha512-qa66K+crbfyE6JK10GjvbJeRrOsuC/JpbnHctfyp/i4oBTxWOzJfRZyDiOk1PtErMFRu8JhsU/wPvOdBNWe5Rg==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "picomatch": "^4.0.4", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "@farmfe/core": "*", + "@rspack/core": "*", + "bun-types-no-globals": "*", + "esbuild": "*", + "rolldown": "*", + "rollup": "*", + "unloader": "*", + "vite": "*", + "webpack": "*" + }, + "peerDependenciesMeta": { + "@farmfe/core": { + "optional": true + }, + "@rspack/core": { + "optional": true + }, + "bun-types-no-globals": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "rolldown": { + "optional": true + }, + "rollup": { + "optional": true + }, + "unloader": { + "optional": true + }, + "vite": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "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.11.1", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.11.1.tgz", + "integrity": "sha512-ehuGcf94bQXhfagULNXrJdfnWO38v070jxSx/qE87Kjzmu2fU7ro5EFAb+OPituLqgfyuQaym5DlrNydW2sJ9A==", + "license": "MIT", + "dependencies": { + "@ioredis/commands": "1.10.0", + "cluster-key-slot": "1.1.1", + "debug": "4.4.3", + "denque": "2.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.2", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", + "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.3" + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "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.7.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", + "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", + "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/kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", + "license": "MIT" + }, + "node_modules/launch-editor": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.14.1.tgz", + "integrity": "sha512-QWBrQsMpH7gPr965dsKD/3cKWiNoTjpATQf++Xq63N6sKRGMwlVXz41O1IZTMfZQgBctD/K5Zt06+/I6pP6+HA==", + "license": "MIT", + "dependencies": { + "picocolors": "^1.1.1", + "shell-quote": "^1.8.4" + } + }, + "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==", + "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" + ], + "libc": [ + "glibc" + ], + "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" + ], + "libc": [ + "musl" + ], + "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" + ], + "libc": [ + "glibc" + ], + "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" + ], + "libc": [ + "musl" + ], + "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.10.0", + "resolved": "https://registry.npmjs.org/listhen/-/listhen-1.10.0.tgz", + "integrity": "sha512-kfz4C0OrC6IpaVMtYDJtf6PFjurxe9NBBoDAh/o2p587INryFOO4DQ9OetbCdDrWFt1m1CJKvYrzkGsuPHw8nQ==", + "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.7", + "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.1.0", + "tinyclip": "^0.1.12", + "ufo": "^1.6.4", + "untun": "^0.1.3", + "uqr": "^0.1.3" + }, + "bin": { + "listen": "bin/listhen.mjs", + "listhen": "bin/listhen.mjs" + } + }, + "node_modules/listhen/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/local-pkg": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.2.1.tgz", + "integrity": "sha512-++gUqRDEvcnN6Zhqrr+y/CkVEHhlrR96vZn3nZZPYzMcBUyBtTKzB9NadClFIsIVSsu+3i9tfk/erqy9kAmt7Q==", + "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.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-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.3", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.3.tgz", + "integrity": "sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.3", + "@babel/types": "^7.29.0", + "source-map-js": "^1.2.1" + } + }, + "node_modules/marked": { + "version": "15.0.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz", + "integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, + "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/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/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/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/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/nanoid": { + "version": "5.1.16", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.16.tgz", + "integrity": "sha512-kVrnsrJqMR8+oLJnGEmSWw9BivK5mt7H3FZatVRjrc5wGqFYuBxX1yG7+A7Gi5AefkX6t/oCkizcQgpu0cY1dQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" + } + }, + "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/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "license": "ISC" + }, + "node_modules/nitropack": { + "version": "2.13.4", + "resolved": "https://registry.npmjs.org/nitropack/-/nitropack-2.13.4.tgz", + "integrity": "sha512-tX7bT6zxNeMwkc6hxHiZeUoTOjVrcjoh1Z3cmxOlodIqjl4HISgqfGOmkWSayky3Nv9Z5+KQH52F8nmXJY5AAA==", + "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.7", + "destr": "^2.0.5", + "dot-prop": "^10.1.0", + "esbuild": "^0.28.0", + "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.11", + "hookable": "^5.5.3", + "httpxy": "^0.5.1", + "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.1", + "pretty-bytes": "^7.1.0", + "radix3": "^1.1.2", + "rollup": "^4.60.2", + "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.1.0", + "ufo": "^1.6.4", + "ultrahtml": "^1.6.0", + "uncrypto": "^0.1.3", + "unctx": "^2.5.0", + "unenv": "2.0.0-rc.24", + "unimport": "^6.2.0", + "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/nitropack/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/nitropack/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/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-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.50", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.50.tgz", + "integrity": "sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "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.8", + "resolved": "https://registry.npmjs.org/nuxt/-/nuxt-3.21.8.tgz", + "integrity": "sha512-RRB/MpZhdEhb/A21qaUaSI1UYDOy9bgK0vZvRRjDsA8HGY+eFBr2EvUkdeYQHOT8WKuByxWlg5ckz3H4A+QQ1w==", + "license": "MIT", + "dependencies": { + "@dxup/nuxt": "^0.4.1", + "@nuxt/cli": "^3.35.2", + "@nuxt/devtools": "^3.2.4", + "@nuxt/kit": "3.21.8", + "@nuxt/nitro-server": "3.21.8", + "@nuxt/schema": "3.21.8", + "@nuxt/telemetry": "^2.8.0", + "@nuxt/vite-builder": "3.21.8", + "@unhead/vue": "^2.1.15", + "@vue/shared": "^3.5.34", + "c12": "^3.3.4", + "chokidar": "^5.0.0", + "compatx": "^0.2.0", + "consola": "^3.4.2", + "cookie-es": "^2.0.1", + "defu": "^6.1.7", + "destr": "^2.0.5", + "devalue": "^5.8.1", + "errx": "^0.1.0", + "escape-string-regexp": "^5.0.0", + "exsolve": "^1.0.8", + "h3": "^1.15.11", + "hookable": "^5.5.3", + "ignore": "^7.0.5", + "impound": "^1.1.5", + "jiti": "^2.7.0", + "klona": "^2.0.6", + "knitwork": "^1.3.0", + "magic-string": "^0.30.21", + "mlly": "^1.8.2", + "nanotar": "^0.3.0", + "nypm": "^0.6.6", + "ofetch": "^1.5.1", + "ohash": "^2.0.11", + "on-change": "^6.0.2", + "oxc-minify": "^0.132.0", + "oxc-parser": "^0.132.0", + "oxc-transform": "^0.132.0", + "oxc-walker": "^1.0.0", + "pathe": "^2.0.3", + "perfect-debounce": "^2.1.0", + "pkg-types": "^2.3.1", + "rou3": "^0.8.1", + "scule": "^1.3.0", + "semver": "^7.8.0", + "std-env": "^4.1.0", + "tinyglobby": "^0.2.16", + "ufo": "^1.6.4", + "ultrahtml": "^1.6.0", + "uncrypto": "^0.1.3", + "unctx": "^2.5.0", + "unimport": "^6.3.0", + "unplugin": "^3.0.0", + "unplugin-vue-router": "^0.19.2", + "untyped": "^2.0.0", + "vue": "^3.5.34", + "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/kit": { + "version": "3.21.8", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.21.8.tgz", + "integrity": "sha512-kg63DUPY5AHPn+9XM7u8rYcdWHXjzwfUscgRDuiC5YUciQ+xdLRhdwXelYFxEAx2nxJHossliiQXbMm/Fleivw==", + "license": "MIT", + "dependencies": { + "c12": "^3.3.4", + "consola": "^3.4.2", + "defu": "^6.1.7", + "destr": "^2.0.5", + "errx": "^0.1.0", + "exsolve": "^1.0.8", + "ignore": "^7.0.5", + "jiti": "^2.7.0", + "klona": "^2.0.6", + "knitwork": "^1.3.0", + "mlly": "^1.8.2", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "pkg-types": "^2.3.1", + "rc9": "^3.0.1", + "scule": "^1.3.0", + "semver": "^7.8.0", + "tinyglobby": "^0.2.16", + "ufo": "^1.6.4", + "unctx": "^2.5.0", + "untyped": "^2.0.0" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/nuxt/node_modules/@nuxt/schema": { + "version": "3.21.8", + "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-3.21.8.tgz", + "integrity": "sha512-BMxtf2x0E9sFji4Txz1boeMiwkhjQQFixdB6+lZXvCGpExZou4TLz82LDcIAZkpJVL0IEcfs96hTLVVBkjGulQ==", + "license": "MIT", + "dependencies": { + "@vue/shared": "^3.5.34", + "defu": "^6.1.7", + "pathe": "^2.0.3", + "pkg-types": "^2.3.1", + "std-env": "^4.1.0" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/nuxt/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/nuxt/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/nuxt/node_modules/unplugin": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-3.3.0.tgz", + "integrity": "sha512-qa66K+crbfyE6JK10GjvbJeRrOsuC/JpbnHctfyp/i4oBTxWOzJfRZyDiOk1PtErMFRu8JhsU/wPvOdBNWe5Rg==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "picomatch": "^4.0.4", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "@farmfe/core": "*", + "@rspack/core": "*", + "bun-types-no-globals": "*", + "esbuild": "*", + "rolldown": "*", + "rollup": "*", + "unloader": "*", + "vite": "*", + "webpack": "*" + }, + "peerDependenciesMeta": { + "@farmfe/core": { + "optional": true + }, + "@rspack/core": { + "optional": true + }, + "bun-types-no-globals": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "rolldown": { + "optional": true + }, + "rollup": { + "optional": true + }, + "unloader": { + "optional": true + }, + "vite": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/nypm": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.8.tgz", + "integrity": "sha512-Q9K4Diu6l5u6xJQogeFSs/zKtyMSgFKFtRQV+tHP4kL7KPm2grpBU0dFIwFaXwNxN0MtfKWc43VpCugAa+LPsw==", + "license": "MIT", + "dependencies": { + "citty": "^0.2.2", + "pathe": "^2.0.3", + "tinyexec": "^1.2.4" + }, + "bin": { + "nypm": "dist/cli.mjs" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/obug": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.3.tgz", + "integrity": "sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==", + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT", + "engines": { + "node": ">=12.20.0" + } + }, + "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/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.132.0", + "resolved": "https://registry.npmjs.org/oxc-minify/-/oxc-minify-0.132.0.tgz", + "integrity": "sha512-7h3fOlgDwkIYxxKfGwCNejaLhH90Pvx+fttdPN7nRbWHxm6QSYcxW3IKjfxQVUeg+z1X2HZdOSY3rHkVqgxH1g==", + "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.132.0", + "@oxc-minify/binding-android-arm64": "0.132.0", + "@oxc-minify/binding-darwin-arm64": "0.132.0", + "@oxc-minify/binding-darwin-x64": "0.132.0", + "@oxc-minify/binding-freebsd-x64": "0.132.0", + "@oxc-minify/binding-linux-arm-gnueabihf": "0.132.0", + "@oxc-minify/binding-linux-arm-musleabihf": "0.132.0", + "@oxc-minify/binding-linux-arm64-gnu": "0.132.0", + "@oxc-minify/binding-linux-arm64-musl": "0.132.0", + "@oxc-minify/binding-linux-ppc64-gnu": "0.132.0", + "@oxc-minify/binding-linux-riscv64-gnu": "0.132.0", + "@oxc-minify/binding-linux-riscv64-musl": "0.132.0", + "@oxc-minify/binding-linux-s390x-gnu": "0.132.0", + "@oxc-minify/binding-linux-x64-gnu": "0.132.0", + "@oxc-minify/binding-linux-x64-musl": "0.132.0", + "@oxc-minify/binding-openharmony-arm64": "0.132.0", + "@oxc-minify/binding-wasm32-wasi": "0.132.0", + "@oxc-minify/binding-win32-arm64-msvc": "0.132.0", + "@oxc-minify/binding-win32-ia32-msvc": "0.132.0", + "@oxc-minify/binding-win32-x64-msvc": "0.132.0" + } + }, + "node_modules/oxc-parser": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/oxc-parser/-/oxc-parser-0.132.0.tgz", + "integrity": "sha512-+0LAPHaqtfQlvWdpaAa09SmOaZZgP8C552xosEkGJ4+ruEwP1Vgx+sqBgcBCNfR6KDCmagGOZTde8wmAvcI/Hg==", + "license": "MIT", + "dependencies": { + "@oxc-project/types": "^0.132.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/sponsors/Boshen" + }, + "optionalDependencies": { + "@oxc-parser/binding-android-arm-eabi": "0.132.0", + "@oxc-parser/binding-android-arm64": "0.132.0", + "@oxc-parser/binding-darwin-arm64": "0.132.0", + "@oxc-parser/binding-darwin-x64": "0.132.0", + "@oxc-parser/binding-freebsd-x64": "0.132.0", + "@oxc-parser/binding-linux-arm-gnueabihf": "0.132.0", + "@oxc-parser/binding-linux-arm-musleabihf": "0.132.0", + "@oxc-parser/binding-linux-arm64-gnu": "0.132.0", + "@oxc-parser/binding-linux-arm64-musl": "0.132.0", + "@oxc-parser/binding-linux-ppc64-gnu": "0.132.0", + "@oxc-parser/binding-linux-riscv64-gnu": "0.132.0", + "@oxc-parser/binding-linux-riscv64-musl": "0.132.0", + "@oxc-parser/binding-linux-s390x-gnu": "0.132.0", + "@oxc-parser/binding-linux-x64-gnu": "0.132.0", + "@oxc-parser/binding-linux-x64-musl": "0.132.0", + "@oxc-parser/binding-openharmony-arm64": "0.132.0", + "@oxc-parser/binding-wasm32-wasi": "0.132.0", + "@oxc-parser/binding-win32-arm64-msvc": "0.132.0", + "@oxc-parser/binding-win32-ia32-msvc": "0.132.0", + "@oxc-parser/binding-win32-x64-msvc": "0.132.0" + } + }, + "node_modules/oxc-transform": { + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/oxc-transform/-/oxc-transform-0.132.0.tgz", + "integrity": "sha512-DmP0+4kzpXoMvv08qPCD4aI6mAIzrEq15Yt9e6wXCNtOz6jEDHPpueusDa2/pvjRAqtNV37YxUUeX7cfCI4dpA==", + "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.132.0", + "@oxc-transform/binding-android-arm64": "0.132.0", + "@oxc-transform/binding-darwin-arm64": "0.132.0", + "@oxc-transform/binding-darwin-x64": "0.132.0", + "@oxc-transform/binding-freebsd-x64": "0.132.0", + "@oxc-transform/binding-linux-arm-gnueabihf": "0.132.0", + "@oxc-transform/binding-linux-arm-musleabihf": "0.132.0", + "@oxc-transform/binding-linux-arm64-gnu": "0.132.0", + "@oxc-transform/binding-linux-arm64-musl": "0.132.0", + "@oxc-transform/binding-linux-ppc64-gnu": "0.132.0", + "@oxc-transform/binding-linux-riscv64-gnu": "0.132.0", + "@oxc-transform/binding-linux-riscv64-musl": "0.132.0", + "@oxc-transform/binding-linux-s390x-gnu": "0.132.0", + "@oxc-transform/binding-linux-x64-gnu": "0.132.0", + "@oxc-transform/binding-linux-x64-musl": "0.132.0", + "@oxc-transform/binding-openharmony-arm64": "0.132.0", + "@oxc-transform/binding-wasm32-wasi": "0.132.0", + "@oxc-transform/binding-win32-arm64-msvc": "0.132.0", + "@oxc-transform/binding-win32-ia32-msvc": "0.132.0", + "@oxc-transform/binding-win32-x64-msvc": "0.132.0" + } + }, + "node_modules/oxc-walker": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/oxc-walker/-/oxc-walker-1.0.0.tgz", + "integrity": "sha512-eMsHflAGfOskpWxtp9xP/f5b96XLEU8ifTd2gOOCkdux9HMxKGy5S1ru0Gh1B3aPu+YbfmWUUVkcb7MrZz3XyQ==", + "license": "MIT", + "dependencies": { + "magic-regexp": "^0.11.0" + }, + "peerDependencies": { + "oxc-parser": ">=0.98.0", + "rolldown": ">=1.0.0" + }, + "peerDependenciesMeta": { + "oxc-parser": { + "optional": true + }, + "rolldown": { + "optional": true + } + } + }, + "node_modules/oxc-walker/node_modules/magic-regexp": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/magic-regexp/-/magic-regexp-0.11.0.tgz", + "integrity": "sha512-LG77Z/gVnwz7oaDpD4heX6ryl+lcr4l1B2gnP4MMvt2pGhGC1Dfj7dl1pXpP4ih+VQFLuAadeKVa+lARAzfW+Q==", + "license": "MIT", + "dependencies": { + "magic-string": "^0.30.21", + "regexp-tree": "^0.1.27", + "type-level-regexp": "~0.1.17", + "unplugin": "^3.0.0" + } + }, + "node_modules/oxc-walker/node_modules/unplugin": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-3.3.0.tgz", + "integrity": "sha512-qa66K+crbfyE6JK10GjvbJeRrOsuC/JpbnHctfyp/i4oBTxWOzJfRZyDiOk1PtErMFRu8JhsU/wPvOdBNWe5Rg==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "picomatch": "^4.0.4", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "@farmfe/core": "*", + "@rspack/core": "*", + "bun-types-no-globals": "*", + "esbuild": "*", + "rolldown": "*", + "rollup": "*", + "unloader": "*", + "vite": "*", + "webpack": "*" + }, + "peerDependenciesMeta": { + "@farmfe/core": { + "optional": true + }, + "@rspack/core": { + "optional": true + }, + "bun-types-no-globals": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "rolldown": { + "optional": true + }, + "rollup": { + "optional": true + }, + "unloader": { + "optional": true + }, + "vite": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "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/package-manager-detector": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.7.0.tgz", + "integrity": "sha512-xg1eHpwYL/D/HEdWw2goFZP6vV0FH7W+PZ5rFkGjdIDLtxq7EkzBUeT3m+lndYCt8wKbmofUu1MUdMCXkCk9ZQ==", + "license": "MIT" + }, + "node_modules/pagedjs": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/pagedjs/-/pagedjs-0.4.3.tgz", + "integrity": "sha512-YtAN9JAjsQw1142gxEjEAwXvOF5nYQuDwnQ67RW2HZDkMLI+b4RsBE37lULZa9gAr6kDAOGBOhXI4wGMoY3raw==", + "license": "MIT", + "dependencies": { + "@babel/polyfill": "^7.10.1", + "@babel/runtime": "^7.21.0", + "clear-cut": "^2.0.2", + "css-tree": "^1.1.3", + "event-emitter": "^0.3.5" + } + }, + "node_modules/pagedjs/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/pagedjs/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "license": "CC0-1.0" + }, + "node_modules/pagedjs/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/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "license": "MIT" + }, + "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.5.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz", + "integrity": "sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==", + "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/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.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.1.tgz", + "integrity": "sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==", + "license": "MIT", + "dependencies": { + "confbox": "^0.2.4", + "exsolve": "^1.0.8", + "pathe": "^2.0.3" + } + }, + "node_modules/playwright": { + "version": "1.61.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.61.1.tgz", + "integrity": "sha512-DWnY5o3YbLWK4GovuAVwpqL+1VwGNdUGrRr++8j8PtQQzvAVZUIMjKQ90fY689sEJZJBbZVw1rXaOKSTitkzPQ==", + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.61.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.61.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.61.1.tgz", + "integrity": "sha512-h7Qlt6m4REp25qvIdvbDtVmD4LqVXfpRxhORv9L0jzETM05p4fuPJ3dKyuSXQxDSbXnmS79HAgi9589lGSpLkg==", + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/postcss": { + "version": "8.5.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.16.tgz", + "integrity": "sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==", + "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.12", + "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.10", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.10.tgz", + "integrity": "sha512-yFr6JezOolHLta/buLE71VKPh2mXursp4saVe98/ol8ZnEWhL+racShqPKlvd/DKWLre/39B6HhcMXf7RZ3hxg==", + "license": "MIT", + "dependencies": { + "@colordx/core": "^5.4.3", + "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.13" + } + }, + "node_modules/postcss-convert-values": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.12.tgz", + "integrity": "sha512-xurKu5qqk4viR3Cp3p4xBR4KfnZm4w4ys6+UBwBmeuBSNkH7+DtLnYOYnOffgtE4yx8sH9S1VZ6RAAvROXzP2Q==", + "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.13" + } + }, + "node_modules/postcss-discard-comments": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.8.tgz", + "integrity": "sha512-CvvS5S9WrXblFXCEJ9nVo+4z+eA7zSC7Z88V1HEJuwlQhlFnYTIjg1xJY+BCUiG2bvICap2tXii4mP22BD108Q==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.1.1" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.13" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.4.tgz", + "integrity": "sha512-VBNn1+EuMZkeGVVtz0gRfbNGtx9IFgAsAV+E2pHtXPrp4qfGBkhTIiAuE/wrb+Y6Pakg9NewAlfTpYIFAWODtw==", + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.13" + } + }, + "node_modules/postcss-discard-empty": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.3.tgz", + "integrity": "sha512-M2pyjQCU+/7cMHVtL6bKTHjv0lZnPLMpicgr67Dlth7AbuV9gjVTtUqaRwn6Pp6BwSDspUzhz8SaUrRykJU5Dw==", + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.13" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-7.0.3.tgz", + "integrity": "sha512-aNovXo9UsZuRNLzHJtp13lHIvinDPfiXBPePpXkSjCbgp++iU2FqE+YxvjIsg6EdyPZsASFbfu+JcBFVsErXIQ==", + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.13" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.7.tgz", + "integrity": "sha512-b3mfYUxR388u5Pt0HPcVIUtUDn/k15UfTY9M+ORW+meCR6JLNxoZffiYvXyOYQoRYQNZyX/UFkMCM/mNHxe1qA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^7.0.11" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.13" + } + }, + "node_modules/postcss-merge-rules": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.11.tgz", + "integrity": "sha512-SJUPM18g2BmPhf8BVlbwqWz4aK3pLu6u6xjfwEzra7xL6IBR10sUaiB++EzqcVfadPHrKBSMlNdP+XieykhI+Q==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.2", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^5.0.3", + "postcss-selector-parser": "^7.1.1" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.13" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-7.0.3.tgz", + "integrity": "sha512-yilG/VOaNI74IylQvAQQxm3/wZVBkXyYUqNUAdxqwtbWUXPsbK1q8Ms0mL83v+f8YicgcyfYCRZtWACUdYajpA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.13" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-7.0.5.tgz", + "integrity": "sha512-YraROyQRg3BI1+Hg8E05B/JPdnTm8EDSVu4P2BxdM+CRiOyfmou809+chGIqo6fQqwjPGQ947nbGncSjmTU1WQ==", + "license": "MIT", + "dependencies": { + "@colordx/core": "^5.4.3", + "cssnano-utils": "^5.0.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.13" + } + }, + "node_modules/postcss-minify-params": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.9.tgz", + "integrity": "sha512-R8itbB8BhlpoYyBm1ou0dD+vJnQ3F6adQipR4UnkCHUwlo+S9WXJaDRg1RHjC8YVAtIdrQzSWvJl40HnGDTKjA==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.2", + "cssnano-utils": "^5.0.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.13" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.1.2.tgz", + "integrity": "sha512-aQtrEWKwqafNlExcKHQvPGsXR2+vlUqqJtf5XsCQcgsSb5PL4wlujWBYDJuWsP4UnQX1YHDHU8qRlD+1PzTQ+Q==", + "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.13" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-7.0.3.tgz", + "integrity": "sha512-NoBfZu8PR4c2NlmjvrqQTzCzLY79hwcSRgNQ3ZiNK0ABzf9kYKloE/jNj+/8GQY1wsm8pRRgANk6ydLH8cwo0Q==", + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.13" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.3.tgz", + "integrity": "sha512-ldsCX0QIt05pKIOobZtVQ48wXJecr+czw4+e1/YjVhLMqslShgpVxgPtI2CefURR8oyVoYaU/l829MMwExDMLw==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.13" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-7.0.4.tgz", + "integrity": "sha512-VEvlpeGd3Ju1Hqa/oN4jaP3+ms4laYwkEL9N9u+B6k54PZjXbW1n6wI+aVprf1BQXlCYpS5+1pl/7/vHiKgARg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.13" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.4.tgz", + "integrity": "sha512-6mPKlY/8cSaDHxX502wERADarJsccwlky6yIrOapHH2ZgfoKAV94SbiTKfKEs4EEpdazuc3J72WsqeYk7hp9+Q==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.13" + } + }, + "node_modules/postcss-normalize-string": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-7.0.3.tgz", + "integrity": "sha512-HnEQPUchi1eznmDKEYrKUTqrprEq97SrpUYClgUkv7V2zRODD9DFoUsYU+m9ZOetmD5ku7fEMZB/lwy8IT6xVQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.13" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.3.tgz", + "integrity": "sha512-zmEzHdvpZBZu0OKlbJSfgASQvaayyAoVuWtvyr34IJ/LyS+DaOKvvR3EvFJ9RWWtNIx+CMvO125OVophaxNYew==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.13" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.9.tgz", + "integrity": "sha512-DRAdWfeh/TjmhLJsw91vdiWCnUod9iwvM7xyS02/nF/sLsCR3A8l3pztrSUrWG8DSBqfX7yEk9FM0USaVJ2mSg==", + "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.13" + } + }, + "node_modules/postcss-normalize-url": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-7.0.3.tgz", + "integrity": "sha512-CL93wmloq5qsffmFv+bw24MIRbmhHrp53qoh1LDAb/5TtjWEXI/np4xcP/Gw9oWCb2XyWnqHYLDUwiKRoJBA1Q==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.13" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.3.tgz", + "integrity": "sha512-FdHjjn+Ht5Z2ZRjNOmeCbNq6lq09sUYKpmlF/Aq0XjVNSLTL6fmHlA/3swN2wP2caY9GV/tjSDcIIyS7aN7W0A==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.13" + } + }, + "node_modules/postcss-ordered-values": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-7.0.4.tgz", + "integrity": "sha512-nubSi49hDHQk4E8KIj+IbLY8Bg+8OcSUEhgyolgM+atnOvXjV7EjaR6bac4YGZoFyPa9mWoAF3EaYbWdFkKqVg==", + "license": "MIT", + "dependencies": { + "cssnano-utils": "^5.0.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.13" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.9.tgz", + "integrity": "sha512-ztTNPdIxXTxtBcG03E9u8v44M4ElXbMIRT7pf2onlquGula0Y83nKKxqM22FA/hMgkfCjN7ohevkVlaNwI8iOQ==", + "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.13" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.3.tgz", + "integrity": "sha512-FXsnN9ZwcZTT8Yf8cAHA8qIGUXcX6WfLd9JoYhrdDfmvsVhhfqkkv7m4AC3rwFOfz+GzkUa87OCKF9dUcicd+g==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.13" + } + }, + "node_modules/postcss-selector-parser": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz", + "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-7.1.3.tgz", + "integrity": "sha512-2QfoFOYMcj8lwcVEf9WeTlkVIAm7u2QvOEhMzkQU3KUhhGX/l8hVV9EtjMv4iq3E9iI3OeeMN0YoMLbGusuigw==", + "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.13" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.7.tgz", + "integrity": "sha512-d+sCkaRnSefghOUdH8CMJZV9yUQhj2ojpe8Nw/lA+LV1UOfeleGkLTl6XdCFFSai9UJ+DJPb69FFuqthXYsY8w==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.1.1" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.5.13" + } + }, + "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/postcss/node_modules/nanoid": { + "version": "3.3.15", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.15.tgz", + "integrity": "sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==", + "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/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/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/proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, + "node_modules/proper-lockfile/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "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.3.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.3.0.tgz", + "integrity": "sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "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.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", + "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", + "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/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "license": "MIT" + }, + "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/reka-ui": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/reka-ui/-/reka-ui-2.6.0.tgz", + "integrity": "sha512-NrGMKrABD97l890mFS3TNUzB0BLUfbL3hh0NjcJRIUSUljb288bx3Mzo31nOyUcdiiW0HqFGXJwyCBh9cWgb0w==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.6.13", + "@floating-ui/vue": "^1.1.6", + "@internationalized/date": "^3.5.0", + "@internationalized/number": "^3.5.0", + "@tanstack/vue-virtual": "^3.12.0", + "@vueuse/core": "^12.5.0", + "@vueuse/shared": "^12.5.0", + "aria-hidden": "^1.2.4", + "defu": "^6.1.4", + "ohash": "^2.0.11" + }, + "peerDependencies": { + "vue": ">= 3.2.0" + } + }, + "node_modules/reka-ui/node_modules/@vueuse/core": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-12.8.2.tgz", + "integrity": "sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==", + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.21", + "@vueuse/metadata": "12.8.2", + "@vueuse/shared": "12.8.2", + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/reka-ui/node_modules/@vueuse/metadata": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-12.8.2.tgz", + "integrity": "sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/reka-ui/node_modules/@vueuse/shared": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-12.8.2.tgz", + "integrity": "sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==", + "license": "MIT", + "dependencies": { + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "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/restructure": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.2.tgz", + "integrity": "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==", + "license": "MIT" + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "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/rolldown": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.4.tgz", + "integrity": "sha512-IjZYiLxZwpnhwhdBH2ugdTGVSdhCQUmLxLoqyjiL0JxYjyRst+5a0P3xfrTxJ5F638j4Mvvw5FAX5XE6eHpXbA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@oxc-project/types": "=0.138.0", + "@rolldown/pluginutils": "^1.0.0" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.1.4", + "@rolldown/binding-darwin-arm64": "1.1.4", + "@rolldown/binding-darwin-x64": "1.1.4", + "@rolldown/binding-freebsd-x64": "1.1.4", + "@rolldown/binding-linux-arm-gnueabihf": "1.1.4", + "@rolldown/binding-linux-arm64-gnu": "1.1.4", + "@rolldown/binding-linux-arm64-musl": "1.1.4", + "@rolldown/binding-linux-ppc64-gnu": "1.1.4", + "@rolldown/binding-linux-s390x-gnu": "1.1.4", + "@rolldown/binding-linux-x64-gnu": "1.1.4", + "@rolldown/binding-linux-x64-musl": "1.1.4", + "@rolldown/binding-openharmony-arm64": "1.1.4", + "@rolldown/binding-wasm32-wasi": "1.1.4", + "@rolldown/binding-win32-arm64-msvc": "1.1.4", + "@rolldown/binding-win32-x64-msvc": "1.1.4" + } + }, + "node_modules/rolldown/node_modules/@oxc-project/types": { + "version": "0.138.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.138.0.tgz", + "integrity": "sha512-1a7ZKmrRTCoN1XMZ4L0PyyqrMnrNlLyPuOkdSX2MZg7IiIGRUyurNhAm73ptDOraoBcIordsIGKNPKUzy3ZmfA==", + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/rollup": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.62.2.tgz", + "integrity": "sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.9" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.62.2", + "@rollup/rollup-android-arm64": "4.62.2", + "@rollup/rollup-darwin-arm64": "4.62.2", + "@rollup/rollup-darwin-x64": "4.62.2", + "@rollup/rollup-freebsd-arm64": "4.62.2", + "@rollup/rollup-freebsd-x64": "4.62.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.62.2", + "@rollup/rollup-linux-arm-musleabihf": "4.62.2", + "@rollup/rollup-linux-arm64-gnu": "4.62.2", + "@rollup/rollup-linux-arm64-musl": "4.62.2", + "@rollup/rollup-linux-loong64-gnu": "4.62.2", + "@rollup/rollup-linux-loong64-musl": "4.62.2", + "@rollup/rollup-linux-ppc64-gnu": "4.62.2", + "@rollup/rollup-linux-ppc64-musl": "4.62.2", + "@rollup/rollup-linux-riscv64-gnu": "4.62.2", + "@rollup/rollup-linux-riscv64-musl": "4.62.2", + "@rollup/rollup-linux-s390x-gnu": "4.62.2", + "@rollup/rollup-linux-x64-gnu": "4.62.2", + "@rollup/rollup-linux-x64-musl": "4.62.2", + "@rollup/rollup-openbsd-x64": "4.62.2", + "@rollup/rollup-openharmony-arm64": "4.62.2", + "@rollup/rollup-win32-arm64-msvc": "4.62.2", + "@rollup/rollup-win32-ia32-msvc": "4.62.2", + "@rollup/rollup-win32-x64-gnu": "4.62.2", + "@rollup/rollup-win32-x64-msvc": "4.62.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.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "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.7", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.7.tgz", + "integrity": "sha512-YAy8Od6KV+uuwUuU50np8fGB/Aues6Y0nAhA9y/hId74PlKUcme4pXcBD46NWKr1Q4osN/iseZ17YqO1XfmI8g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/seroval": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/seroval/-/seroval-1.5.4.tgz", + "integrity": "sha512-46uFvgrXTVxZcUorgSSRZ4y+ieqLLQRMlG4bnCZKW3qI6BZm7Rg4ntMW4p1mILEEBZWrFlcpp0AyIIlM6jD9iw==", + "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/sharp": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", + "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@img/colour": "^1.0.0", + "detect-libc": "^2.1.2", + "semver": "^7.7.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.5", + "@img/sharp-darwin-x64": "0.34.5", + "@img/sharp-libvips-darwin-arm64": "1.2.4", + "@img/sharp-libvips-darwin-x64": "1.2.4", + "@img/sharp-libvips-linux-arm": "1.2.4", + "@img/sharp-libvips-linux-arm64": "1.2.4", + "@img/sharp-libvips-linux-ppc64": "1.2.4", + "@img/sharp-libvips-linux-riscv64": "1.2.4", + "@img/sharp-libvips-linux-s390x": "1.2.4", + "@img/sharp-libvips-linux-x64": "1.2.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", + "@img/sharp-libvips-linuxmusl-x64": "1.2.4", + "@img/sharp-linux-arm": "0.34.5", + "@img/sharp-linux-arm64": "0.34.5", + "@img/sharp-linux-ppc64": "0.34.5", + "@img/sharp-linux-riscv64": "0.34.5", + "@img/sharp-linux-s390x": "0.34.5", + "@img/sharp-linux-x64": "0.34.5", + "@img/sharp-linuxmusl-arm64": "0.34.5", + "@img/sharp-linuxmusl-x64": "0.34.5", + "@img/sharp-wasm32": "0.34.5", + "@img/sharp-win32-arm64": "0.34.5", + "@img/sharp-win32-ia32": "0.34.5", + "@img/sharp-win32-x64": "0.34.5" + } + }, + "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.9.0", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.9.0.tgz", + "integrity": "sha512-Iov+JwFv/2HcTpcwNMKd8+IWNb8tboQJNQTkAY/LLVK7gGH9jy+LGkVqPxfekHl+yMmiqXszdGWXgkfml7hjqA==", + "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-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.2", + "resolved": "https://registry.npmjs.org/smob/-/smob-1.6.2.tgz", + "integrity": "sha512-RQsvleCbF8cVHEv+xuDGaA4pOizFqJ0GgjtMSRo6oP8pnN7WsigHgVGey6aILRBKv4W2YOMHLqbKdnB6hpB9fw==", + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/sortablejs": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz", + "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==", + "license": "MIT" + }, + "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.18", + "resolved": "https://registry.npmjs.org/srvx/-/srvx-0.11.18.tgz", + "integrity": "sha512-7/EW5sPdC1bU7iq1tgTvCZqUQDkJdsqIVzYqBv7SuBfQQ10oWkKj4KYNOw0H4Ig26bXuUYDA7XTKxB+/HC5SRw==", + "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": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "license": "MIT" + }, + "node_modules/streamx": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.28.0.tgz", + "integrity": "sha512-1Yowhzjf0ivGMrTIkY9hav5TxobO9qIVqUE41fiCGMGgc3CLlf4MY+9AHmZqBWgDTue0fY9zWjYFVyf6Diuobw==", + "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-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.11", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.11.tgz", + "integrity": "sha512-iODNfhXVLqc5LADs+Y6Oh5wJuK5ZcHbVng8aiK3y9pjMQdc5hLrBW0eFU6FtnpNrE6PoEg/MmFTU4waotj5WNg==", + "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.13" + } + }, + "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/tailwind-merge": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.6.0.tgz", + "integrity": "sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwind-variants": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/tailwind-variants/-/tailwind-variants-3.2.2.tgz", + "integrity": "sha512-Mi4kHeMTLvKlM98XPnK+7HoBPmf4gygdFmqQPaDivc3DpYS6aIY6KiG/PgThrGvii5YZJqRsPz0aPyhoFzmZgg==", + "license": "MIT", + "engines": { + "node": ">=16.x", + "pnpm": ">=7.x" + }, + "peerDependencies": { + "tailwind-merge": ">=3.0.0", + "tailwindcss": "*" + }, + "peerDependenciesMeta": { + "tailwind-merge": { + "optional": true + } + } + }, + "node_modules/tailwindcss": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.2.tgz", + "integrity": "sha512-WtctNNSH8A9jlMIqxzuYumOHU5uGZyRv0Q5svQl+oEPy5w84YpBxdb7MdqyiSPQge5jTJ6zFQLq0PFygdccSBA==", + "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.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.19.tgz", + "integrity": "sha512-4LeEWl96twnS2Q7Bz4MGqgazLqO+hJN63GZxXoIqh1T3VweYD997gbU1ItNsQafqqXTXd5WFyFdReLtwvRBNiw==", + "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-stream": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.2.0.tgz", + "integrity": "sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg==", + "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.48.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.48.0.tgz", + "integrity": "sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q==", + "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-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "license": "MIT" + }, + "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.15", + "resolved": "https://registry.npmjs.org/tinyclip/-/tinyclip-0.1.15.tgz", + "integrity": "sha512-uo33abH+Ays0xYaDysoBt494Hb3hsEczMpcC0MwFl773pazORx4fmvKhclhR1wonUbB6vvpRsvVMwnhfqeMc+A==", + "license": "MIT", + "engines": { + "node": "^16.14.0 || >= 17.3.0" + } + }, + "node_modules/tinyexec": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.4.tgz", + "integrity": "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "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" + }, + "node_modules/type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", + "license": "ISC" + }, + "node_modules/type-fest": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.7.0.tgz", + "integrity": "sha512-1URUxUqfHFM1c+zfSPsa3gnkO7Aq21qyH75SIduNYz4SzY964rn1X2vCMQaHSHhktiw+0kPa2iyb6PUpXqB6Vg==", + "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-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/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ufo": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.4.tgz", + "integrity": "sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==", + "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/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.15", + "resolved": "https://registry.npmjs.org/unhead/-/unhead-2.1.15.tgz", + "integrity": "sha512-MCt5T90mCWyr3Z6pUCdM9lVRXoMoVBlL7z7U4CYVIiaDiuzad/UCfLuMqz5MeNmpZUgoBCQnrucJimU7EZR+XA==", + "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/unicode-properties": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", + "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "license": "MIT", + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, + "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/unifont": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/unifont/-/unifont-0.4.1.tgz", + "integrity": "sha512-zKSY9qO8svWYns+FGKjyVdLvpGPwqmsCjeJLN1xndMiqxHWBAhoWDMYMG960MxeV48clBmG+fDP59dHY1VoZvg==", + "license": "MIT", + "dependencies": { + "css-tree": "^3.0.0", + "ohash": "^2.0.0" + } + }, + "node_modules/unimport": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/unimport/-/unimport-6.3.0.tgz", + "integrity": "sha512-M+Dxk5W9WRd+8j56W9tp8lGW/dmMc7g5zj7BWQnEjKQhryBstqsi1V0izb0zHwSkEN8cSYV7K75/bykairV2tA==", + "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.1", + "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" + }, + "peerDependencies": { + "oxc-parser": "*", + "rolldown": "^1.0.0" + }, + "peerDependenciesMeta": { + "oxc-parser": { + "optional": true + }, + "rolldown": { + "optional": true + } + } + }, + "node_modules/unimport/node_modules/unplugin": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-3.3.0.tgz", + "integrity": "sha512-qa66K+crbfyE6JK10GjvbJeRrOsuC/JpbnHctfyp/i4oBTxWOzJfRZyDiOk1PtErMFRu8JhsU/wPvOdBNWe5Rg==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "picomatch": "^4.0.4", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "@farmfe/core": "*", + "@rspack/core": "*", + "bun-types-no-globals": "*", + "esbuild": "*", + "rolldown": "*", + "rollup": "*", + "unloader": "*", + "vite": "*", + "webpack": "*" + }, + "peerDependenciesMeta": { + "@farmfe/core": { + "optional": true + }, + "@rspack/core": { + "optional": true + }, + "bun-types-no-globals": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "rolldown": { + "optional": true + }, + "rollup": { + "optional": true + }, + "unloader": { + "optional": true + }, + "vite": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "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/unplugin-auto-import": { + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/unplugin-auto-import/-/unplugin-auto-import-20.3.0.tgz", + "integrity": "sha512-RcSEQiVv7g0mLMMXibYVKk8mpteKxvyffGuDKqZZiFr7Oq3PB1HwgHdK5O7H4AzbhzHoVKG0NnMnsk/1HIVYzQ==", + "license": "MIT", + "dependencies": { + "local-pkg": "^1.1.2", + "magic-string": "^0.30.21", + "picomatch": "^4.0.3", + "unimport": "^5.5.0", + "unplugin": "^2.3.11", + "unplugin-utils": "^0.3.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@nuxt/kit": "^4.0.0", + "@vueuse/core": "*" + }, + "peerDependenciesMeta": { + "@nuxt/kit": { + "optional": true + }, + "@vueuse/core": { + "optional": true + } + } + }, + "node_modules/unplugin-auto-import/node_modules/unimport": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/unimport/-/unimport-5.7.0.tgz", + "integrity": "sha512-njnL6sp8lEA8QQbZrt+52p/g4X0rw3bnGGmUcJnt1jeG8+iiqO779aGz0PirCtydAIVcuTBRlJ52F0u46z309Q==", + "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.0", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "pkg-types": "^2.3.0", + "scule": "^1.3.0", + "strip-literal": "^3.1.0", + "tinyglobby": "^0.2.15", + "unplugin": "^2.3.11", + "unplugin-utils": "^0.3.1" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/unplugin-utils": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/unplugin-utils/-/unplugin-utils-0.3.2.tgz", + "integrity": "sha512-xVToRh2CTmLk2HnEG7ac4rl1MJTT3RFkpS8B++/SnB0kXvuaavD+n3m/vrzyWQOdJNSZQACnbz01pnppbwV5BA==", + "license": "MIT", + "dependencies": { + "pathe": "^2.0.3", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/unplugin-vue-components": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-30.0.0.tgz", + "integrity": "sha512-4qVE/lwCgmdPTp6h0qsRN2u642tt4boBQtcpn4wQcWZAsr8TQwq+SPT3NDu/6kBFxzo/sSEK4ioXhOOBrXc3iw==", + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.3", + "debug": "^4.4.3", + "local-pkg": "^1.1.2", + "magic-string": "^0.30.19", + "mlly": "^1.8.0", + "tinyglobby": "^0.2.15", + "unplugin": "^2.3.10", + "unplugin-utils": "^0.3.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@babel/parser": "^7.15.8", + "@nuxt/kit": "^3.2.2 || ^4.0.0", + "vue": "2 || 3" + }, + "peerDependenciesMeta": { + "@babel/parser": { + "optional": true + }, + "@nuxt/kit": { + "optional": true + } + } + }, + "node_modules/unplugin-vue-components/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/unplugin-vue-components/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/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/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.5.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz", + "integrity": "sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==", + "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/vaul-vue": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/vaul-vue/-/vaul-vue-0.4.1.tgz", + "integrity": "sha512-A6jOWOZX5yvyo1qMn7IveoWN91mJI5L3BUKsIwkg6qrTGgHs1Sb1JF/vyLJgnbN1rH4OOOxFbtqL9A46bOyGUQ==", + "dependencies": { + "@vueuse/core": "^10.8.0", + "reka-ui": "^2.0.0", + "vue": "^3.4.5" + }, + "peerDependencies": { + "reka-ui": "^2.0.0", + "vue": "^3.3.0" + } + }, + "node_modules/vaul-vue/node_modules/@types/web-bluetooth": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", + "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==", + "license": "MIT" + }, + "node_modules/vaul-vue/node_modules/@vueuse/core": { + "version": "10.11.1", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.11.1.tgz", + "integrity": "sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==", + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.20", + "@vueuse/metadata": "10.11.1", + "@vueuse/shared": "10.11.1", + "vue-demi": ">=0.14.8" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/vaul-vue/node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/vaul-vue/node_modules/@vueuse/metadata": { + "version": "10.11.1", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.11.1.tgz", + "integrity": "sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/vaul-vue/node_modules/@vueuse/shared": { + "version": "10.11.1", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.11.1.tgz", + "integrity": "sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==", + "license": "MIT", + "dependencies": { + "vue-demi": ">=0.14.8" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/vaul-vue/node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/vite": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.1.2.tgz", + "integrity": "sha512-6YYPbRXTxx6bRXmOn7XdnQAy5DQNHhDgtjhDHI13oe4pY93kkcdGJWxpGwOm++/Wh0QpQhDrpIoVMrmrsI5AGQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "lightningcss": "^1.32.0", + "picomatch": "^4.0.4", + "postcss": "^8.5.16", + "rolldown": "~1.1.3", + "tinyglobby": "^0.2.17" + }, + "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", + "@vitejs/devtools": "^0.3.0", + "esbuild": "^0.27.0 || ^0.28.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-dev-rpc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vite-dev-rpc/-/vite-dev-rpc-2.0.0.tgz", + "integrity": "sha512-yKwbTwdHKSD2k/aGqyWpPHepo45OQc8lH3/6IfT4ZqeKE26ooKvi4WIEKzqWav8v+9Is8u1k8q54hvOmqASazA==", + "license": "MIT", + "dependencies": { + "birpc": "^4.0.0", + "vite-hot-client": "^2.2.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 || ^8.0.0" + } + }, + "node_modules/vite-hot-client": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vite-hot-client/-/vite-hot-client-2.2.0.tgz", + "integrity": "sha512-76Zs9zrHbH7M7wqeyooGQKdX+yg0pQ0xuQ1PbFp4z5a0Lzn2e5IPFoCswnmqZ4GiwqB4Jo3WcDAMO9jARTJl8w==", + "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 || ^8.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-node/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/vite-node/node_modules/vite": { + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.6.tgz", + "integrity": "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0 || ^0.28.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-plugin-checker": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/vite-plugin-checker/-/vite-plugin-checker-0.13.0.tgz", + "integrity": "sha512-14EkOZmfinVZNxRmg2uCNDwtqGc/33lU/UEJansHgu27+ad+r6mMBf1Xtnq57jGZWiO/xzwtiEKPYsganw7ZFQ==", + "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.4", + "proper-lockfile": "^4.1.2", + "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.4", + "meow": "^13.2.0 || ^14.0.0", + "optionator": "^0.9.4", + "oxlint": ">=1", + "stylelint": ">=16.26.1", + "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.4.1", + "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-11.4.1.tgz", + "integrity": "sha512-ShOFe2PURXGvRS5OrgmOLZOCwDTD7dEBVt0tMpFPKb9AsvqXKCRGM8QgKrUbRbJYFXScHvDPpGRd28rYidC0tA==", + "license": "MIT", + "dependencies": { + "ansis": "^4.3.0", + "error-stack-parser-es": "^1.0.5", + "obug": "^2.1.1", + "ohash": "^2.0.11", + "open": "^11.0.0", + "perfect-debounce": "^2.1.0", + "sirv": "^3.0.2", + "unplugin-utils": "^0.3.1", + "vite-dev-rpc": "^2.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^6.0.0 || ^7.0.0-0 || ^8.0.0-0" + }, + "peerDependenciesMeta": { + "@nuxt/kit": { + "optional": true + } + } + }, + "node_modules/vite-plugin-vue-tracer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/vite-plugin-vue-tracer/-/vite-plugin-vue-tracer-1.4.0.tgz", + "integrity": "sha512-0tQCjCqZWVSK6UeRW9S4ABbf47lKQ68zvrT2FNvZmiL+alDydCVyH/T3Jlfbdc3T3C2Iuyyl5aVsMbF8IQIoxA==", + "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 || ^8.0.0-0", + "vue": "^3.5.0" + } + }, + "node_modules/vite/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" + ], + "peer": true, + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.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.39", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.39.tgz", + "integrity": "sha512-xmZCYabFGcirU8r0fTuvl/LICc1OU620rnqepaJDL/a141ZigkG7AyaxQLdqJ02ZRYzWe6YPaDHeQx7MfknQfA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.39", + "@vue/compiler-sfc": "3.5.39", + "@vue/runtime-dom": "3.5.39", + "@vue/server-renderer": "3.5.39", + "@vue/shared": "3.5.39" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-bundle-renderer": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/vue-bundle-renderer/-/vue-bundle-renderer-2.3.1.tgz", + "integrity": "sha512-7F4LNMopUw5RgYWo4zCmVUHCc6aQRC6dCKHUYkM/n+fux4AUGdL1x6m5A515WWyFysRRN7cx3hBzVqoisfRfzw==", + "license": "MIT", + "dependencies": { + "ufo": "^1.6.4" + } + }, + "node_modules/vue-component-type-helpers": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-3.3.6.tgz", + "integrity": "sha512-FkljacAwJ9BUoSUdpFe3VDy0sGigNlTH9+2zcXUWmZOjN8swiCkl3t48wOJun0OsUd2cEIda1l04tsxMiKIIrQ==", + "license": "MIT" + }, + "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/vuedraggable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-4.1.0.tgz", + "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==", + "license": "MIT", + "dependencies": { + "sortablejs": "1.14.0" + }, + "peerDependencies": { + "vue": "^3.0.1" + } + }, + "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/wheel-gestures": { + "version": "2.2.48", + "resolved": "https://registry.npmjs.org/wheel-gestures/-/wheel-gestures-2.2.48.tgz", + "integrity": "sha512-f+Gy33Oa5Z14XY9679Zze+7VFhbsQfBFXodnU2x589l4kxGM9L5Y8zETTmcMR5pWOPQyRv4Z0lNax6xCO0NSlA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "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/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/ws": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", + "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", + "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.9.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", + "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", + "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/package.json b/package.json new file mode 100644 index 0000000..6f2152c --- /dev/null +++ b/package.json @@ -0,0 +1,23 @@ +{ + "name": "figureslibres-portfolio-generator", + "version": "0.1.0", + "private": true, + "type": "module", + "scripts": { + "dev": "nuxt dev --host 0.0.0.0 --port 3000", + "build": "nuxt build", + "preview": "node .output/server/index.mjs", + "postinstall": "nuxt prepare" + }, + "dependencies": { + "@nuxt/ui": "^3.3.0", + "marked": "^15.0.0", + "nanoid": "^5.1.0", + "nuxt": "^3.17.0", + "pagedjs": "^0.4.3", + "playwright": "1.61.1", + "sharp": "^0.34.0", + "vuedraggable": "^4.1.0", + "yaml": "^2.8.0" + } +} diff --git a/pages/index.vue b/pages/index.vue new file mode 100644 index 0000000..90d3c3e --- /dev/null +++ b/pages/index.vue @@ -0,0 +1,146 @@ + + + diff --git a/pages/login.vue b/pages/login.vue new file mode 100644 index 0000000..2aa0d51 --- /dev/null +++ b/pages/login.vue @@ -0,0 +1,46 @@ + + + diff --git a/pages/portfolios/[id].vue b/pages/portfolios/[id].vue new file mode 100644 index 0000000..b3bc77a --- /dev/null +++ b/pages/portfolios/[id].vue @@ -0,0 +1,827 @@ + + + diff --git a/pages/print/[id].vue b/pages/print/[id].vue new file mode 100644 index 0000000..314de70 --- /dev/null +++ b/pages/print/[id].vue @@ -0,0 +1,71 @@ + + + + + diff --git a/pages/view/[id].vue b/pages/view/[id].vue new file mode 100644 index 0000000..2669742 --- /dev/null +++ b/pages/view/[id].vue @@ -0,0 +1,128 @@ + + + diff --git a/public/fonts/Avara-bold-italic.woff2 b/public/fonts/Avara-bold-italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f94bcfe544cabf67f901d6bc351d6370e6d468a1 GIT binary patch literal 12600 zcmV-8F~`n#Pew8T0RR9105LcK5C8xG0E37C05H}70RR9100000000000000000000 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 aLkRlsAvE(o2FtoV(%<2vb%oz*0000^1rSF7 literal 0 HcmV?d00001 diff --git a/public/fonts/Lato-bold-italic.woff2 b/public/fonts/Lato-bold-italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..5938eb1e0961b3e8926da3bc880f63be6f960a50 GIT binary patch literal 25460 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˜(=O%Se6fUV9lWW*^C7A) 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

+@i=nQh0VM6esfL(WT!qjUY+S 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 CynlHB literal 0 HcmV?d00001 diff --git a/public/fonts/Moche-bold.woff2 b/public/fonts/Moche-bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..c9b17ebcaaa9637ebc7a3ae4375edd237330ff0d GIT binary patch literal 10484 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 literal 0 HcmV?d00001 diff --git a/public/fonts/PlayfairDisplay-italic.woff2 b/public/fonts/PlayfairDisplay-italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..acef6b3edcc4551b254fa85420a00533537b5146 GIT binary patch literal 19784 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

--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 literal 0 HcmV?d00001 diff --git a/public/fonts/Syne-bold.woff2 b/public/fonts/Syne-bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..d81d78405ad6cd85a4f2ade505a198a295a93d00 GIT binary patch literal 10968 zcmV;}Dks%0RR9100000000000000000000 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

}=A&p2% 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 G0000D{nQ8m literal 0 HcmV?d00001 diff --git a/public/fonts/Syne-regular.woff2 b/public/fonts/Syne-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..562fbf6b17c5cf999ba39b13f2f12546fde6d2d2 GIT binary patch literal 10964 zcmV;_Dl64@Pew8T0RR9104me~5C8xG0ApML04j0-0RR9100000000000000000000 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 +import { chromium } from 'playwright' + +const [, , id] = process.argv +const base = process.env.BASE_URL ?? 'http://localhost:3000' + +const browser = await chromium.launch() +const page = await browser.newPage({ viewportSize: { width: 1600, height: 900 } }) +await page.request.post(`${base}/api/auth/login`, { + data: { password: process.env.NUXT_PORTFOLIO_PASSWORD ?? 'figureslibres' }, +}) +await page.goto(`${base}/portfolios/${id}`, { waitUntil: 'networkidle' }) + +const items = page.locator('aside .group') +const count = await items.count() +for (let i = 0; i < count; i++) { + await items.nth(i).click() + await page.waitForTimeout(1200) + await page.screenshot({ path: `/app/data/cache/page-${i + 1}.png` }) + console.log(`page ${i + 1}/${count}`) +} +await browser.close() diff --git a/scripts/dev-picker-shot.mjs b/scripts/dev-picker-shot.mjs new file mode 100644 index 0000000..8424084 --- /dev/null +++ b/scripts/dev-picker-shot.mjs @@ -0,0 +1,24 @@ +// Capture de la modale « Ajouter un projet » du composeur (auto-contrôle dev). +import { chromium } from 'playwright' + +const [, , id, out = '/app/data/cache/picker.png'] = process.argv +const base = process.env.BASE_URL ?? 'http://localhost:3000' + +const browser = await chromium.launch() +const page = await browser.newPage({ viewportSize: { width: 1440, height: 900 } }) +await page.request.post(`${base}/api/auth/login`, { + data: { password: process.env.NUXT_PORTFOLIO_PASSWORD ?? 'figureslibres' }, +}) +await page.goto(`${base}/portfolios/${id}`, { waitUntil: 'networkidle' }) +await page.getByRole('button', { name: 'Ajouter', exact: true }).click() +await page.getByRole('menuitem', { name: /Projet/ }).click() +await page.waitForTimeout(1500) +// Filtre « type de travail » si fourni en 3e argument +const filterLabel = process.argv[4] +if (filterLabel) { + await page.getByRole('button', { name: filterLabel, exact: true }).click() + await page.waitForTimeout(800) +} +await page.screenshot({ path: out }) +await browser.close() +console.log(`screenshot: ${out}`) diff --git a/scripts/dev-raw-pdf.mjs b/scripts/dev-raw-pdf.mjs new file mode 100644 index 0000000..b6062a2 --- /dev/null +++ b/scripts/dev-raw-pdf.mjs @@ -0,0 +1,50 @@ +// Capture le PDF brut Chromium de /print/ (avant Ghostscript) pour diagnostic. +import { chromium } from 'playwright' + +const [, , id, out = '/app/data/cache/raw-debug.pdf'] = process.argv +const token = process.env.NUXT_INTERNAL_TOKEN ?? 'dev-internal-token' + +const browser = await chromium.launch() +const page = await browser.newPage({ + viewportSize: { width: 1280, height: 720 }, + extraHTTPHeaders: { 'x-internal-token': token }, +}) +page.on('console', m => console.log('[console]', m.type(), m.text())) +page.on('requestfailed', r => console.log('[failed]', r.url(), r.failure()?.errorText)) +page.on('response', (r) => { if (!r.ok()) console.log('[http]', r.status(), r.url()) }) + +const url = `http://localhost:3000/print/${id}?internal-token=${encodeURIComponent(token)}` +const response = await page.goto(url, { waitUntil: 'networkidle', timeout: 120_000 }) +console.log('goto:', response?.status()) + +await page.evaluate(async () => { + await Promise.all(Array.from(document.fonts).map(f => f.load().catch(() => {}))) + await document.fonts.ready + const images = Array.from(document.querySelectorAll('img')) + await Promise.all(images.map(img => img.complete + ? Promise.resolve() + : new Promise((resolve) => { img.onload = img.onerror = resolve }))) +}) + +// État des fontes + présence de texte dans le DOM +const info = await page.evaluate(() => ({ + fonts: Array.from(document.fonts).map(f => `${f.family} ${f.weight} ${f.style}: ${f.status}`), + h2: Array.from(document.querySelectorAll('h2')).map(el => el.textContent?.slice(0, 40)), + bodyTextLen: document.body.innerText.length, +})) +console.log(JSON.stringify(info, null, 2)) + +await page.emulateMedia({ media: 'print' }) +// Bug Chromium : texte en webfonts absent du PDF sans réinvalidation des +// styles (cf. pdf-pipeline.ts) +await page.evaluate(async () => { + for (const sheet of document.styleSheets) sheet.disabled = true + void document.body.offsetHeight + for (const sheet of document.styleSheets) sheet.disabled = false + void document.body.offsetHeight + await document.fonts.ready + await new Promise(r => requestAnimationFrame(() => requestAnimationFrame(r))) +}) +await page.pdf({ path: out, printBackground: true, preferCSSPageSize: true, timeout: 120_000 }) +console.log('raw pdf →', out) +await browser.close() diff --git a/scripts/dev-screenshot.mjs b/scripts/dev-screenshot.mjs new file mode 100644 index 0000000..267d798 --- /dev/null +++ b/scripts/dev-screenshot.mjs @@ -0,0 +1,18 @@ +// Capture d'écran de contrôle (dev) : node scripts/dev-screenshot.mjs +import { chromium } from 'playwright' + +const [, , path = '/', out = '/app/data/cache/screenshot.png'] = process.argv +const base = process.env.BASE_URL ?? 'http://localhost:3000' + +const browser = await chromium.launch() +const page = await browser.newPage({ viewportSize: { width: 1440, height: 900 } }) + +// Session : login via l'API puis navigation +await page.request.post(`${base}/api/auth/login`, { + data: { password: process.env.NUXT_PORTFOLIO_PASSWORD ?? 'figureslibres' }, +}) +await page.goto(`${base}${path}`, { waitUntil: 'networkidle' }) +await page.waitForTimeout(1000) +await page.screenshot({ path: out, fullPage: false }) +await browser.close() +console.log(`screenshot: ${out}`) diff --git a/scripts/dev-test-generate.mjs b/scripts/dev-test-generate.mjs new file mode 100644 index 0000000..c56fb14 --- /dev/null +++ b/scripts/dev-test-generate.mjs @@ -0,0 +1,20 @@ +// Test E2E du flux de génération PDF depuis le composeur (auto-contrôle dev). +import { chromium } from 'playwright' + +const [, , id] = process.argv +const base = process.env.BASE_URL ?? 'http://localhost:3000' + +const browser = await chromium.launch() +const page = await browser.newPage({ viewportSize: { width: 1600, height: 900 } }) +await page.request.post(`${base}/api/auth/login`, { + data: { password: process.env.NUXT_PORTFOLIO_PASSWORD ?? 'figureslibres' }, +}) +await page.goto(`${base}/portfolios/${id}`, { waitUntil: 'networkidle' }) + +await page.getByRole('button', { name: 'Générer le PDF' }).click() +await page.waitForTimeout(500) +await page.getByRole('button', { name: 'Générer', exact: true }).click() +await page.getByRole('link', { name: 'Télécharger' }).waitFor({ timeout: 180_000 }) +await page.screenshot({ path: '/app/data/cache/generate-modal.png' }) +console.log('génération OK, lien de téléchargement affiché') +await browser.close() diff --git a/server/api/auth/login.post.ts b/server/api/auth/login.post.ts new file mode 100644 index 0000000..c05f707 --- /dev/null +++ b/server/api/auth/login.post.ts @@ -0,0 +1,11 @@ +import { setSessionCookie } from '../../lib/session' + +export default defineEventHandler(async (event) => { + const { password } = await readBody<{ password?: string }>(event) + const config = useRuntimeConfig(event) + if (!password || password !== config.portfolioPassword) { + throw createError({ statusCode: 401, statusMessage: 'Mot de passe incorrect' }) + } + setSessionCookie(event) + return { authenticated: true } +}) diff --git a/server/api/auth/logout.post.ts b/server/api/auth/logout.post.ts new file mode 100644 index 0000000..47afe10 --- /dev/null +++ b/server/api/auth/logout.post.ts @@ -0,0 +1,6 @@ +import { clearSessionCookie } from '../../lib/session' + +export default defineEventHandler((event) => { + clearSessionCookie(event) + return { authenticated: false } +}) diff --git a/server/api/auth/me.get.ts b/server/api/auth/me.get.ts new file mode 100644 index 0000000..e7eb297 --- /dev/null +++ b/server/api/auth/me.get.ts @@ -0,0 +1,5 @@ +import { isAuthenticated } from '../../lib/session' + +export default defineEventHandler((event) => { + return { authenticated: isAuthenticated(event) } +}) diff --git a/server/api/exports/[file].get.ts b/server/api/exports/[file].get.ts new file mode 100644 index 0000000..7bf6baa --- /dev/null +++ b/server/api/exports/[file].get.ts @@ -0,0 +1,22 @@ +import { createReadStream } from 'node:fs' +import { stat } from 'node:fs/promises' +import { join, normalize } from 'node:path' + +export default defineEventHandler(async (event) => { + const file = decodeURIComponent(getRouterParam(event, 'file') ?? '') + const exportsDir = join(useRuntimeConfig(event).dataDir, 'exports') + const abs = normalize(join(exportsDir, file)) + if (!abs.startsWith(normalize(exportsDir) + '/') || !abs.endsWith('.pdf')) { + throw createError({ statusCode: 400, statusMessage: 'Fichier invalide' }) + } + let s + try { + s = await stat(abs) + } catch { + throw createError({ statusCode: 404, statusMessage: 'Export introuvable' }) + } + setHeader(event, 'Content-Type', 'application/pdf') + setHeader(event, 'Content-Length', s.size) + setHeader(event, 'Content-Disposition', `attachment; filename="${file.replace(/"/g, '')}"`) + return sendStream(event, createReadStream(abs)) +}) diff --git a/server/api/media/[...path].get.ts b/server/api/media/[...path].get.ts new file mode 100644 index 0000000..42df8ed --- /dev/null +++ b/server/api/media/[...path].get.ts @@ -0,0 +1,28 @@ +// Sert les médias du contenu Grav (et des snapshots figés). +// - `?w=480` : image redimensionnée (voir server/lib/media.ts). +// - `?poster=1` : première frame d'une vidéo. +// - `?frozen=` : résout d'abord dans le snapshot figé (§7.3). +import { join } from 'node:path' +import { useContentSource } from '../../lib/content-source' +import { serveMedia, splitMediaPath } from '../../lib/media' + +export default defineEventHandler(async (event) => { + const { projectId, filename } = splitMediaPath(getRouterParam(event, 'path') ?? '') + + const query = getQuery(event) + const width = Number(query.w) || 0 + const wantPoster = Boolean(query.poster) + const frozenId = typeof query.frozen === 'string' ? query.frozen : '' + + const config = useRuntimeConfig(event) + const source = useContentSource() + + // Racines de résolution : snapshot figé d'abord, contenu live ensuite + const roots: string[] = [] + if (frozenId && /^[\w-]+$/.test(frozenId)) { + roots.push(join(config.dataDir, 'frozen', frozenId)) + } + roots.push(source.rootDir) + + return serveMedia(event, { roots, projectId, filename, width, wantPoster, dataDir: config.dataDir }) +}) diff --git a/server/api/portfolios/[id]/duplicate.post.ts b/server/api/portfolios/[id]/duplicate.post.ts new file mode 100644 index 0000000..d5aedde --- /dev/null +++ b/server/api/portfolios/[id]/duplicate.post.ts @@ -0,0 +1,7 @@ +import { duplicatePortfolio } from '../../../lib/portfolio-store' + +export default defineEventHandler(async (event) => { + const copy = await duplicatePortfolio(getRouterParam(event, 'id')!) + if (!copy) throw createError({ statusCode: 404, statusMessage: 'Portfolio introuvable' }) + return copy +}) diff --git a/server/api/portfolios/[id]/generate.post.ts b/server/api/portfolios/[id]/generate.post.ts new file mode 100644 index 0000000..e5dc06d --- /dev/null +++ b/server/api/portfolios/[id]/generate.post.ts @@ -0,0 +1,23 @@ +import { getPortfolio } from '../../../lib/portfolio-store' +import { generatePdf } from '../../../lib/pdf-pipeline' + +// Génération séquentielle : une seule instance Chromium à la fois. +let queue: Promise = Promise.resolve() + +export default defineEventHandler(async (event) => { + const portfolio = await getPortfolio(getRouterParam(event, 'id')!) + if (!portfolio) throw createError({ statusCode: 404, statusMessage: 'Portfolio introuvable' }) + + const { fileName } = await readBody<{ fileName?: string }>(event).catch(() => ({ fileName: undefined })) + + const run = queue.then(() => generatePdf(portfolio, fileName)) + queue = run.catch(() => {}) + try { + return await run + } catch (err) { + throw createError({ + statusCode: 500, + statusMessage: `Échec de la génération : ${err instanceof Error ? err.message : String(err)}`, + }) + } +}) diff --git a/server/api/portfolios/[id]/index.delete.ts b/server/api/portfolios/[id]/index.delete.ts new file mode 100644 index 0000000..5e5d189 --- /dev/null +++ b/server/api/portfolios/[id]/index.delete.ts @@ -0,0 +1,6 @@ +import { deletePortfolio } from '../../../lib/portfolio-store' + +export default defineEventHandler(async (event) => { + await deletePortfolio(getRouterParam(event, 'id')!) + return { ok: true } +}) diff --git a/server/api/portfolios/[id]/index.get.ts b/server/api/portfolios/[id]/index.get.ts new file mode 100644 index 0000000..76d8549 --- /dev/null +++ b/server/api/portfolios/[id]/index.get.ts @@ -0,0 +1,7 @@ +import { getPortfolio } from '../../../lib/portfolio-store' + +export default defineEventHandler(async (event) => { + const portfolio = await getPortfolio(getRouterParam(event, 'id')!) + if (!portfolio) throw createError({ statusCode: 404, statusMessage: 'Portfolio introuvable' }) + return portfolio +}) diff --git a/server/api/portfolios/[id]/index.put.ts b/server/api/portfolios/[id]/index.put.ts new file mode 100644 index 0000000..9401aef --- /dev/null +++ b/server/api/portfolios/[id]/index.put.ts @@ -0,0 +1,21 @@ +import type { Portfolio } from '~~/types' +import { getPortfolio, savePortfolio } from '../../../lib/portfolio-store' + +export default defineEventHandler(async (event) => { + const id = getRouterParam(event, 'id')! + const existing = await getPortfolio(id) + if (!existing) throw createError({ statusCode: 404, statusMessage: 'Portfolio introuvable' }) + + const body = await readBody(event) + if (!body || !Array.isArray(body.pages) || typeof body.name !== 'string') { + throw createError({ statusCode: 400, statusMessage: 'Portfolio invalide' }) + } + // L'id et les dates de création restent ceux du serveur. + const portfolio: Portfolio = { + ...existing, + ...body, + id, + createdAt: existing.createdAt, + } + return await savePortfolio(portfolio) +}) diff --git a/server/api/portfolios/[id]/share.post.ts b/server/api/portfolios/[id]/share.post.ts new file mode 100644 index 0000000..5a880ad --- /dev/null +++ b/server/api/portfolios/[id]/share.post.ts @@ -0,0 +1,30 @@ +// Active / coupe le lien public d'un portfolio (bouton « Partager un lien public »). +// - body { enabled: false } → coupe le partage (publicShare = false), sans +// toucher au snapshot figé (réutilisé par le PDF). +// - sinon → (re)fige le contenu courant et active le partage. Re-cliquer +// « republie » : l'instantané reflète l'état courant du portfolio. +import { getPortfolio, savePortfolio } from '../../../lib/portfolio-store' +import { freezeContent, sanitizeFileName } from '../../../lib/pdf-pipeline' + +export default defineEventHandler(async (event) => { + const id = getRouterParam(event, 'id') ?? '' + const portfolio = await getPortfolio(id) + if (!portfolio) { + throw createError({ statusCode: 404, statusMessage: 'Portfolio introuvable' }) + } + + const body = await readBody<{ enabled?: boolean }>(event).catch(() => ({})) + + if (body?.enabled === false) { + portfolio.publicShare = false + // Renvoie le portfolio complet pour resynchroniser le client (évite qu'une + // sauvegarde auto ultérieure ne réécrase publicShare/frozenContent). + return await savePortfolio(portfolio) + } + + // (Re)geler le contenu courant puis activer le partage + const fileName = portfolio.frozenContent?.fileName || sanitizeFileName(portfolio.name) + portfolio.frozenContent = await freezeContent(portfolio, fileName) + portfolio.publicShare = true + return await savePortfolio(portfolio) +}) diff --git a/server/api/portfolios/[id]/unfreeze.post.ts b/server/api/portfolios/[id]/unfreeze.post.ts new file mode 100644 index 0000000..68ebd45 --- /dev/null +++ b/server/api/portfolios/[id]/unfreeze.post.ts @@ -0,0 +1,16 @@ +// « Réactualiser depuis Grav » (spec §7.3) : supprime le snapshot figé ; +// la prochaine génération repartira du contenu live. +import { rm } from 'node:fs/promises' +import { join } from 'node:path' +import { getPortfolio, savePortfolio } from '../../../lib/portfolio-store' + +export default defineEventHandler(async (event) => { + const id = getRouterParam(event, 'id')! + const portfolio = await getPortfolio(id) + if (!portfolio) throw createError({ statusCode: 404, statusMessage: 'Portfolio introuvable' }) + + portfolio.frozenContent = undefined + await rm(join(useRuntimeConfig().dataDir, 'frozen', portfolio.id), { recursive: true, force: true }) + await savePortfolio(portfolio) + return { ok: true } +}) diff --git a/server/api/portfolios/index.get.ts b/server/api/portfolios/index.get.ts new file mode 100644 index 0000000..54f526a --- /dev/null +++ b/server/api/portfolios/index.get.ts @@ -0,0 +1,5 @@ +import { listPortfolios } from '../../lib/portfolio-store' + +export default defineEventHandler(async () => { + return { portfolios: await listPortfolios() } +}) diff --git a/server/api/portfolios/index.post.ts b/server/api/portfolios/index.post.ts new file mode 100644 index 0000000..35ed015 --- /dev/null +++ b/server/api/portfolios/index.post.ts @@ -0,0 +1,6 @@ +import { createPortfolio } from '../../lib/portfolio-store' + +export default defineEventHandler(async (event) => { + const { name } = await readBody<{ name?: string }>(event) + return await createPortfolio(name?.trim() ?? '') +}) diff --git a/server/api/projects/[...id].get.ts b/server/api/projects/[...id].get.ts new file mode 100644 index 0000000..f5cdc5d --- /dev/null +++ b/server/api/projects/[...id].get.ts @@ -0,0 +1,10 @@ +import { useContentSource } from '../../lib/content-source' + +export default defineEventHandler(async (event) => { + const id = decodeURIComponent(getRouterParam(event, 'id') ?? '') + const project = await useContentSource().getProject(id) + if (!project) { + throw createError({ statusCode: 404, statusMessage: 'Projet introuvable' }) + } + return project +}) diff --git a/server/api/projects/index.get.ts b/server/api/projects/index.get.ts new file mode 100644 index 0000000..8071d2f --- /dev/null +++ b/server/api/projects/index.get.ts @@ -0,0 +1,7 @@ +import { useContentSource } from '../../lib/content-source' + +export default defineEventHandler(async () => { + const source = useContentSource() + const projects = await source.listProjects() + return { projects } +}) diff --git a/server/api/public/[id].get.ts b/server/api/public/[id].get.ts new file mode 100644 index 0000000..47968f1 --- /dev/null +++ b/server/api/public/[id].get.ts @@ -0,0 +1,19 @@ +// Données de la vue publique : le portfolio partagé + ses projets figés. +// Public (hors mot de passe), mais uniquement si publicShare est actif et +// qu'un instantané figé existe. On ne sert jamais le contenu live. +import { getPortfolio } from '../../lib/portfolio-store' +import type { Portfolio, Project } from '~~/types' + +export default defineEventHandler(async (event): Promise<{ portfolio: Portfolio; projects: Record }> => { + const id = getRouterParam(event, 'id') ?? '' + if (!/^[\w-]+$/.test(id)) { + throw createError({ statusCode: 400, statusMessage: 'Identifiant invalide' }) + } + + const portfolio = await getPortfolio(id) + if (!portfolio?.publicShare || !portfolio.frozenContent) { + throw createError({ statusCode: 404, statusMessage: 'Portfolio introuvable' }) + } + + return { portfolio, projects: portfolio.frozenContent.projects } +}) diff --git a/server/api/public/[id]/media/[...path].get.ts b/server/api/public/[id]/media/[...path].get.ts new file mode 100644 index 0000000..3986e7e --- /dev/null +++ b/server/api/public/[id]/media/[...path].get.ts @@ -0,0 +1,28 @@ +// Médias de la vue publique : sert exclusivement le snapshot figé du portfolio +// , et seulement s'il est partagé publiquement (publicShare). Aucun repli +// sur le contenu live — la surface publique reste limitée à l'instantané. +import { join } from 'node:path' +import { getPortfolio } from '../../../../lib/portfolio-store' +import { serveMedia, splitMediaPath } from '../../../../lib/media' + +export default defineEventHandler(async (event) => { + const id = getRouterParam(event, 'id') ?? '' + if (!/^[\w-]+$/.test(id)) { + throw createError({ statusCode: 400, statusMessage: 'Identifiant invalide' }) + } + + const portfolio = await getPortfolio(id) + if (!portfolio?.publicShare) { + throw createError({ statusCode: 404, statusMessage: 'Portfolio introuvable' }) + } + + const { projectId, filename } = splitMediaPath(getRouterParam(event, 'path') ?? '') + const query = getQuery(event) + const width = Number(query.w) || 0 + const wantPoster = Boolean(query.poster) + + const config = useRuntimeConfig(event) + const roots = [join(config.dataDir, 'frozen', id)] + + return serveMedia(event, { roots, projectId, filename, width, wantPoster, dataDir: config.dataDir }) +}) diff --git a/server/api/sync.post.ts b/server/api/sync.post.ts new file mode 100644 index 0000000..125bb4b --- /dev/null +++ b/server/api/sync.post.ts @@ -0,0 +1,7 @@ +// Bouton « Rafraîchir » (spec §6) : re-synchronise le contenu. +// En DEV : simple relecture du FS. En PROD (phase 3) : rsync/SSH. +import { useContentSource } from '../lib/content-source' + +export default defineEventHandler(async () => { + return await useContentSource().refresh() +}) diff --git a/server/lib/content-source.ts b/server/lib/content-source.ts new file mode 100644 index 0000000..90a91f5 --- /dev/null +++ b/server/lib/content-source.ts @@ -0,0 +1,140 @@ +// Abstraction ContentSource (spec §5) : DEV = FS local (grav-reference monté RO), +// PROD = cache local alimenté par rsync/SSH. Le reste de l'app ne voit que cette interface. +import { execFile } from 'node:child_process' +import { promisify } from 'node:util' +import { mkdir } from 'node:fs/promises' +import { join, normalize } from 'node:path' +import type { Project } from '~~/types' +import { readAllProjects } from './grav-reader' + +const execFileAsync = promisify(execFile) + +export interface SyncResult { + ok: boolean + summary: string + syncedAt: string +} + +export interface ContentSource { + /** Racine FS des projets (catégories//…) */ + readonly rootDir: string + listProjects(): Promise + getProject(id: string): Promise + /** Chemin absolu d'un média, borné à rootDir (anti path-traversal). */ + resolveMediaPath(projectId: string, filename: string): string | null + /** Re-synchronise le contenu (no-op en DEV). */ + refresh(): Promise + /** Invalide le cache mémoire. */ + invalidate(): void +} + +const CACHE_TTL_MS = 30_000 + +abstract class FsContentSource implements ContentSource { + private cache: { at: number; projects: Project[] } | null = null + + constructor(public readonly rootDir: string) {} + + async listProjects(): Promise { + if (this.cache && Date.now() - this.cache.at < CACHE_TTL_MS) { + return this.cache.projects + } + const projects = await readAllProjects(this.rootDir) + this.cache = { at: Date.now(), projects } + return projects + } + + async getProject(id: string): Promise { + const projects = await this.listProjects() + return projects.find(p => p.id === id) ?? null + } + + resolveMediaPath(projectId: string, filename: string): string | null { + const abs = normalize(join(this.rootDir, projectId, filename)) + if (!abs.startsWith(normalize(this.rootDir) + '/')) return null + return abs + } + + invalidate(): void { + this.cache = null + } + + abstract refresh(): Promise +} + +/** Mode DEV : lecture directe du Grav local monté en lecture seule. */ +export class DevContentSource extends FsContentSource { + async refresh(): Promise { + this.invalidate() + const projects = await this.listProjects() + return { + ok: true, + summary: `Mode dev : contenu local relu (${projects.length} projets).`, + syncedAt: new Date().toISOString(), + } + } +} + +/** + * Mode PROD : cache local `data/content-cache/` alimenté par rsync/SSH + * depuis la prod (spec §6). Lecture seule côté prod, incrémental. + */ +export class ProdContentSource extends FsContentSource { + constructor( + rootDir: string, + private readonly remote: string, // ex. user@host:/chemin/user/pages/02.projets/ + private readonly sshKey?: string, + ) { + super(rootDir) + } + + async refresh(): Promise { + if (!this.remote) { + return { + ok: false, + summary: 'NUXT_SYNC_REMOTE non configuré : impossible de synchroniser.', + syncedAt: new Date().toISOString(), + } + } + await mkdir(this.rootDir, { recursive: true }) + const ssh = ['ssh', '-o', 'StrictHostKeyChecking=accept-new', '-o', 'BatchMode=yes'] + if (this.sshKey) ssh.push('-i', this.sshKey) + + const started = Date.now() + try { + const { stdout } = await execFileAsync('rsync', [ + '-az', + '--delete', + '--itemize-changes', + '-e', ssh.join(' '), + this.remote.endsWith('/') ? this.remote : `${this.remote}/`, + `${this.rootDir}/`, + ], { timeout: 15 * 60_000 }) + this.invalidate() + const changed = stdout.split('\n').filter(l => /^[<>ch.]\S+\s/.test(l)).length + const projects = await this.listProjects() + return { + ok: true, + summary: `${changed} fichier(s) mis à jour en ${Math.round((Date.now() - started) / 1000)} s — ${projects.length} projets.`, + syncedAt: new Date().toISOString(), + } + } catch (err) { + return { + ok: false, + summary: `Échec rsync : ${err instanceof Error ? err.message : String(err)}`, + syncedAt: new Date().toISOString(), + } + } + } +} + +let source: ContentSource | null = null + +export function useContentSource(): ContentSource { + if (source) return source + const config = useRuntimeConfig() + source = config.contentSource === 'prod' + ? new ProdContentSource(join(config.dataDir, 'content-cache'), config.syncRemote, config.syncSshKey || undefined) + : new DevContentSource(config.contentDir) + return source +} diff --git a/server/lib/grav-reader.ts b/server/lib/grav-reader.ts new file mode 100644 index 0000000..df5b78e --- /dev/null +++ b/server/lib/grav-reader.ts @@ -0,0 +1,198 @@ +// Parseur du contenu Grav (lecture seule) — spec §7.1 +// Lit user/pages/02.projets///reader.md + médias. +import { readdir, readFile, stat } from 'node:fs/promises' +import { join } from 'node:path' +import { parse as parseYaml } from 'yaml' +import { marked } from 'marked' +import sharp from 'sharp' +import type { MediaAsset, MediaVariant, Project } from '~~/types' + +const IMAGE_EXT = /\.(png|jpe?g|webp|gif)$/i +const VIDEO_EXT = /\.(mp4|webm)$/i +const VARIANT_RE = /^(.*)@(\d+)x(\.[^.]+)$/i + +/** "01.culturelle" -> "culturelle" */ +function stripOrderPrefix(dirname: string): string { + return dirname.replace(/^\d+\./, '') +} + +/** Date Grav "09-12-2024 22:19" (DD-MM-YYYY HH:mm) -> ISO */ +function parseGravDate(raw: unknown): string | undefined { + if (!raw) return undefined + const s = String(raw).trim() + const m = s.match(/^(\d{2})-(\d{2})-(\d{4})(?:\s+(\d{2}):(\d{2}))?$/) + if (m) { + const [, dd, mm, yyyy, hh = '00', min = '00'] = m + return `${yyyy}-${mm}-${dd}T${hh}:${min}:00` + } + const d = new Date(s) + return Number.isNaN(d.getTime()) ? undefined : d.toISOString() +} + +function toArray(v: unknown): string[] { + if (Array.isArray(v)) return v.map(String).filter(Boolean) + if (typeof v === 'string' && v.trim()) return [v.trim()] + return [] +} + +/** Détecte l'URL externe du projet (souvent en fin de corps). */ +function detectExternalUrl(body: string): string | undefined { + const matches = body.match(/https?:\/\/[^\s)>\]"']+/g) + if (!matches?.length) return undefined + return matches[matches.length - 1].replace(/[.,;]$/, '') +} + +interface ParsedMarkdown { + frontmatter: Record + body: string +} + +function splitFrontmatter(raw: string): ParsedMarkdown { + const m = raw.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/) + if (!m) return { frontmatter: {}, body: raw } + let frontmatter: Record = {} + try { + frontmatter = (parseYaml(m[1]) as Record) ?? {} + } catch { + frontmatter = {} + } + return { frontmatter, body: m[2].trim() } +} + +/** + * Regroupe les fichiers d'un dossier projet en MediaAsset : + * base.png + base@2x.png/@3x/@4x -> un asset avec variantes, + * ordonnés selon media_order puis alphabétique pour le reste. + */ +function collectMedia(files: string[], mediaOrder: string[]): MediaAsset[] { + const assets = new Map() + + // Le nom canonique est celui sans suffixe @Nx (c'est lui que référencent + // media_order et aura.image). Certains projets n'ont qu'un @1x sans base. + for (const f of files) { + if (!IMAGE_EXT.test(f) && !VIDEO_EXT.test(f)) continue + const m = f.match(VARIANT_RE) + const canonical = m ? m[1] + m[3] : f + const label = (m ? `${m[2]}x` : '1x') as MediaVariant['label'] + + let asset = assets.get(canonical) + if (!asset) { + asset = { + filename: canonical, + type: VIDEO_EXT.test(canonical) ? 'video' : 'image', + variants: [], + } + assets.set(canonical, asset) + } + const existing = asset.variants.find(v => v.label === label) + if (!existing) { + asset.variants.push({ label, path: f }) + } else if (!m) { + existing.path = f // le fichier de base l'emporte sur un doublon @1x + } + } + for (const a of assets.values()) { + a.variants.sort((x, y) => parseInt(x.label) - parseInt(y.label)) + } + + // Tri : media_order d'abord, puis le reste en alphabétique + const orderIndex = new Map(mediaOrder.map((name, i) => [name, i])) + return [...assets.values()].sort((a, b) => { + const ia = orderIndex.has(a.filename) ? orderIndex.get(a.filename)! : Infinity + const ib = orderIndex.has(b.filename) ? orderIndex.get(b.filename)! : Infinity + if (ia !== ib) return ia - ib + return a.filename.localeCompare(b.filename) + }) +} + +async function readProject( + contentDir: string, + categoryDir: string, + projectDir: string, +): Promise { + const dir = join(contentDir, categoryDir, projectDir) + let raw: string + try { + raw = await readFile(join(dir, 'reader.md'), 'utf8') + } catch { + return null // pas un dossier projet (pas de reader.md) + } + + const { frontmatter, body } = splitFrontmatter(raw) + const files = (await readdir(dir)).filter(f => f !== 'reader.md') + + const taxonomy = (frontmatter.taxonomy ?? {}) as Record + const mediaOrder = String(frontmatter.media_order ?? '') + .split(',') + .map(s => s.trim()) + .filter(Boolean) + + const media = collectMedia(files, mediaOrder) + // Dimensions des images (en-tête seulement, rapide) : le ratio est le même + // pour toutes les variantes @Nx, la 1re suffit. + for (const asset of media) { + if (asset.type !== 'image') continue + try { + const meta = await sharp(join(dir, asset.variants[0].path)).metadata() + asset.width = meta.width + asset.height = meta.height + } catch { + // dimensions indisponibles : le choix de grille retombera sur « mixte » + } + } + // Image de couverture = celle de la grille du CMS : la PREMIÈRE image de + // media_order (cf. projet_card.html.twig : p.media.images|first), pas + // aura.image qui sert aux partages sociaux. + const coverImage = media.find(m => m.type === 'image')?.filename + + return { + id: `${categoryDir}/${projectDir}`, + category: stripOrderPrefix(categoryDir), + title: String(frontmatter.title ?? stripOrderPrefix(projectDir)), + bodyMarkdown: body, + bodyHtml: await marked.parse(body), + coverImage, + media, + categories: toArray(taxonomy.category), + tags: toArray(taxonomy.tag), + date: parseGravDate(frontmatter.date), + externalUrl: detectExternalUrl(body), + published: frontmatter.published !== false, + } +} + +/** Lit tous les projets du dossier 02.projets (3 catégories). */ +export async function readAllProjects(contentDir: string): Promise { + const projects: Project[] = [] + let categoryDirs: string[] = [] + try { + categoryDirs = (await readdir(contentDir, { withFileTypes: true })) + .filter(e => e.isDirectory()) + .map(e => e.name) + .sort() + } catch { + return [] + } + + for (const categoryDir of categoryDirs) { + const entries = await readdir(join(contentDir, categoryDir), { withFileTypes: true }) + for (const entry of entries.filter(e => e.isDirectory()).sort((a, b) => a.name.localeCompare(b.name))) { + const project = await readProject(contentDir, categoryDir, entry.name) + if (project) projects.push(project) + } + } + + // Tri global : plus récent d'abord (comme les listings Grav) + projects.sort((a, b) => (b.date ?? '').localeCompare(a.date ?? '')) + return projects +} + +/** mtime le plus récent des reader.md — sert à invalider le cache mémoire. */ +export async function contentFingerprint(contentDir: string): Promise { + try { + const s = await stat(contentDir) + return String(s.mtimeMs) + } catch { + return '0' + } +} diff --git a/server/lib/media.ts b/server/lib/media.ts new file mode 100644 index 0000000..8d7f9bf --- /dev/null +++ b/server/lib/media.ts @@ -0,0 +1,186 @@ +// Service de fichiers médias, partagé par la route authentifiée +// (/api/media/…) et la route publique (/api/public//media/…). +// - `width` > 0 : image redimensionnée via sharp (cache disque). La source est +// choisie parmi les variantes @1x…@4x : la plus petite qui couvre la largeur +// demandée (spec §10.1 : on descend, on n'agrandit pas). +// - `wantPoster` : première frame d'une vidéo (ffmpeg), servie comme image. +// - `roots` : racines de résolution testées dans l'ordre (snapshot figé d'abord, +// contenu live ensuite ; la route publique ne passe que le snapshot figé). +import { createHash } from 'node:crypto' +import { createReadStream } from 'node:fs' +import { mkdir, readFile, stat, writeFile } from 'node:fs/promises' +import { execFile } from 'node:child_process' +import { promisify } from 'node:util' +import { extname, join, normalize } from 'node:path' +import type { H3Event } from 'h3' +import sharp from 'sharp' + +const execFileAsync = promisify(execFile) + +const MIME: Record = { + '.png': 'image/png', + '.jpg': 'image/jpeg', + '.jpeg': 'image/jpeg', + '.webp': 'image/webp', + '.gif': 'image/gif', + '.mp4': 'video/mp4', + '.webm': 'video/webm', +} + +// Cache mémoire des largeurs d'images (clé : chemin + mtime) +const widthCache = new Map() + +async function imageWidth(abs: string, mtimeMs: number): Promise { + const key = `${abs}:${mtimeMs}` + const cached = widthCache.get(key) + if (cached) return cached + const meta = await sharp(abs).metadata() + const w = meta.width ?? 0 + widthCache.set(key, w) + return w +} + +interface FoundFile { + abs: string + size: number + mtimeMs: number +} + +async function findExisting(paths: string[]): Promise { + const found: FoundFile[] = [] + for (const abs of paths) { + try { + const s = await stat(abs) + found.push({ abs, size: s.size, mtimeMs: s.mtimeMs }) + } catch { + // absent + } + } + return found +} + +/** Découpe le chemin d'URL `projectId/.../filename` en (projectId, filename). */ +export function splitMediaPath(rawPath: string): { projectId: string; filename: string } { + const segments = rawPath.split('/').map(decodeURIComponent).filter(Boolean) + if (segments.length < 2 || segments.some(s => s === '..')) { + throw createError({ statusCode: 400, statusMessage: 'Chemin invalide' }) + } + return { + filename: segments[segments.length - 1], + projectId: segments.slice(0, -1).join('/'), + } +} + +export interface ServeMediaOptions { + roots: string[] // racines de résolution, dans l'ordre de priorité + projectId: string + filename: string + width: number + wantPoster: boolean + dataDir: string +} + +/** Résout, redimensionne/extrait puis renvoie un média. Logique commune. */ +export async function serveMedia(event: H3Event, opts: ServeMediaOptions) { + const { roots, projectId, filename, width, wantPoster, dataDir } = opts + + // Le nom canonique peut ne pas exister sur disque : variantes @Nx en repli + const ext = extname(filename).toLowerCase() + const variantNames = [ + filename, + ...['1', '2', '3', '4', '5', '6'].map(n => `${filename.slice(0, -ext.length)}@${n}x${ext}`), + ] + + let candidates: FoundFile[] = [] + for (const root of roots) { + const paths = variantNames.map((name) => { + const abs = normalize(join(root, projectId, name)) + if (!abs.startsWith(normalize(root) + '/')) { + throw createError({ statusCode: 400, statusMessage: 'Chemin invalide' }) + } + return abs + }) + candidates = await findExisting(paths) + if (candidates.length) break + } + if (!candidates.length) { + throw createError({ statusCode: 404, statusMessage: 'Média introuvable' }) + } + + const primary = candidates[0] + setHeader(event, 'Cache-Control', 'public, max-age=3600') + + // ---- Poster de vidéo ---- + if (wantPoster && MIME[ext]?.startsWith('video/')) { + const cacheDir = join(dataDir, 'cache', 'posters') + const key = createHash('sha1').update(`${primary.abs}:${primary.mtimeMs}`).digest('hex') + const posterPath = join(cacheDir, `${key}.jpg`) + + try { + await stat(posterPath) + } catch { + await mkdir(cacheDir, { recursive: true }) + try { + await execFileAsync('ffmpeg', [ + '-y', '-ss', '1', '-i', primary.abs, '-frames:v', '1', '-q:v', '3', posterPath, + ]) + } catch { + // vidéos plus courtes qu'une seconde : première frame + await execFileAsync('ffmpeg', ['-y', '-i', primary.abs, '-frames:v', '1', '-q:v', '3', posterPath]) + } + } + + setHeader(event, 'Content-Type', 'image/jpeg') + if (width > 0) { + return await sharp(posterPath) + .resize({ width: Math.min(width, 3200), withoutEnlargement: true }) + .jpeg({ quality: 82 }) + .toBuffer() + } + return sendStream(event, createReadStream(posterPath)) + } + + // ---- Image redimensionnée ---- + if (width > 0 && MIME[ext]?.startsWith('image/') && ext !== '.gif') { + const target = Math.min(width, 3200) + + // Choix de la source : la plus petite variante couvrant la cible + let best = candidates[0] + let bestWidth = await imageWidth(best.abs, best.mtimeMs) + for (const c of candidates.slice(1)) { + const w = await imageWidth(c.abs, c.mtimeMs) + const covers = w >= target + const bestCovers = bestWidth >= target + if ((covers && (!bestCovers || w < bestWidth)) || (!covers && !bestCovers && w > bestWidth)) { + best = c + bestWidth = w + } + } + + const cacheDir = join(dataDir, 'cache', 'thumbs') + const key = createHash('sha1').update(`${best.abs}:${target}:${best.mtimeMs}`).digest('hex') + const cachePath = join(cacheDir, `${key}.webp`) + + try { + const cached = await readFile(cachePath) + setHeader(event, 'Content-Type', 'image/webp') + return cached + } catch { + // pas en cache : on génère + } + + await mkdir(cacheDir, { recursive: true }) + const resized = await sharp(best.abs) + .resize({ width: target, withoutEnlargement: true }) + .webp({ quality: 80 }) + .toBuffer() + await writeFile(cachePath, resized) + setHeader(event, 'Content-Type', 'image/webp') + return resized + } + + // ---- Fichier original ---- + setHeader(event, 'Content-Type', MIME[ext] ?? 'application/octet-stream') + setHeader(event, 'Content-Length', primary.size) + return sendStream(event, createReadStream(primary.abs)) +} diff --git a/server/lib/pdf-pipeline.ts b/server/lib/pdf-pipeline.ts new file mode 100644 index 0000000..cb1ab35 --- /dev/null +++ b/server/lib/pdf-pipeline.ts @@ -0,0 +1,198 @@ +// Pipeline de génération PDF (spec §10) : +// 1. gel du contenu (§7.3) : textes + médias utilisés copiés dans data/frozen// +// 2. rendu de la route /print/ par Playwright/Chromium (mêmes composants Vue) +// 3. page.pdf() au format 16:9 (960×540 pt ≡ 1280×720 px) +// 4. post-traitement Ghostscript : recompression + métadonnées +import { copyFile, mkdir, rename, rm, writeFile } from 'node:fs/promises' +import { execFile } from 'node:child_process' +import { promisify } from 'node:util' +import { dirname, join } from 'node:path' +import { chromium } from 'playwright' +import type { FrozenSnapshot, Portfolio, Project } from '~~/types' +import { useContentSource } from './content-source' +import { savePortfolio } from './portfolio-store' + +const execFileAsync = promisify(execFile) + +export function sanitizeFileName(name: string): string { + const base = name + .normalize('NFD') + .replace(/[̀-ͯ]/g, '') + .replace(/[^\w\s-]/g, '') + .trim() + .replace(/\s+/g, '-') + .toLowerCase() + return (base || 'portfolio') + '.pdf' +} + +/** Fige le contenu utilisé : projets référencés + copie des fichiers médias. */ +export async function freezeContent(portfolio: Portfolio, fileName: string): Promise { + const config = useRuntimeConfig() + const source = useContentSource() + const frozenDir = join(config.dataDir, 'frozen', portfolio.id) + + // Re-création à neuf du snapshot + await rm(frozenDir, { recursive: true, force: true }) + await mkdir(frozenDir, { recursive: true }) + + const projectIds = new Set() + for (const page of portfolio.pages) { + if (page.kind === 'project' || page.kind === 'project-grid') projectIds.add(page.projectId) + if (page.kind === 'free') { + for (const ref of page.media ?? []) projectIds.add(ref.slice(0, ref.lastIndexOf('/'))) + } + } + if (portfolio.cover.backgroundImage) { + const ref = portfolio.cover.backgroundImage + projectIds.add(ref.slice(0, ref.lastIndexOf('/'))) + } + + const projects: Record = {} + for (const id of projectIds) { + const project = await source.getProject(id) + if (!project) continue + projects[id] = project + // Copie de toutes les variantes des médias du projet utilisés + for (const asset of project.media) { + for (const variant of asset.variants) { + const abs = source.resolveMediaPath(id, variant.path) + if (!abs) continue + const dest = join(frozenDir, id, variant.path) + await mkdir(dirname(dest), { recursive: true }) + try { + await copyFile(abs, dest) + } catch { + // média manquant : le rendu retombera sur le contenu live + } + } + } + } + + return { generatedAt: new Date().toISOString(), fileName, projects } +} + +export interface GenerateResult { + fileName: string + downloadUrl: string + sizeBytes: number + pageCount: number +} + +export async function generatePdf(portfolio: Portfolio, rawFileName?: string): Promise { + const config = useRuntimeConfig() + const fileName = sanitizeFileName(rawFileName || portfolio.frozenContent?.fileName?.replace(/\.pdf$/, '') || portfolio.name) + + // Gel du contenu : réutilisé tel quel s'il existe (régénération à l'identique), + // sinon créé depuis le contenu live. « Réactualiser depuis Grav » le supprime. + if (!portfolio.frozenContent) { + portfolio.frozenContent = await freezeContent(portfolio, fileName) + } else { + portfolio.frozenContent.fileName = fileName + } + await savePortfolio(portfolio) + + const exportsDir = join(config.dataDir, 'exports') + const workDir = join(config.dataDir, 'cache', 'pdf-work') + await mkdir(exportsDir, { recursive: true }) + await mkdir(workDir, { recursive: true }) + const rawPdf = join(workDir, `${portfolio.id}-raw.pdf`) + const finalPdf = join(workDir, `${portfolio.id}-final.pdf`) + + // ---- Rendu Chromium ---- + const browser = await chromium.launch() + try { + const page = await browser.newPage({ + viewportSize: { width: 1588, height: 1123 }, // A3 paysage en px CSS + // Le jeton doit accompagner chaque sous-requête (médias, API), pas + // seulement la navigation initiale. + extraHTTPHeaders: { 'x-internal-token': config.internalToken }, + }) + const url = `http://localhost:3000/print/${portfolio.id}?internal-token=${encodeURIComponent(config.internalToken)}` + const response = await page.goto(url, { waitUntil: 'networkidle', timeout: 120_000 }) + if (!response?.ok()) { + throw new Error(`Rendu print en échec (HTTP ${response?.status()})`) + } + // Attendre fonts + images (les médias pleine résolution peuvent être longs) + await page.evaluate(async () => { + // Chargement forcé de TOUTES les faces déclarées (fonts.ready ne couvre + // que celles déjà en cours de chargement) + await Promise.all(Array.from((document as any).fonts).map((f: any) => f.load().catch(() => {}))) + await (document as any).fonts.ready + const images = Array.from(document.querySelectorAll('img')) + await Promise.all(images.map(img => img.complete + ? Promise.resolve() + : new Promise((resolve) => { img.onload = img.onerror = resolve }))) + }) + await page.emulateMedia({ media: 'print' }) + // Bug Chromium : le texte peint pendant la période « invisible » de + // font-display: block reste absent du PDF même une fois les fontes + // chargées. Invalider tous les styles + reflow force un repaint complet + // avec les glyphes réels. + await page.evaluate(async () => { + for (const sheet of document.styleSheets) sheet.disabled = true + void document.body.offsetHeight + for (const sheet of document.styleSheets) sheet.disabled = false + void document.body.offsetHeight + await (document as any).fonts.ready + await new Promise(r => requestAnimationFrame(() => requestAnimationFrame(r))) + }) + await page.pdf({ + path: rawPdf, + printBackground: true, + preferCSSPageSize: true, + timeout: 120_000, + }) + } finally { + await browser.close() + } + + // ---- Post-traitement Ghostscript : recompression + métadonnées (§10.4) ---- + const pdfmarks = join(workDir, `${portfolio.id}-marks.ps`) + const psEscape = (s: string) => s.replace(/[\\()]/g, c => `\\${c}`) + await writeFile( + pdfmarks, + `[ /Title (${psEscape(portfolio.cover.title || portfolio.name)})\n` + + ` /Author (Figures Libres)\n` + + ` /Creator (Générateur de portfolios Figures Libres)\n` + + ` /DOCINFO pdfmark\n`, + 'latin1', + ) + await execFileAsync('gs', [ + '-dBATCH', '-dNOPAUSE', '-dQUIET', '-dSAFER', + '-sDEVICE=pdfwrite', + '-dCompatibilityLevel=1.6', + '-dAutoRotatePages=/None', + '-sColorConversionStrategy=RGB', + '-dDownsampleColorImages=true', + '-dColorImageDownsampleType=/Bicubic', + '-dColorImageResolution=200', + '-dDownsampleGrayImages=true', + '-dGrayImageResolution=200', + '-dMonoImageResolution=300', + `-sOutputFile=${finalPdf}`, + rawPdf, + pdfmarks, + ]) + + const exportPath = join(exportsDir, fileName) + await rename(finalPdf, exportPath) + await rm(rawPdf, { force: true }) + await rm(pdfmarks, { force: true }) + + const { size } = await import('node:fs/promises').then(fs => fs.stat(exportPath)) + + // On aligne updatedAt sur lastExport.at (touch=false) : le PDF est ainsi + // marqué « à jour » tant que le portfolio n'est pas réédité (toute sauvegarde + // ultérieure retouche updatedAt et le rend périmé). + const exportedAt = new Date().toISOString() + portfolio.lastExport = { fileName, at: exportedAt } + portfolio.updatedAt = exportedAt + await savePortfolio(portfolio, false) + + return { + fileName, + downloadUrl: `/api/exports/${encodeURIComponent(fileName)}`, + sizeBytes: size, + pageCount: portfolio.pages.length, + } +} diff --git a/server/lib/portfolio-store.ts b/server/lib/portfolio-store.ts new file mode 100644 index 0000000..fdf5a7a --- /dev/null +++ b/server/lib/portfolio-store.ts @@ -0,0 +1,104 @@ +// Bibliothèque de portfolios : un fichier JSON par portfolio (spec §13). +import { mkdir, readdir, readFile, rm, writeFile } from 'node:fs/promises' +import { join } from 'node:path' +import { nanoid } from 'nanoid' +import type { Portfolio, PortfolioSummary } from '~~/types' + +function portfoliosDir(): string { + return join(useRuntimeConfig().dataDir, 'portfolios') +} + +function pathFor(id: string): string { + if (!/^[\w-]+$/.test(id)) { + throw createError({ statusCode: 400, statusMessage: 'Identifiant invalide' }) + } + return join(portfoliosDir(), `${id}.json`) +} + +export async function listPortfolios(): Promise { + let files: string[] = [] + try { + files = (await readdir(portfoliosDir())).filter(f => f.endsWith('.json')) + } catch { + return [] + } + const summaries: PortfolioSummary[] = [] + for (const f of files) { + try { + const p = JSON.parse(await readFile(join(portfoliosDir(), f), 'utf8')) as Portfolio + summaries.push({ + id: p.id, + name: p.name, + pageCount: p.pages.length, + updatedAt: p.updatedAt, + createdAt: p.createdAt, + coverTitle: p.cover?.title ?? p.name, + hasPdf: Boolean(p.lastExport), + // « À jour » : la génération aligne lastExport.at sur updatedAt ; toute + // édition ultérieure retouche updatedAt (> lastExport.at) → périmé. + pdfCurrent: Boolean(p.lastExport && p.updatedAt <= p.lastExport.at), + exportFileName: p.lastExport?.fileName, + publicShare: Boolean(p.publicShare), + }) + } catch { + // fichier corrompu : ignoré de la liste + } + } + summaries.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt)) + return summaries +} + +export async function getPortfolio(id: string): Promise { + try { + return JSON.parse(await readFile(pathFor(id), 'utf8')) as Portfolio + } catch { + return null + } +} + +export async function savePortfolio(portfolio: Portfolio, touch = true): Promise { + // touch=false : conserve updatedAt tel quel (utilisé après génération pour + // aligner updatedAt sur lastExport.at et marquer le PDF « à jour »). + if (touch) portfolio.updatedAt = new Date().toISOString() + await mkdir(portfoliosDir(), { recursive: true }) + await writeFile(pathFor(portfolio.id), JSON.stringify(portfolio, null, 2)) + return portfolio +} + +export async function createPortfolio(name: string): Promise { + const now = new Date().toISOString() + const portfolio: Portfolio = { + id: nanoid(10), + name: name || 'Portfolio sans titre', + cover: { + title: name || 'Portfolio', + subtitle: '', + recipient: '', + background: { mode: 'white' }, + }, + pages: [{ kind: 'cover', id: nanoid(8), background: { mode: 'white' } }], + createdAt: now, + updatedAt: now, + } + return await savePortfolio(portfolio) +} + +export async function duplicatePortfolio(id: string): Promise { + const source = await getPortfolio(id) + if (!source) return null + const now = new Date().toISOString() + const copy: Portfolio = { + ...source, + id: nanoid(10), + name: `${source.name} (copie)`, + createdAt: now, + updatedAt: now, + frozenContent: undefined, + lastExport: undefined, + } + return await savePortfolio(copy) +} + +export async function deletePortfolio(id: string): Promise { + await rm(pathFor(id), { force: true }) +} diff --git a/server/lib/session.ts b/server/lib/session.ts new file mode 100644 index 0000000..75b42a2 --- /dev/null +++ b/server/lib/session.ts @@ -0,0 +1,48 @@ +// Session « mot de passe partagé » (spec §12) : cookie HMAC signé, sans stockage serveur. +import { createHmac, timingSafeEqual } from 'node:crypto' +import type { H3Event } from 'h3' + +const COOKIE_NAME = 'fl_session' +const SESSION_TTL_MS = 1000 * 60 * 60 * 24 * 30 // 30 jours + +function sign(secret: string, payload: string): string { + return createHmac('sha256', secret).update(payload).digest('base64url') +} + +export function createSessionToken(secret: string): string { + const exp = String(Date.now() + SESSION_TTL_MS) + return `${exp}.${sign(secret, exp)}` +} + +export function isValidSessionToken(secret: string, token: string | undefined): boolean { + if (!token) return false + const [exp, sig] = token.split('.') + if (!exp || !sig) return false + if (Number(exp) < Date.now()) return false + const expected = sign(secret, exp) + const a = Buffer.from(sig) + const b = Buffer.from(expected) + return a.length === b.length && timingSafeEqual(a, b) +} + +export function setSessionCookie(event: H3Event): void { + const { sessionSecret } = useRuntimeConfig(event) + setCookie(event, COOKIE_NAME, createSessionToken(sessionSecret), { + httpOnly: true, + sameSite: 'lax', + path: '/', + maxAge: SESSION_TTL_MS / 1000, + }) +} + +export function clearSessionCookie(event: H3Event): void { + deleteCookie(event, COOKIE_NAME, { path: '/' }) +} + +export function isAuthenticated(event: H3Event): boolean { + const config = useRuntimeConfig(event) + // Jeton interne : utilisé par le rendu print (Playwright) en phase 2. + const headerToken = getHeader(event, 'x-internal-token') ?? getQuery(event)['internal-token'] + if (headerToken && headerToken === config.internalToken) return true + return isValidSessionToken(config.sessionSecret, getCookie(event, COOKIE_NAME)) +} diff --git a/server/middleware/01.auth.ts b/server/middleware/01.auth.ts new file mode 100644 index 0000000..4abadc0 --- /dev/null +++ b/server/middleware/01.auth.ts @@ -0,0 +1,16 @@ +// Protège toute l'API (sauf login/me) derrière la session mot de passe partagé. +import { isAuthenticated } from '../lib/session' + +const PUBLIC_API = new Set(['/api/auth/login', '/api/auth/me']) + +export default defineEventHandler((event) => { + const path = event.path.split('?')[0] + if (!path.startsWith('/api/')) return + if (PUBLIC_API.has(path)) return + // Vue publique : /api/public/* est ouvert (chaque endpoint vérifie lui-même + // que le portfolio ciblé a publicShare actif). + if (path.startsWith('/api/public/')) return + if (!isAuthenticated(event)) { + throw createError({ statusCode: 401, statusMessage: 'Authentification requise' }) + } +}) 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/types/index.ts b/types/index.ts new file mode 100644 index 0000000..d7cb243 --- /dev/null +++ b/types/index.ts @@ -0,0 +1,157 @@ +// Modèle de données du générateur de portfolios (spec §7.2, gabarit_book_v3) + +// --- Contenu importé de Grav (lecture seule) --- + +export interface MediaVariant { + label: `${number}x` + path: string // chemin relatif au dossier du projet + width?: number +} + +export interface MediaAsset { + filename: string + type: 'image' | 'video' + variants: MediaVariant[] + posterPath?: string // pour les vidéos : image d'aperçu + width?: number // dimensions de la 1re variante (images) — sert au choix + height?: number // automatique des grilles selon l'orientation +} + +export interface Project { + id: string // ex: "01.culturelle/atlas-atterrissage" + category: string // "culturelle" | "publique" | "sociale" + title: string + bodyMarkdown: string + bodyHtml: string + coverImage?: string // 1re image de media_order (= grille du CMS) + media: MediaAsset[] // dans l'ordre de media_order + categories: string[] // taxonomy.category + tags: string[] // taxonomy.tag + date?: string // ISO + externalUrl?: string + published: boolean +} + +// --- Composition (créée dans l'outil, sauvegardée) --- + +export type Background = + | { mode: 'white' } + | { mode: 'tint'; color: string } // aplat clair + | { mode: 'color'; color: string } // pleine couleur + +/** Encre du bandeau d'une page projet : auto = selon luminance du fond. */ +export type InkMode = 'auto' | 'black' | 'white' + +// Média résolu pour un template : URL prête à afficher (spec §9.2) +export interface ResolvedMedia { + filename: string + type: 'image' | 'video' + url: string + posterUrl?: string + ratio?: number // largeur / hauteur intrinsèque (sert au dimensionnement des bandeaux) +} + +/** + * Page « couverture » d'un projet (gabarit p.1/3/5/7) : bandeau pleine + * largeur (titre, pastille catégorie, présentation) + image de couverture. + */ +export interface ProjectPage { + kind: 'project' + id: string // id de page (unique dans le portfolio) + projectId: string + coverImage?: string // défaut : 1re image du projet (grille CMS) + coverFit?: 'width' | 'height' // calage de l'image — défaut : largeur + coverAlign?: 'left' | 'center' | 'right' // calage horizontal (fit hauteur) — défaut : centrée + titleScale?: number // taille du titre en % du gabarit (défaut 100) + bandHeight?: number // hauteur du bandeau en mm = calage haut de l'image (défaut 55) + subtitleOverride?: string // ligne d'intro en gras — sinon taxonomy.category + textOverride?: string // sinon texte Grav + bandColor?: string // défaut : couleur de la catégorie (gabarit) — définit + // aussi la couleur des filets des pages grille du même projet + ink?: InkMode // défaut : auto +} + +/** + * Page « grille » d'un projet (gabarit p.2/4/6/8) : filet couleur en haut, + * images entières calées sur une grille, fond blanc. + */ +export interface ProjectGridPage { + kind: 'project-grid' + id: string + projectId: string + grid: string // id de GridDef (composables/useGrids) + media: string[] // filenames choisis + ordonnés — images uniquement + greyBg?: boolean // fond gris clair (#f5f5f5) au lieu de blanc + // Pas de couleur de filet propre : il hérite du bandeau de la page + // couverture du même projet. +} + +export interface FreePage { + kind: 'free' + id: string + template: 'free-text' + title?: string + body?: string // markdown saisi dans l'UI + media?: string[] // "projectId/filename" optionnels + background: Background + bandColor?: string // filet haut optionnel +} + +export interface CoverPage { + kind: 'cover' + id: string + background: Background + bandColor?: string // filet couleur en bas — définit aussi le filet du sommaire +} + +export interface TocPage { + kind: 'toc' + id: string + title?: string + background: Background + // Pas de couleur de filet propre : il hérite du filet de la couverture. +} + +export type Page = ProjectPage | ProjectGridPage | FreePage | CoverPage | TocPage + +export interface CoverConfig { + title: string + subtitle?: string + recipient?: string // « préparé pour … » + backgroundImage?: string // "projectId/filename" + background: Background // couleur du bandeau de couverture + siteUrl?: string // lien affiché dans le header de la vue publique (défaut DEFAULT_SITE_URL) + contactEmail?: string // mail de contact du header public (défaut DEFAULT_CONTACT_EMAIL) +} + +// Contenu figé à la génération (spec §7.3) +export interface FrozenSnapshot { + generatedAt: string + fileName: string + projects: Record // projets tels qu'utilisés à la génération +} + +export interface Portfolio { + id: string + name: string + cover: CoverConfig + pages: Page[] + createdAt: string + updatedAt: string + frozenContent?: FrozenSnapshot + lastExport?: { fileName: string; at: string } + publicShare?: boolean // lien public /view/ activé (opt-in, révocable) +} + +export interface PortfolioSummary { + id: string + name: string + pageCount: number + updatedAt: string + createdAt: string + coverTitle: string + hasPdf: boolean + pdfCurrent: boolean // un PDF existe et reflète l'état courant (non modifié depuis) + exportFileName?: string // nom du dernier PDF généré (pour téléchargement direct) + publicShare: boolean // lien public /view/ actif +}