From 39e3328123e760e85bd93951abbf5675feb38fa2 Mon Sep 17 00:00:00 2001
From: Julien Froidefond
Date: Sun, 7 Dec 2025 09:54:05 +0100
Subject: [PATCH] chore: update various components and services for improved
functionality and consistency, including formatting adjustments and minor
refactors
---
ENV.md | 3 +
docs/cache-debug.md | 71 +-
docs/caching.md | 117 +-
docs/services.md | 21 -
next.config.js | 8 +-
pnpm-lock.yaml | 5821 +++++++++++------
public/offline.html | 7 +-
public/sw.js | 4 +-
scripts/check-db.mjs | 16 +-
scripts/init-db.mjs | 5 +-
scripts/reset-admin-password.mjs | 7 +-
src/app/account/page.tsx | 2 +-
src/app/admin/page.tsx | 4 +-
src/app/api/admin/stats/route.ts | 11 +-
.../admin/users/[userId]/password/route.ts | 26 +-
src/app/api/admin/users/[userId]/route.ts | 35 +-
src/app/api/admin/users/route.ts | 10 +-
src/app/api/auth/[...nextauth]/route.ts | 2 +-
.../[bookId]/pages/[pageNumber]/route.ts | 4 +-
src/app/api/komga/books/[bookId]/route.ts | 2 +-
src/app/api/komga/cache/clear/route.ts | 4 +-
src/app/api/komga/cache/entries/route.ts | 3 +-
src/app/api/komga/cache/size/route.ts | 9 +-
src/app/api/komga/favorites/route.ts | 6 +-
src/app/api/komga/home/route.ts | 1 -
.../[bookId]/pages/[pageNumber]/route.ts | 6 +-
.../pages/[pageNumber]/thumbnail/route.ts | 6 +-
.../images/books/[bookId]/thumbnail/route.ts | 6 +-
.../series/[seriesId]/first-page/route.ts | 6 +-
.../series/[seriesId]/thumbnail/route.ts | 6 +-
.../komga/libraries/[libraryId]/scan/route.ts | 3 +-
.../libraries/[libraryId]/series/route.ts | 11 +-
src/app/api/komga/random-book/route.ts | 1 -
.../komga/series/[seriesId]/books/route.ts | 13 +-
src/app/api/komga/series/[seriesId]/route.ts | 4 +-
src/app/api/preferences/route.ts | 7 +-
src/app/api/user/password/route.ts | 20 +-
src/app/books/[bookId]/layout.tsx | 7 +-
src/app/books/[bookId]/page.tsx | 2 +-
src/app/downloads/page.tsx | 2 +-
src/app/layout.tsx | 23 +-
.../[libraryId]/ClientLibraryPage.tsx | 26 +-
.../series/[seriesId]/ClientSeriesPage.tsx | 9 +-
src/app/series/[seriesId]/loading.tsx | 1 -
src/app/settings/page.tsx | 2 +-
src/components/account/ChangePasswordForm.tsx | 4 +-
src/components/account/UserProfileCard.tsx | 8 +-
src/components/admin/AdminContent.tsx | 10 +-
src/components/admin/DeleteUserDialog.tsx | 8 +-
src/components/admin/EditUserDialog.tsx | 8 +-
src/components/admin/ResetPasswordDialog.tsx | 7 +-
src/components/admin/StatsCards.tsx | 1 -
src/components/admin/UsersTable.tsx | 10 +-
src/components/auth/RegisterForm.tsx | 20 +-
.../common/PullToRefreshIndicator.tsx | 29 +-
src/components/common/ViewModeButton.tsx | 1 -
src/components/downloads/DownloadManager.tsx | 120 +-
src/components/home/ClientHomePage.tsx | 9 +-
src/components/home/HomeContent.tsx | 4 +-
src/components/home/MediaRow.tsx | 8 +-
src/components/layout/ClientLayout.tsx | 44 +-
src/components/layout/Header.tsx | 10 +-
src/components/layout/Sidebar.tsx | 20 +-
src/components/library/LibraryHeader.tsx | 32 +-
.../library/PaginatedSeriesGrid.tsx | 37 +-
src/components/library/ScanButton.tsx | 4 +-
src/components/library/SeriesList.tsx | 32 +-
src/components/reader/ClientBookPage.tsx | 3 +-
src/components/reader/ClientBookWrapper.tsx | 4 +-
src/components/reader/PhotoswipeReader.tsx | 131 +-
.../reader/components/PageDisplay.tsx | 38 +-
.../reader/components/ReaderContainer.tsx | 13 +-
.../reader/components/Thumbnail.tsx | 4 +-
.../reader/hooks/useDoublePageMode.ts | 2 +-
src/components/reader/hooks/useFullscreen.ts | 4 +-
src/components/reader/hooks/useImageLoader.ts | 400 +-
.../reader/hooks/usePageNavigation.ts | 12 +-
.../reader/hooks/usePhotoSwipeZoom.ts | 20 +-
.../reader/hooks/useTouchNavigation.ts | 138 +-
src/components/series/BookGrid.tsx | 5 +-
src/components/series/BookList.tsx | 30 +-
src/components/series/PaginatedBookGrid.tsx | 34 +-
src/components/series/SeriesHeader.tsx | 9 +-
src/components/settings/AdvancedSettings.tsx | 4 +-
.../settings/BackgroundSettings.tsx | 7 +-
src/components/settings/CacheSettings.tsx | 215 +-
src/components/settings/ClientSettings.tsx | 2 +-
src/components/settings/KomgaSettings.tsx | 1 -
.../skeletons/OptimizedSkeletons.tsx | 11 +-
src/components/ui/ErrorMessage.tsx | 19 +-
src/components/ui/badge.tsx | 7 +-
src/components/ui/book-cover.tsx | 8 +-
src/components/ui/book-offline-button.tsx | 4 +-
src/components/ui/button.tsx | 12 +-
src/components/ui/card.tsx | 5 +-
src/components/ui/checkbox.tsx | 1 -
src/components/ui/container.tsx | 4 +-
src/components/ui/cover-client.tsx | 9 +-
src/components/ui/icon-button.tsx | 1 -
src/components/ui/label.tsx | 16 +-
src/components/ui/nav-button.tsx | 5 +-
src/components/ui/progress-bar.tsx | 9 +-
src/components/ui/radio-group.tsx | 5 +-
src/components/ui/scroll-container.tsx | 6 +-
src/components/ui/section.tsx | 1 -
src/components/ui/separator.tsx | 1 -
src/components/ui/skeleton.tsx | 13 +-
src/components/ui/slider-control.tsx | 5 +-
src/components/ui/slider.tsx | 22 +-
src/components/ui/status-badge.tsx | 10 +-
src/components/ui/switch.tsx | 6 +-
src/components/ui/table.tsx | 12 +-
src/components/ui/toast.tsx | 3 +-
src/constants/errorCodes.ts | 6 +-
src/contexts/ImageCacheContext.tsx | 1 -
src/contexts/PreferencesContext.tsx | 6 +-
src/hooks/useBookOfflineStatus.ts | 1 -
src/hooks/useImageUrl.ts | 3 +-
src/hooks/usePullToRefresh.ts | 42 +-
src/lib/auth-utils.ts | 8 +-
src/lib/auth.ts | 4 +-
src/lib/logger.ts | 34 +-
src/lib/middleware-auth.ts | 6 +-
src/lib/prisma.ts | 1 -
src/lib/services/admin.service.ts | 16 +-
src/lib/services/base-api.service.ts | 171 +-
src/lib/services/book.service.ts | 30 +-
src/lib/services/circuit-breaker.service.ts | 30 +-
src/lib/services/preferences.service.ts | 38 +-
.../services/request-deduplication.service.ts | 1 -
src/lib/services/request-monitor.service.ts | 4 +-
src/lib/services/request-queue.service.ts | 11 +-
src/lib/services/series.service.ts | 2 +-
src/lib/services/server-cache.service.ts | 38 +-
src/lib/services/user.service.ts | 6 +-
src/lib/utils/image-url.ts | 1 -
src/middleware.ts | 4 +-
src/styles/globals.css | 4 +-
src/types/home.ts | 1 -
src/types/next-auth.d.ts | 2 +-
src/utils/image-errors.ts | 7 +-
141 files changed, 5292 insertions(+), 3243 deletions(-)
diff --git a/ENV.md b/ENV.md
index 862ceb9..a2e4c36 100644
--- a/ENV.md
+++ b/ENV.md
@@ -1,6 +1,7 @@
# Variables d'environnement requises
## Production (.env)
+
```env
# Database Configuration (SQLite)
DATABASE_URL=file:./data/stripstream.db
@@ -30,9 +31,11 @@ NODE_ENV=production
```
## Génération du secret NextAuth
+
```bash
openssl rand -base64 32
```
## Développement
+
Pour le développement, les variables sont définies directement dans `docker-compose.dev.yml`.
diff --git a/docs/cache-debug.md b/docs/cache-debug.md
index 1a54195..ccde2cd 100644
--- a/docs/cache-debug.md
+++ b/docs/cache-debug.md
@@ -15,12 +15,14 @@ CACHE_DEBUG=true
### Configuration
#### Développement (docker-compose.dev.yml)
+
```yaml
environment:
- CACHE_DEBUG=true
```
#### Production (.env)
+
```env
CACHE_DEBUG=true
```
@@ -30,49 +32,61 @@ CACHE_DEBUG=true
Les logs de cache apparaissent dans la console serveur avec le format suivant :
### Cache HIT (donnée valide)
+
```
[CACHE HIT] home-ongoing | HOME | 0.45ms
```
+
- ✅ Donnée trouvée en cache
- ✅ Donnée encore valide (pas expirée)
- ⚡ Retour immédiat (très rapide)
### Cache STALE (donnée expirée)
+
```
[CACHE STALE] home-ongoing | HOME | 0.52ms
```
+
- ✅ Donnée trouvée en cache
- ⚠️ Donnée expirée mais toujours retournée
- 🔄 Revalidation lancée en background
### Cache MISS (pas de donnée)
+
```
[CACHE MISS] home-ongoing | HOME
```
+
- ❌ Aucune donnée en cache
- 🌐 Fetch normal depuis Komga
- 💾 Mise en cache automatique
### Cache SET (mise en cache)
+
```
[CACHE SET] home-ongoing | HOME | 324.18ms
```
+
- 💾 Donnée mise en cache après fetch
- 📊 Temps total incluant le fetch Komga
- ✅ Prochaines requêtes seront rapides
### Cache REVALIDATE (revalidation background)
+
```
[CACHE REVALIDATE] home-ongoing | HOME | 287.45ms
```
+
- 🔄 Revalidation en background (après STALE)
- 🌐 Nouvelle donnée fetched depuis Komga
- 💾 Cache mis à jour pour les prochaines requêtes
### Erreur de revalidation
+
```
[CACHE REVALIDATE ERROR] home-ongoing: Error: ...
```
+
- ❌ Échec de la revalidation background
- ⚠️ Cache ancien conservé
- 🔄 Retry au prochain STALE
@@ -81,14 +95,14 @@ Les logs de cache apparaissent dans la console serveur avec le format suivant :
Les logs affichent le type de TTL utilisé :
-| Type | TTL | Usage |
-|------|-----|-------|
-| `DEFAULT` | 5 min | Données génériques |
-| `HOME` | 10 min | Page d'accueil |
-| `LIBRARIES` | 24h | Bibliothèques |
-| `SERIES` | 5 min | Séries |
-| `BOOKS` | 5 min | Livres |
-| `IMAGES` | 7 jours | Images |
+| Type | TTL | Usage |
+| ----------- | ------- | ------------------ |
+| `DEFAULT` | 5 min | Données génériques |
+| `HOME` | 10 min | Page d'accueil |
+| `LIBRARIES` | 24h | Bibliothèques |
+| `SERIES` | 5 min | Séries |
+| `BOOKS` | 5 min | Livres |
+| `IMAGES` | 7 jours | Images |
## Exemple de session complète
@@ -113,22 +127,27 @@ Les logs affichent le type de TTL utilisé :
### 1. DevTools du navigateur
#### Network Tab
+
- Temps de réponse < 50ms = probablement du cache serveur
- Headers `X-Cache` si configurés
- Onglet "Timing" pour détails
#### Application → Cache Storage
+
Inspectez le cache du Service Worker :
+
- `stripstream-cache-v1` : Ressources statiques
- `stripstream-images-v1` : Images (covers + pages)
Actions disponibles :
+
- ✅ Voir le contenu de chaque cache
- 🔍 Chercher une URL spécifique
- 🗑️ Supprimer des entrées
- 🧹 Vider complètement un cache
#### Application → Service Workers
+
- État du Service Worker
- "Unregister" pour le désactiver
- "Update" pour forcer une mise à jour
@@ -137,10 +156,13 @@ Actions disponibles :
### 2. API de monitoring
#### Taille du cache
+
```bash
curl http://localhost:3000/api/komga/cache/size
```
+
Response :
+
```json
{
"sizeInBytes": 15728640,
@@ -149,10 +171,13 @@ Response :
```
#### Mode actuel
+
```bash
curl http://localhost:3000/api/komga/cache/mode
```
+
Response :
+
```json
{
"mode": "memory"
@@ -160,11 +185,13 @@ Response :
```
#### Vider le cache
+
```bash
curl -X POST http://localhost:3000/api/komga/cache/clear
```
#### Changer de mode
+
```bash
curl -X POST http://localhost:3000/api/komga/cache/mode \
-H "Content-Type: application/json" \
@@ -190,6 +217,7 @@ cat .cache/user-id/home-ongoing.json | jq
```
Exemple de contenu :
+
```json
{
"data": {
@@ -206,6 +234,7 @@ Exemple de contenu :
### Identifier un problème de cache
**Symptôme** : Les données ne se rafraîchissent pas
+
```bash
# 1. Vérifier si STALE + REVALIDATE se produisent
CACHE_DEBUG=true
@@ -222,6 +251,7 @@ CACHE_DEBUG=true
### Optimiser les performances
**Objectif** : Identifier les requêtes lentes
+
```bash
# Activer les logs
CACHE_DEBUG=true
@@ -231,7 +261,8 @@ CACHE_DEBUG=true
[CACHE SET] library-456-all-series | SERIES | 2847.32ms # ⚠️ Très lent !
```
-**Solution** :
+**Solution** :
+
- Vérifier la taille des bibliothèques
- Augmenter le TTL pour ces données
- Considérer la pagination
@@ -251,29 +282,33 @@ En mode `file` : les caches survivent au redémarrage
### Temps de réponse normaux
-| Scénario | Temps attendu | Log |
-|----------|---------------|-----|
-| Cache HIT | < 1ms | `[CACHE HIT] ... \| 0.45ms` |
-| Cache STALE | < 1ms | `[CACHE STALE] ... \| 0.52ms` |
-| Cache MISS (petit) | 50-200ms | `[CACHE SET] ... \| 124.18ms` |
-| Cache MISS (gros) | 200-1000ms | `[CACHE SET] ... \| 847.32ms` |
-| Revalidate (background) | Variable | `[CACHE REVALIDATE] ... \| 287.45ms` |
+| Scénario | Temps attendu | Log |
+| ----------------------- | ------------- | ------------------------------------ |
+| Cache HIT | < 1ms | `[CACHE HIT] ... \| 0.45ms` |
+| Cache STALE | < 1ms | `[CACHE STALE] ... \| 0.52ms` |
+| Cache MISS (petit) | 50-200ms | `[CACHE SET] ... \| 124.18ms` |
+| Cache MISS (gros) | 200-1000ms | `[CACHE SET] ... \| 847.32ms` |
+| Revalidate (background) | Variable | `[CACHE REVALIDATE] ... \| 287.45ms` |
### Signaux d'alerte
⚠️ **Cache HIT > 10ms**
+
- Problème : Disque lent (mode file)
- Solution : Vérifier les I/O, passer en mode memory
⚠️ **Cache MISS > 2000ms**
+
- Problème : Komga très lent ou données énormes
- Solution : Vérifier Komga, optimiser la requête
⚠️ **REVALIDATE ERROR fréquents**
+
- Problème : Komga instable ou réseau
- Solution : Augmenter les timeouts, vérifier la connectivité
⚠️ **Trop de MISS successifs**
+
- Problème : Cache pas conservé ou TTL trop court
- Solution : Vérifier le mode, augmenter les TTL
@@ -294,12 +329,14 @@ Les logs sont **automatiquement désactivés** si la variable n'est pas définie
## Logs et performance
**Impact sur les performances** :
+
- Overhead : < 0.1ms par opération
- Pas d'écriture disque (juste console)
- Pas d'accumulation en mémoire
- Safe pour la production
**Recommandations** :
+
- ✅ Activé en développement
- ✅ Activé temporairement en production pour diagnostics
- ❌ Pas nécessaire en production normale
@@ -307,6 +344,7 @@ Les logs sont **automatiquement désactivés** si la variable n'est pas définie
## Conclusion
Le système de logs de cache est conçu pour être :
+
- 🎯 **Simple** : Format clair et concis
- ⚡ **Rapide** : Impact négligeable sur les performances
- 🔧 **Utile** : Informations essentielles pour le debug
@@ -314,4 +352,3 @@ Le système de logs de cache est conçu pour être :
Pour la plupart des besoins de debug, les DevTools du navigateur suffisent.
Les logs serveur sont utiles pour comprendre le comportement du cache côté backend.
-
diff --git a/docs/caching.md b/docs/caching.md
index 92a14de..e50eef5 100644
--- a/docs/caching.md
+++ b/docs/caching.md
@@ -34,9 +34,11 @@ Le système de caching est organisé en **3 couches indépendantes** avec des re
## Couche 1 : Service Worker (Client)
### Fichier
+
`public/sw.js`
### Responsabilité
+
- Support offline de l'application
- Cache persistant des images (couvertures et pages de livres)
- Cache des ressources statiques Next.js
@@ -44,20 +46,22 @@ Le système de caching est organisé en **3 couches indépendantes** avec des re
### Stratégies
#### Images : Cache-First
+
```javascript
// Pour toutes les images (covers + pages)
const isImageResource = (url) => {
return (
- (url.includes("/api/v1/books/") &&
+ (url.includes("/api/v1/books/") &&
(url.includes("/pages") || url.includes("/thumbnail") || url.includes("/cover"))) ||
- (url.includes("/api/komga/images/") &&
- (url.includes("/series/") || url.includes("/books/")) &&
+ (url.includes("/api/komga/images/") &&
+ (url.includes("/series/") || url.includes("/books/")) &&
url.includes("/thumbnail"))
);
};
```
**Comportement** :
+
1. Vérifier si l'image est dans le cache
2. Si oui → retourner depuis le cache
3. Si non → fetch depuis le réseau
@@ -65,11 +69,13 @@ const isImageResource = (url) => {
5. Si échec → retourner 404
**Avantages** :
+
- Performance maximale (lecture instantanée depuis le cache)
- Fonctionne offline une fois les images chargées
- Économise la bande passante
#### Navigation et ressources statiques : Network-First
+
```javascript
// Pour les pages et ressources _next/static
event.respondWith(
@@ -85,7 +91,7 @@ event.respondWith(
// Fallback sur le cache si offline
const cachedResponse = await cache.match(request);
if (cachedResponse) return cachedResponse;
-
+
// Page offline si navigation
if (request.mode === "navigate") {
return cache.match("/offline.html");
@@ -95,18 +101,20 @@ event.respondWith(
```
**Avantages** :
+
- Toujours la dernière version quand online
- Fallback offline si nécessaire
- Navigation fluide même sans connexion
### Caches
-| Cache | Usage | Stratégie | Taille |
-|-------|-------|-----------|--------|
-| `stripstream-cache-v1` | Ressources statiques + pages | Network-First | ~5 MB |
-| `stripstream-images-v1` | Images (covers + pages) | Cache-First | Illimité |
+| Cache | Usage | Stratégie | Taille |
+| ----------------------- | ---------------------------- | ------------- | -------- |
+| `stripstream-cache-v1` | Ressources statiques + pages | Network-First | ~5 MB |
+| `stripstream-images-v1` | Images (covers + pages) | Cache-First | Illimité |
### Nettoyage
+
- Automatique lors de l'activation du Service Worker
- Suppression des anciennes versions de cache
- Pas d'expiration (contrôlé par l'utilisateur via les paramètres du navigateur)
@@ -114,9 +122,11 @@ event.respondWith(
## Couche 2 : ServerCacheService (Serveur)
### Fichier
+
`src/lib/services/server-cache.service.ts`
### Responsabilité
+
- Cache des réponses API Komga côté serveur
- Optimisation des temps de réponse
- Réduction de la charge sur Komga
@@ -126,6 +136,7 @@ event.respondWith(
Cette stratégie est **la clé de la performance** de l'application.
#### Principe
+
```
Requête → Cache existe ?
├─ Non → Fetch normal + mise en cache
@@ -136,6 +147,7 @@ Requête → Cache existe ?
```
#### Implémentation
+
```typescript
async getOrSet(
key: string,
@@ -144,7 +156,7 @@ async getOrSet(
): Promise {
const cacheKey = `${user.id}-${key}`;
const cachedResult = this.getStale(cacheKey);
-
+
if (cachedResult !== null) {
const { data, isStale } = cachedResult;
@@ -164,12 +176,14 @@ async getOrSet(
```
#### Avantages
+
✅ **Temps de réponse constant** : Le cache expiré est retourné instantanément
✅ **Données fraîches** : Revalidation en background pour la prochaine requête
✅ **Pas de délai** : L'utilisateur ne subit jamais l'attente de revalidation
✅ **Résilience** : Même si Komga est lent, l'app reste rapide
#### Inconvénients
+
⚠️ Les données peuvent être légèrement obsolètes (jusqu'au prochain refresh)
⚠️ Nécessite un cache initialisé (première requête toujours lente)
@@ -178,9 +192,11 @@ async getOrSet(
L'utilisateur peut choisir entre deux modes :
#### Mode Mémoire (par défaut)
+
```typescript
-cacheMode: "memory"
+cacheMode: "memory";
```
+
- Cache stocké en RAM
- **Performances** : Très rapide (lecture < 1ms)
- **Persistance** : Perdu au redémarrage du serveur
@@ -188,9 +204,11 @@ cacheMode: "memory"
- **Idéal pour** : Développement, faible charge
#### Mode Fichier
+
```typescript
-cacheMode: "file"
+cacheMode: "file";
```
+
- Cache stocké sur disque (`.cache/`)
- **Performances** : Rapide (lecture 5-10ms)
- **Persistance** : Survit aux redémarrages
@@ -201,14 +219,14 @@ cacheMode: "file"
Chaque type de données a un TTL configuré :
-| Type | TTL par défaut | Justification |
-|------|----------------|---------------|
-| `DEFAULT` | 5 minutes | Données génériques |
-| `HOME` | 10 minutes | Page d'accueil (données agrégées) |
-| `LIBRARIES` | 24 heures | Bibliothèques (rarement modifiées) |
-| `SERIES` | 5 minutes | Séries (métadonnées + progression) |
-| `BOOKS` | 5 minutes | Livres (métadonnées + progression) |
-| `IMAGES` | 7 jours | Images (immuables) |
+| Type | TTL par défaut | Justification |
+| ----------- | -------------- | ---------------------------------- |
+| `DEFAULT` | 5 minutes | Données génériques |
+| `HOME` | 10 minutes | Page d'accueil (données agrégées) |
+| `LIBRARIES` | 24 heures | Bibliothèques (rarement modifiées) |
+| `SERIES` | 5 minutes | Séries (métadonnées + progression) |
+| `BOOKS` | 5 minutes | Livres (métadonnées + progression) |
+| `IMAGES` | 7 jours | Images (immuables) |
#### Configuration personnalisée
@@ -235,6 +253,7 @@ const cacheKey = `${user.id}-${key}`;
```
**Avantages** :
+
- Pas de collision entre utilisateurs
- Progression de lecture individuelle
- Préférences personnalisées
@@ -244,18 +263,21 @@ const cacheKey = `${user.id}-${key}`;
Le cache peut être invalidé :
#### Manuellement
+
```typescript
-await cacheService.delete(key); // Une clé
-await cacheService.deleteAll(prefix); // Toutes les clés avec préfixe
-await cacheService.clear(); // Tout le cache
+await cacheService.delete(key); // Une clé
+await cacheService.deleteAll(prefix); // Toutes les clés avec préfixe
+await cacheService.clear(); // Tout le cache
```
#### Automatiquement
+
- Lors d'une mise à jour de progression
- Lors d'un changement de favoris
- Lors de la suppression d'une série
#### API
+
```
DELETE /api/komga/cache/clear // Vider tout le cache
DELETE /api/komga/home // Invalider le cache home
@@ -264,12 +286,14 @@ DELETE /api/komga/home // Invalider le cache home
## Couche 3 : Cache HTTP (Navigateur)
### Responsabilité
+
- Cache basique géré par le navigateur
- Headers HTTP standard
### Configuration
#### Next.js ISR (Incremental Static Regeneration)
+
```typescript
export const revalidate = 60; // Revalidation toutes les 60 secondes
```
@@ -279,20 +303,23 @@ Utilisé uniquement pour les routes avec rendu statique.
#### Headers explicites (désactivé)
Les headers HTTP explicites ont été **supprimés** car :
+
- Le ServerCacheService gère déjà le caching efficacement
- Évite la confusion entre plusieurs couches de cache
- Simplifie le debugging
Avant (supprimé) :
+
```typescript
NextResponse.json(data, {
headers: {
- 'Cache-Control': 'public, s-maxage=60, stale-while-revalidate=120'
- }
+ "Cache-Control": "public, s-maxage=60, stale-while-revalidate=120",
+ },
});
```
Maintenant :
+
```typescript
NextResponse.json(data); // Pas de headers
```
@@ -322,29 +349,32 @@ Exemple : Chargement de la page d'accueil
### Temps de réponse typiques
-| Scénario | Temps | Détails |
-|----------|-------|---------|
-| Cache ServerCache valide + SW | ~50ms | Optimal |
-| Cache ServerCache expiré + SW | ~50ms | Revalidation en background |
-| Pas de cache ServerCache + SW | ~200-500ms | Première requête |
-| Cache SW uniquement | ~10ms | Images seulement |
-| Tout à froid | ~500-1000ms | Pire cas |
+| Scénario | Temps | Détails |
+| ----------------------------- | ----------- | -------------------------- |
+| Cache ServerCache valide + SW | ~50ms | Optimal |
+| Cache ServerCache expiré + SW | ~50ms | Revalidation en background |
+| Pas de cache ServerCache + SW | ~200-500ms | Première requête |
+| Cache SW uniquement | ~10ms | Images seulement |
+| Tout à froid | ~500-1000ms | Pire cas |
## Cas d'usage
### 1. Première visite
+
```
User → App → Komga (tous les caches vides)
Temps : ~500-1000ms
```
### 2. Visite suivante (online)
+
```
User → ServerCache (valide) → Images SW
Temps : ~50ms
```
### 3. Cache expiré (online)
+
```
User → ServerCache (stale) → Retour immédiat
↓
@@ -353,6 +383,7 @@ Temps ressenti : ~50ms (aucun délai)
```
### 4. Mode offline
+
```
User → Service Worker cache uniquement
Fonctionnalités :
@@ -373,6 +404,7 @@ CACHE_DEBUG=true
```
**Format des logs** :
+
```
[CACHE HIT] home-ongoing | HOME | 0.45ms # Cache valide
[CACHE STALE] home-ongoing | HOME | 0.52ms # Cache expiré (retourné + revalidation)
@@ -386,24 +418,28 @@ CACHE_DEBUG=true
### API de monitoring
#### Taille du cache serveur
+
```bash
GET /api/komga/cache/size
Response: { sizeInBytes: 15728640, itemCount: 234 }
```
#### Mode de cache actuel
+
```bash
GET /api/komga/cache/mode
Response: { mode: "memory" }
```
#### Changer le mode
+
```bash
POST /api/komga/cache/mode
Body: { mode: "file" }
```
#### Vider le cache
+
```bash
POST /api/komga/cache/clear
```
@@ -411,21 +447,26 @@ POST /api/komga/cache/clear
### DevTools du navigateur
#### Network Tab
+
- Temps de réponse < 50ms = cache serveur
- Headers `X-Cache` si configurés
- Onglet "Timing" pour détails
#### Application → Cache Storage
+
Inspecter le Service Worker :
+
- `stripstream-cache-v1` : Ressources statiques
- `stripstream-images-v1` : Images
Actions disponibles :
+
- Voir le contenu
- Supprimer des entrées
- Vider complètement
#### Application → Service Workers
+
- État du Service Worker
- "Unregister" pour le désactiver
- "Update" pour forcer une mise à jour
@@ -433,21 +474,25 @@ Actions disponibles :
## Optimisations futures possibles
### 1. Cache Redis (optionnel)
+
- Pour un déploiement multi-instances
- Cache partagé entre plusieurs serveurs
- TTL natif Redis
### 2. Compression
+
- Compresser les données en cache (Brotli/Gzip)
- Économie d'espace disque/mémoire
- Trade-off CPU vs espace
### 3. Prefetching intelligent
+
- Précharger les séries en cours de lecture
- Précharger les pages suivantes dans le reader
- Basé sur l'historique utilisateur
### 4. Cache Analytics
+
- Ratio hit/miss
- Temps de réponse moyens
- Identification des données les plus consultées
@@ -456,7 +501,8 @@ Actions disponibles :
### Pour les développeurs
-✅ **Utiliser BaseApiService.fetchWithCache()**
+✅ **Utiliser BaseApiService.fetchWithCache()**
+
```typescript
await this.fetchWithCache(
"cache-key",
@@ -465,12 +511,14 @@ await this.fetchWithCache(
);
```
-✅ **Invalider le cache après modification**
+✅ **Invalider le cache après modification**
+
```typescript
await HomeService.invalidateHomeCache();
```
-✅ **Choisir le bon TTL**
+✅ **Choisir le bon TTL**
+
- Court (1-5 min) : Données qui changent souvent
- Moyen (10-30 min) : Données agrégées
- Long (24h+) : Données quasi-statiques
@@ -499,4 +547,3 @@ Le système de caching de StripStream est conçu pour :
🧹 **Simplicité** : 3 couches bien définies, pas de redondance
Le système est maintenu simple avec des responsabilités claires pour chaque couche, facilitant la maintenance et l'évolution future.
-
diff --git a/docs/services.md b/docs/services.md
index 52ff504..b7828d9 100644
--- a/docs/services.md
+++ b/docs/services.md
@@ -7,12 +7,10 @@ Service de gestion de l'authentification
### Méthodes
- `loginUser(email: string, password: string): Promise`
-
- Authentifie un utilisateur
- Retourne les données utilisateur
- `createUser(email: string, password: string): Promise`
-
- Crée un nouvel utilisateur
- Retourne les données utilisateur
@@ -26,12 +24,10 @@ Service de gestion des bibliothèques
### Méthodes
- `getLibraries(): Promise`
-
- Récupère la liste des bibliothèques
- Met en cache les résultats
- `getLibrary(libraryId: string): Promise`
-
- Récupère une bibliothèque spécifique
- Lance une erreur si non trouvée
@@ -51,11 +47,9 @@ Service de gestion des séries
### Méthodes
- `getSeries(seriesId: string): Promise`
-
- Récupère les détails d'une série
- `getSeriesBooks(seriesId: string, page: number = 0, size: number = 24, unreadOnly: boolean = false): Promise>`
-
- Récupère les livres d'une série
- Supporte la pagination et le filtrage
@@ -69,19 +63,15 @@ Service de gestion des livres
### Méthodes
- `getBook(bookId: string): Promise<{ book: KomgaBook; pages: number[] }>`
-
- Récupère les détails d'un livre et ses pages
- `updateReadProgress(bookId: string, page: number, completed: boolean = false): Promise`
-
- Met à jour la progression de lecture
- `getPage(bookId: string, pageNumber: number): Promise`
-
- Récupère une page spécifique d'un livre
- `getCover(bookId: string): Promise`
-
- Récupère la couverture d'un livre
- `getPageThumbnail(bookId: string, pageNumber: number): Promise`
@@ -94,16 +84,13 @@ Service de gestion des images
### Méthodes
- `getImage(path: string): Promise`
-
- Récupère une image depuis le serveur
- Gère le cache des images
- `getSeriesThumbnailUrl(seriesId: string): string`
-
- Génère l'URL de la miniature d'une série
- `getBookThumbnailUrl(bookId: string): string`
-
- Génère l'URL de la miniature d'un livre
- `getBookPageUrl(bookId: string, pageNumber: number): string`
@@ -116,15 +103,12 @@ Service de gestion de la configuration
### Méthodes
- `getConfig(): Promise`
-
- Récupère la configuration Komga
- `saveConfig(config: Config): Promise`
-
- Sauvegarde la configuration Komga
- `getTTLConfig(): Promise`
-
- Récupère la configuration TTL
- `saveTTLConfig(config: TTLConfig): Promise`
@@ -137,7 +121,6 @@ Service de gestion du cache serveur
### Méthodes
- `getCacheMode(): string`
-
- Récupère le mode de cache actuel
- `clearCache(): void`
@@ -159,7 +142,6 @@ Service de gestion des préférences
### Méthodes
- `getPreferences(): Promise`
-
- Récupère les préférences utilisateur
- `savePreferences(preferences: Preferences): Promise`
@@ -182,15 +164,12 @@ Service de base pour les appels API
### Méthodes
- `buildUrl(config: Config, path: string, params?: Record): string`
-
- Construit une URL d'API
- `getAuthHeaders(config: Config): Headers`
-
- Génère les en-têtes d'authentification
- `fetchFromApi(url: string, headers: Headers, raw?: boolean): Promise`
-
- Effectue un appel API avec gestion d'erreurs
- `fetchWithCache(key: string, fetcher: () => Promise, type: CacheType): Promise`
diff --git a/next.config.js b/next.config.js
index ddf0657..76935c9 100644
--- a/next.config.js
+++ b/next.config.js
@@ -8,13 +8,13 @@ const nextConfig = {
return config;
},
// Configuration pour améliorer la résolution DNS
- serverExternalPackages: ['dns', 'pino', 'pino-pretty'],
+ serverExternalPackages: ["dns", "pino", "pino-pretty"],
// Optimisations pour Docker dev
turbopack: {
rules: {
- '*.svg': {
- loaders: ['@svgr/webpack'],
- as: '*.js',
+ "*.svg": {
+ loaders: ["@svgr/webpack"],
+ as: "*.js",
},
},
},
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 5b2fc09..8fd2b60 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,51 +1,50 @@
-lockfileVersion: '9.0'
+lockfileVersion: "9.0"
settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
overrides:
- glob: '>=10.5.0'
- js-yaml: '>=4.1.1'
+ glob: ">=10.5.0"
+ js-yaml: ">=4.1.1"
importers:
-
.:
dependencies:
- '@prisma/client':
+ "@prisma/client":
specifier: ^6.17.1
version: 6.17.1(prisma@6.17.1(typescript@5.3.3))(typescript@5.3.3)
- '@radix-ui/react-alert-dialog':
+ "@radix-ui/react-alert-dialog":
specifier: ^1.1.15
version: 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-checkbox':
+ "@radix-ui/react-checkbox":
specifier: ^1.3.3
version: 1.3.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-dialog':
+ "@radix-ui/react-dialog":
specifier: 1.1.15
version: 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-dropdown-menu':
+ "@radix-ui/react-dropdown-menu":
specifier: ^2.1.6
version: 2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-progress':
+ "@radix-ui/react-progress":
specifier: ^1.1.2
version: 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-radio-group':
+ "@radix-ui/react-radio-group":
specifier: ^1.3.8
version: 1.3.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-select':
+ "@radix-ui/react-select":
specifier: ^2.1.6
version: 2.2.6(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-slider':
+ "@radix-ui/react-slider":
specifier: ^1.3.6
version: 1.3.6(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-slot':
+ "@radix-ui/react-slot":
specifier: 1.2.3
version: 1.2.3(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-toast':
+ "@radix-ui/react-toast":
specifier: 1.2.15
version: 1.2.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@types/bcryptjs':
+ "@types/bcryptjs":
specifier: ^3.0.0
version: 3.0.0
bcryptjs:
@@ -115,19 +114,19 @@ importers:
specifier: 3.22.4
version: 3.22.4
devDependencies:
- '@types/node':
+ "@types/node":
specifier: 24.7.2
version: 24.7.2
- '@types/react':
+ "@types/react":
specifier: 19.2.2
version: 19.2.2
- '@types/react-dom':
+ "@types/react-dom":
specifier: 19.2.2
version: 19.2.2(@types/react@19.2.2)
- '@typescript-eslint/eslint-plugin':
+ "@typescript-eslint/eslint-plugin":
specifier: ^8.24.0
version: 8.46.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3)
- '@typescript-eslint/parser':
+ "@typescript-eslint/parser":
specifier: 6.21.0
version: 6.21.0(eslint@8.56.0)(typescript@5.3.3)
autoprefixer:
@@ -162,1277 +161,2007 @@ importers:
version: 5.3.3
packages:
+ "@alloc/quick-lru@5.2.0":
+ resolution:
+ {
+ integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==,
+ }
+ engines: { node: ">=10" }
- '@alloc/quick-lru@5.2.0':
- resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
- engines: {node: '>=10'}
-
- '@auth/core@0.41.0':
- resolution: {integrity: sha512-Wd7mHPQ/8zy6Qj7f4T46vg3aoor8fskJm6g2Zyj064oQ3+p0xNZXAV60ww0hY+MbTesfu29kK14Zk5d5JTazXQ==}
+ "@auth/core@0.41.0":
+ resolution:
+ {
+ integrity: sha512-Wd7mHPQ/8zy6Qj7f4T46vg3aoor8fskJm6g2Zyj064oQ3+p0xNZXAV60ww0hY+MbTesfu29kK14Zk5d5JTazXQ==,
+ }
peerDependencies:
- '@simplewebauthn/browser': ^9.0.1
- '@simplewebauthn/server': ^9.0.2
+ "@simplewebauthn/browser": ^9.0.1
+ "@simplewebauthn/server": ^9.0.2
nodemailer: ^6.8.0
peerDependenciesMeta:
- '@simplewebauthn/browser':
+ "@simplewebauthn/browser":
optional: true
- '@simplewebauthn/server':
+ "@simplewebauthn/server":
optional: true
nodemailer:
optional: true
- '@babel/runtime@7.28.4':
- resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==}
- engines: {node: '>=6.9.0'}
+ "@babel/runtime@7.28.4":
+ resolution:
+ {
+ integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==,
+ }
+ engines: { node: ">=6.9.0" }
- '@emnapi/core@1.5.0':
- resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==}
+ "@emnapi/core@1.5.0":
+ resolution:
+ {
+ integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==,
+ }
- '@emnapi/runtime@0.45.0':
- resolution: {integrity: sha512-Txumi3td7J4A/xTTwlssKieHKTGl3j4A1tglBx72auZ49YK7ePY6XZricgIg9mnZT4xPfA+UPCUdnhRuEFDL+w==}
+ "@emnapi/runtime@0.45.0":
+ resolution:
+ {
+ integrity: sha512-Txumi3td7J4A/xTTwlssKieHKTGl3j4A1tglBx72auZ49YK7ePY6XZricgIg9mnZT4xPfA+UPCUdnhRuEFDL+w==,
+ }
- '@emnapi/runtime@1.5.0':
- resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==}
+ "@emnapi/runtime@1.5.0":
+ resolution:
+ {
+ integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==,
+ }
- '@emnapi/runtime@1.7.1':
- resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==}
+ "@emnapi/runtime@1.7.1":
+ resolution:
+ {
+ integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==,
+ }
- '@emnapi/wasi-threads@1.1.0':
- resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==}
+ "@emnapi/wasi-threads@1.1.0":
+ resolution:
+ {
+ integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==,
+ }
- '@emotion/is-prop-valid@0.8.8':
- resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==}
+ "@emotion/is-prop-valid@0.8.8":
+ resolution:
+ {
+ integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==,
+ }
- '@emotion/memoize@0.7.4':
- resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==}
+ "@emotion/memoize@0.7.4":
+ resolution:
+ {
+ integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==,
+ }
- '@eslint-community/eslint-utils@4.9.0':
- resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ "@eslint-community/eslint-utils@4.9.0":
+ resolution:
+ {
+ integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==,
+ }
+ engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
- '@eslint-community/regexpp@4.12.1':
- resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
- engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
+ "@eslint-community/regexpp@4.12.1":
+ resolution:
+ {
+ integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==,
+ }
+ engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 }
- '@eslint/eslintrc@2.1.4':
- resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ "@eslint/eslintrc@2.1.4":
+ resolution:
+ {
+ integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==,
+ }
+ engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
- '@eslint/js@8.56.0':
- resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ "@eslint/js@8.56.0":
+ resolution:
+ {
+ integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==,
+ }
+ engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
- '@floating-ui/core@1.7.3':
- resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==}
+ "@floating-ui/core@1.7.3":
+ resolution:
+ {
+ integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==,
+ }
- '@floating-ui/dom@1.7.4':
- resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==}
+ "@floating-ui/dom@1.7.4":
+ resolution:
+ {
+ integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==,
+ }
- '@floating-ui/react-dom@2.1.6':
- resolution: {integrity: sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==}
+ "@floating-ui/react-dom@2.1.6":
+ resolution:
+ {
+ integrity: sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==,
+ }
peerDependencies:
- react: '>=16.8.0'
- react-dom: '>=16.8.0'
+ react: ">=16.8.0"
+ react-dom: ">=16.8.0"
- '@floating-ui/utils@0.2.10':
- resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==}
+ "@floating-ui/utils@0.2.10":
+ resolution:
+ {
+ integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==,
+ }
- '@humanwhocodes/config-array@0.11.14':
- resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
- engines: {node: '>=10.10.0'}
+ "@humanwhocodes/config-array@0.11.14":
+ resolution:
+ {
+ integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==,
+ }
+ engines: { node: ">=10.10.0" }
deprecated: Use @eslint/config-array instead
- '@humanwhocodes/module-importer@1.0.1':
- resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
- engines: {node: '>=12.22'}
+ "@humanwhocodes/module-importer@1.0.1":
+ resolution:
+ {
+ integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==,
+ }
+ engines: { node: ">=12.22" }
- '@humanwhocodes/object-schema@2.0.3':
- resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
+ "@humanwhocodes/object-schema@2.0.3":
+ resolution:
+ {
+ integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==,
+ }
deprecated: Use @eslint/object-schema instead
- '@img/colour@1.0.0':
- resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==}
- engines: {node: '>=18'}
+ "@img/colour@1.0.0":
+ resolution:
+ {
+ integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==,
+ }
+ engines: { node: ">=18" }
- '@img/sharp-darwin-arm64@0.33.2':
- resolution: {integrity: sha512-itHBs1rPmsmGF9p4qRe++CzCgd+kFYktnsoR1sbIAfsRMrJZau0Tt1AH9KVnufc2/tU02Gf6Ibujx+15qRE03w==}
- engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ "@img/sharp-darwin-arm64@0.33.2":
+ resolution:
+ {
+ integrity: sha512-itHBs1rPmsmGF9p4qRe++CzCgd+kFYktnsoR1sbIAfsRMrJZau0Tt1AH9KVnufc2/tU02Gf6Ibujx+15qRE03w==,
+ }
+ engines:
+ {
+ glibc: ">=2.26",
+ node: ^18.17.0 || ^20.3.0 || >=21.0.0,
+ npm: ">=9.6.5",
+ pnpm: ">=7.1.0",
+ yarn: ">=3.2.0",
+ }
cpu: [arm64]
os: [darwin]
- '@img/sharp-darwin-arm64@0.34.5':
- resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ "@img/sharp-darwin-arm64@0.34.5":
+ resolution:
+ {
+ integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
cpu: [arm64]
os: [darwin]
- '@img/sharp-darwin-x64@0.33.2':
- resolution: {integrity: sha512-/rK/69Rrp9x5kaWBjVN07KixZanRr+W1OiyKdXcbjQD6KbW+obaTeBBtLUAtbBsnlTTmWthw99xqoOS7SsySDg==}
- engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ "@img/sharp-darwin-x64@0.33.2":
+ resolution:
+ {
+ integrity: sha512-/rK/69Rrp9x5kaWBjVN07KixZanRr+W1OiyKdXcbjQD6KbW+obaTeBBtLUAtbBsnlTTmWthw99xqoOS7SsySDg==,
+ }
+ engines:
+ {
+ glibc: ">=2.26",
+ node: ^18.17.0 || ^20.3.0 || >=21.0.0,
+ npm: ">=9.6.5",
+ pnpm: ">=7.1.0",
+ yarn: ">=3.2.0",
+ }
cpu: [x64]
os: [darwin]
- '@img/sharp-darwin-x64@0.34.5':
- resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ "@img/sharp-darwin-x64@0.34.5":
+ resolution:
+ {
+ integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
cpu: [x64]
os: [darwin]
- '@img/sharp-libvips-darwin-arm64@1.0.1':
- resolution: {integrity: sha512-kQyrSNd6lmBV7O0BUiyu/OEw9yeNGFbQhbxswS1i6rMDwBBSX+e+rPzu3S+MwAiGU3HdLze3PanQ4Xkfemgzcw==}
- engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ "@img/sharp-libvips-darwin-arm64@1.0.1":
+ resolution:
+ {
+ integrity: sha512-kQyrSNd6lmBV7O0BUiyu/OEw9yeNGFbQhbxswS1i6rMDwBBSX+e+rPzu3S+MwAiGU3HdLze3PanQ4Xkfemgzcw==,
+ }
+ engines: { macos: ">=11", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" }
cpu: [arm64]
os: [darwin]
- '@img/sharp-libvips-darwin-arm64@1.2.4':
- resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==}
+ "@img/sharp-libvips-darwin-arm64@1.2.4":
+ resolution:
+ {
+ integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==,
+ }
cpu: [arm64]
os: [darwin]
- '@img/sharp-libvips-darwin-x64@1.0.1':
- resolution: {integrity: sha512-eVU/JYLPVjhhrd8Tk6gosl5pVlvsqiFlt50wotCvdkFGf+mDNBJxMh+bvav+Wt3EBnNZWq8Sp2I7XfSjm8siog==}
- engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ "@img/sharp-libvips-darwin-x64@1.0.1":
+ resolution:
+ {
+ integrity: sha512-eVU/JYLPVjhhrd8Tk6gosl5pVlvsqiFlt50wotCvdkFGf+mDNBJxMh+bvav+Wt3EBnNZWq8Sp2I7XfSjm8siog==,
+ }
+ engines: { macos: ">=10.13", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" }
cpu: [x64]
os: [darwin]
- '@img/sharp-libvips-darwin-x64@1.2.4':
- resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==}
+ "@img/sharp-libvips-darwin-x64@1.2.4":
+ resolution:
+ {
+ integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==,
+ }
cpu: [x64]
os: [darwin]
- '@img/sharp-libvips-linux-arm64@1.0.1':
- resolution: {integrity: sha512-bnGG+MJjdX70mAQcSLxgeJco11G+MxTz+ebxlz8Y3dxyeb3Nkl7LgLI0mXupoO+u1wRNx/iRj5yHtzA4sde1yA==}
- engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ "@img/sharp-libvips-linux-arm64@1.0.1":
+ resolution:
+ {
+ integrity: sha512-bnGG+MJjdX70mAQcSLxgeJco11G+MxTz+ebxlz8Y3dxyeb3Nkl7LgLI0mXupoO+u1wRNx/iRj5yHtzA4sde1yA==,
+ }
+ engines: { glibc: ">=2.26", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" }
cpu: [arm64]
os: [linux]
- '@img/sharp-libvips-linux-arm64@1.2.4':
- resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==}
+ "@img/sharp-libvips-linux-arm64@1.2.4":
+ resolution:
+ {
+ integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==,
+ }
cpu: [arm64]
os: [linux]
- '@img/sharp-libvips-linux-arm@1.0.1':
- resolution: {integrity: sha512-FtdMvR4R99FTsD53IA3LxYGghQ82t3yt0ZQ93WMZ2xV3dqrb0E8zq4VHaTOuLEAuA83oDawHV3fd+BsAPadHIQ==}
- engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ "@img/sharp-libvips-linux-arm@1.0.1":
+ resolution:
+ {
+ integrity: sha512-FtdMvR4R99FTsD53IA3LxYGghQ82t3yt0ZQ93WMZ2xV3dqrb0E8zq4VHaTOuLEAuA83oDawHV3fd+BsAPadHIQ==,
+ }
+ engines: { glibc: ">=2.28", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" }
cpu: [arm]
os: [linux]
- '@img/sharp-libvips-linux-arm@1.2.4':
- resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==}
+ "@img/sharp-libvips-linux-arm@1.2.4":
+ resolution:
+ {
+ integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==,
+ }
cpu: [arm]
os: [linux]
- '@img/sharp-libvips-linux-ppc64@1.2.4':
- resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==}
+ "@img/sharp-libvips-linux-ppc64@1.2.4":
+ resolution:
+ {
+ integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==,
+ }
cpu: [ppc64]
os: [linux]
- '@img/sharp-libvips-linux-riscv64@1.2.4':
- resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==}
+ "@img/sharp-libvips-linux-riscv64@1.2.4":
+ resolution:
+ {
+ integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==,
+ }
cpu: [riscv64]
os: [linux]
- '@img/sharp-libvips-linux-s390x@1.0.1':
- resolution: {integrity: sha512-3+rzfAR1YpMOeA2zZNp+aYEzGNWK4zF3+sdMxuCS3ey9HhDbJ66w6hDSHDMoap32DueFwhhs3vwooAB2MaK4XQ==}
- engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ "@img/sharp-libvips-linux-s390x@1.0.1":
+ resolution:
+ {
+ integrity: sha512-3+rzfAR1YpMOeA2zZNp+aYEzGNWK4zF3+sdMxuCS3ey9HhDbJ66w6hDSHDMoap32DueFwhhs3vwooAB2MaK4XQ==,
+ }
+ engines: { glibc: ">=2.28", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" }
cpu: [s390x]
os: [linux]
- '@img/sharp-libvips-linux-s390x@1.2.4':
- resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==}
+ "@img/sharp-libvips-linux-s390x@1.2.4":
+ resolution:
+ {
+ integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==,
+ }
cpu: [s390x]
os: [linux]
- '@img/sharp-libvips-linux-x64@1.0.1':
- resolution: {integrity: sha512-3NR1mxFsaSgMMzz1bAnnKbSAI+lHXVTqAHgc1bgzjHuXjo4hlscpUxc0vFSAPKI3yuzdzcZOkq7nDPrP2F8Jgw==}
- engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ "@img/sharp-libvips-linux-x64@1.0.1":
+ resolution:
+ {
+ integrity: sha512-3NR1mxFsaSgMMzz1bAnnKbSAI+lHXVTqAHgc1bgzjHuXjo4hlscpUxc0vFSAPKI3yuzdzcZOkq7nDPrP2F8Jgw==,
+ }
+ engines: { glibc: ">=2.26", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" }
cpu: [x64]
os: [linux]
- '@img/sharp-libvips-linux-x64@1.2.4':
- resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==}
+ "@img/sharp-libvips-linux-x64@1.2.4":
+ resolution:
+ {
+ integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==,
+ }
cpu: [x64]
os: [linux]
- '@img/sharp-libvips-linuxmusl-arm64@1.0.1':
- resolution: {integrity: sha512-5aBRcjHDG/T6jwC3Edl3lP8nl9U2Yo8+oTl5drd1dh9Z1EBfzUKAJFUDTDisDjUwc7N4AjnPGfCA3jl3hY8uDg==}
- engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ "@img/sharp-libvips-linuxmusl-arm64@1.0.1":
+ resolution:
+ {
+ integrity: sha512-5aBRcjHDG/T6jwC3Edl3lP8nl9U2Yo8+oTl5drd1dh9Z1EBfzUKAJFUDTDisDjUwc7N4AjnPGfCA3jl3hY8uDg==,
+ }
+ engines: { musl: ">=1.2.2", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" }
cpu: [arm64]
os: [linux]
- '@img/sharp-libvips-linuxmusl-arm64@1.2.4':
- resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==}
+ "@img/sharp-libvips-linuxmusl-arm64@1.2.4":
+ resolution:
+ {
+ integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==,
+ }
cpu: [arm64]
os: [linux]
- '@img/sharp-libvips-linuxmusl-x64@1.0.1':
- resolution: {integrity: sha512-dcT7inI9DBFK6ovfeWRe3hG30h51cBAP5JXlZfx6pzc/Mnf9HFCQDLtYf4MCBjxaaTfjCCjkBxcy3XzOAo5txw==}
- engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ "@img/sharp-libvips-linuxmusl-x64@1.0.1":
+ resolution:
+ {
+ integrity: sha512-dcT7inI9DBFK6ovfeWRe3hG30h51cBAP5JXlZfx6pzc/Mnf9HFCQDLtYf4MCBjxaaTfjCCjkBxcy3XzOAo5txw==,
+ }
+ engines: { musl: ">=1.2.2", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" }
cpu: [x64]
os: [linux]
- '@img/sharp-libvips-linuxmusl-x64@1.2.4':
- resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==}
+ "@img/sharp-libvips-linuxmusl-x64@1.2.4":
+ resolution:
+ {
+ integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==,
+ }
cpu: [x64]
os: [linux]
- '@img/sharp-linux-arm64@0.33.2':
- resolution: {integrity: sha512-pz0NNo882vVfqJ0yNInuG9YH71smP4gRSdeL09ukC2YLE6ZyZePAlWKEHgAzJGTiOh8Qkaov6mMIMlEhmLdKew==}
- engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ "@img/sharp-linux-arm64@0.33.2":
+ resolution:
+ {
+ integrity: sha512-pz0NNo882vVfqJ0yNInuG9YH71smP4gRSdeL09ukC2YLE6ZyZePAlWKEHgAzJGTiOh8Qkaov6mMIMlEhmLdKew==,
+ }
+ engines:
+ {
+ glibc: ">=2.26",
+ node: ^18.17.0 || ^20.3.0 || >=21.0.0,
+ npm: ">=9.6.5",
+ pnpm: ">=7.1.0",
+ yarn: ">=3.2.0",
+ }
cpu: [arm64]
os: [linux]
- '@img/sharp-linux-arm64@0.34.5':
- resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ "@img/sharp-linux-arm64@0.34.5":
+ resolution:
+ {
+ integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
cpu: [arm64]
os: [linux]
- '@img/sharp-linux-arm@0.33.2':
- resolution: {integrity: sha512-Fndk/4Zq3vAc4G/qyfXASbS3HBZbKrlnKZLEJzPLrXoJuipFNNwTes71+Ki1hwYW5lch26niRYoZFAtZVf3EGA==}
- engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ "@img/sharp-linux-arm@0.33.2":
+ resolution:
+ {
+ integrity: sha512-Fndk/4Zq3vAc4G/qyfXASbS3HBZbKrlnKZLEJzPLrXoJuipFNNwTes71+Ki1hwYW5lch26niRYoZFAtZVf3EGA==,
+ }
+ engines:
+ {
+ glibc: ">=2.28",
+ node: ^18.17.0 || ^20.3.0 || >=21.0.0,
+ npm: ">=9.6.5",
+ pnpm: ">=7.1.0",
+ yarn: ">=3.2.0",
+ }
cpu: [arm]
os: [linux]
- '@img/sharp-linux-arm@0.34.5':
- resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ "@img/sharp-linux-arm@0.34.5":
+ resolution:
+ {
+ integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
cpu: [arm]
os: [linux]
- '@img/sharp-linux-ppc64@0.34.5':
- resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ "@img/sharp-linux-ppc64@0.34.5":
+ resolution:
+ {
+ integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
cpu: [ppc64]
os: [linux]
- '@img/sharp-linux-riscv64@0.34.5':
- resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ "@img/sharp-linux-riscv64@0.34.5":
+ resolution:
+ {
+ integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
cpu: [riscv64]
os: [linux]
- '@img/sharp-linux-s390x@0.33.2':
- resolution: {integrity: sha512-MBoInDXDppMfhSzbMmOQtGfloVAflS2rP1qPcUIiITMi36Mm5YR7r0ASND99razjQUpHTzjrU1flO76hKvP5RA==}
- engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ "@img/sharp-linux-s390x@0.33.2":
+ resolution:
+ {
+ integrity: sha512-MBoInDXDppMfhSzbMmOQtGfloVAflS2rP1qPcUIiITMi36Mm5YR7r0ASND99razjQUpHTzjrU1flO76hKvP5RA==,
+ }
+ engines:
+ {
+ glibc: ">=2.28",
+ node: ^18.17.0 || ^20.3.0 || >=21.0.0,
+ npm: ">=9.6.5",
+ pnpm: ">=7.1.0",
+ yarn: ">=3.2.0",
+ }
cpu: [s390x]
os: [linux]
- '@img/sharp-linux-s390x@0.34.5':
- resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ "@img/sharp-linux-s390x@0.34.5":
+ resolution:
+ {
+ integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
cpu: [s390x]
os: [linux]
- '@img/sharp-linux-x64@0.33.2':
- resolution: {integrity: sha512-xUT82H5IbXewKkeF5aiooajoO1tQV4PnKfS/OZtb5DDdxS/FCI/uXTVZ35GQ97RZXsycojz/AJ0asoz6p2/H/A==}
- engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ "@img/sharp-linux-x64@0.33.2":
+ resolution:
+ {
+ integrity: sha512-xUT82H5IbXewKkeF5aiooajoO1tQV4PnKfS/OZtb5DDdxS/FCI/uXTVZ35GQ97RZXsycojz/AJ0asoz6p2/H/A==,
+ }
+ engines:
+ {
+ glibc: ">=2.26",
+ node: ^18.17.0 || ^20.3.0 || >=21.0.0,
+ npm: ">=9.6.5",
+ pnpm: ">=7.1.0",
+ yarn: ">=3.2.0",
+ }
cpu: [x64]
os: [linux]
- '@img/sharp-linux-x64@0.34.5':
- resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ "@img/sharp-linux-x64@0.34.5":
+ resolution:
+ {
+ integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
cpu: [x64]
os: [linux]
- '@img/sharp-linuxmusl-arm64@0.33.2':
- resolution: {integrity: sha512-F+0z8JCu/UnMzg8IYW1TMeiViIWBVg7IWP6nE0p5S5EPQxlLd76c8jYemG21X99UzFwgkRo5yz2DS+zbrnxZeA==}
- engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ "@img/sharp-linuxmusl-arm64@0.33.2":
+ resolution:
+ {
+ integrity: sha512-F+0z8JCu/UnMzg8IYW1TMeiViIWBVg7IWP6nE0p5S5EPQxlLd76c8jYemG21X99UzFwgkRo5yz2DS+zbrnxZeA==,
+ }
+ engines:
+ {
+ musl: ">=1.2.2",
+ node: ^18.17.0 || ^20.3.0 || >=21.0.0,
+ npm: ">=9.6.5",
+ pnpm: ">=7.1.0",
+ yarn: ">=3.2.0",
+ }
cpu: [arm64]
os: [linux]
- '@img/sharp-linuxmusl-arm64@0.34.5':
- resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ "@img/sharp-linuxmusl-arm64@0.34.5":
+ resolution:
+ {
+ integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
cpu: [arm64]
os: [linux]
- '@img/sharp-linuxmusl-x64@0.33.2':
- resolution: {integrity: sha512-+ZLE3SQmSL+Fn1gmSaM8uFusW5Y3J9VOf+wMGNnTtJUMUxFhv+P4UPaYEYT8tqnyYVaOVGgMN/zsOxn9pSsO2A==}
- engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ "@img/sharp-linuxmusl-x64@0.33.2":
+ resolution:
+ {
+ integrity: sha512-+ZLE3SQmSL+Fn1gmSaM8uFusW5Y3J9VOf+wMGNnTtJUMUxFhv+P4UPaYEYT8tqnyYVaOVGgMN/zsOxn9pSsO2A==,
+ }
+ engines:
+ {
+ musl: ">=1.2.2",
+ node: ^18.17.0 || ^20.3.0 || >=21.0.0,
+ npm: ">=9.6.5",
+ pnpm: ">=7.1.0",
+ yarn: ">=3.2.0",
+ }
cpu: [x64]
os: [linux]
- '@img/sharp-linuxmusl-x64@0.34.5':
- resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ "@img/sharp-linuxmusl-x64@0.34.5":
+ resolution:
+ {
+ integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
cpu: [x64]
os: [linux]
- '@img/sharp-wasm32@0.33.2':
- resolution: {integrity: sha512-fLbTaESVKuQcpm8ffgBD7jLb/CQLcATju/jxtTXR1XCLwbOQt+OL5zPHSDMmp2JZIeq82e18yE0Vv7zh6+6BfQ==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ "@img/sharp-wasm32@0.33.2":
+ resolution:
+ {
+ integrity: sha512-fLbTaESVKuQcpm8ffgBD7jLb/CQLcATju/jxtTXR1XCLwbOQt+OL5zPHSDMmp2JZIeq82e18yE0Vv7zh6+6BfQ==,
+ }
+ engines:
+ { node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" }
cpu: [wasm32]
- '@img/sharp-wasm32@0.34.5':
- resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ "@img/sharp-wasm32@0.34.5":
+ resolution:
+ {
+ integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
cpu: [wasm32]
- '@img/sharp-win32-arm64@0.34.5':
- resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ "@img/sharp-win32-arm64@0.34.5":
+ resolution:
+ {
+ integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
cpu: [arm64]
os: [win32]
- '@img/sharp-win32-ia32@0.33.2':
- resolution: {integrity: sha512-okBpql96hIGuZ4lN3+nsAjGeggxKm7hIRu9zyec0lnfB8E7Z6p95BuRZzDDXZOl2e8UmR4RhYt631i7mfmKU8g==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ "@img/sharp-win32-ia32@0.33.2":
+ resolution:
+ {
+ integrity: sha512-okBpql96hIGuZ4lN3+nsAjGeggxKm7hIRu9zyec0lnfB8E7Z6p95BuRZzDDXZOl2e8UmR4RhYt631i7mfmKU8g==,
+ }
+ engines:
+ { node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" }
cpu: [ia32]
os: [win32]
- '@img/sharp-win32-ia32@0.34.5':
- resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ "@img/sharp-win32-ia32@0.34.5":
+ resolution:
+ {
+ integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
cpu: [ia32]
os: [win32]
- '@img/sharp-win32-x64@0.33.2':
- resolution: {integrity: sha512-E4magOks77DK47FwHUIGH0RYWSgRBfGdK56kIHSVeB9uIS4pPFr4N2kIVsXdQQo4LzOsENKV5KAhRlRL7eMAdg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ "@img/sharp-win32-x64@0.33.2":
+ resolution:
+ {
+ integrity: sha512-E4magOks77DK47FwHUIGH0RYWSgRBfGdK56kIHSVeB9uIS4pPFr4N2kIVsXdQQo4LzOsENKV5KAhRlRL7eMAdg==,
+ }
+ engines:
+ { node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" }
cpu: [x64]
os: [win32]
- '@img/sharp-win32-x64@0.34.5':
- resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ "@img/sharp-win32-x64@0.34.5":
+ resolution:
+ {
+ integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
cpu: [x64]
os: [win32]
- '@isaacs/balanced-match@4.0.1':
- resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==}
- engines: {node: 20 || >=22}
+ "@isaacs/balanced-match@4.0.1":
+ resolution:
+ {
+ integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==,
+ }
+ engines: { node: 20 || >=22 }
- '@isaacs/brace-expansion@5.0.0':
- resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==}
- engines: {node: 20 || >=22}
+ "@isaacs/brace-expansion@5.0.0":
+ resolution:
+ {
+ integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==,
+ }
+ engines: { node: 20 || >=22 }
- '@jridgewell/gen-mapping@0.3.13':
- resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
+ "@jridgewell/gen-mapping@0.3.13":
+ resolution:
+ {
+ integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==,
+ }
- '@jridgewell/resolve-uri@3.1.2':
- resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
- engines: {node: '>=6.0.0'}
+ "@jridgewell/resolve-uri@3.1.2":
+ resolution:
+ {
+ integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==,
+ }
+ engines: { node: ">=6.0.0" }
- '@jridgewell/sourcemap-codec@1.5.5':
- resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
+ "@jridgewell/sourcemap-codec@1.5.5":
+ resolution:
+ {
+ integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==,
+ }
- '@jridgewell/trace-mapping@0.3.31':
- resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
+ "@jridgewell/trace-mapping@0.3.31":
+ resolution:
+ {
+ integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==,
+ }
- '@mongodb-js/saslprep@1.3.2':
- resolution: {integrity: sha512-QgA5AySqB27cGTXBFmnpifAi7HxoGUeezwo6p9dI03MuDB6Pp33zgclqVb6oVK3j6I9Vesg0+oojW2XxB59SGg==}
+ "@mongodb-js/saslprep@1.3.2":
+ resolution:
+ {
+ integrity: sha512-QgA5AySqB27cGTXBFmnpifAi7HxoGUeezwo6p9dI03MuDB6Pp33zgclqVb6oVK3j6I9Vesg0+oojW2XxB59SGg==,
+ }
- '@napi-rs/wasm-runtime@0.2.12':
- resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==}
+ "@napi-rs/wasm-runtime@0.2.12":
+ resolution:
+ {
+ integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==,
+ }
- '@next/env@15.5.7':
- resolution: {integrity: sha512-4h6Y2NyEkIEN7Z8YxkA27pq6zTkS09bUSYC0xjd0NpwFxjnIKeZEeH591o5WECSmjpUhLn3H2QLJcDye3Uzcvg==}
+ "@next/env@15.5.7":
+ resolution:
+ {
+ integrity: sha512-4h6Y2NyEkIEN7Z8YxkA27pq6zTkS09bUSYC0xjd0NpwFxjnIKeZEeH591o5WECSmjpUhLn3H2QLJcDye3Uzcvg==,
+ }
- '@next/eslint-plugin-next@15.2.0':
- resolution: {integrity: sha512-jHFUG2OwmAuOASqq253RAEG/5BYcPHn27p1NoWZDCf4OdvdK0yRYWX92YKkL+Mk2s+GyJrmd/GATlL5b2IySpw==}
+ "@next/eslint-plugin-next@15.2.0":
+ resolution:
+ {
+ integrity: sha512-jHFUG2OwmAuOASqq253RAEG/5BYcPHn27p1NoWZDCf4OdvdK0yRYWX92YKkL+Mk2s+GyJrmd/GATlL5b2IySpw==,
+ }
- '@next/swc-darwin-arm64@15.5.7':
- resolution: {integrity: sha512-IZwtxCEpI91HVU/rAUOOobWSZv4P2DeTtNaCdHqLcTJU4wdNXgAySvKa/qJCgR5m6KI8UsKDXtO2B31jcaw1Yw==}
- engines: {node: '>= 10'}
+ "@next/swc-darwin-arm64@15.5.7":
+ resolution:
+ {
+ integrity: sha512-IZwtxCEpI91HVU/rAUOOobWSZv4P2DeTtNaCdHqLcTJU4wdNXgAySvKa/qJCgR5m6KI8UsKDXtO2B31jcaw1Yw==,
+ }
+ engines: { node: ">= 10" }
cpu: [arm64]
os: [darwin]
- '@next/swc-darwin-x64@15.5.7':
- resolution: {integrity: sha512-UP6CaDBcqaCBuiq/gfCEJw7sPEoX1aIjZHnBWN9v9qYHQdMKvCKcAVs4OX1vIjeE+tC5EIuwDTVIoXpUes29lg==}
- engines: {node: '>= 10'}
+ "@next/swc-darwin-x64@15.5.7":
+ resolution:
+ {
+ integrity: sha512-UP6CaDBcqaCBuiq/gfCEJw7sPEoX1aIjZHnBWN9v9qYHQdMKvCKcAVs4OX1vIjeE+tC5EIuwDTVIoXpUes29lg==,
+ }
+ engines: { node: ">= 10" }
cpu: [x64]
os: [darwin]
- '@next/swc-linux-arm64-gnu@15.5.7':
- resolution: {integrity: sha512-NCslw3GrNIw7OgmRBxHtdWFQYhexoUCq+0oS2ccjyYLtcn1SzGzeM54jpTFonIMUjNbHmpKpziXnpxhSWLcmBA==}
- engines: {node: '>= 10'}
+ "@next/swc-linux-arm64-gnu@15.5.7":
+ resolution:
+ {
+ integrity: sha512-NCslw3GrNIw7OgmRBxHtdWFQYhexoUCq+0oS2ccjyYLtcn1SzGzeM54jpTFonIMUjNbHmpKpziXnpxhSWLcmBA==,
+ }
+ engines: { node: ">= 10" }
cpu: [arm64]
os: [linux]
- '@next/swc-linux-arm64-musl@15.5.7':
- resolution: {integrity: sha512-nfymt+SE5cvtTrG9u1wdoxBr9bVB7mtKTcj0ltRn6gkP/2Nu1zM5ei8rwP9qKQP0Y//umK+TtkKgNtfboBxRrw==}
- engines: {node: '>= 10'}
+ "@next/swc-linux-arm64-musl@15.5.7":
+ resolution:
+ {
+ integrity: sha512-nfymt+SE5cvtTrG9u1wdoxBr9bVB7mtKTcj0ltRn6gkP/2Nu1zM5ei8rwP9qKQP0Y//umK+TtkKgNtfboBxRrw==,
+ }
+ engines: { node: ">= 10" }
cpu: [arm64]
os: [linux]
- '@next/swc-linux-x64-gnu@15.5.7':
- resolution: {integrity: sha512-hvXcZvCaaEbCZcVzcY7E1uXN9xWZfFvkNHwbe/n4OkRhFWrs1J1QV+4U1BN06tXLdaS4DazEGXwgqnu/VMcmqw==}
- engines: {node: '>= 10'}
+ "@next/swc-linux-x64-gnu@15.5.7":
+ resolution:
+ {
+ integrity: sha512-hvXcZvCaaEbCZcVzcY7E1uXN9xWZfFvkNHwbe/n4OkRhFWrs1J1QV+4U1BN06tXLdaS4DazEGXwgqnu/VMcmqw==,
+ }
+ engines: { node: ">= 10" }
cpu: [x64]
os: [linux]
- '@next/swc-linux-x64-musl@15.5.7':
- resolution: {integrity: sha512-4IUO539b8FmF0odY6/SqANJdgwn1xs1GkPO5doZugwZ3ETF6JUdckk7RGmsfSf7ws8Qb2YB5It33mvNL/0acqA==}
- engines: {node: '>= 10'}
+ "@next/swc-linux-x64-musl@15.5.7":
+ resolution:
+ {
+ integrity: sha512-4IUO539b8FmF0odY6/SqANJdgwn1xs1GkPO5doZugwZ3ETF6JUdckk7RGmsfSf7ws8Qb2YB5It33mvNL/0acqA==,
+ }
+ engines: { node: ">= 10" }
cpu: [x64]
os: [linux]
- '@next/swc-win32-arm64-msvc@15.5.7':
- resolution: {integrity: sha512-CpJVTkYI3ZajQkC5vajM7/ApKJUOlm6uP4BknM3XKvJ7VXAvCqSjSLmM0LKdYzn6nBJVSjdclx8nYJSa3xlTgQ==}
- engines: {node: '>= 10'}
+ "@next/swc-win32-arm64-msvc@15.5.7":
+ resolution:
+ {
+ integrity: sha512-CpJVTkYI3ZajQkC5vajM7/ApKJUOlm6uP4BknM3XKvJ7VXAvCqSjSLmM0LKdYzn6nBJVSjdclx8nYJSa3xlTgQ==,
+ }
+ engines: { node: ">= 10" }
cpu: [arm64]
os: [win32]
- '@next/swc-win32-x64-msvc@15.5.7':
- resolution: {integrity: sha512-gMzgBX164I6DN+9/PGA+9dQiwmTkE4TloBNx8Kv9UiGARsr9Nba7IpcBRA1iTV9vwlYnrE3Uy6I7Aj6qLjQuqw==}
- engines: {node: '>= 10'}
+ "@next/swc-win32-x64-msvc@15.5.7":
+ resolution:
+ {
+ integrity: sha512-gMzgBX164I6DN+9/PGA+9dQiwmTkE4TloBNx8Kv9UiGARsr9Nba7IpcBRA1iTV9vwlYnrE3Uy6I7Aj6qLjQuqw==,
+ }
+ engines: { node: ">= 10" }
cpu: [x64]
os: [win32]
- '@nodelib/fs.scandir@2.1.5':
- resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
- engines: {node: '>= 8'}
+ "@nodelib/fs.scandir@2.1.5":
+ resolution:
+ {
+ integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==,
+ }
+ engines: { node: ">= 8" }
- '@nodelib/fs.stat@2.0.5':
- resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
- engines: {node: '>= 8'}
+ "@nodelib/fs.stat@2.0.5":
+ resolution:
+ {
+ integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==,
+ }
+ engines: { node: ">= 8" }
- '@nodelib/fs.walk@1.2.8':
- resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
- engines: {node: '>= 8'}
+ "@nodelib/fs.walk@1.2.8":
+ resolution:
+ {
+ integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==,
+ }
+ engines: { node: ">= 8" }
- '@nolyfill/is-core-module@1.0.39':
- resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==}
- engines: {node: '>=12.4.0'}
+ "@nolyfill/is-core-module@1.0.39":
+ resolution:
+ {
+ integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==,
+ }
+ engines: { node: ">=12.4.0" }
- '@panva/hkdf@1.2.1':
- resolution: {integrity: sha512-6oclG6Y3PiDFcoyk8srjLfVKyMfVCKJ27JwNPViuXziFpmdz+MZnZN/aKY0JGXgYuO/VghU0jcOAZgWXZ1Dmrw==}
+ "@panva/hkdf@1.2.1":
+ resolution:
+ {
+ integrity: sha512-6oclG6Y3PiDFcoyk8srjLfVKyMfVCKJ27JwNPViuXziFpmdz+MZnZN/aKY0JGXgYuO/VghU0jcOAZgWXZ1Dmrw==,
+ }
- '@pinojs/redact@0.4.0':
- resolution: {integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==}
+ "@pinojs/redact@0.4.0":
+ resolution:
+ {
+ integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==,
+ }
- '@prisma/client@6.17.1':
- resolution: {integrity: sha512-zL58jbLzYamjnNnmNA51IOZdbk5ci03KviXCuB0Tydc9btH2kDWsi1pQm2VecviRTM7jGia0OPPkgpGnT3nKvw==}
- engines: {node: '>=18.18'}
+ "@prisma/client@6.17.1":
+ resolution:
+ {
+ integrity: sha512-zL58jbLzYamjnNnmNA51IOZdbk5ci03KviXCuB0Tydc9btH2kDWsi1pQm2VecviRTM7jGia0OPPkgpGnT3nKvw==,
+ }
+ engines: { node: ">=18.18" }
peerDependencies:
- prisma: '*'
- typescript: '>=5.1.0'
+ prisma: "*"
+ typescript: ">=5.1.0"
peerDependenciesMeta:
prisma:
optional: true
typescript:
optional: true
- '@prisma/config@6.17.1':
- resolution: {integrity: sha512-fs8wY6DsvOCzuiyWVckrVs1LOcbY4LZNz8ki4uUIQ28jCCzojTGqdLhN2Jl5lDnC1yI8/gNIKpsWDM8pLhOdwA==}
+ "@prisma/config@6.17.1":
+ resolution:
+ {
+ integrity: sha512-fs8wY6DsvOCzuiyWVckrVs1LOcbY4LZNz8ki4uUIQ28jCCzojTGqdLhN2Jl5lDnC1yI8/gNIKpsWDM8pLhOdwA==,
+ }
- '@prisma/debug@6.17.1':
- resolution: {integrity: sha512-Vf7Tt5Wh9XcndpbmeotuqOMLWPTjEKCsgojxXP2oxE1/xYe7PtnP76hsouG9vis6fctX+TxgmwxTuYi/+xc7dQ==}
+ "@prisma/debug@6.17.1":
+ resolution:
+ {
+ integrity: sha512-Vf7Tt5Wh9XcndpbmeotuqOMLWPTjEKCsgojxXP2oxE1/xYe7PtnP76hsouG9vis6fctX+TxgmwxTuYi/+xc7dQ==,
+ }
- '@prisma/engines-version@6.17.1-1.272a37d34178c2894197e17273bf937f25acdeac':
- resolution: {integrity: sha512-17140E3huOuD9lMdJ9+SF/juOf3WR3sTJMVyyenzqUPbuH+89nPhSWcrY+Mf7tmSs6HvaO+7S+HkELinn6bhdg==}
+ "@prisma/engines-version@6.17.1-1.272a37d34178c2894197e17273bf937f25acdeac":
+ resolution:
+ {
+ integrity: sha512-17140E3huOuD9lMdJ9+SF/juOf3WR3sTJMVyyenzqUPbuH+89nPhSWcrY+Mf7tmSs6HvaO+7S+HkELinn6bhdg==,
+ }
- '@prisma/engines@6.17.1':
- resolution: {integrity: sha512-D95Ik3GYZkqZ8lSR4EyFOJ/tR33FcYRP8kK61o+WMsyD10UfJwd7+YielflHfKwiGodcqKqoraWw8ElAgMDbPw==}
+ "@prisma/engines@6.17.1":
+ resolution:
+ {
+ integrity: sha512-D95Ik3GYZkqZ8lSR4EyFOJ/tR33FcYRP8kK61o+WMsyD10UfJwd7+YielflHfKwiGodcqKqoraWw8ElAgMDbPw==,
+ }
- '@prisma/fetch-engine@6.17.1':
- resolution: {integrity: sha512-AYZiHOs184qkDMiTeshyJCtyL4yERkjfTkJiSJdYuSfc24m94lTNL5+GFinZ6vVz+ktX4NJzHKn1zIFzGTWrWg==}
+ "@prisma/fetch-engine@6.17.1":
+ resolution:
+ {
+ integrity: sha512-AYZiHOs184qkDMiTeshyJCtyL4yERkjfTkJiSJdYuSfc24m94lTNL5+GFinZ6vVz+ktX4NJzHKn1zIFzGTWrWg==,
+ }
- '@prisma/get-platform@6.17.1':
- resolution: {integrity: sha512-AKEn6fsfz0r482S5KRDFlIGEaq9wLNcgalD1adL+fPcFFblIKs1sD81kY/utrHdqKuVC6E1XSRpegDK3ZLL4Qg==}
+ "@prisma/get-platform@6.17.1":
+ resolution:
+ {
+ integrity: sha512-AKEn6fsfz0r482S5KRDFlIGEaq9wLNcgalD1adL+fPcFFblIKs1sD81kY/utrHdqKuVC6E1XSRpegDK3ZLL4Qg==,
+ }
- '@radix-ui/number@1.1.1':
- resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==}
+ "@radix-ui/number@1.1.1":
+ resolution:
+ {
+ integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==,
+ }
- '@radix-ui/primitive@1.1.3':
- resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==}
+ "@radix-ui/primitive@1.1.3":
+ resolution:
+ {
+ integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==,
+ }
- '@radix-ui/react-alert-dialog@1.1.15':
- resolution: {integrity: sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw==}
+ "@radix-ui/react-alert-dialog@1.1.15":
+ resolution:
+ {
+ integrity: sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw==,
+ }
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
+ "@types/react": "*"
+ "@types/react-dom": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@types/react-dom':
+ "@types/react-dom":
optional: true
- '@radix-ui/react-arrow@1.1.7':
- resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==}
+ "@radix-ui/react-arrow@1.1.7":
+ resolution:
+ {
+ integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==,
+ }
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
+ "@types/react": "*"
+ "@types/react-dom": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@types/react-dom':
+ "@types/react-dom":
optional: true
- '@radix-ui/react-checkbox@1.3.3':
- resolution: {integrity: sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==}
+ "@radix-ui/react-checkbox@1.3.3":
+ resolution:
+ {
+ integrity: sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==,
+ }
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
+ "@types/react": "*"
+ "@types/react-dom": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@types/react-dom':
+ "@types/react-dom":
optional: true
- '@radix-ui/react-collection@1.1.7':
- resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==}
+ "@radix-ui/react-collection@1.1.7":
+ resolution:
+ {
+ integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==,
+ }
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
+ "@types/react": "*"
+ "@types/react-dom": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@types/react-dom':
+ "@types/react-dom":
optional: true
- '@radix-ui/react-compose-refs@1.1.2':
- resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==}
+ "@radix-ui/react-compose-refs@1.1.2":
+ resolution:
+ {
+ integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==,
+ }
peerDependencies:
- '@types/react': '*'
+ "@types/react": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@radix-ui/react-context@1.1.2':
- resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==}
+ "@radix-ui/react-context@1.1.2":
+ resolution:
+ {
+ integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==,
+ }
peerDependencies:
- '@types/react': '*'
+ "@types/react": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@radix-ui/react-dialog@1.1.15':
- resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==}
+ "@radix-ui/react-dialog@1.1.15":
+ resolution:
+ {
+ integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==,
+ }
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
+ "@types/react": "*"
+ "@types/react-dom": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@types/react-dom':
+ "@types/react-dom":
optional: true
- '@radix-ui/react-direction@1.1.1':
- resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==}
+ "@radix-ui/react-direction@1.1.1":
+ resolution:
+ {
+ integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==,
+ }
peerDependencies:
- '@types/react': '*'
+ "@types/react": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@radix-ui/react-dismissable-layer@1.1.11':
- resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==}
+ "@radix-ui/react-dismissable-layer@1.1.11":
+ resolution:
+ {
+ integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==,
+ }
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
+ "@types/react": "*"
+ "@types/react-dom": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@types/react-dom':
+ "@types/react-dom":
optional: true
- '@radix-ui/react-dropdown-menu@2.1.16':
- resolution: {integrity: sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==}
+ "@radix-ui/react-dropdown-menu@2.1.16":
+ resolution:
+ {
+ integrity: sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==,
+ }
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
+ "@types/react": "*"
+ "@types/react-dom": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@types/react-dom':
+ "@types/react-dom":
optional: true
- '@radix-ui/react-focus-guards@1.1.3':
- resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==}
+ "@radix-ui/react-focus-guards@1.1.3":
+ resolution:
+ {
+ integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==,
+ }
peerDependencies:
- '@types/react': '*'
+ "@types/react": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@radix-ui/react-focus-scope@1.1.7':
- resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==}
+ "@radix-ui/react-focus-scope@1.1.7":
+ resolution:
+ {
+ integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==,
+ }
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
+ "@types/react": "*"
+ "@types/react-dom": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@types/react-dom':
+ "@types/react-dom":
optional: true
- '@radix-ui/react-id@1.1.1':
- resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==}
+ "@radix-ui/react-id@1.1.1":
+ resolution:
+ {
+ integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==,
+ }
peerDependencies:
- '@types/react': '*'
+ "@types/react": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@radix-ui/react-menu@2.1.16':
- resolution: {integrity: sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==}
+ "@radix-ui/react-menu@2.1.16":
+ resolution:
+ {
+ integrity: sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==,
+ }
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
+ "@types/react": "*"
+ "@types/react-dom": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@types/react-dom':
+ "@types/react-dom":
optional: true
- '@radix-ui/react-popper@1.2.8':
- resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==}
+ "@radix-ui/react-popper@1.2.8":
+ resolution:
+ {
+ integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==,
+ }
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
+ "@types/react": "*"
+ "@types/react-dom": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@types/react-dom':
+ "@types/react-dom":
optional: true
- '@radix-ui/react-portal@1.1.9':
- resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==}
+ "@radix-ui/react-portal@1.1.9":
+ resolution:
+ {
+ integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==,
+ }
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
+ "@types/react": "*"
+ "@types/react-dom": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@types/react-dom':
+ "@types/react-dom":
optional: true
- '@radix-ui/react-presence@1.1.5':
- resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==}
+ "@radix-ui/react-presence@1.1.5":
+ resolution:
+ {
+ integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==,
+ }
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
+ "@types/react": "*"
+ "@types/react-dom": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@types/react-dom':
+ "@types/react-dom":
optional: true
- '@radix-ui/react-primitive@2.1.3':
- resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==}
+ "@radix-ui/react-primitive@2.1.3":
+ resolution:
+ {
+ integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==,
+ }
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
+ "@types/react": "*"
+ "@types/react-dom": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@types/react-dom':
+ "@types/react-dom":
optional: true
- '@radix-ui/react-progress@1.1.7':
- resolution: {integrity: sha512-vPdg/tF6YC/ynuBIJlk1mm7Le0VgW6ub6J2UWnTQ7/D23KXcPI1qy+0vBkgKgd38RCMJavBXpB83HPNFMTb0Fg==}
+ "@radix-ui/react-progress@1.1.7":
+ resolution:
+ {
+ integrity: sha512-vPdg/tF6YC/ynuBIJlk1mm7Le0VgW6ub6J2UWnTQ7/D23KXcPI1qy+0vBkgKgd38RCMJavBXpB83HPNFMTb0Fg==,
+ }
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
+ "@types/react": "*"
+ "@types/react-dom": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@types/react-dom':
+ "@types/react-dom":
optional: true
- '@radix-ui/react-radio-group@1.3.8':
- resolution: {integrity: sha512-VBKYIYImA5zsxACdisNQ3BjCBfmbGH3kQlnFVqlWU4tXwjy7cGX8ta80BcrO+WJXIn5iBylEH3K6ZTlee//lgQ==}
+ "@radix-ui/react-radio-group@1.3.8":
+ resolution:
+ {
+ integrity: sha512-VBKYIYImA5zsxACdisNQ3BjCBfmbGH3kQlnFVqlWU4tXwjy7cGX8ta80BcrO+WJXIn5iBylEH3K6ZTlee//lgQ==,
+ }
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
+ "@types/react": "*"
+ "@types/react-dom": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@types/react-dom':
+ "@types/react-dom":
optional: true
- '@radix-ui/react-roving-focus@1.1.11':
- resolution: {integrity: sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==}
+ "@radix-ui/react-roving-focus@1.1.11":
+ resolution:
+ {
+ integrity: sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==,
+ }
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
+ "@types/react": "*"
+ "@types/react-dom": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@types/react-dom':
+ "@types/react-dom":
optional: true
- '@radix-ui/react-select@2.2.6':
- resolution: {integrity: sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==}
+ "@radix-ui/react-select@2.2.6":
+ resolution:
+ {
+ integrity: sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==,
+ }
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
+ "@types/react": "*"
+ "@types/react-dom": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@types/react-dom':
+ "@types/react-dom":
optional: true
- '@radix-ui/react-slider@1.3.6':
- resolution: {integrity: sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw==}
+ "@radix-ui/react-slider@1.3.6":
+ resolution:
+ {
+ integrity: sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw==,
+ }
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
+ "@types/react": "*"
+ "@types/react-dom": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@types/react-dom':
+ "@types/react-dom":
optional: true
- '@radix-ui/react-slot@1.2.3':
- resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==}
+ "@radix-ui/react-slot@1.2.3":
+ resolution:
+ {
+ integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==,
+ }
peerDependencies:
- '@types/react': '*'
+ "@types/react": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@radix-ui/react-toast@1.2.15':
- resolution: {integrity: sha512-3OSz3TacUWy4WtOXV38DggwxoqJK4+eDkNMl5Z/MJZaoUPaP4/9lf81xXMe1I2ReTAptverZUpbPY4wWwWyL5g==}
+ "@radix-ui/react-toast@1.2.15":
+ resolution:
+ {
+ integrity: sha512-3OSz3TacUWy4WtOXV38DggwxoqJK4+eDkNMl5Z/MJZaoUPaP4/9lf81xXMe1I2ReTAptverZUpbPY4wWwWyL5g==,
+ }
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
+ "@types/react": "*"
+ "@types/react-dom": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@types/react-dom':
+ "@types/react-dom":
optional: true
- '@radix-ui/react-use-callback-ref@1.1.1':
- resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==}
+ "@radix-ui/react-use-callback-ref@1.1.1":
+ resolution:
+ {
+ integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==,
+ }
peerDependencies:
- '@types/react': '*'
+ "@types/react": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@radix-ui/react-use-controllable-state@1.2.2':
- resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==}
+ "@radix-ui/react-use-controllable-state@1.2.2":
+ resolution:
+ {
+ integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==,
+ }
peerDependencies:
- '@types/react': '*'
+ "@types/react": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@radix-ui/react-use-effect-event@0.0.2':
- resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==}
+ "@radix-ui/react-use-effect-event@0.0.2":
+ resolution:
+ {
+ integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==,
+ }
peerDependencies:
- '@types/react': '*'
+ "@types/react": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@radix-ui/react-use-escape-keydown@1.1.1':
- resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==}
+ "@radix-ui/react-use-escape-keydown@1.1.1":
+ resolution:
+ {
+ integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==,
+ }
peerDependencies:
- '@types/react': '*'
+ "@types/react": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@radix-ui/react-use-layout-effect@1.1.1':
- resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==}
+ "@radix-ui/react-use-layout-effect@1.1.1":
+ resolution:
+ {
+ integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==,
+ }
peerDependencies:
- '@types/react': '*'
+ "@types/react": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@radix-ui/react-use-previous@1.1.1':
- resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==}
+ "@radix-ui/react-use-previous@1.1.1":
+ resolution:
+ {
+ integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==,
+ }
peerDependencies:
- '@types/react': '*'
+ "@types/react": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@radix-ui/react-use-rect@1.1.1':
- resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==}
+ "@radix-ui/react-use-rect@1.1.1":
+ resolution:
+ {
+ integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==,
+ }
peerDependencies:
- '@types/react': '*'
+ "@types/react": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@radix-ui/react-use-size@1.1.1':
- resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==}
+ "@radix-ui/react-use-size@1.1.1":
+ resolution:
+ {
+ integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==,
+ }
peerDependencies:
- '@types/react': '*'
+ "@types/react": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@radix-ui/react-visually-hidden@1.2.3':
- resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==}
+ "@radix-ui/react-visually-hidden@1.2.3":
+ resolution:
+ {
+ integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==,
+ }
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
+ "@types/react": "*"
+ "@types/react-dom": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
- '@types/react-dom':
+ "@types/react-dom":
optional: true
- '@radix-ui/rect@1.1.1':
- resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==}
+ "@radix-ui/rect@1.1.1":
+ resolution:
+ {
+ integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==,
+ }
- '@rtsao/scc@1.1.0':
- resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
+ "@rtsao/scc@1.1.0":
+ resolution:
+ {
+ integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==,
+ }
- '@rushstack/eslint-patch@1.14.0':
- resolution: {integrity: sha512-WJFej426qe4RWOm9MMtP4V3CV4AucXolQty+GRgAWLgQXmpCuwzs7hEpxxhSc/znXUSxum9d/P/32MW0FlAAlA==}
+ "@rushstack/eslint-patch@1.14.0":
+ resolution:
+ {
+ integrity: sha512-WJFej426qe4RWOm9MMtP4V3CV4AucXolQty+GRgAWLgQXmpCuwzs7hEpxxhSc/znXUSxum9d/P/32MW0FlAAlA==,
+ }
- '@standard-schema/spec@1.0.0':
- resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==}
+ "@standard-schema/spec@1.0.0":
+ resolution:
+ {
+ integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==,
+ }
- '@swc/helpers@0.5.15':
- resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
+ "@swc/helpers@0.5.15":
+ resolution:
+ {
+ integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==,
+ }
- '@tybys/wasm-util@0.10.1':
- resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==}
+ "@tybys/wasm-util@0.10.1":
+ resolution:
+ {
+ integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==,
+ }
- '@types/bcryptjs@3.0.0':
- resolution: {integrity: sha512-WRZOuCuaz8UcZZE4R5HXTco2goQSI2XxjGY3hbM/xDvwmqFWd4ivooImsMx65OKM6CtNKbnZ5YL+YwAwK7c1dg==}
+ "@types/bcryptjs@3.0.0":
+ resolution:
+ {
+ integrity: sha512-WRZOuCuaz8UcZZE4R5HXTco2goQSI2XxjGY3hbM/xDvwmqFWd4ivooImsMx65OKM6CtNKbnZ5YL+YwAwK7c1dg==,
+ }
deprecated: This is a stub types definition. bcryptjs provides its own type definitions, so you do not need this installed.
- '@types/json-schema@7.0.15':
- resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+ "@types/json-schema@7.0.15":
+ resolution:
+ {
+ integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==,
+ }
- '@types/json5@0.0.29':
- resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
+ "@types/json5@0.0.29":
+ resolution:
+ {
+ integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==,
+ }
- '@types/node@24.7.2':
- resolution: {integrity: sha512-/NbVmcGTP+lj5oa4yiYxxeBjRivKQ5Ns1eSZeB99ExsEQ6rX5XYU1Zy/gGxY/ilqtD4Etx9mKyrPxZRetiahhA==}
+ "@types/node@24.7.2":
+ resolution:
+ {
+ integrity: sha512-/NbVmcGTP+lj5oa4yiYxxeBjRivKQ5Ns1eSZeB99ExsEQ6rX5XYU1Zy/gGxY/ilqtD4Etx9mKyrPxZRetiahhA==,
+ }
- '@types/react-dom@19.2.2':
- resolution: {integrity: sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw==}
+ "@types/react-dom@19.2.2":
+ resolution:
+ {
+ integrity: sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw==,
+ }
peerDependencies:
- '@types/react': ^19.2.0
+ "@types/react": ^19.2.0
- '@types/react@19.2.2':
- resolution: {integrity: sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==}
+ "@types/react@19.2.2":
+ resolution:
+ {
+ integrity: sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==,
+ }
- '@types/semver@7.7.1':
- resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==}
+ "@types/semver@7.7.1":
+ resolution:
+ {
+ integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==,
+ }
- '@types/webidl-conversions@7.0.3':
- resolution: {integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==}
+ "@types/webidl-conversions@7.0.3":
+ resolution:
+ {
+ integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==,
+ }
- '@types/whatwg-url@11.0.5':
- resolution: {integrity: sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==}
+ "@types/whatwg-url@11.0.5":
+ resolution:
+ {
+ integrity: sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==,
+ }
- '@typescript-eslint/eslint-plugin@8.46.1':
- resolution: {integrity: sha512-rUsLh8PXmBjdiPY+Emjz9NX2yHvhS11v0SR6xNJkm5GM1MO9ea/1GoDKlHHZGrOJclL/cZ2i/vRUYVtjRhrHVQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ "@typescript-eslint/eslint-plugin@8.46.1":
+ resolution:
+ {
+ integrity: sha512-rUsLh8PXmBjdiPY+Emjz9NX2yHvhS11v0SR6xNJkm5GM1MO9ea/1GoDKlHHZGrOJclL/cZ2i/vRUYVtjRhrHVQ==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
peerDependencies:
- '@typescript-eslint/parser': ^8.46.1
+ "@typescript-eslint/parser": ^8.46.1
eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <6.0.0'
+ typescript: ">=4.8.4 <6.0.0"
- '@typescript-eslint/experimental-utils@5.62.0':
- resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ "@typescript-eslint/experimental-utils@5.62.0":
+ resolution:
+ {
+ integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==,
+ }
+ engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- '@typescript-eslint/parser@6.21.0':
- resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==}
- engines: {node: ^16.0.0 || >=18.0.0}
+ "@typescript-eslint/parser@6.21.0":
+ resolution:
+ {
+ integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==,
+ }
+ engines: { node: ^16.0.0 || >=18.0.0 }
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
- typescript: '*'
+ typescript: "*"
peerDependenciesMeta:
typescript:
optional: true
- '@typescript-eslint/project-service@8.46.1':
- resolution: {integrity: sha512-FOIaFVMHzRskXr5J4Jp8lFVV0gz5ngv3RHmn+E4HYxSJ3DgDzU7fVI1/M7Ijh1zf6S7HIoaIOtln1H5y8V+9Zg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ "@typescript-eslint/project-service@8.46.1":
+ resolution:
+ {
+ integrity: sha512-FOIaFVMHzRskXr5J4Jp8lFVV0gz5ngv3RHmn+E4HYxSJ3DgDzU7fVI1/M7Ijh1zf6S7HIoaIOtln1H5y8V+9Zg==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
peerDependencies:
- typescript: '>=4.8.4 <6.0.0'
+ typescript: ">=4.8.4 <6.0.0"
- '@typescript-eslint/scope-manager@5.62.0':
- resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ "@typescript-eslint/scope-manager@5.62.0":
+ resolution:
+ {
+ integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==,
+ }
+ engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
- '@typescript-eslint/scope-manager@6.21.0':
- resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==}
- engines: {node: ^16.0.0 || >=18.0.0}
+ "@typescript-eslint/scope-manager@6.21.0":
+ resolution:
+ {
+ integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==,
+ }
+ engines: { node: ^16.0.0 || >=18.0.0 }
- '@typescript-eslint/scope-manager@8.46.1':
- resolution: {integrity: sha512-weL9Gg3/5F0pVQKiF8eOXFZp8emqWzZsOJuWRUNtHT+UNV2xSJegmpCNQHy37aEQIbToTq7RHKhWvOsmbM680A==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ "@typescript-eslint/scope-manager@8.46.1":
+ resolution:
+ {
+ integrity: sha512-weL9Gg3/5F0pVQKiF8eOXFZp8emqWzZsOJuWRUNtHT+UNV2xSJegmpCNQHy37aEQIbToTq7RHKhWvOsmbM680A==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
- '@typescript-eslint/tsconfig-utils@8.46.1':
- resolution: {integrity: sha512-X88+J/CwFvlJB+mK09VFqx5FE4H5cXD+H/Bdza2aEWkSb8hnWIQorNcscRl4IEo1Cz9VI/+/r/jnGWkbWPx54g==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ "@typescript-eslint/tsconfig-utils@8.46.1":
+ resolution:
+ {
+ integrity: sha512-X88+J/CwFvlJB+mK09VFqx5FE4H5cXD+H/Bdza2aEWkSb8hnWIQorNcscRl4IEo1Cz9VI/+/r/jnGWkbWPx54g==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
peerDependencies:
- typescript: '>=4.8.4 <6.0.0'
+ typescript: ">=4.8.4 <6.0.0"
- '@typescript-eslint/type-utils@8.46.1':
- resolution: {integrity: sha512-+BlmiHIiqufBxkVnOtFwjah/vrkF4MtKKvpXrKSPLCkCtAp8H01/VV43sfqA98Od7nJpDcFnkwgyfQbOG0AMvw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ "@typescript-eslint/type-utils@8.46.1":
+ resolution:
+ {
+ integrity: sha512-+BlmiHIiqufBxkVnOtFwjah/vrkF4MtKKvpXrKSPLCkCtAp8H01/VV43sfqA98Od7nJpDcFnkwgyfQbOG0AMvw==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <6.0.0'
+ typescript: ">=4.8.4 <6.0.0"
- '@typescript-eslint/types@5.62.0':
- resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ "@typescript-eslint/types@5.62.0":
+ resolution:
+ {
+ integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==,
+ }
+ engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
- '@typescript-eslint/types@6.21.0':
- resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==}
- engines: {node: ^16.0.0 || >=18.0.0}
+ "@typescript-eslint/types@6.21.0":
+ resolution:
+ {
+ integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==,
+ }
+ engines: { node: ^16.0.0 || >=18.0.0 }
- '@typescript-eslint/types@8.46.1':
- resolution: {integrity: sha512-C+soprGBHwWBdkDpbaRC4paGBrkIXxVlNohadL5o0kfhsXqOC6GYH2S/Obmig+I0HTDl8wMaRySwrfrXVP8/pQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ "@typescript-eslint/types@8.46.1":
+ resolution:
+ {
+ integrity: sha512-C+soprGBHwWBdkDpbaRC4paGBrkIXxVlNohadL5o0kfhsXqOC6GYH2S/Obmig+I0HTDl8wMaRySwrfrXVP8/pQ==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
- '@typescript-eslint/typescript-estree@5.62.0':
- resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ "@typescript-eslint/typescript-estree@5.62.0":
+ resolution:
+ {
+ integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==,
+ }
+ engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
peerDependencies:
- typescript: '*'
+ typescript: "*"
peerDependenciesMeta:
typescript:
optional: true
- '@typescript-eslint/typescript-estree@6.21.0':
- resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==}
- engines: {node: ^16.0.0 || >=18.0.0}
+ "@typescript-eslint/typescript-estree@6.21.0":
+ resolution:
+ {
+ integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==,
+ }
+ engines: { node: ^16.0.0 || >=18.0.0 }
peerDependencies:
- typescript: '*'
+ typescript: "*"
peerDependenciesMeta:
typescript:
optional: true
- '@typescript-eslint/typescript-estree@8.46.1':
- resolution: {integrity: sha512-uIifjT4s8cQKFQ8ZBXXyoUODtRoAd7F7+G8MKmtzj17+1UbdzFl52AzRyZRyKqPHhgzvXunnSckVu36flGy8cg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ "@typescript-eslint/typescript-estree@8.46.1":
+ resolution:
+ {
+ integrity: sha512-uIifjT4s8cQKFQ8ZBXXyoUODtRoAd7F7+G8MKmtzj17+1UbdzFl52AzRyZRyKqPHhgzvXunnSckVu36flGy8cg==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
peerDependencies:
- typescript: '>=4.8.4 <6.0.0'
+ typescript: ">=4.8.4 <6.0.0"
- '@typescript-eslint/utils@5.62.0':
- resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ "@typescript-eslint/utils@5.62.0":
+ resolution:
+ {
+ integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==,
+ }
+ engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- '@typescript-eslint/utils@8.46.1':
- resolution: {integrity: sha512-vkYUy6LdZS7q1v/Gxb2Zs7zziuXN0wxqsetJdeZdRe/f5dwJFglmuvZBfTUivCtjH725C1jWCDfpadadD95EDQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ "@typescript-eslint/utils@8.46.1":
+ resolution:
+ {
+ integrity: sha512-vkYUy6LdZS7q1v/Gxb2Zs7zziuXN0wxqsetJdeZdRe/f5dwJFglmuvZBfTUivCtjH725C1jWCDfpadadD95EDQ==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <6.0.0'
+ typescript: ">=4.8.4 <6.0.0"
- '@typescript-eslint/visitor-keys@5.62.0':
- resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ "@typescript-eslint/visitor-keys@5.62.0":
+ resolution:
+ {
+ integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==,
+ }
+ engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
- '@typescript-eslint/visitor-keys@6.21.0':
- resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==}
- engines: {node: ^16.0.0 || >=18.0.0}
+ "@typescript-eslint/visitor-keys@6.21.0":
+ resolution:
+ {
+ integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==,
+ }
+ engines: { node: ^16.0.0 || >=18.0.0 }
- '@typescript-eslint/visitor-keys@8.46.1':
- resolution: {integrity: sha512-ptkmIf2iDkNUjdeu2bQqhFPV1m6qTnFFjg7PPDjxKWaMaP0Z6I9l30Jr3g5QqbZGdw8YdYvLp+XnqnWWZOg/NA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ "@typescript-eslint/visitor-keys@8.46.1":
+ resolution:
+ {
+ integrity: sha512-ptkmIf2iDkNUjdeu2bQqhFPV1m6qTnFFjg7PPDjxKWaMaP0Z6I9l30Jr3g5QqbZGdw8YdYvLp+XnqnWWZOg/NA==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
- '@ungap/structured-clone@1.3.0':
- resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
+ "@ungap/structured-clone@1.3.0":
+ resolution:
+ {
+ integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==,
+ }
- '@unrs/resolver-binding-android-arm-eabi@1.11.1':
- resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==}
+ "@unrs/resolver-binding-android-arm-eabi@1.11.1":
+ resolution:
+ {
+ integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==,
+ }
cpu: [arm]
os: [android]
- '@unrs/resolver-binding-android-arm64@1.11.1':
- resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==}
+ "@unrs/resolver-binding-android-arm64@1.11.1":
+ resolution:
+ {
+ integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==,
+ }
cpu: [arm64]
os: [android]
- '@unrs/resolver-binding-darwin-arm64@1.11.1':
- resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==}
+ "@unrs/resolver-binding-darwin-arm64@1.11.1":
+ resolution:
+ {
+ integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==,
+ }
cpu: [arm64]
os: [darwin]
- '@unrs/resolver-binding-darwin-x64@1.11.1':
- resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==}
+ "@unrs/resolver-binding-darwin-x64@1.11.1":
+ resolution:
+ {
+ integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==,
+ }
cpu: [x64]
os: [darwin]
- '@unrs/resolver-binding-freebsd-x64@1.11.1':
- resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==}
+ "@unrs/resolver-binding-freebsd-x64@1.11.1":
+ resolution:
+ {
+ integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==,
+ }
cpu: [x64]
os: [freebsd]
- '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1':
- resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==}
+ "@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1":
+ resolution:
+ {
+ integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==,
+ }
cpu: [arm]
os: [linux]
- '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1':
- resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==}
+ "@unrs/resolver-binding-linux-arm-musleabihf@1.11.1":
+ resolution:
+ {
+ integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==,
+ }
cpu: [arm]
os: [linux]
- '@unrs/resolver-binding-linux-arm64-gnu@1.11.1':
- resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==}
+ "@unrs/resolver-binding-linux-arm64-gnu@1.11.1":
+ resolution:
+ {
+ integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==,
+ }
cpu: [arm64]
os: [linux]
- '@unrs/resolver-binding-linux-arm64-musl@1.11.1':
- resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==}
+ "@unrs/resolver-binding-linux-arm64-musl@1.11.1":
+ resolution:
+ {
+ integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==,
+ }
cpu: [arm64]
os: [linux]
- '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1':
- resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==}
+ "@unrs/resolver-binding-linux-ppc64-gnu@1.11.1":
+ resolution:
+ {
+ integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==,
+ }
cpu: [ppc64]
os: [linux]
- '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1':
- resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==}
+ "@unrs/resolver-binding-linux-riscv64-gnu@1.11.1":
+ resolution:
+ {
+ integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==,
+ }
cpu: [riscv64]
os: [linux]
- '@unrs/resolver-binding-linux-riscv64-musl@1.11.1':
- resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==}
+ "@unrs/resolver-binding-linux-riscv64-musl@1.11.1":
+ resolution:
+ {
+ integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==,
+ }
cpu: [riscv64]
os: [linux]
- '@unrs/resolver-binding-linux-s390x-gnu@1.11.1':
- resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==}
+ "@unrs/resolver-binding-linux-s390x-gnu@1.11.1":
+ resolution:
+ {
+ integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==,
+ }
cpu: [s390x]
os: [linux]
- '@unrs/resolver-binding-linux-x64-gnu@1.11.1':
- resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==}
+ "@unrs/resolver-binding-linux-x64-gnu@1.11.1":
+ resolution:
+ {
+ integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==,
+ }
cpu: [x64]
os: [linux]
- '@unrs/resolver-binding-linux-x64-musl@1.11.1':
- resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==}
+ "@unrs/resolver-binding-linux-x64-musl@1.11.1":
+ resolution:
+ {
+ integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==,
+ }
cpu: [x64]
os: [linux]
- '@unrs/resolver-binding-wasm32-wasi@1.11.1':
- resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==}
- engines: {node: '>=14.0.0'}
+ "@unrs/resolver-binding-wasm32-wasi@1.11.1":
+ resolution:
+ {
+ integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==,
+ }
+ engines: { node: ">=14.0.0" }
cpu: [wasm32]
- '@unrs/resolver-binding-win32-arm64-msvc@1.11.1':
- resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==}
+ "@unrs/resolver-binding-win32-arm64-msvc@1.11.1":
+ resolution:
+ {
+ integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==,
+ }
cpu: [arm64]
os: [win32]
- '@unrs/resolver-binding-win32-ia32-msvc@1.11.1':
- resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==}
+ "@unrs/resolver-binding-win32-ia32-msvc@1.11.1":
+ resolution:
+ {
+ integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==,
+ }
cpu: [ia32]
os: [win32]
- '@unrs/resolver-binding-win32-x64-msvc@1.11.1':
- resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==}
+ "@unrs/resolver-binding-win32-x64-msvc@1.11.1":
+ resolution:
+ {
+ integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==,
+ }
cpu: [x64]
os: [win32]
acorn-jsx@5.3.2:
- resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
+ resolution:
+ {
+ integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==,
+ }
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
acorn@8.15.0:
- resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
- engines: {node: '>=0.4.0'}
+ resolution:
+ {
+ integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==,
+ }
+ engines: { node: ">=0.4.0" }
hasBin: true
ajv@6.12.6:
- resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+ resolution:
+ {
+ integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==,
+ }
ansi-regex@5.0.1:
- resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==,
+ }
+ engines: { node: ">=8" }
ansi-styles@4.3.0:
- resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==,
+ }
+ engines: { node: ">=8" }
any-promise@1.3.0:
- resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
+ resolution:
+ {
+ integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==,
+ }
anymatch@3.1.3:
- resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
- engines: {node: '>= 8'}
+ resolution:
+ {
+ integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==,
+ }
+ engines: { node: ">= 8" }
arg@5.0.2:
- resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
+ resolution:
+ {
+ integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==,
+ }
argparse@2.0.1:
- resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+ resolution:
+ {
+ integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==,
+ }
aria-hidden@1.2.6:
- resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==,
+ }
+ engines: { node: ">=10" }
aria-query@5.3.2:
- resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==,
+ }
+ engines: { node: ">= 0.4" }
array-buffer-byte-length@1.0.2:
- resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==,
+ }
+ engines: { node: ">= 0.4" }
array-includes@3.1.9:
- resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==,
+ }
+ engines: { node: ">= 0.4" }
array-union@2.1.0:
- resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==,
+ }
+ engines: { node: ">=8" }
array.prototype.findlast@1.2.5:
- resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==,
+ }
+ engines: { node: ">= 0.4" }
array.prototype.findlastindex@1.2.6:
- resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==,
+ }
+ engines: { node: ">= 0.4" }
array.prototype.flat@1.3.3:
- resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==,
+ }
+ engines: { node: ">= 0.4" }
array.prototype.flatmap@1.3.3:
- resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==,
+ }
+ engines: { node: ">= 0.4" }
array.prototype.tosorted@1.1.4:
- resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==,
+ }
+ engines: { node: ">= 0.4" }
arraybuffer.prototype.slice@1.0.4:
- resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==,
+ }
+ engines: { node: ">= 0.4" }
ast-types-flow@0.0.8:
- resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==}
+ resolution:
+ {
+ integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==,
+ }
async-function@1.0.0:
- resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==,
+ }
+ engines: { node: ">= 0.4" }
atomic-sleep@1.0.0:
- resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==}
- engines: {node: '>=8.0.0'}
+ resolution:
+ {
+ integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==,
+ }
+ engines: { node: ">=8.0.0" }
autoprefixer@10.4.17:
- resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==}
- engines: {node: ^10 || ^12 || >=14}
+ resolution:
+ {
+ integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==,
+ }
+ engines: { node: ^10 || ^12 || >=14 }
hasBin: true
peerDependencies:
postcss: ^8.1.0
available-typed-arrays@1.0.7:
- resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==,
+ }
+ engines: { node: ">= 0.4" }
axe-core@4.11.0:
- resolution: {integrity: sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==}
- engines: {node: '>=4'}
+ resolution:
+ {
+ integrity: sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==,
+ }
+ engines: { node: ">=4" }
axobject-query@4.1.0:
- resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==,
+ }
+ engines: { node: ">= 0.4" }
balanced-match@1.0.2:
- resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+ resolution:
+ {
+ integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==,
+ }
baseline-browser-mapping@2.8.16:
- resolution: {integrity: sha512-OMu3BGQ4E7P1ErFsIPpbJh0qvDudM/UuJeHgkAvfWe+0HFJCXh+t/l8L6fVLR55RI/UbKrVLnAXZSVwd9ysWYw==}
+ resolution:
+ {
+ integrity: sha512-OMu3BGQ4E7P1ErFsIPpbJh0qvDudM/UuJeHgkAvfWe+0HFJCXh+t/l8L6fVLR55RI/UbKrVLnAXZSVwd9ysWYw==,
+ }
hasBin: true
bcryptjs@3.0.2:
- resolution: {integrity: sha512-k38b3XOZKv60C4E2hVsXTolJWfkGRMbILBIe2IBITXciy5bOsTKot5kDrf3ZfufQtQOUN5mXceUEpU1rTl9Uog==}
+ resolution:
+ {
+ integrity: sha512-k38b3XOZKv60C4E2hVsXTolJWfkGRMbILBIe2IBITXciy5bOsTKot5kDrf3ZfufQtQOUN5mXceUEpU1rTl9Uog==,
+ }
hasBin: true
binary-extensions@2.3.0:
- resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==,
+ }
+ engines: { node: ">=8" }
brace-expansion@1.1.12:
- resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
+ resolution:
+ {
+ integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==,
+ }
brace-expansion@2.0.2:
- resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
+ resolution:
+ {
+ integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==,
+ }
braces@3.0.3:
- resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==,
+ }
+ engines: { node: ">=8" }
browserslist@4.26.3:
- resolution: {integrity: sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==}
- engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ resolution:
+ {
+ integrity: sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==,
+ }
+ engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 }
hasBin: true
bson@6.10.4:
- resolution: {integrity: sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==}
- engines: {node: '>=16.20.1'}
+ resolution:
+ {
+ integrity: sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==,
+ }
+ engines: { node: ">=16.20.1" }
c12@3.1.0:
- resolution: {integrity: sha512-uWoS8OU1MEIsOv8p/5a82c3H31LsWVR5qiyXVfBNOzfffjUWtPnhAb4BYI2uG2HfGmZmFjCtui5XNWaps+iFuw==}
+ resolution:
+ {
+ integrity: sha512-uWoS8OU1MEIsOv8p/5a82c3H31LsWVR5qiyXVfBNOzfffjUWtPnhAb4BYI2uG2HfGmZmFjCtui5XNWaps+iFuw==,
+ }
peerDependencies:
magicast: ^0.3.5
peerDependenciesMeta:
@@ -1440,266 +2169,464 @@ packages:
optional: true
call-bind-apply-helpers@1.0.2:
- resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==,
+ }
+ engines: { node: ">= 0.4" }
call-bind@1.0.8:
- resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==,
+ }
+ engines: { node: ">= 0.4" }
call-bound@1.0.4:
- resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==,
+ }
+ engines: { node: ">= 0.4" }
callsites@3.1.0:
- resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
- engines: {node: '>=6'}
+ resolution:
+ {
+ integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==,
+ }
+ engines: { node: ">=6" }
camelcase-css@2.0.1:
- resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
- engines: {node: '>= 6'}
+ resolution:
+ {
+ integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==,
+ }
+ engines: { node: ">= 6" }
caniuse-lite@1.0.30001750:
- resolution: {integrity: sha512-cuom0g5sdX6rw00qOoLNSFCJ9/mYIsuSOA+yzpDw8eopiFqcVwQvZHqov0vmEighRxX++cfC0Vg1G+1Iy/mSpQ==}
+ resolution:
+ {
+ integrity: sha512-cuom0g5sdX6rw00qOoLNSFCJ9/mYIsuSOA+yzpDw8eopiFqcVwQvZHqov0vmEighRxX++cfC0Vg1G+1Iy/mSpQ==,
+ }
chalk@4.1.2:
- resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==,
+ }
+ engines: { node: ">=10" }
chokidar@3.6.0:
- resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
- engines: {node: '>= 8.10.0'}
+ resolution:
+ {
+ integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==,
+ }
+ engines: { node: ">= 8.10.0" }
chokidar@4.0.3:
- resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
- engines: {node: '>= 14.16.0'}
+ resolution:
+ {
+ integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==,
+ }
+ engines: { node: ">= 14.16.0" }
citty@0.1.6:
- resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==}
+ resolution:
+ {
+ integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==,
+ }
class-variance-authority@0.7.1:
- resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==}
+ resolution:
+ {
+ integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==,
+ }
client-only@0.0.1:
- resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
+ resolution:
+ {
+ integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==,
+ }
clsx@2.1.1:
- resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
- engines: {node: '>=6'}
+ resolution:
+ {
+ integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==,
+ }
+ engines: { node: ">=6" }
color-convert@2.0.1:
- resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
- engines: {node: '>=7.0.0'}
+ resolution:
+ {
+ integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==,
+ }
+ engines: { node: ">=7.0.0" }
color-name@1.1.4:
- resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+ resolution:
+ {
+ integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==,
+ }
color-string@1.9.1:
- resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
+ resolution:
+ {
+ integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==,
+ }
color@4.2.3:
- resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
- engines: {node: '>=12.5.0'}
+ resolution:
+ {
+ integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==,
+ }
+ engines: { node: ">=12.5.0" }
colorette@2.0.20:
- resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
+ resolution:
+ {
+ integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==,
+ }
commander@4.1.1:
- resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
- engines: {node: '>= 6'}
+ resolution:
+ {
+ integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==,
+ }
+ engines: { node: ">= 6" }
concat-map@0.0.1:
- resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+ resolution:
+ {
+ integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==,
+ }
confbox@0.2.2:
- resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==}
+ resolution:
+ {
+ integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==,
+ }
consola@3.4.2:
- resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==}
- engines: {node: ^14.18.0 || >=16.10.0}
+ resolution:
+ {
+ integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==,
+ }
+ engines: { node: ^14.18.0 || >=16.10.0 }
cross-spawn@7.0.6:
- resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
- engines: {node: '>= 8'}
+ resolution:
+ {
+ integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==,
+ }
+ engines: { node: ">= 8" }
cssesc@3.0.0:
- resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
- engines: {node: '>=4'}
+ resolution:
+ {
+ integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==,
+ }
+ engines: { node: ">=4" }
hasBin: true
csstype@3.1.3:
- resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+ resolution:
+ {
+ integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==,
+ }
damerau-levenshtein@1.0.8:
- resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
+ resolution:
+ {
+ integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==,
+ }
data-view-buffer@1.0.2:
- resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==,
+ }
+ engines: { node: ">= 0.4" }
data-view-byte-length@1.0.2:
- resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==,
+ }
+ engines: { node: ">= 0.4" }
data-view-byte-offset@1.0.1:
- resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==,
+ }
+ engines: { node: ">= 0.4" }
dateformat@4.6.3:
- resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==}
+ resolution:
+ {
+ integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==,
+ }
debug@3.2.7:
- resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
+ resolution:
+ {
+ integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==,
+ }
peerDependencies:
- supports-color: '*'
+ supports-color: "*"
peerDependenciesMeta:
supports-color:
optional: true
debug@4.4.3:
- resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
- engines: {node: '>=6.0'}
+ resolution:
+ {
+ integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==,
+ }
+ engines: { node: ">=6.0" }
peerDependencies:
- supports-color: '*'
+ supports-color: "*"
peerDependenciesMeta:
supports-color:
optional: true
deep-is@0.1.4:
- resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+ resolution:
+ {
+ integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==,
+ }
deepmerge-ts@7.1.5:
- resolution: {integrity: sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==}
- engines: {node: '>=16.0.0'}
+ resolution:
+ {
+ integrity: sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==,
+ }
+ engines: { node: ">=16.0.0" }
define-data-property@1.1.4:
- resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==,
+ }
+ engines: { node: ">= 0.4" }
define-properties@1.2.1:
- resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==,
+ }
+ engines: { node: ">= 0.4" }
defu@6.1.4:
- resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
+ resolution:
+ {
+ integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==,
+ }
destr@2.0.5:
- resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==}
+ resolution:
+ {
+ integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==,
+ }
detect-libc@2.1.2:
- resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==,
+ }
+ engines: { node: ">=8" }
detect-node-es@1.1.0:
- resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==}
+ resolution:
+ {
+ integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==,
+ }
didyoumean@1.2.2:
- resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
+ resolution:
+ {
+ integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==,
+ }
dir-glob@3.0.1:
- resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==,
+ }
+ engines: { node: ">=8" }
dlv@1.1.3:
- resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
+ resolution:
+ {
+ integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==,
+ }
doctrine@2.1.0:
- resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
- engines: {node: '>=0.10.0'}
+ resolution:
+ {
+ integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==,
+ }
+ engines: { node: ">=0.10.0" }
doctrine@3.0.0:
- resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
- engines: {node: '>=6.0.0'}
+ resolution:
+ {
+ integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==,
+ }
+ engines: { node: ">=6.0.0" }
dotenv@16.6.1:
- resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==,
+ }
+ engines: { node: ">=12" }
dunder-proto@1.0.1:
- resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==,
+ }
+ engines: { node: ">= 0.4" }
effect@3.16.12:
- resolution: {integrity: sha512-N39iBk0K71F9nb442TLbTkjl24FLUzuvx2i1I2RsEAQsdAdUTuUoW0vlfUXgkMTUOnYqKnWcFfqw4hK4Pw27hg==}
+ resolution:
+ {
+ integrity: sha512-N39iBk0K71F9nb442TLbTkjl24FLUzuvx2i1I2RsEAQsdAdUTuUoW0vlfUXgkMTUOnYqKnWcFfqw4hK4Pw27hg==,
+ }
electron-to-chromium@1.5.235:
- resolution: {integrity: sha512-i/7ntLFwOdoHY7sgjlTIDo4Sl8EdoTjWIaKinYOVfC6bOp71bmwenyZthWHcasxgHDNWbWxvG9M3Ia116zIaYQ==}
+ resolution:
+ {
+ integrity: sha512-i/7ntLFwOdoHY7sgjlTIDo4Sl8EdoTjWIaKinYOVfC6bOp71bmwenyZthWHcasxgHDNWbWxvG9M3Ia116zIaYQ==,
+ }
emoji-regex@9.2.2:
- resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+ resolution:
+ {
+ integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==,
+ }
empathic@2.0.0:
- resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==}
- engines: {node: '>=14'}
+ resolution:
+ {
+ integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==,
+ }
+ engines: { node: ">=14" }
end-of-stream@1.4.5:
- resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==}
+ resolution:
+ {
+ integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==,
+ }
es-abstract@1.24.0:
- resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==,
+ }
+ engines: { node: ">= 0.4" }
es-define-property@1.0.1:
- resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==,
+ }
+ engines: { node: ">= 0.4" }
es-errors@1.3.0:
- resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==,
+ }
+ engines: { node: ">= 0.4" }
es-iterator-helpers@1.2.1:
- resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==,
+ }
+ engines: { node: ">= 0.4" }
es-object-atoms@1.1.1:
- resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==,
+ }
+ engines: { node: ">= 0.4" }
es-set-tostringtag@2.1.0:
- resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==,
+ }
+ engines: { node: ">= 0.4" }
es-shim-unscopables@1.1.0:
- resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==,
+ }
+ engines: { node: ">= 0.4" }
es-to-primitive@1.3.0:
- resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==,
+ }
+ engines: { node: ">= 0.4" }
escalade@3.2.0:
- resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
- engines: {node: '>=6'}
+ resolution:
+ {
+ integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==,
+ }
+ engines: { node: ">=6" }
escape-string-regexp@4.0.0:
- resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==,
+ }
+ engines: { node: ">=10" }
eslint-config-next@15.2.0:
- resolution: {integrity: sha512-LkG0KKpinAoNPk2HXSx0fImFb/hQ6RnhSxTkpJFTkQ0SmnzsbRsjjN95WC/mDY34nKOenpptYEVvfkCR/h+VjA==}
+ resolution:
+ {
+ integrity: sha512-LkG0KKpinAoNPk2HXSx0fImFb/hQ6RnhSxTkpJFTkQ0SmnzsbRsjjN95WC/mDY34nKOenpptYEVvfkCR/h+VjA==,
+ }
peerDependencies:
eslint: ^7.23.0 || ^8.0.0 || ^9.0.0
- typescript: '>=3.3.1'
+ typescript: ">=3.3.1"
peerDependenciesMeta:
typescript:
optional: true
eslint-config-prettier@10.0.1:
- resolution: {integrity: sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==}
+ resolution:
+ {
+ integrity: sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==,
+ }
hasBin: true
peerDependencies:
- eslint: '>=7.0.0'
+ eslint: ">=7.0.0"
eslint-import-resolver-node@0.3.9:
- resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
+ resolution:
+ {
+ integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==,
+ }
eslint-import-resolver-typescript@3.10.1:
- resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==}
- engines: {node: ^14.18.0 || >=16.0.0}
+ resolution:
+ {
+ integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==,
+ }
+ engines: { node: ^14.18.0 || >=16.0.0 }
peerDependencies:
- eslint: '*'
- eslint-plugin-import: '*'
- eslint-plugin-import-x: '*'
+ eslint: "*"
+ eslint-plugin-import: "*"
+ eslint-plugin-import-x: "*"
peerDependenciesMeta:
eslint-plugin-import:
optional: true
@@ -1707,16 +2634,19 @@ packages:
optional: true
eslint-module-utils@2.12.1:
- resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==}
- engines: {node: '>=4'}
+ resolution:
+ {
+ integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==,
+ }
+ engines: { node: ">=4" }
peerDependencies:
- '@typescript-eslint/parser': '*'
- eslint: '*'
- eslint-import-resolver-node: '*'
- eslint-import-resolver-typescript: '*'
- eslint-import-resolver-webpack: '*'
+ "@typescript-eslint/parser": "*"
+ eslint: "*"
+ eslint-import-resolver-node: "*"
+ eslint-import-resolver-typescript: "*"
+ eslint-import-resolver-webpack: "*"
peerDependenciesMeta:
- '@typescript-eslint/parser':
+ "@typescript-eslint/parser":
optional: true
eslint:
optional: true
@@ -1728,132 +2658,216 @@ packages:
optional: true
eslint-plugin-import@2.32.0:
- resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==}
- engines: {node: '>=4'}
+ resolution:
+ {
+ integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==,
+ }
+ engines: { node: ">=4" }
peerDependencies:
- '@typescript-eslint/parser': '*'
+ "@typescript-eslint/parser": "*"
eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9
peerDependenciesMeta:
- '@typescript-eslint/parser':
+ "@typescript-eslint/parser":
optional: true
eslint-plugin-jsx-a11y@6.10.2:
- resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==}
- engines: {node: '>=4.0'}
+ resolution:
+ {
+ integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==,
+ }
+ engines: { node: ">=4.0" }
peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9
eslint-plugin-react-hooks@5.2.0:
- resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==,
+ }
+ engines: { node: ">=10" }
peerDependencies:
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
eslint-plugin-react@7.37.5:
- resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==}
- engines: {node: '>=4'}
+ resolution:
+ {
+ integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==,
+ }
+ engines: { node: ">=4" }
peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
eslint-plugin-typescript-sort-keys@3.3.0:
- resolution: {integrity: sha512-bRW3Rc/VNdrSP9OoY5wgjjaXCOOkZKpzvl/Mk6l8Sg8CMehVIcg9K4y33l+ZcZiknpl0aR6rKusxuCJNGZWmVw==}
- engines: {node: '>= 16'}
+ resolution:
+ {
+ integrity: sha512-bRW3Rc/VNdrSP9OoY5wgjjaXCOOkZKpzvl/Mk6l8Sg8CMehVIcg9K4y33l+ZcZiknpl0aR6rKusxuCJNGZWmVw==,
+ }
+ engines: { node: ">= 16" }
peerDependencies:
- '@typescript-eslint/parser': '>=6'
+ "@typescript-eslint/parser": ">=6"
eslint: ^7 || ^8
typescript: ^3 || ^4 || ^5
eslint-plugin-unused-imports@4.2.0:
- resolution: {integrity: sha512-hLbJ2/wnjKq4kGA9AUaExVFIbNzyxYdVo49QZmKCnhk5pc9wcYRbfgLHvWJ8tnsdcseGhoUAddm9gn/lt+d74w==}
+ resolution:
+ {
+ integrity: sha512-hLbJ2/wnjKq4kGA9AUaExVFIbNzyxYdVo49QZmKCnhk5pc9wcYRbfgLHvWJ8tnsdcseGhoUAddm9gn/lt+d74w==,
+ }
peerDependencies:
- '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0
+ "@typescript-eslint/eslint-plugin": ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0
eslint: ^9.0.0 || ^8.0.0
peerDependenciesMeta:
- '@typescript-eslint/eslint-plugin':
+ "@typescript-eslint/eslint-plugin":
optional: true
eslint-scope@5.1.1:
- resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
- engines: {node: '>=8.0.0'}
+ resolution:
+ {
+ integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==,
+ }
+ engines: { node: ">=8.0.0" }
eslint-scope@7.2.2:
- resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ resolution:
+ {
+ integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==,
+ }
+ engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
eslint-visitor-keys@3.4.3:
- resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ resolution:
+ {
+ integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==,
+ }
+ engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
eslint-visitor-keys@4.2.1:
- resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ resolution:
+ {
+ integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
eslint@8.56.0:
- resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ resolution:
+ {
+ integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==,
+ }
+ engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
hasBin: true
espree@9.6.1:
- resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ resolution:
+ {
+ integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==,
+ }
+ engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
esquery@1.6.0:
- resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
- engines: {node: '>=0.10'}
+ resolution:
+ {
+ integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==,
+ }
+ engines: { node: ">=0.10" }
esrecurse@4.3.0:
- resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
- engines: {node: '>=4.0'}
+ resolution:
+ {
+ integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==,
+ }
+ engines: { node: ">=4.0" }
estraverse@4.3.0:
- resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
- engines: {node: '>=4.0'}
+ resolution:
+ {
+ integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==,
+ }
+ engines: { node: ">=4.0" }
estraverse@5.3.0:
- resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
- engines: {node: '>=4.0'}
+ resolution:
+ {
+ integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==,
+ }
+ engines: { node: ">=4.0" }
esutils@2.0.3:
- resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
- engines: {node: '>=0.10.0'}
+ resolution:
+ {
+ integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==,
+ }
+ engines: { node: ">=0.10.0" }
exsolve@1.0.7:
- resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==}
+ resolution:
+ {
+ integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==,
+ }
fast-check@3.23.2:
- resolution: {integrity: sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==}
- engines: {node: '>=8.0.0'}
+ resolution:
+ {
+ integrity: sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==,
+ }
+ engines: { node: ">=8.0.0" }
fast-copy@3.0.2:
- resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==}
+ resolution:
+ {
+ integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==,
+ }
fast-deep-equal@3.1.3:
- resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+ resolution:
+ {
+ integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==,
+ }
fast-glob@3.3.1:
- resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==}
- engines: {node: '>=8.6.0'}
+ resolution:
+ {
+ integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==,
+ }
+ engines: { node: ">=8.6.0" }
fast-glob@3.3.3:
- resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
- engines: {node: '>=8.6.0'}
+ resolution:
+ {
+ integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==,
+ }
+ engines: { node: ">=8.6.0" }
fast-json-stable-stringify@2.1.0:
- resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+ resolution:
+ {
+ integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==,
+ }
fast-levenshtein@2.0.6:
- resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
+ resolution:
+ {
+ integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==,
+ }
fast-safe-stringify@2.1.1:
- resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==}
+ resolution:
+ {
+ integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==,
+ }
fastq@1.19.1:
- resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
+ resolution:
+ {
+ integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==,
+ }
fdir@6.5.0:
- resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
- engines: {node: '>=12.0.0'}
+ resolution:
+ {
+ integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==,
+ }
+ engines: { node: ">=12.0.0" }
peerDependencies:
picomatch: ^3 || ^4
peerDependenciesMeta:
@@ -1861,39 +2875,63 @@ packages:
optional: true
file-entry-cache@6.0.1:
- resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
- engines: {node: ^10.12.0 || >=12.0.0}
+ resolution:
+ {
+ integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==,
+ }
+ engines: { node: ^10.12.0 || >=12.0.0 }
fill-range@7.1.1:
- resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==,
+ }
+ engines: { node: ">=8" }
find-up@5.0.0:
- resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==,
+ }
+ engines: { node: ">=10" }
flat-cache@3.2.0:
- resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
- engines: {node: ^10.12.0 || >=12.0.0}
+ resolution:
+ {
+ integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==,
+ }
+ engines: { node: ^10.12.0 || >=12.0.0 }
flatted@3.3.3:
- resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
+ resolution:
+ {
+ integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==,
+ }
for-each@0.3.5:
- resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==,
+ }
+ engines: { node: ">= 0.4" }
fraction.js@4.3.7:
- resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
+ resolution:
+ {
+ integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==,
+ }
framer-motion@12.23.24:
- resolution: {integrity: sha512-HMi5HRoRCTou+3fb3h9oTLyJGBxHfW+HnNE25tAXOvVx/IvwMHK0cx7IR4a2ZU6sh3IX1Z+4ts32PcYBOqka8w==}
+ resolution:
+ {
+ integrity: sha512-HMi5HRoRCTou+3fb3h9oTLyJGBxHfW+HnNE25tAXOvVx/IvwMHK0cx7IR4a2ZU6sh3IX1Z+4ts32PcYBOqka8w==,
+ }
peerDependencies:
- '@emotion/is-prop-valid': '*'
+ "@emotion/is-prop-valid": "*"
react: ^18.0.0 || ^19.0.0
react-dom: ^18.0.0 || ^19.0.0
peerDependenciesMeta:
- '@emotion/is-prop-valid':
+ "@emotion/is-prop-valid":
optional: true
react:
optional: true
@@ -1901,116 +2939,206 @@ packages:
optional: true
fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ resolution:
+ {
+ integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==,
+ }
+ engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 }
os: [darwin]
function-bind@1.1.2:
- resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+ resolution:
+ {
+ integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==,
+ }
function.prototype.name@1.1.8:
- resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==,
+ }
+ engines: { node: ">= 0.4" }
functions-have-names@1.2.3:
- resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
+ resolution:
+ {
+ integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==,
+ }
generator-function@2.0.1:
- resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==,
+ }
+ engines: { node: ">= 0.4" }
get-intrinsic@1.3.0:
- resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==,
+ }
+ engines: { node: ">= 0.4" }
get-nonce@1.0.1:
- resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==}
- engines: {node: '>=6'}
+ resolution:
+ {
+ integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==,
+ }
+ engines: { node: ">=6" }
get-proto@1.0.1:
- resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==,
+ }
+ engines: { node: ">= 0.4" }
get-symbol-description@1.1.0:
- resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==,
+ }
+ engines: { node: ">= 0.4" }
get-tsconfig@4.12.0:
- resolution: {integrity: sha512-LScr2aNr2FbjAjZh2C6X6BxRx1/x+aTDExct/xyq2XKbYOiG5c0aK7pMsSuyc0brz3ibr/lbQiHD9jzt4lccJw==}
+ resolution:
+ {
+ integrity: sha512-LScr2aNr2FbjAjZh2C6X6BxRx1/x+aTDExct/xyq2XKbYOiG5c0aK7pMsSuyc0brz3ibr/lbQiHD9jzt4lccJw==,
+ }
giget@2.0.0:
- resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==}
+ resolution:
+ {
+ integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==,
+ }
hasBin: true
glob-parent@5.1.2:
- resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
- engines: {node: '>= 6'}
+ resolution:
+ {
+ integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==,
+ }
+ engines: { node: ">= 6" }
glob-parent@6.0.2:
- resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
- engines: {node: '>=10.13.0'}
+ resolution:
+ {
+ integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==,
+ }
+ engines: { node: ">=10.13.0" }
glob@13.0.0:
- resolution: {integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==}
- engines: {node: 20 || >=22}
+ resolution:
+ {
+ integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==,
+ }
+ engines: { node: 20 || >=22 }
globals@13.24.0:
- resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==,
+ }
+ engines: { node: ">=8" }
globalthis@1.0.4:
- resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==,
+ }
+ engines: { node: ">= 0.4" }
globby@11.1.0:
- resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==,
+ }
+ engines: { node: ">=10" }
gopd@1.2.0:
- resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==,
+ }
+ engines: { node: ">= 0.4" }
graphemer@1.4.0:
- resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
+ resolution:
+ {
+ integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==,
+ }
has-bigints@1.1.0:
- resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==,
+ }
+ engines: { node: ">= 0.4" }
has-flag@4.0.0:
- resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==,
+ }
+ engines: { node: ">=8" }
has-property-descriptors@1.0.2:
- resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
+ resolution:
+ {
+ integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==,
+ }
has-proto@1.2.0:
- resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==,
+ }
+ engines: { node: ">= 0.4" }
has-symbols@1.1.0:
- resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==,
+ }
+ engines: { node: ">= 0.4" }
has-tostringtag@1.0.2:
- resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==,
+ }
+ engines: { node: ">= 0.4" }
hasown@2.0.2:
- resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==,
+ }
+ engines: { node: ">= 0.4" }
help-me@5.0.0:
- resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==}
+ resolution:
+ {
+ integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==,
+ }
html-parse-stringify@3.0.1:
- resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==}
+ resolution:
+ {
+ integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==,
+ }
i18next-browser-languagedetector@8.2.0:
- resolution: {integrity: sha512-P+3zEKLnOF0qmiesW383vsLdtQVyKtCNA9cjSoKCppTKPQVfKd2W8hbVo5ZhNJKDqeM7BOcvNoKJOjpHh4Js9g==}
+ resolution:
+ {
+ integrity: sha512-P+3zEKLnOF0qmiesW383vsLdtQVyKtCNA9cjSoKCppTKPQVfKd2W8hbVo5ZhNJKDqeM7BOcvNoKJOjpHh4Js9g==,
+ }
i18next@24.2.3:
- resolution: {integrity: sha512-lfbf80OzkocvX7nmZtu7nSTNbrTYR52sLWxPtlXX1zAhVw8WEnFk4puUkCR4B1dNQwbSpEHHHemcZu//7EcB7A==}
+ resolution:
+ {
+ integrity: sha512-lfbf80OzkocvX7nmZtu7nSTNbrTYR52sLWxPtlXX1zAhVw8WEnFk4puUkCR4B1dNQwbSpEHHHemcZu//7EcB7A==,
+ }
peerDependencies:
typescript: ^5
peerDependenciesMeta:
@@ -2018,291 +3146,510 @@ packages:
optional: true
ignore@5.3.2:
- resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
- engines: {node: '>= 4'}
+ resolution:
+ {
+ integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==,
+ }
+ engines: { node: ">= 4" }
ignore@7.0.5:
- resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==}
- engines: {node: '>= 4'}
+ resolution:
+ {
+ integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==,
+ }
+ engines: { node: ">= 4" }
import-fresh@3.3.1:
- resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
- engines: {node: '>=6'}
+ resolution:
+ {
+ integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==,
+ }
+ engines: { node: ">=6" }
imurmurhash@0.1.4:
- resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
- engines: {node: '>=0.8.19'}
+ resolution:
+ {
+ integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==,
+ }
+ engines: { node: ">=0.8.19" }
internal-slot@1.1.0:
- resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==,
+ }
+ engines: { node: ">= 0.4" }
is-array-buffer@3.0.5:
- resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==,
+ }
+ engines: { node: ">= 0.4" }
is-arrayish@0.3.4:
- resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==}
+ resolution:
+ {
+ integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==,
+ }
is-async-function@2.1.1:
- resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==,
+ }
+ engines: { node: ">= 0.4" }
is-bigint@1.1.0:
- resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==,
+ }
+ engines: { node: ">= 0.4" }
is-binary-path@2.1.0:
- resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==,
+ }
+ engines: { node: ">=8" }
is-boolean-object@1.2.2:
- resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==,
+ }
+ engines: { node: ">= 0.4" }
is-bun-module@2.0.0:
- resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==}
+ resolution:
+ {
+ integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==,
+ }
is-callable@1.2.7:
- resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==,
+ }
+ engines: { node: ">= 0.4" }
is-core-module@2.16.1:
- resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==,
+ }
+ engines: { node: ">= 0.4" }
is-data-view@1.0.2:
- resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==,
+ }
+ engines: { node: ">= 0.4" }
is-date-object@1.1.0:
- resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==,
+ }
+ engines: { node: ">= 0.4" }
is-extglob@2.1.1:
- resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
- engines: {node: '>=0.10.0'}
+ resolution:
+ {
+ integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==,
+ }
+ engines: { node: ">=0.10.0" }
is-finalizationregistry@1.1.1:
- resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==,
+ }
+ engines: { node: ">= 0.4" }
is-generator-function@1.1.2:
- resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==,
+ }
+ engines: { node: ">= 0.4" }
is-glob@4.0.3:
- resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
- engines: {node: '>=0.10.0'}
+ resolution:
+ {
+ integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==,
+ }
+ engines: { node: ">=0.10.0" }
is-map@2.0.3:
- resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==,
+ }
+ engines: { node: ">= 0.4" }
is-negative-zero@2.0.3:
- resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==,
+ }
+ engines: { node: ">= 0.4" }
is-number-object@1.1.1:
- resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==,
+ }
+ engines: { node: ">= 0.4" }
is-number@7.0.0:
- resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
- engines: {node: '>=0.12.0'}
+ resolution:
+ {
+ integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==,
+ }
+ engines: { node: ">=0.12.0" }
is-path-inside@3.0.3:
- resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==,
+ }
+ engines: { node: ">=8" }
is-regex@1.2.1:
- resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==,
+ }
+ engines: { node: ">= 0.4" }
is-set@2.0.3:
- resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==,
+ }
+ engines: { node: ">= 0.4" }
is-shared-array-buffer@1.0.4:
- resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==,
+ }
+ engines: { node: ">= 0.4" }
is-string@1.1.1:
- resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==,
+ }
+ engines: { node: ">= 0.4" }
is-symbol@1.1.1:
- resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==,
+ }
+ engines: { node: ">= 0.4" }
is-typed-array@1.1.15:
- resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==,
+ }
+ engines: { node: ">= 0.4" }
is-weakmap@2.0.2:
- resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==,
+ }
+ engines: { node: ">= 0.4" }
is-weakref@1.1.1:
- resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==,
+ }
+ engines: { node: ">= 0.4" }
is-weakset@2.0.4:
- resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==,
+ }
+ engines: { node: ">= 0.4" }
isarray@2.0.5:
- resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
+ resolution:
+ {
+ integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==,
+ }
isexe@2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+ resolution:
+ {
+ integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==,
+ }
iterator.prototype@1.1.5:
- resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==,
+ }
+ engines: { node: ">= 0.4" }
jiti@1.21.7:
- resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==}
+ resolution:
+ {
+ integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==,
+ }
hasBin: true
jiti@2.6.1:
- resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
+ resolution:
+ {
+ integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==,
+ }
hasBin: true
jose@6.1.0:
- resolution: {integrity: sha512-TTQJyoEoKcC1lscpVDCSsVgYzUDg/0Bt3WE//WiTPK6uOCQC2KZS4MpugbMWt/zyjkopgZoXhZuCi00gLudfUA==}
+ resolution:
+ {
+ integrity: sha512-TTQJyoEoKcC1lscpVDCSsVgYzUDg/0Bt3WE//WiTPK6uOCQC2KZS4MpugbMWt/zyjkopgZoXhZuCi00gLudfUA==,
+ }
joycon@3.1.1:
- resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==,
+ }
+ engines: { node: ">=10" }
js-tokens@4.0.0:
- resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+ resolution:
+ {
+ integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==,
+ }
js-yaml@4.1.1:
- resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
+ resolution:
+ {
+ integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==,
+ }
hasBin: true
json-buffer@3.0.1:
- resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
+ resolution:
+ {
+ integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==,
+ }
json-schema-traverse@0.4.1:
- resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+ resolution:
+ {
+ integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==,
+ }
json-schema@0.4.0:
- resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==}
+ resolution:
+ {
+ integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==,
+ }
json-stable-stringify-without-jsonify@1.0.1:
- resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
+ resolution:
+ {
+ integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==,
+ }
json5@1.0.2:
- resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
+ resolution:
+ {
+ integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==,
+ }
hasBin: true
jsx-ast-utils@3.3.5:
- resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
- engines: {node: '>=4.0'}
+ resolution:
+ {
+ integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==,
+ }
+ engines: { node: ">=4.0" }
keyv@4.5.4:
- resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
+ resolution:
+ {
+ integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==,
+ }
language-subtag-registry@0.3.23:
- resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==}
+ resolution:
+ {
+ integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==,
+ }
language-tags@1.0.9:
- resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==}
- engines: {node: '>=0.10'}
+ resolution:
+ {
+ integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==,
+ }
+ engines: { node: ">=0.10" }
levn@0.4.1:
- resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
- engines: {node: '>= 0.8.0'}
+ resolution:
+ {
+ integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==,
+ }
+ engines: { node: ">= 0.8.0" }
lilconfig@2.1.0:
- resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==,
+ }
+ engines: { node: ">=10" }
lilconfig@3.1.3:
- resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==}
- engines: {node: '>=14'}
+ resolution:
+ {
+ integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==,
+ }
+ engines: { node: ">=14" }
lines-and-columns@1.2.4:
- resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+ resolution:
+ {
+ integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==,
+ }
locate-path@6.0.0:
- resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==,
+ }
+ engines: { node: ">=10" }
lodash.merge@4.6.2:
- resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+ resolution:
+ {
+ integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==,
+ }
loose-envify@1.4.0:
- resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ resolution:
+ {
+ integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==,
+ }
hasBin: true
lru-cache@11.2.4:
- resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==}
- engines: {node: 20 || >=22}
+ resolution:
+ {
+ integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==,
+ }
+ engines: { node: 20 || >=22 }
lucide-react@0.487.0:
- resolution: {integrity: sha512-aKqhOQ+YmFnwq8dWgGjOuLc8V1R9/c/yOd+zDY4+ohsR2Jo05lSGc3WsstYPIzcTpeosN7LoCkLReUUITvaIvw==}
+ resolution:
+ {
+ integrity: sha512-aKqhOQ+YmFnwq8dWgGjOuLc8V1R9/c/yOd+zDY4+ohsR2Jo05lSGc3WsstYPIzcTpeosN7LoCkLReUUITvaIvw==,
+ }
peerDependencies:
react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
math-intrinsics@1.1.0:
- resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==,
+ }
+ engines: { node: ">= 0.4" }
memory-pager@1.5.0:
- resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==}
+ resolution:
+ {
+ integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==,
+ }
merge2@1.4.1:
- resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
- engines: {node: '>= 8'}
+ resolution:
+ {
+ integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==,
+ }
+ engines: { node: ">= 8" }
micromatch@4.0.8:
- resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
- engines: {node: '>=8.6'}
+ resolution:
+ {
+ integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==,
+ }
+ engines: { node: ">=8.6" }
minimatch@10.1.1:
- resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==}
- engines: {node: 20 || >=22}
+ resolution:
+ {
+ integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==,
+ }
+ engines: { node: 20 || >=22 }
minimatch@3.1.2:
- resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+ resolution:
+ {
+ integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==,
+ }
minimatch@9.0.3:
- resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
- engines: {node: '>=16 || 14 >=14.17'}
+ resolution:
+ {
+ integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==,
+ }
+ engines: { node: ">=16 || 14 >=14.17" }
minimatch@9.0.5:
- resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
- engines: {node: '>=16 || 14 >=14.17'}
+ resolution:
+ {
+ integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==,
+ }
+ engines: { node: ">=16 || 14 >=14.17" }
minimist@1.2.8:
- resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+ resolution:
+ {
+ integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==,
+ }
minipass@7.1.2:
- resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
- engines: {node: '>=16 || 14 >=14.17'}
+ resolution:
+ {
+ integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==,
+ }
+ engines: { node: ">=16 || 14 >=14.17" }
mongodb-connection-string-url@3.0.2:
- resolution: {integrity: sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==}
+ resolution:
+ {
+ integrity: sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==,
+ }
mongodb@6.20.0:
- resolution: {integrity: sha512-Tl6MEIU3K4Rq3TSHd+sZQqRBoGlFsOgNrH5ltAcFBV62Re3Fd+FcaVf8uSEQFOJ51SDowDVttBTONMfoYWrWlQ==}
- engines: {node: '>=16.20.1'}
+ resolution:
+ {
+ integrity: sha512-Tl6MEIU3K4Rq3TSHd+sZQqRBoGlFsOgNrH5ltAcFBV62Re3Fd+FcaVf8uSEQFOJ51SDowDVttBTONMfoYWrWlQ==,
+ }
+ engines: { node: ">=16.20.1" }
peerDependencies:
- '@aws-sdk/credential-providers': ^3.188.0
- '@mongodb-js/zstd': ^1.1.0 || ^2.0.0
+ "@aws-sdk/credential-providers": ^3.188.0
+ "@mongodb-js/zstd": ^1.1.0 || ^2.0.0
gcp-metadata: ^5.2.0
kerberos: ^2.0.1
- mongodb-client-encryption: '>=6.0.0 <7'
+ mongodb-client-encryption: ">=6.0.0 <7"
snappy: ^7.3.2
socks: ^2.7.1
peerDependenciesMeta:
- '@aws-sdk/credential-providers':
+ "@aws-sdk/credential-providers":
optional: true
- '@mongodb-js/zstd':
+ "@mongodb-js/zstd":
optional: true
gcp-metadata:
optional: true
@@ -2316,71 +3663,104 @@ packages:
optional: true
motion-dom@12.23.23:
- resolution: {integrity: sha512-n5yolOs0TQQBRUFImrRfs/+6X4p3Q4n1dUEqt/H58Vx7OW6RF+foWEgmTVDhIWJIMXOuNNL0apKH2S16en9eiA==}
+ resolution:
+ {
+ integrity: sha512-n5yolOs0TQQBRUFImrRfs/+6X4p3Q4n1dUEqt/H58Vx7OW6RF+foWEgmTVDhIWJIMXOuNNL0apKH2S16en9eiA==,
+ }
motion-utils@12.23.6:
- resolution: {integrity: sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==}
+ resolution:
+ {
+ integrity: sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==,
+ }
ms@2.1.3:
- resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+ resolution:
+ {
+ integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==,
+ }
mz@2.7.0:
- resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
+ resolution:
+ {
+ integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==,
+ }
nanoid@3.3.11:
- resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ resolution:
+ {
+ integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==,
+ }
+ engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 }
hasBin: true
napi-postinstall@0.3.4:
- resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==}
- engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
+ resolution:
+ {
+ integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==,
+ }
+ engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 }
hasBin: true
natural-compare-lite@1.4.0:
- resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
+ resolution:
+ {
+ integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==,
+ }
natural-compare@1.4.0:
- resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+ resolution:
+ {
+ integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==,
+ }
next-auth@5.0.0-beta.30:
- resolution: {integrity: sha512-+c51gquM3F6nMVmoAusRJ7RIoY0K4Ts9HCCwyy/BRoe4mp3msZpOzYMyb5LAYc1wSo74PMQkGDcaghIO7W6Xjg==}
+ resolution:
+ {
+ integrity: sha512-+c51gquM3F6nMVmoAusRJ7RIoY0K4Ts9HCCwyy/BRoe4mp3msZpOzYMyb5LAYc1wSo74PMQkGDcaghIO7W6Xjg==,
+ }
peerDependencies:
- '@simplewebauthn/browser': ^9.0.1
- '@simplewebauthn/server': ^9.0.2
+ "@simplewebauthn/browser": ^9.0.1
+ "@simplewebauthn/server": ^9.0.2
next: ^14.0.0-0 || ^15.0.0 || ^16.0.0
nodemailer: ^7.0.7
react: ^18.2.0 || ^19.0.0
peerDependenciesMeta:
- '@simplewebauthn/browser':
+ "@simplewebauthn/browser":
optional: true
- '@simplewebauthn/server':
+ "@simplewebauthn/server":
optional: true
nodemailer:
optional: true
next-themes@0.2.1:
- resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==}
+ resolution:
+ {
+ integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==,
+ }
peerDependencies:
- next: '*'
- react: '*'
- react-dom: '*'
+ next: "*"
+ react: "*"
+ react-dom: "*"
next@15.5.7:
- resolution: {integrity: sha512-+t2/0jIJ48kUpGKkdlhgkv+zPTEOoXyr60qXe68eB/pl3CMJaLeIGjzp5D6Oqt25hCBiBTt8wEeeAzfJvUKnPQ==}
- engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
+ resolution:
+ {
+ integrity: sha512-+t2/0jIJ48kUpGKkdlhgkv+zPTEOoXyr60qXe68eB/pl3CMJaLeIGjzp5D6Oqt25hCBiBTt8wEeeAzfJvUKnPQ==,
+ }
+ engines: { node: ^18.18.0 || ^19.8.0 || >= 20.0.0 }
hasBin: true
peerDependencies:
- '@opentelemetry/api': ^1.1.0
- '@playwright/test': ^1.51.1
- babel-plugin-react-compiler: '*'
+ "@opentelemetry/api": ^1.1.0
+ "@playwright/test": ^1.51.1
+ babel-plugin-react-compiler: "*"
react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
sass: ^1.3.0
peerDependenciesMeta:
- '@opentelemetry/api':
+ "@opentelemetry/api":
optional: true
- '@playwright/test':
+ "@playwright/test":
optional: true
babel-plugin-react-compiler:
optional: true
@@ -2388,180 +3768,315 @@ packages:
optional: true
node-fetch-native@1.6.7:
- resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==}
+ resolution:
+ {
+ integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==,
+ }
node-releases@2.0.23:
- resolution: {integrity: sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==}
+ resolution:
+ {
+ integrity: sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==,
+ }
normalize-path@3.0.0:
- resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
- engines: {node: '>=0.10.0'}
+ resolution:
+ {
+ integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==,
+ }
+ engines: { node: ">=0.10.0" }
normalize-range@0.1.2:
- resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
- engines: {node: '>=0.10.0'}
+ resolution:
+ {
+ integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==,
+ }
+ engines: { node: ">=0.10.0" }
nypm@0.6.2:
- resolution: {integrity: sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==}
- engines: {node: ^14.16.0 || >=16.10.0}
+ resolution:
+ {
+ integrity: sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==,
+ }
+ engines: { node: ^14.16.0 || >=16.10.0 }
hasBin: true
oauth4webapi@3.8.2:
- resolution: {integrity: sha512-FzZZ+bht5X0FKe7Mwz3DAVAmlH1BV5blSak/lHMBKz0/EBMhX6B10GlQYI51+oRp8ObJaX0g6pXrAxZh5s8rjw==}
+ resolution:
+ {
+ integrity: sha512-FzZZ+bht5X0FKe7Mwz3DAVAmlH1BV5blSak/lHMBKz0/EBMhX6B10GlQYI51+oRp8ObJaX0g6pXrAxZh5s8rjw==,
+ }
object-assign@4.1.1:
- resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
- engines: {node: '>=0.10.0'}
+ resolution:
+ {
+ integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==,
+ }
+ engines: { node: ">=0.10.0" }
object-hash@3.0.0:
- resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
- engines: {node: '>= 6'}
+ resolution:
+ {
+ integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==,
+ }
+ engines: { node: ">= 6" }
object-inspect@1.13.4:
- resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==,
+ }
+ engines: { node: ">= 0.4" }
object-keys@1.1.1:
- resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==,
+ }
+ engines: { node: ">= 0.4" }
object.assign@4.1.7:
- resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==,
+ }
+ engines: { node: ">= 0.4" }
object.entries@1.1.9:
- resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==,
+ }
+ engines: { node: ">= 0.4" }
object.fromentries@2.0.8:
- resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==,
+ }
+ engines: { node: ">= 0.4" }
object.groupby@1.0.3:
- resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==,
+ }
+ engines: { node: ">= 0.4" }
object.values@1.2.1:
- resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==,
+ }
+ engines: { node: ">= 0.4" }
ohash@2.0.11:
- resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==}
+ resolution:
+ {
+ integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==,
+ }
on-exit-leak-free@2.1.2:
- resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==}
- engines: {node: '>=14.0.0'}
+ resolution:
+ {
+ integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==,
+ }
+ engines: { node: ">=14.0.0" }
once@1.4.0:
- resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+ resolution:
+ {
+ integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==,
+ }
optionator@0.9.4:
- resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
- engines: {node: '>= 0.8.0'}
+ resolution:
+ {
+ integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==,
+ }
+ engines: { node: ">= 0.8.0" }
own-keys@1.0.1:
- resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==,
+ }
+ engines: { node: ">= 0.4" }
p-limit@3.1.0:
- resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==,
+ }
+ engines: { node: ">=10" }
p-locate@5.0.0:
- resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==,
+ }
+ engines: { node: ">=10" }
parent-module@1.0.1:
- resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
- engines: {node: '>=6'}
+ resolution:
+ {
+ integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==,
+ }
+ engines: { node: ">=6" }
path-exists@4.0.0:
- resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==,
+ }
+ engines: { node: ">=8" }
path-key@3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==,
+ }
+ engines: { node: ">=8" }
path-parse@1.0.7:
- resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+ resolution:
+ {
+ integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==,
+ }
path-scurry@2.0.1:
- resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==}
- engines: {node: 20 || >=22}
+ resolution:
+ {
+ integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==,
+ }
+ engines: { node: 20 || >=22 }
path-type@4.0.0:
- resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==,
+ }
+ engines: { node: ">=8" }
pathe@2.0.3:
- resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
+ resolution:
+ {
+ integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==,
+ }
perfect-debounce@1.0.0:
- resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
+ resolution:
+ {
+ integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==,
+ }
photoswipe@5.4.4:
- resolution: {integrity: sha512-WNFHoKrkZNnvFFhbHL93WDkW3ifwVOXSW3w1UuZZelSmgXpIGiZSNlZJq37rR8YejqME2rHs9EhH9ZvlvFH2NA==}
- engines: {node: '>= 0.12.0'}
+ resolution:
+ {
+ integrity: sha512-WNFHoKrkZNnvFFhbHL93WDkW3ifwVOXSW3w1UuZZelSmgXpIGiZSNlZJq37rR8YejqME2rHs9EhH9ZvlvFH2NA==,
+ }
+ engines: { node: ">= 0.12.0" }
picocolors@1.1.1:
- resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+ resolution:
+ {
+ integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==,
+ }
picomatch@2.3.1:
- resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
- engines: {node: '>=8.6'}
+ resolution:
+ {
+ integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==,
+ }
+ engines: { node: ">=8.6" }
picomatch@4.0.3:
- resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==,
+ }
+ engines: { node: ">=12" }
pify@2.3.0:
- resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
- engines: {node: '>=0.10.0'}
+ resolution:
+ {
+ integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==,
+ }
+ engines: { node: ">=0.10.0" }
pino-abstract-transport@2.0.0:
- resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==}
+ resolution:
+ {
+ integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==,
+ }
pino-pretty@13.1.2:
- resolution: {integrity: sha512-3cN0tCakkT4f3zo9RXDIhy6GTvtYD6bK4CRBLN9j3E/ePqN1tugAXD5rGVfoChW6s0hiek+eyYlLNqc/BG7vBQ==}
+ resolution:
+ {
+ integrity: sha512-3cN0tCakkT4f3zo9RXDIhy6GTvtYD6bK4CRBLN9j3E/ePqN1tugAXD5rGVfoChW6s0hiek+eyYlLNqc/BG7vBQ==,
+ }
hasBin: true
pino-std-serializers@7.0.0:
- resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==}
+ resolution:
+ {
+ integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==,
+ }
pino@10.1.0:
- resolution: {integrity: sha512-0zZC2ygfdqvqK8zJIr1e+wT1T/L+LF6qvqvbzEQ6tiMAoTqEVK9a1K3YRu8HEUvGEvNqZyPJTtb2sNIoTkB83w==}
+ resolution:
+ {
+ integrity: sha512-0zZC2ygfdqvqK8zJIr1e+wT1T/L+LF6qvqvbzEQ6tiMAoTqEVK9a1K3YRu8HEUvGEvNqZyPJTtb2sNIoTkB83w==,
+ }
hasBin: true
pirates@4.0.7:
- resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==}
- engines: {node: '>= 6'}
+ resolution:
+ {
+ integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==,
+ }
+ engines: { node: ">= 6" }
pkg-types@2.3.0:
- resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==}
+ resolution:
+ {
+ integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==,
+ }
possible-typed-array-names@1.1.0:
- resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==,
+ }
+ engines: { node: ">= 0.4" }
postcss-import@15.1.0:
- resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
- engines: {node: '>=14.0.0'}
+ resolution:
+ {
+ integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==,
+ }
+ engines: { node: ">=14.0.0" }
peerDependencies:
postcss: ^8.0.0
postcss-js@4.1.0:
- resolution: {integrity: sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==}
- engines: {node: ^12 || ^14 || >= 16}
+ resolution:
+ {
+ integrity: sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==,
+ }
+ engines: { node: ^12 || ^14 || >= 16 }
peerDependencies:
postcss: ^8.4.21
postcss-load-config@4.0.2:
- resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
- engines: {node: '>= 14'}
+ resolution:
+ {
+ integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==,
+ }
+ engines: { node: ">= 14" }
peerDependencies:
- postcss: '>=8.0.9'
- ts-node: '>=9.0.0'
+ postcss: ">=8.0.9"
+ ts-node: ">=9.0.0"
peerDependenciesMeta:
postcss:
optional: true
@@ -2569,85 +4084,142 @@ packages:
optional: true
postcss-nested@6.2.0:
- resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==}
- engines: {node: '>=12.0'}
+ resolution:
+ {
+ integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==,
+ }
+ engines: { node: ">=12.0" }
peerDependencies:
postcss: ^8.2.14
postcss-selector-parser@6.1.2:
- resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
- engines: {node: '>=4'}
+ resolution:
+ {
+ integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==,
+ }
+ engines: { node: ">=4" }
postcss-value-parser@4.2.0:
- resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
+ resolution:
+ {
+ integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==,
+ }
postcss@8.4.31:
- resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
- engines: {node: ^10 || ^12 || >=14}
+ resolution:
+ {
+ integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==,
+ }
+ engines: { node: ^10 || ^12 || >=14 }
postcss@8.4.33:
- resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==}
- engines: {node: ^10 || ^12 || >=14}
+ resolution:
+ {
+ integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==,
+ }
+ engines: { node: ^10 || ^12 || >=14 }
preact-render-to-string@6.5.11:
- resolution: {integrity: sha512-ubnauqoGczeGISiOh6RjX0/cdaF8v/oDXIjO85XALCQjwQP+SB4RDXXtvZ6yTYSjG+PC1QRP2AhPgCEsM2EvUw==}
+ resolution:
+ {
+ integrity: sha512-ubnauqoGczeGISiOh6RjX0/cdaF8v/oDXIjO85XALCQjwQP+SB4RDXXtvZ6yTYSjG+PC1QRP2AhPgCEsM2EvUw==,
+ }
peerDependencies:
- preact: '>=10'
+ preact: ">=10"
preact@10.24.3:
- resolution: {integrity: sha512-Z2dPnBnMUfyQfSQ+GBdsGa16hz35YmLmtTLhM169uW944hYL6xzTYkJjC07j+Wosz733pMWx0fgON3JNw1jJQA==}
+ resolution:
+ {
+ integrity: sha512-Z2dPnBnMUfyQfSQ+GBdsGa16hz35YmLmtTLhM169uW944hYL6xzTYkJjC07j+Wosz733pMWx0fgON3JNw1jJQA==,
+ }
prelude-ls@1.2.1:
- resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
- engines: {node: '>= 0.8.0'}
+ resolution:
+ {
+ integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==,
+ }
+ engines: { node: ">= 0.8.0" }
prisma@6.17.1:
- resolution: {integrity: sha512-ac6h0sM1Tg3zu8NInY+qhP/S9KhENVaw9n1BrGKQVFu05JT5yT5Qqqmb8tMRIE3ZXvVj4xcRA5yfrsy4X7Yy5g==}
- engines: {node: '>=18.18'}
+ resolution:
+ {
+ integrity: sha512-ac6h0sM1Tg3zu8NInY+qhP/S9KhENVaw9n1BrGKQVFu05JT5yT5Qqqmb8tMRIE3ZXvVj4xcRA5yfrsy4X7Yy5g==,
+ }
+ engines: { node: ">=18.18" }
hasBin: true
peerDependencies:
- typescript: '>=5.1.0'
+ typescript: ">=5.1.0"
peerDependenciesMeta:
typescript:
optional: true
process-warning@5.0.0:
- resolution: {integrity: sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==}
+ resolution:
+ {
+ integrity: sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==,
+ }
prop-types@15.8.1:
- resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
+ resolution:
+ {
+ integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==,
+ }
pump@3.0.3:
- resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==}
+ resolution:
+ {
+ integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==,
+ }
punycode@2.3.1:
- resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
- engines: {node: '>=6'}
+ resolution:
+ {
+ integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==,
+ }
+ engines: { node: ">=6" }
pure-rand@6.1.0:
- resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==}
+ resolution:
+ {
+ integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==,
+ }
queue-microtask@1.2.3:
- resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+ resolution:
+ {
+ integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==,
+ }
quick-format-unescaped@4.0.4:
- resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==}
+ resolution:
+ {
+ integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==,
+ }
rc9@2.1.2:
- resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==}
+ resolution:
+ {
+ integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==,
+ }
react-dom@19.2.0:
- resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==}
+ resolution:
+ {
+ integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==,
+ }
peerDependencies:
react: ^19.2.0
react-i18next@15.7.4:
- resolution: {integrity: sha512-nyU8iKNrI5uDJch0z9+Y5XEr34b0wkyYj3Rp+tfbahxtlswxSCjcUL9H0nqXo9IR3/t5Y5PKIA3fx3MfUyR9Xw==}
+ resolution:
+ {
+ integrity: sha512-nyU8iKNrI5uDJch0z9+Y5XEr34b0wkyYj3Rp+tfbahxtlswxSCjcUL9H0nqXo9IR3/t5Y5PKIA3fx3MfUyR9Xw==,
+ }
peerDependencies:
- i18next: '>= 23.4.0'
- react: '>= 16.8.0'
- react-dom: '*'
- react-native: '*'
+ i18next: ">= 23.4.0"
+ react: ">= 16.8.0"
+ react-dom: "*"
+ react-native: "*"
typescript: ^5
peerDependenciesMeta:
react-dom:
@@ -2658,515 +4230,832 @@ packages:
optional: true
react-is@16.13.1:
- resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
+ resolution:
+ {
+ integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==,
+ }
react-remove-scroll-bar@2.3.8:
- resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==,
+ }
+ engines: { node: ">=10" }
peerDependencies:
- '@types/react': '*'
+ "@types/react": "*"
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
react-remove-scroll@2.7.1:
- resolution: {integrity: sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==,
+ }
+ engines: { node: ">=10" }
peerDependencies:
- '@types/react': '*'
+ "@types/react": "*"
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
react-style-singleton@2.2.3:
- resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==,
+ }
+ engines: { node: ">=10" }
peerDependencies:
- '@types/react': '*'
+ "@types/react": "*"
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
react@19.2.0:
- resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==}
- engines: {node: '>=0.10.0'}
+ resolution:
+ {
+ integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==,
+ }
+ engines: { node: ">=0.10.0" }
read-cache@1.0.0:
- resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
+ resolution:
+ {
+ integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==,
+ }
readdirp@3.6.0:
- resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
- engines: {node: '>=8.10.0'}
+ resolution:
+ {
+ integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==,
+ }
+ engines: { node: ">=8.10.0" }
readdirp@4.1.2:
- resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
- engines: {node: '>= 14.18.0'}
+ resolution:
+ {
+ integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==,
+ }
+ engines: { node: ">= 14.18.0" }
real-require@0.2.0:
- resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==}
- engines: {node: '>= 12.13.0'}
+ resolution:
+ {
+ integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==,
+ }
+ engines: { node: ">= 12.13.0" }
reflect.getprototypeof@1.0.10:
- resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==,
+ }
+ engines: { node: ">= 0.4" }
regexp.prototype.flags@1.5.4:
- resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==,
+ }
+ engines: { node: ">= 0.4" }
resolve-from@4.0.0:
- resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
- engines: {node: '>=4'}
+ resolution:
+ {
+ integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==,
+ }
+ engines: { node: ">=4" }
resolve-pkg-maps@1.0.0:
- resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
+ resolution:
+ {
+ integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==,
+ }
resolve@1.22.10:
- resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==,
+ }
+ engines: { node: ">= 0.4" }
hasBin: true
resolve@2.0.0-next.5:
- resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==}
+ resolution:
+ {
+ integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==,
+ }
hasBin: true
reusify@1.1.0:
- resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
- engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+ resolution:
+ {
+ integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==,
+ }
+ engines: { iojs: ">=1.0.0", node: ">=0.10.0" }
rimraf@3.0.2:
- resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
+ resolution:
+ {
+ integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==,
+ }
deprecated: Rimraf versions prior to v4 are no longer supported
hasBin: true
run-parallel@1.2.0:
- resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+ resolution:
+ {
+ integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==,
+ }
safe-array-concat@1.1.3:
- resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
- engines: {node: '>=0.4'}
+ resolution:
+ {
+ integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==,
+ }
+ engines: { node: ">=0.4" }
safe-push-apply@1.0.0:
- resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==,
+ }
+ engines: { node: ">= 0.4" }
safe-regex-test@1.1.0:
- resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==,
+ }
+ engines: { node: ">= 0.4" }
safe-stable-stringify@2.5.0:
- resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==,
+ }
+ engines: { node: ">=10" }
scheduler@0.27.0:
- resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==}
+ resolution:
+ {
+ integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==,
+ }
secure-json-parse@4.1.0:
- resolution: {integrity: sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==}
+ resolution:
+ {
+ integrity: sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==,
+ }
semver@6.3.1:
- resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
+ resolution:
+ {
+ integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==,
+ }
hasBin: true
semver@7.7.3:
- resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==,
+ }
+ engines: { node: ">=10" }
hasBin: true
set-function-length@1.2.2:
- resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==,
+ }
+ engines: { node: ">= 0.4" }
set-function-name@2.0.2:
- resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==,
+ }
+ engines: { node: ">= 0.4" }
set-proto@1.0.0:
- resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==,
+ }
+ engines: { node: ">= 0.4" }
sharp@0.33.2:
- resolution: {integrity: sha512-WlYOPyyPDiiM07j/UO+E720ju6gtNtHjEGg5vovUk1Lgxyjm2LFO+37Nt/UI3MMh2l6hxTWQWi7qk3cXJTutcQ==}
- engines: {libvips: '>=8.15.1', node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ resolution:
+ {
+ integrity: sha512-WlYOPyyPDiiM07j/UO+E720ju6gtNtHjEGg5vovUk1Lgxyjm2LFO+37Nt/UI3MMh2l6hxTWQWi7qk3cXJTutcQ==,
+ }
+ engines: { libvips: ">=8.15.1", node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
sharp@0.34.5:
- resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ resolution:
+ {
+ integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
shebang-command@2.0.0:
- resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==,
+ }
+ engines: { node: ">=8" }
shebang-regex@3.0.0:
- resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==,
+ }
+ engines: { node: ">=8" }
side-channel-list@1.0.0:
- resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==,
+ }
+ engines: { node: ">= 0.4" }
side-channel-map@1.0.1:
- resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==,
+ }
+ engines: { node: ">= 0.4" }
side-channel-weakmap@1.0.2:
- resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==,
+ }
+ engines: { node: ">= 0.4" }
side-channel@1.1.0:
- resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==,
+ }
+ engines: { node: ">= 0.4" }
simple-swizzle@0.2.4:
- resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==}
+ resolution:
+ {
+ integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==,
+ }
slash@3.0.0:
- resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==,
+ }
+ engines: { node: ">=8" }
sonic-boom@4.2.0:
- resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==}
+ resolution:
+ {
+ integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==,
+ }
source-map-js@1.2.1:
- resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
- engines: {node: '>=0.10.0'}
+ resolution:
+ {
+ integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==,
+ }
+ engines: { node: ">=0.10.0" }
sparse-bitfield@3.0.3:
- resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==}
+ resolution:
+ {
+ integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==,
+ }
split2@4.2.0:
- resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
- engines: {node: '>= 10.x'}
+ resolution:
+ {
+ integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==,
+ }
+ engines: { node: ">= 10.x" }
stable-hash@0.0.5:
- resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==}
+ resolution:
+ {
+ integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==,
+ }
stop-iteration-iterator@1.1.0:
- resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==,
+ }
+ engines: { node: ">= 0.4" }
string.prototype.includes@2.0.1:
- resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==,
+ }
+ engines: { node: ">= 0.4" }
string.prototype.matchall@4.0.12:
- resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==,
+ }
+ engines: { node: ">= 0.4" }
string.prototype.repeat@1.0.0:
- resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==}
+ resolution:
+ {
+ integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==,
+ }
string.prototype.trim@1.2.10:
- resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==,
+ }
+ engines: { node: ">= 0.4" }
string.prototype.trimend@1.0.9:
- resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==,
+ }
+ engines: { node: ">= 0.4" }
string.prototype.trimstart@1.0.8:
- resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==,
+ }
+ engines: { node: ">= 0.4" }
strip-ansi@6.0.1:
- resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==,
+ }
+ engines: { node: ">=8" }
strip-bom@3.0.0:
- resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
- engines: {node: '>=4'}
+ resolution:
+ {
+ integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==,
+ }
+ engines: { node: ">=4" }
strip-json-comments@3.1.1:
- resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==,
+ }
+ engines: { node: ">=8" }
strip-json-comments@5.0.3:
- resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==}
- engines: {node: '>=14.16'}
+ resolution:
+ {
+ integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==,
+ }
+ engines: { node: ">=14.16" }
styled-jsx@5.1.6:
- resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==}
- engines: {node: '>= 12.0.0'}
+ resolution:
+ {
+ integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==,
+ }
+ engines: { node: ">= 12.0.0" }
peerDependencies:
- '@babel/core': '*'
- babel-plugin-macros: '*'
- react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0'
+ "@babel/core": "*"
+ babel-plugin-macros: "*"
+ react: ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0"
peerDependenciesMeta:
- '@babel/core':
+ "@babel/core":
optional: true
babel-plugin-macros:
optional: true
sucrase@3.35.0:
- resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
- engines: {node: '>=16 || 14 >=14.17'}
+ resolution:
+ {
+ integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==,
+ }
+ engines: { node: ">=16 || 14 >=14.17" }
hasBin: true
supports-color@7.2.0:
- resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
- engines: {node: '>=8'}
+ resolution:
+ {
+ integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==,
+ }
+ engines: { node: ">=8" }
supports-preserve-symlinks-flag@1.0.0:
- resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==,
+ }
+ engines: { node: ">= 0.4" }
tailwind-merge@3.3.1:
- resolution: {integrity: sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==}
+ resolution:
+ {
+ integrity: sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==,
+ }
tailwindcss-animate@1.0.7:
- resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==}
+ resolution:
+ {
+ integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==,
+ }
peerDependencies:
- tailwindcss: '>=3.0.0 || insiders'
+ tailwindcss: ">=3.0.0 || insiders"
tailwindcss@3.4.1:
- resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==}
- engines: {node: '>=14.0.0'}
+ resolution:
+ {
+ integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==,
+ }
+ engines: { node: ">=14.0.0" }
hasBin: true
text-table@0.2.0:
- resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
+ resolution:
+ {
+ integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==,
+ }
thenify-all@1.6.0:
- resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
- engines: {node: '>=0.8'}
+ resolution:
+ {
+ integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==,
+ }
+ engines: { node: ">=0.8" }
thenify@3.3.1:
- resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
+ resolution:
+ {
+ integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==,
+ }
thread-stream@3.1.0:
- resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==}
+ resolution:
+ {
+ integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==,
+ }
tinyexec@1.0.1:
- resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==}
+ resolution:
+ {
+ integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==,
+ }
tinyglobby@0.2.15:
- resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
- engines: {node: '>=12.0.0'}
+ resolution:
+ {
+ integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==,
+ }
+ engines: { node: ">=12.0.0" }
to-regex-range@5.0.1:
- resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
- engines: {node: '>=8.0'}
+ resolution:
+ {
+ integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==,
+ }
+ engines: { node: ">=8.0" }
tr46@5.1.1:
- resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==,
+ }
+ engines: { node: ">=18" }
ts-api-utils@1.4.3:
- resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==}
- engines: {node: '>=16'}
+ resolution:
+ {
+ integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==,
+ }
+ engines: { node: ">=16" }
peerDependencies:
- typescript: '>=4.2.0'
+ typescript: ">=4.2.0"
ts-api-utils@2.1.0:
- resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==}
- engines: {node: '>=18.12'}
+ resolution:
+ {
+ integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==,
+ }
+ engines: { node: ">=18.12" }
peerDependencies:
- typescript: '>=4.8.4'
+ typescript: ">=4.8.4"
ts-interface-checker@0.1.13:
- resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
+ resolution:
+ {
+ integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==,
+ }
tsconfig-paths@3.15.0:
- resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
+ resolution:
+ {
+ integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==,
+ }
tslib@1.14.1:
- resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
+ resolution:
+ {
+ integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==,
+ }
tslib@2.8.1:
- resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
+ resolution:
+ {
+ integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==,
+ }
tsutils@3.21.0:
- resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
- engines: {node: '>= 6'}
+ resolution:
+ {
+ integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==,
+ }
+ engines: { node: ">= 6" }
peerDependencies:
- typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
+ typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
type-check@0.4.0:
- resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
- engines: {node: '>= 0.8.0'}
+ resolution:
+ {
+ integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==,
+ }
+ engines: { node: ">= 0.8.0" }
type-fest@0.20.2:
- resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==,
+ }
+ engines: { node: ">=10" }
typed-array-buffer@1.0.3:
- resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==,
+ }
+ engines: { node: ">= 0.4" }
typed-array-byte-length@1.0.3:
- resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==,
+ }
+ engines: { node: ">= 0.4" }
typed-array-byte-offset@1.0.4:
- resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==,
+ }
+ engines: { node: ">= 0.4" }
typed-array-length@1.0.7:
- resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==,
+ }
+ engines: { node: ">= 0.4" }
typescript@5.3.3:
- resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==}
- engines: {node: '>=14.17'}
+ resolution:
+ {
+ integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==,
+ }
+ engines: { node: ">=14.17" }
hasBin: true
unbox-primitive@1.1.0:
- resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==,
+ }
+ engines: { node: ">= 0.4" }
undici-types@7.14.0:
- resolution: {integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==}
+ resolution:
+ {
+ integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==,
+ }
undici@7.16.0:
- resolution: {integrity: sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==}
- engines: {node: '>=20.18.1'}
+ resolution:
+ {
+ integrity: sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==,
+ }
+ engines: { node: ">=20.18.1" }
unrs-resolver@1.11.1:
- resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==}
+ resolution:
+ {
+ integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==,
+ }
update-browserslist-db@1.1.3:
- resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==}
+ resolution:
+ {
+ integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==,
+ }
hasBin: true
peerDependencies:
- browserslist: '>= 4.21.0'
+ browserslist: ">= 4.21.0"
uri-js@4.4.1:
- resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+ resolution:
+ {
+ integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==,
+ }
use-callback-ref@1.3.3:
- resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==,
+ }
+ engines: { node: ">=10" }
peerDependencies:
- '@types/react': '*'
+ "@types/react": "*"
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
use-sidecar@1.1.3:
- resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==,
+ }
+ engines: { node: ">=10" }
peerDependencies:
- '@types/react': '*'
+ "@types/react": "*"
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
peerDependenciesMeta:
- '@types/react':
+ "@types/react":
optional: true
util-deprecate@1.0.2:
- resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+ resolution:
+ {
+ integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==,
+ }
void-elements@3.1.0:
- resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==}
- engines: {node: '>=0.10.0'}
+ resolution:
+ {
+ integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==,
+ }
+ engines: { node: ">=0.10.0" }
webidl-conversions@7.0.0:
- resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==}
- engines: {node: '>=12'}
+ resolution:
+ {
+ integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==,
+ }
+ engines: { node: ">=12" }
whatwg-url@14.2.0:
- resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==}
- engines: {node: '>=18'}
+ resolution:
+ {
+ integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==,
+ }
+ engines: { node: ">=18" }
which-boxed-primitive@1.1.1:
- resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==,
+ }
+ engines: { node: ">= 0.4" }
which-builtin-type@1.2.1:
- resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==,
+ }
+ engines: { node: ">= 0.4" }
which-collection@1.0.2:
- resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==,
+ }
+ engines: { node: ">= 0.4" }
which-typed-array@1.1.19:
- resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==}
- engines: {node: '>= 0.4'}
+ resolution:
+ {
+ integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==,
+ }
+ engines: { node: ">= 0.4" }
which@2.0.2:
- resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
- engines: {node: '>= 8'}
+ resolution:
+ {
+ integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==,
+ }
+ engines: { node: ">= 8" }
hasBin: true
word-wrap@1.2.5:
- resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
- engines: {node: '>=0.10.0'}
+ resolution:
+ {
+ integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==,
+ }
+ engines: { node: ">=0.10.0" }
wrappy@1.0.2:
- resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+ resolution:
+ {
+ integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==,
+ }
yaml@2.8.1:
- resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==}
- engines: {node: '>= 14.6'}
+ resolution:
+ {
+ integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==,
+ }
+ engines: { node: ">= 14.6" }
hasBin: true
yocto-queue@0.1.0:
- resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
- engines: {node: '>=10'}
+ resolution:
+ {
+ integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==,
+ }
+ engines: { node: ">=10" }
zod@3.22.4:
- resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==}
+ resolution:
+ {
+ integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==,
+ }
snapshots:
+ "@alloc/quick-lru@5.2.0": {}
- '@alloc/quick-lru@5.2.0': {}
-
- '@auth/core@0.41.0':
+ "@auth/core@0.41.0":
dependencies:
- '@panva/hkdf': 1.2.1
+ "@panva/hkdf": 1.2.1
jose: 6.1.0
oauth4webapi: 3.8.2
preact: 10.24.3
preact-render-to-string: 6.5.11(preact@10.24.3)
- '@babel/runtime@7.28.4': {}
+ "@babel/runtime@7.28.4": {}
- '@emnapi/core@1.5.0':
+ "@emnapi/core@1.5.0":
dependencies:
- '@emnapi/wasi-threads': 1.1.0
+ "@emnapi/wasi-threads": 1.1.0
tslib: 2.8.1
optional: true
- '@emnapi/runtime@0.45.0':
+ "@emnapi/runtime@0.45.0":
dependencies:
tslib: 2.8.1
optional: true
- '@emnapi/runtime@1.5.0':
+ "@emnapi/runtime@1.5.0":
dependencies:
tslib: 2.8.1
optional: true
- '@emnapi/runtime@1.7.1':
+ "@emnapi/runtime@1.7.1":
dependencies:
tslib: 2.8.1
optional: true
- '@emnapi/wasi-threads@1.1.0':
+ "@emnapi/wasi-threads@1.1.0":
dependencies:
tslib: 2.8.1
optional: true
- '@emotion/is-prop-valid@0.8.8':
+ "@emotion/is-prop-valid@0.8.8":
dependencies:
- '@emotion/memoize': 0.7.4
+ "@emotion/memoize": 0.7.4
optional: true
- '@emotion/memoize@0.7.4':
+ "@emotion/memoize@0.7.4":
optional: true
- '@eslint-community/eslint-utils@4.9.0(eslint@8.56.0)':
+ "@eslint-community/eslint-utils@4.9.0(eslint@8.56.0)":
dependencies:
eslint: 8.56.0
eslint-visitor-keys: 3.4.3
- '@eslint-community/regexpp@4.12.1': {}
+ "@eslint-community/regexpp@4.12.1": {}
- '@eslint/eslintrc@2.1.4':
+ "@eslint/eslintrc@2.1.4":
dependencies:
ajv: 6.12.6
debug: 4.4.3
@@ -3180,294 +5069,294 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@eslint/js@8.56.0': {}
+ "@eslint/js@8.56.0": {}
- '@floating-ui/core@1.7.3':
+ "@floating-ui/core@1.7.3":
dependencies:
- '@floating-ui/utils': 0.2.10
+ "@floating-ui/utils": 0.2.10
- '@floating-ui/dom@1.7.4':
+ "@floating-ui/dom@1.7.4":
dependencies:
- '@floating-ui/core': 1.7.3
- '@floating-ui/utils': 0.2.10
+ "@floating-ui/core": 1.7.3
+ "@floating-ui/utils": 0.2.10
- '@floating-ui/react-dom@2.1.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ "@floating-ui/react-dom@2.1.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
dependencies:
- '@floating-ui/dom': 1.7.4
+ "@floating-ui/dom": 1.7.4
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
- '@floating-ui/utils@0.2.10': {}
+ "@floating-ui/utils@0.2.10": {}
- '@humanwhocodes/config-array@0.11.14':
+ "@humanwhocodes/config-array@0.11.14":
dependencies:
- '@humanwhocodes/object-schema': 2.0.3
+ "@humanwhocodes/object-schema": 2.0.3
debug: 4.4.3
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
- '@humanwhocodes/module-importer@1.0.1': {}
+ "@humanwhocodes/module-importer@1.0.1": {}
- '@humanwhocodes/object-schema@2.0.3': {}
+ "@humanwhocodes/object-schema@2.0.3": {}
- '@img/colour@1.0.0':
+ "@img/colour@1.0.0":
optional: true
- '@img/sharp-darwin-arm64@0.33.2':
+ "@img/sharp-darwin-arm64@0.33.2":
optionalDependencies:
- '@img/sharp-libvips-darwin-arm64': 1.0.1
+ "@img/sharp-libvips-darwin-arm64": 1.0.1
optional: true
- '@img/sharp-darwin-arm64@0.34.5':
+ "@img/sharp-darwin-arm64@0.34.5":
optionalDependencies:
- '@img/sharp-libvips-darwin-arm64': 1.2.4
+ "@img/sharp-libvips-darwin-arm64": 1.2.4
optional: true
- '@img/sharp-darwin-x64@0.33.2':
+ "@img/sharp-darwin-x64@0.33.2":
optionalDependencies:
- '@img/sharp-libvips-darwin-x64': 1.0.1
+ "@img/sharp-libvips-darwin-x64": 1.0.1
optional: true
- '@img/sharp-darwin-x64@0.34.5':
+ "@img/sharp-darwin-x64@0.34.5":
optionalDependencies:
- '@img/sharp-libvips-darwin-x64': 1.2.4
+ "@img/sharp-libvips-darwin-x64": 1.2.4
optional: true
- '@img/sharp-libvips-darwin-arm64@1.0.1':
+ "@img/sharp-libvips-darwin-arm64@1.0.1":
optional: true
- '@img/sharp-libvips-darwin-arm64@1.2.4':
+ "@img/sharp-libvips-darwin-arm64@1.2.4":
optional: true
- '@img/sharp-libvips-darwin-x64@1.0.1':
+ "@img/sharp-libvips-darwin-x64@1.0.1":
optional: true
- '@img/sharp-libvips-darwin-x64@1.2.4':
+ "@img/sharp-libvips-darwin-x64@1.2.4":
optional: true
- '@img/sharp-libvips-linux-arm64@1.0.1':
+ "@img/sharp-libvips-linux-arm64@1.0.1":
optional: true
- '@img/sharp-libvips-linux-arm64@1.2.4':
+ "@img/sharp-libvips-linux-arm64@1.2.4":
optional: true
- '@img/sharp-libvips-linux-arm@1.0.1':
+ "@img/sharp-libvips-linux-arm@1.0.1":
optional: true
- '@img/sharp-libvips-linux-arm@1.2.4':
+ "@img/sharp-libvips-linux-arm@1.2.4":
optional: true
- '@img/sharp-libvips-linux-ppc64@1.2.4':
+ "@img/sharp-libvips-linux-ppc64@1.2.4":
optional: true
- '@img/sharp-libvips-linux-riscv64@1.2.4':
+ "@img/sharp-libvips-linux-riscv64@1.2.4":
optional: true
- '@img/sharp-libvips-linux-s390x@1.0.1':
+ "@img/sharp-libvips-linux-s390x@1.0.1":
optional: true
- '@img/sharp-libvips-linux-s390x@1.2.4':
+ "@img/sharp-libvips-linux-s390x@1.2.4":
optional: true
- '@img/sharp-libvips-linux-x64@1.0.1':
+ "@img/sharp-libvips-linux-x64@1.0.1":
optional: true
- '@img/sharp-libvips-linux-x64@1.2.4':
+ "@img/sharp-libvips-linux-x64@1.2.4":
optional: true
- '@img/sharp-libvips-linuxmusl-arm64@1.0.1':
+ "@img/sharp-libvips-linuxmusl-arm64@1.0.1":
optional: true
- '@img/sharp-libvips-linuxmusl-arm64@1.2.4':
+ "@img/sharp-libvips-linuxmusl-arm64@1.2.4":
optional: true
- '@img/sharp-libvips-linuxmusl-x64@1.0.1':
+ "@img/sharp-libvips-linuxmusl-x64@1.0.1":
optional: true
- '@img/sharp-libvips-linuxmusl-x64@1.2.4':
+ "@img/sharp-libvips-linuxmusl-x64@1.2.4":
optional: true
- '@img/sharp-linux-arm64@0.33.2':
+ "@img/sharp-linux-arm64@0.33.2":
optionalDependencies:
- '@img/sharp-libvips-linux-arm64': 1.0.1
+ "@img/sharp-libvips-linux-arm64": 1.0.1
optional: true
- '@img/sharp-linux-arm64@0.34.5':
+ "@img/sharp-linux-arm64@0.34.5":
optionalDependencies:
- '@img/sharp-libvips-linux-arm64': 1.2.4
+ "@img/sharp-libvips-linux-arm64": 1.2.4
optional: true
- '@img/sharp-linux-arm@0.33.2':
+ "@img/sharp-linux-arm@0.33.2":
optionalDependencies:
- '@img/sharp-libvips-linux-arm': 1.0.1
+ "@img/sharp-libvips-linux-arm": 1.0.1
optional: true
- '@img/sharp-linux-arm@0.34.5':
+ "@img/sharp-linux-arm@0.34.5":
optionalDependencies:
- '@img/sharp-libvips-linux-arm': 1.2.4
+ "@img/sharp-libvips-linux-arm": 1.2.4
optional: true
- '@img/sharp-linux-ppc64@0.34.5':
+ "@img/sharp-linux-ppc64@0.34.5":
optionalDependencies:
- '@img/sharp-libvips-linux-ppc64': 1.2.4
+ "@img/sharp-libvips-linux-ppc64": 1.2.4
optional: true
- '@img/sharp-linux-riscv64@0.34.5':
+ "@img/sharp-linux-riscv64@0.34.5":
optionalDependencies:
- '@img/sharp-libvips-linux-riscv64': 1.2.4
+ "@img/sharp-libvips-linux-riscv64": 1.2.4
optional: true
- '@img/sharp-linux-s390x@0.33.2':
+ "@img/sharp-linux-s390x@0.33.2":
optionalDependencies:
- '@img/sharp-libvips-linux-s390x': 1.0.1
+ "@img/sharp-libvips-linux-s390x": 1.0.1
optional: true
- '@img/sharp-linux-s390x@0.34.5':
+ "@img/sharp-linux-s390x@0.34.5":
optionalDependencies:
- '@img/sharp-libvips-linux-s390x': 1.2.4
+ "@img/sharp-libvips-linux-s390x": 1.2.4
optional: true
- '@img/sharp-linux-x64@0.33.2':
+ "@img/sharp-linux-x64@0.33.2":
optionalDependencies:
- '@img/sharp-libvips-linux-x64': 1.0.1
+ "@img/sharp-libvips-linux-x64": 1.0.1
optional: true
- '@img/sharp-linux-x64@0.34.5':
+ "@img/sharp-linux-x64@0.34.5":
optionalDependencies:
- '@img/sharp-libvips-linux-x64': 1.2.4
+ "@img/sharp-libvips-linux-x64": 1.2.4
optional: true
- '@img/sharp-linuxmusl-arm64@0.33.2':
+ "@img/sharp-linuxmusl-arm64@0.33.2":
optionalDependencies:
- '@img/sharp-libvips-linuxmusl-arm64': 1.0.1
+ "@img/sharp-libvips-linuxmusl-arm64": 1.0.1
optional: true
- '@img/sharp-linuxmusl-arm64@0.34.5':
+ "@img/sharp-linuxmusl-arm64@0.34.5":
optionalDependencies:
- '@img/sharp-libvips-linuxmusl-arm64': 1.2.4
+ "@img/sharp-libvips-linuxmusl-arm64": 1.2.4
optional: true
- '@img/sharp-linuxmusl-x64@0.33.2':
+ "@img/sharp-linuxmusl-x64@0.33.2":
optionalDependencies:
- '@img/sharp-libvips-linuxmusl-x64': 1.0.1
+ "@img/sharp-libvips-linuxmusl-x64": 1.0.1
optional: true
- '@img/sharp-linuxmusl-x64@0.34.5':
+ "@img/sharp-linuxmusl-x64@0.34.5":
optionalDependencies:
- '@img/sharp-libvips-linuxmusl-x64': 1.2.4
+ "@img/sharp-libvips-linuxmusl-x64": 1.2.4
optional: true
- '@img/sharp-wasm32@0.33.2':
+ "@img/sharp-wasm32@0.33.2":
dependencies:
- '@emnapi/runtime': 0.45.0
+ "@emnapi/runtime": 0.45.0
optional: true
- '@img/sharp-wasm32@0.34.5':
+ "@img/sharp-wasm32@0.34.5":
dependencies:
- '@emnapi/runtime': 1.7.1
+ "@emnapi/runtime": 1.7.1
optional: true
- '@img/sharp-win32-arm64@0.34.5':
+ "@img/sharp-win32-arm64@0.34.5":
optional: true
- '@img/sharp-win32-ia32@0.33.2':
+ "@img/sharp-win32-ia32@0.33.2":
optional: true
- '@img/sharp-win32-ia32@0.34.5':
+ "@img/sharp-win32-ia32@0.34.5":
optional: true
- '@img/sharp-win32-x64@0.33.2':
+ "@img/sharp-win32-x64@0.33.2":
optional: true
- '@img/sharp-win32-x64@0.34.5':
+ "@img/sharp-win32-x64@0.34.5":
optional: true
- '@isaacs/balanced-match@4.0.1': {}
+ "@isaacs/balanced-match@4.0.1": {}
- '@isaacs/brace-expansion@5.0.0':
+ "@isaacs/brace-expansion@5.0.0":
dependencies:
- '@isaacs/balanced-match': 4.0.1
+ "@isaacs/balanced-match": 4.0.1
- '@jridgewell/gen-mapping@0.3.13':
+ "@jridgewell/gen-mapping@0.3.13":
dependencies:
- '@jridgewell/sourcemap-codec': 1.5.5
- '@jridgewell/trace-mapping': 0.3.31
+ "@jridgewell/sourcemap-codec": 1.5.5
+ "@jridgewell/trace-mapping": 0.3.31
- '@jridgewell/resolve-uri@3.1.2': {}
+ "@jridgewell/resolve-uri@3.1.2": {}
- '@jridgewell/sourcemap-codec@1.5.5': {}
+ "@jridgewell/sourcemap-codec@1.5.5": {}
- '@jridgewell/trace-mapping@0.3.31':
+ "@jridgewell/trace-mapping@0.3.31":
dependencies:
- '@jridgewell/resolve-uri': 3.1.2
- '@jridgewell/sourcemap-codec': 1.5.5
+ "@jridgewell/resolve-uri": 3.1.2
+ "@jridgewell/sourcemap-codec": 1.5.5
- '@mongodb-js/saslprep@1.3.2':
+ "@mongodb-js/saslprep@1.3.2":
dependencies:
sparse-bitfield: 3.0.3
- '@napi-rs/wasm-runtime@0.2.12':
+ "@napi-rs/wasm-runtime@0.2.12":
dependencies:
- '@emnapi/core': 1.5.0
- '@emnapi/runtime': 1.5.0
- '@tybys/wasm-util': 0.10.1
+ "@emnapi/core": 1.5.0
+ "@emnapi/runtime": 1.5.0
+ "@tybys/wasm-util": 0.10.1
optional: true
- '@next/env@15.5.7': {}
+ "@next/env@15.5.7": {}
- '@next/eslint-plugin-next@15.2.0':
+ "@next/eslint-plugin-next@15.2.0":
dependencies:
fast-glob: 3.3.1
- '@next/swc-darwin-arm64@15.5.7':
+ "@next/swc-darwin-arm64@15.5.7":
optional: true
- '@next/swc-darwin-x64@15.5.7':
+ "@next/swc-darwin-x64@15.5.7":
optional: true
- '@next/swc-linux-arm64-gnu@15.5.7':
+ "@next/swc-linux-arm64-gnu@15.5.7":
optional: true
- '@next/swc-linux-arm64-musl@15.5.7':
+ "@next/swc-linux-arm64-musl@15.5.7":
optional: true
- '@next/swc-linux-x64-gnu@15.5.7':
+ "@next/swc-linux-x64-gnu@15.5.7":
optional: true
- '@next/swc-linux-x64-musl@15.5.7':
+ "@next/swc-linux-x64-musl@15.5.7":
optional: true
- '@next/swc-win32-arm64-msvc@15.5.7':
+ "@next/swc-win32-arm64-msvc@15.5.7":
optional: true
- '@next/swc-win32-x64-msvc@15.5.7':
+ "@next/swc-win32-x64-msvc@15.5.7":
optional: true
- '@nodelib/fs.scandir@2.1.5':
+ "@nodelib/fs.scandir@2.1.5":
dependencies:
- '@nodelib/fs.stat': 2.0.5
+ "@nodelib/fs.stat": 2.0.5
run-parallel: 1.2.0
- '@nodelib/fs.stat@2.0.5': {}
+ "@nodelib/fs.stat@2.0.5": {}
- '@nodelib/fs.walk@1.2.8':
+ "@nodelib/fs.walk@1.2.8":
dependencies:
- '@nodelib/fs.scandir': 2.1.5
+ "@nodelib/fs.scandir": 2.1.5
fastq: 1.19.1
- '@nolyfill/is-core-module@1.0.39': {}
+ "@nolyfill/is-core-module@1.0.39": {}
- '@panva/hkdf@1.2.1': {}
+ "@panva/hkdf@1.2.1": {}
- '@pinojs/redact@0.4.0': {}
+ "@pinojs/redact@0.4.0": {}
- '@prisma/client@6.17.1(prisma@6.17.1(typescript@5.3.3))(typescript@5.3.3)':
+ "@prisma/client@6.17.1(prisma@6.17.1(typescript@5.3.3))(typescript@5.3.3)":
optionalDependencies:
prisma: 6.17.1(typescript@5.3.3)
typescript: 5.3.3
- '@prisma/config@6.17.1':
+ "@prisma/config@6.17.1":
dependencies:
c12: 3.1.0
deepmerge-ts: 7.1.5
@@ -3476,483 +5365,483 @@ snapshots:
transitivePeerDependencies:
- magicast
- '@prisma/debug@6.17.1': {}
+ "@prisma/debug@6.17.1": {}
- '@prisma/engines-version@6.17.1-1.272a37d34178c2894197e17273bf937f25acdeac': {}
+ "@prisma/engines-version@6.17.1-1.272a37d34178c2894197e17273bf937f25acdeac": {}
- '@prisma/engines@6.17.1':
+ "@prisma/engines@6.17.1":
dependencies:
- '@prisma/debug': 6.17.1
- '@prisma/engines-version': 6.17.1-1.272a37d34178c2894197e17273bf937f25acdeac
- '@prisma/fetch-engine': 6.17.1
- '@prisma/get-platform': 6.17.1
+ "@prisma/debug": 6.17.1
+ "@prisma/engines-version": 6.17.1-1.272a37d34178c2894197e17273bf937f25acdeac
+ "@prisma/fetch-engine": 6.17.1
+ "@prisma/get-platform": 6.17.1
- '@prisma/fetch-engine@6.17.1':
+ "@prisma/fetch-engine@6.17.1":
dependencies:
- '@prisma/debug': 6.17.1
- '@prisma/engines-version': 6.17.1-1.272a37d34178c2894197e17273bf937f25acdeac
- '@prisma/get-platform': 6.17.1
+ "@prisma/debug": 6.17.1
+ "@prisma/engines-version": 6.17.1-1.272a37d34178c2894197e17273bf937f25acdeac
+ "@prisma/get-platform": 6.17.1
- '@prisma/get-platform@6.17.1':
+ "@prisma/get-platform@6.17.1":
dependencies:
- '@prisma/debug': 6.17.1
+ "@prisma/debug": 6.17.1
- '@radix-ui/number@1.1.1': {}
+ "@radix-ui/number@1.1.1": {}
- '@radix-ui/primitive@1.1.3': {}
+ "@radix-ui/primitive@1.1.3": {}
- '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ "@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/primitive": 1.1.3
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-context": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-dialog": 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-slot": 1.2.3(@types/react@19.2.2)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ "@types/react": 19.2.2
+ "@types/react-dom": 19.2.2(@types/react@19.2.2)
- '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ "@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ "@types/react": 19.2.2
+ "@types/react-dom": 19.2.2(@types/react@19.2.2)
- '@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ "@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/primitive": 1.1.3
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-context": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-presence": 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-use-controllable-state": 1.2.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-previous": 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-size": 1.1.1(@types/react@19.2.2)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ "@types/react": 19.2.2
+ "@types/react-dom": 19.2.2(@types/react@19.2.2)
- '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ "@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-context": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-slot": 1.2.3(@types/react@19.2.2)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ "@types/react": 19.2.2
+ "@types/react-dom": 19.2.2(@types/react@19.2.2)
- '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.2)(react@19.2.0)':
+ "@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.2)(react@19.2.0)":
dependencies:
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ "@types/react": 19.2.2
- '@radix-ui/react-context@1.1.2(@types/react@19.2.2)(react@19.2.0)':
+ "@radix-ui/react-context@1.1.2(@types/react@19.2.2)(react@19.2.0)":
dependencies:
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ "@types/react": 19.2.2
- '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ "@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/primitive": 1.1.3
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-context": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-dismissable-layer": 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-focus-guards": 1.1.3(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-focus-scope": 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-id": 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-portal": 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-presence": 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-slot": 1.2.3(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-controllable-state": 1.2.2(@types/react@19.2.2)(react@19.2.0)
aria-hidden: 1.2.6
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
react-remove-scroll: 2.7.1(@types/react@19.2.2)(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ "@types/react": 19.2.2
+ "@types/react-dom": 19.2.2(@types/react@19.2.2)
- '@radix-ui/react-direction@1.1.1(@types/react@19.2.2)(react@19.2.0)':
+ "@radix-ui/react-direction@1.1.1(@types/react@19.2.2)(react@19.2.0)":
dependencies:
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ "@types/react": 19.2.2
- '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ "@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/primitive": 1.1.3
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-use-callback-ref": 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-escape-keydown": 1.1.1(@types/react@19.2.2)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ "@types/react": 19.2.2
+ "@types/react-dom": 19.2.2(@types/react@19.2.2)
- '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ "@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/primitive": 1.1.3
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-context": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-id": 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-menu": 2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-use-controllable-state": 1.2.2(@types/react@19.2.2)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ "@types/react": 19.2.2
+ "@types/react-dom": 19.2.2(@types/react@19.2.2)
- '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.2)(react@19.2.0)':
+ "@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.2)(react@19.2.0)":
dependencies:
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ "@types/react": 19.2.2
- '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ "@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-use-callback-ref": 1.1.1(@types/react@19.2.2)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ "@types/react": 19.2.2
+ "@types/react-dom": 19.2.2(@types/react@19.2.2)
- '@radix-ui/react-id@1.1.1(@types/react@19.2.2)(react@19.2.0)':
+ "@radix-ui/react-id@1.1.1(@types/react@19.2.2)(react@19.2.0)":
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@19.2.2)(react@19.2.0)
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ "@types/react": 19.2.2
- '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ "@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/primitive": 1.1.3
+ "@radix-ui/react-collection": 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-context": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-direction": 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-dismissable-layer": 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-focus-guards": 1.1.3(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-focus-scope": 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-id": 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-popper": 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-portal": 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-presence": 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-roving-focus": 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-slot": 1.2.3(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-callback-ref": 1.1.1(@types/react@19.2.2)(react@19.2.0)
aria-hidden: 1.2.6
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
react-remove-scroll: 2.7.1(@types/react@19.2.2)(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ "@types/react": 19.2.2
+ "@types/react-dom": 19.2.2(@types/react@19.2.2)
- '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ "@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
dependencies:
- '@floating-ui/react-dom': 2.1.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/rect': 1.1.1
+ "@floating-ui/react-dom": 2.1.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-arrow": 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-context": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-use-callback-ref": 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-rect": 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-size": 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/rect": 1.1.1
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ "@types/react": 19.2.2
+ "@types/react-dom": 19.2.2(@types/react@19.2.2)
- '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ "@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@19.2.2)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ "@types/react": 19.2.2
+ "@types/react-dom": 19.2.2(@types/react@19.2.2)
- '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ "@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@19.2.2)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ "@types/react": 19.2.2
+ "@types/react-dom": 19.2.2(@types/react@19.2.2)
- '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ "@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
dependencies:
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-slot": 1.2.3(@types/react@19.2.2)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ "@types/react": 19.2.2
+ "@types/react-dom": 19.2.2(@types/react@19.2.2)
- '@radix-ui/react-progress@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ "@radix-ui/react-progress@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
dependencies:
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-context": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ "@types/react": 19.2.2
+ "@types/react-dom": 19.2.2(@types/react@19.2.2)
- '@radix-ui/react-radio-group@1.3.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ "@radix-ui/react-radio-group@1.3.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/primitive": 1.1.3
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-context": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-direction": 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-presence": 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-roving-focus": 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-use-controllable-state": 1.2.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-previous": 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-size": 1.1.1(@types/react@19.2.2)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ "@types/react": 19.2.2
+ "@types/react-dom": 19.2.2(@types/react@19.2.2)
- '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ "@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/primitive": 1.1.3
+ "@radix-ui/react-collection": 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-context": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-direction": 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-id": 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-use-callback-ref": 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-controllable-state": 1.2.2(@types/react@19.2.2)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ "@types/react": 19.2.2
+ "@types/react-dom": 19.2.2(@types/react@19.2.2)
- '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ "@radix-ui/react-select@2.2.6(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
dependencies:
- '@radix-ui/number': 1.1.1
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/number": 1.1.1
+ "@radix-ui/primitive": 1.1.3
+ "@radix-ui/react-collection": 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-context": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-direction": 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-dismissable-layer": 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-focus-guards": 1.1.3(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-focus-scope": 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-id": 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-popper": 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-portal": 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-slot": 1.2.3(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-callback-ref": 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-controllable-state": 1.2.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-previous": 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-visually-hidden": 1.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
aria-hidden: 1.2.6
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
react-remove-scroll: 2.7.1(@types/react@19.2.2)(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ "@types/react": 19.2.2
+ "@types/react-dom": 19.2.2(@types/react@19.2.2)
- '@radix-ui/react-slider@1.3.6(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ "@radix-ui/react-slider@1.3.6(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
dependencies:
- '@radix-ui/number': 1.1.1
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/number": 1.1.1
+ "@radix-ui/primitive": 1.1.3
+ "@radix-ui/react-collection": 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-context": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-direction": 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-use-controllable-state": 1.2.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-previous": 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-size": 1.1.1(@types/react@19.2.2)(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ "@types/react": 19.2.2
+ "@types/react-dom": 19.2.2(@types/react@19.2.2)
- '@radix-ui/react-slot@1.2.3(@types/react@19.2.2)(react@19.2.0)':
+ "@radix-ui/react-slot@1.2.3(@types/react@19.2.2)(react@19.2.0)":
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.2)(react@19.2.0)
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ "@types/react": 19.2.2
- '@radix-ui/react-toast@1.2.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ "@radix-ui/react-toast@1.2.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/primitive": 1.1.3
+ "@radix-ui/react-collection": 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-compose-refs": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-context": 1.1.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-dismissable-layer": 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-portal": 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-presence": 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-use-callback-ref": 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-controllable-state": 1.2.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-visually-hidden": 1.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ "@types/react": 19.2.2
+ "@types/react-dom": 19.2.2(@types/react@19.2.2)
- '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.2)(react@19.2.0)':
+ "@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.2)(react@19.2.0)":
dependencies:
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ "@types/react": 19.2.2
- '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.2)(react@19.2.0)':
+ "@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.2)(react@19.2.0)":
dependencies:
- '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.2)(react@19.2.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-effect-event": 0.0.2(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@19.2.2)(react@19.2.0)
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ "@types/react": 19.2.2
- '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.2)(react@19.2.0)':
+ "@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.2)(react@19.2.0)":
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@19.2.2)(react@19.2.0)
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ "@types/react": 19.2.2
- '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.2)(react@19.2.0)':
+ "@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.2)(react@19.2.0)":
dependencies:
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-callback-ref": 1.1.1(@types/react@19.2.2)(react@19.2.0)
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ "@types/react": 19.2.2
- '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.2)(react@19.2.0)':
+ "@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.2)(react@19.2.0)":
dependencies:
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ "@types/react": 19.2.2
- '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.2)(react@19.2.0)':
+ "@radix-ui/react-use-previous@1.1.1(@types/react@19.2.2)(react@19.2.0)":
dependencies:
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ "@types/react": 19.2.2
- '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.2)(react@19.2.0)':
+ "@radix-ui/react-use-rect@1.1.1(@types/react@19.2.2)(react@19.2.0)":
dependencies:
- '@radix-ui/rect': 1.1.1
+ "@radix-ui/rect": 1.1.1
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ "@types/react": 19.2.2
- '@radix-ui/react-use-size@1.1.1(@types/react@19.2.2)(react@19.2.0)':
+ "@radix-ui/react-use-size@1.1.1(@types/react@19.2.2)(react@19.2.0)":
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.0)
+ "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@19.2.2)(react@19.2.0)
react: 19.2.0
optionalDependencies:
- '@types/react': 19.2.2
+ "@types/react": 19.2.2
- '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ "@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)":
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ "@radix-ui/react-primitive": 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
- '@types/react-dom': 19.2.2(@types/react@19.2.2)
+ "@types/react": 19.2.2
+ "@types/react-dom": 19.2.2(@types/react@19.2.2)
- '@radix-ui/rect@1.1.1': {}
+ "@radix-ui/rect@1.1.1": {}
- '@rtsao/scc@1.1.0': {}
+ "@rtsao/scc@1.1.0": {}
- '@rushstack/eslint-patch@1.14.0': {}
+ "@rushstack/eslint-patch@1.14.0": {}
- '@standard-schema/spec@1.0.0': {}
+ "@standard-schema/spec@1.0.0": {}
- '@swc/helpers@0.5.15':
+ "@swc/helpers@0.5.15":
dependencies:
tslib: 2.8.1
- '@tybys/wasm-util@0.10.1':
+ "@tybys/wasm-util@0.10.1":
dependencies:
tslib: 2.8.1
optional: true
- '@types/bcryptjs@3.0.0':
+ "@types/bcryptjs@3.0.0":
dependencies:
bcryptjs: 3.0.2
- '@types/json-schema@7.0.15': {}
+ "@types/json-schema@7.0.15": {}
- '@types/json5@0.0.29': {}
+ "@types/json5@0.0.29": {}
- '@types/node@24.7.2':
+ "@types/node@24.7.2":
dependencies:
undici-types: 7.14.0
- '@types/react-dom@19.2.2(@types/react@19.2.2)':
+ "@types/react-dom@19.2.2(@types/react@19.2.2)":
dependencies:
- '@types/react': 19.2.2
+ "@types/react": 19.2.2
- '@types/react@19.2.2':
+ "@types/react@19.2.2":
dependencies:
csstype: 3.1.3
- '@types/semver@7.7.1': {}
+ "@types/semver@7.7.1": {}
- '@types/webidl-conversions@7.0.3': {}
+ "@types/webidl-conversions@7.0.3": {}
- '@types/whatwg-url@11.0.5':
+ "@types/whatwg-url@11.0.5":
dependencies:
- '@types/webidl-conversions': 7.0.3
+ "@types/webidl-conversions": 7.0.3
- '@typescript-eslint/eslint-plugin@8.46.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3)':
+ "@typescript-eslint/eslint-plugin@8.46.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3)":
dependencies:
- '@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3)
- '@typescript-eslint/scope-manager': 8.46.1
- '@typescript-eslint/type-utils': 8.46.1(eslint@8.56.0)(typescript@5.3.3)
- '@typescript-eslint/utils': 8.46.1(eslint@8.56.0)(typescript@5.3.3)
- '@typescript-eslint/visitor-keys': 8.46.1
+ "@eslint-community/regexpp": 4.12.1
+ "@typescript-eslint/parser": 6.21.0(eslint@8.56.0)(typescript@5.3.3)
+ "@typescript-eslint/scope-manager": 8.46.1
+ "@typescript-eslint/type-utils": 8.46.1(eslint@8.56.0)(typescript@5.3.3)
+ "@typescript-eslint/utils": 8.46.1(eslint@8.56.0)(typescript@5.3.3)
+ "@typescript-eslint/visitor-keys": 8.46.1
eslint: 8.56.0
graphemer: 1.4.0
ignore: 7.0.5
@@ -3962,20 +5851,20 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/experimental-utils@5.62.0(eslint@8.56.0)(typescript@5.3.3)':
+ "@typescript-eslint/experimental-utils@5.62.0(eslint@8.56.0)(typescript@5.3.3)":
dependencies:
- '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3)
+ "@typescript-eslint/utils": 5.62.0(eslint@8.56.0)(typescript@5.3.3)
eslint: 8.56.0
transitivePeerDependencies:
- supports-color
- typescript
- '@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3)':
+ "@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3)":
dependencies:
- '@typescript-eslint/scope-manager': 6.21.0
- '@typescript-eslint/types': 6.21.0
- '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3)
- '@typescript-eslint/visitor-keys': 6.21.0
+ "@typescript-eslint/scope-manager": 6.21.0
+ "@typescript-eslint/types": 6.21.0
+ "@typescript-eslint/typescript-estree": 6.21.0(typescript@5.3.3)
+ "@typescript-eslint/visitor-keys": 6.21.0
debug: 4.4.3
eslint: 8.56.0
optionalDependencies:
@@ -3983,39 +5872,39 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/project-service@8.46.1(typescript@5.3.3)':
+ "@typescript-eslint/project-service@8.46.1(typescript@5.3.3)":
dependencies:
- '@typescript-eslint/tsconfig-utils': 8.46.1(typescript@5.3.3)
- '@typescript-eslint/types': 8.46.1
+ "@typescript-eslint/tsconfig-utils": 8.46.1(typescript@5.3.3)
+ "@typescript-eslint/types": 8.46.1
debug: 4.4.3
typescript: 5.3.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@5.62.0':
+ "@typescript-eslint/scope-manager@5.62.0":
dependencies:
- '@typescript-eslint/types': 5.62.0
- '@typescript-eslint/visitor-keys': 5.62.0
+ "@typescript-eslint/types": 5.62.0
+ "@typescript-eslint/visitor-keys": 5.62.0
- '@typescript-eslint/scope-manager@6.21.0':
+ "@typescript-eslint/scope-manager@6.21.0":
dependencies:
- '@typescript-eslint/types': 6.21.0
- '@typescript-eslint/visitor-keys': 6.21.0
+ "@typescript-eslint/types": 6.21.0
+ "@typescript-eslint/visitor-keys": 6.21.0
- '@typescript-eslint/scope-manager@8.46.1':
+ "@typescript-eslint/scope-manager@8.46.1":
dependencies:
- '@typescript-eslint/types': 8.46.1
- '@typescript-eslint/visitor-keys': 8.46.1
+ "@typescript-eslint/types": 8.46.1
+ "@typescript-eslint/visitor-keys": 8.46.1
- '@typescript-eslint/tsconfig-utils@8.46.1(typescript@5.3.3)':
+ "@typescript-eslint/tsconfig-utils@8.46.1(typescript@5.3.3)":
dependencies:
typescript: 5.3.3
- '@typescript-eslint/type-utils@8.46.1(eslint@8.56.0)(typescript@5.3.3)':
+ "@typescript-eslint/type-utils@8.46.1(eslint@8.56.0)(typescript@5.3.3)":
dependencies:
- '@typescript-eslint/types': 8.46.1
- '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.3.3)
- '@typescript-eslint/utils': 8.46.1(eslint@8.56.0)(typescript@5.3.3)
+ "@typescript-eslint/types": 8.46.1
+ "@typescript-eslint/typescript-estree": 8.46.1(typescript@5.3.3)
+ "@typescript-eslint/utils": 8.46.1(eslint@8.56.0)(typescript@5.3.3)
debug: 4.4.3
eslint: 8.56.0
ts-api-utils: 2.1.0(typescript@5.3.3)
@@ -4023,16 +5912,16 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/types@5.62.0': {}
+ "@typescript-eslint/types@5.62.0": {}
- '@typescript-eslint/types@6.21.0': {}
+ "@typescript-eslint/types@6.21.0": {}
- '@typescript-eslint/types@8.46.1': {}
+ "@typescript-eslint/types@8.46.1": {}
- '@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.3)':
+ "@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.3)":
dependencies:
- '@typescript-eslint/types': 5.62.0
- '@typescript-eslint/visitor-keys': 5.62.0
+ "@typescript-eslint/types": 5.62.0
+ "@typescript-eslint/visitor-keys": 5.62.0
debug: 4.4.3
globby: 11.1.0
is-glob: 4.0.3
@@ -4043,10 +5932,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3)':
+ "@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3)":
dependencies:
- '@typescript-eslint/types': 6.21.0
- '@typescript-eslint/visitor-keys': 6.21.0
+ "@typescript-eslint/types": 6.21.0
+ "@typescript-eslint/visitor-keys": 6.21.0
debug: 4.4.3
globby: 11.1.0
is-glob: 4.0.3
@@ -4058,12 +5947,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/typescript-estree@8.46.1(typescript@5.3.3)':
+ "@typescript-eslint/typescript-estree@8.46.1(typescript@5.3.3)":
dependencies:
- '@typescript-eslint/project-service': 8.46.1(typescript@5.3.3)
- '@typescript-eslint/tsconfig-utils': 8.46.1(typescript@5.3.3)
- '@typescript-eslint/types': 8.46.1
- '@typescript-eslint/visitor-keys': 8.46.1
+ "@typescript-eslint/project-service": 8.46.1(typescript@5.3.3)
+ "@typescript-eslint/tsconfig-utils": 8.46.1(typescript@5.3.3)
+ "@typescript-eslint/types": 8.46.1
+ "@typescript-eslint/visitor-keys": 8.46.1
debug: 4.4.3
fast-glob: 3.3.3
is-glob: 4.0.3
@@ -4074,14 +5963,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@5.62.0(eslint@8.56.0)(typescript@5.3.3)':
+ "@typescript-eslint/utils@5.62.0(eslint@8.56.0)(typescript@5.3.3)":
dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@8.56.0)
- '@types/json-schema': 7.0.15
- '@types/semver': 7.7.1
- '@typescript-eslint/scope-manager': 5.62.0
- '@typescript-eslint/types': 5.62.0
- '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3)
+ "@eslint-community/eslint-utils": 4.9.0(eslint@8.56.0)
+ "@types/json-schema": 7.0.15
+ "@types/semver": 7.7.1
+ "@typescript-eslint/scope-manager": 5.62.0
+ "@typescript-eslint/types": 5.62.0
+ "@typescript-eslint/typescript-estree": 5.62.0(typescript@5.3.3)
eslint: 8.56.0
eslint-scope: 5.1.1
semver: 7.7.3
@@ -4089,91 +5978,91 @@ snapshots:
- supports-color
- typescript
- '@typescript-eslint/utils@8.46.1(eslint@8.56.0)(typescript@5.3.3)':
+ "@typescript-eslint/utils@8.46.1(eslint@8.56.0)(typescript@5.3.3)":
dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@8.56.0)
- '@typescript-eslint/scope-manager': 8.46.1
- '@typescript-eslint/types': 8.46.1
- '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.3.3)
+ "@eslint-community/eslint-utils": 4.9.0(eslint@8.56.0)
+ "@typescript-eslint/scope-manager": 8.46.1
+ "@typescript-eslint/types": 8.46.1
+ "@typescript-eslint/typescript-estree": 8.46.1(typescript@5.3.3)
eslint: 8.56.0
typescript: 5.3.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/visitor-keys@5.62.0':
+ "@typescript-eslint/visitor-keys@5.62.0":
dependencies:
- '@typescript-eslint/types': 5.62.0
+ "@typescript-eslint/types": 5.62.0
eslint-visitor-keys: 3.4.3
- '@typescript-eslint/visitor-keys@6.21.0':
+ "@typescript-eslint/visitor-keys@6.21.0":
dependencies:
- '@typescript-eslint/types': 6.21.0
+ "@typescript-eslint/types": 6.21.0
eslint-visitor-keys: 3.4.3
- '@typescript-eslint/visitor-keys@8.46.1':
+ "@typescript-eslint/visitor-keys@8.46.1":
dependencies:
- '@typescript-eslint/types': 8.46.1
+ "@typescript-eslint/types": 8.46.1
eslint-visitor-keys: 4.2.1
- '@ungap/structured-clone@1.3.0': {}
+ "@ungap/structured-clone@1.3.0": {}
- '@unrs/resolver-binding-android-arm-eabi@1.11.1':
+ "@unrs/resolver-binding-android-arm-eabi@1.11.1":
optional: true
- '@unrs/resolver-binding-android-arm64@1.11.1':
+ "@unrs/resolver-binding-android-arm64@1.11.1":
optional: true
- '@unrs/resolver-binding-darwin-arm64@1.11.1':
+ "@unrs/resolver-binding-darwin-arm64@1.11.1":
optional: true
- '@unrs/resolver-binding-darwin-x64@1.11.1':
+ "@unrs/resolver-binding-darwin-x64@1.11.1":
optional: true
- '@unrs/resolver-binding-freebsd-x64@1.11.1':
+ "@unrs/resolver-binding-freebsd-x64@1.11.1":
optional: true
- '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1':
+ "@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1":
optional: true
- '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1':
+ "@unrs/resolver-binding-linux-arm-musleabihf@1.11.1":
optional: true
- '@unrs/resolver-binding-linux-arm64-gnu@1.11.1':
+ "@unrs/resolver-binding-linux-arm64-gnu@1.11.1":
optional: true
- '@unrs/resolver-binding-linux-arm64-musl@1.11.1':
+ "@unrs/resolver-binding-linux-arm64-musl@1.11.1":
optional: true
- '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1':
+ "@unrs/resolver-binding-linux-ppc64-gnu@1.11.1":
optional: true
- '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1':
+ "@unrs/resolver-binding-linux-riscv64-gnu@1.11.1":
optional: true
- '@unrs/resolver-binding-linux-riscv64-musl@1.11.1':
+ "@unrs/resolver-binding-linux-riscv64-musl@1.11.1":
optional: true
- '@unrs/resolver-binding-linux-s390x-gnu@1.11.1':
+ "@unrs/resolver-binding-linux-s390x-gnu@1.11.1":
optional: true
- '@unrs/resolver-binding-linux-x64-gnu@1.11.1':
+ "@unrs/resolver-binding-linux-x64-gnu@1.11.1":
optional: true
- '@unrs/resolver-binding-linux-x64-musl@1.11.1':
+ "@unrs/resolver-binding-linux-x64-musl@1.11.1":
optional: true
- '@unrs/resolver-binding-wasm32-wasi@1.11.1':
+ "@unrs/resolver-binding-wasm32-wasi@1.11.1":
dependencies:
- '@napi-rs/wasm-runtime': 0.2.12
+ "@napi-rs/wasm-runtime": 0.2.12
optional: true
- '@unrs/resolver-binding-win32-arm64-msvc@1.11.1':
+ "@unrs/resolver-binding-win32-arm64-msvc@1.11.1":
optional: true
- '@unrs/resolver-binding-win32-ia32-msvc@1.11.1':
+ "@unrs/resolver-binding-win32-ia32-msvc@1.11.1":
optional: true
- '@unrs/resolver-binding-win32-x64-msvc@1.11.1':
+ "@unrs/resolver-binding-win32-x64-msvc@1.11.1":
optional: true
acorn-jsx@5.3.2(acorn@8.15.0):
@@ -4523,7 +6412,7 @@ snapshots:
effect@3.16.12:
dependencies:
- '@standard-schema/spec': 1.0.0
+ "@standard-schema/spec": 1.0.0
fast-check: 3.23.2
electron-to-chromium@1.5.235: {}
@@ -4643,10 +6532,10 @@ snapshots:
eslint-config-next@15.2.0(eslint@8.56.0)(typescript@5.3.3):
dependencies:
- '@next/eslint-plugin-next': 15.2.0
- '@rushstack/eslint-patch': 1.14.0
- '@typescript-eslint/eslint-plugin': 8.46.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3)
- '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3)
+ "@next/eslint-plugin-next": 15.2.0
+ "@rushstack/eslint-patch": 1.14.0
+ "@typescript-eslint/eslint-plugin": 8.46.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3)
+ "@typescript-eslint/parser": 6.21.0(eslint@8.56.0)(typescript@5.3.3)
eslint: 8.56.0
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.56.0)
@@ -4675,7 +6564,7 @@ snapshots:
eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.56.0):
dependencies:
- '@nolyfill/is-core-module': 1.0.39
+ "@nolyfill/is-core-module": 1.0.39
debug: 4.4.3
eslint: 8.56.0
get-tsconfig: 4.12.0
@@ -4692,7 +6581,7 @@ snapshots:
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3)
+ "@typescript-eslint/parser": 6.21.0(eslint@8.56.0)(typescript@5.3.3)
eslint: 8.56.0
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.56.0)
@@ -4701,7 +6590,7 @@ snapshots:
eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.56.0):
dependencies:
- '@rtsao/scc': 1.1.0
+ "@rtsao/scc": 1.1.0
array-includes: 3.1.9
array.prototype.findlastindex: 1.2.6
array.prototype.flat: 1.3.3
@@ -4722,7 +6611,7 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3)
+ "@typescript-eslint/parser": 6.21.0(eslint@8.56.0)(typescript@5.3.3)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
@@ -4775,8 +6664,8 @@ snapshots:
eslint-plugin-typescript-sort-keys@3.3.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3):
dependencies:
- '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3)
- '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3)
+ "@typescript-eslint/experimental-utils": 5.62.0(eslint@8.56.0)(typescript@5.3.3)
+ "@typescript-eslint/parser": 6.21.0(eslint@8.56.0)(typescript@5.3.3)
eslint: 8.56.0
json-schema: 0.4.0
natural-compare-lite: 1.4.0
@@ -4788,7 +6677,7 @@ snapshots:
dependencies:
eslint: 8.56.0
optionalDependencies:
- '@typescript-eslint/eslint-plugin': 8.46.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3)
+ "@typescript-eslint/eslint-plugin": 8.46.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3)
eslint-scope@5.1.1:
dependencies:
@@ -4806,14 +6695,14 @@ snapshots:
eslint@8.56.0:
dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@8.56.0)
- '@eslint-community/regexpp': 4.12.1
- '@eslint/eslintrc': 2.1.4
- '@eslint/js': 8.56.0
- '@humanwhocodes/config-array': 0.11.14
- '@humanwhocodes/module-importer': 1.0.1
- '@nodelib/fs.walk': 1.2.8
- '@ungap/structured-clone': 1.3.0
+ "@eslint-community/eslint-utils": 4.9.0(eslint@8.56.0)
+ "@eslint-community/regexpp": 4.12.1
+ "@eslint/eslintrc": 2.1.4
+ "@eslint/js": 8.56.0
+ "@humanwhocodes/config-array": 0.11.14
+ "@humanwhocodes/module-importer": 1.0.1
+ "@nodelib/fs.walk": 1.2.8
+ "@ungap/structured-clone": 1.3.0
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.6
@@ -4879,16 +6768,16 @@ snapshots:
fast-glob@3.3.1:
dependencies:
- '@nodelib/fs.stat': 2.0.5
- '@nodelib/fs.walk': 1.2.8
+ "@nodelib/fs.stat": 2.0.5
+ "@nodelib/fs.walk": 1.2.8
glob-parent: 5.1.2
merge2: 1.4.1
micromatch: 4.0.8
fast-glob@3.3.3:
dependencies:
- '@nodelib/fs.stat': 2.0.5
- '@nodelib/fs.walk': 1.2.8
+ "@nodelib/fs.stat": 2.0.5
+ "@nodelib/fs.walk": 1.2.8
glob-parent: 5.1.2
merge2: 1.4.1
micromatch: 4.0.8
@@ -4940,7 +6829,7 @@ snapshots:
motion-utils: 12.23.6
tslib: 2.8.1
optionalDependencies:
- '@emotion/is-prop-valid': 0.8.8
+ "@emotion/is-prop-valid": 0.8.8
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
@@ -5067,11 +6956,11 @@ snapshots:
i18next-browser-languagedetector@8.2.0:
dependencies:
- '@babel/runtime': 7.28.4
+ "@babel/runtime": 7.28.4
i18next@24.2.3(typescript@5.3.3):
dependencies:
- '@babel/runtime': 7.28.4
+ "@babel/runtime": 7.28.4
optionalDependencies:
typescript: 5.3.3
@@ -5308,7 +7197,7 @@ snapshots:
minimatch@10.1.1:
dependencies:
- '@isaacs/brace-expansion': 5.0.0
+ "@isaacs/brace-expansion": 5.0.0
minimatch@3.1.2:
dependencies:
@@ -5328,12 +7217,12 @@ snapshots:
mongodb-connection-string-url@3.0.2:
dependencies:
- '@types/whatwg-url': 11.0.5
+ "@types/whatwg-url": 11.0.5
whatwg-url: 14.2.0
mongodb@6.20.0:
dependencies:
- '@mongodb-js/saslprep': 1.3.2
+ "@mongodb-js/saslprep": 1.3.2
bson: 6.10.4
mongodb-connection-string-url: 3.0.2
@@ -5361,7 +7250,7 @@ snapshots:
next-auth@5.0.0-beta.30(next@15.5.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0):
dependencies:
- '@auth/core': 0.41.0
+ "@auth/core": 0.41.0
next: 15.5.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0
@@ -5373,25 +7262,25 @@ snapshots:
next@15.5.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
dependencies:
- '@next/env': 15.5.7
- '@swc/helpers': 0.5.15
+ "@next/env": 15.5.7
+ "@swc/helpers": 0.5.15
caniuse-lite: 1.0.30001750
postcss: 8.4.31
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
styled-jsx: 5.1.6(react@19.2.0)
optionalDependencies:
- '@next/swc-darwin-arm64': 15.5.7
- '@next/swc-darwin-x64': 15.5.7
- '@next/swc-linux-arm64-gnu': 15.5.7
- '@next/swc-linux-arm64-musl': 15.5.7
- '@next/swc-linux-x64-gnu': 15.5.7
- '@next/swc-linux-x64-musl': 15.5.7
- '@next/swc-win32-arm64-msvc': 15.5.7
- '@next/swc-win32-x64-msvc': 15.5.7
+ "@next/swc-darwin-arm64": 15.5.7
+ "@next/swc-darwin-x64": 15.5.7
+ "@next/swc-linux-arm64-gnu": 15.5.7
+ "@next/swc-linux-arm64-musl": 15.5.7
+ "@next/swc-linux-x64-gnu": 15.5.7
+ "@next/swc-linux-x64-musl": 15.5.7
+ "@next/swc-win32-arm64-msvc": 15.5.7
+ "@next/swc-win32-x64-msvc": 15.5.7
sharp: 0.34.5
transitivePeerDependencies:
- - '@babel/core'
+ - "@babel/core"
- babel-plugin-macros
node-fetch-native@1.6.7: {}
@@ -5542,7 +7431,7 @@ snapshots:
pino@10.1.0:
dependencies:
- '@pinojs/redact': 0.4.0
+ "@pinojs/redact": 0.4.0
atomic-sleep: 1.0.0
on-exit-leak-free: 2.1.2
pino-abstract-transport: 2.0.0
@@ -5617,8 +7506,8 @@ snapshots:
prisma@6.17.1(typescript@5.3.3):
dependencies:
- '@prisma/config': 6.17.1
- '@prisma/engines': 6.17.1
+ "@prisma/config": 6.17.1
+ "@prisma/engines": 6.17.1
optionalDependencies:
typescript: 5.3.3
transitivePeerDependencies:
@@ -5657,7 +7546,7 @@ snapshots:
react-i18next@15.7.4(i18next@24.2.3(typescript@5.3.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.3.3):
dependencies:
- '@babel/runtime': 7.28.4
+ "@babel/runtime": 7.28.4
html-parse-stringify: 3.0.1
i18next: 24.2.3(typescript@5.3.3)
react: 19.2.0
@@ -5673,7 +7562,7 @@ snapshots:
react-style-singleton: 2.2.3(@types/react@19.2.2)(react@19.2.0)
tslib: 2.8.1
optionalDependencies:
- '@types/react': 19.2.2
+ "@types/react": 19.2.2
react-remove-scroll@2.7.1(@types/react@19.2.2)(react@19.2.0):
dependencies:
@@ -5684,7 +7573,7 @@ snapshots:
use-callback-ref: 1.3.3(@types/react@19.2.2)(react@19.2.0)
use-sidecar: 1.1.3(@types/react@19.2.2)(react@19.2.0)
optionalDependencies:
- '@types/react': 19.2.2
+ "@types/react": 19.2.2
react-style-singleton@2.2.3(@types/react@19.2.2)(react@19.2.0):
dependencies:
@@ -5692,7 +7581,7 @@ snapshots:
react: 19.2.0
tslib: 2.8.1
optionalDependencies:
- '@types/react': 19.2.2
+ "@types/react": 19.2.2
react@19.2.0: {}
@@ -5811,56 +7700,56 @@ snapshots:
detect-libc: 2.1.2
semver: 7.7.3
optionalDependencies:
- '@img/sharp-darwin-arm64': 0.33.2
- '@img/sharp-darwin-x64': 0.33.2
- '@img/sharp-libvips-darwin-arm64': 1.0.1
- '@img/sharp-libvips-darwin-x64': 1.0.1
- '@img/sharp-libvips-linux-arm': 1.0.1
- '@img/sharp-libvips-linux-arm64': 1.0.1
- '@img/sharp-libvips-linux-s390x': 1.0.1
- '@img/sharp-libvips-linux-x64': 1.0.1
- '@img/sharp-libvips-linuxmusl-arm64': 1.0.1
- '@img/sharp-libvips-linuxmusl-x64': 1.0.1
- '@img/sharp-linux-arm': 0.33.2
- '@img/sharp-linux-arm64': 0.33.2
- '@img/sharp-linux-s390x': 0.33.2
- '@img/sharp-linux-x64': 0.33.2
- '@img/sharp-linuxmusl-arm64': 0.33.2
- '@img/sharp-linuxmusl-x64': 0.33.2
- '@img/sharp-wasm32': 0.33.2
- '@img/sharp-win32-ia32': 0.33.2
- '@img/sharp-win32-x64': 0.33.2
+ "@img/sharp-darwin-arm64": 0.33.2
+ "@img/sharp-darwin-x64": 0.33.2
+ "@img/sharp-libvips-darwin-arm64": 1.0.1
+ "@img/sharp-libvips-darwin-x64": 1.0.1
+ "@img/sharp-libvips-linux-arm": 1.0.1
+ "@img/sharp-libvips-linux-arm64": 1.0.1
+ "@img/sharp-libvips-linux-s390x": 1.0.1
+ "@img/sharp-libvips-linux-x64": 1.0.1
+ "@img/sharp-libvips-linuxmusl-arm64": 1.0.1
+ "@img/sharp-libvips-linuxmusl-x64": 1.0.1
+ "@img/sharp-linux-arm": 0.33.2
+ "@img/sharp-linux-arm64": 0.33.2
+ "@img/sharp-linux-s390x": 0.33.2
+ "@img/sharp-linux-x64": 0.33.2
+ "@img/sharp-linuxmusl-arm64": 0.33.2
+ "@img/sharp-linuxmusl-x64": 0.33.2
+ "@img/sharp-wasm32": 0.33.2
+ "@img/sharp-win32-ia32": 0.33.2
+ "@img/sharp-win32-x64": 0.33.2
sharp@0.34.5:
dependencies:
- '@img/colour': 1.0.0
+ "@img/colour": 1.0.0
detect-libc: 2.1.2
semver: 7.7.3
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
+ "@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
optional: true
shebang-command@2.0.0:
@@ -5989,7 +7878,7 @@ snapshots:
sucrase@3.35.0:
dependencies:
- '@jridgewell/gen-mapping': 0.3.13
+ "@jridgewell/gen-mapping": 0.3.13
commander: 4.1.1
glob: 13.0.0
lines-and-columns: 1.2.4
@@ -6011,7 +7900,7 @@ snapshots:
tailwindcss@3.4.1:
dependencies:
- '@alloc/quick-lru': 5.2.0
+ "@alloc/quick-lru": 5.2.0
arg: 5.0.2
chokidar: 3.6.0
didyoumean: 1.2.2
@@ -6077,7 +7966,7 @@ snapshots:
tsconfig-paths@3.15.0:
dependencies:
- '@types/json5': 0.0.29
+ "@types/json5": 0.0.29
json5: 1.0.2
minimist: 1.2.8
strip-bom: 3.0.0
@@ -6147,25 +8036,25 @@ snapshots:
dependencies:
napi-postinstall: 0.3.4
optionalDependencies:
- '@unrs/resolver-binding-android-arm-eabi': 1.11.1
- '@unrs/resolver-binding-android-arm64': 1.11.1
- '@unrs/resolver-binding-darwin-arm64': 1.11.1
- '@unrs/resolver-binding-darwin-x64': 1.11.1
- '@unrs/resolver-binding-freebsd-x64': 1.11.1
- '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1
- '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1
- '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1
- '@unrs/resolver-binding-linux-arm64-musl': 1.11.1
- '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1
- '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1
- '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1
- '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1
- '@unrs/resolver-binding-linux-x64-gnu': 1.11.1
- '@unrs/resolver-binding-linux-x64-musl': 1.11.1
- '@unrs/resolver-binding-wasm32-wasi': 1.11.1
- '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1
- '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1
- '@unrs/resolver-binding-win32-x64-msvc': 1.11.1
+ "@unrs/resolver-binding-android-arm-eabi": 1.11.1
+ "@unrs/resolver-binding-android-arm64": 1.11.1
+ "@unrs/resolver-binding-darwin-arm64": 1.11.1
+ "@unrs/resolver-binding-darwin-x64": 1.11.1
+ "@unrs/resolver-binding-freebsd-x64": 1.11.1
+ "@unrs/resolver-binding-linux-arm-gnueabihf": 1.11.1
+ "@unrs/resolver-binding-linux-arm-musleabihf": 1.11.1
+ "@unrs/resolver-binding-linux-arm64-gnu": 1.11.1
+ "@unrs/resolver-binding-linux-arm64-musl": 1.11.1
+ "@unrs/resolver-binding-linux-ppc64-gnu": 1.11.1
+ "@unrs/resolver-binding-linux-riscv64-gnu": 1.11.1
+ "@unrs/resolver-binding-linux-riscv64-musl": 1.11.1
+ "@unrs/resolver-binding-linux-s390x-gnu": 1.11.1
+ "@unrs/resolver-binding-linux-x64-gnu": 1.11.1
+ "@unrs/resolver-binding-linux-x64-musl": 1.11.1
+ "@unrs/resolver-binding-wasm32-wasi": 1.11.1
+ "@unrs/resolver-binding-win32-arm64-msvc": 1.11.1
+ "@unrs/resolver-binding-win32-ia32-msvc": 1.11.1
+ "@unrs/resolver-binding-win32-x64-msvc": 1.11.1
update-browserslist-db@1.1.3(browserslist@4.26.3):
dependencies:
@@ -6182,7 +8071,7 @@ snapshots:
react: 19.2.0
tslib: 2.8.1
optionalDependencies:
- '@types/react': 19.2.2
+ "@types/react": 19.2.2
use-sidecar@1.1.3(@types/react@19.2.2)(react@19.2.0):
dependencies:
@@ -6190,7 +8079,7 @@ snapshots:
react: 19.2.0
tslib: 2.8.1
optionalDependencies:
- '@types/react': 19.2.2
+ "@types/react": 19.2.2
util-deprecate@1.0.2: {}
diff --git a/public/offline.html b/public/offline.html
index 315e2a7..a99860f 100644
--- a/public/offline.html
+++ b/public/offline.html
@@ -1,4 +1,4 @@
-
+
@@ -8,7 +8,10 @@
body {
margin: 0;
padding: 0;
- font-family: system-ui, -apple-system, sans-serif;
+ font-family:
+ system-ui,
+ -apple-system,
+ sans-serif;
background-color: #0f172a;
color: #e2e8f0;
min-height: 100vh;
diff --git a/public/sw.js b/public/sw.js
index e4fbc52..d641d4c 100644
--- a/public/sw.js
+++ b/public/sw.js
@@ -172,9 +172,7 @@ self.addEventListener("activate", (event) => {
const cacheNames = await caches.keys();
const cachesToDelete = cacheNames.filter(
(name) =>
- name.startsWith("stripstream-") &&
- name !== BOOKS_CACHE &&
- !name.endsWith(`-${VERSION}`)
+ name.startsWith("stripstream-") && name !== BOOKS_CACHE && !name.endsWith(`-${VERSION}`)
);
await Promise.all(cachesToDelete.map((name) => caches.delete(name)));
diff --git a/scripts/check-db.mjs b/scripts/check-db.mjs
index 069e75b..cd620a9 100644
--- a/scripts/check-db.mjs
+++ b/scripts/check-db.mjs
@@ -10,7 +10,7 @@ const prisma = new PrismaClient();
async function checkDatabase() {
try {
console.log("🔍 Checking database content...");
-
+
// Vérifier les utilisateurs
const users = await prisma.user.findMany({
select: {
@@ -20,22 +20,23 @@ async function checkDatabase() {
createdAt: true,
},
});
-
+
console.log(`📊 Found ${users.length} users:`);
- users.forEach(user => {
- console.log(` - ID: ${user.id}, Email: ${user.email}, Roles: ${JSON.stringify(user.roles)}, Created: ${user.createdAt}`);
+ users.forEach((user) => {
+ console.log(
+ ` - ID: ${user.id}, Email: ${user.email}, Roles: ${JSON.stringify(user.roles)}, Created: ${user.createdAt}`
+ );
});
-
+
// Vérifier les configurations
const komgaConfigs = await prisma.komgaConfig.count();
const preferences = await prisma.preferences.count();
const favorites = await prisma.favorite.count();
-
+
console.log(`📊 Database stats:`);
console.log(` - KomgaConfigs: ${komgaConfigs}`);
console.log(` - Preferences: ${preferences}`);
console.log(` - Favorites: ${favorites}`);
-
} catch (error) {
console.error("❌ Error checking database:", error);
} finally {
@@ -44,4 +45,3 @@ async function checkDatabase() {
}
checkDatabase();
-
diff --git a/scripts/init-db.mjs b/scripts/init-db.mjs
index 6c8cff6..c84804a 100755
--- a/scripts/init-db.mjs
+++ b/scripts/init-db.mjs
@@ -22,7 +22,7 @@ async function initializeAdminUser() {
if (existingAdmin) {
// Vérifier si l'utilisateur a le rôle admin
const hasAdminRole = existingAdmin.roles.includes("ROLE_ADMIN");
-
+
if (hasAdminRole) {
console.log(`✅ Admin user ${ADMIN_EMAIL} already exists with admin role`);
} else {
@@ -60,7 +60,7 @@ async function initializeAdminUser() {
async function main() {
console.log("🔧 Initializing SQLite database...");
-
+
try {
await initializeAdminUser();
console.log("✅ Database initialization completed");
@@ -72,4 +72,3 @@ async function main() {
}
main();
-
diff --git a/scripts/reset-admin-password.mjs b/scripts/reset-admin-password.mjs
index d5589aa..5b1541f 100755
--- a/scripts/reset-admin-password.mjs
+++ b/scripts/reset-admin-password.mjs
@@ -2,8 +2,8 @@
/**
* Script de réinitialisation forcée du mot de passe admin
* Force la mise à jour du mot de passe du compte admin
- *
- * Usage:
+ *
+ * Usage:
* pnpm reset-admin-password [nouveau-mot-de-passe]
* pnpm reset-admin-password [email] [nouveau-mot-de-passe]
* docker compose exec app pnpm reset-admin-password [nouveau-mot-de-passe]
@@ -71,7 +71,7 @@ async function resetAdminPassword() {
async function main() {
console.log("🔧 Starting admin password reset...");
-
+
try {
await resetAdminPassword();
console.log("✅ Admin password reset completed");
@@ -83,4 +83,3 @@ async function main() {
}
main();
-
diff --git a/src/app/account/page.tsx b/src/app/account/page.tsx
index 01465c5..ee534bb 100644
--- a/src/app/account/page.tsx
+++ b/src/app/account/page.tsx
@@ -4,7 +4,7 @@ import { UserService } from "@/lib/services/user.service";
import { redirect } from "next/navigation";
import logger from "@/lib/logger";
-export const dynamic = 'force-dynamic';
+export const dynamic = "force-dynamic";
export default async function AccountPage() {
try {
diff --git a/src/app/admin/page.tsx b/src/app/admin/page.tsx
index d436ab8..fa22245 100644
--- a/src/app/admin/page.tsx
+++ b/src/app/admin/page.tsx
@@ -4,12 +4,12 @@ import { isAdmin } from "@/lib/auth-utils";
import { AdminContent } from "@/components/admin/AdminContent";
import logger from "@/lib/logger";
-export const dynamic = 'force-dynamic';
+export const dynamic = "force-dynamic";
export default async function AdminPage() {
try {
const hasAdminAccess = await isAdmin();
-
+
if (!hasAdminAccess) {
redirect("/");
}
diff --git a/src/app/api/admin/stats/route.ts b/src/app/api/admin/stats/route.ts
index d94cba1..0e3cb07 100644
--- a/src/app/api/admin/stats/route.ts
+++ b/src/app/api/admin/stats/route.ts
@@ -13,9 +13,13 @@ export async function GET() {
if (error instanceof AppError) {
return NextResponse.json(
{ error: error.message, code: error.code },
- {
- status: error.code === "AUTH_FORBIDDEN" ? 403 :
- error.code === "AUTH_UNAUTHENTICATED" ? 401 : 500
+ {
+ status:
+ error.code === "AUTH_FORBIDDEN"
+ ? 403
+ : error.code === "AUTH_UNAUTHENTICATED"
+ ? 401
+ : 500,
}
);
}
@@ -26,4 +30,3 @@ export async function GET() {
);
}
}
-
diff --git a/src/app/api/admin/users/[userId]/password/route.ts b/src/app/api/admin/users/[userId]/password/route.ts
index d7110f2..2d70029 100644
--- a/src/app/api/admin/users/[userId]/password/route.ts
+++ b/src/app/api/admin/users/[userId]/password/route.ts
@@ -14,17 +14,14 @@ export async function PUT(
const { newPassword } = body;
if (!newPassword) {
- return NextResponse.json(
- { error: "Nouveau mot de passe manquant" },
- { status: 400 }
- );
+ return NextResponse.json({ error: "Nouveau mot de passe manquant" }, { status: 400 });
}
// Vérifier que le mot de passe est fort
if (!AuthServerService.isPasswordStrong(newPassword)) {
return NextResponse.json(
- {
- error: "Le mot de passe doit contenir au moins 8 caractères, une majuscule et un chiffre"
+ {
+ error: "Le mot de passe doit contenir au moins 8 caractères, une majuscule et un chiffre",
},
{ status: 400 }
);
@@ -39,11 +36,17 @@ export async function PUT(
if (error instanceof AppError) {
return NextResponse.json(
{ error: error.message, code: error.code },
- {
- status: error.code === "AUTH_FORBIDDEN" ? 403 :
- error.code === "AUTH_UNAUTHENTICATED" ? 401 :
- error.code === "AUTH_USER_NOT_FOUND" ? 404 :
- error.code === "ADMIN_CANNOT_RESET_OWN_PASSWORD" ? 400 : 500
+ {
+ status:
+ error.code === "AUTH_FORBIDDEN"
+ ? 403
+ : error.code === "AUTH_UNAUTHENTICATED"
+ ? 401
+ : error.code === "AUTH_USER_NOT_FOUND"
+ ? 404
+ : error.code === "ADMIN_CANNOT_RESET_OWN_PASSWORD"
+ ? 400
+ : 500,
}
);
}
@@ -54,4 +57,3 @@ export async function PUT(
);
}
}
-
diff --git a/src/app/api/admin/users/[userId]/route.ts b/src/app/api/admin/users/[userId]/route.ts
index 5d30637..4a419f5 100644
--- a/src/app/api/admin/users/[userId]/route.ts
+++ b/src/app/api/admin/users/[userId]/route.ts
@@ -13,10 +13,7 @@ export async function PATCH(
const { roles } = body;
if (!roles || !Array.isArray(roles)) {
- return NextResponse.json(
- { error: "Rôles invalides" },
- { status: 400 }
- );
+ return NextResponse.json({ error: "Rôles invalides" }, { status: 400 });
}
await AdminService.updateUserRoles(userId, roles);
@@ -28,10 +25,15 @@ export async function PATCH(
if (error instanceof AppError) {
return NextResponse.json(
{ error: error.message, code: error.code },
- {
- status: error.code === "AUTH_FORBIDDEN" ? 403 :
- error.code === "AUTH_UNAUTHENTICATED" ? 401 :
- error.code === "AUTH_USER_NOT_FOUND" ? 404 : 500
+ {
+ status:
+ error.code === "AUTH_FORBIDDEN"
+ ? 403
+ : error.code === "AUTH_UNAUTHENTICATED"
+ ? 401
+ : error.code === "AUTH_USER_NOT_FOUND"
+ ? 404
+ : 500,
}
);
}
@@ -58,11 +60,17 @@ export async function DELETE(
if (error instanceof AppError) {
return NextResponse.json(
{ error: error.message, code: error.code },
- {
- status: error.code === "AUTH_FORBIDDEN" ? 403 :
- error.code === "AUTH_UNAUTHENTICATED" ? 401 :
- error.code === "AUTH_USER_NOT_FOUND" ? 404 :
- error.code === "ADMIN_CANNOT_DELETE_SELF" ? 400 : 500
+ {
+ status:
+ error.code === "AUTH_FORBIDDEN"
+ ? 403
+ : error.code === "AUTH_UNAUTHENTICATED"
+ ? 401
+ : error.code === "AUTH_USER_NOT_FOUND"
+ ? 404
+ : error.code === "ADMIN_CANNOT_DELETE_SELF"
+ ? 400
+ : 500,
}
);
}
@@ -73,4 +81,3 @@ export async function DELETE(
);
}
}
-
diff --git a/src/app/api/admin/users/route.ts b/src/app/api/admin/users/route.ts
index 334a8d8..7655ca1 100644
--- a/src/app/api/admin/users/route.ts
+++ b/src/app/api/admin/users/route.ts
@@ -13,9 +13,13 @@ export async function GET() {
if (error instanceof AppError) {
return NextResponse.json(
{ error: error.message, code: error.code },
- {
- status: error.code === "AUTH_FORBIDDEN" ? 403 :
- error.code === "AUTH_UNAUTHENTICATED" ? 401 : 500
+ {
+ status:
+ error.code === "AUTH_FORBIDDEN"
+ ? 403
+ : error.code === "AUTH_UNAUTHENTICATED"
+ ? 401
+ : 500,
}
);
}
diff --git a/src/app/api/auth/[...nextauth]/route.ts b/src/app/api/auth/[...nextauth]/route.ts
index 879310b..c55a45e 100644
--- a/src/app/api/auth/[...nextauth]/route.ts
+++ b/src/app/api/auth/[...nextauth]/route.ts
@@ -1,3 +1,3 @@
import { handlers } from "@/lib/auth";
-export const { GET, POST } = handlers;
\ No newline at end of file
+export const { GET, POST } = handlers;
diff --git a/src/app/api/komga/books/[bookId]/pages/[pageNumber]/route.ts b/src/app/api/komga/books/[bookId]/pages/[pageNumber]/route.ts
index 5fc469b..a07854a 100644
--- a/src/app/api/komga/books/[bookId]/pages/[pageNumber]/route.ts
+++ b/src/app/api/komga/books/[bookId]/pages/[pageNumber]/route.ts
@@ -44,10 +44,10 @@ export async function GET(
return { buffer, contentType };
}
);
-
+
// Cloner le buffer pour cette requête pour éviter tout partage de référence
const clonedBuffer = buffer.slice(0);
-
+
const headers = new Headers();
headers.set("Content-Type", contentType);
headers.set("Cache-Control", "public, max-age=31536000"); // Cache for 1 year
diff --git a/src/app/api/komga/books/[bookId]/route.ts b/src/app/api/komga/books/[bookId]/route.ts
index b91d49c..6f3c6ee 100644
--- a/src/app/api/komga/books/[bookId]/route.ts
+++ b/src/app/api/komga/books/[bookId]/route.ts
@@ -16,7 +16,7 @@ export async function GET(
const data: KomgaBookWithPages = await BookService.getBook(bookId);
const nextBook = await BookService.getNextBook(bookId, data.book.seriesId);
-
+
return NextResponse.json({ ...data, nextBook });
} catch (error) {
logger.error({ err: error }, "API Books - Erreur:");
diff --git a/src/app/api/komga/cache/clear/route.ts b/src/app/api/komga/cache/clear/route.ts
index 2dcfec6..16ff7df 100644
--- a/src/app/api/komga/cache/clear/route.ts
+++ b/src/app/api/komga/cache/clear/route.ts
@@ -10,13 +10,13 @@ export async function POST() {
try {
const cacheService: ServerCacheService = await getServerCacheService();
await cacheService.clear();
-
+
// Revalider toutes les pages importantes après le vidage du cache
revalidatePath("/");
revalidatePath("/libraries");
revalidatePath("/series");
revalidatePath("/books");
-
+
return NextResponse.json({ message: "🧹 Cache vidé avec succès" });
} catch (error) {
logger.error({ err: error }, "Erreur lors de la suppression du cache:");
diff --git a/src/app/api/komga/cache/entries/route.ts b/src/app/api/komga/cache/entries/route.ts
index 4a19fc5..0d149d9 100644
--- a/src/app/api/komga/cache/entries/route.ts
+++ b/src/app/api/komga/cache/entries/route.ts
@@ -9,7 +9,7 @@ export async function GET() {
try {
const cacheService: ServerCacheService = await getServerCacheService();
const entries = await cacheService.getCacheEntries();
-
+
return NextResponse.json({ entries });
} catch (error) {
logger.error({ err: error }, "Erreur lors de la récupération des entrées du cache");
@@ -25,4 +25,3 @@ export async function GET() {
);
}
}
-
diff --git a/src/app/api/komga/cache/size/route.ts b/src/app/api/komga/cache/size/route.ts
index f807f16..e58c36d 100644
--- a/src/app/api/komga/cache/size/route.ts
+++ b/src/app/api/komga/cache/size/route.ts
@@ -9,11 +9,11 @@ export async function GET() {
try {
const cacheService: ServerCacheService = await getServerCacheService();
const { sizeInBytes, itemCount } = await cacheService.getCacheSize();
-
- return NextResponse.json({
- sizeInBytes,
+
+ return NextResponse.json({
+ sizeInBytes,
itemCount,
- mode: cacheService.getCacheMode()
+ mode: cacheService.getCacheMode(),
});
} catch (error) {
logger.error({ err: error }, "Erreur lors de la récupération de la taille du cache:");
@@ -29,4 +29,3 @@ export async function GET() {
);
}
}
-
diff --git a/src/app/api/komga/favorites/route.ts b/src/app/api/komga/favorites/route.ts
index 98c6018..61c1850 100644
--- a/src/app/api/komga/favorites/route.ts
+++ b/src/app/api/komga/favorites/route.ts
@@ -10,10 +10,10 @@ import logger from "@/lib/logger";
export async function GET() {
try {
const favoriteIds: string[] = await FavoriteService.getAllFavoriteIds();
-
+
// Valider que chaque série existe encore dans Komga
const validFavoriteIds: string[] = [];
-
+
for (const seriesId of favoriteIds) {
try {
await SeriesService.getSeries(seriesId);
@@ -27,7 +27,7 @@ export async function GET() {
}
}
}
-
+
return NextResponse.json(validFavoriteIds);
} catch (error) {
if (error instanceof AppError) {
diff --git a/src/app/api/komga/home/route.ts b/src/app/api/komga/home/route.ts
index 42b4267..862d36c 100644
--- a/src/app/api/komga/home/route.ts
+++ b/src/app/api/komga/home/route.ts
@@ -67,4 +67,3 @@ export async function DELETE() {
);
}
}
-
diff --git a/src/app/api/komga/images/books/[bookId]/pages/[pageNumber]/route.ts b/src/app/api/komga/images/books/[bookId]/pages/[pageNumber]/route.ts
index fda3fd9..6352b42 100644
--- a/src/app/api/komga/images/books/[bookId]/pages/[pageNumber]/route.ts
+++ b/src/app/api/komga/images/books/[bookId]/pages/[pageNumber]/route.ts
@@ -20,10 +20,10 @@ export async function GET(
return response;
} catch (error) {
logger.error({ err: error }, "Erreur lors de la récupération de la page du livre:");
-
+
// Chercher un status HTTP 404 dans la chaîne d'erreurs
const httpStatus = findHttpStatus(error);
-
+
if (httpStatus === 404) {
const { bookId, pageNumber } = await params;
// eslint-disable-next-line no-console
@@ -39,7 +39,7 @@ export async function GET(
{ status: 404 }
);
}
-
+
if (error instanceof AppError) {
return NextResponse.json(
{
diff --git a/src/app/api/komga/images/books/[bookId]/pages/[pageNumber]/thumbnail/route.ts b/src/app/api/komga/images/books/[bookId]/pages/[pageNumber]/thumbnail/route.ts
index f053e1f..e542741 100644
--- a/src/app/api/komga/images/books/[bookId]/pages/[pageNumber]/thumbnail/route.ts
+++ b/src/app/api/komga/images/books/[bookId]/pages/[pageNumber]/thumbnail/route.ts
@@ -34,10 +34,10 @@ export async function GET(
return response;
} catch (error) {
logger.error({ err: error }, "Erreur lors de la récupération de la miniature de la page:");
-
+
// Chercher un status HTTP 404 dans la chaîne d'erreurs
const httpStatus = findHttpStatus(error);
-
+
if (httpStatus === 404) {
const { bookId, pageNumber: pageNumberParam } = await params;
const pageNumber: number = parseInt(pageNumberParam);
@@ -54,7 +54,7 @@ export async function GET(
{ status: 404 }
);
}
-
+
if (error instanceof AppError) {
return NextResponse.json(
{
diff --git a/src/app/api/komga/images/books/[bookId]/thumbnail/route.ts b/src/app/api/komga/images/books/[bookId]/thumbnail/route.ts
index 76d03b8..859540b 100644
--- a/src/app/api/komga/images/books/[bookId]/thumbnail/route.ts
+++ b/src/app/api/komga/images/books/[bookId]/thumbnail/route.ts
@@ -18,10 +18,10 @@ export async function GET(
return response;
} catch (error) {
logger.error({ err: error }, "Erreur lors de la récupération de la miniature du livre:");
-
+
// Chercher un status HTTP 404 dans la chaîne d'erreurs
const httpStatus = findHttpStatus(error);
-
+
if (httpStatus === 404) {
const bookId: string = (await params).bookId;
// eslint-disable-next-line no-console
@@ -37,7 +37,7 @@ export async function GET(
{ status: 404 }
);
}
-
+
if (error instanceof AppError) {
return NextResponse.json(
{
diff --git a/src/app/api/komga/images/series/[seriesId]/first-page/route.ts b/src/app/api/komga/images/series/[seriesId]/first-page/route.ts
index 31b0429..574cfd9 100644
--- a/src/app/api/komga/images/series/[seriesId]/first-page/route.ts
+++ b/src/app/api/komga/images/series/[seriesId]/first-page/route.ts
@@ -20,10 +20,10 @@ export async function GET(
return response;
} catch (error) {
logger.error({ err: error }, "Erreur lors de la récupération de la couverture de la série:");
-
+
// Chercher un status HTTP 404 dans la chaîne d'erreurs
const httpStatus = findHttpStatus(error);
-
+
if (httpStatus === 404) {
const seriesId: string = (await params).seriesId;
// eslint-disable-next-line no-console
@@ -39,7 +39,7 @@ export async function GET(
{ status: 404 }
);
}
-
+
if (error instanceof AppError) {
return NextResponse.json(
{
diff --git a/src/app/api/komga/images/series/[seriesId]/thumbnail/route.ts b/src/app/api/komga/images/series/[seriesId]/thumbnail/route.ts
index 102994c..f04ef88 100644
--- a/src/app/api/komga/images/series/[seriesId]/thumbnail/route.ts
+++ b/src/app/api/komga/images/series/[seriesId]/thumbnail/route.ts
@@ -17,10 +17,10 @@ export async function GET(
return response;
} catch (error) {
logger.error({ err: error }, "Erreur lors de la récupération de la miniature de la série");
-
+
// Chercher un status HTTP 404 dans la chaîne d'erreurs
const httpStatus = findHttpStatus(error);
-
+
if (httpStatus === 404) {
const seriesId: string = (await params).seriesId;
logger.info(`📷 Image not found for series: ${seriesId}`);
@@ -35,7 +35,7 @@ export async function GET(
{ status: 404 }
);
}
-
+
if (error instanceof AppError) {
return NextResponse.json(
{
diff --git a/src/app/api/komga/libraries/[libraryId]/scan/route.ts b/src/app/api/komga/libraries/[libraryId]/scan/route.ts
index 54ddd80..b5bef3a 100644
--- a/src/app/api/komga/libraries/[libraryId]/scan/route.ts
+++ b/src/app/api/komga/libraries/[libraryId]/scan/route.ts
@@ -12,7 +12,7 @@ export async function POST(
) {
try {
const libraryId: string = (await params).libraryId;
-
+
// Scan library with deep=false
await LibraryService.scanLibrary(libraryId, false);
@@ -43,4 +43,3 @@ export async function POST(
);
}
}
-
diff --git a/src/app/api/komga/libraries/[libraryId]/series/route.ts b/src/app/api/komga/libraries/[libraryId]/series/route.ts
index 6704082..d8edad4 100644
--- a/src/app/api/komga/libraries/[libraryId]/series/route.ts
+++ b/src/app/api/komga/libraries/[libraryId]/series/route.ts
@@ -16,7 +16,7 @@ export async function GET(
try {
const libraryId: string = (await params).libraryId;
const searchParams = request.nextUrl.searchParams;
-
+
const page = parseInt(searchParams.get("page") || "0");
const size = parseInt(searchParams.get("size") || String(DEFAULT_PAGE_SIZE));
const unreadOnly = searchParams.get("unread") === "true";
@@ -24,15 +24,15 @@ export async function GET(
const [series, library] = await Promise.all([
LibraryService.getLibrarySeries(libraryId, page, size, unreadOnly, search),
- LibraryService.getLibrary(libraryId)
+ LibraryService.getLibrary(libraryId),
]);
return NextResponse.json(
{ series, library },
{
headers: {
- 'Cache-Control': 'public, s-maxage=60, stale-while-revalidate=120'
- }
+ "Cache-Control": "public, s-maxage=60, stale-while-revalidate=120",
+ },
}
);
} catch (error) {
@@ -68,7 +68,7 @@ export async function DELETE(
) {
try {
const libraryId: string = (await params).libraryId;
-
+
await LibraryService.invalidateLibrarySeriesCache(libraryId);
return NextResponse.json({ success: true });
@@ -98,4 +98,3 @@ export async function DELETE(
);
}
}
-
diff --git a/src/app/api/komga/random-book/route.ts b/src/app/api/komga/random-book/route.ts
index 65a5600..50a1c44 100644
--- a/src/app/api/komga/random-book/route.ts
+++ b/src/app/api/komga/random-book/route.ts
@@ -51,4 +51,3 @@ export async function GET(request: NextRequest) {
);
}
}
-
diff --git a/src/app/api/komga/series/[seriesId]/books/route.ts b/src/app/api/komga/series/[seriesId]/books/route.ts
index f694a4b..4a691b5 100644
--- a/src/app/api/komga/series/[seriesId]/books/route.ts
+++ b/src/app/api/komga/series/[seriesId]/books/route.ts
@@ -16,22 +16,22 @@ export async function GET(
try {
const seriesId: string = (await params).seriesId;
const searchParams = request.nextUrl.searchParams;
-
+
const page = parseInt(searchParams.get("page") || "0");
const size = parseInt(searchParams.get("size") || String(DEFAULT_PAGE_SIZE));
const unreadOnly = searchParams.get("unread") === "true";
const [books, series] = await Promise.all([
SeriesService.getSeriesBooks(seriesId, page, size, unreadOnly),
- SeriesService.getSeries(seriesId)
+ SeriesService.getSeries(seriesId),
]);
return NextResponse.json(
{ books, series },
{
headers: {
- 'Cache-Control': 'public, s-maxage=60, stale-while-revalidate=120'
- }
+ "Cache-Control": "public, s-maxage=60, stale-while-revalidate=120",
+ },
}
);
} catch (error) {
@@ -67,10 +67,10 @@ export async function DELETE(
) {
try {
const seriesId: string = (await params).seriesId;
-
+
await Promise.all([
SeriesService.invalidateSeriesBooksCache(seriesId),
- SeriesService.invalidateSeriesCache(seriesId)
+ SeriesService.invalidateSeriesCache(seriesId),
]);
return NextResponse.json({ success: true });
@@ -100,4 +100,3 @@ export async function DELETE(
);
}
}
-
diff --git a/src/app/api/komga/series/[seriesId]/route.ts b/src/app/api/komga/series/[seriesId]/route.ts
index 9da49a1..4211f58 100644
--- a/src/app/api/komga/series/[seriesId]/route.ts
+++ b/src/app/api/komga/series/[seriesId]/route.ts
@@ -18,8 +18,8 @@ export async function GET(
const series: KomgaSeries = await SeriesService.getSeries(seriesId);
return NextResponse.json(series, {
headers: {
- 'Cache-Control': 'public, s-maxage=60, stale-while-revalidate=120'
- }
+ "Cache-Control": "public, s-maxage=60, stale-while-revalidate=120",
+ },
});
} catch (error) {
logger.error({ err: error }, "API Series - Erreur:");
diff --git a/src/app/api/preferences/route.ts b/src/app/api/preferences/route.ts
index 9586f21..f217f2f 100644
--- a/src/app/api/preferences/route.ts
+++ b/src/app/api/preferences/route.ts
@@ -1,4 +1,4 @@
-import type { NextRequest} from "next/server";
+import type { NextRequest } from "next/server";
import { NextResponse } from "next/server";
import { PreferencesService } from "@/lib/services/preferences.service";
import { ERROR_CODES } from "@/constants/errorCodes";
@@ -41,9 +41,8 @@ export async function GET() {
export async function PUT(request: NextRequest) {
try {
const preferences: UserPreferences = await request.json();
- const updatedPreferences: UserPreferences = await PreferencesService.updatePreferences(
- preferences
- );
+ const updatedPreferences: UserPreferences =
+ await PreferencesService.updatePreferences(preferences);
return NextResponse.json(updatedPreferences);
} catch (error) {
logger.error({ err: error }, "Erreur lors de la mise à jour des préférences:");
diff --git a/src/app/api/user/password/route.ts b/src/app/api/user/password/route.ts
index 7330cc7..74e3214 100644
--- a/src/app/api/user/password/route.ts
+++ b/src/app/api/user/password/route.ts
@@ -10,17 +10,15 @@ export async function PUT(request: NextRequest) {
const { currentPassword, newPassword } = body;
if (!currentPassword || !newPassword) {
- return NextResponse.json(
- { error: "Mots de passe manquants" },
- { status: 400 }
- );
+ return NextResponse.json({ error: "Mots de passe manquants" }, { status: 400 });
}
// Vérifier que le nouveau mot de passe est fort
if (!AuthServerService.isPasswordStrong(newPassword)) {
return NextResponse.json(
- {
- error: "Le nouveau mot de passe doit contenir au moins 8 caractères, une majuscule et un chiffre"
+ {
+ error:
+ "Le nouveau mot de passe doit contenir au moins 8 caractères, une majuscule et un chiffre",
},
{ status: 400 }
);
@@ -35,9 +33,13 @@ export async function PUT(request: NextRequest) {
if (error instanceof AppError) {
return NextResponse.json(
{ error: error.message, code: error.code },
- {
- status: error.code === "AUTH_INVALID_PASSWORD" ? 400 :
- error.code === "AUTH_UNAUTHENTICATED" ? 401 : 500
+ {
+ status:
+ error.code === "AUTH_INVALID_PASSWORD"
+ ? 400
+ : error.code === "AUTH_UNAUTHENTICATED"
+ ? 401
+ : 500,
}
);
}
diff --git a/src/app/books/[bookId]/layout.tsx b/src/app/books/[bookId]/layout.tsx
index 3b85f52..0774f8f 100644
--- a/src/app/books/[bookId]/layout.tsx
+++ b/src/app/books/[bookId]/layout.tsx
@@ -1,8 +1,3 @@
-export default function BookReaderLayout({
- children,
-}: {
- children: React.ReactNode;
-}) {
+export default function BookReaderLayout({ children }: { children: React.ReactNode }) {
return <>{children}>;
}
-
diff --git a/src/app/books/[bookId]/page.tsx b/src/app/books/[bookId]/page.tsx
index 46d9202..a427747 100644
--- a/src/app/books/[bookId]/page.tsx
+++ b/src/app/books/[bookId]/page.tsx
@@ -4,7 +4,7 @@ import { BookSkeleton } from "@/components/skeletons/BookSkeleton";
export default async function BookPage({ params }: { params: Promise<{ bookId: string }> }) {
const { bookId } = await params;
-
+
return (
}>
diff --git a/src/app/downloads/page.tsx b/src/app/downloads/page.tsx
index c1e98cf..99e31a3 100644
--- a/src/app/downloads/page.tsx
+++ b/src/app/downloads/page.tsx
@@ -1,6 +1,6 @@
import { DownloadManager } from "@/components/downloads/DownloadManager";
-export const dynamic = 'force-dynamic';
+export const dynamic = "force-dynamic";
export default function DownloadsPage() {
return (
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index 6ff8c15..fbac5d2 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -12,7 +12,12 @@ import { defaultPreferences } from "@/types/preferences";
import type { UserPreferences } from "@/types/preferences";
import logger from "@/lib/logger";
-const inter = Inter({ subsets: ["latin"], display: "swap", adjustFontFallback: false, preload: false });
+const inter = Inter({
+ subsets: ["latin"],
+ display: "swap",
+ adjustFontFallback: false,
+ preload: false,
+});
export const metadata: Metadata = {
title: {
@@ -90,10 +95,7 @@ export default async function RootLayout({ children }: { children: React.ReactNo
return (
-
+
@@ -145,16 +147,15 @@ export default async function RootLayout({ children }: { children: React.ReactNo
/>
-
+
{children}
diff --git a/src/app/libraries/[libraryId]/ClientLibraryPage.tsx b/src/app/libraries/[libraryId]/ClientLibraryPage.tsx
index d7843bf..c0c59f3 100644
--- a/src/app/libraries/[libraryId]/ClientLibraryPage.tsx
+++ b/src/app/libraries/[libraryId]/ClientLibraryPage.tsx
@@ -47,22 +47,22 @@ export function ClientLibraryPage({
const fetchData = async () => {
setLoading(true);
setError(null);
-
+
try {
const params = new URLSearchParams({
page: String(currentPage - 1),
size: String(effectivePageSize),
unread: String(unreadOnly),
});
-
+
if (search) {
params.append("search", search);
}
const response = await fetch(`/api/komga/libraries/${libraryId}/series?${params}`, {
- cache: 'default' // Utilise le cache HTTP du navigateur
+ cache: "default", // Utilise le cache HTTP du navigateur
});
-
+
if (!response.ok) {
const errorData = await response.json();
throw new Error(errorData.error?.code || "SERIES_FETCH_ERROR");
@@ -86,28 +86,28 @@ export function ClientLibraryPage({
try {
// Invalidate cache via API
const cacheResponse = await fetch(`/api/komga/libraries/${libraryId}/series`, {
- method: 'DELETE',
+ method: "DELETE",
});
if (!cacheResponse.ok) {
throw new Error("Error invalidating cache");
}
-
+
// Recharger les données
const params = new URLSearchParams({
page: String(currentPage - 1),
size: String(effectivePageSize),
unread: String(unreadOnly),
});
-
+
if (search) {
params.append("search", search);
}
const response = await fetch(`/api/komga/libraries/${libraryId}/series?${params}`, {
- cache: 'reload' // Force un nouveau fetch après invalidation
+ cache: "reload", // Force un nouveau fetch après invalidation
});
-
+
if (!response.ok) {
throw new Error("Error refreshing library");
}
@@ -115,7 +115,7 @@ export function ClientLibraryPage({
const data = await response.json();
setLibrary(data.library);
setSeries(data.series);
-
+
return { success: true };
} catch (error) {
logger.error({ err: error }, "Error during refresh:");
@@ -133,15 +133,15 @@ export function ClientLibraryPage({
size: String(effectivePageSize),
unread: String(unreadOnly),
});
-
+
if (search) {
params.append("search", search);
}
const response = await fetch(`/api/komga/libraries/${libraryId}/series?${params}`, {
- cache: 'reload' // Force un nouveau fetch lors du retry
+ cache: "reload", // Force un nouveau fetch lors du retry
});
-
+
if (!response.ok) {
const errorData = await response.json();
throw new Error(errorData.error?.code || "SERIES_FETCH_ERROR");
diff --git a/src/app/series/[seriesId]/ClientSeriesPage.tsx b/src/app/series/[seriesId]/ClientSeriesPage.tsx
index f2697b2..1678db1 100644
--- a/src/app/series/[seriesId]/ClientSeriesPage.tsx
+++ b/src/app/series/[seriesId]/ClientSeriesPage.tsx
@@ -50,7 +50,7 @@ export function ClientSeriesPage({
});
const response = await fetch(`/api/komga/series/${seriesId}/books?${params}`, {
- cache: 'default' // Utilise le cache HTTP du navigateur
+ cache: "default", // Utilise le cache HTTP du navigateur
});
if (!response.ok) {
@@ -76,7 +76,7 @@ export function ClientSeriesPage({
try {
// Invalidate cache via API
const cacheResponse = await fetch(`/api/komga/series/${seriesId}/books`, {
- method: 'DELETE',
+ method: "DELETE",
});
if (!cacheResponse.ok) {
@@ -91,7 +91,7 @@ export function ClientSeriesPage({
});
const response = await fetch(`/api/komga/series/${seriesId}/books?${params}`, {
- cache: 'reload' // Force un nouveau fetch après invalidation
+ cache: "reload", // Force un nouveau fetch après invalidation
});
if (!response.ok) {
@@ -121,7 +121,7 @@ export function ClientSeriesPage({
});
const response = await fetch(`/api/komga/series/${seriesId}/books?${params}`, {
- cache: 'reload' // Force un nouveau fetch lors du retry
+ cache: "reload", // Force un nouveau fetch lors du retry
});
if (!response.ok) {
@@ -204,4 +204,3 @@ export function ClientSeriesPage({
>
);
}
-
diff --git a/src/app/series/[seriesId]/loading.tsx b/src/app/series/[seriesId]/loading.tsx
index ad76577..70d8257 100644
--- a/src/app/series/[seriesId]/loading.tsx
+++ b/src/app/series/[seriesId]/loading.tsx
@@ -53,4 +53,3 @@ export default function SeriesLoading() {
);
}
-
diff --git a/src/app/settings/page.tsx b/src/app/settings/page.tsx
index cf4e110..6a76475 100644
--- a/src/app/settings/page.tsx
+++ b/src/app/settings/page.tsx
@@ -4,7 +4,7 @@ import type { Metadata } from "next";
import type { KomgaConfig, TTLConfig } from "@/types/komga";
import logger from "@/lib/logger";
-export const dynamic = 'force-dynamic';
+export const dynamic = "force-dynamic";
export const metadata: Metadata = {
title: "Préférences",
diff --git a/src/components/account/ChangePasswordForm.tsx b/src/components/account/ChangePasswordForm.tsx
index 84cf3c1..dcffc50 100644
--- a/src/components/account/ChangePasswordForm.tsx
+++ b/src/components/account/ChangePasswordForm.tsx
@@ -75,7 +75,8 @@ export function ChangePasswordForm() {
Changer le mot de passe
- Assurez-vous d'utiliser un mot de passe fort (8 caractères minimum, une majuscule et un chiffre)
+ Assurez-vous d'utiliser un mot de passe fort (8 caractères minimum, une majuscule et
+ un chiffre)
@@ -136,4 +137,3 @@ export function ChangePasswordForm() {
);
}
-
diff --git a/src/components/account/UserProfileCard.tsx b/src/components/account/UserProfileCard.tsx
index f0a240b..461737e 100644
--- a/src/components/account/UserProfileCard.tsx
+++ b/src/components/account/UserProfileCard.tsx
@@ -6,7 +6,9 @@ import { Mail, Calendar, Shield, Heart } from "lucide-react";
import type { UserProfile } from "@/lib/services/user.service";
interface UserProfileCardProps {
- profile: UserProfile & { stats: { favoritesCount: number; hasPreferences: boolean; hasKomgaConfig: boolean } };
+ profile: UserProfile & {
+ stats: { favoritesCount: number; hasPreferences: boolean; hasKomgaConfig: boolean };
+ };
}
export function UserProfileCard({ profile }: UserProfileCardProps) {
@@ -65,12 +67,10 @@ export function UserProfileCard({ profile }: UserProfileCardProps) {
- Dernière mise à jour:{" "}
- {new Date(profile.updatedAt).toLocaleDateString("fr-FR")}
+ Dernière mise à jour: {new Date(profile.updatedAt).toLocaleDateString("fr-FR")}
);
}
-
diff --git a/src/components/admin/AdminContent.tsx b/src/components/admin/AdminContent.tsx
index e55c3c0..cfcaf26 100644
--- a/src/components/admin/AdminContent.tsx
+++ b/src/components/admin/AdminContent.tsx
@@ -36,10 +36,7 @@ export function AdminContent({ initialUsers, initialStats }: AdminContentProps)
throw new Error("Erreur lors du rafraîchissement");
}
- const [newUsers, newStats] = await Promise.all([
- usersResponse.json(),
- statsResponse.json(),
- ]);
+ const [newUsers, newStats] = await Promise.all([usersResponse.json(), statsResponse.json()]);
setUsers(newUsers);
setStats(newStats);
@@ -65,9 +62,7 @@ export function AdminContent({ initialUsers, initialStats }: AdminContentProps)
Administration
-
- Gérez les utilisateurs de la plateforme
-
+
Gérez les utilisateurs de la plateforme
@@ -85,4 +80,3 @@ export function AdminContent({ initialUsers, initialStats }: AdminContentProps)
);
}
-
diff --git a/src/components/admin/DeleteUserDialog.tsx b/src/components/admin/DeleteUserDialog.tsx
index 9be1c40..64d465a 100644
--- a/src/components/admin/DeleteUserDialog.tsx
+++ b/src/components/admin/DeleteUserDialog.tsx
@@ -21,12 +21,7 @@ interface DeleteUserDialogProps {
onSuccess: () => void;
}
-export function DeleteUserDialog({
- user,
- open,
- onOpenChange,
- onSuccess,
-}: DeleteUserDialogProps) {
+export function DeleteUserDialog({ user, open, onOpenChange, onSuccess }: DeleteUserDialogProps) {
const [isLoading, setIsLoading] = useState(false);
const { toast } = useToast();
@@ -89,4 +84,3 @@ export function DeleteUserDialog({
);
}
-
diff --git a/src/components/admin/EditUserDialog.tsx b/src/components/admin/EditUserDialog.tsx
index b1b5cd4..0b2b619 100644
--- a/src/components/admin/EditUserDialog.tsx
+++ b/src/components/admin/EditUserDialog.tsx
@@ -27,12 +27,7 @@ const AVAILABLE_ROLES = [
{ value: "ROLE_ADMIN", label: "Admin" },
];
-export function EditUserDialog({
- user,
- open,
- onOpenChange,
- onSuccess,
-}: EditUserDialogProps) {
+export function EditUserDialog({ user, open, onOpenChange, onSuccess }: EditUserDialogProps) {
const [selectedRoles, setSelectedRoles] = useState(user.roles);
const [isLoading, setIsLoading] = useState(false);
const { toast } = useToast();
@@ -125,4 +120,3 @@ export function EditUserDialog({
);
}
-
diff --git a/src/components/admin/ResetPasswordDialog.tsx b/src/components/admin/ResetPasswordDialog.tsx
index 586954e..622899a 100644
--- a/src/components/admin/ResetPasswordDialog.tsx
+++ b/src/components/admin/ResetPasswordDialog.tsx
@@ -152,11 +152,7 @@ export function ResetPasswordDialog({
- handleOpenChange(false)}
- disabled={isLoading}
- >
+ handleOpenChange(false)} disabled={isLoading}>
Annuler
@@ -167,4 +163,3 @@ export function ResetPasswordDialog({
);
}
-
diff --git a/src/components/admin/StatsCards.tsx b/src/components/admin/StatsCards.tsx
index 278f134..5eb8a84 100644
--- a/src/components/admin/StatsCards.tsx
+++ b/src/components/admin/StatsCards.tsx
@@ -60,4 +60,3 @@ export function StatsCards({ stats }: StatsCardsProps) {
);
}
-
diff --git a/src/components/admin/UsersTable.tsx b/src/components/admin/UsersTable.tsx
index de0b70a..59aa448 100644
--- a/src/components/admin/UsersTable.tsx
+++ b/src/components/admin/UsersTable.tsx
@@ -57,10 +57,7 @@ export function UsersTable({ users, onUserUpdated }: UsersTableProps) {
{user.roles.map((role) => (
-
+
{role.replace("ROLE_", "")}
))}
@@ -89,9 +86,7 @@ export function UsersTable({ users, onUserUpdated }: UsersTableProps) {
)}
{user._count?.favorites || 0}
-
- {new Date(user.createdAt).toLocaleDateString("fr-FR")}
-
+ {new Date(user.createdAt).toLocaleDateString("fr-FR")}
);
}
-
diff --git a/src/components/auth/RegisterForm.tsx b/src/components/auth/RegisterForm.tsx
index 0c3e1e3..c2489d2 100644
--- a/src/components/auth/RegisterForm.tsx
+++ b/src/components/auth/RegisterForm.tsx
@@ -52,11 +52,13 @@ export function RegisterForm({ from: _from }: RegisterFormProps) {
if (!response.ok) {
const data = await response.json();
- setError(data.error || {
- code: "AUTH_REGISTRATION_FAILED",
- name: "Registration failed",
- message: "Erreur lors de l'inscription",
- });
+ setError(
+ data.error || {
+ code: "AUTH_REGISTRATION_FAILED",
+ name: "Registration failed",
+ message: "Erreur lors de l'inscription",
+ }
+ );
return;
}
@@ -96,13 +98,7 @@ export function RegisterForm({ from: _from }: RegisterFormProps) {
{t("login.form.password")}
-
+
{t("login.form.confirmPassword")}
diff --git a/src/components/common/PullToRefreshIndicator.tsx b/src/components/common/PullToRefreshIndicator.tsx
index 5a5bd2d..6a5493a 100644
--- a/src/components/common/PullToRefreshIndicator.tsx
+++ b/src/components/common/PullToRefreshIndicator.tsx
@@ -28,7 +28,9 @@ export function PullToRefreshIndicator({
className={cn(
"fixed top-0 left-1/2 transform -translate-x-1/2 z-50 transition-all",
isHiding ? "duration-300 ease-out" : "duration-200",
- (isPulling || isRefreshing) && !isHiding ? "translate-y-0 opacity-100" : "-translate-y-full opacity-0"
+ (isPulling || isRefreshing) && !isHiding
+ ? "translate-y-0 opacity-100"
+ : "-translate-y-full opacity-0"
)}
style={{
transform: `translate(-50%, ${(isPulling || isRefreshing) && !isHiding ? (isRefreshing ? 60 : progress * 60) : -100}px)`,
@@ -40,27 +42,26 @@ export function PullToRefreshIndicator({
-
+
{/* Icône centrée */}
-
+
{/* Message */}
- {isRefreshing ? "Actualisation..." : canRefresh ? "Relâchez pour actualiser" : "Tirez pour actualiser"}
+ {isRefreshing
+ ? "Actualisation..."
+ : canRefresh
+ ? "Relâchez pour actualiser"
+ : "Tirez pour actualiser"}
);
diff --git a/src/components/common/ViewModeButton.tsx b/src/components/common/ViewModeButton.tsx
index 81ce0f9..e568832 100644
--- a/src/components/common/ViewModeButton.tsx
+++ b/src/components/common/ViewModeButton.tsx
@@ -33,4 +33,3 @@ export function ViewModeButton({ onToggle }: ViewModeButtonProps) {
);
}
-
diff --git a/src/components/downloads/DownloadManager.tsx b/src/components/downloads/DownloadManager.tsx
index 15d2b01..dcabad9 100644
--- a/src/components/downloads/DownloadManager.tsx
+++ b/src/components/downloads/DownloadManager.tsx
@@ -201,25 +201,8 @@ export function DownloadManager() {
)}
-
- {downloadedBooks.map(({ book, status }) => (
- handleDeleteBook(book)}
- onRetry={() => handleRetryDownload(book)}
- />
- ))}
- {downloadedBooks.length === 0 && (
- {t("downloads.empty.all")}
- )}
-
-
-
- {downloadedBooks
- .filter((b) => b.status.status === "downloading")
- .map(({ book, status }) => (
+
+ {downloadedBooks.map(({ book, status }) => (
handleRetryDownload(book)}
/>
))}
- {downloadedBooks.filter((b) => b.status.status === "downloading").length === 0 && (
-
- {t("downloads.empty.downloading")}
-
- )}
-
+ {downloadedBooks.length === 0 && (
+ {t("downloads.empty.all")}
+ )}
+
-
- {downloadedBooks
- .filter((b) => b.status.status === "available")
- .map(({ book, status }) => (
- handleDeleteBook(book)}
- onRetry={() => handleRetryDownload(book)}
- />
- ))}
- {downloadedBooks.filter((b) => b.status.status === "available").length === 0 && (
-
- {t("downloads.empty.available")}
-
- )}
-
+
+ {downloadedBooks
+ .filter((b) => b.status.status === "downloading")
+ .map(({ book, status }) => (
+ handleDeleteBook(book)}
+ onRetry={() => handleRetryDownload(book)}
+ />
+ ))}
+ {downloadedBooks.filter((b) => b.status.status === "downloading").length === 0 && (
+
+ {t("downloads.empty.downloading")}
+
+ )}
+
-
- {downloadedBooks
- .filter((b) => b.status.status === "error")
- .map(({ book, status }) => (
- handleDeleteBook(book)}
- onRetry={() => handleRetryDownload(book)}
- />
- ))}
- {downloadedBooks.filter((b) => b.status.status === "error").length === 0 && (
- {t("downloads.empty.error")}
- )}
-
-
+
+ {downloadedBooks
+ .filter((b) => b.status.status === "available")
+ .map(({ book, status }) => (
+ handleDeleteBook(book)}
+ onRetry={() => handleRetryDownload(book)}
+ />
+ ))}
+ {downloadedBooks.filter((b) => b.status.status === "available").length === 0 && (
+
+ {t("downloads.empty.available")}
+
+ )}
+
+
+
+ {downloadedBooks
+ .filter((b) => b.status.status === "error")
+ .map(({ book, status }) => (
+ handleDeleteBook(book)}
+ onRetry={() => handleRetryDownload(book)}
+ />
+ ))}
+ {downloadedBooks.filter((b) => b.status.status === "error").length === 0 && (
+ {t("downloads.empty.error")}
+ )}
+
+
);
diff --git a/src/components/home/ClientHomePage.tsx b/src/components/home/ClientHomePage.tsx
index 45a3697..a69962b 100644
--- a/src/components/home/ClientHomePage.tsx
+++ b/src/components/home/ClientHomePage.tsx
@@ -23,19 +23,19 @@ export function ClientHomePage() {
try {
const response = await fetch("/api/komga/home", {
- cache: 'default' // Utilise le cache HTTP du navigateur
+ cache: "default", // Utilise le cache HTTP du navigateur
});
if (!response.ok) {
const errorData = await response.json();
const errorCode = errorData.error?.code || ERROR_CODES.KOMGA.SERVER_UNREACHABLE;
-
+
// Si la config Komga est manquante, rediriger vers les settings
if (errorCode === ERROR_CODES.KOMGA.MISSING_CONFIG) {
router.push("/settings");
return;
}
-
+
throw new Error(errorCode);
}
@@ -67,7 +67,7 @@ export function ClientHomePage() {
// Récupérer les nouvelles données
const response = await fetch("/api/komga/home", {
- cache: 'reload' // Force un nouveau fetch après invalidation
+ cache: "reload", // Force un nouveau fetch après invalidation
});
if (!response.ok) {
@@ -128,4 +128,3 @@ export function ClientHomePage() {
>
);
}
-
diff --git a/src/components/home/HomeContent.tsx b/src/components/home/HomeContent.tsx
index fd295a0..e112c57 100644
--- a/src/components/home/HomeContent.tsx
+++ b/src/components/home/HomeContent.tsx
@@ -20,10 +20,10 @@ export function HomeContent({ data, refreshHome }: HomeContentProps) {
// Vérifier si la HeroSection a déjà été affichée
useEffect(() => {
- const heroShown = localStorage.getItem('heroSectionShown');
+ const heroShown = localStorage.getItem("heroSectionShown");
if (!heroShown && data.ongoing && data.ongoing.length > 0) {
setShowHero(true);
- localStorage.setItem('heroSectionShown', 'true');
+ localStorage.setItem("heroSectionShown", "true");
}
}, [data.ongoing]);
diff --git a/src/components/home/MediaRow.tsx b/src/components/home/MediaRow.tsx
index c4e325b..1fea6a5 100644
--- a/src/components/home/MediaRow.tsx
+++ b/src/components/home/MediaRow.tsx
@@ -79,13 +79,11 @@ function MediaCard({ item, onClick }: MediaCardProps) {
const { t } = useTranslate();
const isSeries = "booksCount" in item;
const { isAccessible } = useBookOfflineStatus(isSeries ? "" : item.id);
-
+
const title = isSeries
? item.metadata.title
: item.metadata.title ||
- (item.metadata.number
- ? t("navigation.volume", { number: item.metadata.number })
- : "");
+ (item.metadata.number ? t("navigation.volume", { number: item.metadata.number }) : "");
const handleClick = () => {
// Pour les séries, toujours autoriser le clic
@@ -100,7 +98,7 @@ function MediaCard({ item, onClick }: MediaCardProps) {
onClick={handleClick}
className={cn(
"flex-shrink-0 w-[200px] relative flex flex-col hover:bg-accent hover:text-accent-foreground transition-colors overflow-hidden",
- (!isSeries && !isAccessible) ? "cursor-not-allowed" : "cursor-pointer"
+ !isSeries && !isAccessible ? "cursor-not-allowed" : "cursor-pointer"
)}
>
diff --git a/src/components/layout/ClientLayout.tsx b/src/components/layout/ClientLayout.tsx
index 2688ad1..1471946 100644
--- a/src/components/layout/ClientLayout.tsx
+++ b/src/components/layout/ClientLayout.tsx
@@ -24,7 +24,12 @@ interface ClientLayoutProps {
userIsAdmin?: boolean;
}
-export default function ClientLayout({ children, initialLibraries = [], initialFavorites = [], userIsAdmin = false }: ClientLayoutProps) {
+export default function ClientLayout({
+ children,
+ initialLibraries = [],
+ initialFavorites = [],
+ userIsAdmin = false,
+}: ClientLayoutProps) {
const [isSidebarOpen, setIsSidebarOpen] = useState(false);
const [randomBookId, setRandomBookId] = useState
(null);
const pathname = usePathname();
@@ -67,14 +72,14 @@ export default function ClientLayout({ children, initialLibraries = [], initialF
const backgroundStyle = useMemo(() => {
const bg = preferences.background;
const blur = bg.blur || 0;
-
+
if (bg.type === "gradient" && bg.gradient) {
return {
backgroundImage: bg.gradient,
filter: blur > 0 ? `blur(${blur}px)` : undefined,
};
}
-
+
if (bg.type === "image" && bg.imageUrl) {
return {
backgroundImage: `url(${bg.imageUrl})`,
@@ -94,7 +99,7 @@ export default function ClientLayout({ children, initialLibraries = [], initialF
filter: blur > 0 ? `blur(${blur}px)` : undefined,
};
}
-
+
return {};
}, [preferences.background, randomBookId]);
@@ -137,10 +142,10 @@ export default function ClientLayout({ children, initialLibraries = [], initialF
}, []);
// Ne pas afficher le header et la sidebar sur les routes publiques et le reader
- const isPublicRoute = publicRoutes.includes(pathname) || pathname.startsWith('/books/');
+ const isPublicRoute = publicRoutes.includes(pathname) || pathname.startsWith("/books/");
- const hasCustomBackground =
- preferences.background.type === "gradient" ||
+ const hasCustomBackground =
+ preferences.background.type === "gradient" ||
preferences.background.type === "image" ||
(preferences.background.type === "komga-random" && randomBookId);
const contentOpacity = (preferences.background.opacity || 100) / 100;
@@ -149,28 +154,27 @@ export default function ClientLayout({ children, initialLibraries = [], initialF
{/* Background fixe pour les images et gradients */}
- {hasCustomBackground && (
-
- )}
-
}
+
{!isPublicRoute && (
-
)}
{!isPublicRoute && (
-
diff --git a/src/components/layout/Header.tsx b/src/components/layout/Header.tsx
index 81c972f..819633b 100644
--- a/src/components/layout/Header.tsx
+++ b/src/components/layout/Header.tsx
@@ -11,7 +11,11 @@ interface HeaderProps {
showRefreshBackground?: boolean;
}
-export function Header({ onToggleSidebar, onRefreshBackground, showRefreshBackground = false }: HeaderProps) {
+export function Header({
+ onToggleSidebar,
+ onRefreshBackground,
+ showRefreshBackground = false,
+}: HeaderProps) {
const { theme, setTheme } = useTheme();
const { t } = useTranslation();
const [isRefreshing, setIsRefreshing] = useState(false);
@@ -56,7 +60,9 @@ export function Header({ onToggleSidebar, onRefreshBackground, showRefreshBackgr
className="px-2 py-1.5 hover:bg-accent hover:text-accent-foreground rounded-md disabled:opacity-50 disabled:cursor-not-allowed"
aria-label="Rafraîchir l'image de fond"
>
-
+
Rafraîchir l'image de fond
)}
diff --git a/src/components/layout/Sidebar.tsx b/src/components/layout/Sidebar.tsx
index 1f96d9e..e1f6e7a 100644
--- a/src/components/layout/Sidebar.tsx
+++ b/src/components/layout/Sidebar.tsx
@@ -1,6 +1,16 @@
"use client";
-import { Home, Library, Settings, LogOut, RefreshCw, Star, Download, User, Shield } from "lucide-react";
+import {
+ Home,
+ Library,
+ Settings,
+ LogOut,
+ RefreshCw,
+ Star,
+ Download,
+ User,
+ Shield,
+} from "lucide-react";
import { usePathname, useRouter } from "next/navigation";
import { cn } from "@/lib/utils";
import { signOut } from "next-auth/react";
@@ -24,7 +34,13 @@ interface SidebarProps {
userIsAdmin?: boolean;
}
-export function Sidebar({ isOpen, onClose, initialLibraries, initialFavorites, userIsAdmin = false }: SidebarProps) {
+export function Sidebar({
+ isOpen,
+ onClose,
+ initialLibraries,
+ initialFavorites,
+ userIsAdmin = false,
+}: SidebarProps) {
const { t } = useTranslate();
const pathname = usePathname();
const router = useRouter();
diff --git a/src/components/library/LibraryHeader.tsx b/src/components/library/LibraryHeader.tsx
index 0e6e3e5..7b18463 100644
--- a/src/components/library/LibraryHeader.tsx
+++ b/src/components/library/LibraryHeader.tsx
@@ -16,19 +16,25 @@ interface LibraryHeaderProps {
refreshLibrary: (libraryId: string) => Promise<{ success: boolean; error?: string }>;
}
-export const LibraryHeader = ({ library, seriesCount, series, refreshLibrary }: LibraryHeaderProps) => {
+export const LibraryHeader = ({
+ library,
+ seriesCount,
+ series,
+ refreshLibrary,
+}: LibraryHeaderProps) => {
const { t } = useTranslate();
// Mémoriser la sélection des séries pour éviter les rerenders inutiles
const { randomSeries, backgroundSeries } = useMemo(() => {
// Sélectionner une série aléatoire pour l'image centrale
const random = series.length > 0 ? series[Math.floor(Math.random() * series.length)] : null;
-
+
// Sélectionner une autre série aléatoire pour le fond (différente de celle du centre)
- const background = series.length > 1
- ? series.filter(s => s.id !== random?.id)[Math.floor(Math.random() * (series.length - 1))]
- : random;
-
+ const background =
+ series.length > 1
+ ? series.filter((s) => s.id !== random?.id)[Math.floor(Math.random() * (series.length - 1))]
+ : random;
+
return { randomSeries: random, backgroundSeries: background };
}, [series]);
@@ -76,23 +82,20 @@ export const LibraryHeader = ({ library, seriesCount, series, refreshLibrary }:
{/* Informations */}
{library.name}
-
+
- {seriesCount === 1
+ {seriesCount === 1
? t("library.header.series", { count: seriesCount })
- : t("library.header.series_plural", { count: seriesCount })
- }
+ : t("library.header.series_plural", { count: seriesCount })}
-
+
{library.unavailable && (
-
- {t("library.header.unavailable")}
-
+
{t("library.header.unavailable")}
)}
@@ -100,4 +103,3 @@ export const LibraryHeader = ({ library, seriesCount, series, refreshLibrary }:
);
};
-
diff --git a/src/components/library/PaginatedSeriesGrid.tsx b/src/components/library/PaginatedSeriesGrid.tsx
index 0030c85..5def36a 100644
--- a/src/components/library/PaginatedSeriesGrid.tsx
+++ b/src/components/library/PaginatedSeriesGrid.tsx
@@ -38,31 +38,31 @@ export function PaginatedSeriesGrid({
const searchParams = useSearchParams();
const [showOnlyUnread, setShowOnlyUnread] = useState(initialShowOnlyUnread);
const { isCompact, itemsPerPage: displayItemsPerPage, viewMode } = useDisplayPreferences();
-
+
// Utiliser la taille de page effective (depuis l'URL ou les préférences)
const effectivePageSize = pageSize || displayItemsPerPage;
const { t } = useTranslate();
- const updateUrlParams = useCallback(async (
- updates: Record,
- replace: boolean = false
- ) => {
- const params = new URLSearchParams(searchParams.toString());
+ const updateUrlParams = useCallback(
+ async (updates: Record, replace: boolean = false) => {
+ const params = new URLSearchParams(searchParams.toString());
- Object.entries(updates).forEach(([key, value]) => {
- if (value === null) {
- params.delete(key);
+ Object.entries(updates).forEach(([key, value]) => {
+ if (value === null) {
+ params.delete(key);
+ } else {
+ params.set(key, value);
+ }
+ });
+
+ if (replace) {
+ await router.replace(`${pathname}?${params.toString()}`);
} else {
- params.set(key, value);
+ await router.push(`${pathname}?${params.toString()}`);
}
- });
-
- if (replace) {
- await router.replace(`${pathname}?${params.toString()}`);
- } else {
- await router.push(`${pathname}?${params.toString()}`);
- }
- }, [router, pathname, searchParams]);
+ },
+ [router, pathname, searchParams]
+ );
// Update local state when prop changes
useEffect(() => {
@@ -89,7 +89,6 @@ export function PaginatedSeriesGrid({
});
};
-
const handlePageSizeChange = async (size: number) => {
await updateUrlParams({
page: "1",
diff --git a/src/components/library/ScanButton.tsx b/src/components/library/ScanButton.tsx
index 0f397d6..88b0435 100644
--- a/src/components/library/ScanButton.tsx
+++ b/src/components/library/ScanButton.tsx
@@ -67,8 +67,7 @@ export function ScanButton({ libraryId }: ScanButtonProps) {
toast({
variant: "destructive",
title: t("library.scan.error.title"),
- description:
- error instanceof Error ? error.message : t("library.scan.error.description"),
+ description: error instanceof Error ? error.message : t("library.scan.error.description"),
});
}
};
@@ -86,4 +85,3 @@ export function ScanButton({ libraryId }: ScanButtonProps) {
);
}
-
diff --git a/src/components/library/SeriesList.tsx b/src/components/library/SeriesList.tsx
index 17201aa..ed5c409 100644
--- a/src/components/library/SeriesList.tsx
+++ b/src/components/library/SeriesList.tsx
@@ -60,9 +60,8 @@ function SeriesListItem({ series, isCompact = false }: SeriesListItemProps) {
};
const isCompleted = series.booksCount === series.booksReadCount;
- const progressPercentage = series.booksCount > 0
- ? (series.booksReadCount / series.booksCount) * 100
- : 0;
+ const progressPercentage =
+ series.booksCount > 0 ? (series.booksReadCount / series.booksCount) * 100 : 0;
const statusInfo = getReadingStatusInfo(series, t);
@@ -91,7 +90,12 @@ function SeriesListItem({ series, isCompact = false }: SeriesListItemProps) {
{series.metadata.title}
-
+
{statusInfo.label}
@@ -101,7 +105,7 @@ function SeriesListItem({ series, isCompact = false }: SeriesListItemProps) {
- {series.booksCount === 1
+ {series.booksCount === 1
? t("series.book", { count: 1 })
: t("series.books", { count: series.booksCount })}
@@ -109,9 +113,7 @@ function SeriesListItem({ series, isCompact = false }: SeriesListItemProps) {
{series.booksMetadata?.authors && series.booksMetadata.authors.length > 0 && (
-
- {series.booksMetadata.authors[0].name}
-
+ {series.booksMetadata.authors[0].name}
)}
@@ -146,9 +148,14 @@ function SeriesListItem({ series, isCompact = false }: SeriesListItemProps) {
{series.metadata.title}
-
+
{/* Badge de statut */}
-
+
{statusInfo.label}
@@ -166,7 +173,7 @@ function SeriesListItem({ series, isCompact = false }: SeriesListItemProps) {
- {series.booksCount === 1
+ {series.booksCount === 1
? t("series.book", { count: 1 })
: t("series.books", { count: series.booksCount })}
@@ -177,7 +184,7 @@ function SeriesListItem({ series, isCompact = false }: SeriesListItemProps) {
- {series.booksMetadata.authors.map(a => a.name).join(", ")}
+ {series.booksMetadata.authors.map((a) => a.name).join(", ")}
)}
@@ -246,4 +253,3 @@ export function SeriesList({ series, isCompact = false }: SeriesListProps) {
);
}
-
diff --git a/src/components/reader/ClientBookPage.tsx b/src/components/reader/ClientBookPage.tsx
index 9c73aaf..7e7f734 100644
--- a/src/components/reader/ClientBookPage.tsx
+++ b/src/components/reader/ClientBookPage.tsx
@@ -27,7 +27,7 @@ export function ClientBookPage({ bookId }: ClientBookPageProps) {
setError(null);
const response = await fetch(`/api/komga/books/${bookId}`);
-
+
if (!response.ok) {
const errorData = await response.json();
throw new Error(errorData.error?.code || ERROR_CODES.BOOK.PAGES_FETCH_ERROR);
@@ -74,4 +74,3 @@ export function ClientBookPage({ bookId }: ClientBookPageProps) {
return ;
}
-
diff --git a/src/components/reader/ClientBookWrapper.tsx b/src/components/reader/ClientBookWrapper.tsx
index 499a896..89c38bc 100644
--- a/src/components/reader/ClientBookWrapper.tsx
+++ b/src/components/reader/ClientBookWrapper.tsx
@@ -19,5 +19,7 @@ export function ClientBookWrapper({ book, pages, nextBook }: ClientBookWrapperPr
router.push(`/series/${book.seriesId}`);
};
- return ;
+ return (
+
+ );
}
diff --git a/src/components/reader/PhotoswipeReader.tsx b/src/components/reader/PhotoswipeReader.tsx
index 6f8e82d..01dcc82 100644
--- a/src/components/reader/PhotoswipeReader.tsx
+++ b/src/components/reader/PhotoswipeReader.tsx
@@ -29,20 +29,29 @@ export function PhotoswipeReader({ book, pages, onClose, nextBook }: BookReaderP
const { direction, toggleDirection, isRTL } = useReadingDirection();
const { isFullscreen, toggleFullscreen } = useFullscreen();
const { isDoublePage, shouldShowDoublePage, toggleDoublePage } = useDoublePageMode();
- const { loadedImages, imageBlobUrls, prefetchPages, prefetchNextBook, handleForceReload, getPageUrl, prefetchCount } = useImageLoader({
- bookId: book.id,
- pages,
- prefetchCount: preferences.readerPrefetchCount,
- nextBook: nextBook ? { id: nextBook.id, pages: [] } : null
- });
- const { currentPage, showEndMessage, navigateToPage, handlePreviousPage, handleNextPage } = usePageNavigation({
- book,
+ const {
+ loadedImages,
+ imageBlobUrls,
+ prefetchPages,
+ prefetchNextBook,
+ handleForceReload,
+ getPageUrl,
+ prefetchCount,
+ } = useImageLoader({
+ bookId: book.id,
pages,
- isDoublePage,
- shouldShowDoublePage: (page) => shouldShowDoublePage(page, pages.length),
- onClose,
- nextBook,
+ prefetchCount: preferences.readerPrefetchCount,
+ nextBook: nextBook ? { id: nextBook.id, pages: [] } : null,
});
+ const { currentPage, showEndMessage, navigateToPage, handlePreviousPage, handleNextPage } =
+ usePageNavigation({
+ book,
+ pages,
+ isDoublePage,
+ shouldShowDoublePage: (page) => shouldShowDoublePage(page, pages.length),
+ onClose,
+ nextBook,
+ });
const { pswpRef, handleZoom } = usePhotoSwipeZoom({
loadedImages,
currentPage,
@@ -58,32 +67,44 @@ export function PhotoswipeReader({ book, pages, onClose, nextBook }: BookReaderP
// Activer le zoom dans le reader en enlevant la classe no-pinch-zoom
useEffect(() => {
- document.body.classList.remove('no-pinch-zoom');
+ document.body.classList.remove("no-pinch-zoom");
return () => {
- document.body.classList.add('no-pinch-zoom');
+ document.body.classList.add("no-pinch-zoom");
};
}, []);
-
// Prefetch current and next pages
// Deduplication in useImageLoader prevents redundant requests
// Server queue (RequestQueueService) handles concurrency limits
useEffect(() => {
// Prefetch pages starting from current page
prefetchPages(currentPage, prefetchCount);
-
+
// If double page mode, also prefetch additional pages for smooth double page navigation
- if (isDoublePage && shouldShowDoublePage(currentPage, pages.length) && currentPage + prefetchCount < pages.length) {
+ if (
+ isDoublePage &&
+ shouldShowDoublePage(currentPage, pages.length) &&
+ currentPage + prefetchCount < pages.length
+ ) {
prefetchPages(currentPage + prefetchCount, 1);
}
-
+
// If we're near the end of the book, prefetch the next book
const pagesFromEnd = pages.length - currentPage;
if (pagesFromEnd <= prefetchCount && nextBook) {
prefetchNextBook(prefetchCount);
}
- }, [currentPage, isDoublePage, shouldShowDoublePage, prefetchPages, prefetchNextBook, prefetchCount, pages.length, nextBook]);
+ }, [
+ currentPage,
+ isDoublePage,
+ shouldShowDoublePage,
+ prefetchPages,
+ prefetchNextBook,
+ prefetchCount,
+ pages.length,
+ nextBook,
+ ]);
// Keyboard events
useEffect(() => {
@@ -109,43 +130,46 @@ export function PhotoswipeReader({ book, pages, onClose, nextBook }: BookReaderP
};
window.addEventListener("keydown", handleKeyDown);
-
+
return () => {
window.removeEventListener("keydown", handleKeyDown);
};
}, [handleNextPage, handlePreviousPage, onClose, isRTL, currentPage]);
- const handleContainerClick = useCallback((e: React.MouseEvent) => {
- // Vérifier si c'est un double-clic sur une image
- const target = e.target as HTMLElement;
- const now = Date.now();
- const timeSinceLastClick = now - lastClickTimeRef.current;
-
- if (target.tagName === 'IMG' && timeSinceLastClick < 300) {
- // Double-clic sur une image
- if (clickTimeoutRef.current) {
- clearTimeout(clickTimeoutRef.current);
- clickTimeoutRef.current = null;
+ const handleContainerClick = useCallback(
+ (e: React.MouseEvent) => {
+ // Vérifier si c'est un double-clic sur une image
+ const target = e.target as HTMLElement;
+ const now = Date.now();
+ const timeSinceLastClick = now - lastClickTimeRef.current;
+
+ if (target.tagName === "IMG" && timeSinceLastClick < 300) {
+ // Double-clic sur une image
+ if (clickTimeoutRef.current) {
+ clearTimeout(clickTimeoutRef.current);
+ clickTimeoutRef.current = null;
+ }
+ e.stopPropagation();
+ handleZoom();
+ lastClickTimeRef.current = 0;
+ } else if (target.tagName === "IMG") {
+ // Premier clic sur une image - attendre pour voir si c'est un double-clic
+ lastClickTimeRef.current = now;
+ if (clickTimeoutRef.current) {
+ clearTimeout(clickTimeoutRef.current);
+ }
+ clickTimeoutRef.current = setTimeout(() => {
+ setShowControls((prev) => !prev);
+ clickTimeoutRef.current = null;
+ }, 300);
+ } else {
+ // Clic ailleurs - toggle les contrôles immédiatement
+ setShowControls(!showControls);
+ lastClickTimeRef.current = 0;
}
- e.stopPropagation();
- handleZoom();
- lastClickTimeRef.current = 0;
- } else if (target.tagName === 'IMG') {
- // Premier clic sur une image - attendre pour voir si c'est un double-clic
- lastClickTimeRef.current = now;
- if (clickTimeoutRef.current) {
- clearTimeout(clickTimeoutRef.current);
- }
- clickTimeoutRef.current = setTimeout(() => {
- setShowControls(prev => !prev);
- clickTimeoutRef.current = null;
- }, 300);
- } else {
- // Clic ailleurs - toggle les contrôles immédiatement
- setShowControls(!showControls);
- lastClickTimeRef.current = 0;
- }
- }, [showControls, handleZoom]);
+ },
+ [showControls, handleZoom]
+ );
return (
@@ -173,7 +197,11 @@ export function PhotoswipeReader({ book, pages, onClose, nextBook }: BookReaderP
showThumbnails={showThumbnails}
onToggleThumbnails={() => setShowThumbnails(!showThumbnails)}
onZoom={handleZoom}
- onForceReload={() => handleForceReload(currentPage, isDoublePage, (page) => shouldShowDoublePage(page, pages.length))}
+ onForceReload={() =>
+ handleForceReload(currentPage, isDoublePage, (page) =>
+ shouldShowDoublePage(page, pages.length)
+ )
+ }
/>
);
}
-
diff --git a/src/components/reader/components/PageDisplay.tsx b/src/components/reader/components/PageDisplay.tsx
index b4bc243..d09f591 100644
--- a/src/components/reader/components/PageDisplay.tsx
+++ b/src/components/reader/components/PageDisplay.tsx
@@ -44,26 +44,28 @@ export function PageDisplay({
{isLoading && (
)}
{/* eslint-disable-next-line @next/next/no-img-element */}
{secondPageLoading && (
)}
{/* eslint-disable-next-line @next/next/no-img-element */}
(null);
- const handleContainerClick = useCallback((e: React.MouseEvent) => {
- onContainerClick(e);
- }, [onContainerClick]);
+ const handleContainerClick = useCallback(
+ (e: React.MouseEvent) => {
+ onContainerClick(e);
+ },
+ [onContainerClick]
+ );
return (
-
- {children}
-
+
{children}
);
}
diff --git a/src/components/reader/components/Thumbnail.tsx b/src/components/reader/components/Thumbnail.tsx
index ce77871..90a1924 100644
--- a/src/components/reader/components/Thumbnail.tsx
+++ b/src/components/reader/components/Thumbnail.tsx
@@ -97,9 +97,9 @@ export const Thumbnail = forwardRef
(
setImageUrl((prev) => {
if (!prev) return null;
// Utiliser & si l'URL contient déjà des query params
- const separator = prev.includes('?') ? '&' : '?';
+ const separator = prev.includes("?") ? "&" : "?";
// Supprimer l'ancien retry param si présent
- const baseUrl = prev.replace(/[?&]retry=\d+/g, '');
+ const baseUrl = prev.replace(/[?&]retry=\d+/g, "");
return `${baseUrl}${separator}retry=${loadAttempts.current}`;
});
}, delay);
diff --git a/src/components/reader/hooks/useDoublePageMode.ts b/src/components/reader/hooks/useDoublePageMode.ts
index 5577afd..e1d1400 100644
--- a/src/components/reader/hooks/useDoublePageMode.ts
+++ b/src/components/reader/hooks/useDoublePageMode.ts
@@ -22,7 +22,7 @@ export function useDoublePageMode() {
);
const toggleDoublePage = useCallback(() => {
- setIsDoublePage(prev => !prev);
+ setIsDoublePage((prev) => !prev);
}, []);
return {
diff --git a/src/components/reader/hooks/useFullscreen.ts b/src/components/reader/hooks/useFullscreen.ts
index e57177a..8d371a4 100644
--- a/src/components/reader/hooks/useFullscreen.ts
+++ b/src/components/reader/hooks/useFullscreen.ts
@@ -14,7 +14,9 @@ export const useFullscreen = () => {
return () => {
document.removeEventListener("fullscreenchange", handleFullscreenChange);
if (document.fullscreenElement) {
- document.exitFullscreen().catch(err => logger.error({ err }, "Erreur lors de la sortie du mode plein écran"));
+ document
+ .exitFullscreen()
+ .catch((err) => logger.error({ err }, "Erreur lors de la sortie du mode plein écran"));
}
};
}, []);
diff --git a/src/components/reader/hooks/useImageLoader.ts b/src/components/reader/hooks/useImageLoader.ts
index 6f4d514..6f7dcab 100644
--- a/src/components/reader/hooks/useImageLoader.ts
+++ b/src/components/reader/hooks/useImageLoader.ts
@@ -15,7 +15,12 @@ interface UseImageLoaderProps {
nextBook?: { id: string; pages: number[] } | null; // Livre suivant pour prefetch
}
-export function useImageLoader({ bookId, pages: _pages, prefetchCount = 5, nextBook }: UseImageLoaderProps) {
+export function useImageLoader({
+ bookId,
+ pages: _pages,
+ prefetchCount = 5,
+ nextBook,
+}: UseImageLoaderProps) {
const [loadedImages, setLoadedImages] = useState>({});
const [imageBlobUrls, setImageBlobUrls] = useState>({});
const loadedImagesRef = useRef(loadedImages);
@@ -32,217 +37,238 @@ export function useImageLoader({ bookId, pages: _pages, prefetchCount = 5, nextB
imageBlobUrlsRef.current = imageBlobUrls;
}, [imageBlobUrls]);
- const getPageUrl = useCallback((pageNum: number) => `/api/komga/books/${bookId}/pages/${pageNum}`, [bookId]);
+ const getPageUrl = useCallback(
+ (pageNum: number) => `/api/komga/books/${bookId}/pages/${pageNum}`,
+ [bookId]
+ );
// Prefetch image and store dimensions
- const prefetchImage = useCallback(async (pageNum: number) => {
- // Check if we already have both dimensions and blob URL
- const hasDimensions = loadedImagesRef.current[pageNum];
- const hasBlobUrl = imageBlobUrlsRef.current[pageNum];
-
- if (hasDimensions && hasBlobUrl) {
- return;
- }
-
- // Check if this page is already being fetched
- if (pendingFetchesRef.current.has(pageNum)) {
- return;
- }
-
- // Mark as pending
- pendingFetchesRef.current.add(pageNum);
-
- try {
- // Use browser cache if available - the server sets Cache-Control headers
- const response = await fetch(getPageUrl(pageNum), {
- cache: 'default', // Respect Cache-Control headers from server
- });
- if (!response.ok) {
+ const prefetchImage = useCallback(
+ async (pageNum: number) => {
+ // Check if we already have both dimensions and blob URL
+ const hasDimensions = loadedImagesRef.current[pageNum];
+ const hasBlobUrl = imageBlobUrlsRef.current[pageNum];
+
+ if (hasDimensions && hasBlobUrl) {
return;
}
-
- const blob = await response.blob();
- const blobUrl = URL.createObjectURL(blob);
-
- // Create image to get dimensions
- const img = new Image();
- img.onload = () => {
- setLoadedImages(prev => ({
- ...prev,
- [pageNum]: { width: img.naturalWidth, height: img.naturalHeight }
- }));
-
- // Store the blob URL for immediate use
- setImageBlobUrls(prev => ({
- ...prev,
- [pageNum]: blobUrl
- }));
- };
- img.src = blobUrl;
- } catch {
- // Silently fail prefetch
- } finally {
- // Remove from pending set
- pendingFetchesRef.current.delete(pageNum);
- }
- }, [getPageUrl]);
+
+ // Check if this page is already being fetched
+ if (pendingFetchesRef.current.has(pageNum)) {
+ return;
+ }
+
+ // Mark as pending
+ pendingFetchesRef.current.add(pageNum);
+
+ try {
+ // Use browser cache if available - the server sets Cache-Control headers
+ const response = await fetch(getPageUrl(pageNum), {
+ cache: "default", // Respect Cache-Control headers from server
+ });
+ if (!response.ok) {
+ return;
+ }
+
+ const blob = await response.blob();
+ const blobUrl = URL.createObjectURL(blob);
+
+ // Create image to get dimensions
+ const img = new Image();
+ img.onload = () => {
+ setLoadedImages((prev) => ({
+ ...prev,
+ [pageNum]: { width: img.naturalWidth, height: img.naturalHeight },
+ }));
+
+ // Store the blob URL for immediate use
+ setImageBlobUrls((prev) => ({
+ ...prev,
+ [pageNum]: blobUrl,
+ }));
+ };
+ img.src = blobUrl;
+ } catch {
+ // Silently fail prefetch
+ } finally {
+ // Remove from pending set
+ pendingFetchesRef.current.delete(pageNum);
+ }
+ },
+ [getPageUrl]
+ );
// Prefetch multiple pages starting from a given page
// The server-side queue (RequestQueueService) handles concurrency limits
// We only deduplicate to avoid redundant HTTP requests
- const prefetchPages = useCallback(async (startPage: number, count: number = prefetchCount) => {
- const pagesToPrefetch = [];
-
- for (let i = 0; i < count; i++) {
- const pageNum = startPage + i;
- if (pageNum <= _pages.length) {
- const hasDimensions = loadedImagesRef.current[pageNum];
- const hasBlobUrl = imageBlobUrlsRef.current[pageNum];
- const isPending = pendingFetchesRef.current.has(pageNum);
-
- // Prefetch if we don't have both dimensions AND blob URL AND it's not already pending
- if ((!hasDimensions || !hasBlobUrl) && !isPending) {
- pagesToPrefetch.push(pageNum);
+ const prefetchPages = useCallback(
+ async (startPage: number, count: number = prefetchCount) => {
+ const pagesToPrefetch = [];
+
+ for (let i = 0; i < count; i++) {
+ const pageNum = startPage + i;
+ if (pageNum <= _pages.length) {
+ const hasDimensions = loadedImagesRef.current[pageNum];
+ const hasBlobUrl = imageBlobUrlsRef.current[pageNum];
+ const isPending = pendingFetchesRef.current.has(pageNum);
+
+ // Prefetch if we don't have both dimensions AND blob URL AND it's not already pending
+ if ((!hasDimensions || !hasBlobUrl) && !isPending) {
+ pagesToPrefetch.push(pageNum);
+ }
}
}
- }
-
- // Let all prefetch requests run - the server queue will manage concurrency
- // The browser cache and our deduplication prevent redundant requests
- if (pagesToPrefetch.length > 0) {
- // Fire all requests in parallel - server queue handles throttling
- Promise.all(pagesToPrefetch.map(pageNum => prefetchImage(pageNum))).catch(() => {
- // Silently fail - prefetch is non-critical
- });
- }
- }, [prefetchImage, prefetchCount, _pages.length]);
+
+ // Let all prefetch requests run - the server queue will manage concurrency
+ // The browser cache and our deduplication prevent redundant requests
+ if (pagesToPrefetch.length > 0) {
+ // Fire all requests in parallel - server queue handles throttling
+ Promise.all(pagesToPrefetch.map((pageNum) => prefetchImage(pageNum))).catch(() => {
+ // Silently fail - prefetch is non-critical
+ });
+ }
+ },
+ [prefetchImage, prefetchCount, _pages.length]
+ );
// Prefetch pages from next book
- const prefetchNextBook = useCallback(async (count: number = prefetchCount) => {
- if (!nextBook) {
- return;
- }
-
- const pagesToPrefetch = [];
-
- for (let i = 0; i < count; i++) {
- const pageNum = i + 1; // Pages du livre suivant commencent à 1
- // Pour le livre suivant, on utilise une clé différente pour éviter les conflits
- const nextBookPageKey = `next-${pageNum}`;
- const hasDimensions = loadedImagesRef.current[nextBookPageKey];
- const hasBlobUrl = imageBlobUrlsRef.current[nextBookPageKey];
- const isPending = pendingFetchesRef.current.has(nextBookPageKey);
-
- if ((!hasDimensions || !hasBlobUrl) && !isPending) {
- pagesToPrefetch.push({ pageNum, nextBookPageKey });
+ const prefetchNextBook = useCallback(
+ async (count: number = prefetchCount) => {
+ if (!nextBook) {
+ return;
}
- }
-
- // Let all prefetch requests run - server queue handles concurrency
- if (pagesToPrefetch.length > 0) {
- Promise.all(pagesToPrefetch.map(async ({ pageNum, nextBookPageKey }) => {
- // Mark as pending
- pendingFetchesRef.current.add(nextBookPageKey);
-
- try {
- const response = await fetch(`/api/komga/books/${nextBook.id}/pages/${pageNum}`, {
- cache: 'default', // Respect Cache-Control headers from server
- });
- if (!response.ok) {
- return;
- }
-
- const blob = await response.blob();
- const blobUrl = URL.createObjectURL(blob);
-
- // Create image to get dimensions
- const img = new Image();
- img.onload = () => {
- setLoadedImages(prev => ({
- ...prev,
- [nextBookPageKey]: { width: img.naturalWidth, height: img.naturalHeight }
- }));
-
- // Store the blob URL for immediate use
- setImageBlobUrls(prev => ({
- ...prev,
- [nextBookPageKey]: blobUrl
- }));
- };
- img.src = blobUrl;
- } catch {
- // Silently fail prefetch
- } finally {
- pendingFetchesRef.current.delete(nextBookPageKey);
+
+ const pagesToPrefetch = [];
+
+ for (let i = 0; i < count; i++) {
+ const pageNum = i + 1; // Pages du livre suivant commencent à 1
+ // Pour le livre suivant, on utilise une clé différente pour éviter les conflits
+ const nextBookPageKey = `next-${pageNum}`;
+ const hasDimensions = loadedImagesRef.current[nextBookPageKey];
+ const hasBlobUrl = imageBlobUrlsRef.current[nextBookPageKey];
+ const isPending = pendingFetchesRef.current.has(nextBookPageKey);
+
+ if ((!hasDimensions || !hasBlobUrl) && !isPending) {
+ pagesToPrefetch.push({ pageNum, nextBookPageKey });
}
- })).catch(() => {
- // Silently fail - prefetch is non-critical
- });
- }
- }, [nextBook, prefetchCount]);
+ }
+
+ // Let all prefetch requests run - server queue handles concurrency
+ if (pagesToPrefetch.length > 0) {
+ Promise.all(
+ pagesToPrefetch.map(async ({ pageNum, nextBookPageKey }) => {
+ // Mark as pending
+ pendingFetchesRef.current.add(nextBookPageKey);
+
+ try {
+ const response = await fetch(`/api/komga/books/${nextBook.id}/pages/${pageNum}`, {
+ cache: "default", // Respect Cache-Control headers from server
+ });
+ if (!response.ok) {
+ return;
+ }
+
+ const blob = await response.blob();
+ const blobUrl = URL.createObjectURL(blob);
+
+ // Create image to get dimensions
+ const img = new Image();
+ img.onload = () => {
+ setLoadedImages((prev) => ({
+ ...prev,
+ [nextBookPageKey]: { width: img.naturalWidth, height: img.naturalHeight },
+ }));
+
+ // Store the blob URL for immediate use
+ setImageBlobUrls((prev) => ({
+ ...prev,
+ [nextBookPageKey]: blobUrl,
+ }));
+ };
+ img.src = blobUrl;
+ } catch {
+ // Silently fail prefetch
+ } finally {
+ pendingFetchesRef.current.delete(nextBookPageKey);
+ }
+ })
+ ).catch(() => {
+ // Silently fail - prefetch is non-critical
+ });
+ }
+ },
+ [nextBook, prefetchCount]
+ );
// Force reload handler
- const handleForceReload = useCallback(async (currentPage: number, isDoublePage: boolean, shouldShowDoublePage: (page: number) => boolean) => {
- // Révoquer les anciennes URLs blob
- if (imageBlobUrls[currentPage]) {
- URL.revokeObjectURL(imageBlobUrls[currentPage]);
- }
- if (imageBlobUrls[currentPage + 1]) {
- URL.revokeObjectURL(imageBlobUrls[currentPage + 1]);
- }
-
- try {
- // Fetch page 1 avec cache: reload
- const response1 = await fetch(getPageUrl(currentPage), {
- cache: 'reload',
- headers: {
- 'Cache-Control': 'no-cache',
- 'Pragma': 'no-cache'
- }
- });
-
- if (!response1.ok) {
- throw new Error(`HTTP ${response1.status}`);
+ const handleForceReload = useCallback(
+ async (
+ currentPage: number,
+ isDoublePage: boolean,
+ shouldShowDoublePage: (page: number) => boolean
+ ) => {
+ // Révoquer les anciennes URLs blob
+ if (imageBlobUrls[currentPage]) {
+ URL.revokeObjectURL(imageBlobUrls[currentPage]);
}
-
- const blob1 = await response1.blob();
- const blobUrl1 = URL.createObjectURL(blob1);
-
- const newUrls: Record = {
- ...imageBlobUrls,
- [currentPage]: blobUrl1
- };
-
- // Fetch page 2 si double page
- if (isDoublePage && shouldShowDoublePage(currentPage)) {
- const response2 = await fetch(getPageUrl(currentPage + 1), {
- cache: 'reload',
+ if (imageBlobUrls[currentPage + 1]) {
+ URL.revokeObjectURL(imageBlobUrls[currentPage + 1]);
+ }
+
+ try {
+ // Fetch page 1 avec cache: reload
+ const response1 = await fetch(getPageUrl(currentPage), {
+ cache: "reload",
headers: {
- 'Cache-Control': 'no-cache',
- 'Pragma': 'no-cache'
- }
+ "Cache-Control": "no-cache",
+ Pragma: "no-cache",
+ },
});
-
- if (!response2.ok) {
- throw new Error(`HTTP ${response2.status}`);
+
+ if (!response1.ok) {
+ throw new Error(`HTTP ${response1.status}`);
}
-
- const blob2 = await response2.blob();
- const blobUrl2 = URL.createObjectURL(blob2);
- newUrls[currentPage + 1] = blobUrl2;
+
+ const blob1 = await response1.blob();
+ const blobUrl1 = URL.createObjectURL(blob1);
+
+ const newUrls: Record = {
+ ...imageBlobUrls,
+ [currentPage]: blobUrl1,
+ };
+
+ // Fetch page 2 si double page
+ if (isDoublePage && shouldShowDoublePage(currentPage)) {
+ const response2 = await fetch(getPageUrl(currentPage + 1), {
+ cache: "reload",
+ headers: {
+ "Cache-Control": "no-cache",
+ Pragma: "no-cache",
+ },
+ });
+
+ if (!response2.ok) {
+ throw new Error(`HTTP ${response2.status}`);
+ }
+
+ const blob2 = await response2.blob();
+ const blobUrl2 = URL.createObjectURL(blob2);
+ newUrls[currentPage + 1] = blobUrl2;
+ }
+
+ setImageBlobUrls(newUrls);
+ } catch (error) {
+ logger.error({ err: error }, "Error reloading images:");
+ throw error;
}
-
- setImageBlobUrls(newUrls);
- } catch (error) {
- logger.error({ err: error }, 'Error reloading images:');
- throw error;
- }
- }, [imageBlobUrls, getPageUrl]);
+ },
+ [imageBlobUrls, getPageUrl]
+ );
// Cleanup blob URLs on unmount only
useEffect(() => {
return () => {
- Object.values(imageBlobUrlsRef.current).forEach(url => {
+ Object.values(imageBlobUrlsRef.current).forEach((url) => {
if (url) URL.revokeObjectURL(url);
});
};
diff --git a/src/components/reader/hooks/usePageNavigation.ts b/src/components/reader/hooks/usePageNavigation.ts
index 1f2fac2..511181f 100644
--- a/src/components/reader/hooks/usePageNavigation.ts
+++ b/src/components/reader/hooks/usePageNavigation.ts
@@ -100,7 +100,15 @@ export function usePageNavigation({
}
const step = isDoublePage && shouldShowDoublePage(currentPage) ? 2 : 1;
navigateToPage(Math.min(pages.length, currentPage + step));
- }, [currentPage, pages.length, isDoublePage, shouldShowDoublePage, navigateToPage, nextBook, router]);
+ }, [
+ currentPage,
+ pages.length,
+ isDoublePage,
+ shouldShowDoublePage,
+ navigateToPage,
+ nextBook,
+ router,
+ ]);
// Cleanup - Sync final sans debounce
useEffect(() => {
@@ -122,4 +130,4 @@ export function usePageNavigation({
handlePreviousPage,
handleNextPage,
};
-}
\ No newline at end of file
+}
diff --git a/src/components/reader/hooks/usePhotoSwipeZoom.ts b/src/components/reader/hooks/usePhotoSwipeZoom.ts
index b2843b1..7054b03 100644
--- a/src/components/reader/hooks/usePhotoSwipeZoom.ts
+++ b/src/components/reader/hooks/usePhotoSwipeZoom.ts
@@ -19,12 +19,14 @@ export function usePhotoSwipeZoom({
const dims = loadedImages[currentPage];
if (!dims) return;
- const dataSource = [{
- src: getPageUrl(currentPage),
- width: dims.width,
- height: dims.height,
- alt: `Page ${currentPage}`
- }];
+ const dataSource = [
+ {
+ src: getPageUrl(currentPage),
+ width: dims.width,
+ height: dims.height,
+ alt: `Page ${currentPage}`,
+ },
+ ];
// Close any existing instance
if (pswpRef.current) {
@@ -36,12 +38,12 @@ export function usePhotoSwipeZoom({
dataSource,
index: 0,
bgOpacity: 0.9,
- showHideAnimationType: 'fade',
+ showHideAnimationType: "fade",
initialZoomLevel: 0.25,
secondaryZoomLevel: 0.5, // Niveau de zoom au double-clic
maxZoomLevel: 4,
clickToCloseNonZoomable: true, // Ferme au clic simple
- tapAction: 'zoom', // Ferme au tap
+ tapAction: "zoom", // Ferme au tap
wheelToZoom: true,
pinchToClose: false, // Pinch pour fermer
closeOnVerticalDrag: true, // Swipe vertical pour fermer
@@ -53,7 +55,7 @@ export function usePhotoSwipeZoom({
pswp.init();
// Clean up on close
- pswp.on('close', () => {
+ pswp.on("close", () => {
pswpRef.current = null;
});
}, [loadedImages, currentPage, getPageUrl]);
diff --git a/src/components/reader/hooks/useTouchNavigation.ts b/src/components/reader/hooks/useTouchNavigation.ts
index ecc46ad..9f101fe 100644
--- a/src/components/reader/hooks/useTouchNavigation.ts
+++ b/src/components/reader/hooks/useTouchNavigation.ts
@@ -30,28 +30,31 @@ export function useTouchNavigation({
}, []);
// Touch handlers for swipe navigation
- const handleTouchStart = useCallback((e: TouchEvent) => {
- // Ne pas gérer si Photoswipe est ouvert
- if (pswpRef.current) return;
- // Ne pas gérer si la page est zoomée (zoom natif)
- if (isZoomed()) return;
-
- // Détecter si c'est un pinch (2+ doigts)
- if (e.touches.length > 1) {
- isPinchingRef.current = true;
- touchStartXRef.current = null;
- touchStartYRef.current = null;
- return;
- }
-
- // Un seul doigt - seulement si on n'était pas en train de pinch
- // On réinitialise isPinchingRef seulement ici, quand on commence un nouveau geste à 1 doigt
- if (e.touches.length === 1) {
- isPinchingRef.current = false;
- touchStartXRef.current = e.touches[0].clientX;
- touchStartYRef.current = e.touches[0].clientY;
- }
- }, [pswpRef, isZoomed]);
+ const handleTouchStart = useCallback(
+ (e: TouchEvent) => {
+ // Ne pas gérer si Photoswipe est ouvert
+ if (pswpRef.current) return;
+ // Ne pas gérer si la page est zoomée (zoom natif)
+ if (isZoomed()) return;
+
+ // Détecter si c'est un pinch (2+ doigts)
+ if (e.touches.length > 1) {
+ isPinchingRef.current = true;
+ touchStartXRef.current = null;
+ touchStartYRef.current = null;
+ return;
+ }
+
+ // Un seul doigt - seulement si on n'était pas en train de pinch
+ // On réinitialise isPinchingRef seulement ici, quand on commence un nouveau geste à 1 doigt
+ if (e.touches.length === 1) {
+ isPinchingRef.current = false;
+ touchStartXRef.current = e.touches[0].clientX;
+ touchStartYRef.current = e.touches[0].clientY;
+ }
+ },
+ [pswpRef, isZoomed]
+ );
const handleTouchMove = useCallback((e: TouchEvent) => {
// Détecter le pinch pendant le mouvement
@@ -62,63 +65,66 @@ export function useTouchNavigation({
}
}, []);
- const handleTouchEnd = useCallback((e: TouchEvent) => {
- // Si on était en mode pinch, ne JAMAIS traiter le swipe
- if (isPinchingRef.current) {
- touchStartXRef.current = null;
- touchStartYRef.current = null;
- // Ne PAS réinitialiser isPinchingRef ici, on le fera au prochain touchstart
- return;
- }
-
- // Vérifier qu'on a bien des coordonnées de départ
- if (touchStartXRef.current === null || touchStartYRef.current === null) return;
- // Ne pas gérer si Photoswipe est ouvert
- if (pswpRef.current) return;
- // Ne pas gérer si la page est zoomée (zoom natif)
- if (isZoomed()) return;
+ const handleTouchEnd = useCallback(
+ (e: TouchEvent) => {
+ // Si on était en mode pinch, ne JAMAIS traiter le swipe
+ if (isPinchingRef.current) {
+ touchStartXRef.current = null;
+ touchStartYRef.current = null;
+ // Ne PAS réinitialiser isPinchingRef ici, on le fera au prochain touchstart
+ return;
+ }
- const touchEndX = e.changedTouches[0].clientX;
- const touchEndY = e.changedTouches[0].clientY;
- const deltaX = touchEndX - touchStartXRef.current;
- const deltaY = touchEndY - touchStartYRef.current;
+ // Vérifier qu'on a bien des coordonnées de départ
+ if (touchStartXRef.current === null || touchStartYRef.current === null) return;
+ // Ne pas gérer si Photoswipe est ouvert
+ if (pswpRef.current) return;
+ // Ne pas gérer si la page est zoomée (zoom natif)
+ if (isZoomed()) return;
- // Si le déplacement vertical est plus important, on ignore (scroll)
- if (Math.abs(deltaY) > Math.abs(deltaX)) {
- touchStartXRef.current = null;
- touchStartYRef.current = null;
- return;
- }
+ const touchEndX = e.changedTouches[0].clientX;
+ const touchEndY = e.changedTouches[0].clientY;
+ const deltaX = touchEndX - touchStartXRef.current;
+ const deltaY = touchEndY - touchStartYRef.current;
- // Seuil de 50px pour changer de page
- if (Math.abs(deltaX) > 50) {
- if (deltaX > 0) {
- // Swipe vers la droite
- if (isRTL) {
- onNextPage();
+ // Si le déplacement vertical est plus important, on ignore (scroll)
+ if (Math.abs(deltaY) > Math.abs(deltaX)) {
+ touchStartXRef.current = null;
+ touchStartYRef.current = null;
+ return;
+ }
+
+ // Seuil de 50px pour changer de page
+ if (Math.abs(deltaX) > 50) {
+ if (deltaX > 0) {
+ // Swipe vers la droite
+ if (isRTL) {
+ onNextPage();
+ } else {
+ onPreviousPage();
+ }
} else {
- onPreviousPage();
- }
- } else {
- // Swipe vers la gauche
- if (isRTL) {
- onPreviousPage();
- } else {
- onNextPage();
+ // Swipe vers la gauche
+ if (isRTL) {
+ onPreviousPage();
+ } else {
+ onNextPage();
+ }
}
}
- }
- touchStartXRef.current = null;
- touchStartYRef.current = null;
- }, [onNextPage, onPreviousPage, isRTL, pswpRef, isZoomed]);
+ touchStartXRef.current = null;
+ touchStartYRef.current = null;
+ },
+ [onNextPage, onPreviousPage, isRTL, pswpRef, isZoomed]
+ );
// Setup touch event listeners
useEffect(() => {
window.addEventListener("touchstart", handleTouchStart);
window.addEventListener("touchmove", handleTouchMove);
window.addEventListener("touchend", handleTouchEnd);
-
+
return () => {
window.removeEventListener("touchstart", handleTouchStart);
window.removeEventListener("touchmove", handleTouchMove);
diff --git a/src/components/series/BookGrid.tsx b/src/components/series/BookGrid.tsx
index 04fc637..b114a3f 100644
--- a/src/components/series/BookGrid.tsx
+++ b/src/components/series/BookGrid.tsx
@@ -48,8 +48,9 @@ function BookCard({ book, onBookClick, onSuccess, isCompact }: BookCardProps) {
{title}
-
+
{statusInfo.label}
@@ -137,9 +141,7 @@ function BookListItem({ book, onBookClick, onSuccess, isCompact = false }: BookL
{book.metadata.authors && book.metadata.authors.length > 0 && (
-
- {book.metadata.authors[0].name}
-
+ {book.metadata.authors[0].name}
)}
@@ -192,9 +194,14 @@ function BookListItem({ book, onBookClick, onSuccess, isCompact = false }: BookL
)}
-
+
{/* Badge de statut */}
-
+
{statusInfo.label}
@@ -221,7 +228,7 @@ function BookListItem({ book, onBookClick, onSuccess, isCompact = false }: BookL
- {book.metadata.authors.map(a => a.name).join(", ")}
+ {book.metadata.authors.map((a) => a.name).join(", ")}
)}
@@ -343,4 +350,3 @@ export function BookList({ books, onBookClick, isCompact = false }: BookListProp
);
}
-
diff --git a/src/components/series/PaginatedBookGrid.tsx b/src/components/series/PaginatedBookGrid.tsx
index 4b63788..eda7064 100644
--- a/src/components/series/PaginatedBookGrid.tsx
+++ b/src/components/series/PaginatedBookGrid.tsx
@@ -37,26 +37,26 @@ export function PaginatedBookGrid({
const { isCompact, itemsPerPage, viewMode } = useDisplayPreferences();
const { t } = useTranslate();
- const updateUrlParams = useCallback(async (
- updates: Record,
- replace: boolean = false
- ) => {
- const params = new URLSearchParams(searchParams.toString());
+ const updateUrlParams = useCallback(
+ async (updates: Record, replace: boolean = false) => {
+ const params = new URLSearchParams(searchParams.toString());
- Object.entries(updates).forEach(([key, value]) => {
- if (value === null) {
- params.delete(key);
+ Object.entries(updates).forEach(([key, value]) => {
+ if (value === null) {
+ params.delete(key);
+ } else {
+ params.set(key, value);
+ }
+ });
+
+ if (replace) {
+ await router.replace(`${pathname}?${params.toString()}`);
} else {
- params.set(key, value);
+ await router.push(`${pathname}?${params.toString()}`);
}
- });
-
- if (replace) {
- await router.replace(`${pathname}?${params.toString()}`);
- } else {
- await router.push(`${pathname}?${params.toString()}`);
- }
- }, [router, pathname, searchParams]);
+ },
+ [router, pathname, searchParams]
+ );
// Update local state when prop changes
useEffect(() => {
diff --git a/src/components/series/SeriesHeader.tsx b/src/components/series/SeriesHeader.tsx
index 35b6308..dd780eb 100644
--- a/src/components/series/SeriesHeader.tsx
+++ b/src/components/series/SeriesHeader.tsx
@@ -157,17 +157,18 @@ export const SeriesHeader = ({ series, refreshSeries }: SeriesHeaderProps) => {
{statusInfo.label}
- {series.booksCount === 1
+ {series.booksCount === 1
? t("series.header.books", { count: series.booksCount })
- : t("series.header.books_plural", { count: series.booksCount })
- }
+ : t("series.header.books_plural", { count: series.booksCount })}
diff --git a/src/components/settings/AdvancedSettings.tsx b/src/components/settings/AdvancedSettings.tsx
index 62eba94..0f5f335 100644
--- a/src/components/settings/AdvancedSettings.tsx
+++ b/src/components/settings/AdvancedSettings.tsx
@@ -116,9 +116,7 @@ export function AdvancedSettings() {
{t("settings.advanced.circuitBreaker.title")}
-
- {t("settings.advanced.circuitBreaker.description")}
-
+ {t("settings.advanced.circuitBreaker.description")}
{
const newSelection = selectedLibraries.includes(libraryId)
? selectedLibraries.filter((id) => id !== libraryId)
@@ -174,7 +173,6 @@ export function BackgroundSettings() {
{t("settings.background.description")}
-
{/* Type de background */}
@@ -258,7 +256,9 @@ export function BackgroundSettings() {
onChange={(e) => setCustomImageUrl(e.target.value)}
className="flex-1"
/>
- {t("settings.background.image.save")}
+
+ {t("settings.background.image.save")}
+
{t("settings.background.image.description")}
@@ -326,4 +326,3 @@ export function BackgroundSettings() {
);
}
-
diff --git a/src/components/settings/CacheSettings.tsx b/src/components/settings/CacheSettings.tsx
index 882a769..bfd908f 100644
--- a/src/components/settings/CacheSettings.tsx
+++ b/src/components/settings/CacheSettings.tsx
@@ -129,7 +129,7 @@ export function CacheSettings({ initialTTLConfig }: CacheSettingsProps) {
if (response) {
const blob = await response.clone().blob();
totalSize += blob.size;
-
+
// Calculer la taille du cache API séparément
if (cacheName.includes("api")) {
apiSize += blob.size;
@@ -214,19 +214,24 @@ export function CacheSettings({ initialTTLConfig }: CacheSettingsProps) {
try {
const urlObj = new URL(url);
const path = urlObj.pathname;
- const segments = path.split('/').filter(Boolean);
-
- if (segments.length === 0) return '/';
-
+ const segments = path.split("/").filter(Boolean);
+
+ if (segments.length === 0) return "/";
+
// Pour /api/komga/images, grouper par type (series/books)
- if (segments[0] === 'api' && segments[1] === 'komga' && segments[2] === 'images' && segments[3]) {
+ if (
+ segments[0] === "api" &&
+ segments[1] === "komga" &&
+ segments[2] === "images" &&
+ segments[3]
+ ) {
return `/${segments[0]}/${segments[1]}/${segments[2]}/${segments[3]}`;
}
-
+
// Pour les autres, garder juste le premier segment
return `/${segments[0]}`;
} catch {
- return 'Autres';
+ return "Autres";
}
};
@@ -255,8 +260,8 @@ export function CacheSettings({ initialTTLConfig }: CacheSettingsProps) {
// Trier par date (le plus récent en premier) basé sur le paramètre v
Object.keys(grouped).forEach((key) => {
grouped[key].sort((a, b) => {
- const aVersion = new URL(a.url).searchParams.get('v') || '0';
- const bVersion = new URL(b.url).searchParams.get('v') || '0';
+ const aVersion = new URL(a.url).searchParams.get("v") || "0";
+ const bVersion = new URL(b.url).searchParams.get("v") || "0";
return Number(bVersion) - Number(aVersion);
});
});
@@ -363,13 +368,13 @@ export function CacheSettings({ initialTTLConfig }: CacheSettingsProps) {
if ("serviceWorker" in navigator && "caches" in window) {
const cacheNames = await caches.keys();
await Promise.all(cacheNames.map((cacheName) => caches.delete(cacheName)));
-
+
// Forcer la mise à jour du service worker
const registrations = await navigator.serviceWorker.getRegistrations();
for (const registration of registrations) {
await registration.unregister();
}
-
+
toast({
title: t("settings.cache.title"),
description: t("settings.cache.messages.serviceWorkerCleared"),
@@ -383,7 +388,7 @@ export function CacheSettings({ initialTTLConfig }: CacheSettingsProps) {
if (showSwEntries) {
await fetchSwCacheEntries();
}
-
+
// Recharger la page après 1 seconde pour réenregistrer le SW
setTimeout(() => {
window.location.reload();
@@ -458,7 +463,6 @@ export function CacheSettings({ initialTTLConfig }: CacheSettingsProps) {
{t("settings.cache.description")}
-
{t("settings.cache.mode.label")}
@@ -488,7 +492,9 @@ export function CacheSettings({ initialTTLConfig }: CacheSettingsProps) {
) : (
- {t("settings.cache.size.error")}
+
+ {t("settings.cache.size.error")}
+
)}
@@ -497,7 +503,9 @@ export function CacheSettings({ initialTTLConfig }: CacheSettingsProps) {
{swCacheSize !== null ? (
{formatBytes(swCacheSize)}
) : (
- {t("settings.cache.size.error")}
+
+ {t("settings.cache.size.error")}
+
)}
@@ -506,7 +514,9 @@ export function CacheSettings({ initialTTLConfig }: CacheSettingsProps) {
{apiCacheSize !== null ? (
{formatBytes(apiCacheSize)}
) : (
- {t("settings.cache.size.error")}
+
+ {t("settings.cache.size.error")}
+
)}
@@ -525,11 +535,7 @@ export function CacheSettings({ initialTTLConfig }: CacheSettingsProps) {
{t("settings.cache.entries.serverTitle")}
- {showEntries ? (
-
- ) : (
-
- )}
+ {showEntries ? : }
{showEntries && (
@@ -569,7 +575,10 @@ export function CacheSettings({ initialTTLConfig }: CacheSettingsProps) {
>
{getTimeRemaining(entry.expiry)}
-
+
{new Date(entry.expiry).toLocaleDateString()}
@@ -649,72 +658,90 @@ export function CacheSettings({ initialTTLConfig }: CacheSettingsProps) {
{(() => {
const versionGroups = groupVersions(entries);
- return Object.entries(versionGroups).map(([baseUrl, versions]) => {
- const hasMultipleVersions = versions.length > 1;
- const isVersionExpanded = expandedVersions[baseUrl];
- const totalSize = versions.reduce((sum, v) => sum + v.size, 0);
+ return Object.entries(versionGroups).map(
+ ([baseUrl, versions]) => {
+ const hasMultipleVersions = versions.length > 1;
+ const isVersionExpanded = expandedVersions[baseUrl];
+ const totalSize = versions.reduce(
+ (sum, v) => sum + v.size,
+ 0
+ );
- if (!hasMultipleVersions) {
- const entry = versions[0];
- return (
-
-
-
-
- {entry.url.replace(/^https?:\/\/[^/]+/, "")}
+ if (!hasMultipleVersions) {
+ const entry = versions[0];
+ return (
+
+
+
+
+ {entry.url.replace(/^https?:\/\/[^/]+/, "")}
+
+
+
+ {formatBytes(entry.size)}
-
- {formatBytes(entry.size)}
-
+ );
+ }
+
+ return (
+
+
toggleVersions(baseUrl)}
+ className="w-full flex items-start justify-between gap-2 hover:bg-muted/30 rounded p-1 -m-1 transition-colors"
+ >
+
+ {isVersionExpanded ? (
+
+ ) : (
+
+ )}
+
+ {baseUrl}
+
+
+ {versions.length} versions
+
+
+
+ {formatBytes(totalSize)}
+
+
+ {isVersionExpanded && (
+
+ {versions.map((version, vIdx) => (
+
+
+
+ {new URL(version.url).search ||
+ "(no version)"}
+
+
+
+ {formatBytes(version.size)}
+
+
+ ))}
+
+ )}
);
}
-
- return (
-
-
toggleVersions(baseUrl)}
- className="w-full flex items-start justify-between gap-2 hover:bg-muted/30 rounded p-1 -m-1 transition-colors"
- >
-
- {isVersionExpanded ? (
-
- ) : (
-
- )}
-
- {baseUrl}
-
-
- {versions.length} versions
-
-
-
- {formatBytes(totalSize)}
-
-
- {isVersionExpanded && (
-
- {versions.map((version, vIdx) => (
-
-
-
- {new URL(version.url).search || "(no version)"}
-
-
-
- {formatBytes(version.size)}
-
-
- ))}
-
- )}
-
- );
- });
+ );
})()}
)}
@@ -833,12 +860,24 @@ export function CacheSettings({ initialTTLConfig }: CacheSettingsProps) {
onChange={handleTTLChange}
className="flex h-9 w-full rounded-md border border-input bg-background/70 backdrop-blur-md px-3 py-1 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"
>
-
{t("settings.cache.ttl.imageCacheMaxAge.options.noCache")}
-
{t("settings.cache.ttl.imageCacheMaxAge.options.oneHour")}
-
{t("settings.cache.ttl.imageCacheMaxAge.options.oneDay")}
-
{t("settings.cache.ttl.imageCacheMaxAge.options.oneWeek")}
-
{t("settings.cache.ttl.imageCacheMaxAge.options.oneMonth")}
-
{t("settings.cache.ttl.imageCacheMaxAge.options.oneYear")}
+
+ {t("settings.cache.ttl.imageCacheMaxAge.options.noCache")}
+
+
+ {t("settings.cache.ttl.imageCacheMaxAge.options.oneHour")}
+
+
+ {t("settings.cache.ttl.imageCacheMaxAge.options.oneDay")}
+
+
+ {t("settings.cache.ttl.imageCacheMaxAge.options.oneWeek")}
+
+
+ {t("settings.cache.ttl.imageCacheMaxAge.options.oneMonth")}
+
+
+ {t("settings.cache.ttl.imageCacheMaxAge.options.oneYear")}
+
diff --git a/src/components/settings/ClientSettings.tsx b/src/components/settings/ClientSettings.tsx
index 6ae1b82..55786dc 100644
--- a/src/components/settings/ClientSettings.tsx
+++ b/src/components/settings/ClientSettings.tsx
@@ -21,7 +21,7 @@ export function ClientSettings({ initialConfig, initialTTLConfig }: ClientSettin
return (
{t("settings.title")}
-
+
diff --git a/src/components/settings/KomgaSettings.tsx b/src/components/settings/KomgaSettings.tsx
index 447fcdb..07ddbf8 100644
--- a/src/components/settings/KomgaSettings.tsx
+++ b/src/components/settings/KomgaSettings.tsx
@@ -155,7 +155,6 @@ export function KomgaSettings({ initialConfig }: KomgaSettingsProps) {
{t("settings.komga.description")}
-
{!shouldShowForm ? (
diff --git a/src/components/skeletons/OptimizedSkeletons.tsx b/src/components/skeletons/OptimizedSkeletons.tsx
index ae29b74..ff9952b 100644
--- a/src/components/skeletons/OptimizedSkeletons.tsx
+++ b/src/components/skeletons/OptimizedSkeletons.tsx
@@ -8,16 +8,7 @@ interface OptimizedSkeletonProps {
}
export function OptimizedSkeleton({ className, children }: OptimizedSkeletonProps) {
- return (
-
- {children}
-
- );
+ return
{children}
;
}
export function HomePageSkeleton() {
diff --git a/src/components/ui/ErrorMessage.tsx b/src/components/ui/ErrorMessage.tsx
index 4ab55d0..4219b2e 100644
--- a/src/components/ui/ErrorMessage.tsx
+++ b/src/components/ui/ErrorMessage.tsx
@@ -13,9 +13,9 @@ interface ErrorMessageProps {
retryLabel?: string;
}
-export const ErrorMessage = ({
- errorCode,
- error,
+export const ErrorMessage = ({
+ errorCode,
+ error,
variant = "default",
onRetry,
retryLabel,
@@ -37,12 +37,7 @@ export const ErrorMessage = ({
{message}
{onRetry && (
-
+
)}
@@ -68,11 +63,11 @@ export const ErrorMessage = ({
{t("errors.GENERIC_ERROR")}
{message}
-
+
{onRetry && (
-
diff --git a/src/components/ui/badge.tsx b/src/components/ui/badge.tsx
index 90911e1..66fa0f9 100644
--- a/src/components/ui/badge.tsx
+++ b/src/components/ui/badge.tsx
@@ -24,13 +24,10 @@ const badgeVariants = cva(
);
export interface BadgeProps
- extends React.HTMLAttributes,
- VariantProps {}
+ extends React.HTMLAttributes, VariantProps {}
function Badge({ className, variant, ...props }: BadgeProps) {
- return (
-
- );
+ return
;
}
export { Badge, badgeVariants };
diff --git a/src/components/ui/book-cover.tsx b/src/components/ui/book-cover.tsx
index ff21bcb..cf9a9d8 100644
--- a/src/components/ui/book-cover.tsx
+++ b/src/components/ui/book-cover.tsx
@@ -138,8 +138,8 @@ export function BookCover({
{showOverlay && overlayVariant === "default" && (
- {book.metadata.title ||
- (book.metadata.number
+ {book.metadata.title ||
+ (book.metadata.number
? t("navigation.volume", { number: book.metadata.number })
: "")}
@@ -155,8 +155,8 @@ export function BookCover({
{showOverlay && overlayVariant === "home" && (
- {book.metadata.title ||
- (book.metadata.number
+ {book.metadata.title ||
+ (book.metadata.number
? t("navigation.volume", { number: book.metadata.number })
: "")}
diff --git a/src/components/ui/book-offline-button.tsx b/src/components/ui/book-offline-button.tsx
index 0cbf262..2d27bd3 100644
--- a/src/components/ui/book-offline-button.tsx
+++ b/src/components/ui/book-offline-button.tsx
@@ -273,8 +273,8 @@ export function BookOfflineButton({ book, className }: BookOfflineButtonProps) {
const buttonTitle = isLoading
? `Téléchargement en cours (${Math.round(downloadProgress)}%)`
: isAvailableOffline
- ? "Supprimer hors ligne"
- : "Disponible hors ligne";
+ ? "Supprimer hors ligne"
+ : "Disponible hors ligne";
return (
,
- VariantProps {
+ extends React.ButtonHTMLAttributes, VariantProps {
asChild?: boolean;
}
diff --git a/src/components/ui/card.tsx b/src/components/ui/card.tsx
index ba29868..fa0ec5c 100644
--- a/src/components/ui/card.tsx
+++ b/src/components/ui/card.tsx
@@ -6,7 +6,10 @@ const Card = React.forwardRef (
)
diff --git a/src/components/ui/checkbox.tsx b/src/components/ui/checkbox.tsx
index e1d542b..079ecf2 100644
--- a/src/components/ui/checkbox.tsx
+++ b/src/components/ui/checkbox.tsx
@@ -26,4 +26,3 @@ const Checkbox = React.forwardRef<
Checkbox.displayName = CheckboxPrimitive.Root.displayName;
export { Checkbox };
-
diff --git a/src/components/ui/container.tsx b/src/components/ui/container.tsx
index 7198dc0..b59e5d8 100644
--- a/src/components/ui/container.tsx
+++ b/src/components/ui/container.tsx
@@ -24,8 +24,7 @@ const containerVariants = cva("mx-auto px-2 sm:px-6 lg:px-8", {
});
export interface ContainerProps
- extends React.HTMLAttributes,
- VariantProps {
+ extends React.HTMLAttributes, VariantProps {
as?: React.ElementType;
}
@@ -44,4 +43,3 @@ const Container = React.forwardRef(
Container.displayName = "Container";
export { Container, containerVariants };
-
diff --git a/src/components/ui/cover-client.tsx b/src/components/ui/cover-client.tsx
index 4c20aa6..b375667 100644
--- a/src/components/ui/cover-client.tsx
+++ b/src/components/ui/cover-client.tsx
@@ -56,7 +56,7 @@ export const CoverClient = ({
const timer = setTimeout(() => {
setImageError(false);
setIsLoading(true);
- setRetryCount(prev => prev + 1);
+ setRetryCount((prev) => prev + 1);
}, 2000);
return () => clearTimeout(timer);
@@ -80,9 +80,10 @@ export const CoverClient = ({
};
// Ajouter un timestamp pour forcer le rechargement en cas de retry
- const imageUrlWithRetry = retryCount > 0
- ? `${imageUrl}${imageUrl.includes('?') ? '&' : '?'}retry=${retryCount}`
- : imageUrl;
+ const imageUrlWithRetry =
+ retryCount > 0
+ ? `${imageUrl}${imageUrl.includes("?") ? "&" : "?"}retry=${retryCount}`
+ : imageUrl;
if (imageError) {
return (
diff --git a/src/components/ui/icon-button.tsx b/src/components/ui/icon-button.tsx
index 3a79c0f..441e326 100644
--- a/src/components/ui/icon-button.tsx
+++ b/src/components/ui/icon-button.tsx
@@ -30,4 +30,3 @@ const IconButton = React.forwardRef(
IconButton.displayName = "IconButton";
export { IconButton };
-
diff --git a/src/components/ui/label.tsx b/src/components/ui/label.tsx
index 0c78d76..7adbc84 100644
--- a/src/components/ui/label.tsx
+++ b/src/components/ui/label.tsx
@@ -8,18 +8,12 @@ const labelVariants = cva(
"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
);
-interface LabelProps extends React.LabelHTMLAttributes,
- VariantProps {}
+interface LabelProps
+ extends React.LabelHTMLAttributes, VariantProps {}
-const Label = React.forwardRef(
- ({ className, ...props }, ref) => (
-
- )
-);
+const Label = React.forwardRef(({ className, ...props }, ref) => (
+
+));
Label.displayName = "Label";
export { Label };
diff --git a/src/components/ui/nav-button.tsx b/src/components/ui/nav-button.tsx
index 68dcf47..07bd8eb 100644
--- a/src/components/ui/nav-button.tsx
+++ b/src/components/ui/nav-button.tsx
@@ -25,9 +25,7 @@ const NavButton = React.forwardRef(
{label}
- {count !== undefined && (
-
{count}
- )}
+ {count !== undefined &&
{count} }
);
}
@@ -36,4 +34,3 @@ const NavButton = React.forwardRef
(
NavButton.displayName = "NavButton";
export { NavButton };
-
diff --git a/src/components/ui/progress-bar.tsx b/src/components/ui/progress-bar.tsx
index 9e58bc7..eb2e424 100644
--- a/src/components/ui/progress-bar.tsx
+++ b/src/components/ui/progress-bar.tsx
@@ -6,10 +6,11 @@ interface ProgressBarProps {
export function ProgressBar({ progress, total, type }: ProgressBarProps) {
const percentage = Math.round((progress / total) * 100);
-
- const barColor = type === "series"
- ? "bg-gradient-to-r from-purple-500 to-pink-500"
- : "bg-gradient-to-r from-blue-500 to-cyan-500";
+
+ const barColor =
+ type === "series"
+ ? "bg-gradient-to-r from-purple-500 to-pink-500"
+ : "bg-gradient-to-r from-blue-500 to-cyan-500";
return (
diff --git a/src/components/ui/radio-group.tsx b/src/components/ui/radio-group.tsx
index 8771b92..7ae818c 100644
--- a/src/components/ui/radio-group.tsx
+++ b/src/components/ui/radio-group.tsx
@@ -10,9 +10,7 @@ const RadioGroup = React.forwardRef<
React.ElementRef
,
React.ComponentPropsWithoutRef
>(({ className, ...props }, ref) => {
- return (
-
- );
+ return ;
});
RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
@@ -38,4 +36,3 @@ const RadioGroupItem = React.forwardRef<
RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
export { RadioGroup, RadioGroupItem };
-
diff --git a/src/components/ui/scroll-container.tsx b/src/components/ui/scroll-container.tsx
index 3849b25..25e1f58 100644
--- a/src/components/ui/scroll-container.tsx
+++ b/src/components/ui/scroll-container.tsx
@@ -76,10 +76,7 @@ const ScrollContainer = React.forwardRef(
{children}
@@ -102,4 +99,3 @@ const ScrollContainer = React.forwardRef
(
ScrollContainer.displayName = "ScrollContainer";
export { ScrollContainer };
-
diff --git a/src/components/ui/section.tsx b/src/components/ui/section.tsx
index ce907e2..277ca5b 100644
--- a/src/components/ui/section.tsx
+++ b/src/components/ui/section.tsx
@@ -42,4 +42,3 @@ const Section = React.forwardRef(
Section.displayName = "Section";
export { Section };
-
diff --git a/src/components/ui/separator.tsx b/src/components/ui/separator.tsx
index a9087c3..fab2048 100644
--- a/src/components/ui/separator.tsx
+++ b/src/components/ui/separator.tsx
@@ -24,4 +24,3 @@ const Separator = React.forwardRef(
Separator.displayName = "Separator";
export { Separator };
-
diff --git a/src/components/ui/skeleton.tsx b/src/components/ui/skeleton.tsx
index 2c8324d..6690a13 100644
--- a/src/components/ui/skeleton.tsx
+++ b/src/components/ui/skeleton.tsx
@@ -1,16 +1,7 @@
import { cn } from "@/lib/utils";
-function Skeleton({
- className,
- ...props
-}: React.HTMLAttributes) {
- return (
-
- );
+function Skeleton({ className, ...props }: React.HTMLAttributes) {
+ return
;
}
export { Skeleton };
-
diff --git a/src/components/ui/slider-control.tsx b/src/components/ui/slider-control.tsx
index 29dd2fc..261e02a 100644
--- a/src/components/ui/slider-control.tsx
+++ b/src/components/ui/slider-control.tsx
@@ -69,10 +69,7 @@ export function SliderControl({
- {description && (
- {description}
- )}
+ {description && {description}
}
);
}
-
diff --git a/src/components/ui/slider.tsx b/src/components/ui/slider.tsx
index 1d16806..0a96105 100644
--- a/src/components/ui/slider.tsx
+++ b/src/components/ui/slider.tsx
@@ -1,9 +1,9 @@
-"use client"
+"use client";
-import * as React from "react"
-import * as SliderPrimitive from "@radix-ui/react-slider"
+import * as React from "react";
+import * as SliderPrimitive from "@radix-ui/react-slider";
-import { cn } from "@/lib/utils"
+import { cn } from "@/lib/utils";
const Slider = React.forwardRef<
React.ElementRef
,
@@ -11,11 +11,8 @@ const Slider = React.forwardRef<
>(({ className, ...props }, ref) => (
@@ -23,8 +20,7 @@ const Slider = React.forwardRef<
-))
-Slider.displayName = SliderPrimitive.Root.displayName
-
-export { Slider }
+));
+Slider.displayName = SliderPrimitive.Root.displayName;
+export { Slider };
diff --git a/src/components/ui/status-badge.tsx b/src/components/ui/status-badge.tsx
index 551a11c..dee296b 100644
--- a/src/components/ui/status-badge.tsx
+++ b/src/components/ui/status-badge.tsx
@@ -21,19 +21,14 @@ const statusBadgeVariants = cva("flex items-center gap-1", {
});
export interface StatusBadgeProps
- extends Omit,
- VariantProps {
+ extends Omit, VariantProps {
icon?: LucideIcon;
children: React.ReactNode;
}
const StatusBadge = ({ status, icon: Icon, children, className, ...props }: StatusBadgeProps) => {
return (
-
+
{Icon && }
{children}
@@ -41,4 +36,3 @@ const StatusBadge = ({ status, icon: Icon, children, className, ...props }: Stat
};
export { StatusBadge, statusBadgeVariants };
-
diff --git a/src/components/ui/switch.tsx b/src/components/ui/switch.tsx
index 81e8155..a1629f4 100644
--- a/src/components/ui/switch.tsx
+++ b/src/components/ui/switch.tsx
@@ -3,8 +3,10 @@
import * as React from "react";
import { cn } from "@/lib/utils";
-interface SwitchProps
- extends Omit, "type" | "role" | "aria-checked"> {
+interface SwitchProps extends Omit<
+ React.InputHTMLAttributes,
+ "type" | "role" | "aria-checked"
+> {
onCheckedChange?: (checked: boolean) => void;
}
diff --git a/src/components/ui/table.tsx b/src/components/ui/table.tsx
index 82fe10d..e5dd886 100644
--- a/src/components/ui/table.tsx
+++ b/src/components/ui/table.tsx
@@ -5,11 +5,7 @@ import { cn } from "@/lib/utils";
const Table = React.forwardRef>(
({ className, ...props }, ref) => (
)
);
@@ -37,7 +33,10 @@ const TableFooter = React.forwardRef<
>(({ className, ...props }, ref) => (
tr]:last:border-b-0", className)}
+ className={cn(
+ "border-t bg-muted/50 backdrop-blur-md font-medium [&>tr]:last:border-b-0",
+ className
+ )}
{...props}
/>
));
@@ -93,4 +92,3 @@ const TableCaption = React.forwardRef<
TableCaption.displayName = "TableCaption";
export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };
-
diff --git a/src/components/ui/toast.tsx b/src/components/ui/toast.tsx
index da20cb0..9783342 100644
--- a/src/components/ui/toast.tsx
+++ b/src/components/ui/toast.tsx
@@ -27,7 +27,8 @@ const toastVariants = cva(
{
variants: {
variant: {
- default: "border border-border/40 bg-background/70 backdrop-blur-md text-foreground shadow-lg",
+ default:
+ "border border-border/40 bg-background/70 backdrop-blur-md text-foreground shadow-lg",
destructive:
"destructive group border-destructive/20 bg-destructive/70 backdrop-blur-md text-destructive-foreground font-medium",
},
diff --git a/src/constants/errorCodes.ts b/src/constants/errorCodes.ts
index fda6694..f30467d 100644
--- a/src/constants/errorCodes.ts
+++ b/src/constants/errorCodes.ts
@@ -105,6 +105,10 @@ export const ERROR_CODES = {
} as const;
type Values = T[keyof T];
-type ErrorCodeValues = T extends { [key: string]: infer U } ? U extends { [key: string]: string } ? Values : never : never;
+type ErrorCodeValues = T extends { [key: string]: infer U }
+ ? U extends { [key: string]: string }
+ ? Values
+ : never
+ : never;
export type ErrorCode = ErrorCodeValues;
diff --git a/src/contexts/ImageCacheContext.tsx b/src/contexts/ImageCacheContext.tsx
index df03437..f33c677 100644
--- a/src/contexts/ImageCacheContext.tsx
+++ b/src/contexts/ImageCacheContext.tsx
@@ -56,4 +56,3 @@ export function useImageCache() {
}
return context;
}
-
diff --git a/src/contexts/PreferencesContext.tsx b/src/contexts/PreferencesContext.tsx
index c929c47..a73dfeb 100644
--- a/src/contexts/PreferencesContext.tsx
+++ b/src/contexts/PreferencesContext.tsx
@@ -98,11 +98,7 @@ export function PreferencesProvider({
[preferences, updatePreferences, isLoading]
);
- return (
-
- {children}
-
- );
+ return {children} ;
}
export function usePreferences() {
diff --git a/src/hooks/useBookOfflineStatus.ts b/src/hooks/useBookOfflineStatus.ts
index 9dd8e12..45878e1 100644
--- a/src/hooks/useBookOfflineStatus.ts
+++ b/src/hooks/useBookOfflineStatus.ts
@@ -84,4 +84,3 @@ export function useBookOfflineStatus(bookId: string) {
isAccessible: isAvailableOffline || isOnline,
};
}
-
diff --git a/src/hooks/useImageUrl.ts b/src/hooks/useImageUrl.ts
index 71176f3..70aeab8 100644
--- a/src/hooks/useImageUrl.ts
+++ b/src/hooks/useImageUrl.ts
@@ -7,9 +7,8 @@ import { useMemo } from "react";
*/
export function useImageUrl(baseUrl: string): string {
const { getImageUrl } = useImageCache();
-
+
return useMemo(() => {
return getImageUrl(baseUrl);
}, [baseUrl, getImageUrl]);
}
-
diff --git a/src/hooks/usePullToRefresh.ts b/src/hooks/usePullToRefresh.ts
index 5d51298..e8ee1bf 100644
--- a/src/hooks/usePullToRefresh.ts
+++ b/src/hooks/usePullToRefresh.ts
@@ -43,24 +43,24 @@ export function usePullToRefresh({
const handleTouchStart = (e: TouchEvent) => {
if (isRefreshingRef.current) return;
-
+
// Ignorer les touches sur les éléments interactifs (boutons, liens, menu, etc.)
const target = e.target as HTMLElement;
if (
- target.closest('button') ||
- target.closest('a') ||
+ target.closest("button") ||
+ target.closest("a") ||
target.closest('[role="button"]') ||
- target.closest('nav') ||
- target.closest('header') ||
- target.closest('[data-no-pull-refresh]')
+ target.closest("nav") ||
+ target.closest("header") ||
+ target.closest("[data-no-pull-refresh]")
) {
isValidPull.current = false;
return;
}
-
+
const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
startScrollTop.current = scrollTop;
-
+
// Ne démarrer que si on est vraiment en haut de la page
if (scrollTop === 0) {
startY.current = e.touches[0].clientY;
@@ -77,13 +77,13 @@ export function usePullToRefresh({
const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
currentY.current = e.touches[0].clientY;
const deltaY = currentY.current - startY.current;
-
+
// Vérifier qu'on est toujours en haut ET qu'on tire vers le bas
if (scrollTop === 0 && deltaY > 0) {
const pullDistance = Math.min(deltaY * resistance, threshold * 1.5);
const canRefresh = pullDistance >= threshold;
-
- setState(prev => ({
+
+ setState((prev) => ({
...prev,
isPulling: true,
pullDistance,
@@ -97,7 +97,7 @@ export function usePullToRefresh({
} else if (scrollTop > 0 || deltaY < 0) {
// Si on scrolle ou qu'on tire vers le haut, annuler
isValidPull.current = false;
- setState(prev => ({
+ setState((prev) => ({
...prev,
isPulling: false,
pullDistance: 0,
@@ -109,7 +109,7 @@ export function usePullToRefresh({
const handleTouchEnd = async () => {
if (!isValidPull.current || isRefreshingRef.current) {
isValidPull.current = false;
- setState(prev => ({
+ setState((prev) => ({
...prev,
isPulling: false,
pullDistance: 0,
@@ -119,15 +119,15 @@ export function usePullToRefresh({
}
const shouldRefresh = state.canRefresh;
-
- setState(prev => ({
+
+ setState((prev) => ({
...prev,
isPulling: false,
}));
if (shouldRefresh) {
isRefreshingRef.current = true;
- setState(prev => ({
+ setState((prev) => ({
...prev,
isRefreshing: true,
pullDistance: 0,
@@ -140,14 +140,14 @@ export function usePullToRefresh({
} finally {
isRefreshingRef.current = false;
// Activer l'animation de disparition
- setState(prev => ({
+ setState((prev) => ({
...prev,
isHiding: true,
}));
-
+
// Attendre la fin de l'animation avant de masquer complètement
setTimeout(() => {
- setState(prev => ({
+ setState((prev) => ({
...prev,
isRefreshing: false,
isHiding: false,
@@ -156,13 +156,13 @@ export function usePullToRefresh({
}
} else {
// Animation de retour
- setState(prev => ({
+ setState((prev) => ({
...prev,
pullDistance: 0,
canRefresh: false,
}));
}
-
+
isValidPull.current = false;
};
diff --git a/src/lib/auth-utils.ts b/src/lib/auth-utils.ts
index 2e51560..e56d012 100644
--- a/src/lib/auth-utils.ts
+++ b/src/lib/auth-utils.ts
@@ -3,7 +3,7 @@ import type { UserData } from "@/lib/services/auth-server.service";
export async function getCurrentUser(): Promise {
const session = await auth();
-
+
if (!session?.user) {
return null;
}
@@ -23,14 +23,14 @@ export async function isAdmin(): Promise {
export async function requireAdmin(): Promise {
const user = await getCurrentUser();
-
+
if (!user) {
throw new Error("Unauthenticated");
}
-
+
if (!user.roles.includes("ROLE_ADMIN")) {
throw new Error("Forbidden: Admin access required");
}
-
+
return user;
}
diff --git a/src/lib/auth.ts b/src/lib/auth.ts
index 58ef9e7..147c244 100644
--- a/src/lib/auth.ts
+++ b/src/lib/auth.ts
@@ -22,7 +22,7 @@ export const { handlers, auth, signIn, signOut } = NextAuth({
credentials.email as string,
credentials.password as string
);
-
+
return {
id: userData.id,
email: userData.email,
@@ -61,4 +61,4 @@ export const { handlers, auth, signIn, signOut } = NextAuth({
secret: process.env.NEXTAUTH_SECRET,
trustHost: true,
useSecureCookies: false,
-});
\ No newline at end of file
+});
diff --git a/src/lib/logger.ts b/src/lib/logger.ts
index 2f9e8bf..43c7091 100644
--- a/src/lib/logger.ts
+++ b/src/lib/logger.ts
@@ -1,9 +1,9 @@
-import pino from 'pino';
+import pino from "pino";
-const isProduction = process.env.NODE_ENV === 'production';
+const isProduction = process.env.NODE_ENV === "production";
const logger = pino({
- level: isProduction ? 'info' : 'debug',
+ level: isProduction ? "info" : "debug",
timestamp: pino.stdTimeFunctions.isoTime,
...(isProduction
? {
@@ -15,15 +15,18 @@ const logger = pino({
},
log: (object) => {
// Format readable timestamp in production
- if (object.time && (typeof object.time === 'string' || typeof object.time === 'number')) {
+ if (
+ object.time &&
+ (typeof object.time === "string" || typeof object.time === "number")
+ ) {
const date = new Date(object.time);
- object.time = date.toLocaleString('fr-FR', {
- day: '2-digit',
- month: '2-digit',
- year: 'numeric',
- hour: '2-digit',
- minute: '2-digit',
- second: '2-digit',
+ object.time = date.toLocaleString("fr-FR", {
+ day: "2-digit",
+ month: "2-digit",
+ year: "numeric",
+ hour: "2-digit",
+ minute: "2-digit",
+ second: "2-digit",
});
}
return object;
@@ -32,11 +35,11 @@ const logger = pino({
}
: {
transport: {
- target: 'pino-pretty',
+ target: "pino-pretty",
options: {
colorize: true,
- translateTime: 'SYS:dd/mm/yyyy HH:MM:ss',
- ignore: 'pid,hostname',
+ translateTime: "SYS:dd/mm/yyyy HH:MM:ss",
+ ignore: "pid,hostname",
singleLine: true,
},
},
@@ -49,10 +52,9 @@ const logger = pino({
});
// Prevent memory leaks in development (Node.js runtime only)
-if (!isProduction && typeof process.stdout !== 'undefined') {
+if (!isProduction && typeof process.stdout !== "undefined") {
process.stdout.setMaxListeners?.(20);
process.stderr.setMaxListeners?.(20);
}
export default logger;
-
diff --git a/src/lib/middleware-auth.ts b/src/lib/middleware-auth.ts
index 7af2e59..89c099c 100644
--- a/src/lib/middleware-auth.ts
+++ b/src/lib/middleware-auth.ts
@@ -4,11 +4,11 @@ import logger from "@/lib/logger";
export async function getAuthSession(request: NextRequest) {
try {
- const token = await getToken({
+ const token = await getToken({
req: request,
secret: process.env.NEXTAUTH_SECRET,
});
-
+
if (!token) {
return null;
}
@@ -18,7 +18,7 @@ export async function getAuthSession(request: NextRequest) {
id: token.sub!,
email: token.email!,
roles: JSON.parse(token.roles as string),
- }
+ },
};
} catch (error) {
logger.error({ err: error }, "Auth error in middleware");
diff --git a/src/lib/prisma.ts b/src/lib/prisma.ts
index 5cd3a24..8d38260 100644
--- a/src/lib/prisma.ts
+++ b/src/lib/prisma.ts
@@ -11,4 +11,3 @@ if (process.env.NODE_ENV !== "production") {
}
export default prisma;
-
diff --git a/src/lib/services/admin.service.ts b/src/lib/services/admin.service.ts
index c305b4a..069ba06 100644
--- a/src/lib/services/admin.service.ts
+++ b/src/lib/services/admin.service.ts
@@ -182,19 +182,18 @@ export class AdminService {
try {
await requireAdmin();
- const [totalUsers, usersWithKomga, usersWithPreferences] =
- await Promise.all([
- prisma.user.count(),
- prisma.komgaConfig.count(),
- prisma.preferences.count(),
- ]);
+ const [totalUsers, usersWithKomga, usersWithPreferences] = await Promise.all([
+ prisma.user.count(),
+ prisma.komgaConfig.count(),
+ prisma.preferences.count(),
+ ]);
// Count admin users by fetching all users and filtering
const allUsers = await prisma.user.findMany({
select: { roles: true },
});
- const totalAdmins = allUsers.filter(user =>
- Array.isArray(user.roles) && user.roles.includes("ROLE_ADMIN")
+ const totalAdmins = allUsers.filter(
+ (user) => Array.isArray(user.roles) && user.roles.includes("ROLE_ADMIN")
).length;
return {
@@ -211,4 +210,3 @@ export class AdminService {
}
}
}
-
diff --git a/src/lib/services/base-api.service.ts b/src/lib/services/base-api.service.ts
index be86f4d..731e848 100644
--- a/src/lib/services/base-api.service.ts
+++ b/src/lib/services/base-api.service.ts
@@ -43,14 +43,14 @@ export abstract class BaseApiService {
const preferences = await PreferencesService.getPreferences();
return preferences.komgaMaxConcurrentRequests;
} catch (error) {
- logger.error({ err: error }, 'Failed to get preferences for request queue');
+ logger.error({ err: error }, "Failed to get preferences for request queue");
return 5; // Valeur par défaut
}
});
-
+
this.requestQueueInitialized = true;
} catch (error) {
- logger.error({ err: error }, 'Failed to initialize request queue');
+ logger.error({ err: error }, "Failed to initialize request queue");
}
}
@@ -69,7 +69,7 @@ export abstract class BaseApiService {
const preferences = await PreferencesService.getPreferences();
return preferences.circuitBreakerConfig;
} catch (error) {
- logger.error({ err: error }, 'Failed to get preferences for circuit breaker');
+ logger.error({ err: error }, "Failed to get preferences for circuit breaker");
return {
threshold: 5,
timeout: 30000,
@@ -77,19 +77,16 @@ export abstract class BaseApiService {
};
}
});
-
+
this.circuitBreakerInitialized = true;
} catch (error) {
- logger.error({ err: error }, 'Failed to initialize circuit breaker');
+ logger.error({ err: error }, "Failed to initialize circuit breaker");
}
}
protected static async getKomgaConfig(): Promise {
// Initialiser les services si ce n'est pas déjà fait
- await Promise.all([
- this.initializeRequestQueue(),
- this.initializeCircuitBreaker(),
- ]);
+ await Promise.all([this.initializeRequestQueue(), this.initializeCircuitBreaker()]);
try {
const config: KomgaConfig | null = await ConfigDBService.getConfig();
if (!config) {
@@ -176,103 +173,114 @@ export abstract class BaseApiService {
}
}
- const isDebug = process.env.KOMGA_DEBUG === 'true';
+ const isDebug = process.env.KOMGA_DEBUG === "true";
const startTime = isDebug ? Date.now() : 0;
-
+
if (isDebug) {
const queueStats = {
active: RequestQueueService.getActiveCount(),
queued: RequestQueueService.getQueueLength(),
};
- logger.info({
- url,
- method: options.method || 'GET',
- params,
- isImage: options.isImage,
- noJson: options.noJson,
- queue: queueStats,
- }, '🔵 Komga Request');
+ logger.info(
+ {
+ url,
+ method: options.method || "GET",
+ params,
+ isImage: options.isImage,
+ noJson: options.noJson,
+ queue: queueStats,
+ },
+ "🔵 Komga Request"
+ );
}
// Timeout réduit à 15 secondes pour éviter les blocages longs
const timeoutMs = 15000;
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
-
+
try {
// Utiliser le circuit breaker pour éviter de surcharger Komga
const response = await CircuitBreakerService.execute(async () => {
// Enqueue la requête pour limiter la concurrence
return await RequestQueueService.enqueue(async () => {
- try {
- return await fetch(url, {
- headers,
- ...options,
- signal: controller.signal,
- // Configure undici connection timeouts
- // @ts-ignore - undici-specific options not in standard fetch types
- connectTimeout: timeoutMs,
- bodyTimeout: timeoutMs,
- headersTimeout: timeoutMs,
- });
- } catch (fetchError: any) {
- // Gestion spécifique des erreurs DNS
- if (fetchError?.cause?.code === 'EAI_AGAIN' || fetchError?.code === 'EAI_AGAIN') {
- logger.error(`DNS resolution failed for ${url}. Retrying with different DNS settings...`);
-
- // Retry avec des paramètres DNS différents
- return await fetch(url, {
- headers,
+ try {
+ return await fetch(url, {
+ headers,
...options,
signal: controller.signal,
- // @ts-ignore - undici-specific options
- connectTimeout: timeoutMs,
- bodyTimeout: timeoutMs,
- headersTimeout: timeoutMs,
- // Force IPv4 si IPv6 pose problème
- // @ts-ignore
- family: 4,
- });
- }
-
- // Retry automatique sur timeout de connexion (cold start)
- if (fetchError?.cause?.code === 'UND_ERR_CONNECT_TIMEOUT') {
- logger.info(`⏱️ Connection timeout for ${url}. Retrying once (cold start)...`);
-
- return await fetch(url, {
- headers,
- ...options,
- signal: controller.signal,
- // @ts-ignore - undici-specific options
+ // Configure undici connection timeouts
+ // @ts-ignore - undici-specific options not in standard fetch types
connectTimeout: timeoutMs,
bodyTimeout: timeoutMs,
headersTimeout: timeoutMs,
});
+ } catch (fetchError: any) {
+ // Gestion spécifique des erreurs DNS
+ if (fetchError?.cause?.code === "EAI_AGAIN" || fetchError?.code === "EAI_AGAIN") {
+ logger.error(
+ `DNS resolution failed for ${url}. Retrying with different DNS settings...`
+ );
+
+ // Retry avec des paramètres DNS différents
+ return await fetch(url, {
+ headers,
+ ...options,
+ signal: controller.signal,
+ // @ts-ignore - undici-specific options
+ connectTimeout: timeoutMs,
+ bodyTimeout: timeoutMs,
+ headersTimeout: timeoutMs,
+ // Force IPv4 si IPv6 pose problème
+ // @ts-ignore
+ family: 4,
+ });
+ }
+
+ // Retry automatique sur timeout de connexion (cold start)
+ if (fetchError?.cause?.code === "UND_ERR_CONNECT_TIMEOUT") {
+ logger.info(`⏱️ Connection timeout for ${url}. Retrying once (cold start)...`);
+
+ return await fetch(url, {
+ headers,
+ ...options,
+ signal: controller.signal,
+ // @ts-ignore - undici-specific options
+ connectTimeout: timeoutMs,
+ bodyTimeout: timeoutMs,
+ headersTimeout: timeoutMs,
+ });
+ }
+
+ throw fetchError;
}
-
- throw fetchError;
- }
});
});
clearTimeout(timeoutId);
if (isDebug) {
const duration = Date.now() - startTime;
- logger.info({
- url,
- status: response.status,
- duration: `${duration}ms`,
- ok: response.ok,
- }, '🟢 Komga Response');
+ logger.info(
+ {
+ url,
+ status: response.status,
+ duration: `${duration}ms`,
+ ok: response.ok,
+ },
+ "🟢 Komga Response"
+ );
}
if (!response.ok) {
if (isDebug) {
- logger.error({
- url,
- status: response.status,
- statusText: response.statusText,
- }, '🔴 Komga Error Response');
+ logger.error(
+ {
+ url,
+ status: response.status,
+ statusText: response.statusText,
+ },
+ "🔴 Komga Error Response"
+ );
}
throw new AppError(ERROR_CODES.KOMGA.HTTP_ERROR, {
status: response.status,
@@ -283,20 +291,23 @@ export abstract class BaseApiService {
if (options.isImage) {
return response as T;
}
-
+
if (options.noJson) {
return undefined as T;
}
-
+
return response.json();
} catch (error) {
if (isDebug) {
const duration = Date.now() - startTime;
- logger.error({
- url,
- error: error instanceof Error ? error.message : String(error),
- duration: `${duration}ms`,
- }, '🔴 Komga Request Failed');
+ logger.error(
+ {
+ url,
+ error: error instanceof Error ? error.message : String(error),
+ duration: `${duration}ms`,
+ },
+ "🔴 Komga Request Failed"
+ );
}
throw error;
} finally {
diff --git a/src/lib/services/book.service.ts b/src/lib/services/book.service.ts
index 0663f59..72c4936 100644
--- a/src/lib/services/book.service.ts
+++ b/src/lib/services/book.service.ts
@@ -17,7 +17,7 @@ export class BookService extends BaseApiService {
const maxAge = ttlConfig?.imageCacheMaxAge ?? 2592000;
return maxAge;
} catch (error) {
- logger.error({ err: error }, '[ImageCache] Error fetching TTL config');
+ logger.error({ err: error }, "[ImageCache] Error fetching TTL config");
return 2592000; // 30 jours par défaut en cas d'erreur
}
}
@@ -29,7 +29,7 @@ export class BookService extends BaseApiService {
// Récupération parallèle des détails du tome et des pages
const [book, pages] = await Promise.all([
this.fetchFromApi({ path: `books/${bookId}` }),
- this.fetchFromApi<{ number: number }[]>({ path: `books/${bookId}/pages` })
+ this.fetchFromApi<{ number: number }[]>({ path: `books/${bookId}/pages` }),
]);
return {
@@ -107,15 +107,15 @@ export class BookService extends BaseApiService {
const response: ImageResponse = await ImageService.getImage(
`books/${bookId}/pages/${adjustedPageNumber}?zero_based=true`
);
-
+
// Convertir le Buffer Node.js en ArrayBuffer proprement
const arrayBuffer = response.buffer.buffer.slice(
response.buffer.byteOffset,
response.buffer.byteOffset + response.buffer.byteLength
) as ArrayBuffer;
-
+
const maxAge = await this.getImageCacheMaxAge();
-
+
return new Response(arrayBuffer, {
headers: {
"Content-Type": response.contentType || "image/jpeg",
@@ -165,7 +165,7 @@ export class BookService extends BaseApiService {
`books/${bookId}/pages/${pageNumber}/thumbnail?zero_based=true`
);
const maxAge = await this.getImageCacheMaxAge();
-
+
return new Response(response.buffer.buffer as ArrayBuffer, {
headers: {
"Content-Type": response.contentType || "image/jpeg",
@@ -184,14 +184,16 @@ export class BookService extends BaseApiService {
static async getRandomBookFromLibraries(libraryIds: string[]): Promise {
try {
if (libraryIds.length === 0) {
- throw new AppError(ERROR_CODES.LIBRARY.NOT_FOUND, { message: "Aucune bibliothèque sélectionnée" });
+ throw new AppError(ERROR_CODES.LIBRARY.NOT_FOUND, {
+ message: "Aucune bibliothèque sélectionnée",
+ });
}
const { LibraryService } = await import("./library.service");
// Essayer d'abord d'utiliser le cache des bibliothèques
const allSeriesFromCache: Series[] = [];
-
+
for (const libraryId of libraryIds) {
try {
// Essayer de récupérer les séries depuis le cache (rapide si en cache)
@@ -219,12 +221,14 @@ export class BookService extends BaseApiService {
// Si pas de cache, faire une requête légère : prendre une page de séries d'une bibliothèque au hasard
const randomLibraryIndex = Math.floor(Math.random() * libraryIds.length);
const randomLibraryId = libraryIds[randomLibraryIndex];
-
+
// Récupérer juste une page de séries (pas toutes)
const seriesResponse = await LibraryService.getLibrarySeries(randomLibraryId, 0, 20);
-
+
if (seriesResponse.content.length === 0) {
- throw new AppError(ERROR_CODES.BOOK.NOT_FOUND, { message: "Aucune série trouvée dans les bibliothèques sélectionnées" });
+ throw new AppError(ERROR_CODES.BOOK.NOT_FOUND, {
+ message: "Aucune série trouvée dans les bibliothèques sélectionnées",
+ });
}
// Choisir une série au hasard parmi celles récupérées
@@ -235,7 +239,9 @@ export class BookService extends BaseApiService {
const books = await SeriesService.getAllSeriesBooks(randomSeries.id);
if (books.length === 0) {
- throw new AppError(ERROR_CODES.BOOK.NOT_FOUND, { message: "Aucun livre trouvé dans la série" });
+ throw new AppError(ERROR_CODES.BOOK.NOT_FOUND, {
+ message: "Aucun livre trouvé dans la série",
+ });
}
const randomBookIndex = Math.floor(Math.random() * books.length);
diff --git a/src/lib/services/circuit-breaker.service.ts b/src/lib/services/circuit-breaker.service.ts
index b450d50..32ae8a6 100644
--- a/src/lib/services/circuit-breaker.service.ts
+++ b/src/lib/services/circuit-breaker.service.ts
@@ -6,7 +6,7 @@ import type { CircuitBreakerConfig } from "@/types/preferences";
import logger from "@/lib/logger";
interface CircuitBreakerState {
- state: 'CLOSED' | 'OPEN' | 'HALF_OPEN';
+ state: "CLOSED" | "OPEN" | "HALF_OPEN";
failureCount: number;
lastFailureTime: number;
nextAttemptTime: number;
@@ -14,7 +14,7 @@ interface CircuitBreakerState {
class CircuitBreaker {
private state: CircuitBreakerState = {
- state: 'CLOSED',
+ state: "CLOSED",
failureCount: 0,
lastFailureTime: 0,
nextAttemptTime: 0,
@@ -48,7 +48,7 @@ class CircuitBreaker {
resetTimeout: prefConfig.resetTimeout ?? 60000,
};
} catch (error) {
- logger.error({ err: error }, 'Error getting circuit breaker config from preferences');
+ logger.error({ err: error }, "Error getting circuit breaker config from preferences");
return this.config;
}
}
@@ -57,12 +57,12 @@ class CircuitBreaker {
async execute(operation: () => Promise): Promise {
const config = await this.getCurrentConfig();
-
- if (this.state.state === 'OPEN') {
+
+ if (this.state.state === "OPEN") {
if (Date.now() < this.state.nextAttemptTime) {
- throw new Error('Circuit breaker is OPEN - Komga service unavailable');
+ throw new Error("Circuit breaker is OPEN - Komga service unavailable");
}
- this.state.state = 'HALF_OPEN';
+ this.state.state = "HALF_OPEN";
}
try {
@@ -76,10 +76,10 @@ class CircuitBreaker {
}
private onSuccess(): void {
- if (this.state.state === 'HALF_OPEN') {
+ if (this.state.state === "HALF_OPEN") {
this.state.failureCount = 0;
- this.state.state = 'CLOSED';
- logger.info('[CIRCUIT-BREAKER] ✅ Circuit closed - Komga recovered');
+ this.state.state = "CLOSED";
+ logger.info("[CIRCUIT-BREAKER] ✅ Circuit closed - Komga recovered");
}
}
@@ -88,9 +88,11 @@ class CircuitBreaker {
this.state.lastFailureTime = Date.now();
if (this.state.failureCount >= config.failureThreshold) {
- this.state.state = 'OPEN';
+ this.state.state = "OPEN";
this.state.nextAttemptTime = Date.now() + config.resetTimeout;
- logger.warn(`[CIRCUIT-BREAKER] 🔴 Circuit OPEN - Komga failing (${this.state.failureCount} failures, reset in ${config.resetTimeout}ms)`);
+ logger.warn(
+ `[CIRCUIT-BREAKER] 🔴 Circuit OPEN - Komga failing (${this.state.failureCount} failures, reset in ${config.resetTimeout}ms)`
+ );
}
}
@@ -100,12 +102,12 @@ class CircuitBreaker {
reset(): void {
this.state = {
- state: 'CLOSED',
+ state: "CLOSED",
failureCount: 0,
lastFailureTime: 0,
nextAttemptTime: 0,
};
- logger.info('[CIRCUIT-BREAKER] 🔄 Circuit reset');
+ logger.info("[CIRCUIT-BREAKER] 🔄 Circuit reset");
}
}
diff --git a/src/lib/services/preferences.service.ts b/src/lib/services/preferences.service.ts
index 89e0771..9bb6a3e 100644
--- a/src/lib/services/preferences.service.ts
+++ b/src/lib/services/preferences.service.ts
@@ -2,7 +2,11 @@ import prisma from "@/lib/prisma";
import { getCurrentUser } from "../auth-utils";
import { ERROR_CODES } from "../../constants/errorCodes";
import { AppError } from "../../utils/errors";
-import type { UserPreferences, BackgroundPreferences, CircuitBreakerConfig } from "@/types/preferences";
+import type {
+ UserPreferences,
+ BackgroundPreferences,
+ CircuitBreakerConfig,
+} from "@/types/preferences";
import { defaultPreferences } from "@/types/preferences";
import type { User } from "@/types/komga";
import type { Prisma } from "@prisma/client";
@@ -20,17 +24,17 @@ export class PreferencesService {
try {
const user = await this.getCurrentUser();
const userId = parseInt(user.id, 10);
-
+
const preferences = await prisma.preferences.findUnique({
where: { userId },
});
-
+
if (!preferences) {
return { ...defaultPreferences };
}
const displayMode = preferences.displayMode as UserPreferences["displayMode"];
-
+
return {
showThumbnails: preferences.showThumbnails,
cacheMode: preferences.cacheMode as "memory" | "file",
@@ -57,16 +61,21 @@ export class PreferencesService {
try {
const user = await this.getCurrentUser();
const userId = parseInt(user.id, 10);
-
+
const updateData: Record = {};
- if (preferences.showThumbnails !== undefined) updateData.showThumbnails = preferences.showThumbnails;
+ if (preferences.showThumbnails !== undefined)
+ updateData.showThumbnails = preferences.showThumbnails;
if (preferences.cacheMode !== undefined) updateData.cacheMode = preferences.cacheMode;
- if (preferences.showOnlyUnread !== undefined) updateData.showOnlyUnread = preferences.showOnlyUnread;
+ if (preferences.showOnlyUnread !== undefined)
+ updateData.showOnlyUnread = preferences.showOnlyUnread;
if (preferences.displayMode !== undefined) updateData.displayMode = preferences.displayMode;
if (preferences.background !== undefined) updateData.background = preferences.background;
- if (preferences.komgaMaxConcurrentRequests !== undefined) updateData.komgaMaxConcurrentRequests = preferences.komgaMaxConcurrentRequests;
- if (preferences.readerPrefetchCount !== undefined) updateData.readerPrefetchCount = preferences.readerPrefetchCount;
- if (preferences.circuitBreakerConfig !== undefined) updateData.circuitBreakerConfig = preferences.circuitBreakerConfig;
+ if (preferences.komgaMaxConcurrentRequests !== undefined)
+ updateData.komgaMaxConcurrentRequests = preferences.komgaMaxConcurrentRequests;
+ if (preferences.readerPrefetchCount !== undefined)
+ updateData.readerPrefetchCount = preferences.readerPrefetchCount;
+ if (preferences.circuitBreakerConfig !== undefined)
+ updateData.circuitBreakerConfig = preferences.circuitBreakerConfig;
const updatedPreferences = await prisma.preferences.upsert({
where: { userId },
@@ -77,8 +86,10 @@ export class PreferencesService {
cacheMode: preferences.cacheMode ?? defaultPreferences.cacheMode,
showOnlyUnread: preferences.showOnlyUnread ?? defaultPreferences.showOnlyUnread,
displayMode: preferences.displayMode ?? defaultPreferences.displayMode,
- background: (preferences.background ?? defaultPreferences.background) as unknown as Prisma.InputJsonValue,
- circuitBreakerConfig: (preferences.circuitBreakerConfig ?? defaultPreferences.circuitBreakerConfig) as unknown as Prisma.InputJsonValue,
+ background: (preferences.background ??
+ defaultPreferences.background) as unknown as Prisma.InputJsonValue,
+ circuitBreakerConfig: (preferences.circuitBreakerConfig ??
+ defaultPreferences.circuitBreakerConfig) as unknown as Prisma.InputJsonValue,
komgaMaxConcurrentRequests: preferences.komgaMaxConcurrentRequests ?? 5,
readerPrefetchCount: preferences.readerPrefetchCount ?? 5,
},
@@ -92,7 +103,8 @@ export class PreferencesService {
background: updatedPreferences.background as unknown as BackgroundPreferences,
komgaMaxConcurrentRequests: updatedPreferences.komgaMaxConcurrentRequests,
readerPrefetchCount: updatedPreferences.readerPrefetchCount,
- circuitBreakerConfig: updatedPreferences.circuitBreakerConfig as unknown as CircuitBreakerConfig,
+ circuitBreakerConfig:
+ updatedPreferences.circuitBreakerConfig as unknown as CircuitBreakerConfig,
};
} catch (error) {
if (error instanceof AppError) {
diff --git a/src/lib/services/request-deduplication.service.ts b/src/lib/services/request-deduplication.service.ts
index e0dfb6b..5300778 100644
--- a/src/lib/services/request-deduplication.service.ts
+++ b/src/lib/services/request-deduplication.service.ts
@@ -67,4 +67,3 @@ class RequestDeduplicationService {
// Singleton instance
export const requestDeduplicationService = new RequestDeduplicationService();
-
diff --git a/src/lib/services/request-monitor.service.ts b/src/lib/services/request-monitor.service.ts
index 1623994..1a4f9c3 100644
--- a/src/lib/services/request-monitor.service.ts
+++ b/src/lib/services/request-monitor.service.ts
@@ -29,7 +29,7 @@ class RequestMonitor {
private checkThresholds(): void {
const count = this.activeRequests;
-
+
if (count >= this.thresholds.critical) {
logger.warn(`[REQUEST-MONITOR] 🔴 CRITICAL concurrency: ${count} active requests`);
} else if (count >= this.thresholds.high) {
@@ -42,5 +42,3 @@ class RequestMonitor {
// Singleton instance
export const RequestMonitorService = new RequestMonitor();
-
-
diff --git a/src/lib/services/request-queue.service.ts b/src/lib/services/request-queue.service.ts
index e554ba2..7658b9c 100644
--- a/src/lib/services/request-queue.service.ts
+++ b/src/lib/services/request-queue.service.ts
@@ -36,7 +36,7 @@ class RequestQueue {
try {
return await this.getMaxConcurrent();
} catch (error) {
- logger.error({ err: error }, 'Error getting maxConcurrent from preferences, using default');
+ logger.error({ err: error }, "Error getting maxConcurrent from preferences, using default");
return this.maxConcurrent;
}
}
@@ -47,17 +47,17 @@ class RequestQueue {
return new Promise((resolve, reject) => {
// Limiter la taille de la queue pour éviter l'accumulation
if (this.queue.length >= 50) {
- reject(new Error('Request queue is full - Komga may be overloaded'));
+ reject(new Error("Request queue is full - Komga may be overloaded"));
return;
}
-
+
this.queue.push({ execute, resolve, reject });
this.processQueue();
});
}
private async delay(ms: number): Promise {
- return new Promise(resolve => setTimeout(resolve, ms));
+ return new Promise((resolve) => setTimeout(resolve, ms));
}
private async processQueue(): Promise {
@@ -77,7 +77,7 @@ class RequestQueue {
try {
// Délai adaptatif : plus long si la queue est pleine
// Désactivé en mode debug pour ne pas ralentir les tests
- const isDebug = process.env.KOMGA_DEBUG === 'true';
+ const isDebug = process.env.KOMGA_DEBUG === "true";
if (!isDebug) {
const delayMs = this.queue.length > 10 ? 500 : 200;
await this.delay(delayMs);
@@ -107,4 +107,3 @@ class RequestQueue {
// Singleton instance - Par défaut limite à 5 requêtes simultanées
export const RequestQueueService = new RequestQueue(5);
-
diff --git a/src/lib/services/series.service.ts b/src/lib/services/series.service.ts
index 9d19353..e8d0f72 100644
--- a/src/lib/services/series.service.ts
+++ b/src/lib/services/series.service.ts
@@ -20,7 +20,7 @@ export class SeriesService extends BaseApiService {
const maxAge = ttlConfig?.imageCacheMaxAge ?? 2592000;
return maxAge;
} catch (error) {
- logger.error({ err: error }, '[ImageCache] Error fetching TTL config');
+ logger.error({ err: error }, "[ImageCache] Error fetching TTL config");
return 2592000; // 30 jours par défaut en cas d'erreur
}
}
diff --git a/src/lib/services/server-cache.service.ts b/src/lib/services/server-cache.service.ts
index e7a4dc1..1262a64 100644
--- a/src/lib/services/server-cache.service.ts
+++ b/src/lib/services/server-cache.service.ts
@@ -94,7 +94,10 @@ class ServerCacheService {
try {
fs.rmdirSync(itemPath);
} catch (error) {
- logger.error({ err: error, path: itemPath }, `Could not remove directory ${itemPath}`);
+ logger.error(
+ { err: error, path: itemPath },
+ `Could not remove directory ${itemPath}`
+ );
isEmpty = false;
}
} else {
@@ -393,7 +396,10 @@ class ServerCacheService {
try {
fs.rmdirSync(itemPath);
} catch (error) {
- logger.error({ err: error, path: itemPath }, `Could not remove directory ${itemPath}`);
+ logger.error(
+ { err: error, path: itemPath },
+ `Could not remove directory ${itemPath}`
+ );
}
} else {
try {
@@ -435,16 +441,18 @@ class ServerCacheService {
const cacheKey = `${user.id}-${key}`;
const cachedResult = this.getStale(cacheKey);
-
+
if (cachedResult !== null) {
const { data, isStale } = cachedResult;
const endTime = performance.now();
// Debug logging
- if (process.env.CACHE_DEBUG === 'true') {
- const icon = isStale ? '⚠️' : '✅';
- const status = isStale ? 'STALE' : 'HIT';
- logger.debug(`${icon} [CACHE ${status}] ${key} | ${type} | ${(endTime - startTime).toFixed(2)}ms`);
+ if (process.env.CACHE_DEBUG === "true") {
+ const icon = isStale ? "⚠️" : "✅";
+ const status = isStale ? "STALE" : "HIT";
+ logger.debug(
+ `${icon} [CACHE ${status}] ${key} | ${type} | ${(endTime - startTime).toFixed(2)}ms`
+ );
}
// Si le cache est expiré, revalider en background sans bloquer la réponse
@@ -457,19 +465,19 @@ class ServerCacheService {
}
// Pas de cache du tout, fetch normalement
- if (process.env.CACHE_DEBUG === 'true') {
+ if (process.env.CACHE_DEBUG === "true") {
logger.debug(`❌ [CACHE MISS] ${key} | ${type}`);
}
try {
const data = await fetcher();
this.set(cacheKey, data, type);
-
+
const endTime = performance.now();
- if (process.env.CACHE_DEBUG === 'true') {
+ if (process.env.CACHE_DEBUG === "true") {
logger.debug(`💾 [CACHE SET] ${key} | ${type} | ${(endTime - startTime).toFixed(2)}ms`);
}
-
+
return data;
} catch (error) {
throw error;
@@ -489,10 +497,12 @@ class ServerCacheService {
const startTime = performance.now();
const data = await fetcher();
this.set(cacheKey, data, type);
-
- if (process.env.CACHE_DEBUG === 'true') {
+
+ if (process.env.CACHE_DEBUG === "true") {
const endTime = performance.now();
- logger.debug(`🔄 [CACHE REVALIDATE] ${debugKey} | ${type} | ${(endTime - startTime).toFixed(2)}ms`);
+ logger.debug(
+ `🔄 [CACHE REVALIDATE] ${debugKey} | ${type} | ${(endTime - startTime).toFixed(2)}ms`
+ );
}
} catch (error) {
logger.error({ err: error, key: debugKey }, `🔴 [CACHE REVALIDATE ERROR] ${debugKey}`);
diff --git a/src/lib/services/user.service.ts b/src/lib/services/user.service.ts
index c13c53f..5b858d6 100644
--- a/src/lib/services/user.service.ts
+++ b/src/lib/services/user.service.ts
@@ -53,10 +53,7 @@ export class UserService {
}
}
- static async changePassword(
- currentPassword: string,
- newPassword: string
- ): Promise {
+ static async changePassword(currentPassword: string, newPassword: string): Promise {
try {
const currentUser = await getCurrentUser();
if (!currentUser) {
@@ -128,4 +125,3 @@ export class UserService {
}
}
}
-
diff --git a/src/lib/utils/image-url.ts b/src/lib/utils/image-url.ts
index ec62949..6899c30 100644
--- a/src/lib/utils/image-url.ts
+++ b/src/lib/utils/image-url.ts
@@ -8,4 +8,3 @@ export function getImageUrl(type: "series" | "book", id: string) {
}
return `/api/komga/images/books/${id}/thumbnail`;
}
-
diff --git a/src/middleware.ts b/src/middleware.ts
index 55d2ad1..bfc27fe 100644
--- a/src/middleware.ts
+++ b/src/middleware.ts
@@ -39,7 +39,7 @@ export default async function middleware(request: NextRequest) {
// Vérifier l'authentification avec NextAuth v5
const session = await getAuthSession(request);
-
+
if (!session) {
if (pathname.startsWith("/api/")) {
return NextResponse.json(
@@ -85,4 +85,4 @@ export const config = {
*/
"/((?!api/auth|api/health|_next/static|_next/image|fonts|images|manifest.json|favicon|sitemap.xml|sw.js|offline.html).*)",
],
-};
\ No newline at end of file
+};
diff --git a/src/styles/globals.css b/src/styles/globals.css
index b704bfa..d67b9dd 100644
--- a/src/styles/globals.css
+++ b/src/styles/globals.css
@@ -98,7 +98,7 @@ body.no-pinch-zoom * {
body {
@apply text-foreground;
}
-
+
/* Empêche le zoom automatique iOS sur les inputs */
input,
textarea,
@@ -126,7 +126,7 @@ body.no-pinch-zoom * {
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
}
-
+
.glass-strong {
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
diff --git a/src/types/home.ts b/src/types/home.ts
index bf4b70a..349a0b4 100644
--- a/src/types/home.ts
+++ b/src/types/home.ts
@@ -7,4 +7,3 @@ export interface HomeData {
onDeck: KomgaBook[];
latestSeries: KomgaSeries[];
}
-
diff --git a/src/types/next-auth.d.ts b/src/types/next-auth.d.ts
index 2c336e8..186420c 100644
--- a/src/types/next-auth.d.ts
+++ b/src/types/next-auth.d.ts
@@ -20,4 +20,4 @@ declare module "next-auth/jwt" {
interface JWT {
roles: string; // Stocké comme string JSON
}
-}
\ No newline at end of file
+}
diff --git a/src/utils/image-errors.ts b/src/utils/image-errors.ts
index 38b6e5b..83ce284 100644
--- a/src/utils/image-errors.ts
+++ b/src/utils/image-errors.ts
@@ -7,17 +7,16 @@ import { ERROR_CODES } from "@/constants/errorCodes";
*/
export function findHttpStatus(error: unknown): number | null {
if (!(error instanceof AppError)) return null;
-
+
// Si c'est une erreur HTTP, récupérer le status
if (error.code === ERROR_CODES.KOMGA.HTTP_ERROR) {
return (error.params as any)?.status || null;
}
-
+
// Sinon, chercher récursivement dans originalError
if (error.originalError) {
return findHttpStatus(error.originalError);
}
-
+
return null;
}
-