diff --git a/.changeset/backend-adaptation-improvements.md b/.changeset/backend-adaptation-improvements.md new file mode 100644 index 00000000..a00089be --- /dev/null +++ b/.changeset/backend-adaptation-improvements.md @@ -0,0 +1,22 @@ +--- +"@burnt-labs/abstraxion-core": minor +"@burnt-labs/tailwind-config": patch +--- + +# Backend adaptation improvements + +Core changes: + +- Added gas price configuration to the AbstraxionAuth's getSigner method + +Backend Session Demo: + +- Added comprehensive error handling system with custom error classes +- Enhanced session key management with improved validation and refresh logic +- Added audit logging capabilities for security and compliance +- Improved state management with automatic cleanup using node-cache +- Added encryption service integration for secure session key storage +- Enhanced database adapter interface with audit event support +- Added configuration validation with proper error messages +- Added session key expiry and refresh threshold management +- Enhanced security with proper error propagation and logging diff --git a/apps/backend-session/.eslintrc.js b/apps/backend-session/.eslintrc.js new file mode 100644 index 00000000..c168df5e --- /dev/null +++ b/apps/backend-session/.eslintrc.js @@ -0,0 +1,18 @@ +module.exports = { + root: true, + extends: ["@burnt-labs/eslint-config-custom/next"], + rules: { + "no-console": ["error", { allow: ["warn", "error"] }], + "no-alert": "off", + "import/no-default-export": "off", + }, + env: { + node: true, + es2022: true, + }, + parserOptions: { + ecmaVersion: 2022, + sourceType: "module", + }, + ignorePatterns: ["node_modules/", "dist/", ".next/"], +}; diff --git a/apps/backend-session/.gitignore b/apps/backend-session/.gitignore new file mode 100644 index 00000000..e85a9fd8 --- /dev/null +++ b/apps/backend-session/.gitignore @@ -0,0 +1,49 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.yarn/install-state.gz + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local +.env + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts + +# prisma +/prisma/dev.db +/prisma/dev.db-journal +/prisma/test.db + +# IDE +.vscode/ +.idea/ + +# OS +Thumbs.db \ No newline at end of file diff --git a/apps/backend-session/README.md b/apps/backend-session/README.md new file mode 100644 index 00000000..47ac2f20 --- /dev/null +++ b/apps/backend-session/README.md @@ -0,0 +1,332 @@ +# Backend Session - XION Wallet Connection Management + +A NextJS application that provides backend API services for managing XION wallet connections using session keys. This application implements secure session key management with automatic rotation, expiry handling, and comprehensive audit logging. + +## Features + +- **Wallet Connection Management**: Initiate and manage wallet connections +- **Session Key Management**: Secure generation, storage, and rotation of session keys +- **Database Integration**: Prisma-based database with SQLite for development +- **Security**: Encryption of sensitive data, rate limiting, and audit logging +- **Key Rotation**: Automatic key rotation and expiry handling +- **Frontend UI**: Simple React interface for testing and demonstration + +## Prerequisites + +- Node.js 20+ +- pnpm 8+ +- SQLite 3.30+ + +You need to setup the XION Treasury before you can use this application. Learn more about [how to setup the XION Treasury](https://docs.burnt.com/xion/developers/getting-started-advanced/gasless-ux-and-permission-grants/treasury-contracts). + +The required permission types in the Treasury you setup for this application to work are: + +- `Send Funds` + +After the treasury is setup, you can get the treasury address from the developer portal. + +## Environment Variables + +Create a `.env` file in the project root: + +```env +# Database +DATABASE_URL="file:./dev.db" + +# XION Configuration +XION_RPC_URL="https://rpc.xion-testnet-2.burnt.com/" +XION_REST_URL="https://api.xion-testnet-2.burnt.com/" +XION_REDIRECT_URL="http://localhost:3000/api/callback/grant_session" +XION_TREASURY="xion1..." # Your Treasury address + +# Security +ENCRYPTION_KEY="your-base64-encoded-aes-256-key-here" # Generate a secure encryption key using the script provided in the project root + +# Session Configuration (Optional) +SESSION_KEY_EXPIRY_MS=864000000 # 10 days +REFRESH_THRESHOLD_MS=3600000 # 1 hour + +# Rate Limiting (Optional) +RATE_LIMIT_WINDOW_MS=900000 # 15 minutes +RATE_LIMIT_MAX_REQUESTS=100 # Maximum number of requests per window +``` + +## Getting Started + +1. **Install Dependencies** + + ```bash + pnpm install + ``` + +2. **Quick Setup (Recommended)** + + ```bash + chmod +x scripts/setup.sh + ./scripts/setup.sh + ``` + + This script will: + - Create `.env` file from template + - Generate encryption key + - Install dependencies + - Set up database + - Seed with sample data + +3. **Manual Setup (Alternative)** + + ```bash + # Set up Environment Variables + cp env.example .env + # Edit .env with your configuration + + # Generate Encryption Key + pnpm run generate-key + + # Set up Database + pnpm run db:build + pnpm run db:push + pnpm run db:seed + ``` + +4. **Start Development Server** + + ```bash + pnpm run dev + ``` + +5. **Open Application** + Navigate to `http://localhost:3000` + +## Scripts + +- `pnpm run dev` - Start development server +- `pnpm run build` - Build for production +- `pnpm run start` - Start production server +- `pnpm run db:build` - Generate Prisma client +- `pnpm run db:push` - Push schema to database +- `pnpm run db:migrate` - Run database migrations +- `pnpm run db:format` - Format Prisma schema +- `pnpm run db:seed` - Seed database with sample data +- `pnpm run test` - Run tests +- `pnpm run test:watch` - Run tests in watch mode +- `pnpm run test:coverage` - Run tests with coverage + +## API Endpoints + +### POST /api/wallet/connect + +Initiate wallet connection flow and generate session key. + +**Request Body:** + +```json +{ + "username": "string", + "permissions": { + "contracts": ["string"], + "bank": [{"denom": "string", "amount": "string"}], + "stake": boolean, + "treasury": "string", + "expiry": number + } +} +``` + +**Response:** + +```json +{ + "success": true, + "data": { + "sessionKeyAddress": "string", + "authorizationUrl": "string", + "state": "string" + } +} +``` + +### DELETE /api/wallet/disconnect + +Revoke session key and clear database entries. + +**Request Body:** + +```json +{ + "username": "string" +} +``` + +**Response:** + +```json +{ + "success": true, + "data": { + "success": true + } +} +``` + +### GET /api/wallet/status + +Check connection status and return wallet information. + +**Query Parameters:** + +- `username`: string (required) + +**Response:** + +```json +{ + "success": true, + "data": { + "connected": boolean, + "sessionKeyAddress": "string", + "metaAccountAddress": "string", + "permissions": {}, + "expiresAt": number, + "state": "string" + } +} +``` + +### GET /api/health + +Health check endpoint to verify service status and database connectivity. + +**Response:** + +```json +{ + "success": true, + "data": { + "status": "healthy", + "database": "connected" + } +} +``` + +## Database Schema + +### User + +- `id`: Primary key +- `username`: Unique username +- `email`: Optional email address +- `createdAt`: Creation timestamp +- `updatedAt`: Last update timestamp + +### SessionKey + +- `id`: Primary key +- `userId`: Foreign key to User +- `sessionKeyAddress`: XION address of the session key +- `sessionKeyMaterial`: Encrypted private key +- `sessionKeyExpiry`: Expiration timestamp +- `sessionPermissions`: JSON string of permissions +- `sessionState`: Current state (PENDING, ACTIVE, EXPIRED, REVOKED) +- `metaAccountAddress`: XION meta account address +- `createdAt`: Creation timestamp +- `updatedAt`: Last update timestamp + +### AuditLog + +- `id`: Primary key +- `userId`: Foreign key to User +- `action`: Audit action type +- `timestamp`: Event timestamp +- `details`: JSON string of event details +- `ipAddress`: Optional IP address +- `userAgent`: Optional user agent + +## Security Features + +### Encryption + +- All sensitive data (private keys) is encrypted using AES-256-CBC +- Encryption keys are generated securely and stored in environment variables +- Each encryption operation uses a unique IV for security + +### Rate Limiting + +- API endpoints are protected with rate limiting +- Configurable window and request limits +- Prevents abuse and DoS attacks + +### Key Rotation + +- Automatic key rotation before expiry +- Configurable refresh threshold +- Background monitoring service + +### Audit Logging + +- Comprehensive audit trail for all operations +- IP address and user agent tracking +- Detailed event logging with timestamps + +### API Middleware + +- Centralized API middleware for common functionality +- Request validation using Zod schemas +- Standardized error handling and response formatting +- Rate limiting with configurable strictness levels +- User authentication and authorization helpers + +## Testing + +The project includes comprehensive tests for: + +- API endpoints +- Security functions +- Database operations +- Key rotation logic + +Run tests with: + +```bash +pnpm run test +``` + +## Architecture + +```text +src/ +├── app/ +│ ├── api/ +│ │ ├── health/ # Health check endpoint +│ │ └── wallet/ # Wallet API endpoints +│ ├── globals.css # Global styles +│ ├── layout.tsx # Root layout +│ └── page.tsx # Main page +├── lib/ +│ ├── abstraxion-backend.ts # AbstraxionBackend integration +│ ├── api-middleware.ts # API middleware utilities +│ ├── api-response.ts # Standardized API responses +│ ├── api-wrapper.ts # API wrapper functions +│ ├── database.ts # Database adapter +│ ├── rate-limit.ts # Rate limiting +│ ├── security.ts # Security utilities +│ └── validation.ts # Request validation +└── __tests__/ # Test files +``` + +## Dependencies + +- **NextJS 14**: React framework +- **Prisma**: Database ORM +- **@/lib/xion/backend**: XION backend library +- **@burnt-labs/abstraxion-core**: XION core utilities +- **@burnt-labs/constants**: Shared constants +- **@burnt-labs/ui**: UI component library +- **Zod**: Schema validation +- **Rate Limiter Flexible**: Rate limiting +- **Jest**: Testing framework +- **tsx**: TypeScript execution for scripts + +## License + +MIT License - see LICENSE file for details diff --git a/apps/backend-session/env.example b/apps/backend-session/env.example new file mode 100644 index 00000000..e8c5d8f0 --- /dev/null +++ b/apps/backend-session/env.example @@ -0,0 +1,25 @@ +NEXTJS_ENV=development + +# Database +DATABASE_URL="file:./dev.db" + +# XION Configuration +XION_RPC_URL="https://rpc.xion-testnet-2.burnt.com/" +XION_REST_URL="https://api.xion-testnet-2.burnt.com/" +XION_REDIRECT_URL="http://localhost:3000/api/callback/grant_session" +XION_TREASURY="xion1..." + +# NextAuth Configuration +NEXTAUTH_URL="http://localhost:3000" +NEXTAUTH_SECRET="your-nextauth-secret-key-here" + +# Security +ENCRYPTION_KEY="your-base64-encoded-aes-256-key-here" + +# Session Configuration +SESSION_KEY_EXPIRY_MS=864000000 # 10 days +REFRESH_THRESHOLD_MS=3600000 + +# Rate Limiting +RATE_LIMIT_WINDOW_MS=900000 +RATE_LIMIT_MAX_REQUESTS=100 diff --git a/apps/backend-session/jest.config.js b/apps/backend-session/jest.config.js new file mode 100644 index 00000000..fd114cc1 --- /dev/null +++ b/apps/backend-session/jest.config.js @@ -0,0 +1,19 @@ +const nextJest = require('next/jest'); + +const createJestConfig = nextJest({ + // Provide the path to your Next.js app to load next.config.js and .env files + dir: './', +}); + +// Add any custom config to be passed to Jest +const customJestConfig = { + setupFilesAfterEnv: ['/jest.setup.js'], + testEnvironment: 'node', + testPathIgnorePatterns: ['/.next/', '/node_modules/'], + moduleNameMapper: { + '^@/(.*)$': '/src/$1', + }, +}; + +// createJestConfig is exported this way to ensure that next/jest can load the Next.js config which is async +module.exports = createJestConfig(customJestConfig); \ No newline at end of file diff --git a/apps/backend-session/jest.setup.js b/apps/backend-session/jest.setup.js new file mode 100644 index 00000000..ff31bc6c --- /dev/null +++ b/apps/backend-session/jest.setup.js @@ -0,0 +1,12 @@ +// Polyfills for Node.js environment +import { TextEncoder, TextDecoder } from 'util'; + +global.TextEncoder = TextEncoder; +global.TextDecoder = TextDecoder; + +// Mock crypto for tests +Object.defineProperty(global, 'crypto', { + value: { + getRandomValues: (arr) => require('crypto').randomBytes(arr.length), + }, +}); diff --git a/apps/backend-session/next-env.d.ts b/apps/backend-session/next-env.d.ts new file mode 100644 index 00000000..40c3d680 --- /dev/null +++ b/apps/backend-session/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information. diff --git a/apps/backend-session/next.config.js b/apps/backend-session/next.config.js new file mode 100644 index 00000000..e35c67a5 --- /dev/null +++ b/apps/backend-session/next.config.js @@ -0,0 +1,12 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + experimental: { + serverComponentsExternalPackages: ['@prisma/client'], + }, + eslint: { + // Only run ESLint on pages and API routes during build + dirs: ['src/app', 'src/lib'], + }, +} + +module.exports = nextConfig diff --git a/apps/backend-session/package.json b/apps/backend-session/package.json new file mode 100644 index 00000000..cc50f9b1 --- /dev/null +++ b/apps/backend-session/package.json @@ -0,0 +1,70 @@ +{ + "name": "backend-session", + "version": "1.0.0", + "private": true, + "scripts": { + "dev": "next dev --port 3000", + "build": "next build", + "start": "next start", + "lint": "next lint", + "db:build": "prisma generate", + "db:format": "prisma format", + "db:migrate": "prisma migrate dev", + "db:push": "prisma db push", + "db:studio": "prisma studio", + "db:seed": "tsx prisma/seed.ts", + "generate-key": "tsx scripts/generate-key.ts", + "test": "jest", + "test:watch": "jest --watch", + "test:coverage": "jest --coverage", + "postinstall": "prisma generate" + }, + "dependencies": { + "@auth/prisma-adapter": "2.10.0", + "@burnt-labs/abstraxion-core": "workspace:*", + "@burnt-labs/constants": "workspace:*", + "@burnt-labs/ui": "workspace:*", + "@cosmjs/amino": "^0.36.0", + "@cosmjs/cosmwasm-stargate": "^0.36.0", + "@cosmjs/crypto": "^0.36.0", + "@cosmjs/encoding": "^0.36.0", + "@cosmjs/proto-signing": "^0.36.0", + "@cosmjs/stargate": "^0.36.0", + "@cosmjs/tendermint-rpc": "^0.36.0", + "@cosmjs/utils": "^0.36.0", + "@prisma/client": "^6.16.1", + "bcryptjs": "3.0.2", + "cosmjs-types": "^0.9.0", + "jose": "^5.1.3", + "next": "^14.0.3", + "next-auth": "4.24.11", + "node-cache": "^5.1.2", + "rate-limiter-flexible": "^4.0.1", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "zod": "^3.22.4" + }, + "devDependencies": { + "@burnt-labs/eslint-config-custom": "workspace:*", + "@burnt-labs/tailwind-config": "workspace:*", + "@burnt-labs/tsconfig": "workspace:*", + "@testing-library/jest-dom": "^6.1.4", + "@types/bcryptjs": "^3.0.0", + "@types/express": "^4.17.21", + "@types/jest": "^30.0.0", + "@types/node": "^20", + "@types/react": "^18.2.47", + "@types/react-dom": "^18.2.18", + "autoprefixer": "^10.4.13", + "eslint-config-next": "14.0.4", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", + "node-mocks-http": "^1.13.0", + "postcss": "^8.4.20", + "prisma": "^6.16.1", + "tailwindcss": "^3.2.4", + "ts-jest": "^29.1.2", + "tsx": "^4.6.2", + "typescript": "^5.2.2" + } +} \ No newline at end of file diff --git a/apps/backend-session/postcss.config.js b/apps/backend-session/postcss.config.js new file mode 100644 index 00000000..33ad091d --- /dev/null +++ b/apps/backend-session/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/apps/backend-session/prisma/schema.prisma b/apps/backend-session/prisma/schema.prisma new file mode 100644 index 00000000..c58dd4cb --- /dev/null +++ b/apps/backend-session/prisma/schema.prisma @@ -0,0 +1,103 @@ +// This is your Prisma schema file, +// learn more about it in the docs: https://pris.ly/d/prisma-schema + +generator client { + provider = "prisma-client-js" +} + +datasource db { + provider = "sqlite" + url = env("DATABASE_URL") +} + +model User { + id String @id @default(cuid()) + username String @unique + email String? @unique + password String // hashed password for local authentication + + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + // Relations + sessionKeys SessionKey[] + auditLogs AuditLog[] + accounts Account[] + sessions Session[] + + @@index([username]) + @@index([email]) + @@map("users") +} + +model Account { + id String @id @default(cuid()) + userId String + type String + provider String + providerAccountId String + refresh_token String? + access_token String? + expires_at Int? + token_type String? + scope String? + id_token String? + session_state String? + + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + + @@unique([provider, providerAccountId]) + @@map("accounts") +} + +model Session { + id String @id @default(cuid()) + sessionToken String @unique + userId String + expires DateTime + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + + @@map("sessions") +} + +model SessionKey { + id String @id @default(cuid()) + userId String + + sessionKeyAddress String @unique + sessionKeyMaterial String // encrypted private key + sessionKeyExpiry DateTime // timestamp + sessionPermissions String @default("{}") // JSON string of permissions + sessionState String @default("PENDING") // PENDING, ACTIVE, EXPIRED, REVOKED + metaAccountAddress String + + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + // Relations + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + + @@index([userId, sessionKeyAddress]) + @@index([userId, sessionState]) + @@index([userId, sessionKeyExpiry]) + @@index([userId, metaAccountAddress]) + @@index([metaAccountAddress]) + @@map("session_keys") +} + +model AuditLog { + id String @id @default(cuid()) + userId String + action String // AuditAction enum values + details String // JSON string + ipAddress String? + userAgent String? + timestamp DateTime + + // Relations + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + + @@index([userId, timestamp]) + @@index([action]) + @@map("audit_logs") +} diff --git a/apps/backend-session/prisma/seed.ts b/apps/backend-session/prisma/seed.ts new file mode 100644 index 00000000..f7e5014c --- /dev/null +++ b/apps/backend-session/prisma/seed.ts @@ -0,0 +1,59 @@ +import { PrismaClient } from "@prisma/client"; +import bcrypt from "bcryptjs"; + +const prisma = new PrismaClient(); + +async function main() { + console.log("🌱 Starting database seed..."); + + // Hash passwords for test users + const hashedPassword = await bcrypt.hash("password123", 12); + + // Create sample users + const users = await Promise.all([ + prisma.user.upsert({ + where: { username: "alice" }, + update: {}, + create: { + username: "alice", + email: "alice@example.com", + password: hashedPassword, + }, + }), + prisma.user.upsert({ + where: { username: "bob" }, + update: {}, + create: { + username: "bob", + email: "bob@example.com", + password: hashedPassword, + }, + }), + prisma.user.upsert({ + where: { username: "charlie" }, + update: {}, + create: { + username: "charlie", + email: "charlie@example.com", + password: hashedPassword, + }, + }), + ]); + + console.log("🎉 Database seed completed successfully!"); + console.log("\n📊 Summary:"); + console.log(`- Users: ${users.length}`); + console.log("\n🔑 Test users:"); + users.forEach((user) => { + console.log(` - ${user.username} (${user.email})`); + }); +} + +main() + .catch((e) => { + console.error("❌ Seed failed:", e); + process.exit(1); + }) + .finally(async () => { + await prisma.$disconnect(); + }); diff --git a/apps/backend-session/scripts/generate-key.ts b/apps/backend-session/scripts/generate-key.ts new file mode 100644 index 00000000..587b8fd7 --- /dev/null +++ b/apps/backend-session/scripts/generate-key.ts @@ -0,0 +1,15 @@ +#!/usr/bin/env tsx + +import { SecurityManager } from "../src/lib/xion/security"; + +console.log("🔑 Generating encryption key..."); + +const key = SecurityManager.generateEncryptionKey(); + +console.log("\n✅ Generated encryption key:"); +console.log(key); +console.log("\n📝 Add this to your .env file:"); +console.log(`ENCRYPTION_KEY="${key}"`); +console.log( + "\n⚠️ Keep this key secure and never commit it to version control!", +); diff --git a/apps/backend-session/scripts/setup.sh b/apps/backend-session/scripts/setup.sh new file mode 100755 index 00000000..d25aae33 --- /dev/null +++ b/apps/backend-session/scripts/setup.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +echo "🚀 Setting up Backend Session project..." + +# Check if .env exists +if [ ! -f .env ]; then + echo "📝 Creating .env file from template..." + cp env.example .env + echo "⚠️ Please edit .env file with your configuration before continuing" + echo " Especially set your ENCRYPTION_KEY and other required values" + read -p "Press Enter to continue after editing .env file..." +fi + +# Generate encryption key if not set +if ! grep -q "ENCRYPTION_KEY=" .env || grep -q "your-base64-encoded-aes-256-key-here" .env; then + echo "🔑 Generating encryption key..." + pnpm run generate-key + echo "📝 Please copy the generated key to your .env file" + read -p "Press Enter to continue after updating .env with the encryption key..." +fi + +# Install dependencies +echo "📦 Installing dependencies..." +pnpm install + +# Generate Prisma client +echo "🗄️ Generating Prisma client..." +pnpm run db:build + +# Push database schema +echo "🗄️ Setting up database..." +pnpm run db:push + +# Seed database +echo "🌱 Seeding database..." +pnpm run db:seed + +echo "✅ Setup complete!" +echo "" +echo "🎉 You can now start the development server:" +echo " pnpm run dev" diff --git a/apps/backend-session/src/__tests__/api/wallet.test.ts b/apps/backend-session/src/__tests__/api/wallet.test.ts new file mode 100644 index 00000000..3faeca28 --- /dev/null +++ b/apps/backend-session/src/__tests__/api/wallet.test.ts @@ -0,0 +1,278 @@ +// Ensure we're using the test database +const testDBUrl = "file:./test.db"; +process.env.DATABASE_URL = testDBUrl; + +import { POST as connectHandler } from "@/app/api/wallet/connect/route"; +import { SessionState } from "@/lib/xion/backend"; +import { getAbstraxionBackend } from "@/lib/xion/abstraxion-backend"; +import { prisma } from "@/lib/xion/database"; +import { execSync } from "child_process"; +import { + setupAuthMocks, + cleanupAuthMocks, + createMockRequest, +} from "../../test-utils/auth"; +import { EncryptionService } from "@/lib/xion/backend/services/EncryptionService"; + +// Mock the auth middleware +jest.mock("@/lib/auth-middleware", () => ({ + requireAuth: jest.fn(), +})); + +// Mock NextAuth +jest.mock("next-auth", () => ({ + getServerSession: jest.fn(), +})); + +// ensure all environment variables are set +if (!process.env.XION_RPC_URL) { + process.env.XION_RPC_URL = "https://rpc.xion-testnet-2.burnt.com/"; +} +if (!process.env.ENCRYPTION_KEY) { + process.env.ENCRYPTION_KEY = EncryptionService.generateEncryptionKey(); +} +if (!process.env.XION_REDIRECT_URL) { + process.env.XION_REDIRECT_URL = + "http://localhost:3000/api/callback/grant_session"; +} +if (!process.env.XION_TREASURY) { + process.env.XION_TREASURY = + "xion1mj4a2t3365q0059w6ln9kkeyyj0fjlpdt0gea0vxd79epstkq4gshxqnmp"; +} + +// Helper functions +function resetAbstraxionBackend() { + const globalForAbstraxion = globalThis as unknown as { + abstraxionBackend: any; + }; + globalForAbstraxion.abstraxionBackend = undefined; +} + +async function cleanupDatabase() { + await prisma.sessionKey.deleteMany(); + await prisma.auditLog.deleteMany(); + await prisma.user.deleteMany(); +} + +async function createUserAndInitBackend(username: string = "testuser") { + const user = await prisma.user.create({ + data: { + username, + password: "hashedpassword123", + }, + }); + + resetAbstraxionBackend(); + const backend = getAbstraxionBackend(); + + // Verify backend can see the user through its database adapter + const backendAdapter = (backend as any).sessionKeyManager.databaseAdapter; + const backendUser = await backendAdapter.prisma.user.findUnique({ + where: { id: user.id }, + }); + + // If user doesn't exist in backend's Prisma instance, create it there + if (!backendUser) { + await backendAdapter.prisma.user.create({ + data: { + id: user.id, + username: user.username, + password: user.password, + email: user.email, + }, + }); + // Verify user was created + const verifyUser = await backendAdapter.prisma.user.findUnique({ + where: { id: user.id }, + }); + if (!verifyUser) { + throw new Error(`Failed to create user in backend's Prisma instance`); + } + } + + return { user, backend }; +} + +describe("Wallet API", () => { + beforeAll(async () => { + // Setup test database using Prisma commands + try { + execSync("npx prisma generate", { + stdio: "pipe", + env: { ...process.env, DATABASE_URL: testDBUrl }, + }); + // Use db push without force-reset to avoid Prisma's AI safety check + execSync("npx prisma db push", { + stdio: "pipe", + env: { ...process.env, DATABASE_URL: testDBUrl }, + }); + } catch (error) { + console.error("Failed to setup test database:", error); + throw error; + } + }); + + beforeEach(async () => { + // Reset the AbstraxionBackend singleton to ensure fresh instance + resetAbstraxionBackend(); + + // Setup auth mocks + setupAuthMocks(); + + // Clean up database before each test + await cleanupDatabase(); + }); + + afterEach(async () => { + // Clean up auth mocks + cleanupAuthMocks(); + + // Clean up after each test + await cleanupDatabase(); + }); + + afterAll(async () => { + // Close Prisma connection + await prisma.$disconnect(); + + // Clean up test database + try { + const fs = require("fs"); + if (fs.existsSync("./test.db")) { + fs.unlinkSync("./test.db"); + } + } catch (error) { + console.error("Failed to cleanup test database:", error); + } + }); + + describe("POST /api/wallet/connect", () => { + it("should initiate wallet connection for existing user", async () => { + const { user } = await createUserAndInitBackend(); + + // Mock the requireAuth function to return our test user + const { requireAuth } = require("@/lib/auth-middleware"); + requireAuth.mockResolvedValue({ + user: { + id: user.id, + username: user.username, + email: user.email, + }, + }); + + const request = createMockRequest( + "http://localhost:3000/api/wallet/connect", + "POST", + { + permissions: { + contracts: ["contract1", "contract2"], + bank: [{ denom: "uxion", amount: "1000" }], + stake: true, + }, + }, + ); + + const response = await connectHandler(request); + const data = await response.json(); + + // createUserAndInitBackend ensures user exists, but if it doesn't, expect error + if (response.status === 400 && data.error?.includes("not found")) { + expect(response.status).toBe(400); + expect(data.success).toBe(false); + expect(data.error).toContain("User"); + expect(data.error).toContain("not found"); + return; + } + + // If user exists, expect success response + expect(response.status).toBe(200); + expect(data.success).toBe(true); + expect(data.data).toHaveProperty("sessionKeyAddress"); + expect(data.data).toHaveProperty("authorizationUrl"); + expect(data.data).toHaveProperty("state"); + }); + }); + + describe("SessionKeyManager PENDING state functionality", () => { + it("should create PENDING session key and then update to ACTIVE", async () => { + const { user, backend } = await createUserAndInitBackend(); + const sessionKeyManager = backend.sessionKeyManager; + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + + // Create pending session key (new API only takes userId and sessionKey) + await sessionKeyManager.createPendingSessionKey(user.id, sessionKey); + + // Verify session key is in PENDING state + const pendingSessionKey = await prisma.sessionKey.findFirst({ + where: { userId: user.id }, + }); + expect(pendingSessionKey).toBeTruthy(); + expect(pendingSessionKey?.sessionState).toBe(SessionState.PENDING); + expect(pendingSessionKey?.sessionPermissions).toBe("{}"); + + // Now test storeGrantedSessionKey with permissions - should update PENDING to ACTIVE + const permissions = { + contracts: ["contract1"], + bank: [{ denom: "uxion", amount: "1000" }], + stake: true, + }; + + await sessionKeyManager.storeGrantedSessionKey( + user.id, + sessionKey.address, + "meta-account-address", + permissions, + ); + + // Verify session key is now ACTIVE with permissions + const activeSessionKey = await prisma.sessionKey.findFirst({ + where: { userId: user.id }, + }); + expect(activeSessionKey).toBeTruthy(); + expect(activeSessionKey?.sessionState).toBe(SessionState.ACTIVE); + expect(JSON.parse(activeSessionKey?.sessionPermissions || "{}")).toEqual( + permissions, + ); + }); + + it("should create new PENDING session key and then activate it", async () => { + const { user, backend } = await createUserAndInitBackend("testuser2"); + const sessionKeyManager = backend.sessionKeyManager; + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + + // Create pending session key + await sessionKeyManager.createPendingSessionKey(user.id, sessionKey); + + // Verify session key is PENDING + const pendingSessionKey = await prisma.sessionKey.findFirst({ + where: { userId: user.id }, + }); + expect(pendingSessionKey).toBeTruthy(); + expect(pendingSessionKey?.sessionState).toBe(SessionState.PENDING); + + const permissions = { + contracts: ["contract2"], + bank: [{ denom: "uxion", amount: "2000" }], + stake: false, + }; + + // Activate the session key with permissions + await sessionKeyManager.storeGrantedSessionKey( + user.id, + sessionKey.address, + "meta-account-address-2", + permissions, + ); + + // Verify session key is now ACTIVE with permissions + const activeSessionKey = await prisma.sessionKey.findFirst({ + where: { userId: user.id }, + }); + expect(activeSessionKey).toBeTruthy(); + expect(activeSessionKey?.sessionState).toBe(SessionState.ACTIVE); + expect(JSON.parse(activeSessionKey?.sessionPermissions || "{}")).toEqual( + permissions, + ); + }); + }); +}); diff --git a/apps/backend-session/src/__tests__/lib/abstraxion-backend/AbstraxionBackend.test.ts b/apps/backend-session/src/__tests__/lib/abstraxion-backend/AbstraxionBackend.test.ts new file mode 100644 index 00000000..27d55339 --- /dev/null +++ b/apps/backend-session/src/__tests__/lib/abstraxion-backend/AbstraxionBackend.test.ts @@ -0,0 +1,865 @@ +import { IncomingMessage } from "node:http"; +import { AbstraxionBackend } from "../../../lib/xion/backend/AbstraxionBackend"; +import { TestDatabaseAdapter } from "../../../lib/xion/backend/adapters/TestDatabaseAdapter"; +import { EncryptionService } from "../../../lib/xion/backend/services/EncryptionService"; +import { SessionState } from "../../../lib/xion/backend/types"; +import { + EncryptionKeyRequiredError, + DatabaseAdapterRequiredError, + RedirectUrlRequiredError, + TreasuryRequiredError, + RpcUrlRequiredError, + UserIdRequiredError, + StateRequiredError, + GranterRequiredError, + InvalidStateError, + SessionKeyNotFoundError, +} from "../../../lib/xion/backend/types/errors"; + +// Mock the fetchConfig function +jest.mock("@burnt-labs/constants", () => ({ + fetchConfig: jest.fn().mockResolvedValue({ + dashboardUrl: "https://settings.testnet.burnt.com/", + }), + xionGasValues: { + gasPrice: "0.001uxion", + }, +})); + +// Mock the AbstraxionAuth class and SignArbSecp256k1HdWallet +jest.mock("@burnt-labs/abstraxion-core", () => ({ + AbstraxionAuth: jest.fn().mockImplementation(() => ({ + configureAbstraxionInstance: jest.fn(), + login: jest.fn(), + getLocalKeypair: jest.fn().mockResolvedValue({ + getAccounts: jest + .fn() + .mockResolvedValue([{ address: "xion1testaddress" }]), + }), + pollForGrants: jest.fn().mockResolvedValue(true), + })), + SignArbSecp256k1HdWallet: { + generate: jest.fn().mockImplementation(() => { + const randomId = Math.random().toString(36).substring(7); + return Promise.resolve({ + address: `xion1testaddress${randomId}`, + serializedKeypair: `test-serialized-keypair-${randomId}`, + getAccounts: jest + .fn() + .mockResolvedValue([{ address: `xion1testaddress${randomId}` }]), + serialize: jest + .fn() + .mockResolvedValue(`test-serialized-keypair-${randomId}`), + }); + }), + deserialize: jest.fn().mockReturnValue({ + getAccounts: jest + .fn() + .mockResolvedValue([{ address: "xion1testaddress" }]), + serialize: jest.fn().mockResolvedValue("test-serialized-keypair"), + }), + }, + ContractGrantDescription: {}, + SpendLimit: {}, +})); + +describe("AbstraxionBackend", () => { + let backend: AbstraxionBackend; + let databaseAdapter: TestDatabaseAdapter; + const testConfig = { + rpcUrl: "https://rpc.xion-testnet-2.burnt.com", + dashboardUrl: "https://settings.testnet.burnt.com/", + redirectUrl: "https://myapp.com/callback", + treasury: "xion1treasury123", + encryptionKey: EncryptionService.generateEncryptionKey(), + sessionKeyExpiryMs: 24 * 60 * 60 * 1000, // 24 hours + refreshThresholdMs: 60 * 60 * 1000, // 1 hour + enableAuditLogging: true, + }; + + beforeEach(() => { + databaseAdapter = new TestDatabaseAdapter(); + backend = new AbstraxionBackend({ + ...testConfig, + databaseAdapter, + }); + }); + + afterEach(async () => { + await databaseAdapter.close(); + backend.close(); + }); + + describe("constructor", () => { + it("should create instance with valid configuration", () => { + expect(backend).toBeDefined(); + expect(backend.sessionKeyManager).toBeDefined(); + expect(backend.gasPriceDefault).toBeDefined(); + }); + + it("should throw error for missing encryption key", () => { + expect(() => { + new AbstraxionBackend({ + ...testConfig, + databaseAdapter: databaseAdapter, + encryptionKey: "", + }); + }).toThrow(EncryptionKeyRequiredError); + }); + + it("should throw error for missing database adapter", () => { + expect(() => { + new AbstraxionBackend({ + ...testConfig, + databaseAdapter: null as any, + }); + }).toThrow(DatabaseAdapterRequiredError); + }); + + it("should throw error for missing redirect URL", () => { + expect(() => { + new AbstraxionBackend({ + ...testConfig, + databaseAdapter: databaseAdapter, + redirectUrl: "", + }); + }).toThrow(RedirectUrlRequiredError); + }); + + it("should throw error for missing treasury", () => { + expect(() => { + new AbstraxionBackend({ + ...testConfig, + databaseAdapter: databaseAdapter, + treasury: "", + }); + }).toThrow(TreasuryRequiredError); + }); + + it("should throw error for missing RPC URL", () => { + expect(() => { + new AbstraxionBackend({ + ...testConfig, + databaseAdapter: databaseAdapter, + rpcUrl: "", + }); + }).toThrow(RpcUrlRequiredError); + }); + + it("should set different gas price for mainnet", () => { + const mainnetBackend = new AbstraxionBackend({ + ...testConfig, + databaseAdapter: databaseAdapter, + rpcUrl: "https://rpc.xion-mainnet.burnt.com", + }); + expect(mainnetBackend.gasPriceDefault).toBeDefined(); + mainnetBackend.close(); + }); + }); + + describe("connectInit", () => { + it("should initiate connection successfully", async () => { + const userId = "user123"; + const permissions = { + contracts: ["xion1contract1"], + bank: [{ denom: "uxion", amount: "1000000" }], + stake: true, + }; + + const result = await backend.connectInit(userId, permissions); + + expect(result).toBeDefined(); + expect(result.sessionKeyAddress).toBeDefined(); + expect(result.authorizationUrl).toBeDefined(); + expect(result.state).toBeDefined(); + expect(result.authorizationUrl).toContain("grantee="); + expect(result.authorizationUrl).toContain("redirect_uri="); + expect(result.authorizationUrl).toContain("treasury="); + expect(result.authorizationUrl).toContain("state="); + }); + + it("should include permissions in authorization URL", async () => { + const userId = "user123"; + const permissions = { + contracts: ["xion1contract1", "xion1contract2"], + bank: [{ denom: "uxion", amount: "1000000" }], + stake: true, + }; + + const result = await backend.connectInit(userId, permissions); + + expect(result.authorizationUrl).toContain("contracts="); + expect(result.authorizationUrl).toContain("bank="); + expect(result.authorizationUrl).toContain("stake=true"); + }); + + it("should handle empty permissions", async () => { + const userId = "user123"; + const result = await backend.connectInit(userId); + + expect(result).toBeDefined(); + expect(result.authorizationUrl).toContain("treasury="); + // Empty arrays are still included in URL as "contracts=[]" and "bank=[]" + expect(result.authorizationUrl).toContain("contracts=%5B%5D"); + expect(result.authorizationUrl).toContain("bank=%5B%5D"); + expect(result.authorizationUrl).not.toContain("stake="); + }); + + it("should throw error for empty userId", async () => { + await expect(backend.connectInit("")).rejects.toThrow( + UserIdRequiredError, + ); + }); + + it("should store state in cache", async () => { + const userId = "user123"; + const permissions = { contracts: ["xion1contract1"] }; + + await backend.connectInit(userId, permissions); + + const stats = backend.getCacheStats(); + expect(stats.keys).toBe(1); + }); + + it("should create pending session key", async () => { + const userId = "user123"; + await backend.connectInit(userId); + + const sessionKeyInfo = + await backend.sessionKeyManager.getLastSessionKeyInfo(userId); + expect(sessionKeyInfo).toBeDefined(); + expect(sessionKeyInfo!.sessionState).toBe(SessionState.PENDING); + }); + + it("should handle grantedRedirectUrl parameter", async () => { + const userId = "user123"; + const grantedRedirectUrl = "https://custom-redirect.com/callback"; + + const result = await backend.connectInit(userId, {}, grantedRedirectUrl); + + expect(result).toBeDefined(); + // The grantedRedirectUrl should be stored in state cache + const stats = backend.getCacheStats(); + expect(stats.keys).toBe(1); + }); + }); + + describe("handleCallback", () => { + let userId: string; + let state: string; + let sessionKeyAddress: string; + + beforeEach(async () => { + userId = "user123"; + const result = await backend.connectInit(userId); + state = result.state; + sessionKeyAddress = result.sessionKeyAddress; + }); + + it("should handle successful callback", async () => { + const callbackRequest = { + granted: true, + granter: "xion1granter123", + state, + }; + + const result = await backend.handleCallback(callbackRequest); + + expect(result.success).toBe(true); + expect(result.sessionKeyAddress).toBe(sessionKeyAddress); + expect(result.metaAccountAddress).toBe("xion1granter123"); + expect(result.permissions).toBeDefined(); + }); + + it("should handle denied callback", async () => { + const callbackRequest = { + granted: false, + granter: "xion1granter123", + state, + }; + + const result = await backend.handleCallback(callbackRequest); + + expect(result.success).toBe(false); + expect(result.error).toBe("Authorization was not granted by user"); + }); + + it("should throw error for missing state", async () => { + const callbackRequest = { + granted: true, + granter: "xion1granter123", + state: "", + }; + + await expect(backend.handleCallback(callbackRequest)).rejects.toThrow( + StateRequiredError, + ); + }); + + it("should throw error for missing granter", async () => { + const callbackRequest = { + granted: true, + granter: "", + state, + }; + + await expect(backend.handleCallback(callbackRequest)).rejects.toThrow( + GranterRequiredError, + ); + }); + + it("should throw error for invalid state", async () => { + const callbackRequest = { + granted: true, + granter: "xion1granter123", + state: "invalid-state", + }; + + const result = await backend.handleCallback(callbackRequest); + expect(result.success).toBe(false); + expect(result.error).toContain("Invalid state parameter"); + }); + + it("should clean up state after successful callback", async () => { + const callbackRequest = { + granted: true, + granter: "xion1granter123", + state, + }; + + await backend.handleCallback(callbackRequest); + + const stats = backend.getCacheStats(); + expect(stats.keys).toBe(0); + }); + + it("should clean up state after denied callback", async () => { + const callbackRequest = { + granted: false, + granter: "xion1granter123", + state, + }; + + await backend.handleCallback(callbackRequest); + + const stats = backend.getCacheStats(); + expect(stats.keys).toBe(0); + }); + + it("should activate session key after successful callback", async () => { + const callbackRequest = { + granted: true, + granter: "xion1granter123", + state, + }; + + await backend.handleCallback(callbackRequest); + + const sessionKeyInfo = + await backend.sessionKeyManager.getLastSessionKeyInfo(userId); + expect(sessionKeyInfo).toBeDefined(); + expect(sessionKeyInfo!.sessionState).toBe(SessionState.ACTIVE); + expect(sessionKeyInfo!.metaAccountAddress).toBe("xion1granter123"); + }); + + it("should handle callback with custom permissions", async () => { + const permissions = { + contracts: ["xion1contract1"], + bank: [{ denom: "uxion", amount: "1000000" }], + stake: true, + }; + + // Recreate with permissions + await backend.connectInit(userId, permissions); + const newState = (await backend.connectInit(userId, permissions)).state; + + const callbackRequest = { + granted: true, + granter: "xion1granter123", + state: newState, + }; + + const result = await backend.handleCallback(callbackRequest); + + expect(result.success).toBe(true); + expect(result.permissions).toEqual({ + ...permissions, + treasury: testConfig.treasury, + }); + }); + + it("should handle expired state", async () => { + // Wait for state to expire (10 minutes TTL) + // For testing, we'll manually clear the cache + backend.clearCache(); + + const callbackRequest = { + granted: true, + granter: "xion1granter123", + state, + }; + + const result = await backend.handleCallback(callbackRequest); + expect(result.success).toBe(false); + expect(result.error).toContain("Invalid state parameter"); + }); + }); + + describe("disconnect", () => { + it("should disconnect successfully", async () => { + const userId = "user123"; + + // Create and activate a session key + const initResult = await backend.connectInit(userId); + await backend.handleCallback({ + granted: true, + granter: "xion1granter123", + state: initResult.state, + }); + + const result = await backend.disconnect(userId); + + expect(result.success).toBe(true); + }); + + it("should handle disconnect when no session key exists", async () => { + const userId = "user123"; + const result = await backend.disconnect(userId); + + expect(result.success).toBe(true); + }); + + it("should throw error for empty userId", async () => { + await expect(backend.disconnect("")).rejects.toThrow(UserIdRequiredError); + }); + + it("should revoke session key on disconnect", async () => { + const userId = "user123"; + + // Create and activate a session key + const initResult = await backend.connectInit(userId); + await backend.handleCallback({ + granted: true, + granter: "xion1granter123", + state: initResult.state, + }); + + await backend.disconnect(userId); + + const sessionKeyInfo = + await backend.sessionKeyManager.getLastSessionKeyInfo(userId); + expect(sessionKeyInfo).toBeDefined(); + expect(sessionKeyInfo!.sessionState).toBe(SessionState.REVOKED); + }); + }); + + describe("checkStatus", () => { + it("should return not connected when no session key exists", async () => { + const userId = "user123"; + const result = await backend.checkStatus(userId); + + expect(result.connected).toBe(false); + }); + + it("should return not connected when session key is invalid", async () => { + const userId = "user123"; + + // Create a pending session key (not active) + await backend.connectInit(userId); + + const result = await backend.checkStatus(userId); + + expect(result.connected).toBe(false); + }); + + it("should return connected when session key is active", async () => { + const userId = "user123"; + + // Create and activate a session key + const initResult = await backend.connectInit(userId); + await backend.handleCallback({ + granted: true, + granter: "xion1granter123", + state: initResult.state, + }); + + const result = await backend.checkStatus(userId); + + expect(result.connected).toBe(true); + expect(result.sessionKeyAddress).toBeDefined(); + expect(result.metaAccountAddress).toBe("xion1granter123"); + expect(result.permissions).toBeDefined(); + expect(result.expiresAt).toBeDefined(); + expect(result.state).toBe(SessionState.ACTIVE); + }); + + it("should throw error for empty userId", async () => { + await expect(backend.checkStatus("")).rejects.toThrow( + UserIdRequiredError, + ); + }); + + it("should handle errors gracefully", async () => { + const userId = "user123"; + + // Mock database error + const mockError = new Error("Database error"); + jest + .spyOn(databaseAdapter, "getLastSessionKey") + .mockRejectedValue(mockError); + + const result = await backend.checkStatus(userId); + + expect(result.connected).toBe(false); + }); + }); + + describe("refreshSessionKey", () => { + it("should refresh session key when near expiry", async () => { + const userId = "user123"; + + // Create and activate a session key + const initResult = await backend.connectInit(userId); + await backend.handleCallback({ + granted: true, + granter: "xion1granter123", + state: initResult.state, + }); + + // Mock near expiry time + const sessionKeyInfo = + await backend.sessionKeyManager.getLastSessionKeyInfo(userId); + if (sessionKeyInfo) { + // Set expiry to 30 minutes from now (within refresh threshold) + const nearExpiryTime = new Date(Date.now() + 30 * 60 * 1000); + await databaseAdapter.updateSessionKeyWithParams( + userId, + sessionKeyInfo.sessionKeyAddress, + { sessionState: SessionState.ACTIVE }, + ); + } + + const result = await backend.refreshSessionKey(userId); + + expect(result).toBeDefined(); + expect(result!.address).toBeDefined(); + }); + + it("should not refresh session key when not near expiry", async () => { + const userId = "user123"; + + // Create and activate a session key + const initResult = await backend.connectInit(userId); + await backend.handleCallback({ + granted: true, + granter: "xion1granter123", + state: initResult.state, + }); + + const result = await backend.refreshSessionKey(userId); + + expect(result).toBeDefined(); + expect(result!.address).toBeDefined(); + }); + + it("should throw error for empty userId", async () => { + await expect(backend.refreshSessionKey("")).rejects.toThrow( + UserIdRequiredError, + ); + }); + + it("should return null when no session key exists", async () => { + const userId = "user123"; + const result = await backend.refreshSessionKey(userId); + + expect(result).toBeNull(); + }); + }); + + describe("startAbstraxionBackendAuth", () => { + it("should start authentication with active session key", async () => { + const userId = "user123"; + + // Create and activate a session key + const initResult = await backend.connectInit(userId); + await backend.handleCallback({ + granted: true, + granter: "xion1granter123", + state: initResult.state, + }); + + const mockRequest = { + url: "/test", + headers: { host: "example.com" }, + } as unknown as IncomingMessage; + + const authz = await backend.startAbstraxionBackendAuth( + userId, + mockRequest, + ); + + expect(authz).toBeDefined(); + expect(authz.configureAbstraxionInstance).toBeDefined(); + }); + + it("should throw error when no active session key exists", async () => { + const userId = "user123"; + + // Create only a pending session key + await backend.connectInit(userId); + + await expect(backend.startAbstraxionBackendAuth(userId)).rejects.toThrow( + SessionKeyNotFoundError, + ); + }); + + it("should work without request parameter", async () => { + const userId = "user123"; + + // Create and activate a session key + const initResult = await backend.connectInit(userId); + await backend.handleCallback({ + granted: true, + granter: "xion1granter123", + state: initResult.state, + }); + + const authz = await backend.startAbstraxionBackendAuth(userId); + + expect(authz).toBeDefined(); + }); + + it("should pass options to AbstraxionAuth", async () => { + const userId = "user123"; + + // Create and activate a session key + const initResult = await backend.connectInit(userId); + await backend.handleCallback({ + granted: true, + granter: "xion1granter123", + state: initResult.state, + }); + + const options = { + contracts: [ + { + address: "xion1contract1", + amounts: [{ denom: "uxion", amount: "1000000" }], + }, + ], + bank: [{ denom: "uxion", amount: "1000000" }], + stake: true, + indexerUrl: "https://indexer.xion.burnt.com", + onRedirectMethod: jest.fn(), + }; + + const authz = await backend.startAbstraxionBackendAuth( + userId, + undefined, + options, + ); + + expect(authz).toBeDefined(); + expect(authz.configureAbstraxionInstance).toHaveBeenCalledWith( + testConfig.rpcUrl, + options.contracts, + options.stake, + options.bank, + testConfig.redirectUrl, + testConfig.treasury, + options.indexerUrl, + ); + }); + }); + + describe("cache management", () => { + it("should provide cache statistics", () => { + const stats = backend.getCacheStats(); + + expect(stats).toBeDefined(); + expect(stats.keys).toBeDefined(); + expect(stats.hits).toBeDefined(); + expect(stats.misses).toBeDefined(); + expect(stats.ksize).toBeDefined(); + expect(stats.vsize).toBeDefined(); + }); + + it("should clear cache", () => { + backend.clearCache(); + + const stats = backend.getCacheStats(); + expect(stats.keys).toBe(0); + }); + + it("should close cache on close", () => { + const closeSpy = jest.spyOn(backend["_stateStore"], "close"); + + backend.close(); + + expect(closeSpy).toHaveBeenCalled(); + }); + }); + + describe("buildAuthorizationUrl", () => { + it("should build URL with all required parameters", async () => { + const sessionKeyAddress = "xion1testaddress"; + const state = "test-state"; + const permissions = { + contracts: ["xion1contract1"], + bank: [{ denom: "uxion", amount: "1000000" }], + stake: true, + }; + + const url = await (backend as any).buildAuthorizationUrl( + sessionKeyAddress, + state, + permissions, + ); + + expect(url).toContain("state=test-state"); + expect(url).toContain("grantee=xion1testaddress"); + expect(url).toContain("redirect_uri="); + expect(url).toContain("treasury="); + expect(url).toContain("contracts="); + expect(url).toContain("bank="); + expect(url).toContain("stake=true"); + }); + + it("should build URL without optional parameters", async () => { + const sessionKeyAddress = "xion1testaddress"; + const state = "test-state"; + + const url = await (backend as any).buildAuthorizationUrl( + sessionKeyAddress, + state, + ); + + expect(url).toContain("state=test-state"); + expect(url).toContain("grantee=xion1testaddress"); + expect(url).toContain("redirect_uri="); + expect(url).toContain("treasury="); + expect(url).not.toContain("contracts="); + expect(url).not.toContain("bank="); + expect(url).not.toContain("stake="); + }); + }); + + describe("error handling", () => { + it("should handle unknown errors in connectInit", async () => { + // Mock sessionKeyManager to throw unknown error + const mockError = new Error("Unknown error"); + jest + .spyOn(backend.sessionKeyManager, "generateSessionKeypair") + .mockRejectedValue(mockError); + + await expect(backend.connectInit("user123")).rejects.toThrow( + "Failed to initiate connection", + ); + }); + + it("should handle unknown errors in refreshSessionKey", async () => { + // Mock sessionKeyManager to throw unknown error + const mockError = new Error("Unknown error"); + jest + .spyOn(backend.sessionKeyManager, "refreshIfNeeded") + .mockRejectedValue(mockError); + + await expect(backend.refreshSessionKey("user123")).rejects.toThrow( + "Failed to refresh session key", + ); + }); + + it("should handle errors in handleCallback gracefully", async () => { + const callbackRequest = { + granted: true, + granter: "xion1granter123", + userId: "user123", + state: "invalid-state", + }; + + const result = await backend.handleCallback(callbackRequest); + + expect(result.success).toBe(false); + expect(result.error).toBeDefined(); + }); + }); + + describe("integration tests", () => { + it("should complete full authentication flow", async () => { + const userId = "user123"; + const permissions = { + contracts: ["xion1contract1"], + bank: [{ denom: "uxion", amount: "1000000" }], + stake: true, + }; + + // 1. Initiate connection + const initResult = await backend.connectInit(userId, permissions); + expect(initResult.sessionKeyAddress).toBeDefined(); + expect(initResult.authorizationUrl).toBeDefined(); + + // 2. Handle callback + const callbackResult = await backend.handleCallback({ + granted: true, + granter: "xion1granter123", + state: initResult.state, + }); + expect(callbackResult.success).toBe(true); + expect(callbackResult.sessionKeyAddress).toBe( + initResult.sessionKeyAddress, + ); + + // 3. Check status + const statusResult = await backend.checkStatus(userId); + expect(statusResult.connected).toBe(true); + expect(statusResult.sessionKeyAddress).toBe(initResult.sessionKeyAddress); + + // 4. Disconnect + const disconnectResult = await backend.disconnect(userId); + expect(disconnectResult.success).toBe(true); + + // 5. Check status after disconnect + const finalStatusResult = await backend.checkStatus(userId); + expect(finalStatusResult.connected).toBe(false); + }); + + it("should handle multiple users independently", async () => { + const user1 = "user1"; + const user2 = "user2"; + + // Create sessions for both users + const init1 = await backend.connectInit(user1); + const init2 = await backend.connectInit(user2); + + // Activate both sessions + await backend.handleCallback({ + granted: true, + granter: "xion1granter1", + state: init1.state, + }); + await backend.handleCallback({ + granted: true, + granter: "xion1granter2", + state: init2.state, + }); + + // Both should be connected + const status1 = await backend.checkStatus(user1); + const status2 = await backend.checkStatus(user2); + + expect(status1.connected).toBe(true); + expect(status2.connected).toBe(true); + expect(status1.sessionKeyAddress).not.toBe(status2.sessionKeyAddress); + + // Disconnect one user + await backend.disconnect(user1); + + // Only user2 should be connected + const finalStatus1 = await backend.checkStatus(user1); + const finalStatus2 = await backend.checkStatus(user2); + + expect(finalStatus1.connected).toBe(false); + expect(finalStatus2.connected).toBe(true); + }); + }); +}); diff --git a/apps/backend-session/src/__tests__/lib/abstraxion-backend/AbstraxionStrategies.test.ts b/apps/backend-session/src/__tests__/lib/abstraxion-backend/AbstraxionStrategies.test.ts new file mode 100644 index 00000000..c9985fee --- /dev/null +++ b/apps/backend-session/src/__tests__/lib/abstraxion-backend/AbstraxionStrategies.test.ts @@ -0,0 +1,827 @@ +import { IncomingMessage } from "node:http"; +import { + DatabaseStorageStrategy, + DatabaseRedirectStrategy, +} from "../../../lib/xion/backend/adapters/AbstraxionStategies"; +import { SessionKeyManager } from "../../../lib/xion/backend/services/SessionKeyManager"; +import { TestDatabaseAdapter } from "../../../lib/xion/backend/adapters/TestDatabaseAdapter"; +import { EncryptionService } from "../../../lib/xion/backend/services/EncryptionService"; +import { SessionState } from "../../../lib/xion/backend/types"; +import { + InvalidStorageKeyError, + SessionKeyNotFoundError, + SessionKeyExpirationError, +} from "../../../lib/xion/backend/types/errors"; + +describe("AbstraxionStrategies", () => { + describe("DatabaseStorageStrategy", () => { + let storageStrategy: DatabaseStorageStrategy; + let sessionKeyManager: SessionKeyManager; + let databaseAdapter: TestDatabaseAdapter; + const userId = "test-user-123"; + + beforeEach(() => { + databaseAdapter = new TestDatabaseAdapter(); + sessionKeyManager = new SessionKeyManager(databaseAdapter, { + encryptionKey: EncryptionService.generateEncryptionKey(), + sessionKeyExpiryMs: 24 * 60 * 60 * 1000, // 24 hours + refreshThresholdMs: 60 * 60 * 1000, // 1 hour + enableAuditLogging: true, + }); + storageStrategy = new DatabaseStorageStrategy(userId, sessionKeyManager); + }); + + describe("constructor", () => { + it("should create instance with valid parameters", () => { + expect(storageStrategy).toBeDefined(); + expect(storageStrategy).toBeInstanceOf(DatabaseStorageStrategy); + }); + + it("should handle different userId formats", () => { + const numericUserId = "123456"; + const uuidUserId = "550e8400-e29b-41d4-a716-446655440000"; + const specialCharUserId = "user@domain.com"; + + const numericStrategy = new DatabaseStorageStrategy( + numericUserId, + sessionKeyManager, + ); + const uuidStrategy = new DatabaseStorageStrategy( + uuidUserId, + sessionKeyManager, + ); + const specialCharStrategy = new DatabaseStorageStrategy( + specialCharUserId, + sessionKeyManager, + ); + + expect(numericStrategy).toBeDefined(); + expect(uuidStrategy).toBeDefined(); + expect(specialCharStrategy).toBeDefined(); + }); + + it("should handle empty string userId", () => { + const emptyUserIdStrategy = new DatabaseStorageStrategy( + "", + sessionKeyManager, + ); + expect(emptyUserIdStrategy).toBeDefined(); + }); + + it("should handle very long userId", () => { + const longUserId = "a".repeat(1000); + const longUserIdStrategy = new DatabaseStorageStrategy( + longUserId, + sessionKeyManager, + ); + expect(longUserIdStrategy).toBeDefined(); + }); + }); + + afterEach(async () => { + await databaseAdapter.close(); + }); + + describe("getItem", () => { + it("should get granter account from active session key", async () => { + // Create a pending session key first + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + await sessionKeyManager.createPendingSessionKey(userId, sessionKey); + + // Store granted session key to make it active + const granterAddress = "xion1granter123"; + await sessionKeyManager.storeGrantedSessionKey( + userId, + sessionKey.address, + granterAddress, + ); + + const result = await storageStrategy.getItem( + "xion-authz-granter-account", + ); + expect(result).toBe(granterAddress); + }); + + it("should get temp account from active session key", async () => { + // Create a pending session key first + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + await sessionKeyManager.createPendingSessionKey(userId, sessionKey); + + // Store granted session key to make it active + const granterAddress = "xion1granter123"; + await sessionKeyManager.storeGrantedSessionKey( + userId, + sessionKey.address, + granterAddress, + ); + + const result = await storageStrategy.getItem("xion-authz-temp-account"); + expect(result).toBe(sessionKey.serializedKeypair); + }); + + it("should throw InvalidStorageKeyError for invalid key", async () => { + await expect(storageStrategy.getItem("invalid-key")).rejects.toThrow( + InvalidStorageKeyError, + ); + await expect(storageStrategy.getItem("invalid-key")).rejects.toThrow( + "Invalid storage key: invalid-key@getItem", + ); + }); + + it("should throw SessionKeyNotFoundError when no session key exists", async () => { + await expect( + storageStrategy.getItem("xion-authz-granter-account"), + ).rejects.toThrow(SessionKeyNotFoundError); + await expect( + storageStrategy.getItem("xion-authz-granter-account"), + ).rejects.toThrow(`Session key not found for user: ${userId}`); + }); + + it("should throw SessionKeyExpirationError when session key is not active", async () => { + // Create a pending session key (not active) + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + await sessionKeyManager.createPendingSessionKey(userId, sessionKey); + + await expect( + storageStrategy.getItem("xion-authz-granter-account"), + ).rejects.toThrow(SessionKeyExpirationError); + }); + + it("should throw SessionKeyNotFoundError when session key is expired", async () => { + // Create a session key and manually set it as expired + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + await sessionKeyManager.createPendingSessionKey(userId, sessionKey); + + // Store with past expiry time + const pastTime = new Date(Date.now() - 25 * 60 * 60 * 1000); // 25 hours ago + const sessionKeyInfo = { + userId, + sessionKeyAddress: sessionKey.address, + sessionKeyMaterial: + await sessionKeyManager.encryptionService.encryptSessionKey( + sessionKey.serializedKeypair, + ), + sessionKeyExpiry: pastTime, + sessionPermissions: {}, + sessionState: SessionState.ACTIVE, + metaAccountAddress: "xion1metaaccount", + createdAt: pastTime, + updatedAt: pastTime, + }; + + await databaseAdapter.storeSessionKey(sessionKeyInfo); + + await expect( + storageStrategy.getItem("xion-authz-granter-account"), + ).rejects.toThrow(SessionKeyNotFoundError); + }); + + it("should throw InvalidStorageKeyError for empty string key", async () => { + await expect(storageStrategy.getItem("")).rejects.toThrow( + InvalidStorageKeyError, + ); + await expect(storageStrategy.getItem("")).rejects.toThrow( + "Invalid storage key: @getItem", + ); + }); + + it("should throw InvalidStorageKeyError for null key", async () => { + await expect(storageStrategy.getItem(null as any)).rejects.toThrow( + InvalidStorageKeyError, + ); + }); + + it("should throw InvalidStorageKeyError for undefined key", async () => { + await expect(storageStrategy.getItem(undefined as any)).rejects.toThrow( + InvalidStorageKeyError, + ); + }); + + it("should handle session key with empty metaAccountAddress", async () => { + // Create a pending session key first + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + await sessionKeyManager.createPendingSessionKey(userId, sessionKey); + + // Store granted session key with empty metaAccountAddress + await sessionKeyManager.storeGrantedSessionKey( + userId, + sessionKey.address, + "", // empty granter address + ); + + const result = await storageStrategy.getItem( + "xion-authz-granter-account", + ); + expect(result).toBe(""); + }); + }); + + describe("setItem", () => { + it("should set temp account by creating pending session key", async () => { + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + const serializedKeypair = sessionKey.serializedKeypair; + + await storageStrategy.setItem( + "xion-authz-temp-account", + serializedKeypair, + ); + + const sessionKeyInfo = + await sessionKeyManager.getLastSessionKeyInfo(userId); + expect(sessionKeyInfo).toBeDefined(); + expect(sessionKeyInfo!.sessionKeyAddress).toBe(sessionKey.address); + expect(sessionKeyInfo!.sessionState).toBe(SessionState.PENDING); + }); + + it("should set granter account by updating pending session key to active", async () => { + // First create a pending session key + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + await sessionKeyManager.createPendingSessionKey(userId, sessionKey); + + const granterAddress = "xion1granter123"; + await storageStrategy.setItem( + "xion-authz-granter-account", + granterAddress, + ); + + const sessionKeyInfo = + await sessionKeyManager.getLastSessionKeyInfo(userId); + expect(sessionKeyInfo).toBeDefined(); + expect(sessionKeyInfo!.metaAccountAddress).toBe(granterAddress); + expect(sessionKeyInfo!.sessionState).toBe(SessionState.ACTIVE); + }); + + it("should skip setting granter account when no pending session key exists", async () => { + const granterAddress = "xion1granter123"; + + // Should not throw error, just skip silently + await expect( + storageStrategy.setItem("xion-authz-granter-account", granterAddress), + ).resolves.not.toThrow(); + }); + + it("should skip setting granter account when session key is not in pending state", async () => { + // Create and activate a session key + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + await sessionKeyManager.createPendingSessionKey(userId, sessionKey); + await sessionKeyManager.storeGrantedSessionKey( + userId, + sessionKey.address, + "xion1granter123", + ); + + const granterAddress = "xion1granter456"; + + // Should not throw error, just skip silently + await expect( + storageStrategy.setItem("xion-authz-granter-account", granterAddress), + ).resolves.not.toThrow(); + + // Verify the original granter address is unchanged + const sessionKeyInfo = + await sessionKeyManager.getLastSessionKeyInfo(userId); + expect(sessionKeyInfo!.metaAccountAddress).toBe("xion1granter123"); + }); + + it("should successfully set granter account when session key is in pending state", async () => { + // Create a pending session key + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + await sessionKeyManager.createPendingSessionKey(userId, sessionKey); + + const granterAddress = "xion1granter123"; + + // Should work normally when session key is in PENDING state + await expect( + storageStrategy.setItem("xion-authz-granter-account", granterAddress), + ).resolves.not.toThrow(); + + // Verify the granter address is set and session key is now active + const sessionKeyInfo = + await sessionKeyManager.getLastSessionKeyInfo(userId); + expect(sessionKeyInfo!.metaAccountAddress).toBe(granterAddress); + expect(sessionKeyInfo!.sessionState).toBe(SessionState.ACTIVE); + }); + + it("should throw InvalidStorageKeyError for invalid key", async () => { + await expect( + storageStrategy.setItem("invalid-key", "value"), + ).rejects.toThrow(InvalidStorageKeyError); + await expect( + storageStrategy.setItem("invalid-key", "value"), + ).rejects.toThrow("Invalid storage key: invalid-key@setItem"); + }); + + it("should handle deserialization errors for temp account", async () => { + const invalidSerializedKeypair = "invalid-serialized-keypair"; + + await expect( + storageStrategy.setItem( + "xion-authz-temp-account", + invalidSerializedKeypair, + ), + ).rejects.toThrow(); + }); + + it("should throw InvalidStorageKeyError for empty string key", async () => { + await expect(storageStrategy.setItem("", "value")).rejects.toThrow( + InvalidStorageKeyError, + ); + await expect(storageStrategy.setItem("", "value")).rejects.toThrow( + "Invalid storage key: @setItem", + ); + }); + + it("should throw InvalidStorageKeyError for null key", async () => { + await expect( + storageStrategy.setItem(null as any, "value"), + ).rejects.toThrow(InvalidStorageKeyError); + }); + + it("should throw InvalidStorageKeyError for undefined key", async () => { + await expect( + storageStrategy.setItem(undefined as any, "value"), + ).rejects.toThrow(InvalidStorageKeyError); + }); + + it("should handle empty string value for temp account", async () => { + await expect( + storageStrategy.setItem("xion-authz-temp-account", ""), + ).rejects.toThrow(); + }); + + it("should handle empty string value for granter account", async () => { + // Create a pending session key first + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + await sessionKeyManager.createPendingSessionKey(userId, sessionKey); + + // Should not throw error for empty granter address + await expect( + storageStrategy.setItem("xion-authz-granter-account", ""), + ).resolves.not.toThrow(); + + const sessionKeyInfo = + await sessionKeyManager.getLastSessionKeyInfo(userId); + expect(sessionKeyInfo!.metaAccountAddress).toBe(""); + }); + + it("should handle very long serialized keypair", async () => { + // Generate a valid keypair and then create a very long string + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + const longKeypair = sessionKey.serializedKeypair + "x".repeat(10000); + + await expect( + storageStrategy.setItem("xion-authz-temp-account", longKeypair), + ).rejects.toThrow(); + }); + + it("should handle concurrent setItem operations", async () => { + const sessionKey1 = await sessionKeyManager.generateSessionKeypair(); + const sessionKey2 = await sessionKeyManager.generateSessionKeypair(); + + // Create two storage strategies for the same user + const storageStrategy2 = new DatabaseStorageStrategy( + userId, + sessionKeyManager, + ); + + // Try to set temp accounts concurrently + const promises = [ + storageStrategy.setItem( + "xion-authz-temp-account", + sessionKey1.serializedKeypair, + ), + storageStrategy2.setItem( + "xion-authz-temp-account", + sessionKey2.serializedKeypair, + ), + ]; + + // Both should complete without throwing (last one wins) + await expect(Promise.all(promises)).resolves.not.toThrow(); + }); + }); + + describe("removeItem", () => { + it("should remove temp account by revoking active session keys", async () => { + // Create and activate a session key + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + await sessionKeyManager.createPendingSessionKey(userId, sessionKey); + await sessionKeyManager.storeGrantedSessionKey( + userId, + sessionKey.address, + "xion1granter123", + ); + + await storageStrategy.removeItem("xion-authz-temp-account"); + + const sessionKeyInfo = + await sessionKeyManager.getLastSessionKeyInfo(userId); + expect(sessionKeyInfo).toBeDefined(); + expect(sessionKeyInfo!.sessionState).toBe(SessionState.REVOKED); + }); + + it("should remove granter account by revoking active session keys", async () => { + // Create and activate a session key + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + await sessionKeyManager.createPendingSessionKey(userId, sessionKey); + await sessionKeyManager.storeGrantedSessionKey( + userId, + sessionKey.address, + "xion1granter123", + ); + + await storageStrategy.removeItem("xion-authz-granter-account"); + + const sessionKeyInfo = + await sessionKeyManager.getLastSessionKeyInfo(userId); + expect(sessionKeyInfo).toBeDefined(); + expect(sessionKeyInfo!.sessionState).toBe(SessionState.REVOKED); + }); + + it("should throw InvalidStorageKeyError for invalid key", async () => { + await expect(storageStrategy.removeItem("invalid-key")).rejects.toThrow( + InvalidStorageKeyError, + ); + await expect(storageStrategy.removeItem("invalid-key")).rejects.toThrow( + "Invalid storage key: invalid-key@removeItem", + ); + }); + + it("should handle removal when no session keys exist", async () => { + // Should not throw error even if no session keys exist + await expect( + storageStrategy.removeItem("xion-authz-temp-account"), + ).resolves.not.toThrow(); + }); + + it("should throw InvalidStorageKeyError for empty string key", async () => { + await expect(storageStrategy.removeItem("")).rejects.toThrow( + InvalidStorageKeyError, + ); + await expect(storageStrategy.removeItem("")).rejects.toThrow( + "Invalid storage key: @removeItem", + ); + }); + + it("should throw InvalidStorageKeyError for null key", async () => { + await expect(storageStrategy.removeItem(null as any)).rejects.toThrow( + InvalidStorageKeyError, + ); + }); + + it("should throw InvalidStorageKeyError for undefined key", async () => { + await expect( + storageStrategy.removeItem(undefined as any), + ).rejects.toThrow(InvalidStorageKeyError); + }); + + it("should handle removal with different user IDs", async () => { + const differentUserId = "different-user-456"; + const differentStorageStrategy = new DatabaseStorageStrategy( + differentUserId, + sessionKeyManager, + ); + + // Should not throw error even if no session keys exist for different user + await expect( + differentStorageStrategy.removeItem("xion-authz-temp-account"), + ).resolves.not.toThrow(); + }); + + it("should handle concurrent removeItem operations", async () => { + // Create and activate a session key + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + await sessionKeyManager.createPendingSessionKey(userId, sessionKey); + await sessionKeyManager.storeGrantedSessionKey( + userId, + sessionKey.address, + "xion1granter123", + ); + + // Create two storage strategies for the same user + const storageStrategy2 = new DatabaseStorageStrategy( + userId, + sessionKeyManager, + ); + + // Try to remove items concurrently + const promises = [ + storageStrategy.removeItem("xion-authz-temp-account"), + storageStrategy2.removeItem("xion-authz-granter-account"), + ]; + + // Both should complete without throwing + await expect(Promise.all(promises)).resolves.not.toThrow(); + }); + }); + }); + + describe("DatabaseRedirectStrategy", () => { + let redirectStrategy: DatabaseRedirectStrategy; + let mockRequest: IncomingMessage; + let mockOnRedirectMethod: jest.Mock; + + beforeEach(() => { + mockOnRedirectMethod = jest.fn(); + mockRequest = { + url: "/test-path?param1=value1¶m2=value2", + headers: { + host: "example.com", + "x-forwarded-proto": "https", + }, + } as unknown as IncomingMessage; + redirectStrategy = new DatabaseRedirectStrategy( + mockRequest, + mockOnRedirectMethod, + ); + }); + + describe("getCurrentUrl", () => { + it("should return URL with x-forwarded-proto when available", async () => { + const url = await redirectStrategy.getCurrentUrl(); + expect(url).toBe( + "https://example.com/test-path?param1=value1¶m2=value2", + ); + }); + + it("should return URL with http when x-forwarded-proto is not available", async () => { + mockRequest.headers = { host: "example.com" }; + const url = await redirectStrategy.getCurrentUrl(); + expect(url).toBe( + "http://example.com/test-path?param1=value1¶m2=value2", + ); + }); + + it("should handle missing host header", async () => { + mockRequest.headers = {}; + const url = await redirectStrategy.getCurrentUrl(); + expect(url).toBe( + "http://localhost/test-path?param1=value1¶m2=value2", + ); + }); + + it("should handle missing url", async () => { + mockRequest.url = undefined; + const url = await redirectStrategy.getCurrentUrl(); + expect(url).toBe("https://example.comundefined"); + }); + }); + + describe("redirect", () => { + it("should call onRedirectMethod when provided", async () => { + const redirectUrl = "https://example.com/redirect"; + await redirectStrategy.redirect(redirectUrl); + expect(mockOnRedirectMethod).toHaveBeenCalledWith(redirectUrl); + }); + + it("should not throw error when onRedirectMethod is not provided", async () => { + const redirectStrategyWithoutMethod = new DatabaseRedirectStrategy( + mockRequest, + ); + const redirectUrl = "https://example.com/redirect"; + await expect( + redirectStrategyWithoutMethod.redirect(redirectUrl), + ).resolves.not.toThrow(); + }); + }); + + describe("getUrlParameter", () => { + it("should return parameter value when it exists", async () => { + const paramValue = await redirectStrategy.getUrlParameter("param1"); + expect(paramValue).toBe("value1"); + }); + + it("should return null when parameter does not exist", async () => { + const paramValue = + await redirectStrategy.getUrlParameter("nonexistent"); + expect(paramValue).toBeNull(); + }); + + it("should return null when url is not available", async () => { + mockRequest.url = undefined; + const paramValue = await redirectStrategy.getUrlParameter("param1"); + expect(paramValue).toBeNull(); + }); + + it("should handle empty parameter value", async () => { + mockRequest.url = "/test-path?emptyParam="; + const paramValue = await redirectStrategy.getUrlParameter("emptyParam"); + expect(paramValue).toBe(""); + }); + + it("should handle URL with hash", async () => { + mockRequest.url = "/test-path?param1=value1#hash"; + const paramValue = await redirectStrategy.getUrlParameter("param1"); + expect(paramValue).toBe("value1"); + }); + }); + + describe("cleanUrlParameters", () => { + it("should resolve without doing anything", async () => { + await expect( + redirectStrategy.cleanUrlParameters(["param1", "param2"]), + ).resolves.not.toThrow(); + }); + + it("should handle empty parameter list", async () => { + await expect( + redirectStrategy.cleanUrlParameters([]), + ).resolves.not.toThrow(); + }); + }); + + describe("private getUrl method", () => { + it("should handle different protocol scenarios", () => { + // Test with x-forwarded-proto + mockRequest.headers = { + host: "example.com", + "x-forwarded-proto": "https", + }; + mockRequest.url = "/test"; + const url1 = (redirectStrategy as any).getUrl(); + expect(url1.protocol).toBe("https:"); + + // Test without x-forwarded-proto + mockRequest.headers = { host: "example.com" }; + const url2 = (redirectStrategy as any).getUrl(); + expect(url2.protocol).toBe("http:"); + }); + + it("should handle missing host", () => { + mockRequest.headers = {}; + mockRequest.url = "/test"; + const url = (redirectStrategy as any).getUrl(); + expect(url.host).toBe("undefined"); + }); + + it("should handle relative URL", () => { + mockRequest.headers = { host: "example.com" }; + mockRequest.url = "/test?param=value"; + const url = (redirectStrategy as any).getUrl(); + expect(url.pathname).toBe("/test"); + expect(url.searchParams.get("param")).toBe("value"); + }); + }); + + describe("constructor edge cases", () => { + it("should create instance without onRedirectMethod", () => { + const strategyWithoutMethod = new DatabaseRedirectStrategy(mockRequest); + expect(strategyWithoutMethod).toBeDefined(); + }); + + it("should handle request with minimal headers", () => { + const minimalRequest = { + url: "/test", + headers: {}, + } as unknown as IncomingMessage; + const strategy = new DatabaseRedirectStrategy(minimalRequest); + expect(strategy).toBeDefined(); + }); + + it("should handle request with null headers", () => { + const nullHeadersRequest = { + url: "/test", + headers: null, + } as unknown as IncomingMessage; + const strategy = new DatabaseRedirectStrategy(nullHeadersRequest); + expect(strategy).toBeDefined(); + }); + }); + + describe("getCurrentUrl edge cases", () => { + it("should handle request with undefined url", async () => { + mockRequest.url = undefined; + const url = await redirectStrategy.getCurrentUrl(); + expect(url).toBe("https://example.comundefined"); + }); + + it("should handle request with null url", async () => { + mockRequest.url = null as any; + const url = await redirectStrategy.getCurrentUrl(); + expect(url).toBe("https://example.comnull"); + }); + + it("should handle request with empty string url", async () => { + mockRequest.url = ""; + const url = await redirectStrategy.getCurrentUrl(); + expect(url).toBe("https://example.com"); + }); + + it("should handle request with only host header", async () => { + mockRequest.headers = { host: "api.example.com" }; + mockRequest.url = "/v1/test"; + const url = await redirectStrategy.getCurrentUrl(); + expect(url).toBe("http://api.example.com/v1/test"); + }); + }); + + describe("getUrlParameter edge cases", () => { + it("should handle parameter with special characters", async () => { + mockRequest.url = + "/test?special=value%20with%20spaces&encoded=test%2Bvalue"; + const paramValue = await redirectStrategy.getUrlParameter("special"); + expect(paramValue).toBe("value with spaces"); + }); + + it("should handle parameter with empty value", async () => { + mockRequest.url = "/test?empty=&normal=value"; + const emptyValue = await redirectStrategy.getUrlParameter("empty"); + const normalValue = await redirectStrategy.getUrlParameter("normal"); + expect(emptyValue).toBe(""); + expect(normalValue).toBe("value"); + }); + + it("should handle multiple parameters with same name", async () => { + mockRequest.url = "/test?param=first¶m=second"; + const paramValue = await redirectStrategy.getUrlParameter("param"); + expect(paramValue).toBe("first"); // URLSearchParams.get returns first value + }); + + it("should handle URL with fragment", async () => { + mockRequest.url = "/test?param=value#fragment"; + const paramValue = await redirectStrategy.getUrlParameter("param"); + expect(paramValue).toBe("value"); + }); + }); + }); + + describe("Integration tests", () => { + let storageStrategy: DatabaseStorageStrategy; + let sessionKeyManager: SessionKeyManager; + let databaseAdapter: TestDatabaseAdapter; + const userId = "integration-test-user"; + + beforeEach(() => { + databaseAdapter = new TestDatabaseAdapter(); + sessionKeyManager = new SessionKeyManager(databaseAdapter, { + encryptionKey: EncryptionService.generateEncryptionKey(), + sessionKeyExpiryMs: 24 * 60 * 60 * 1000, + refreshThresholdMs: 60 * 60 * 1000, + enableAuditLogging: true, + }); + storageStrategy = new DatabaseStorageStrategy(userId, sessionKeyManager); + }); + + afterEach(async () => { + await databaseAdapter.close(); + }); + + it("should complete full workflow: create temp account, set granter, get both accounts, then remove", async () => { + // 1. Create temp account + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + await storageStrategy.setItem( + "xion-authz-temp-account", + sessionKey.serializedKeypair, + ); + + // 2. Set granter account (should activate the session key) + const granterAddress = "xion1granter123"; + await storageStrategy.setItem( + "xion-authz-granter-account", + granterAddress, + ); + + // 3. Get both accounts + const retrievedTempAccount = await storageStrategy.getItem( + "xion-authz-temp-account", + ); + const retrievedGranterAccount = await storageStrategy.getItem( + "xion-authz-granter-account", + ); + + expect(retrievedTempAccount).toBe(sessionKey.serializedKeypair); + expect(retrievedGranterAccount).toBe(granterAddress); + + // 4. Remove both accounts + await storageStrategy.removeItem("xion-authz-temp-account"); + await storageStrategy.removeItem("xion-authz-granter-account"); + + // 5. Verify session key is revoked + const sessionKeyInfo = + await sessionKeyManager.getLastSessionKeyInfo(userId); + expect(sessionKeyInfo).toBeDefined(); + expect(sessionKeyInfo!.sessionState).toBe(SessionState.REVOKED); + }); + + it("should handle multiple session keys correctly", async () => { + // Create first session key + const sessionKey1 = await sessionKeyManager.generateSessionKeypair(); + await storageStrategy.setItem( + "xion-authz-temp-account", + sessionKey1.serializedKeypair, + ); + await storageStrategy.setItem( + "xion-authz-granter-account", + "xion1granter1", + ); + + // Revoke the first session key + await storageStrategy.removeItem("xion-authz-temp-account"); + await storageStrategy.removeItem("xion-authz-granter-account"); + + // Verify that the session key was revoked + const activeKeys = await databaseAdapter.getActiveSessionKeys(userId); + expect(activeKeys).toHaveLength(0); + }); + }); +}); diff --git a/apps/backend-session/src/__tests__/lib/abstraxion-backend/EncryptionService.test.ts b/apps/backend-session/src/__tests__/lib/abstraxion-backend/EncryptionService.test.ts new file mode 100644 index 00000000..039432df --- /dev/null +++ b/apps/backend-session/src/__tests__/lib/abstraxion-backend/EncryptionService.test.ts @@ -0,0 +1,560 @@ +import { EncryptionService } from "../../../lib/xion/backend/services/EncryptionService"; +import { EncryptionError } from "../../../lib/xion/backend/types"; + +describe("EncryptionService", () => { + let encryptionService: EncryptionService; + const testMasterKey = "test-master-key-12345678901234567890"; + + beforeEach(() => { + encryptionService = new EncryptionService(testMasterKey); + }); + + describe("constructor", () => { + it("should create instance with valid master key", () => { + expect(encryptionService).toBeInstanceOf(EncryptionService); + }); + + it("should throw error for empty master key", () => { + expect(() => new EncryptionService("")).toThrow(EncryptionError); + expect(() => new EncryptionService("")).toThrow( + "Master encryption key is required", + ); + }); + + it("should throw error for null master key", () => { + expect(() => new EncryptionService(null as any)).toThrow(EncryptionError); + }); + + it("should throw error for undefined master key", () => { + expect(() => new EncryptionService(undefined as any)).toThrow( + EncryptionError, + ); + }); + }); + + describe("encryptSessionKey", () => { + it("should encrypt session key successfully", async () => { + const sessionKey = "test-session-key-12345"; + const encrypted = await encryptionService.encryptSessionKey(sessionKey); + + expect(encrypted).toBeDefined(); + expect(typeof encrypted).toBe("string"); + expect(encrypted).not.toBe(sessionKey); + }); + + it("should produce different encrypted results for same input", async () => { + const sessionKey = "test-session-key-12345"; + const encrypted1 = await encryptionService.encryptSessionKey(sessionKey); + const encrypted2 = await encryptionService.encryptSessionKey(sessionKey); + + expect(encrypted1).not.toBe(encrypted2); + }); + + it("should handle empty string", async () => { + const encrypted = await encryptionService.encryptSessionKey(""); + expect(encrypted).toBeDefined(); + expect(typeof encrypted).toBe("string"); + }); + + it("should handle long session key", async () => { + const longSessionKey = "a".repeat(1000); + const encrypted = + await encryptionService.encryptSessionKey(longSessionKey); + expect(encrypted).toBeDefined(); + expect(typeof encrypted).toBe("string"); + }); + + it("should handle special characters", async () => { + const specialKey = "!@#$%^&*()_+-=[]{}|;:,.<>?"; + const encrypted = await encryptionService.encryptSessionKey(specialKey); + expect(encrypted).toBeDefined(); + expect(typeof encrypted).toBe("string"); + }); + + it("should handle unicode characters", async () => { + const unicodeKey = "测试密钥🔐🎯"; + const encrypted = await encryptionService.encryptSessionKey(unicodeKey); + expect(encrypted).toBeDefined(); + expect(typeof encrypted).toBe("string"); + }); + }); + + describe("decryptSessionKey", () => { + it("should decrypt session key successfully", async () => { + const originalKey = "test-session-key-12345"; + const encrypted = await encryptionService.encryptSessionKey(originalKey); + const decrypted = await encryptionService.decryptSessionKey(encrypted); + + expect(decrypted).toBe(originalKey); + }); + + it("should handle round-trip encryption/decryption", async () => { + const testKeys = [ + "simple-key", + "key-with-special-chars!@#$%", + "key-with-unicode-测试🔐", + "very-long-key-" + "x".repeat(1000), + "", + "single-char", + ]; + + for (const key of testKeys) { + const encrypted = await encryptionService.encryptSessionKey(key); + const decrypted = await encryptionService.decryptSessionKey(encrypted); + expect(decrypted).toBe(key); + } + }); + + it("should throw error for invalid base64", async () => { + await expect( + encryptionService.decryptSessionKey("invalid-base64!"), + ).rejects.toThrow(EncryptionError); + }); + + it("should throw error for corrupted data", async () => { + const originalKey = "test-key"; + const encrypted = await encryptionService.encryptSessionKey(originalKey); + + // Corrupt the encrypted data + const corrupted = encrypted.slice(0, -10) + "corrupted"; + + await expect( + encryptionService.decryptSessionKey(corrupted), + ).rejects.toThrow(EncryptionError); + }); + + it("should throw error for empty string", async () => { + await expect(encryptionService.decryptSessionKey("")).rejects.toThrow( + EncryptionError, + ); + }); + + it("should throw error for too short data", async () => { + const shortData = Buffer.from("short").toString("base64"); + await expect( + encryptionService.decryptSessionKey(shortData), + ).rejects.toThrow(EncryptionError); + }); + }); + + describe("generateEncryptionKey", () => { + it("should generate valid encryption key", () => { + const key = EncryptionService.generateEncryptionKey(); + + expect(key).toBeDefined(); + expect(typeof key).toBe("string"); + expect(EncryptionService.validateEncryptionKey(key)).toBe(true); + }); + + it("should generate different keys each time", () => { + const key1 = EncryptionService.generateEncryptionKey(); + const key2 = EncryptionService.generateEncryptionKey(); + + expect(key1).not.toBe(key2); + }); + + it("should generate base64 encoded key", () => { + const key = EncryptionService.generateEncryptionKey(); + + // Should be valid base64 + expect(() => Buffer.from(key, "base64")).not.toThrow(); + }); + }); + + describe("validateEncryptionKey", () => { + it("should validate correct 32-byte base64 key", () => { + const validKey = Buffer.from("a".repeat(32)).toString("base64"); + expect(EncryptionService.validateEncryptionKey(validKey)).toBe(true); + }); + + it("should reject invalid base64", () => { + expect(EncryptionService.validateEncryptionKey("invalid-base64!")).toBe( + false, + ); + }); + + it("should reject wrong length key", () => { + const shortKey = Buffer.from("short").toString("base64"); + const longKey = Buffer.from("a".repeat(64)).toString("base64"); + + expect(EncryptionService.validateEncryptionKey(shortKey)).toBe(false); + expect(EncryptionService.validateEncryptionKey(longKey)).toBe(false); + }); + + it("should reject empty string", () => { + expect(EncryptionService.validateEncryptionKey("")).toBe(false); + }); + + it("should reject null and undefined", () => { + expect(EncryptionService.validateEncryptionKey(null as any)).toBe(false); + expect(EncryptionService.validateEncryptionKey(undefined as any)).toBe( + false, + ); + }); + }); + + describe("encryption consistency", () => { + it("should maintain consistency across multiple instances with same master key", async () => { + const service1 = new EncryptionService(testMasterKey); + const service2 = new EncryptionService(testMasterKey); + + const originalKey = "test-consistency-key"; + const encrypted1 = await service1.encryptSessionKey(originalKey); + const decrypted1 = await service1.decryptSessionKey(encrypted1); + const decrypted2 = await service2.decryptSessionKey(encrypted1); + + expect(decrypted1).toBe(originalKey); + expect(decrypted2).toBe(originalKey); + }); + + it("should not decrypt with different master key", async () => { + const service1 = new EncryptionService("master-key-1"); + const service2 = new EncryptionService("master-key-2"); + + const originalKey = "test-key"; + const encrypted = await service1.encryptSessionKey(originalKey); + + await expect(service2.decryptSessionKey(encrypted)).rejects.toThrow( + EncryptionError, + ); + }); + }); + + describe("performance", () => { + it("should handle multiple rapid encryptions", async () => { + const promises = Array.from({ length: 100 }, (_, i) => + encryptionService.encryptSessionKey(`key-${i}`), + ); + + const results = await Promise.all(promises); + expect(results).toHaveLength(100); + results.forEach((result) => { + expect(result).toBeDefined(); + expect(typeof result).toBe("string"); + }); + }); + + it("should handle large data efficiently", async () => { + const largeKey = "x".repeat(10000); + const start = Date.now(); + + const encrypted = await encryptionService.encryptSessionKey(largeKey); + const decrypted = await encryptionService.decryptSessionKey(encrypted); + + const duration = Date.now() - start; + + expect(decrypted).toBe(largeKey); + expect(duration).toBeLessThan(1000); // Should complete within 1 second + }); + }); + + describe("error handling", () => { + it("should provide meaningful error messages", async () => { + try { + await encryptionService.decryptSessionKey("invalid-data"); + } catch (error) { + if (error instanceof Error) { + expect(error).toBeInstanceOf(EncryptionError); + expect(error.message).toContain("Failed to decrypt session key"); + } + } + }); + + it("should handle scrypt errors gracefully", async () => { + // Create service with very long master key that might cause scrypt issues + const longMasterKey = "a".repeat(1000000); + const service = new EncryptionService(longMasterKey); + + // This might throw due to memory constraints, but should be handled gracefully + try { + await service.encryptSessionKey("test"); + } catch (error) { + if (error instanceof Error) { + expect(error).toBeInstanceOf(EncryptionError); + expect(error.message).toContain("Failed to encrypt session key"); + } + } + }); + }); + + describe("security properties", () => { + it("should produce different encrypted data for same input due to random IV", async () => { + const sessionKey = "same-key"; + const encrypted1 = await encryptionService.encryptSessionKey(sessionKey); + const encrypted2 = await encryptionService.encryptSessionKey(sessionKey); + + // Should be different due to random IV and salt + expect(encrypted1).not.toBe(encrypted2); + + // But both should decrypt to the same value + const decrypted1 = await encryptionService.decryptSessionKey(encrypted1); + const decrypted2 = await encryptionService.decryptSessionKey(encrypted2); + + expect(decrypted1).toBe(sessionKey); + expect(decrypted2).toBe(sessionKey); + }); + + it("should include authentication tag for integrity", async () => { + const sessionKey = "test-key"; + const encrypted = await encryptionService.encryptSessionKey(sessionKey); + + // Decode and check structure: salt + iv + tag + encrypted + const combined = Buffer.from(encrypted, "base64"); + const expectedMinLength = 32 + 16 + 16 + 1; // salt + iv + tag + at least 1 byte encrypted + + expect(combined.length).toBeGreaterThanOrEqual(expectedMinLength); + }); + + it("should detect tampering attempts", async () => { + const sessionKey = "test-key"; + const encrypted = await encryptionService.encryptSessionKey(sessionKey); + + // Tamper with the encrypted data + const combined = Buffer.from(encrypted, "base64"); + combined[0] = (combined[0] + 1) % 256; // Change first byte + const tampered = combined.toString("base64"); + + await expect( + encryptionService.decryptSessionKey(tampered), + ).rejects.toThrow(EncryptionError); + }); + + it("should detect tampering in salt", async () => { + const sessionKey = "test-key"; + const encrypted = await encryptionService.encryptSessionKey(sessionKey); + + // Tamper with the salt (first 32 bytes) + const combined = Buffer.from(encrypted, "base64"); + combined[31] = (combined[31] + 1) % 256; // Change last byte of salt + const tampered = combined.toString("base64"); + + await expect( + encryptionService.decryptSessionKey(tampered), + ).rejects.toThrow(EncryptionError); + }); + + it("should detect tampering in IV", async () => { + const sessionKey = "test-key"; + const encrypted = await encryptionService.encryptSessionKey(sessionKey); + + // Tamper with the IV (bytes 32-47) + const combined = Buffer.from(encrypted, "base64"); + combined[40] = (combined[40] + 1) % 256; // Change a byte in IV + const tampered = combined.toString("base64"); + + await expect( + encryptionService.decryptSessionKey(tampered), + ).rejects.toThrow(EncryptionError); + }); + + it("should detect tampering in authentication tag", async () => { + const sessionKey = "test-key"; + const encrypted = await encryptionService.encryptSessionKey(sessionKey); + + // Tamper with the authentication tag (bytes 48-63) + const combined = Buffer.from(encrypted, "base64"); + combined[60] = (combined[60] + 1) % 256; // Change a byte in tag + const tampered = combined.toString("base64"); + + await expect( + encryptionService.decryptSessionKey(tampered), + ).rejects.toThrow(EncryptionError); + }); + + it("should detect tampering in encrypted data", async () => { + const sessionKey = "test-key"; + const encrypted = await encryptionService.encryptSessionKey(sessionKey); + + // Tamper with the encrypted data (after tag) + const combined = Buffer.from(encrypted, "base64"); + combined[combined.length - 1] = (combined[combined.length - 1] + 1) % 256; // Change last byte + const tampered = combined.toString("base64"); + + await expect( + encryptionService.decryptSessionKey(tampered), + ).rejects.toThrow(EncryptionError); + }); + }); + + describe("key derivation", () => { + it("should use different salts for different encryptions", async () => { + const sessionKey = "test-key"; + const encrypted1 = await encryptionService.encryptSessionKey(sessionKey); + const encrypted2 = await encryptionService.encryptSessionKey(sessionKey); + + const combined1 = Buffer.from(encrypted1, "base64"); + const combined2 = Buffer.from(encrypted2, "base64"); + + const salt1 = combined1.subarray(0, 32); + const salt2 = combined2.subarray(0, 32); + + expect(salt1).not.toEqual(salt2); + }); + + it("should use different IVs for different encryptions", async () => { + const sessionKey = "test-key"; + const encrypted1 = await encryptionService.encryptSessionKey(sessionKey); + const encrypted2 = await encryptionService.encryptSessionKey(sessionKey); + + const combined1 = Buffer.from(encrypted1, "base64"); + const combined2 = Buffer.from(encrypted2, "base64"); + + const iv1 = combined1.subarray(32, 48); + const iv2 = combined2.subarray(32, 48); + + expect(iv1).not.toEqual(iv2); + }); + + it("should derive different keys for different salts", async () => { + const masterKey = "test-master-key"; + const service1 = new EncryptionService(masterKey); + const service2 = new EncryptionService(masterKey); + + const sessionKey = "test-key"; + const encrypted1 = await service1.encryptSessionKey(sessionKey); + const encrypted2 = await service2.encryptSessionKey(sessionKey); + + // Should be different due to different salts + expect(encrypted1).not.toBe(encrypted2); + + // But both should decrypt correctly with their respective services + const decrypted1 = await service1.decryptSessionKey(encrypted1); + const decrypted2 = await service2.decryptSessionKey(encrypted2); + + expect(decrypted1).toBe(sessionKey); + expect(decrypted2).toBe(sessionKey); + }); + }); + + describe("memory safety", () => { + it("should not expose private key in memory after encryption", async () => { + const sessionKey = "sensitive-private-key-data"; + const encrypted = await encryptionService.encryptSessionKey(sessionKey); + + // The encrypted data should not contain the original key + expect(encrypted).not.toContain(sessionKey); + expect(encrypted).not.toContain("sensitive"); + expect(encrypted).not.toContain("private"); + }); + + it("should handle very long keys efficiently", async () => { + const longKey = "x".repeat(100000); // 100KB key + const start = Date.now(); + + const encrypted = await encryptionService.encryptSessionKey(longKey); + const decrypted = await encryptionService.decryptSessionKey(encrypted); + + const duration = Date.now() - start; + + expect(decrypted).toBe(longKey); + expect(duration).toBeLessThan(5000); // Should complete within 5 seconds + }); + }); + + describe("concurrent operations", () => { + it("should handle concurrent encryption operations", async () => { + const promises = Array.from({ length: 50 }, (_, i) => + encryptionService.encryptSessionKey(`concurrent-key-${i}`), + ); + + const results = await Promise.all(promises); + expect(results).toHaveLength(50); + + // All results should be different + const uniqueResults = new Set(results); + expect(uniqueResults.size).toBe(50); + }); + + it("should handle concurrent decryption operations", async () => { + const sessionKey = "concurrent-test-key"; + const encrypted = await encryptionService.encryptSessionKey(sessionKey); + + const promises = Array.from({ length: 50 }, () => + encryptionService.decryptSessionKey(encrypted), + ); + + const results = await Promise.all(promises); + expect(results).toHaveLength(50); + + // All results should be the same + results.forEach((result) => { + expect(result).toBe(sessionKey); + }); + }); + + it("should handle mixed concurrent operations", async () => { + const sessionKey = "mixed-concurrent-key"; + const encrypted = await encryptionService.encryptSessionKey(sessionKey); + + const encryptPromises = Array.from({ length: 25 }, (_, i) => + encryptionService.encryptSessionKey(`mixed-key-${i}`), + ); + const decryptPromises = Array.from({ length: 25 }, () => + encryptionService.decryptSessionKey(encrypted), + ); + + const [encryptResults, decryptResults] = await Promise.all([ + Promise.all(encryptPromises), + Promise.all(decryptPromises), + ]); + + expect(encryptResults).toHaveLength(25); + expect(decryptResults).toHaveLength(25); + + decryptResults.forEach((result) => { + expect(result).toBe(sessionKey); + }); + }); + }); + + describe("error recovery", () => { + it("should handle scrypt memory errors gracefully", async () => { + // Create service with very long master key that might cause memory issues + const veryLongMasterKey = "a".repeat(1000000); + + try { + const service = new EncryptionService(veryLongMasterKey); + await service.encryptSessionKey("test"); + } catch (error) { + if (error instanceof Error) { + expect(error).toBeInstanceOf(EncryptionError); + expect(error.message).toContain("Failed to encrypt session key"); + } + } + }); + + it("should handle invalid base64 input gracefully", async () => { + const invalidInputs = [ + "not-base64!", + "invalid-base64-characters-!@#$%", + "too-short", + "", + "valid-base64-but-too-short", + ]; + + for (const input of invalidInputs) { + await expect( + encryptionService.decryptSessionKey(input), + ).rejects.toThrow(EncryptionError); + } + }); + + it("should handle malformed encrypted data", async () => { + const sessionKey = "test-key"; + const encrypted = await encryptionService.encryptSessionKey(sessionKey); + const combined = Buffer.from(encrypted, "base64"); + + // Test with data that's too short + const tooShort = combined.subarray(0, 10).toString("base64"); + await expect( + encryptionService.decryptSessionKey(tooShort), + ).rejects.toThrow(EncryptionError); + + // Test with data that's missing components + const missingTag = combined.subarray(0, 48).toString("base64"); + await expect( + encryptionService.decryptSessionKey(missingTag), + ).rejects.toThrow(EncryptionError); + }); + }); +}); diff --git a/apps/backend-session/src/__tests__/lib/abstraxion-backend/SessionKeyManager.test.ts b/apps/backend-session/src/__tests__/lib/abstraxion-backend/SessionKeyManager.test.ts new file mode 100644 index 00000000..497cefc0 --- /dev/null +++ b/apps/backend-session/src/__tests__/lib/abstraxion-backend/SessionKeyManager.test.ts @@ -0,0 +1,790 @@ +import { SessionKeyManager } from "../../../lib/xion/backend/services/SessionKeyManager"; +import { TestDatabaseAdapter } from "../../../lib/xion/backend/adapters/TestDatabaseAdapter"; +import { EncryptionService } from "../../../lib/xion/backend/services/EncryptionService"; +import { + SessionState, + AuditAction, + XionKeypair, +} from "../../../lib/xion/backend/types"; +import { + UserIdRequiredError, + SessionKeyNotFoundError, + SessionKeyInvalidError, + SessionKeyStorageError, + SessionKeyRevocationError, + SessionKeyRefreshError, +} from "../../../lib/xion/backend/types/errors"; +import { EncryptionError } from "../../../lib/xion/backend/types"; + +describe("SessionKeyManager", () => { + let sessionKeyManager: SessionKeyManager; + let databaseAdapter: TestDatabaseAdapter; + + beforeEach(() => { + databaseAdapter = new TestDatabaseAdapter(); + sessionKeyManager = new SessionKeyManager(databaseAdapter, { + encryptionKey: EncryptionService.generateEncryptionKey(), + sessionKeyExpiryMs: 24 * 60 * 60 * 1000, // 24 hours + refreshThresholdMs: 60 * 60 * 1000, // 1 hour + enableAuditLogging: true, + }); + }); + + afterEach(async () => { + await databaseAdapter.close(); + }); + + describe("createPendingSessionKey", () => { + it("should create pending session key with encrypted private key", async () => { + const userId = "user123"; + const sessionKey: XionKeypair = { + address: "xion1testaddress", + serializedKeypair: "test-serialized-keypair", + }; + + await sessionKeyManager.createPendingSessionKey(userId, sessionKey); + + const stored = await databaseAdapter.getLastSessionKey(userId); + expect(stored).toBeDefined(); + expect(stored!.userId).toBe(userId); + expect(stored!.sessionKeyAddress).toBe(sessionKey.address); + expect(stored!.sessionKeyMaterial).not.toBe(sessionKey.serializedKeypair); // Should be encrypted + expect(stored!.sessionState).toBe(SessionState.PENDING); + }); + + it("should throw error for empty userId", async () => { + const sessionKey: XionKeypair = { + address: "xion1testaddress", + serializedKeypair: "test-serialized-keypair", + }; + + await expect( + sessionKeyManager.createPendingSessionKey("", sessionKey), + ).rejects.toThrow(UserIdRequiredError); + }); + }); + + describe("getSessionKeypair", () => { + it("should retrieve and decrypt session key", async () => { + const userId = "user123"; + // Generate a real session keypair for testing + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + + await sessionKeyManager.createPendingSessionKey(userId, sessionKey); + + const retrieved = await sessionKeyManager.getSessionKeypair(userId); + expect(retrieved).toBeDefined(); + expect(retrieved).toHaveProperty("getAccounts"); + expect(retrieved).toHaveProperty("serialize"); + }); + + it("should throw error for non-existent user", async () => { + await expect( + sessionKeyManager.getSessionKeypair("nonexistent"), + ).rejects.toThrow(SessionKeyNotFoundError); + }); + + it("should throw error for expired session key", async () => { + const userId = "user123"; + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + + await sessionKeyManager.createPendingSessionKey(userId, sessionKey); + + // Store with past expiry time + const pastTime = new Date(Date.now() - 25 * 60 * 60 * 1000); // 25 hours ago + const sessionKeyInfo = { + userId, + sessionKeyAddress: sessionKey.address, + sessionKeyMaterial: + await sessionKeyManager.encryptionService.encryptSessionKey( + sessionKey.serializedKeypair, + ), + sessionKeyExpiry: pastTime, + sessionPermissions: {}, + sessionState: SessionState.ACTIVE, + metaAccountAddress: "xion1metaaccount", + createdAt: pastTime, + updatedAt: pastTime, + }; + + await databaseAdapter.storeSessionKey(sessionKeyInfo); + + await expect(sessionKeyManager.getSessionKeypair(userId)).rejects.toThrow( + SessionKeyNotFoundError, + ); + }); + }); + + describe("validateSessionKey", () => { + it("should return false for pending session key", async () => { + const userId = "user123"; + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + + await sessionKeyManager.createPendingSessionKey(userId, sessionKey); + + const isValid = await sessionKeyManager.validateSessionKey(userId); + expect(isValid).toBe(false); // Should be false because it's PENDING, not ACTIVE + }); + + it("should return false for expired session key", async () => { + const userId = "user123"; + const pastTime = new Date(Date.now() - 25 * 60 * 60 * 1000); // 25 hours ago + const sessionKeyInfo = { + userId, + sessionKeyAddress: "xion1testaddress", + sessionKeyMaterial: "encrypted-key", + sessionKeyExpiry: pastTime, + sessionPermissions: {}, + sessionState: SessionState.ACTIVE, + metaAccountAddress: "xion1metaaccount", + createdAt: pastTime, + updatedAt: pastTime, + }; + + await databaseAdapter.storeSessionKey(sessionKeyInfo); + + const isValid = await sessionKeyManager.validateSessionKey(userId); + expect(isValid).toBe(false); + }); + + it("should return false for non-existent user", async () => { + const isValid = await sessionKeyManager.validateSessionKey("nonexistent"); + expect(isValid).toBe(false); + }); + + it("should throw error for empty userId", async () => { + await expect(sessionKeyManager.validateSessionKey("")).rejects.toThrow( + UserIdRequiredError, + ); + }); + }); + + describe("revokeSessionKey", () => { + it("should revoke session key", async () => { + const userId = "user123"; + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + + await sessionKeyManager.createPendingSessionKey(userId, sessionKey); + + await sessionKeyManager.revokeSessionKey(userId, sessionKey.address); + + const retrieved = await sessionKeyManager.getLastSessionKeyInfo(userId); + expect(retrieved).toBeDefined(); + expect(retrieved!.sessionState).toBe(SessionState.REVOKED); + }); + + it("should throw error for empty userId", async () => { + await expect( + sessionKeyManager.revokeSessionKey("", "xion1testaddress"), + ).rejects.toThrow(UserIdRequiredError); + }); + + it("should throw error for empty sessionKeyAddress", async () => { + await expect( + sessionKeyManager.revokeSessionKey("user123", ""), + ).rejects.toThrow("Session key address is required"); + }); + }); + + describe("refreshIfNeeded", () => { + it("should refresh session key when near expiry", async () => { + const userId = "user123"; + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + + // Create a pending session key first + await sessionKeyManager.createPendingSessionKey(userId, sessionKey); + + // Activate it + await sessionKeyManager.storeGrantedSessionKey( + userId, + sessionKey.address, + "xion1metaaccount", + ); + + // Update the session key to be near expiry (30 minutes from now) + const nearExpiryTime = new Date(Date.now() + 30 * 60 * 1000); + await databaseAdapter.updateSessionKeyWithParams( + userId, + sessionKey.address, + { + sessionKeyExpiry: nearExpiryTime, + }, + ); + + const refreshed = await sessionKeyManager.refreshIfNeeded(userId); + expect(refreshed).toBeDefined(); + + // Check that a new pending session key was created by checking the last session key + const lastSessionKey = await databaseAdapter.getLastSessionKey(userId); + expect(lastSessionKey).toBeDefined(); + expect(lastSessionKey!.sessionState).toBe(SessionState.PENDING); + expect(lastSessionKey!.sessionKeyAddress).toBe(refreshed!.address); + }); + + it("should not refresh session key when not near expiry", async () => { + const userId = "user123"; + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + + await sessionKeyManager.createPendingSessionKey(userId, sessionKey); + + const refreshed = await sessionKeyManager.refreshIfNeeded(userId); + expect(refreshed).toBeDefined(); + expect(refreshed!.address).toBe(sessionKey.address); // Should be same address + }); + + it("should throw error for empty userId", async () => { + await expect(sessionKeyManager.refreshIfNeeded("")).rejects.toThrow( + UserIdRequiredError, + ); + }); + }); + + describe("storeGrantedSessionKey", () => { + it("should update pending session key to active with permissions", async () => { + const userId = "user123"; + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + + await sessionKeyManager.createPendingSessionKey(userId, sessionKey); + + const permissions = { + contracts: ["xion1contract1"], + bank: [{ denom: "uxion", amount: "1000000" }], + stake: true, + }; + const granterAddress = "xion1metaaccount"; + + await sessionKeyManager.storeGrantedSessionKey( + userId, + sessionKey.address, + granterAddress, + permissions, + ); + + const stored = await databaseAdapter.getSessionKey( + userId, + sessionKey.address, + ); + expect(stored).toBeDefined(); + expect(stored!.sessionState).toBe(SessionState.ACTIVE); + expect(stored!.metaAccountAddress).toBe(granterAddress); + expect(stored!.sessionPermissions).toEqual(permissions); + }); + + it("should throw error for non-existent session key", async () => { + await expect( + sessionKeyManager.storeGrantedSessionKey( + "user123", + "nonexistent-address", + "xion1metaaccount", + ), + ).rejects.toThrow(SessionKeyNotFoundError); + }); + + it("should throw error for empty userId", async () => { + await expect( + sessionKeyManager.storeGrantedSessionKey( + "", + "xion1testaddress", + "xion1metaaccount", + ), + ).rejects.toThrow(UserIdRequiredError); + }); + }); + + describe("generateSessionKeypair", () => { + it("should generate valid session keypair", async () => { + const keypair = await sessionKeyManager.generateSessionKeypair(); + + expect(keypair).toBeDefined(); + expect(keypair.address).toBeDefined(); + expect(keypair.serializedKeypair).toBeDefined(); + expect(typeof keypair.address).toBe("string"); + expect(typeof keypair.serializedKeypair).toBe("string"); + }); + }); + + describe("getLastSessionKeyInfo", () => { + it("should return session key info without decrypting", async () => { + const userId = "user123"; + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + + await sessionKeyManager.createPendingSessionKey(userId, sessionKey); + + const info = await sessionKeyManager.getLastSessionKeyInfo(userId); + expect(info).toBeDefined(); + expect(info!.userId).toBe(userId); + expect(info!.sessionKeyAddress).toBe(sessionKey.address); + expect(info!.sessionState).toBe(SessionState.PENDING); + }); + + it("should return null for non-existent user", async () => { + const info = await sessionKeyManager.getLastSessionKeyInfo("nonexistent"); + expect(info).toBeNull(); + }); + + it("should throw error for empty userId", async () => { + await expect(sessionKeyManager.getLastSessionKeyInfo("")).rejects.toThrow( + UserIdRequiredError, + ); + }); + }); + + describe("isExpired and isActive", () => { + it("should correctly identify expired session key", () => { + const pastTime = new Date(Date.now() - 25 * 60 * 60 * 1000); // 25 hours ago + const sessionKeyInfo = { + userId: "user123", + sessionKeyAddress: "xion1testaddress", + sessionKeyMaterial: "encrypted-key", + sessionKeyExpiry: pastTime, + sessionPermissions: {}, + sessionState: SessionState.ACTIVE, + metaAccountAddress: "xion1metaaccount", + createdAt: pastTime, + updatedAt: pastTime, + }; + + expect(sessionKeyManager.isExpired(sessionKeyInfo)).toBe(true); + expect(sessionKeyManager.isActive(sessionKeyInfo)).toBe(false); + }); + + it("should correctly identify active session key", () => { + const futureTime = new Date(Date.now() + 24 * 60 * 60 * 1000); // 24 hours from now + const sessionKeyInfo = { + userId: "user123", + sessionKeyAddress: "xion1testaddress", + sessionKeyMaterial: "encrypted-key", + sessionKeyExpiry: futureTime, + sessionPermissions: {}, + sessionState: SessionState.ACTIVE, + metaAccountAddress: "xion1metaaccount", + createdAt: new Date(), + updatedAt: new Date(), + }; + + expect(sessionKeyManager.isExpired(sessionKeyInfo)).toBe(false); + expect(sessionKeyManager.isActive(sessionKeyInfo)).toBe(true); + }); + }); + + describe("audit logging", () => { + it("should log audit events when enabled", async () => { + const userId = "user123"; + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + + await sessionKeyManager.createPendingSessionKey(userId, sessionKey); + + const auditLogs = await databaseAdapter.getAuditLogs(userId); + expect(auditLogs.length).toBeGreaterThan(0); + expect(auditLogs[0].action).toBe(AuditAction.SESSION_KEY_CREATED); + }); + + it("should not log audit events when disabled", async () => { + const sessionKeyManagerDisabled = new SessionKeyManager(databaseAdapter, { + encryptionKey: EncryptionService.generateEncryptionKey(), + sessionKeyExpiryMs: 24 * 60 * 60 * 1000, + refreshThresholdMs: 60 * 60 * 1000, + enableAuditLogging: false, + }); + + const userId = "user123"; + const sessionKey = + await sessionKeyManagerDisabled.generateSessionKeypair(); + + await sessionKeyManagerDisabled.createPendingSessionKey( + userId, + sessionKey, + ); + + const auditLogs = await databaseAdapter.getAuditLogs(userId); + expect(auditLogs.length).toBe(0); + }); + + it("should handle audit logging errors gracefully", async () => { + // Mock database adapter to throw error on audit logging + const mockDatabaseAdapter = { + ...databaseAdapter, + logAuditEvent: jest + .fn() + .mockRejectedValue(new Error("Audit logging failed")), + addNewSessionKey: jest.fn().mockResolvedValue(undefined), + } as any; + + const sessionKeyManagerWithError = new SessionKeyManager( + mockDatabaseAdapter, + { + encryptionKey: EncryptionService.generateEncryptionKey(), + sessionKeyExpiryMs: 24 * 60 * 60 * 1000, + refreshThresholdMs: 60 * 60 * 1000, + enableAuditLogging: true, + }, + ); + + const userId = "user123"; + const sessionKey = + await sessionKeyManagerWithError.generateSessionKeypair(); + + // Should not throw error even if audit logging fails + await expect( + sessionKeyManagerWithError.createPendingSessionKey(userId, sessionKey), + ).resolves.not.toThrow(); + }); + }); + + describe("markAsExpired", () => { + it("should mark session key as expired", async () => { + const userId = "user123"; + const pastTime = new Date(Date.now() - 25 * 60 * 60 * 1000); // 25 hours ago + const sessionKeyInfo = { + userId, + sessionKeyAddress: "xion1testaddress", + sessionKeyMaterial: "encrypted-key", + sessionKeyExpiry: pastTime, + sessionPermissions: {}, + sessionState: SessionState.ACTIVE, + metaAccountAddress: "xion1metaaccount", + createdAt: pastTime, + updatedAt: pastTime, + }; + + await databaseAdapter.storeSessionKey(sessionKeyInfo); + + // Call getLastSessionKeyInfo which should mark as expired + const result = await sessionKeyManager.getLastSessionKeyInfo(userId); + expect(result).toBeNull(); + + // Check that the session key was marked as expired + const updatedKey = await databaseAdapter.getSessionKey( + userId, + "xion1testaddress", + ); + expect(updatedKey!.sessionState).toBe(SessionState.EXPIRED); + }); + + it("should handle markAsExpired errors gracefully", async () => { + const userId = "user123"; + const pastTime = new Date(Date.now() - 25 * 60 * 60 * 1000); + const sessionKeyInfo = { + userId, + sessionKeyAddress: "xion1testaddress", + sessionKeyMaterial: "encrypted-key", + sessionKeyExpiry: pastTime, + sessionPermissions: {}, + sessionState: SessionState.ACTIVE, + metaAccountAddress: "xion1metaaccount", + createdAt: pastTime, + updatedAt: pastTime, + }; + + await databaseAdapter.storeSessionKey(sessionKeyInfo); + + // Mock database adapter to throw error on update + const mockDatabaseAdapter = { + ...databaseAdapter, + updateSessionKeyWithParams: jest + .fn() + .mockRejectedValue(new Error("Update failed")), + } as any; + + const sessionKeyManagerWithError = new SessionKeyManager( + mockDatabaseAdapter, + { + encryptionKey: EncryptionService.generateEncryptionKey(), + sessionKeyExpiryMs: 24 * 60 * 60 * 1000, + refreshThresholdMs: 60 * 60 * 1000, + enableAuditLogging: true, + }, + ); + + // Should not throw error even if markAsExpired fails + const result = + await sessionKeyManagerWithError.getLastSessionKeyInfo(userId); + expect(result).toBeNull(); + }); + }); + + describe("getSessionKeypair with SessionKeyInfo parameter", () => { + it("should work with SessionKeyInfo object", async () => { + const userId = "user123"; + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + await sessionKeyManager.createPendingSessionKey(userId, sessionKey); + + const sessionKeyInfo = await databaseAdapter.getLastSessionKey(userId); + expect(sessionKeyInfo).toBeDefined(); + + const retrieved = await sessionKeyManager.getSessionKeypair( + sessionKeyInfo!, + ); + expect(retrieved).toBeDefined(); + expect(retrieved).toHaveProperty("getAccounts"); + expect(retrieved).toHaveProperty("serialize"); + }); + + it("should throw error for null SessionKeyInfo", async () => { + await expect( + sessionKeyManager.getSessionKeypair(null as any), + ).rejects.toThrow(SessionKeyNotFoundError); + }); + }); + + describe("validateSessionKey with SessionKeyInfo parameter", () => { + it("should work with SessionKeyInfo object", async () => { + const futureTime = new Date(Date.now() + 24 * 60 * 60 * 1000); + const sessionKeyInfo = { + userId: "user123", + sessionKeyAddress: "xion1testaddress", + sessionKeyMaterial: "encrypted-key", + sessionKeyExpiry: futureTime, + sessionPermissions: {}, + sessionState: SessionState.ACTIVE, + metaAccountAddress: "xion1metaaccount", + createdAt: new Date(), + updatedAt: new Date(), + }; + + const isValid = + await sessionKeyManager.validateSessionKey(sessionKeyInfo); + expect(isValid).toBe(true); + }); + + it("should return false for null SessionKeyInfo", async () => { + // validateSessionKey expects a string or SessionKeyInfo, null should throw + await expect( + sessionKeyManager.validateSessionKey(null as any), + ).rejects.toThrow(UserIdRequiredError); + }); + }); + + describe("revokeActiveSessionKeys", () => { + it("should revoke all active session keys", async () => { + const userId = "user123"; + + // Create a session key + const sessionKey1 = await sessionKeyManager.generateSessionKeypair(); + await sessionKeyManager.createPendingSessionKey(userId, sessionKey1); + + // Activate session key + await sessionKeyManager.storeGrantedSessionKey( + userId, + sessionKey1.address, + "xion1granter1", + ); + + // Verify it's active + const activeKeysBefore = + await databaseAdapter.getActiveSessionKeys(userId); + expect(activeKeysBefore).toHaveLength(1); + expect(activeKeysBefore[0].sessionState).toBe(SessionState.ACTIVE); + + // Revoke all active session keys + await sessionKeyManager.revokeActiveSessionKeys(userId); + + // Check that no active keys remain + const activeKeysAfter = + await databaseAdapter.getActiveSessionKeys(userId); + expect(activeKeysAfter).toHaveLength(0); + + // Check that the session key is now revoked + const sessionKeyInfo = await databaseAdapter.getSessionKey( + userId, + sessionKey1.address, + ); + expect(sessionKeyInfo?.sessionState).toBe(SessionState.REVOKED); + }); + + it("should handle case when no active session keys exist", async () => { + const userId = "user123"; + + // Should not throw error + await expect( + sessionKeyManager.revokeActiveSessionKeys(userId), + ).resolves.not.toThrow(); + }); + + it("should throw error for empty userId", async () => { + await expect( + sessionKeyManager.revokeActiveSessionKeys(""), + ).rejects.toThrow(UserIdRequiredError); + }); + }); + + describe("refreshIfNeeded edge cases", () => { + it("should handle database errors gracefully", async () => { + const userId = "user123"; + + // Mock database adapter to throw error + const mockDatabaseAdapter = { + ...databaseAdapter, + getLastSessionKey: jest + .fn() + .mockRejectedValue(new Error("Database error")), + } as any; + + const sessionKeyManagerWithError = new SessionKeyManager( + mockDatabaseAdapter, + { + encryptionKey: EncryptionService.generateEncryptionKey(), + sessionKeyExpiryMs: 24 * 60 * 60 * 1000, + refreshThresholdMs: 60 * 60 * 1000, + enableAuditLogging: true, + }, + ); + + await expect( + sessionKeyManagerWithError.refreshIfNeeded(userId), + ).rejects.toThrow(SessionKeyRefreshError); + }); + + it("should handle decryption errors during refresh", async () => { + const userId = "user123"; + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + + // Create session key with invalid encrypted material + const invalidSessionKeyInfo = { + userId, + sessionKeyAddress: sessionKey.address, + sessionKeyMaterial: "invalid-encrypted-data", + sessionKeyExpiry: new Date(Date.now() + 24 * 60 * 60 * 1000), + sessionPermissions: {}, + sessionState: SessionState.ACTIVE, + metaAccountAddress: "xion1metaaccount", + createdAt: new Date(), + updatedAt: new Date(), + }; + + await databaseAdapter.storeSessionKey(invalidSessionKeyInfo); + + await expect(sessionKeyManager.refreshIfNeeded(userId)).rejects.toThrow( + EncryptionError, + ); + }); + }); + + describe("storeGrantedSessionKey edge cases", () => { + it("should throw error for non-pending session key", async () => { + const userId = "user123"; + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + + // Create and activate session key + await sessionKeyManager.createPendingSessionKey(userId, sessionKey); + await sessionKeyManager.storeGrantedSessionKey( + userId, + sessionKey.address, + "xion1granter1", + ); + + // Try to store granted session key again (should fail because it's already active) + await expect( + sessionKeyManager.storeGrantedSessionKey( + userId, + sessionKey.address, + "xion1granter2", + ), + ).rejects.toThrow(SessionKeyInvalidError); + }); + + it("should handle database errors during storeGrantedSessionKey", async () => { + const userId = "user123"; + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + + await sessionKeyManager.createPendingSessionKey(userId, sessionKey); + + // Mock database adapter to throw error + const mockDatabaseAdapter = { + ...databaseAdapter, + updateSessionKeyWithParams: jest + .fn() + .mockRejectedValue(new Error("Update failed")), + } as any; + + const sessionKeyManagerWithError = new SessionKeyManager( + mockDatabaseAdapter, + { + encryptionKey: EncryptionService.generateEncryptionKey(), + sessionKeyExpiryMs: 24 * 60 * 60 * 1000, + refreshThresholdMs: 60 * 60 * 1000, + enableAuditLogging: true, + }, + ); + + await expect( + sessionKeyManagerWithError.storeGrantedSessionKey( + userId, + sessionKey.address, + "xion1granter", + ), + ).rejects.toThrow(SessionKeyStorageError); + }); + }); + + describe("generateSessionKeypair edge cases", () => { + it("should generate valid session keypair", async () => { + const keypair = await sessionKeyManager.generateSessionKeypair(); + + expect(keypair).toBeDefined(); + expect(keypair.address).toBeDefined(); + expect(keypair.serializedKeypair).toBeDefined(); + expect(typeof keypair.address).toBe("string"); + expect(typeof keypair.serializedKeypair).toBe("string"); + }); + }); + + describe("createPendingSessionKey edge cases", () => { + it("should handle database errors during creation", async () => { + const userId = "user123"; + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + + // Mock database adapter to throw error + const mockDatabaseAdapter = { + ...databaseAdapter, + addNewSessionKey: jest + .fn() + .mockRejectedValue(new Error("Database error")), + } as any; + + const sessionKeyManagerWithError = new SessionKeyManager( + mockDatabaseAdapter, + { + encryptionKey: EncryptionService.generateEncryptionKey(), + sessionKeyExpiryMs: 24 * 60 * 60 * 1000, + refreshThresholdMs: 60 * 60 * 1000, + enableAuditLogging: true, + }, + ); + + await expect( + sessionKeyManagerWithError.createPendingSessionKey(userId, sessionKey), + ).rejects.toThrow(SessionKeyStorageError); + }); + + it("should handle encryption errors during creation", async () => { + const userId = "user123"; + const sessionKey = await sessionKeyManager.generateSessionKeypair(); + + // Mock encryption service to throw error + const mockEncryptionService = { + encryptSessionKey: jest + .fn() + .mockRejectedValue(new Error("Encryption failed")), + }; + + const sessionKeyManagerWithError = new SessionKeyManager( + databaseAdapter, + { + encryptionKey: EncryptionService.generateEncryptionKey(), + sessionKeyExpiryMs: 24 * 60 * 60 * 1000, + refreshThresholdMs: 60 * 60 * 1000, + enableAuditLogging: true, + }, + ); + + // Replace the encryption service + (sessionKeyManagerWithError as any).encryptionService = + mockEncryptionService; + + await expect( + sessionKeyManagerWithError.createPendingSessionKey(userId, sessionKey), + ).rejects.toThrow(SessionKeyStorageError); + }); + }); +}); diff --git a/apps/backend-session/src/__tests__/lib/database.test.ts b/apps/backend-session/src/__tests__/lib/database.test.ts new file mode 100644 index 00000000..c2a740ec --- /dev/null +++ b/apps/backend-session/src/__tests__/lib/database.test.ts @@ -0,0 +1,324 @@ +// Ensure we're using the test database +const testDBUrl = "file:./test.db"; +process.env.DATABASE_URL = testDBUrl; + +import { PrismaDatabaseAdapter } from "@/lib/xion/database"; +import { prisma } from "@/lib/xion/database"; +import { execSync } from "child_process"; +import { SessionState } from "@/lib/xion/backend"; + +describe("PrismaDatabaseAdapter", () => { + let adapter: PrismaDatabaseAdapter; + + beforeAll(async () => { + // Setup test database using Prisma commands + try { + execSync("npx prisma generate", { + stdio: "pipe", + env: { ...process.env, DATABASE_URL: testDBUrl }, + }); + execSync("npx prisma db push", { + stdio: "pipe", + env: { ...process.env, DATABASE_URL: testDBUrl }, + }); + } catch (error) { + console.error("Failed to setup test database:", error); + throw error; + } + + adapter = new PrismaDatabaseAdapter(prisma); + }); + + beforeEach(async () => { + // Clean up database before each test + await prisma.sessionKey.deleteMany(); + await prisma.auditLog.deleteMany(); + await prisma.user.deleteMany(); + }); + + afterAll(async () => { + // Close Prisma connection + await prisma.$disconnect(); + + // Clean up test database + try { + const fs = require("fs"); + if (fs.existsSync("./test.db")) { + fs.unlinkSync("./test.db"); + } + } catch (error) { + console.error("Failed to cleanup test database:", error); + } + }); + + describe("getSessionKey", () => { + it("should retrieve session key by unique sessionKeyAddress and verify userId", async () => { + // Create a user + const user = await prisma.user.create({ + data: { + username: `testuser-${Date.now()}-${Math.random()}`, + password: "hashedpassword", + }, + }); + + // Create a session key + const sessionKeyAddress = `xion1test-${Date.now()}-${Math.random()}`; + await prisma.sessionKey.create({ + data: { + user: { connect: { id: user.id } }, + sessionKeyAddress, + sessionKeyMaterial: "encrypted-material", + sessionKeyExpiry: new Date(Date.now() + 86400000), + sessionPermissions: "{}", + sessionState: SessionState.ACTIVE, + metaAccountAddress: "xion1meta123", + }, + }); + + // Retrieve session key + const result = await adapter.getSessionKey(user.id, sessionKeyAddress); + + expect(result).not.toBeNull(); + expect(result?.sessionKeyAddress).toBe(sessionKeyAddress); + expect(result?.userId).toBe(user.id); + }); + + it("should return null when session key does not exist", async () => { + const user = await prisma.user.create({ + data: { + username: `testuser-${Date.now()}-${Math.random()}`, + password: "hashedpassword", + }, + }); + + const result = await adapter.getSessionKey( + user.id, + "nonexistent-address", + ); + + expect(result).toBeNull(); + }); + + it("should return null when session key belongs to different user", async () => { + // Create two users + const user1 = await prisma.user.create({ + data: { + username: "user1", + password: "hashedpassword", + }, + }); + + const user2 = await prisma.user.create({ + data: { + username: "user2", + password: "hashedpassword", + }, + }); + + // Create session key for user1 + const sessionKeyAddress = `xion1test-${Date.now()}-${Math.random()}`; + await prisma.sessionKey.create({ + data: { + user: { connect: { id: user1.id } }, + sessionKeyAddress, + sessionKeyMaterial: "encrypted-material", + sessionKeyExpiry: new Date(Date.now() + 86400000), + sessionPermissions: "{}", + sessionState: SessionState.ACTIVE, + metaAccountAddress: "xion1meta123", + }, + }); + + // Try to retrieve with user2's id (should return null due to userId mismatch) + const result = await adapter.getSessionKey(user2.id, sessionKeyAddress); + + expect(result).toBeNull(); + }); + }); + + describe("revokeSessionKey", () => { + it("should revoke session key by unique sessionKeyAddress and verify userId", async () => { + const user = await prisma.user.create({ + data: { + username: `testuser-${Date.now()}-${Math.random()}`, + password: "hashedpassword", + }, + }); + + const sessionKeyAddress = `xion1test-${Date.now()}-${Math.random()}`; + await prisma.sessionKey.create({ + data: { + user: { connect: { id: user.id } }, + sessionKeyAddress, + sessionKeyMaterial: "encrypted-material", + sessionKeyExpiry: new Date(Date.now() + 86400000), + sessionPermissions: "{}", + sessionState: SessionState.ACTIVE, + metaAccountAddress: "xion1meta123", + }, + }); + + const result = await adapter.revokeSessionKey(user.id, sessionKeyAddress); + + expect(result).toBe(true); + + // Verify the session key was revoked + const sessionKey = await prisma.sessionKey.findUnique({ + where: { sessionKeyAddress }, + }); + expect(sessionKey?.sessionState).toBe(SessionState.REVOKED); + }); + + it("should return false when session key does not exist", async () => { + const user = await prisma.user.create({ + data: { + username: `testuser-${Date.now()}-${Math.random()}`, + password: "hashedpassword", + }, + }); + + const result = await adapter.revokeSessionKey( + user.id, + "nonexistent-address", + ); + + expect(result).toBe(false); + }); + + it("should return false when session key belongs to different user", async () => { + const user1 = await prisma.user.create({ + data: { + username: "user1", + password: "hashedpassword", + }, + }); + + const user2 = await prisma.user.create({ + data: { + username: "user2", + password: "hashedpassword", + }, + }); + + const sessionKeyAddress = `xion1test-${Date.now()}-${Math.random()}`; + await prisma.sessionKey.create({ + data: { + user: { connect: { id: user1.id } }, + sessionKeyAddress, + sessionKeyMaterial: "encrypted-material", + sessionKeyExpiry: new Date(Date.now() + 86400000), + sessionPermissions: "{}", + sessionState: SessionState.ACTIVE, + metaAccountAddress: "xion1meta123", + }, + }); + + const result = await adapter.revokeSessionKey( + user2.id, + sessionKeyAddress, + ); + + expect(result).toBe(false); + + // Verify the session key was NOT revoked + const sessionKey = await prisma.sessionKey.findUnique({ + where: { sessionKeyAddress }, + }); + expect(sessionKey?.sessionState).toBe(SessionState.ACTIVE); + }); + }); + + describe("updateSessionKeyWithParams", () => { + it("should update session key by unique sessionKeyAddress and verify userId", async () => { + const user = await prisma.user.create({ + data: { + username: `testuser-${Date.now()}-${Math.random()}`, + password: "hashedpassword", + }, + }); + + const sessionKeyAddress = `xion1test-${Date.now()}-${Math.random()}`; + await prisma.sessionKey.create({ + data: { + user: { connect: { id: user.id } }, + sessionKeyAddress, + sessionKeyMaterial: "encrypted-material", + sessionKeyExpiry: new Date(Date.now() + 86400000), + sessionPermissions: "{}", + sessionState: SessionState.PENDING, + metaAccountAddress: "xion1meta123", + }, + }); + + await adapter.updateSessionKeyWithParams(user.id, sessionKeyAddress, { + sessionState: SessionState.ACTIVE, + sessionPermissions: { send: true }, + }); + + // Verify the session key was updated + const sessionKey = await prisma.sessionKey.findUnique({ + where: { sessionKeyAddress }, + }); + expect(sessionKey?.sessionState).toBe(SessionState.ACTIVE); + expect(JSON.parse(sessionKey?.sessionPermissions || "{}")).toEqual({ + send: true, + }); + }); + + it("should throw error when session key does not exist", async () => { + const user = await prisma.user.create({ + data: { + username: `testuser-${Date.now()}-${Math.random()}`, + password: "hashedpassword", + }, + }); + + await expect( + adapter.updateSessionKeyWithParams(user.id, "nonexistent-address", { + sessionState: SessionState.ACTIVE, + }), + ).rejects.toThrow(); + }); + + it("should throw error when session key belongs to different user", async () => { + const user1 = await prisma.user.create({ + data: { + username: "user1", + password: "hashedpassword", + }, + }); + + const user2 = await prisma.user.create({ + data: { + username: "user2", + password: "hashedpassword", + }, + }); + + const sessionKeyAddress = `xion1test-${Date.now()}-${Math.random()}`; + await prisma.sessionKey.create({ + data: { + user: { connect: { id: user1.id } }, + sessionKeyAddress, + sessionKeyMaterial: "encrypted-material", + sessionKeyExpiry: new Date(Date.now() + 86400000), + sessionPermissions: "{}", + sessionState: SessionState.PENDING, + metaAccountAddress: "xion1meta123", + }, + }); + + await expect( + adapter.updateSessionKeyWithParams(user2.id, sessionKeyAddress, { + sessionState: SessionState.ACTIVE, + }), + ).rejects.toThrow(); + + // Verify the session key was NOT updated + const sessionKey = await prisma.sessionKey.findUnique({ + where: { sessionKeyAddress }, + }); + expect(sessionKey?.sessionState).toBe(SessionState.PENDING); + }); + }); +}); diff --git a/apps/backend-session/src/__tests__/lib/rate-limit.test.ts b/apps/backend-session/src/__tests__/lib/rate-limit.test.ts new file mode 100644 index 00000000..99f35afd --- /dev/null +++ b/apps/backend-session/src/__tests__/lib/rate-limit.test.ts @@ -0,0 +1,83 @@ +import { RateLimitService } from "@/lib/rate-limit"; + +describe("RateLimitService", () => { + const testIP = "192.168.1.100"; + + beforeEach(async () => { + // Reset rate limits before each test + await RateLimitService.resetRateLimit(testIP); + }); + + describe("checkRateLimit", () => { + it("should allow requests within limit", async () => { + const result = await RateLimitService.checkRateLimit(testIP); + expect(result.allowed).toBe(true); + expect(result.remaining).toBeGreaterThan(0); + }); + + it("should block requests when limit exceeded", async () => { + // Make many requests to exceed the limit + const promises = Array(150) + .fill(0) + .map(() => RateLimitService.checkRateLimit(testIP)); + + const results = await Promise.all(promises); + const blockedResults = results.filter((r) => !r.allowed); + + expect(blockedResults.length).toBeGreaterThan(0); + }); + + it("should return correct remaining count", async () => { + const result1 = await RateLimitService.checkRateLimit(testIP); + const result2 = await RateLimitService.checkRateLimit(testIP); + + expect(result1.remaining).toBeGreaterThan(result2.remaining); + }); + }); + + describe("checkStrictRateLimit", () => { + it("should allow requests within strict limit", async () => { + const result = await RateLimitService.checkStrictRateLimit(testIP); + expect(result.allowed).toBe(true); + expect(result.remaining).toBeGreaterThan(0); + }); + + it("should block requests when strict limit exceeded", async () => { + // Make many requests to exceed the strict limit (10 requests) + const promises = Array(15) + .fill(0) + .map(() => RateLimitService.checkStrictRateLimit(testIP)); + + const results = await Promise.all(promises); + const blockedResults = results.filter((r) => !r.allowed); + + expect(blockedResults.length).toBeGreaterThan(0); + }); + }); + + describe("getRateLimitStatus", () => { + it("should return status for both limiters", async () => { + const status = await RateLimitService.getRateLimitStatus(testIP); + + expect(status.general).toHaveProperty("remaining"); + expect(status.general).toHaveProperty("resetTime"); + expect(status.strict).toHaveProperty("remaining"); + expect(status.strict).toHaveProperty("resetTime"); + }); + }); + + describe("resetRateLimit", () => { + it("should reset rate limits for an IP", async () => { + // Exhaust the limit + await RateLimitService.checkStrictRateLimit(testIP); + await RateLimitService.checkStrictRateLimit(testIP); + + // Reset + await RateLimitService.resetRateLimit(testIP); + + // Should be able to make requests again + const result = await RateLimitService.checkStrictRateLimit(testIP); + expect(result.allowed).toBe(true); + }); + }); +}); diff --git a/apps/backend-session/src/__tests__/lib/security.test.ts b/apps/backend-session/src/__tests__/lib/security.test.ts new file mode 100644 index 00000000..6eaf2696 --- /dev/null +++ b/apps/backend-session/src/__tests__/lib/security.test.ts @@ -0,0 +1,175 @@ +import { SecurityManager } from "@/lib/xion/security"; + +describe("SecurityManager", () => { + const testKey = "test-encryption-key-32-chars-long!"; + const testText = "This is a secret message"; + + beforeAll(() => { + // Initialize with test key + SecurityManager.initialize(testKey); + }); + + describe("generateEncryptionKey", () => { + it("should generate a valid base64 encoded key", () => { + const key = SecurityManager.generateEncryptionKey(); + expect(typeof key).toBe("string"); + expect(key.length).toBeGreaterThan(0); + + // Should be valid base64 + expect(() => Buffer.from(key, "base64")).not.toThrow(); + }); + + it("should generate different keys each time", () => { + const key1 = SecurityManager.generateEncryptionKey(); + const key2 = SecurityManager.generateEncryptionKey(); + expect(key1).not.toBe(key2); + }); + }); + + describe("validateEncryptionKey", () => { + it("should validate correct encryption key", () => { + const key = SecurityManager.generateEncryptionKey(); + expect(SecurityManager.validateEncryptionKey(key)).toBe(true); + }); + + it("should reject invalid encryption key", () => { + expect(SecurityManager.validateEncryptionKey("invalid")).toBe(false); + expect(SecurityManager.validateEncryptionKey("")).toBe(false); + expect(SecurityManager.validateEncryptionKey("not-base64")).toBe(false); + }); + }); + + describe("encrypt and decrypt", () => { + it("should encrypt and decrypt text correctly", async () => { + const encrypted = await SecurityManager.encrypt(testText); + const decrypted = await SecurityManager.decrypt(encrypted); + + expect(decrypted).toBe(testText); + expect(encrypted).not.toBe(testText); + }); + + it("should produce different encrypted values for same input", async () => { + const encrypted1 = await SecurityManager.encrypt(testText); + const encrypted2 = await SecurityManager.encrypt(testText); + + expect(encrypted1).not.toBe(encrypted2); + + // But both should decrypt to the same value + const decrypted1 = await SecurityManager.decrypt(encrypted1); + const decrypted2 = await SecurityManager.decrypt(encrypted2); + expect(decrypted1).toBe(testText); + expect(decrypted2).toBe(testText); + }); + + it("should fail to decrypt with wrong key", async () => { + const wrongKey = "wrong-encryption-key-32-chars-long!"; + const encrypted = await SecurityManager.encrypt(testText, testKey); + + await expect( + SecurityManager.decrypt(encrypted, wrongKey), + ).rejects.toThrow(); + }); + }); + + describe("generateSecureRandom", () => { + it("should generate random string of specified length", () => { + const random = SecurityManager.generateSecureRandom(16); + expect(random).toHaveLength(32); // 16 bytes = 32 hex characters + }); + + it("should generate different values each time", () => { + const random1 = SecurityManager.generateSecureRandom(8); + const random2 = SecurityManager.generateSecureRandom(8); + expect(random1).not.toBe(random2); + }); + }); + + describe("hashPassword and verifyPassword", () => { + it("should hash and verify password correctly", async () => { + const password = "testpassword123"; + const hashed = await SecurityManager.hashPassword(password); + + expect(hashed).not.toBe(password); + expect(hashed).toContain(":"); // Should contain salt:hash format + + const isValid = await SecurityManager.verifyPassword(password, hashed); + expect(isValid).toBe(true); + }); + + it("should reject wrong password", async () => { + const password = "testpassword123"; + const wrongPassword = "wrongpassword"; + const hashed = await SecurityManager.hashPassword(password); + + const isValid = await SecurityManager.verifyPassword( + wrongPassword, + hashed, + ); + expect(isValid).toBe(false); + }); + + it("should produce different hashes for same password", async () => { + const password = "samepassword"; + const hashed1 = await SecurityManager.hashPassword(password); + const hashed2 = await SecurityManager.hashPassword(password); + + expect(hashed1).not.toBe(hashed2); + + // But both should verify correctly + expect(await SecurityManager.verifyPassword(password, hashed1)).toBe( + true, + ); + expect(await SecurityManager.verifyPassword(password, hashed2)).toBe( + true, + ); + }); + }); + + describe("generateUUID", () => { + it("should generate valid UUID v4", () => { + const uuid = SecurityManager.generateUUID(); + const uuidRegex = + /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; + expect(uuid).toMatch(uuidRegex); + }); + + it("should generate different UUIDs each time", () => { + const uuid1 = SecurityManager.generateUUID(); + const uuid2 = SecurityManager.generateUUID(); + expect(uuid1).not.toBe(uuid2); + }); + }); + + describe("constantTimeCompare", () => { + it("should return true for identical strings", () => { + const str1 = "test string"; + const str2 = "test string"; + expect(SecurityManager.constantTimeCompare(str1, str2)).toBe(true); + }); + + it("should return false for different strings", () => { + const str1 = "test string"; + const str2 = "different string"; + expect(SecurityManager.constantTimeCompare(str1, str2)).toBe(false); + }); + + it("should return false for strings of different lengths", () => { + const str1 = "short"; + const str2 = "much longer string"; + expect(SecurityManager.constantTimeCompare(str1, str2)).toBe(false); + }); + }); + + describe("generateSecureString", () => { + it("should generate string of specified length", () => { + const str = SecurityManager.generateSecureString(10); + expect(str).toHaveLength(10); + }); + + it("should use custom charset when provided", () => { + const charset = "ABC123"; + const str = SecurityManager.generateSecureString(10, charset); + expect(str).toMatch(/^[ABC123]+$/); + }); + }); +}); diff --git a/apps/backend-session/src/app/api/auth/[...nextauth]/route.ts b/apps/backend-session/src/app/api/auth/[...nextauth]/route.ts new file mode 100644 index 00000000..7b38c1bb --- /dev/null +++ b/apps/backend-session/src/app/api/auth/[...nextauth]/route.ts @@ -0,0 +1,6 @@ +import NextAuth from "next-auth"; +import { authOptions } from "@/lib/auth"; + +const handler = NextAuth(authOptions); + +export { handler as GET, handler as POST }; diff --git a/apps/backend-session/src/app/api/auth/login/route.ts b/apps/backend-session/src/app/api/auth/login/route.ts new file mode 100644 index 00000000..87952cc3 --- /dev/null +++ b/apps/backend-session/src/app/api/auth/login/route.ts @@ -0,0 +1,29 @@ +import { getServerSession } from "next-auth"; +import { loginSchema, authOptions } from "@/lib/auth"; +import { createStandardApiHandler } from "@/lib/api-wrapper"; +import { ApiException } from "@/lib/api-response"; + +export const POST = createStandardApiHandler( + async (_context) => { + // This endpoint is mainly for API-based login + // The actual authentication is handled by NextAuth.js + // This endpoint can be used to get session information after login + + const session = await getServerSession(authOptions); + + if (!session) { + throw new ApiException("Authentication required", 401, "UNAUTHORIZED"); + } + + return { + message: "Login successful", + user: session.user, + }; + }, + { + schema: loginSchema, + schemaType: "body", + rateLimit: "strict", + allowedMethods: ["POST"], + }, +); diff --git a/apps/backend-session/src/app/api/auth/logout/route.ts b/apps/backend-session/src/app/api/auth/logout/route.ts new file mode 100644 index 00000000..3895b318 --- /dev/null +++ b/apps/backend-session/src/app/api/auth/logout/route.ts @@ -0,0 +1,16 @@ +import { createStandardApiHandler } from "@/lib/api-wrapper"; + +export const POST = createStandardApiHandler( + async () => { + // NextAuth.js handles logout through its built-in endpoints + // This endpoint provides a consistent API response + return { + success: true, + message: "Logout successful", + }; + }, + { + rateLimit: "normal", + allowedMethods: ["POST"], + }, +); diff --git a/apps/backend-session/src/app/api/auth/register/route.ts b/apps/backend-session/src/app/api/auth/register/route.ts new file mode 100644 index 00000000..df2304a1 --- /dev/null +++ b/apps/backend-session/src/app/api/auth/register/route.ts @@ -0,0 +1,60 @@ +import { prisma } from "@/lib/xion/database"; +import { hashPassword, registerSchema } from "@/lib/auth"; +import { createStandardApiHandler } from "@/lib/api-wrapper"; +import { ApiException } from "@/lib/api-response"; + +export const POST = createStandardApiHandler( + async (context) => { + const { validatedData } = context; + const { username, email, password } = validatedData; + + // Check if username already exists + const existingUser = await prisma.user.findUnique({ + where: { username }, + }); + + if (existingUser) { + throw new ApiException("Username already exists", 400, "USERNAME_EXISTS"); + } + + // Check if email already exists (if provided) + if (email) { + const existingEmail = await prisma.user.findUnique({ + where: { email }, + }); + + if (existingEmail) { + throw new ApiException("Email already exists", 400, "EMAIL_EXISTS"); + } + } + + // Hash password + const hashedPassword = await hashPassword(password); + + // Create user + const user = await prisma.user.create({ + data: { + username, + email, + password: hashedPassword, + }, + select: { + id: true, + username: true, + email: true, + createdAt: true, + }, + }); + + return { + message: "User registered successfully", + user, + }; + }, + { + schema: registerSchema, + schemaType: "body", + rateLimit: "strict", + allowedMethods: ["POST"], + }, +); diff --git a/apps/backend-session/src/app/api/callback/grant_session/route.ts b/apps/backend-session/src/app/api/callback/grant_session/route.ts new file mode 100644 index 00000000..ceb49bfd --- /dev/null +++ b/apps/backend-session/src/app/api/callback/grant_session/route.ts @@ -0,0 +1,40 @@ +import { getAbstraxionBackend } from "@/lib/xion/abstraxion-backend"; +import { grantSessionCallbackSchema } from "@/lib/validation"; +import { createApiWrapper, handleRedirectResponse } from "@/lib/api-wrapper"; +import { ApiException } from "@/lib/api-response"; + +export const dynamic = "force-dynamic"; + +export const GET = createApiWrapper( + async (context) => { + const { validatedData } = context; + const { granted, granter, state } = validatedData; + + // Get AbstraxionBackend instance + const abstraxionBackend = getAbstraxionBackend(); + + // Handle callback + const result = await abstraxionBackend.handleCallback({ + granted, + granter, + state, + }); + + if (!result.success) { + throw new ApiException( + result.error || "Callback failed", + 400, + "CALLBACK_FAILED", + ); + } + + // Use the generic redirect handler + return handleRedirectResponse(result, result.grantedRedirectUrl); + }, + { + schema: grantSessionCallbackSchema, + schemaType: "query", + rateLimit: "strict", + allowedMethods: ["GET"], + }, +); diff --git a/apps/backend-session/src/app/api/health/route.ts b/apps/backend-session/src/app/api/health/route.ts new file mode 100644 index 00000000..d756738c --- /dev/null +++ b/apps/backend-session/src/app/api/health/route.ts @@ -0,0 +1,20 @@ +import { prisma } from "@/lib/xion/database"; +import { createHealthApiWrapper } from "@/lib/api-wrapper"; +import type { ApiContext } from "@/lib/api-middleware"; + +export const dynamic = "force-dynamic"; + +export const GET = createHealthApiWrapper( + async (_context: ApiContext) => { + // Check database connection + await prisma.$queryRaw`SELECT 1`; + + return { + status: "healthy", + database: "connected", + }; + }, + { + allowedMethods: ["GET"], + }, +); diff --git a/apps/backend-session/src/app/api/wallet/account/route.ts b/apps/backend-session/src/app/api/wallet/account/route.ts new file mode 100644 index 00000000..f38a5473 --- /dev/null +++ b/apps/backend-session/src/app/api/wallet/account/route.ts @@ -0,0 +1,77 @@ +import { getAbstraxionBackend } from "@/lib/xion/abstraxion-backend"; +import { createApiWrapper } from "@/lib/api-wrapper"; +import { requireAuth } from "@/lib/auth-middleware"; +import { CosmWasmClient } from "@cosmjs/cosmwasm-stargate"; + +export const dynamic = "force-dynamic"; + +export const GET = createApiWrapper( + async (context) => { + // Get authenticated user from session + const authContext = await requireAuth(context.request); + const { user } = authContext; + + // Get AbstraxionBackend instance + const abstraxionBackend = getAbstraxionBackend(); + + // Check if user has an active wallet connection + const status = await abstraxionBackend.checkStatus(user.id); + + if (!status.connected || !status.metaAccountAddress) { + throw new Error("No active wallet connection found"); + } + + try { + const authz = await abstraxionBackend.startAbstraxionBackendAuth( + user.id, + context.request as any, + ); + const client = await authz.getCosmWasmClient(); + + // Query all balances for the meta account + const [xionBalance, usdcBalance] = await Promise.all([ + client.getBalance(status.metaAccountAddress, "uxion"), + client.getBalance(status.metaAccountAddress, "uusdc"), + ]); + // Convert from micro units to main units + const xionBalanceFormatted = ( + parseInt(xionBalance.amount) / 1_000_000 + ).toString(); + const usdcBalanceFormatted = ( + parseInt(usdcBalance.amount) / 1_000_000 + ).toString(); + + return { + metaAccountAddress: status.metaAccountAddress, + balances: { + xion: { + amount: xionBalanceFormatted, + denom: xionBalance.denom, + microAmount: xionBalance.amount, + }, + usdc: { + amount: usdcBalanceFormatted, + denom: usdcBalance.denom, + microAmount: usdcBalance.amount, + }, + }, + }; + } catch (error) { + console.error("Error querying wallet balances:", error); + + // Handle specific error types + if (error instanceof Error) { + if (error.message.includes("No active wallet connection")) { + throw error; // Re-throw wallet connection errors as-is + } + throw new Error(`Failed to query wallet balances: ${error.message}`); + } + + throw new Error("Failed to query wallet balances"); + } + }, + { + rateLimit: "normal", + allowedMethods: ["GET"], + }, +); diff --git a/apps/backend-session/src/app/api/wallet/connect/route.ts b/apps/backend-session/src/app/api/wallet/connect/route.ts new file mode 100644 index 00000000..3fb50ed4 --- /dev/null +++ b/apps/backend-session/src/app/api/wallet/connect/route.ts @@ -0,0 +1,35 @@ +import { getAbstraxionBackend } from "@/lib/xion/abstraxion-backend"; +import { connectWalletSchema } from "@/lib/validation"; +import { createApiWrapper } from "@/lib/api-wrapper"; +import { requireAuth } from "@/lib/auth-middleware"; + +export const dynamic = "force-dynamic"; + +export const POST = createApiWrapper( + async (context) => { + const { validatedData } = context; + const { permissions, grantedRedirectUrl } = validatedData; + + // Get authenticated user from session + const authContext = await requireAuth(context.request); + const { user } = authContext; + + // Get AbstraxionBackend instance + const abstraxionBackend = getAbstraxionBackend(); + + // Initiate wallet connection + const result = await abstraxionBackend.connectInit( + user.id, + permissions, + grantedRedirectUrl, + ); + + return result; + }, + { + schema: connectWalletSchema, + schemaType: "body", + rateLimit: "strict", + allowedMethods: ["POST"], + }, +); diff --git a/apps/backend-session/src/app/api/wallet/disconnect/route.ts b/apps/backend-session/src/app/api/wallet/disconnect/route.ts new file mode 100644 index 00000000..8a661b6c --- /dev/null +++ b/apps/backend-session/src/app/api/wallet/disconnect/route.ts @@ -0,0 +1,34 @@ +import { getAbstraxionBackend } from "@/lib/xion/abstraxion-backend"; +import { createApiWrapper } from "@/lib/api-wrapper"; +import { requireAuth } from "@/lib/auth-middleware"; +import { ApiException } from "@/lib/api-response"; + +export const dynamic = "force-dynamic"; + +export const DELETE = createApiWrapper( + async (context) => { + // Get authenticated user from session + const authContext = await requireAuth(context.request); + const { user } = authContext; + + // Get AbstraxionBackend instance + const abstraxionBackend = getAbstraxionBackend(); + + // Disconnect wallet + const result = await abstraxionBackend.disconnect(user.id); + + if (!result.success) { + throw new ApiException( + result.error || "Disconnect failed", + 400, + "DISCONNECT_FAILED", + ); + } + + return result; + }, + { + rateLimit: "normal", + allowedMethods: ["DELETE"], + }, +); diff --git a/apps/backend-session/src/app/api/wallet/status/route.ts b/apps/backend-session/src/app/api/wallet/status/route.ts new file mode 100644 index 00000000..f84b05bb --- /dev/null +++ b/apps/backend-session/src/app/api/wallet/status/route.ts @@ -0,0 +1,25 @@ +import { getAbstraxionBackend } from "@/lib/xion/abstraxion-backend"; +import { createApiWrapper } from "@/lib/api-wrapper"; +import { requireAuth } from "@/lib/auth-middleware"; + +export const dynamic = "force-dynamic"; + +export const GET = createApiWrapper( + async (context) => { + // Get authenticated user from session + const authContext = await requireAuth(context.request); + const { user } = authContext; + + // Get AbstraxionBackend instance + const abstraxionBackend = getAbstraxionBackend(); + + // Check status + const result = await abstraxionBackend.checkStatus(user.id); + + return result; + }, + { + rateLimit: "normal", + allowedMethods: ["GET"], + }, +); diff --git a/apps/backend-session/src/app/api/wallet/transaction/send/route.ts b/apps/backend-session/src/app/api/wallet/transaction/send/route.ts new file mode 100644 index 00000000..65b526a4 --- /dev/null +++ b/apps/backend-session/src/app/api/wallet/transaction/send/route.ts @@ -0,0 +1,105 @@ +import { getAbstraxionBackend } from "@/lib/xion/abstraxion-backend"; +import { createApiWrapper } from "@/lib/api-wrapper"; +import { requireAuth } from "@/lib/auth-middleware"; +import { + sendTransactionSchema, + SendTransactionRequest, +} from "@/lib/validation"; +import { validateSessionKeyAddress } from "@/lib/xion/backend/utils/validation"; +import { MsgSend } from "cosmjs-types/cosmos/bank/v1beta1/tx"; + +export const dynamic = "force-dynamic"; + +export const POST = createApiWrapper( + async (context) => { + const { validatedData } = context; + const { to, amount, denom } = validatedData as SendTransactionRequest; + + // Get authenticated user from session + const authContext = await requireAuth(context.request); + const { user } = authContext; + + // Get AbstraxionBackend instance + const abstraxionBackend = getAbstraxionBackend(); + + // Check if user has an active wallet connection + const status = await abstraxionBackend.checkStatus(user.id); + + if (!status.connected || !status.metaAccountAddress) { + throw new Error("No active wallet connection found"); + } + + try { + // Start AbstraxionAuth to get the signing client + const abstraxionAuth = await abstraxionBackend.startAbstraxionBackendAuth( + user.id, + context.request as any, + ); + const signer = await abstraxionAuth.getSigner( + abstraxionBackend.gasPriceDefault, + ); + + // Validate recipient address + if (!validateSessionKeyAddress(to)) { + throw new Error("Invalid XION recipient address format"); + } + + // Validate and convert amount to micro units + const amountNum = parseFloat(amount); + if ( + !isFinite(amountNum) || + amountNum <= 0 || + amountNum > Number.MAX_SAFE_INTEGER / 1_000_000 + ) { + throw new Error("Invalid amount value"); + } + const microAmount = Math.floor(amountNum * 1_000_000).toString(); + const denomMicro = denom === "XION" ? "uxion" : "uusdc"; + + // Create the bank send message + const msgSend: MsgSend = { + fromAddress: status.metaAccountAddress, + toAddress: to, + amount: [ + { + denom: denomMicro, + amount: microAmount, + }, + ], + }; + + // Sign and broadcast the transaction + const result = await signer.signAndBroadcast( + status.metaAccountAddress, + [ + { + typeUrl: "/cosmos.bank.v1beta1.MsgSend", + value: msgSend, + }, + ], + "auto", + ); + + return { + transactionHash: result.transactionHash, + fromAddress: status.metaAccountAddress, + toAddress: to, + amount: amount, + denom: denom, + gasUsed: result.gasUsed?.toString(), + gasWanted: result.gasWanted?.toString(), + }; + } catch (error) { + console.error("Error sending transaction:", error); + throw new Error( + error instanceof Error ? error.message : "Failed to send transaction", + ); + } + }, + { + schema: sendTransactionSchema, + schemaType: "body", + rateLimit: "normal", + allowedMethods: ["POST"], + }, +); diff --git a/apps/backend-session/src/app/auth/signin/page.tsx b/apps/backend-session/src/app/auth/signin/page.tsx new file mode 100644 index 00000000..980b892b --- /dev/null +++ b/apps/backend-session/src/app/auth/signin/page.tsx @@ -0,0 +1,226 @@ +"use client"; +import { useState } from "react"; +import { signIn, getSession } from "next-auth/react"; +import { useRouter } from "next/navigation"; +import { Button, Input } from "@burnt-labs/ui"; +import Link from "next/link"; +import "@burnt-labs/ui/dist/index.css"; + +export default function SignInPage() { + const [username, setUsername] = useState(""); + const [password, setPassword] = useState(""); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(null); + const router = useRouter(); + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setLoading(true); + setError(null); + + try { + const result = await signIn("credentials", { + username, + password, + redirect: false, + }); + + if (result?.error) { + setError("Invalid username or password"); + } else if (result?.ok) { + // Get the updated session + const session = await getSession(); + if (session) { + router.push("/profile"); + } + } + } catch (err) { + setError("An error occurred during sign in"); + } finally { + setLoading(false); + } + }; + + return ( +
+ {/* Background decoration */} +
+ +
+
+ {/* Header */} +
+
+ + + +
+

Welcome Back

+

Sign in to your XION account

+
+ + {/* Sign In Form */} +
+
+ {/* Error message */} + {error ? ( +
+
+ + + +

{error}

+
+
+ ) : null} + + {/* Username field */} +
+ +
+
+
+ + + +
+
+ { + setUsername(e.target.value); + }} + placeholder="Enter your username" + required + type="text" + value={username} + /> +
+
+ + {/* Password field */} +
+ +
+
+
+ + + +
+
+ { + setPassword(e.target.value); + }} + placeholder="Enter your password" + required + type="password" + value={password} + /> +
+
+ + {/* Submit button */} + +
+ + {/* Sign up link */} +
+

+ Don't have an account?{" "} + + Sign up here + +

+
+
+
+
+
+ ); +} diff --git a/apps/backend-session/src/app/auth/signup/page.tsx b/apps/backend-session/src/app/auth/signup/page.tsx new file mode 100644 index 00000000..37164c59 --- /dev/null +++ b/apps/backend-session/src/app/auth/signup/page.tsx @@ -0,0 +1,373 @@ +"use client"; +import { useState } from "react"; +import { useRouter } from "next/navigation"; +import { Button, Input } from "@burnt-labs/ui"; +import Link from "next/link"; +import "@burnt-labs/ui/dist/index.css"; + +export default function SignUpPage() { + const [username, setUsername] = useState(""); + const [email, setEmail] = useState(""); + const [password, setPassword] = useState(""); + const [confirmPassword, setConfirmPassword] = useState(""); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(null); + const [success, setSuccess] = useState(false); + const router = useRouter(); + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setLoading(true); + setError(null); + + // Validate passwords match + if (password !== confirmPassword) { + setError("Passwords do not match"); + setLoading(false); + return; + } + + try { + const response = await fetch("/api/auth/register", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + username, + email: email || undefined, + password, + }), + }); + + const data = await response.json(); + + if (data.success) { + setSuccess(true); + // Redirect to sign in after a short delay + setTimeout(() => { + router.push("/auth/signin"); + }, 2000); + } else { + setError(data.error || "Registration failed"); + } + } catch (err) { + setError("An error occurred during registration"); + } finally { + setLoading(false); + } + }; + + if (success) { + return ( +
+
+ +
+
+
+
+ + + +
+

+ Account Created! +

+

+ Your account has been successfully created. Redirecting to sign + in... +

+
+
+
+
+
+
+
+ ); + } + + return ( +
+ {/* Background decoration */} +
+ +
+
+ {/* Header */} +
+
+ + + +
+

+ Create Account +

+

Join the XION ecosystem

+
+ + {/* Sign Up Form */} +
+
+ {/* Error message */} + {error ? ( +
+
+ + + +

{error}

+
+
+ ) : null} + + {/* Username field */} +
+ +
+
+
+ + + +
+
+ { + setUsername(e.target.value); + }} + placeholder="Choose a username" + required + type="text" + value={username} + /> +
+

+ At least 3 characters long +

+
+ + {/* Email field */} +
+ +
+
+
+ + + +
+
+ { + setEmail(e.target.value); + }} + placeholder="Enter your email" + type="email" + value={email} + /> +
+
+ + {/* Password field */} +
+ +
+
+
+ + + +
+
+ { + setPassword(e.target.value); + }} + placeholder="Create a password" + required + type="password" + value={password} + /> +
+

+ At least 6 characters long +

+
+ + {/* Confirm Password field */} +
+ +
+
+
+ + + +
+
+ { + setConfirmPassword(e.target.value); + }} + placeholder="Confirm your password" + required + type="password" + value={confirmPassword} + /> +
+
+ + {/* Submit button */} + +
+ + {/* Sign in link */} +
+

+ Already have an account?{" "} + + Sign in here + +

+
+
+
+
+
+ ); +} diff --git a/apps/backend-session/src/app/globals.css b/apps/backend-session/src/app/globals.css new file mode 100644 index 00000000..b5c61c95 --- /dev/null +++ b/apps/backend-session/src/app/globals.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/apps/backend-session/src/app/layout.tsx b/apps/backend-session/src/app/layout.tsx new file mode 100644 index 00000000..ba57ab91 --- /dev/null +++ b/apps/backend-session/src/app/layout.tsx @@ -0,0 +1,26 @@ +import type { Metadata } from "next"; +import { Inter } from "next/font/google"; +import { Providers } from "@/components/providers"; +import "./globals.css"; + +const inter = Inter({ subsets: ["latin"] }); + +export const metadata: Metadata = { + title: "Backend Session - XION Wallet Connection", + description: + "Backend API for XION wallet connection management with session keys", +}; + +export default function RootLayout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + + + {children} + + + ); +} diff --git a/apps/backend-session/src/app/page.tsx b/apps/backend-session/src/app/page.tsx new file mode 100644 index 00000000..2d9c6c44 --- /dev/null +++ b/apps/backend-session/src/app/page.tsx @@ -0,0 +1,198 @@ +"use client"; +import { useSession } from "next-auth/react"; +import { useRouter } from "next/navigation"; +import { useEffect } from "react"; +import { Button } from "@burnt-labs/ui"; +import Link from "next/link"; +import "@burnt-labs/ui/dist/index.css"; + +export default function HomePage() { + const { status } = useSession(); + const router = useRouter(); + + // Redirect if authenticated + useEffect(() => { + if (status === "authenticated") { + router.push("/profile"); + } + }, [status, router]); + + // Show loading while checking authentication + if (status === "loading") { + return ( +
+
+
+ Loading... +
+
+ ); + } + + return ( +
+ {/* Background decoration */} +
+ +
+ {/* Header */} +
+
+ + + +
+

+ XION Backend Session +

+

+ Secure wallet management for the future of blockchain +

+
+ +
+
+
+

+ Welcome to XION +

+

+ Get started with secure wallet management and session keys +

+
+ + {/* Features */} +
+
+
+ + + +
+

+ Secure Authentication +

+

+ Create an account with username and password for secure access +

+
+ +
+
+ + + +
+

+ Session Keys +

+

+ Manage secure session keys for wallet operations +

+
+ +
+
+ + + +
+

+ Permissions +

+

+ Control access to contracts, staking, and treasury operations +

+
+
+ + {/* Action buttons */} +
+ + + + + + + +
+
+
+
+
+ ); +} diff --git a/apps/backend-session/src/app/profile/page.tsx b/apps/backend-session/src/app/profile/page.tsx new file mode 100644 index 00000000..75e0860c --- /dev/null +++ b/apps/backend-session/src/app/profile/page.tsx @@ -0,0 +1,782 @@ +"use client"; +import { useState, useEffect } from "react"; +import { useSession, signOut } from "next-auth/react"; +import { useRouter } from "next/navigation"; +import { Button } from "@burnt-labs/ui"; +import "@burnt-labs/ui/dist/index.css"; + +import WalletComponent from "@/components/WalletComponent"; +import { WalletStatus } from "@/types/frontend"; + +export default function ProfilePage() { + const { data: session, status } = useSession(); + const router = useRouter(); + const [walletStatus, setWalletStatus] = useState(null); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(null); + + // Redirect if not authenticated + useEffect(() => { + if (status === "unauthenticated") { + router.push("/auth/signin"); + } + }, [status, router]); + + // Check wallet status when component mounts + useEffect(() => { + if (session) { + checkWalletStatus(); + } + }, [session]); + + const checkWalletStatus = async () => { + setLoading(true); + setError(null); + try { + const response = await fetch("/api/wallet/status"); + const data = await response.json(); + + if (data.success) { + setWalletStatus(data.data); + } else { + setError(data.error || "Failed to check wallet status"); + } + } catch (err) { + setError("Network error while checking wallet status"); + } finally { + setLoading(false); + } + }; + + const handleConnect = async () => { + setLoading(true); + setError(null); + try { + const response = await fetch("/api/wallet/connect", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + grantedRedirectUrl: window.location.href, + }), + }); + + const data = await response.json(); + + if (data.success) { + // Redirect to the authorization URL + console.log( + "Redirecting to authorization URL", + data.data.authorizationUrl, + ); + window.location.href = data.data.authorizationUrl; + } else { + setError(data.error || "Failed to initiate wallet connection"); + } + } catch (err) { + setError("Network error while connecting wallet"); + } finally { + setLoading(false); + } + }; + + const handleDisconnect = async () => { + setLoading(true); + setError(null); + try { + const response = await fetch("/api/wallet/disconnect", { + method: "DELETE", + }); + + const data = await response.json(); + + if (data.success) { + setWalletStatus(null); + } else { + setError(data.error || "Failed to disconnect wallet"); + } + } catch (err) { + setError("Network error while disconnecting wallet"); + } finally { + setLoading(false); + } + }; + + const handleLogout = async () => { + await signOut({ callbackUrl: "/auth/signin" }); + }; + + const formatTimestamp = (timestamp?: number) => { + if (!timestamp) return "N/A"; + return new Date(timestamp).toLocaleString(); + }; + + const formatPermissions = (permissions?: WalletStatus["permissions"]) => { + if (!permissions) return "None"; + + const parts: string[] = []; + if (permissions.contracts && permissions.contracts.length > 0) { + parts.push(`Contracts: ${permissions.contracts.length}`); + } + if (permissions.bank && permissions.bank.length > 0) { + parts.push(`Bank: ${permissions.bank.length} limits`); + } + if (permissions.stake) { + parts.push("Staking enabled"); + } + if (permissions.treasury) { + parts.push(`Treasury: ${permissions.treasury}`); + } + + return parts.length > 0 ? parts.join(", ") : "None"; + }; + + const renderDetailedPermissions = ( + permissions?: WalletStatus["permissions"], + ) => { + if (!permissions) { + return ( +
No permissions granted
+ ); + } + + return ( +
+ {/* Contracts */} + {permissions.contracts && permissions.contracts.length > 0 && ( +
+
+ + + + + Contract Permissions ({permissions.contracts.length}) + +
+
+ {permissions.contracts.map((contract, index) => { + const isStringContract = typeof contract === "string"; + return ( +
+ {isStringContract ? ( +
+ + {contract} + + + Full Access + +
+ ) : ( +
+
+ + {(contract as { address: string }).address} + + + Limited Access + +
+ {( + contract as { + address: string; + amounts?: Array<{ denom: string; amount: string }>; + } + ).amounts && + ( + contract as { + address: string; + amounts?: Array<{ + denom: string; + amount: string; + }>; + } + ).amounts!.length > 0 && ( +
+
+ Spending Limits: +
+ {( + contract as { + address: string; + amounts: Array<{ + denom: string; + amount: string; + }>; + } + ).amounts.map((amount, amountIndex) => ( +
+ {amount.amount} {amount.denom} +
+ ))} +
+ )} +
+ )} +
+ ); + })} +
+
+ )} + + {/* Bank Permissions */} + {permissions.bank && permissions.bank.length > 0 && ( +
+
+ + + + + Bank Spending Limits ({permissions.bank.length}) + +
+
+ {permissions.bank.map((limit, index) => ( +
+ + {limit.amount} {limit.denom} + + Per Transaction +
+ ))} +
+
+ )} + + {/* Staking Permission */} + {permissions.stake && ( +
+
+ + + + + Staking Permission + + + Enabled + +
+

+ Can stake and unstake tokens on your behalf +

+
+ )} + + {/* Treasury Permission */} + {permissions.treasury && ( +
+
+ + + + + Treasury Access + +
+
+ + {permissions.treasury} + +
+

+ Can interact with treasury contract +

+
+ )} + + {/* Permission Expiry */} + {permissions.expiry && ( +
+
+ + + + + Permission Expiry + +
+

+ {formatTimestamp(permissions.expiry)} +

+
+ )} + + {/* No permissions message */} + {!permissions.contracts?.length && + !permissions.bank?.length && + !permissions.stake && + !permissions.treasury && ( +
+ No specific permissions granted +
+ )} +
+ ); + }; + + // Show loading while checking authentication + if (status === "loading") { + return ( +
+
+
+ Loading... +
+
+ ); + } + + // Don't render if not authenticated (will redirect) + if (!session) { + return null; + } + + return ( +
+ {/* Background decoration */} +
+ +
+ {/* Header */} +
+
+ + + +
+

+ XION Backend Session +

+

+ Secure wallet management for the future of blockchain +

+
+ +
+
+ {/* User header */} +
+
+
+ + {session.user.username.charAt(0).toUpperCase()} + +
+
+

+ Welcome back, {session.user.username} +

+

+ Manage your XION wallet connection +

+ {session.user.email ? ( +

{session.user.email}

+ ) : null} +
+
+ +
+ + {/* Error message */} + {error ? ( +
+
+ + + +

{error}

+
+
+ ) : null} + + {/* Wallet status card */} +
+
+
+ + + +
+

+ Wallet Connection Status +

+
+ + {loading ? ( +
+
+
+ Loading wallet status... +
+
+ ) : walletStatus ? ( +
+ {/* Status badge */} +
+ Connection Status + +
+ {walletStatus.connected ? "Connected" : "Disconnected"} + +
+ + {walletStatus.connected ? ( +
+ {/* Meta Account */} +
+
+ + + + + Connected Meta Account + +
+

+ {walletStatus.metaAccountAddress} +

+
+ + {/* Session Key */} +
+
+ + + + + Session Account (Stored in server) + +
+

+ {walletStatus.sessionKeyAddress} +

+
+ + {/* Additional info grid */} +
+
+
+ + + + + Expires + +
+

+ {formatTimestamp(walletStatus.expiresAt)} +

+
+ +
+
+ + + + + State + +
+

+ {walletStatus.state || "N/A"} +

+
+
+ + {/* Detailed Permissions */} +
+
+ + + + + Detailed Permissions + +
+ {renderDetailedPermissions(walletStatus.permissions)} +
+
+ ) : null} +
+ ) : ( +
+ + + +

No wallet connection found

+
+ )} +
+ + {/* Wallet Component - only show if wallet is connected */} + {walletStatus?.connected && walletStatus.metaAccountAddress && ( + + )} + + {/* Action buttons */} +
+ + + + + +
+
+
+
+
+ ); +} diff --git a/apps/backend-session/src/components/Notification.tsx b/apps/backend-session/src/components/Notification.tsx new file mode 100644 index 00000000..b202137b --- /dev/null +++ b/apps/backend-session/src/components/Notification.tsx @@ -0,0 +1,160 @@ +"use client"; +import { useEffect, useState } from "react"; +import { Button } from "@burnt-labs/ui"; + +interface NotificationProps { + message: string; + transactionHash?: string; + type?: "success" | "error" | "info"; + duration?: number; + onClose?: () => void; +} + +export default function Notification({ + message, + transactionHash, + type = "success", + duration = 5000, + onClose, +}: NotificationProps) { + const [isVisible, setIsVisible] = useState(true); + + useEffect(() => { + const timer = setTimeout(() => { + setIsVisible(false); + onClose?.(); + }, duration); + + return () => clearTimeout(timer); + }, [duration, onClose]); + + const handleClose = () => { + setIsVisible(false); + onClose?.(); + }; + + if (!isVisible) return null; + + const getTypeStyles = () => { + switch (type) { + case "success": + return "border-green-400/30 bg-green-500/10 text-green-300"; + case "error": + return "border-red-400/30 bg-red-500/10 text-red-300"; + case "info": + return "border-blue-400/30 bg-blue-500/10 text-blue-300"; + default: + return "border-green-400/30 bg-green-500/10 text-green-300"; + } + }; + + const getIcon = () => { + switch (type) { + case "success": + return ( + + + + ); + case "error": + return ( + + + + ); + case "info": + return ( + + + + ); + default: + return null; + } + }; + + return ( +
+
+
+ {getIcon()} +
+

{message}

+ {transactionHash && ( +
+

Transaction Hash:

+
+ + {transactionHash} + + +
+
+ )} +
+ +
+
+
+ ); +} diff --git a/apps/backend-session/src/components/NotificationContainer.tsx b/apps/backend-session/src/components/NotificationContainer.tsx new file mode 100644 index 00000000..f5f16bc8 --- /dev/null +++ b/apps/backend-session/src/components/NotificationContainer.tsx @@ -0,0 +1,22 @@ +"use client"; +import React from "react"; +import { useNotification } from "@/contexts/NotificationContext"; +import Notification from "./Notification"; + +export default function NotificationContainer() { + const { notifications, removeNotification } = useNotification(); + + return ( +
+ {notifications.map((notification) => ( + removeNotification(notification.id)} + /> + ))} +
+ ); +} diff --git a/apps/backend-session/src/components/TransferComponent.tsx b/apps/backend-session/src/components/TransferComponent.tsx new file mode 100644 index 00000000..cb87ee3c --- /dev/null +++ b/apps/backend-session/src/components/TransferComponent.tsx @@ -0,0 +1,240 @@ +"use client"; +import { useState } from "react"; +import { Button } from "@burnt-labs/ui"; +import { TransferComponentProps, TokenDenom } from "@/types/frontend"; +import { useNotification } from "@/contexts/NotificationContext"; + +export default function TransferComponent({ + onTransferComplete, +}: TransferComponentProps) { + const [toAddress, setToAddress] = useState(""); + const [amount, setAmount] = useState(""); + const [denom, setDenom] = useState("XION"); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(null); + const [success, setSuccess] = useState(null); + const { addNotification } = useNotification(); + + const handleTransfer = async () => { + // Validate inputs + if (!toAddress.trim()) { + setError("Please enter a recipient address"); + return; + } + + if (!amount.trim() || parseFloat(amount) <= 0) { + setError("Please enter a valid amount"); + return; + } + + setLoading(true); + setError(null); + setSuccess(null); + + try { + const response = await fetch("/api/wallet/transaction/send", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + to: toAddress.trim(), + amount: amount.trim(), + denom, + }), + }); + + const data = await response.json(); + + if (data.success) { + setSuccess( + `Transaction sent successfully! Hash: ${data.data.transactionHash}`, + ); + addNotification({ + message: "Transaction sent successfully!", + transactionHash: data.data.transactionHash, + type: "success", + }); + setToAddress(""); + setAmount(""); + onTransferComplete?.(data.data.transactionHash); + } else { + setError(data.error || "Failed to send transaction"); + addNotification({ + message: data.error || "Failed to send transaction", + type: "error", + }); + } + } catch (err) { + setError("Network error while sending transaction"); + addNotification({ + message: "Network error while sending transaction", + type: "error", + }); + } finally { + setLoading(false); + } + }; + + const handleClear = () => { + setToAddress(""); + setAmount(""); + setError(null); + setSuccess(null); + }; + + return ( +
+
+ + + +

Send Tokens

+
+ +
+ {/* Recipient Address */} +
+ + setToAddress(e.target.value)} + placeholder="Enter recipient address (xion1...)" + className="w-full rounded-lg border border-[#333333] bg-[#111111] px-3 py-2 text-white placeholder-white/40 focus:border-white focus:outline-none focus:ring-2 focus:ring-white/20" + disabled={loading} + /> +
+ + {/* Amount and Denom */} +
+
+ + setAmount(e.target.value)} + placeholder="0.00" + className="w-full rounded-lg border border-[#333333] bg-[#111111] px-3 py-2 text-white placeholder-white/40 focus:border-white focus:outline-none focus:ring-2 focus:ring-white/20" + disabled={loading} + /> +
+
+ + +
+
+ + {/* Error Message */} + {error && ( +
+
+ + + +

{error}

+
+
+ )} + + {/* Success Message */} + {success && ( +
+
+ + + +

{success}

+
+
+ )} + + {/* Action Buttons */} +
+ + +
+
+
+ ); +} diff --git a/apps/backend-session/src/components/WalletComponent.tsx b/apps/backend-session/src/components/WalletComponent.tsx new file mode 100644 index 00000000..0e014916 --- /dev/null +++ b/apps/backend-session/src/components/WalletComponent.tsx @@ -0,0 +1,293 @@ +"use client"; +import { useState, useEffect, useCallback } from "react"; +import { Button } from "@burnt-labs/ui"; +import TransferComponent from "./TransferComponent"; +import { + WalletBalance, + WalletData, + WalletComponentProps, +} from "@/types/frontend"; + +export default function WalletComponent({ + account, + onRefresh, +}: WalletComponentProps) { + const [walletData, setWalletData] = useState(null); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(null); + + const fetchWalletData = async () => { + setLoading(true); + setError(null); + try { + const response = await fetch("/api/wallet/account"); + const data = await response.json(); + + if (data.success) { + setWalletData(data.data); + } else { + setError(data.error || "Failed to fetch wallet data"); + } + } catch (err) { + setError("Network error while fetching wallet data"); + } finally { + setLoading(false); + } + }; + + useEffect(() => { + fetchWalletData(); + }, []); + + const handleRefresh = useCallback(() => { + fetchWalletData(); + onRefresh?.(); + }, [onRefresh]); + + const handleTransferComplete = useCallback((transactionHash: string) => { + console.log("Transfer completed:", transactionHash); + // Refresh wallet data after successful transfer + fetchWalletData(); + }, []); + + const formatAmount = (amount: string, decimals: number = 6) => { + const num = parseFloat(amount); + return num.toFixed(decimals); + }; + + if (loading) { + return ( +
+
+
+ + + +
+

+ Wallet Information +

+
+
+
+
+ Loading wallet data... +
+
+
+ ); + } + + if (error) { + return ( +
+
+
+ + + +
+

+ Wallet Information +

+
+
+
+ + + +

{error}

+
+
+
+ +
+
+ ); + } + + if (!walletData) { + return ( +
+
+
+ + + +
+

+ Wallet Information +

+
+
+ + + +

No wallet data available

+
+
+ ); + } + + return ( +
+
+
+
+ + + +
+

+ Wallet Information +

+
+ +
+ +
+ {/* Meta Account Address */} +
+
+ + + + + Meta Account Address + +
+

+ {account.metaAccountAddress} +

+
+ + {/* Token Balances */} +
+ {/* XION Balance */} +
+
+
+ XION +
+

+ {formatAmount(walletData.balances?.xion.amount || "0")} +

+

+ {walletData.balances?.xion.microAmount} uxion +

+
+ + {/* USDC Balance */} +
+
+
+ USDC +
+

+ {formatAmount(walletData.balances?.usdc.amount || "0")} +

+

+ {walletData.balances?.usdc.microAmount} uusdc +

+
+
+ + {/* Transfer Component */} + +
+
+ ); +} diff --git a/apps/backend-session/src/components/providers.tsx b/apps/backend-session/src/components/providers.tsx new file mode 100644 index 00000000..bf6bbfef --- /dev/null +++ b/apps/backend-session/src/components/providers.tsx @@ -0,0 +1,15 @@ +"use client"; +import { SessionProvider } from "next-auth/react"; +import { NotificationProvider } from "@/contexts/NotificationContext"; +import NotificationContainer from "./NotificationContainer"; + +export function Providers({ children }: { children: React.ReactNode }) { + return ( + + + {children} + + + + ); +} diff --git a/apps/backend-session/src/contexts/NotificationContext.tsx b/apps/backend-session/src/contexts/NotificationContext.tsx new file mode 100644 index 00000000..29e6d2d4 --- /dev/null +++ b/apps/backend-session/src/contexts/NotificationContext.tsx @@ -0,0 +1,83 @@ +"use client"; +import React, { createContext, useContext, useState, useCallback } from "react"; + +export interface NotificationData { + id: string; + message: string; + transactionHash?: string; + type: "success" | "error" | "info"; + duration?: number; +} + +interface NotificationContextType { + notifications: NotificationData[]; + addNotification: (notification: Omit) => void; + removeNotification: (id: string) => void; + clearAllNotifications: () => void; +} + +const NotificationContext = createContext( + undefined, +); + +export function NotificationProvider({ + children, +}: { + children: React.ReactNode; +}) { + const [notifications, setNotifications] = useState([]); + + const addNotification = useCallback( + (notification: Omit) => { + const id = Math.random().toString(36).substr(2, 9); + const newNotification: NotificationData = { + ...notification, + id, + duration: notification.duration || 5000, + }; + + setNotifications((prev) => [...prev, newNotification]); + + // Auto remove notification after duration + if (newNotification.duration && newNotification.duration > 0) { + setTimeout(() => { + removeNotification(id); + }, newNotification.duration); + } + }, + [], + ); + + const removeNotification = useCallback((id: string) => { + setNotifications((prev) => + prev.filter((notification) => notification.id !== id), + ); + }, []); + + const clearAllNotifications = useCallback(() => { + setNotifications([]); + }, []); + + return ( + + {children} + + ); +} + +export function useNotification() { + const context = useContext(NotificationContext); + if (context === undefined) { + throw new Error( + "useNotification must be used within a NotificationProvider", + ); + } + return context; +} diff --git a/apps/backend-session/src/lib/api-middleware.ts b/apps/backend-session/src/lib/api-middleware.ts new file mode 100644 index 00000000..b6e31727 --- /dev/null +++ b/apps/backend-session/src/lib/api-middleware.ts @@ -0,0 +1,168 @@ +import type { NextRequest } from "next/server"; +import { NextResponse } from "next/server"; +import { checkRateLimit, checkStrictRateLimit } from "@/lib/rate-limit"; +import { + createRateLimitResponse, + getClientIP, + ApiException, +} from "@/lib/api-response"; + +// Re-export ApiException for convenience +export { ApiException } from "@/lib/api-response"; + +export interface ApiMiddlewareOptions { + rateLimit?: "normal" | "strict" | "none"; + requireAuth?: boolean; + allowedMethods?: string[]; +} + +export interface ApiContext { + request: NextRequest; + ip: string; + userId?: string; + user?: any; +} + +/** + * API middleware for common functionality + */ +export async function withApiMiddleware( + request: NextRequest, + handler: (context: ApiContext) => Promise, + options: ApiMiddlewareOptions = {}, +): Promise { + const { + rateLimit = "normal", + requireAuth = false, + allowedMethods = ["GET", "POST", "PUT", "DELETE", "PATCH"], + } = options; + + try { + // Check allowed methods + const method = request.method; + if (!allowedMethods.includes(method)) { + throw new ApiException("Method not allowed", 405, "METHOD_NOT_ALLOWED"); + } + + // Extract client IP + const ip = getClientIP(request); + + // Apply rate limiting + if (rateLimit !== "none") { + const rateLimitCheck = + rateLimit === "strict" + ? await checkStrictRateLimit(ip) + : await checkRateLimit(ip); + + if (!rateLimitCheck.allowed) { + return createRateLimitResponse(); + } + } + + // Create context + const context: ApiContext = { + request, + ip, + }; + + // Call the actual handler + return await handler(context); + } catch (error) { + console.error("API middleware error:", error); + + if (error instanceof ApiException) { + return NextResponse.json( + { + success: false, + error: error.message, + code: error.code, + timestamp: new Date().toISOString(), + }, + { status: error.status }, + ); + } + + return NextResponse.json( + { + success: false, + error: "Internal server error", + timestamp: new Date().toISOString(), + }, + { status: 500 }, + ); + } +} + +/** + * Higher-order function to wrap API handlers with middleware + */ +export function createApiHandler( + handler: (context: ApiContext) => Promise, + options: ApiMiddlewareOptions = {}, +) { + return async (request: NextRequest): Promise => { + return withApiMiddleware(request, handler, options); + }; +} + +/** + * Utility function to handle common API operations + */ +export async function handleApiRequest( + request: NextRequest, + handler: (context: ApiContext) => Promise, + options: ApiMiddlewareOptions = {}, +): Promise { + const wrappedHandler = async (context: ApiContext): Promise => { + try { + const result = await handler(context); + + // If the result is already a NextResponse, return it directly + if (result instanceof NextResponse) { + return result; + } + + return NextResponse.json({ + success: true, + data: result, + timestamp: new Date().toISOString(), + }); + } catch (error) { + console.error("API handler error:", error); + + if (error instanceof ApiException) { + return NextResponse.json( + { + success: false, + error: error.message, + code: error.code, + timestamp: new Date().toISOString(), + }, + { status: error.status }, + ); + } + + if (error instanceof Error) { + return NextResponse.json( + { + success: false, + error: error.message, + timestamp: new Date().toISOString(), + }, + { status: 400 }, + ); + } + + return NextResponse.json( + { + success: false, + error: "Internal server error", + timestamp: new Date().toISOString(), + }, + { status: 500 }, + ); + } + }; + + return withApiMiddleware(request, wrappedHandler, options); +} diff --git a/apps/backend-session/src/lib/api-response.ts b/apps/backend-session/src/lib/api-response.ts new file mode 100644 index 00000000..741a4b10 --- /dev/null +++ b/apps/backend-session/src/lib/api-response.ts @@ -0,0 +1,144 @@ +import { NextResponse } from "next/server"; + +export interface ApiResponse { + success: boolean; + data?: T; + error?: string; + message?: string; + timestamp?: string; +} + +export interface ApiError { + message: string; + status: number; + code?: string; +} + +export class ApiException extends Error { + public status: number; + public code?: string; + + constructor(message: string, status = 400, code?: string) { + super(message); + this.name = "ApiException"; + this.status = status; + this.code = code; + } +} + +/** + * Create a successful API response + */ +export function createSuccessResponse( + data: T, + message?: string, + status = 200, +): NextResponse> { + const response: ApiResponse = { + success: true, + data, + timestamp: new Date().toISOString(), + }; + + if (message) { + response.message = message; + } + + return NextResponse.json(response, { status }); +} + +/** + * Create an error API response + */ +export function createErrorResponse( + error: string | ApiException, + status?: number, + code?: string, +): NextResponse { + let errorMessage: string; + let errorStatus: number; + let errorCode: string | undefined; + + if (error instanceof ApiException) { + errorMessage = error.message; + errorStatus = error.status; + errorCode = error.code; + } else { + errorMessage = error; + errorStatus = status || 400; + errorCode = code; + } + + const response: ApiResponse = { + success: false, + error: errorMessage, + timestamp: new Date().toISOString(), + }; + + if (errorCode) { + response.error = `${errorCode}: ${errorMessage}`; + } + + return NextResponse.json(response, { status: errorStatus }); +} + +/** + * Create a rate limit error response + */ +export function createRateLimitResponse(): NextResponse { + return createErrorResponse( + "Too many requests from this IP, please try again later.", + 429, + "RATE_LIMIT_EXCEEDED", + ); +} + +/** + * Create a validation error response + */ +export function createValidationErrorResponse( + message = "Validation failed", +): NextResponse { + return createErrorResponse(message, 400, "VALIDATION_ERROR"); +} + +/** + * Create a not found error response + */ +export function createNotFoundResponse( + resource = "Resource", +): NextResponse { + return createErrorResponse(`${resource} not found`, 404, "NOT_FOUND"); +} + +/** + * Create an internal server error response + */ +export function createInternalErrorResponse( + message = "Internal server error", +): NextResponse { + return createErrorResponse(message, 500, "INTERNAL_ERROR"); +} + +/** + * Extract client IP from request headers + */ +export function getClientIP(request: Request): string { + const forwardedFor = request.headers.get("x-forwarded-for"); + const realIP = request.headers.get("x-real-ip"); + const cfConnectingIP = request.headers.get("cf-connecting-ip"); + + if (forwardedFor) { + return forwardedFor.split(",")[0].trim(); + } + + if (realIP) { + return realIP; + } + + if (cfConnectingIP) { + return cfConnectingIP; + } + + return "unknown"; +} diff --git a/apps/backend-session/src/lib/api-wrapper.ts b/apps/backend-session/src/lib/api-wrapper.ts new file mode 100644 index 00000000..7fc5f1d8 --- /dev/null +++ b/apps/backend-session/src/lib/api-wrapper.ts @@ -0,0 +1,181 @@ +import type { NextRequest } from "next/server"; +import { NextResponse } from "next/server"; +import { z } from "zod"; +import type { ApiContext } from "@/lib/api-middleware"; +import { handleApiRequest } from "@/lib/api-middleware"; +import { ApiException } from "@/lib/api-response"; + +export interface ApiWrapperOptions { + rateLimit?: "normal" | "strict" | "none"; + requireAuth?: boolean; + allowedMethods?: string[]; + schema?: z.ZodSchema; + schemaType?: "body" | "query" | "params"; +} + +/** + * Generic API wrapper that handles common operations + */ +export function createApiWrapper( + handler: (context: ApiContext & { validatedData?: any }) => Promise, + options: ApiWrapperOptions = {}, +) { + return async (request: NextRequest): Promise => { + return handleApiRequest( + request, + async (context) => { + const { request, ip } = context; + + // Validate request data if schema is provided + let validatedData: any; + + if (options.schema) { + try { + if (options.schemaType === "query") { + const { searchParams } = new URL(request.url); + const queryData = Object.fromEntries(searchParams.entries()); + validatedData = options.schema.parse(queryData); + } else if (options.schemaType === "params") { + // For dynamic routes, params would be passed separately + // This is a placeholder for future implementation + throw new ApiException( + "Params validation not implemented yet", + 500, + ); + } else { + // Default to body validation + const body = await request.json(); + validatedData = options.schema.parse(body); + } + } catch (error) { + if (error instanceof z.ZodError) { + const errorMessage = error.errors + .map((err) => `${err.path.join(".")}: ${err.message}`) + .join(", "); + throw new ApiException( + `Validation failed: ${errorMessage}`, + 400, + "VALIDATION_ERROR", + ); + } + throw error; + } + } + + // Call the handler with validated data + return await handler({ ...context, validatedData }); + }, + options, + ); + }; +} + +/** + * Specific wrapper for wallet operations + */ +export function createWalletApiWrapper( + handler: ( + context: ApiContext & { validatedData?: any; user?: any }, + ) => Promise, + options: Omit & { + rateLimit?: "normal" | "strict"; + } = {}, +) { + return createApiWrapper( + async (context) => { + const { validatedData } = context; + + // Find user if username is provided + let user: any = null; + if (validatedData?.username) { + const { prisma } = await import("@/lib/xion/database"); + user = await prisma.user.findUnique({ + where: { username: validatedData.username }, + }); + + if (!user) { + throw new ApiException("User not found", 404, "USER_NOT_FOUND"); + } + } + + return await handler({ ...context, user }); + }, + { + rateLimit: "normal", + ...options, + }, + ); +} + +/** + * Specific wrapper for health check operations + */ +export function createHealthApiWrapper( + handler: (context: ApiContext) => Promise, + options: Omit = {}, +) { + return createApiWrapper(handler, { + rateLimit: "none", + ...options, + }); +} + +/** + * Utility function to create standardized API handlers + */ +export function createStandardApiHandler( + handler: ( + context: ApiContext & { validatedData?: any; user?: any }, + ) => Promise, + options: ApiWrapperOptions = {}, +) { + return createApiWrapper(handler, { + rateLimit: "normal", + ...options, + }); +} + +/** + * Helper function to extract and validate user from request + */ +export async function getUserFromRequest( + request: NextRequest, + username?: string, +): Promise { + if (!username) { + throw new ApiException("Username is required", 400, "MISSING_USERNAME"); + } + + const { prisma } = await import("@/lib/xion/database"); + const user = await prisma.user.findUnique({ + where: { username }, + }); + + if (!user) { + throw new ApiException("User not found", 404, "USER_NOT_FOUND"); + } + + return user; +} + +/** + * Helper function to create or get user + * @deprecated This function is no longer used since authentication is required + */ +export async function createOrGetUser(username: string): Promise { + throw new Error("createOrGetUser is deprecated. Use authentication instead."); +} + +/** + * Helper function to handle redirect logic + * Returns NextResponse.redirect if redirectUrl is provided, otherwise returns JSON response + */ +export function handleRedirectResponse( + data: any, + redirectUrl?: string, +): NextResponse { + if (redirectUrl) { + return NextResponse.redirect(redirectUrl); + } + return NextResponse.json(data); +} diff --git a/apps/backend-session/src/lib/auth-middleware.ts b/apps/backend-session/src/lib/auth-middleware.ts new file mode 100644 index 00000000..fde77f36 --- /dev/null +++ b/apps/backend-session/src/lib/auth-middleware.ts @@ -0,0 +1,51 @@ +import type { NextRequest } from "next/server"; +import { getServerSession } from "next-auth"; +import { authOptions } from "@/lib/auth"; +import { ApiException } from "@/lib/api-response"; + +export interface AuthenticatedContext { + user: { + id: string; + username: string; + email?: string; + }; +} + +/** + * Middleware to require authentication for API routes + */ +export async function requireAuth( + request: NextRequest, +): Promise { + const session = await getServerSession(authOptions); + + if (!session?.user) { + throw new ApiException("Authentication required", 401, "UNAUTHORIZED"); + } + + if (!session.user.id || !session.user.username) { + throw new ApiException("Invalid session data", 401, "INVALID_SESSION"); + } + + return { + user: { + id: session.user.id, + username: session.user.username, + email: session.user.email || undefined, + }, + }; +} + +/** + * Higher-order function to wrap API handlers with authentication + */ +export function withAuth( + handler: ( + context: AuthenticatedContext & { validatedData?: any }, + ) => Promise, +) { + return async (request: NextRequest, validatedData?: any) => { + const authContext = await requireAuth(request); + return await handler({ ...authContext, validatedData }); + }; +} diff --git a/apps/backend-session/src/lib/auth.ts b/apps/backend-session/src/lib/auth.ts new file mode 100644 index 00000000..e1fceee0 --- /dev/null +++ b/apps/backend-session/src/lib/auth.ts @@ -0,0 +1,107 @@ +import type { NextAuthOptions } from "next-auth"; +import CredentialsProvider from "next-auth/providers/credentials"; +import bcrypt from "bcryptjs"; +import { z } from "zod"; +import { prisma } from "@/lib/xion/database"; + +const loginSchema = z.object({ + username: z.string().min(1, "Username is required"), + password: z.string().min(6, "Password must be at least 6 characters"), +}); + +const registerSchema = z.object({ + username: z.string().min(3, "Username must be at least 3 characters"), + email: z.string().email("Invalid email address").optional(), + password: z.string().min(6, "Password must be at least 6 characters"), +}); + +export const authOptions: NextAuthOptions = { + providers: [ + CredentialsProvider({ + name: "credentials", + credentials: { + username: { label: "Username", type: "text" }, + password: { label: "Password", type: "password" }, + }, + async authorize(credentials) { + if (!credentials?.username || !credentials.password) { + return null; + } + + try { + // Validate input + const { username, password } = loginSchema.parse(credentials); + + // Find user by username + const user = await prisma.user.findUnique({ + where: { username }, + }); + + if (!user) { + return null; + } + + // Verify password + const isValidPassword = await bcrypt.compare( + password, + (user as any).password, + ); + if (!isValidPassword) { + return null; + } + + // Return user object (without password) + return { + id: user.id, + username: user.username, + email: user.email, + }; + } catch (error) { + console.error("Auth error:", error); + return null; + } + }, + }), + ], + session: { + strategy: "jwt", + }, + callbacks: { + async jwt({ token, user }) { + if (user) { + token.id = user.id; + token.username = user.username; + } + return token; + }, + async session({ session, token }) { + if (token) { + session.user.id = token.id; + session.user.username = token.username; + } + return session; + }, + }, + pages: { + signIn: "/auth/signin", + }, + secret: process.env.NEXTAUTH_SECRET, +}; + +// Helper function to hash passwords +export async function hashPassword(password: string): Promise { + return bcrypt.hash(password, 12); +} + +// Export the schemas for use in API routes +export { loginSchema, registerSchema }; + +// Helper function to validate registration data +export function validateRegistration(data: unknown) { + return registerSchema.parse(data); +} + +// Helper function to validate login data +export function validateLogin(data: unknown) { + return loginSchema.parse(data); +} diff --git a/apps/backend-session/src/lib/rate-limit.ts b/apps/backend-session/src/lib/rate-limit.ts new file mode 100644 index 00000000..92d1259a --- /dev/null +++ b/apps/backend-session/src/lib/rate-limit.ts @@ -0,0 +1,107 @@ +import { RateLimiterMemory } from "rate-limiter-flexible"; + +// Create rate limiter instances +const rateLimiter = new RateLimiterMemory({ + keyPrefix: "api_rate_limit", + points: parseInt(process.env.RATE_LIMIT_MAX_REQUESTS || "100"), // Number of requests + duration: parseInt(process.env.RATE_LIMIT_WINDOW_MS || "900000") / 1000, // Per 15 minutes (in seconds) + blockDuration: 60, // Block for 1 minute if limit exceeded +}); + +const strictRateLimiter = new RateLimiterMemory({ + keyPrefix: "api_strict_rate_limit", + points: 10, // 10 requests + duration: 60, // per minute + blockDuration: 300, // Block for 5 minutes +}); + +export class RateLimitService { + /** + * Check rate limit for general API endpoints + */ + static async checkRateLimit(ip: string): Promise<{ + allowed: boolean; + remaining: number; + resetTime?: number; + }> { + try { + const result = await rateLimiter.consume(ip); + return { + allowed: true, + remaining: result.remainingPoints, + resetTime: Math.round(Date.now() / 1000) + result.msBeforeNext / 1000, + }; + } catch (rejRes) { + return { + allowed: false, + remaining: 0, + resetTime: Math.round(Date.now() / 1000) + rejRes.msBeforeNext / 1000, + }; + } + } + + /** + * Check strict rate limit for sensitive endpoints (login, connect, etc.) + */ + static async checkStrictRateLimit(ip: string): Promise<{ + allowed: boolean; + remaining: number; + resetTime?: number; + }> { + try { + const result = await strictRateLimiter.consume(ip); + return { + allowed: true, + remaining: result.remainingPoints, + resetTime: Math.round(Date.now() / 1000) + result.msBeforeNext / 1000, + }; + } catch (rejRes) { + return { + allowed: false, + remaining: 0, + resetTime: Math.round(Date.now() / 1000) + rejRes.msBeforeNext / 1000, + }; + } + } + + /** + * Reset rate limit for an IP (for testing purposes) + */ + static async resetRateLimit(ip: string): Promise { + await Promise.all([rateLimiter.delete(ip), strictRateLimiter.delete(ip)]); + } + + /** + * Get rate limit status without consuming points + */ + static async getRateLimitStatus(ip: string): Promise<{ + general: { remaining: number; resetTime: number }; + strict: { remaining: number; resetTime: number }; + }> { + const [generalResult, strictResult] = await Promise.all([ + rateLimiter.get(ip), + strictRateLimiter.get(ip), + ]); + + return { + general: { + remaining: + generalResult?.remainingPoints || + parseInt(process.env.RATE_LIMIT_MAX_REQUESTS || "100"), + resetTime: generalResult + ? Math.round(Date.now() / 1000) + generalResult.msBeforeNext / 1000 + : 0, + }, + strict: { + remaining: strictResult?.remainingPoints || 10, + resetTime: strictResult + ? Math.round(Date.now() / 1000) + strictResult.msBeforeNext / 1000 + : 0, + }, + }; + } +} + +// Backward compatibility exports +export const checkRateLimit = RateLimitService.checkRateLimit; +export const checkStrictRateLimit = RateLimitService.checkStrictRateLimit; diff --git a/apps/backend-session/src/lib/validation.ts b/apps/backend-session/src/lib/validation.ts new file mode 100644 index 00000000..3740a0e4 --- /dev/null +++ b/apps/backend-session/src/lib/validation.ts @@ -0,0 +1,57 @@ +import { z } from "zod"; + +export const connectWalletSchema = z.object({ + permissions: z + .object({ + contracts: z.array(z.string()).optional(), + bank: z + .array( + z.object({ + denom: z.string(), + amount: z.string(), + }), + ) + .optional(), + stake: z.boolean().optional(), + treasury: z.string().optional(), + expiry: z.number().optional(), + }) + .optional(), + grantedRedirectUrl: z.string().url().optional(), +}); + +export const disconnectSchema = z.object({ + username: z.string().min(1, "Username is required"), +}); + +export const statusSchema = z.object({ + username: z.string().min(1, "Username is required"), +}); + +export const grantSessionCallbackSchema = z.object({ + granted: z.string().transform((val) => val === "true"), + granter: z.string(), + state: z.string(), +}); + +export const sendTransactionSchema = z.object({ + to: z.string().min(1, "Recipient address is required"), + amount: z + .string() + .min(1, "Amount is required") + .refine((val) => { + const num = parseFloat(val); + return !isNaN(num) && num > 0; + }, "Amount must be a positive number"), + denom: z.enum(["XION", "USDC"], { + errorMap: () => ({ message: "Denom must be either XION or USDC" }), + }), +}); + +export type ConnectWalletRequest = z.infer; +export type DisconnectRequest = z.infer; +export type StatusRequest = z.infer; +export type GrantSessionCallbackRequest = z.infer< + typeof grantSessionCallbackSchema +>; +export type SendTransactionRequest = z.infer; diff --git a/apps/backend-session/src/lib/xion/abstraxion-backend.ts b/apps/backend-session/src/lib/xion/abstraxion-backend.ts new file mode 100644 index 00000000..dbc238aa --- /dev/null +++ b/apps/backend-session/src/lib/xion/abstraxion-backend.ts @@ -0,0 +1,44 @@ +import { AbstraxionBackend, createAbstraxionBackend } from "@/lib/xion/backend"; +import { PrismaDatabaseAdapter, prisma } from "./database"; + +const globalForAbstraxion = globalThis as unknown as { + abstraxionBackend: AbstraxionBackend | undefined; +}; + +export function getAbstraxionBackend(): AbstraxionBackend { + if (globalForAbstraxion.abstraxionBackend) { + return globalForAbstraxion.abstraxionBackend; + } + + // ensure all environment variables are set + if (!process.env.XION_RPC_URL) { + throw new Error("XION_RPC_URL is not set"); + } + if (!process.env.XION_REDIRECT_URL) { + throw new Error("XION_REDIRECT_URL is not set"); + } + if (!process.env.XION_TREASURY) { + throw new Error("XION_TREASURY is not set"); + } + if (!process.env.ENCRYPTION_KEY) { + throw new Error("ENCRYPTION_KEY is not set"); + } + + const databaseAdapter = new PrismaDatabaseAdapter(prisma); + + const config = { + rpcUrl: process.env.XION_RPC_URL, + redirectUrl: process.env.XION_REDIRECT_URL, + treasury: process.env.XION_TREASURY, + encryptionKey: process.env.ENCRYPTION_KEY, + databaseAdapter, + sessionKeyExpiryMs: parseInt( + process.env.SESSION_KEY_EXPIRY_MS || "86400000", + ), + refreshThresholdMs: parseInt(process.env.REFRESH_THRESHOLD_MS || "3600000"), + enableAuditLogging: true, + }; + + globalForAbstraxion.abstraxionBackend = createAbstraxionBackend(config); + return globalForAbstraxion.abstraxionBackend; +} diff --git a/apps/backend-session/src/lib/xion/backend/AbstraxionBackend.ts b/apps/backend-session/src/lib/xion/backend/AbstraxionBackend.ts new file mode 100644 index 00000000..241a1977 --- /dev/null +++ b/apps/backend-session/src/lib/xion/backend/AbstraxionBackend.ts @@ -0,0 +1,476 @@ +import { randomBytes } from "node:crypto"; +import NodeCache from "node-cache"; +import type { IncomingMessage } from "node:http"; +import { GasPrice } from "@cosmjs/stargate"; +import { + AbstraxionAuth, + ContractGrantDescription, + SpendLimit, +} from "@burnt-labs/abstraxion-core"; +import { fetchConfig, xionGasValues } from "@burnt-labs/constants"; +import { + AbstraxionBackendConfig, + ConnectionInitResponse, + CallbackRequest, + CallbackResponse, + StatusResponse, + DisconnectResponse, + Permissions, + XionKeypair, +} from "./types"; +import * as e from "./types/errors"; +import { SessionKeyManager } from "./services/SessionKeyManager"; +import { + DatabaseRedirectStrategy, + DatabaseStorageStrategy, + InMemoryDummyRedirectStrategy, +} from "./adapters/AbstraxionStategies"; + +export class AbstraxionBackend { + public readonly sessionKeyManager: SessionKeyManager; + private readonly _stateStore: NodeCache; + + constructor(private readonly config: AbstraxionBackendConfig) { + // Validate configuration + if (!config.encryptionKey) { + throw new e.EncryptionKeyRequiredError(); + } + if (!config.databaseAdapter) { + throw new e.DatabaseAdapterRequiredError(); + } + if (!config.redirectUrl) { + throw new e.RedirectUrlRequiredError(); + } + if (!config.treasury) { + throw new e.TreasuryRequiredError(); + } + if (!config.rpcUrl) { + throw new e.RpcUrlRequiredError(); + } + + // Initialize node-cache with 10 minutes TTL and automatic cleanup + this._stateStore = new NodeCache({ + stdTTL: 600, // 10 minutes in seconds + checkperiod: 60, // Check for expired keys every minute + useClones: false, // Don't clone objects for better performance + maxKeys: 10000, // Maximum number of keys to prevent memory exhaustion + }); + + this.sessionKeyManager = new SessionKeyManager(config.databaseAdapter, { + encryptionKey: config.encryptionKey, + sessionKeyExpiryMs: config.sessionKeyExpiryMs, + refreshThresholdMs: config.refreshThresholdMs, + enableAuditLogging: config.enableAuditLogging, + }); + } + + /** + * Get the default gas price + */ + public get gasPriceDefault(): GasPrice { + const { gasPrice: gasPriceConstant } = xionGasValues; + return GasPrice.fromString(gasPriceConstant); + } + + /** + * Initiate wallet connection flow + * Generate session key and return authorization URL + */ + async connectInit( + userId: string, + permissions?: Permissions, + grantedRedirectUrl?: string, + ): Promise { + // Validate input parameters + if (!userId) { + throw new e.UserIdRequiredError(); + } + + try { + // Generate session key + const sessionKey = await this.sessionKeyManager.generateSessionKeypair(); + + // Generate OAuth state parameter for security + const state = randomBytes(32).toString("hex"); + + const permissionsToStore: Permissions = { + contracts: permissions?.contracts || [], + bank: permissions?.bank || [], + stake: permissions?.stake || false, + treasury: this.config.treasury, + }; + + // Store state with user ID, timestamp, session key address, and permissions + // node-cache will automatically handle TTL, no need for manual cleanup + this._stateStore.set(state, { + userId, + timestamp: Date.now(), + sessionKeyAddress: sessionKey.address, + grantedRedirectUrl: grantedRedirectUrl, + permissions: permissionsToStore, + }); + + // Store the session key temporarily (as PENDING) for later retrieval + await this.sessionKeyManager.createPendingSessionKey(userId, sessionKey); + + // Build authorization URL + const authorizationUrl = await this.buildAuthorizationUrl( + sessionKey.address, + state, + permissionsToStore, + ); + + return { + sessionKeyAddress: sessionKey.address, + authorizationUrl, + state, + }; + } catch (error) { + if (error instanceof e.AbstraxionBackendError) { + throw error; + } + throw new e.UnknownError( + `Failed to initiate connection: ${error instanceof Error ? error.message : String(error)}`, + ); + } + } + + /** + * Handle authorization callback from frontend SDK + * Process the granted/granter parameters and store session key + */ + async handleCallback(request: CallbackRequest): Promise { + if (!request.state) { + throw new e.StateRequiredError(); + } + if (!request.granter) { + throw new e.GranterRequiredError(); + } + + try { + // Validate state parameter + const stateData = this._stateStore.get<{ + userId: string; + timestamp: number; + sessionKeyAddress: string; + grantedRedirectUrl?: string; + permissions?: Permissions; + }>(request.state); + if (!stateData) { + throw new e.InvalidStateError(request.state); + } + + // Check if authorization was granted + if (!request.granted) { + // Clean up used state + this._stateStore.del(request.state); + return { + success: false, + error: "Authorization was not granted by user", + }; + } + + // Get the session key info that was stored during connectInit + const sessionKeyInfo = await this.sessionKeyManager.getLastSessionKeyInfo( + stateData.userId, + ); + if (!sessionKeyInfo) { + throw new e.SessionKeyNotFoundError("Session key not found for user"); + } + + // Create permissions from the stored state or default permissions + const permissions: Permissions = stateData.permissions || { + contracts: [], + bank: [], + stake: false, + treasury: this.config.treasury, + }; + + // Don't use login method here, because the granter is not set yet + const keypair = + await this.sessionKeyManager.getSessionKeypair(sessionKeyInfo); + if (!keypair) { + throw new e.EncryptionKeyRequiredError(); + } + + const accounts = await keypair.getAccounts(); + const keypairAddress = accounts[0].address; + + // Call authz to validate the grants + const authz = this._createRawAbstraxionAuthz(stateData.userId); + const pollSuccess = await authz.pollForGrants( + keypairAddress, + request.granter, + ); + if (!pollSuccess) { + throw new e.GrantedFailedError(); + } + + // Clean up used state + this._stateStore.del(request.state); + + // Store session key with permissions and granter address + await this.sessionKeyManager.storeGrantedSessionKey( + stateData.userId, + sessionKeyInfo.sessionKeyAddress, + request.granter, // Use granter as metaAccountAddress + permissions, + ); + + return { + success: true, + sessionKeyAddress: sessionKeyInfo.sessionKeyAddress, + grantedRedirectUrl: stateData.grantedRedirectUrl, + metaAccountAddress: request.granter, + permissions, + }; + } catch (error) { + return { + success: false, + error: error instanceof Error ? error.message : String(error), + }; + } + } + + /** + * Disconnect and revoke session key + * Cleanup database entries + * @param userId User ID + * @returns DisconnectResponse + */ + async disconnect(userId: string): Promise { + // Validate input parameters + if (!userId) { + throw new e.UserIdRequiredError(); + } + + try { + // Get session key info first + const sessionKeyInfo = + await this.sessionKeyManager.getLastSessionKeyInfo(userId); + + if (sessionKeyInfo) { + await this.sessionKeyManager.revokeSessionKey( + userId, + sessionKeyInfo.sessionKeyAddress, + ); + } + + return { + success: true, + }; + } catch (error) { + return { + success: false, + error: error instanceof Error ? error.message : String(error), + }; + } + } + + /** + * Start Abstraxion backend authentication + * @param userId User ID + * @param request IncomingMessage (optional) + * @param options Options + * @returns AbstraxionAuth + */ + async startAbstraxionBackendAuth( + userId: string, + request?: IncomingMessage, + options?: { + contracts?: ContractGrantDescription[]; + bank?: SpendLimit[]; + indexerUrl?: string; + stake?: boolean; + onRedirectMethod?: (url: string) => Promise; + }, + ): Promise { + const activeSessionKey = + await this.sessionKeyManager.getLastSessionKeyInfo(userId); + if ( + !activeSessionKey || + !this.sessionKeyManager.isActive(activeSessionKey) + ) { + throw new e.SessionKeyNotFoundError("Session key not found for user"); + } + const authz = this._createRawAbstraxionAuthz(userId, request, options); + await authz.login(); + return authz; + } + + private _createRawAbstraxionAuthz( + userId: string, + request?: IncomingMessage, + options?: { + contracts?: ContractGrantDescription[]; + bank?: SpendLimit[]; + indexerUrl?: string; + stake?: boolean; + onRedirectMethod?: (url: string) => Promise; + }, + ): AbstraxionAuth { + const authz = new AbstraxionAuth( + new DatabaseStorageStrategy(userId, this.sessionKeyManager), + request + ? new DatabaseRedirectStrategy(request, options?.onRedirectMethod) + : new InMemoryDummyRedirectStrategy(), + ); + // Configure AbstraxionAuth instance + authz.configureAbstraxionInstance( + this.config.rpcUrl, + options?.contracts, + options?.stake, + options?.bank, + this.config.redirectUrl, + this.config.treasury, + options?.indexerUrl, + ); + return authz; + } + + /** + * Check connection status + * Return wallet address and permissions + * @param userId User ID + * @returns StatusResponse + */ + async checkStatus(userId: string): Promise { + // Validate input parameters + if (!userId) { + throw new e.UserIdRequiredError(); + } + + try { + const sessionKeyInfo = + await this.sessionKeyManager.getLastSessionKeyInfo(userId); + + if (!sessionKeyInfo) { + return { + connected: false, + }; + } + + // Check if session key is valid + const isValid = await this.sessionKeyManager.validateSessionKey(userId); + + if (!isValid) { + return { + connected: false, + }; + } + + return { + connected: true, + sessionKeyAddress: sessionKeyInfo.sessionKeyAddress, + metaAccountAddress: sessionKeyInfo.metaAccountAddress, + permissions: sessionKeyInfo.sessionPermissions, + expiresAt: sessionKeyInfo.sessionKeyExpiry.getTime(), + state: sessionKeyInfo.sessionState, + }; + } catch (error) { + // Log error for debugging but don't expose sensitive information + const errorMessage = + error instanceof Error ? error.message : String(error); + // Redact potentially sensitive information with more robust patterns + const sanitizedMessage = errorMessage + .replace(/sessionKey\w*/gi, "[REDACTED]") + .replace(/userId\w*/gi, "[REDACTED]") + .replace(/address\w*/gi, "[REDACTED]") + .replace(/xion1[a-z0-9]{38,}/gi, "[ADDRESS_REDACTED]") // Bech32 addresses + .replace(/0x[a-fA-F0-9]{64,}/gi, "[KEY_REDACTED]"); // Hex keys + console.error("Error checking status:", sanitizedMessage); + return { + connected: false, + }; + } + } + + /** + * Refresh session key if needed + */ + async refreshSessionKey(userId: string): Promise { + // Validate input parameters + if (!userId) { + throw new e.UserIdRequiredError(); + } + + try { + return await this.sessionKeyManager.refreshIfNeeded(userId); + } catch (error) { + if (error instanceof e.AbstraxionBackendError) { + throw error; + } + throw new e.UnknownError( + `Failed to refresh session key: ${error instanceof Error ? error.message : String(error)}`, + ); + } + } + + /** + * Build authorization URL for dashboard + * This matches the frontend SDK's configureUrlAndRedirect method + */ + private async buildAuthorizationUrl( + sessionKeyAddress: string, + state: string, + permissions?: Permissions, + ): Promise { + const { dashboardUrl } = await fetchConfig(this.config.rpcUrl); + const url = new URL(dashboardUrl); + + // Add state parameter + url.searchParams.set("state", state); + + // Add required parameters (matching frontend SDK) + url.searchParams.set("grantee", sessionKeyAddress); + url.searchParams.set("redirect_uri", this.config.redirectUrl); + + // Add treasury parameter (required by frontend SDK) + url.searchParams.set("treasury", this.config.treasury); + + // Add optional permissions (matching frontend SDK format) + if (permissions) { + if (permissions.contracts) { + url.searchParams.set( + "contracts", + JSON.stringify(permissions.contracts), + ); + } + if (permissions.bank) { + url.searchParams.set("bank", JSON.stringify(permissions.bank)); + } + if (permissions.stake) { + url.searchParams.set("stake", "true"); + } + } + + return url.toString(); + } + + /** + * Get cache statistics + */ + getCacheStats(): { + keys: number; + hits: number; + misses: number; + ksize: number; + vsize: number; + } { + return this._stateStore.getStats(); + } + + /** + * Clear all cached states + */ + clearCache(): void { + this._stateStore.flushAll(); + } + + /** + * Close the cache and cleanup resources + */ + close(): void { + this._stateStore.close(); + } +} diff --git a/apps/backend-session/src/lib/xion/backend/adapters/AbstraxionStategies.ts b/apps/backend-session/src/lib/xion/backend/adapters/AbstraxionStategies.ts new file mode 100644 index 00000000..80652ddd --- /dev/null +++ b/apps/backend-session/src/lib/xion/backend/adapters/AbstraxionStategies.ts @@ -0,0 +1,178 @@ +import { + SignArbSecp256k1HdWallet, + type RedirectStrategy, + type StorageStrategy, +} from "@burnt-labs/abstraxion-core"; +import type { IncomingMessage } from "node:http"; +import { SessionKeyManager } from "../services"; +import { + InvalidStorageKeyError, + SessionKeyExpirationError, + SessionKeyNotFoundError, +} from "../types/errors"; +import { SessionState } from "../types"; + +export class DatabaseStorageStrategy implements StorageStrategy { + constructor( + private userId: string, + private skManager: SessionKeyManager, + ) {} + + /** + * Get the item from the database + * @param key - the key to get + * @returns + */ + async getItem(key: string): Promise { + /** + * Current there are two key are in use: + * 1. xion-authz-granter-account + * 2. xion-authz-temp-account + * + * Granter account is stored in the database and temp account is stored in db by SessionKeyManager. + */ + const uid = `${this.userId}`; + if ( + key !== "xion-authz-granter-account" && + key !== "xion-authz-temp-account" + ) { + throw new InvalidStorageKeyError(`${key}@getItem`); + } + const sessionKeyInfo = await this.skManager.getLastSessionKeyInfo(uid); + if (!sessionKeyInfo) { + throw new SessionKeyNotFoundError(uid); + } + + switch (key) { + case "xion-authz-granter-account": + if (!this.skManager.isActive(sessionKeyInfo)) { + throw new SessionKeyExpirationError(uid); + } + return sessionKeyInfo.metaAccountAddress; + case "xion-authz-temp-account": + return await this.skManager.encryptionService.decryptSessionKey( + sessionKeyInfo.sessionKeyMaterial, + ); + default: + throw new InvalidStorageKeyError(`${key}@getItem`); + } + } + + async setItem(key: string, value: string): Promise { + switch (key) { + case "xion-authz-temp-account": + const keypair = await SignArbSecp256k1HdWallet.deserialize( + value, + "abstraxion", + ); + const accounts = await keypair.getAccounts(); + await this.skManager.createPendingSessionKey(this.userId, { + address: accounts[0].address, + serializedKeypair: value, + }); + break; + case "xion-authz-granter-account": + const lastSessionKeyInfo = await this.skManager.getLastSessionKeyInfo( + this.userId, + ); + if ( + lastSessionKeyInfo && + lastSessionKeyInfo.sessionState === SessionState.PENDING + ) { + await this.skManager.storeGrantedSessionKey( + this.userId, + lastSessionKeyInfo.sessionKeyAddress, + value, + ); + } else { + // Skip this step if the session key is not in PENDING state + // It can be set by other means, e.g. storeGrantedSessionKey + } + break; + default: + throw new InvalidStorageKeyError(`${key}@setItem`); + } + } + + async removeItem(key: string): Promise { + const uid = `${this.userId}`; + switch (key) { + case "xion-authz-temp-account": + case "xion-authz-granter-account": + await this.skManager.revokeActiveSessionKeys(uid); + break; + default: + throw new InvalidStorageKeyError(`${key}@removeItem`); + } + } +} + +/** + * This strategy is just for backend compatibility with AbstraxionAuth + */ +export class DatabaseRedirectStrategy implements RedirectStrategy { + constructor( + private request: IncomingMessage, + private onRedirectMethod?: (url: string) => Promise, + ) {} + + async getCurrentUrl(): Promise { + const protocol = this.request.headers["x-forwarded-proto"] || "http"; + const host = this.request.headers.host || "localhost"; + return `${protocol}://${host}${this.request.url}`; + } + + async redirect(url: string): Promise { + await this.onRedirectMethod?.(url); + } + + async getUrlParameter(param: string): Promise { + if (!this.request.url) return null; + + const url = this.getUrl(); + return url.searchParams.get(param); + } + + async cleanUrlParameters(_paramsToRemove: string[]): Promise { + // DO NOTHING + return Promise.resolve(); + } + + private getUrl(): URL { + const protocol = this.request.headers["x-forwarded-proto"] || "http"; + return new URL( + this.request.url || "/", + `${protocol}://${this.request.headers.host}`, + ); + } +} + +export class InMemoryDummyRedirectStrategy implements RedirectStrategy { + async getCurrentUrl(): Promise { + return "/"; + } + + async redirect(url: string): Promise { + throw new Error( + "InMemoryDummyRedirectStrategy.redirect is not implemented", + ); + } + + async getUrlParameter(param: string): Promise { + return null; + } + + async cleanUrlParameters(paramsToRemove: string[]): Promise { + return; + } + + async onRedirectComplete( + _callback: (params: { granter?: string | null }) => void, + ): Promise { + return; + } + + async removeRedirectHandler(): Promise { + return; + } +} diff --git a/apps/backend-session/src/lib/xion/backend/adapters/DatabaseAdapter.ts b/apps/backend-session/src/lib/xion/backend/adapters/DatabaseAdapter.ts new file mode 100644 index 00000000..f780a180 --- /dev/null +++ b/apps/backend-session/src/lib/xion/backend/adapters/DatabaseAdapter.ts @@ -0,0 +1,106 @@ +import { + DatabaseAdapter, + SessionKeyInfo, + AuditEvent, + Permissions, + SessionState, +} from "../types"; + +/** + * Abstract base class for database adapters + * Provides common functionality and ensures consistent interface + * + * Each project should implement their own concrete database adapter + * by extending this base class and implementing all abstract methods. + */ +export abstract class BaseDatabaseAdapter implements DatabaseAdapter { + /** + * Get session key information by user ID + */ + public abstract getLastSessionKey( + userId: string, + ): Promise; + + /** + * Get the session key for a user by sessionKeyAddress + */ + public abstract getSessionKey( + userId: string, + sessionKeyAddress: string, + ): Promise; + + /** + * Get the active session key for a user + */ + public abstract getActiveSessionKeys( + userId: string, + ): Promise; + + /** + * Revoke a specific session key by userId and sessionKeyAddress + */ + public abstract revokeSessionKey( + userId: string, + sessionKeyAddress: string, + ): Promise; + + /** + * Revoke all active session keys for a user + */ + public abstract revokeActiveSessionKeys(userId: string): Promise; + + /** + * Add new pending session key + */ + public abstract addNewSessionKey( + userId: string, + updates: Pick< + SessionKeyInfo, + "sessionKeyAddress" | "sessionKeyMaterial" | "sessionKeyExpiry" + >, + activeState?: Pick< + SessionKeyInfo, + "metaAccountAddress" | "sessionPermissions" + >, + ): Promise; + + /** + * Update session key with specific parameters (userId + sessionKeyAddress are required) + */ + public abstract updateSessionKeyWithParams( + userId: string, + sessionKeyAddress: string, + updates: Partial< + Pick< + SessionKeyInfo, + | "sessionState" + | "sessionPermissions" + | "metaAccountAddress" + | "sessionKeyExpiry" + > + >, + ): Promise; + + /** + * Log audit event + */ + public abstract logAuditEvent(event: AuditEvent): Promise; + + /** + * Get audit logs for a user + */ + public abstract getAuditLogs( + userId: string, + limit?: number, + ): Promise; + + /** + * Health check for database connection + */ + public abstract healthCheck(): Promise; + + /** + * Close database connection + */ + public abstract close(): Promise; +} diff --git a/apps/backend-session/src/lib/xion/backend/adapters/TestDatabaseAdapter.ts b/apps/backend-session/src/lib/xion/backend/adapters/TestDatabaseAdapter.ts new file mode 100644 index 00000000..90d5d93c --- /dev/null +++ b/apps/backend-session/src/lib/xion/backend/adapters/TestDatabaseAdapter.ts @@ -0,0 +1,144 @@ +import { BaseDatabaseAdapter } from "./DatabaseAdapter"; +import { SessionKeyInfo, AuditEvent, SessionState } from "../types"; + +/** + * Test database adapter for unit testing + * NOT suitable for production use + */ +export class TestDatabaseAdapter extends BaseDatabaseAdapter { + private sessionKeys: Map = new Map(); + private auditLogs: AuditEvent[] = []; + + async getLastSessionKey(userId: string): Promise { + const userKeys = this.sessionKeys.get(userId) || []; + return userKeys.length > 0 ? userKeys[userKeys.length - 1] : null; + } + + async getSessionKey( + userId: string, + sessionKeyAddress: string, + ): Promise { + const userKeys = this.sessionKeys.get(userId) || []; + return ( + userKeys.find((key) => key.sessionKeyAddress === sessionKeyAddress) || + null + ); + } + + async getActiveSessionKeys(userId: string): Promise { + const userKeys = this.sessionKeys.get(userId) || []; + return userKeys.filter((key) => key.sessionState === SessionState.ACTIVE); + } + + async storeSessionKey(sessionKeyInfo: SessionKeyInfo): Promise { + const userKeys = this.sessionKeys.get(sessionKeyInfo.userId) || []; + userKeys.push(sessionKeyInfo); + this.sessionKeys.set(sessionKeyInfo.userId, userKeys); + } + + async addNewSessionKey( + userId: string, + updates: Pick< + SessionKeyInfo, + "sessionKeyAddress" | "sessionKeyMaterial" | "sessionKeyExpiry" + >, + activeState?: Pick< + SessionKeyInfo, + "metaAccountAddress" | "sessionPermissions" + >, + ): Promise { + const userKeys = this.sessionKeys.get(userId) || []; + const newKey: SessionKeyInfo = { + userId, + sessionKeyAddress: updates.sessionKeyAddress, + sessionKeyMaterial: updates.sessionKeyMaterial, + sessionKeyExpiry: updates.sessionKeyExpiry, + sessionPermissions: {}, + sessionState: SessionState.PENDING, + metaAccountAddress: "", + createdAt: new Date(), + updatedAt: new Date(), + }; + if (activeState) { + newKey.sessionState = SessionState.ACTIVE; + newKey.metaAccountAddress = activeState.metaAccountAddress; + newKey.sessionPermissions = activeState.sessionPermissions; + } + userKeys.push(newKey); + this.sessionKeys.set(userId, userKeys); + } + + async updateSessionKeyWithParams( + userId: string, + sessionKeyAddress: string, + updates: Partial< + Pick< + SessionKeyInfo, + | "sessionState" + | "sessionPermissions" + | "metaAccountAddress" + | "sessionKeyExpiry" + > + >, + ): Promise { + const userKeys = this.sessionKeys.get(userId) || []; + const keyIndex = userKeys.findIndex( + (key) => key.sessionKeyAddress === sessionKeyAddress, + ); + if (keyIndex !== -1) { + userKeys[keyIndex] = { + ...userKeys[keyIndex], + ...updates, + updatedAt: new Date(), + }; + this.sessionKeys.set(userId, userKeys); + } + } + + async revokeSessionKey( + userId: string, + sessionKeyAddress: string, + ): Promise { + const userKeys = this.sessionKeys.get(userId) || []; + const keyIndex = userKeys.findIndex( + (key) => key.sessionKeyAddress === sessionKeyAddress, + ); + if (keyIndex !== -1) { + userKeys[keyIndex].sessionState = SessionState.REVOKED; + this.sessionKeys.set(userId, userKeys); + return true; + } + return false; + } + + async revokeActiveSessionKeys(userId: string): Promise { + const userKeys = this.sessionKeys.get(userId) || []; + userKeys.forEach((key) => { + if (key.sessionState === SessionState.ACTIVE) { + key.sessionState = SessionState.REVOKED; + } + }); + this.sessionKeys.set(userId, userKeys); + } + + async logAuditEvent(event: AuditEvent): Promise { + this.auditLogs.push(event); + } + + async getAuditLogs(userId: string, limit?: number): Promise { + const userLogs = this.auditLogs + .filter((log) => log.userId === userId) + .sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime()); + + return limit ? userLogs.slice(0, limit) : userLogs; + } + + async healthCheck(): Promise { + return true; + } + + async close(): Promise { + this.sessionKeys.clear(); + this.auditLogs = []; + } +} diff --git a/apps/backend-session/src/lib/xion/backend/index.ts b/apps/backend-session/src/lib/xion/backend/index.ts new file mode 100644 index 00000000..5da4fc0c --- /dev/null +++ b/apps/backend-session/src/lib/xion/backend/index.ts @@ -0,0 +1,13 @@ +// Database adapters +export { BaseDatabaseAdapter } from "./adapters/DatabaseAdapter"; + +// Main exports +export { SessionKeyManager } from "./services/SessionKeyManager"; +export { EncryptionService } from "./services/EncryptionService"; +export { AbstraxionBackend } from "./AbstraxionBackend"; + +// Types and interfaces +export * from "./types"; + +// Utility functions +export { createAbstraxionBackend } from "./utils/factory"; diff --git a/apps/backend-session/src/lib/xion/backend/services/EncryptionService.ts b/apps/backend-session/src/lib/xion/backend/services/EncryptionService.ts new file mode 100644 index 00000000..38144e3e --- /dev/null +++ b/apps/backend-session/src/lib/xion/backend/services/EncryptionService.ts @@ -0,0 +1,142 @@ +import { + createCipheriv, + createDecipheriv, + randomBytes, + scrypt, +} from "node:crypto"; +import { promisify } from "node:util"; +import { EncryptionError } from "../types"; + +const scryptAsync = promisify(scrypt); + +export class EncryptionService { + private readonly algorithm = "aes-256-gcm"; + private readonly keyLength = 32; // 256 bits + private readonly ivLength = 16; // 128 bits + private readonly tagLength = 16; // 128 bits + private readonly saltLength = 32; // 256 bits + + constructor(private readonly masterKey: string) { + if (!masterKey) { + throw new EncryptionError("Master encryption key is required"); + } + } + + /** + * Encrypt session key material using AES-256-GCM + */ + async encryptSessionKey(sessionKey: string): Promise { + try { + // Generate random salt and IV + const salt = randomBytes(this.saltLength); + const iv = randomBytes(this.ivLength); + + // Derive key from master key and salt + const key = await this.deriveKey(this.masterKey, salt); + + // Create cipher + const cipher = createCipheriv(this.algorithm, key, iv); + cipher.setAAD(salt); // Use salt as additional authenticated data + + // Encrypt the session key + let encrypted = cipher.update(sessionKey, "utf8", "hex"); + encrypted += cipher.final("hex"); + + // Get authentication tag + const tag = cipher.getAuthTag(); + + // Combine salt + iv + tag + encrypted data + const combined = Buffer.concat([ + salt, + iv, + tag, + Buffer.from(encrypted, "hex"), + ]); + + return combined.toString("base64"); + } catch (error) { + throw new EncryptionError( + `Failed to encrypt session key: ${error instanceof Error ? error.message : "Unknown error"}`, + ); + } + } + + /** + * Decrypt session key material using AES-256-GCM + */ + async decryptSessionKey(encryptedData: string): Promise { + try { + // Decode base64 + const combined = Buffer.from(encryptedData, "base64"); + + // Extract components + const salt = combined.subarray(0, this.saltLength); + const iv = combined.subarray( + this.saltLength, + this.saltLength + this.ivLength, + ); + const tag = combined.subarray( + this.saltLength + this.ivLength, + this.saltLength + this.ivLength + this.tagLength, + ); + const encrypted = combined.subarray( + this.saltLength + this.ivLength + this.tagLength, + ); + + // Derive key from master key and salt + const key = await this.deriveKey(this.masterKey, salt); + + // Create decipher + const decipher = createDecipheriv(this.algorithm, key, iv); + decipher.setAAD(salt); // Use salt as additional authenticated data + decipher.setAuthTag(tag); + + // Decrypt the session key + let decrypted = decipher.update(encrypted, undefined, "utf8"); + decrypted += decipher.final("utf8"); + + return decrypted; + } catch (error) { + throw new EncryptionError( + `Failed to decrypt session key: ${error instanceof Error ? error.message : "Unknown error"}`, + ); + } + } + + /** + * Generate a new encryption key + */ + static generateEncryptionKey(): string { + return randomBytes(32).toString("base64"); + } + + /** + * Derive encryption key from master key and salt using scrypt + */ + private async deriveKey(masterKey: string, salt: Buffer): Promise { + try { + const key = (await scryptAsync( + masterKey, + salt, + this.keyLength, + )) as Buffer; + return key; + } catch (error) { + throw new EncryptionError( + `Failed to derive key: ${error instanceof Error ? error.message : "Unknown error"}`, + ); + } + } + + /** + * Validate encryption key format + */ + static validateEncryptionKey(key: string): boolean { + try { + const decoded = Buffer.from(key, "base64"); + return decoded.length === 32; // 256 bits + } catch { + return false; + } + } +} diff --git a/apps/backend-session/src/lib/xion/backend/services/SessionKeyManager.ts b/apps/backend-session/src/lib/xion/backend/services/SessionKeyManager.ts new file mode 100644 index 00000000..dca1757c --- /dev/null +++ b/apps/backend-session/src/lib/xion/backend/services/SessionKeyManager.ts @@ -0,0 +1,519 @@ +import { randomBytes } from "node:crypto"; +import { SignArbSecp256k1HdWallet } from "@burnt-labs/abstraxion-core"; +import { + SessionKeyInfo, + XionKeypair, + Permissions, + SessionState, + DatabaseAdapter, + AuditAction, + AuditEvent, + AbstraxionBackendError, + UserIdRequiredError, + SessionKeyGenerationError, + SessionKeyStorageError, + SessionKeyRetrievalError, + SessionKeyRevocationError, + SessionKeyRefreshError, + SessionKeyNotFoundError, + SessionKeyInvalidError, +} from "../types"; +import { EncryptionService } from "./EncryptionService"; + +export class SessionKeyManager { + public readonly encryptionService: EncryptionService; + private readonly sessionKeyExpiryMs: number; + private readonly refreshThresholdMs: number; + + constructor( + private readonly databaseAdapter: DatabaseAdapter, + private readonly config: { + encryptionKey: string; + sessionKeyExpiryMs?: number; + refreshThresholdMs?: number; + enableAuditLogging?: boolean; + }, + ) { + this.encryptionService = new EncryptionService(config.encryptionKey); + this.sessionKeyExpiryMs = config.sessionKeyExpiryMs || 24 * 60 * 60 * 1000; // 24 hours + this.refreshThresholdMs = config.refreshThresholdMs || 60 * 60 * 1000; // 1 hour + } + + /** + * Get session key info without decrypting + */ + async getLastSessionKeyInfo(userId: string): Promise { + // Validate input parameters + if (!userId) { + throw new UserIdRequiredError(); + } + + try { + const sessionKeyInfo = + await this.databaseAdapter.getLastSessionKey(userId); + + if (!sessionKeyInfo) { + return null; + } + + // Check if expired + if (this.isExpired(sessionKeyInfo)) { + await this.markAsExpired(sessionKeyInfo); + return null; + } + + return sessionKeyInfo; + } catch (error) { + return null; + } + } + + /** + * Retrieve and decrypt active session key + */ + async getSessionKeypair( + user: string | SessionKeyInfo, + ): Promise { + try { + const sessionKeyInfo = + typeof user === "string" + ? await this.getLastSessionKeyInfo(user) + : user; + if (!sessionKeyInfo) { + throw new SessionKeyNotFoundError("Session key not found for user"); + } + + // Decrypt the private key + const decryptedPrivateKey = + await this.encryptionService.decryptSessionKey( + sessionKeyInfo.sessionKeyMaterial, + ); + + // Log audit event + await this.logAuditEvent( + sessionKeyInfo.userId, + AuditAction.SESSION_KEY_ACCESSED, + { + sessionKeyAddress: sessionKeyInfo.sessionKeyAddress, + }, + ); + + return SignArbSecp256k1HdWallet.deserialize( + decryptedPrivateKey, + "abstraxion", + ); + } catch (error) { + if (error instanceof AbstraxionBackendError) { + throw error; + } + throw new SessionKeyRetrievalError( + error instanceof Error ? error.message : String(error), + ); + } + } + + /** + * Check expiry and validity + */ + async validateSessionKey(user: string | SessionKeyInfo): Promise { + // Validate input parameters + if (!user) { + throw new UserIdRequiredError(); + } + + try { + const sessionKeyInfo = + typeof user === "string" + ? await this.getLastSessionKeyInfo(user) + : user; + + if (!sessionKeyInfo) { + return false; + } + + // Check if expired + if (this.isExpired(sessionKeyInfo)) { + await this.markAsExpired(sessionKeyInfo); + return false; + } + + // Check if active + return sessionKeyInfo.sessionState === SessionState.ACTIVE; + } catch (error) { + return false; + } + } + + /** + * Revoke/delete specific session key + */ + async revokeSessionKey( + userId: string, + sessionKeyAddress: string, + ): Promise { + // Validate input parameters + if (!userId) { + throw new UserIdRequiredError(); + } + if (!sessionKeyAddress) { + throw new Error("Session key address is required"); + } + + try { + // Revoke the session key in database + const result = await this.databaseAdapter.revokeSessionKey( + userId, + sessionKeyAddress, + ); + if (!result) { + throw new SessionKeyRevocationError("Failed to revoke session key"); + } else { + // Log audit event + await this.logAuditEvent(userId, AuditAction.SESSION_KEY_REVOKED, { + sessionKeyAddress: sessionKeyAddress, + }); + } + } catch (error) { + if (error instanceof AbstraxionBackendError) { + throw error; + } + throw new SessionKeyRevocationError( + error instanceof Error ? error.message : String(error), + ); + } + } + + /** + * Revoke all active session keys for a user + */ + async revokeActiveSessionKeys(userId: string): Promise { + // Validate input parameters + if (!userId) { + throw new UserIdRequiredError(); + } + + try { + // Get active session keys before revoking + const activeSessionKeys = + await this.databaseAdapter.getActiveSessionKeys(userId); + + if (activeSessionKeys && activeSessionKeys.length > 0) { + for (const key of activeSessionKeys) { + // Log audit event + await this.logAuditEvent(userId, AuditAction.SESSION_KEY_REVOKED, { + sessionKeyAddress: key.sessionKeyAddress, + reason: "All active session keys revoked", + }); + } + + // Delete all active session keys from database + await this.databaseAdapter.revokeActiveSessionKeys(userId); + } + } catch (error) { + if (error instanceof AbstraxionBackendError) { + throw error; + } + throw new SessionKeyRevocationError( + error instanceof Error ? error.message : String(error), + ); + } + } + + /** + * Refresh if near expiry + */ + async refreshIfNeeded(userId: string): Promise { + // Validate input parameters + if (!userId) { + throw new UserIdRequiredError(); + } + + try { + const sessionKeyInfo = + await this.databaseAdapter.getLastSessionKey(userId); + + if (!sessionKeyInfo) { + return null; + } + + // Check if refresh already in progress to prevent race conditions + if (sessionKeyInfo.sessionState === SessionState.PENDING) { + // Return existing pending key instead of creating a new one + return { + address: sessionKeyInfo.sessionKeyAddress, + serializedKeypair: await this.encryptionService.decryptSessionKey( + sessionKeyInfo.sessionKeyMaterial, + ), + }; + } + + // Check if near expiry + const timeUntilExpiry = + sessionKeyInfo.sessionKeyExpiry.getTime() - Date.now(); + + if (timeUntilExpiry <= this.refreshThresholdMs) { + // Generate new session key + const newSessionKey = await this.generateSessionKeypair(); + await this.createPendingSessionKey(userId, newSessionKey); + return newSessionKey; + } + + // Return existing session key + return { + address: sessionKeyInfo.sessionKeyAddress, + serializedKeypair: await this.encryptionService.decryptSessionKey( + sessionKeyInfo.sessionKeyMaterial, + ), + }; + } catch (error) { + if (error instanceof AbstraxionBackendError) { + throw error; + } + throw new SessionKeyRefreshError( + error instanceof Error ? error.message : String(error), + ); + } + } + + /** + * Generate a new session key + */ + async generateSessionKeypair(): Promise { + try { + const keypair = await SignArbSecp256k1HdWallet.generate(12, { + prefix: "xion", + }); + const serializedKeypair = await keypair.serialize("abstraxion"); + + // Get account info + const accounts = await keypair.getAccounts(); + const account = accounts[0]; + + return { + address: account.address, + serializedKeypair, + }; + } catch (error) { + if (error instanceof AbstraxionBackendError) { + throw error; + } + throw new SessionKeyGenerationError( + error instanceof Error ? error.message : String(error), + ); + } + } + + /** + * Create a new pending session key + */ + async createPendingSessionKey( + userId: string, + sessionKey: XionKeypair, + ): Promise { + // Validate input parameters + if (!userId) { + throw new UserIdRequiredError(); + } + + try { + // Encrypt the private key + const encryptedPrivateKey = + await this.encryptionService.encryptSessionKey( + sessionKey.serializedKeypair, + ); + + // Calculate expiry time + const now = Date.now(); + const expiryTime = new Date(now + this.sessionKeyExpiryMs); + + // Create pending session key + await this.databaseAdapter.addNewSessionKey(userId, { + sessionKeyAddress: sessionKey.address, + sessionKeyMaterial: encryptedPrivateKey, + sessionKeyExpiry: expiryTime, + }); + + // Log audit event + await this.logAuditEvent(userId, AuditAction.SESSION_KEY_CREATED, { + sessionKeyAddress: sessionKey.address, + state: SessionState.PENDING, + expiryTime, + }); + } catch (error) { + if (error instanceof AbstraxionBackendError) { + throw error; + } + throw new SessionKeyStorageError( + error instanceof Error ? error.message : String(error), + ); + } + } + + /** + * Store encrypted session key with permissions + */ + async storeGrantedSessionKey( + userId: string, + sessionAddress: string, + granterAddress: string, + permissions?: Permissions, + ): Promise { + // Validate input parameters + if (!userId) { + throw new UserIdRequiredError(); + } + + try { + // Use atomic update if adapter supports it (PrismaDatabaseAdapter) + // This prevents race conditions by ensuring check-and-update happens atomically + const adapter = this.databaseAdapter as any; + if (typeof adapter.updateSessionKeyWithParamsAtomic === "function") { + // Atomic update with state verification + await adapter.updateSessionKeyWithParamsAtomic( + userId, + sessionAddress, + SessionState.PENDING, + { + sessionState: SessionState.ACTIVE, + metaAccountAddress: granterAddress, + sessionPermissions: permissions, + }, + ); + + // Log audit event + await this.logAuditEvent(userId, AuditAction.SESSION_KEY_UPDATED, { + sessionKeyAddress: sessionAddress, + metaAccountAddress: granterAddress, + permissions, + previousState: SessionState.PENDING, + }); + } else { + // Fallback to non-atomic update for other adapters + const existingSessionKey = await this.databaseAdapter.getSessionKey( + userId, + sessionAddress, + ); + + if (!existingSessionKey) { + throw new SessionKeyNotFoundError( + `Session key not found for user: ${userId}, session address: ${sessionAddress}`, + ); + } + + if (existingSessionKey.sessionState === SessionState.PENDING) { + // Update existing PENDING session key + await this.databaseAdapter.updateSessionKeyWithParams( + userId, + sessionAddress, + { + sessionState: SessionState.ACTIVE, + metaAccountAddress: granterAddress, + sessionPermissions: permissions, + }, + ); + + // Log audit event + await this.logAuditEvent(userId, AuditAction.SESSION_KEY_UPDATED, { + sessionKeyAddress: sessionAddress, + metaAccountAddress: granterAddress, + permissions, + previousState: SessionState.PENDING, + }); + } else { + throw new SessionKeyInvalidError( + `Session key invalid for user: ${userId}, it should be pending instead of ${existingSessionKey.sessionState}`, + ); + } + } + } catch (error) { + if (error instanceof AbstraxionBackendError) { + throw error; + } + throw new SessionKeyStorageError( + error instanceof Error ? error.message : String(error), + ); + } + } + + /** + * Check if session key is expired + */ + public isExpired(sessionKeyInfo: SessionKeyInfo): boolean { + return ( + (sessionKeyInfo.sessionState === SessionState.ACTIVE && + Date.now() > sessionKeyInfo.sessionKeyExpiry.getTime()) || + sessionKeyInfo.sessionState === SessionState.EXPIRED + ); + } + + /** + * Check if session key is active + */ + public isActive(sessionKeyInfo: SessionKeyInfo): boolean { + return ( + sessionKeyInfo.sessionState === SessionState.ACTIVE && + Date.now() <= sessionKeyInfo.sessionKeyExpiry.getTime() + ); + } + + /** + * Mark session key as expired + */ + private async markAsExpired(sessionKeyInfo: SessionKeyInfo): Promise { + try { + await this.databaseAdapter.updateSessionKeyWithParams( + sessionKeyInfo.userId, + sessionKeyInfo.sessionKeyAddress, + { + sessionState: SessionState.EXPIRED, + }, + ); + + // Log audit event + await this.logAuditEvent( + sessionKeyInfo.userId, + AuditAction.SESSION_KEY_EXPIRED, + { + sessionKeyAddress: sessionKeyInfo.sessionKeyAddress, + }, + ); + } catch (error) { + // Log error but don't throw to avoid breaking the main flow + console.error( + "Failed to mark session key as expired:", + error instanceof Error ? error.message : String(error), + ); + } + } + + /** + * Log audit event + */ + private async logAuditEvent( + userId: string, + action: AuditAction, + details: Record, + ): Promise { + if (!this.config.enableAuditLogging) { + return; + } + + try { + const auditEvent: AuditEvent = { + id: randomBytes(16).toString("hex"), + userId, + action, + timestamp: new Date(), + details, + }; + + await this.databaseAdapter.logAuditEvent(auditEvent); + } catch (error) { + // Log error but don't throw to avoid breaking the main flow + console.error( + "Failed to log audit event:", + error instanceof Error ? error.message : String(error), + ); + } + } +} diff --git a/apps/backend-session/src/lib/xion/backend/services/index.ts b/apps/backend-session/src/lib/xion/backend/services/index.ts new file mode 100644 index 00000000..ece67483 --- /dev/null +++ b/apps/backend-session/src/lib/xion/backend/services/index.ts @@ -0,0 +1,2 @@ +export { EncryptionService } from "./EncryptionService"; +export { SessionKeyManager } from "./SessionKeyManager"; diff --git a/apps/backend-session/src/lib/xion/backend/types/errors.ts b/apps/backend-session/src/lib/xion/backend/types/errors.ts new file mode 100644 index 00000000..a6554633 --- /dev/null +++ b/apps/backend-session/src/lib/xion/backend/types/errors.ts @@ -0,0 +1,191 @@ +export class UnknownError extends Error { + constructor(message: string) { + super(message); + this.name = "UnknownError"; + } +} + +export class AbstraxionBackendError extends Error { + constructor( + message: string, + public code: string, + public statusCode: number = 500, + ) { + super(message); + this.name = "AbstraxionBackendError"; + } +} + +export class UserIdRequiredError extends AbstraxionBackendError { + constructor() { + super("User ID is required", "USER_ID_REQUIRED", 400); + } +} + +export class SessionKeyNotFoundError extends AbstraxionBackendError { + constructor(userId: string) { + super( + `Session key not found for user: ${userId}`, + "SESSION_KEY_NOT_FOUND", + 404, + ); + } +} + +export class SessionKeyInvalidError extends AbstraxionBackendError { + constructor(userId: string) { + super( + `Session key invalid for user: ${userId}`, + "SESSION_KEY_INVALID", + 401, + ); + } +} + +export class InvalidStateError extends AbstraxionBackendError { + constructor(state: string) { + super(`Invalid state parameter: ${state}`, "INVALID_STATE", 400); + } +} + +export class EncryptionError extends AbstraxionBackendError { + constructor(message: string) { + super(`Encryption error: ${message}`, "ENCRYPTION_ERROR", 500); + } +} + +export class ConfigurationError extends AbstraxionBackendError { + constructor(message: string, code: string) { + super(`Configuration error: ${message}`, code, 400); + } +} + +export class EncryptionKeyRequiredError extends ConfigurationError { + constructor() { + super("Encryption key is required", "ENCRYPTION_KEY_REQUIRED"); + } +} + +export class DatabaseAdapterRequiredError extends ConfigurationError { + constructor() { + super("Database adapter is required", "DATABASE_ADAPTER_REQUIRED"); + } +} + +export class RedirectUrlRequiredError extends ConfigurationError { + constructor() { + super("Redirect URL is required", "REDIRECT_URL_REQUIRED"); + } +} + +export class RpcUrlRequiredError extends ConfigurationError { + constructor() { + super("RPC URL is required", "RPC_URL_REQUIRED"); + } +} + +export class TreasuryRequiredError extends ConfigurationError { + constructor() { + super("Treasury is required", "TREASURY_REQUIRED"); + } +} + +export class StateRequiredError extends AbstraxionBackendError { + constructor() { + super("State parameter is required", "STATE_REQUIRED", 400); + } +} + +export class SessionKeyGenerationError extends AbstraxionBackendError { + constructor(message: string) { + super( + `Failed to generate session key: ${message}`, + "SESSION_KEY_GENERATION_ERROR", + 500, + ); + } +} + +export class MnemonicGenerationError extends AbstraxionBackendError { + constructor(message: string) { + super( + `Failed to generate mnemonic: ${message}`, + "MNEMONIC_GENERATION_ERROR", + 500, + ); + } +} + +export class SessionKeyStorageError extends AbstraxionBackendError { + constructor(message: string) { + super( + `Failed to store session key: ${message}`, + "SESSION_KEY_STORAGE_ERROR", + 500, + ); + } +} + +export class SessionKeyRetrievalError extends AbstraxionBackendError { + constructor(message: string) { + super( + `Failed to get session key: ${message}`, + "SESSION_KEY_RETRIEVAL_ERROR", + 500, + ); + } +} + +export class SessionKeyRevocationError extends AbstraxionBackendError { + constructor(message: string) { + super( + `Failed to revoke session key: ${message}`, + "SESSION_KEY_REVOCATION_ERROR", + 500, + ); + } +} + +export class SessionKeyRefreshError extends AbstraxionBackendError { + constructor(message: string) { + super( + `Failed to refresh session key: ${message}`, + "SESSION_KEY_REFRESH_ERROR", + 500, + ); + } +} + +export class SessionKeyExpirationError extends AbstraxionBackendError { + constructor(message: string) { + super( + `Failed to mark session key as expired: ${message}`, + "SESSION_KEY_EXPIRATION_ERROR", + 500, + ); + } +} + +export class GrantedFailedError extends AbstraxionBackendError { + constructor() { + super("Authorization was not granted by user", "GRANTED_FAILED", 400); + } +} + +export class GranterRequiredError extends AbstraxionBackendError { + constructor() { + super("Granter address is required", "GRANTER_REQUIRED", 400); + } +} + +export class InvalidStorageKeyError extends AbstraxionBackendError { + constructor(key: string) { + super(`Invalid storage key: ${key}`, "INVALID_STORAGE_KEY", 400); + } +} + +export class InvalidMethodError extends AbstraxionBackendError { + constructor(method: string) { + super(`Invalid method: ${method}`, "INVALID_METHOD", 400); + } +} diff --git a/apps/backend-session/src/lib/xion/backend/types/index.ts b/apps/backend-session/src/lib/xion/backend/types/index.ts new file mode 100644 index 00000000..4d30d37d --- /dev/null +++ b/apps/backend-session/src/lib/xion/backend/types/index.ts @@ -0,0 +1,153 @@ +export * from "./errors"; + +export enum SessionState { + PENDING = "PENDING", + ACTIVE = "ACTIVE", + EXPIRED = "EXPIRED", + REVOKED = "REVOKED", +} + +export interface SessionKeyInfo { + userId: string; // user id + sessionKeyAddress: string; // address of this session key + sessionKeyMaterial: string; // encrypted private key for the session key + sessionKeyExpiry: Date; // timestamp of when the session key expires + sessionPermissions: Permissions; // permission flags for the session + sessionState: SessionState; // state of the session + metaAccountAddress: string; // address of the meta account + createdAt?: Date; // timestamp of when the session key was created + updatedAt?: Date; // timestamp of when the session key was last updated +} + +export interface XionKeypair { + address: string; + serializedKeypair: string; // encoded serialized keypair + mnemonic?: string; // optional mnemonic for key derivation +} + +export interface Permissions { + contracts?: Array< + | string + | { address: string; amounts: Array<{ denom: string; amount: string }> } + >; // contract grants + bank?: Array<{ denom: string; amount: string }>; // spending limits + stake?: boolean; // staking permissions + treasury?: string; // treasury contract address + expiry?: number; // permission expiry timestamp +} + +export interface ConnectionInitResponse { + sessionKeyAddress: string; + authorizationUrl: string; + state: string; // OAuth state parameter for security +} + +export interface CallbackRequest { + state: string; + granted: boolean; + granter: string; +} + +export interface CallbackResponse { + success: boolean; + error?: string; + sessionKeyAddress?: string; + metaAccountAddress?: string; + permissions?: Permissions; + grantedRedirectUrl?: string; +} + +export interface StatusResponse { + connected: boolean; + sessionKeyAddress?: string; + metaAccountAddress?: string; + permissions?: Permissions; + expiresAt?: number; + state?: SessionState; +} + +export interface DisconnectResponse { + success: boolean; + error?: string; +} + +// Database adapter interfaces +export interface DatabaseAdapter { + // Get the last session key for a user + getLastSessionKey(userId: string): Promise; + // Get the session key for a user by sessionKeyAddress + getSessionKey( + userId: string, + sessionKeyAddress: string, + ): Promise; + // Get the active session keys for a user + getActiveSessionKeys(userId: string): Promise; + // Revoke a specific session key by userId and sessionKeyAddress + revokeSessionKey(userId: string, sessionKeyAddress: string): Promise; + // Revoke all active session keys for a user + revokeActiveSessionKeys(userId: string): Promise; + + // Add a new pending session key + addNewSessionKey( + userId: string, + updates: Pick< + SessionKeyInfo, + "sessionKeyAddress" | "sessionKeyMaterial" | "sessionKeyExpiry" + >, + activeState?: Pick< + SessionKeyInfo, + "metaAccountAddress" | "sessionPermissions" + >, + ): Promise; + + // Update a session key with specific parameters (userId + sessionKeyAddress are required) + updateSessionKeyWithParams( + userId: string, + sessionKeyAddress: string, + updates: Partial< + Pick< + SessionKeyInfo, + "sessionState" | "sessionPermissions" | "metaAccountAddress" + > + >, + ): Promise; + + // Audit logging + logAuditEvent(event: AuditEvent): Promise; + getAuditLogs(userId: string, limit?: number): Promise; +} + +export interface AuditEvent { + id: string; + userId: string; + action: AuditAction; + timestamp: Date; + details: Record; + ipAddress?: string; + userAgent?: string; +} + +export enum AuditAction { + SESSION_KEY_CREATED = "SESSION_KEY_CREATED", + SESSION_KEY_UPDATED = "SESSION_KEY_UPDATED", + SESSION_KEY_ACCESSED = "SESSION_KEY_ACCESSED", + SESSION_KEY_REVOKED = "SESSION_KEY_REVOKED", + SESSION_KEY_EXPIRED = "SESSION_KEY_EXPIRED", + PERMISSIONS_GRANTED = "PERMISSIONS_GRANTED", + PERMISSIONS_REVOKED = "PERMISSIONS_REVOKED", + CONNECTION_INITIATED = "CONNECTION_INITIATED", + CONNECTION_COMPLETED = "CONNECTION_COMPLETED", + CONNECTION_DISCONNECTED = "CONNECTION_DISCONNECTED", +} + +// Configuration interfaces +export interface AbstraxionBackendConfig { + rpcUrl: string; + redirectUrl: string; // URL to redirect to after connection + treasury: string; // treasury contract address + encryptionKey: string; // Base64 encoded AES-256 key + databaseAdapter: DatabaseAdapter; + sessionKeyExpiryMs?: number; // Default: 24 hours + refreshThresholdMs?: number; // Default: 1 hour before expiry + enableAuditLogging?: boolean; // Default: true +} diff --git a/apps/backend-session/src/lib/xion/backend/utils/factory.ts b/apps/backend-session/src/lib/xion/backend/utils/factory.ts new file mode 100644 index 00000000..14ee9471 --- /dev/null +++ b/apps/backend-session/src/lib/xion/backend/utils/factory.ts @@ -0,0 +1,62 @@ +import { AbstraxionBackend } from "../AbstraxionBackend"; +import { AbstraxionBackendConfig, DatabaseAdapter } from "../types"; +import { EncryptionService } from "../services/EncryptionService"; + +/** + * Factory function to create AbstraxionBackend instance with validation + */ +export function createAbstraxionBackend( + config: AbstraxionBackendConfig, +): AbstraxionBackend { + // Validate encryption key + if (!EncryptionService.validateEncryptionKey(config.encryptionKey)) { + throw new Error( + "Invalid encryption key format. Must be a base64-encoded 32-byte key.", + ); + } + + if (!config.rpcUrl) { + throw new Error("RPC URL is required"); + } + + if (!config.redirectUrl) { + throw new Error("Redirect URL is required"); + } + + if (!config.treasury) { + throw new Error("Treasury is required"); + } + + if (!config.encryptionKey) { + throw new Error("Encryption key is required"); + } + + if (!config.databaseAdapter) { + throw new Error("Database adapter is required"); + } + + // Validate URLs + try { + new URL(config.rpcUrl); + } catch { + throw new Error("Invalid RPC URL format"); + } + + // Validate optional configuration + if (config.sessionKeyExpiryMs && config.sessionKeyExpiryMs <= 0) { + throw new Error("Session key expiry must be positive"); + } + + if (config.refreshThresholdMs && config.refreshThresholdMs <= 0) { + throw new Error("Refresh threshold must be positive"); + } + + if ( + config.refreshThresholdMs && + config.sessionKeyExpiryMs && + config.refreshThresholdMs >= config.sessionKeyExpiryMs + ) { + throw new Error("Refresh threshold must be less than session key expiry"); + } + return new AbstraxionBackend(config); +} diff --git a/apps/backend-session/src/lib/xion/backend/utils/validation.ts b/apps/backend-session/src/lib/xion/backend/utils/validation.ts new file mode 100644 index 00000000..e75d9156 --- /dev/null +++ b/apps/backend-session/src/lib/xion/backend/utils/validation.ts @@ -0,0 +1,98 @@ +/** + * Validate user ID format + */ +export function validateUserId(userId: string): boolean { + if (!userId || typeof userId !== "string") { + return false; + } + + // Basic validation - can be extended based on your user ID format + if (userId.length < 1 || userId.length > 255) { + return false; + } + + // Check for valid characters (alphanumeric, hyphens, underscores) + const validUserIdRegex = /^[a-zA-Z0-9_-]+$/; + return validUserIdRegex.test(userId); +} + +/** + * Validate session key address format + */ +export function validateSessionKeyAddress(address: string): boolean { + if (!address || typeof address !== "string") { + return false; + } + + // Basic XION address validation + // XION addresses typically start with 'xion1' and are 39-45 characters long + const xionAddressRegex = /^xion1[a-z0-9]{38,44}$/; + return xionAddressRegex.test(address); +} + +/** + * Validate meta account address format + */ +export function validateMetaAccountAddress(address: string): boolean { + return validateSessionKeyAddress(address); // Same format as session key address +} + +/** + * Validate state parameter for OAuth flow + */ +export function validateState(state: string): boolean { + if (!state || typeof state !== "string") { + return false; + } + + // State should be a hex string (32 bytes = 64 hex characters) + const hexRegex = /^[a-f0-9]{64}$/; + return hexRegex.test(state); +} + +/** + * Validate authorization code + */ +export function validateAuthorizationCode(code: string): boolean { + if (!code || typeof code !== "string") { + return false; + } + + // Basic validation - can be extended based on your OAuth provider + if (code.length < 10 || code.length > 1000) { + return false; + } + + return true; +} + +/** + * Sanitize user input + */ +export function sanitizeInput(input: string): string { + if (typeof input !== "string") { + return ""; + } + + // Remove potentially dangerous characters + return input + .replace(/[<>\"'&]/g, "") // Remove HTML/XML characters + .replace(/[\x00-\x1F\x7F]/g, "") // Remove control characters + .trim(); +} + +/** + * Validate timestamp + */ +export function validateTimestamp(timestamp: number): boolean { + if (typeof timestamp !== "number") { + return false; + } + + // Check if timestamp is reasonable (not too far in past or future) + const now = Date.now(); + const oneYearAgo = now - 365 * 24 * 60 * 60 * 1000; + const oneYearFromNow = now + 365 * 24 * 60 * 60 * 1000; + + return timestamp >= oneYearAgo && timestamp <= oneYearFromNow; +} diff --git a/apps/backend-session/src/lib/xion/database.ts b/apps/backend-session/src/lib/xion/database.ts new file mode 100644 index 00000000..00653327 --- /dev/null +++ b/apps/backend-session/src/lib/xion/database.ts @@ -0,0 +1,327 @@ +import { PrismaClient, type Prisma } from "@prisma/client"; +import type { + SessionKeyInfo, + AuditEvent, + Permissions, + AuditAction, +} from "@/lib/xion/backend"; +import { BaseDatabaseAdapter, SessionState } from "@/lib/xion/backend"; + +const globalForPrisma = globalThis as unknown as { + prisma: PrismaClient | undefined; +}; + +export const prisma = globalForPrisma.prisma ?? new PrismaClient(); + +if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma; + +export class PrismaDatabaseAdapter extends BaseDatabaseAdapter { + constructor(private prisma: PrismaClient) { + super(); + } + + private parseSessionKeyInfo( + sessionKeyInfo: Prisma.SessionKeyGetPayload<{}>, + ): SessionKeyInfo { + return { + userId: sessionKeyInfo.userId, + sessionKeyAddress: sessionKeyInfo.sessionKeyAddress, + sessionKeyMaterial: sessionKeyInfo.sessionKeyMaterial, + sessionKeyExpiry: sessionKeyInfo.sessionKeyExpiry, + sessionPermissions: JSON.parse( + sessionKeyInfo.sessionPermissions, + ) as Permissions, + sessionState: sessionKeyInfo.sessionState as SessionState, + metaAccountAddress: sessionKeyInfo.metaAccountAddress, + createdAt: sessionKeyInfo.createdAt, + updatedAt: sessionKeyInfo.updatedAt, + }; + } + + async getLastSessionKey(userId: string): Promise { + const sessionKey = await this.prisma.sessionKey.findFirst({ + where: { userId }, + orderBy: { createdAt: "desc" }, + }); + + if (!sessionKey) { + return null; + } + + return this.parseSessionKeyInfo(sessionKey); + } + + async getSessionKey( + userId: string, + sessionKeyAddress: string, + ): Promise { + const sessionKey = await this.prisma.sessionKey.findUnique({ + where: { + sessionKeyAddress, + }, + }); + + if (!sessionKey) { + return null; + } + + // Guard against cross-user access + if (sessionKey.userId !== userId) { + return null; + } + + return this.parseSessionKeyInfo(sessionKey); + } + + async getActiveSessionKeys(userId: string): Promise { + const sessionKeys = await this.prisma.sessionKey.findMany({ + where: { + userId, + sessionState: SessionState.ACTIVE, + }, + }); + + if (!sessionKeys) { + return []; + } + + return sessionKeys.map((sessionKey) => + this.parseSessionKeyInfo(sessionKey), + ); + } + + async revokeSessionKey( + userId: string, + sessionKeyAddress: string, + ): Promise { + // First find the session key to verify userId + const sessionKey = await this.prisma.sessionKey.findUnique({ + where: { + sessionKeyAddress, + }, + }); + + if (!sessionKey || sessionKey.userId !== userId) { + return false; + } + + // Update using the unique key + const result = await this.prisma.sessionKey.update({ + where: { + sessionKeyAddress, + }, + data: { + sessionState: SessionState.REVOKED, + }, + }); + return result !== null; + } + + async revokeActiveSessionKeys(userId: string): Promise { + await this.prisma.sessionKey.updateMany({ + where: { + userId, + sessionState: SessionState.ACTIVE, + }, + data: { + sessionState: SessionState.REVOKED, + }, + }); + } + + async addNewSessionKey( + userId: string, + updates: Pick< + SessionKeyInfo, + "sessionKeyAddress" | "sessionKeyMaterial" | "sessionKeyExpiry" + >, + activeState?: Pick< + SessionKeyInfo, + "metaAccountAddress" | "sessionPermissions" + >, + ): Promise { + // Verify user exists before creating session key + const user = await this.prisma.user.findUnique({ + where: { id: userId }, + }); + if (!user) { + throw new Error( + `User ${userId} not found. Cannot create session key for non-existent user.`, + ); + } + + const updateData: Prisma.SessionKeyCreateInput = { + user: { + connect: { + id: userId, + }, + }, + sessionKeyAddress: updates.sessionKeyAddress, + sessionKeyMaterial: updates.sessionKeyMaterial, + sessionKeyExpiry: updates.sessionKeyExpiry, + sessionState: SessionState.PENDING, + sessionPermissions: JSON.stringify({}), // Empty permissions for pending state + metaAccountAddress: "", // Will be set when activated + }; + if (activeState) { + updateData.sessionState = SessionState.ACTIVE; + updateData.metaAccountAddress = activeState.metaAccountAddress; + updateData.sessionPermissions = JSON.stringify( + activeState.sessionPermissions, + ); + } + // Then create the new pending session key + // Prisma will automatically validate the foreign key constraint + await this.prisma.sessionKey.create({ + data: updateData, + }); + } + + async updateSessionKeyWithParams( + userId: string, + sessionKeyAddress: string, + updates: Partial< + Pick< + SessionKeyInfo, + "sessionState" | "sessionPermissions" | "metaAccountAddress" + > + >, + ): Promise { + // First find the session key to verify userId + const sessionKey = await this.prisma.sessionKey.findUnique({ + where: { + sessionKeyAddress, + }, + }); + + if (!sessionKey || sessionKey.userId !== userId) { + throw new Error( + `Session key not found or does not belong to user ${userId}`, + ); + } + + const updateData: Prisma.SessionKeyUpdateInput = {}; + if (updates.sessionPermissions) { + updateData.sessionPermissions = JSON.stringify( + updates.sessionPermissions, + ); + } + if (updates.sessionState) { + updateData.sessionState = updates.sessionState; + } + if (updates.metaAccountAddress) { + updateData.metaAccountAddress = updates.metaAccountAddress; + } + + // Update using the unique key + await this.prisma.sessionKey.update({ + where: { + sessionKeyAddress, + }, + data: updateData, + }); + } + + /** + * Update session key with params in a transaction (atomic check-and-update) + * This prevents race conditions by ensuring the check and update happen atomically + */ + async updateSessionKeyWithParamsAtomic( + userId: string, + sessionKeyAddress: string, + expectedState: SessionState, + updates: Partial< + Pick< + SessionKeyInfo, + "sessionState" | "sessionPermissions" | "metaAccountAddress" + > + >, + ): Promise { + await this.prisma.$transaction(async (tx) => { + // Check existing session key within transaction + const sessionKey = await tx.sessionKey.findUnique({ + where: { + sessionKeyAddress, + }, + }); + + if (!sessionKey || sessionKey.userId !== userId) { + throw new Error( + `Session key not found or does not belong to user ${userId}`, + ); + } + + // Verify expected state to prevent race conditions + if (sessionKey.sessionState !== expectedState) { + throw new Error( + `Session key state mismatch: expected ${expectedState}, got ${sessionKey.sessionState}`, + ); + } + + const updateData: Prisma.SessionKeyUpdateInput = {}; + if (updates.sessionPermissions) { + updateData.sessionPermissions = JSON.stringify( + updates.sessionPermissions, + ); + } + if (updates.sessionState) { + updateData.sessionState = updates.sessionState; + } + if (updates.metaAccountAddress) { + updateData.metaAccountAddress = updates.metaAccountAddress; + } + + // Update within transaction + await tx.sessionKey.update({ + where: { + sessionKeyAddress, + }, + data: updateData, + }); + }); + } + + async logAuditEvent(event: AuditEvent): Promise { + await this.prisma.auditLog.create({ + data: { + userId: event.userId, + action: event.action, + timestamp: new Date(event.timestamp), + details: JSON.stringify(event.details), + ipAddress: event.ipAddress, + userAgent: event.userAgent, + }, + }); + } + + async getAuditLogs(userId: string, limit = 50): Promise { + const logs = await this.prisma.auditLog.findMany({ + where: { userId }, + orderBy: { timestamp: "desc" }, + take: limit, + }); + + return logs.map((log) => ({ + id: log.id, + userId: log.userId, + action: log.action as AuditAction, + timestamp: log.timestamp, + details: JSON.parse(log.details), + ipAddress: log.ipAddress || undefined, + userAgent: log.userAgent || undefined, + })); + } + + async healthCheck(): Promise { + try { + await this.prisma.$queryRaw`SELECT 1`; + return true; + } catch { + return false; + } + } + + async close(): Promise { + await this.prisma.$disconnect(); + } +} diff --git a/apps/backend-session/src/lib/xion/security.ts b/apps/backend-session/src/lib/xion/security.ts new file mode 100644 index 00000000..a0db1821 --- /dev/null +++ b/apps/backend-session/src/lib/xion/security.ts @@ -0,0 +1,156 @@ +import { randomBytes, pbkdf2Sync } from "node:crypto"; +import { EncryptionService } from "@/lib/xion/backend"; + +export class SecurityManager { + private static encryptionService: EncryptionService | null = null; + + /** + * Initialize encryption service with master key + */ + static initialize(encryptionKey: string): void { + this.encryptionService = new EncryptionService(encryptionKey); + } + + /** + * Get or create encryption service instance + */ + private static getEncryptionService(): EncryptionService { + if (!this.encryptionService) { + const key = process.env.ENCRYPTION_KEY; + if (!key) { + throw new Error("ENCRYPTION_KEY environment variable is required"); + } + this.encryptionService = new EncryptionService(key); + } + return this.encryptionService; + } + + /** + * Generate a secure encryption key (using EncryptionService method) + */ + static generateEncryptionKey(): string { + return EncryptionService.generateEncryptionKey(); + } + + /** + * Encrypt sensitive data using EncryptionService + */ + static async encrypt(text: string, key?: string): Promise { + const service = key + ? new EncryptionService(key) + : this.getEncryptionService(); + return await service.encryptSessionKey(text); + } + + /** + * Decrypt sensitive data using EncryptionService + */ + static async decrypt(encryptedText: string, key?: string): Promise { + const service = key + ? new EncryptionService(key) + : this.getEncryptionService(); + return await service.decryptSessionKey(encryptedText); + } + + /** + * Validate encryption key format (using EncryptionService method) + */ + static validateEncryptionKey(key: string): boolean { + return EncryptionService.validateEncryptionKey(key); + } + + /** + * Generate secure random string + */ + static generateSecureRandom(length = 32): string { + return randomBytes(length).toString("hex"); + } + + /** + * Hash password using PBKDF2 (more secure than custom implementation) + */ + static async hashPassword(password: string): Promise { + const salt = randomBytes(16).toString("hex"); + const hash = pbkdf2Sync(password, salt, 100000, 64, "sha512").toString( + "hex", + ); + return `${salt}:${hash}`; + } + + /** + * Verify password using PBKDF2 + */ + static async verifyPassword( + password: string, + hashedPassword: string, + ): Promise { + const [salt, hash] = hashedPassword.split(":"); + if (!salt || !hash) return false; + + const verifyHash = pbkdf2Sync( + password, + salt, + 100000, + 64, + "sha512", + ).toString("hex"); + return hash === verifyHash; + } + + /** + * Generate secure random bytes + */ + static generateRandomBytes(length: number): Buffer { + return randomBytes(length); + } + + /** + * Generate secure random string with custom charset + * Uses cryptographically secure random bytes + */ + static generateSecureString( + length: number, + charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", + ): string { + const bytes = randomBytes(length); + let result = ""; + for (let i = 0; i < length; i++) { + result += charset.charAt(bytes[i] % charset.length); + } + return result; + } + + /** + * Generate UUID v4 + */ + static generateUUID(): string { + const bytes = randomBytes(16); + bytes[6] = (bytes[6] & 0x0f) | 0x40; // Version 4 + bytes[8] = (bytes[8] & 0x3f) | 0x80; // Variant bits + + const hex = bytes.toString("hex"); + return [ + hex.substring(0, 8), + hex.substring(8, 12), + hex.substring(12, 16), + hex.substring(16, 20), + hex.substring(20, 32), + ].join("-"); + } + + /** + * Constant-time string comparison (prevents timing attacks) + */ + static constantTimeCompare(a: string, b: string): boolean { + if (a.length !== b.length) { + return false; + } + + let result = 0; + for (let i = 0; i < a.length; i++) { + result |= a.charCodeAt(i) ^ b.charCodeAt(i); + } + + return result === 0; + } +} diff --git a/apps/backend-session/src/test-utils/auth.ts b/apps/backend-session/src/test-utils/auth.ts new file mode 100644 index 00000000..02bcf8f2 --- /dev/null +++ b/apps/backend-session/src/test-utils/auth.ts @@ -0,0 +1,51 @@ +import { NextRequest } from "next/server"; + +// Mock NextAuth's getServerSession for testing +export const mockGetServerSession = jest.fn(); + +// Mock the auth middleware for testing +export const mockRequireAuth = jest.fn(); + +// Mock user data for testing +export const mockUser = { + id: "test-user-id", + username: "testuser", + email: "test@example.com", +}; + +// Setup mocks before each test +export const setupAuthMocks = () => { + // Mock getServerSession to return a valid session + mockGetServerSession.mockResolvedValue({ + user: mockUser, + expires: new Date(Date.now() + 24 * 60 * 60 * 1000).toISOString(), // 24 hours from now + }); + + // Mock requireAuth to return the user context + mockRequireAuth.mockResolvedValue({ + user: mockUser, + }); +}; + +// Clean up mocks after each test +export const cleanupAuthMocks = () => { + mockGetServerSession.mockReset(); + mockRequireAuth.mockReset(); +}; + +// Create a mock request with proper headers +export const createMockRequest = ( + url: string, + method: string = "POST", + body?: any, +): NextRequest => { + const request = new NextRequest(url, { + method, + headers: { + "content-type": "application/json", + }, + body: body ? JSON.stringify(body) : undefined, + }); + + return request; +}; diff --git a/apps/backend-session/src/types/frontend.ts b/apps/backend-session/src/types/frontend.ts new file mode 100644 index 00000000..facca20d --- /dev/null +++ b/apps/backend-session/src/types/frontend.ts @@ -0,0 +1,49 @@ +// Frontend type definitions extracted from components and pages + +// Wallet Status Types +export interface WalletStatus { + connected: boolean; + sessionKeyAddress?: string; + metaAccountAddress?: string; + permissions?: { + contracts?: Array< + | string + | { address: string; amounts: Array<{ denom: string; amount: string }> } + >; + bank?: { denom: string; amount: string }[]; + stake?: boolean; + treasury?: string; + expiry?: number; + }; + expiresAt?: number; + state?: string; +} + +// Wallet Balance Types +export interface WalletBalance { + amount: string; + denom: string; + microAmount: string; +} + +// Wallet Data Types +export interface WalletData { + metaAccountAddress: string; + balances?: { + xion: WalletBalance; + usdc: WalletBalance; + }; +} + +// Component Props Types +export interface WalletComponentProps { + account: WalletStatus; + onRefresh?: () => void; +} + +export interface TransferComponentProps { + onTransferComplete?: (transactionHash: string) => void; +} + +// Token Denomination Types +export type TokenDenom = "XION" | "USDC"; diff --git a/apps/backend-session/src/types/next-auth.d.ts b/apps/backend-session/src/types/next-auth.d.ts new file mode 100644 index 00000000..ab5b94eb --- /dev/null +++ b/apps/backend-session/src/types/next-auth.d.ts @@ -0,0 +1,24 @@ +import NextAuth from "next-auth"; + +declare module "next-auth" { + interface Session { + user: { + id: string; + username: string; + email?: string | null; + }; + } + + interface User { + id: string; + username: string; + email?: string | null; + } +} + +declare module "next-auth/jwt" { + interface JWT { + id: string; + username: string; + } +} diff --git a/apps/backend-session/tailwind.config.ts b/apps/backend-session/tailwind.config.ts new file mode 100644 index 00000000..f3c5dc27 --- /dev/null +++ b/apps/backend-session/tailwind.config.ts @@ -0,0 +1,7 @@ +import type { Config } from "tailwindcss"; +import baseConfig from "@burnt-labs/tailwind-config/tailwind.config"; + +export default { + ...baseConfig, + content: ["./src/**/*.{js,ts,jsx,tsx,mdx}", "./app/**/*.{js,ts,jsx,tsx,mdx}"], +} satisfies Config; diff --git a/apps/backend-session/tsconfig.json b/apps/backend-session/tsconfig.json new file mode 100644 index 00000000..5eca81b6 --- /dev/null +++ b/apps/backend-session/tsconfig.json @@ -0,0 +1,26 @@ +{ + "extends": "@burnt-labs/tsconfig/nextjs.json", + "compilerOptions": { + "target": "ES2020", + "allowJs": true, + "declaration": true, + "resolveJsonModule": true, + "downlevelIteration": true, + "paths": { + "@/*": [ + "./src/*" + ] + }, + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts" + ], + "exclude": [ + "dist", + "build", + "node_modules" + ] +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 97059255..6dba081a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,23 +1,24 @@ -lockfileVersion: "9.0" +lockfileVersion: '9.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false overrides: - "@types/react": ^18.2.47 - "@types/react-dom": ^18.2.18 + '@types/react': ^18.2.47 + '@types/react-dom': ^18.2.18 importers: + .: dependencies: - "@burnt-labs/tsconfig": + '@burnt-labs/tsconfig': specifier: workspace:* version: link:packages/tsconfig - "@changesets/changelog-github": + '@changesets/changelog-github': specifier: ^0.5.0 version: 0.5.1 - "@changesets/cli": + '@changesets/cli': specifier: ^2.27.1 version: 2.29.6(@types/node@20.19.11) eslint: @@ -33,33 +34,169 @@ importers: specifier: ^2.0.11 version: 2.5.6 + apps/backend-session: + dependencies: + '@auth/prisma-adapter': + specifier: 2.10.0 + version: 2.10.0(@prisma/client@6.16.1(prisma@6.16.1(typescript@5.9.2))(typescript@5.9.2)) + '@burnt-labs/abstraxion-core': + specifier: workspace:* + version: link:../../packages/abstraxion-core + '@burnt-labs/constants': + specifier: workspace:* + version: link:../../packages/constants + '@burnt-labs/ui': + specifier: workspace:* + version: link:../../packages/ui + '@cosmjs/amino': + specifier: ^0.36.0 + version: 0.36.0 + '@cosmjs/cosmwasm-stargate': + specifier: ^0.36.0 + version: 0.36.0 + '@cosmjs/crypto': + specifier: ^0.36.0 + version: 0.36.0 + '@cosmjs/encoding': + specifier: ^0.36.0 + version: 0.36.0 + '@cosmjs/proto-signing': + specifier: ^0.36.0 + version: 0.36.0 + '@cosmjs/stargate': + specifier: ^0.36.0 + version: 0.36.0 + '@cosmjs/tendermint-rpc': + specifier: ^0.36.0 + version: 0.36.0 + '@cosmjs/utils': + specifier: ^0.36.0 + version: 0.36.0 + '@prisma/client': + specifier: ^6.16.1 + version: 6.16.1(prisma@6.16.1(typescript@5.9.2))(typescript@5.9.2) + bcryptjs: + specifier: 3.0.2 + version: 3.0.2 + cosmjs-types: + specifier: ^0.9.0 + version: 0.9.0 + jose: + specifier: ^5.1.3 + version: 5.10.0 + next: + specifier: ^14.0.3 + version: 14.2.31(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next-auth: + specifier: 4.24.11 + version: 4.24.11(next@14.2.31(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + node-cache: + specifier: ^5.1.2 + version: 5.1.2 + rate-limiter-flexible: + specifier: ^4.0.1 + version: 4.0.1 + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) + zod: + specifier: ^3.22.4 + version: 3.25.76 + devDependencies: + '@burnt-labs/eslint-config-custom': + specifier: workspace:* + version: link:../../packages/eslint-config-custom + '@burnt-labs/tailwind-config': + specifier: workspace:* + version: link:../../packages/tailwind-config + '@burnt-labs/tsconfig': + specifier: workspace:* + version: link:../../packages/tsconfig + '@testing-library/jest-dom': + specifier: ^6.1.4 + version: 6.7.0 + '@types/bcryptjs': + specifier: ^3.0.0 + version: 3.0.0 + '@types/express': + specifier: ^4.17.21 + version: 4.17.23 + '@types/jest': + specifier: ^30.0.0 + version: 30.0.0 + '@types/node': + specifier: ^20 + version: 20.19.11 + '@types/react': + specifier: ^18.2.47 + version: 18.3.23 + '@types/react-dom': + specifier: ^18.2.18 + version: 18.3.7(@types/react@18.3.23) + autoprefixer: + specifier: ^10.4.13 + version: 10.4.21(postcss@8.5.6) + eslint-config-next: + specifier: 14.0.4 + version: 14.0.4(eslint@8.57.1)(typescript@5.9.2) + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) + jest-environment-jsdom: + specifier: ^29.7.0 + version: 29.7.0 + node-mocks-http: + specifier: ^1.13.0 + version: 1.17.2(@types/express@4.17.23)(@types/node@20.19.11) + postcss: + specifier: ^8.4.20 + version: 8.5.6 + prisma: + specifier: ^6.16.1 + version: 6.16.1(typescript@5.9.2) + tailwindcss: + specifier: ^3.2.4 + version: 3.4.17(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) + ts-jest: + specifier: ^29.1.2 + version: 29.4.1(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.17.19)(jest-util@30.0.5)(jest@29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)))(typescript@5.9.2) + tsx: + specifier: ^4.6.2 + version: 4.20.5 + typescript: + specifier: ^5.2.2 + version: 5.9.2 + apps/demo-app: dependencies: - "@burnt-labs/abstraxion": + '@burnt-labs/abstraxion': specifier: workspace:* version: link:../../packages/abstraxion - "@burnt-labs/abstraxion-core": + '@burnt-labs/abstraxion-core': specifier: workspace:* version: link:../../packages/abstraxion-core - "@burnt-labs/constants": + '@burnt-labs/constants': specifier: workspace:* version: link:../../packages/constants - "@burnt-labs/ui": + '@burnt-labs/ui': specifier: workspace:* version: link:../../packages/ui - "@cosmjs/amino": + '@cosmjs/amino': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/cosmwasm-stargate": + '@cosmjs/cosmwasm-stargate': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/crypto": + '@cosmjs/crypto': specifier: ^0.36.0 version: 0.36.0 - "@heroicons/react": + '@heroicons/react': specifier: ^2.1.4 version: 2.2.0(react@18.3.1) - "@noble/hashes": + '@noble/hashes': specifier: 1.8.0 version: 1.8.0 cosmjs-types: @@ -67,7 +204,7 @@ importers: version: 0.9.0 next: specifier: ^14.0.3 - version: 14.2.31(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.31(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18.2.0 version: 18.3.1 @@ -75,28 +212,28 @@ importers: specifier: ^18.2.0 version: 18.3.1(react@18.3.1) devDependencies: - "@burnt-labs/eslint-config-custom": + '@burnt-labs/eslint-config-custom': specifier: workspace:* version: link:../../packages/eslint-config-custom - "@burnt-labs/tailwind-config": + '@burnt-labs/tailwind-config': specifier: workspace:* version: link:../../packages/tailwind-config - "@burnt-labs/tsconfig": + '@burnt-labs/tsconfig': specifier: workspace:* version: link:../../packages/tsconfig - "@next/eslint-plugin-next": + '@next/eslint-plugin-next': specifier: ^13.4.19 version: 13.5.11 - "@opennextjs/cloudflare": + '@opennextjs/cloudflare': specifier: ^1.0.4 version: 1.7.1(wrangler@4.33.2) - "@types/node": + '@types/node': specifier: ^20 version: 20.19.11 - "@types/react": + '@types/react': specifier: ^18.2.47 version: 18.3.23 - "@types/react-dom": + '@types/react-dom': specifier: ^18.2.18 version: 18.3.7(@types/react@18.3.23) autoprefixer: @@ -110,7 +247,7 @@ importers: version: 8.5.6 tailwindcss: specifier: ^3.2.4 - version: 3.4.17(ts-node@10.9.2(@types/node@20.19.11)) + version: 3.4.17(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) typescript: specifier: ^5.2.2 version: 5.9.2 @@ -120,40 +257,40 @@ importers: packages/abstraxion: dependencies: - "@burnt-labs/abstraxion-core": + '@burnt-labs/abstraxion-core': specifier: workspace:* version: link:../abstraxion-core - "@burnt-labs/constants": + '@burnt-labs/constants': specifier: workspace:* version: link:../constants - "@burnt-labs/ui": + '@burnt-labs/ui': specifier: workspace:* version: link:../ui - "@cosmjs/amino": + '@cosmjs/amino': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/cosmwasm-stargate": + '@cosmjs/cosmwasm-stargate': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/crypto": + '@cosmjs/crypto': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/encoding": + '@cosmjs/encoding': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/proto-signing": + '@cosmjs/proto-signing': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/stargate": + '@cosmjs/stargate': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/tendermint-rpc": + '@cosmjs/tendermint-rpc': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/utils": + '@cosmjs/utils': specifier: ^0.36.0 version: 0.36.0 - "@types/react-dom": + '@types/react-dom': specifier: ^18.2.18 version: 18.3.7(@types/react@18.3.23) cosmjs-types: @@ -163,28 +300,28 @@ importers: specifier: ^5.1.3 version: 5.10.0 devDependencies: - "@burnt-labs/eslint-config-custom": + '@burnt-labs/eslint-config-custom': specifier: workspace:* version: link:../eslint-config-custom - "@burnt-labs/tailwind-config": + '@burnt-labs/tailwind-config': specifier: workspace:* version: link:../tailwind-config - "@burnt-labs/tsconfig": + '@burnt-labs/tsconfig': specifier: workspace:* version: link:../tsconfig - "@testing-library/jest-dom": + '@testing-library/jest-dom': specifier: ^6.4.2 version: 6.7.0 - "@testing-library/react": + '@testing-library/react': specifier: ^14.2.1 version: 14.3.1(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@types/jest": + '@types/jest': specifier: ^29.5.12 version: 29.5.14 - "@types/node": + '@types/node': specifier: ^20 version: 20.19.11 - "@types/react": + '@types/react': specifier: ^18.2.47 version: 18.3.23 autoprefixer: @@ -210,10 +347,10 @@ importers: version: 5.0.10 tailwindcss: specifier: ^3.2.4 - version: 3.4.17(ts-node@10.9.2(@types/node@20.19.11)) + version: 3.4.17(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) ts-jest: specifier: ^29.1.2 - version: 29.4.1(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.17.19)(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)))(typescript@5.9.2) + version: 29.4.1(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.17.19)(jest-util@30.0.5)(jest@29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)))(typescript@5.9.2) tsup: specifier: ^6.0.1 version: 6.7.0(postcss@8.5.6)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2))(typescript@5.9.2) @@ -223,34 +360,34 @@ importers: packages/abstraxion-core: dependencies: - "@burnt-labs/constants": + '@burnt-labs/constants': specifier: workspace:* version: link:../constants - "@cosmjs/amino": + '@cosmjs/amino': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/cosmwasm-stargate": + '@cosmjs/cosmwasm-stargate': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/crypto": + '@cosmjs/crypto': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/encoding": + '@cosmjs/encoding': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/math": + '@cosmjs/math': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/proto-signing": + '@cosmjs/proto-signing': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/stargate": + '@cosmjs/stargate': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/tendermint-rpc": + '@cosmjs/tendermint-rpc': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/utils": + '@cosmjs/utils': specifier: ^0.36.0 version: 0.36.0 base64-js: @@ -263,37 +400,37 @@ importers: specifier: ^5.1.3 version: 5.10.0 react-native-get-random-values: - specifier: "*" + specifier: ^1.11.0 version: 1.11.0(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1)) react-native-quick-crypto: - specifier: "*" + specifier: ^0.7.0 version: 0.7.17(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) devDependencies: - "@babel/core": + '@babel/core': specifier: ^7.24.5 version: 7.28.3 - "@babel/preset-env": + '@babel/preset-env': specifier: ^7.24.5 version: 7.28.3(@babel/core@7.28.3) - "@babel/preset-typescript": + '@babel/preset-typescript': specifier: ^7.26.0 version: 7.27.1(@babel/core@7.28.3) - "@burnt-labs/eslint-config-custom": + '@burnt-labs/eslint-config-custom': specifier: workspace:* version: link:../eslint-config-custom - "@burnt-labs/tailwind-config": + '@burnt-labs/tailwind-config': specifier: workspace:* version: link:../tailwind-config - "@burnt-labs/tsconfig": + '@burnt-labs/tsconfig': specifier: workspace:* version: link:../tsconfig - "@types/jest": + '@types/jest': specifier: ^29.5.12 version: 29.5.14 - "@types/node": + '@types/node': specifier: ^20 version: 20.19.11 - "@types/text-encoding": + '@types/text-encoding': specifier: ^0.0.39 version: 0.0.39 autoprefixer: @@ -326,19 +463,19 @@ importers: packages/abstraxion-react-native: dependencies: - "@burnt-labs/abstraxion-core": + '@burnt-labs/abstraxion-core': specifier: workspace:* version: link:../abstraxion-core - "@burnt-labs/constants": + '@burnt-labs/constants': specifier: workspace:* version: link:../constants - "@cosmjs/cosmwasm-stargate": + '@cosmjs/cosmwasm-stargate': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/stargate": + '@cosmjs/stargate': specifier: ^0.36.0 version: 0.36.0 - "@react-native-async-storage/async-storage": + '@react-native-async-storage/async-storage': specifier: 1.23.1 version: 1.23.1(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1)) expo-linking: @@ -351,25 +488,25 @@ importers: specifier: ^5.1.3 version: 5.10.0 react-native-get-random-values: - specifier: "*" + specifier: ^1.11.0 version: 1.11.0(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1)) react-native-quick-crypto: - specifier: "*" + specifier: ^0.7.0 version: 0.7.17(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) devDependencies: - "@burnt-labs/eslint-config-custom": + '@burnt-labs/eslint-config-custom': specifier: workspace:* version: link:../eslint-config-custom - "@burnt-labs/tsconfig": + '@burnt-labs/tsconfig': specifier: workspace:* version: link:../tsconfig - "@types/jest": + '@types/jest': specifier: ^29.5.3 version: 29.5.14 - "@types/react": + '@types/react': specifier: ^18.2.47 version: 18.3.23 - "@types/react-native": + '@types/react-native': specifier: ^0.72.2 version: 0.72.8(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1)) jest: @@ -386,7 +523,7 @@ importers: version: 5.0.10 ts-jest: specifier: ^29.1.2 - version: 29.4.1(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.17.19)(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)))(typescript@5.9.2) + version: 29.4.1(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.17.19)(jest-util@30.0.5)(jest@29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)))(typescript@5.9.2) tsup: specifier: ^6.0.1 version: 6.7.0(postcss@8.5.6)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2))(typescript@5.9.2) @@ -396,10 +533,10 @@ importers: packages/constants: devDependencies: - "@burnt-labs/eslint-config-custom": + '@burnt-labs/eslint-config-custom': specifier: workspace:* version: link:../eslint-config-custom - "@burnt-labs/tsconfig": + '@burnt-labs/tsconfig': specifier: workspace:* version: link:../tsconfig rimraf: @@ -414,9 +551,9 @@ importers: packages/eslint-config-custom: devDependencies: - "@vercel/style-guide": + '@vercel/style-guide': specifier: ^5.1.0 - version: 5.2.0(@next/eslint-plugin-next@14.0.4)(eslint@8.57.1)(jest@29.7.0(@types/node@20.19.11))(prettier@3.6.2)(typescript@5.9.2) + version: 5.2.0(@next/eslint-plugin-next@14.0.4)(eslint@8.57.1)(jest@29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)))(prettier@3.6.2)(typescript@5.9.2) eslint-config-turbo: specifier: ^1.10.12 version: 1.13.4(eslint@8.57.1) @@ -426,37 +563,37 @@ importers: packages/signers: dependencies: - "@apollo/client": + '@apollo/client': specifier: ^3.8.8 version: 3.13.9(@types/react@18.3.23)(graphql@16.11.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@cosmjs/amino": + '@cosmjs/amino': specifier: ^0.32.4 version: 0.32.4 - "@cosmjs/cosmwasm-stargate": + '@cosmjs/cosmwasm-stargate': specifier: ^0.32.4 version: 0.32.4 - "@cosmjs/crypto": + '@cosmjs/crypto': specifier: ^0.32.4 version: 0.32.4 - "@cosmjs/encoding": + '@cosmjs/encoding': specifier: ^0.32.4 version: 0.32.4 - "@cosmjs/math": + '@cosmjs/math': specifier: ^0.32.4 version: 0.32.4 - "@cosmjs/proto-signing": + '@cosmjs/proto-signing': specifier: ^0.32.4 version: 0.32.4 - "@cosmjs/stargate": + '@cosmjs/stargate': specifier: ^0.32.4 version: 0.32.4 - "@cosmjs/tendermint-rpc": + '@cosmjs/tendermint-rpc': specifier: ^0.32.4 version: 0.32.4 - "@cosmjs/utils": + '@cosmjs/utils': specifier: ^0.32.4 version: 0.32.4 - "@protobuf-ts/runtime": + '@protobuf-ts/runtime': specifier: ^2.9.3 version: 2.11.1 bech32: @@ -469,13 +606,13 @@ importers: specifier: ^9.0.6 version: 9.1.0 devDependencies: - "@burnt-labs/constants": + '@burnt-labs/constants': specifier: workspace:* version: link:../constants - "@burnt-labs/eslint-config-custom": + '@burnt-labs/eslint-config-custom': specifier: workspace:* version: link:../eslint-config-custom - "@types/node": + '@types/node': specifier: ^20 version: 20.19.11 eslint: @@ -507,10 +644,10 @@ importers: version: 5.0.10 tailwindcss: specifier: ^3.2.4 - version: 3.4.17(ts-node@10.9.2(@types/node@20.19.11)) + version: 3.4.17(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) tailwindcss-animate: specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@20.19.11))) + version: 1.0.7(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2))) packages/tsconfig: devDependencies: @@ -520,29 +657,29 @@ importers: packages/ui: dependencies: - "@radix-ui/react-dialog": + '@radix-ui/react-dialog': specifier: ^1.0.5 version: 1.1.15(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-popover": + '@radix-ui/react-popover': specifier: ^1.0.7 version: 1.1.15(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-visually-hidden": + '@radix-ui/react-visually-hidden': specifier: ^1.1.0 version: 1.2.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@types/react-dom": + '@types/react-dom': specifier: ^18.2.18 version: 18.3.7(@types/react@18.3.23) devDependencies: - "@burnt-labs/eslint-config-custom": + '@burnt-labs/eslint-config-custom': specifier: workspace:* version: link:../eslint-config-custom - "@burnt-labs/tailwind-config": + '@burnt-labs/tailwind-config': specifier: workspace:* version: link:../tailwind-config - "@burnt-labs/tsconfig": + '@burnt-labs/tsconfig': specifier: workspace:* version: link:../tsconfig - "@types/react": + '@types/react': specifier: ^18.2.47 version: 18.3.23 autoprefixer: @@ -568,7 +705,7 @@ importers: version: 2.6.0 tailwindcss: specifier: ^3.2.4 - version: 3.4.17(ts-node@10.9.2(@types/node@20.19.11)) + version: 3.4.17(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) tsup: specifier: ^6.0.1 version: 6.7.0(postcss@8.5.6)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2))(typescript@5.9.2) @@ -577,42 +714,28 @@ importers: version: 5.9.2 packages: - "@0no-co/graphql.web@1.2.0": - resolution: - { - integrity: sha512-/1iHy9TTr63gE1YcR5idjx8UREz1s0kFhydf3bBLCXyqjhkIc6igAzTOx3zPifCwFR87tsh/4Pa9cNts6d2otw==, - } + + '@0no-co/graphql.web@1.2.0': + resolution: {integrity: sha512-/1iHy9TTr63gE1YcR5idjx8UREz1s0kFhydf3bBLCXyqjhkIc6igAzTOx3zPifCwFR87tsh/4Pa9cNts6d2otw==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 peerDependenciesMeta: graphql: optional: true - "@adobe/css-tools@4.4.4": - resolution: - { - integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==, - } - - "@alloc/quick-lru@5.2.0": - resolution: - { - integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==, - } - engines: { node: ">=10" } - - "@ampproject/remapping@2.3.0": - resolution: - { - integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==, - } - engines: { node: ">=6.0.0" } - - "@apollo/client@3.13.9": - resolution: - { - integrity: sha512-RStSzQfL1XwL6/NWd7W8avhGQYTgPCtJ+qHkkTTSj9Upp3VVm6Oppv81YWdXG1FgEpDPW4hvCrTUELdcC4inCQ==, - } + '@adobe/css-tools@4.4.4': + resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@apollo/client@3.13.9': + resolution: {integrity: sha512-RStSzQfL1XwL6/NWd7W8avhGQYTgPCtJ+qHkkTTSj9Upp3VVm6Oppv81YWdXG1FgEpDPW4hvCrTUELdcC4inCQ==} peerDependencies: graphql: ^15.0.0 || ^16.0.0 graphql-ws: ^5.5.5 || ^6.0.3 @@ -629,1848 +752,1162 @@ packages: subscriptions-transport-ws: optional: true - "@ast-grep/napi-darwin-arm64@0.35.0": - resolution: - { - integrity: sha512-T+MN4Oinc+sXjXCIHzfxDDWY7r2pKgPxM6zVeVlkMTrJV2mJtyKYBIS+CABhRM6kflps2T2I6l4DGaKV/8Ym9w==, - } - engines: { node: ">= 10" } + '@ast-grep/napi-darwin-arm64@0.35.0': + resolution: {integrity: sha512-T+MN4Oinc+sXjXCIHzfxDDWY7r2pKgPxM6zVeVlkMTrJV2mJtyKYBIS+CABhRM6kflps2T2I6l4DGaKV/8Ym9w==} + engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - "@ast-grep/napi-darwin-x64@0.35.0": - resolution: - { - integrity: sha512-pEYiN6JI1HY2uWhMYJ9+3yIMyVYKuYdFzeD+dL7odA3qzK0o9N9AM3/NOt4ynU2EhufaWCJr0P5NoQ636qN6MQ==, - } - engines: { node: ">= 10" } + '@ast-grep/napi-darwin-x64@0.35.0': + resolution: {integrity: sha512-pEYiN6JI1HY2uWhMYJ9+3yIMyVYKuYdFzeD+dL7odA3qzK0o9N9AM3/NOt4ynU2EhufaWCJr0P5NoQ636qN6MQ==} + engines: {node: '>= 10'} cpu: [x64] os: [darwin] - "@ast-grep/napi-linux-arm64-gnu@0.35.0": - resolution: - { - integrity: sha512-NBuzQngABGKz7lhG08IQb+7nPqUx81Ol37xmS3ZhVSdSgM0mtp93rCbgFTkJcAFE8IMfCHQSg7G4g0Iotz4ABQ==, - } - engines: { node: ">= 10" } + '@ast-grep/napi-linux-arm64-gnu@0.35.0': + resolution: {integrity: sha512-NBuzQngABGKz7lhG08IQb+7nPqUx81Ol37xmS3ZhVSdSgM0mtp93rCbgFTkJcAFE8IMfCHQSg7G4g0Iotz4ABQ==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] - "@ast-grep/napi-linux-arm64-musl@0.35.0": - resolution: - { - integrity: sha512-1EcvHPwyWpCL/96LuItBYGfeI5FaMTRvL+dHbO/hL5q1npqbb5qn+ppJwtNOjTPz8tayvgggxVk9T4C2O7taYA==, - } - engines: { node: ">= 10" } + '@ast-grep/napi-linux-arm64-musl@0.35.0': + resolution: {integrity: sha512-1EcvHPwyWpCL/96LuItBYGfeI5FaMTRvL+dHbO/hL5q1npqbb5qn+ppJwtNOjTPz8tayvgggxVk9T4C2O7taYA==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] - "@ast-grep/napi-linux-x64-gnu@0.35.0": - resolution: - { - integrity: sha512-FDzNdlqmQnsiWXhnLxusw5AOfEcEM+5xtmrnAf3SBRFr86JyWD9qsynnFYC2pnP9hlMfifNH2TTmMpyGJW49Xw==, - } - engines: { node: ">= 10" } + '@ast-grep/napi-linux-x64-gnu@0.35.0': + resolution: {integrity: sha512-FDzNdlqmQnsiWXhnLxusw5AOfEcEM+5xtmrnAf3SBRFr86JyWD9qsynnFYC2pnP9hlMfifNH2TTmMpyGJW49Xw==} + engines: {node: '>= 10'} cpu: [x64] os: [linux] - "@ast-grep/napi-linux-x64-musl@0.35.0": - resolution: - { - integrity: sha512-wlmndjfBafT8u5p4DBnoRQyoCSGNuVSz7rT3TqhvlHcPzUouRWMn95epU9B1LNLyjXvr9xHeRjSktyCN28w57Q==, - } - engines: { node: ">= 10" } + '@ast-grep/napi-linux-x64-musl@0.35.0': + resolution: {integrity: sha512-wlmndjfBafT8u5p4DBnoRQyoCSGNuVSz7rT3TqhvlHcPzUouRWMn95epU9B1LNLyjXvr9xHeRjSktyCN28w57Q==} + engines: {node: '>= 10'} cpu: [x64] os: [linux] - "@ast-grep/napi-win32-arm64-msvc@0.35.0": - resolution: - { - integrity: sha512-gkhJeYc4rrZLX2icLxalPikTLMR57DuIYLwLr9g+StHYXIsGHrbfrE6Nnbdd8Izfs34ArFCrcwdaMrGlvOPSeg==, - } - engines: { node: ">= 10" } + '@ast-grep/napi-win32-arm64-msvc@0.35.0': + resolution: {integrity: sha512-gkhJeYc4rrZLX2icLxalPikTLMR57DuIYLwLr9g+StHYXIsGHrbfrE6Nnbdd8Izfs34ArFCrcwdaMrGlvOPSeg==} + engines: {node: '>= 10'} cpu: [arm64] os: [win32] - "@ast-grep/napi-win32-ia32-msvc@0.35.0": - resolution: - { - integrity: sha512-OdUuRa3chHCZ65y+qALfkUjz0W0Eg21YZ9TyPquV5why07M6HAK38mmYGzLxFH6294SvRQhs+FA/rAfbKeH0jA==, - } - engines: { node: ">= 10" } + '@ast-grep/napi-win32-ia32-msvc@0.35.0': + resolution: {integrity: sha512-OdUuRa3chHCZ65y+qALfkUjz0W0Eg21YZ9TyPquV5why07M6HAK38mmYGzLxFH6294SvRQhs+FA/rAfbKeH0jA==} + engines: {node: '>= 10'} cpu: [ia32] os: [win32] - "@ast-grep/napi-win32-x64-msvc@0.35.0": - resolution: - { - integrity: sha512-pcQRUHqbroTN1oQ56V982a7IZTUUySQYWa2KEyksiifHGuBuitlzcyzFGjT96ThcqD9XW0UVJMvpoF2Qjh006Q==, - } - engines: { node: ">= 10" } + '@ast-grep/napi-win32-x64-msvc@0.35.0': + resolution: {integrity: sha512-pcQRUHqbroTN1oQ56V982a7IZTUUySQYWa2KEyksiifHGuBuitlzcyzFGjT96ThcqD9XW0UVJMvpoF2Qjh006Q==} + engines: {node: '>= 10'} cpu: [x64] os: [win32] - "@ast-grep/napi@0.35.0": - resolution: - { - integrity: sha512-3ucaaSxV6fxXoqHrE/rxAvP1THnDdY5jNzGlnvx+JvnY9C/dSRKc0jlRMRz59N3El572+/yNRUUpAV1T9aBJug==, - } - engines: { node: ">= 10" } - - "@aws-crypto/crc32@5.2.0": - resolution: - { - integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==, - } - engines: { node: ">=16.0.0" } - - "@aws-crypto/crc32c@5.2.0": - resolution: - { - integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==, - } - - "@aws-crypto/ie11-detection@3.0.0": - resolution: - { - integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==, - } - - "@aws-crypto/sha1-browser@5.2.0": - resolution: - { - integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==, - } - - "@aws-crypto/sha256-browser@3.0.0": - resolution: - { - integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==, - } - - "@aws-crypto/sha256-browser@5.2.0": - resolution: - { - integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==, - } - - "@aws-crypto/sha256-js@3.0.0": - resolution: - { - integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==, - } - - "@aws-crypto/sha256-js@5.2.0": - resolution: - { - integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==, - } - engines: { node: ">=16.0.0" } - - "@aws-crypto/supports-web-crypto@3.0.0": - resolution: - { - integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==, - } - - "@aws-crypto/supports-web-crypto@5.2.0": - resolution: - { - integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==, - } - - "@aws-crypto/util@3.0.0": - resolution: - { - integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==, - } - - "@aws-crypto/util@5.2.0": - resolution: - { - integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==, - } - - "@aws-sdk/client-cloudfront@3.398.0": - resolution: - { - integrity: sha512-kISKhqN1k48TaMPbLgq9jj7mO2jvbJdhirvfu4JW3jhFhENnkY0oCwTPvR4Q6Ne2as6GFAMo2XZDZq4rxC7YDw==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/client-dynamodb@3.868.0": - resolution: - { - integrity: sha512-a2uKLRplH3vTHgTHr+MaZ1YH0Sy0yVHK9rhM/drktxgXehMf4p7dZtt783c9SEupZvo46LxXryvwifoUdL4nRg==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/client-lambda@3.865.0": - resolution: - { - integrity: sha512-ncCEW/kNRV8yJA/45z5HO6WEeihADzFY7RISfezDbvP3/X4dZb2gycRVPmJIE6CBqf01jwTkbG36qO+/iHIELg==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/client-s3@3.864.0": - resolution: - { - integrity: sha512-QGYi9bWliewxumsvbJLLyx9WC0a4DP4F+utygBcq0zwPxaM0xDfBspQvP1dsepi7mW5aAjZmJ2+Xb7X0EhzJ/g==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/client-sqs@3.864.0": - resolution: - { - integrity: sha512-SxEdQW/g2hb7/O4juAQL0kOD86/QBUSNkdJ5rN3Nd04rJmYTCxe38iCJBT637n+hiedxThLuj8H9ZmY1/OSg7Q==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/client-sso@3.398.0": - resolution: - { - integrity: sha512-CygL0jhfibw4kmWXG/3sfZMFNjcXo66XUuPC4BqZBk8Rj5vFoxp1vZeMkDLzTIk97Nvo5J5Bh+QnXKhub6AckQ==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/client-sso@3.864.0": - resolution: - { - integrity: sha512-THiOp0OpQROEKZ6IdDCDNNh3qnNn/kFFaTSOiugDpgcE5QdsOxh1/RXq7LmHpTJum3cmnFf8jG59PHcz9Tjnlw==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/client-sts@3.398.0": - resolution: - { - integrity: sha512-/3Pa9wLMvBZipKraq3AtbmTfXW6q9kyvhwOno64f1Fz7kFb8ijQFMGoATS70B2pGEZTlxkUqJFWDiisT6Q6dFg==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/core@3.864.0": - resolution: - { - integrity: sha512-LFUREbobleHEln+Zf7IG83lAZwvHZG0stI7UU0CtwyuhQy5Yx0rKksHNOCmlM7MpTEbSCfntEhYi3jUaY5e5lg==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/credential-provider-env@3.398.0": - resolution: - { - integrity: sha512-Z8Yj5z7FroAsR6UVML+XUdlpoqEe9Dnle8c2h8/xWwIC2feTfIBhjLhRVxfbpbM1pLgBSNEcZ7U8fwq5l7ESVQ==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/credential-provider-env@3.864.0": - resolution: - { - integrity: sha512-StJPOI2Rt8UE6lYjXUpg6tqSZaM72xg46ljPg8kIevtBAAfdtq9K20qT/kSliWGIBocMFAv0g2mC0hAa+ECyvg==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/credential-provider-http@3.864.0": - resolution: - { - integrity: sha512-E/RFVxGTuGnuD+9pFPH2j4l6HvrXzPhmpL8H8nOoJUosjx7d4v93GJMbbl1v/fkDLqW9qN4Jx2cI6PAjohA6OA==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/credential-provider-ini@3.398.0": - resolution: - { - integrity: sha512-AsK1lStK3nB9Cn6S6ODb1ktGh7SRejsNVQVKX3t5d3tgOaX+aX1Iwy8FzM/ZEN8uCloeRifUGIY9uQFygg5mSw==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/credential-provider-ini@3.864.0": - resolution: - { - integrity: sha512-PlxrijguR1gxyPd5EYam6OfWLarj2MJGf07DvCx9MAuQkw77HBnsu6+XbV8fQriFuoJVTBLn9ROhMr/ROAYfUg==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/credential-provider-node@3.398.0": - resolution: - { - integrity: sha512-odmI/DSKfuWUYeDnGTCEHBbC8/MwnF6yEq874zl6+owoVv0ZsYP8qBHfiJkYqrwg7wQ7Pi40sSAPC1rhesGwzg==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/credential-provider-node@3.864.0": - resolution: - { - integrity: sha512-2BEymFeXURS+4jE9tP3vahPwbYRl0/1MVaFZcijj6pq+nf5EPGvkFillbdBRdc98ZI2NedZgSKu3gfZXgYdUhQ==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/credential-provider-process@3.398.0": - resolution: - { - integrity: sha512-WrkBL1W7TXN508PA9wRXPFtzmGpVSW98gDaHEaa8GolAPHMPa5t2QcC/z/cFpglzrcVv8SA277zu9Z8tELdZhg==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/credential-provider-process@3.864.0": - resolution: - { - integrity: sha512-Zxnn1hxhq7EOqXhVYgkF4rI9MnaO3+6bSg/tErnBQ3F8kDpA7CFU24G1YxwaJXp2X4aX3LwthefmSJHwcVP/2g==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/credential-provider-sso@3.398.0": - resolution: - { - integrity: sha512-2Dl35587xbnzR/GGZqA2MnFs8+kS4wbHQO9BioU0okA+8NRueohNMdrdQmQDdSNK4BfIpFspiZmFkXFNyEAfgw==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/credential-provider-sso@3.864.0": - resolution: - { - integrity: sha512-UPyPNQbxDwHVGmgWdGg9/9yvzuedRQVF5jtMkmP565YX9pKZ8wYAcXhcYdNPWFvH0GYdB0crKOmvib+bmCuwkw==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/credential-provider-web-identity@3.398.0": - resolution: - { - integrity: sha512-iG3905Alv9pINbQ8/MIsshgqYMbWx+NDQWpxbIW3W0MkSH3iAqdVpSCteYidYX9G/jv2Um1nW3y360ib20bvNg==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/credential-provider-web-identity@3.864.0": - resolution: - { - integrity: sha512-nNcjPN4SYg8drLwqK0vgVeSvxeGQiD0FxOaT38mV2H8cu0C5NzpvA+14Xy+W6vT84dxgmJYKk71Cr5QL2Oz+rA==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/endpoint-cache@3.804.0": - resolution: - { - integrity: sha512-TQVDkA/lV6ua75ELZaichMzlp6x7tDa1bqdy/+0ZftmODPtKXuOOEcJxmdN7Ui/YRo1gkRz2D9txYy7IlNg1Og==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/middleware-bucket-endpoint@3.862.0": - resolution: - { - integrity: sha512-Wcsc7VPLjImQw+CP1/YkwyofMs9Ab6dVq96iS8p0zv0C6YTaMjvillkau4zFfrrrTshdzFWKptIFhKK8Zsei1g==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/middleware-endpoint-discovery@3.862.0": - resolution: - { - integrity: sha512-43KnrSlzsa6/locegW9SLe/kMv51PPPAslDbBuLVtLcFUNWuCE7wgKTTzMPeA+NJQHKuJTFRR2TLKPYEs+4VJA==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/middleware-expect-continue@3.862.0": - resolution: - { - integrity: sha512-oG3AaVUJ+26p0ESU4INFn6MmqqiBFZGrebST66Or+YBhteed2rbbFl7mCfjtPWUFgquQlvT1UP19P3LjQKeKpw==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/middleware-flexible-checksums@3.864.0": - resolution: - { - integrity: sha512-MvakvzPZi9uyP3YADuIqtk/FAcPFkyYFWVVMf5iFs/rCdk0CUzn02Qf4CSuyhbkS6Y0KrAsMgKR4MgklPU79Wg==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/middleware-host-header@3.398.0": - resolution: - { - integrity: sha512-m+5laWdBaxIZK2ko0OwcCHJZJ5V1MgEIt8QVQ3k4/kOkN9ICjevOYmba751pHoTnbOYB7zQd6D2OT3EYEEsUcA==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/middleware-host-header@3.862.0": - resolution: - { - integrity: sha512-jDje8dCFeFHfuCAxMDXBs8hy8q9NCTlyK4ThyyfAj3U4Pixly2mmzY2u7b7AyGhWsjJNx8uhTjlYq5zkQPQCYw==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/middleware-location-constraint@3.862.0": - resolution: - { - integrity: sha512-MnwLxCw7Cc9OngEH3SHFhrLlDI9WVxaBkp3oTsdY9JE7v8OE38wQ9vtjaRsynjwu0WRtrctSHbpd7h/QVvtjyA==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/middleware-logger@3.398.0": - resolution: - { - integrity: sha512-CiJjW+FL12elS6Pn7/UVjVK8HWHhXMfvHZvOwx/Qkpy340sIhkuzOO6fZEruECDTZhl2Wqn81XdJ1ZQ4pRKpCg==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/middleware-logger@3.862.0": - resolution: - { - integrity: sha512-N/bXSJznNBR/i7Ofmf9+gM6dx/SPBK09ZWLKsW5iQjqKxAKn/2DozlnE54uiEs1saHZWoNDRg69Ww4XYYSlG1Q==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/middleware-recursion-detection@3.398.0": - resolution: - { - integrity: sha512-7QpOqPQAZNXDXv6vsRex4R8dLniL0E/80OPK4PPFsrCh9btEyhN9Begh4i1T+5lL28hmYkztLOkTQ2N5J3hgRQ==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/middleware-recursion-detection@3.862.0": - resolution: - { - integrity: sha512-KVoo3IOzEkTq97YKM4uxZcYFSNnMkhW/qj22csofLegZi5fk90ztUnnaeKfaEJHfHp/tm1Y3uSoOXH45s++kKQ==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/middleware-sdk-s3@3.864.0": - resolution: - { - integrity: sha512-GjYPZ6Xnqo17NnC8NIQyvvdzzO7dm+Ks7gpxD/HsbXPmV2aEfuFveJXneGW9e1BheSKFff6FPDWu8Gaj2Iu1yg==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/middleware-sdk-sqs@3.862.0": - resolution: - { - integrity: sha512-DBX+xTAd3uhMYUFI3wIoSQYBmVFmq918Ah2t/NhTtkNmiuHAFxCy4fSzSklt9qS0i1WzccJEqOZNmqxGEFtolA==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/middleware-sdk-sts@3.398.0": - resolution: - { - integrity: sha512-+JH76XHEgfVihkY+GurohOQ5Z83zVN1nYcQzwCFnCDTh4dG4KwhnZKG+WPw6XJECocY0R+H0ivofeALHvVWJtQ==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/middleware-signing@3.398.0": - resolution: - { - integrity: sha512-O0KqXAix1TcvZBFt1qoFkHMUNJOSgjJTYS7lFTRKSwgsD27bdW2TM2r9R8DAccWFt5Amjkdt+eOwQMIXPGTm8w==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/middleware-ssec@3.862.0": - resolution: - { - integrity: sha512-72VtP7DZC8lYTE2L3Efx2BrD98oe9WTK8X6hmd3WTLkbIjvgWQWIdjgaFXBs8WevsXkewIctfyA3KEezvL5ggw==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/middleware-user-agent@3.398.0": - resolution: - { - integrity: sha512-nF1jg0L+18b5HvTcYzwyFgfZQQMELJINFqI0mi4yRKaX7T5a3aGp5RVLGGju/6tAGTuFbfBoEhkhU3kkxexPYQ==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/middleware-user-agent@3.864.0": - resolution: - { - integrity: sha512-wrddonw4EyLNSNBrApzEhpSrDwJiNfjxDm5E+bn8n32BbAojXASH8W8jNpxz/jMgNkkJNxCfyqybGKzBX0OhbQ==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/nested-clients@3.864.0": - resolution: - { - integrity: sha512-H1C+NjSmz2y8Tbgh7Yy89J20yD/hVyk15hNoZDbCYkXg0M358KS7KVIEYs8E2aPOCr1sK3HBE819D/yvdMgokA==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/region-config-resolver@3.862.0": - resolution: - { - integrity: sha512-VisR+/HuVFICrBPY+q9novEiE4b3mvDofWqyvmxHcWM7HumTz9ZQSuEtnlB/92GVM3KDUrR9EmBHNRrfXYZkcQ==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/signature-v4-multi-region@3.864.0": - resolution: - { - integrity: sha512-w2HIn/WIcUyv1bmyCpRUKHXB5KdFGzyxPkp/YK5g+/FuGdnFFYWGfcO8O+How4jwrZTarBYsAHW9ggoKvwr37w==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/token-providers@3.398.0": - resolution: - { - integrity: sha512-nrYgjzavGCKJL/48Vt0EL+OlIc5UZLfNGpgyUW9cv3XZwl+kXV0QB+HH0rHZZLfpbBgZ2RBIJR9uD5ieu/6hpQ==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/token-providers@3.864.0": - resolution: - { - integrity: sha512-gTc2QHOBo05SCwVA65dUtnJC6QERvFaPiuppGDSxoF7O5AQNK0UR/kMSenwLqN8b5E1oLYvQTv3C1idJLRX0cg==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/types@3.398.0": - resolution: - { - integrity: sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/types@3.862.0": - resolution: - { - integrity: sha512-Bei+RL0cDxxV+lW2UezLbCYYNeJm6Nzee0TpW0FfyTRBhH9C1XQh4+x+IClriXvgBnRquTMMYsmJfvx8iyLKrg==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/util-arn-parser@3.804.0": - resolution: - { - integrity: sha512-wmBJqn1DRXnZu3b4EkE6CWnoWMo1ZMvlfkqU5zPz67xx1GMaXlDCchFvKAXMjk4jn/L1O3tKnoFDNsoLV1kgNQ==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/util-endpoints@3.398.0": - resolution: - { - integrity: sha512-Fy0gLYAei/Rd6BrXG4baspCnWTUSd0NdokU1pZh4KlfEAEN1i8SPPgfiO5hLk7+2inqtCmqxVJlfqbMVe9k4bw==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/util-endpoints@3.862.0": - resolution: - { - integrity: sha512-eCZuScdE9MWWkHGM2BJxm726MCmWk/dlHjOKvkM0sN1zxBellBMw5JohNss1Z8/TUmnW2gb9XHTOiHuGjOdksA==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/util-locate-window@3.804.0": - resolution: - { - integrity: sha512-zVoRfpmBVPodYlnMjgVjfGoEZagyRF5IPn3Uo6ZvOZp24chnW/FRstH7ESDHDDRga4z3V+ElUQHKpFDXWyBW5A==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/util-user-agent-browser@3.398.0": - resolution: - { - integrity: sha512-A3Tzx1tkDHlBT+IgxmsMCHbV8LM7SwwCozq2ZjJRx0nqw3MCrrcxQFXldHeX/gdUMO+0Oocb7HGSnVODTq+0EA==, - } - - "@aws-sdk/util-user-agent-browser@3.862.0": - resolution: - { - integrity: sha512-BmPTlm0r9/10MMr5ND9E92r8KMZbq5ltYXYpVcUbAsnB1RJ8ASJuRoLne5F7mB3YMx0FJoOTuSq7LdQM3LgW3Q==, - } - - "@aws-sdk/util-user-agent-node@3.398.0": - resolution: - { - integrity: sha512-RTVQofdj961ej4//fEkppFf4KXqKGMTCqJYghx3G0C/MYXbg7MGl7LjfNGtJcboRE8pfHHQ/TUWBDA7RIAPPlQ==, - } - engines: { node: ">=14.0.0" } - peerDependencies: - aws-crt: ">=1.0.0" + '@ast-grep/napi@0.35.0': + resolution: {integrity: sha512-3ucaaSxV6fxXoqHrE/rxAvP1THnDdY5jNzGlnvx+JvnY9C/dSRKc0jlRMRz59N3El572+/yNRUUpAV1T9aBJug==} + engines: {node: '>= 10'} + + '@auth/core@0.40.0': + resolution: {integrity: sha512-n53uJE0RH5SqZ7N1xZoMKekbHfQgjd0sAEyUbE+IYJnmuQkbvuZnXItCU7d+i7Fj8VGOgqvNO7Mw4YfBTlZeQw==} + peerDependencies: + '@simplewebauthn/browser': ^9.0.1 + '@simplewebauthn/server': ^9.0.2 + nodemailer: ^6.8.0 + peerDependenciesMeta: + '@simplewebauthn/browser': + optional: true + '@simplewebauthn/server': + optional: true + nodemailer: + optional: true + + '@auth/prisma-adapter@2.10.0': + resolution: {integrity: sha512-EliOQoTjGK87jWWqnJvlQjbR4PjQZQqtwRwPAe108WwT9ubuuJJIrL68aNnQr4hFESz6P7SEX2bZy+y2yL37Gw==} + peerDependencies: + '@prisma/client': '>=2.26.0 || >=3 || >=4 || >=5 || >=6' + + '@aws-crypto/crc32@5.2.0': + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/crc32c@5.2.0': + resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} + + '@aws-crypto/ie11-detection@3.0.0': + resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==} + + '@aws-crypto/sha1-browser@5.2.0': + resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} + + '@aws-crypto/sha256-browser@3.0.0': + resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==} + + '@aws-crypto/sha256-browser@5.2.0': + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + + '@aws-crypto/sha256-js@3.0.0': + resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} + + '@aws-crypto/sha256-js@5.2.0': + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/supports-web-crypto@3.0.0': + resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==} + + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + + '@aws-crypto/util@3.0.0': + resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} + + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + + '@aws-sdk/client-cloudfront@3.398.0': + resolution: {integrity: sha512-kISKhqN1k48TaMPbLgq9jj7mO2jvbJdhirvfu4JW3jhFhENnkY0oCwTPvR4Q6Ne2as6GFAMo2XZDZq4rxC7YDw==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/client-dynamodb@3.868.0': + resolution: {integrity: sha512-a2uKLRplH3vTHgTHr+MaZ1YH0Sy0yVHK9rhM/drktxgXehMf4p7dZtt783c9SEupZvo46LxXryvwifoUdL4nRg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/client-lambda@3.865.0': + resolution: {integrity: sha512-ncCEW/kNRV8yJA/45z5HO6WEeihADzFY7RISfezDbvP3/X4dZb2gycRVPmJIE6CBqf01jwTkbG36qO+/iHIELg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/client-s3@3.864.0': + resolution: {integrity: sha512-QGYi9bWliewxumsvbJLLyx9WC0a4DP4F+utygBcq0zwPxaM0xDfBspQvP1dsepi7mW5aAjZmJ2+Xb7X0EhzJ/g==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/client-sqs@3.864.0': + resolution: {integrity: sha512-SxEdQW/g2hb7/O4juAQL0kOD86/QBUSNkdJ5rN3Nd04rJmYTCxe38iCJBT637n+hiedxThLuj8H9ZmY1/OSg7Q==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/client-sso@3.398.0': + resolution: {integrity: sha512-CygL0jhfibw4kmWXG/3sfZMFNjcXo66XUuPC4BqZBk8Rj5vFoxp1vZeMkDLzTIk97Nvo5J5Bh+QnXKhub6AckQ==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/client-sso@3.864.0': + resolution: {integrity: sha512-THiOp0OpQROEKZ6IdDCDNNh3qnNn/kFFaTSOiugDpgcE5QdsOxh1/RXq7LmHpTJum3cmnFf8jG59PHcz9Tjnlw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/client-sts@3.398.0': + resolution: {integrity: sha512-/3Pa9wLMvBZipKraq3AtbmTfXW6q9kyvhwOno64f1Fz7kFb8ijQFMGoATS70B2pGEZTlxkUqJFWDiisT6Q6dFg==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/core@3.864.0': + resolution: {integrity: sha512-LFUREbobleHEln+Zf7IG83lAZwvHZG0stI7UU0CtwyuhQy5Yx0rKksHNOCmlM7MpTEbSCfntEhYi3jUaY5e5lg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-env@3.398.0': + resolution: {integrity: sha512-Z8Yj5z7FroAsR6UVML+XUdlpoqEe9Dnle8c2h8/xWwIC2feTfIBhjLhRVxfbpbM1pLgBSNEcZ7U8fwq5l7ESVQ==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/credential-provider-env@3.864.0': + resolution: {integrity: sha512-StJPOI2Rt8UE6lYjXUpg6tqSZaM72xg46ljPg8kIevtBAAfdtq9K20qT/kSliWGIBocMFAv0g2mC0hAa+ECyvg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-http@3.864.0': + resolution: {integrity: sha512-E/RFVxGTuGnuD+9pFPH2j4l6HvrXzPhmpL8H8nOoJUosjx7d4v93GJMbbl1v/fkDLqW9qN4Jx2cI6PAjohA6OA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-ini@3.398.0': + resolution: {integrity: sha512-AsK1lStK3nB9Cn6S6ODb1ktGh7SRejsNVQVKX3t5d3tgOaX+aX1Iwy8FzM/ZEN8uCloeRifUGIY9uQFygg5mSw==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/credential-provider-ini@3.864.0': + resolution: {integrity: sha512-PlxrijguR1gxyPd5EYam6OfWLarj2MJGf07DvCx9MAuQkw77HBnsu6+XbV8fQriFuoJVTBLn9ROhMr/ROAYfUg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-node@3.398.0': + resolution: {integrity: sha512-odmI/DSKfuWUYeDnGTCEHBbC8/MwnF6yEq874zl6+owoVv0ZsYP8qBHfiJkYqrwg7wQ7Pi40sSAPC1rhesGwzg==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/credential-provider-node@3.864.0': + resolution: {integrity: sha512-2BEymFeXURS+4jE9tP3vahPwbYRl0/1MVaFZcijj6pq+nf5EPGvkFillbdBRdc98ZI2NedZgSKu3gfZXgYdUhQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-process@3.398.0': + resolution: {integrity: sha512-WrkBL1W7TXN508PA9wRXPFtzmGpVSW98gDaHEaa8GolAPHMPa5t2QcC/z/cFpglzrcVv8SA277zu9Z8tELdZhg==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/credential-provider-process@3.864.0': + resolution: {integrity: sha512-Zxnn1hxhq7EOqXhVYgkF4rI9MnaO3+6bSg/tErnBQ3F8kDpA7CFU24G1YxwaJXp2X4aX3LwthefmSJHwcVP/2g==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-sso@3.398.0': + resolution: {integrity: sha512-2Dl35587xbnzR/GGZqA2MnFs8+kS4wbHQO9BioU0okA+8NRueohNMdrdQmQDdSNK4BfIpFspiZmFkXFNyEAfgw==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/credential-provider-sso@3.864.0': + resolution: {integrity: sha512-UPyPNQbxDwHVGmgWdGg9/9yvzuedRQVF5jtMkmP565YX9pKZ8wYAcXhcYdNPWFvH0GYdB0crKOmvib+bmCuwkw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.398.0': + resolution: {integrity: sha512-iG3905Alv9pINbQ8/MIsshgqYMbWx+NDQWpxbIW3W0MkSH3iAqdVpSCteYidYX9G/jv2Um1nW3y360ib20bvNg==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.864.0': + resolution: {integrity: sha512-nNcjPN4SYg8drLwqK0vgVeSvxeGQiD0FxOaT38mV2H8cu0C5NzpvA+14Xy+W6vT84dxgmJYKk71Cr5QL2Oz+rA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/endpoint-cache@3.804.0': + resolution: {integrity: sha512-TQVDkA/lV6ua75ELZaichMzlp6x7tDa1bqdy/+0ZftmODPtKXuOOEcJxmdN7Ui/YRo1gkRz2D9txYy7IlNg1Og==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-bucket-endpoint@3.862.0': + resolution: {integrity: sha512-Wcsc7VPLjImQw+CP1/YkwyofMs9Ab6dVq96iS8p0zv0C6YTaMjvillkau4zFfrrrTshdzFWKptIFhKK8Zsei1g==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-endpoint-discovery@3.862.0': + resolution: {integrity: sha512-43KnrSlzsa6/locegW9SLe/kMv51PPPAslDbBuLVtLcFUNWuCE7wgKTTzMPeA+NJQHKuJTFRR2TLKPYEs+4VJA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-expect-continue@3.862.0': + resolution: {integrity: sha512-oG3AaVUJ+26p0ESU4INFn6MmqqiBFZGrebST66Or+YBhteed2rbbFl7mCfjtPWUFgquQlvT1UP19P3LjQKeKpw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-flexible-checksums@3.864.0': + resolution: {integrity: sha512-MvakvzPZi9uyP3YADuIqtk/FAcPFkyYFWVVMf5iFs/rCdk0CUzn02Qf4CSuyhbkS6Y0KrAsMgKR4MgklPU79Wg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-host-header@3.398.0': + resolution: {integrity: sha512-m+5laWdBaxIZK2ko0OwcCHJZJ5V1MgEIt8QVQ3k4/kOkN9ICjevOYmba751pHoTnbOYB7zQd6D2OT3EYEEsUcA==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/middleware-host-header@3.862.0': + resolution: {integrity: sha512-jDje8dCFeFHfuCAxMDXBs8hy8q9NCTlyK4ThyyfAj3U4Pixly2mmzY2u7b7AyGhWsjJNx8uhTjlYq5zkQPQCYw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-location-constraint@3.862.0': + resolution: {integrity: sha512-MnwLxCw7Cc9OngEH3SHFhrLlDI9WVxaBkp3oTsdY9JE7v8OE38wQ9vtjaRsynjwu0WRtrctSHbpd7h/QVvtjyA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-logger@3.398.0': + resolution: {integrity: sha512-CiJjW+FL12elS6Pn7/UVjVK8HWHhXMfvHZvOwx/Qkpy340sIhkuzOO6fZEruECDTZhl2Wqn81XdJ1ZQ4pRKpCg==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/middleware-logger@3.862.0': + resolution: {integrity: sha512-N/bXSJznNBR/i7Ofmf9+gM6dx/SPBK09ZWLKsW5iQjqKxAKn/2DozlnE54uiEs1saHZWoNDRg69Ww4XYYSlG1Q==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-recursion-detection@3.398.0': + resolution: {integrity: sha512-7QpOqPQAZNXDXv6vsRex4R8dLniL0E/80OPK4PPFsrCh9btEyhN9Begh4i1T+5lL28hmYkztLOkTQ2N5J3hgRQ==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/middleware-recursion-detection@3.862.0': + resolution: {integrity: sha512-KVoo3IOzEkTq97YKM4uxZcYFSNnMkhW/qj22csofLegZi5fk90ztUnnaeKfaEJHfHp/tm1Y3uSoOXH45s++kKQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-sdk-s3@3.864.0': + resolution: {integrity: sha512-GjYPZ6Xnqo17NnC8NIQyvvdzzO7dm+Ks7gpxD/HsbXPmV2aEfuFveJXneGW9e1BheSKFff6FPDWu8Gaj2Iu1yg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-sdk-sqs@3.862.0': + resolution: {integrity: sha512-DBX+xTAd3uhMYUFI3wIoSQYBmVFmq918Ah2t/NhTtkNmiuHAFxCy4fSzSklt9qS0i1WzccJEqOZNmqxGEFtolA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-sdk-sts@3.398.0': + resolution: {integrity: sha512-+JH76XHEgfVihkY+GurohOQ5Z83zVN1nYcQzwCFnCDTh4dG4KwhnZKG+WPw6XJECocY0R+H0ivofeALHvVWJtQ==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/middleware-signing@3.398.0': + resolution: {integrity: sha512-O0KqXAix1TcvZBFt1qoFkHMUNJOSgjJTYS7lFTRKSwgsD27bdW2TM2r9R8DAccWFt5Amjkdt+eOwQMIXPGTm8w==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/middleware-ssec@3.862.0': + resolution: {integrity: sha512-72VtP7DZC8lYTE2L3Efx2BrD98oe9WTK8X6hmd3WTLkbIjvgWQWIdjgaFXBs8WevsXkewIctfyA3KEezvL5ggw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-user-agent@3.398.0': + resolution: {integrity: sha512-nF1jg0L+18b5HvTcYzwyFgfZQQMELJINFqI0mi4yRKaX7T5a3aGp5RVLGGju/6tAGTuFbfBoEhkhU3kkxexPYQ==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/middleware-user-agent@3.864.0': + resolution: {integrity: sha512-wrddonw4EyLNSNBrApzEhpSrDwJiNfjxDm5E+bn8n32BbAojXASH8W8jNpxz/jMgNkkJNxCfyqybGKzBX0OhbQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/nested-clients@3.864.0': + resolution: {integrity: sha512-H1C+NjSmz2y8Tbgh7Yy89J20yD/hVyk15hNoZDbCYkXg0M358KS7KVIEYs8E2aPOCr1sK3HBE819D/yvdMgokA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/region-config-resolver@3.862.0': + resolution: {integrity: sha512-VisR+/HuVFICrBPY+q9novEiE4b3mvDofWqyvmxHcWM7HumTz9ZQSuEtnlB/92GVM3KDUrR9EmBHNRrfXYZkcQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/signature-v4-multi-region@3.864.0': + resolution: {integrity: sha512-w2HIn/WIcUyv1bmyCpRUKHXB5KdFGzyxPkp/YK5g+/FuGdnFFYWGfcO8O+How4jwrZTarBYsAHW9ggoKvwr37w==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/token-providers@3.398.0': + resolution: {integrity: sha512-nrYgjzavGCKJL/48Vt0EL+OlIc5UZLfNGpgyUW9cv3XZwl+kXV0QB+HH0rHZZLfpbBgZ2RBIJR9uD5ieu/6hpQ==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/token-providers@3.864.0': + resolution: {integrity: sha512-gTc2QHOBo05SCwVA65dUtnJC6QERvFaPiuppGDSxoF7O5AQNK0UR/kMSenwLqN8b5E1oLYvQTv3C1idJLRX0cg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/types@3.398.0': + resolution: {integrity: sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/types@3.862.0': + resolution: {integrity: sha512-Bei+RL0cDxxV+lW2UezLbCYYNeJm6Nzee0TpW0FfyTRBhH9C1XQh4+x+IClriXvgBnRquTMMYsmJfvx8iyLKrg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-arn-parser@3.804.0': + resolution: {integrity: sha512-wmBJqn1DRXnZu3b4EkE6CWnoWMo1ZMvlfkqU5zPz67xx1GMaXlDCchFvKAXMjk4jn/L1O3tKnoFDNsoLV1kgNQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-endpoints@3.398.0': + resolution: {integrity: sha512-Fy0gLYAei/Rd6BrXG4baspCnWTUSd0NdokU1pZh4KlfEAEN1i8SPPgfiO5hLk7+2inqtCmqxVJlfqbMVe9k4bw==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/util-endpoints@3.862.0': + resolution: {integrity: sha512-eCZuScdE9MWWkHGM2BJxm726MCmWk/dlHjOKvkM0sN1zxBellBMw5JohNss1Z8/TUmnW2gb9XHTOiHuGjOdksA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-locate-window@3.804.0': + resolution: {integrity: sha512-zVoRfpmBVPodYlnMjgVjfGoEZagyRF5IPn3Uo6ZvOZp24chnW/FRstH7ESDHDDRga4z3V+ElUQHKpFDXWyBW5A==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-user-agent-browser@3.398.0': + resolution: {integrity: sha512-A3Tzx1tkDHlBT+IgxmsMCHbV8LM7SwwCozq2ZjJRx0nqw3MCrrcxQFXldHeX/gdUMO+0Oocb7HGSnVODTq+0EA==} + + '@aws-sdk/util-user-agent-browser@3.862.0': + resolution: {integrity: sha512-BmPTlm0r9/10MMr5ND9E92r8KMZbq5ltYXYpVcUbAsnB1RJ8ASJuRoLne5F7mB3YMx0FJoOTuSq7LdQM3LgW3Q==} + + '@aws-sdk/util-user-agent-node@3.398.0': + resolution: {integrity: sha512-RTVQofdj961ej4//fEkppFf4KXqKGMTCqJYghx3G0C/MYXbg7MGl7LjfNGtJcboRE8pfHHQ/TUWBDA7RIAPPlQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' peerDependenciesMeta: aws-crt: optional: true - "@aws-sdk/util-user-agent-node@3.864.0": - resolution: - { - integrity: sha512-d+FjUm2eJEpP+FRpVR3z6KzMdx1qwxEYDz8jzNKwxYLBBquaBaP/wfoMtMQKAcbrR7aT9FZVZF7zDgzNxUvQlQ==, - } - engines: { node: ">=18.0.0" } + '@aws-sdk/util-user-agent-node@3.864.0': + resolution: {integrity: sha512-d+FjUm2eJEpP+FRpVR3z6KzMdx1qwxEYDz8jzNKwxYLBBquaBaP/wfoMtMQKAcbrR7aT9FZVZF7zDgzNxUvQlQ==} + engines: {node: '>=18.0.0'} peerDependencies: - aws-crt: ">=1.0.0" + aws-crt: '>=1.0.0' peerDependenciesMeta: aws-crt: optional: true - "@aws-sdk/util-utf8-browser@3.259.0": - resolution: - { - integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==, - } - - "@aws-sdk/xml-builder@3.310.0": - resolution: - { - integrity: sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/xml-builder@3.862.0": - resolution: - { - integrity: sha512-6Ed0kmC1NMbuFTEgNmamAUU1h5gShgxL1hBVLbEzUa3trX5aJBz1vU4bXaBTvOYUAnOHtiy1Ml4AMStd6hJnFA==, - } - engines: { node: ">=18.0.0" } - - "@babel/code-frame@7.10.4": - resolution: - { - integrity: sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==, - } - - "@babel/code-frame@7.27.1": - resolution: - { - integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==, - } - engines: { node: ">=6.9.0" } - - "@babel/compat-data@7.28.0": - resolution: - { - integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==, - } - engines: { node: ">=6.9.0" } - - "@babel/core@7.28.3": - resolution: - { - integrity: sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==, - } - engines: { node: ">=6.9.0" } - - "@babel/eslint-parser@7.28.0": - resolution: - { - integrity: sha512-N4ntErOlKvcbTt01rr5wj3y55xnIdx1ymrfIr8C2WnM1Y9glFgWaGDEULJIazOX3XM9NRzhfJ6zZnQ1sBNWU+w==, - } - engines: { node: ^10.13.0 || ^12.13.0 || >=14.0.0 } - peerDependencies: - "@babel/core": ^7.11.0 + '@aws-sdk/util-utf8-browser@3.259.0': + resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} + + '@aws-sdk/xml-builder@3.310.0': + resolution: {integrity: sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/xml-builder@3.862.0': + resolution: {integrity: sha512-6Ed0kmC1NMbuFTEgNmamAUU1h5gShgxL1hBVLbEzUa3trX5aJBz1vU4bXaBTvOYUAnOHtiy1Ml4AMStd6hJnFA==} + engines: {node: '>=18.0.0'} + + '@babel/code-frame@7.10.4': + resolution: {integrity: sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==} + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.28.0': + resolution: {integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.28.3': + resolution: {integrity: sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==} + engines: {node: '>=6.9.0'} + + '@babel/eslint-parser@7.28.0': + resolution: {integrity: sha512-N4ntErOlKvcbTt01rr5wj3y55xnIdx1ymrfIr8C2WnM1Y9glFgWaGDEULJIazOX3XM9NRzhfJ6zZnQ1sBNWU+w==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': ^7.11.0 eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - "@babel/generator@7.28.3": - resolution: - { - integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-annotate-as-pure@7.27.3": - resolution: - { - integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-compilation-targets@7.27.2": - resolution: - { - integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-create-class-features-plugin@7.28.3": - resolution: - { - integrity: sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/helper-create-regexp-features-plugin@7.27.1": - resolution: - { - integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/helper-define-polyfill-provider@0.6.5": - resolution: - { - integrity: sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==, - } - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - - "@babel/helper-globals@7.28.0": - resolution: - { - integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-member-expression-to-functions@7.27.1": - resolution: - { - integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-module-imports@7.27.1": - resolution: - { - integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-module-transforms@7.28.3": - resolution: - { - integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/helper-optimise-call-expression@7.27.1": - resolution: - { - integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-plugin-utils@7.27.1": - resolution: - { - integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-remap-async-to-generator@7.27.1": - resolution: - { - integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/helper-replace-supers@7.27.1": - resolution: - { - integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/helper-skip-transparent-expression-wrappers@7.27.1": - resolution: - { - integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-string-parser@7.27.1": - resolution: - { - integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-validator-identifier@7.27.1": - resolution: - { - integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-validator-option@7.27.1": - resolution: - { - integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-wrap-function@7.28.3": - resolution: - { - integrity: sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==, - } - engines: { node: ">=6.9.0" } - - "@babel/helpers@7.28.3": - resolution: - { - integrity: sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw==, - } - engines: { node: ">=6.9.0" } - - "@babel/highlight@7.25.9": - resolution: - { - integrity: sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==, - } - engines: { node: ">=6.9.0" } - - "@babel/parser@7.28.3": - resolution: - { - integrity: sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==, - } - engines: { node: ">=6.0.0" } + '@babel/generator@7.28.3': + resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.27.3': + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.28.3': + resolution: {integrity: sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.27.1': + resolution: {integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.5': + resolution: {integrity: sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.27.1': + resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.28.3': + resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.27.1': + resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.27.1': + resolution: {integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.27.1': + resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.28.3': + resolution: {integrity: sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.28.3': + resolution: {integrity: sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.25.9': + resolution: {integrity: sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.28.3': + resolution: {integrity: sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==} + engines: {node: '>=6.0.0'} hasBin: true - "@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1": - resolution: - { - integrity: sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1": - resolution: - { - integrity: sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1": - resolution: - { - integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1": - resolution: - { - integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.13.0 - - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3": - resolution: - { - integrity: sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/plugin-proposal-class-properties@7.18.6": - resolution: - { - integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1': + resolution: {integrity: sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1': + resolution: {integrity: sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1': + resolution: {integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1': + resolution: {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3': + resolution: {integrity: sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-proposal-class-properties@7.18.6': + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-proposal-decorators@7.28.0": - resolution: - { - integrity: sha512-zOiZqvANjWDUaUS9xMxbMcK/Zccztbe/6ikvUXaG9nsPH3w6qh5UaPGAnirI/WhIbZ8m3OHU0ReyPrknG+ZKeg==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-proposal-decorators@7.28.0': + resolution: {integrity: sha512-zOiZqvANjWDUaUS9xMxbMcK/Zccztbe/6ikvUXaG9nsPH3w6qh5UaPGAnirI/WhIbZ8m3OHU0ReyPrknG+ZKeg==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-proposal-export-default-from@7.27.1": - resolution: - { - integrity: sha512-hjlsMBl1aJc5lp8MoCDEZCiYzlgdRAShOjAfRw6X+GlpLpUPU7c3XNLsKFZbQk/1cRzBlJ7CXg3xJAJMrFa1Uw==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-proposal-export-default-from@7.27.1': + resolution: {integrity: sha512-hjlsMBl1aJc5lp8MoCDEZCiYzlgdRAShOjAfRw6X+GlpLpUPU7c3XNLsKFZbQk/1cRzBlJ7CXg3xJAJMrFa1Uw==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-proposal-nullish-coalescing-operator@7.18.6": - resolution: - { - integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-proposal-optional-chaining@7.21.0": - resolution: - { - integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-proposal-optional-chaining@7.21.0': + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": - resolution: - { - integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-async-generators@7.8.4": - resolution: - { - integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-bigint@7.8.3": - resolution: - { - integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-class-properties@7.12.13": - resolution: - { - integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-class-static-block@7.14.5": - resolution: - { - integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-decorators@7.27.1": - resolution: - { - integrity: sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-dynamic-import@7.8.3": - resolution: - { - integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-export-default-from@7.27.1": - resolution: - { - integrity: sha512-eBC/3KSekshx19+N40MzjWqJd7KTEdOoLesAfa4IDFI8eRz5a47i5Oszus6zG/cwIXN63YhgLOMSSNJx49sENg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-decorators@7.27.1': + resolution: {integrity: sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-dynamic-import@7.8.3': + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-export-default-from@7.27.1': + resolution: {integrity: sha512-eBC/3KSekshx19+N40MzjWqJd7KTEdOoLesAfa4IDFI8eRz5a47i5Oszus6zG/cwIXN63YhgLOMSSNJx49sENg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-flow@7.27.1': + resolution: {integrity: sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.27.1': + resolution: {integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.27.1': + resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-flow@7.27.1": - resolution: - { - integrity: sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-import-assertions@7.27.1": - resolution: - { - integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-import-attributes@7.27.1": - resolution: - { - integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-import-meta@7.10.4": - resolution: - { - integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-json-strings@7.8.3": - resolution: - { - integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-jsx@7.27.1": - resolution: - { - integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-logical-assignment-operators@7.10.4": - resolution: - { - integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-nullish-coalescing-operator@7.8.3": - resolution: - { - integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-numeric-separator@7.10.4": - resolution: - { - integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-object-rest-spread@7.8.3": - resolution: - { - integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-optional-catch-binding@7.8.3": - resolution: - { - integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-optional-chaining@7.8.3": - resolution: - { - integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-private-property-in-object@7.14.5": - resolution: - { - integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-top-level-await@7.14.5": - resolution: - { - integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-typescript@7.27.1": - resolution: - { - integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-unicode-sets-regex@7.18.6": - resolution: - { - integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/plugin-transform-arrow-functions@7.27.1": - resolution: - { - integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-async-generator-functions@7.28.0": - resolution: - { - integrity: sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-async-to-generator@7.27.1": - resolution: - { - integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-block-scoped-functions@7.27.1": - resolution: - { - integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-block-scoping@7.28.0": - resolution: - { - integrity: sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-class-properties@7.27.1": - resolution: - { - integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-class-static-block@7.28.3": - resolution: - { - integrity: sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.12.0 - - "@babel/plugin-transform-classes@7.28.3": - resolution: - { - integrity: sha512-DoEWC5SuxuARF2KdKmGUq3ghfPMO6ZzR12Dnp5gubwbeWJo4dbNWXJPVlwvh4Zlq6Z7YVvL8VFxeSOJgjsx4Sg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-computed-properties@7.27.1": - resolution: - { - integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-destructuring@7.28.0": - resolution: - { - integrity: sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-dotall-regex@7.27.1": - resolution: - { - integrity: sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-duplicate-keys@7.27.1": - resolution: - { - integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1": - resolution: - { - integrity: sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/plugin-transform-dynamic-import@7.27.1": - resolution: - { - integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-explicit-resource-management@7.28.0": - resolution: - { - integrity: sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-exponentiation-operator@7.27.1": - resolution: - { - integrity: sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-export-namespace-from@7.27.1": - resolution: - { - integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-flow-strip-types@7.27.1": - resolution: - { - integrity: sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-for-of@7.27.1": - resolution: - { - integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-function-name@7.27.1": - resolution: - { - integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-json-strings@7.27.1": - resolution: - { - integrity: sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-literals@7.27.1": - resolution: - { - integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-logical-assignment-operators@7.27.1": - resolution: - { - integrity: sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-member-expression-literals@7.27.1": - resolution: - { - integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-modules-amd@7.27.1": - resolution: - { - integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-modules-commonjs@7.27.1": - resolution: - { - integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-modules-systemjs@7.27.1": - resolution: - { - integrity: sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-modules-umd@7.27.1": - resolution: - { - integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-named-capturing-groups-regex@7.27.1": - resolution: - { - integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/plugin-transform-new-target@7.27.1": - resolution: - { - integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-nullish-coalescing-operator@7.27.1": - resolution: - { - integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-numeric-separator@7.27.1": - resolution: - { - integrity: sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-object-rest-spread@7.28.0": - resolution: - { - integrity: sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-object-super@7.27.1": - resolution: - { - integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-optional-catch-binding@7.27.1": - resolution: - { - integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-optional-chaining@7.27.1": - resolution: - { - integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-parameters@7.27.7": - resolution: - { - integrity: sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-private-methods@7.27.1": - resolution: - { - integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-private-property-in-object@7.27.1": - resolution: - { - integrity: sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-property-literals@7.27.1": - resolution: - { - integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-react-display-name@7.28.0": - resolution: - { - integrity: sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-react-jsx-development@7.27.1": - resolution: - { - integrity: sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-react-jsx-self@7.27.1": - resolution: - { - integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-react-jsx-source@7.27.1": - resolution: - { - integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-react-jsx@7.27.1": - resolution: - { - integrity: sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-react-pure-annotations@7.27.1": - resolution: - { - integrity: sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-regenerator@7.28.3": - resolution: - { - integrity: sha512-K3/M/a4+ESb5LEldjQb+XSrpY0nF+ZBFlTCbSnKaYAMfD8v33O6PMs4uYnOk19HlcsI8WMu3McdFPTiQHF/1/A==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-regexp-modifiers@7.27.1": - resolution: - { - integrity: sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/plugin-transform-reserved-words@7.27.1": - resolution: - { - integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-runtime@7.28.3": - resolution: - { - integrity: sha512-Y6ab1kGqZ0u42Zv/4a7l0l72n9DKP/MKoKWaUSBylrhNZO2prYuqFOLbn5aW5SIFXwSH93yfjbgllL8lxuGKLg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-shorthand-properties@7.27.1": - resolution: - { - integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-spread@7.27.1": - resolution: - { - integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-sticky-regex@7.27.1": - resolution: - { - integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-template-literals@7.27.1": - resolution: - { - integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-typeof-symbol@7.27.1": - resolution: - { - integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-typescript@7.28.0": - resolution: - { - integrity: sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-unicode-escapes@7.27.1": - resolution: - { - integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-unicode-property-regex@7.27.1": - resolution: - { - integrity: sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-unicode-regex@7.27.1": - resolution: - { - integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-unicode-sets-regex@7.27.1": - resolution: - { - integrity: sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/preset-env@7.28.3": - resolution: - { - integrity: sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/preset-flow@7.27.1": - resolution: - { - integrity: sha512-ez3a2it5Fn6P54W8QkbfIyyIbxlXvcxyWHHvno1Wg0Ej5eiJY5hBb8ExttoIOJJk7V2dZE6prP7iby5q2aQ0Lg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/preset-modules@0.1.6-no-external-plugins": - resolution: - { - integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 - - "@babel/preset-react@7.27.1": - resolution: - { - integrity: sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/preset-typescript@7.27.1": - resolution: - { - integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/register@7.28.3": - resolution: - { - integrity: sha512-CieDOtd8u208eI49bYl4z1J22ySFw87IGwE+IswFEExH7e3rLgKb0WNQeumnacQ1+VoDJLYI5QFA3AJZuyZQfA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/runtime@7.28.3": - resolution: - { - integrity: sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==, - } - engines: { node: ">=6.9.0" } - - "@babel/template@7.27.2": - resolution: - { - integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==, - } - engines: { node: ">=6.9.0" } - - "@babel/traverse@7.28.3": - resolution: - { - integrity: sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==, - } - engines: { node: ">=6.9.0" } - - "@babel/types@7.28.2": - resolution: - { - integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==, - } - engines: { node: ">=6.9.0" } - - "@bcoe/v8-coverage@0.2.3": - resolution: - { - integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==, - } - - "@changesets/apply-release-plan@7.0.12": - resolution: - { - integrity: sha512-EaET7As5CeuhTzvXTQCRZeBUcisoYPDDcXvgTE/2jmmypKp0RC7LxKj/yzqeh/1qFTZI7oDGFcL1PHRuQuketQ==, - } - - "@changesets/assemble-release-plan@6.0.9": - resolution: - { - integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==, - } - - "@changesets/changelog-git@0.2.1": - resolution: - { - integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==, - } - - "@changesets/changelog-github@0.5.1": - resolution: - { - integrity: sha512-BVuHtF+hrhUScSoHnJwTELB4/INQxVFc+P/Qdt20BLiBFIHFJDDUaGsZw+8fQeJTRP5hJZrzpt3oZWh0G19rAQ==, - } - - "@changesets/cli@2.29.6": - resolution: - { - integrity: sha512-6qCcVsIG1KQLhpQ5zE8N0PckIx4+9QlHK3z6/lwKnw7Tir71Bjw8BeOZaxA/4Jt00pcgCnCSWZnyuZf5Il05QQ==, - } + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.27.1': + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.27.1': + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.27.1': + resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.28.0': + resolution: {integrity: sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.27.1': + resolution: {integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.27.1': + resolution: {integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.28.0': + resolution: {integrity: sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.27.1': + resolution: {integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.28.3': + resolution: {integrity: sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.28.3': + resolution: {integrity: sha512-DoEWC5SuxuARF2KdKmGUq3ghfPMO6ZzR12Dnp5gubwbeWJo4dbNWXJPVlwvh4Zlq6Z7YVvL8VFxeSOJgjsx4Sg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.27.1': + resolution: {integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.28.0': + resolution: {integrity: sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.27.1': + resolution: {integrity: sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.27.1': + resolution: {integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1': + resolution: {integrity: sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.27.1': + resolution: {integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-explicit-resource-management@7.28.0': + resolution: {integrity: sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.27.1': + resolution: {integrity: sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.27.1': + resolution: {integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-flow-strip-types@7.27.1': + resolution: {integrity: sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.27.1': + resolution: {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.27.1': + resolution: {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.27.1': + resolution: {integrity: sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.27.1': + resolution: {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.27.1': + resolution: {integrity: sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.27.1': + resolution: {integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.27.1': + resolution: {integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.27.1': + resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.27.1': + resolution: {integrity: sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.27.1': + resolution: {integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1': + resolution: {integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.27.1': + resolution: {integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1': + resolution: {integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.27.1': + resolution: {integrity: sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.28.0': + resolution: {integrity: sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.27.1': + resolution: {integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.27.1': + resolution: {integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.27.1': + resolution: {integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.27.7': + resolution: {integrity: sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.27.1': + resolution: {integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.27.1': + resolution: {integrity: sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.27.1': + resolution: {integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-display-name@7.28.0': + resolution: {integrity: sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-development@7.27.1': + resolution: {integrity: sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-self@7.27.1': + resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.27.1': + resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx@7.27.1': + resolution: {integrity: sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-pure-annotations@7.27.1': + resolution: {integrity: sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.28.3': + resolution: {integrity: sha512-K3/M/a4+ESb5LEldjQb+XSrpY0nF+ZBFlTCbSnKaYAMfD8v33O6PMs4uYnOk19HlcsI8WMu3McdFPTiQHF/1/A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regexp-modifiers@7.27.1': + resolution: {integrity: sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-reserved-words@7.27.1': + resolution: {integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-runtime@7.28.3': + resolution: {integrity: sha512-Y6ab1kGqZ0u42Zv/4a7l0l72n9DKP/MKoKWaUSBylrhNZO2prYuqFOLbn5aW5SIFXwSH93yfjbgllL8lxuGKLg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.27.1': + resolution: {integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.27.1': + resolution: {integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.27.1': + resolution: {integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.27.1': + resolution: {integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.27.1': + resolution: {integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.28.0': + resolution: {integrity: sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.27.1': + resolution: {integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.27.1': + resolution: {integrity: sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.27.1': + resolution: {integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.27.1': + resolution: {integrity: sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.28.3': + resolution: {integrity: sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-flow@7.27.1': + resolution: {integrity: sha512-ez3a2it5Fn6P54W8QkbfIyyIbxlXvcxyWHHvno1Wg0Ej5eiJY5hBb8ExttoIOJJk7V2dZE6prP7iby5q2aQ0Lg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + + '@babel/preset-react@7.27.1': + resolution: {integrity: sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-typescript@7.27.1': + resolution: {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/register@7.28.3': + resolution: {integrity: sha512-CieDOtd8u208eI49bYl4z1J22ySFw87IGwE+IswFEExH7e3rLgKb0WNQeumnacQ1+VoDJLYI5QFA3AJZuyZQfA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.28.3': + resolution: {integrity: sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.28.3': + resolution: {integrity: sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.28.2': + resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@changesets/apply-release-plan@7.0.12': + resolution: {integrity: sha512-EaET7As5CeuhTzvXTQCRZeBUcisoYPDDcXvgTE/2jmmypKp0RC7LxKj/yzqeh/1qFTZI7oDGFcL1PHRuQuketQ==} + + '@changesets/assemble-release-plan@6.0.9': + resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} + + '@changesets/changelog-git@0.2.1': + resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} + + '@changesets/changelog-github@0.5.1': + resolution: {integrity: sha512-BVuHtF+hrhUScSoHnJwTELB4/INQxVFc+P/Qdt20BLiBFIHFJDDUaGsZw+8fQeJTRP5hJZrzpt3oZWh0G19rAQ==} + + '@changesets/cli@2.29.6': + resolution: {integrity: sha512-6qCcVsIG1KQLhpQ5zE8N0PckIx4+9QlHK3z6/lwKnw7Tir71Bjw8BeOZaxA/4Jt00pcgCnCSWZnyuZf5Il05QQ==} hasBin: true - "@changesets/config@3.1.1": - resolution: - { - integrity: sha512-bd+3Ap2TKXxljCggI0mKPfzCQKeV/TU4yO2h2C6vAihIo8tzseAn2e7klSuiyYYXvgu53zMN1OeYMIQkaQoWnA==, - } - - "@changesets/errors@0.2.0": - resolution: - { - integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==, - } - - "@changesets/get-dependents-graph@2.1.3": - resolution: - { - integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==, - } - - "@changesets/get-github-info@0.6.0": - resolution: - { - integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==, - } - - "@changesets/get-release-plan@4.0.13": - resolution: - { - integrity: sha512-DWG1pus72FcNeXkM12tx+xtExyH/c9I1z+2aXlObH3i9YA7+WZEVaiHzHl03thpvAgWTRaH64MpfHxozfF7Dvg==, - } - - "@changesets/get-version-range-type@0.4.0": - resolution: - { - integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==, - } - - "@changesets/git@3.0.4": - resolution: - { - integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==, - } - - "@changesets/logger@0.1.1": - resolution: - { - integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==, - } - - "@changesets/parse@0.4.1": - resolution: - { - integrity: sha512-iwksMs5Bf/wUItfcg+OXrEpravm5rEd9Bf4oyIPL4kVTmJQ7PNDSd6MDYkpSJR1pn7tz/k8Zf2DhTCqX08Ou+Q==, - } - - "@changesets/pre@2.0.2": - resolution: - { - integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==, - } - - "@changesets/read@0.6.5": - resolution: - { - integrity: sha512-UPzNGhsSjHD3Veb0xO/MwvasGe8eMyNrR/sT9gR8Q3DhOQZirgKhhXv/8hVsI0QpPjR004Z9iFxoJU6in3uGMg==, - } - - "@changesets/should-skip-package@0.1.2": - resolution: - { - integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==, - } - - "@changesets/types@4.1.0": - resolution: - { - integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==, - } - - "@changesets/types@6.1.0": - resolution: - { - integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==, - } - - "@changesets/write@0.4.0": - resolution: - { - integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==, - } - - "@cloudflare/kv-asset-handler@0.4.0": - resolution: - { - integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==, - } - engines: { node: ">=18.0.0" } - - "@cloudflare/unenv-preset@2.7.1": - resolution: - { - integrity: sha512-b0YHedns1FHEdalv9evlydfc/hLPs+LqCbPatmiJ99ScI5QTK0NXqqBhgvQ9qch73tsYfOpdpwtBl1GOcb1C9A==, - } + '@changesets/config@3.1.1': + resolution: {integrity: sha512-bd+3Ap2TKXxljCggI0mKPfzCQKeV/TU4yO2h2C6vAihIo8tzseAn2e7klSuiyYYXvgu53zMN1OeYMIQkaQoWnA==} + + '@changesets/errors@0.2.0': + resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} + + '@changesets/get-dependents-graph@2.1.3': + resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==} + + '@changesets/get-github-info@0.6.0': + resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==} + + '@changesets/get-release-plan@4.0.13': + resolution: {integrity: sha512-DWG1pus72FcNeXkM12tx+xtExyH/c9I1z+2aXlObH3i9YA7+WZEVaiHzHl03thpvAgWTRaH64MpfHxozfF7Dvg==} + + '@changesets/get-version-range-type@0.4.0': + resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} + + '@changesets/git@3.0.4': + resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==} + + '@changesets/logger@0.1.1': + resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} + + '@changesets/parse@0.4.1': + resolution: {integrity: sha512-iwksMs5Bf/wUItfcg+OXrEpravm5rEd9Bf4oyIPL4kVTmJQ7PNDSd6MDYkpSJR1pn7tz/k8Zf2DhTCqX08Ou+Q==} + + '@changesets/pre@2.0.2': + resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} + + '@changesets/read@0.6.5': + resolution: {integrity: sha512-UPzNGhsSjHD3Veb0xO/MwvasGe8eMyNrR/sT9gR8Q3DhOQZirgKhhXv/8hVsI0QpPjR004Z9iFxoJU6in3uGMg==} + + '@changesets/should-skip-package@0.1.2': + resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} + + '@changesets/types@4.1.0': + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + + '@changesets/types@6.1.0': + resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==} + + '@changesets/write@0.4.0': + resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} + + '@cloudflare/kv-asset-handler@0.4.0': + resolution: {integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==} + engines: {node: '>=18.0.0'} + + '@cloudflare/unenv-preset@2.7.1': + resolution: {integrity: sha512-b0YHedns1FHEdalv9evlydfc/hLPs+LqCbPatmiJ99ScI5QTK0NXqqBhgvQ9qch73tsYfOpdpwtBl1GOcb1C9A==} peerDependencies: unenv: 2.0.0-rc.19 workerd: ^1.20250828.1 @@ -2478,3374 +1915,2151 @@ packages: workerd: optional: true - "@cloudflare/workerd-darwin-64@1.20250829.0": - resolution: - { - integrity: sha512-IkB5gaLz3gzBg9hIsC/bVvOMDaRiWA5anaPK0ERDXXXJnMiBkLnA009O5Mp0x7j0fpxbw05xaiYXcFdGPdUt3A==, - } - engines: { node: ">=16" } + '@cloudflare/workerd-darwin-64@1.20250829.0': + resolution: {integrity: sha512-IkB5gaLz3gzBg9hIsC/bVvOMDaRiWA5anaPK0ERDXXXJnMiBkLnA009O5Mp0x7j0fpxbw05xaiYXcFdGPdUt3A==} + engines: {node: '>=16'} cpu: [x64] os: [darwin] - "@cloudflare/workerd-darwin-arm64@1.20250829.0": - resolution: - { - integrity: sha512-gFYC+w0jznCweKmrv63inEYduGj6crOskgZrn5zHI8S7c3ynC1LSW6LR8E9A2mSOwuDWKM1hHypwctwGUKlikg==, - } - engines: { node: ">=16" } + '@cloudflare/workerd-darwin-arm64@1.20250829.0': + resolution: {integrity: sha512-gFYC+w0jznCweKmrv63inEYduGj6crOskgZrn5zHI8S7c3ynC1LSW6LR8E9A2mSOwuDWKM1hHypwctwGUKlikg==} + engines: {node: '>=16'} cpu: [arm64] os: [darwin] - "@cloudflare/workerd-linux-64@1.20250829.0": - resolution: - { - integrity: sha512-JS699jk+Bn7j4QF7tdF+Sqhy4EUHM2NGVLF/vOIbpPWQnBVvP6Z+vmxi5MuVUwpAH48kpqbtMx380InNvT5f1Q==, - } - engines: { node: ">=16" } + '@cloudflare/workerd-linux-64@1.20250829.0': + resolution: {integrity: sha512-JS699jk+Bn7j4QF7tdF+Sqhy4EUHM2NGVLF/vOIbpPWQnBVvP6Z+vmxi5MuVUwpAH48kpqbtMx380InNvT5f1Q==} + engines: {node: '>=16'} cpu: [x64] os: [linux] - "@cloudflare/workerd-linux-arm64@1.20250829.0": - resolution: - { - integrity: sha512-9Ic/VwcrCEQiIzynmpFQnS8N3uXm8evxUxFe37r6OC8/MGcXZTcp0/lmEk+cjjz+2aw5CfPMP82IdQyRKVZ+Og==, - } - engines: { node: ">=16" } + '@cloudflare/workerd-linux-arm64@1.20250829.0': + resolution: {integrity: sha512-9Ic/VwcrCEQiIzynmpFQnS8N3uXm8evxUxFe37r6OC8/MGcXZTcp0/lmEk+cjjz+2aw5CfPMP82IdQyRKVZ+Og==} + engines: {node: '>=16'} cpu: [arm64] os: [linux] - "@cloudflare/workerd-windows-64@1.20250829.0": - resolution: - { - integrity: sha512-6uETqeeMciRSA00GRGzH1nnz0egDP2bqMOJtTBWlLzFs88GbLe2RXECJxo4E3eVr8yvAMyqwd0WUR4dDBjO7Rg==, - } - engines: { node: ">=16" } + '@cloudflare/workerd-windows-64@1.20250829.0': + resolution: {integrity: sha512-6uETqeeMciRSA00GRGzH1nnz0egDP2bqMOJtTBWlLzFs88GbLe2RXECJxo4E3eVr8yvAMyqwd0WUR4dDBjO7Rg==} + engines: {node: '>=16'} cpu: [x64] os: [win32] - "@confio/ics23@0.6.8": - resolution: - { - integrity: sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w==, - } + '@confio/ics23@0.6.8': + resolution: {integrity: sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w==} deprecated: Unmaintained. The codebase for this package was moved to https://github.com/cosmos/ics23 but then the JS implementation was removed in https://github.com/cosmos/ics23/pull/353. Please consult the maintainers of https://github.com/cosmos for further assistance. - "@cosmjs/amino@0.32.4": - resolution: - { - integrity: sha512-zKYOt6hPy8obIFtLie/xtygCkH9ZROiQ12UHfKsOkWaZfPQUvVbtgmu6R4Kn1tFLI/SRkw7eqhaogmW/3NYu/Q==, - } - - "@cosmjs/amino@0.36.0": - resolution: - { - integrity: sha512-PxK3+1smz5N1dxJjSSsvvZdHdSM2zuUAIP6ppYLGBcYmAKlK6hJ1vR1Ity+HLKusqo22bj0CY9m3QaeLNsSPww==, - } - - "@cosmjs/cosmwasm-stargate@0.32.4": - resolution: - { - integrity: sha512-Fuo9BGEiB+POJ5WeRyBGuhyKR1ordvxZGLPuPosFJOH9U0gKMgcjwKMCgAlWFkMlHaTB+tNdA8AifWiHrI7VgA==, - } - - "@cosmjs/cosmwasm-stargate@0.36.0": - resolution: - { - integrity: sha512-hzzT4YRMt2cRdAILzGSNSmWr1IRpN3aWxL5ceMrZaaJyVa9nD4AUeR80yPB6mzkBpHuMwbSGWz8nus0psyonRQ==, - } - - "@cosmjs/crypto@0.32.4": - resolution: - { - integrity: sha512-zicjGU051LF1V9v7bp8p7ovq+VyC91xlaHdsFOTo2oVry3KQikp8L/81RkXmUIT8FxMwdx1T7DmFwVQikcSDIw==, - } - - "@cosmjs/crypto@0.36.0": - resolution: - { - integrity: sha512-IdzJETWBfMlJIpWmcAi4wiAa0sdHKZDbxKdhasrpSLvhwIItXBYMvApCFx6zr+V/Hby4KnsWduI7HomiRDFr+g==, - } - - "@cosmjs/encoding@0.32.4": - resolution: - { - integrity: sha512-tjvaEy6ZGxJchiizzTn7HVRiyTg1i4CObRRaTRPknm5EalE13SV+TCHq38gIDfyUeden4fCuaBVEdBR5+ti7Hw==, - } - - "@cosmjs/encoding@0.36.0": - resolution: - { - integrity: sha512-xFJNd1096EqNxTsdOJN+DODC5HxKmqY0L2iWEnvPFq9UD/W2olYnv0bxV0S+XTs5tF/8/NAZHU3KXxeHTZ97DA==, - } - - "@cosmjs/json-rpc@0.32.4": - resolution: - { - integrity: sha512-/jt4mBl7nYzfJ2J/VJ+r19c92mUKF0Lt0JxM3MXEJl7wlwW5haHAWtzRujHkyYMXOwIR+gBqT2S0vntXVBRyhQ==, - } - - "@cosmjs/json-rpc@0.36.0": - resolution: - { - integrity: sha512-7cGE8cBFGrtAHsadYWFOWv0bNaK0VPNzquzU/Naj+3twgnppaGbRBrTLw3iwhqrg+Cvb9KwSYPHzaUsavojUWQ==, - } - - "@cosmjs/math@0.32.4": - resolution: - { - integrity: sha512-++dqq2TJkoB8zsPVYCvrt88oJWsy1vMOuSOKcdlnXuOA/ASheTJuYy4+oZlTQ3Fr8eALDLGGPhJI02W2HyAQaw==, - } - - "@cosmjs/math@0.36.0": - resolution: - { - integrity: sha512-vLXHInZA87QXgOxGJDc2nJa4/4oPFOdQtuxD6BL5xrYI1T0G/dk06hu4gXu4Tn3YuB8R5dWGS0u5AnlNv9LeYw==, - } - - "@cosmjs/proto-signing@0.32.4": - resolution: - { - integrity: sha512-QdyQDbezvdRI4xxSlyM1rSVBO2st5sqtbEIl3IX03uJ7YiZIQHyv6vaHVf1V4mapusCqguiHJzm4N4gsFdLBbQ==, - } - - "@cosmjs/proto-signing@0.36.0": - resolution: - { - integrity: sha512-RoZOQGG9njlzArNeAfYYQ136tdi5hNBleC/r7V8HPkROpMfSuQZF3yP6ukBvt5KkNzNge4YZKqFkwINBR/Vyew==, - } - - "@cosmjs/socket@0.32.4": - resolution: - { - integrity: sha512-davcyYziBhkzfXQTu1l5NrpDYv0K9GekZCC9apBRvL1dvMc9F/ygM7iemHjUA+z8tJkxKxrt/YPjJ6XNHzLrkw==, - } - - "@cosmjs/socket@0.36.0": - resolution: - { - integrity: sha512-rAeGDyQjIFWsP6DPSTJKUP9RDW6ZM5Cm074xKG/0Tdghn0kkOaQCzwJru4SSPWi7MOlOkoZHyEMATQiNA/cQ6Q==, - } - - "@cosmjs/stargate@0.32.4": - resolution: - { - integrity: sha512-usj08LxBSsPRq9sbpCeVdyLx2guEcOHfJS9mHGCLCXpdAPEIEQEtWLDpEUc0LEhWOx6+k/ChXTc5NpFkdrtGUQ==, - } - - "@cosmjs/stargate@0.36.0": - resolution: - { - integrity: sha512-FMRPF72WyLXGTU8qWpN2ZoxOY4gfRmg7vZoO99Ru8Gt21GS95JYO+RJFTfYlP9pT7Ni6S74rxCPNqkeHMqKp6w==, - } - - "@cosmjs/stream@0.32.4": - resolution: - { - integrity: sha512-Gih++NYHEiP+oyD4jNEUxU9antoC0pFSg+33Hpp0JlHwH0wXhtD3OOKnzSfDB7OIoEbrzLJUpEjOgpCp5Z+W3A==, - } - - "@cosmjs/stream@0.36.0": - resolution: - { - integrity: sha512-gMezM+symoCWnJlrOJ5lxB+tVNUm9JUwFR3dpHzdccGTh1Sb7oVCf6VFias85O1j0fLkCIfQR2BI/RoX97+CGQ==, - } - - "@cosmjs/tendermint-rpc@0.32.4": - resolution: - { - integrity: sha512-MWvUUno+4bCb/LmlMIErLypXxy7ckUuzEmpufYYYd9wgbdCXaTaO08SZzyFM5PI8UJ/0S2AmUrgWhldlbxO8mw==, - } - - "@cosmjs/tendermint-rpc@0.36.0": - resolution: - { - integrity: sha512-dTh4L1RR22JszFbZqM3i0ITPTHhrs5mUqyyeP7lEebgtLrKgzCAqsWPnqfsC6ALFhMzbeApWebG2YR9W2W68zg==, - } - - "@cosmjs/utils@0.32.4": - resolution: - { - integrity: sha512-D1Yc+Zy8oL/hkUkFUL/bwxvuDBzRGpc4cF7/SkdhxX4iHpSLgdOuTt1mhCh9+kl6NQREy9t7SYZ6xeW5gFe60w==, - } - - "@cosmjs/utils@0.36.0": - resolution: - { - integrity: sha512-QXyHnxDHdkj+qZZDk+CSOeEXpkPRBvMPKQ7EiEO7wuJQpMIlF3F4CSuEBuYPQOPRDP6qsKS+rj47pXoE2Kr4dw==, - } - - "@craftzdog/react-native-buffer@6.1.0": - resolution: - { - integrity: sha512-lJXdjZ7fTllLbzDrwg/FrJLjQ5sBcAgwcqgAB6OPpXTHdCenEhHZblQpfmBLLe7/S7m0yKXL3kN3jpwOEkpjGg==, - } - - "@cspotcode/source-map-support@0.8.1": - resolution: - { - integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==, - } - engines: { node: ">=12" } - - "@dotenvx/dotenvx@1.31.0": - resolution: - { - integrity: sha512-GeDxvtjiRuoyWVU9nQneId879zIyNdL05bS7RKiqMkfBSKpHMWHLoRyRqjYWLaXmX/llKO1hTlqHDmatkQAjPA==, - } + '@cosmjs/amino@0.32.4': + resolution: {integrity: sha512-zKYOt6hPy8obIFtLie/xtygCkH9ZROiQ12UHfKsOkWaZfPQUvVbtgmu6R4Kn1tFLI/SRkw7eqhaogmW/3NYu/Q==} + + '@cosmjs/amino@0.36.0': + resolution: {integrity: sha512-PxK3+1smz5N1dxJjSSsvvZdHdSM2zuUAIP6ppYLGBcYmAKlK6hJ1vR1Ity+HLKusqo22bj0CY9m3QaeLNsSPww==} + + '@cosmjs/cosmwasm-stargate@0.32.4': + resolution: {integrity: sha512-Fuo9BGEiB+POJ5WeRyBGuhyKR1ordvxZGLPuPosFJOH9U0gKMgcjwKMCgAlWFkMlHaTB+tNdA8AifWiHrI7VgA==} + + '@cosmjs/cosmwasm-stargate@0.36.0': + resolution: {integrity: sha512-hzzT4YRMt2cRdAILzGSNSmWr1IRpN3aWxL5ceMrZaaJyVa9nD4AUeR80yPB6mzkBpHuMwbSGWz8nus0psyonRQ==} + + '@cosmjs/crypto@0.32.4': + resolution: {integrity: sha512-zicjGU051LF1V9v7bp8p7ovq+VyC91xlaHdsFOTo2oVry3KQikp8L/81RkXmUIT8FxMwdx1T7DmFwVQikcSDIw==} + + '@cosmjs/crypto@0.36.0': + resolution: {integrity: sha512-IdzJETWBfMlJIpWmcAi4wiAa0sdHKZDbxKdhasrpSLvhwIItXBYMvApCFx6zr+V/Hby4KnsWduI7HomiRDFr+g==} + + '@cosmjs/encoding@0.32.4': + resolution: {integrity: sha512-tjvaEy6ZGxJchiizzTn7HVRiyTg1i4CObRRaTRPknm5EalE13SV+TCHq38gIDfyUeden4fCuaBVEdBR5+ti7Hw==} + + '@cosmjs/encoding@0.36.0': + resolution: {integrity: sha512-xFJNd1096EqNxTsdOJN+DODC5HxKmqY0L2iWEnvPFq9UD/W2olYnv0bxV0S+XTs5tF/8/NAZHU3KXxeHTZ97DA==} + + '@cosmjs/json-rpc@0.32.4': + resolution: {integrity: sha512-/jt4mBl7nYzfJ2J/VJ+r19c92mUKF0Lt0JxM3MXEJl7wlwW5haHAWtzRujHkyYMXOwIR+gBqT2S0vntXVBRyhQ==} + + '@cosmjs/json-rpc@0.36.0': + resolution: {integrity: sha512-7cGE8cBFGrtAHsadYWFOWv0bNaK0VPNzquzU/Naj+3twgnppaGbRBrTLw3iwhqrg+Cvb9KwSYPHzaUsavojUWQ==} + + '@cosmjs/math@0.32.4': + resolution: {integrity: sha512-++dqq2TJkoB8zsPVYCvrt88oJWsy1vMOuSOKcdlnXuOA/ASheTJuYy4+oZlTQ3Fr8eALDLGGPhJI02W2HyAQaw==} + + '@cosmjs/math@0.36.0': + resolution: {integrity: sha512-vLXHInZA87QXgOxGJDc2nJa4/4oPFOdQtuxD6BL5xrYI1T0G/dk06hu4gXu4Tn3YuB8R5dWGS0u5AnlNv9LeYw==} + + '@cosmjs/proto-signing@0.32.4': + resolution: {integrity: sha512-QdyQDbezvdRI4xxSlyM1rSVBO2st5sqtbEIl3IX03uJ7YiZIQHyv6vaHVf1V4mapusCqguiHJzm4N4gsFdLBbQ==} + + '@cosmjs/proto-signing@0.36.0': + resolution: {integrity: sha512-RoZOQGG9njlzArNeAfYYQ136tdi5hNBleC/r7V8HPkROpMfSuQZF3yP6ukBvt5KkNzNge4YZKqFkwINBR/Vyew==} + + '@cosmjs/socket@0.32.4': + resolution: {integrity: sha512-davcyYziBhkzfXQTu1l5NrpDYv0K9GekZCC9apBRvL1dvMc9F/ygM7iemHjUA+z8tJkxKxrt/YPjJ6XNHzLrkw==} + + '@cosmjs/socket@0.36.0': + resolution: {integrity: sha512-rAeGDyQjIFWsP6DPSTJKUP9RDW6ZM5Cm074xKG/0Tdghn0kkOaQCzwJru4SSPWi7MOlOkoZHyEMATQiNA/cQ6Q==} + + '@cosmjs/stargate@0.32.4': + resolution: {integrity: sha512-usj08LxBSsPRq9sbpCeVdyLx2guEcOHfJS9mHGCLCXpdAPEIEQEtWLDpEUc0LEhWOx6+k/ChXTc5NpFkdrtGUQ==} + + '@cosmjs/stargate@0.36.0': + resolution: {integrity: sha512-FMRPF72WyLXGTU8qWpN2ZoxOY4gfRmg7vZoO99Ru8Gt21GS95JYO+RJFTfYlP9pT7Ni6S74rxCPNqkeHMqKp6w==} + + '@cosmjs/stream@0.32.4': + resolution: {integrity: sha512-Gih++NYHEiP+oyD4jNEUxU9antoC0pFSg+33Hpp0JlHwH0wXhtD3OOKnzSfDB7OIoEbrzLJUpEjOgpCp5Z+W3A==} + + '@cosmjs/stream@0.36.0': + resolution: {integrity: sha512-gMezM+symoCWnJlrOJ5lxB+tVNUm9JUwFR3dpHzdccGTh1Sb7oVCf6VFias85O1j0fLkCIfQR2BI/RoX97+CGQ==} + + '@cosmjs/tendermint-rpc@0.32.4': + resolution: {integrity: sha512-MWvUUno+4bCb/LmlMIErLypXxy7ckUuzEmpufYYYd9wgbdCXaTaO08SZzyFM5PI8UJ/0S2AmUrgWhldlbxO8mw==} + + '@cosmjs/tendermint-rpc@0.36.0': + resolution: {integrity: sha512-dTh4L1RR22JszFbZqM3i0ITPTHhrs5mUqyyeP7lEebgtLrKgzCAqsWPnqfsC6ALFhMzbeApWebG2YR9W2W68zg==} + + '@cosmjs/utils@0.32.4': + resolution: {integrity: sha512-D1Yc+Zy8oL/hkUkFUL/bwxvuDBzRGpc4cF7/SkdhxX4iHpSLgdOuTt1mhCh9+kl6NQREy9t7SYZ6xeW5gFe60w==} + + '@cosmjs/utils@0.36.0': + resolution: {integrity: sha512-QXyHnxDHdkj+qZZDk+CSOeEXpkPRBvMPKQ7EiEO7wuJQpMIlF3F4CSuEBuYPQOPRDP6qsKS+rj47pXoE2Kr4dw==} + + '@craftzdog/react-native-buffer@6.1.0': + resolution: {integrity: sha512-lJXdjZ7fTllLbzDrwg/FrJLjQ5sBcAgwcqgAB6OPpXTHdCenEhHZblQpfmBLLe7/S7m0yKXL3kN3jpwOEkpjGg==} + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + + '@dotenvx/dotenvx@1.31.0': + resolution: {integrity: sha512-GeDxvtjiRuoyWVU9nQneId879zIyNdL05bS7RKiqMkfBSKpHMWHLoRyRqjYWLaXmX/llKO1hTlqHDmatkQAjPA==} hasBin: true - "@ecies/ciphers@0.2.4": - resolution: - { - integrity: sha512-t+iX+Wf5nRKyNzk8dviW3Ikb/280+aEJAnw9YXvCp2tYGPSkMki+NRY+8aNLmVFv3eNtMdvViPNOPxS8SZNP+w==, - } - engines: { bun: ">=1", deno: ">=2", node: ">=16" } - peerDependencies: - "@noble/ciphers": ^1.0.0 - - "@emnapi/core@1.4.5": - resolution: - { - integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==, - } - - "@emnapi/runtime@1.4.5": - resolution: - { - integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==, - } - - "@emnapi/wasi-threads@1.0.4": - resolution: - { - integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==, - } - - "@esbuild/aix-ppc64@0.25.4": - resolution: - { - integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==, - } - engines: { node: ">=18" } + '@ecies/ciphers@0.2.4': + resolution: {integrity: sha512-t+iX+Wf5nRKyNzk8dviW3Ikb/280+aEJAnw9YXvCp2tYGPSkMki+NRY+8aNLmVFv3eNtMdvViPNOPxS8SZNP+w==} + engines: {bun: '>=1', deno: '>=2', node: '>=16'} + peerDependencies: + '@noble/ciphers': ^1.0.0 + + '@emnapi/core@1.4.5': + resolution: {integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==} + + '@emnapi/runtime@1.4.5': + resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==} + + '@emnapi/wasi-threads@1.0.4': + resolution: {integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==} + + '@esbuild/aix-ppc64@0.25.4': + resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} + engines: {node: '>=18'} cpu: [ppc64] os: [aix] - "@esbuild/android-arm64@0.17.19": - resolution: - { - integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==, - } - engines: { node: ">=12" } + '@esbuild/android-arm64@0.17.19': + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} cpu: [arm64] os: [android] - "@esbuild/android-arm64@0.25.4": - resolution: - { - integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==, - } - engines: { node: ">=18" } + '@esbuild/android-arm64@0.25.4': + resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} + engines: {node: '>=18'} cpu: [arm64] os: [android] - "@esbuild/android-arm@0.17.19": - resolution: - { - integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==, - } - engines: { node: ">=12" } + '@esbuild/android-arm@0.17.19': + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + engines: {node: '>=12'} cpu: [arm] os: [android] - "@esbuild/android-arm@0.25.4": - resolution: - { - integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==, - } - engines: { node: ">=18" } + '@esbuild/android-arm@0.25.4': + resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} + engines: {node: '>=18'} cpu: [arm] os: [android] - "@esbuild/android-x64@0.17.19": - resolution: - { - integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==, - } - engines: { node: ">=12" } + '@esbuild/android-x64@0.17.19': + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + engines: {node: '>=12'} cpu: [x64] os: [android] - "@esbuild/android-x64@0.25.4": - resolution: - { - integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==, - } - engines: { node: ">=18" } + '@esbuild/android-x64@0.25.4': + resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} + engines: {node: '>=18'} cpu: [x64] os: [android] - "@esbuild/darwin-arm64@0.17.19": - resolution: - { - integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==, - } - engines: { node: ">=12" } + '@esbuild/darwin-arm64@0.17.19': + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + engines: {node: '>=12'} cpu: [arm64] os: [darwin] - "@esbuild/darwin-arm64@0.25.4": - resolution: - { - integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==, - } - engines: { node: ">=18" } + '@esbuild/darwin-arm64@0.25.4': + resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} + engines: {node: '>=18'} cpu: [arm64] os: [darwin] - "@esbuild/darwin-x64@0.17.19": - resolution: - { - integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==, - } - engines: { node: ">=12" } + '@esbuild/darwin-x64@0.17.19': + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + engines: {node: '>=12'} cpu: [x64] os: [darwin] - "@esbuild/darwin-x64@0.25.4": - resolution: - { - integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==, - } - engines: { node: ">=18" } + '@esbuild/darwin-x64@0.25.4': + resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} + engines: {node: '>=18'} cpu: [x64] os: [darwin] - "@esbuild/freebsd-arm64@0.17.19": - resolution: - { - integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==, - } - engines: { node: ">=12" } + '@esbuild/freebsd-arm64@0.17.19': + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + engines: {node: '>=12'} cpu: [arm64] os: [freebsd] - "@esbuild/freebsd-arm64@0.25.4": - resolution: - { - integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==, - } - engines: { node: ">=18" } + '@esbuild/freebsd-arm64@0.25.4': + resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} + engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - "@esbuild/freebsd-x64@0.17.19": - resolution: - { - integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==, - } - engines: { node: ">=12" } + '@esbuild/freebsd-x64@0.17.19': + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} cpu: [x64] os: [freebsd] - "@esbuild/freebsd-x64@0.25.4": - resolution: - { - integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==, - } - engines: { node: ">=18" } + '@esbuild/freebsd-x64@0.25.4': + resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} + engines: {node: '>=18'} cpu: [x64] os: [freebsd] - "@esbuild/linux-arm64@0.17.19": - resolution: - { - integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==, - } - engines: { node: ">=12" } + '@esbuild/linux-arm64@0.17.19': + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + engines: {node: '>=12'} cpu: [arm64] os: [linux] - "@esbuild/linux-arm64@0.25.4": - resolution: - { - integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==, - } - engines: { node: ">=18" } + '@esbuild/linux-arm64@0.25.4': + resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} + engines: {node: '>=18'} cpu: [arm64] os: [linux] - "@esbuild/linux-arm@0.17.19": - resolution: - { - integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==, - } - engines: { node: ">=12" } + '@esbuild/linux-arm@0.17.19': + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + engines: {node: '>=12'} cpu: [arm] os: [linux] - "@esbuild/linux-arm@0.25.4": - resolution: - { - integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==, - } - engines: { node: ">=18" } + '@esbuild/linux-arm@0.25.4': + resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} + engines: {node: '>=18'} cpu: [arm] os: [linux] - "@esbuild/linux-ia32@0.17.19": - resolution: - { - integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==, - } - engines: { node: ">=12" } + '@esbuild/linux-ia32@0.17.19': + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + engines: {node: '>=12'} cpu: [ia32] os: [linux] - "@esbuild/linux-ia32@0.25.4": - resolution: - { - integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==, - } - engines: { node: ">=18" } + '@esbuild/linux-ia32@0.25.4': + resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} + engines: {node: '>=18'} cpu: [ia32] os: [linux] - "@esbuild/linux-loong64@0.17.19": - resolution: - { - integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==, - } - engines: { node: ">=12" } + '@esbuild/linux-loong64@0.17.19': + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + engines: {node: '>=12'} cpu: [loong64] os: [linux] - "@esbuild/linux-loong64@0.25.4": - resolution: - { - integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==, - } - engines: { node: ">=18" } + '@esbuild/linux-loong64@0.25.4': + resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} + engines: {node: '>=18'} cpu: [loong64] os: [linux] - "@esbuild/linux-mips64el@0.17.19": - resolution: - { - integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==, - } - engines: { node: ">=12" } + '@esbuild/linux-mips64el@0.17.19': + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + engines: {node: '>=12'} cpu: [mips64el] os: [linux] - "@esbuild/linux-mips64el@0.25.4": - resolution: - { - integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==, - } - engines: { node: ">=18" } + '@esbuild/linux-mips64el@0.25.4': + resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} + engines: {node: '>=18'} cpu: [mips64el] os: [linux] - "@esbuild/linux-ppc64@0.17.19": - resolution: - { - integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==, - } - engines: { node: ">=12" } + '@esbuild/linux-ppc64@0.17.19': + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + engines: {node: '>=12'} cpu: [ppc64] os: [linux] - "@esbuild/linux-ppc64@0.25.4": - resolution: - { - integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==, - } - engines: { node: ">=18" } + '@esbuild/linux-ppc64@0.25.4': + resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} + engines: {node: '>=18'} cpu: [ppc64] os: [linux] - "@esbuild/linux-riscv64@0.17.19": - resolution: - { - integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==, - } - engines: { node: ">=12" } + '@esbuild/linux-riscv64@0.17.19': + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + engines: {node: '>=12'} cpu: [riscv64] os: [linux] - "@esbuild/linux-riscv64@0.25.4": - resolution: - { - integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==, - } - engines: { node: ">=18" } + '@esbuild/linux-riscv64@0.25.4': + resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} + engines: {node: '>=18'} cpu: [riscv64] os: [linux] - "@esbuild/linux-s390x@0.17.19": - resolution: - { - integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==, - } - engines: { node: ">=12" } + '@esbuild/linux-s390x@0.17.19': + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + engines: {node: '>=12'} cpu: [s390x] os: [linux] - "@esbuild/linux-s390x@0.25.4": - resolution: - { - integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==, - } - engines: { node: ">=18" } + '@esbuild/linux-s390x@0.25.4': + resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} + engines: {node: '>=18'} cpu: [s390x] os: [linux] - "@esbuild/linux-x64@0.17.19": - resolution: - { - integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==, - } - engines: { node: ">=12" } + '@esbuild/linux-x64@0.17.19': + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + engines: {node: '>=12'} cpu: [x64] os: [linux] - "@esbuild/linux-x64@0.25.4": - resolution: - { - integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==, - } - engines: { node: ">=18" } + '@esbuild/linux-x64@0.25.4': + resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} + engines: {node: '>=18'} cpu: [x64] os: [linux] - "@esbuild/netbsd-arm64@0.25.4": - resolution: - { - integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==, - } - engines: { node: ">=18" } + '@esbuild/netbsd-arm64@0.25.4': + resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} + engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - "@esbuild/netbsd-x64@0.17.19": - resolution: - { - integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==, - } - engines: { node: ">=12" } + '@esbuild/netbsd-x64@0.17.19': + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + engines: {node: '>=12'} cpu: [x64] os: [netbsd] - "@esbuild/netbsd-x64@0.25.4": - resolution: - { - integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==, - } - engines: { node: ">=18" } + '@esbuild/netbsd-x64@0.25.4': + resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} + engines: {node: '>=18'} cpu: [x64] os: [netbsd] - "@esbuild/openbsd-arm64@0.25.4": - resolution: - { - integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==, - } - engines: { node: ">=18" } + '@esbuild/openbsd-arm64@0.25.4': + resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} + engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - "@esbuild/openbsd-x64@0.17.19": - resolution: - { - integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==, - } - engines: { node: ">=12" } + '@esbuild/openbsd-x64@0.17.19': + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + engines: {node: '>=12'} cpu: [x64] os: [openbsd] - "@esbuild/openbsd-x64@0.25.4": - resolution: - { - integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==, - } - engines: { node: ">=18" } + '@esbuild/openbsd-x64@0.25.4': + resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} + engines: {node: '>=18'} cpu: [x64] os: [openbsd] - "@esbuild/sunos-x64@0.17.19": - resolution: - { - integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==, - } - engines: { node: ">=12" } + '@esbuild/sunos-x64@0.17.19': + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + engines: {node: '>=12'} cpu: [x64] os: [sunos] - "@esbuild/sunos-x64@0.25.4": - resolution: - { - integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==, - } - engines: { node: ">=18" } + '@esbuild/sunos-x64@0.25.4': + resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} + engines: {node: '>=18'} cpu: [x64] os: [sunos] - "@esbuild/win32-arm64@0.17.19": - resolution: - { - integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==, - } - engines: { node: ">=12" } + '@esbuild/win32-arm64@0.17.19': + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + engines: {node: '>=12'} cpu: [arm64] os: [win32] - "@esbuild/win32-arm64@0.25.4": - resolution: - { - integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==, - } - engines: { node: ">=18" } + '@esbuild/win32-arm64@0.25.4': + resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} + engines: {node: '>=18'} cpu: [arm64] os: [win32] - "@esbuild/win32-ia32@0.17.19": - resolution: - { - integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==, - } - engines: { node: ">=12" } + '@esbuild/win32-ia32@0.17.19': + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + engines: {node: '>=12'} cpu: [ia32] os: [win32] - "@esbuild/win32-ia32@0.25.4": - resolution: - { - integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==, - } - engines: { node: ">=18" } + '@esbuild/win32-ia32@0.25.4': + resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} + engines: {node: '>=18'} cpu: [ia32] os: [win32] - "@esbuild/win32-x64@0.17.19": - resolution: - { - integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==, - } - engines: { node: ">=12" } + '@esbuild/win32-x64@0.17.19': + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} cpu: [x64] os: [win32] - "@esbuild/win32-x64@0.25.4": - resolution: - { - integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==, - } - engines: { node: ">=18" } + '@esbuild/win32-x64@0.25.4': + resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} + engines: {node: '>=18'} cpu: [x64] os: [win32] - "@eslint-community/eslint-utils@4.7.0": - resolution: - { - integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + '@eslint-community/eslint-utils@4.7.0': + resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} + 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/eslintrc@2.1.4": - resolution: - { - integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - - "@eslint/js@8.57.1": - resolution: - { - integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - - "@expo/cli@0.24.20": - resolution: - { - integrity: sha512-uF1pOVcd+xizNtVTuZqNGzy7I6IJon5YMmQidsURds1Ww96AFDxrR/NEACqeATNAmY60m8wy1VZZpSg5zLNkpw==, - } + '@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/js@8.57.1': + resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@expo/cli@0.24.20': + resolution: {integrity: sha512-uF1pOVcd+xizNtVTuZqNGzy7I6IJon5YMmQidsURds1Ww96AFDxrR/NEACqeATNAmY60m8wy1VZZpSg5zLNkpw==} hasBin: true - "@expo/code-signing-certificates@0.0.5": - resolution: - { - integrity: sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==, - } - - "@expo/config-plugins@10.1.2": - resolution: - { - integrity: sha512-IMYCxBOcnuFStuK0Ay+FzEIBKrwW8OVUMc65+v0+i7YFIIe8aL342l7T4F8lR4oCfhXn7d6M5QPgXvjtc/gAcw==, - } - - "@expo/config-plugins@9.0.17": - resolution: - { - integrity: sha512-m24F1COquwOm7PBl5wRbkT9P9DviCXe0D7S7nQsolfbhdCWuvMkfXeoWmgjtdhy7sDlOyIgBrAdnB6MfsWKqIg==, - } - - "@expo/config-types@52.0.5": - resolution: - { - integrity: sha512-AMDeuDLHXXqd8W+0zSjIt7f37vUd/BP8p43k68NHpyAvQO+z8mbQZm3cNQVAMySeayK2XoPigAFB1JF2NFajaA==, - } - - "@expo/config-types@53.0.5": - resolution: - { - integrity: sha512-kqZ0w44E+HEGBjy+Lpyn0BVL5UANg/tmNixxaRMLS6nf37YsDrLk2VMAmeKMMk5CKG0NmOdVv3ngeUjRQMsy9g==, - } - - "@expo/config@10.0.11": - resolution: - { - integrity: sha512-nociJ4zr/NmbVfMNe9j/+zRlt7wz/siISu7PjdWE4WE+elEGxWWxsGzltdJG0llzrM+khx8qUiFK5aiVcdMBww==, - } - - "@expo/config@11.0.13": - resolution: - { - integrity: sha512-TnGb4u/zUZetpav9sx/3fWK71oCPaOjZHoVED9NaEncktAd0Eonhq5NUghiJmkUGt3gGSjRAEBXiBbbY9/B1LA==, - } - - "@expo/devcert@1.2.0": - resolution: - { - integrity: sha512-Uilcv3xGELD5t/b0eM4cxBFEKQRIivB3v7i+VhWLV/gL98aw810unLKKJbGAxAIhY6Ipyz8ChWibFsKFXYwstA==, - } - - "@expo/env@0.4.2": - resolution: - { - integrity: sha512-TgbCgvSk0Kq0e2fLoqHwEBL4M0ztFjnBEz0YCDm5boc1nvkV1VMuIMteVdeBwnTh8Z0oPJTwHCD49vhMEt1I6A==, - } - - "@expo/env@1.0.7": - resolution: - { - integrity: sha512-qSTEnwvuYJ3umapO9XJtrb1fAqiPlmUUg78N0IZXXGwQRt+bkp0OBls+Y5Mxw/Owj8waAM0Z3huKKskRADR5ow==, - } - - "@expo/fingerprint@0.13.4": - resolution: - { - integrity: sha512-MYfPYBTMfrrNr07DALuLhG6EaLVNVrY/PXjEzsjWdWE4ZFn0yqI0IdHNkJG7t1gePT8iztHc7qnsx+oo/rDo6w==, - } + '@expo/code-signing-certificates@0.0.5': + resolution: {integrity: sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==} + + '@expo/config-plugins@10.1.2': + resolution: {integrity: sha512-IMYCxBOcnuFStuK0Ay+FzEIBKrwW8OVUMc65+v0+i7YFIIe8aL342l7T4F8lR4oCfhXn7d6M5QPgXvjtc/gAcw==} + + '@expo/config-plugins@9.0.17': + resolution: {integrity: sha512-m24F1COquwOm7PBl5wRbkT9P9DviCXe0D7S7nQsolfbhdCWuvMkfXeoWmgjtdhy7sDlOyIgBrAdnB6MfsWKqIg==} + + '@expo/config-types@52.0.5': + resolution: {integrity: sha512-AMDeuDLHXXqd8W+0zSjIt7f37vUd/BP8p43k68NHpyAvQO+z8mbQZm3cNQVAMySeayK2XoPigAFB1JF2NFajaA==} + + '@expo/config-types@53.0.5': + resolution: {integrity: sha512-kqZ0w44E+HEGBjy+Lpyn0BVL5UANg/tmNixxaRMLS6nf37YsDrLk2VMAmeKMMk5CKG0NmOdVv3ngeUjRQMsy9g==} + + '@expo/config@10.0.11': + resolution: {integrity: sha512-nociJ4zr/NmbVfMNe9j/+zRlt7wz/siISu7PjdWE4WE+elEGxWWxsGzltdJG0llzrM+khx8qUiFK5aiVcdMBww==} + + '@expo/config@11.0.13': + resolution: {integrity: sha512-TnGb4u/zUZetpav9sx/3fWK71oCPaOjZHoVED9NaEncktAd0Eonhq5NUghiJmkUGt3gGSjRAEBXiBbbY9/B1LA==} + + '@expo/devcert@1.2.0': + resolution: {integrity: sha512-Uilcv3xGELD5t/b0eM4cxBFEKQRIivB3v7i+VhWLV/gL98aw810unLKKJbGAxAIhY6Ipyz8ChWibFsKFXYwstA==} + + '@expo/env@0.4.2': + resolution: {integrity: sha512-TgbCgvSk0Kq0e2fLoqHwEBL4M0ztFjnBEz0YCDm5boc1nvkV1VMuIMteVdeBwnTh8Z0oPJTwHCD49vhMEt1I6A==} + + '@expo/env@1.0.7': + resolution: {integrity: sha512-qSTEnwvuYJ3umapO9XJtrb1fAqiPlmUUg78N0IZXXGwQRt+bkp0OBls+Y5Mxw/Owj8waAM0Z3huKKskRADR5ow==} + + '@expo/fingerprint@0.13.4': + resolution: {integrity: sha512-MYfPYBTMfrrNr07DALuLhG6EaLVNVrY/PXjEzsjWdWE4ZFn0yqI0IdHNkJG7t1gePT8iztHc7qnsx+oo/rDo6w==} hasBin: true - "@expo/image-utils@0.7.6": - resolution: - { - integrity: sha512-GKnMqC79+mo/1AFrmAcUcGfbsXXTRqOMNS1umebuevl3aaw+ztsYEFEiuNhHZW7PQ3Xs3URNT513ZxKhznDscw==, - } - - "@expo/json-file@9.0.2": - resolution: - { - integrity: sha512-yAznIUrybOIWp3Uax7yRflB0xsEpvIwIEqIjao9SGi2Gaa+N0OamWfe0fnXBSWF+2zzF4VvqwT4W5zwelchfgw==, - } - - "@expo/json-file@9.1.5": - resolution: - { - integrity: sha512-prWBhLUlmcQtvN6Y7BpW2k9zXGd3ySa3R6rAguMJkp1z22nunLN64KYTUWfijFlprFoxm9r2VNnGkcbndAlgKA==, - } - - "@expo/metro-config@0.20.17": - resolution: - { - integrity: sha512-lpntF2UZn5bTwrPK6guUv00Xv3X9mkN3YYla+IhEHiYXWyG7WKOtDU0U4KR8h3ubkZ6SPH3snDyRyAzMsWtZFA==, - } - - "@expo/osascript@2.2.5": - resolution: - { - integrity: sha512-Bpp/n5rZ0UmpBOnl7Li3LtM7la0AR3H9NNesqL+ytW5UiqV/TbonYW3rDZY38u4u/lG7TnYflVIVQPD+iqZJ5w==, - } - engines: { node: ">=12" } - - "@expo/package-manager@1.8.6": - resolution: - { - integrity: sha512-gcdICLuL+nHKZagPIDC5tX8UoDDB8vNA5/+SaQEqz8D+T2C4KrEJc2Vi1gPAlDnKif834QS6YluHWyxjk0yZlQ==, - } - - "@expo/plist@0.2.2": - resolution: - { - integrity: sha512-ZZGvTO6vEWq02UAPs3LIdja+HRO18+LRI5QuDl6Hs3Ps7KX7xU6Y6kjahWKY37Rx2YjNpX07dGpBFzzC+vKa2g==, - } - - "@expo/plist@0.3.5": - resolution: - { - integrity: sha512-9RYVU1iGyCJ7vWfg3e7c/NVyMFs8wbl+dMWZphtFtsqyN9zppGREU3ctlD3i8KUE0sCUTVnLjCWr+VeUIDep2g==, - } - - "@expo/prebuild-config@9.0.11": - resolution: - { - integrity: sha512-0DsxhhixRbCCvmYskBTq8czsU0YOBsntYURhWPNpkl0IPVpeP9haE5W4OwtHGzXEbmHdzaoDwNmVcWjS/mqbDw==, - } - - "@expo/sdk-runtime-versions@1.0.0": - resolution: - { - integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==, - } - - "@expo/spawn-async@1.7.2": - resolution: - { - integrity: sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==, - } - engines: { node: ">=12" } - - "@expo/sudo-prompt@9.3.2": - resolution: - { - integrity: sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==, - } - - "@expo/vector-icons@14.1.0": - resolution: - { - integrity: sha512-7T09UE9h8QDTsUeMGymB4i+iqvtEeaO5VvUjryFB4tugDTG/bkzViWA74hm5pfjjDEhYMXWaX112mcvhccmIwQ==, - } - peerDependencies: - expo-font: "*" - react: "*" - react-native: "*" - - "@expo/ws-tunnel@1.0.6": - resolution: - { - integrity: sha512-nDRbLmSrJar7abvUjp3smDwH8HcbZcoOEa5jVPUv9/9CajgmWw20JNRwTuBRzWIWIkEJDkz20GoNA+tSwUqk0Q==, - } - - "@expo/xcpretty@4.3.2": - resolution: - { - integrity: sha512-ReZxZ8pdnoI3tP/dNnJdnmAk7uLT4FjsKDGW7YeDdvdOMz2XCQSmSCM9IWlrXuWtMF9zeSB6WJtEhCQ41gQOfw==, - } + '@expo/image-utils@0.7.6': + resolution: {integrity: sha512-GKnMqC79+mo/1AFrmAcUcGfbsXXTRqOMNS1umebuevl3aaw+ztsYEFEiuNhHZW7PQ3Xs3URNT513ZxKhznDscw==} + + '@expo/json-file@9.0.2': + resolution: {integrity: sha512-yAznIUrybOIWp3Uax7yRflB0xsEpvIwIEqIjao9SGi2Gaa+N0OamWfe0fnXBSWF+2zzF4VvqwT4W5zwelchfgw==} + + '@expo/json-file@9.1.5': + resolution: {integrity: sha512-prWBhLUlmcQtvN6Y7BpW2k9zXGd3ySa3R6rAguMJkp1z22nunLN64KYTUWfijFlprFoxm9r2VNnGkcbndAlgKA==} + + '@expo/metro-config@0.20.17': + resolution: {integrity: sha512-lpntF2UZn5bTwrPK6guUv00Xv3X9mkN3YYla+IhEHiYXWyG7WKOtDU0U4KR8h3ubkZ6SPH3snDyRyAzMsWtZFA==} + + '@expo/osascript@2.2.5': + resolution: {integrity: sha512-Bpp/n5rZ0UmpBOnl7Li3LtM7la0AR3H9NNesqL+ytW5UiqV/TbonYW3rDZY38u4u/lG7TnYflVIVQPD+iqZJ5w==} + engines: {node: '>=12'} + + '@expo/package-manager@1.8.6': + resolution: {integrity: sha512-gcdICLuL+nHKZagPIDC5tX8UoDDB8vNA5/+SaQEqz8D+T2C4KrEJc2Vi1gPAlDnKif834QS6YluHWyxjk0yZlQ==} + + '@expo/plist@0.2.2': + resolution: {integrity: sha512-ZZGvTO6vEWq02UAPs3LIdja+HRO18+LRI5QuDl6Hs3Ps7KX7xU6Y6kjahWKY37Rx2YjNpX07dGpBFzzC+vKa2g==} + + '@expo/plist@0.3.5': + resolution: {integrity: sha512-9RYVU1iGyCJ7vWfg3e7c/NVyMFs8wbl+dMWZphtFtsqyN9zppGREU3ctlD3i8KUE0sCUTVnLjCWr+VeUIDep2g==} + + '@expo/prebuild-config@9.0.11': + resolution: {integrity: sha512-0DsxhhixRbCCvmYskBTq8czsU0YOBsntYURhWPNpkl0IPVpeP9haE5W4OwtHGzXEbmHdzaoDwNmVcWjS/mqbDw==} + + '@expo/sdk-runtime-versions@1.0.0': + resolution: {integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==} + + '@expo/spawn-async@1.7.2': + resolution: {integrity: sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==} + engines: {node: '>=12'} + + '@expo/sudo-prompt@9.3.2': + resolution: {integrity: sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==} + + '@expo/vector-icons@14.1.0': + resolution: {integrity: sha512-7T09UE9h8QDTsUeMGymB4i+iqvtEeaO5VvUjryFB4tugDTG/bkzViWA74hm5pfjjDEhYMXWaX112mcvhccmIwQ==} + peerDependencies: + expo-font: '*' + react: '*' + react-native: '*' + + '@expo/ws-tunnel@1.0.6': + resolution: {integrity: sha512-nDRbLmSrJar7abvUjp3smDwH8HcbZcoOEa5jVPUv9/9CajgmWw20JNRwTuBRzWIWIkEJDkz20GoNA+tSwUqk0Q==} + + '@expo/xcpretty@4.3.2': + resolution: {integrity: sha512-ReZxZ8pdnoI3tP/dNnJdnmAk7uLT4FjsKDGW7YeDdvdOMz2XCQSmSCM9IWlrXuWtMF9zeSB6WJtEhCQ41gQOfw==} hasBin: true - "@fastify/busboy@2.1.1": - resolution: - { - integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==, - } - engines: { node: ">=14" } - - "@floating-ui/core@1.7.3": - resolution: - { - integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==, - } - - "@floating-ui/dom@1.7.3": - resolution: - { - integrity: sha512-uZA413QEpNuhtb3/iIKoYMSK07keHPYeXF02Zhd6e213j+d1NamLix/mCLxBUDW/Gx52sPH2m+chlUsyaBs/Ag==, - } - - "@floating-ui/react-dom@2.1.5": - resolution: - { - integrity: sha512-HDO/1/1oH9fjj4eLgegrlH3dklZpHtUYYFiVwMUwfGvk9jWDRWqkklA2/NFScknrcNSspbV868WjXORvreDX+Q==, - } - peerDependencies: - react: ">=16.8.0" - react-dom: ">=16.8.0" - - "@floating-ui/utils@0.2.10": - resolution: - { - integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==, - } - - "@graphql-typed-document-node/core@3.2.0": - resolution: - { - integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==, - } + '@fastify/busboy@2.1.1': + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} + engines: {node: '>=14'} + + '@floating-ui/core@1.7.3': + resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} + + '@floating-ui/dom@1.7.3': + resolution: {integrity: sha512-uZA413QEpNuhtb3/iIKoYMSK07keHPYeXF02Zhd6e213j+d1NamLix/mCLxBUDW/Gx52sPH2m+chlUsyaBs/Ag==} + + '@floating-ui/react-dom@2.1.5': + resolution: {integrity: sha512-HDO/1/1oH9fjj4eLgegrlH3dklZpHtUYYFiVwMUwfGvk9jWDRWqkklA2/NFScknrcNSspbV868WjXORvreDX+Q==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.10': + resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} + + '@graphql-typed-document-node/core@3.2.0': + resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - "@heroicons/react@2.2.0": - resolution: - { - integrity: sha512-LMcepvRaS9LYHJGsF0zzmgKCUim/X3N/DQKc4jepAXJ7l8QxJ1PmxJzqplF2Z3FE4PqBAIGyJAQ/w4B5dsqbtQ==, - } + '@heroicons/react@2.2.0': + resolution: {integrity: sha512-LMcepvRaS9LYHJGsF0zzmgKCUim/X3N/DQKc4jepAXJ7l8QxJ1PmxJzqplF2Z3FE4PqBAIGyJAQ/w4B5dsqbtQ==} peerDependencies: - react: ">= 16 || ^19.0.0-rc" + react: '>= 16 || ^19.0.0-rc' - "@humanwhocodes/config-array@0.13.0": - resolution: - { - integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==, - } - engines: { node: ">=10.10.0" } + '@humanwhocodes/config-array@0.13.0': + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} + 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/object-schema@2.0.3": - resolution: - { - integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==, - } + '@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==} deprecated: Use @eslint/object-schema instead - "@img/sharp-darwin-arm64@0.33.5": - resolution: - { - integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] - "@img/sharp-darwin-x64@0.33.5": - resolution: - { - integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] - "@img/sharp-libvips-darwin-arm64@1.0.4": - resolution: - { - integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==, - } + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} cpu: [arm64] os: [darwin] - "@img/sharp-libvips-darwin-x64@1.0.4": - resolution: - { - integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==, - } + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} cpu: [x64] os: [darwin] - "@img/sharp-libvips-linux-arm64@1.0.4": - resolution: - { - integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==, - } + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} cpu: [arm64] os: [linux] - "@img/sharp-libvips-linux-arm@1.0.5": - resolution: - { - integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==, - } + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} cpu: [arm] os: [linux] - "@img/sharp-libvips-linux-s390x@1.0.4": - resolution: - { - integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==, - } + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} cpu: [s390x] os: [linux] - "@img/sharp-libvips-linux-x64@1.0.4": - resolution: - { - integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==, - } + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} cpu: [x64] os: [linux] - "@img/sharp-libvips-linuxmusl-arm64@1.0.4": - resolution: - { - integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==, - } + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} cpu: [arm64] os: [linux] - "@img/sharp-libvips-linuxmusl-x64@1.0.4": - resolution: - { - integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==, - } + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} cpu: [x64] os: [linux] - "@img/sharp-linux-arm64@0.33.5": - resolution: - { - integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - "@img/sharp-linux-arm@0.33.5": - resolution: - { - integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] - "@img/sharp-linux-s390x@0.33.5": - resolution: - { - integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] - "@img/sharp-linux-x64@0.33.5": - resolution: - { - integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - "@img/sharp-linuxmusl-arm64@0.33.5": - resolution: - { - integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - "@img/sharp-linuxmusl-x64@0.33.5": - resolution: - { - integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - "@img/sharp-wasm32@0.33.5": - resolution: - { - integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] - "@img/sharp-win32-ia32@0.33.5": - resolution: - { - integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] - "@img/sharp-win32-x64@0.33.5": - resolution: - { - integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [win32] - "@inquirer/external-editor@1.0.1": - resolution: - { - integrity: sha512-Oau4yL24d2B5IL4ma4UpbQigkVhzPDXLoqy1ggK4gnHg/stmkffJE4oOXHXF3uz0UEpywG68KcyXsyYpA1Re/Q==, - } - engines: { node: ">=18" } + '@inquirer/external-editor@1.0.1': + resolution: {integrity: sha512-Oau4yL24d2B5IL4ma4UpbQigkVhzPDXLoqy1ggK4gnHg/stmkffJE4oOXHXF3uz0UEpywG68KcyXsyYpA1Re/Q==} + engines: {node: '>=18'} peerDependencies: - "@types/node": ">=18" + '@types/node': '>=18' peerDependenciesMeta: - "@types/node": + '@types/node': optional: true - "@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/cliui@8.0.2": - resolution: - { - integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==, - } - engines: { node: ">=12" } - - "@isaacs/fs-minipass@4.0.1": - resolution: - { - integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==, - } - engines: { node: ">=18.0.0" } - - "@isaacs/ttlcache@1.4.1": - resolution: - { - integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==, - } - engines: { node: ">=12" } - - "@istanbuljs/load-nyc-config@1.1.0": - resolution: - { - integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==, - } - engines: { node: ">=8" } - - "@istanbuljs/schema@0.1.3": - resolution: - { - integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==, - } - engines: { node: ">=8" } - - "@jest/console@29.7.0": - resolution: - { - integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - "@jest/core@29.7.0": - resolution: - { - integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + '@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/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + + '@isaacs/ttlcache@1.4.1': + resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} + engines: {node: '>=12'} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@29.7.0': + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/core@29.7.0': + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: node-notifier: optional: true - "@jest/create-cache-key-function@29.7.0": - resolution: - { - integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - "@jest/environment@29.7.0": - resolution: - { - integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - "@jest/expect-utils@29.7.0": - resolution: - { - integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - "@jest/expect@29.7.0": - resolution: - { - integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - "@jest/fake-timers@29.7.0": - resolution: - { - integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - "@jest/globals@29.7.0": - resolution: - { - integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - "@jest/reporters@29.7.0": - resolution: - { - integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + '@jest/create-cache-key-function@29.7.0': + resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/diff-sequences@30.0.1': + resolution: {integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect-utils@29.7.0': + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect-utils@30.1.2': + resolution: {integrity: sha512-HXy1qT/bfdjCv7iC336ExbqqYtZvljrV8odNdso7dWK9bSeHtLlvwWWC3YSybSPL03Gg5rug6WLCZAZFH72m0A==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/expect@29.7.0': + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/fake-timers@29.7.0': + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/get-type@30.1.0': + resolution: {integrity: sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/globals@29.7.0': + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/pattern@30.0.1': + resolution: {integrity: sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/reporters@29.7.0': + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: node-notifier: optional: true - "@jest/schemas@29.6.3": - resolution: - { - integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - "@jest/source-map@29.6.3": - resolution: - { - integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - "@jest/test-result@29.7.0": - resolution: - { - integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - "@jest/test-sequencer@29.7.0": - resolution: - { - integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - "@jest/transform@29.7.0": - resolution: - { - integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - "@jest/types@29.6.3": - resolution: - { - integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - "@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/source-map@0.3.11": - resolution: - { - integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==, - } - - "@jridgewell/sourcemap-codec@1.5.5": - resolution: - { - integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==, - } - - "@jridgewell/trace-mapping@0.3.30": - resolution: - { - integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==, - } - - "@jridgewell/trace-mapping@0.3.9": - resolution: - { - integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==, - } - - "@manypkg/find-root@1.1.0": - resolution: - { - integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==, - } - - "@manypkg/get-packages@1.1.3": - resolution: - { - integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==, - } - - "@microsoft/tsdoc-config@0.16.2": - resolution: - { - integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==, - } - - "@microsoft/tsdoc@0.14.2": - resolution: - { - integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==, - } - - "@napi-rs/wasm-runtime@0.2.12": - resolution: - { - integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==, - } - - "@next/env@14.2.31": - resolution: - { - integrity: sha512-X8VxxYL6VuezrG82h0pUA1V+DuTSJp7Nv15bxq3ivrFqZLjx81rfeHMWOE9T0jm1n3DtHGv8gdn6B0T0kr0D3Q==, - } - - "@next/eslint-plugin-next@13.5.11": - resolution: - { - integrity: sha512-0qjDhes9UTSxirt/dYzrv20hs8SUhcIOvlEioj5+XucVrBHihnAk6Om7Vzk+VZ2nRE7tcShm/6lH1xSkJ3XMpg==, - } - - "@next/eslint-plugin-next@14.0.4": - resolution: - { - integrity: sha512-U3qMNHmEZoVmHA0j/57nRfi3AscXNvkOnxDmle/69Jz/G0o/gWjXTDdlgILZdrxQ0Lw/jv2mPW8PGy0EGIHXhQ==, - } - - "@next/swc-darwin-arm64@14.2.31": - resolution: - { - integrity: sha512-dTHKfaFO/xMJ3kzhXYgf64VtV6MMwDs2viedDOdP+ezd0zWMOQZkxcwOfdcQeQCpouTr9b+xOqMCUXxgLizl8Q==, - } - engines: { node: ">= 10" } + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/schemas@30.0.5': + resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/source-map@29.6.3': + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-result@29.7.0': + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-sequencer@29.7.0': + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/transform@29.7.0': + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@30.0.5': + resolution: {integrity: sha512-aREYa3aku9SSnea4aX6bhKn4bgv3AXkgijoQgbYV3yvbiGt6z+MQ85+6mIhx9DsKW2BuB/cLR/A+tcMThx+KLQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@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/source-map@0.3.11': + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.30': + resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@manypkg/find-root@1.1.0': + resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} + + '@manypkg/get-packages@1.1.3': + resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} + + '@microsoft/tsdoc-config@0.16.2': + resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} + + '@microsoft/tsdoc@0.14.2': + resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} + + '@napi-rs/wasm-runtime@0.2.12': + resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} + + '@next/env@14.2.31': + resolution: {integrity: sha512-X8VxxYL6VuezrG82h0pUA1V+DuTSJp7Nv15bxq3ivrFqZLjx81rfeHMWOE9T0jm1n3DtHGv8gdn6B0T0kr0D3Q==} + + '@next/eslint-plugin-next@13.5.11': + resolution: {integrity: sha512-0qjDhes9UTSxirt/dYzrv20hs8SUhcIOvlEioj5+XucVrBHihnAk6Om7Vzk+VZ2nRE7tcShm/6lH1xSkJ3XMpg==} + + '@next/eslint-plugin-next@14.0.4': + resolution: {integrity: sha512-U3qMNHmEZoVmHA0j/57nRfi3AscXNvkOnxDmle/69Jz/G0o/gWjXTDdlgILZdrxQ0Lw/jv2mPW8PGy0EGIHXhQ==} + + '@next/swc-darwin-arm64@14.2.31': + resolution: {integrity: sha512-dTHKfaFO/xMJ3kzhXYgf64VtV6MMwDs2viedDOdP+ezd0zWMOQZkxcwOfdcQeQCpouTr9b+xOqMCUXxgLizl8Q==} + engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - "@next/swc-darwin-x64@14.2.31": - resolution: - { - integrity: sha512-iSavebQgeMukUAfjfW8Fi2Iz01t95yxRl2w2wCzjD91h5In9la99QIDKcKSYPfqLjCgwz3JpIWxLG6LM/sxL4g==, - } - engines: { node: ">= 10" } + '@next/swc-darwin-x64@14.2.31': + resolution: {integrity: sha512-iSavebQgeMukUAfjfW8Fi2Iz01t95yxRl2w2wCzjD91h5In9la99QIDKcKSYPfqLjCgwz3JpIWxLG6LM/sxL4g==} + engines: {node: '>= 10'} cpu: [x64] os: [darwin] - "@next/swc-linux-arm64-gnu@14.2.31": - resolution: - { - integrity: sha512-XJb3/LURg1u1SdQoopG6jDL2otxGKChH2UYnUTcby4izjM0il7ylBY5TIA7myhvHj9lG5pn9F2nR2s3i8X9awQ==, - } - engines: { node: ">= 10" } + '@next/swc-linux-arm64-gnu@14.2.31': + resolution: {integrity: sha512-XJb3/LURg1u1SdQoopG6jDL2otxGKChH2UYnUTcby4izjM0il7ylBY5TIA7myhvHj9lG5pn9F2nR2s3i8X9awQ==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] - "@next/swc-linux-arm64-musl@14.2.31": - resolution: - { - integrity: sha512-IInDAcchNCu3BzocdqdCv1bKCmUVO/bKJHnBFTeq3svfaWpOPewaLJ2Lu3GL4yV76c/86ZvpBbG/JJ1lVIs5MA==, - } - engines: { node: ">= 10" } + '@next/swc-linux-arm64-musl@14.2.31': + resolution: {integrity: sha512-IInDAcchNCu3BzocdqdCv1bKCmUVO/bKJHnBFTeq3svfaWpOPewaLJ2Lu3GL4yV76c/86ZvpBbG/JJ1lVIs5MA==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] - "@next/swc-linux-x64-gnu@14.2.31": - resolution: - { - integrity: sha512-YTChJL5/9e4NXPKW+OJzsQa42RiWUNbE+k+ReHvA+lwXk+bvzTsVQboNcezWOuCD+p/J+ntxKOB/81o0MenBhw==, - } - engines: { node: ">= 10" } + '@next/swc-linux-x64-gnu@14.2.31': + resolution: {integrity: sha512-YTChJL5/9e4NXPKW+OJzsQa42RiWUNbE+k+ReHvA+lwXk+bvzTsVQboNcezWOuCD+p/J+ntxKOB/81o0MenBhw==} + engines: {node: '>= 10'} cpu: [x64] os: [linux] - "@next/swc-linux-x64-musl@14.2.31": - resolution: - { - integrity: sha512-A0JmD1y4q/9ufOGEAhoa60Sof++X10PEoiWOH0gZ2isufWZeV03NnyRlRmJpRQWGIbRkJUmBo9I3Qz5C10vx4w==, - } - engines: { node: ">= 10" } + '@next/swc-linux-x64-musl@14.2.31': + resolution: {integrity: sha512-A0JmD1y4q/9ufOGEAhoa60Sof++X10PEoiWOH0gZ2isufWZeV03NnyRlRmJpRQWGIbRkJUmBo9I3Qz5C10vx4w==} + engines: {node: '>= 10'} cpu: [x64] os: [linux] - "@next/swc-win32-arm64-msvc@14.2.31": - resolution: - { - integrity: sha512-nowJ5GbMeDOMzbTm29YqrdrD6lTM8qn2wnZfGpYMY7SZODYYpaJHH1FJXE1l1zWICHR+WfIMytlTDBHu10jb8A==, - } - engines: { node: ">= 10" } + '@next/swc-win32-arm64-msvc@14.2.31': + resolution: {integrity: sha512-nowJ5GbMeDOMzbTm29YqrdrD6lTM8qn2wnZfGpYMY7SZODYYpaJHH1FJXE1l1zWICHR+WfIMytlTDBHu10jb8A==} + engines: {node: '>= 10'} cpu: [arm64] os: [win32] - "@next/swc-win32-ia32-msvc@14.2.31": - resolution: - { - integrity: sha512-pk9Bu4K0015anTS1OS9d/SpS0UtRObC+xe93fwnm7Gvqbv/W1ZbzhK4nvc96RURIQOux3P/bBH316xz8wjGSsA==, - } - engines: { node: ">= 10" } + '@next/swc-win32-ia32-msvc@14.2.31': + resolution: {integrity: sha512-pk9Bu4K0015anTS1OS9d/SpS0UtRObC+xe93fwnm7Gvqbv/W1ZbzhK4nvc96RURIQOux3P/bBH316xz8wjGSsA==} + engines: {node: '>= 10'} cpu: [ia32] os: [win32] - "@next/swc-win32-x64-msvc@14.2.31": - resolution: - { - integrity: sha512-LwFZd4JFnMHGceItR9+jtlMm8lGLU/IPkgjBBgYmdYSfalbHCiDpjMYtgDQ2wtwiAOSJOCyFI4m8PikrsDyA6Q==, - } - engines: { node: ">= 10" } + '@next/swc-win32-x64-msvc@14.2.31': + resolution: {integrity: sha512-LwFZd4JFnMHGceItR9+jtlMm8lGLU/IPkgjBBgYmdYSfalbHCiDpjMYtgDQ2wtwiAOSJOCyFI4m8PikrsDyA6Q==} + engines: {node: '>= 10'} cpu: [x64] os: [win32] - "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": - resolution: - { - integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==, - } - - "@noble/ciphers@1.3.0": - resolution: - { - integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==, - } - engines: { node: ^14.21.3 || >=16 } - - "@noble/curves@1.9.7": - resolution: - { - integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==, - } - engines: { node: ^14.21.3 || >=16 } - - "@noble/hashes@1.8.0": - resolution: - { - integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==, - } - engines: { node: ^14.21.3 || >=16 } - - "@node-minify/core@8.0.6": - resolution: - { - integrity: sha512-/vxN46ieWDLU67CmgbArEvOb41zlYFOkOtr9QW9CnTrBLuTyGgkyNWC2y5+khvRw3Br58p2B5ZVSx/PxCTru6g==, - } - engines: { node: ">=16.0.0" } - - "@node-minify/terser@8.0.6": - resolution: - { - integrity: sha512-grQ1ipham743ch2c3++C8Isk6toJnxJSyDiwUI/IWUCh4CZFD6aYVw6UAY40IpCnjrq5aXGwiv5OZJn6Pr0hvg==, - } - engines: { node: ">=16.0.0" } - - "@node-minify/utils@8.0.6": - resolution: - { - integrity: sha512-csY4qcR7jUwiZmkreNTJhcypQfts2aY2CK+a+rXgXUImZiZiySh0FvwHjRnlqWKvg+y6ae9lHFzDRjBTmqlTIQ==, - } - engines: { node: ">=16.0.0" } - - "@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.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" } - - "@opennextjs/aws@3.7.6": - resolution: - { - integrity: sha512-l4UGkmaZaAjWER+PuZ/zNziMnrbf6oA9B1RUDKcyKsX+hEES1b7h6kLgpo4a4maf01M+k0yJUZQyF4sf+vI+Iw==, - } + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} + + '@noble/ciphers@1.3.0': + resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==} + engines: {node: ^14.21.3 || >=16} + + '@noble/curves@1.9.7': + resolution: {integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.8.0': + resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} + engines: {node: ^14.21.3 || >=16} + + '@node-minify/core@8.0.6': + resolution: {integrity: sha512-/vxN46ieWDLU67CmgbArEvOb41zlYFOkOtr9QW9CnTrBLuTyGgkyNWC2y5+khvRw3Br58p2B5ZVSx/PxCTru6g==} + engines: {node: '>=16.0.0'} + + '@node-minify/terser@8.0.6': + resolution: {integrity: sha512-grQ1ipham743ch2c3++C8Isk6toJnxJSyDiwUI/IWUCh4CZFD6aYVw6UAY40IpCnjrq5aXGwiv5OZJn6Pr0hvg==} + engines: {node: '>=16.0.0'} + + '@node-minify/utils@8.0.6': + resolution: {integrity: sha512-csY4qcR7jUwiZmkreNTJhcypQfts2aY2CK+a+rXgXUImZiZiySh0FvwHjRnlqWKvg+y6ae9lHFzDRjBTmqlTIQ==} + engines: {node: '>=16.0.0'} + + '@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.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'} + + '@opennextjs/aws@3.7.6': + resolution: {integrity: sha512-l4UGkmaZaAjWER+PuZ/zNziMnrbf6oA9B1RUDKcyKsX+hEES1b7h6kLgpo4a4maf01M+k0yJUZQyF4sf+vI+Iw==} hasBin: true - "@opennextjs/cloudflare@1.7.1": - resolution: - { - integrity: sha512-g3d8LSpGGJzuCLuLYHAs7nGWFKK57qSOgxhpn3wwk6t/tXxsneXA3D5nbf6zLsAQQo8b6A8LDcT732U3rUXUeA==, - } + '@opennextjs/cloudflare@1.7.1': + resolution: {integrity: sha512-g3d8LSpGGJzuCLuLYHAs7nGWFKK57qSOgxhpn3wwk6t/tXxsneXA3D5nbf6zLsAQQo8b6A8LDcT732U3rUXUeA==} hasBin: true peerDependencies: wrangler: ^4.24.4 - "@pkgjs/parseargs@0.11.0": - resolution: - { - integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==, - } - engines: { node: ">=14" } - - "@pkgr/core@0.2.9": - resolution: - { - integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==, - } - engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 } - - "@poppinss/colors@4.1.5": - resolution: - { - integrity: sha512-FvdDqtcRCtz6hThExcFOgW0cWX+xwSMWcRuQe5ZEb2m7cVQOAVZOIMt+/v9RxGiD9/OY16qJBXK4CVKWAPalBw==, - } - - "@poppinss/dumper@0.6.4": - resolution: - { - integrity: sha512-iG0TIdqv8xJ3Lt9O8DrPRxw1MRLjNpoqiSGU03P/wNLP/s0ra0udPJ1J2Tx5M0J3H/cVyEgpbn8xUKRY9j59kQ==, - } - - "@poppinss/exception@1.2.2": - resolution: - { - integrity: sha512-m7bpKCD4QMlFCjA/nKTs23fuvoVFoA83brRKmObCUNmi/9tVu8Ve3w4YQAnJu4q3Tjf5fr685HYIC/IA2zHRSg==, - } - - "@protobuf-ts/runtime@2.11.1": - resolution: - { - integrity: sha512-KuDaT1IfHkugM2pyz+FwiY80ejWrkH1pAtOBOZFuR6SXEFTsnb/jiQWQ1rCIrcKx2BtyxnxW6BWwsVSA/Ie+WQ==, - } - - "@protobufjs/aspromise@1.1.2": - resolution: - { - integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==, - } - - "@protobufjs/base64@1.1.2": - resolution: - { - integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==, - } - - "@protobufjs/codegen@2.0.4": - resolution: - { - integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==, - } - - "@protobufjs/eventemitter@1.1.0": - resolution: - { - integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==, - } - - "@protobufjs/fetch@1.1.0": - resolution: - { - integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==, - } - - "@protobufjs/float@1.0.2": - resolution: - { - integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==, - } - - "@protobufjs/inquire@1.1.0": - resolution: - { - integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==, - } - - "@protobufjs/path@1.1.2": - resolution: - { - integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==, - } - - "@protobufjs/pool@1.1.0": - resolution: - { - integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==, - } - - "@protobufjs/utf8@1.1.0": - resolution: - { - integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==, - } - - "@radix-ui/primitive@1.1.3": - resolution: - { - integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==, - } - - "@radix-ui/react-arrow@1.1.7": - resolution: - { - integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==, - } - peerDependencies: - "@types/react": ^18.2.47 - "@types/react-dom": ^18.2.18 + '@panva/hkdf@1.2.1': + resolution: {integrity: sha512-6oclG6Y3PiDFcoyk8srjLfVKyMfVCKJ27JwNPViuXziFpmdz+MZnZN/aKY0JGXgYuO/VghU0jcOAZgWXZ1Dmrw==} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.2.9': + resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@poppinss/colors@4.1.5': + resolution: {integrity: sha512-FvdDqtcRCtz6hThExcFOgW0cWX+xwSMWcRuQe5ZEb2m7cVQOAVZOIMt+/v9RxGiD9/OY16qJBXK4CVKWAPalBw==} + + '@poppinss/dumper@0.6.4': + resolution: {integrity: sha512-iG0TIdqv8xJ3Lt9O8DrPRxw1MRLjNpoqiSGU03P/wNLP/s0ra0udPJ1J2Tx5M0J3H/cVyEgpbn8xUKRY9j59kQ==} + + '@poppinss/exception@1.2.2': + resolution: {integrity: sha512-m7bpKCD4QMlFCjA/nKTs23fuvoVFoA83brRKmObCUNmi/9tVu8Ve3w4YQAnJu4q3Tjf5fr685HYIC/IA2zHRSg==} + + '@prisma/client@6.16.1': + resolution: {integrity: sha512-QaBCOY29lLAxEFFJgBPyW3WInCW52fJeQTmWx/h6YsP5u0bwuqP51aP0uhqFvhK9DaZPwvai/M4tSDYLVE9vRg==} + engines: {node: '>=18.18'} + peerDependencies: + prisma: '*' + typescript: '>=5.1.0' + peerDependenciesMeta: + prisma: + optional: true + typescript: + optional: true + + '@prisma/config@6.16.1': + resolution: {integrity: sha512-sz3uxRPNL62QrJ0EYiujCFkIGZ3hg+9hgC1Ae1HjoYuj0BxCqHua4JNijYvYCrh9LlofZDZcRBX3tHBfLvAngA==} + + '@prisma/debug@6.16.1': + resolution: {integrity: sha512-RWv/VisW5vJE4cDRTuAHeVedtGoItXTnhuLHsSlJ9202QKz60uiXWywBlVcqXVq8bFeIZoCoWH+R1duZJPwqLw==} + + '@prisma/engines-version@6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43': + resolution: {integrity: sha512-ThvlDaKIVrnrv97ujNFDYiQbeMQpLa0O86HFA2mNoip4mtFqM7U5GSz2ie1i2xByZtvPztJlNRgPsXGeM/kqAA==} + + '@prisma/engines@6.16.1': + resolution: {integrity: sha512-EOnEM5HlosPudBqbI+jipmaW/vQEaF0bKBo4gVkGabasINHR6RpC6h44fKZEqx4GD8CvH+einD2+b49DQrwrAg==} + + '@prisma/fetch-engine@6.16.1': + resolution: {integrity: sha512-fl/PKQ8da5YTayw86WD3O9OmKJEM43gD3vANy2hS5S1CnfW2oPXk+Q03+gUWqcKK306QqhjjIHRFuTZ31WaosQ==} + + '@prisma/get-platform@6.16.1': + resolution: {integrity: sha512-kUfg4vagBG7dnaGRcGd1c0ytQFcDj2SUABiuveIpL3bthFdTLI6PJeLEia6Q8Dgh+WhPdo0N2q0Fzjk63XTyaA==} + + '@protobuf-ts/runtime@2.11.1': + resolution: {integrity: sha512-KuDaT1IfHkugM2pyz+FwiY80ejWrkH1pAtOBOZFuR6SXEFTsnb/jiQWQ1rCIrcKx2BtyxnxW6BWwsVSA/Ie+WQ==} + + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + + '@protobufjs/codegen@2.0.4': + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + + '@protobufjs/eventemitter@1.1.0': + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + + '@protobufjs/fetch@1.1.0': + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + + '@protobufjs/inquire@1.1.0': + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + + '@protobufjs/pool@1.1.0': + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + + '@protobufjs/utf8@1.1.0': + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + + '@radix-ui/primitive@1.1.3': + resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} + + '@radix-ui/react-arrow@1.1.7': + resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} + peerDependencies: + '@types/react': ^18.2.47 + '@types/react-dom': ^18.2.18 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": ^18.2.47 + '@types/react': ^18.2.47 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": ^18.2.47 + '@types/react': ^18.2.47 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": ^18.2.47 - "@types/react-dom": ^18.2.18 + '@types/react': ^18.2.47 + '@types/react-dom': ^18.2.18 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-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": ^18.2.47 - "@types/react-dom": ^18.2.18 + '@types/react': ^18.2.47 + '@types/react-dom': ^18.2.18 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": ^18.2.47 + '@types/react': ^18.2.47 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": ^18.2.47 - "@types/react-dom": ^18.2.18 + '@types/react': ^18.2.47 + '@types/react-dom': ^18.2.18 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": ^18.2.47 + '@types/react': ^18.2.47 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@radix-ui/react-popover@1.1.15": - resolution: - { - integrity: sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==, - } + '@radix-ui/react-popover@1.1.15': + resolution: {integrity: sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==} peerDependencies: - "@types/react": ^18.2.47 - "@types/react-dom": ^18.2.18 + '@types/react': ^18.2.47 + '@types/react-dom': ^18.2.18 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": ^18.2.47 - "@types/react-dom": ^18.2.18 + '@types/react': ^18.2.47 + '@types/react-dom': ^18.2.18 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": ^18.2.47 - "@types/react-dom": ^18.2.18 + '@types/react': ^18.2.47 + '@types/react-dom': ^18.2.18 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": ^18.2.47 - "@types/react-dom": ^18.2.18 + '@types/react': ^18.2.47 + '@types/react-dom': ^18.2.18 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": ^18.2.47 - "@types/react-dom": ^18.2.18 + '@types/react': ^18.2.47 + '@types/react-dom': ^18.2.18 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": ^18.2.47 + '@types/react': ^18.2.47 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': 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": ^18.2.47 + '@types/react': ^18.2.47 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": ^18.2.47 + '@types/react': ^18.2.47 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": ^18.2.47 + '@types/react': ^18.2.47 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": ^18.2.47 + '@types/react': ^18.2.47 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": ^18.2.47 + '@types/react': ^18.2.47 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": ^18.2.47 + '@types/react': ^18.2.47 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": ^18.2.47 + '@types/react': ^18.2.47 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": ^18.2.47 - "@types/react-dom": ^18.2.18 + '@types/react': ^18.2.47 + '@types/react-dom': ^18.2.18 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==} - "@react-native-async-storage/async-storage@1.23.1": - resolution: - { - integrity: sha512-Qd2kQ3yi6Y3+AcUlrHxSLlnBvpdCEMVGFlVBneVOjaFaPU61g1huc38g339ysXspwY1QZA2aNhrk/KlHGO+ewA==, - } + '@react-native-async-storage/async-storage@1.23.1': + resolution: {integrity: sha512-Qd2kQ3yi6Y3+AcUlrHxSLlnBvpdCEMVGFlVBneVOjaFaPU61g1huc38g339ysXspwY1QZA2aNhrk/KlHGO+ewA==} peerDependencies: react-native: ^0.0.0-0 || >=0.60 <1.0 - "@react-native/assets-registry@0.76.7": - resolution: - { - integrity: sha512-o79whsqL5fbPTUQO9w1FptRd4cw1TaeOrXtQSLQeDrMVAenw/wmsjyPK10VKtvqxa1KNMtWEyfgxcM8CVZVFmg==, - } - engines: { node: ">=18" } - - "@react-native/babel-plugin-codegen@0.76.7": - resolution: - { - integrity: sha512-+8H4DXJREM4l/pwLF/wSVMRzVhzhGDix5jLezNrMD9J1U1AMfV2aSkWA1XuqR7pjPs/Vqf6TaPL7vJMZ4LU05Q==, - } - engines: { node: ">=18" } - - "@react-native/babel-plugin-codegen@0.79.5": - resolution: - { - integrity: sha512-Rt/imdfqXihD/sn0xnV4flxxb1aLLjPtMF1QleQjEhJsTUPpH4TFlfOpoCvsrXoDl4OIcB1k4FVM24Ez92zf5w==, - } - engines: { node: ">=18" } - - "@react-native/babel-preset@0.76.7": - resolution: - { - integrity: sha512-/c5DYZ6y8tyg+g8tgXKndDT7mWnGmkZ9F+T3qNDfoE3Qh7ucrNeC2XWvU9h5pk8eRtj9l4SzF4aO1phzwoibyg==, - } - engines: { node: ">=18" } - peerDependencies: - "@babel/core": "*" - - "@react-native/babel-preset@0.79.5": - resolution: - { - integrity: sha512-GDUYIWslMLbdJHEgKNfrOzXk8EDKxKzbwmBXUugoiSlr6TyepVZsj3GZDLEFarOcTwH1EXXHJsixihk8DCRQDA==, - } - engines: { node: ">=18" } - peerDependencies: - "@babel/core": "*" - - "@react-native/codegen@0.76.7": - resolution: - { - integrity: sha512-FAn585Ll65YvkSrKDyAcsdjHhhAGiMlSTUpHh0x7J5ntudUns+voYms0xMP+pEPt0XuLdjhD7zLIIlAWP407+g==, - } - engines: { node: ">=18" } - peerDependencies: - "@babel/preset-env": ^7.1.6 - - "@react-native/codegen@0.79.5": - resolution: - { - integrity: sha512-FO5U1R525A1IFpJjy+KVznEinAgcs3u7IbnbRJUG9IH/MBXi2lEU2LtN+JarJ81MCfW4V2p0pg6t/3RGHFRrlQ==, - } - engines: { node: ">=18" } - peerDependencies: - "@babel/core": "*" - - "@react-native/community-cli-plugin@0.76.7": - resolution: - { - integrity: sha512-lrcsY2WPLCEWU1pjdNV9+Ccj8vCEwCCURZiPa5aqi7lKB4C++1hPrxA8/CWWnTNcQp76DsBKGYqTFj7Ud4aupw==, - } - engines: { node: ">=18" } - peerDependencies: - "@react-native-community/cli-server-api": "*" + '@react-native/assets-registry@0.76.7': + resolution: {integrity: sha512-o79whsqL5fbPTUQO9w1FptRd4cw1TaeOrXtQSLQeDrMVAenw/wmsjyPK10VKtvqxa1KNMtWEyfgxcM8CVZVFmg==} + engines: {node: '>=18'} + + '@react-native/babel-plugin-codegen@0.76.7': + resolution: {integrity: sha512-+8H4DXJREM4l/pwLF/wSVMRzVhzhGDix5jLezNrMD9J1U1AMfV2aSkWA1XuqR7pjPs/Vqf6TaPL7vJMZ4LU05Q==} + engines: {node: '>=18'} + + '@react-native/babel-plugin-codegen@0.79.5': + resolution: {integrity: sha512-Rt/imdfqXihD/sn0xnV4flxxb1aLLjPtMF1QleQjEhJsTUPpH4TFlfOpoCvsrXoDl4OIcB1k4FVM24Ez92zf5w==} + engines: {node: '>=18'} + + '@react-native/babel-preset@0.76.7': + resolution: {integrity: sha512-/c5DYZ6y8tyg+g8tgXKndDT7mWnGmkZ9F+T3qNDfoE3Qh7ucrNeC2XWvU9h5pk8eRtj9l4SzF4aO1phzwoibyg==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + + '@react-native/babel-preset@0.79.5': + resolution: {integrity: sha512-GDUYIWslMLbdJHEgKNfrOzXk8EDKxKzbwmBXUugoiSlr6TyepVZsj3GZDLEFarOcTwH1EXXHJsixihk8DCRQDA==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + + '@react-native/codegen@0.76.7': + resolution: {integrity: sha512-FAn585Ll65YvkSrKDyAcsdjHhhAGiMlSTUpHh0x7J5ntudUns+voYms0xMP+pEPt0XuLdjhD7zLIIlAWP407+g==} + engines: {node: '>=18'} + peerDependencies: + '@babel/preset-env': ^7.1.6 + + '@react-native/codegen@0.79.5': + resolution: {integrity: sha512-FO5U1R525A1IFpJjy+KVznEinAgcs3u7IbnbRJUG9IH/MBXi2lEU2LtN+JarJ81MCfW4V2p0pg6t/3RGHFRrlQ==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + + '@react-native/community-cli-plugin@0.76.7': + resolution: {integrity: sha512-lrcsY2WPLCEWU1pjdNV9+Ccj8vCEwCCURZiPa5aqi7lKB4C++1hPrxA8/CWWnTNcQp76DsBKGYqTFj7Ud4aupw==} + engines: {node: '>=18'} + peerDependencies: + '@react-native-community/cli-server-api': '*' peerDependenciesMeta: - "@react-native-community/cli-server-api": + '@react-native-community/cli-server-api': optional: true - "@react-native/debugger-frontend@0.76.7": - resolution: - { - integrity: sha512-89ZtZXt7ZxE94i7T94qzZMhp4Gfcpr/QVpGqEaejAxZD+gvDCH21cYSF+/Rz2ttBazm0rk5MZ0mFqb0Iqp1jmw==, - } - engines: { node: ">=18" } - - "@react-native/debugger-frontend@0.79.5": - resolution: - { - integrity: sha512-WQ49TRpCwhgUYo5/n+6GGykXmnumpOkl4Lr2l2o2buWU9qPOwoiBqJAtmWEXsAug4ciw3eLiVfthn5ufs0VB0A==, - } - engines: { node: ">=18" } - - "@react-native/dev-middleware@0.76.7": - resolution: - { - integrity: sha512-Jsw8g9DyLPnR9yHEGuT09yHZ7M88/GL9CtU9WmyChlBwdXSeE3AmRqLegsV3XcgULQ1fqdemokaOZ/MwLYkjdA==, - } - engines: { node: ">=18" } - - "@react-native/dev-middleware@0.79.5": - resolution: - { - integrity: sha512-U7r9M/SEktOCP/0uS6jXMHmYjj4ESfYCkNAenBjFjjsRWekiHE+U/vRMeO+fG9gq4UCcBAUISClkQCowlftYBw==, - } - engines: { node: ">=18" } - - "@react-native/gradle-plugin@0.76.7": - resolution: - { - integrity: sha512-gQI6RcrJbigU8xk7F960C5xQIgvbBj20TUvGecD+N2PHfbLpqR+92cj7hz3UcbrCONmTP40WHnbMMJ8P+kLsrA==, - } - engines: { node: ">=18" } - - "@react-native/js-polyfills@0.76.7": - resolution: - { - integrity: sha512-+iEikj6c6Zvrg1c3cYMeiPB+5nS8EaIC3jCtP6Muk3qc7c386IymEPM2xycIlfg04DPZvO3D4P2/vaO9/TCnUg==, - } - engines: { node: ">=18" } - - "@react-native/metro-babel-transformer@0.76.7": - resolution: - { - integrity: sha512-jDS1wR7q46xY5ah+jF714Mvss9l7+lmwW/tplahZgLKozkYDC8Td5o9TOCgKlv18acw9H1V7zv8ivuRSj8ICPg==, - } - engines: { node: ">=18" } - peerDependencies: - "@babel/core": "*" - - "@react-native/normalize-colors@0.76.7": - resolution: - { - integrity: sha512-ST1xxBuYVIXPdD81dR6+tzIgso7m3pa9+6rOBXTh5Xm7KEEFik7tnQX+GydXYMp3wr1gagJjragdXkPnxK6WNg==, - } - - "@react-native/normalize-colors@0.79.5": - resolution: - { - integrity: sha512-nGXMNMclZgzLUxijQQ38Dm3IAEhgxuySAWQHnljFtfB0JdaMwpe0Ox9H7Tp2OgrEA+EMEv+Od9ElKlHwGKmmvQ==, - } - - "@react-native/virtualized-lists@0.72.8": - resolution: - { - integrity: sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw==, - } - peerDependencies: - react-native: "*" - - "@react-native/virtualized-lists@0.76.7": - resolution: - { - integrity: sha512-pRUf1jUO8H9Ft04CaWv76t34QI9wY0sydoYlIwEtqXjjMJgmgDoOCAWBjArgn2mk8/rK+u/uicI67ZCYCp1pJw==, - } - engines: { node: ">=18" } - peerDependencies: - "@types/react": ^18.2.47 - react: "*" - react-native: "*" + '@react-native/debugger-frontend@0.76.7': + resolution: {integrity: sha512-89ZtZXt7ZxE94i7T94qzZMhp4Gfcpr/QVpGqEaejAxZD+gvDCH21cYSF+/Rz2ttBazm0rk5MZ0mFqb0Iqp1jmw==} + engines: {node: '>=18'} + + '@react-native/debugger-frontend@0.79.5': + resolution: {integrity: sha512-WQ49TRpCwhgUYo5/n+6GGykXmnumpOkl4Lr2l2o2buWU9qPOwoiBqJAtmWEXsAug4ciw3eLiVfthn5ufs0VB0A==} + engines: {node: '>=18'} + + '@react-native/dev-middleware@0.76.7': + resolution: {integrity: sha512-Jsw8g9DyLPnR9yHEGuT09yHZ7M88/GL9CtU9WmyChlBwdXSeE3AmRqLegsV3XcgULQ1fqdemokaOZ/MwLYkjdA==} + engines: {node: '>=18'} + + '@react-native/dev-middleware@0.79.5': + resolution: {integrity: sha512-U7r9M/SEktOCP/0uS6jXMHmYjj4ESfYCkNAenBjFjjsRWekiHE+U/vRMeO+fG9gq4UCcBAUISClkQCowlftYBw==} + engines: {node: '>=18'} + + '@react-native/gradle-plugin@0.76.7': + resolution: {integrity: sha512-gQI6RcrJbigU8xk7F960C5xQIgvbBj20TUvGecD+N2PHfbLpqR+92cj7hz3UcbrCONmTP40WHnbMMJ8P+kLsrA==} + engines: {node: '>=18'} + + '@react-native/js-polyfills@0.76.7': + resolution: {integrity: sha512-+iEikj6c6Zvrg1c3cYMeiPB+5nS8EaIC3jCtP6Muk3qc7c386IymEPM2xycIlfg04DPZvO3D4P2/vaO9/TCnUg==} + engines: {node: '>=18'} + + '@react-native/metro-babel-transformer@0.76.7': + resolution: {integrity: sha512-jDS1wR7q46xY5ah+jF714Mvss9l7+lmwW/tplahZgLKozkYDC8Td5o9TOCgKlv18acw9H1V7zv8ivuRSj8ICPg==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + + '@react-native/normalize-colors@0.76.7': + resolution: {integrity: sha512-ST1xxBuYVIXPdD81dR6+tzIgso7m3pa9+6rOBXTh5Xm7KEEFik7tnQX+GydXYMp3wr1gagJjragdXkPnxK6WNg==} + + '@react-native/normalize-colors@0.79.5': + resolution: {integrity: sha512-nGXMNMclZgzLUxijQQ38Dm3IAEhgxuySAWQHnljFtfB0JdaMwpe0Ox9H7Tp2OgrEA+EMEv+Od9ElKlHwGKmmvQ==} + + '@react-native/virtualized-lists@0.72.8': + resolution: {integrity: sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw==} + peerDependencies: + react-native: '*' + + '@react-native/virtualized-lists@0.76.7': + resolution: {integrity: sha512-pRUf1jUO8H9Ft04CaWv76t34QI9wY0sydoYlIwEtqXjjMJgmgDoOCAWBjArgn2mk8/rK+u/uicI67ZCYCp1pJw==} + engines: {node: '>=18'} + peerDependencies: + '@types/react': ^18.2.47 + react: '*' + react-native: '*' peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@rtsao/scc@1.1.0": - resolution: - { - integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==, - } - - "@rushstack/eslint-patch@1.12.0": - resolution: - { - integrity: sha512-5EwMtOqvJMMa3HbmxLlF74e+3/HhwBTMcvt3nqVJgGCozO6hzIPOBlwm8mGVNR9SN2IJpxSnlxczyDjcn7qIyw==, - } - - "@sinclair/typebox@0.27.8": - resolution: - { - integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==, - } - - "@sindresorhus/is@7.0.2": - resolution: - { - integrity: sha512-d9xRovfKNz1SKieM0qJdO+PQonjnnIfSNWfHYnBSJ9hkjm0ZPw6HlxscDXYstp3z+7V2GOFHc+J0CYrYTjqCJw==, - } - engines: { node: ">=18" } - - "@sinonjs/commons@3.0.1": - resolution: - { - integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==, - } - - "@sinonjs/fake-timers@10.3.0": - resolution: - { - integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==, - } - - "@smithy/abort-controller@2.2.0": - resolution: - { - integrity: sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==, - } - engines: { node: ">=14.0.0" } - - "@smithy/abort-controller@4.0.5": - resolution: - { - integrity: sha512-jcrqdTQurIrBbUm4W2YdLVMQDoL0sA9DTxYd2s+R/y+2U9NLOP7Xf/YqfSg1FZhlZIYEnvk2mwbyvIfdLEPo8g==, - } - engines: { node: ">=18.0.0" } - - "@smithy/chunked-blob-reader-native@4.0.0": - resolution: - { - integrity: sha512-R9wM2yPmfEMsUmlMlIgSzOyICs0x9uu7UTHoccMyt7BWw8shcGM8HqB355+BZCPBcySvbTYMs62EgEQkNxz2ig==, - } - engines: { node: ">=18.0.0" } - - "@smithy/chunked-blob-reader@5.0.0": - resolution: - { - integrity: sha512-+sKqDBQqb036hh4NPaUiEkYFkTUGYzRsn3EuFhyfQfMy6oGHEUJDurLP9Ufb5dasr/XiAmPNMr6wa9afjQB+Gw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/config-resolver@2.2.0": - resolution: - { - integrity: sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==, - } - engines: { node: ">=14.0.0" } - - "@smithy/config-resolver@4.1.5": - resolution: - { - integrity: sha512-viuHMxBAqydkB0AfWwHIdwf/PRH2z5KHGUzqyRtS/Wv+n3IHI993Sk76VCA7dD/+GzgGOmlJDITfPcJC1nIVIw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/core@3.8.0": - resolution: - { - integrity: sha512-EYqsIYJmkR1VhVE9pccnk353xhs+lB6btdutJEtsp7R055haMJp2yE16eSxw8fv+G0WUY6vqxyYOP8kOqawxYQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/credential-provider-imds@2.3.0": - resolution: - { - integrity: sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==, - } - engines: { node: ">=14.0.0" } - - "@smithy/credential-provider-imds@4.0.7": - resolution: - { - integrity: sha512-dDzrMXA8d8riFNiPvytxn0mNwR4B3h8lgrQ5UjAGu6T9z/kRg/Xncf4tEQHE/+t25sY8IH3CowcmWi+1U5B1Gw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/eventstream-codec@4.0.5": - resolution: - { - integrity: sha512-miEUN+nz2UTNoRYRhRqVTJCx7jMeILdAurStT2XoS+mhokkmz1xAPp95DFW9Gxt4iF2VBqpeF9HbTQ3kY1viOA==, - } - engines: { node: ">=18.0.0" } - - "@smithy/eventstream-serde-browser@4.0.5": - resolution: - { - integrity: sha512-LCUQUVTbM6HFKzImYlSB9w4xafZmpdmZsOh9rIl7riPC3osCgGFVP+wwvYVw6pXda9PPT9TcEZxaq3XE81EdJQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/eventstream-serde-config-resolver@4.1.3": - resolution: - { - integrity: sha512-yTTzw2jZjn/MbHu1pURbHdpjGbCuMHWncNBpJnQAPxOVnFUAbSIUSwafiphVDjNV93TdBJWmeVAds7yl5QCkcA==, - } - engines: { node: ">=18.0.0" } - - "@smithy/eventstream-serde-node@4.0.5": - resolution: - { - integrity: sha512-lGS10urI4CNzz6YlTe5EYG0YOpsSp3ra8MXyco4aqSkQDuyZPIw2hcaxDU82OUVtK7UY9hrSvgWtpsW5D4rb4g==, - } - engines: { node: ">=18.0.0" } - - "@smithy/eventstream-serde-universal@4.0.5": - resolution: - { - integrity: sha512-JFnmu4SU36YYw3DIBVao3FsJh4Uw65vVDIqlWT4LzR6gXA0F3KP0IXFKKJrhaVzCBhAuMsrUUaT5I+/4ZhF7aw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/fetch-http-handler@2.5.0": - resolution: - { - integrity: sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==, - } - - "@smithy/fetch-http-handler@5.1.1": - resolution: - { - integrity: sha512-61WjM0PWmZJR+SnmzaKI7t7G0UkkNFboDpzIdzSoy7TByUzlxo18Qlh9s71qug4AY4hlH/CwXdubMtkcNEb/sQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/hash-blob-browser@4.0.5": - resolution: - { - integrity: sha512-F7MmCd3FH/Q2edhcKd+qulWkwfChHbc9nhguBlVjSUE6hVHhec3q6uPQ+0u69S6ppvLtR3eStfCuEKMXBXhvvA==, - } - engines: { node: ">=18.0.0" } - - "@smithy/hash-node@2.2.0": - resolution: - { - integrity: sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==, - } - engines: { node: ">=14.0.0" } - - "@smithy/hash-node@4.0.5": - resolution: - { - integrity: sha512-cv1HHkKhpyRb6ahD8Vcfb2Hgz67vNIXEp2vnhzfxLFGRukLCNEA5QdsorbUEzXma1Rco0u3rx5VTqbM06GcZqQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/hash-stream-node@4.0.5": - resolution: - { - integrity: sha512-IJuDS3+VfWB67UC0GU0uYBG/TA30w+PlOaSo0GPm9UHS88A6rCP6uZxNjNYiyRtOcjv7TXn/60cW8ox1yuZsLg==, - } - engines: { node: ">=18.0.0" } - - "@smithy/invalid-dependency@2.2.0": - resolution: - { - integrity: sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==, - } - - "@smithy/invalid-dependency@4.0.5": - resolution: - { - integrity: sha512-IVnb78Qtf7EJpoEVo7qJ8BEXQwgC4n3igeJNNKEj/MLYtapnx8A67Zt/J3RXAj2xSO1910zk0LdFiygSemuLow==, - } - engines: { node: ">=18.0.0" } - - "@smithy/is-array-buffer@2.2.0": - resolution: - { - integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==, - } - engines: { node: ">=14.0.0" } - - "@smithy/is-array-buffer@4.0.0": - resolution: - { - integrity: sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/md5-js@4.0.5": - resolution: - { - integrity: sha512-8n2XCwdUbGr8W/XhMTaxILkVlw2QebkVTn5tm3HOcbPbOpWg89zr6dPXsH8xbeTsbTXlJvlJNTQsKAIoqQGbdA==, - } - engines: { node: ">=18.0.0" } - - "@smithy/middleware-content-length@2.2.0": - resolution: - { - integrity: sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==, - } - engines: { node: ">=14.0.0" } - - "@smithy/middleware-content-length@4.0.5": - resolution: - { - integrity: sha512-l1jlNZoYzoCC7p0zCtBDE5OBXZ95yMKlRlftooE5jPWQn4YBPLgsp+oeHp7iMHaTGoUdFqmHOPa8c9G3gBsRpQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/middleware-endpoint@2.5.1": - resolution: - { - integrity: sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ==, - } - engines: { node: ">=14.0.0" } - - "@smithy/middleware-endpoint@4.1.18": - resolution: - { - integrity: sha512-ZhvqcVRPZxnZlokcPaTwb+r+h4yOIOCJmx0v2d1bpVlmP465g3qpVSf7wxcq5zZdu4jb0H4yIMxuPwDJSQc3MQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/middleware-retry@2.3.1": - resolution: - { - integrity: sha512-P2bGufFpFdYcWvqpyqqmalRtwFUNUA8vHjJR5iGqbfR6mp65qKOLcUd6lTr4S9Gn/enynSrSf3p3FVgVAf6bXA==, - } - engines: { node: ">=14.0.0" } - - "@smithy/middleware-retry@4.1.19": - resolution: - { - integrity: sha512-X58zx/NVECjeuUB6A8HBu4bhx72EoUz+T5jTMIyeNKx2lf+Gs9TmWPNNkH+5QF0COjpInP/xSpJGJ7xEnAklQQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/middleware-serde@2.3.0": - resolution: - { - integrity: sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==, - } - engines: { node: ">=14.0.0" } - - "@smithy/middleware-serde@4.0.9": - resolution: - { - integrity: sha512-uAFFR4dpeoJPGz8x9mhxp+RPjo5wW0QEEIPPPbLXiRRWeCATf/Km3gKIVR5vaP8bN1kgsPhcEeh+IZvUlBv6Xg==, - } - engines: { node: ">=18.0.0" } - - "@smithy/middleware-stack@2.2.0": - resolution: - { - integrity: sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==, - } - engines: { node: ">=14.0.0" } - - "@smithy/middleware-stack@4.0.5": - resolution: - { - integrity: sha512-/yoHDXZPh3ocRVyeWQFvC44u8seu3eYzZRveCMfgMOBcNKnAmOvjbL9+Cp5XKSIi9iYA9PECUuW2teDAk8T+OQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/node-config-provider@2.3.0": - resolution: - { - integrity: sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==, - } - engines: { node: ">=14.0.0" } - - "@smithy/node-config-provider@4.1.4": - resolution: - { - integrity: sha512-+UDQV/k42jLEPPHSn39l0Bmc4sB1xtdI9Gd47fzo/0PbXzJ7ylgaOByVjF5EeQIumkepnrJyfx86dPa9p47Y+w==, - } - engines: { node: ">=18.0.0" } - - "@smithy/node-http-handler@2.5.0": - resolution: - { - integrity: sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==, - } - engines: { node: ">=14.0.0" } - - "@smithy/node-http-handler@4.1.1": - resolution: - { - integrity: sha512-RHnlHqFpoVdjSPPiYy/t40Zovf3BBHc2oemgD7VsVTFFZrU5erFFe0n52OANZZ/5sbshgD93sOh5r6I35Xmpaw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/property-provider@2.2.0": - resolution: - { - integrity: sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==, - } - engines: { node: ">=14.0.0" } - - "@smithy/property-provider@4.0.5": - resolution: - { - integrity: sha512-R/bswf59T/n9ZgfgUICAZoWYKBHcsVDurAGX88zsiUtOTA/xUAPyiT+qkNCPwFn43pZqN84M4MiUsbSGQmgFIQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/protocol-http@2.0.5": - resolution: - { - integrity: sha512-d2hhHj34mA2V86doiDfrsy2fNTnUOowGaf9hKb0hIPHqvcnShU4/OSc4Uf1FwHkAdYF3cFXTrj5VGUYbEuvMdw==, - } - engines: { node: ">=14.0.0" } - - "@smithy/protocol-http@3.3.0": - resolution: - { - integrity: sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==, - } - engines: { node: ">=14.0.0" } - - "@smithy/protocol-http@5.1.3": - resolution: - { - integrity: sha512-fCJd2ZR7D22XhDY0l+92pUag/7je2BztPRQ01gU5bMChcyI0rlly7QFibnYHzcxDvccMjlpM/Q1ev8ceRIb48w==, - } - engines: { node: ">=18.0.0" } - - "@smithy/querystring-builder@2.2.0": - resolution: - { - integrity: sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==, - } - engines: { node: ">=14.0.0" } - - "@smithy/querystring-builder@4.0.5": - resolution: - { - integrity: sha512-NJeSCU57piZ56c+/wY+AbAw6rxCCAOZLCIniRE7wqvndqxcKKDOXzwWjrY7wGKEISfhL9gBbAaWWgHsUGedk+A==, - } - engines: { node: ">=18.0.0" } - - "@smithy/querystring-parser@2.2.0": - resolution: - { - integrity: sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==, - } - engines: { node: ">=14.0.0" } - - "@smithy/querystring-parser@4.0.5": - resolution: - { - integrity: sha512-6SV7md2CzNG/WUeTjVe6Dj8noH32r4MnUeFKZrnVYsQxpGSIcphAanQMayi8jJLZAWm6pdM9ZXvKCpWOsIGg0w==, - } - engines: { node: ">=18.0.0" } - - "@smithy/service-error-classification@2.1.5": - resolution: - { - integrity: sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==, - } - engines: { node: ">=14.0.0" } - - "@smithy/service-error-classification@4.0.7": - resolution: - { - integrity: sha512-XvRHOipqpwNhEjDf2L5gJowZEm5nsxC16pAZOeEcsygdjv9A2jdOh3YoDQvOXBGTsaJk6mNWtzWalOB9976Wlg==, - } - engines: { node: ">=18.0.0" } - - "@smithy/shared-ini-file-loader@2.4.0": - resolution: - { - integrity: sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==, - } - engines: { node: ">=14.0.0" } - - "@smithy/shared-ini-file-loader@4.0.5": - resolution: - { - integrity: sha512-YVVwehRDuehgoXdEL4r1tAAzdaDgaC9EQvhK0lEbfnbrd0bd5+CTQumbdPryX3J2shT7ZqQE+jPW4lmNBAB8JQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/signature-v4@2.3.0": - resolution: - { - integrity: sha512-ui/NlpILU+6HAQBfJX8BBsDXuKSNrjTSuOYArRblcrErwKFutjrCNb/OExfVRyj9+26F9J+ZmfWT+fKWuDrH3Q==, - } - engines: { node: ">=14.0.0" } - - "@smithy/signature-v4@5.1.3": - resolution: - { - integrity: sha512-mARDSXSEgllNzMw6N+mC+r1AQlEBO3meEAkR/UlfAgnMzJUB3goRBWgip1EAMG99wh36MDqzo86SfIX5Y+VEaw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/smithy-client@2.5.1": - resolution: - { - integrity: sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ==, - } - engines: { node: ">=14.0.0" } - - "@smithy/smithy-client@4.4.10": - resolution: - { - integrity: sha512-iW6HjXqN0oPtRS0NK/zzZ4zZeGESIFcxj2FkWed3mcK8jdSdHzvnCKXSjvewESKAgGKAbJRA+OsaqKhkdYRbQQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/types@2.12.0": - resolution: - { - integrity: sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==, - } - engines: { node: ">=14.0.0" } - - "@smithy/types@4.3.2": - resolution: - { - integrity: sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/url-parser@2.2.0": - resolution: - { - integrity: sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==, - } - - "@smithy/url-parser@4.0.5": - resolution: - { - integrity: sha512-j+733Um7f1/DXjYhCbvNXABV53NyCRRA54C7bNEIxNPs0YjfRxeMKjjgm2jvTYrciZyCjsicHwQ6Q0ylo+NAUw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-base64@2.3.0": - resolution: - { - integrity: sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==, - } - engines: { node: ">=14.0.0" } - - "@smithy/util-base64@4.0.0": - resolution: - { - integrity: sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-body-length-browser@2.2.0": - resolution: - { - integrity: sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==, - } - - "@smithy/util-body-length-browser@4.0.0": - resolution: - { - integrity: sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-body-length-node@2.3.0": - resolution: - { - integrity: sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==, - } - engines: { node: ">=14.0.0" } - - "@smithy/util-body-length-node@4.0.0": - resolution: - { - integrity: sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-buffer-from@2.2.0": - resolution: - { - integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==, - } - engines: { node: ">=14.0.0" } - - "@smithy/util-buffer-from@4.0.0": - resolution: - { - integrity: sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-config-provider@2.3.0": - resolution: - { - integrity: sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==, - } - engines: { node: ">=14.0.0" } - - "@smithy/util-config-provider@4.0.0": - resolution: - { - integrity: sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-defaults-mode-browser@2.2.1": - resolution: - { - integrity: sha512-RtKW+8j8skk17SYowucwRUjeh4mCtnm5odCL0Lm2NtHQBsYKrNW0od9Rhopu9wF1gHMfHeWF7i90NwBz/U22Kw==, - } - engines: { node: ">= 10.0.0" } - - "@smithy/util-defaults-mode-browser@4.0.26": - resolution: - { - integrity: sha512-xgl75aHIS/3rrGp7iTxQAOELYeyiwBu+eEgAk4xfKwJJ0L8VUjhO2shsDpeil54BOFsqmk5xfdesiewbUY5tKQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-defaults-mode-node@2.3.1": - resolution: - { - integrity: sha512-vkMXHQ0BcLFysBMWgSBLSk3+leMpFSyyFj8zQtv5ZyUBx8/owVh1/pPEkzmW/DR/Gy/5c8vjLDD9gZjXNKbrpA==, - } - engines: { node: ">= 10.0.0" } - - "@smithy/util-defaults-mode-node@4.0.26": - resolution: - { - integrity: sha512-z81yyIkGiLLYVDetKTUeCZQ8x20EEzvQjrqJtb/mXnevLq2+w3XCEWTJ2pMp401b6BkEkHVfXb/cROBpVauLMQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-endpoints@3.0.7": - resolution: - { - integrity: sha512-klGBP+RpBp6V5JbrY2C/VKnHXn3d5V2YrifZbmMY8os7M6m8wdYFoO6w/fe5VkP+YVwrEktW3IWYaSQVNZJ8oQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-hex-encoding@2.2.0": - resolution: - { - integrity: sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==, - } - engines: { node: ">=14.0.0" } - - "@smithy/util-hex-encoding@4.0.0": - resolution: - { - integrity: sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-middleware@2.2.0": - resolution: - { - integrity: sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==, - } - engines: { node: ">=14.0.0" } - - "@smithy/util-middleware@4.0.5": - resolution: - { - integrity: sha512-N40PfqsZHRSsByGB81HhSo+uvMxEHT+9e255S53pfBw/wI6WKDI7Jw9oyu5tJTLwZzV5DsMha3ji8jk9dsHmQQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-retry@2.2.0": - resolution: - { - integrity: sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==, - } - engines: { node: ">= 14.0.0" } - - "@smithy/util-retry@4.0.7": - resolution: - { - integrity: sha512-TTO6rt0ppK70alZpkjwy+3nQlTiqNfoXja+qwuAchIEAIoSZW8Qyd76dvBv3I5bCpE38APafG23Y/u270NspiQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-stream@2.2.0": - resolution: - { - integrity: sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==, - } - engines: { node: ">=14.0.0" } - - "@smithy/util-stream@4.2.4": - resolution: - { - integrity: sha512-vSKnvNZX2BXzl0U2RgCLOwWaAP9x/ddd/XobPK02pCbzRm5s55M53uwb1rl/Ts7RXZvdJZerPkA+en2FDghLuQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-uri-escape@2.2.0": - resolution: - { - integrity: sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==, - } - engines: { node: ">=14.0.0" } - - "@smithy/util-uri-escape@4.0.0": - resolution: - { - integrity: sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-utf8@2.3.0": - resolution: - { - integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==, - } - engines: { node: ">=14.0.0" } - - "@smithy/util-utf8@4.0.0": - resolution: - { - integrity: sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-waiter@2.2.0": - resolution: - { - integrity: sha512-IHk53BVw6MPMi2Gsn+hCng8rFA3ZmR3Rk7GllxDUW9qFJl/hiSvskn7XldkECapQVkIg/1dHpMAxI9xSTaLLSA==, - } - engines: { node: ">=14.0.0" } - - "@smithy/util-waiter@4.0.7": - resolution: - { - integrity: sha512-mYqtQXPmrwvUljaHyGxYUIIRI3qjBTEb/f5QFi3A6VlxhpmZd5mWXn9W+qUkf2pVE1Hv3SqxefiZOPGdxmO64A==, - } - engines: { node: ">=18.0.0" } - - "@speed-highlight/core@1.2.7": - resolution: - { - integrity: sha512-0dxmVj4gxg3Jg879kvFS/msl4s9F3T9UXC1InxgOf7t5NvcPD97u/WTA5vL/IxWHMn7qSxBozqrnnE2wvl1m8g==, - } - - "@swc/counter@0.1.3": - resolution: - { - integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==, - } - - "@swc/helpers@0.5.5": - resolution: - { - integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==, - } - - "@testing-library/dom@9.3.4": - resolution: - { - integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==, - } - engines: { node: ">=14" } - - "@testing-library/jest-dom@6.7.0": - resolution: - { - integrity: sha512-RI2e97YZ7MRa+vxP4UUnMuMFL2buSsf0ollxUbTgrbPLKhMn8KVTx7raS6DYjC7v1NDVrioOvaShxsguLNISCA==, - } - engines: { node: ">=14", npm: ">=6", yarn: ">=1" } - - "@testing-library/react@14.3.1": - resolution: - { - integrity: sha512-H99XjUhWQw0lTgyMN05W3xQG1Nh4lq574D8keFf1dDoNTJgp66VbJozRaczoF+wsiaPJNt/TcnfpLGufGxSrZQ==, - } - engines: { node: ">=14" } + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + + '@rushstack/eslint-patch@1.12.0': + resolution: {integrity: sha512-5EwMtOqvJMMa3HbmxLlF74e+3/HhwBTMcvt3nqVJgGCozO6hzIPOBlwm8mGVNR9SN2IJpxSnlxczyDjcn7qIyw==} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sinclair/typebox@0.34.41': + resolution: {integrity: sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==} + + '@sindresorhus/is@7.0.2': + resolution: {integrity: sha512-d9xRovfKNz1SKieM0qJdO+PQonjnnIfSNWfHYnBSJ9hkjm0ZPw6HlxscDXYstp3z+7V2GOFHc+J0CYrYTjqCJw==} + engines: {node: '>=18'} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + + '@smithy/abort-controller@2.2.0': + resolution: {integrity: sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==} + engines: {node: '>=14.0.0'} + + '@smithy/abort-controller@4.0.5': + resolution: {integrity: sha512-jcrqdTQurIrBbUm4W2YdLVMQDoL0sA9DTxYd2s+R/y+2U9NLOP7Xf/YqfSg1FZhlZIYEnvk2mwbyvIfdLEPo8g==} + engines: {node: '>=18.0.0'} + + '@smithy/chunked-blob-reader-native@4.0.0': + resolution: {integrity: sha512-R9wM2yPmfEMsUmlMlIgSzOyICs0x9uu7UTHoccMyt7BWw8shcGM8HqB355+BZCPBcySvbTYMs62EgEQkNxz2ig==} + engines: {node: '>=18.0.0'} + + '@smithy/chunked-blob-reader@5.0.0': + resolution: {integrity: sha512-+sKqDBQqb036hh4NPaUiEkYFkTUGYzRsn3EuFhyfQfMy6oGHEUJDurLP9Ufb5dasr/XiAmPNMr6wa9afjQB+Gw==} + engines: {node: '>=18.0.0'} + + '@smithy/config-resolver@2.2.0': + resolution: {integrity: sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==} + engines: {node: '>=14.0.0'} + + '@smithy/config-resolver@4.1.5': + resolution: {integrity: sha512-viuHMxBAqydkB0AfWwHIdwf/PRH2z5KHGUzqyRtS/Wv+n3IHI993Sk76VCA7dD/+GzgGOmlJDITfPcJC1nIVIw==} + engines: {node: '>=18.0.0'} + + '@smithy/core@3.8.0': + resolution: {integrity: sha512-EYqsIYJmkR1VhVE9pccnk353xhs+lB6btdutJEtsp7R055haMJp2yE16eSxw8fv+G0WUY6vqxyYOP8kOqawxYQ==} + engines: {node: '>=18.0.0'} + + '@smithy/credential-provider-imds@2.3.0': + resolution: {integrity: sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==} + engines: {node: '>=14.0.0'} + + '@smithy/credential-provider-imds@4.0.7': + resolution: {integrity: sha512-dDzrMXA8d8riFNiPvytxn0mNwR4B3h8lgrQ5UjAGu6T9z/kRg/Xncf4tEQHE/+t25sY8IH3CowcmWi+1U5B1Gw==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-codec@4.0.5': + resolution: {integrity: sha512-miEUN+nz2UTNoRYRhRqVTJCx7jMeILdAurStT2XoS+mhokkmz1xAPp95DFW9Gxt4iF2VBqpeF9HbTQ3kY1viOA==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-browser@4.0.5': + resolution: {integrity: sha512-LCUQUVTbM6HFKzImYlSB9w4xafZmpdmZsOh9rIl7riPC3osCgGFVP+wwvYVw6pXda9PPT9TcEZxaq3XE81EdJQ==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-config-resolver@4.1.3': + resolution: {integrity: sha512-yTTzw2jZjn/MbHu1pURbHdpjGbCuMHWncNBpJnQAPxOVnFUAbSIUSwafiphVDjNV93TdBJWmeVAds7yl5QCkcA==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-node@4.0.5': + resolution: {integrity: sha512-lGS10urI4CNzz6YlTe5EYG0YOpsSp3ra8MXyco4aqSkQDuyZPIw2hcaxDU82OUVtK7UY9hrSvgWtpsW5D4rb4g==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-universal@4.0.5': + resolution: {integrity: sha512-JFnmu4SU36YYw3DIBVao3FsJh4Uw65vVDIqlWT4LzR6gXA0F3KP0IXFKKJrhaVzCBhAuMsrUUaT5I+/4ZhF7aw==} + engines: {node: '>=18.0.0'} + + '@smithy/fetch-http-handler@2.5.0': + resolution: {integrity: sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==} + + '@smithy/fetch-http-handler@5.1.1': + resolution: {integrity: sha512-61WjM0PWmZJR+SnmzaKI7t7G0UkkNFboDpzIdzSoy7TByUzlxo18Qlh9s71qug4AY4hlH/CwXdubMtkcNEb/sQ==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-blob-browser@4.0.5': + resolution: {integrity: sha512-F7MmCd3FH/Q2edhcKd+qulWkwfChHbc9nhguBlVjSUE6hVHhec3q6uPQ+0u69S6ppvLtR3eStfCuEKMXBXhvvA==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-node@2.2.0': + resolution: {integrity: sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==} + engines: {node: '>=14.0.0'} + + '@smithy/hash-node@4.0.5': + resolution: {integrity: sha512-cv1HHkKhpyRb6ahD8Vcfb2Hgz67vNIXEp2vnhzfxLFGRukLCNEA5QdsorbUEzXma1Rco0u3rx5VTqbM06GcZqQ==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-stream-node@4.0.5': + resolution: {integrity: sha512-IJuDS3+VfWB67UC0GU0uYBG/TA30w+PlOaSo0GPm9UHS88A6rCP6uZxNjNYiyRtOcjv7TXn/60cW8ox1yuZsLg==} + engines: {node: '>=18.0.0'} + + '@smithy/invalid-dependency@2.2.0': + resolution: {integrity: sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==} + + '@smithy/invalid-dependency@4.0.5': + resolution: {integrity: sha512-IVnb78Qtf7EJpoEVo7qJ8BEXQwgC4n3igeJNNKEj/MLYtapnx8A67Zt/J3RXAj2xSO1910zk0LdFiygSemuLow==} + engines: {node: '>=18.0.0'} + + '@smithy/is-array-buffer@2.2.0': + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + + '@smithy/is-array-buffer@4.0.0': + resolution: {integrity: sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==} + engines: {node: '>=18.0.0'} + + '@smithy/md5-js@4.0.5': + resolution: {integrity: sha512-8n2XCwdUbGr8W/XhMTaxILkVlw2QebkVTn5tm3HOcbPbOpWg89zr6dPXsH8xbeTsbTXlJvlJNTQsKAIoqQGbdA==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-content-length@2.2.0': + resolution: {integrity: sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==} + engines: {node: '>=14.0.0'} + + '@smithy/middleware-content-length@4.0.5': + resolution: {integrity: sha512-l1jlNZoYzoCC7p0zCtBDE5OBXZ95yMKlRlftooE5jPWQn4YBPLgsp+oeHp7iMHaTGoUdFqmHOPa8c9G3gBsRpQ==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-endpoint@2.5.1': + resolution: {integrity: sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ==} + engines: {node: '>=14.0.0'} + + '@smithy/middleware-endpoint@4.1.18': + resolution: {integrity: sha512-ZhvqcVRPZxnZlokcPaTwb+r+h4yOIOCJmx0v2d1bpVlmP465g3qpVSf7wxcq5zZdu4jb0H4yIMxuPwDJSQc3MQ==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-retry@2.3.1': + resolution: {integrity: sha512-P2bGufFpFdYcWvqpyqqmalRtwFUNUA8vHjJR5iGqbfR6mp65qKOLcUd6lTr4S9Gn/enynSrSf3p3FVgVAf6bXA==} + engines: {node: '>=14.0.0'} + + '@smithy/middleware-retry@4.1.19': + resolution: {integrity: sha512-X58zx/NVECjeuUB6A8HBu4bhx72EoUz+T5jTMIyeNKx2lf+Gs9TmWPNNkH+5QF0COjpInP/xSpJGJ7xEnAklQQ==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-serde@2.3.0': + resolution: {integrity: sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==} + engines: {node: '>=14.0.0'} + + '@smithy/middleware-serde@4.0.9': + resolution: {integrity: sha512-uAFFR4dpeoJPGz8x9mhxp+RPjo5wW0QEEIPPPbLXiRRWeCATf/Km3gKIVR5vaP8bN1kgsPhcEeh+IZvUlBv6Xg==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-stack@2.2.0': + resolution: {integrity: sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==} + engines: {node: '>=14.0.0'} + + '@smithy/middleware-stack@4.0.5': + resolution: {integrity: sha512-/yoHDXZPh3ocRVyeWQFvC44u8seu3eYzZRveCMfgMOBcNKnAmOvjbL9+Cp5XKSIi9iYA9PECUuW2teDAk8T+OQ==} + engines: {node: '>=18.0.0'} + + '@smithy/node-config-provider@2.3.0': + resolution: {integrity: sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==} + engines: {node: '>=14.0.0'} + + '@smithy/node-config-provider@4.1.4': + resolution: {integrity: sha512-+UDQV/k42jLEPPHSn39l0Bmc4sB1xtdI9Gd47fzo/0PbXzJ7ylgaOByVjF5EeQIumkepnrJyfx86dPa9p47Y+w==} + engines: {node: '>=18.0.0'} + + '@smithy/node-http-handler@2.5.0': + resolution: {integrity: sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==} + engines: {node: '>=14.0.0'} + + '@smithy/node-http-handler@4.1.1': + resolution: {integrity: sha512-RHnlHqFpoVdjSPPiYy/t40Zovf3BBHc2oemgD7VsVTFFZrU5erFFe0n52OANZZ/5sbshgD93sOh5r6I35Xmpaw==} + engines: {node: '>=18.0.0'} + + '@smithy/property-provider@2.2.0': + resolution: {integrity: sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==} + engines: {node: '>=14.0.0'} + + '@smithy/property-provider@4.0.5': + resolution: {integrity: sha512-R/bswf59T/n9ZgfgUICAZoWYKBHcsVDurAGX88zsiUtOTA/xUAPyiT+qkNCPwFn43pZqN84M4MiUsbSGQmgFIQ==} + engines: {node: '>=18.0.0'} + + '@smithy/protocol-http@2.0.5': + resolution: {integrity: sha512-d2hhHj34mA2V86doiDfrsy2fNTnUOowGaf9hKb0hIPHqvcnShU4/OSc4Uf1FwHkAdYF3cFXTrj5VGUYbEuvMdw==} + engines: {node: '>=14.0.0'} + + '@smithy/protocol-http@3.3.0': + resolution: {integrity: sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==} + engines: {node: '>=14.0.0'} + + '@smithy/protocol-http@5.1.3': + resolution: {integrity: sha512-fCJd2ZR7D22XhDY0l+92pUag/7je2BztPRQ01gU5bMChcyI0rlly7QFibnYHzcxDvccMjlpM/Q1ev8ceRIb48w==} + engines: {node: '>=18.0.0'} + + '@smithy/querystring-builder@2.2.0': + resolution: {integrity: sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==} + engines: {node: '>=14.0.0'} + + '@smithy/querystring-builder@4.0.5': + resolution: {integrity: sha512-NJeSCU57piZ56c+/wY+AbAw6rxCCAOZLCIniRE7wqvndqxcKKDOXzwWjrY7wGKEISfhL9gBbAaWWgHsUGedk+A==} + engines: {node: '>=18.0.0'} + + '@smithy/querystring-parser@2.2.0': + resolution: {integrity: sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==} + engines: {node: '>=14.0.0'} + + '@smithy/querystring-parser@4.0.5': + resolution: {integrity: sha512-6SV7md2CzNG/WUeTjVe6Dj8noH32r4MnUeFKZrnVYsQxpGSIcphAanQMayi8jJLZAWm6pdM9ZXvKCpWOsIGg0w==} + engines: {node: '>=18.0.0'} + + '@smithy/service-error-classification@2.1.5': + resolution: {integrity: sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==} + engines: {node: '>=14.0.0'} + + '@smithy/service-error-classification@4.0.7': + resolution: {integrity: sha512-XvRHOipqpwNhEjDf2L5gJowZEm5nsxC16pAZOeEcsygdjv9A2jdOh3YoDQvOXBGTsaJk6mNWtzWalOB9976Wlg==} + engines: {node: '>=18.0.0'} + + '@smithy/shared-ini-file-loader@2.4.0': + resolution: {integrity: sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==} + engines: {node: '>=14.0.0'} + + '@smithy/shared-ini-file-loader@4.0.5': + resolution: {integrity: sha512-YVVwehRDuehgoXdEL4r1tAAzdaDgaC9EQvhK0lEbfnbrd0bd5+CTQumbdPryX3J2shT7ZqQE+jPW4lmNBAB8JQ==} + engines: {node: '>=18.0.0'} + + '@smithy/signature-v4@2.3.0': + resolution: {integrity: sha512-ui/NlpILU+6HAQBfJX8BBsDXuKSNrjTSuOYArRblcrErwKFutjrCNb/OExfVRyj9+26F9J+ZmfWT+fKWuDrH3Q==} + engines: {node: '>=14.0.0'} + + '@smithy/signature-v4@5.1.3': + resolution: {integrity: sha512-mARDSXSEgllNzMw6N+mC+r1AQlEBO3meEAkR/UlfAgnMzJUB3goRBWgip1EAMG99wh36MDqzo86SfIX5Y+VEaw==} + engines: {node: '>=18.0.0'} + + '@smithy/smithy-client@2.5.1': + resolution: {integrity: sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ==} + engines: {node: '>=14.0.0'} + + '@smithy/smithy-client@4.4.10': + resolution: {integrity: sha512-iW6HjXqN0oPtRS0NK/zzZ4zZeGESIFcxj2FkWed3mcK8jdSdHzvnCKXSjvewESKAgGKAbJRA+OsaqKhkdYRbQQ==} + engines: {node: '>=18.0.0'} + + '@smithy/types@2.12.0': + resolution: {integrity: sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==} + engines: {node: '>=14.0.0'} + + '@smithy/types@4.3.2': + resolution: {integrity: sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw==} + engines: {node: '>=18.0.0'} + + '@smithy/url-parser@2.2.0': + resolution: {integrity: sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==} + + '@smithy/url-parser@4.0.5': + resolution: {integrity: sha512-j+733Um7f1/DXjYhCbvNXABV53NyCRRA54C7bNEIxNPs0YjfRxeMKjjgm2jvTYrciZyCjsicHwQ6Q0ylo+NAUw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-base64@2.3.0': + resolution: {integrity: sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==} + engines: {node: '>=14.0.0'} + + '@smithy/util-base64@4.0.0': + resolution: {integrity: sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-browser@2.2.0': + resolution: {integrity: sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==} + + '@smithy/util-body-length-browser@4.0.0': + resolution: {integrity: sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-node@2.3.0': + resolution: {integrity: sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==} + engines: {node: '>=14.0.0'} + + '@smithy/util-body-length-node@4.0.0': + resolution: {integrity: sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-buffer-from@2.2.0': + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-buffer-from@4.0.0': + resolution: {integrity: sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==} + engines: {node: '>=18.0.0'} + + '@smithy/util-config-provider@2.3.0': + resolution: {integrity: sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==} + engines: {node: '>=14.0.0'} + + '@smithy/util-config-provider@4.0.0': + resolution: {integrity: sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-browser@2.2.1': + resolution: {integrity: sha512-RtKW+8j8skk17SYowucwRUjeh4mCtnm5odCL0Lm2NtHQBsYKrNW0od9Rhopu9wF1gHMfHeWF7i90NwBz/U22Kw==} + engines: {node: '>= 10.0.0'} + + '@smithy/util-defaults-mode-browser@4.0.26': + resolution: {integrity: sha512-xgl75aHIS/3rrGp7iTxQAOELYeyiwBu+eEgAk4xfKwJJ0L8VUjhO2shsDpeil54BOFsqmk5xfdesiewbUY5tKQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-node@2.3.1': + resolution: {integrity: sha512-vkMXHQ0BcLFysBMWgSBLSk3+leMpFSyyFj8zQtv5ZyUBx8/owVh1/pPEkzmW/DR/Gy/5c8vjLDD9gZjXNKbrpA==} + engines: {node: '>= 10.0.0'} + + '@smithy/util-defaults-mode-node@4.0.26': + resolution: {integrity: sha512-z81yyIkGiLLYVDetKTUeCZQ8x20EEzvQjrqJtb/mXnevLq2+w3XCEWTJ2pMp401b6BkEkHVfXb/cROBpVauLMQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-endpoints@3.0.7': + resolution: {integrity: sha512-klGBP+RpBp6V5JbrY2C/VKnHXn3d5V2YrifZbmMY8os7M6m8wdYFoO6w/fe5VkP+YVwrEktW3IWYaSQVNZJ8oQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-hex-encoding@2.2.0': + resolution: {integrity: sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==} + engines: {node: '>=14.0.0'} + + '@smithy/util-hex-encoding@4.0.0': + resolution: {integrity: sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-middleware@2.2.0': + resolution: {integrity: sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==} + engines: {node: '>=14.0.0'} + + '@smithy/util-middleware@4.0.5': + resolution: {integrity: sha512-N40PfqsZHRSsByGB81HhSo+uvMxEHT+9e255S53pfBw/wI6WKDI7Jw9oyu5tJTLwZzV5DsMha3ji8jk9dsHmQQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-retry@2.2.0': + resolution: {integrity: sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==} + engines: {node: '>= 14.0.0'} + + '@smithy/util-retry@4.0.7': + resolution: {integrity: sha512-TTO6rt0ppK70alZpkjwy+3nQlTiqNfoXja+qwuAchIEAIoSZW8Qyd76dvBv3I5bCpE38APafG23Y/u270NspiQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-stream@2.2.0': + resolution: {integrity: sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-stream@4.2.4': + resolution: {integrity: sha512-vSKnvNZX2BXzl0U2RgCLOwWaAP9x/ddd/XobPK02pCbzRm5s55M53uwb1rl/Ts7RXZvdJZerPkA+en2FDghLuQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-uri-escape@2.2.0': + resolution: {integrity: sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-uri-escape@4.0.0': + resolution: {integrity: sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-utf8@2.3.0': + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + + '@smithy/util-utf8@4.0.0': + resolution: {integrity: sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==} + engines: {node: '>=18.0.0'} + + '@smithy/util-waiter@2.2.0': + resolution: {integrity: sha512-IHk53BVw6MPMi2Gsn+hCng8rFA3ZmR3Rk7GllxDUW9qFJl/hiSvskn7XldkECapQVkIg/1dHpMAxI9xSTaLLSA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-waiter@4.0.7': + resolution: {integrity: sha512-mYqtQXPmrwvUljaHyGxYUIIRI3qjBTEb/f5QFi3A6VlxhpmZd5mWXn9W+qUkf2pVE1Hv3SqxefiZOPGdxmO64A==} + engines: {node: '>=18.0.0'} + + '@speed-highlight/core@1.2.7': + resolution: {integrity: sha512-0dxmVj4gxg3Jg879kvFS/msl4s9F3T9UXC1InxgOf7t5NvcPD97u/WTA5vL/IxWHMn7qSxBozqrnnE2wvl1m8g==} + + '@standard-schema/spec@1.0.0': + resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/helpers@0.5.5': + resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} + + '@testing-library/dom@9.3.4': + resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} + engines: {node: '>=14'} + + '@testing-library/jest-dom@6.7.0': + resolution: {integrity: sha512-RI2e97YZ7MRa+vxP4UUnMuMFL2buSsf0ollxUbTgrbPLKhMn8KVTx7raS6DYjC7v1NDVrioOvaShxsguLNISCA==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + + '@testing-library/react@14.3.1': + resolution: {integrity: sha512-H99XjUhWQw0lTgyMN05W3xQG1Nh4lq574D8keFf1dDoNTJgp66VbJozRaczoF+wsiaPJNt/TcnfpLGufGxSrZQ==} + engines: {node: '>=14'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - "@tootallnate/once@2.0.0": - resolution: - { - integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==, - } - engines: { node: ">= 10" } - - "@tsconfig/node10@1.0.11": - resolution: - { - integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==, - } - - "@tsconfig/node12@1.0.11": - resolution: - { - integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==, - } - - "@tsconfig/node14@1.0.3": - resolution: - { - integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==, - } - - "@tsconfig/node16@1.0.4": - resolution: - { - integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==, - } - - "@tsconfig/node18@1.0.3": - resolution: - { - integrity: sha512-RbwvSJQsuN9TB04AQbGULYfOGE/RnSFk/FLQ5b0NmDf5Kx2q/lABZbHQPKCO1vZ6Fiwkplu+yb9pGdLy1iGseQ==, - } - - "@tybys/wasm-util@0.10.0": - resolution: - { - integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==, - } - - "@types/aria-query@5.0.4": - resolution: - { - integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==, - } - - "@types/babel__core@7.20.5": - resolution: - { - integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==, - } - - "@types/babel__generator@7.27.0": - resolution: - { - integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==, - } - - "@types/babel__template@7.4.4": - resolution: - { - integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==, - } - - "@types/babel__traverse@7.28.0": - resolution: - { - integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==, - } - - "@types/fs-extra@8.1.5": - resolution: - { - integrity: sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==, - } - - "@types/glob@7.2.0": - resolution: - { - integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==, - } - - "@types/graceful-fs@4.1.9": - resolution: - { - integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==, - } - - "@types/istanbul-lib-coverage@2.0.6": - resolution: - { - integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==, - } - - "@types/istanbul-lib-report@3.0.3": - resolution: - { - integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==, - } - - "@types/istanbul-reports@3.0.4": - resolution: - { - integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==, - } - - "@types/jest@29.5.14": - resolution: - { - integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==, - } - - "@types/jsdom@20.0.1": - resolution: - { - integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==, - } - - "@types/json-schema@7.0.15": - resolution: - { - integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, - } - - "@types/json5@0.0.29": - resolution: - { - integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==, - } - - "@types/long@4.0.2": - resolution: - { - integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==, - } - - "@types/minimatch@6.0.0": - resolution: - { - integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==, - } + '@tootallnate/once@2.0.0': + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@tsconfig/node18@1.0.3': + resolution: {integrity: sha512-RbwvSJQsuN9TB04AQbGULYfOGE/RnSFk/FLQ5b0NmDf5Kx2q/lABZbHQPKCO1vZ6Fiwkplu+yb9pGdLy1iGseQ==} + + '@tybys/wasm-util@0.10.0': + resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==} + + '@types/aria-query@5.0.4': + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + + '@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/body-parser@1.19.6': + resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/express-serve-static-core@4.19.6': + resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} + + '@types/express@4.17.23': + resolution: {integrity: sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==} + + '@types/fs-extra@8.1.5': + resolution: {integrity: sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==} + + '@types/glob@7.2.0': + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@types/http-errors@2.0.5': + resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/jest@29.5.14': + resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} + + '@types/jest@30.0.0': + resolution: {integrity: sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==} + + '@types/jsdom@20.0.1': + resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/long@4.0.2': + resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} + + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + + '@types/minimatch@6.0.0': + resolution: {integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==} deprecated: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed. - "@types/node-fetch@2.6.13": - resolution: - { - integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==, - } - - "@types/node-forge@1.3.13": - resolution: - { - integrity: sha512-zePQJSW5QkwSHKRApqWCVKeKoSOt4xvEnLENZPjyvm9Ezdf/EyDeJM7jqLzOwjVICQQzvLZ63T55MKdJB5H6ww==, - } - - "@types/node@12.20.55": - resolution: - { - integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==, - } - - "@types/node@18.19.123": - resolution: - { - integrity: sha512-K7DIaHnh0mzVxreCR9qwgNxp3MH9dltPNIEddW9MYUlcKAzm+3grKNSTe2vCJHI1FaLpvpL5JGJrz1UZDKYvDg==, - } - - "@types/node@20.19.11": - resolution: - { - integrity: sha512-uug3FEEGv0r+jrecvUUpbY8lLisvIjg6AAic6a2bSP5OEOLeJsDSnvhCDov7ipFFMXS3orMpzlmi0ZcuGkBbow==, - } - - "@types/normalize-package-data@2.4.4": - resolution: - { - integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==, - } - - "@types/prop-types@15.7.15": - resolution: - { - integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==, - } - - "@types/react-dom@18.3.7": - resolution: - { - integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==, - } - peerDependencies: - "@types/react": ^18.2.47 - - "@types/react-native@0.72.8": - resolution: - { - integrity: sha512-St6xA7+EoHN5mEYfdWnfYt0e8u6k2FR0P9s2arYgakQGFgU1f9FlPrIEcj0X24pLCF5c5i3WVuLCUdiCYHmOoA==, - } - - "@types/react@18.3.23": - resolution: - { - integrity: sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==, - } - - "@types/semver@7.7.0": - resolution: - { - integrity: sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==, - } - - "@types/stack-utils@2.0.3": - resolution: - { - integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==, - } - - "@types/text-encoding@0.0.39": - resolution: - { - integrity: sha512-gRPvgL1aMgP6Pv92Rs310cJvVQ86DSF62E7K30g1FoGmmYWXoNuXT8PV835iAVeiAZkRwr2IW37KuyDn9ljmeA==, - } - - "@types/tough-cookie@4.0.5": - resolution: - { - integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==, - } - - "@types/uuid@9.0.8": - resolution: - { - integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==, - } - - "@types/yargs-parser@21.0.3": - resolution: - { - integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==, - } - - "@types/yargs@17.0.33": - resolution: - { - integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==, - } - - "@typescript-eslint/eslint-plugin@6.21.0": - resolution: - { - integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==, - } - engines: { node: ^16.0.0 || >=18.0.0 } - peerDependencies: - "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha + '@types/node-fetch@2.6.13': + resolution: {integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==} + + '@types/node-forge@1.3.13': + resolution: {integrity: sha512-zePQJSW5QkwSHKRApqWCVKeKoSOt4xvEnLENZPjyvm9Ezdf/EyDeJM7jqLzOwjVICQQzvLZ63T55MKdJB5H6ww==} + + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + + '@types/node@18.19.123': + resolution: {integrity: sha512-K7DIaHnh0mzVxreCR9qwgNxp3MH9dltPNIEddW9MYUlcKAzm+3grKNSTe2vCJHI1FaLpvpL5JGJrz1UZDKYvDg==} + + '@types/node@20.19.11': + resolution: {integrity: sha512-uug3FEEGv0r+jrecvUUpbY8lLisvIjg6AAic6a2bSP5OEOLeJsDSnvhCDov7ipFFMXS3orMpzlmi0ZcuGkBbow==} + + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + + '@types/prop-types@15.7.15': + resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} + + '@types/qs@6.14.0': + resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + + '@types/react-dom@18.3.7': + resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} + peerDependencies: + '@types/react': ^18.2.47 + + '@types/react-native@0.72.8': + resolution: {integrity: sha512-St6xA7+EoHN5mEYfdWnfYt0e8u6k2FR0P9s2arYgakQGFgU1f9FlPrIEcj0X24pLCF5c5i3WVuLCUdiCYHmOoA==} + + '@types/react@18.3.23': + resolution: {integrity: sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==} + + '@types/semver@7.7.0': + resolution: {integrity: sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==} + + '@types/send@0.17.5': + resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} + + '@types/serve-static@1.15.8': + resolution: {integrity: sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/text-encoding@0.0.39': + resolution: {integrity: sha512-gRPvgL1aMgP6Pv92Rs310cJvVQ86DSF62E7K30g1FoGmmYWXoNuXT8PV835iAVeiAZkRwr2IW37KuyDn9ljmeA==} + + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + + '@types/uuid@9.0.8': + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.33': + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + + '@typescript-eslint/eslint-plugin@6.21.0': + resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha eslint: ^7.0.0 || ^8.0.0 - typescript: "*" + typescript: '*' peerDependenciesMeta: typescript: optional: true - "@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/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/type-utils@6.21.0": - resolution: - { - integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==, - } - engines: { node: ^16.0.0 || >=18.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/type-utils@6.21.0': + resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 - typescript: "*" + typescript: '*' peerDependenciesMeta: typescript: optional: true - "@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/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-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/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: '*' 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/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@6.21.0": - resolution: - { - integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==, - } - engines: { node: ^16.0.0 || >=18.0.0 } + '@typescript-eslint/utils@6.21.0': + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.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 } - - "@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==, - } + '@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} + + '@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==} 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] - "@urql/core@5.2.0": - resolution: - { - integrity: sha512-/n0ieD0mvvDnVAXEQgX/7qJiVcvYvNkOHeBvkwtylfjydar123caCXcl58PXFY11oU1oquJocVXHxLAbtv4x1A==, - } - - "@urql/exchange-retry@1.3.2": - resolution: - { - integrity: sha512-TQMCz2pFJMfpNxmSfX1VSfTjwUIFx/mL+p1bnfM1xjjdla7Z+KnGMW/EhFbpckp3LyWAH4PgOsMwOMnIN+MBFg==, - } - peerDependencies: - "@urql/core": ^5.0.0 - - "@vercel/style-guide@5.2.0": - resolution: - { - integrity: sha512-fNSKEaZvSkiBoF6XEefs8CcgAV9K9e+MbcsDZjUsktHycKdA0jvjAzQi1W/FzLS+Nr5zZ6oejCwq/97dHUKe0g==, - } - engines: { node: ">=16" } - peerDependencies: - "@next/eslint-plugin-next": ">=12.3.0 <15" - eslint: ">=8.48.0 <9" - prettier: ">=3.0.0 <4" - typescript: ">=4.8.0 <6" + '@urql/core@5.2.0': + resolution: {integrity: sha512-/n0ieD0mvvDnVAXEQgX/7qJiVcvYvNkOHeBvkwtylfjydar123caCXcl58PXFY11oU1oquJocVXHxLAbtv4x1A==} + + '@urql/exchange-retry@1.3.2': + resolution: {integrity: sha512-TQMCz2pFJMfpNxmSfX1VSfTjwUIFx/mL+p1bnfM1xjjdla7Z+KnGMW/EhFbpckp3LyWAH4PgOsMwOMnIN+MBFg==} + peerDependencies: + '@urql/core': ^5.0.0 + + '@vercel/style-guide@5.2.0': + resolution: {integrity: sha512-fNSKEaZvSkiBoF6XEefs8CcgAV9K9e+MbcsDZjUsktHycKdA0jvjAzQi1W/FzLS+Nr5zZ6oejCwq/97dHUKe0g==} + engines: {node: '>=16'} + peerDependencies: + '@next/eslint-plugin-next': '>=12.3.0 <15' + eslint: '>=8.48.0 <9' + prettier: '>=3.0.0 <4' + typescript: '>=4.8.0 <6' peerDependenciesMeta: - "@next/eslint-plugin-next": + '@next/eslint-plugin-next': optional: true eslint: optional: true @@ -5854,503 +4068,287 @@ packages: typescript: optional: true - "@wry/caches@1.0.1": - resolution: - { - integrity: sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==, - } - engines: { node: ">=8" } - - "@wry/context@0.7.4": - resolution: - { - integrity: sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==, - } - engines: { node: ">=8" } - - "@wry/equality@0.5.7": - resolution: - { - integrity: sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==, - } - engines: { node: ">=8" } - - "@wry/trie@0.5.0": - resolution: - { - integrity: sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==, - } - engines: { node: ">=8" } - - "@xmldom/xmldom@0.7.13": - resolution: - { - integrity: sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==, - } - engines: { node: ">=10.0.0" } + '@wry/caches@1.0.1': + resolution: {integrity: sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==} + engines: {node: '>=8'} + + '@wry/context@0.7.4': + resolution: {integrity: sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==} + engines: {node: '>=8'} + + '@wry/equality@0.5.7': + resolution: {integrity: sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==} + engines: {node: '>=8'} + + '@wry/trie@0.5.0': + resolution: {integrity: sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==} + engines: {node: '>=8'} + + '@xmldom/xmldom@0.7.13': + resolution: {integrity: sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==} + engines: {node: '>=10.0.0'} deprecated: this version is no longer supported, please update to at least 0.8.* - "@xmldom/xmldom@0.8.11": - resolution: - { - integrity: sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==, - } - engines: { node: ">=10.0.0" } + '@xmldom/xmldom@0.8.11': + resolution: {integrity: sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==} + engines: {node: '>=10.0.0'} abab@2.0.6: - resolution: - { - integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==, - } + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} deprecated: Use your platform's native atob() and btoa() methods instead abort-controller@3.0.0: - resolution: - { - integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==, - } - engines: { node: ">=6.5" } + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} accepts@1.3.8: - resolution: - { - integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} accepts@2.0.0: - resolution: - { - integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} + engines: {node: '>= 0.6'} acorn-globals@7.0.1: - resolution: - { - integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==, - } + resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} 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-walk@8.3.2: - resolution: - { - integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==, - } - engines: { node: ">=0.4.0" } + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} acorn-walk@8.3.4: - resolution: - { - integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==, - } - engines: { node: ">=0.4.0" } + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} acorn@8.14.0: - resolution: - { - integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==, - } - engines: { node: ">=0.4.0" } + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} hasBin: true 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 agent-base@6.0.2: - resolution: - { - integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==, - } - engines: { node: ">= 6.0.0" } + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} agentkeepalive@4.6.0: - resolution: - { - integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==, - } - engines: { node: ">= 8.0.0" } + resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} + engines: {node: '>= 8.0.0'} ajv@6.12.6: - resolution: - { - integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==, - } + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} anser@1.4.10: - resolution: - { - integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==, - } + resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} ansi-colors@4.1.3: - resolution: - { - integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} ansi-escapes@4.3.2: - resolution: - { - integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} ansi-regex@4.1.1: - resolution: - { - integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} ansi-regex@5.0.1: - resolution: - { - integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} ansi-regex@6.2.0: - resolution: - { - integrity: sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==} + engines: {node: '>=12'} ansi-styles@3.2.1: - resolution: - { - integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} ansi-styles@4.3.0: - resolution: - { - integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} ansi-styles@5.2.0: - resolution: - { - integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} ansi-styles@6.2.1: - resolution: - { - integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} 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@4.1.3: - resolution: - { - integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==, - } + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} arg@5.0.2: - resolution: - { - integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==, - } + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} argparse@1.0.10: - resolution: - { - integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==, - } + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 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.1.3: - resolution: - { - integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==, - } + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} 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'} asap@2.0.6: - resolution: - { - integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==, - } + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} ast-types-flow@0.0.8: - resolution: - { - integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==, - } + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} ast-types@0.15.2: - resolution: - { - integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} + engines: {node: '>=4'} async-function@1.0.0: - resolution: - { - integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} async-limiter@1.0.1: - resolution: - { - integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==, - } + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} asynckit@0.4.0: - resolution: - { - integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, - } + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} autoprefixer@10.4.21: - resolution: - { - integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==, - } - engines: { node: ^10 || ^12 || >=14 } + resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} + 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'} aws4fetch@1.0.20: - resolution: - { - integrity: sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g==, - } + resolution: {integrity: sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g==} axe-core@4.10.3: - resolution: - { - integrity: sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==} + engines: {node: '>=4'} axios@1.11.0: - resolution: - { - integrity: sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==, - } + resolution: {integrity: sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==} 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'} babel-core@7.0.0-bridge.0: - resolution: - { - integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==, - } + resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 babel-jest@29.7.0: - resolution: - { - integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: - "@babel/core": ^7.8.0 + '@babel/core': ^7.8.0 babel-plugin-istanbul@6.1.1: - resolution: - { - integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} babel-plugin-jest-hoist@29.6.3: - resolution: - { - integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} babel-plugin-polyfill-corejs2@0.4.14: - resolution: - { - integrity: sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==, - } + resolution: {integrity: sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==} peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 babel-plugin-polyfill-corejs3@0.13.0: - resolution: - { - integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==, - } + resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==} peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 babel-plugin-polyfill-regenerator@0.6.5: - resolution: - { - integrity: sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==, - } + resolution: {integrity: sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==} peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 babel-plugin-react-native-web@0.19.13: - resolution: - { - integrity: sha512-4hHoto6xaN23LCyZgL9LJZc3olmAxd7b6jDzlZnKXAh4rRAbZRKNBJoOOdp46OBqgy+K0t0guTj5/mhA8inymQ==, - } + resolution: {integrity: sha512-4hHoto6xaN23LCyZgL9LJZc3olmAxd7b6jDzlZnKXAh4rRAbZRKNBJoOOdp46OBqgy+K0t0guTj5/mhA8inymQ==} babel-plugin-syntax-hermes-parser@0.23.1: - resolution: - { - integrity: sha512-uNLD0tk2tLUjGFdmCk+u/3FEw2o+BAwW4g+z2QVlxJrzZYOOPADroEcNtTPt5lNiScctaUmnsTkVEnOwZUOLhA==, - } + resolution: {integrity: sha512-uNLD0tk2tLUjGFdmCk+u/3FEw2o+BAwW4g+z2QVlxJrzZYOOPADroEcNtTPt5lNiScctaUmnsTkVEnOwZUOLhA==} babel-plugin-syntax-hermes-parser@0.25.1: - resolution: - { - integrity: sha512-IVNpGzboFLfXZUAwkLFcI/bnqVbwky0jP3eBno4HKtqvQJAHBLdgxiG6lQ4to0+Q/YCN3PO0od5NZwIKyY4REQ==, - } + resolution: {integrity: sha512-IVNpGzboFLfXZUAwkLFcI/bnqVbwky0jP3eBno4HKtqvQJAHBLdgxiG6lQ4to0+Q/YCN3PO0od5NZwIKyY4REQ==} babel-plugin-transform-flow-enums@0.0.2: - resolution: - { - integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==, - } + resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} babel-preset-current-node-syntax@1.2.0: - resolution: - { - integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==, - } + resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==} peerDependencies: - "@babel/core": ^7.0.0 || ^8.0.0-0 + '@babel/core': ^7.0.0 || ^8.0.0-0 babel-preset-expo@13.2.3: - resolution: - { - integrity: sha512-wQJn92lqj8GKR7Ojg/aW4+GkqI6ZdDNTDyOqhhl7A9bAqk6t0ukUOWLDXQb4p0qKJjMDV1F6gNWasI2KUbuVTQ==, - } + resolution: {integrity: sha512-wQJn92lqj8GKR7Ojg/aW4+GkqI6ZdDNTDyOqhhl7A9bAqk6t0ukUOWLDXQb4p0qKJjMDV1F6gNWasI2KUbuVTQ==} peerDependencies: babel-plugin-react-compiler: ^19.0.0-beta-e993439-20250405 peerDependenciesMeta: @@ -6358,804 +4356,491 @@ packages: optional: true babel-preset-jest@29.6.3: - resolution: - { - integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: - "@babel/core": ^7.0.0 + '@babel/core': ^7.0.0 balanced-match@1.0.2: - resolution: - { - integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, - } + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} base64-js@1.5.1: - resolution: - { - integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, - } + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bcryptjs@3.0.2: + resolution: {integrity: sha512-k38b3XOZKv60C4E2hVsXTolJWfkGRMbILBIe2IBITXciy5bOsTKot5kDrf3ZfufQtQOUN5mXceUEpU1rTl9Uog==} + hasBin: true bech32@1.1.4: - resolution: - { - integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==, - } + resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} bech32@2.0.0: - resolution: - { - integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==, - } + resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==} better-opn@3.0.2: - resolution: - { - integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==, - } - engines: { node: ">=12.0.0" } + resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} + engines: {node: '>=12.0.0'} better-path-resolve@1.0.0: - resolution: - { - integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} big-integer@1.6.52: - resolution: - { - integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==, - } - engines: { node: ">=0.6" } + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} binary-extensions@2.3.0: - resolution: - { - integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} blake3-wasm@2.1.5: - resolution: - { - integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==, - } + resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} bn.js@4.12.2: - resolution: - { - integrity: sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==, - } + resolution: {integrity: sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==} bn.js@5.2.2: - resolution: - { - integrity: sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==, - } + resolution: {integrity: sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==} body-parser@2.2.0: - resolution: - { - integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} + engines: {node: '>=18'} bowser@2.12.0: - resolution: - { - integrity: sha512-HcOcTudTeEWgbHh0Y1Tyb6fdeR71m4b/QACf0D4KswGTsNeIJQmg38mRENZPAYPZvGFN3fk3604XbQEPdxXdKg==, - } + resolution: {integrity: sha512-HcOcTudTeEWgbHh0Y1Tyb6fdeR71m4b/QACf0D4KswGTsNeIJQmg38mRENZPAYPZvGFN3fk3604XbQEPdxXdKg==} bplist-creator@0.1.0: - resolution: - { - integrity: sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==, - } + resolution: {integrity: sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==} bplist-parser@0.3.1: - resolution: - { - integrity: sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==, - } - engines: { node: ">= 5.10.0" } + resolution: {integrity: sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==} + engines: {node: '>= 5.10.0'} bplist-parser@0.3.2: - resolution: - { - integrity: sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==, - } - engines: { node: ">= 5.10.0" } + resolution: {integrity: sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==} + engines: {node: '>= 5.10.0'} 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'} brorand@1.1.0: - resolution: - { - integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==, - } + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} browserslist@4.25.2: - resolution: - { - integrity: sha512-0si2SJK3ooGzIawRu61ZdPCO1IncZwS8IzuX73sPZsXW6EQ/w/DAfPyKI8l1ETTCr2MnvqWitmlCUxgdul45jA==, - } - engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + resolution: {integrity: sha512-0si2SJK3ooGzIawRu61ZdPCO1IncZwS8IzuX73sPZsXW6EQ/w/DAfPyKI8l1ETTCr2MnvqWitmlCUxgdul45jA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true bs-logger@0.2.6: - resolution: - { - integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==, - } - engines: { node: ">= 6" } + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} bser@2.1.1: - resolution: - { - integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==, - } + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} buffer-from@1.1.2: - resolution: - { - integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, - } + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} buffer@5.7.1: - resolution: - { - integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==, - } + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} buffer@6.0.3: - resolution: - { - integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==, - } + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} builtin-modules@3.3.0: - resolution: - { - integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} bundle-require@4.2.1: - resolution: - { - integrity: sha512-7Q/6vkyYAwOmQNRw75x+4yRtZCZJXUDmHHlFdkiV0wgv/reNjtJwpu1jPJ0w2kbEpIM0uoKI3S4/f39dU7AjSA==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + resolution: {integrity: sha512-7Q/6vkyYAwOmQNRw75x+4yRtZCZJXUDmHHlFdkiV0wgv/reNjtJwpu1jPJ0w2kbEpIM0uoKI3S4/f39dU7AjSA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: - esbuild: ">=0.17" + esbuild: '>=0.17' busboy@1.6.0: - resolution: - { - integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==, - } - engines: { node: ">=10.16.0" } + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} bytes@3.1.2: - resolution: - { - integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + c12@3.1.0: + resolution: {integrity: sha512-uWoS8OU1MEIsOv8p/5a82c3H31LsWVR5qiyXVfBNOzfffjUWtPnhAb4BYI2uG2HfGmZmFjCtui5XNWaps+iFuw==} + peerDependencies: + magicast: ^0.3.5 + peerDependenciesMeta: + magicast: + optional: true cac@6.7.14: - resolution: - { - integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} 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'} caller-callsite@2.0.0: - resolution: - { - integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} + engines: {node: '>=4'} caller-path@2.0.0: - resolution: - { - integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} + engines: {node: '>=4'} callsites@2.0.0: - resolution: - { - integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} + engines: {node: '>=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'} camelcase@5.3.1: - resolution: - { - integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} camelcase@6.3.0: - resolution: - { - integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} caniuse-lite@1.0.30001735: - resolution: - { - integrity: sha512-EV/laoX7Wq2J9TQlyIXRxTJqIw4sxfXS4OYgudGxBYRuTv0q7AM6yMEpU/Vo1I94thg9U6EZ2NfZx9GJq83u7w==, - } + resolution: {integrity: sha512-EV/laoX7Wq2J9TQlyIXRxTJqIw4sxfXS4OYgudGxBYRuTv0q7AM6yMEpU/Vo1I94thg9U6EZ2NfZx9GJq83u7w==} chalk@2.4.2: - resolution: - { - integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} chalk@4.1.2: - resolution: - { - integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} chalk@5.6.0: - resolution: - { - integrity: sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==, - } - engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } + resolution: {integrity: sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} char-regex@1.0.2: - resolution: - { - integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} chardet@2.1.0: - resolution: - { - integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==, - } + resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==} 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'} chownr@3.0.0: - resolution: - { - integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} chrome-launcher@0.15.2: - resolution: - { - integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==, - } - engines: { node: ">=12.13.0" } + resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} + engines: {node: '>=12.13.0'} hasBin: true chromium-edge-launcher@0.2.0: - resolution: - { - integrity: sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==, - } + resolution: {integrity: sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==} ci-info@2.0.0: - resolution: - { - integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==, - } + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} ci-info@3.9.0: - resolution: - { - integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + ci-info@4.3.0: + resolution: {integrity: sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==} + engines: {node: '>=8'} + + citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} cjs-module-lexer@1.4.3: - resolution: - { - integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==, - } + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} clean-regexp@1.0.0: - resolution: - { - integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} cli-cursor@2.1.0: - resolution: - { - integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} + engines: {node: '>=4'} cli-spinners@2.9.2: - resolution: - { - integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} client-only@0.0.1: - resolution: - { - integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==, - } + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} cliui@8.0.1: - resolution: - { - integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} cliui@9.0.1: - resolution: - { - integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==, - } - engines: { node: ">=20" } + resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} + engines: {node: '>=20'} clone-deep@4.0.1: - resolution: - { - integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} clone@1.0.4: - resolution: - { - integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==, - } - engines: { node: ">=0.8" } + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} cloudflare@4.5.0: - resolution: - { - integrity: sha512-fPcbPKx4zF45jBvQ0z7PCdgejVAPBBCZxwqk1k7krQNfpM07Cfj97/Q6wBzvYqlWXx/zt1S9+m8vnfCe06umbQ==, - } + resolution: {integrity: sha512-fPcbPKx4zF45jBvQ0z7PCdgejVAPBBCZxwqk1k7krQNfpM07Cfj97/Q6wBzvYqlWXx/zt1S9+m8vnfCe06umbQ==} clsx@2.1.1: - resolution: - { - integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} co@4.6.0: - resolution: - { - integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==, - } - engines: { iojs: ">= 1.0.0", node: ">= 0.12.0" } + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} collect-v8-coverage@1.0.2: - resolution: - { - integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==, - } + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} color-convert@1.9.3: - resolution: - { - integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==, - } + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 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.3: - resolution: - { - integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==, - } + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 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@1.4.0: - resolution: - { - integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==, - } + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} combined-stream@1.0.8: - resolution: - { - integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} commander@11.1.0: - resolution: - { - integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==, - } - engines: { node: ">=16" } + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} commander@12.1.0: - resolution: - { - integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} commander@2.20.3: - resolution: - { - integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==, - } + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} commander@4.1.1: - resolution: - { - integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==, - } - engines: { node: ">= 6" } + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} commander@7.2.0: - resolution: - { - integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==, - } - engines: { node: ">= 10" } + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} commondir@1.0.1: - resolution: - { - integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==, - } + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} compressible@2.0.18: - resolution: - { - integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} compression@1.8.1: - resolution: - { - integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==, - } - engines: { node: ">= 0.8.0" } + resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} + engines: {node: '>= 0.8.0'} concat-map@0.0.1: - resolution: - { - integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, - } + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confbox@0.2.2: + resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} connect@3.7.0: - resolution: - { - integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==, - } - engines: { node: ">= 0.10.0" } + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} content-disposition@1.0.0: - resolution: - { - integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} + engines: {node: '>= 0.6'} content-type@1.0.5: - resolution: - { - integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} convert-source-map@2.0.0: - resolution: - { - integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, - } + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} cookie-signature@1.2.2: - resolution: - { - integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==, - } - engines: { node: ">=6.6.0" } + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} cookie@0.7.1: - resolution: - { - integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + engines: {node: '>= 0.6'} cookie@1.0.2: - resolution: - { - integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} + engines: {node: '>=18'} core-js-compat@3.45.0: - resolution: - { - integrity: sha512-gRoVMBawZg0OnxaVv3zpqLLxaHmsubEGyTnqdpI/CEBvX4JadI1dMSHxagThprYRtSVbuQxvi6iUatdPxohHpA==, - } + resolution: {integrity: sha512-gRoVMBawZg0OnxaVv3zpqLLxaHmsubEGyTnqdpI/CEBvX4JadI1dMSHxagThprYRtSVbuQxvi6iUatdPxohHpA==} cosmiconfig@5.2.1: - resolution: - { - integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} + engines: {node: '>=4'} cosmjs-types@0.10.1: - resolution: - { - integrity: sha512-CENXb4O5GN+VyB68HYXFT2SOhv126Z59631rZC56m8uMWa6/cSlFeai8BwZGT1NMepw0Ecf+U8XSOnBzZUWh9Q==, - } + resolution: {integrity: sha512-CENXb4O5GN+VyB68HYXFT2SOhv126Z59631rZC56m8uMWa6/cSlFeai8BwZGT1NMepw0Ecf+U8XSOnBzZUWh9Q==} cosmjs-types@0.9.0: - resolution: - { - integrity: sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==, - } + resolution: {integrity: sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==} create-jest@29.7.0: - resolution: - { - integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true create-require@1.1.1: - resolution: - { - integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==, - } + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} cross-spawn@7.0.6: - resolution: - { - integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==, - } - engines: { node: ">= 8" } + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} crypto-random-string@2.0.0: - resolution: - { - integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + engines: {node: '>=8'} css.escape@1.5.1: - resolution: - { - integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==, - } + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} 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 cssom@0.3.8: - resolution: - { - integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==, - } + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} cssom@0.5.0: - resolution: - { - integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==, - } + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} cssstyle@2.3.0: - resolution: - { - integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} 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-urls@3.0.2: - resolution: - { - integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} + engines: {node: '>=12'} 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'} dataloader@1.4.0: - resolution: - { - integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==, - } + resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} debug@2.6.9: - resolution: - { - integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==, - } + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: - supports-color: "*" + supports-color: '*' peerDependenciesMeta: supports-color: optional: true 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.3.6: - resolution: - { - integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==, - } - engines: { node: ">=6.0" } + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + engines: {node: '>=6.0'} peerDependencies: - supports-color: "*" + supports-color: '*' peerDependenciesMeta: supports-color: optional: true debug@4.4.1: - resolution: - { - integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==, - } - engines: { node: ">=6.0" } + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + engines: {node: '>=6.0'} peerDependencies: - supports-color: "*" + supports-color: '*' peerDependenciesMeta: supports-color: optional: true decimal.js@10.6.0: - resolution: - { - integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==, - } + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} dedent@1.6.0: - resolution: - { - integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==, - } + resolution: {integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==} peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: @@ -7163,533 +4848,323 @@ packages: optional: true deep-equal@2.2.3: - resolution: - { - integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} + engines: {node: '>= 0.4'} deep-extend@0.6.0: - resolution: - { - integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==, - } - engines: { node: ">=4.0.0" } + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} 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'} deepmerge@4.3.1: - resolution: - { - integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} defaults@1.0.4: - resolution: - { - integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==, - } + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} 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-lazy-prop@2.0.0: - resolution: - { - integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} 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==} delayed-stream@1.0.0: - resolution: - { - integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, - } - engines: { node: ">=0.4.0" } + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} depd@2.0.0: - resolution: - { - integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} destroy@1.2.0: - resolution: - { - integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==, - } - engines: { node: ">= 0.8", npm: 1.2.8000 || >= 1.4.16 } + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} detect-indent@6.1.0: - resolution: - { - integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} detect-indent@7.0.1: - resolution: - { - integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==, - } - engines: { node: ">=12.20" } + resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==} + engines: {node: '>=12.20'} detect-libc@1.0.3: - resolution: - { - integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==, - } - engines: { node: ">=0.10" } + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} hasBin: true detect-libc@2.0.4: - resolution: - { - integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + engines: {node: '>=8'} detect-newline@3.1.0: - resolution: - { - integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} detect-newline@4.0.1: - resolution: - { - integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 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==} diff-sequences@29.6.3: - resolution: - { - integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} diff@4.0.2: - resolution: - { - integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==, - } - engines: { node: ">=0.3.1" } + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} 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'} dom-accessibility-api@0.5.16: - resolution: - { - integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==, - } + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} dom-accessibility-api@0.6.3: - resolution: - { - integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==, - } + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} domexception@4.0.0: - resolution: - { - integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} deprecated: Use your platform's native DOMException instead dotenv-expand@11.0.7: - resolution: - { - integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} + engines: {node: '>=12'} dotenv@16.0.3: - resolution: - { - integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} + engines: {node: '>=12'} dotenv@16.4.7: - resolution: - { - integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} + engines: {node: '>=12'} dotenv@16.6.1: - resolution: - { - integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} + engines: {node: '>=12'} dotenv@8.6.0: - resolution: - { - integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} + engines: {node: '>=10'} 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'} duplexer@0.1.2: - resolution: - { - integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==, - } + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} eastasianwidth@0.2.0: - resolution: - { - integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==, - } + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} eciesjs@0.4.15: - resolution: - { - integrity: sha512-r6kEJXDKecVOCj2nLMuXK/FCPeurW33+3JRpfXVbjLja3XUYFfD9I/JBreH6sUyzcm3G/YQboBjMla6poKeSdA==, - } - engines: { bun: ">=1", deno: ">=2", node: ">=16" } + resolution: {integrity: sha512-r6kEJXDKecVOCj2nLMuXK/FCPeurW33+3JRpfXVbjLja3XUYFfD9I/JBreH6sUyzcm3G/YQboBjMla6poKeSdA==} + engines: {bun: '>=1', deno: '>=2', node: '>=16'} ee-first@1.1.1: - resolution: - { - integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==, - } + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + effect@3.16.12: + resolution: {integrity: sha512-N39iBk0K71F9nb442TLbTkjl24FLUzuvx2i1I2RsEAQsdAdUTuUoW0vlfUXgkMTUOnYqKnWcFfqw4hK4Pw27hg==} electron-to-chromium@1.5.204: - resolution: - { - integrity: sha512-s9VbBXWxfDrl67PlO4avwh0/GU2vcwx8Fph3wlR8LJl7ySGYId59EFE17VWVcuC3sLWNPENm6Z/uGqKbkPCcXA==, - } + resolution: {integrity: sha512-s9VbBXWxfDrl67PlO4avwh0/GU2vcwx8Fph3wlR8LJl7ySGYId59EFE17VWVcuC3sLWNPENm6Z/uGqKbkPCcXA==} elliptic@6.6.1: - resolution: - { - integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==, - } + resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} emittery@0.13.1: - resolution: - { - integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} emoji-regex@10.5.0: - resolution: - { - integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==, - } + resolution: {integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==} emoji-regex@8.0.0: - resolution: - { - integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, - } + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 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'} encodeurl@1.0.2: - resolution: - { - integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} encodeurl@2.0.0: - resolution: - { - integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} enquirer@2.4.1: - resolution: - { - integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==, - } - engines: { node: ">=8.6" } + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} entities@6.0.1: - resolution: - { - integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==, - } - engines: { node: ">=0.12" } + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} env-editor@0.4.2: - resolution: - { - integrity: sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==} + engines: {node: '>=8'} error-ex@1.3.2: - resolution: - { - integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==, - } + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} error-stack-parser-es@1.0.5: - resolution: - { - integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==, - } + resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==} error-stack-parser@2.1.4: - resolution: - { - integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==, - } + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} 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-get-iterator@1.1.3: - resolution: - { - integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==, - } + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} 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'} esbuild@0.17.19: - resolution: - { - integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + engines: {node: '>=12'} hasBin: true esbuild@0.25.4: - resolution: - { - integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} + engines: {node: '>=18'} hasBin: true escalade@3.2.0: - resolution: - { - integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} escape-html@1.0.3: - resolution: - { - integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==, - } + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} escape-string-regexp@1.0.5: - resolution: - { - integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, - } - engines: { node: ">=0.8.0" } + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} escape-string-regexp@2.0.0: - resolution: - { - integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} escape-string-regexp@4.0.0: - resolution: - { - integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} escodegen@2.1.0: - resolution: - { - integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==, - } - engines: { node: ">=6.0" } + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} hasBin: true eslint-config-next@14.0.4: - resolution: - { - integrity: sha512-9/xbOHEQOmQtqvQ1UsTQZpnA7SlDMBtuKJ//S4JnoyK3oGLhILKXdBgu/UO7lQo/2xOykQULS1qQ6p2+EpHgAQ==, - } + resolution: {integrity: sha512-9/xbOHEQOmQtqvQ1UsTQZpnA7SlDMBtuKJ//S4JnoyK3oGLhILKXdBgu/UO7lQo/2xOykQULS1qQ6p2+EpHgAQ==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 - typescript: ">=3.3.1" + typescript: '>=3.3.1' peerDependenciesMeta: typescript: optional: true eslint-config-prettier@9.1.2: - resolution: - { - integrity: sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==, - } + resolution: {integrity: sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==} hasBin: true peerDependencies: - eslint: ">=7.0.0" + eslint: '>=7.0.0' eslint-config-turbo@1.13.4: - resolution: - { - integrity: sha512-+we4eWdZlmlEn7LnhXHCIPX/wtujbHCS7XjQM/TN09BHNEl2fZ8id4rHfdfUKIYTSKyy8U/nNyJ0DNoZj5Q8bw==, - } + resolution: {integrity: sha512-+we4eWdZlmlEn7LnhXHCIPX/wtujbHCS7XjQM/TN09BHNEl2fZ8id4rHfdfUKIYTSKyy8U/nNyJ0DNoZj5Q8bw==} peerDependencies: - eslint: ">6.6.0" + eslint: '>6.6.0' eslint-import-resolver-alias@1.1.2: - resolution: - { - integrity: sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w==, - } - engines: { node: ">= 4" } + resolution: {integrity: sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w==} + engines: {node: '>= 4'} peerDependencies: - eslint-plugin-import: ">=1.4.0" + eslint-plugin-import: '>=1.4.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 } - peerDependencies: - eslint: "*" - eslint-plugin-import: "*" - eslint-plugin-import-x: "*" + resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' peerDependenciesMeta: eslint-plugin-import: optional: true @@ -7697,19 +5172,16 @@ packages: optional: true eslint-module-utils@2.12.1: - 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: "*" + 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: '*' peerDependenciesMeta: - "@typescript-eslint/parser": + '@typescript-eslint/parser': optional: true eslint: optional: true @@ -7721,459 +5193,296 @@ packages: optional: true eslint-plugin-eslint-comments@3.2.0: - resolution: - { - integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==, - } - engines: { node: ">=6.5.0" } + resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} + engines: {node: '>=6.5.0'} peerDependencies: - eslint: ">=4.19.1" + eslint: '>=4.19.1' 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-jest@27.9.0: - resolution: - { - integrity: sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: - "@typescript-eslint/eslint-plugin": ^5.0.0 || ^6.0.0 || ^7.0.0 + '@typescript-eslint/eslint-plugin': ^5.0.0 || ^6.0.0 || ^7.0.0 eslint: ^7.0.0 || ^8.0.0 - jest: "*" + jest: '*' peerDependenciesMeta: - "@typescript-eslint/eslint-plugin": + '@typescript-eslint/eslint-plugin': optional: true jest: 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-playwright@0.16.0: - resolution: - { - integrity: sha512-DcHpF0SLbNeh9MT4pMzUGuUSnJ7q5MWbP8sSEFIMS6j7Ggnduq8ghNlfhURgty4c1YFny7Ge9xYTO1FSAoV2Vw==, - } + resolution: {integrity: sha512-DcHpF0SLbNeh9MT4pMzUGuUSnJ7q5MWbP8sSEFIMS6j7Ggnduq8ghNlfhURgty4c1YFny7Ge9xYTO1FSAoV2Vw==} peerDependencies: - eslint: ">=7" - eslint-plugin-jest: ">=25" + eslint: '>=7' + eslint-plugin-jest: '>=25' peerDependenciesMeta: eslint-plugin-jest: optional: true eslint-plugin-react-hooks@4.6.2: - resolution: - { - integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 eslint-plugin-react-hooks@5.0.0-canary-7118f5dd7-20230705: - resolution: - { - integrity: sha512-AZYbMo/NW9chdL7vk6HQzQhT+PvTAEVqWk9ziruUoW2kAOcN5qNyelv70e0F1VNQAbvutOC9oc+xfWycI9FxDw==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-AZYbMo/NW9chdL7vk6HQzQhT+PvTAEVqWk9ziruUoW2kAOcN5qNyelv70e0F1VNQAbvutOC9oc+xfWycI9FxDw==} + engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.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-testing-library@6.5.0: - resolution: - { - integrity: sha512-Ls5TUfLm5/snocMAOlofSOJxNN0aKqwTlco7CrNtMjkTdQlkpSMaeTCDHCuXfzrI97xcx2rSCNeKeJjtpkNC1w==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: ">=6" } + resolution: {integrity: sha512-Ls5TUfLm5/snocMAOlofSOJxNN0aKqwTlco7CrNtMjkTdQlkpSMaeTCDHCuXfzrI97xcx2rSCNeKeJjtpkNC1w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 eslint-plugin-tsdoc@0.2.17: - resolution: - { - integrity: sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA==, - } + resolution: {integrity: sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA==} eslint-plugin-turbo@1.13.4: - resolution: - { - integrity: sha512-82GfMzrewI/DJB92Bbch239GWbGx4j1zvjk1lqb06lxIlMPnVwUHVwPbAnLfyLG3JuhLv9whxGkO/q1CL18JTg==, - } + resolution: {integrity: sha512-82GfMzrewI/DJB92Bbch239GWbGx4j1zvjk1lqb06lxIlMPnVwUHVwPbAnLfyLG3JuhLv9whxGkO/q1CL18JTg==} peerDependencies: - eslint: ">6.6.0" + eslint: '>6.6.0' eslint-plugin-unicorn@48.0.1: - resolution: - { - integrity: sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw==, - } - engines: { node: ">=16" } + resolution: {integrity: sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw==} + engines: {node: '>=16'} peerDependencies: - eslint: ">=8.44.0" + eslint: '>=8.44.0' 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@2.1.0: - resolution: - { - integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} 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@8.57.1: - resolution: - { - integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} + 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} esprima@4.0.1: - resolution: - { - integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} hasBin: true 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'} etag@1.8.1: - resolution: - { - integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} event-target-shim@5.0.1: - resolution: - { - integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} events@3.3.0: - resolution: - { - integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==, - } - engines: { node: ">=0.8.x" } + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} exec-async@2.2.0: - resolution: - { - integrity: sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==, - } + resolution: {integrity: sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==} execa@5.1.1: - resolution: - { - integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} exit-hook@2.2.1: - resolution: - { - integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} + engines: {node: '>=6'} exit@0.1.2: - resolution: - { - integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==, - } - engines: { node: ">= 0.8.0" } + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} expect@29.7.0: - resolution: - { - integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + expect@30.1.2: + resolution: {integrity: sha512-xvHszRavo28ejws8FpemjhwswGj4w/BetHIL8cU49u4sGyXDw2+p3YbeDbj6xzlxi6kWTjIRSTJ+9sNXPnF0Zg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} expo-asset@11.1.7: - resolution: - { - integrity: sha512-b5P8GpjUh08fRCf6m5XPVAh7ra42cQrHBIMgH2UXP+xsj4Wufl6pLy6jRF5w6U7DranUMbsXm8TOyq4EHy7ADg==, - } + resolution: {integrity: sha512-b5P8GpjUh08fRCf6m5XPVAh7ra42cQrHBIMgH2UXP+xsj4Wufl6pLy6jRF5w6U7DranUMbsXm8TOyq4EHy7ADg==} peerDependencies: - expo: "*" - react: "*" - react-native: "*" + expo: '*' + react: '*' + react-native: '*' expo-constants@17.0.8: - resolution: - { - integrity: sha512-XfWRyQAf1yUNgWZ1TnE8pFBMqGmFP5Gb+SFSgszxDdOoheB/NI5D4p7q86kI2fvGyfTrxAe+D+74nZkfsGvUlg==, - } + resolution: {integrity: sha512-XfWRyQAf1yUNgWZ1TnE8pFBMqGmFP5Gb+SFSgszxDdOoheB/NI5D4p7q86kI2fvGyfTrxAe+D+74nZkfsGvUlg==} peerDependencies: - expo: "*" - react-native: "*" + expo: '*' + react-native: '*' expo-constants@17.1.7: - resolution: - { - integrity: sha512-byBjGsJ6T6FrLlhOBxw4EaiMXrZEn/MlUYIj/JAd+FS7ll5X/S4qVRbIimSJtdW47hXMq0zxPfJX6njtA56hHA==, - } + resolution: {integrity: sha512-byBjGsJ6T6FrLlhOBxw4EaiMXrZEn/MlUYIj/JAd+FS7ll5X/S4qVRbIimSJtdW47hXMq0zxPfJX6njtA56hHA==} peerDependencies: - expo: "*" - react-native: "*" + expo: '*' + react-native: '*' expo-file-system@18.1.11: - resolution: - { - integrity: sha512-HJw/m0nVOKeqeRjPjGdvm+zBi5/NxcdPf8M8P3G2JFvH5Z8vBWqVDic2O58jnT1OFEy0XXzoH9UqFu7cHg9DTQ==, - } + resolution: {integrity: sha512-HJw/m0nVOKeqeRjPjGdvm+zBi5/NxcdPf8M8P3G2JFvH5Z8vBWqVDic2O58jnT1OFEy0XXzoH9UqFu7cHg9DTQ==} peerDependencies: - expo: "*" - react-native: "*" + expo: '*' + react-native: '*' expo-font@13.3.2: - resolution: - { - integrity: sha512-wUlMdpqURmQ/CNKK/+BIHkDA5nGjMqNlYmW0pJFXY/KE/OG80Qcavdu2sHsL4efAIiNGvYdBS10WztuQYU4X0A==, - } + resolution: {integrity: sha512-wUlMdpqURmQ/CNKK/+BIHkDA5nGjMqNlYmW0pJFXY/KE/OG80Qcavdu2sHsL4efAIiNGvYdBS10WztuQYU4X0A==} peerDependencies: - expo: "*" - react: "*" + expo: '*' + react: '*' expo-keep-awake@14.1.4: - resolution: - { - integrity: sha512-wU9qOnosy4+U4z/o4h8W9PjPvcFMfZXrlUoKTMBW7F4pLqhkkP/5G4EviPZixv4XWFMjn1ExQ5rV6BX8GwJsWA==, - } + resolution: {integrity: sha512-wU9qOnosy4+U4z/o4h8W9PjPvcFMfZXrlUoKTMBW7F4pLqhkkP/5G4EviPZixv4XWFMjn1ExQ5rV6BX8GwJsWA==} peerDependencies: - expo: "*" - react: "*" + expo: '*' + react: '*' expo-linking@7.0.5: - resolution: - { - integrity: sha512-3KptlJtcYDPWohk0MfJU75MJFh2ybavbtcSd84zEPfw9s1q3hjimw3sXnH03ZxP54kiEWldvKmmnGcVffBDB1g==, - } + resolution: {integrity: sha512-3KptlJtcYDPWohk0MfJU75MJFh2ybavbtcSd84zEPfw9s1q3hjimw3sXnH03ZxP54kiEWldvKmmnGcVffBDB1g==} peerDependencies: - react: "*" - react-native: "*" + react: '*' + react-native: '*' expo-modules-autolinking@2.1.14: - resolution: - { - integrity: sha512-nT5ERXwc+0ZT/pozDoJjYZyUQu5RnXMk9jDGm5lg+PiKvsrCTSA/2/eftJGMxLkTjVI2MXp5WjSz3JRjbA7UXA==, - } + resolution: {integrity: sha512-nT5ERXwc+0ZT/pozDoJjYZyUQu5RnXMk9jDGm5lg+PiKvsrCTSA/2/eftJGMxLkTjVI2MXp5WjSz3JRjbA7UXA==} hasBin: true expo-modules-core@2.5.0: - resolution: - { - integrity: sha512-aIbQxZE2vdCKsolQUl6Q9Farlf8tjh/ROR4hfN1qT7QBGPl1XrJGnaOKkcgYaGrlzCPg/7IBe0Np67GzKMZKKQ==, - } + resolution: {integrity: sha512-aIbQxZE2vdCKsolQUl6Q9Farlf8tjh/ROR4hfN1qT7QBGPl1XrJGnaOKkcgYaGrlzCPg/7IBe0Np67GzKMZKKQ==} expo-web-browser@14.0.2: - resolution: - { - integrity: sha512-Hncv2yojhTpHbP6SGWARBFdl7P6wBHc1O8IKaNsH0a/IEakq887o1eRhLxZ5IwztPQyRDhpqHdgJ+BjWolOnwA==, - } + resolution: {integrity: sha512-Hncv2yojhTpHbP6SGWARBFdl7P6wBHc1O8IKaNsH0a/IEakq887o1eRhLxZ5IwztPQyRDhpqHdgJ+BjWolOnwA==} peerDependencies: - expo: "*" - react-native: "*" + expo: '*' + react-native: '*' expo@53.0.20: - resolution: - { - integrity: sha512-Nh+HIywVy9KxT/LtH08QcXqrxtUOA9BZhsXn3KCsAYA+kNb80M8VKN8/jfQF+I6CgeKyFKJoPNsWgI0y0VBGrA==, - } + resolution: {integrity: sha512-Nh+HIywVy9KxT/LtH08QcXqrxtUOA9BZhsXn3KCsAYA+kNb80M8VKN8/jfQF+I6CgeKyFKJoPNsWgI0y0VBGrA==} hasBin: true peerDependencies: - "@expo/dom-webview": "*" - "@expo/metro-runtime": "*" - react: "*" - react-native: "*" - react-native-webview: "*" + '@expo/dom-webview': '*' + '@expo/metro-runtime': '*' + react: '*' + react-native: '*' + react-native-webview: '*' peerDependenciesMeta: - "@expo/dom-webview": + '@expo/dom-webview': optional: true - "@expo/metro-runtime": + '@expo/metro-runtime': optional: true react-native-webview: optional: true exponential-backoff@3.1.2: - resolution: - { - integrity: sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==, - } + resolution: {integrity: sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==} express@5.0.1: - resolution: - { - integrity: sha512-ORF7g6qGnD+YtUG9yx4DFoqCShNMmUKiXuT5oWMHiOvt/4WFbHC6yCwQMTSBMno7AqntNCAzzcnnjowRkTL9eQ==, - } - engines: { node: ">= 18" } + resolution: {integrity: sha512-ORF7g6qGnD+YtUG9yx4DFoqCShNMmUKiXuT5oWMHiOvt/4WFbHC6yCwQMTSBMno7AqntNCAzzcnnjowRkTL9eQ==} + engines: {node: '>= 18'} exsolve@1.0.7: - resolution: - { - integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==, - } + resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} extendable-error@0.1.7: - resolution: - { - integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==, - } + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} fast-base64-decode@1.0.0: - resolution: - { - integrity: sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==, - } + resolution: {integrity: sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==} + + fast-check@3.23.2: + resolution: {integrity: sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==} + engines: {node: '>=8.0.0'} fast-deep-equal@3.1.3: - resolution: - { - integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, - } + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 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-xml-parser@4.2.5: - resolution: - { - integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==, - } + resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} hasBin: true fast-xml-parser@5.2.5: - resolution: - { - integrity: sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==, - } + resolution: {integrity: sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==} hasBin: true fastq@1.19.1: - resolution: - { - integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==, - } + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} fb-watchman@2.0.2: - resolution: - { - integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==, - } + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} 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: @@ -8181,1150 +5490,653 @@ 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'} finalhandler@1.1.2: - resolution: - { - integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} finalhandler@2.1.0: - resolution: - { - integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} + engines: {node: '>= 0.8'} find-cache-dir@2.1.0: - resolution: - { - integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} find-up@3.0.0: - resolution: - { - integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} find-up@4.1.0: - resolution: - { - integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + 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==} flow-enums-runtime@0.0.6: - resolution: - { - integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==, - } + resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} flow-parser@0.279.0: - resolution: - { - integrity: sha512-41VremrzImoLcZuqY18U86ojcVy2Stuq4VnjdAcxHjGanvx3VmKVUITIVMt2PM1RvmRJtgtJWvCxVpQ1E9OGDw==, - } - engines: { node: ">=0.4.0" } + resolution: {integrity: sha512-41VremrzImoLcZuqY18U86ojcVy2Stuq4VnjdAcxHjGanvx3VmKVUITIVMt2PM1RvmRJtgtJWvCxVpQ1E9OGDw==} + engines: {node: '>=0.4.0'} follow-redirects@1.15.11: - resolution: - { - integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==, - } - engines: { node: ">=4.0" } + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} peerDependencies: - debug: "*" + debug: '*' peerDependenciesMeta: debug: optional: true fontfaceobserver@2.3.0: - resolution: - { - integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==, - } + resolution: {integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==} for-each@0.3.5: - resolution: - { - integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} foreground-child@3.3.1: - resolution: - { - integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} form-data-encoder@1.7.2: - resolution: - { - integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==, - } + resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} form-data@4.0.4: - resolution: - { - integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==, - } - engines: { node: ">= 6" } + resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} + engines: {node: '>= 6'} formdata-node@4.4.1: - resolution: - { - integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==, - } - engines: { node: ">= 12.20" } + resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} + engines: {node: '>= 12.20'} forwarded@0.2.0: - resolution: - { - integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} fraction.js@4.3.7: - resolution: - { - integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==, - } + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} freeport-async@2.0.0: - resolution: - { - integrity: sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==} + engines: {node: '>=8'} fresh@0.5.2: - resolution: - { - integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} fresh@2.0.0: - resolution: - { - integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + engines: {node: '>= 0.8'} fs-extra@7.0.1: - resolution: - { - integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==, - } - engines: { node: ">=6 <7 || >=8" } + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} fs-extra@8.1.0: - resolution: - { - integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==, - } - engines: { node: ">=6 <7 || >=8" } + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} fs.realpath@1.0.0: - resolution: - { - integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, - } + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} fsevents@2.3.3: - resolution: - { - integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, - } - engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + 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==} gensync@1.0.0-beta.2: - resolution: - { - integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, - } - engines: { node: ">=6.9.0" } + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} get-caller-file@2.0.5: - resolution: - { - integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, - } - engines: { node: 6.* || 8.* || >= 10.* } + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} get-east-asian-width@1.3.1: - resolution: - { - integrity: sha512-R1QfovbPsKmosqTnPoRFiJ7CF9MLRgb53ChvMZm+r4p76/+8yKDy17qLL2PKInORy2RkZZekuK0efYgmzTkXyQ==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-R1QfovbPsKmosqTnPoRFiJ7CF9MLRgb53ChvMZm+r4p76/+8yKDy17qLL2PKInORy2RkZZekuK0efYgmzTkXyQ==} + engines: {node: '>=18'} 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-package-type@0.1.0: - resolution: - { - integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==, - } - engines: { node: ">=8.0.0" } + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} 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-stream@6.0.1: - resolution: - { - integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} 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.10.1: - resolution: - { - integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==, - } + resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} getenv@1.0.0: - resolution: - { - integrity: sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==} + engines: {node: '>=6'} getenv@2.0.0: - resolution: - { - integrity: sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==} + engines: {node: '>=6'} + + giget@2.0.0: + resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==} + hasBin: true git-hooks-list@4.1.1: - resolution: - { - integrity: sha512-cmP497iLq54AZnv4YRAEMnEyQ1eIn4tGKbmswqwmFV4GBnAqE8NLtWxxdXa++AalfgL5EBH4IxTPyquEuGY/jA==, - } + resolution: {integrity: sha512-cmP497iLq54AZnv4YRAEMnEyQ1eIn4tGKbmswqwmFV4GBnAqE8NLtWxxdXa++AalfgL5EBH4IxTPyquEuGY/jA==} 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-to-regexp@0.4.1: - resolution: - { - integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==, - } + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} glob@10.4.5: - resolution: - { - integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==, - } + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true glob@11.0.3: - resolution: - { - integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==, - } - engines: { node: 20 || >=22 } + resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} + engines: {node: 20 || >=22} hasBin: true glob@7.1.7: - resolution: - { - integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==, - } + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} deprecated: Glob versions prior to v9 are no longer supported glob@7.2.3: - resolution: - { - integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==, - } + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported glob@9.3.5: - resolution: - { - integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==, - } - engines: { node: ">=16 || 14 >=14.17" } + resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} + engines: {node: '>=16 || 14 >=14.17'} 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@10.0.1: - resolution: - { - integrity: sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==} + engines: {node: '>=8'} 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'} graceful-fs@4.2.11: - resolution: - { - integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, - } + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} graphemer@1.4.0: - resolution: - { - integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==, - } + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} graphql-tag@2.12.6: - resolution: - { - integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} + engines: {node: '>=10'} peerDependencies: graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 graphql@16.11.0: - resolution: - { - integrity: sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==, - } - engines: { node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0 } + resolution: {integrity: sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} gzip-size@6.0.0: - resolution: - { - integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} handlebars@4.7.8: - resolution: - { - integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==, - } - engines: { node: ">=0.4.7" } + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} hasBin: true 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@3.0.0: - resolution: - { - integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=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'} hash-wasm@4.12.0: - resolution: - { - integrity: sha512-+/2B2rYLb48I/evdOIhP+K/DD2ca2fgBjp6O+GBEnCDk2e4rpeXIK8GvIyRPjTezgmWn9gmKwkQjjx6BtqDHVQ==, - } + resolution: {integrity: sha512-+/2B2rYLb48I/evdOIhP+K/DD2ca2fgBjp6O+GBEnCDk2e4rpeXIK8GvIyRPjTezgmWn9gmKwkQjjx6BtqDHVQ==} hash.js@1.1.7: - resolution: - { - integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==, - } + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} hasown@2.0.2: - resolution: - { - integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} hermes-estree@0.23.1: - resolution: - { - integrity: sha512-eT5MU3f5aVhTqsfIReZ6n41X5sYn4IdQL0nvz6yO+MMlPxw49aSARHLg/MSehQftyjnrE8X6bYregzSumqc6cg==, - } + resolution: {integrity: sha512-eT5MU3f5aVhTqsfIReZ6n41X5sYn4IdQL0nvz6yO+MMlPxw49aSARHLg/MSehQftyjnrE8X6bYregzSumqc6cg==} hermes-estree@0.25.1: - resolution: - { - integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==, - } + resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} hermes-parser@0.23.1: - resolution: - { - integrity: sha512-oxl5h2DkFW83hT4DAUJorpah8ou4yvmweUzLJmmr6YV2cezduCdlil1AvU/a/xSsAFo4WUcNA4GoV5Bvq6JffA==, - } + resolution: {integrity: sha512-oxl5h2DkFW83hT4DAUJorpah8ou4yvmweUzLJmmr6YV2cezduCdlil1AvU/a/xSsAFo4WUcNA4GoV5Bvq6JffA==} hermes-parser@0.25.1: - resolution: - { - integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==, - } + resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} hmac-drbg@1.0.1: - resolution: - { - integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==, - } + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} hoist-non-react-statics@3.3.2: - resolution: - { - integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==, - } + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} hosted-git-info@2.8.9: - resolution: - { - integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==, - } + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} hosted-git-info@7.0.2: - resolution: - { - integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==, - } - engines: { node: ^16.14.0 || >=18.0.0 } + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} + engines: {node: ^16.14.0 || >=18.0.0} html-encoding-sniffer@3.0.0: - resolution: - { - integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} html-escaper@2.0.2: - resolution: - { - integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==, - } + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} http-errors@2.0.0: - resolution: - { - integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} http-proxy-agent@5.0.0: - resolution: - { - integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==, - } - engines: { node: ">= 6" } + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} https-proxy-agent@5.0.1: - resolution: - { - integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==, - } - engines: { node: ">= 6" } + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} human-id@4.1.1: - resolution: - { - integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==, - } + resolution: {integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==} hasBin: true human-signals@2.1.0: - resolution: - { - integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==, - } - engines: { node: ">=10.17.0" } + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} humanize-ms@1.2.1: - resolution: - { - integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==, - } + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} iconv-lite@0.6.3: - resolution: - { - integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} ieee754@1.2.1: - resolution: - { - integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, - } + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} ignore@5.3.2: - resolution: - { - integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==, - } - engines: { node: ">= 4" } + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} image-size@1.2.1: - resolution: - { - integrity: sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==, - } - engines: { node: ">=16.x" } + resolution: {integrity: sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==} + engines: {node: '>=16.x'} hasBin: true import-fresh@2.0.0: - resolution: - { - integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} + engines: {node: '>=4'} import-fresh@3.3.1: - resolution: - { - integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} import-local@3.2.0: - resolution: - { - integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} hasBin: true imurmurhash@0.1.4: - resolution: - { - integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, - } - engines: { node: ">=0.8.19" } + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} indent-string@4.0.0: - resolution: - { - integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} inflight@1.0.6: - resolution: - { - integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, - } + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. inherits@2.0.4: - resolution: - { - integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, - } + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} ini@1.3.8: - resolution: - { - integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==, - } + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} 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'} invariant@2.2.4: - resolution: - { - integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==, - } + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} ipaddr.js@1.9.1: - resolution: - { - integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==, - } - engines: { node: ">= 0.10" } + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} is-arguments@1.2.0: - resolution: - { - integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} + 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.2.1: - resolution: - { - integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, - } + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} is-arrayish@0.3.2: - resolution: - { - integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==, - } + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} 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-builtin-module@3.2.1: - resolution: - { - integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} 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-directory@0.3.1: - resolution: - { - integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} + engines: {node: '>=0.10.0'} is-docker@2.2.1: - resolution: - { - integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} hasBin: true 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-fullwidth-code-point@3.0.0: - resolution: - { - integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} is-generator-fn@2.1.0: - resolution: - { - integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} is-generator-function@1.1.0: - resolution: - { - integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + 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-plain-obj@2.1.0: - resolution: - { - integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} is-plain-obj@4.1.0: - resolution: - { - integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} is-plain-object@2.0.4: - resolution: - { - integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} is-plain-object@3.0.1: - resolution: - { - integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==} + engines: {node: '>=0.10.0'} is-potential-custom-element-name@1.0.1: - resolution: - { - integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==, - } + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} is-promise@4.0.0: - resolution: - { - integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==, - } + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} 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-stream@2.0.1: - resolution: - { - integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} is-string@1.1.1: - resolution: - { - integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} is-subdir@1.2.0: - resolution: - { - integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=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'} is-windows@1.0.2: - resolution: - { - integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} is-wsl@2.2.0: - resolution: - { - integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} 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==} isexe@3.1.1: - resolution: - { - integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==, - } - engines: { node: ">=16" } + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} isobject@3.0.1: - resolution: - { - integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} isomorphic-ws@4.0.1: - resolution: - { - integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==, - } + resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} peerDependencies: - ws: "*" + ws: '*' istanbul-lib-coverage@3.2.2: - resolution: - { - integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} istanbul-lib-instrument@5.2.1: - resolution: - { - integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} istanbul-lib-instrument@6.0.3: - resolution: - { - integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + engines: {node: '>=10'} istanbul-lib-report@3.0.1: - resolution: - { - integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} istanbul-lib-source-maps@4.0.1: - resolution: - { - integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} istanbul-reports@3.2.0: - resolution: - { - integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} + engines: {node: '>=8'} 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'} jackspeak@3.4.3: - resolution: - { - integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==, - } + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} jackspeak@4.1.1: - resolution: - { - integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==, - } - engines: { node: 20 || >=22 } + resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} + engines: {node: 20 || >=22} jest-changed-files@29.7.0: - resolution: - { - integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-circus@29.7.0: - resolution: - { - integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-cli@29.7.0: - resolution: - { - integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -9333,47 +6145,36 @@ packages: optional: true jest-config@29.7.0: - resolution: - { - integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - "@types/node": "*" - ts-node: ">=9.0.0" + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' peerDependenciesMeta: - "@types/node": + '@types/node': optional: true ts-node: optional: true jest-diff@29.7.0: - resolution: - { - integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-diff@30.1.2: + resolution: {integrity: sha512-4+prq+9J61mOVXCa4Qp8ZjavdxzrWQXrI80GNxP8f4tkI2syPuPrJgdRPZRrfUTRvIoUwcmNLbqEJy9W800+NQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-docblock@29.7.0: - resolution: - { - integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-each@29.7.0: - resolution: - { - integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-environment-jsdom@29.7.0: - resolution: - { - integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: canvas: ^2.5.0 peerDependenciesMeta: @@ -9381,142 +6182,105 @@ packages: optional: true jest-environment-node@29.7.0: - resolution: - { - integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-get-type@29.6.3: - resolution: - { - integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-haste-map@29.7.0: - resolution: - { - integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-leak-detector@29.7.0: - resolution: - { - integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-matcher-utils@29.7.0: - resolution: - { - integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-matcher-utils@30.1.2: + resolution: {integrity: sha512-7ai16hy4rSbDjvPTuUhuV8nyPBd6EX34HkBsBcBX2lENCuAQ0qKCPb/+lt8OSWUa9WWmGYLy41PrEzkwRwoGZQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-message-util@29.7.0: - resolution: - { - integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@30.1.0: + resolution: {integrity: sha512-HizKDGG98cYkWmaLUHChq4iN+oCENohQLb7Z5guBPumYs+/etonmNFlg1Ps6yN9LTPyZn+M+b/9BbnHx3WTMDg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-mock@29.7.0: - resolution: - { - integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-mock@30.0.5: + resolution: {integrity: sha512-Od7TyasAAQX/6S+QCbN6vZoWOMwlTtzzGuxJku1GhGanAjz9y+QsQkpScDmETvdc9aSXyJ/Op4rhpMYBWW91wQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-pnp-resolver@1.2.3: - resolution: - { - integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} peerDependencies: - jest-resolve: "*" + jest-resolve: '*' peerDependenciesMeta: jest-resolve: optional: true jest-regex-util@29.6.3: - resolution: - { - integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-regex-util@30.0.1: + resolution: {integrity: sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-resolve-dependencies@29.7.0: - resolution: - { - integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-resolve@29.7.0: - resolution: - { - integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-runner@29.7.0: - resolution: - { - integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-runtime@29.7.0: - resolution: - { - integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-snapshot@29.7.0: - resolution: - { - integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-util@29.7.0: - resolution: - { - integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@30.0.5: + resolution: {integrity: sha512-pvyPWssDZR0FlfMxCBoc0tvM8iUEskaRFALUtGQYzVEAqisAztmy+R8LnU14KT4XA0H/a5HMVTXat1jLne010g==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-validate@29.7.0: - resolution: - { - integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-watcher@29.7.0: - resolution: - { - integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-worker@29.7.0: - resolution: - { - integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest@29.7.0: - resolution: - { - integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -9525,90 +6289,58 @@ packages: optional: true jimp-compact@0.16.1: - resolution: - { - integrity: sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==, - } + resolution: {integrity: sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==} 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.5.1: + resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} hasBin: true jju@1.4.0: - resolution: - { - integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==, - } + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} jose@4.15.9: - resolution: - { - integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==, - } + resolution: {integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==} jose@5.10.0: - resolution: - { - integrity: sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==, - } + resolution: {integrity: sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==} + + jose@6.1.0: + 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@3.14.1: - resolution: - { - integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==, - } + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true js-yaml@4.1.0: - resolution: - { - integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, - } + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true jsc-android@250231.0.0: - resolution: - { - integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==, - } + resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} jsc-safe-url@0.2.4: - resolution: - { - integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==, - } + resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} jscodeshift@0.14.0: - resolution: - { - integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==, - } + resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} hasBin: true peerDependencies: - "@babel/preset-env": ^7.1.6 + '@babel/preset-env': ^7.1.6 jsdom@20.0.3: - resolution: - { - integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} + engines: {node: '>=14'} peerDependencies: canvas: ^2.5.0 peerDependenciesMeta: @@ -9616,900 +6348,551 @@ packages: optional: true jsesc@0.5.0: - resolution: - { - integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==, - } + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true jsesc@3.0.2: - resolution: - { - integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} hasBin: true jsesc@3.1.0: - resolution: - { - integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} hasBin: true json-buffer@3.0.1: - resolution: - { - integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==, - } + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} json-parse-better-errors@1.0.2: - resolution: - { - integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==, - } + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} json-parse-even-better-errors@2.3.1: - resolution: - { - integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, - } + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} json-schema-traverse@0.4.1: - resolution: - { - integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, - } + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 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 json5@2.2.3: - resolution: - { - integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} hasBin: true jsonfile@4.0.0: - resolution: - { - integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==, - } + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} 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==} kind-of@6.0.3: - resolution: - { - integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} kleur@3.0.3: - resolution: - { - integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} kleur@4.1.5: - resolution: - { - integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} lan-network@0.1.7: - resolution: - { - integrity: sha512-mnIlAEMu4OyEvUNdzco9xpuB9YVcPkQec+QsgycBCtPZvEqWPCDPfbAE4OJMdBBWpZWtpCn1xw9jJYlwjWI5zQ==, - } + resolution: {integrity: sha512-mnIlAEMu4OyEvUNdzco9xpuB9YVcPkQec+QsgycBCtPZvEqWPCDPfbAE4OJMdBBWpZWtpCn1xw9jJYlwjWI5zQ==} hasBin: true 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'} leven@3.1.0: - resolution: - { - integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} 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'} libsodium-sumo@0.7.15: - resolution: - { - integrity: sha512-5tPmqPmq8T8Nikpm1Nqj0hBHvsLFCXvdhBFV7SGOitQPZAA6jso8XoL0r4L7vmfKXr486fiQInvErHtEvizFMw==, - } + resolution: {integrity: sha512-5tPmqPmq8T8Nikpm1Nqj0hBHvsLFCXvdhBFV7SGOitQPZAA6jso8XoL0r4L7vmfKXr486fiQInvErHtEvizFMw==} libsodium-wrappers-sumo@0.7.15: - resolution: - { - integrity: sha512-aSWY8wKDZh5TC7rMvEdTHoyppVq/1dTSAeAR7H6pzd6QRT3vQWcT5pGwCotLcpPEOLXX6VvqihSPkpEhYAjANA==, - } + resolution: {integrity: sha512-aSWY8wKDZh5TC7rMvEdTHoyppVq/1dTSAeAR7H6pzd6QRT3vQWcT5pGwCotLcpPEOLXX6VvqihSPkpEhYAjANA==} lighthouse-logger@1.4.2: - resolution: - { - integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==, - } + resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} lightningcss-darwin-arm64@1.27.0: - resolution: - { - integrity: sha512-Gl/lqIXY+d+ySmMbgDf0pgaWSqrWYxVHoc88q+Vhf2YNzZ8DwoRzGt5NZDVqqIW5ScpSnmmjcgXP87Dn2ylSSQ==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-Gl/lqIXY+d+ySmMbgDf0pgaWSqrWYxVHoc88q+Vhf2YNzZ8DwoRzGt5NZDVqqIW5ScpSnmmjcgXP87Dn2ylSSQ==} + engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] lightningcss-darwin-x64@1.27.0: - resolution: - { - integrity: sha512-0+mZa54IlcNAoQS9E0+niovhyjjQWEMrwW0p2sSdLRhLDc8LMQ/b67z7+B5q4VmjYCMSfnFi3djAAQFIDuj/Tg==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-0+mZa54IlcNAoQS9E0+niovhyjjQWEMrwW0p2sSdLRhLDc8LMQ/b67z7+B5q4VmjYCMSfnFi3djAAQFIDuj/Tg==} + engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] lightningcss-freebsd-x64@1.27.0: - resolution: - { - integrity: sha512-n1sEf85fePoU2aDN2PzYjoI8gbBqnmLGEhKq7q0DKLj0UTVmOTwDC7PtLcy/zFxzASTSBlVQYJUhwIStQMIpRA==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-n1sEf85fePoU2aDN2PzYjoI8gbBqnmLGEhKq7q0DKLj0UTVmOTwDC7PtLcy/zFxzASTSBlVQYJUhwIStQMIpRA==} + engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] lightningcss-linux-arm-gnueabihf@1.27.0: - resolution: - { - integrity: sha512-MUMRmtdRkOkd5z3h986HOuNBD1c2lq2BSQA1Jg88d9I7bmPGx08bwGcnB75dvr17CwxjxD6XPi3Qh8ArmKFqCA==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-MUMRmtdRkOkd5z3h986HOuNBD1c2lq2BSQA1Jg88d9I7bmPGx08bwGcnB75dvr17CwxjxD6XPi3Qh8ArmKFqCA==} + engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] lightningcss-linux-arm64-gnu@1.27.0: - resolution: - { - integrity: sha512-cPsxo1QEWq2sfKkSq2Bq5feQDHdUEwgtA9KaB27J5AX22+l4l0ptgjMZZtYtUnteBofjee+0oW1wQ1guv04a7A==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-cPsxo1QEWq2sfKkSq2Bq5feQDHdUEwgtA9KaB27J5AX22+l4l0ptgjMZZtYtUnteBofjee+0oW1wQ1guv04a7A==} + engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] lightningcss-linux-arm64-musl@1.27.0: - resolution: - { - integrity: sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg==} + engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] lightningcss-linux-x64-gnu@1.27.0: - resolution: - { - integrity: sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A==} + engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] lightningcss-linux-x64-musl@1.27.0: - resolution: - { - integrity: sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA==} + engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] lightningcss-win32-arm64-msvc@1.27.0: - resolution: - { - integrity: sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ==} + engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] lightningcss-win32-x64-msvc@1.27.0: - resolution: - { - integrity: sha512-/OJLj94Zm/waZShL8nB5jsNj3CfNATLCTyFxZyouilfTmSoLDX7VlVAmhPHoZWVFp4vdmoiEbPEYC8HID3m6yw==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-/OJLj94Zm/waZShL8nB5jsNj3CfNATLCTyFxZyouilfTmSoLDX7VlVAmhPHoZWVFp4vdmoiEbPEYC8HID3m6yw==} + engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] lightningcss@1.27.0: - resolution: - { - integrity: sha512-8f7aNmS1+etYSLHht0fQApPc2kNO8qGRutifN5rVIc6Xo6ABsEbqOr758UwI7ALVbTt4x1fllKt0PYgzD9S3yQ==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-8f7aNmS1+etYSLHht0fQApPc2kNO8qGRutifN5rVIc6Xo6ABsEbqOr758UwI7ALVbTt4x1fllKt0PYgzD9S3yQ==} + engines: {node: '>= 12.0.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==} load-tsconfig@0.2.5: - resolution: - { - integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} locate-path@3.0.0: - resolution: - { - integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} locate-path@5.0.0: - resolution: - { - integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} 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.debounce@4.0.8: - resolution: - { - integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==, - } + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} lodash.memoize@4.1.2: - resolution: - { - integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==, - } + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} lodash.merge@4.6.2: - resolution: - { - integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, - } + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} lodash.sortby@4.7.0: - resolution: - { - integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==, - } + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} lodash.startcase@4.4.0: - resolution: - { - integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==, - } + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} lodash.throttle@4.1.1: - resolution: - { - integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==, - } + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} lodash@4.17.21: - resolution: - { - integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, - } + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} log-symbols@2.2.0: - resolution: - { - integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} + engines: {node: '>=4'} long@4.0.0: - resolution: - { - integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==, - } + resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} long@5.3.2: - resolution: - { - integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==, - } + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} 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@10.4.3: - resolution: - { - integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, - } + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} lru-cache@11.1.0: - resolution: - { - integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==, - } - engines: { node: 20 || >=22 } + resolution: {integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==} + engines: {node: 20 || >=22} lru-cache@5.1.1: - resolution: - { - integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, - } + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} lz-string@1.5.0: - resolution: - { - integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==, - } + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true make-dir@2.1.0: - resolution: - { - integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} make-dir@4.0.0: - resolution: - { - integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} make-error@1.3.6: - resolution: - { - integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==, - } + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} makeerror@1.0.12: - resolution: - { - integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==, - } + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} marky@1.3.0: - resolution: - { - integrity: sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==, - } + resolution: {integrity: sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==} 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'} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} media-typer@1.1.0: - resolution: - { - integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + engines: {node: '>= 0.8'} memoize-one@5.2.1: - resolution: - { - integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==, - } + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} merge-descriptors@2.0.0: - resolution: - { - integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} + engines: {node: '>=18'} merge-options@3.0.4: - resolution: - { - integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} + engines: {node: '>=10'} merge-stream@2.0.0: - resolution: - { - integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, - } + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} merge2@1.4.1: - resolution: - { - integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, - } - engines: { node: ">= 8" } + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} methods@1.1.2: - resolution: - { - integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} metro-babel-transformer@0.81.5: - resolution: - { - integrity: sha512-oKCQuajU5srm+ZdDcFg86pG/U8hkSjBlkyFjz380SZ4TTIiI5F+OQB830i53D8hmqmcosa4wR/pnKv8y4Q3dLw==, - } - engines: { node: ">=18.18" } + resolution: {integrity: sha512-oKCQuajU5srm+ZdDcFg86pG/U8hkSjBlkyFjz380SZ4TTIiI5F+OQB830i53D8hmqmcosa4wR/pnKv8y4Q3dLw==} + engines: {node: '>=18.18'} metro-cache-key@0.81.5: - resolution: - { - integrity: sha512-lGWnGVm1UwO8faRZ+LXQUesZSmP1LOg14OVR+KNPBip8kbMECbQJ8c10nGesw28uQT7AE0lwQThZPXlxDyCLKQ==, - } - engines: { node: ">=18.18" } + resolution: {integrity: sha512-lGWnGVm1UwO8faRZ+LXQUesZSmP1LOg14OVR+KNPBip8kbMECbQJ8c10nGesw28uQT7AE0lwQThZPXlxDyCLKQ==} + engines: {node: '>=18.18'} metro-cache@0.81.5: - resolution: - { - integrity: sha512-wOsXuEgmZMZ5DMPoz1pEDerjJ11AuMy9JifH4yNW7NmWS0ghCRqvDxk13LsElzLshey8C+my/tmXauXZ3OqZgg==, - } - engines: { node: ">=18.18" } + resolution: {integrity: sha512-wOsXuEgmZMZ5DMPoz1pEDerjJ11AuMy9JifH4yNW7NmWS0ghCRqvDxk13LsElzLshey8C+my/tmXauXZ3OqZgg==} + engines: {node: '>=18.18'} metro-config@0.81.5: - resolution: - { - integrity: sha512-oDRAzUvj6RNRxratFdcVAqtAsg+T3qcKrGdqGZFUdwzlFJdHGR9Z413sW583uD2ynsuOjA2QB6US8FdwiBdNKg==, - } - engines: { node: ">=18.18" } + resolution: {integrity: sha512-oDRAzUvj6RNRxratFdcVAqtAsg+T3qcKrGdqGZFUdwzlFJdHGR9Z413sW583uD2ynsuOjA2QB6US8FdwiBdNKg==} + engines: {node: '>=18.18'} metro-core@0.81.5: - resolution: - { - integrity: sha512-+2R0c8ByfV2N7CH5wpdIajCWa8escUFd8TukfoXyBq/vb6yTCsznoA25FhNXJ+MC/cz1L447Zj3vdUfCXIZBwg==, - } - engines: { node: ">=18.18" } + resolution: {integrity: sha512-+2R0c8ByfV2N7CH5wpdIajCWa8escUFd8TukfoXyBq/vb6yTCsznoA25FhNXJ+MC/cz1L447Zj3vdUfCXIZBwg==} + engines: {node: '>=18.18'} metro-file-map@0.81.5: - resolution: - { - integrity: sha512-mW1PKyiO3qZvjeeVjj1brhkmIotObA3/9jdbY1fQQYvEWM6Ml7bN/oJCRDGn2+bJRlG+J8pwyJ+DgdrM4BsKyg==, - } - engines: { node: ">=18.18" } + resolution: {integrity: sha512-mW1PKyiO3qZvjeeVjj1brhkmIotObA3/9jdbY1fQQYvEWM6Ml7bN/oJCRDGn2+bJRlG+J8pwyJ+DgdrM4BsKyg==} + engines: {node: '>=18.18'} metro-minify-terser@0.81.5: - resolution: - { - integrity: sha512-/mn4AxjANnsSS3/Bb+zA1G5yIS5xygbbz/OuPaJYs0CPcZCaWt66D+65j4Ft/nJkffUxcwE9mk4ubpkl3rjgtw==, - } - engines: { node: ">=18.18" } + resolution: {integrity: sha512-/mn4AxjANnsSS3/Bb+zA1G5yIS5xygbbz/OuPaJYs0CPcZCaWt66D+65j4Ft/nJkffUxcwE9mk4ubpkl3rjgtw==} + engines: {node: '>=18.18'} metro-resolver@0.81.5: - resolution: - { - integrity: sha512-6BX8Nq3g3go3FxcyXkVbWe7IgctjDTk6D9flq+P201DfHHQ28J+DWFpVelFcrNTn4tIfbP/Bw7u/0g2BGmeXfQ==, - } - engines: { node: ">=18.18" } + resolution: {integrity: sha512-6BX8Nq3g3go3FxcyXkVbWe7IgctjDTk6D9flq+P201DfHHQ28J+DWFpVelFcrNTn4tIfbP/Bw7u/0g2BGmeXfQ==} + engines: {node: '>=18.18'} metro-runtime@0.81.5: - resolution: - { - integrity: sha512-M/Gf71ictUKP9+77dV/y8XlAWg7xl76uhU7ggYFUwEdOHHWPG6gLBr1iiK0BmTjPFH8yRo/xyqMli4s3oGorPQ==, - } - engines: { node: ">=18.18" } + resolution: {integrity: sha512-M/Gf71ictUKP9+77dV/y8XlAWg7xl76uhU7ggYFUwEdOHHWPG6gLBr1iiK0BmTjPFH8yRo/xyqMli4s3oGorPQ==} + engines: {node: '>=18.18'} metro-source-map@0.81.5: - resolution: - { - integrity: sha512-Jz+CjvCKLNbJZYJTBeN3Kq9kIJf6b61MoLBdaOQZJ5Ajhw6Pf95Nn21XwA8BwfUYgajsi6IXsp/dTZsYJbN00Q==, - } - engines: { node: ">=18.18" } + resolution: {integrity: sha512-Jz+CjvCKLNbJZYJTBeN3Kq9kIJf6b61MoLBdaOQZJ5Ajhw6Pf95Nn21XwA8BwfUYgajsi6IXsp/dTZsYJbN00Q==} + engines: {node: '>=18.18'} metro-symbolicate@0.81.5: - resolution: - { - integrity: sha512-X3HV3n3D6FuTE11UWFICqHbFMdTavfO48nXsSpnNGFkUZBexffu0Xd+fYKp+DJLNaQr3S+lAs8q9CgtDTlRRuA==, - } - engines: { node: ">=18.18" } + resolution: {integrity: sha512-X3HV3n3D6FuTE11UWFICqHbFMdTavfO48nXsSpnNGFkUZBexffu0Xd+fYKp+DJLNaQr3S+lAs8q9CgtDTlRRuA==} + engines: {node: '>=18.18'} hasBin: true metro-transform-plugins@0.81.5: - resolution: - { - integrity: sha512-MmHhVx/1dJC94FN7m3oHgv5uOjKH8EX8pBeu1pnPMxbJrx6ZuIejO0k84zTSaQTZ8RxX1wqwzWBpXAWPjEX8mA==, - } - engines: { node: ">=18.18" } + resolution: {integrity: sha512-MmHhVx/1dJC94FN7m3oHgv5uOjKH8EX8pBeu1pnPMxbJrx6ZuIejO0k84zTSaQTZ8RxX1wqwzWBpXAWPjEX8mA==} + engines: {node: '>=18.18'} metro-transform-worker@0.81.5: - resolution: - { - integrity: sha512-lUFyWVHa7lZFRSLJEv+m4jH8WrR5gU7VIjUlg4XmxQfV8ngY4V10ARKynLhMYPeQGl7Qvf+Ayg0eCZ272YZ4Mg==, - } - engines: { node: ">=18.18" } + resolution: {integrity: sha512-lUFyWVHa7lZFRSLJEv+m4jH8WrR5gU7VIjUlg4XmxQfV8ngY4V10ARKynLhMYPeQGl7Qvf+Ayg0eCZ272YZ4Mg==} + engines: {node: '>=18.18'} metro@0.81.5: - resolution: - { - integrity: sha512-YpFF0DDDpDVygeca2mAn7K0+us+XKmiGk4rIYMz/CRdjFoCGqAei/IQSpV0UrGfQbToSugpMQeQJveaWSH88Hg==, - } - engines: { node: ">=18.18" } + resolution: {integrity: sha512-YpFF0DDDpDVygeca2mAn7K0+us+XKmiGk4rIYMz/CRdjFoCGqAei/IQSpV0UrGfQbToSugpMQeQJveaWSH88Hg==} + engines: {node: '>=18.18'} hasBin: true micromatch@4.0.8: - resolution: - { - integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==, - } - engines: { node: ">=8.6" } + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} mime-db@1.52.0: - resolution: - { - integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} mime-db@1.54.0: - resolution: - { - integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} mime-types@2.1.35: - resolution: - { - integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} mime-types@3.0.1: - resolution: - { - integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} + engines: {node: '>= 0.6'} mime@1.6.0: - resolution: - { - integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} hasBin: true mime@3.0.0: - resolution: - { - integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==, - } - engines: { node: ">=10.0.0" } + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} hasBin: true mimic-fn@1.2.0: - resolution: - { - integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} + engines: {node: '>=4'} mimic-fn@2.1.0: - resolution: - { - integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} min-indent@1.0.1: - resolution: - { - integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} miniflare@4.20250829.0: - resolution: - { - integrity: sha512-V1DLPnOXjm0DtfU9K0ftrxF+G7LkQ3nDKtXGdU8+Vf+dOqdGM+3ZHZOcDC5XPOsDnI280HBd5xcos/ghtGB7cg==, - } - engines: { node: ">=18.0.0" } + resolution: {integrity: sha512-V1DLPnOXjm0DtfU9K0ftrxF+G7LkQ3nDKtXGdU8+Vf+dOqdGM+3ZHZOcDC5XPOsDnI280HBd5xcos/ghtGB7cg==} + engines: {node: '>=18.0.0'} hasBin: true minimalistic-assert@1.0.1: - resolution: - { - integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==, - } + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} minimalistic-crypto-utils@1.0.1: - resolution: - { - integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==, - } + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} minimatch@10.0.3: - resolution: - { - integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==, - } - engines: { node: 20 || >=22 } + resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} + engines: {node: 20 || >=22} minimatch@3.1.2: - resolution: - { - integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, - } + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} minimatch@8.0.4: - resolution: - { - integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==, - } - engines: { node: ">=16 || 14 >=14.17" } + resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} + engines: {node: '>=16 || 14 >=14.17'} 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@4.2.8: - resolution: - { - integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} + engines: {node: '>=8'} 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'} minizlib@3.0.2: - resolution: - { - integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==, - } - engines: { node: ">= 18" } + resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + engines: {node: '>= 18'} mkdirp@0.5.6: - resolution: - { - integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==, - } + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true mkdirp@1.0.4: - resolution: - { - integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} hasBin: true mkdirp@3.0.1: - resolution: - { - integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} hasBin: true mnemonist@0.38.3: - resolution: - { - integrity: sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==, - } + resolution: {integrity: sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==} mri@1.2.0: - resolution: - { - integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} ms@2.0.0: - resolution: - { - integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==, - } + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} ms@2.1.2: - resolution: - { - integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, - } + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 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.3: - resolution: - { - integrity: sha512-uTp172LLXSxuSYHv/kou+f6KW3SMppU9ivthaVTXian9sOt3XM/zHYHpRZiLgQoxeWfYUnslNWQHF1+G71xcow==, - } - engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 } + resolution: {integrity: sha512-uTp172LLXSxuSYHv/kou+f6KW3SMppU9ivthaVTXian9sOt3XM/zHYHpRZiLgQoxeWfYUnslNWQHF1+G71xcow==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} hasBin: true natural-compare@1.4.0: - resolution: - { - integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, - } + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} negotiator@0.6.3: - resolution: - { - integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} negotiator@0.6.4: - resolution: - { - integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} negotiator@1.0.0: - resolution: - { - integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} neo-async@2.6.2: - resolution: - { - integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==, - } + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} nested-error-stacks@2.0.1: - resolution: - { - integrity: sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==, - } + resolution: {integrity: sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==} + + next-auth@4.24.11: + resolution: {integrity: sha512-pCFXzIDQX7xmHFs4KVH4luCjaCbuPRtZ9oBUjUhOk84mZ9WVPf94n87TxYI4rSRf9HmfHEF8Yep3JrYDVOo3Cw==} + peerDependencies: + '@auth/core': 0.34.2 + next: ^12.2.5 || ^13 || ^14 || ^15 + nodemailer: ^6.6.5 + react: ^17.0.2 || ^18 || ^19 + react-dom: ^17.0.2 || ^18 || ^19 + peerDependenciesMeta: + '@auth/core': + optional: true + nodemailer: + optional: true next@14.2.31: - resolution: - { - integrity: sha512-Wyw1m4t8PhqG+or5a1U/Deb888YApC4rAez9bGhHkTsfwAy4SWKVro0GhEx4sox1856IbLhvhce2hAA6o8vkog==, - } - engines: { node: ">=18.17.0" } + resolution: {integrity: sha512-Wyw1m4t8PhqG+or5a1U/Deb888YApC4rAez9bGhHkTsfwAy4SWKVro0GhEx4sox1856IbLhvhce2hAA6o8vkog==} + engines: {node: '>=18.17.0'} hasBin: true peerDependencies: - "@opentelemetry/api": ^1.1.0 - "@playwright/test": ^1.41.2 + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 react: ^18.2.0 react-dom: ^18.2.0 sass: ^1.3.0 peerDependenciesMeta: - "@opentelemetry/api": + '@opentelemetry/api': optional: true - "@playwright/test": + '@playwright/test': optional: true sass: optional: true + node-cache@5.1.2: + resolution: {integrity: sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==} + engines: {node: '>= 8.0.0'} + node-dir@0.1.17: - resolution: - { - integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==, - } - engines: { node: ">= 0.10.5" } + resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} + engines: {node: '>= 0.10.5'} node-domexception@1.0.0: - resolution: - { - integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==, - } - engines: { node: ">=10.5.0" } + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} deprecated: Use your platform's native DOMException instead + node-fetch-native@1.6.7: + resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} + node-fetch@2.7.0: - resolution: - { - integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==, - } - engines: { node: 4.x || >=6.0.0 } + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} peerDependencies: encoding: ^0.1.0 peerDependenciesMeta: @@ -10517,560 +6900,357 @@ packages: optional: true node-forge@1.3.1: - resolution: - { - integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==, - } - engines: { node: ">= 6.13.0" } + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} node-int64@0.4.0: - resolution: - { - integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==, - } + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-mocks-http@1.17.2: + resolution: {integrity: sha512-HVxSnjNzE9NzoWMx9T9z4MLqwMpLwVvA0oVZ+L+gXskYXEJ6tFn3Kx4LargoB6ie7ZlCLplv7QbWO6N+MysWGA==} + engines: {node: '>=14'} + peerDependencies: + '@types/express': ^4.17.21 || ^5.0.0 + '@types/node': '*' + peerDependenciesMeta: + '@types/express': + optional: true + '@types/node': + optional: true node-releases@2.0.19: - resolution: - { - integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==, - } + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} normalize-package-data@2.5.0: - resolution: - { - integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==, - } + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} 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'} npm-package-arg@11.0.3: - resolution: - { - integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==, - } - engines: { node: ^16.14.0 || >=18.0.0 } + resolution: {integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==} + engines: {node: ^16.14.0 || >=18.0.0} npm-run-path@4.0.1: - resolution: - { - integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} nullthrows@1.1.1: - resolution: - { - integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==, - } + resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} nwsapi@2.2.21: - resolution: - { - integrity: sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==, - } + resolution: {integrity: sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==} + + nypm@0.6.2: + resolution: {integrity: sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==} + engines: {node: ^14.16.0 || >=16.10.0} + hasBin: true + + oauth4webapi@3.8.1: + resolution: {integrity: sha512-olkZDELNycOWQf9LrsELFq8n05LwJgV8UkrS0cburk6FOwf8GvLam+YB+Uj5Qvryee+vwWOfQVeI5Vm0MVg7SA==} + + oauth@0.9.15: + resolution: {integrity: sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==} ob1@0.81.5: - resolution: - { - integrity: sha512-iNpbeXPLmaiT9I5g16gFFFjsF3sGxLpYG2EGP3dfFB4z+l9X60mp/yRzStHhMtuNt8qmf7Ww80nOPQHngHhnIQ==, - } - engines: { node: ">=18.18" } + resolution: {integrity: sha512-iNpbeXPLmaiT9I5g16gFFFjsF3sGxLpYG2EGP3dfFB4z+l9X60mp/yRzStHhMtuNt8qmf7Ww80nOPQHngHhnIQ==} + engines: {node: '>=18.18'} 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@2.2.0: + resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} + engines: {node: '>= 6'} 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-is@1.1.6: - resolution: - { - integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + 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-treeify@1.1.33: - resolution: - { - integrity: sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==, - } - engines: { node: ">= 10" } + resolution: {integrity: sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==} + engines: {node: '>= 10'} 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'} obliterator@1.6.1: - resolution: - { - integrity: sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==, - } + resolution: {integrity: sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==} ohash@2.0.11: - resolution: - { - integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==, - } + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + + oidc-token-hash@5.1.1: + resolution: {integrity: sha512-D7EmwxJV6DsEB6vOFLrBM2OzsVgQzgPWyHlV2OOAVj772n+WTXpudC9e9u5BVKQnYwaD30Ivhi9b+4UeBcGu9g==} + engines: {node: ^10.13.0 || >=12.0.0} on-finished@2.3.0: - resolution: - { - integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} on-finished@2.4.1: - resolution: - { - integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} on-headers@1.1.0: - resolution: - { - integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} + engines: {node: '>= 0.8'} once@1.4.0: - resolution: - { - integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, - } + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} onetime@2.0.1: - resolution: - { - integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} + engines: {node: '>=4'} onetime@5.1.2: - resolution: - { - integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} open@7.4.2: - resolution: - { - integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} + engines: {node: '>=8'} open@8.4.2: - resolution: - { - integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + openid-client@5.7.1: + resolution: {integrity: sha512-jDBPgSVfTnkIh71Hg9pRvtJc6wTwqjRkN88+gCFtYWrlP4Yx2Dsrow8uPi3qLr/aeymPF3o2+dS+wOpglK04ew==} optimism@0.18.1: - resolution: - { - integrity: sha512-mLXNwWPa9dgFyDqkNi54sjDyNJ9/fTI6WGBLgnXku1vdKY/jovHfZT5r+aiVeFFLOz+foPNOm5YJ4mqgld2GBQ==, - } + resolution: {integrity: sha512-mLXNwWPa9dgFyDqkNi54sjDyNJ9/fTI6WGBLgnXku1vdKY/jovHfZT5r+aiVeFFLOz+foPNOm5YJ4mqgld2GBQ==} optionator@0.9.4: - resolution: - { - integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==, - } - engines: { node: ">= 0.8.0" } + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} ora@3.4.0: - resolution: - { - integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==} + engines: {node: '>=6'} outdent@0.5.0: - resolution: - { - integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==, - } + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} 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-filter@2.1.0: - resolution: - { - integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} p-limit@2.3.0: - resolution: - { - integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} 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@3.0.0: - resolution: - { - integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} p-locate@4.1.0: - resolution: - { - integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} 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'} p-map@2.1.0: - resolution: - { - integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} p-try@2.2.0: - resolution: - { - integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} package-json-from-dist@1.0.1: - resolution: - { - integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==, - } + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} package-manager-detector@0.2.11: - resolution: - { - integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==, - } + resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} pako@2.1.0: - resolution: - { - integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==, - } + resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} 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'} parse-json@4.0.0: - resolution: - { - integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} parse-json@5.2.0: - resolution: - { - integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} parse-png@2.1.0: - resolution: - { - integrity: sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==} + engines: {node: '>=10'} parse5@7.3.0: - resolution: - { - integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==, - } + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} parseurl@1.3.3: - resolution: - { - integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} path-exists@3.0.0: - resolution: - { - integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} 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-is-absolute@1.0.1: - resolution: - { - integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} 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@1.11.1: - resolution: - { - integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==, - } - engines: { node: ">=16 || 14 >=14.18" } + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} path-scurry@2.0.0: - resolution: - { - integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==, - } - engines: { node: 20 || >=22 } + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} path-to-regexp@6.3.0: - resolution: - { - integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==, - } + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} path-to-regexp@8.2.0: - resolution: - { - integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==, - } - engines: { node: ">=16" } + resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} + engines: {node: '>=16'} 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==} 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@3.0.1: - resolution: - { - integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==} + engines: {node: '>=10'} 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'} pify@4.0.1: - resolution: - { - integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} 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-dir@3.0.0: - resolution: - { - integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} pkg-dir@4.2.0: - resolution: - { - integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-types@2.3.0: + resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} plist@3.1.0: - resolution: - { - integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==, - } - engines: { node: ">=10.4.0" } + resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==} + engines: {node: '>=10.4.0'} pluralize@8.0.0: - resolution: - { - integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} pngjs@3.4.0: - resolution: - { - integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==, - } - engines: { node: ">=4.0.0" } + resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} + engines: {node: '>=4.0.0'} 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.0.1: - resolution: - { - integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==, - } - engines: { node: ^12 || ^14 || >= 16 } + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.4.21 postcss-load-config@3.1.4: - resolution: - { - integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==, - } - engines: { node: ">= 10" } - peerDependencies: - postcss: ">=8.0.9" - ts-node: ">=9.0.0" + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' peerDependenciesMeta: postcss: optional: true @@ -11078,14 +7258,11 @@ packages: optional: true postcss-load-config@4.0.2: - resolution: - { - integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==, - } - engines: { node: ">= 14" } - peerDependencies: - postcss: ">=8.0.9" - ts-node: ">=9.0.0" + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' peerDependenciesMeta: postcss: optional: true @@ -11093,99 +7270,88 @@ 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.49: - resolution: - { - integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==, - } - engines: { node: ^10 || ^12 || >=14 } + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + engines: {node: ^10 || ^12 || >=14} postcss@8.5.6: - resolution: - { - integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==, - } - engines: { node: ^10 || ^12 || >=14 } + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + + preact-render-to-string@5.2.6: + resolution: {integrity: sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw==} + peerDependencies: + preact: '>=10' + + preact-render-to-string@6.5.11: + resolution: {integrity: sha512-ubnauqoGczeGISiOh6RjX0/cdaF8v/oDXIjO85XALCQjwQP+SB4RDXXtvZ6yTYSjG+PC1QRP2AhPgCEsM2EvUw==} + peerDependencies: + preact: '>=10' + + preact@10.24.3: + resolution: {integrity: sha512-Z2dPnBnMUfyQfSQ+GBdsGa16hz35YmLmtTLhM169uW944hYL6xzTYkJjC07j+Wosz733pMWx0fgON3JNw1jJQA==} + + preact@10.27.2: + resolution: {integrity: sha512-5SYSgFKSyhCbk6SrXyMpqjb5+MQBgfvEKE/OC+PujcY34sOpqtr+0AZQtPYx5IA6VxynQ7rUPCtKzyovpj9Bpg==} 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'} prettier-plugin-packagejson@2.5.19: - resolution: - { - integrity: sha512-Qsqp4+jsZbKMpEGZB1UP1pxeAT8sCzne2IwnKkr+QhUe665EXUo3BAvTf1kAPCqyMv9kg3ZmO0+7eOni/C6Uag==, - } + resolution: {integrity: sha512-Qsqp4+jsZbKMpEGZB1UP1pxeAT8sCzne2IwnKkr+QhUe665EXUo3BAvTf1kAPCqyMv9kg3ZmO0+7eOni/C6Uag==} peerDependencies: - prettier: ">= 1.16.0" + prettier: '>= 1.16.0' peerDependenciesMeta: prettier: optional: true prettier-plugin-tailwindcss@0.5.14: - resolution: - { - integrity: sha512-Puaz+wPUAhFp8Lo9HuciYKM2Y2XExESjeT+9NQoVFXZsPPnc9VYss2SpxdQ6vbatmt8/4+SN0oe0I1cPDABg9Q==, - } - engines: { node: ">=14.21.3" } - peerDependencies: - "@ianvs/prettier-plugin-sort-imports": "*" - "@prettier/plugin-pug": "*" - "@shopify/prettier-plugin-liquid": "*" - "@trivago/prettier-plugin-sort-imports": "*" - "@zackad/prettier-plugin-twig-melody": "*" + resolution: {integrity: sha512-Puaz+wPUAhFp8Lo9HuciYKM2Y2XExESjeT+9NQoVFXZsPPnc9VYss2SpxdQ6vbatmt8/4+SN0oe0I1cPDABg9Q==} + engines: {node: '>=14.21.3'} + peerDependencies: + '@ianvs/prettier-plugin-sort-imports': '*' + '@prettier/plugin-pug': '*' + '@shopify/prettier-plugin-liquid': '*' + '@trivago/prettier-plugin-sort-imports': '*' + '@zackad/prettier-plugin-twig-melody': '*' prettier: ^3.0 - prettier-plugin-astro: "*" - prettier-plugin-css-order: "*" - prettier-plugin-import-sort: "*" - prettier-plugin-jsdoc: "*" - prettier-plugin-marko: "*" - prettier-plugin-organize-attributes: "*" - prettier-plugin-organize-imports: "*" - prettier-plugin-sort-imports: "*" - prettier-plugin-style-order: "*" - prettier-plugin-svelte: "*" + prettier-plugin-astro: '*' + prettier-plugin-css-order: '*' + prettier-plugin-import-sort: '*' + prettier-plugin-jsdoc: '*' + prettier-plugin-marko: '*' + prettier-plugin-organize-attributes: '*' + prettier-plugin-organize-imports: '*' + prettier-plugin-sort-imports: '*' + prettier-plugin-style-order: '*' + prettier-plugin-svelte: '*' peerDependenciesMeta: - "@ianvs/prettier-plugin-sort-imports": + '@ianvs/prettier-plugin-sort-imports': optional: true - "@prettier/plugin-pug": + '@prettier/plugin-pug': optional: true - "@shopify/prettier-plugin-liquid": + '@shopify/prettier-plugin-liquid': optional: true - "@trivago/prettier-plugin-sort-imports": + '@trivago/prettier-plugin-sort-imports': optional: true - "@zackad/prettier-plugin-twig-melody": + '@zackad/prettier-plugin-twig-melody': optional: true prettier-plugin-astro: optional: true @@ -11209,1534 +7375,916 @@ packages: optional: true prettier@2.8.8: - resolution: - { - integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==, - } - engines: { node: ">=10.13.0" } + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} hasBin: true prettier@3.6.2: - resolution: - { - integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} + engines: {node: '>=14'} hasBin: true pretty-bytes@5.6.0: - resolution: - { - integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} pretty-format@27.5.1: - resolution: - { - integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==, - } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} pretty-format@29.7.0: - resolution: - { - integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + pretty-format@3.8.0: + resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} + + pretty-format@30.0.5: + resolution: {integrity: sha512-D1tKtYvByrBkFLe2wHJl2bwMJIiT8rW+XA+TiataH79/FszLQMrpGEvzUVkzPau7OCO0Qnrhpe87PqtOAIB8Yw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + prisma@6.16.1: + resolution: {integrity: sha512-MFkMU0eaDDKAT4R/By2IA9oQmwLTxokqv2wegAErr9Rf+oIe7W2sYpE/Uxq0H2DliIR7vnV63PkC1bEwUtl98w==} + engines: {node: '>=18.18'} + hasBin: true + peerDependencies: + typescript: '>=5.1.0' + peerDependenciesMeta: + typescript: + optional: true proc-log@4.2.0: - resolution: - { - integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} process@0.11.10: - resolution: - { - integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==, - } - engines: { node: ">= 0.6.0" } + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} progress@2.0.3: - resolution: - { - integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==, - } - engines: { node: ">=0.4.0" } + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} promise@8.3.0: - resolution: - { - integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==, - } + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} prompts@2.4.2: - resolution: - { - integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==, - } - engines: { node: ">= 6" } + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} prop-types@15.8.1: - resolution: - { - integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==, - } + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} protobufjs@6.11.4: - resolution: - { - integrity: sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==, - } + resolution: {integrity: sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==} hasBin: true protobufjs@7.5.4: - resolution: - { - integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==, - } - engines: { node: ">=12.0.0" } + resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==} + engines: {node: '>=12.0.0'} proxy-addr@2.0.7: - resolution: - { - integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==, - } - engines: { node: ">= 0.10" } + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} proxy-from-env@1.1.0: - resolution: - { - integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==, - } + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} psl@1.15.0: - resolution: - { - integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==, - } + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} 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==} qrcode-terminal@0.11.0: - resolution: - { - integrity: sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==, - } + resolution: {integrity: sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==} hasBin: true qs@6.13.0: - resolution: - { - integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==, - } - engines: { node: ">=0.6" } + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} qs@6.14.0: - resolution: - { - integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==, - } - engines: { node: ">=0.6" } + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + engines: {node: '>=0.6'} quansync@0.2.11: - resolution: - { - integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==, - } + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} querystringify@2.2.0: - resolution: - { - integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==, - } + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} queue-microtask@1.2.3: - resolution: - { - integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, - } + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} queue@6.0.2: - resolution: - { - integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==, - } + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} range-parser@1.2.1: - resolution: - { - integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + rate-limiter-flexible@4.0.1: + resolution: {integrity: sha512-2/dGHpDFpeA0+755oUkW+EKyklqLS9lu0go9pDsbhqQjZcxfRyJ6LA4JI0+HAdZ2bemD/oOjUeZQB2lCZqXQfQ==} raw-body@3.0.0: - resolution: - { - integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} + engines: {node: '>= 0.8'} + + rc9@2.1.2: + resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} rc@1.2.8: - resolution: - { - integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==, - } + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true react-devtools-core@5.3.2: - resolution: - { - integrity: sha512-crr9HkVrDiJ0A4zot89oS0Cgv0Oa4OG1Em4jit3P3ZxZSKPMYyMjfwMqgcJna9o625g8oN87rBm8SWWrSTBZxg==, - } + resolution: {integrity: sha512-crr9HkVrDiJ0A4zot89oS0Cgv0Oa4OG1Em4jit3P3ZxZSKPMYyMjfwMqgcJna9o625g8oN87rBm8SWWrSTBZxg==} react-dom@18.3.1: - resolution: - { - integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==, - } + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} peerDependencies: react: ^18.3.1 react-is@16.13.1: - resolution: - { - integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==, - } + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} react-is@17.0.2: - resolution: - { - integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==, - } + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} react-is@18.3.1: - resolution: - { - integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==, - } + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} react-native-edge-to-edge@1.6.0: - resolution: - { - integrity: sha512-2WCNdE3Qd6Fwg9+4BpbATUxCLcouF6YRY7K+J36KJ4l3y+tWN6XCqAC4DuoGblAAbb2sLkhEDp4FOlbOIot2Og==, - } + resolution: {integrity: sha512-2WCNdE3Qd6Fwg9+4BpbATUxCLcouF6YRY7K+J36KJ4l3y+tWN6XCqAC4DuoGblAAbb2sLkhEDp4FOlbOIot2Og==} peerDependencies: - react: "*" - react-native: "*" + react: '*' + react-native: '*' react-native-get-random-values@1.11.0: - resolution: - { - integrity: sha512-4BTbDbRmS7iPdhYLRcz3PGFIpFJBwNZg9g42iwa2P6FOv9vZj/xJc678RZXnLNZzd0qd7Q3CCF6Yd+CU2eoXKQ==, - } + resolution: {integrity: sha512-4BTbDbRmS7iPdhYLRcz3PGFIpFJBwNZg9g42iwa2P6FOv9vZj/xJc678RZXnLNZzd0qd7Q3CCF6Yd+CU2eoXKQ==} peerDependencies: - react-native: ">=0.56" + react-native: '>=0.56' react-native-quick-base64@2.2.1: - resolution: - { - integrity: sha512-rAECaDhq3v+P8IM10cLgUVvt3kPJq3v+Jznp7tQRLXk1LlV/VCepump3am0ObwHlE6EoXblm4cddPJoXAlO+CQ==, - } + resolution: {integrity: sha512-rAECaDhq3v+P8IM10cLgUVvt3kPJq3v+Jznp7tQRLXk1LlV/VCepump3am0ObwHlE6EoXblm4cddPJoXAlO+CQ==} peerDependencies: - react: "*" - react-native: "*" + react: '*' + react-native: '*' react-native-quick-crypto@0.7.17: - resolution: - { - integrity: sha512-cJzp6oA/dM1lujt+Rwtn46Mgcs3w9F/0oQvNz1jcADc/AXktveAOUTzzKrDMxyg6YPziCYnoqMDzHBo6OLSU1g==, - } + resolution: {integrity: sha512-cJzp6oA/dM1lujt+Rwtn46Mgcs3w9F/0oQvNz1jcADc/AXktveAOUTzzKrDMxyg6YPziCYnoqMDzHBo6OLSU1g==} react-native@0.76.7: - resolution: - { - integrity: sha512-GPJcQeO3qUi1MvuhsC2DC6tH8gJQ4uc4JWPORrdeuCGFWE3QLsN8/hiChTEvJREHLfQSV61YPI8gIOtAQ8c37g==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-GPJcQeO3qUi1MvuhsC2DC6tH8gJQ4uc4JWPORrdeuCGFWE3QLsN8/hiChTEvJREHLfQSV61YPI8gIOtAQ8c37g==} + engines: {node: '>=18'} hasBin: true peerDependencies: - "@types/react": ^18.2.47 + '@types/react': ^18.2.47 react: ^18.2.0 peerDependenciesMeta: - "@types/react": + '@types/react': optional: true react-refresh@0.14.2: - resolution: - { - integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} 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": ^18.2.47 + '@types/react': ^18.2.47 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": ^18.2.47 + '@types/react': ^18.2.47 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": ^18.2.47 + '@types/react': ^18.2.47 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@18.3.1: - resolution: - { - integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} read-cache@1.0.0: - resolution: - { - integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==, - } + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} read-pkg-up@7.0.1: - resolution: - { - integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} read-pkg@5.2.0: - resolution: - { - integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} read-yaml-file@1.1.0: - resolution: - { - integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} readable-stream@4.7.0: - resolution: - { - integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 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'} readline@1.3.0: - resolution: - { - integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==, - } + resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} readonly-date@1.0.0: - resolution: - { - integrity: sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==, - } + resolution: {integrity: sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==} recast@0.21.5: - resolution: - { - integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==, - } - engines: { node: ">= 4" } + resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} + engines: {node: '>= 4'} redent@3.0.0: - resolution: - { - integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} 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'} regenerate-unicode-properties@10.2.0: - resolution: - { - integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} + engines: {node: '>=4'} regenerate@1.4.2: - resolution: - { - integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==, - } + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} regenerator-runtime@0.13.11: - resolution: - { - integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==, - } + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} regexp-tree@0.1.27: - resolution: - { - integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==, - } + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true 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'} regexpu-core@6.2.0: - resolution: - { - integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} + engines: {node: '>=4'} regjsgen@0.8.0: - resolution: - { - integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==, - } + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} regjsparser@0.10.0: - resolution: - { - integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==, - } + resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} hasBin: true regjsparser@0.12.0: - resolution: - { - integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==, - } + resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} hasBin: true rehackt@0.1.0: - resolution: - { - integrity: sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw==, - } + resolution: {integrity: sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw==} peerDependencies: - "@types/react": ^18.2.47 - react: "*" + '@types/react': ^18.2.47 + react: '*' peerDependenciesMeta: - "@types/react": + '@types/react': optional: true react: optional: true require-directory@2.1.1: - resolution: - { - integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} require-from-string@2.0.2: - resolution: - { - integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} requireg@0.2.2: - resolution: - { - integrity: sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==, - } - engines: { node: ">= 4.0.0" } + resolution: {integrity: sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==} + engines: {node: '>= 4.0.0'} requires-port@1.0.0: - resolution: - { - integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==, - } + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} resolve-cwd@3.0.0: - resolution: - { - integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} resolve-from@3.0.0: - resolution: - { - integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=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-from@5.0.0: - resolution: - { - integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} resolve-pkg-maps@1.0.0: - resolution: - { - integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==, - } + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} resolve-workspace-root@2.0.0: - resolution: - { - integrity: sha512-IsaBUZETJD5WsI11Wt8PKHwaIe45or6pwNc8yflvLJ4DWtImK9kuLoH5kUva/2Mmx/RdIyr4aONNSa2v9LTJsw==, - } + resolution: {integrity: sha512-IsaBUZETJD5WsI11Wt8PKHwaIe45or6pwNc8yflvLJ4DWtImK9kuLoH5kUva/2Mmx/RdIyr4aONNSa2v9LTJsw==} resolve.exports@2.0.3: - resolution: - { - integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} + engines: {node: '>=10'} resolve@1.19.0: - resolution: - { - integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==, - } + resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} 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@1.7.1: - resolution: - { - integrity: sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==, - } + resolution: {integrity: sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==} resolve@2.0.0-next.5: - resolution: - { - integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==, - } + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} hasBin: true restore-cursor@2.0.0: - resolution: - { - integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} + engines: {node: '>=4'} 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@2.6.3: - resolution: - { - integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==, - } + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true 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 rimraf@5.0.10: - resolution: - { - integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==, - } + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true rollup-plugin-copy@3.5.0: - resolution: - { - integrity: sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==, - } - engines: { node: ">=8.3" } + resolution: {integrity: sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==} + engines: {node: '>=8.3'} rollup@3.29.5: - resolution: - { - integrity: sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==, - } - engines: { node: ">=14.18.0", npm: ">=8.0.0" } + resolution: {integrity: sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true router@2.2.0: - resolution: - { - integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==, - } - engines: { node: ">= 18" } + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} + engines: {node: '>= 18'} 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-buffer@5.2.1: - resolution: - { - integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, - } + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 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'} safer-buffer@2.1.2: - resolution: - { - integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, - } + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} sax@1.4.1: - resolution: - { - integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==, - } + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} saxes@6.0.0: - resolution: - { - integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==, - } - engines: { node: ">=v12.22.7" } + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} scheduler@0.23.2: - resolution: - { - integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==, - } + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} scheduler@0.24.0-canary-efb381bbf-20230505: - resolution: - { - integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==, - } + resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==} selfsigned@2.4.1: - resolution: - { - integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} semver@5.7.2: - resolution: - { - integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==, - } + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true semver@6.3.1: - resolution: - { - integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, - } + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true semver@7.7.2: - resolution: - { - integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} hasBin: true send@0.19.0: - resolution: - { - integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==, - } - engines: { node: ">= 0.8.0" } + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + engines: {node: '>= 0.8.0'} send@0.19.1: - resolution: - { - integrity: sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==, - } - engines: { node: ">= 0.8.0" } + resolution: {integrity: sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==} + engines: {node: '>= 0.8.0'} send@1.2.0: - resolution: - { - integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==, - } - engines: { node: ">= 18" } + resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} + engines: {node: '>= 18'} serialize-error@2.1.0: - resolution: - { - integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} + engines: {node: '>=0.10.0'} serve-static@1.16.2: - resolution: - { - integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==, - } - engines: { node: ">= 0.8.0" } + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + engines: {node: '>= 0.8.0'} serve-static@2.2.0: - resolution: - { - integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==, - } - engines: { node: ">= 18" } + resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} + engines: {node: '>= 18'} 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'} setprototypeof@1.2.0: - resolution: - { - integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==, - } + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} shallow-clone@3.0.1: - resolution: - { - integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} sharp@0.33.5: - resolution: - { - integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + 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'} shell-quote@1.8.3: - resolution: - { - integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} + engines: {node: '>= 0.4'} 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'} signal-exit@3.0.7: - resolution: - { - integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, - } + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} signal-exit@4.1.0: - resolution: - { - integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} simple-plist@1.3.1: - resolution: - { - integrity: sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==, - } + resolution: {integrity: sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==} simple-swizzle@0.2.2: - resolution: - { - integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==, - } + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} sisteransi@1.0.5: - resolution: - { - integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==, - } + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} slash@3.0.0: - resolution: - { - integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} slugify@1.6.6: - resolution: - { - integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==, - } - engines: { node: ">=8.0.0" } + resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} + engines: {node: '>=8.0.0'} sort-object-keys@1.1.3: - resolution: - { - integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==, - } + resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} sort-package-json@3.4.0: - resolution: - { - integrity: sha512-97oFRRMM2/Js4oEA9LJhjyMlde+2ewpZQf53pgue27UkbEXfHJnDzHlUxQ/DWUkzqmp7DFwJp8D+wi/TYeQhpA==, - } - engines: { node: ">=20" } + resolution: {integrity: sha512-97oFRRMM2/Js4oEA9LJhjyMlde+2ewpZQf53pgue27UkbEXfHJnDzHlUxQ/DWUkzqmp7DFwJp8D+wi/TYeQhpA==} + engines: {node: '>=20'} hasBin: true 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'} source-map-support@0.5.13: - resolution: - { - integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==, - } + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} source-map-support@0.5.21: - resolution: - { - integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==, - } + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} source-map@0.5.7: - resolution: - { - integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} source-map@0.6.1: - resolution: - { - integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} source-map@0.8.0-beta.0: - resolution: - { - integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==, - } - engines: { node: ">= 8" } + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} deprecated: The work that was done in this beta branch won't be included in future versions spawndamnit@3.0.1: - resolution: - { - integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==, - } + resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} spdx-correct@3.2.0: - resolution: - { - integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==, - } + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} spdx-exceptions@2.5.0: - resolution: - { - integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==, - } + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} spdx-expression-parse@3.0.1: - resolution: - { - integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==, - } + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} spdx-license-ids@3.0.22: - resolution: - { - integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==, - } + resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==} sprintf-js@1.0.3: - resolution: - { - integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==, - } + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} stable-hash@0.0.5: - resolution: - { - integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==, - } + resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} stack-utils@2.0.6: - resolution: - { - integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} stackframe@1.3.4: - resolution: - { - integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==, - } + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} stacktrace-parser@0.1.11: - resolution: - { - integrity: sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==} + engines: {node: '>=6'} statuses@1.5.0: - resolution: - { - integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} statuses@2.0.1: - resolution: - { - integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} 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'} stoppable@1.1.0: - resolution: - { - integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==, - } - engines: { node: ">=4", npm: ">=6" } + resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} + engines: {node: '>=4', npm: '>=6'} stream-buffers@2.2.0: - resolution: - { - integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==, - } - engines: { node: ">= 0.10.0" } + resolution: {integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==} + engines: {node: '>= 0.10.0'} streamsearch@1.1.0: - resolution: - { - integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==, - } - engines: { node: ">=10.0.0" } + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} string-length@4.0.2: - resolution: - { - integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} string-width@4.2.3: - resolution: - { - integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} string-width@5.1.2: - resolution: - { - integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} string-width@7.2.0: - resolution: - { - integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} 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'} string_decoder@1.3.0: - resolution: - { - integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, - } + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} strip-ansi@5.2.0: - resolution: - { - integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} strip-ansi@6.0.1: - resolution: - { - integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} strip-ansi@7.1.0: - resolution: - { - integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} 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-bom@4.0.0: - resolution: - { - integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} strip-final-newline@2.0.0: - resolution: - { - integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} strip-indent@3.0.0: - resolution: - { - integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} strip-json-comments@2.0.1: - resolution: - { - integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} strip-json-comments@3.1.1: - resolution: - { - integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} strnum@1.1.2: - resolution: - { - integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==, - } + resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==} strnum@2.1.1: - resolution: - { - integrity: sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==, - } + resolution: {integrity: sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==} structured-headers@0.4.1: - resolution: - { - integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==, - } + resolution: {integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==} styled-jsx@5.1.1: - resolution: - { - integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==, - } - engines: { node: ">= 12.0.0" } - peerDependencies: - "@babel/core": "*" - babel-plugin-macros: "*" - react: ">= 16.8.0 || 17.x.x || ^18.0.0-0" + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' peerDependenciesMeta: - "@babel/core": + '@babel/core': optional: true babel-plugin-macros: optional: true stytch@9.1.0: - resolution: - { - integrity: sha512-xEh538ESOg1CjRha7fxiVflli6hDoKATPDwP9j3+XfwsdaAg11B/kwSu9SU8dPVg8WRZTxoPHObWpJkjLY90LA==, - } - engines: { node: ">= 18.0.0" } + resolution: {integrity: sha512-xEh538ESOg1CjRha7fxiVflli6hDoKATPDwP9j3+XfwsdaAg11B/kwSu9SU8dPVg8WRZTxoPHObWpJkjLY90LA==} + engines: {node: '>= 18.0.0'} 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@10.2.0: - resolution: - { - integrity: sha512-5eG9FQjEjDbAlI5+kdpdyPIBMRH4GfTVDGREVupaZHmVoppknhM29b/S9BkQz7cathp85BVgRi/As3Siln7e0Q==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-5eG9FQjEjDbAlI5+kdpdyPIBMRH4GfTVDGREVupaZHmVoppknhM29b/S9BkQz7cathp85BVgRi/As3Siln7e0Q==} + engines: {node: '>=18'} supports-color@5.5.0: - resolution: - { - integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} 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-color@8.1.1: - resolution: - { - integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} supports-hyperlinks@2.3.0: - resolution: - { - integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + 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'} symbol-observable@2.0.3: - resolution: - { - integrity: sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==, - } - engines: { node: ">=0.10" } + resolution: {integrity: sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==} + engines: {node: '>=0.10'} symbol-observable@4.0.0: - resolution: - { - integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==, - } - engines: { node: ">=0.10" } + resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} + engines: {node: '>=0.10'} symbol-tree@3.2.4: - resolution: - { - integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==, - } + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} synckit@0.11.11: - resolution: - { - integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==, - } - engines: { node: ^14.18.0 || >=16.0.0 } + resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} + engines: {node: ^14.18.0 || >=16.0.0} tailwind-merge@2.6.0: - resolution: - { - integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==, - } + resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==} 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.17: - resolution: - { - integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==, - } - engines: { node: ">=14.0.0" } + resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==} + engines: {node: '>=14.0.0'} hasBin: true tar@7.4.3: - resolution: - { - integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} temp-dir@2.0.0: - resolution: - { - integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} + engines: {node: '>=8'} temp@0.8.4: - resolution: - { - integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==, - } - engines: { node: ">=6.0.0" } + resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} + engines: {node: '>=6.0.0'} term-size@2.2.1: - resolution: - { - integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} terminal-link@2.1.1: - resolution: - { - integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} terser@5.16.9: - resolution: - { - integrity: sha512-HPa/FdTB9XGI2H1/keLFZHxl6WNvAI4YalHGtDQTlMnJcoqSab1UwL4l1hGEhs6/GmLHBZIg/YgB++jcbzoOEg==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-HPa/FdTB9XGI2H1/keLFZHxl6WNvAI4YalHGtDQTlMnJcoqSab1UwL4l1hGEhs6/GmLHBZIg/YgB++jcbzoOEg==} + engines: {node: '>=10'} hasBin: true terser@5.43.1: - resolution: - { - integrity: sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==} + engines: {node: '>=10'} hasBin: true test-exclude@6.0.0: - resolution: - { - integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} text-encoding@0.7.0: - resolution: - { - integrity: sha512-oJQ3f1hrOnbRLOcwKz0Liq2IcrvDeZRHXhd9RgLrsT+DjWY/nty1Hi7v3dtkaEYbPYe0mUoOfzRrMwfXXwgPUA==, - } + resolution: {integrity: sha512-oJQ3f1hrOnbRLOcwKz0Liq2IcrvDeZRHXhd9RgLrsT+DjWY/nty1Hi7v3dtkaEYbPYe0mUoOfzRrMwfXXwgPUA==} deprecated: no longer maintained 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==} throat@5.0.0: - resolution: - { - integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==, - } + resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} + + tinyexec@1.0.1: + resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} tinyglobby@0.2.14: - resolution: - { - integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==, - } - engines: { node: ">=12.0.0" } + resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + engines: {node: '>=12.0.0'} tmpl@1.0.5: - resolution: - { - integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==, - } + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} 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'} toidentifier@1.0.1: - resolution: - { - integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==, - } - engines: { node: ">=0.6" } + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} tough-cookie@4.1.4: - resolution: - { - integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} tr46@0.0.3: - resolution: - { - integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==, - } + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} tr46@1.0.1: - resolution: - { - integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==, - } + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} tr46@3.0.0: - resolution: - { - integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} tree-kill@1.2.2: - resolution: - { - integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==, - } + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true 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-interface-checker@0.1.13: - resolution: - { - integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==, - } + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} ts-invariant@0.10.3: - resolution: - { - integrity: sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==} + engines: {node: '>=8'} ts-jest@29.4.1: - resolution: - { - integrity: sha512-SaeUtjfpg9Uqu8IbeDKtdaS0g8lS6FT6OzM3ezrDfErPJPHNDo/Ey+VFGP1bQIDfagYDLyRpd7O15XpG1Es2Uw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0 } + resolution: {integrity: sha512-SaeUtjfpg9Uqu8IbeDKtdaS0g8lS6FT6OzM3ezrDfErPJPHNDo/Ey+VFGP1bQIDfagYDLyRpd7O15XpG1Es2Uw==} + engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: - "@babel/core": ">=7.0.0-beta.0 <8" - "@jest/transform": ^29.0.0 || ^30.0.0 - "@jest/types": ^29.0.0 || ^30.0.0 + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/transform': ^29.0.0 || ^30.0.0 + '@jest/types': ^29.0.0 || ^30.0.0 babel-jest: ^29.0.0 || ^30.0.0 - esbuild: "*" + esbuild: '*' jest: ^29.0.0 || ^30.0.0 jest-util: ^29.0.0 || ^30.0.0 - typescript: ">=4.3 <6" + typescript: '>=4.3 <6' peerDependenciesMeta: - "@babel/core": + '@babel/core': optional: true - "@jest/transform": + '@jest/transform': optional: true - "@jest/types": + '@jest/types': optional: true babel-jest: optional: true @@ -12746,59 +8294,41 @@ packages: optional: true ts-node@10.9.2: - resolution: - { - integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==, - } + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: - "@swc/core": ">=1.2.50" - "@swc/wasm": ">=1.2.50" - "@types/node": "*" - typescript: ">=2.7" + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' peerDependenciesMeta: - "@swc/core": + '@swc/core': optional: true - "@swc/wasm": + '@swc/wasm': optional: true ts-tqdm@0.8.6: - resolution: - { - integrity: sha512-3X3M1PZcHtgQbnwizL+xU8CAgbYbeLHrrDwL9xxcZZrV5J+e7loJm1XrXozHjSkl44J0Zg0SgA8rXbh83kCkcQ==, - } + resolution: {integrity: sha512-3X3M1PZcHtgQbnwizL+xU8CAgbYbeLHrrDwL9xxcZZrV5J+e7loJm1XrXozHjSkl44J0Zg0SgA8rXbh83kCkcQ==} 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==} tsup@6.7.0: - resolution: - { - integrity: sha512-L3o8hGkaHnu5TdJns+mCqFsDBo83bJ44rlK7e6VdanIvpea4ArPcU3swWGsLVbXak1PqQx/V+SSmFPujBK+zEQ==, - } - engines: { node: ">=14.18" } + resolution: {integrity: sha512-L3o8hGkaHnu5TdJns+mCqFsDBo83bJ44rlK7e6VdanIvpea4ArPcU3swWGsLVbXak1PqQx/V+SSmFPujBK+zEQ==} + engines: {node: '>=14.18'} hasBin: true peerDependencies: - "@swc/core": ^1 + '@swc/core': ^1 postcss: ^8.4.12 - typescript: ">=4.1.0" + typescript: '>=4.1.0' peerDependenciesMeta: - "@swc/core": + '@swc/core': optional: true postcss: optional: true @@ -12806,642 +8336,385 @@ packages: optional: true 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' + + tsx@4.20.5: + resolution: {integrity: sha512-+wKjMNU9w/EaQayHXb7WA7ZaHY6hN8WgfvHNQ3t1PnU91/7O8TcTnIhCDYTZwnt8JsO9IBqZ30Ln1r7pPF52Aw==} + engines: {node: '>=18.0.0'} + hasBin: true turbo-darwin-64@2.5.6: - resolution: - { - integrity: sha512-3C1xEdo4aFwMJAPvtlPqz1Sw/+cddWIOmsalHFMrsqqydcptwBfu26WW2cDm3u93bUzMbBJ8k3zNKFqxJ9ei2A==, - } + resolution: {integrity: sha512-3C1xEdo4aFwMJAPvtlPqz1Sw/+cddWIOmsalHFMrsqqydcptwBfu26WW2cDm3u93bUzMbBJ8k3zNKFqxJ9ei2A==} cpu: [x64] os: [darwin] turbo-darwin-arm64@2.5.6: - resolution: - { - integrity: sha512-LyiG+rD7JhMfYwLqB6k3LZQtYn8CQQUePbpA8mF/hMLPAekXdJo1g0bUPw8RZLwQXUIU/3BU7tXENvhSGz5DPA==, - } + resolution: {integrity: sha512-LyiG+rD7JhMfYwLqB6k3LZQtYn8CQQUePbpA8mF/hMLPAekXdJo1g0bUPw8RZLwQXUIU/3BU7tXENvhSGz5DPA==} cpu: [arm64] os: [darwin] turbo-linux-64@2.5.6: - resolution: - { - integrity: sha512-GOcUTT0xiT/pSnHL4YD6Yr3HreUhU8pUcGqcI2ksIF9b2/r/kRHwGFcsHgpG3+vtZF/kwsP0MV8FTlTObxsYIA==, - } + resolution: {integrity: sha512-GOcUTT0xiT/pSnHL4YD6Yr3HreUhU8pUcGqcI2ksIF9b2/r/kRHwGFcsHgpG3+vtZF/kwsP0MV8FTlTObxsYIA==} cpu: [x64] os: [linux] turbo-linux-arm64@2.5.6: - resolution: - { - integrity: sha512-10Tm15bruJEA3m0V7iZcnQBpObGBcOgUcO+sY7/2vk1bweW34LMhkWi8svjV9iDF68+KJDThnYDlYE/bc7/zzQ==, - } + resolution: {integrity: sha512-10Tm15bruJEA3m0V7iZcnQBpObGBcOgUcO+sY7/2vk1bweW34LMhkWi8svjV9iDF68+KJDThnYDlYE/bc7/zzQ==} cpu: [arm64] os: [linux] turbo-windows-64@2.5.6: - resolution: - { - integrity: sha512-FyRsVpgaj76It0ludwZsNN40ytHN+17E4PFJyeliBEbxrGTc5BexlXVpufB7XlAaoaZVxbS6KT8RofLfDRyEPg==, - } + resolution: {integrity: sha512-FyRsVpgaj76It0ludwZsNN40ytHN+17E4PFJyeliBEbxrGTc5BexlXVpufB7XlAaoaZVxbS6KT8RofLfDRyEPg==} cpu: [x64] os: [win32] turbo-windows-arm64@2.5.6: - resolution: - { - integrity: sha512-j/tWu8cMeQ7HPpKri6jvKtyXg9K1gRyhdK4tKrrchH8GNHscPX/F71zax58yYtLRWTiK04zNzPcUJuoS0+v/+Q==, - } + resolution: {integrity: sha512-j/tWu8cMeQ7HPpKri6jvKtyXg9K1gRyhdK4tKrrchH8GNHscPX/F71zax58yYtLRWTiK04zNzPcUJuoS0+v/+Q==} cpu: [arm64] os: [win32] turbo@2.5.6: - resolution: - { - integrity: sha512-gxToHmi9oTBNB05UjUsrWf0OyN5ZXtD0apOarC1KIx232Vp3WimRNy3810QzeNSgyD5rsaIDXlxlbnOzlouo+w==, - } + resolution: {integrity: sha512-gxToHmi9oTBNB05UjUsrWf0OyN5ZXtD0apOarC1KIx232Vp3WimRNy3810QzeNSgyD5rsaIDXlxlbnOzlouo+w==} hasBin: true 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-detect@4.0.8: - resolution: - { - integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} 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'} type-fest@0.21.3: - resolution: - { - integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} type-fest@0.6.0: - resolution: - { - integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} type-fest@0.7.1: - resolution: - { - integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} type-fest@0.8.1: - resolution: - { - integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} type-fest@4.41.0: - resolution: - { - integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==, - } - engines: { node: ">=16" } + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} type-is@2.0.1: - resolution: - { - integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} + engines: {node: '>= 0.6'} 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.9.2: - resolution: - { - integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==, - } - engines: { node: ">=14.17" } + resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} + engines: {node: '>=14.17'} hasBin: true ufo@1.6.1: - resolution: - { - integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==, - } + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} uglify-js@3.19.3: - resolution: - { - integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==, - } - engines: { node: ">=0.8.0" } + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} + engines: {node: '>=0.8.0'} 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@5.26.5: - resolution: - { - integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==, - } + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} undici-types@6.21.0: - resolution: - { - integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==, - } + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} undici@5.29.0: - resolution: - { - integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==, - } - engines: { node: ">=14.0" } + resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} + engines: {node: '>=14.0'} undici@6.21.3: - resolution: - { - integrity: sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==, - } - engines: { node: ">=18.17" } + resolution: {integrity: sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==} + engines: {node: '>=18.17'} undici@7.15.0: - resolution: - { - integrity: sha512-7oZJCPvvMvTd0OlqWsIxTuItTpJBpU1tcbVl24FMn3xt3+VSunwUasmfPJRE57oNO1KsZ4PgA1xTdAX4hq8NyQ==, - } - engines: { node: ">=20.18.1" } + resolution: {integrity: sha512-7oZJCPvvMvTd0OlqWsIxTuItTpJBpU1tcbVl24FMn3xt3+VSunwUasmfPJRE57oNO1KsZ4PgA1xTdAX4hq8NyQ==} + engines: {node: '>=20.18.1'} unenv@2.0.0-rc.19: - resolution: - { - integrity: sha512-t/OMHBNAkknVCI7bVB9OWjUUAwhVv9vsPIAGnNUxnu3FxPQN11rjh0sksLMzc3g7IlTgvHmOTl4JM7JHpcv5wA==, - } + resolution: {integrity: sha512-t/OMHBNAkknVCI7bVB9OWjUUAwhVv9vsPIAGnNUxnu3FxPQN11rjh0sksLMzc3g7IlTgvHmOTl4JM7JHpcv5wA==} unicode-canonical-property-names-ecmascript@2.0.1: - resolution: - { - integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} unicode-match-property-ecmascript@2.0.0: - resolution: - { - integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} unicode-match-property-value-ecmascript@2.2.0: - resolution: - { - integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} + engines: {node: '>=4'} unicode-property-aliases-ecmascript@2.1.0: - resolution: - { - integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} unique-string@2.0.0: - resolution: - { - integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} + engines: {node: '>=8'} universalify@0.1.2: - resolution: - { - integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==, - } - engines: { node: ">= 4.0.0" } + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} universalify@0.2.0: - resolution: - { - integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==, - } - engines: { node: ">= 4.0.0" } + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} unpipe@1.0.0: - resolution: - { - integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} 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==} url-parse@1.5.10: - resolution: - { - integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==, - } + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} urlpattern-polyfill@10.1.0: - resolution: - { - integrity: sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==, - } + resolution: {integrity: sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==} 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": ^18.2.47 + '@types/react': ^18.2.47 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": ^18.2.47 + '@types/react': ^18.2.47 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==} util@0.12.5: - resolution: - { - integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==, - } + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} utils-merge@1.0.1: - resolution: - { - integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==, - } - engines: { node: ">= 0.4.0" } + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} uuid@7.0.3: - resolution: - { - integrity: sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==, - } + resolution: {integrity: sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==} + hasBin: true + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true uuid@9.0.1: - resolution: - { - integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==, - } + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true v8-compile-cache-lib@3.0.1: - resolution: - { - integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==, - } + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} v8-to-istanbul@9.3.0: - resolution: - { - integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==, - } - engines: { node: ">=10.12.0" } + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} validate-npm-package-license@3.0.4: - resolution: - { - integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==, - } + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} validate-npm-package-name@5.0.1: - resolution: - { - integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} vary@1.1.2: - resolution: - { - integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} vlq@1.0.1: - resolution: - { - integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==, - } + resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} w3c-xmlserializer@4.0.0: - resolution: - { - integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} walker@1.0.8: - resolution: - { - integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==, - } + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} wcwidth@1.0.1: - resolution: - { - integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==, - } + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} web-streams-polyfill@4.0.0-beta.3: - resolution: - { - integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==, - } - engines: { node: ">= 14" } + resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} + engines: {node: '>= 14'} webidl-conversions@3.0.1: - resolution: - { - integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==, - } + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} webidl-conversions@4.0.2: - resolution: - { - integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==, - } + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} webidl-conversions@5.0.0: - resolution: - { - integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} + engines: {node: '>=8'} 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-encoding@2.0.0: - resolution: - { - integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} whatwg-fetch@3.6.20: - resolution: - { - integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==, - } + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} whatwg-mimetype@3.0.0: - resolution: - { - integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} whatwg-url-without-unicode@8.0.0-3: - resolution: - { - integrity: sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig==} + engines: {node: '>=10'} whatwg-url@11.0.0: - resolution: - { - integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} whatwg-url@5.0.0: - resolution: - { - integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==, - } + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} whatwg-url@7.1.0: - resolution: - { - integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==, - } + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} 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 which@4.0.0: - resolution: - { - integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==, - } - engines: { node: ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + engines: {node: ^16.13.0 || >=18.0.0} hasBin: true wonka@6.3.5: - resolution: - { - integrity: sha512-SSil+ecw6B4/Dm7Pf2sAshKQ5hWFvfyGlfPbEd6A14dOH6VDjrmbY86u6nZvy9omGwwIPFR8V41+of1EezgoUw==, - } + resolution: {integrity: sha512-SSil+ecw6B4/Dm7Pf2sAshKQ5hWFvfyGlfPbEd6A14dOH6VDjrmbY86u6nZvy9omGwwIPFR8V41+of1EezgoUw==} word-wrap@1.2.5: - resolution: - { - integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} wordwrap@1.0.0: - resolution: - { - integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==, - } + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} workerd@1.20250829.0: - resolution: - { - integrity: sha512-8qoE56hf9QHS2llMM1tybjhvFEX5vnNUa1PpuyxeNC9F0dn9/qb9eDqN/z3sBPgpYK8vfQU9J8KOxczA+qo/cQ==, - } - engines: { node: ">=16" } + resolution: {integrity: sha512-8qoE56hf9QHS2llMM1tybjhvFEX5vnNUa1PpuyxeNC9F0dn9/qb9eDqN/z3sBPgpYK8vfQU9J8KOxczA+qo/cQ==} + engines: {node: '>=16'} hasBin: true wrangler@4.33.2: - resolution: - { - integrity: sha512-4cQU62098a5mj7YsECkksypMNoO9B8D6CVzP/SDEqP73ti9exBxI3OlkB+8rMawF1OyYNAihaSAzIPZ52OiK0g==, - } - engines: { node: ">=18.0.0" } + resolution: {integrity: sha512-4cQU62098a5mj7YsECkksypMNoO9B8D6CVzP/SDEqP73ti9exBxI3OlkB+8rMawF1OyYNAihaSAzIPZ52OiK0g==} + engines: {node: '>=18.0.0'} hasBin: true peerDependencies: - "@cloudflare/workers-types": ^4.20250829.0 + '@cloudflare/workers-types': ^4.20250829.0 peerDependenciesMeta: - "@cloudflare/workers-types": + '@cloudflare/workers-types': optional: true wrap-ansi@7.0.0: - resolution: - { - integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} wrap-ansi@8.1.0: - resolution: - { - integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} wrap-ansi@9.0.0: - resolution: - { - integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + engines: {node: '>=18'} wrappy@1.0.2: - resolution: - { - integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, - } + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} write-file-atomic@2.4.3: - resolution: - { - integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==, - } + resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} write-file-atomic@4.0.2: - resolution: - { - integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==, - } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} ws@6.2.3: - resolution: - { - integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==, - } + resolution: {integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==} peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ^5.0.2 @@ -13452,11 +8725,8 @@ packages: optional: true ws@7.5.10: - resolution: - { - integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==, - } - engines: { node: ">=8.3.0" } + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ^5.0.2 @@ -13467,14 +8737,11 @@ packages: optional: true ws@8.18.0: - resolution: - { - integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==, - } - engines: { node: ">=10.0.0" } + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" + utf-8-validate: '>=5.0.2' peerDependenciesMeta: bufferutil: optional: true @@ -13482,14 +8749,11 @@ packages: optional: true ws@8.18.3: - resolution: - { - integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==, - } - engines: { node: ">=10.0.0" } + resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} + engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" + utf-8-validate: '>=5.0.2' peerDependenciesMeta: bufferutil: optional: true @@ -13497,186 +8761,121 @@ packages: optional: true xcode@3.0.1: - resolution: - { - integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==, - } - engines: { node: ">=10.0.0" } + resolution: {integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==} + engines: {node: '>=10.0.0'} xml-name-validator@4.0.0: - resolution: - { - integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} xml2js@0.6.0: - resolution: - { - integrity: sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==, - } - engines: { node: ">=4.0.0" } + resolution: {integrity: sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==} + engines: {node: '>=4.0.0'} xmlbuilder@11.0.1: - resolution: - { - integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==, - } - engines: { node: ">=4.0" } + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} xmlbuilder@14.0.0: - resolution: - { - integrity: sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==, - } - engines: { node: ">=8.0" } + resolution: {integrity: sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==} + engines: {node: '>=8.0'} xmlbuilder@15.1.1: - resolution: - { - integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==, - } - engines: { node: ">=8.0" } + resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} + engines: {node: '>=8.0'} xmlchars@2.2.0: - resolution: - { - integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==, - } + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} xstream@11.14.0: - resolution: - { - integrity: sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw==, - } + resolution: {integrity: sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw==} y18n@5.0.8: - resolution: - { - integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} yallist@3.1.1: - resolution: - { - integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, - } + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} yallist@5.0.0: - resolution: - { - integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} yaml@1.10.2: - resolution: - { - integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==, - } - engines: { node: ">= 6" } + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} 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 yargs-parser@21.1.1: - resolution: - { - integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} yargs-parser@22.0.0: - resolution: - { - integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==, - } - engines: { node: ^20.19.0 || ^22.12.0 || >=23 } + resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} yargs@17.7.2: - resolution: - { - integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} yargs@18.0.0: - resolution: - { - integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==, - } - engines: { node: ^20.19.0 || ^22.12.0 || >=23 } + resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} yn@3.1.1: - resolution: - { - integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} 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'} youch-core@0.3.3: - resolution: - { - integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==, - } + resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==} youch@4.1.0-beta.10: - resolution: - { - integrity: sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==, - } + resolution: {integrity: sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==} zen-observable-ts@1.2.5: - resolution: - { - integrity: sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==, - } + resolution: {integrity: sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==} zen-observable@0.8.15: - resolution: - { - integrity: sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==, - } + resolution: {integrity: sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==} zod@3.22.3: - resolution: - { - integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==, - } + resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==} + + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} snapshots: - "@0no-co/graphql.web@1.2.0(graphql@16.11.0)": + + '@0no-co/graphql.web@1.2.0(graphql@16.11.0)': optionalDependencies: graphql: 16.11.0 - "@adobe/css-tools@4.4.4": {} + '@adobe/css-tools@4.4.4': {} - "@alloc/quick-lru@5.2.0": {} + '@alloc/quick-lru@5.2.0': {} - "@ampproject/remapping@2.3.0": + '@ampproject/remapping@2.3.0': dependencies: - "@jridgewell/gen-mapping": 0.3.13 - "@jridgewell/trace-mapping": 0.3.30 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.30 - "@apollo/client@3.13.9(@types/react@18.3.23)(graphql@16.11.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": + '@apollo/client@3.13.9(@types/react@18.3.23)(graphql@16.11.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - "@graphql-typed-document-node/core": 3.2.0(graphql@16.11.0) - "@wry/caches": 1.0.1 - "@wry/equality": 0.5.7 - "@wry/trie": 0.5.0 + '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0) + '@wry/caches': 1.0.1 + '@wry/equality': 0.5.7 + '@wry/trie': 0.5.0 graphql: 16.11.0 graphql-tag: 2.12.6(graphql@16.11.0) hoist-non-react-statics: 3.3.2 @@ -13691,1041 +8890,1058 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) transitivePeerDependencies: - - "@types/react" + - '@types/react' - "@ast-grep/napi-darwin-arm64@0.35.0": + '@ast-grep/napi-darwin-arm64@0.35.0': optional: true - "@ast-grep/napi-darwin-x64@0.35.0": + '@ast-grep/napi-darwin-x64@0.35.0': optional: true - "@ast-grep/napi-linux-arm64-gnu@0.35.0": + '@ast-grep/napi-linux-arm64-gnu@0.35.0': optional: true - "@ast-grep/napi-linux-arm64-musl@0.35.0": + '@ast-grep/napi-linux-arm64-musl@0.35.0': optional: true - "@ast-grep/napi-linux-x64-gnu@0.35.0": + '@ast-grep/napi-linux-x64-gnu@0.35.0': optional: true - "@ast-grep/napi-linux-x64-musl@0.35.0": + '@ast-grep/napi-linux-x64-musl@0.35.0': optional: true - "@ast-grep/napi-win32-arm64-msvc@0.35.0": + '@ast-grep/napi-win32-arm64-msvc@0.35.0': optional: true - "@ast-grep/napi-win32-ia32-msvc@0.35.0": + '@ast-grep/napi-win32-ia32-msvc@0.35.0': optional: true - "@ast-grep/napi-win32-x64-msvc@0.35.0": + '@ast-grep/napi-win32-x64-msvc@0.35.0': optional: true - "@ast-grep/napi@0.35.0": + '@ast-grep/napi@0.35.0': optionalDependencies: - "@ast-grep/napi-darwin-arm64": 0.35.0 - "@ast-grep/napi-darwin-x64": 0.35.0 - "@ast-grep/napi-linux-arm64-gnu": 0.35.0 - "@ast-grep/napi-linux-arm64-musl": 0.35.0 - "@ast-grep/napi-linux-x64-gnu": 0.35.0 - "@ast-grep/napi-linux-x64-musl": 0.35.0 - "@ast-grep/napi-win32-arm64-msvc": 0.35.0 - "@ast-grep/napi-win32-ia32-msvc": 0.35.0 - "@ast-grep/napi-win32-x64-msvc": 0.35.0 - - "@aws-crypto/crc32@5.2.0": - dependencies: - "@aws-crypto/util": 5.2.0 - "@aws-sdk/types": 3.862.0 + '@ast-grep/napi-darwin-arm64': 0.35.0 + '@ast-grep/napi-darwin-x64': 0.35.0 + '@ast-grep/napi-linux-arm64-gnu': 0.35.0 + '@ast-grep/napi-linux-arm64-musl': 0.35.0 + '@ast-grep/napi-linux-x64-gnu': 0.35.0 + '@ast-grep/napi-linux-x64-musl': 0.35.0 + '@ast-grep/napi-win32-arm64-msvc': 0.35.0 + '@ast-grep/napi-win32-ia32-msvc': 0.35.0 + '@ast-grep/napi-win32-x64-msvc': 0.35.0 + + '@auth/core@0.40.0': + dependencies: + '@panva/hkdf': 1.2.1 + jose: 6.1.0 + oauth4webapi: 3.8.1 + preact: 10.24.3 + preact-render-to-string: 6.5.11(preact@10.24.3) + + '@auth/prisma-adapter@2.10.0(@prisma/client@6.16.1(prisma@6.16.1(typescript@5.9.2))(typescript@5.9.2))': + dependencies: + '@auth/core': 0.40.0 + '@prisma/client': 6.16.1(prisma@6.16.1(typescript@5.9.2))(typescript@5.9.2) + transitivePeerDependencies: + - '@simplewebauthn/browser' + - '@simplewebauthn/server' + - nodemailer + + '@aws-crypto/crc32@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.862.0 tslib: 2.8.1 - "@aws-crypto/crc32c@5.2.0": + '@aws-crypto/crc32c@5.2.0': dependencies: - "@aws-crypto/util": 5.2.0 - "@aws-sdk/types": 3.862.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.862.0 tslib: 2.8.1 - "@aws-crypto/ie11-detection@3.0.0": + '@aws-crypto/ie11-detection@3.0.0': dependencies: tslib: 1.14.1 - "@aws-crypto/sha1-browser@5.2.0": + '@aws-crypto/sha1-browser@5.2.0': dependencies: - "@aws-crypto/supports-web-crypto": 5.2.0 - "@aws-crypto/util": 5.2.0 - "@aws-sdk/types": 3.862.0 - "@aws-sdk/util-locate-window": 3.804.0 - "@smithy/util-utf8": 2.3.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.862.0 + '@aws-sdk/util-locate-window': 3.804.0 + '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - "@aws-crypto/sha256-browser@3.0.0": + '@aws-crypto/sha256-browser@3.0.0': dependencies: - "@aws-crypto/ie11-detection": 3.0.0 - "@aws-crypto/sha256-js": 3.0.0 - "@aws-crypto/supports-web-crypto": 3.0.0 - "@aws-crypto/util": 3.0.0 - "@aws-sdk/types": 3.862.0 - "@aws-sdk/util-locate-window": 3.804.0 - "@aws-sdk/util-utf8-browser": 3.259.0 + '@aws-crypto/ie11-detection': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-crypto/supports-web-crypto': 3.0.0 + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.862.0 + '@aws-sdk/util-locate-window': 3.804.0 + '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 - "@aws-crypto/sha256-browser@5.2.0": + '@aws-crypto/sha256-browser@5.2.0': dependencies: - "@aws-crypto/sha256-js": 5.2.0 - "@aws-crypto/supports-web-crypto": 5.2.0 - "@aws-crypto/util": 5.2.0 - "@aws-sdk/types": 3.862.0 - "@aws-sdk/util-locate-window": 3.804.0 - "@smithy/util-utf8": 2.3.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.862.0 + '@aws-sdk/util-locate-window': 3.804.0 + '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - "@aws-crypto/sha256-js@3.0.0": + '@aws-crypto/sha256-js@3.0.0': dependencies: - "@aws-crypto/util": 3.0.0 - "@aws-sdk/types": 3.862.0 + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.862.0 tslib: 1.14.1 - "@aws-crypto/sha256-js@5.2.0": + '@aws-crypto/sha256-js@5.2.0': dependencies: - "@aws-crypto/util": 5.2.0 - "@aws-sdk/types": 3.862.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.862.0 tslib: 2.8.1 - "@aws-crypto/supports-web-crypto@3.0.0": + '@aws-crypto/supports-web-crypto@3.0.0': dependencies: tslib: 1.14.1 - "@aws-crypto/supports-web-crypto@5.2.0": + '@aws-crypto/supports-web-crypto@5.2.0': dependencies: tslib: 2.8.1 - "@aws-crypto/util@3.0.0": + '@aws-crypto/util@3.0.0': dependencies: - "@aws-sdk/types": 3.862.0 - "@aws-sdk/util-utf8-browser": 3.259.0 + '@aws-sdk/types': 3.862.0 + '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 - "@aws-crypto/util@5.2.0": + '@aws-crypto/util@5.2.0': dependencies: - "@aws-sdk/types": 3.862.0 - "@smithy/util-utf8": 2.3.0 + '@aws-sdk/types': 3.862.0 + '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - "@aws-sdk/client-cloudfront@3.398.0": - dependencies: - "@aws-crypto/sha256-browser": 3.0.0 - "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.398.0 - "@aws-sdk/credential-provider-node": 3.398.0 - "@aws-sdk/middleware-host-header": 3.398.0 - "@aws-sdk/middleware-logger": 3.398.0 - "@aws-sdk/middleware-recursion-detection": 3.398.0 - "@aws-sdk/middleware-signing": 3.398.0 - "@aws-sdk/middleware-user-agent": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@aws-sdk/util-endpoints": 3.398.0 - "@aws-sdk/util-user-agent-browser": 3.398.0 - "@aws-sdk/util-user-agent-node": 3.398.0 - "@aws-sdk/xml-builder": 3.310.0 - "@smithy/config-resolver": 2.2.0 - "@smithy/fetch-http-handler": 2.5.0 - "@smithy/hash-node": 2.2.0 - "@smithy/invalid-dependency": 2.2.0 - "@smithy/middleware-content-length": 2.2.0 - "@smithy/middleware-endpoint": 2.5.1 - "@smithy/middleware-retry": 2.3.1 - "@smithy/middleware-serde": 2.3.0 - "@smithy/middleware-stack": 2.2.0 - "@smithy/node-config-provider": 2.3.0 - "@smithy/node-http-handler": 2.5.0 - "@smithy/protocol-http": 2.0.5 - "@smithy/smithy-client": 2.5.1 - "@smithy/types": 2.12.0 - "@smithy/url-parser": 2.2.0 - "@smithy/util-base64": 2.3.0 - "@smithy/util-body-length-browser": 2.2.0 - "@smithy/util-body-length-node": 2.3.0 - "@smithy/util-defaults-mode-browser": 2.2.1 - "@smithy/util-defaults-mode-node": 2.3.1 - "@smithy/util-retry": 2.2.0 - "@smithy/util-stream": 2.2.0 - "@smithy/util-utf8": 2.3.0 - "@smithy/util-waiter": 2.2.0 + '@aws-sdk/client-cloudfront@3.398.0': + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.398.0 + '@aws-sdk/credential-provider-node': 3.398.0 + '@aws-sdk/middleware-host-header': 3.398.0 + '@aws-sdk/middleware-logger': 3.398.0 + '@aws-sdk/middleware-recursion-detection': 3.398.0 + '@aws-sdk/middleware-signing': 3.398.0 + '@aws-sdk/middleware-user-agent': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@aws-sdk/util-endpoints': 3.398.0 + '@aws-sdk/util-user-agent-browser': 3.398.0 + '@aws-sdk/util-user-agent-node': 3.398.0 + '@aws-sdk/xml-builder': 3.310.0 + '@smithy/config-resolver': 2.2.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/hash-node': 2.2.0 + '@smithy/invalid-dependency': 2.2.0 + '@smithy/middleware-content-length': 2.2.0 + '@smithy/middleware-endpoint': 2.5.1 + '@smithy/middleware-retry': 2.3.1 + '@smithy/middleware-serde': 2.3.0 + '@smithy/middleware-stack': 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-body-length-browser': 2.2.0 + '@smithy/util-body-length-node': 2.3.0 + '@smithy/util-defaults-mode-browser': 2.2.1 + '@smithy/util-defaults-mode-node': 2.3.1 + '@smithy/util-retry': 2.2.0 + '@smithy/util-stream': 2.2.0 + '@smithy/util-utf8': 2.3.0 + '@smithy/util-waiter': 2.2.0 fast-xml-parser: 4.2.5 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - "@aws-sdk/client-dynamodb@3.868.0": - dependencies: - "@aws-crypto/sha256-browser": 5.2.0 - "@aws-crypto/sha256-js": 5.2.0 - "@aws-sdk/core": 3.864.0 - "@aws-sdk/credential-provider-node": 3.864.0 - "@aws-sdk/middleware-endpoint-discovery": 3.862.0 - "@aws-sdk/middleware-host-header": 3.862.0 - "@aws-sdk/middleware-logger": 3.862.0 - "@aws-sdk/middleware-recursion-detection": 3.862.0 - "@aws-sdk/middleware-user-agent": 3.864.0 - "@aws-sdk/region-config-resolver": 3.862.0 - "@aws-sdk/types": 3.862.0 - "@aws-sdk/util-endpoints": 3.862.0 - "@aws-sdk/util-user-agent-browser": 3.862.0 - "@aws-sdk/util-user-agent-node": 3.864.0 - "@smithy/config-resolver": 4.1.5 - "@smithy/core": 3.8.0 - "@smithy/fetch-http-handler": 5.1.1 - "@smithy/hash-node": 4.0.5 - "@smithy/invalid-dependency": 4.0.5 - "@smithy/middleware-content-length": 4.0.5 - "@smithy/middleware-endpoint": 4.1.18 - "@smithy/middleware-retry": 4.1.19 - "@smithy/middleware-serde": 4.0.9 - "@smithy/middleware-stack": 4.0.5 - "@smithy/node-config-provider": 4.1.4 - "@smithy/node-http-handler": 4.1.1 - "@smithy/protocol-http": 5.1.3 - "@smithy/smithy-client": 4.4.10 - "@smithy/types": 4.3.2 - "@smithy/url-parser": 4.0.5 - "@smithy/util-base64": 4.0.0 - "@smithy/util-body-length-browser": 4.0.0 - "@smithy/util-body-length-node": 4.0.0 - "@smithy/util-defaults-mode-browser": 4.0.26 - "@smithy/util-defaults-mode-node": 4.0.26 - "@smithy/util-endpoints": 3.0.7 - "@smithy/util-middleware": 4.0.5 - "@smithy/util-retry": 4.0.7 - "@smithy/util-utf8": 4.0.0 - "@smithy/util-waiter": 4.0.7 - "@types/uuid": 9.0.8 + '@aws-sdk/client-dynamodb@3.868.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.864.0 + '@aws-sdk/credential-provider-node': 3.864.0 + '@aws-sdk/middleware-endpoint-discovery': 3.862.0 + '@aws-sdk/middleware-host-header': 3.862.0 + '@aws-sdk/middleware-logger': 3.862.0 + '@aws-sdk/middleware-recursion-detection': 3.862.0 + '@aws-sdk/middleware-user-agent': 3.864.0 + '@aws-sdk/region-config-resolver': 3.862.0 + '@aws-sdk/types': 3.862.0 + '@aws-sdk/util-endpoints': 3.862.0 + '@aws-sdk/util-user-agent-browser': 3.862.0 + '@aws-sdk/util-user-agent-node': 3.864.0 + '@smithy/config-resolver': 4.1.5 + '@smithy/core': 3.8.0 + '@smithy/fetch-http-handler': 5.1.1 + '@smithy/hash-node': 4.0.5 + '@smithy/invalid-dependency': 4.0.5 + '@smithy/middleware-content-length': 4.0.5 + '@smithy/middleware-endpoint': 4.1.18 + '@smithy/middleware-retry': 4.1.19 + '@smithy/middleware-serde': 4.0.9 + '@smithy/middleware-stack': 4.0.5 + '@smithy/node-config-provider': 4.1.4 + '@smithy/node-http-handler': 4.1.1 + '@smithy/protocol-http': 5.1.3 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 + '@smithy/url-parser': 4.0.5 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.26 + '@smithy/util-defaults-mode-node': 4.0.26 + '@smithy/util-endpoints': 3.0.7 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-retry': 4.0.7 + '@smithy/util-utf8': 4.0.0 + '@smithy/util-waiter': 4.0.7 + '@types/uuid': 9.0.8 tslib: 2.8.1 uuid: 9.0.1 transitivePeerDependencies: - aws-crt - "@aws-sdk/client-lambda@3.865.0": - dependencies: - "@aws-crypto/sha256-browser": 5.2.0 - "@aws-crypto/sha256-js": 5.2.0 - "@aws-sdk/core": 3.864.0 - "@aws-sdk/credential-provider-node": 3.864.0 - "@aws-sdk/middleware-host-header": 3.862.0 - "@aws-sdk/middleware-logger": 3.862.0 - "@aws-sdk/middleware-recursion-detection": 3.862.0 - "@aws-sdk/middleware-user-agent": 3.864.0 - "@aws-sdk/region-config-resolver": 3.862.0 - "@aws-sdk/types": 3.862.0 - "@aws-sdk/util-endpoints": 3.862.0 - "@aws-sdk/util-user-agent-browser": 3.862.0 - "@aws-sdk/util-user-agent-node": 3.864.0 - "@smithy/config-resolver": 4.1.5 - "@smithy/core": 3.8.0 - "@smithy/eventstream-serde-browser": 4.0.5 - "@smithy/eventstream-serde-config-resolver": 4.1.3 - "@smithy/eventstream-serde-node": 4.0.5 - "@smithy/fetch-http-handler": 5.1.1 - "@smithy/hash-node": 4.0.5 - "@smithy/invalid-dependency": 4.0.5 - "@smithy/middleware-content-length": 4.0.5 - "@smithy/middleware-endpoint": 4.1.18 - "@smithy/middleware-retry": 4.1.19 - "@smithy/middleware-serde": 4.0.9 - "@smithy/middleware-stack": 4.0.5 - "@smithy/node-config-provider": 4.1.4 - "@smithy/node-http-handler": 4.1.1 - "@smithy/protocol-http": 5.1.3 - "@smithy/smithy-client": 4.4.10 - "@smithy/types": 4.3.2 - "@smithy/url-parser": 4.0.5 - "@smithy/util-base64": 4.0.0 - "@smithy/util-body-length-browser": 4.0.0 - "@smithy/util-body-length-node": 4.0.0 - "@smithy/util-defaults-mode-browser": 4.0.26 - "@smithy/util-defaults-mode-node": 4.0.26 - "@smithy/util-endpoints": 3.0.7 - "@smithy/util-middleware": 4.0.5 - "@smithy/util-retry": 4.0.7 - "@smithy/util-stream": 4.2.4 - "@smithy/util-utf8": 4.0.0 - "@smithy/util-waiter": 4.0.7 + '@aws-sdk/client-lambda@3.865.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.864.0 + '@aws-sdk/credential-provider-node': 3.864.0 + '@aws-sdk/middleware-host-header': 3.862.0 + '@aws-sdk/middleware-logger': 3.862.0 + '@aws-sdk/middleware-recursion-detection': 3.862.0 + '@aws-sdk/middleware-user-agent': 3.864.0 + '@aws-sdk/region-config-resolver': 3.862.0 + '@aws-sdk/types': 3.862.0 + '@aws-sdk/util-endpoints': 3.862.0 + '@aws-sdk/util-user-agent-browser': 3.862.0 + '@aws-sdk/util-user-agent-node': 3.864.0 + '@smithy/config-resolver': 4.1.5 + '@smithy/core': 3.8.0 + '@smithy/eventstream-serde-browser': 4.0.5 + '@smithy/eventstream-serde-config-resolver': 4.1.3 + '@smithy/eventstream-serde-node': 4.0.5 + '@smithy/fetch-http-handler': 5.1.1 + '@smithy/hash-node': 4.0.5 + '@smithy/invalid-dependency': 4.0.5 + '@smithy/middleware-content-length': 4.0.5 + '@smithy/middleware-endpoint': 4.1.18 + '@smithy/middleware-retry': 4.1.19 + '@smithy/middleware-serde': 4.0.9 + '@smithy/middleware-stack': 4.0.5 + '@smithy/node-config-provider': 4.1.4 + '@smithy/node-http-handler': 4.1.1 + '@smithy/protocol-http': 5.1.3 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 + '@smithy/url-parser': 4.0.5 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.26 + '@smithy/util-defaults-mode-node': 4.0.26 + '@smithy/util-endpoints': 3.0.7 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-retry': 4.0.7 + '@smithy/util-stream': 4.2.4 + '@smithy/util-utf8': 4.0.0 + '@smithy/util-waiter': 4.0.7 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - "@aws-sdk/client-s3@3.864.0": - dependencies: - "@aws-crypto/sha1-browser": 5.2.0 - "@aws-crypto/sha256-browser": 5.2.0 - "@aws-crypto/sha256-js": 5.2.0 - "@aws-sdk/core": 3.864.0 - "@aws-sdk/credential-provider-node": 3.864.0 - "@aws-sdk/middleware-bucket-endpoint": 3.862.0 - "@aws-sdk/middleware-expect-continue": 3.862.0 - "@aws-sdk/middleware-flexible-checksums": 3.864.0 - "@aws-sdk/middleware-host-header": 3.862.0 - "@aws-sdk/middleware-location-constraint": 3.862.0 - "@aws-sdk/middleware-logger": 3.862.0 - "@aws-sdk/middleware-recursion-detection": 3.862.0 - "@aws-sdk/middleware-sdk-s3": 3.864.0 - "@aws-sdk/middleware-ssec": 3.862.0 - "@aws-sdk/middleware-user-agent": 3.864.0 - "@aws-sdk/region-config-resolver": 3.862.0 - "@aws-sdk/signature-v4-multi-region": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@aws-sdk/util-endpoints": 3.862.0 - "@aws-sdk/util-user-agent-browser": 3.862.0 - "@aws-sdk/util-user-agent-node": 3.864.0 - "@aws-sdk/xml-builder": 3.862.0 - "@smithy/config-resolver": 4.1.5 - "@smithy/core": 3.8.0 - "@smithy/eventstream-serde-browser": 4.0.5 - "@smithy/eventstream-serde-config-resolver": 4.1.3 - "@smithy/eventstream-serde-node": 4.0.5 - "@smithy/fetch-http-handler": 5.1.1 - "@smithy/hash-blob-browser": 4.0.5 - "@smithy/hash-node": 4.0.5 - "@smithy/hash-stream-node": 4.0.5 - "@smithy/invalid-dependency": 4.0.5 - "@smithy/md5-js": 4.0.5 - "@smithy/middleware-content-length": 4.0.5 - "@smithy/middleware-endpoint": 4.1.18 - "@smithy/middleware-retry": 4.1.19 - "@smithy/middleware-serde": 4.0.9 - "@smithy/middleware-stack": 4.0.5 - "@smithy/node-config-provider": 4.1.4 - "@smithy/node-http-handler": 4.1.1 - "@smithy/protocol-http": 5.1.3 - "@smithy/smithy-client": 4.4.10 - "@smithy/types": 4.3.2 - "@smithy/url-parser": 4.0.5 - "@smithy/util-base64": 4.0.0 - "@smithy/util-body-length-browser": 4.0.0 - "@smithy/util-body-length-node": 4.0.0 - "@smithy/util-defaults-mode-browser": 4.0.26 - "@smithy/util-defaults-mode-node": 4.0.26 - "@smithy/util-endpoints": 3.0.7 - "@smithy/util-middleware": 4.0.5 - "@smithy/util-retry": 4.0.7 - "@smithy/util-stream": 4.2.4 - "@smithy/util-utf8": 4.0.0 - "@smithy/util-waiter": 4.0.7 - "@types/uuid": 9.0.8 + '@aws-sdk/client-s3@3.864.0': + dependencies: + '@aws-crypto/sha1-browser': 5.2.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.864.0 + '@aws-sdk/credential-provider-node': 3.864.0 + '@aws-sdk/middleware-bucket-endpoint': 3.862.0 + '@aws-sdk/middleware-expect-continue': 3.862.0 + '@aws-sdk/middleware-flexible-checksums': 3.864.0 + '@aws-sdk/middleware-host-header': 3.862.0 + '@aws-sdk/middleware-location-constraint': 3.862.0 + '@aws-sdk/middleware-logger': 3.862.0 + '@aws-sdk/middleware-recursion-detection': 3.862.0 + '@aws-sdk/middleware-sdk-s3': 3.864.0 + '@aws-sdk/middleware-ssec': 3.862.0 + '@aws-sdk/middleware-user-agent': 3.864.0 + '@aws-sdk/region-config-resolver': 3.862.0 + '@aws-sdk/signature-v4-multi-region': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@aws-sdk/util-endpoints': 3.862.0 + '@aws-sdk/util-user-agent-browser': 3.862.0 + '@aws-sdk/util-user-agent-node': 3.864.0 + '@aws-sdk/xml-builder': 3.862.0 + '@smithy/config-resolver': 4.1.5 + '@smithy/core': 3.8.0 + '@smithy/eventstream-serde-browser': 4.0.5 + '@smithy/eventstream-serde-config-resolver': 4.1.3 + '@smithy/eventstream-serde-node': 4.0.5 + '@smithy/fetch-http-handler': 5.1.1 + '@smithy/hash-blob-browser': 4.0.5 + '@smithy/hash-node': 4.0.5 + '@smithy/hash-stream-node': 4.0.5 + '@smithy/invalid-dependency': 4.0.5 + '@smithy/md5-js': 4.0.5 + '@smithy/middleware-content-length': 4.0.5 + '@smithy/middleware-endpoint': 4.1.18 + '@smithy/middleware-retry': 4.1.19 + '@smithy/middleware-serde': 4.0.9 + '@smithy/middleware-stack': 4.0.5 + '@smithy/node-config-provider': 4.1.4 + '@smithy/node-http-handler': 4.1.1 + '@smithy/protocol-http': 5.1.3 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 + '@smithy/url-parser': 4.0.5 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.26 + '@smithy/util-defaults-mode-node': 4.0.26 + '@smithy/util-endpoints': 3.0.7 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-retry': 4.0.7 + '@smithy/util-stream': 4.2.4 + '@smithy/util-utf8': 4.0.0 + '@smithy/util-waiter': 4.0.7 + '@types/uuid': 9.0.8 tslib: 2.8.1 uuid: 9.0.1 transitivePeerDependencies: - aws-crt - "@aws-sdk/client-sqs@3.864.0": - dependencies: - "@aws-crypto/sha256-browser": 5.2.0 - "@aws-crypto/sha256-js": 5.2.0 - "@aws-sdk/core": 3.864.0 - "@aws-sdk/credential-provider-node": 3.864.0 - "@aws-sdk/middleware-host-header": 3.862.0 - "@aws-sdk/middleware-logger": 3.862.0 - "@aws-sdk/middleware-recursion-detection": 3.862.0 - "@aws-sdk/middleware-sdk-sqs": 3.862.0 - "@aws-sdk/middleware-user-agent": 3.864.0 - "@aws-sdk/region-config-resolver": 3.862.0 - "@aws-sdk/types": 3.862.0 - "@aws-sdk/util-endpoints": 3.862.0 - "@aws-sdk/util-user-agent-browser": 3.862.0 - "@aws-sdk/util-user-agent-node": 3.864.0 - "@smithy/config-resolver": 4.1.5 - "@smithy/core": 3.8.0 - "@smithy/fetch-http-handler": 5.1.1 - "@smithy/hash-node": 4.0.5 - "@smithy/invalid-dependency": 4.0.5 - "@smithy/md5-js": 4.0.5 - "@smithy/middleware-content-length": 4.0.5 - "@smithy/middleware-endpoint": 4.1.18 - "@smithy/middleware-retry": 4.1.19 - "@smithy/middleware-serde": 4.0.9 - "@smithy/middleware-stack": 4.0.5 - "@smithy/node-config-provider": 4.1.4 - "@smithy/node-http-handler": 4.1.1 - "@smithy/protocol-http": 5.1.3 - "@smithy/smithy-client": 4.4.10 - "@smithy/types": 4.3.2 - "@smithy/url-parser": 4.0.5 - "@smithy/util-base64": 4.0.0 - "@smithy/util-body-length-browser": 4.0.0 - "@smithy/util-body-length-node": 4.0.0 - "@smithy/util-defaults-mode-browser": 4.0.26 - "@smithy/util-defaults-mode-node": 4.0.26 - "@smithy/util-endpoints": 3.0.7 - "@smithy/util-middleware": 4.0.5 - "@smithy/util-retry": 4.0.7 - "@smithy/util-utf8": 4.0.0 + '@aws-sdk/client-sqs@3.864.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.864.0 + '@aws-sdk/credential-provider-node': 3.864.0 + '@aws-sdk/middleware-host-header': 3.862.0 + '@aws-sdk/middleware-logger': 3.862.0 + '@aws-sdk/middleware-recursion-detection': 3.862.0 + '@aws-sdk/middleware-sdk-sqs': 3.862.0 + '@aws-sdk/middleware-user-agent': 3.864.0 + '@aws-sdk/region-config-resolver': 3.862.0 + '@aws-sdk/types': 3.862.0 + '@aws-sdk/util-endpoints': 3.862.0 + '@aws-sdk/util-user-agent-browser': 3.862.0 + '@aws-sdk/util-user-agent-node': 3.864.0 + '@smithy/config-resolver': 4.1.5 + '@smithy/core': 3.8.0 + '@smithy/fetch-http-handler': 5.1.1 + '@smithy/hash-node': 4.0.5 + '@smithy/invalid-dependency': 4.0.5 + '@smithy/md5-js': 4.0.5 + '@smithy/middleware-content-length': 4.0.5 + '@smithy/middleware-endpoint': 4.1.18 + '@smithy/middleware-retry': 4.1.19 + '@smithy/middleware-serde': 4.0.9 + '@smithy/middleware-stack': 4.0.5 + '@smithy/node-config-provider': 4.1.4 + '@smithy/node-http-handler': 4.1.1 + '@smithy/protocol-http': 5.1.3 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 + '@smithy/url-parser': 4.0.5 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.26 + '@smithy/util-defaults-mode-node': 4.0.26 + '@smithy/util-endpoints': 3.0.7 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-retry': 4.0.7 + '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - "@aws-sdk/client-sso@3.398.0": - dependencies: - "@aws-crypto/sha256-browser": 3.0.0 - "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/middleware-host-header": 3.398.0 - "@aws-sdk/middleware-logger": 3.398.0 - "@aws-sdk/middleware-recursion-detection": 3.398.0 - "@aws-sdk/middleware-user-agent": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@aws-sdk/util-endpoints": 3.398.0 - "@aws-sdk/util-user-agent-browser": 3.398.0 - "@aws-sdk/util-user-agent-node": 3.398.0 - "@smithy/config-resolver": 2.2.0 - "@smithy/fetch-http-handler": 2.5.0 - "@smithy/hash-node": 2.2.0 - "@smithy/invalid-dependency": 2.2.0 - "@smithy/middleware-content-length": 2.2.0 - "@smithy/middleware-endpoint": 2.5.1 - "@smithy/middleware-retry": 2.3.1 - "@smithy/middleware-serde": 2.3.0 - "@smithy/middleware-stack": 2.2.0 - "@smithy/node-config-provider": 2.3.0 - "@smithy/node-http-handler": 2.5.0 - "@smithy/protocol-http": 2.0.5 - "@smithy/smithy-client": 2.5.1 - "@smithy/types": 2.12.0 - "@smithy/url-parser": 2.2.0 - "@smithy/util-base64": 2.3.0 - "@smithy/util-body-length-browser": 2.2.0 - "@smithy/util-body-length-node": 2.3.0 - "@smithy/util-defaults-mode-browser": 2.2.1 - "@smithy/util-defaults-mode-node": 2.3.1 - "@smithy/util-retry": 2.2.0 - "@smithy/util-utf8": 2.3.0 + '@aws-sdk/client-sso@3.398.0': + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/middleware-host-header': 3.398.0 + '@aws-sdk/middleware-logger': 3.398.0 + '@aws-sdk/middleware-recursion-detection': 3.398.0 + '@aws-sdk/middleware-user-agent': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@aws-sdk/util-endpoints': 3.398.0 + '@aws-sdk/util-user-agent-browser': 3.398.0 + '@aws-sdk/util-user-agent-node': 3.398.0 + '@smithy/config-resolver': 2.2.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/hash-node': 2.2.0 + '@smithy/invalid-dependency': 2.2.0 + '@smithy/middleware-content-length': 2.2.0 + '@smithy/middleware-endpoint': 2.5.1 + '@smithy/middleware-retry': 2.3.1 + '@smithy/middleware-serde': 2.3.0 + '@smithy/middleware-stack': 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-body-length-browser': 2.2.0 + '@smithy/util-body-length-node': 2.3.0 + '@smithy/util-defaults-mode-browser': 2.2.1 + '@smithy/util-defaults-mode-node': 2.3.1 + '@smithy/util-retry': 2.2.0 + '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - "@aws-sdk/client-sso@3.864.0": - dependencies: - "@aws-crypto/sha256-browser": 5.2.0 - "@aws-crypto/sha256-js": 5.2.0 - "@aws-sdk/core": 3.864.0 - "@aws-sdk/middleware-host-header": 3.862.0 - "@aws-sdk/middleware-logger": 3.862.0 - "@aws-sdk/middleware-recursion-detection": 3.862.0 - "@aws-sdk/middleware-user-agent": 3.864.0 - "@aws-sdk/region-config-resolver": 3.862.0 - "@aws-sdk/types": 3.862.0 - "@aws-sdk/util-endpoints": 3.862.0 - "@aws-sdk/util-user-agent-browser": 3.862.0 - "@aws-sdk/util-user-agent-node": 3.864.0 - "@smithy/config-resolver": 4.1.5 - "@smithy/core": 3.8.0 - "@smithy/fetch-http-handler": 5.1.1 - "@smithy/hash-node": 4.0.5 - "@smithy/invalid-dependency": 4.0.5 - "@smithy/middleware-content-length": 4.0.5 - "@smithy/middleware-endpoint": 4.1.18 - "@smithy/middleware-retry": 4.1.19 - "@smithy/middleware-serde": 4.0.9 - "@smithy/middleware-stack": 4.0.5 - "@smithy/node-config-provider": 4.1.4 - "@smithy/node-http-handler": 4.1.1 - "@smithy/protocol-http": 5.1.3 - "@smithy/smithy-client": 4.4.10 - "@smithy/types": 4.3.2 - "@smithy/url-parser": 4.0.5 - "@smithy/util-base64": 4.0.0 - "@smithy/util-body-length-browser": 4.0.0 - "@smithy/util-body-length-node": 4.0.0 - "@smithy/util-defaults-mode-browser": 4.0.26 - "@smithy/util-defaults-mode-node": 4.0.26 - "@smithy/util-endpoints": 3.0.7 - "@smithy/util-middleware": 4.0.5 - "@smithy/util-retry": 4.0.7 - "@smithy/util-utf8": 4.0.0 + '@aws-sdk/client-sso@3.864.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.864.0 + '@aws-sdk/middleware-host-header': 3.862.0 + '@aws-sdk/middleware-logger': 3.862.0 + '@aws-sdk/middleware-recursion-detection': 3.862.0 + '@aws-sdk/middleware-user-agent': 3.864.0 + '@aws-sdk/region-config-resolver': 3.862.0 + '@aws-sdk/types': 3.862.0 + '@aws-sdk/util-endpoints': 3.862.0 + '@aws-sdk/util-user-agent-browser': 3.862.0 + '@aws-sdk/util-user-agent-node': 3.864.0 + '@smithy/config-resolver': 4.1.5 + '@smithy/core': 3.8.0 + '@smithy/fetch-http-handler': 5.1.1 + '@smithy/hash-node': 4.0.5 + '@smithy/invalid-dependency': 4.0.5 + '@smithy/middleware-content-length': 4.0.5 + '@smithy/middleware-endpoint': 4.1.18 + '@smithy/middleware-retry': 4.1.19 + '@smithy/middleware-serde': 4.0.9 + '@smithy/middleware-stack': 4.0.5 + '@smithy/node-config-provider': 4.1.4 + '@smithy/node-http-handler': 4.1.1 + '@smithy/protocol-http': 5.1.3 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 + '@smithy/url-parser': 4.0.5 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.26 + '@smithy/util-defaults-mode-node': 4.0.26 + '@smithy/util-endpoints': 3.0.7 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-retry': 4.0.7 + '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - "@aws-sdk/client-sts@3.398.0": - dependencies: - "@aws-crypto/sha256-browser": 3.0.0 - "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/credential-provider-node": 3.398.0 - "@aws-sdk/middleware-host-header": 3.398.0 - "@aws-sdk/middleware-logger": 3.398.0 - "@aws-sdk/middleware-recursion-detection": 3.398.0 - "@aws-sdk/middleware-sdk-sts": 3.398.0 - "@aws-sdk/middleware-signing": 3.398.0 - "@aws-sdk/middleware-user-agent": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@aws-sdk/util-endpoints": 3.398.0 - "@aws-sdk/util-user-agent-browser": 3.398.0 - "@aws-sdk/util-user-agent-node": 3.398.0 - "@smithy/config-resolver": 2.2.0 - "@smithy/fetch-http-handler": 2.5.0 - "@smithy/hash-node": 2.2.0 - "@smithy/invalid-dependency": 2.2.0 - "@smithy/middleware-content-length": 2.2.0 - "@smithy/middleware-endpoint": 2.5.1 - "@smithy/middleware-retry": 2.3.1 - "@smithy/middleware-serde": 2.3.0 - "@smithy/middleware-stack": 2.2.0 - "@smithy/node-config-provider": 2.3.0 - "@smithy/node-http-handler": 2.5.0 - "@smithy/protocol-http": 2.0.5 - "@smithy/smithy-client": 2.5.1 - "@smithy/types": 2.12.0 - "@smithy/url-parser": 2.2.0 - "@smithy/util-base64": 2.3.0 - "@smithy/util-body-length-browser": 2.2.0 - "@smithy/util-body-length-node": 2.3.0 - "@smithy/util-defaults-mode-browser": 2.2.1 - "@smithy/util-defaults-mode-node": 2.3.1 - "@smithy/util-retry": 2.2.0 - "@smithy/util-utf8": 2.3.0 + '@aws-sdk/client-sts@3.398.0': + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/credential-provider-node': 3.398.0 + '@aws-sdk/middleware-host-header': 3.398.0 + '@aws-sdk/middleware-logger': 3.398.0 + '@aws-sdk/middleware-recursion-detection': 3.398.0 + '@aws-sdk/middleware-sdk-sts': 3.398.0 + '@aws-sdk/middleware-signing': 3.398.0 + '@aws-sdk/middleware-user-agent': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@aws-sdk/util-endpoints': 3.398.0 + '@aws-sdk/util-user-agent-browser': 3.398.0 + '@aws-sdk/util-user-agent-node': 3.398.0 + '@smithy/config-resolver': 2.2.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/hash-node': 2.2.0 + '@smithy/invalid-dependency': 2.2.0 + '@smithy/middleware-content-length': 2.2.0 + '@smithy/middleware-endpoint': 2.5.1 + '@smithy/middleware-retry': 2.3.1 + '@smithy/middleware-serde': 2.3.0 + '@smithy/middleware-stack': 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-body-length-browser': 2.2.0 + '@smithy/util-body-length-node': 2.3.0 + '@smithy/util-defaults-mode-browser': 2.2.1 + '@smithy/util-defaults-mode-node': 2.3.1 + '@smithy/util-retry': 2.2.0 + '@smithy/util-utf8': 2.3.0 fast-xml-parser: 4.2.5 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - "@aws-sdk/core@3.864.0": - dependencies: - "@aws-sdk/types": 3.862.0 - "@aws-sdk/xml-builder": 3.862.0 - "@smithy/core": 3.8.0 - "@smithy/node-config-provider": 4.1.4 - "@smithy/property-provider": 4.0.5 - "@smithy/protocol-http": 5.1.3 - "@smithy/signature-v4": 5.1.3 - "@smithy/smithy-client": 4.4.10 - "@smithy/types": 4.3.2 - "@smithy/util-base64": 4.0.0 - "@smithy/util-body-length-browser": 4.0.0 - "@smithy/util-middleware": 4.0.5 - "@smithy/util-utf8": 4.0.0 + '@aws-sdk/core@3.864.0': + dependencies: + '@aws-sdk/types': 3.862.0 + '@aws-sdk/xml-builder': 3.862.0 + '@smithy/core': 3.8.0 + '@smithy/node-config-provider': 4.1.4 + '@smithy/property-provider': 4.0.5 + '@smithy/protocol-http': 5.1.3 + '@smithy/signature-v4': 5.1.3 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-utf8': 4.0.0 fast-xml-parser: 5.2.5 tslib: 2.8.1 - "@aws-sdk/credential-provider-env@3.398.0": + '@aws-sdk/credential-provider-env@3.398.0': dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/property-provider": 2.2.0 - "@smithy/types": 2.12.0 + '@aws-sdk/types': 3.398.0 + '@smithy/property-provider': 2.2.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@aws-sdk/credential-provider-env@3.864.0": + '@aws-sdk/credential-provider-env@3.864.0': dependencies: - "@aws-sdk/core": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@smithy/property-provider": 4.0.5 - "@smithy/types": 4.3.2 + '@aws-sdk/core': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@smithy/property-provider': 4.0.5 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@aws-sdk/credential-provider-http@3.864.0": - dependencies: - "@aws-sdk/core": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@smithy/fetch-http-handler": 5.1.1 - "@smithy/node-http-handler": 4.1.1 - "@smithy/property-provider": 4.0.5 - "@smithy/protocol-http": 5.1.3 - "@smithy/smithy-client": 4.4.10 - "@smithy/types": 4.3.2 - "@smithy/util-stream": 4.2.4 + '@aws-sdk/credential-provider-http@3.864.0': + dependencies: + '@aws-sdk/core': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@smithy/fetch-http-handler': 5.1.1 + '@smithy/node-http-handler': 4.1.1 + '@smithy/property-provider': 4.0.5 + '@smithy/protocol-http': 5.1.3 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 + '@smithy/util-stream': 4.2.4 tslib: 2.8.1 - "@aws-sdk/credential-provider-ini@3.398.0": - dependencies: - "@aws-sdk/credential-provider-env": 3.398.0 - "@aws-sdk/credential-provider-process": 3.398.0 - "@aws-sdk/credential-provider-sso": 3.398.0 - "@aws-sdk/credential-provider-web-identity": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@smithy/credential-provider-imds": 2.3.0 - "@smithy/property-provider": 2.2.0 - "@smithy/shared-ini-file-loader": 2.4.0 - "@smithy/types": 2.12.0 + '@aws-sdk/credential-provider-ini@3.398.0': + dependencies: + '@aws-sdk/credential-provider-env': 3.398.0 + '@aws-sdk/credential-provider-process': 3.398.0 + '@aws-sdk/credential-provider-sso': 3.398.0 + '@aws-sdk/credential-provider-web-identity': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@smithy/credential-provider-imds': 2.3.0 + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - "@aws-sdk/credential-provider-ini@3.864.0": - dependencies: - "@aws-sdk/core": 3.864.0 - "@aws-sdk/credential-provider-env": 3.864.0 - "@aws-sdk/credential-provider-http": 3.864.0 - "@aws-sdk/credential-provider-process": 3.864.0 - "@aws-sdk/credential-provider-sso": 3.864.0 - "@aws-sdk/credential-provider-web-identity": 3.864.0 - "@aws-sdk/nested-clients": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@smithy/credential-provider-imds": 4.0.7 - "@smithy/property-provider": 4.0.5 - "@smithy/shared-ini-file-loader": 4.0.5 - "@smithy/types": 4.3.2 + '@aws-sdk/credential-provider-ini@3.864.0': + dependencies: + '@aws-sdk/core': 3.864.0 + '@aws-sdk/credential-provider-env': 3.864.0 + '@aws-sdk/credential-provider-http': 3.864.0 + '@aws-sdk/credential-provider-process': 3.864.0 + '@aws-sdk/credential-provider-sso': 3.864.0 + '@aws-sdk/credential-provider-web-identity': 3.864.0 + '@aws-sdk/nested-clients': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@smithy/credential-provider-imds': 4.0.7 + '@smithy/property-provider': 4.0.5 + '@smithy/shared-ini-file-loader': 4.0.5 + '@smithy/types': 4.3.2 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - "@aws-sdk/credential-provider-node@3.398.0": - dependencies: - "@aws-sdk/credential-provider-env": 3.398.0 - "@aws-sdk/credential-provider-ini": 3.398.0 - "@aws-sdk/credential-provider-process": 3.398.0 - "@aws-sdk/credential-provider-sso": 3.398.0 - "@aws-sdk/credential-provider-web-identity": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@smithy/credential-provider-imds": 2.3.0 - "@smithy/property-provider": 2.2.0 - "@smithy/shared-ini-file-loader": 2.4.0 - "@smithy/types": 2.12.0 + '@aws-sdk/credential-provider-node@3.398.0': + dependencies: + '@aws-sdk/credential-provider-env': 3.398.0 + '@aws-sdk/credential-provider-ini': 3.398.0 + '@aws-sdk/credential-provider-process': 3.398.0 + '@aws-sdk/credential-provider-sso': 3.398.0 + '@aws-sdk/credential-provider-web-identity': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@smithy/credential-provider-imds': 2.3.0 + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - "@aws-sdk/credential-provider-node@3.864.0": - dependencies: - "@aws-sdk/credential-provider-env": 3.864.0 - "@aws-sdk/credential-provider-http": 3.864.0 - "@aws-sdk/credential-provider-ini": 3.864.0 - "@aws-sdk/credential-provider-process": 3.864.0 - "@aws-sdk/credential-provider-sso": 3.864.0 - "@aws-sdk/credential-provider-web-identity": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@smithy/credential-provider-imds": 4.0.7 - "@smithy/property-provider": 4.0.5 - "@smithy/shared-ini-file-loader": 4.0.5 - "@smithy/types": 4.3.2 + '@aws-sdk/credential-provider-node@3.864.0': + dependencies: + '@aws-sdk/credential-provider-env': 3.864.0 + '@aws-sdk/credential-provider-http': 3.864.0 + '@aws-sdk/credential-provider-ini': 3.864.0 + '@aws-sdk/credential-provider-process': 3.864.0 + '@aws-sdk/credential-provider-sso': 3.864.0 + '@aws-sdk/credential-provider-web-identity': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@smithy/credential-provider-imds': 4.0.7 + '@smithy/property-provider': 4.0.5 + '@smithy/shared-ini-file-loader': 4.0.5 + '@smithy/types': 4.3.2 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - "@aws-sdk/credential-provider-process@3.398.0": + '@aws-sdk/credential-provider-process@3.398.0': dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/property-provider": 2.2.0 - "@smithy/shared-ini-file-loader": 2.4.0 - "@smithy/types": 2.12.0 + '@aws-sdk/types': 3.398.0 + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@aws-sdk/credential-provider-process@3.864.0": + '@aws-sdk/credential-provider-process@3.864.0': dependencies: - "@aws-sdk/core": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@smithy/property-provider": 4.0.5 - "@smithy/shared-ini-file-loader": 4.0.5 - "@smithy/types": 4.3.2 + '@aws-sdk/core': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@smithy/property-provider': 4.0.5 + '@smithy/shared-ini-file-loader': 4.0.5 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@aws-sdk/credential-provider-sso@3.398.0": + '@aws-sdk/credential-provider-sso@3.398.0': dependencies: - "@aws-sdk/client-sso": 3.398.0 - "@aws-sdk/token-providers": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@smithy/property-provider": 2.2.0 - "@smithy/shared-ini-file-loader": 2.4.0 - "@smithy/types": 2.12.0 + '@aws-sdk/client-sso': 3.398.0 + '@aws-sdk/token-providers': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - "@aws-sdk/credential-provider-sso@3.864.0": + '@aws-sdk/credential-provider-sso@3.864.0': dependencies: - "@aws-sdk/client-sso": 3.864.0 - "@aws-sdk/core": 3.864.0 - "@aws-sdk/token-providers": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@smithy/property-provider": 4.0.5 - "@smithy/shared-ini-file-loader": 4.0.5 - "@smithy/types": 4.3.2 + '@aws-sdk/client-sso': 3.864.0 + '@aws-sdk/core': 3.864.0 + '@aws-sdk/token-providers': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@smithy/property-provider': 4.0.5 + '@smithy/shared-ini-file-loader': 4.0.5 + '@smithy/types': 4.3.2 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - "@aws-sdk/credential-provider-web-identity@3.398.0": + '@aws-sdk/credential-provider-web-identity@3.398.0': dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/property-provider": 2.2.0 - "@smithy/types": 2.12.0 + '@aws-sdk/types': 3.398.0 + '@smithy/property-provider': 2.2.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@aws-sdk/credential-provider-web-identity@3.864.0": + '@aws-sdk/credential-provider-web-identity@3.864.0': dependencies: - "@aws-sdk/core": 3.864.0 - "@aws-sdk/nested-clients": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@smithy/property-provider": 4.0.5 - "@smithy/types": 4.3.2 + '@aws-sdk/core': 3.864.0 + '@aws-sdk/nested-clients': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@smithy/property-provider': 4.0.5 + '@smithy/types': 4.3.2 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - "@aws-sdk/endpoint-cache@3.804.0": + '@aws-sdk/endpoint-cache@3.804.0': dependencies: mnemonist: 0.38.3 tslib: 2.8.1 - "@aws-sdk/middleware-bucket-endpoint@3.862.0": + '@aws-sdk/middleware-bucket-endpoint@3.862.0': dependencies: - "@aws-sdk/types": 3.862.0 - "@aws-sdk/util-arn-parser": 3.804.0 - "@smithy/node-config-provider": 4.1.4 - "@smithy/protocol-http": 5.1.3 - "@smithy/types": 4.3.2 - "@smithy/util-config-provider": 4.0.0 + '@aws-sdk/types': 3.862.0 + '@aws-sdk/util-arn-parser': 3.804.0 + '@smithy/node-config-provider': 4.1.4 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 + '@smithy/util-config-provider': 4.0.0 tslib: 2.8.1 - "@aws-sdk/middleware-endpoint-discovery@3.862.0": + '@aws-sdk/middleware-endpoint-discovery@3.862.0': dependencies: - "@aws-sdk/endpoint-cache": 3.804.0 - "@aws-sdk/types": 3.862.0 - "@smithy/node-config-provider": 4.1.4 - "@smithy/protocol-http": 5.1.3 - "@smithy/types": 4.3.2 + '@aws-sdk/endpoint-cache': 3.804.0 + '@aws-sdk/types': 3.862.0 + '@smithy/node-config-provider': 4.1.4 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@aws-sdk/middleware-expect-continue@3.862.0": + '@aws-sdk/middleware-expect-continue@3.862.0': dependencies: - "@aws-sdk/types": 3.862.0 - "@smithy/protocol-http": 5.1.3 - "@smithy/types": 4.3.2 + '@aws-sdk/types': 3.862.0 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@aws-sdk/middleware-flexible-checksums@3.864.0": - dependencies: - "@aws-crypto/crc32": 5.2.0 - "@aws-crypto/crc32c": 5.2.0 - "@aws-crypto/util": 5.2.0 - "@aws-sdk/core": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@smithy/is-array-buffer": 4.0.0 - "@smithy/node-config-provider": 4.1.4 - "@smithy/protocol-http": 5.1.3 - "@smithy/types": 4.3.2 - "@smithy/util-middleware": 4.0.5 - "@smithy/util-stream": 4.2.4 - "@smithy/util-utf8": 4.0.0 + '@aws-sdk/middleware-flexible-checksums@3.864.0': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/crc32c': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/core': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@smithy/is-array-buffer': 4.0.0 + '@smithy/node-config-provider': 4.1.4 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-stream': 4.2.4 + '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - "@aws-sdk/middleware-host-header@3.398.0": + '@aws-sdk/middleware-host-header@3.398.0': dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/protocol-http": 2.0.5 - "@smithy/types": 2.12.0 + '@aws-sdk/types': 3.398.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@aws-sdk/middleware-host-header@3.862.0": + '@aws-sdk/middleware-host-header@3.862.0': dependencies: - "@aws-sdk/types": 3.862.0 - "@smithy/protocol-http": 5.1.3 - "@smithy/types": 4.3.2 + '@aws-sdk/types': 3.862.0 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@aws-sdk/middleware-location-constraint@3.862.0": + '@aws-sdk/middleware-location-constraint@3.862.0': dependencies: - "@aws-sdk/types": 3.862.0 - "@smithy/types": 4.3.2 + '@aws-sdk/types': 3.862.0 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@aws-sdk/middleware-logger@3.398.0": + '@aws-sdk/middleware-logger@3.398.0': dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/types": 2.12.0 + '@aws-sdk/types': 3.398.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@aws-sdk/middleware-logger@3.862.0": + '@aws-sdk/middleware-logger@3.862.0': dependencies: - "@aws-sdk/types": 3.862.0 - "@smithy/types": 4.3.2 + '@aws-sdk/types': 3.862.0 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@aws-sdk/middleware-recursion-detection@3.398.0": + '@aws-sdk/middleware-recursion-detection@3.398.0': dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/protocol-http": 2.0.5 - "@smithy/types": 2.12.0 + '@aws-sdk/types': 3.398.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@aws-sdk/middleware-recursion-detection@3.862.0": + '@aws-sdk/middleware-recursion-detection@3.862.0': dependencies: - "@aws-sdk/types": 3.862.0 - "@smithy/protocol-http": 5.1.3 - "@smithy/types": 4.3.2 + '@aws-sdk/types': 3.862.0 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@aws-sdk/middleware-sdk-s3@3.864.0": - dependencies: - "@aws-sdk/core": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@aws-sdk/util-arn-parser": 3.804.0 - "@smithy/core": 3.8.0 - "@smithy/node-config-provider": 4.1.4 - "@smithy/protocol-http": 5.1.3 - "@smithy/signature-v4": 5.1.3 - "@smithy/smithy-client": 4.4.10 - "@smithy/types": 4.3.2 - "@smithy/util-config-provider": 4.0.0 - "@smithy/util-middleware": 4.0.5 - "@smithy/util-stream": 4.2.4 - "@smithy/util-utf8": 4.0.0 + '@aws-sdk/middleware-sdk-s3@3.864.0': + dependencies: + '@aws-sdk/core': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@aws-sdk/util-arn-parser': 3.804.0 + '@smithy/core': 3.8.0 + '@smithy/node-config-provider': 4.1.4 + '@smithy/protocol-http': 5.1.3 + '@smithy/signature-v4': 5.1.3 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 + '@smithy/util-config-provider': 4.0.0 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-stream': 4.2.4 + '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - "@aws-sdk/middleware-sdk-sqs@3.862.0": + '@aws-sdk/middleware-sdk-sqs@3.862.0': dependencies: - "@aws-sdk/types": 3.862.0 - "@smithy/smithy-client": 4.4.10 - "@smithy/types": 4.3.2 - "@smithy/util-hex-encoding": 4.0.0 - "@smithy/util-utf8": 4.0.0 + '@aws-sdk/types': 3.862.0 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 + '@smithy/util-hex-encoding': 4.0.0 + '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - "@aws-sdk/middleware-sdk-sts@3.398.0": + '@aws-sdk/middleware-sdk-sts@3.398.0': dependencies: - "@aws-sdk/middleware-signing": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@smithy/types": 2.12.0 + '@aws-sdk/middleware-signing': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@aws-sdk/middleware-signing@3.398.0": + '@aws-sdk/middleware-signing@3.398.0': dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/property-provider": 2.2.0 - "@smithy/protocol-http": 2.0.5 - "@smithy/signature-v4": 2.3.0 - "@smithy/types": 2.12.0 - "@smithy/util-middleware": 2.2.0 + '@aws-sdk/types': 3.398.0 + '@smithy/property-provider': 2.2.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/signature-v4': 2.3.0 + '@smithy/types': 2.12.0 + '@smithy/util-middleware': 2.2.0 tslib: 2.8.1 - "@aws-sdk/middleware-ssec@3.862.0": + '@aws-sdk/middleware-ssec@3.862.0': dependencies: - "@aws-sdk/types": 3.862.0 - "@smithy/types": 4.3.2 + '@aws-sdk/types': 3.862.0 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@aws-sdk/middleware-user-agent@3.398.0": + '@aws-sdk/middleware-user-agent@3.398.0': dependencies: - "@aws-sdk/types": 3.398.0 - "@aws-sdk/util-endpoints": 3.398.0 - "@smithy/protocol-http": 2.0.5 - "@smithy/types": 2.12.0 + '@aws-sdk/types': 3.398.0 + '@aws-sdk/util-endpoints': 3.398.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@aws-sdk/middleware-user-agent@3.864.0": + '@aws-sdk/middleware-user-agent@3.864.0': dependencies: - "@aws-sdk/core": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@aws-sdk/util-endpoints": 3.862.0 - "@smithy/core": 3.8.0 - "@smithy/protocol-http": 5.1.3 - "@smithy/types": 4.3.2 + '@aws-sdk/core': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@aws-sdk/util-endpoints': 3.862.0 + '@smithy/core': 3.8.0 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@aws-sdk/nested-clients@3.864.0": - dependencies: - "@aws-crypto/sha256-browser": 5.2.0 - "@aws-crypto/sha256-js": 5.2.0 - "@aws-sdk/core": 3.864.0 - "@aws-sdk/middleware-host-header": 3.862.0 - "@aws-sdk/middleware-logger": 3.862.0 - "@aws-sdk/middleware-recursion-detection": 3.862.0 - "@aws-sdk/middleware-user-agent": 3.864.0 - "@aws-sdk/region-config-resolver": 3.862.0 - "@aws-sdk/types": 3.862.0 - "@aws-sdk/util-endpoints": 3.862.0 - "@aws-sdk/util-user-agent-browser": 3.862.0 - "@aws-sdk/util-user-agent-node": 3.864.0 - "@smithy/config-resolver": 4.1.5 - "@smithy/core": 3.8.0 - "@smithy/fetch-http-handler": 5.1.1 - "@smithy/hash-node": 4.0.5 - "@smithy/invalid-dependency": 4.0.5 - "@smithy/middleware-content-length": 4.0.5 - "@smithy/middleware-endpoint": 4.1.18 - "@smithy/middleware-retry": 4.1.19 - "@smithy/middleware-serde": 4.0.9 - "@smithy/middleware-stack": 4.0.5 - "@smithy/node-config-provider": 4.1.4 - "@smithy/node-http-handler": 4.1.1 - "@smithy/protocol-http": 5.1.3 - "@smithy/smithy-client": 4.4.10 - "@smithy/types": 4.3.2 - "@smithy/url-parser": 4.0.5 - "@smithy/util-base64": 4.0.0 - "@smithy/util-body-length-browser": 4.0.0 - "@smithy/util-body-length-node": 4.0.0 - "@smithy/util-defaults-mode-browser": 4.0.26 - "@smithy/util-defaults-mode-node": 4.0.26 - "@smithy/util-endpoints": 3.0.7 - "@smithy/util-middleware": 4.0.5 - "@smithy/util-retry": 4.0.7 - "@smithy/util-utf8": 4.0.0 + '@aws-sdk/nested-clients@3.864.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.864.0 + '@aws-sdk/middleware-host-header': 3.862.0 + '@aws-sdk/middleware-logger': 3.862.0 + '@aws-sdk/middleware-recursion-detection': 3.862.0 + '@aws-sdk/middleware-user-agent': 3.864.0 + '@aws-sdk/region-config-resolver': 3.862.0 + '@aws-sdk/types': 3.862.0 + '@aws-sdk/util-endpoints': 3.862.0 + '@aws-sdk/util-user-agent-browser': 3.862.0 + '@aws-sdk/util-user-agent-node': 3.864.0 + '@smithy/config-resolver': 4.1.5 + '@smithy/core': 3.8.0 + '@smithy/fetch-http-handler': 5.1.1 + '@smithy/hash-node': 4.0.5 + '@smithy/invalid-dependency': 4.0.5 + '@smithy/middleware-content-length': 4.0.5 + '@smithy/middleware-endpoint': 4.1.18 + '@smithy/middleware-retry': 4.1.19 + '@smithy/middleware-serde': 4.0.9 + '@smithy/middleware-stack': 4.0.5 + '@smithy/node-config-provider': 4.1.4 + '@smithy/node-http-handler': 4.1.1 + '@smithy/protocol-http': 5.1.3 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 + '@smithy/url-parser': 4.0.5 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.26 + '@smithy/util-defaults-mode-node': 4.0.26 + '@smithy/util-endpoints': 3.0.7 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-retry': 4.0.7 + '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - "@aws-sdk/region-config-resolver@3.862.0": + '@aws-sdk/region-config-resolver@3.862.0': dependencies: - "@aws-sdk/types": 3.862.0 - "@smithy/node-config-provider": 4.1.4 - "@smithy/types": 4.3.2 - "@smithy/util-config-provider": 4.0.0 - "@smithy/util-middleware": 4.0.5 + '@aws-sdk/types': 3.862.0 + '@smithy/node-config-provider': 4.1.4 + '@smithy/types': 4.3.2 + '@smithy/util-config-provider': 4.0.0 + '@smithy/util-middleware': 4.0.5 tslib: 2.8.1 - "@aws-sdk/signature-v4-multi-region@3.864.0": + '@aws-sdk/signature-v4-multi-region@3.864.0': dependencies: - "@aws-sdk/middleware-sdk-s3": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@smithy/protocol-http": 5.1.3 - "@smithy/signature-v4": 5.1.3 - "@smithy/types": 4.3.2 + '@aws-sdk/middleware-sdk-s3': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@smithy/protocol-http': 5.1.3 + '@smithy/signature-v4': 5.1.3 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@aws-sdk/token-providers@3.398.0": - dependencies: - "@aws-crypto/sha256-browser": 3.0.0 - "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/middleware-host-header": 3.398.0 - "@aws-sdk/middleware-logger": 3.398.0 - "@aws-sdk/middleware-recursion-detection": 3.398.0 - "@aws-sdk/middleware-user-agent": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@aws-sdk/util-endpoints": 3.398.0 - "@aws-sdk/util-user-agent-browser": 3.398.0 - "@aws-sdk/util-user-agent-node": 3.398.0 - "@smithy/config-resolver": 2.2.0 - "@smithy/fetch-http-handler": 2.5.0 - "@smithy/hash-node": 2.2.0 - "@smithy/invalid-dependency": 2.2.0 - "@smithy/middleware-content-length": 2.2.0 - "@smithy/middleware-endpoint": 2.5.1 - "@smithy/middleware-retry": 2.3.1 - "@smithy/middleware-serde": 2.3.0 - "@smithy/middleware-stack": 2.2.0 - "@smithy/node-config-provider": 2.3.0 - "@smithy/node-http-handler": 2.5.0 - "@smithy/property-provider": 2.2.0 - "@smithy/protocol-http": 2.0.5 - "@smithy/shared-ini-file-loader": 2.4.0 - "@smithy/smithy-client": 2.5.1 - "@smithy/types": 2.12.0 - "@smithy/url-parser": 2.2.0 - "@smithy/util-base64": 2.3.0 - "@smithy/util-body-length-browser": 2.2.0 - "@smithy/util-body-length-node": 2.3.0 - "@smithy/util-defaults-mode-browser": 2.2.1 - "@smithy/util-defaults-mode-node": 2.3.1 - "@smithy/util-retry": 2.2.0 - "@smithy/util-utf8": 2.3.0 + '@aws-sdk/token-providers@3.398.0': + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/middleware-host-header': 3.398.0 + '@aws-sdk/middleware-logger': 3.398.0 + '@aws-sdk/middleware-recursion-detection': 3.398.0 + '@aws-sdk/middleware-user-agent': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@aws-sdk/util-endpoints': 3.398.0 + '@aws-sdk/util-user-agent-browser': 3.398.0 + '@aws-sdk/util-user-agent-node': 3.398.0 + '@smithy/config-resolver': 2.2.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/hash-node': 2.2.0 + '@smithy/invalid-dependency': 2.2.0 + '@smithy/middleware-content-length': 2.2.0 + '@smithy/middleware-endpoint': 2.5.1 + '@smithy/middleware-retry': 2.3.1 + '@smithy/middleware-serde': 2.3.0 + '@smithy/middleware-stack': 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/property-provider': 2.2.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-body-length-browser': 2.2.0 + '@smithy/util-body-length-node': 2.3.0 + '@smithy/util-defaults-mode-browser': 2.2.1 + '@smithy/util-defaults-mode-node': 2.3.1 + '@smithy/util-retry': 2.2.0 + '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - "@aws-sdk/token-providers@3.864.0": + '@aws-sdk/token-providers@3.864.0': dependencies: - "@aws-sdk/core": 3.864.0 - "@aws-sdk/nested-clients": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@smithy/property-provider": 4.0.5 - "@smithy/shared-ini-file-loader": 4.0.5 - "@smithy/types": 4.3.2 + '@aws-sdk/core': 3.864.0 + '@aws-sdk/nested-clients': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@smithy/property-provider': 4.0.5 + '@smithy/shared-ini-file-loader': 4.0.5 + '@smithy/types': 4.3.2 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - "@aws-sdk/types@3.398.0": + '@aws-sdk/types@3.398.0': dependencies: - "@smithy/types": 2.12.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@aws-sdk/types@3.862.0": + '@aws-sdk/types@3.862.0': dependencies: - "@smithy/types": 4.3.2 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@aws-sdk/util-arn-parser@3.804.0": + '@aws-sdk/util-arn-parser@3.804.0': dependencies: tslib: 2.8.1 - "@aws-sdk/util-endpoints@3.398.0": + '@aws-sdk/util-endpoints@3.398.0': dependencies: - "@aws-sdk/types": 3.398.0 + '@aws-sdk/types': 3.398.0 tslib: 2.8.1 - "@aws-sdk/util-endpoints@3.862.0": + '@aws-sdk/util-endpoints@3.862.0': dependencies: - "@aws-sdk/types": 3.862.0 - "@smithy/types": 4.3.2 - "@smithy/url-parser": 4.0.5 - "@smithy/util-endpoints": 3.0.7 + '@aws-sdk/types': 3.862.0 + '@smithy/types': 4.3.2 + '@smithy/url-parser': 4.0.5 + '@smithy/util-endpoints': 3.0.7 tslib: 2.8.1 - "@aws-sdk/util-locate-window@3.804.0": + '@aws-sdk/util-locate-window@3.804.0': dependencies: tslib: 2.8.1 - "@aws-sdk/util-user-agent-browser@3.398.0": + '@aws-sdk/util-user-agent-browser@3.398.0': dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/types": 2.12.0 + '@aws-sdk/types': 3.398.0 + '@smithy/types': 2.12.0 bowser: 2.12.0 tslib: 2.8.1 - "@aws-sdk/util-user-agent-browser@3.862.0": + '@aws-sdk/util-user-agent-browser@3.862.0': dependencies: - "@aws-sdk/types": 3.862.0 - "@smithy/types": 4.3.2 + '@aws-sdk/types': 3.862.0 + '@smithy/types': 4.3.2 bowser: 2.12.0 tslib: 2.8.1 - "@aws-sdk/util-user-agent-node@3.398.0": + '@aws-sdk/util-user-agent-node@3.398.0': dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/node-config-provider": 2.3.0 - "@smithy/types": 2.12.0 + '@aws-sdk/types': 3.398.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@aws-sdk/util-user-agent-node@3.864.0": + '@aws-sdk/util-user-agent-node@3.864.0': dependencies: - "@aws-sdk/middleware-user-agent": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@smithy/node-config-provider": 4.1.4 - "@smithy/types": 4.3.2 + '@aws-sdk/middleware-user-agent': 3.864.0 + '@aws-sdk/types': 3.862.0 + '@smithy/node-config-provider': 4.1.4 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@aws-sdk/util-utf8-browser@3.259.0": + '@aws-sdk/util-utf8-browser@3.259.0': dependencies: tslib: 2.8.1 - "@aws-sdk/xml-builder@3.310.0": + '@aws-sdk/xml-builder@3.310.0': dependencies: tslib: 2.8.1 - "@aws-sdk/xml-builder@3.862.0": + '@aws-sdk/xml-builder@3.862.0': dependencies: - "@smithy/types": 4.3.2 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@babel/code-frame@7.10.4": + '@babel/code-frame@7.10.4': dependencies: - "@babel/highlight": 7.25.9 + '@babel/highlight': 7.25.9 - "@babel/code-frame@7.27.1": + '@babel/code-frame@7.27.1': dependencies: - "@babel/helper-validator-identifier": 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 js-tokens: 4.0.0 picocolors: 1.1.1 - "@babel/compat-data@7.28.0": {} + '@babel/compat-data@7.28.0': {} - "@babel/core@7.28.3": + '@babel/core@7.28.3': dependencies: - "@ampproject/remapping": 2.3.0 - "@babel/code-frame": 7.27.1 - "@babel/generator": 7.28.3 - "@babel/helper-compilation-targets": 7.27.2 - "@babel/helper-module-transforms": 7.28.3(@babel/core@7.28.3) - "@babel/helpers": 7.28.3 - "@babel/parser": 7.28.3 - "@babel/template": 7.27.2 - "@babel/traverse": 7.28.3 - "@babel/types": 7.28.2 + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.3 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.3) + '@babel/helpers': 7.28.3 + '@babel/parser': 7.28.3 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.3 + '@babel/types': 7.28.2 convert-source-map: 2.0.0 debug: 4.4.1 gensync: 1.0.0-beta.2 @@ -14734,675 +9950,675 @@ snapshots: transitivePeerDependencies: - supports-color - "@babel/eslint-parser@7.28.0(@babel/core@7.28.3)(eslint@8.57.1)": + '@babel/eslint-parser@7.28.0(@babel/core@7.28.3)(eslint@8.57.1)': dependencies: - "@babel/core": 7.28.3 - "@nicolo-ribaudo/eslint-scope-5-internals": 5.1.1-v1 + '@babel/core': 7.28.3 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 eslint: 8.57.1 eslint-visitor-keys: 2.1.0 semver: 6.3.1 - "@babel/generator@7.28.3": + '@babel/generator@7.28.3': dependencies: - "@babel/parser": 7.28.3 - "@babel/types": 7.28.2 - "@jridgewell/gen-mapping": 0.3.13 - "@jridgewell/trace-mapping": 0.3.30 + '@babel/parser': 7.28.3 + '@babel/types': 7.28.2 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.30 jsesc: 3.1.0 - "@babel/helper-annotate-as-pure@7.27.3": + '@babel/helper-annotate-as-pure@7.27.3': dependencies: - "@babel/types": 7.28.2 + '@babel/types': 7.28.2 - "@babel/helper-compilation-targets@7.27.2": + '@babel/helper-compilation-targets@7.27.2': dependencies: - "@babel/compat-data": 7.28.0 - "@babel/helper-validator-option": 7.27.1 + '@babel/compat-data': 7.28.0 + '@babel/helper-validator-option': 7.27.1 browserslist: 4.25.2 lru-cache: 5.1.1 semver: 6.3.1 - "@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.3)": + '@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-annotate-as-pure": 7.27.3 - "@babel/helper-member-expression-to-functions": 7.27.1 - "@babel/helper-optimise-call-expression": 7.27.1 - "@babel/helper-replace-supers": 7.27.1(@babel/core@7.28.3) - "@babel/helper-skip-transparent-expression-wrappers": 7.27.1 - "@babel/traverse": 7.28.3 + '@babel/core': 7.28.3 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.3) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.28.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - "@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.28.3)": + '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-annotate-as-pure": 7.27.3 + '@babel/core': 7.28.3 + '@babel/helper-annotate-as-pure': 7.27.3 regexpu-core: 6.2.0 semver: 6.3.1 - "@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.3)": + '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-compilation-targets": 7.27.2 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 debug: 4.4.1 lodash.debounce: 4.0.8 resolve: 1.22.10 transitivePeerDependencies: - supports-color - "@babel/helper-globals@7.28.0": {} + '@babel/helper-globals@7.28.0': {} - "@babel/helper-member-expression-to-functions@7.27.1": + '@babel/helper-member-expression-to-functions@7.27.1': dependencies: - "@babel/traverse": 7.28.3 - "@babel/types": 7.28.2 + '@babel/traverse': 7.28.3 + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color - "@babel/helper-module-imports@7.27.1": + '@babel/helper-module-imports@7.27.1': dependencies: - "@babel/traverse": 7.28.3 - "@babel/types": 7.28.2 + '@babel/traverse': 7.28.3 + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color - "@babel/helper-module-transforms@7.28.3(@babel/core@7.28.3)": + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-module-imports": 7.27.1 - "@babel/helper-validator-identifier": 7.27.1 - "@babel/traverse": 7.28.3 + '@babel/core': 7.28.3 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.3 transitivePeerDependencies: - supports-color - "@babel/helper-optimise-call-expression@7.27.1": + '@babel/helper-optimise-call-expression@7.27.1': dependencies: - "@babel/types": 7.28.2 + '@babel/types': 7.28.2 - "@babel/helper-plugin-utils@7.27.1": {} + '@babel/helper-plugin-utils@7.27.1': {} - "@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.3)": + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-annotate-as-pure": 7.27.3 - "@babel/helper-wrap-function": 7.28.3 - "@babel/traverse": 7.28.3 + '@babel/core': 7.28.3 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-wrap-function': 7.28.3 + '@babel/traverse': 7.28.3 transitivePeerDependencies: - supports-color - "@babel/helper-replace-supers@7.27.1(@babel/core@7.28.3)": + '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-member-expression-to-functions": 7.27.1 - "@babel/helper-optimise-call-expression": 7.27.1 - "@babel/traverse": 7.28.3 + '@babel/core': 7.28.3 + '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.28.3 transitivePeerDependencies: - supports-color - "@babel/helper-skip-transparent-expression-wrappers@7.27.1": + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: - "@babel/traverse": 7.28.3 - "@babel/types": 7.28.2 + '@babel/traverse': 7.28.3 + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color - "@babel/helper-string-parser@7.27.1": {} + '@babel/helper-string-parser@7.27.1': {} - "@babel/helper-validator-identifier@7.27.1": {} + '@babel/helper-validator-identifier@7.27.1': {} - "@babel/helper-validator-option@7.27.1": {} + '@babel/helper-validator-option@7.27.1': {} - "@babel/helper-wrap-function@7.28.3": + '@babel/helper-wrap-function@7.28.3': dependencies: - "@babel/template": 7.27.2 - "@babel/traverse": 7.28.3 - "@babel/types": 7.28.2 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.3 + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color - "@babel/helpers@7.28.3": + '@babel/helpers@7.28.3': dependencies: - "@babel/template": 7.27.2 - "@babel/types": 7.28.2 + '@babel/template': 7.27.2 + '@babel/types': 7.28.2 - "@babel/highlight@7.25.9": + '@babel/highlight@7.25.9': dependencies: - "@babel/helper-validator-identifier": 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.1.1 - "@babel/parser@7.28.3": + '@babel/parser@7.28.3': dependencies: - "@babel/types": 7.28.2 + '@babel/types': 7.28.2 - "@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/traverse": 7.28.3 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.3 transitivePeerDependencies: - supports-color - "@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-skip-transparent-expression-wrappers": 7.27.1 - "@babel/plugin-transform-optional-chaining": 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.3) transitivePeerDependencies: - supports-color - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3(@babel/core@7.28.3)": + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/traverse": 7.28.3 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.3 transitivePeerDependencies: - supports-color - "@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.28.3)": + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-create-class-features-plugin": 7.28.3(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.3) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-proposal-decorators@7.28.0(@babel/core@7.28.3)": + '@babel/plugin-proposal-decorators@7.28.0(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-create-class-features-plugin": 7.28.3(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-syntax-decorators": 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.3 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.3) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-decorators': 7.27.1(@babel/core@7.28.3) transitivePeerDependencies: - supports-color - "@babel/plugin-proposal-export-default-from@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-proposal-export-default-from@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.28.3)": + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-syntax-nullish-coalescing-operator": 7.8.3(@babel/core@7.28.3) + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.3) - "@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.28.3)": + '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-skip-transparent-expression-wrappers": 7.27.1 - "@babel/plugin-syntax-optional-chaining": 7.8.3(@babel/core@7.28.3) + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.3) transitivePeerDependencies: - supports-color - "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.3)": + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 + '@babel/core': 7.28.3 - "@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.3)": + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.3)": + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.3)": + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.3)": + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-decorators@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-syntax-decorators@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.28.3)": + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-export-default-from@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-syntax-export-default-from@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-flow@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-syntax-flow@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.3)": + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.3)": + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.3)": + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.3)": + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.3)": + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.3)": + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.3)": + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.3)": + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.3)": + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.3)": + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.3)": + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.3) + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.3)": + '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-remap-async-to-generator": 7.27.1(@babel/core@7.28.3) - "@babel/traverse": 7.28.3 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.3) + '@babel/traverse': 7.28.3 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-module-imports": 7.27.1 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-remap-async-to-generator": 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.3 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.3) transitivePeerDependencies: - supports-color - "@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-block-scoping@7.28.0(@babel/core@7.28.3)": + '@babel/plugin-transform-block-scoping@7.28.0(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-create-class-features-plugin": 7.28.3(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.3) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.28.3)": + '@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-create-class-features-plugin": 7.28.3(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.3) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-classes@7.28.3(@babel/core@7.28.3)": + '@babel/plugin-transform-classes@7.28.3(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-annotate-as-pure": 7.27.3 - "@babel/helper-compilation-targets": 7.27.2 - "@babel/helper-globals": 7.28.0 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-replace-supers": 7.27.1(@babel/core@7.28.3) - "@babel/traverse": 7.28.3 + '@babel/core': 7.28.3 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-globals': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.3) + '@babel/traverse': 7.28.3 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/template": 7.27.2 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/template': 7.27.2 - "@babel/plugin-transform-destructuring@7.28.0(@babel/core@7.28.3)": + '@babel/plugin-transform-destructuring@7.28.0(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/traverse": 7.28.3 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.3 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.3) + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.3) + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.28.3)": + '@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-transform-destructuring": 7.28.0(@babel/core@7.28.3) + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.3) transitivePeerDependencies: - supports-color - "@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-syntax-flow": 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-skip-transparent-expression-wrappers": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-compilation-targets": 7.27.2 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/traverse": 7.28.3 + '@babel/core': 7.28.3 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.3 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-module-transforms": 7.28.3(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.3) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-module-transforms": 7.28.3(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.3) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-module-transforms": 7.28.3(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-validator-identifier": 7.27.1 - "@babel/traverse": 7.28.3 + '@babel/core': 7.28.3 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.3) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.3 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-module-transforms": 7.28.3(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.3) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.3) + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-object-rest-spread@7.28.0(@babel/core@7.28.3)": + '@babel/plugin-transform-object-rest-spread@7.28.0(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-compilation-targets": 7.27.2 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-transform-destructuring": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-parameters": 7.27.7(@babel/core@7.28.3) - "@babel/traverse": 7.28.3 + '@babel/core': 7.28.3 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.3) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.3) + '@babel/traverse': 7.28.3 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-replace-supers": 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.3) transitivePeerDependencies: - supports-color - "@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-skip-transparent-expression-wrappers": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.3)": + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-create-class-features-plugin": 7.28.3(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.3) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-annotate-as-pure": 7.27.3 - "@babel/helper-create-class-features-plugin": 7.28.3(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.3) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.28.3)": + '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/plugin-transform-react-jsx": 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.3 + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.3) transitivePeerDependencies: - supports-color - "@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-annotate-as-pure": 7.27.3 - "@babel/helper-module-imports": 7.27.1 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-syntax-jsx": 7.27.1(@babel/core@7.28.3) - "@babel/types": 7.28.2 + '@babel/core': 7.28.3 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.3) + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-annotate-as-pure": 7.27.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-regenerator@7.28.3(@babel/core@7.28.3)": + '@babel/plugin-transform-regenerator@7.28.3(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.3) + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-runtime@7.28.3(@babel/core@7.28.3)": + '@babel/plugin-transform-runtime@7.28.3(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-module-imports": 7.27.1 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.3) babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.3) babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.3) @@ -15410,136 +10626,136 @@ snapshots: transitivePeerDependencies: - supports-color - "@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-skip-transparent-expression-wrappers": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.3)": + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-typescript@7.28.0(@babel/core@7.28.3)": + '@babel/plugin-transform-typescript@7.28.0(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-annotate-as-pure": 7.27.3 - "@babel/helper-create-class-features-plugin": 7.28.3(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-skip-transparent-expression-wrappers": 7.27.1 - "@babel/plugin-syntax-typescript": 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.3 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.3) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.3) transitivePeerDependencies: - supports-color - "@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.3)": - dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - - "@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.28.3)": - dependencies: - "@babel/core": 7.28.3 - "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 - - "@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.3)": - dependencies: - "@babel/core": 7.28.3 - "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 - - "@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.28.3)": - dependencies: - "@babel/core": 7.28.3 - "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 - - "@babel/preset-env@7.28.3(@babel/core@7.28.3)": - dependencies: - "@babel/compat-data": 7.28.0 - "@babel/core": 7.28.3 - "@babel/helper-compilation-targets": 7.27.2 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-validator-option": 7.27.1 - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-bugfix-safari-class-field-initializer-scope": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": 7.28.3(@babel/core@7.28.3) - "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.3) - "@babel/plugin-syntax-import-assertions": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-syntax-import-attributes": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-syntax-unicode-sets-regex": 7.18.6(@babel/core@7.28.3) - "@babel/plugin-transform-arrow-functions": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-async-generator-functions": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-async-to-generator": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-block-scoped-functions": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-block-scoping": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-class-properties": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-class-static-block": 7.28.3(@babel/core@7.28.3) - "@babel/plugin-transform-classes": 7.28.3(@babel/core@7.28.3) - "@babel/plugin-transform-computed-properties": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-destructuring": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-dotall-regex": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-duplicate-keys": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-dynamic-import": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-explicit-resource-management": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-exponentiation-operator": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-export-namespace-from": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-for-of": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-function-name": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-json-strings": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-literals": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-logical-assignment-operators": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-member-expression-literals": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-modules-amd": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-modules-commonjs": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-modules-systemjs": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-modules-umd": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-named-capturing-groups-regex": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-new-target": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-nullish-coalescing-operator": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-numeric-separator": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-object-rest-spread": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-object-super": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-optional-catch-binding": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-optional-chaining": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-parameters": 7.27.7(@babel/core@7.28.3) - "@babel/plugin-transform-private-methods": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-private-property-in-object": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-property-literals": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-regenerator": 7.28.3(@babel/core@7.28.3) - "@babel/plugin-transform-regexp-modifiers": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-reserved-words": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-shorthand-properties": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-spread": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-sticky-regex": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-template-literals": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-typeof-symbol": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-unicode-escapes": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-unicode-property-regex": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-unicode-regex": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-unicode-sets-regex": 7.27.1(@babel/core@7.28.3) - "@babel/preset-modules": 0.1.6-no-external-plugins(@babel/core@7.28.3) + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.3)': + dependencies: + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.28.3)': + dependencies: + '@babel/core': 7.28.3 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.3) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.3)': + dependencies: + '@babel/core': 7.28.3 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.3) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.28.3)': + dependencies: + '@babel/core': 7.28.3 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.3) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/preset-env@7.28.3(@babel/core@7.28.3)': + dependencies: + '@babel/compat-data': 7.28.0 + '@babel/core': 7.28.3 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.3(@babel/core@7.28.3) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.3) + '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.3) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.3) + '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-block-scoping': 7.28.0(@babel/core@7.28.3) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.28.3) + '@babel/plugin-transform-classes': 7.28.3(@babel/core@7.28.3) + '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.3) + '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-explicit-resource-management': 7.28.0(@babel/core@7.28.3) + '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-object-rest-spread': 7.28.0(@babel/core@7.28.3) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.3) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-regenerator': 7.28.3(@babel/core@7.28.3) + '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.28.3) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.3) babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.3) babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.3) babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.3) @@ -15548,87 +10764,87 @@ snapshots: transitivePeerDependencies: - supports-color - "@babel/preset-flow@7.27.1(@babel/core@7.28.3)": + '@babel/preset-flow@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-validator-option": 7.27.1 - "@babel/plugin-transform-flow-strip-types": 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.3) - "@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.3)": + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/types": 7.28.2 + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/types': 7.28.2 esutils: 2.0.3 - "@babel/preset-react@7.27.1(@babel/core@7.28.3)": + '@babel/preset-react@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-validator-option": 7.27.1 - "@babel/plugin-transform-react-display-name": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-react-jsx": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-react-jsx-development": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-react-pure-annotations": 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.3) + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.28.3) transitivePeerDependencies: - supports-color - "@babel/preset-typescript@7.27.1(@babel/core@7.28.3)": + '@babel/preset-typescript@7.27.1(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-validator-option": 7.27.1 - "@babel/plugin-syntax-jsx": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-modules-commonjs": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-typescript": 7.28.0(@babel/core@7.28.3) + '@babel/core': 7.28.3 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.3) transitivePeerDependencies: - supports-color - "@babel/register@7.28.3(@babel/core@7.28.3)": + '@babel/register@7.28.3(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 + '@babel/core': 7.28.3 clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 pirates: 4.0.7 source-map-support: 0.5.21 - "@babel/runtime@7.28.3": {} + '@babel/runtime@7.28.3': {} - "@babel/template@7.27.2": + '@babel/template@7.27.2': dependencies: - "@babel/code-frame": 7.27.1 - "@babel/parser": 7.28.3 - "@babel/types": 7.28.2 + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.28.3 + '@babel/types': 7.28.2 - "@babel/traverse@7.28.3": + '@babel/traverse@7.28.3': dependencies: - "@babel/code-frame": 7.27.1 - "@babel/generator": 7.28.3 - "@babel/helper-globals": 7.28.0 - "@babel/parser": 7.28.3 - "@babel/template": 7.27.2 - "@babel/types": 7.28.2 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.3 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.3 + '@babel/template': 7.27.2 + '@babel/types': 7.28.2 debug: 4.4.1 transitivePeerDependencies: - supports-color - "@babel/types@7.28.2": + '@babel/types@7.28.2': dependencies: - "@babel/helper-string-parser": 7.27.1 - "@babel/helper-validator-identifier": 7.27.1 + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 - "@bcoe/v8-coverage@0.2.3": {} + '@bcoe/v8-coverage@0.2.3': {} - "@changesets/apply-release-plan@7.0.12": + '@changesets/apply-release-plan@7.0.12': dependencies: - "@changesets/config": 3.1.1 - "@changesets/get-version-range-type": 0.4.0 - "@changesets/git": 3.0.4 - "@changesets/should-skip-package": 0.1.2 - "@changesets/types": 6.1.0 - "@manypkg/get-packages": 1.1.3 + '@changesets/config': 3.1.1 + '@changesets/get-version-range-type': 0.4.0 + '@changesets/git': 3.0.4 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 detect-indent: 6.1.0 fs-extra: 7.0.1 lodash.startcase: 4.4.0 @@ -15637,45 +10853,45 @@ snapshots: resolve-from: 5.0.0 semver: 7.7.2 - "@changesets/assemble-release-plan@6.0.9": + '@changesets/assemble-release-plan@6.0.9': dependencies: - "@changesets/errors": 0.2.0 - "@changesets/get-dependents-graph": 2.1.3 - "@changesets/should-skip-package": 0.1.2 - "@changesets/types": 6.1.0 - "@manypkg/get-packages": 1.1.3 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.3 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 semver: 7.7.2 - "@changesets/changelog-git@0.2.1": + '@changesets/changelog-git@0.2.1': dependencies: - "@changesets/types": 6.1.0 + '@changesets/types': 6.1.0 - "@changesets/changelog-github@0.5.1": + '@changesets/changelog-github@0.5.1': dependencies: - "@changesets/get-github-info": 0.6.0 - "@changesets/types": 6.1.0 + '@changesets/get-github-info': 0.6.0 + '@changesets/types': 6.1.0 dotenv: 8.6.0 transitivePeerDependencies: - encoding - "@changesets/cli@2.29.6(@types/node@20.19.11)": - dependencies: - "@changesets/apply-release-plan": 7.0.12 - "@changesets/assemble-release-plan": 6.0.9 - "@changesets/changelog-git": 0.2.1 - "@changesets/config": 3.1.1 - "@changesets/errors": 0.2.0 - "@changesets/get-dependents-graph": 2.1.3 - "@changesets/get-release-plan": 4.0.13 - "@changesets/git": 3.0.4 - "@changesets/logger": 0.1.1 - "@changesets/pre": 2.0.2 - "@changesets/read": 0.6.5 - "@changesets/should-skip-package": 0.1.2 - "@changesets/types": 6.1.0 - "@changesets/write": 0.4.0 - "@inquirer/external-editor": 1.0.1(@types/node@20.19.11) - "@manypkg/get-packages": 1.1.3 + '@changesets/cli@2.29.6(@types/node@20.19.11)': + dependencies: + '@changesets/apply-release-plan': 7.0.12 + '@changesets/assemble-release-plan': 6.0.9 + '@changesets/changelog-git': 0.2.1 + '@changesets/config': 3.1.1 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.3 + '@changesets/get-release-plan': 4.0.13 + '@changesets/git': 3.0.4 + '@changesets/logger': 0.1.1 + '@changesets/pre': 2.0.2 + '@changesets/read': 0.6.5 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@changesets/write': 0.4.0 + '@inquirer/external-editor': 1.0.1(@types/node@20.19.11) + '@manypkg/get-packages': 1.1.3 ansi-colors: 4.1.3 ci-info: 3.9.0 enquirer: 2.4.1 @@ -15689,151 +10905,151 @@ snapshots: spawndamnit: 3.0.1 term-size: 2.2.1 transitivePeerDependencies: - - "@types/node" + - '@types/node' - "@changesets/config@3.1.1": + '@changesets/config@3.1.1': dependencies: - "@changesets/errors": 0.2.0 - "@changesets/get-dependents-graph": 2.1.3 - "@changesets/logger": 0.1.1 - "@changesets/types": 6.1.0 - "@manypkg/get-packages": 1.1.3 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.3 + '@changesets/logger': 0.1.1 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 micromatch: 4.0.8 - "@changesets/errors@0.2.0": + '@changesets/errors@0.2.0': dependencies: extendable-error: 0.1.7 - "@changesets/get-dependents-graph@2.1.3": + '@changesets/get-dependents-graph@2.1.3': dependencies: - "@changesets/types": 6.1.0 - "@manypkg/get-packages": 1.1.3 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 picocolors: 1.1.1 semver: 7.7.2 - "@changesets/get-github-info@0.6.0": + '@changesets/get-github-info@0.6.0': dependencies: dataloader: 1.4.0 node-fetch: 2.7.0 transitivePeerDependencies: - encoding - "@changesets/get-release-plan@4.0.13": + '@changesets/get-release-plan@4.0.13': dependencies: - "@changesets/assemble-release-plan": 6.0.9 - "@changesets/config": 3.1.1 - "@changesets/pre": 2.0.2 - "@changesets/read": 0.6.5 - "@changesets/types": 6.1.0 - "@manypkg/get-packages": 1.1.3 + '@changesets/assemble-release-plan': 6.0.9 + '@changesets/config': 3.1.1 + '@changesets/pre': 2.0.2 + '@changesets/read': 0.6.5 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 - "@changesets/get-version-range-type@0.4.0": {} + '@changesets/get-version-range-type@0.4.0': {} - "@changesets/git@3.0.4": + '@changesets/git@3.0.4': dependencies: - "@changesets/errors": 0.2.0 - "@manypkg/get-packages": 1.1.3 + '@changesets/errors': 0.2.0 + '@manypkg/get-packages': 1.1.3 is-subdir: 1.2.0 micromatch: 4.0.8 spawndamnit: 3.0.1 - "@changesets/logger@0.1.1": + '@changesets/logger@0.1.1': dependencies: picocolors: 1.1.1 - "@changesets/parse@0.4.1": + '@changesets/parse@0.4.1': dependencies: - "@changesets/types": 6.1.0 + '@changesets/types': 6.1.0 js-yaml: 3.14.1 - "@changesets/pre@2.0.2": + '@changesets/pre@2.0.2': dependencies: - "@changesets/errors": 0.2.0 - "@changesets/types": 6.1.0 - "@manypkg/get-packages": 1.1.3 + '@changesets/errors': 0.2.0 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 - "@changesets/read@0.6.5": + '@changesets/read@0.6.5': dependencies: - "@changesets/git": 3.0.4 - "@changesets/logger": 0.1.1 - "@changesets/parse": 0.4.1 - "@changesets/types": 6.1.0 + '@changesets/git': 3.0.4 + '@changesets/logger': 0.1.1 + '@changesets/parse': 0.4.1 + '@changesets/types': 6.1.0 fs-extra: 7.0.1 p-filter: 2.1.0 picocolors: 1.1.1 - "@changesets/should-skip-package@0.1.2": + '@changesets/should-skip-package@0.1.2': dependencies: - "@changesets/types": 6.1.0 - "@manypkg/get-packages": 1.1.3 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 - "@changesets/types@4.1.0": {} + '@changesets/types@4.1.0': {} - "@changesets/types@6.1.0": {} + '@changesets/types@6.1.0': {} - "@changesets/write@0.4.0": + '@changesets/write@0.4.0': dependencies: - "@changesets/types": 6.1.0 + '@changesets/types': 6.1.0 fs-extra: 7.0.1 human-id: 4.1.1 prettier: 2.8.8 - "@cloudflare/kv-asset-handler@0.4.0": + '@cloudflare/kv-asset-handler@0.4.0': dependencies: mime: 3.0.0 - "@cloudflare/unenv-preset@2.7.1(unenv@2.0.0-rc.19)(workerd@1.20250829.0)": + '@cloudflare/unenv-preset@2.7.1(unenv@2.0.0-rc.19)(workerd@1.20250829.0)': dependencies: unenv: 2.0.0-rc.19 optionalDependencies: workerd: 1.20250829.0 - "@cloudflare/workerd-darwin-64@1.20250829.0": + '@cloudflare/workerd-darwin-64@1.20250829.0': optional: true - "@cloudflare/workerd-darwin-arm64@1.20250829.0": + '@cloudflare/workerd-darwin-arm64@1.20250829.0': optional: true - "@cloudflare/workerd-linux-64@1.20250829.0": + '@cloudflare/workerd-linux-64@1.20250829.0': optional: true - "@cloudflare/workerd-linux-arm64@1.20250829.0": + '@cloudflare/workerd-linux-arm64@1.20250829.0': optional: true - "@cloudflare/workerd-windows-64@1.20250829.0": + '@cloudflare/workerd-windows-64@1.20250829.0': optional: true - "@confio/ics23@0.6.8": + '@confio/ics23@0.6.8': dependencies: - "@noble/hashes": 1.8.0 + '@noble/hashes': 1.8.0 protobufjs: 6.11.4 - "@cosmjs/amino@0.32.4": + '@cosmjs/amino@0.32.4': dependencies: - "@cosmjs/crypto": 0.32.4 - "@cosmjs/encoding": 0.32.4 - "@cosmjs/math": 0.32.4 - "@cosmjs/utils": 0.32.4 + '@cosmjs/crypto': 0.32.4 + '@cosmjs/encoding': 0.32.4 + '@cosmjs/math': 0.32.4 + '@cosmjs/utils': 0.32.4 - "@cosmjs/amino@0.36.0": + '@cosmjs/amino@0.36.0': dependencies: - "@cosmjs/crypto": 0.36.0 - "@cosmjs/encoding": 0.36.0 - "@cosmjs/math": 0.36.0 - "@cosmjs/utils": 0.36.0 + '@cosmjs/crypto': 0.36.0 + '@cosmjs/encoding': 0.36.0 + '@cosmjs/math': 0.36.0 + '@cosmjs/utils': 0.36.0 - "@cosmjs/cosmwasm-stargate@0.32.4": + '@cosmjs/cosmwasm-stargate@0.32.4': dependencies: - "@cosmjs/amino": 0.32.4 - "@cosmjs/crypto": 0.32.4 - "@cosmjs/encoding": 0.32.4 - "@cosmjs/math": 0.32.4 - "@cosmjs/proto-signing": 0.32.4 - "@cosmjs/stargate": 0.32.4 - "@cosmjs/tendermint-rpc": 0.32.4 - "@cosmjs/utils": 0.32.4 + '@cosmjs/amino': 0.32.4 + '@cosmjs/crypto': 0.32.4 + '@cosmjs/encoding': 0.32.4 + '@cosmjs/math': 0.32.4 + '@cosmjs/proto-signing': 0.32.4 + '@cosmjs/stargate': 0.32.4 + '@cosmjs/tendermint-rpc': 0.32.4 + '@cosmjs/utils': 0.32.4 cosmjs-types: 0.9.0 pako: 2.1.0 transitivePeerDependencies: @@ -15841,91 +11057,91 @@ snapshots: - debug - utf-8-validate - "@cosmjs/cosmwasm-stargate@0.36.0": + '@cosmjs/cosmwasm-stargate@0.36.0': dependencies: - "@cosmjs/amino": 0.36.0 - "@cosmjs/crypto": 0.36.0 - "@cosmjs/encoding": 0.36.0 - "@cosmjs/math": 0.36.0 - "@cosmjs/proto-signing": 0.36.0 - "@cosmjs/stargate": 0.36.0 - "@cosmjs/tendermint-rpc": 0.36.0 - "@cosmjs/utils": 0.36.0 + '@cosmjs/amino': 0.36.0 + '@cosmjs/crypto': 0.36.0 + '@cosmjs/encoding': 0.36.0 + '@cosmjs/math': 0.36.0 + '@cosmjs/proto-signing': 0.36.0 + '@cosmjs/stargate': 0.36.0 + '@cosmjs/tendermint-rpc': 0.36.0 + '@cosmjs/utils': 0.36.0 cosmjs-types: 0.10.1 pako: 2.1.0 transitivePeerDependencies: - bufferutil - utf-8-validate - "@cosmjs/crypto@0.32.4": + '@cosmjs/crypto@0.32.4': dependencies: - "@cosmjs/encoding": 0.32.4 - "@cosmjs/math": 0.32.4 - "@cosmjs/utils": 0.32.4 - "@noble/hashes": 1.8.0 + '@cosmjs/encoding': 0.32.4 + '@cosmjs/math': 0.32.4 + '@cosmjs/utils': 0.32.4 + '@noble/hashes': 1.8.0 bn.js: 5.2.2 elliptic: 6.6.1 libsodium-wrappers-sumo: 0.7.15 - "@cosmjs/crypto@0.36.0": + '@cosmjs/crypto@0.36.0': dependencies: - "@cosmjs/encoding": 0.36.0 - "@cosmjs/math": 0.36.0 - "@cosmjs/utils": 0.36.0 - "@noble/ciphers": 1.3.0 - "@noble/curves": 1.9.7 - "@noble/hashes": 1.8.0 + '@cosmjs/encoding': 0.36.0 + '@cosmjs/math': 0.36.0 + '@cosmjs/utils': 0.36.0 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.7 + '@noble/hashes': 1.8.0 hash-wasm: 4.12.0 - "@cosmjs/encoding@0.32.4": + '@cosmjs/encoding@0.32.4': dependencies: base64-js: 1.5.1 bech32: 1.1.4 readonly-date: 1.0.0 - "@cosmjs/encoding@0.36.0": + '@cosmjs/encoding@0.36.0': dependencies: base64-js: 1.5.1 bech32: 1.1.4 readonly-date: 1.0.0 - "@cosmjs/json-rpc@0.32.4": + '@cosmjs/json-rpc@0.32.4': dependencies: - "@cosmjs/stream": 0.32.4 + '@cosmjs/stream': 0.32.4 xstream: 11.14.0 - "@cosmjs/json-rpc@0.36.0": + '@cosmjs/json-rpc@0.36.0': dependencies: - "@cosmjs/stream": 0.36.0 + '@cosmjs/stream': 0.36.0 xstream: 11.14.0 - "@cosmjs/math@0.32.4": + '@cosmjs/math@0.32.4': dependencies: bn.js: 5.2.2 - "@cosmjs/math@0.36.0": {} + '@cosmjs/math@0.36.0': {} - "@cosmjs/proto-signing@0.32.4": + '@cosmjs/proto-signing@0.32.4': dependencies: - "@cosmjs/amino": 0.32.4 - "@cosmjs/crypto": 0.32.4 - "@cosmjs/encoding": 0.32.4 - "@cosmjs/math": 0.32.4 - "@cosmjs/utils": 0.32.4 + '@cosmjs/amino': 0.32.4 + '@cosmjs/crypto': 0.32.4 + '@cosmjs/encoding': 0.32.4 + '@cosmjs/math': 0.32.4 + '@cosmjs/utils': 0.32.4 cosmjs-types: 0.9.0 - "@cosmjs/proto-signing@0.36.0": + '@cosmjs/proto-signing@0.36.0': dependencies: - "@cosmjs/amino": 0.36.0 - "@cosmjs/crypto": 0.36.0 - "@cosmjs/encoding": 0.36.0 - "@cosmjs/math": 0.36.0 - "@cosmjs/utils": 0.36.0 + '@cosmjs/amino': 0.36.0 + '@cosmjs/crypto': 0.36.0 + '@cosmjs/encoding': 0.36.0 + '@cosmjs/math': 0.36.0 + '@cosmjs/utils': 0.36.0 cosmjs-types: 0.10.1 - "@cosmjs/socket@0.32.4": + '@cosmjs/socket@0.32.4': dependencies: - "@cosmjs/stream": 0.32.4 + '@cosmjs/stream': 0.32.4 isomorphic-ws: 4.0.1(ws@7.5.10) ws: 7.5.10 xstream: 11.14.0 @@ -15933,9 +11149,9 @@ snapshots: - bufferutil - utf-8-validate - "@cosmjs/socket@0.36.0": + '@cosmjs/socket@0.36.0': dependencies: - "@cosmjs/stream": 0.36.0 + '@cosmjs/stream': 0.36.0 isomorphic-ws: 4.0.1(ws@7.5.10) ws: 7.5.10 xstream: 11.14.0 @@ -15943,16 +11159,16 @@ snapshots: - bufferutil - utf-8-validate - "@cosmjs/stargate@0.32.4": + '@cosmjs/stargate@0.32.4': dependencies: - "@confio/ics23": 0.6.8 - "@cosmjs/amino": 0.32.4 - "@cosmjs/encoding": 0.32.4 - "@cosmjs/math": 0.32.4 - "@cosmjs/proto-signing": 0.32.4 - "@cosmjs/stream": 0.32.4 - "@cosmjs/tendermint-rpc": 0.32.4 - "@cosmjs/utils": 0.32.4 + '@confio/ics23': 0.6.8 + '@cosmjs/amino': 0.32.4 + '@cosmjs/encoding': 0.32.4 + '@cosmjs/math': 0.32.4 + '@cosmjs/proto-signing': 0.32.4 + '@cosmjs/stream': 0.32.4 + '@cosmjs/tendermint-rpc': 0.32.4 + '@cosmjs/utils': 0.32.4 cosmjs-types: 0.9.0 xstream: 11.14.0 transitivePeerDependencies: @@ -15960,37 +11176,37 @@ snapshots: - debug - utf-8-validate - "@cosmjs/stargate@0.36.0": + '@cosmjs/stargate@0.36.0': dependencies: - "@cosmjs/amino": 0.36.0 - "@cosmjs/encoding": 0.36.0 - "@cosmjs/math": 0.36.0 - "@cosmjs/proto-signing": 0.36.0 - "@cosmjs/stream": 0.36.0 - "@cosmjs/tendermint-rpc": 0.36.0 - "@cosmjs/utils": 0.36.0 + '@cosmjs/amino': 0.36.0 + '@cosmjs/encoding': 0.36.0 + '@cosmjs/math': 0.36.0 + '@cosmjs/proto-signing': 0.36.0 + '@cosmjs/stream': 0.36.0 + '@cosmjs/tendermint-rpc': 0.36.0 + '@cosmjs/utils': 0.36.0 cosmjs-types: 0.10.1 transitivePeerDependencies: - bufferutil - utf-8-validate - "@cosmjs/stream@0.32.4": + '@cosmjs/stream@0.32.4': dependencies: xstream: 11.14.0 - "@cosmjs/stream@0.36.0": + '@cosmjs/stream@0.36.0': dependencies: xstream: 11.14.0 - "@cosmjs/tendermint-rpc@0.32.4": + '@cosmjs/tendermint-rpc@0.32.4': dependencies: - "@cosmjs/crypto": 0.32.4 - "@cosmjs/encoding": 0.32.4 - "@cosmjs/json-rpc": 0.32.4 - "@cosmjs/math": 0.32.4 - "@cosmjs/socket": 0.32.4 - "@cosmjs/stream": 0.32.4 - "@cosmjs/utils": 0.32.4 + '@cosmjs/crypto': 0.32.4 + '@cosmjs/encoding': 0.32.4 + '@cosmjs/json-rpc': 0.32.4 + '@cosmjs/math': 0.32.4 + '@cosmjs/socket': 0.32.4 + '@cosmjs/stream': 0.32.4 + '@cosmjs/utils': 0.32.4 axios: 1.11.0 readonly-date: 1.0.0 xstream: 11.14.0 @@ -15999,26 +11215,26 @@ snapshots: - debug - utf-8-validate - "@cosmjs/tendermint-rpc@0.36.0": + '@cosmjs/tendermint-rpc@0.36.0': dependencies: - "@cosmjs/crypto": 0.36.0 - "@cosmjs/encoding": 0.36.0 - "@cosmjs/json-rpc": 0.36.0 - "@cosmjs/math": 0.36.0 - "@cosmjs/socket": 0.36.0 - "@cosmjs/stream": 0.36.0 - "@cosmjs/utils": 0.36.0 + '@cosmjs/crypto': 0.36.0 + '@cosmjs/encoding': 0.36.0 + '@cosmjs/json-rpc': 0.36.0 + '@cosmjs/math': 0.36.0 + '@cosmjs/socket': 0.36.0 + '@cosmjs/stream': 0.36.0 + '@cosmjs/utils': 0.36.0 readonly-date: 1.0.0 xstream: 11.14.0 transitivePeerDependencies: - bufferutil - utf-8-validate - "@cosmjs/utils@0.32.4": {} + '@cosmjs/utils@0.32.4': {} - "@cosmjs/utils@0.36.0": {} + '@cosmjs/utils@0.36.0': {} - "@craftzdog/react-native-buffer@6.1.0(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)": + '@craftzdog/react-native-buffer@6.1.0(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)': dependencies: ieee754: 1.2.1 react-native-quick-base64: 2.2.1(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) @@ -16026,11 +11242,11 @@ snapshots: - react - react-native - "@cspotcode/source-map-support@0.8.1": + '@cspotcode/source-map-support@0.8.1': dependencies: - "@jridgewell/trace-mapping": 0.3.9 + '@jridgewell/trace-mapping': 0.3.9 - "@dotenvx/dotenvx@1.31.0": + '@dotenvx/dotenvx@1.31.0': dependencies: commander: 11.1.0 dotenv: 16.6.1 @@ -16042,175 +11258,175 @@ snapshots: picomatch: 4.0.3 which: 4.0.0 - "@ecies/ciphers@0.2.4(@noble/ciphers@1.3.0)": + '@ecies/ciphers@0.2.4(@noble/ciphers@1.3.0)': dependencies: - "@noble/ciphers": 1.3.0 + '@noble/ciphers': 1.3.0 - "@emnapi/core@1.4.5": + '@emnapi/core@1.4.5': dependencies: - "@emnapi/wasi-threads": 1.0.4 + '@emnapi/wasi-threads': 1.0.4 tslib: 2.8.1 optional: true - "@emnapi/runtime@1.4.5": + '@emnapi/runtime@1.4.5': dependencies: tslib: 2.8.1 optional: true - "@emnapi/wasi-threads@1.0.4": + '@emnapi/wasi-threads@1.0.4': dependencies: tslib: 2.8.1 optional: true - "@esbuild/aix-ppc64@0.25.4": + '@esbuild/aix-ppc64@0.25.4': optional: true - "@esbuild/android-arm64@0.17.19": + '@esbuild/android-arm64@0.17.19': optional: true - "@esbuild/android-arm64@0.25.4": + '@esbuild/android-arm64@0.25.4': optional: true - "@esbuild/android-arm@0.17.19": + '@esbuild/android-arm@0.17.19': optional: true - "@esbuild/android-arm@0.25.4": + '@esbuild/android-arm@0.25.4': optional: true - "@esbuild/android-x64@0.17.19": + '@esbuild/android-x64@0.17.19': optional: true - "@esbuild/android-x64@0.25.4": + '@esbuild/android-x64@0.25.4': optional: true - "@esbuild/darwin-arm64@0.17.19": + '@esbuild/darwin-arm64@0.17.19': optional: true - "@esbuild/darwin-arm64@0.25.4": + '@esbuild/darwin-arm64@0.25.4': optional: true - "@esbuild/darwin-x64@0.17.19": + '@esbuild/darwin-x64@0.17.19': optional: true - "@esbuild/darwin-x64@0.25.4": + '@esbuild/darwin-x64@0.25.4': optional: true - "@esbuild/freebsd-arm64@0.17.19": + '@esbuild/freebsd-arm64@0.17.19': optional: true - "@esbuild/freebsd-arm64@0.25.4": + '@esbuild/freebsd-arm64@0.25.4': optional: true - "@esbuild/freebsd-x64@0.17.19": + '@esbuild/freebsd-x64@0.17.19': optional: true - "@esbuild/freebsd-x64@0.25.4": + '@esbuild/freebsd-x64@0.25.4': optional: true - "@esbuild/linux-arm64@0.17.19": + '@esbuild/linux-arm64@0.17.19': optional: true - "@esbuild/linux-arm64@0.25.4": + '@esbuild/linux-arm64@0.25.4': optional: true - "@esbuild/linux-arm@0.17.19": + '@esbuild/linux-arm@0.17.19': optional: true - "@esbuild/linux-arm@0.25.4": + '@esbuild/linux-arm@0.25.4': optional: true - "@esbuild/linux-ia32@0.17.19": + '@esbuild/linux-ia32@0.17.19': optional: true - "@esbuild/linux-ia32@0.25.4": + '@esbuild/linux-ia32@0.25.4': optional: true - "@esbuild/linux-loong64@0.17.19": + '@esbuild/linux-loong64@0.17.19': optional: true - "@esbuild/linux-loong64@0.25.4": + '@esbuild/linux-loong64@0.25.4': optional: true - "@esbuild/linux-mips64el@0.17.19": + '@esbuild/linux-mips64el@0.17.19': optional: true - "@esbuild/linux-mips64el@0.25.4": + '@esbuild/linux-mips64el@0.25.4': optional: true - "@esbuild/linux-ppc64@0.17.19": + '@esbuild/linux-ppc64@0.17.19': optional: true - "@esbuild/linux-ppc64@0.25.4": + '@esbuild/linux-ppc64@0.25.4': optional: true - "@esbuild/linux-riscv64@0.17.19": + '@esbuild/linux-riscv64@0.17.19': optional: true - "@esbuild/linux-riscv64@0.25.4": + '@esbuild/linux-riscv64@0.25.4': optional: true - "@esbuild/linux-s390x@0.17.19": + '@esbuild/linux-s390x@0.17.19': optional: true - "@esbuild/linux-s390x@0.25.4": + '@esbuild/linux-s390x@0.25.4': optional: true - "@esbuild/linux-x64@0.17.19": + '@esbuild/linux-x64@0.17.19': optional: true - "@esbuild/linux-x64@0.25.4": + '@esbuild/linux-x64@0.25.4': optional: true - "@esbuild/netbsd-arm64@0.25.4": + '@esbuild/netbsd-arm64@0.25.4': optional: true - "@esbuild/netbsd-x64@0.17.19": + '@esbuild/netbsd-x64@0.17.19': optional: true - "@esbuild/netbsd-x64@0.25.4": + '@esbuild/netbsd-x64@0.25.4': optional: true - "@esbuild/openbsd-arm64@0.25.4": + '@esbuild/openbsd-arm64@0.25.4': optional: true - "@esbuild/openbsd-x64@0.17.19": + '@esbuild/openbsd-x64@0.17.19': optional: true - "@esbuild/openbsd-x64@0.25.4": + '@esbuild/openbsd-x64@0.25.4': optional: true - "@esbuild/sunos-x64@0.17.19": + '@esbuild/sunos-x64@0.17.19': optional: true - "@esbuild/sunos-x64@0.25.4": + '@esbuild/sunos-x64@0.25.4': optional: true - "@esbuild/win32-arm64@0.17.19": + '@esbuild/win32-arm64@0.17.19': optional: true - "@esbuild/win32-arm64@0.25.4": + '@esbuild/win32-arm64@0.25.4': optional: true - "@esbuild/win32-ia32@0.17.19": + '@esbuild/win32-ia32@0.17.19': optional: true - "@esbuild/win32-ia32@0.25.4": + '@esbuild/win32-ia32@0.25.4': optional: true - "@esbuild/win32-x64@0.17.19": + '@esbuild/win32-x64@0.17.19': optional: true - "@esbuild/win32-x64@0.25.4": + '@esbuild/win32-x64@0.25.4': optional: true - "@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)": + '@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)': dependencies: eslint: 8.57.1 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.1 @@ -16224,30 +11440,30 @@ snapshots: transitivePeerDependencies: - supports-color - "@eslint/js@8.57.1": {} - - "@expo/cli@0.24.20(graphql@16.11.0)": - dependencies: - "@0no-co/graphql.web": 1.2.0(graphql@16.11.0) - "@babel/runtime": 7.28.3 - "@expo/code-signing-certificates": 0.0.5 - "@expo/config": 11.0.13 - "@expo/config-plugins": 10.1.2 - "@expo/devcert": 1.2.0 - "@expo/env": 1.0.7 - "@expo/image-utils": 0.7.6 - "@expo/json-file": 9.1.5 - "@expo/metro-config": 0.20.17 - "@expo/osascript": 2.2.5 - "@expo/package-manager": 1.8.6 - "@expo/plist": 0.3.5 - "@expo/prebuild-config": 9.0.11 - "@expo/spawn-async": 1.7.2 - "@expo/ws-tunnel": 1.0.6 - "@expo/xcpretty": 4.3.2 - "@react-native/dev-middleware": 0.79.5 - "@urql/core": 5.2.0(graphql@16.11.0) - "@urql/exchange-retry": 1.3.2(@urql/core@5.2.0(graphql@16.11.0)) + '@eslint/js@8.57.1': {} + + '@expo/cli@0.24.20(graphql@16.11.0)': + dependencies: + '@0no-co/graphql.web': 1.2.0(graphql@16.11.0) + '@babel/runtime': 7.28.3 + '@expo/code-signing-certificates': 0.0.5 + '@expo/config': 11.0.13 + '@expo/config-plugins': 10.1.2 + '@expo/devcert': 1.2.0 + '@expo/env': 1.0.7 + '@expo/image-utils': 0.7.6 + '@expo/json-file': 9.1.5 + '@expo/metro-config': 0.20.17 + '@expo/osascript': 2.2.5 + '@expo/package-manager': 1.8.6 + '@expo/plist': 0.3.5 + '@expo/prebuild-config': 9.0.11 + '@expo/spawn-async': 1.7.2 + '@expo/ws-tunnel': 1.0.6 + '@expo/xcpretty': 4.3.2 + '@react-native/dev-middleware': 0.79.5 + '@urql/core': 5.2.0(graphql@16.11.0) + '@urql/exchange-retry': 1.3.2(@urql/core@5.2.0(graphql@16.11.0)) accepts: 1.3.8 arg: 5.0.2 better-opn: 3.0.2 @@ -16295,17 +11511,17 @@ snapshots: - supports-color - utf-8-validate - "@expo/code-signing-certificates@0.0.5": + '@expo/code-signing-certificates@0.0.5': dependencies: node-forge: 1.3.1 nullthrows: 1.1.1 - "@expo/config-plugins@10.1.2": + '@expo/config-plugins@10.1.2': dependencies: - "@expo/config-types": 53.0.5 - "@expo/json-file": 9.1.5 - "@expo/plist": 0.3.5 - "@expo/sdk-runtime-versions": 1.0.0 + '@expo/config-types': 53.0.5 + '@expo/json-file': 9.1.5 + '@expo/plist': 0.3.5 + '@expo/sdk-runtime-versions': 1.0.0 chalk: 4.1.2 debug: 4.4.1 getenv: 2.0.0 @@ -16319,12 +11535,12 @@ snapshots: transitivePeerDependencies: - supports-color - "@expo/config-plugins@9.0.17": + '@expo/config-plugins@9.0.17': dependencies: - "@expo/config-types": 52.0.5 - "@expo/json-file": 9.0.2 - "@expo/plist": 0.2.2 - "@expo/sdk-runtime-versions": 1.0.0 + '@expo/config-types': 52.0.5 + '@expo/json-file': 9.0.2 + '@expo/plist': 0.2.2 + '@expo/sdk-runtime-versions': 1.0.0 chalk: 4.1.2 debug: 4.4.1 getenv: 1.0.0 @@ -16338,16 +11554,16 @@ snapshots: transitivePeerDependencies: - supports-color - "@expo/config-types@52.0.5": {} + '@expo/config-types@52.0.5': {} - "@expo/config-types@53.0.5": {} + '@expo/config-types@53.0.5': {} - "@expo/config@10.0.11": + '@expo/config@10.0.11': dependencies: - "@babel/code-frame": 7.10.4 - "@expo/config-plugins": 9.0.17 - "@expo/config-types": 52.0.5 - "@expo/json-file": 9.1.5 + '@babel/code-frame': 7.10.4 + '@expo/config-plugins': 9.0.17 + '@expo/config-types': 52.0.5 + '@expo/json-file': 9.1.5 deepmerge: 4.3.1 getenv: 1.0.0 glob: 10.4.5 @@ -16360,12 +11576,12 @@ snapshots: transitivePeerDependencies: - supports-color - "@expo/config@11.0.13": + '@expo/config@11.0.13': dependencies: - "@babel/code-frame": 7.10.4 - "@expo/config-plugins": 10.1.2 - "@expo/config-types": 53.0.5 - "@expo/json-file": 9.1.5 + '@babel/code-frame': 7.10.4 + '@expo/config-plugins': 10.1.2 + '@expo/config-types': 53.0.5 + '@expo/json-file': 9.1.5 deepmerge: 4.3.1 getenv: 2.0.0 glob: 10.4.5 @@ -16378,15 +11594,15 @@ snapshots: transitivePeerDependencies: - supports-color - "@expo/devcert@1.2.0": + '@expo/devcert@1.2.0': dependencies: - "@expo/sudo-prompt": 9.3.2 + '@expo/sudo-prompt': 9.3.2 debug: 3.2.7 glob: 10.4.5 transitivePeerDependencies: - supports-color - "@expo/env@0.4.2": + '@expo/env@0.4.2': dependencies: chalk: 4.1.2 debug: 4.4.1 @@ -16396,7 +11612,7 @@ snapshots: transitivePeerDependencies: - supports-color - "@expo/env@1.0.7": + '@expo/env@1.0.7': dependencies: chalk: 4.1.2 debug: 4.4.1 @@ -16406,9 +11622,9 @@ snapshots: transitivePeerDependencies: - supports-color - "@expo/fingerprint@0.13.4": + '@expo/fingerprint@0.13.4': dependencies: - "@expo/spawn-async": 1.7.2 + '@expo/spawn-async': 1.7.2 arg: 5.0.2 chalk: 4.1.2 debug: 4.4.1 @@ -16423,9 +11639,9 @@ snapshots: transitivePeerDependencies: - supports-color - "@expo/image-utils@0.7.6": + '@expo/image-utils@0.7.6': dependencies: - "@expo/spawn-async": 1.7.2 + '@expo/spawn-async': 1.7.2 chalk: 4.1.2 getenv: 2.0.0 jimp-compact: 0.16.1 @@ -16435,27 +11651,27 @@ snapshots: temp-dir: 2.0.0 unique-string: 2.0.0 - "@expo/json-file@9.0.2": + '@expo/json-file@9.0.2': dependencies: - "@babel/code-frame": 7.10.4 + '@babel/code-frame': 7.10.4 json5: 2.2.3 write-file-atomic: 2.4.3 - "@expo/json-file@9.1.5": + '@expo/json-file@9.1.5': dependencies: - "@babel/code-frame": 7.10.4 + '@babel/code-frame': 7.10.4 json5: 2.2.3 - "@expo/metro-config@0.20.17": + '@expo/metro-config@0.20.17': dependencies: - "@babel/core": 7.28.3 - "@babel/generator": 7.28.3 - "@babel/parser": 7.28.3 - "@babel/types": 7.28.2 - "@expo/config": 11.0.13 - "@expo/env": 1.0.7 - "@expo/json-file": 9.1.5 - "@expo/spawn-async": 1.7.2 + '@babel/core': 7.28.3 + '@babel/generator': 7.28.3 + '@babel/parser': 7.28.3 + '@babel/types': 7.28.2 + '@expo/config': 11.0.13 + '@expo/env': 1.0.7 + '@expo/json-file': 9.1.5 + '@expo/spawn-async': 1.7.2 chalk: 4.1.2 debug: 4.4.1 dotenv: 16.4.7 @@ -16470,40 +11686,40 @@ snapshots: transitivePeerDependencies: - supports-color - "@expo/osascript@2.2.5": + '@expo/osascript@2.2.5': dependencies: - "@expo/spawn-async": 1.7.2 + '@expo/spawn-async': 1.7.2 exec-async: 2.2.0 - "@expo/package-manager@1.8.6": + '@expo/package-manager@1.8.6': dependencies: - "@expo/json-file": 9.1.5 - "@expo/spawn-async": 1.7.2 + '@expo/json-file': 9.1.5 + '@expo/spawn-async': 1.7.2 chalk: 4.1.2 npm-package-arg: 11.0.3 ora: 3.4.0 resolve-workspace-root: 2.0.0 - "@expo/plist@0.2.2": + '@expo/plist@0.2.2': dependencies: - "@xmldom/xmldom": 0.7.13 + '@xmldom/xmldom': 0.7.13 base64-js: 1.5.1 xmlbuilder: 14.0.0 - "@expo/plist@0.3.5": + '@expo/plist@0.3.5': dependencies: - "@xmldom/xmldom": 0.8.11 + '@xmldom/xmldom': 0.8.11 base64-js: 1.5.1 xmlbuilder: 15.1.1 - "@expo/prebuild-config@9.0.11": + '@expo/prebuild-config@9.0.11': dependencies: - "@expo/config": 11.0.13 - "@expo/config-plugins": 10.1.2 - "@expo/config-types": 53.0.5 - "@expo/image-utils": 0.7.6 - "@expo/json-file": 9.1.5 - "@react-native/normalize-colors": 0.79.5 + '@expo/config': 11.0.13 + '@expo/config-plugins': 10.1.2 + '@expo/config-types': 53.0.5 + '@expo/image-utils': 0.7.6 + '@expo/json-file': 9.1.5 + '@react-native/normalize-colors': 0.79.5 debug: 4.4.1 resolve-from: 5.0.0 semver: 7.7.2 @@ -16511,157 +11727,157 @@ snapshots: transitivePeerDependencies: - supports-color - "@expo/sdk-runtime-versions@1.0.0": {} + '@expo/sdk-runtime-versions@1.0.0': {} - "@expo/spawn-async@1.7.2": + '@expo/spawn-async@1.7.2': dependencies: cross-spawn: 7.0.6 - "@expo/sudo-prompt@9.3.2": {} + '@expo/sudo-prompt@9.3.2': {} - "@expo/vector-icons@14.1.0(expo-font@13.3.2(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react@18.3.1))(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)": + '@expo/vector-icons@14.1.0(expo-font@13.3.2(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react@18.3.1))(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)': dependencies: expo-font: 13.3.2(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react@18.3.1) react: 18.3.1 react-native: 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1) - "@expo/ws-tunnel@1.0.6": {} + '@expo/ws-tunnel@1.0.6': {} - "@expo/xcpretty@4.3.2": + '@expo/xcpretty@4.3.2': dependencies: - "@babel/code-frame": 7.10.4 + '@babel/code-frame': 7.10.4 chalk: 4.1.2 find-up: 5.0.0 js-yaml: 4.1.0 - "@fastify/busboy@2.1.1": {} + '@fastify/busboy@2.1.1': {} - "@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.3": + '@floating-ui/dom@1.7.3': 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.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": + '@floating-ui/react-dom@2.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - "@floating-ui/dom": 1.7.3 + '@floating-ui/dom': 1.7.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - "@floating-ui/utils@0.2.10": {} + '@floating-ui/utils@0.2.10': {} - "@graphql-typed-document-node/core@3.2.0(graphql@16.11.0)": + '@graphql-typed-document-node/core@3.2.0(graphql@16.11.0)': dependencies: graphql: 16.11.0 - "@heroicons/react@2.2.0(react@18.3.1)": + '@heroicons/react@2.2.0(react@18.3.1)': dependencies: react: 18.3.1 - "@humanwhocodes/config-array@0.13.0": + '@humanwhocodes/config-array@0.13.0': dependencies: - "@humanwhocodes/object-schema": 2.0.3 + '@humanwhocodes/object-schema': 2.0.3 debug: 4.4.1 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/sharp-darwin-arm64@0.33.5": + '@img/sharp-darwin-arm64@0.33.5': optionalDependencies: - "@img/sharp-libvips-darwin-arm64": 1.0.4 + '@img/sharp-libvips-darwin-arm64': 1.0.4 optional: true - "@img/sharp-darwin-x64@0.33.5": + '@img/sharp-darwin-x64@0.33.5': optionalDependencies: - "@img/sharp-libvips-darwin-x64": 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 optional: true - "@img/sharp-libvips-darwin-arm64@1.0.4": + '@img/sharp-libvips-darwin-arm64@1.0.4': optional: true - "@img/sharp-libvips-darwin-x64@1.0.4": + '@img/sharp-libvips-darwin-x64@1.0.4': optional: true - "@img/sharp-libvips-linux-arm64@1.0.4": + '@img/sharp-libvips-linux-arm64@1.0.4': optional: true - "@img/sharp-libvips-linux-arm@1.0.5": + '@img/sharp-libvips-linux-arm@1.0.5': optional: true - "@img/sharp-libvips-linux-s390x@1.0.4": + '@img/sharp-libvips-linux-s390x@1.0.4': optional: true - "@img/sharp-libvips-linux-x64@1.0.4": + '@img/sharp-libvips-linux-x64@1.0.4': optional: true - "@img/sharp-libvips-linuxmusl-arm64@1.0.4": + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': optional: true - "@img/sharp-libvips-linuxmusl-x64@1.0.4": + '@img/sharp-libvips-linuxmusl-x64@1.0.4': optional: true - "@img/sharp-linux-arm64@0.33.5": + '@img/sharp-linux-arm64@0.33.5': optionalDependencies: - "@img/sharp-libvips-linux-arm64": 1.0.4 + '@img/sharp-libvips-linux-arm64': 1.0.4 optional: true - "@img/sharp-linux-arm@0.33.5": + '@img/sharp-linux-arm@0.33.5': optionalDependencies: - "@img/sharp-libvips-linux-arm": 1.0.5 + '@img/sharp-libvips-linux-arm': 1.0.5 optional: true - "@img/sharp-linux-s390x@0.33.5": + '@img/sharp-linux-s390x@0.33.5': optionalDependencies: - "@img/sharp-libvips-linux-s390x": 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 optional: true - "@img/sharp-linux-x64@0.33.5": + '@img/sharp-linux-x64@0.33.5': optionalDependencies: - "@img/sharp-libvips-linux-x64": 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 optional: true - "@img/sharp-linuxmusl-arm64@0.33.5": + '@img/sharp-linuxmusl-arm64@0.33.5': optionalDependencies: - "@img/sharp-libvips-linuxmusl-arm64": 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 optional: true - "@img/sharp-linuxmusl-x64@0.33.5": + '@img/sharp-linuxmusl-x64@0.33.5': optionalDependencies: - "@img/sharp-libvips-linuxmusl-x64": 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 optional: true - "@img/sharp-wasm32@0.33.5": + '@img/sharp-wasm32@0.33.5': dependencies: - "@emnapi/runtime": 1.4.5 + '@emnapi/runtime': 1.4.5 optional: true - "@img/sharp-win32-ia32@0.33.5": + '@img/sharp-win32-ia32@0.33.5': optional: true - "@img/sharp-win32-x64@0.33.5": + '@img/sharp-win32-x64@0.33.5': optional: true - "@inquirer/external-editor@1.0.1(@types/node@20.19.11)": + '@inquirer/external-editor@1.0.1(@types/node@20.19.11)': dependencies: chardet: 2.1.0 iconv-lite: 0.6.3 optionalDependencies: - "@types/node": 20.19.11 + '@types/node': 20.19.11 - "@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 - "@isaacs/cliui@8.0.2": + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 @@ -16670,13 +11886,13 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - "@isaacs/fs-minipass@4.0.1": + '@isaacs/fs-minipass@4.0.1': dependencies: minipass: 7.1.2 - "@isaacs/ttlcache@1.4.1": {} + '@isaacs/ttlcache@1.4.1': {} - "@istanbuljs/load-nyc-config@1.1.0": + '@istanbuljs/load-nyc-config@1.1.0': dependencies: camelcase: 5.3.1 find-up: 4.1.0 @@ -16684,25 +11900,25 @@ snapshots: js-yaml: 3.14.1 resolve-from: 5.0.0 - "@istanbuljs/schema@0.1.3": {} + '@istanbuljs/schema@0.1.3': {} - "@jest/console@29.7.0": + '@jest/console@29.7.0': dependencies: - "@jest/types": 29.6.3 - "@types/node": 20.19.11 + '@jest/types': 29.6.3 + '@types/node': 20.19.11 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 slash: 3.0.0 - "@jest/core@29.7.0(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2))": + '@jest/core@29.7.0(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2))': dependencies: - "@jest/console": 29.7.0 - "@jest/reporters": 29.7.0 - "@jest/test-result": 29.7.0 - "@jest/transform": 29.7.0 - "@jest/types": 29.6.3 - "@types/node": 20.19.11 + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.19.11 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 @@ -16730,55 +11946,68 @@ snapshots: - supports-color - ts-node - "@jest/create-cache-key-function@29.7.0": + '@jest/create-cache-key-function@29.7.0': dependencies: - "@jest/types": 29.6.3 + '@jest/types': 29.6.3 - "@jest/environment@29.7.0": + '@jest/diff-sequences@30.0.1': {} + + '@jest/environment@29.7.0': dependencies: - "@jest/fake-timers": 29.7.0 - "@jest/types": 29.6.3 - "@types/node": 20.19.11 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.19.11 jest-mock: 29.7.0 - "@jest/expect-utils@29.7.0": + '@jest/expect-utils@29.7.0': dependencies: jest-get-type: 29.6.3 - "@jest/expect@29.7.0": + '@jest/expect-utils@30.1.2': + dependencies: + '@jest/get-type': 30.1.0 + + '@jest/expect@29.7.0': dependencies: expect: 29.7.0 jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color - "@jest/fake-timers@29.7.0": + '@jest/fake-timers@29.7.0': dependencies: - "@jest/types": 29.6.3 - "@sinonjs/fake-timers": 10.3.0 - "@types/node": 20.19.11 + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 20.19.11 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 - "@jest/globals@29.7.0": + '@jest/get-type@30.1.0': {} + + '@jest/globals@29.7.0': dependencies: - "@jest/environment": 29.7.0 - "@jest/expect": 29.7.0 - "@jest/types": 29.6.3 + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 jest-mock: 29.7.0 transitivePeerDependencies: - supports-color - "@jest/reporters@29.7.0": + '@jest/pattern@30.0.1': + dependencies: + '@types/node': 20.19.11 + jest-regex-util: 30.0.1 + + '@jest/reporters@29.7.0': dependencies: - "@bcoe/v8-coverage": 0.2.3 - "@jest/console": 29.7.0 - "@jest/test-result": 29.7.0 - "@jest/transform": 29.7.0 - "@jest/types": 29.6.3 - "@jridgewell/trace-mapping": 0.3.30 - "@types/node": 20.19.11 + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.30 + '@types/node': 20.19.11 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -16799,35 +12028,39 @@ snapshots: transitivePeerDependencies: - supports-color - "@jest/schemas@29.6.3": + '@jest/schemas@29.6.3': dependencies: - "@sinclair/typebox": 0.27.8 + '@sinclair/typebox': 0.27.8 - "@jest/source-map@29.6.3": + '@jest/schemas@30.0.5': dependencies: - "@jridgewell/trace-mapping": 0.3.30 + '@sinclair/typebox': 0.34.41 + + '@jest/source-map@29.6.3': + dependencies: + '@jridgewell/trace-mapping': 0.3.30 callsites: 3.1.0 graceful-fs: 4.2.11 - "@jest/test-result@29.7.0": + '@jest/test-result@29.7.0': dependencies: - "@jest/console": 29.7.0 - "@jest/types": 29.6.3 - "@types/istanbul-lib-coverage": 2.0.6 + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.2 - "@jest/test-sequencer@29.7.0": + '@jest/test-sequencer@29.7.0': dependencies: - "@jest/test-result": 29.7.0 + '@jest/test-result': 29.7.0 graceful-fs: 4.2.11 jest-haste-map: 29.7.0 slash: 3.0.0 - "@jest/transform@29.7.0": + '@jest/transform@29.7.0': dependencies: - "@babel/core": 7.28.3 - "@jest/types": 29.6.3 - "@jridgewell/trace-mapping": 0.3.30 + '@babel/core': 7.28.3 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.30 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 @@ -16843,160 +12076,170 @@ snapshots: transitivePeerDependencies: - supports-color - "@jest/types@29.6.3": + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 20.19.11 + '@types/yargs': 17.0.33 + chalk: 4.1.2 + + '@jest/types@30.0.5': dependencies: - "@jest/schemas": 29.6.3 - "@types/istanbul-lib-coverage": 2.0.6 - "@types/istanbul-reports": 3.0.4 - "@types/node": 20.19.11 - "@types/yargs": 17.0.33 + '@jest/pattern': 30.0.1 + '@jest/schemas': 30.0.5 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 20.19.11 + '@types/yargs': 17.0.33 chalk: 4.1.2 - "@jridgewell/gen-mapping@0.3.13": + '@jridgewell/gen-mapping@0.3.13': dependencies: - "@jridgewell/sourcemap-codec": 1.5.5 - "@jridgewell/trace-mapping": 0.3.30 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.30 - "@jridgewell/resolve-uri@3.1.2": {} + '@jridgewell/resolve-uri@3.1.2': {} - "@jridgewell/source-map@0.3.11": + '@jridgewell/source-map@0.3.11': dependencies: - "@jridgewell/gen-mapping": 0.3.13 - "@jridgewell/trace-mapping": 0.3.30 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.30 - "@jridgewell/sourcemap-codec@1.5.5": {} + '@jridgewell/sourcemap-codec@1.5.5': {} - "@jridgewell/trace-mapping@0.3.30": + '@jridgewell/trace-mapping@0.3.30': 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 - "@jridgewell/trace-mapping@0.3.9": + '@jridgewell/trace-mapping@0.3.9': 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 - "@manypkg/find-root@1.1.0": + '@manypkg/find-root@1.1.0': dependencies: - "@babel/runtime": 7.28.3 - "@types/node": 12.20.55 + '@babel/runtime': 7.28.3 + '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 - "@manypkg/get-packages@1.1.3": + '@manypkg/get-packages@1.1.3': dependencies: - "@babel/runtime": 7.28.3 - "@changesets/types": 4.1.0 - "@manypkg/find-root": 1.1.0 + '@babel/runtime': 7.28.3 + '@changesets/types': 4.1.0 + '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 globby: 11.1.0 read-yaml-file: 1.1.0 - "@microsoft/tsdoc-config@0.16.2": + '@microsoft/tsdoc-config@0.16.2': dependencies: - "@microsoft/tsdoc": 0.14.2 + '@microsoft/tsdoc': 0.14.2 ajv: 6.12.6 jju: 1.4.0 resolve: 1.19.0 - "@microsoft/tsdoc@0.14.2": {} + '@microsoft/tsdoc@0.14.2': {} - "@napi-rs/wasm-runtime@0.2.12": + '@napi-rs/wasm-runtime@0.2.12': dependencies: - "@emnapi/core": 1.4.5 - "@emnapi/runtime": 1.4.5 - "@tybys/wasm-util": 0.10.0 + '@emnapi/core': 1.4.5 + '@emnapi/runtime': 1.4.5 + '@tybys/wasm-util': 0.10.0 optional: true - "@next/env@14.2.31": {} + '@next/env@14.2.31': {} - "@next/eslint-plugin-next@13.5.11": + '@next/eslint-plugin-next@13.5.11': dependencies: glob: 7.1.7 - "@next/eslint-plugin-next@14.0.4": + '@next/eslint-plugin-next@14.0.4': dependencies: glob: 7.1.7 - "@next/swc-darwin-arm64@14.2.31": + '@next/swc-darwin-arm64@14.2.31': optional: true - "@next/swc-darwin-x64@14.2.31": + '@next/swc-darwin-x64@14.2.31': optional: true - "@next/swc-linux-arm64-gnu@14.2.31": + '@next/swc-linux-arm64-gnu@14.2.31': optional: true - "@next/swc-linux-arm64-musl@14.2.31": + '@next/swc-linux-arm64-musl@14.2.31': optional: true - "@next/swc-linux-x64-gnu@14.2.31": + '@next/swc-linux-x64-gnu@14.2.31': optional: true - "@next/swc-linux-x64-musl@14.2.31": + '@next/swc-linux-x64-musl@14.2.31': optional: true - "@next/swc-win32-arm64-msvc@14.2.31": + '@next/swc-win32-arm64-msvc@14.2.31': optional: true - "@next/swc-win32-ia32-msvc@14.2.31": + '@next/swc-win32-ia32-msvc@14.2.31': optional: true - "@next/swc-win32-x64-msvc@14.2.31": + '@next/swc-win32-x64-msvc@14.2.31': optional: true - "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': dependencies: eslint-scope: 5.1.1 - "@noble/ciphers@1.3.0": {} + '@noble/ciphers@1.3.0': {} - "@noble/curves@1.9.7": + '@noble/curves@1.9.7': dependencies: - "@noble/hashes": 1.8.0 + '@noble/hashes': 1.8.0 - "@noble/hashes@1.8.0": {} + '@noble/hashes@1.8.0': {} - "@node-minify/core@8.0.6": + '@node-minify/core@8.0.6': dependencies: - "@node-minify/utils": 8.0.6 + '@node-minify/utils': 8.0.6 glob: 9.3.5 mkdirp: 1.0.4 - "@node-minify/terser@8.0.6": + '@node-minify/terser@8.0.6': dependencies: - "@node-minify/utils": 8.0.6 + '@node-minify/utils': 8.0.6 terser: 5.16.9 - "@node-minify/utils@8.0.6": + '@node-minify/utils@8.0.6': dependencies: gzip-size: 6.0.0 - "@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': {} - "@opennextjs/aws@3.7.6": + '@opennextjs/aws@3.7.6': dependencies: - "@ast-grep/napi": 0.35.0 - "@aws-sdk/client-cloudfront": 3.398.0 - "@aws-sdk/client-dynamodb": 3.868.0 - "@aws-sdk/client-lambda": 3.865.0 - "@aws-sdk/client-s3": 3.864.0 - "@aws-sdk/client-sqs": 3.864.0 - "@node-minify/core": 8.0.6 - "@node-minify/terser": 8.0.6 - "@tsconfig/node18": 1.0.3 + '@ast-grep/napi': 0.35.0 + '@aws-sdk/client-cloudfront': 3.398.0 + '@aws-sdk/client-dynamodb': 3.868.0 + '@aws-sdk/client-lambda': 3.865.0 + '@aws-sdk/client-s3': 3.864.0 + '@aws-sdk/client-sqs': 3.864.0 + '@node-minify/core': 8.0.6 + '@node-minify/terser': 8.0.6 + '@tsconfig/node18': 1.0.3 aws4fetch: 1.0.20 chalk: 5.6.0 cookie: 1.0.2 @@ -17009,10 +12252,10 @@ snapshots: - aws-crt - supports-color - "@opennextjs/cloudflare@1.7.1(wrangler@4.33.2)": + '@opennextjs/cloudflare@1.7.1(wrangler@4.33.2)': dependencies: - "@dotenvx/dotenvx": 1.31.0 - "@opennextjs/aws": 3.7.6 + '@dotenvx/dotenvx': 1.31.0 + '@opennextjs/aws': 3.7.6 cloudflare: 4.5.0 enquirer: 2.4.1 glob: 11.0.3 @@ -17024,393 +12267,430 @@ snapshots: - encoding - supports-color - "@pkgjs/parseargs@0.11.0": + '@panva/hkdf@1.2.1': {} + + '@pkgjs/parseargs@0.11.0': optional: true - "@pkgr/core@0.2.9": {} + '@pkgr/core@0.2.9': {} - "@poppinss/colors@4.1.5": + '@poppinss/colors@4.1.5': dependencies: kleur: 4.1.5 - "@poppinss/dumper@0.6.4": + '@poppinss/dumper@0.6.4': dependencies: - "@poppinss/colors": 4.1.5 - "@sindresorhus/is": 7.0.2 + '@poppinss/colors': 4.1.5 + '@sindresorhus/is': 7.0.2 supports-color: 10.2.0 - "@poppinss/exception@1.2.2": {} + '@poppinss/exception@1.2.2': {} + + '@prisma/client@6.16.1(prisma@6.16.1(typescript@5.9.2))(typescript@5.9.2)': + optionalDependencies: + prisma: 6.16.1(typescript@5.9.2) + typescript: 5.9.2 + + '@prisma/config@6.16.1': + dependencies: + c12: 3.1.0 + deepmerge-ts: 7.1.5 + effect: 3.16.12 + empathic: 2.0.0 + transitivePeerDependencies: + - magicast + + '@prisma/debug@6.16.1': {} + + '@prisma/engines-version@6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43': {} + + '@prisma/engines@6.16.1': + dependencies: + '@prisma/debug': 6.16.1 + '@prisma/engines-version': 6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43 + '@prisma/fetch-engine': 6.16.1 + '@prisma/get-platform': 6.16.1 + + '@prisma/fetch-engine@6.16.1': + dependencies: + '@prisma/debug': 6.16.1 + '@prisma/engines-version': 6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43 + '@prisma/get-platform': 6.16.1 + + '@prisma/get-platform@6.16.1': + dependencies: + '@prisma/debug': 6.16.1 - "@protobuf-ts/runtime@2.11.1": {} + '@protobuf-ts/runtime@2.11.1': {} - "@protobufjs/aspromise@1.1.2": {} + '@protobufjs/aspromise@1.1.2': {} - "@protobufjs/base64@1.1.2": {} + '@protobufjs/base64@1.1.2': {} - "@protobufjs/codegen@2.0.4": {} + '@protobufjs/codegen@2.0.4': {} - "@protobufjs/eventemitter@1.1.0": {} + '@protobufjs/eventemitter@1.1.0': {} - "@protobufjs/fetch@1.1.0": + '@protobufjs/fetch@1.1.0': dependencies: - "@protobufjs/aspromise": 1.1.2 - "@protobufjs/inquire": 1.1.0 + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 - "@protobufjs/float@1.0.2": {} + '@protobufjs/float@1.0.2': {} - "@protobufjs/inquire@1.1.0": {} + '@protobufjs/inquire@1.1.0': {} - "@protobufjs/path@1.1.2": {} + '@protobufjs/path@1.1.2': {} - "@protobufjs/pool@1.1.0": {} + '@protobufjs/pool@1.1.0': {} - "@protobufjs/utf8@1.1.0": {} + '@protobufjs/utf8@1.1.0': {} - "@radix-ui/primitive@1.1.3": {} + '@radix-ui/primitive@1.1.3': {} - "@radix-ui/react-arrow@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": + '@radix-ui/react-arrow@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - "@radix-ui/react-primitive": 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - "@types/react": 18.3.23 - "@types/react-dom": 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) - "@radix-ui/react-compose-refs@1.1.2(@types/react@18.3.23)(react@18.3.1)": + '@radix-ui/react-compose-refs@1.1.2(@types/react@18.3.23)(react@18.3.1)': dependencies: react: 18.3.1 optionalDependencies: - "@types/react": 18.3.23 + '@types/react': 18.3.23 - "@radix-ui/react-context@1.1.2(@types/react@18.3.23)(react@18.3.1)": + '@radix-ui/react-context@1.1.2(@types/react@18.3.23)(react@18.3.1)': dependencies: react: 18.3.1 optionalDependencies: - "@types/react": 18.3.23 - - "@radix-ui/react-dialog@1.1.15(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": - dependencies: - "@radix-ui/primitive": 1.1.3 - "@radix-ui/react-compose-refs": 1.1.2(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-context": 1.1.2(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-dismissable-layer": 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-focus-guards": 1.1.3(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-focus-scope": 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-id": 1.1.1(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-portal": 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-presence": 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-primitive": 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-slot": 1.2.3(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-use-controllable-state": 1.2.2(@types/react@18.3.23)(react@18.3.1) + '@types/react': 18.3.23 + + '@radix-ui/react-dialog@1.1.15(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.23)(react@18.3.1) aria-hidden: 1.2.6 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-remove-scroll: 2.7.1(@types/react@18.3.23)(react@18.3.1) optionalDependencies: - "@types/react": 18.3.23 - "@types/react-dom": 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) - "@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - "@radix-ui/primitive": 1.1.3 - "@radix-ui/react-compose-refs": 1.1.2(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-primitive": 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-use-callback-ref": 1.1.1(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-use-escape-keydown": 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@18.3.23)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - "@types/react": 18.3.23 - "@types/react-dom": 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) - "@radix-ui/react-focus-guards@1.1.3(@types/react@18.3.23)(react@18.3.1)": + '@radix-ui/react-focus-guards@1.1.3(@types/react@18.3.23)(react@18.3.1)': dependencies: react: 18.3.1 optionalDependencies: - "@types/react": 18.3.23 + '@types/react': 18.3.23 - "@radix-ui/react-focus-scope@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - "@radix-ui/react-compose-refs": 1.1.2(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-primitive": 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-use-callback-ref": 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.23)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - "@types/react": 18.3.23 - "@types/react-dom": 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) - "@radix-ui/react-id@1.1.1(@types/react@18.3.23)(react@18.3.1)": + '@radix-ui/react-id@1.1.1(@types/react@18.3.23)(react@18.3.1)': dependencies: - "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.23)(react@18.3.1) react: 18.3.1 optionalDependencies: - "@types/react": 18.3.23 - - "@radix-ui/react-popover@1.1.15(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": - dependencies: - "@radix-ui/primitive": 1.1.3 - "@radix-ui/react-compose-refs": 1.1.2(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-context": 1.1.2(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-dismissable-layer": 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-focus-guards": 1.1.3(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-focus-scope": 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-id": 1.1.1(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-popper": 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-portal": 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-presence": 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-primitive": 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-slot": 1.2.3(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-use-controllable-state": 1.2.2(@types/react@18.3.23)(react@18.3.1) + '@types/react': 18.3.23 + + '@radix-ui/react-popover@1.1.15(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.23)(react@18.3.1) aria-hidden: 1.2.6 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-remove-scroll: 2.7.1(@types/react@18.3.23)(react@18.3.1) optionalDependencies: - "@types/react": 18.3.23 - "@types/react-dom": 18.3.7(@types/react@18.3.23) - - "@radix-ui/react-popper@1.2.8(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": - dependencies: - "@floating-ui/react-dom": 2.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-arrow": 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-compose-refs": 1.1.2(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-context": 1.1.2(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-primitive": 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-use-callback-ref": 1.1.1(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-use-rect": 1.1.1(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-use-size": 1.1.1(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/rect": 1.1.1 + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-popper@1.2.8(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react-dom': 2.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-rect': 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/rect': 1.1.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - "@types/react": 18.3.23 - "@types/react-dom": 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) - "@radix-ui/react-portal@1.1.9(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": + '@radix-ui/react-portal@1.1.9(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - "@radix-ui/react-primitive": 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.23)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - "@types/react": 18.3.23 - "@types/react-dom": 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) - "@radix-ui/react-presence@1.1.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": + '@radix-ui/react-presence@1.1.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - "@radix-ui/react-compose-refs": 1.1.2(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.23)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - "@types/react": 18.3.23 - "@types/react-dom": 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) - "@radix-ui/react-primitive@2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": + '@radix-ui/react-primitive@2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - "@radix-ui/react-slot": 1.2.3(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.23)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - "@types/react": 18.3.23 - "@types/react-dom": 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) - "@radix-ui/react-slot@1.2.3(@types/react@18.3.23)(react@18.3.1)": + '@radix-ui/react-slot@1.2.3(@types/react@18.3.23)(react@18.3.1)': dependencies: - "@radix-ui/react-compose-refs": 1.1.2(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.23)(react@18.3.1) react: 18.3.1 optionalDependencies: - "@types/react": 18.3.23 + '@types/react': 18.3.23 - "@radix-ui/react-use-callback-ref@1.1.1(@types/react@18.3.23)(react@18.3.1)": + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@18.3.23)(react@18.3.1)': dependencies: react: 18.3.1 optionalDependencies: - "@types/react": 18.3.23 + '@types/react': 18.3.23 - "@radix-ui/react-use-controllable-state@1.2.2(@types/react@18.3.23)(react@18.3.1)": + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@18.3.23)(react@18.3.1)': dependencies: - "@radix-ui/react-use-effect-event": 0.0.2(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.23)(react@18.3.1) react: 18.3.1 optionalDependencies: - "@types/react": 18.3.23 + '@types/react': 18.3.23 - "@radix-ui/react-use-effect-event@0.0.2(@types/react@18.3.23)(react@18.3.1)": + '@radix-ui/react-use-effect-event@0.0.2(@types/react@18.3.23)(react@18.3.1)': dependencies: - "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.23)(react@18.3.1) react: 18.3.1 optionalDependencies: - "@types/react": 18.3.23 + '@types/react': 18.3.23 - "@radix-ui/react-use-escape-keydown@1.1.1(@types/react@18.3.23)(react@18.3.1)": + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@18.3.23)(react@18.3.1)': dependencies: - "@radix-ui/react-use-callback-ref": 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.23)(react@18.3.1) react: 18.3.1 optionalDependencies: - "@types/react": 18.3.23 + '@types/react': 18.3.23 - "@radix-ui/react-use-layout-effect@1.1.1(@types/react@18.3.23)(react@18.3.1)": + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@18.3.23)(react@18.3.1)': dependencies: react: 18.3.1 optionalDependencies: - "@types/react": 18.3.23 + '@types/react': 18.3.23 - "@radix-ui/react-use-rect@1.1.1(@types/react@18.3.23)(react@18.3.1)": + '@radix-ui/react-use-rect@1.1.1(@types/react@18.3.23)(react@18.3.1)': dependencies: - "@radix-ui/rect": 1.1.1 + '@radix-ui/rect': 1.1.1 react: 18.3.1 optionalDependencies: - "@types/react": 18.3.23 + '@types/react': 18.3.23 - "@radix-ui/react-use-size@1.1.1(@types/react@18.3.23)(react@18.3.1)": + '@radix-ui/react-use-size@1.1.1(@types/react@18.3.23)(react@18.3.1)': dependencies: - "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.23)(react@18.3.1) react: 18.3.1 optionalDependencies: - "@types/react": 18.3.23 + '@types/react': 18.3.23 - "@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - "@radix-ui/react-primitive": 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - "@types/react": 18.3.23 - "@types/react-dom": 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) - "@radix-ui/rect@1.1.1": {} + '@radix-ui/rect@1.1.1': {} - "@react-native-async-storage/async-storage@1.23.1(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))": + '@react-native-async-storage/async-storage@1.23.1(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))': dependencies: merge-options: 3.0.4 react-native: 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1) - "@react-native/assets-registry@0.76.7": {} + '@react-native/assets-registry@0.76.7': {} - "@react-native/babel-plugin-codegen@0.76.7(@babel/preset-env@7.28.3(@babel/core@7.28.3))": + '@react-native/babel-plugin-codegen@0.76.7(@babel/preset-env@7.28.3(@babel/core@7.28.3))': dependencies: - "@react-native/codegen": 0.76.7(@babel/preset-env@7.28.3(@babel/core@7.28.3)) + '@react-native/codegen': 0.76.7(@babel/preset-env@7.28.3(@babel/core@7.28.3)) transitivePeerDependencies: - - "@babel/preset-env" + - '@babel/preset-env' - supports-color - "@react-native/babel-plugin-codegen@0.79.5(@babel/core@7.28.3)": + '@react-native/babel-plugin-codegen@0.79.5(@babel/core@7.28.3)': dependencies: - "@babel/traverse": 7.28.3 - "@react-native/codegen": 0.79.5(@babel/core@7.28.3) + '@babel/traverse': 7.28.3 + '@react-native/codegen': 0.79.5(@babel/core@7.28.3) transitivePeerDependencies: - - "@babel/core" + - '@babel/core' - supports-color - "@react-native/babel-preset@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))": - dependencies: - "@babel/core": 7.28.3 - "@babel/plugin-proposal-export-default-from": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-syntax-dynamic-import": 7.8.3(@babel/core@7.28.3) - "@babel/plugin-syntax-export-default-from": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-syntax-nullish-coalescing-operator": 7.8.3(@babel/core@7.28.3) - "@babel/plugin-syntax-optional-chaining": 7.8.3(@babel/core@7.28.3) - "@babel/plugin-transform-arrow-functions": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-async-generator-functions": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-async-to-generator": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-block-scoping": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-class-properties": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-classes": 7.28.3(@babel/core@7.28.3) - "@babel/plugin-transform-computed-properties": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-destructuring": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-flow-strip-types": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-for-of": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-function-name": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-literals": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-logical-assignment-operators": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-modules-commonjs": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-named-capturing-groups-regex": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-nullish-coalescing-operator": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-numeric-separator": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-object-rest-spread": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-optional-catch-binding": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-optional-chaining": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-parameters": 7.27.7(@babel/core@7.28.3) - "@babel/plugin-transform-private-methods": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-private-property-in-object": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-react-display-name": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-react-jsx": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-react-jsx-self": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-react-jsx-source": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-regenerator": 7.28.3(@babel/core@7.28.3) - "@babel/plugin-transform-runtime": 7.28.3(@babel/core@7.28.3) - "@babel/plugin-transform-shorthand-properties": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-spread": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-sticky-regex": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-typescript": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-unicode-regex": 7.27.1(@babel/core@7.28.3) - "@babel/template": 7.27.2 - "@react-native/babel-plugin-codegen": 0.76.7(@babel/preset-env@7.28.3(@babel/core@7.28.3)) + '@react-native/babel-preset@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))': + dependencies: + '@babel/core': 7.28.3 + '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.28.3) + '@babel/plugin-syntax-export-default-from': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.3) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.3) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.3) + '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-block-scoping': 7.28.0(@babel/core@7.28.3) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-classes': 7.28.3(@babel/core@7.28.3) + '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.3) + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-object-rest-spread': 7.28.0(@babel/core@7.28.3) + '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.3) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.3) + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-regenerator': 7.28.3(@babel/core@7.28.3) + '@babel/plugin-transform-runtime': 7.28.3(@babel/core@7.28.3) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.3) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.3) + '@babel/template': 7.27.2 + '@react-native/babel-plugin-codegen': 0.76.7(@babel/preset-env@7.28.3(@babel/core@7.28.3)) babel-plugin-syntax-hermes-parser: 0.25.1 babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.28.3) react-refresh: 0.14.2 transitivePeerDependencies: - - "@babel/preset-env" + - '@babel/preset-env' - supports-color - "@react-native/babel-preset@0.79.5(@babel/core@7.28.3)": - dependencies: - "@babel/core": 7.28.3 - "@babel/plugin-proposal-export-default-from": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-syntax-dynamic-import": 7.8.3(@babel/core@7.28.3) - "@babel/plugin-syntax-export-default-from": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-syntax-nullish-coalescing-operator": 7.8.3(@babel/core@7.28.3) - "@babel/plugin-syntax-optional-chaining": 7.8.3(@babel/core@7.28.3) - "@babel/plugin-transform-arrow-functions": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-async-generator-functions": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-async-to-generator": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-block-scoping": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-class-properties": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-classes": 7.28.3(@babel/core@7.28.3) - "@babel/plugin-transform-computed-properties": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-destructuring": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-flow-strip-types": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-for-of": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-function-name": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-literals": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-logical-assignment-operators": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-modules-commonjs": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-named-capturing-groups-regex": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-nullish-coalescing-operator": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-numeric-separator": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-object-rest-spread": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-optional-catch-binding": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-optional-chaining": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-parameters": 7.27.7(@babel/core@7.28.3) - "@babel/plugin-transform-private-methods": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-private-property-in-object": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-react-display-name": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-react-jsx": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-react-jsx-self": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-react-jsx-source": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-regenerator": 7.28.3(@babel/core@7.28.3) - "@babel/plugin-transform-runtime": 7.28.3(@babel/core@7.28.3) - "@babel/plugin-transform-shorthand-properties": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-spread": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-sticky-regex": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-typescript": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-unicode-regex": 7.27.1(@babel/core@7.28.3) - "@babel/template": 7.27.2 - "@react-native/babel-plugin-codegen": 0.79.5(@babel/core@7.28.3) + '@react-native/babel-preset@0.79.5(@babel/core@7.28.3)': + dependencies: + '@babel/core': 7.28.3 + '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.28.3) + '@babel/plugin-syntax-export-default-from': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.3) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.3) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.3) + '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-block-scoping': 7.28.0(@babel/core@7.28.3) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-classes': 7.28.3(@babel/core@7.28.3) + '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.3) + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-object-rest-spread': 7.28.0(@babel/core@7.28.3) + '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.3) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.3) + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-regenerator': 7.28.3(@babel/core@7.28.3) + '@babel/plugin-transform-runtime': 7.28.3(@babel/core@7.28.3) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.3) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.3) + '@babel/template': 7.27.2 + '@react-native/babel-plugin-codegen': 0.79.5(@babel/core@7.28.3) babel-plugin-syntax-hermes-parser: 0.25.1 babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.28.3) react-refresh: 0.14.2 transitivePeerDependencies: - supports-color - "@react-native/codegen@0.76.7(@babel/preset-env@7.28.3(@babel/core@7.28.3))": + '@react-native/codegen@0.76.7(@babel/preset-env@7.28.3(@babel/core@7.28.3))': dependencies: - "@babel/parser": 7.28.3 - "@babel/preset-env": 7.28.3(@babel/core@7.28.3) + '@babel/parser': 7.28.3 + '@babel/preset-env': 7.28.3(@babel/core@7.28.3) glob: 7.2.3 hermes-parser: 0.23.1 invariant: 2.2.4 @@ -17421,19 +12701,19 @@ snapshots: transitivePeerDependencies: - supports-color - "@react-native/codegen@0.79.5(@babel/core@7.28.3)": + '@react-native/codegen@0.79.5(@babel/core@7.28.3)': dependencies: - "@babel/core": 7.28.3 + '@babel/core': 7.28.3 glob: 7.2.3 hermes-parser: 0.25.1 invariant: 2.2.4 nullthrows: 1.1.1 yargs: 17.7.2 - "@react-native/community-cli-plugin@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))": + '@react-native/community-cli-plugin@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))': dependencies: - "@react-native/dev-middleware": 0.76.7 - "@react-native/metro-babel-transformer": 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3)) + '@react-native/dev-middleware': 0.76.7 + '@react-native/metro-babel-transformer': 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3)) chalk: 4.1.2 execa: 5.1.1 invariant: 2.2.4 @@ -17444,21 +12724,21 @@ snapshots: readline: 1.3.0 semver: 7.7.2 transitivePeerDependencies: - - "@babel/core" - - "@babel/preset-env" + - '@babel/core' + - '@babel/preset-env' - bufferutil - encoding - supports-color - utf-8-validate - "@react-native/debugger-frontend@0.76.7": {} + '@react-native/debugger-frontend@0.76.7': {} - "@react-native/debugger-frontend@0.79.5": {} + '@react-native/debugger-frontend@0.79.5': {} - "@react-native/dev-middleware@0.76.7": + '@react-native/dev-middleware@0.76.7': dependencies: - "@isaacs/ttlcache": 1.4.1 - "@react-native/debugger-frontend": 0.76.7 + '@isaacs/ttlcache': 1.4.1 + '@react-native/debugger-frontend': 0.76.7 chrome-launcher: 0.15.2 chromium-edge-launcher: 0.2.0 connect: 3.7.0 @@ -17474,10 +12754,10 @@ snapshots: - supports-color - utf-8-validate - "@react-native/dev-middleware@0.79.5": + '@react-native/dev-middleware@0.79.5': dependencies: - "@isaacs/ttlcache": 1.4.1 - "@react-native/debugger-frontend": 0.79.5 + '@isaacs/ttlcache': 1.4.1 + '@react-native/debugger-frontend': 0.79.5 chrome-launcher: 0.15.2 chromium-edge-launcher: 0.2.0 connect: 3.7.0 @@ -17492,807 +12772,862 @@ snapshots: - supports-color - utf-8-validate - "@react-native/gradle-plugin@0.76.7": {} + '@react-native/gradle-plugin@0.76.7': {} - "@react-native/js-polyfills@0.76.7": {} + '@react-native/js-polyfills@0.76.7': {} - "@react-native/metro-babel-transformer@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))": + '@react-native/metro-babel-transformer@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))': dependencies: - "@babel/core": 7.28.3 - "@react-native/babel-preset": 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3)) + '@babel/core': 7.28.3 + '@react-native/babel-preset': 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3)) hermes-parser: 0.23.1 nullthrows: 1.1.1 transitivePeerDependencies: - - "@babel/preset-env" + - '@babel/preset-env' - supports-color - "@react-native/normalize-colors@0.76.7": {} + '@react-native/normalize-colors@0.76.7': {} - "@react-native/normalize-colors@0.79.5": {} + '@react-native/normalize-colors@0.79.5': {} - "@react-native/virtualized-lists@0.72.8(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))": + '@react-native/virtualized-lists@0.72.8(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 react-native: 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1) - "@react-native/virtualized-lists@0.76.7(@types/react@18.3.23)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)": + '@react-native/virtualized-lists@0.76.7(@types/react@18.3.23)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 react: 18.3.1 react-native: 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1) optionalDependencies: - "@types/react": 18.3.23 + '@types/react': 18.3.23 - "@rtsao/scc@1.1.0": {} + '@rtsao/scc@1.1.0': {} - "@rushstack/eslint-patch@1.12.0": {} + '@rushstack/eslint-patch@1.12.0': {} - "@sinclair/typebox@0.27.8": {} + '@sinclair/typebox@0.27.8': {} - "@sindresorhus/is@7.0.2": {} + '@sinclair/typebox@0.34.41': {} - "@sinonjs/commons@3.0.1": + '@sindresorhus/is@7.0.2': {} + + '@sinonjs/commons@3.0.1': dependencies: type-detect: 4.0.8 - "@sinonjs/fake-timers@10.3.0": + '@sinonjs/fake-timers@10.3.0': dependencies: - "@sinonjs/commons": 3.0.1 + '@sinonjs/commons': 3.0.1 - "@smithy/abort-controller@2.2.0": + '@smithy/abort-controller@2.2.0': dependencies: - "@smithy/types": 2.12.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@smithy/abort-controller@4.0.5": + '@smithy/abort-controller@4.0.5': dependencies: - "@smithy/types": 4.3.2 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@smithy/chunked-blob-reader-native@4.0.0": + '@smithy/chunked-blob-reader-native@4.0.0': dependencies: - "@smithy/util-base64": 4.0.0 + '@smithy/util-base64': 4.0.0 tslib: 2.8.1 - "@smithy/chunked-blob-reader@5.0.0": + '@smithy/chunked-blob-reader@5.0.0': dependencies: tslib: 2.8.1 - "@smithy/config-resolver@2.2.0": + '@smithy/config-resolver@2.2.0': dependencies: - "@smithy/node-config-provider": 2.3.0 - "@smithy/types": 2.12.0 - "@smithy/util-config-provider": 2.3.0 - "@smithy/util-middleware": 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/types': 2.12.0 + '@smithy/util-config-provider': 2.3.0 + '@smithy/util-middleware': 2.2.0 tslib: 2.8.1 - "@smithy/config-resolver@4.1.5": + '@smithy/config-resolver@4.1.5': dependencies: - "@smithy/node-config-provider": 4.1.4 - "@smithy/types": 4.3.2 - "@smithy/util-config-provider": 4.0.0 - "@smithy/util-middleware": 4.0.5 + '@smithy/node-config-provider': 4.1.4 + '@smithy/types': 4.3.2 + '@smithy/util-config-provider': 4.0.0 + '@smithy/util-middleware': 4.0.5 tslib: 2.8.1 - "@smithy/core@3.8.0": - dependencies: - "@smithy/middleware-serde": 4.0.9 - "@smithy/protocol-http": 5.1.3 - "@smithy/types": 4.3.2 - "@smithy/util-base64": 4.0.0 - "@smithy/util-body-length-browser": 4.0.0 - "@smithy/util-middleware": 4.0.5 - "@smithy/util-stream": 4.2.4 - "@smithy/util-utf8": 4.0.0 - "@types/uuid": 9.0.8 + '@smithy/core@3.8.0': + dependencies: + '@smithy/middleware-serde': 4.0.9 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-stream': 4.2.4 + '@smithy/util-utf8': 4.0.0 + '@types/uuid': 9.0.8 tslib: 2.8.1 uuid: 9.0.1 - "@smithy/credential-provider-imds@2.3.0": + '@smithy/credential-provider-imds@2.3.0': dependencies: - "@smithy/node-config-provider": 2.3.0 - "@smithy/property-provider": 2.2.0 - "@smithy/types": 2.12.0 - "@smithy/url-parser": 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/property-provider': 2.2.0 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 tslib: 2.8.1 - "@smithy/credential-provider-imds@4.0.7": + '@smithy/credential-provider-imds@4.0.7': dependencies: - "@smithy/node-config-provider": 4.1.4 - "@smithy/property-provider": 4.0.5 - "@smithy/types": 4.3.2 - "@smithy/url-parser": 4.0.5 + '@smithy/node-config-provider': 4.1.4 + '@smithy/property-provider': 4.0.5 + '@smithy/types': 4.3.2 + '@smithy/url-parser': 4.0.5 tslib: 2.8.1 - "@smithy/eventstream-codec@4.0.5": + '@smithy/eventstream-codec@4.0.5': dependencies: - "@aws-crypto/crc32": 5.2.0 - "@smithy/types": 4.3.2 - "@smithy/util-hex-encoding": 4.0.0 + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 4.3.2 + '@smithy/util-hex-encoding': 4.0.0 tslib: 2.8.1 - "@smithy/eventstream-serde-browser@4.0.5": + '@smithy/eventstream-serde-browser@4.0.5': dependencies: - "@smithy/eventstream-serde-universal": 4.0.5 - "@smithy/types": 4.3.2 + '@smithy/eventstream-serde-universal': 4.0.5 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@smithy/eventstream-serde-config-resolver@4.1.3": + '@smithy/eventstream-serde-config-resolver@4.1.3': dependencies: - "@smithy/types": 4.3.2 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@smithy/eventstream-serde-node@4.0.5": + '@smithy/eventstream-serde-node@4.0.5': dependencies: - "@smithy/eventstream-serde-universal": 4.0.5 - "@smithy/types": 4.3.2 + '@smithy/eventstream-serde-universal': 4.0.5 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@smithy/eventstream-serde-universal@4.0.5": + '@smithy/eventstream-serde-universal@4.0.5': dependencies: - "@smithy/eventstream-codec": 4.0.5 - "@smithy/types": 4.3.2 + '@smithy/eventstream-codec': 4.0.5 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@smithy/fetch-http-handler@2.5.0": + '@smithy/fetch-http-handler@2.5.0': dependencies: - "@smithy/protocol-http": 3.3.0 - "@smithy/querystring-builder": 2.2.0 - "@smithy/types": 2.12.0 - "@smithy/util-base64": 2.3.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/querystring-builder': 2.2.0 + '@smithy/types': 2.12.0 + '@smithy/util-base64': 2.3.0 tslib: 2.8.1 - "@smithy/fetch-http-handler@5.1.1": + '@smithy/fetch-http-handler@5.1.1': dependencies: - "@smithy/protocol-http": 5.1.3 - "@smithy/querystring-builder": 4.0.5 - "@smithy/types": 4.3.2 - "@smithy/util-base64": 4.0.0 + '@smithy/protocol-http': 5.1.3 + '@smithy/querystring-builder': 4.0.5 + '@smithy/types': 4.3.2 + '@smithy/util-base64': 4.0.0 tslib: 2.8.1 - "@smithy/hash-blob-browser@4.0.5": + '@smithy/hash-blob-browser@4.0.5': dependencies: - "@smithy/chunked-blob-reader": 5.0.0 - "@smithy/chunked-blob-reader-native": 4.0.0 - "@smithy/types": 4.3.2 + '@smithy/chunked-blob-reader': 5.0.0 + '@smithy/chunked-blob-reader-native': 4.0.0 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@smithy/hash-node@2.2.0": + '@smithy/hash-node@2.2.0': dependencies: - "@smithy/types": 2.12.0 - "@smithy/util-buffer-from": 2.2.0 - "@smithy/util-utf8": 2.3.0 + '@smithy/types': 2.12.0 + '@smithy/util-buffer-from': 2.2.0 + '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - "@smithy/hash-node@4.0.5": + '@smithy/hash-node@4.0.5': dependencies: - "@smithy/types": 4.3.2 - "@smithy/util-buffer-from": 4.0.0 - "@smithy/util-utf8": 4.0.0 + '@smithy/types': 4.3.2 + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - "@smithy/hash-stream-node@4.0.5": + '@smithy/hash-stream-node@4.0.5': dependencies: - "@smithy/types": 4.3.2 - "@smithy/util-utf8": 4.0.0 + '@smithy/types': 4.3.2 + '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - "@smithy/invalid-dependency@2.2.0": + '@smithy/invalid-dependency@2.2.0': dependencies: - "@smithy/types": 2.12.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@smithy/invalid-dependency@4.0.5": + '@smithy/invalid-dependency@4.0.5': dependencies: - "@smithy/types": 4.3.2 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@smithy/is-array-buffer@2.2.0": + '@smithy/is-array-buffer@2.2.0': dependencies: tslib: 2.8.1 - "@smithy/is-array-buffer@4.0.0": + '@smithy/is-array-buffer@4.0.0': dependencies: tslib: 2.8.1 - "@smithy/md5-js@4.0.5": + '@smithy/md5-js@4.0.5': dependencies: - "@smithy/types": 4.3.2 - "@smithy/util-utf8": 4.0.0 + '@smithy/types': 4.3.2 + '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - "@smithy/middleware-content-length@2.2.0": + '@smithy/middleware-content-length@2.2.0': dependencies: - "@smithy/protocol-http": 3.3.0 - "@smithy/types": 2.12.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@smithy/middleware-content-length@4.0.5": + '@smithy/middleware-content-length@4.0.5': dependencies: - "@smithy/protocol-http": 5.1.3 - "@smithy/types": 4.3.2 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@smithy/middleware-endpoint@2.5.1": + '@smithy/middleware-endpoint@2.5.1': dependencies: - "@smithy/middleware-serde": 2.3.0 - "@smithy/node-config-provider": 2.3.0 - "@smithy/shared-ini-file-loader": 2.4.0 - "@smithy/types": 2.12.0 - "@smithy/url-parser": 2.2.0 - "@smithy/util-middleware": 2.2.0 + '@smithy/middleware-serde': 2.3.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-middleware': 2.2.0 tslib: 2.8.1 - "@smithy/middleware-endpoint@4.1.18": + '@smithy/middleware-endpoint@4.1.18': dependencies: - "@smithy/core": 3.8.0 - "@smithy/middleware-serde": 4.0.9 - "@smithy/node-config-provider": 4.1.4 - "@smithy/shared-ini-file-loader": 4.0.5 - "@smithy/types": 4.3.2 - "@smithy/url-parser": 4.0.5 - "@smithy/util-middleware": 4.0.5 + '@smithy/core': 3.8.0 + '@smithy/middleware-serde': 4.0.9 + '@smithy/node-config-provider': 4.1.4 + '@smithy/shared-ini-file-loader': 4.0.5 + '@smithy/types': 4.3.2 + '@smithy/url-parser': 4.0.5 + '@smithy/util-middleware': 4.0.5 tslib: 2.8.1 - "@smithy/middleware-retry@2.3.1": + '@smithy/middleware-retry@2.3.1': dependencies: - "@smithy/node-config-provider": 2.3.0 - "@smithy/protocol-http": 3.3.0 - "@smithy/service-error-classification": 2.1.5 - "@smithy/smithy-client": 2.5.1 - "@smithy/types": 2.12.0 - "@smithy/util-middleware": 2.2.0 - "@smithy/util-retry": 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/service-error-classification': 2.1.5 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 + '@smithy/util-middleware': 2.2.0 + '@smithy/util-retry': 2.2.0 tslib: 2.8.1 uuid: 9.0.1 - "@smithy/middleware-retry@4.1.19": + '@smithy/middleware-retry@4.1.19': dependencies: - "@smithy/node-config-provider": 4.1.4 - "@smithy/protocol-http": 5.1.3 - "@smithy/service-error-classification": 4.0.7 - "@smithy/smithy-client": 4.4.10 - "@smithy/types": 4.3.2 - "@smithy/util-middleware": 4.0.5 - "@smithy/util-retry": 4.0.7 - "@types/uuid": 9.0.8 + '@smithy/node-config-provider': 4.1.4 + '@smithy/protocol-http': 5.1.3 + '@smithy/service-error-classification': 4.0.7 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-retry': 4.0.7 + '@types/uuid': 9.0.8 tslib: 2.8.1 uuid: 9.0.1 - "@smithy/middleware-serde@2.3.0": + '@smithy/middleware-serde@2.3.0': dependencies: - "@smithy/types": 2.12.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@smithy/middleware-serde@4.0.9": + '@smithy/middleware-serde@4.0.9': dependencies: - "@smithy/protocol-http": 5.1.3 - "@smithy/types": 4.3.2 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@smithy/middleware-stack@2.2.0": + '@smithy/middleware-stack@2.2.0': dependencies: - "@smithy/types": 2.12.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@smithy/middleware-stack@4.0.5": + '@smithy/middleware-stack@4.0.5': dependencies: - "@smithy/types": 4.3.2 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@smithy/node-config-provider@2.3.0": + '@smithy/node-config-provider@2.3.0': dependencies: - "@smithy/property-provider": 2.2.0 - "@smithy/shared-ini-file-loader": 2.4.0 - "@smithy/types": 2.12.0 + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@smithy/node-config-provider@4.1.4": + '@smithy/node-config-provider@4.1.4': dependencies: - "@smithy/property-provider": 4.0.5 - "@smithy/shared-ini-file-loader": 4.0.5 - "@smithy/types": 4.3.2 + '@smithy/property-provider': 4.0.5 + '@smithy/shared-ini-file-loader': 4.0.5 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@smithy/node-http-handler@2.5.0": + '@smithy/node-http-handler@2.5.0': dependencies: - "@smithy/abort-controller": 2.2.0 - "@smithy/protocol-http": 3.3.0 - "@smithy/querystring-builder": 2.2.0 - "@smithy/types": 2.12.0 + '@smithy/abort-controller': 2.2.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/querystring-builder': 2.2.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@smithy/node-http-handler@4.1.1": + '@smithy/node-http-handler@4.1.1': dependencies: - "@smithy/abort-controller": 4.0.5 - "@smithy/protocol-http": 5.1.3 - "@smithy/querystring-builder": 4.0.5 - "@smithy/types": 4.3.2 + '@smithy/abort-controller': 4.0.5 + '@smithy/protocol-http': 5.1.3 + '@smithy/querystring-builder': 4.0.5 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@smithy/property-provider@2.2.0": + '@smithy/property-provider@2.2.0': dependencies: - "@smithy/types": 2.12.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@smithy/property-provider@4.0.5": + '@smithy/property-provider@4.0.5': dependencies: - "@smithy/types": 4.3.2 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@smithy/protocol-http@2.0.5": + '@smithy/protocol-http@2.0.5': dependencies: - "@smithy/types": 2.12.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@smithy/protocol-http@3.3.0": + '@smithy/protocol-http@3.3.0': dependencies: - "@smithy/types": 2.12.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@smithy/protocol-http@5.1.3": + '@smithy/protocol-http@5.1.3': dependencies: - "@smithy/types": 4.3.2 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@smithy/querystring-builder@2.2.0": + '@smithy/querystring-builder@2.2.0': dependencies: - "@smithy/types": 2.12.0 - "@smithy/util-uri-escape": 2.2.0 + '@smithy/types': 2.12.0 + '@smithy/util-uri-escape': 2.2.0 tslib: 2.8.1 - "@smithy/querystring-builder@4.0.5": + '@smithy/querystring-builder@4.0.5': dependencies: - "@smithy/types": 4.3.2 - "@smithy/util-uri-escape": 4.0.0 + '@smithy/types': 4.3.2 + '@smithy/util-uri-escape': 4.0.0 tslib: 2.8.1 - "@smithy/querystring-parser@2.2.0": + '@smithy/querystring-parser@2.2.0': dependencies: - "@smithy/types": 2.12.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@smithy/querystring-parser@4.0.5": + '@smithy/querystring-parser@4.0.5': dependencies: - "@smithy/types": 4.3.2 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@smithy/service-error-classification@2.1.5": + '@smithy/service-error-classification@2.1.5': dependencies: - "@smithy/types": 2.12.0 + '@smithy/types': 2.12.0 - "@smithy/service-error-classification@4.0.7": + '@smithy/service-error-classification@4.0.7': dependencies: - "@smithy/types": 4.3.2 + '@smithy/types': 4.3.2 - "@smithy/shared-ini-file-loader@2.4.0": + '@smithy/shared-ini-file-loader@2.4.0': dependencies: - "@smithy/types": 2.12.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@smithy/shared-ini-file-loader@4.0.5": + '@smithy/shared-ini-file-loader@4.0.5': dependencies: - "@smithy/types": 4.3.2 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@smithy/signature-v4@2.3.0": + '@smithy/signature-v4@2.3.0': dependencies: - "@smithy/is-array-buffer": 2.2.0 - "@smithy/types": 2.12.0 - "@smithy/util-hex-encoding": 2.2.0 - "@smithy/util-middleware": 2.2.0 - "@smithy/util-uri-escape": 2.2.0 - "@smithy/util-utf8": 2.3.0 + '@smithy/is-array-buffer': 2.2.0 + '@smithy/types': 2.12.0 + '@smithy/util-hex-encoding': 2.2.0 + '@smithy/util-middleware': 2.2.0 + '@smithy/util-uri-escape': 2.2.0 + '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - "@smithy/signature-v4@5.1.3": + '@smithy/signature-v4@5.1.3': dependencies: - "@smithy/is-array-buffer": 4.0.0 - "@smithy/protocol-http": 5.1.3 - "@smithy/types": 4.3.2 - "@smithy/util-hex-encoding": 4.0.0 - "@smithy/util-middleware": 4.0.5 - "@smithy/util-uri-escape": 4.0.0 - "@smithy/util-utf8": 4.0.0 + '@smithy/is-array-buffer': 4.0.0 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 + '@smithy/util-hex-encoding': 4.0.0 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-uri-escape': 4.0.0 + '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - "@smithy/smithy-client@2.5.1": + '@smithy/smithy-client@2.5.1': dependencies: - "@smithy/middleware-endpoint": 2.5.1 - "@smithy/middleware-stack": 2.2.0 - "@smithy/protocol-http": 3.3.0 - "@smithy/types": 2.12.0 - "@smithy/util-stream": 2.2.0 + '@smithy/middleware-endpoint': 2.5.1 + '@smithy/middleware-stack': 2.2.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 + '@smithy/util-stream': 2.2.0 tslib: 2.8.1 - "@smithy/smithy-client@4.4.10": + '@smithy/smithy-client@4.4.10': dependencies: - "@smithy/core": 3.8.0 - "@smithy/middleware-endpoint": 4.1.18 - "@smithy/middleware-stack": 4.0.5 - "@smithy/protocol-http": 5.1.3 - "@smithy/types": 4.3.2 - "@smithy/util-stream": 4.2.4 + '@smithy/core': 3.8.0 + '@smithy/middleware-endpoint': 4.1.18 + '@smithy/middleware-stack': 4.0.5 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 + '@smithy/util-stream': 4.2.4 tslib: 2.8.1 - "@smithy/types@2.12.0": + '@smithy/types@2.12.0': dependencies: tslib: 2.8.1 - "@smithy/types@4.3.2": + '@smithy/types@4.3.2': dependencies: tslib: 2.8.1 - "@smithy/url-parser@2.2.0": + '@smithy/url-parser@2.2.0': dependencies: - "@smithy/querystring-parser": 2.2.0 - "@smithy/types": 2.12.0 + '@smithy/querystring-parser': 2.2.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@smithy/url-parser@4.0.5": + '@smithy/url-parser@4.0.5': dependencies: - "@smithy/querystring-parser": 4.0.5 - "@smithy/types": 4.3.2 + '@smithy/querystring-parser': 4.0.5 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@smithy/util-base64@2.3.0": + '@smithy/util-base64@2.3.0': dependencies: - "@smithy/util-buffer-from": 2.2.0 - "@smithy/util-utf8": 2.3.0 + '@smithy/util-buffer-from': 2.2.0 + '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - "@smithy/util-base64@4.0.0": + '@smithy/util-base64@4.0.0': dependencies: - "@smithy/util-buffer-from": 4.0.0 - "@smithy/util-utf8": 4.0.0 + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - "@smithy/util-body-length-browser@2.2.0": + '@smithy/util-body-length-browser@2.2.0': dependencies: tslib: 2.8.1 - "@smithy/util-body-length-browser@4.0.0": + '@smithy/util-body-length-browser@4.0.0': dependencies: tslib: 2.8.1 - "@smithy/util-body-length-node@2.3.0": + '@smithy/util-body-length-node@2.3.0': dependencies: tslib: 2.8.1 - "@smithy/util-body-length-node@4.0.0": + '@smithy/util-body-length-node@4.0.0': dependencies: tslib: 2.8.1 - "@smithy/util-buffer-from@2.2.0": + '@smithy/util-buffer-from@2.2.0': dependencies: - "@smithy/is-array-buffer": 2.2.0 + '@smithy/is-array-buffer': 2.2.0 tslib: 2.8.1 - "@smithy/util-buffer-from@4.0.0": + '@smithy/util-buffer-from@4.0.0': dependencies: - "@smithy/is-array-buffer": 4.0.0 + '@smithy/is-array-buffer': 4.0.0 tslib: 2.8.1 - "@smithy/util-config-provider@2.3.0": + '@smithy/util-config-provider@2.3.0': dependencies: tslib: 2.8.1 - "@smithy/util-config-provider@4.0.0": + '@smithy/util-config-provider@4.0.0': dependencies: tslib: 2.8.1 - "@smithy/util-defaults-mode-browser@2.2.1": + '@smithy/util-defaults-mode-browser@2.2.1': dependencies: - "@smithy/property-provider": 2.2.0 - "@smithy/smithy-client": 2.5.1 - "@smithy/types": 2.12.0 + '@smithy/property-provider': 2.2.0 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 bowser: 2.12.0 tslib: 2.8.1 - "@smithy/util-defaults-mode-browser@4.0.26": + '@smithy/util-defaults-mode-browser@4.0.26': dependencies: - "@smithy/property-provider": 4.0.5 - "@smithy/smithy-client": 4.4.10 - "@smithy/types": 4.3.2 + '@smithy/property-provider': 4.0.5 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 bowser: 2.12.0 tslib: 2.8.1 - "@smithy/util-defaults-mode-node@2.3.1": + '@smithy/util-defaults-mode-node@2.3.1': dependencies: - "@smithy/config-resolver": 2.2.0 - "@smithy/credential-provider-imds": 2.3.0 - "@smithy/node-config-provider": 2.3.0 - "@smithy/property-provider": 2.2.0 - "@smithy/smithy-client": 2.5.1 - "@smithy/types": 2.12.0 + '@smithy/config-resolver': 2.2.0 + '@smithy/credential-provider-imds': 2.3.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/property-provider': 2.2.0 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@smithy/util-defaults-mode-node@4.0.26": + '@smithy/util-defaults-mode-node@4.0.26': dependencies: - "@smithy/config-resolver": 4.1.5 - "@smithy/credential-provider-imds": 4.0.7 - "@smithy/node-config-provider": 4.1.4 - "@smithy/property-provider": 4.0.5 - "@smithy/smithy-client": 4.4.10 - "@smithy/types": 4.3.2 + '@smithy/config-resolver': 4.1.5 + '@smithy/credential-provider-imds': 4.0.7 + '@smithy/node-config-provider': 4.1.4 + '@smithy/property-provider': 4.0.5 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@smithy/util-endpoints@3.0.7": + '@smithy/util-endpoints@3.0.7': dependencies: - "@smithy/node-config-provider": 4.1.4 - "@smithy/types": 4.3.2 + '@smithy/node-config-provider': 4.1.4 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@smithy/util-hex-encoding@2.2.0": + '@smithy/util-hex-encoding@2.2.0': dependencies: tslib: 2.8.1 - "@smithy/util-hex-encoding@4.0.0": + '@smithy/util-hex-encoding@4.0.0': dependencies: tslib: 2.8.1 - "@smithy/util-middleware@2.2.0": + '@smithy/util-middleware@2.2.0': dependencies: - "@smithy/types": 2.12.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@smithy/util-middleware@4.0.5": + '@smithy/util-middleware@4.0.5': dependencies: - "@smithy/types": 4.3.2 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@smithy/util-retry@2.2.0": + '@smithy/util-retry@2.2.0': dependencies: - "@smithy/service-error-classification": 2.1.5 - "@smithy/types": 2.12.0 + '@smithy/service-error-classification': 2.1.5 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@smithy/util-retry@4.0.7": + '@smithy/util-retry@4.0.7': dependencies: - "@smithy/service-error-classification": 4.0.7 - "@smithy/types": 4.3.2 + '@smithy/service-error-classification': 4.0.7 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@smithy/util-stream@2.2.0": + '@smithy/util-stream@2.2.0': dependencies: - "@smithy/fetch-http-handler": 2.5.0 - "@smithy/node-http-handler": 2.5.0 - "@smithy/types": 2.12.0 - "@smithy/util-base64": 2.3.0 - "@smithy/util-buffer-from": 2.2.0 - "@smithy/util-hex-encoding": 2.2.0 - "@smithy/util-utf8": 2.3.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-buffer-from': 2.2.0 + '@smithy/util-hex-encoding': 2.2.0 + '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - "@smithy/util-stream@4.2.4": + '@smithy/util-stream@4.2.4': dependencies: - "@smithy/fetch-http-handler": 5.1.1 - "@smithy/node-http-handler": 4.1.1 - "@smithy/types": 4.3.2 - "@smithy/util-base64": 4.0.0 - "@smithy/util-buffer-from": 4.0.0 - "@smithy/util-hex-encoding": 4.0.0 - "@smithy/util-utf8": 4.0.0 + '@smithy/fetch-http-handler': 5.1.1 + '@smithy/node-http-handler': 4.1.1 + '@smithy/types': 4.3.2 + '@smithy/util-base64': 4.0.0 + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-hex-encoding': 4.0.0 + '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - "@smithy/util-uri-escape@2.2.0": + '@smithy/util-uri-escape@2.2.0': dependencies: tslib: 2.8.1 - "@smithy/util-uri-escape@4.0.0": + '@smithy/util-uri-escape@4.0.0': dependencies: tslib: 2.8.1 - "@smithy/util-utf8@2.3.0": + '@smithy/util-utf8@2.3.0': dependencies: - "@smithy/util-buffer-from": 2.2.0 + '@smithy/util-buffer-from': 2.2.0 tslib: 2.8.1 - "@smithy/util-utf8@4.0.0": + '@smithy/util-utf8@4.0.0': dependencies: - "@smithy/util-buffer-from": 4.0.0 + '@smithy/util-buffer-from': 4.0.0 tslib: 2.8.1 - "@smithy/util-waiter@2.2.0": + '@smithy/util-waiter@2.2.0': dependencies: - "@smithy/abort-controller": 2.2.0 - "@smithy/types": 2.12.0 + '@smithy/abort-controller': 2.2.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 - "@smithy/util-waiter@4.0.7": + '@smithy/util-waiter@4.0.7': dependencies: - "@smithy/abort-controller": 4.0.5 - "@smithy/types": 4.3.2 + '@smithy/abort-controller': 4.0.5 + '@smithy/types': 4.3.2 tslib: 2.8.1 - "@speed-highlight/core@1.2.7": {} + '@speed-highlight/core@1.2.7': {} + + '@standard-schema/spec@1.0.0': {} - "@swc/counter@0.1.3": {} + '@swc/counter@0.1.3': {} - "@swc/helpers@0.5.5": + '@swc/helpers@0.5.5': dependencies: - "@swc/counter": 0.1.3 + '@swc/counter': 0.1.3 tslib: 2.8.1 - "@testing-library/dom@9.3.4": + '@testing-library/dom@9.3.4': dependencies: - "@babel/code-frame": 7.27.1 - "@babel/runtime": 7.28.3 - "@types/aria-query": 5.0.4 + '@babel/code-frame': 7.27.1 + '@babel/runtime': 7.28.3 + '@types/aria-query': 5.0.4 aria-query: 5.1.3 chalk: 4.1.2 dom-accessibility-api: 0.5.16 lz-string: 1.5.0 pretty-format: 27.5.1 - "@testing-library/jest-dom@6.7.0": + '@testing-library/jest-dom@6.7.0': dependencies: - "@adobe/css-tools": 4.4.4 + '@adobe/css-tools': 4.4.4 aria-query: 5.3.2 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 picocolors: 1.1.1 redent: 3.0.0 - "@testing-library/react@14.3.1(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": + '@testing-library/react@14.3.1(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - "@babel/runtime": 7.28.3 - "@testing-library/dom": 9.3.4 - "@types/react-dom": 18.3.7(@types/react@18.3.23) + '@babel/runtime': 7.28.3 + '@testing-library/dom': 9.3.4 + '@types/react-dom': 18.3.7(@types/react@18.3.23) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) transitivePeerDependencies: - - "@types/react" + - '@types/react' - "@tootallnate/once@2.0.0": {} + '@tootallnate/once@2.0.0': {} - "@tsconfig/node10@1.0.11": {} + '@tsconfig/node10@1.0.11': {} - "@tsconfig/node12@1.0.11": {} + '@tsconfig/node12@1.0.11': {} - "@tsconfig/node14@1.0.3": {} + '@tsconfig/node14@1.0.3': {} - "@tsconfig/node16@1.0.4": {} + '@tsconfig/node16@1.0.4': {} - "@tsconfig/node18@1.0.3": {} + '@tsconfig/node18@1.0.3': {} - "@tybys/wasm-util@0.10.0": + '@tybys/wasm-util@0.10.0': dependencies: tslib: 2.8.1 optional: true - "@types/aria-query@5.0.4": {} + '@types/aria-query@5.0.4': {} + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.28.3 + '@babel/types': 7.28.2 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.28.2 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.28.3 + '@babel/types': 7.28.2 + + '@types/babel__traverse@7.28.0': + dependencies: + '@babel/types': 7.28.2 + + '@types/bcryptjs@3.0.0': + dependencies: + bcryptjs: 3.0.2 - "@types/babel__core@7.20.5": + '@types/body-parser@1.19.6': dependencies: - "@babel/parser": 7.28.3 - "@babel/types": 7.28.2 - "@types/babel__generator": 7.27.0 - "@types/babel__template": 7.4.4 - "@types/babel__traverse": 7.28.0 + '@types/connect': 3.4.38 + '@types/node': 20.19.11 - "@types/babel__generator@7.27.0": + '@types/connect@3.4.38': dependencies: - "@babel/types": 7.28.2 + '@types/node': 20.19.11 - "@types/babel__template@7.4.4": + '@types/express-serve-static-core@4.19.6': dependencies: - "@babel/parser": 7.28.3 - "@babel/types": 7.28.2 + '@types/node': 20.19.11 + '@types/qs': 6.14.0 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.5 - "@types/babel__traverse@7.28.0": + '@types/express@4.17.23': dependencies: - "@babel/types": 7.28.2 + '@types/body-parser': 1.19.6 + '@types/express-serve-static-core': 4.19.6 + '@types/qs': 6.14.0 + '@types/serve-static': 1.15.8 - "@types/fs-extra@8.1.5": + '@types/fs-extra@8.1.5': dependencies: - "@types/node": 20.19.11 + '@types/node': 20.19.11 - "@types/glob@7.2.0": + '@types/glob@7.2.0': dependencies: - "@types/minimatch": 6.0.0 - "@types/node": 20.19.11 + '@types/minimatch': 6.0.0 + '@types/node': 20.19.11 - "@types/graceful-fs@4.1.9": + '@types/graceful-fs@4.1.9': dependencies: - "@types/node": 20.19.11 + '@types/node': 20.19.11 - "@types/istanbul-lib-coverage@2.0.6": {} + '@types/http-errors@2.0.5': {} - "@types/istanbul-lib-report@3.0.3": + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': dependencies: - "@types/istanbul-lib-coverage": 2.0.6 + '@types/istanbul-lib-coverage': 2.0.6 - "@types/istanbul-reports@3.0.4": + '@types/istanbul-reports@3.0.4': dependencies: - "@types/istanbul-lib-report": 3.0.3 + '@types/istanbul-lib-report': 3.0.3 - "@types/jest@29.5.14": + '@types/jest@29.5.14': dependencies: expect: 29.7.0 pretty-format: 29.7.0 - "@types/jsdom@20.0.1": + '@types/jest@30.0.0': + dependencies: + expect: 30.1.2 + pretty-format: 30.0.5 + + '@types/jsdom@20.0.1': dependencies: - "@types/node": 20.19.11 - "@types/tough-cookie": 4.0.5 + '@types/node': 20.19.11 + '@types/tough-cookie': 4.0.5 parse5: 7.3.0 - "@types/json-schema@7.0.15": {} + '@types/json-schema@7.0.15': {} + + '@types/json5@0.0.29': {} - "@types/json5@0.0.29": {} + '@types/long@4.0.2': {} - "@types/long@4.0.2": {} + '@types/mime@1.3.5': {} - "@types/minimatch@6.0.0": + '@types/minimatch@6.0.0': dependencies: minimatch: 10.0.3 - "@types/node-fetch@2.6.13": + '@types/node-fetch@2.6.13': dependencies: - "@types/node": 20.19.11 + '@types/node': 20.19.11 form-data: 4.0.4 - "@types/node-forge@1.3.13": + '@types/node-forge@1.3.13': dependencies: - "@types/node": 20.19.11 + '@types/node': 20.19.11 - "@types/node@12.20.55": {} + '@types/node@12.20.55': {} - "@types/node@18.19.123": + '@types/node@18.19.123': dependencies: undici-types: 5.26.5 - "@types/node@20.19.11": + '@types/node@20.19.11': dependencies: undici-types: 6.21.0 - "@types/normalize-package-data@2.4.4": {} + '@types/normalize-package-data@2.4.4': {} - "@types/prop-types@15.7.15": {} + '@types/prop-types@15.7.15': {} - "@types/react-dom@18.3.7(@types/react@18.3.23)": + '@types/qs@6.14.0': {} + + '@types/range-parser@1.2.7': {} + + '@types/react-dom@18.3.7(@types/react@18.3.23)': dependencies: - "@types/react": 18.3.23 + '@types/react': 18.3.23 - "@types/react-native@0.72.8(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))": + '@types/react-native@0.72.8(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))': dependencies: - "@react-native/virtualized-lists": 0.72.8(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1)) - "@types/react": 18.3.23 + '@react-native/virtualized-lists': 0.72.8(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1)) + '@types/react': 18.3.23 transitivePeerDependencies: - react-native - "@types/react@18.3.23": + '@types/react@18.3.23': dependencies: - "@types/prop-types": 15.7.15 + '@types/prop-types': 15.7.15 csstype: 3.1.3 - "@types/semver@7.7.0": {} + '@types/semver@7.7.0': {} + + '@types/send@0.17.5': + dependencies: + '@types/mime': 1.3.5 + '@types/node': 20.19.11 + + '@types/serve-static@1.15.8': + dependencies: + '@types/http-errors': 2.0.5 + '@types/node': 20.19.11 + '@types/send': 0.17.5 - "@types/stack-utils@2.0.3": {} + '@types/stack-utils@2.0.3': {} - "@types/text-encoding@0.0.39": {} + '@types/text-encoding@0.0.39': {} - "@types/tough-cookie@4.0.5": {} + '@types/tough-cookie@4.0.5': {} - "@types/uuid@9.0.8": {} + '@types/uuid@9.0.8': {} - "@types/yargs-parser@21.0.3": {} + '@types/yargs-parser@21.0.3': {} - "@types/yargs@17.0.33": + '@types/yargs@17.0.33': dependencies: - "@types/yargs-parser": 21.0.3 + '@types/yargs-parser': 21.0.3 - "@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)": + '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)': dependencies: - "@eslint-community/regexpp": 4.12.1 - "@typescript-eslint/parser": 6.21.0(eslint@8.57.1)(typescript@5.9.2) - "@typescript-eslint/scope-manager": 6.21.0 - "@typescript-eslint/type-utils": 6.21.0(eslint@8.57.1)(typescript@5.9.2) - "@typescript-eslint/utils": 6.21.0(eslint@8.57.1)(typescript@5.9.2) - "@typescript-eslint/visitor-keys": 6.21.0 + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.4.1 eslint: 8.57.1 graphemer: 1.4.0 @@ -18305,12 +13640,12 @@ snapshots: transitivePeerDependencies: - supports-color - "@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2)": + '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2)': dependencies: - "@typescript-eslint/scope-manager": 6.21.0 - "@typescript-eslint/types": 6.21.0 - "@typescript-eslint/typescript-estree": 6.21.0(typescript@5.9.2) - "@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.9.2) + '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.4.1 eslint: 8.57.1 optionalDependencies: @@ -18318,20 +13653,20 @@ snapshots: 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/type-utils@6.21.0(eslint@8.57.1)(typescript@5.9.2)": + '@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.9.2)': dependencies: - "@typescript-eslint/typescript-estree": 6.21.0(typescript@5.9.2) - "@typescript-eslint/utils": 6.21.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.2) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.2) debug: 4.4.1 eslint: 8.57.1 ts-api-utils: 1.4.3(typescript@5.9.2) @@ -18340,14 +13675,14 @@ 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/typescript-estree@5.62.0(typescript@5.9.2)": + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.9.2)': 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.1 globby: 11.1.0 is-glob: 4.0.3 @@ -18358,10 +13693,10 @@ snapshots: transitivePeerDependencies: - supports-color - "@typescript-eslint/typescript-estree@6.21.0(typescript@5.9.2)": + '@typescript-eslint/typescript-estree@6.21.0(typescript@5.9.2)': 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.1 globby: 11.1.0 is-glob: 4.0.3 @@ -18373,14 +13708,14 @@ snapshots: transitivePeerDependencies: - supports-color - "@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.9.2)": + '@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.9.2)': dependencies: - "@eslint-community/eslint-utils": 4.7.0(eslint@8.57.1) - "@types/json-schema": 7.0.15 - "@types/semver": 7.7.0 - "@typescript-eslint/scope-manager": 5.62.0 - "@typescript-eslint/types": 5.62.0 - "@typescript-eslint/typescript-estree": 5.62.0(typescript@5.9.2) + '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@types/json-schema': 7.0.15 + '@types/semver': 7.7.0 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.9.2) eslint: 8.57.1 eslint-scope: 5.1.1 semver: 7.7.2 @@ -18388,118 +13723,118 @@ snapshots: - supports-color - typescript - "@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.9.2)": + '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.9.2)': dependencies: - "@eslint-community/eslint-utils": 4.7.0(eslint@8.57.1) - "@types/json-schema": 7.0.15 - "@types/semver": 7.7.0 - "@typescript-eslint/scope-manager": 6.21.0 - "@typescript-eslint/types": 6.21.0 - "@typescript-eslint/typescript-estree": 6.21.0(typescript@5.9.2) + '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@types/json-schema': 7.0.15 + '@types/semver': 7.7.0 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.2) eslint: 8.57.1 semver: 7.7.2 transitivePeerDependencies: - supports-color - typescript - "@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 - "@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 - "@urql/core@5.2.0(graphql@16.11.0)": + '@urql/core@5.2.0(graphql@16.11.0)': dependencies: - "@0no-co/graphql.web": 1.2.0(graphql@16.11.0) + '@0no-co/graphql.web': 1.2.0(graphql@16.11.0) wonka: 6.3.5 transitivePeerDependencies: - graphql - "@urql/exchange-retry@1.3.2(@urql/core@5.2.0(graphql@16.11.0))": + '@urql/exchange-retry@1.3.2(@urql/core@5.2.0(graphql@16.11.0))': dependencies: - "@urql/core": 5.2.0(graphql@16.11.0) + '@urql/core': 5.2.0(graphql@16.11.0) wonka: 6.3.5 - "@vercel/style-guide@5.2.0(@next/eslint-plugin-next@14.0.4)(eslint@8.57.1)(jest@29.7.0(@types/node@20.19.11))(prettier@3.6.2)(typescript@5.9.2)": + '@vercel/style-guide@5.2.0(@next/eslint-plugin-next@14.0.4)(eslint@8.57.1)(jest@29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)))(prettier@3.6.2)(typescript@5.9.2)': dependencies: - "@babel/core": 7.28.3 - "@babel/eslint-parser": 7.28.0(@babel/core@7.28.3)(eslint@8.57.1) - "@rushstack/eslint-patch": 1.12.0 - "@typescript-eslint/eslint-plugin": 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) - "@typescript-eslint/parser": 6.21.0(eslint@8.57.1)(typescript@5.9.2) + '@babel/core': 7.28.3 + '@babel/eslint-parser': 7.28.0(@babel/core@7.28.3)(eslint@8.57.1) + '@rushstack/eslint-patch': 1.12.0 + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.2) eslint-config-prettier: 9.1.2(eslint@8.57.1) - eslint-import-resolver-alias: 1.1.2(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)) + eslint-import-resolver-alias: 1.1.2(eslint-plugin-import@2.32.0) eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1) eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.1) eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) - eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.19.11))(typescript@5.9.2) + eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)))(typescript@5.9.2) eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) - eslint-plugin-playwright: 0.16.0(eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.19.11))(typescript@5.9.2))(eslint@8.57.1) + eslint-plugin-playwright: 0.16.0(eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)))(typescript@5.9.2))(eslint@8.57.1) eslint-plugin-react: 7.37.5(eslint@8.57.1) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1) eslint-plugin-testing-library: 6.5.0(eslint@8.57.1)(typescript@5.9.2) @@ -18507,7 +13842,7 @@ snapshots: eslint-plugin-unicorn: 48.0.1(eslint@8.57.1) prettier-plugin-packagejson: 2.5.19(prettier@3.6.2) optionalDependencies: - "@next/eslint-plugin-next": 14.0.4 + '@next/eslint-plugin-next': 14.0.4 eslint: 8.57.1 prettier: 3.6.2 typescript: 5.9.2 @@ -18517,25 +13852,25 @@ snapshots: - jest - supports-color - "@wry/caches@1.0.1": + '@wry/caches@1.0.1': dependencies: tslib: 2.8.1 - "@wry/context@0.7.4": + '@wry/context@0.7.4': dependencies: tslib: 2.8.1 - "@wry/equality@0.5.7": + '@wry/equality@0.5.7': dependencies: tslib: 2.8.1 - "@wry/trie@0.5.0": + '@wry/trie@0.5.0': dependencies: tslib: 2.8.1 - "@xmldom/xmldom@0.7.13": {} + '@xmldom/xmldom@0.7.13': {} - "@xmldom/xmldom@0.8.11": {} + '@xmldom/xmldom@0.8.11': {} abab@2.0.6: {} @@ -18755,13 +14090,13 @@ snapshots: babel-core@7.0.0-bridge.0(@babel/core@7.28.3): dependencies: - "@babel/core": 7.28.3 + '@babel/core': 7.28.3 babel-jest@29.7.0(@babel/core@7.28.3): dependencies: - "@babel/core": 7.28.3 - "@jest/transform": 29.7.0 - "@types/babel__core": 7.20.5 + '@babel/core': 7.28.3 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 babel-preset-jest: 29.6.3(@babel/core@7.28.3) chalk: 4.1.2 @@ -18772,9 +14107,9 @@ snapshots: babel-plugin-istanbul@6.1.1: dependencies: - "@babel/helper-plugin-utils": 7.27.1 - "@istanbuljs/load-nyc-config": 1.1.0 - "@istanbuljs/schema": 0.1.3 + '@babel/helper-plugin-utils': 7.27.1 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 test-exclude: 6.0.0 transitivePeerDependencies: @@ -18782,32 +14117,32 @@ snapshots: babel-plugin-jest-hoist@29.6.3: dependencies: - "@babel/template": 7.27.2 - "@babel/types": 7.28.2 - "@types/babel__core": 7.20.5 - "@types/babel__traverse": 7.28.0 + '@babel/template': 7.27.2 + '@babel/types': 7.28.2 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.28.0 babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.3): dependencies: - "@babel/compat-data": 7.28.0 - "@babel/core": 7.28.3 - "@babel/helper-define-polyfill-provider": 0.6.5(@babel/core@7.28.3) + '@babel/compat-data': 7.28.0 + '@babel/core': 7.28.3 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.3) semver: 6.3.1 transitivePeerDependencies: - supports-color babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.3): dependencies: - "@babel/core": 7.28.3 - "@babel/helper-define-polyfill-provider": 0.6.5(@babel/core@7.28.3) + '@babel/core': 7.28.3 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.3) core-js-compat: 3.45.0 transitivePeerDependencies: - supports-color babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.3): dependencies: - "@babel/core": 7.28.3 - "@babel/helper-define-polyfill-provider": 0.6.5(@babel/core@7.28.3) + '@babel/core': 7.28.3 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.3) transitivePeerDependencies: - supports-color @@ -18823,46 +14158,46 @@ snapshots: babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.28.3): dependencies: - "@babel/plugin-syntax-flow": 7.27.1(@babel/core@7.28.3) + '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.28.3) transitivePeerDependencies: - - "@babel/core" + - '@babel/core' babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.3): dependencies: - "@babel/core": 7.28.3 - "@babel/plugin-syntax-async-generators": 7.8.4(@babel/core@7.28.3) - "@babel/plugin-syntax-bigint": 7.8.3(@babel/core@7.28.3) - "@babel/plugin-syntax-class-properties": 7.12.13(@babel/core@7.28.3) - "@babel/plugin-syntax-class-static-block": 7.14.5(@babel/core@7.28.3) - "@babel/plugin-syntax-import-attributes": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-syntax-import-meta": 7.10.4(@babel/core@7.28.3) - "@babel/plugin-syntax-json-strings": 7.8.3(@babel/core@7.28.3) - "@babel/plugin-syntax-logical-assignment-operators": 7.10.4(@babel/core@7.28.3) - "@babel/plugin-syntax-nullish-coalescing-operator": 7.8.3(@babel/core@7.28.3) - "@babel/plugin-syntax-numeric-separator": 7.10.4(@babel/core@7.28.3) - "@babel/plugin-syntax-object-rest-spread": 7.8.3(@babel/core@7.28.3) - "@babel/plugin-syntax-optional-catch-binding": 7.8.3(@babel/core@7.28.3) - "@babel/plugin-syntax-optional-chaining": 7.8.3(@babel/core@7.28.3) - "@babel/plugin-syntax-private-property-in-object": 7.14.5(@babel/core@7.28.3) - "@babel/plugin-syntax-top-level-await": 7.14.5(@babel/core@7.28.3) + '@babel/core': 7.28.3 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.3) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.3) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.3) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.3) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.3) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.3) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.3) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.3) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.3) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.3) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.3) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.3) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.3) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.3) babel-preset-expo@13.2.3(@babel/core@7.28.3): dependencies: - "@babel/helper-module-imports": 7.27.1 - "@babel/plugin-proposal-decorators": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-proposal-export-default-from": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-syntax-export-default-from": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-export-namespace-from": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-flow-strip-types": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-modules-commonjs": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-object-rest-spread": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-parameters": 7.27.7(@babel/core@7.28.3) - "@babel/plugin-transform-private-methods": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-private-property-in-object": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-runtime": 7.28.3(@babel/core@7.28.3) - "@babel/preset-react": 7.27.1(@babel/core@7.28.3) - "@babel/preset-typescript": 7.27.1(@babel/core@7.28.3) - "@react-native/babel-preset": 0.79.5(@babel/core@7.28.3) + '@babel/helper-module-imports': 7.27.1 + '@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.28.3) + '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-syntax-export-default-from': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-object-rest-spread': 7.28.0(@babel/core@7.28.3) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.3) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-runtime': 7.28.3(@babel/core@7.28.3) + '@babel/preset-react': 7.27.1(@babel/core@7.28.3) + '@babel/preset-typescript': 7.27.1(@babel/core@7.28.3) + '@react-native/babel-preset': 0.79.5(@babel/core@7.28.3) babel-plugin-react-native-web: 0.19.13 babel-plugin-syntax-hermes-parser: 0.25.1 babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.28.3) @@ -18870,12 +14205,12 @@ snapshots: react-refresh: 0.14.2 resolve-from: 5.0.0 transitivePeerDependencies: - - "@babel/core" + - '@babel/core' - supports-color babel-preset-jest@29.6.3(@babel/core@7.28.3): dependencies: - "@babel/core": 7.28.3 + '@babel/core': 7.28.3 babel-plugin-jest-hoist: 29.6.3 babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.3) @@ -18883,6 +14218,8 @@ snapshots: base64-js@1.5.1: {} + bcryptjs@3.0.2: {} + bech32@1.1.4: {} bech32@2.0.0: {} @@ -18988,6 +14325,21 @@ snapshots: bytes@3.1.2: {} + c12@3.1.0: + dependencies: + chokidar: 4.0.3 + confbox: 0.2.2 + defu: 6.1.4 + dotenv: 16.6.1 + exsolve: 1.0.7 + giget: 2.0.0 + jiti: 2.5.1 + ohash: 2.0.11 + pathe: 2.0.3 + perfect-debounce: 1.0.0 + pkg-types: 2.3.0 + rc9: 2.1.2 + cac@6.7.14: {} call-bind-apply-helpers@1.0.2: @@ -19056,11 +14408,15 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + chownr@3.0.0: {} chrome-launcher@0.15.2: dependencies: - "@types/node": 20.19.11 + '@types/node': 20.19.11 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -19069,7 +14425,7 @@ snapshots: chromium-edge-launcher@0.2.0: dependencies: - "@types/node": 20.19.11 + '@types/node': 20.19.11 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -19082,6 +14438,12 @@ snapshots: ci-info@3.9.0: {} + ci-info@4.3.0: {} + + citty@0.1.6: + dependencies: + consola: 3.4.2 + cjs-module-lexer@1.4.3: {} clean-regexp@1.0.0: @@ -19116,10 +14478,12 @@ snapshots: clone@1.0.4: {} + clone@2.1.2: {} + cloudflare@4.5.0: dependencies: - "@types/node": 18.19.123 - "@types/node-fetch": 2.6.13 + '@types/node': 18.19.123 + '@types/node-fetch': 2.6.13 abort-controller: 3.0.0 agentkeepalive: 4.6.0 form-data-encoder: 1.7.2 @@ -19192,6 +14556,8 @@ snapshots: concat-map@0.0.1: {} + confbox@0.2.2: {} + connect@3.7.0: dependencies: debug: 2.6.9 @@ -19201,6 +14567,12 @@ snapshots: transitivePeerDependencies: - supports-color + consola@3.4.2: {} + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + content-disposition@1.0.0: dependencies: safe-buffer: 5.2.1 @@ -19232,7 +14604,7 @@ snapshots: create-jest@29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)): dependencies: - "@jest/types": 29.6.3 + '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 @@ -19240,7 +14612,7 @@ snapshots: jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: - - "@types/node" + - '@types/node' - babel-plugin-macros - supports-color - ts-node @@ -19342,6 +14714,8 @@ snapshots: deep-is@0.1.4: {} + deepmerge-ts@7.1.5: {} + deepmerge@4.3.1: {} defaults@1.0.4: @@ -19366,8 +14740,12 @@ snapshots: delayed-stream@1.0.0: {} + depd@1.1.2: {} + depd@2.0.0: {} + destr@2.0.5: {} + destroy@1.2.0: {} detect-indent@6.1.0: {} @@ -19436,13 +14814,18 @@ snapshots: eciesjs@0.4.15: dependencies: - "@ecies/ciphers": 0.2.4(@noble/ciphers@1.3.0) - "@noble/ciphers": 1.3.0 - "@noble/curves": 1.9.7 - "@noble/hashes": 1.8.0 + '@ecies/ciphers': 0.2.4(@noble/ciphers@1.3.0) + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.7 + '@noble/hashes': 1.8.0 ee-first@1.1.1: {} + effect@3.16.12: + dependencies: + '@standard-schema/spec': 1.0.0 + fast-check: 3.23.2 + electron-to-chromium@1.5.204: {} elliptic@6.6.1: @@ -19463,6 +14846,8 @@ snapshots: emoji-regex@9.2.2: {} + empathic@2.0.0: {} + encodeurl@1.0.2: {} encodeurl@2.0.0: {} @@ -19601,56 +14986,56 @@ snapshots: esbuild@0.17.19: optionalDependencies: - "@esbuild/android-arm": 0.17.19 - "@esbuild/android-arm64": 0.17.19 - "@esbuild/android-x64": 0.17.19 - "@esbuild/darwin-arm64": 0.17.19 - "@esbuild/darwin-x64": 0.17.19 - "@esbuild/freebsd-arm64": 0.17.19 - "@esbuild/freebsd-x64": 0.17.19 - "@esbuild/linux-arm": 0.17.19 - "@esbuild/linux-arm64": 0.17.19 - "@esbuild/linux-ia32": 0.17.19 - "@esbuild/linux-loong64": 0.17.19 - "@esbuild/linux-mips64el": 0.17.19 - "@esbuild/linux-ppc64": 0.17.19 - "@esbuild/linux-riscv64": 0.17.19 - "@esbuild/linux-s390x": 0.17.19 - "@esbuild/linux-x64": 0.17.19 - "@esbuild/netbsd-x64": 0.17.19 - "@esbuild/openbsd-x64": 0.17.19 - "@esbuild/sunos-x64": 0.17.19 - "@esbuild/win32-arm64": 0.17.19 - "@esbuild/win32-ia32": 0.17.19 - "@esbuild/win32-x64": 0.17.19 + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 esbuild@0.25.4: optionalDependencies: - "@esbuild/aix-ppc64": 0.25.4 - "@esbuild/android-arm": 0.25.4 - "@esbuild/android-arm64": 0.25.4 - "@esbuild/android-x64": 0.25.4 - "@esbuild/darwin-arm64": 0.25.4 - "@esbuild/darwin-x64": 0.25.4 - "@esbuild/freebsd-arm64": 0.25.4 - "@esbuild/freebsd-x64": 0.25.4 - "@esbuild/linux-arm": 0.25.4 - "@esbuild/linux-arm64": 0.25.4 - "@esbuild/linux-ia32": 0.25.4 - "@esbuild/linux-loong64": 0.25.4 - "@esbuild/linux-mips64el": 0.25.4 - "@esbuild/linux-ppc64": 0.25.4 - "@esbuild/linux-riscv64": 0.25.4 - "@esbuild/linux-s390x": 0.25.4 - "@esbuild/linux-x64": 0.25.4 - "@esbuild/netbsd-arm64": 0.25.4 - "@esbuild/netbsd-x64": 0.25.4 - "@esbuild/openbsd-arm64": 0.25.4 - "@esbuild/openbsd-x64": 0.25.4 - "@esbuild/sunos-x64": 0.25.4 - "@esbuild/win32-arm64": 0.25.4 - "@esbuild/win32-ia32": 0.25.4 - "@esbuild/win32-x64": 0.25.4 + '@esbuild/aix-ppc64': 0.25.4 + '@esbuild/android-arm': 0.25.4 + '@esbuild/android-arm64': 0.25.4 + '@esbuild/android-x64': 0.25.4 + '@esbuild/darwin-arm64': 0.25.4 + '@esbuild/darwin-x64': 0.25.4 + '@esbuild/freebsd-arm64': 0.25.4 + '@esbuild/freebsd-x64': 0.25.4 + '@esbuild/linux-arm': 0.25.4 + '@esbuild/linux-arm64': 0.25.4 + '@esbuild/linux-ia32': 0.25.4 + '@esbuild/linux-loong64': 0.25.4 + '@esbuild/linux-mips64el': 0.25.4 + '@esbuild/linux-ppc64': 0.25.4 + '@esbuild/linux-riscv64': 0.25.4 + '@esbuild/linux-s390x': 0.25.4 + '@esbuild/linux-x64': 0.25.4 + '@esbuild/netbsd-arm64': 0.25.4 + '@esbuild/netbsd-x64': 0.25.4 + '@esbuild/openbsd-arm64': 0.25.4 + '@esbuild/openbsd-x64': 0.25.4 + '@esbuild/sunos-x64': 0.25.4 + '@esbuild/win32-arm64': 0.25.4 + '@esbuild/win32-ia32': 0.25.4 + '@esbuild/win32-x64': 0.25.4 escalade@3.2.0: {} @@ -19672,9 +15057,9 @@ snapshots: eslint-config-next@14.0.4(eslint@8.57.1)(typescript@5.9.2): dependencies: - "@next/eslint-plugin-next": 14.0.4 - "@rushstack/eslint-patch": 1.12.0 - "@typescript-eslint/parser": 6.21.0(eslint@8.57.1)(typescript@5.9.2) + '@next/eslint-plugin-next': 14.0.4 + '@rushstack/eslint-patch': 1.12.0 + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.2) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1) @@ -19698,7 +15083,7 @@ snapshots: eslint: 8.57.1 eslint-plugin-turbo: 1.13.4(eslint@8.57.1) - eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)): + eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.32.0): dependencies: eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) @@ -19712,7 +15097,7 @@ snapshots: eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1): dependencies: - "@nolyfill/is-core-module": 1.0.39 + '@nolyfill/is-core-module': 1.0.39 debug: 4.4.1 eslint: 8.57.1 get-tsconfig: 4.10.1 @@ -19725,11 +15110,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1))(eslint@8.57.1): + eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: - "@typescript-eslint/parser": 6.21.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.2) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1) @@ -19744,7 +15129,7 @@ snapshots: eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): 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 @@ -19753,7 +15138,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1))(eslint@8.57.1) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -19765,18 +15150,18 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - "@typescript-eslint/parser": 6.21.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.19.11))(typescript@5.9.2): + eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)))(typescript@5.9.2): dependencies: - "@typescript-eslint/utils": 5.62.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.9.2) eslint: 8.57.1 optionalDependencies: - "@typescript-eslint/eslint-plugin": 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) jest: 29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) transitivePeerDependencies: - supports-color @@ -19801,11 +15186,11 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-playwright@0.16.0(eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.19.11))(typescript@5.9.2))(eslint@8.57.1): + eslint-plugin-playwright@0.16.0(eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)))(typescript@5.9.2))(eslint@8.57.1): dependencies: eslint: 8.57.1 optionalDependencies: - eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.19.11))(typescript@5.9.2) + eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)))(typescript@5.9.2) eslint-plugin-react-hooks@4.6.2(eslint@8.57.1): dependencies: @@ -19839,7 +15224,7 @@ snapshots: eslint-plugin-testing-library@6.5.0(eslint@8.57.1)(typescript@5.9.2): dependencies: - "@typescript-eslint/utils": 5.62.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.9.2) eslint: 8.57.1 transitivePeerDependencies: - supports-color @@ -19847,8 +15232,8 @@ snapshots: eslint-plugin-tsdoc@0.2.17: dependencies: - "@microsoft/tsdoc": 0.14.2 - "@microsoft/tsdoc-config": 0.16.2 + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 eslint-plugin-turbo@1.13.4(eslint@8.57.1): dependencies: @@ -19857,8 +15242,8 @@ snapshots: eslint-plugin-unicorn@48.0.1(eslint@8.57.1): dependencies: - "@babel/helper-validator-identifier": 7.27.1 - "@eslint-community/eslint-utils": 4.7.0(eslint@8.57.1) + '@babel/helper-validator-identifier': 7.27.1 + '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) ci-info: 3.9.0 clean-regexp: 1.0.0 eslint: 8.57.1 @@ -19890,14 +15275,14 @@ snapshots: eslint@8.57.1: dependencies: - "@eslint-community/eslint-utils": 4.7.0(eslint@8.57.1) - "@eslint-community/regexpp": 4.12.1 - "@eslint/eslintrc": 2.1.4 - "@eslint/js": 8.57.1 - "@humanwhocodes/config-array": 0.13.0 - "@humanwhocodes/module-importer": 1.0.1 - "@nodelib/fs.walk": 1.2.8 - "@ungap/structured-clone": 1.3.0 + '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@eslint-community/regexpp': 4.12.1 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0 + '@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 @@ -19979,15 +15364,24 @@ snapshots: expect@29.7.0: dependencies: - "@jest/expect-utils": 29.7.0 + '@jest/expect-utils': 29.7.0 jest-get-type: 29.6.3 jest-matcher-utils: 29.7.0 jest-message-util: 29.7.0 jest-util: 29.7.0 + expect@30.1.2: + dependencies: + '@jest/expect-utils': 30.1.2 + '@jest/get-type': 30.1.0 + jest-matcher-utils: 30.1.2 + jest-message-util: 30.1.0 + jest-mock: 30.0.5 + jest-util: 30.0.5 + expo-asset@11.1.7(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1): dependencies: - "@expo/image-utils": 0.7.6 + '@expo/image-utils': 0.7.6 expo: 53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) expo-constants: 17.1.7(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1)) react: 18.3.1 @@ -19997,8 +15391,8 @@ snapshots: expo-constants@17.0.8(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1)): dependencies: - "@expo/config": 10.0.11 - "@expo/env": 0.4.2 + '@expo/config': 10.0.11 + '@expo/env': 0.4.2 expo: 53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) react-native: 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1) transitivePeerDependencies: @@ -20006,8 +15400,8 @@ snapshots: expo-constants@17.1.7(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1)): dependencies: - "@expo/config": 11.0.13 - "@expo/env": 1.0.7 + '@expo/config': 11.0.13 + '@expo/env': 1.0.7 expo: 53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) react-native: 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1) transitivePeerDependencies: @@ -20041,7 +15435,7 @@ snapshots: expo-modules-autolinking@2.1.14: dependencies: - "@expo/spawn-async": 1.7.2 + '@expo/spawn-async': 1.7.2 chalk: 4.1.2 commander: 7.2.0 find-up: 5.0.0 @@ -20060,13 +15454,13 @@ snapshots: expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1): dependencies: - "@babel/runtime": 7.28.3 - "@expo/cli": 0.24.20(graphql@16.11.0) - "@expo/config": 11.0.13 - "@expo/config-plugins": 10.1.2 - "@expo/fingerprint": 0.13.4 - "@expo/metro-config": 0.20.17 - "@expo/vector-icons": 14.1.0(expo-font@13.3.2(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react@18.3.1))(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) + '@babel/runtime': 7.28.3 + '@expo/cli': 0.24.20(graphql@16.11.0) + '@expo/config': 11.0.13 + '@expo/config-plugins': 10.1.2 + '@expo/fingerprint': 0.13.4 + '@expo/metro-config': 0.20.17 + '@expo/vector-icons': 14.1.0(expo-font@13.3.2(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react@18.3.1))(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) babel-preset-expo: 13.2.3(@babel/core@7.28.3) expo-asset: 11.1.7(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) expo-constants: 17.1.7(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1)) @@ -20080,7 +15474,7 @@ snapshots: react-native-edge-to-edge: 1.6.0(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) whatwg-url-without-unicode: 8.0.0-3 transitivePeerDependencies: - - "@babel/core" + - '@babel/core' - babel-plugin-react-compiler - bufferutil - graphql @@ -20132,12 +15526,16 @@ snapshots: fast-base64-decode@1.0.0: {} + fast-check@3.23.2: + dependencies: + pure-rand: 6.1.0 + fast-deep-equal@3.1.3: {} 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 @@ -20341,6 +15739,15 @@ snapshots: getenv@2.0.0: {} + giget@2.0.0: + dependencies: + citty: 0.1.6 + consola: 3.4.2 + defu: 6.1.4 + node-fetch-native: 1.6.7 + nypm: 0.6.2 + pathe: 2.0.3 + git-hooks-list@4.1.1: {} glob-parent@5.1.2: @@ -20407,7 +15814,7 @@ snapshots: globby@10.0.1: dependencies: - "@types/glob": 7.2.0 + '@types/glob': 7.2.0 array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.3.3 @@ -20526,7 +15933,7 @@ snapshots: http-proxy-agent@5.0.0: dependencies: - "@tootallnate/once": 2.0.0 + '@tootallnate/once': 2.0.0 agent-base: 6.0.2 debug: 4.4.1 transitivePeerDependencies: @@ -20779,9 +16186,9 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: - "@babel/core": 7.28.3 - "@babel/parser": 7.28.3 - "@istanbuljs/schema": 0.1.3 + '@babel/core': 7.28.3 + '@babel/parser': 7.28.3 + '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 transitivePeerDependencies: @@ -20789,9 +16196,9 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: - "@babel/core": 7.28.3 - "@babel/parser": 7.28.3 - "@istanbuljs/schema": 0.1.3 + '@babel/core': 7.28.3 + '@babel/parser': 7.28.3 + '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.7.2 transitivePeerDependencies: @@ -20827,13 +16234,13 @@ snapshots: jackspeak@3.4.3: dependencies: - "@isaacs/cliui": 8.0.2 + '@isaacs/cliui': 8.0.2 optionalDependencies: - "@pkgjs/parseargs": 0.11.0 + '@pkgjs/parseargs': 0.11.0 jackspeak@4.1.1: dependencies: - "@isaacs/cliui": 8.0.2 + '@isaacs/cliui': 8.0.2 jest-changed-files@29.7.0: dependencies: @@ -20843,11 +16250,11 @@ snapshots: jest-circus@29.7.0: dependencies: - "@jest/environment": 29.7.0 - "@jest/expect": 29.7.0 - "@jest/test-result": 29.7.0 - "@jest/types": 29.6.3 - "@types/node": 20.19.11 + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.19.11 chalk: 4.1.2 co: 4.6.0 dedent: 1.6.0 @@ -20869,9 +16276,9 @@ snapshots: jest-cli@29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)): dependencies: - "@jest/core": 29.7.0(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) - "@jest/test-result": 29.7.0 - "@jest/types": 29.6.3 + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 chalk: 4.1.2 create-jest: 29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) exit: 0.1.2 @@ -20881,16 +16288,16 @@ snapshots: jest-validate: 29.7.0 yargs: 17.7.2 transitivePeerDependencies: - - "@types/node" + - '@types/node' - babel-plugin-macros - supports-color - ts-node jest-config@29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)): dependencies: - "@babel/core": 7.28.3 - "@jest/test-sequencer": 29.7.0 - "@jest/types": 29.6.3 + '@babel/core': 7.28.3 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.28.3) chalk: 4.1.2 ci-info: 3.9.0 @@ -20911,7 +16318,7 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - "@types/node": 20.19.11 + '@types/node': 20.19.11 ts-node: 10.9.2(@types/node@20.19.11)(typescript@5.9.2) transitivePeerDependencies: - babel-plugin-macros @@ -20924,13 +16331,20 @@ snapshots: jest-get-type: 29.6.3 pretty-format: 29.7.0 + jest-diff@30.1.2: + dependencies: + '@jest/diff-sequences': 30.0.1 + '@jest/get-type': 30.1.0 + chalk: 4.1.2 + pretty-format: 30.0.5 + jest-docblock@29.7.0: dependencies: detect-newline: 3.1.0 jest-each@29.7.0: dependencies: - "@jest/types": 29.6.3 + '@jest/types': 29.6.3 chalk: 4.1.2 jest-get-type: 29.6.3 jest-util: 29.7.0 @@ -20938,11 +16352,11 @@ snapshots: jest-environment-jsdom@29.7.0: dependencies: - "@jest/environment": 29.7.0 - "@jest/fake-timers": 29.7.0 - "@jest/types": 29.6.3 - "@types/jsdom": 20.0.1 - "@types/node": 20.19.11 + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/jsdom': 20.0.1 + '@types/node': 20.19.11 jest-mock: 29.7.0 jest-util: 29.7.0 jsdom: 20.0.3 @@ -20953,10 +16367,10 @@ snapshots: jest-environment-node@29.7.0: dependencies: - "@jest/environment": 29.7.0 - "@jest/fake-timers": 29.7.0 - "@jest/types": 29.6.3 - "@types/node": 20.19.11 + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.19.11 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -20964,9 +16378,9 @@ snapshots: jest-haste-map@29.7.0: dependencies: - "@jest/types": 29.6.3 - "@types/graceful-fs": 4.1.9 - "@types/node": 20.19.11 + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 20.19.11 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -20990,11 +16404,18 @@ snapshots: jest-get-type: 29.6.3 pretty-format: 29.7.0 + jest-matcher-utils@30.1.2: + dependencies: + '@jest/get-type': 30.1.0 + chalk: 4.1.2 + jest-diff: 30.1.2 + pretty-format: 30.0.5 + jest-message-util@29.7.0: dependencies: - "@babel/code-frame": 7.27.1 - "@jest/types": 29.6.3 - "@types/stack-utils": 2.0.3 + '@babel/code-frame': 7.27.1 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 chalk: 4.1.2 graceful-fs: 4.2.11 micromatch: 4.0.8 @@ -21002,18 +16423,38 @@ snapshots: slash: 3.0.0 stack-utils: 2.0.6 + jest-message-util@30.1.0: + dependencies: + '@babel/code-frame': 7.27.1 + '@jest/types': 30.0.5 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 30.0.5 + slash: 3.0.0 + stack-utils: 2.0.6 + jest-mock@29.7.0: dependencies: - "@jest/types": 29.6.3 - "@types/node": 20.19.11 + '@jest/types': 29.6.3 + '@types/node': 20.19.11 jest-util: 29.7.0 + jest-mock@30.0.5: + dependencies: + '@jest/types': 30.0.5 + '@types/node': 20.19.11 + jest-util: 30.0.5 + jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): optionalDependencies: jest-resolve: 29.7.0 jest-regex-util@29.6.3: {} + jest-regex-util@30.0.1: {} + jest-resolve-dependencies@29.7.0: dependencies: jest-regex-util: 29.6.3 @@ -21035,12 +16476,12 @@ snapshots: jest-runner@29.7.0: dependencies: - "@jest/console": 29.7.0 - "@jest/environment": 29.7.0 - "@jest/test-result": 29.7.0 - "@jest/transform": 29.7.0 - "@jest/types": 29.6.3 - "@types/node": 20.19.11 + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.19.11 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -21061,14 +16502,14 @@ snapshots: jest-runtime@29.7.0: dependencies: - "@jest/environment": 29.7.0 - "@jest/fake-timers": 29.7.0 - "@jest/globals": 29.7.0 - "@jest/source-map": 29.6.3 - "@jest/test-result": 29.7.0 - "@jest/transform": 29.7.0 - "@jest/types": 29.6.3 - "@types/node": 20.19.11 + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.19.11 chalk: 4.1.2 cjs-module-lexer: 1.4.3 collect-v8-coverage: 1.0.2 @@ -21088,14 +16529,14 @@ snapshots: jest-snapshot@29.7.0: dependencies: - "@babel/core": 7.28.3 - "@babel/generator": 7.28.3 - "@babel/plugin-syntax-jsx": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-syntax-typescript": 7.27.1(@babel/core@7.28.3) - "@babel/types": 7.28.2 - "@jest/expect-utils": 29.7.0 - "@jest/transform": 29.7.0 - "@jest/types": 29.6.3 + '@babel/core': 7.28.3 + '@babel/generator': 7.28.3 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.3) + '@babel/types': 7.28.2 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.3) chalk: 4.1.2 expect: 29.7.0 @@ -21113,16 +16554,25 @@ snapshots: jest-util@29.7.0: dependencies: - "@jest/types": 29.6.3 - "@types/node": 20.19.11 + '@jest/types': 29.6.3 + '@types/node': 20.19.11 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 picomatch: 2.3.1 + jest-util@30.0.5: + dependencies: + '@jest/types': 30.0.5 + '@types/node': 20.19.11 + chalk: 4.1.2 + ci-info: 4.3.0 + graceful-fs: 4.2.11 + picomatch: 4.0.3 + jest-validate@29.7.0: dependencies: - "@jest/types": 29.6.3 + '@jest/types': 29.6.3 camelcase: 6.3.0 chalk: 4.1.2 jest-get-type: 29.6.3 @@ -21131,9 +16581,9 @@ snapshots: jest-watcher@29.7.0: dependencies: - "@jest/test-result": 29.7.0 - "@jest/types": 29.6.3 - "@types/node": 20.19.11 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.19.11 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -21142,19 +16592,19 @@ snapshots: jest-worker@29.7.0: dependencies: - "@types/node": 20.19.11 + '@types/node': 20.19.11 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 jest@29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)): dependencies: - "@jest/core": 29.7.0(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) - "@jest/types": 29.6.3 + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) + '@jest/types': 29.6.3 import-local: 3.2.0 jest-cli: 29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) transitivePeerDependencies: - - "@types/node" + - '@types/node' - babel-plugin-macros - supports-color - ts-node @@ -21163,12 +16613,16 @@ snapshots: jiti@1.21.7: {} + jiti@2.5.1: {} + jju@1.4.0: {} jose@4.15.9: {} jose@5.10.0: {} + jose@6.1.0: {} + joycon@3.1.1: {} js-tokens@4.0.0: {} @@ -21188,16 +16642,16 @@ snapshots: jscodeshift@0.14.0(@babel/preset-env@7.28.3(@babel/core@7.28.3)): dependencies: - "@babel/core": 7.28.3 - "@babel/parser": 7.28.3 - "@babel/plugin-proposal-class-properties": 7.18.6(@babel/core@7.28.3) - "@babel/plugin-proposal-nullish-coalescing-operator": 7.18.6(@babel/core@7.28.3) - "@babel/plugin-proposal-optional-chaining": 7.21.0(@babel/core@7.28.3) - "@babel/plugin-transform-modules-commonjs": 7.27.1(@babel/core@7.28.3) - "@babel/preset-env": 7.28.3(@babel/core@7.28.3) - "@babel/preset-flow": 7.27.1(@babel/core@7.28.3) - "@babel/preset-typescript": 7.27.1(@babel/core@7.28.3) - "@babel/register": 7.28.3(@babel/core@7.28.3) + '@babel/core': 7.28.3 + '@babel/parser': 7.28.3 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.28.3) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.28.3) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.28.3) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.3) + '@babel/preset-env': 7.28.3(@babel/core@7.28.3) + '@babel/preset-flow': 7.27.1(@babel/core@7.28.3) + '@babel/preset-typescript': 7.27.1(@babel/core@7.28.3) + '@babel/register': 7.28.3(@babel/core@7.28.3) babel-core: 7.0.0-bridge.0(@babel/core@7.28.3) chalk: 4.1.2 flow-parser: 0.279.0 @@ -21415,6 +16869,10 @@ snapshots: dependencies: yallist: 3.1.1 + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + lz-string@1.5.0: {} make-dir@2.1.0: @@ -21436,10 +16894,14 @@ snapshots: math-intrinsics@1.1.0: {} + media-typer@0.3.0: {} + media-typer@1.1.0: {} memoize-one@5.2.1: {} + merge-descriptors@1.0.3: {} + merge-descriptors@2.0.0: {} merge-options@3.0.4: @@ -21454,7 +16916,7 @@ snapshots: metro-babel-transformer@0.81.5: dependencies: - "@babel/core": 7.28.3 + '@babel/core': 7.28.3 flow-enums-runtime: 0.0.6 hermes-parser: 0.25.1 nullthrows: 1.1.1 @@ -21517,14 +16979,14 @@ snapshots: metro-runtime@0.81.5: dependencies: - "@babel/runtime": 7.28.3 + '@babel/runtime': 7.28.3 flow-enums-runtime: 0.0.6 metro-source-map@0.81.5: dependencies: - "@babel/traverse": 7.28.3 - "@babel/traverse--for-generate-function-map": "@babel/traverse@7.28.3" - "@babel/types": 7.28.2 + '@babel/traverse': 7.28.3 + '@babel/traverse--for-generate-function-map': '@babel/traverse@7.28.3' + '@babel/types': 7.28.2 flow-enums-runtime: 0.0.6 invariant: 2.2.4 metro-symbolicate: 0.81.5 @@ -21548,10 +17010,10 @@ snapshots: metro-transform-plugins@0.81.5: dependencies: - "@babel/core": 7.28.3 - "@babel/generator": 7.28.3 - "@babel/template": 7.27.2 - "@babel/traverse": 7.28.3 + '@babel/core': 7.28.3 + '@babel/generator': 7.28.3 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.3 flow-enums-runtime: 0.0.6 nullthrows: 1.1.1 transitivePeerDependencies: @@ -21559,10 +17021,10 @@ snapshots: metro-transform-worker@0.81.5: dependencies: - "@babel/core": 7.28.3 - "@babel/generator": 7.28.3 - "@babel/parser": 7.28.3 - "@babel/types": 7.28.2 + '@babel/core': 7.28.3 + '@babel/generator': 7.28.3 + '@babel/parser': 7.28.3 + '@babel/types': 7.28.2 flow-enums-runtime: 0.0.6 metro: 0.81.5 metro-babel-transformer: 0.81.5 @@ -21579,13 +17041,13 @@ snapshots: metro@0.81.5: dependencies: - "@babel/code-frame": 7.27.1 - "@babel/core": 7.28.3 - "@babel/generator": 7.28.3 - "@babel/parser": 7.28.3 - "@babel/template": 7.27.2 - "@babel/traverse": 7.28.3 - "@babel/types": 7.28.2 + '@babel/code-frame': 7.27.1 + '@babel/core': 7.28.3 + '@babel/generator': 7.28.3 + '@babel/parser': 7.28.3 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.3 + '@babel/types': 7.28.2 accepts: 1.3.8 chalk: 4.1.2 ci-info: 2.0.0 @@ -21653,7 +17115,7 @@ snapshots: miniflare@4.20250829.0: dependencies: - "@cspotcode/source-map-support": 0.8.1 + '@cspotcode/source-map-support': 0.8.1 acorn: 8.14.0 acorn-walk: 8.3.2 exit-hook: 2.2.1 @@ -21675,7 +17137,7 @@ snapshots: minimatch@10.0.3: dependencies: - "@isaacs/brace-expansion": 5.0.0 + '@isaacs/brace-expansion': 5.0.0 minimatch@3.1.2: dependencies: @@ -21745,37 +17207,58 @@ snapshots: nested-error-stacks@2.0.1: {} - next@14.2.31(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next-auth@4.24.11(next@14.2.31(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.3 + '@panva/hkdf': 1.2.1 + cookie: 0.7.1 + jose: 4.15.9 + next: 14.2.31(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + oauth: 0.9.15 + openid-client: 5.7.1 + preact: 10.27.2 + preact-render-to-string: 5.2.6(preact@10.27.2) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + uuid: 8.3.2 + + next@14.2.31(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - "@next/env": 14.2.31 - "@swc/helpers": 0.5.5 + '@next/env': 14.2.31 + '@swc/helpers': 0.5.5 busboy: 1.6.0 caniuse-lite: 1.0.30001735 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - styled-jsx: 5.1.1(react@18.3.1) + styled-jsx: 5.1.1(@babel/core@7.28.3)(react@18.3.1) optionalDependencies: - "@next/swc-darwin-arm64": 14.2.31 - "@next/swc-darwin-x64": 14.2.31 - "@next/swc-linux-arm64-gnu": 14.2.31 - "@next/swc-linux-arm64-musl": 14.2.31 - "@next/swc-linux-x64-gnu": 14.2.31 - "@next/swc-linux-x64-musl": 14.2.31 - "@next/swc-win32-arm64-msvc": 14.2.31 - "@next/swc-win32-ia32-msvc": 14.2.31 - "@next/swc-win32-x64-msvc": 14.2.31 + '@next/swc-darwin-arm64': 14.2.31 + '@next/swc-darwin-x64': 14.2.31 + '@next/swc-linux-arm64-gnu': 14.2.31 + '@next/swc-linux-arm64-musl': 14.2.31 + '@next/swc-linux-x64-gnu': 14.2.31 + '@next/swc-linux-x64-musl': 14.2.31 + '@next/swc-win32-arm64-msvc': 14.2.31 + '@next/swc-win32-ia32-msvc': 14.2.31 + '@next/swc-win32-x64-msvc': 14.2.31 transitivePeerDependencies: - - "@babel/core" + - '@babel/core' - babel-plugin-macros + node-cache@5.1.2: + dependencies: + clone: 2.1.2 + node-dir@0.1.17: dependencies: minimatch: 3.1.2 node-domexception@1.0.0: {} + node-fetch-native@1.6.7: {} + node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 @@ -21784,6 +17267,22 @@ snapshots: node-int64@0.4.0: {} + node-mocks-http@1.17.2(@types/express@4.17.23)(@types/node@20.19.11): + dependencies: + accepts: 1.3.8 + content-disposition: 0.5.4 + depd: 1.1.2 + fresh: 0.5.2 + merge-descriptors: 1.0.3 + methods: 1.1.2 + mime: 1.6.0 + parseurl: 1.3.3 + range-parser: 1.2.1 + type-is: 1.6.18 + optionalDependencies: + '@types/express': 4.17.23 + '@types/node': 20.19.11 + node-releases@2.0.19: {} normalize-package-data@2.5.0: @@ -21812,12 +17311,26 @@ snapshots: nwsapi@2.2.21: {} + nypm@0.6.2: + dependencies: + citty: 0.1.6 + consola: 3.4.2 + pathe: 2.0.3 + pkg-types: 2.3.0 + tinyexec: 1.0.1 + + oauth4webapi@3.8.1: {} + + oauth@0.9.15: {} + ob1@0.81.5: dependencies: flow-enums-runtime: 0.0.6 object-assign@4.1.1: {} + object-hash@2.2.0: {} + object-hash@3.0.0: {} object-inspect@1.13.4: {} @@ -21871,6 +17384,8 @@ snapshots: ohash@2.0.11: {} + oidc-token-hash@5.1.1: {} + on-finished@2.3.0: dependencies: ee-first: 1.1.1 @@ -21904,11 +17419,18 @@ snapshots: is-docker: 2.2.1 is-wsl: 2.2.0 + openid-client@5.7.1: + dependencies: + jose: 4.15.9 + lru-cache: 6.0.0 + object-hash: 2.2.0 + oidc-token-hash: 5.1.1 + optimism@0.18.1: dependencies: - "@wry/caches": 1.0.1 - "@wry/context": 0.7.4 - "@wry/trie": 0.5.0 + '@wry/caches': 1.0.1 + '@wry/context': 0.7.4 + '@wry/trie': 0.5.0 tslib: 2.8.1 optionator@0.9.4: @@ -21984,7 +17506,7 @@ snapshots: parse-json@5.2.0: dependencies: - "@babel/code-frame": 7.27.1 + '@babel/code-frame': 7.27.1 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -22027,6 +17549,8 @@ snapshots: pathe@2.0.3: {} + perfect-debounce@1.0.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -22049,9 +17573,15 @@ snapshots: dependencies: find-up: 4.1.0 + pkg-types@2.3.0: + dependencies: + confbox: 0.2.2 + exsolve: 1.0.7 + pathe: 2.0.3 + plist@3.1.0: dependencies: - "@xmldom/xmldom": 0.8.11 + '@xmldom/xmldom': 0.8.11 base64-js: 1.5.1 xmlbuilder: 15.1.1 @@ -22081,7 +17611,7 @@ snapshots: postcss: 8.5.6 ts-node: 10.9.2(@types/node@20.19.11)(typescript@5.9.2) - postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@20.19.11)): + postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)): dependencies: lilconfig: 3.1.3 yaml: 2.8.1 @@ -22119,6 +17649,19 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + preact-render-to-string@5.2.6(preact@10.27.2): + dependencies: + preact: 10.27.2 + pretty-format: 3.8.0 + + preact-render-to-string@6.5.11(preact@10.24.3): + dependencies: + preact: 10.24.3 + + preact@10.24.3: {} + + preact@10.27.2: {} + prelude-ls@1.2.1: {} prettier-plugin-packagejson@2.5.19(prettier@3.6.2): @@ -22146,10 +17689,27 @@ snapshots: pretty-format@29.7.0: dependencies: - "@jest/schemas": 29.6.3 + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + + pretty-format@3.8.0: {} + + pretty-format@30.0.5: + dependencies: + '@jest/schemas': 30.0.5 ansi-styles: 5.2.0 react-is: 18.3.1 + prisma@6.16.1(typescript@5.9.2): + dependencies: + '@prisma/config': 6.16.1 + '@prisma/engines': 6.16.1 + optionalDependencies: + typescript: 5.9.2 + transitivePeerDependencies: + - magicast + proc-log@4.2.0: {} process@0.11.10: {} @@ -22173,33 +17733,33 @@ snapshots: protobufjs@6.11.4: dependencies: - "@protobufjs/aspromise": 1.1.2 - "@protobufjs/base64": 1.1.2 - "@protobufjs/codegen": 2.0.4 - "@protobufjs/eventemitter": 1.1.0 - "@protobufjs/fetch": 1.1.0 - "@protobufjs/float": 1.0.2 - "@protobufjs/inquire": 1.1.0 - "@protobufjs/path": 1.1.2 - "@protobufjs/pool": 1.1.0 - "@protobufjs/utf8": 1.1.0 - "@types/long": 4.0.2 - "@types/node": 20.19.11 + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/long': 4.0.2 + '@types/node': 20.19.11 long: 4.0.0 protobufjs@7.5.4: dependencies: - "@protobufjs/aspromise": 1.1.2 - "@protobufjs/base64": 1.1.2 - "@protobufjs/codegen": 2.0.4 - "@protobufjs/eventemitter": 1.1.0 - "@protobufjs/fetch": 1.1.0 - "@protobufjs/float": 1.0.2 - "@protobufjs/inquire": 1.1.0 - "@protobufjs/path": 1.1.2 - "@protobufjs/pool": 1.1.0 - "@protobufjs/utf8": 1.1.0 - "@types/node": 20.19.11 + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 20.19.11 long: 5.3.2 proxy-addr@2.0.7: @@ -22239,6 +17799,8 @@ snapshots: range-parser@1.2.1: {} + rate-limiter-flexible@4.0.1: {} + raw-body@3.0.0: dependencies: bytes: 3.1.2 @@ -22246,6 +17808,11 @@ snapshots: iconv-lite: 0.6.3 unpipe: 1.0.0 + rc9@2.1.2: + dependencies: + defu: 6.1.4 + destr: 2.0.5 + rc@1.2.8: dependencies: deep-extend: 0.6.0 @@ -22290,7 +17857,7 @@ snapshots: react-native-quick-crypto@0.7.17(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1): dependencies: - "@craftzdog/react-native-buffer": 6.1.0(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) + '@craftzdog/react-native-buffer': 6.1.0(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) events: 3.3.0 readable-stream: 4.7.0 string_decoder: 1.3.0 @@ -22301,14 +17868,14 @@ snapshots: react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1): dependencies: - "@jest/create-cache-key-function": 29.7.0 - "@react-native/assets-registry": 0.76.7 - "@react-native/codegen": 0.76.7(@babel/preset-env@7.28.3(@babel/core@7.28.3)) - "@react-native/community-cli-plugin": 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3)) - "@react-native/gradle-plugin": 0.76.7 - "@react-native/js-polyfills": 0.76.7 - "@react-native/normalize-colors": 0.76.7 - "@react-native/virtualized-lists": 0.76.7(@types/react@18.3.23)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) + '@jest/create-cache-key-function': 29.7.0 + '@react-native/assets-registry': 0.76.7 + '@react-native/codegen': 0.76.7(@babel/preset-env@7.28.3(@babel/core@7.28.3)) + '@react-native/community-cli-plugin': 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3)) + '@react-native/gradle-plugin': 0.76.7 + '@react-native/js-polyfills': 0.76.7 + '@react-native/normalize-colors': 0.76.7 + '@react-native/virtualized-lists': 0.76.7(@types/react@18.3.23)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 @@ -22341,11 +17908,11 @@ snapshots: ws: 6.2.3 yargs: 17.7.2 optionalDependencies: - "@types/react": 18.3.23 + '@types/react': 18.3.23 transitivePeerDependencies: - - "@babel/core" - - "@babel/preset-env" - - "@react-native-community/cli-server-api" + - '@babel/core' + - '@babel/preset-env' + - '@react-native-community/cli-server-api' - bufferutil - encoding - supports-color @@ -22359,7 +17926,7 @@ snapshots: react-style-singleton: 2.2.3(@types/react@18.3.23)(react@18.3.1) tslib: 2.8.1 optionalDependencies: - "@types/react": 18.3.23 + '@types/react': 18.3.23 react-remove-scroll@2.7.1(@types/react@18.3.23)(react@18.3.1): dependencies: @@ -22370,7 +17937,7 @@ snapshots: use-callback-ref: 1.3.3(@types/react@18.3.23)(react@18.3.1) use-sidecar: 1.1.3(@types/react@18.3.23)(react@18.3.1) optionalDependencies: - "@types/react": 18.3.23 + '@types/react': 18.3.23 react-style-singleton@2.2.3(@types/react@18.3.23)(react@18.3.1): dependencies: @@ -22378,7 +17945,7 @@ snapshots: react: 18.3.1 tslib: 2.8.1 optionalDependencies: - "@types/react": 18.3.23 + '@types/react': 18.3.23 react@18.3.1: dependencies: @@ -22396,7 +17963,7 @@ snapshots: read-pkg@5.2.0: dependencies: - "@types/normalize-package-data": 2.4.4 + '@types/normalize-package-data': 2.4.4 normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 @@ -22420,6 +17987,8 @@ snapshots: dependencies: picomatch: 2.3.1 + readdirp@4.1.2: {} + readline@1.3.0: {} readonly-date@1.0.0: {} @@ -22487,7 +18056,7 @@ snapshots: rehackt@0.1.0(@types/react@18.3.23)(react@18.3.1): optionalDependencies: - "@types/react": 18.3.23 + '@types/react': 18.3.23 react: 18.3.1 require-directory@2.1.1: {} @@ -22560,7 +18129,7 @@ snapshots: rollup-plugin-copy@3.5.0: dependencies: - "@types/fs-extra": 8.1.5 + '@types/fs-extra': 8.1.5 colorette: 1.4.0 fs-extra: 8.1.0 globby: 10.0.1 @@ -22623,7 +18192,7 @@ snapshots: selfsigned@2.4.1: dependencies: - "@types/node-forge": 1.3.13 + '@types/node-forge': 1.3.13 node-forge: 1.3.1 semver@5.7.2: {} @@ -22738,25 +18307,25 @@ snapshots: detect-libc: 2.0.4 semver: 7.7.2 optionalDependencies: - "@img/sharp-darwin-arm64": 0.33.5 - "@img/sharp-darwin-x64": 0.33.5 - "@img/sharp-libvips-darwin-arm64": 1.0.4 - "@img/sharp-libvips-darwin-x64": 1.0.4 - "@img/sharp-libvips-linux-arm": 1.0.5 - "@img/sharp-libvips-linux-arm64": 1.0.4 - "@img/sharp-libvips-linux-s390x": 1.0.4 - "@img/sharp-libvips-linux-x64": 1.0.4 - "@img/sharp-libvips-linuxmusl-arm64": 1.0.4 - "@img/sharp-libvips-linuxmusl-x64": 1.0.4 - "@img/sharp-linux-arm": 0.33.5 - "@img/sharp-linux-arm64": 0.33.5 - "@img/sharp-linux-s390x": 0.33.5 - "@img/sharp-linux-x64": 0.33.5 - "@img/sharp-linuxmusl-arm64": 0.33.5 - "@img/sharp-linuxmusl-x64": 0.33.5 - "@img/sharp-wasm32": 0.33.5 - "@img/sharp-win32-ia32": 0.33.5 - "@img/sharp-win32-x64": 0.33.5 + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 shebang-command@2.0.0: dependencies: @@ -23003,10 +18572,12 @@ snapshots: structured-headers@0.4.1: {} - styled-jsx@5.1.1(react@18.3.1): + styled-jsx@5.1.1(@babel/core@7.28.3)(react@18.3.1): dependencies: client-only: 0.0.1 react: 18.3.1 + optionalDependencies: + '@babel/core': 7.28.3 stytch@9.1.0: dependencies: @@ -23015,7 +18586,7 @@ snapshots: sucrase@3.35.0: dependencies: - "@jridgewell/gen-mapping": 0.3.13 + '@jridgewell/gen-mapping': 0.3.13 commander: 4.1.1 glob: 10.4.5 lines-and-columns: 1.2.4 @@ -23052,17 +18623,17 @@ snapshots: synckit@0.11.11: dependencies: - "@pkgr/core": 0.2.9 + '@pkgr/core': 0.2.9 tailwind-merge@2.6.0: {} - tailwindcss-animate@1.0.7(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@20.19.11))): + tailwindcss-animate@1.0.7(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2))): dependencies: - tailwindcss: 3.4.17(ts-node@10.9.2(@types/node@20.19.11)) + tailwindcss: 3.4.17(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) - tailwindcss@3.4.17(ts-node@10.9.2(@types/node@20.19.11)): + tailwindcss@3.4.17(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)): 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 @@ -23079,7 +18650,7 @@ snapshots: postcss: 8.5.6 postcss-import: 15.1.0(postcss@8.5.6) postcss-js: 4.0.1(postcss@8.5.6) - postcss-load-config: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@20.19.11)) + postcss-load-config: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) postcss-nested: 6.2.0(postcss@8.5.6) postcss-selector-parser: 6.1.2 resolve: 1.22.10 @@ -23089,7 +18660,7 @@ snapshots: tar@7.4.3: dependencies: - "@isaacs/fs-minipass": 4.0.1 + '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 minipass: 7.1.2 minizlib: 3.0.2 @@ -23111,21 +18682,21 @@ snapshots: terser@5.16.9: dependencies: - "@jridgewell/source-map": 0.3.11 + '@jridgewell/source-map': 0.3.11 acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 terser@5.43.1: dependencies: - "@jridgewell/source-map": 0.3.11 + '@jridgewell/source-map': 0.3.11 acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 test-exclude@6.0.0: dependencies: - "@istanbuljs/schema": 0.1.3 + '@istanbuljs/schema': 0.1.3 glob: 7.2.3 minimatch: 3.1.2 @@ -23143,6 +18714,8 @@ snapshots: throat@5.0.0: {} + tinyexec@1.0.1: {} + tinyglobby@0.2.14: dependencies: fdir: 6.5.0(picomatch@4.0.3) @@ -23185,7 +18758,7 @@ snapshots: dependencies: tslib: 2.8.1 - ts-jest@29.4.1(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.17.19)(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)))(typescript@5.9.2): + ts-jest@29.4.1(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.17.19)(jest-util@30.0.5)(jest@29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)))(typescript@5.9.2): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 @@ -23199,21 +18772,21 @@ snapshots: typescript: 5.9.2 yargs-parser: 21.1.1 optionalDependencies: - "@babel/core": 7.28.3 - "@jest/transform": 29.7.0 - "@jest/types": 29.6.3 + '@babel/core': 7.28.3 + '@jest/transform': 29.7.0 + '@jest/types': 30.0.5 babel-jest: 29.7.0(@babel/core@7.28.3) esbuild: 0.17.19 - jest-util: 29.7.0 + jest-util: 30.0.5 ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2): dependencies: - "@cspotcode/source-map-support": 0.8.1 - "@tsconfig/node10": 1.0.11 - "@tsconfig/node12": 1.0.11 - "@tsconfig/node14": 1.0.3 - "@tsconfig/node16": 1.0.4 - "@types/node": 20.19.11 + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.19.11 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -23228,7 +18801,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 @@ -23265,6 +18838,13 @@ snapshots: tslib: 1.14.1 typescript: 5.9.2 + tsx@4.20.5: + dependencies: + esbuild: 0.25.4 + get-tsconfig: 4.10.1 + optionalDependencies: + fsevents: 2.3.3 + turbo-darwin-64@2.5.6: optional: true @@ -23310,6 +18890,11 @@ snapshots: type-fest@4.41.0: {} + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + type-is@2.0.1: dependencies: content-type: 1.0.5 @@ -23369,7 +18954,7 @@ snapshots: undici@5.29.0: dependencies: - "@fastify/busboy": 2.1.1 + '@fastify/busboy': 2.1.1 undici@6.21.3: {} @@ -23408,25 +18993,25 @@ snapshots: dependencies: napi-postinstall: 0.3.3 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.25.2): dependencies: @@ -23450,7 +19035,7 @@ snapshots: react: 18.3.1 tslib: 2.8.1 optionalDependencies: - "@types/react": 18.3.23 + '@types/react': 18.3.23 use-sidecar@1.1.3(@types/react@18.3.23)(react@18.3.1): dependencies: @@ -23458,7 +19043,7 @@ snapshots: react: 18.3.1 tslib: 2.8.1 optionalDependencies: - "@types/react": 18.3.23 + '@types/react': 18.3.23 util-deprecate@1.0.2: {} @@ -23474,14 +19059,16 @@ snapshots: uuid@7.0.3: {} + uuid@8.3.2: {} + uuid@9.0.1: {} v8-compile-cache-lib@3.0.1: {} v8-to-istanbul@9.3.0: dependencies: - "@jridgewell/trace-mapping": 0.3.30 - "@types/istanbul-lib-coverage": 2.0.6 + '@jridgewell/trace-mapping': 0.3.30 + '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 validate-npm-package-license@3.0.4: @@ -23604,16 +19191,16 @@ snapshots: workerd@1.20250829.0: optionalDependencies: - "@cloudflare/workerd-darwin-64": 1.20250829.0 - "@cloudflare/workerd-darwin-arm64": 1.20250829.0 - "@cloudflare/workerd-linux-64": 1.20250829.0 - "@cloudflare/workerd-linux-arm64": 1.20250829.0 - "@cloudflare/workerd-windows-64": 1.20250829.0 + '@cloudflare/workerd-darwin-64': 1.20250829.0 + '@cloudflare/workerd-darwin-arm64': 1.20250829.0 + '@cloudflare/workerd-linux-64': 1.20250829.0 + '@cloudflare/workerd-linux-arm64': 1.20250829.0 + '@cloudflare/workerd-windows-64': 1.20250829.0 wrangler@4.33.2: dependencies: - "@cloudflare/kv-asset-handler": 0.4.0 - "@cloudflare/unenv-preset": 2.7.1(unenv@2.0.0-rc.19)(workerd@1.20250829.0) + '@cloudflare/kv-asset-handler': 0.4.0 + '@cloudflare/unenv-preset': 2.7.1(unenv@2.0.0-rc.19)(workerd@1.20250829.0) blake3-wasm: 2.1.5 esbuild: 0.25.4 miniflare: 4.20250829.0 @@ -23696,6 +19283,8 @@ snapshots: yallist@3.1.1: {} + yallist@4.0.0: {} + yallist@5.0.0: {} yaml@1.10.2: {} @@ -23731,14 +19320,14 @@ snapshots: youch-core@0.3.3: dependencies: - "@poppinss/exception": 1.2.2 + '@poppinss/exception': 1.2.2 error-stack-parser-es: 1.0.5 youch@4.1.0-beta.10: dependencies: - "@poppinss/colors": 4.1.5 - "@poppinss/dumper": 0.6.4 - "@speed-highlight/core": 1.2.7 + '@poppinss/colors': 4.1.5 + '@poppinss/dumper': 0.6.4 + '@speed-highlight/core': 1.2.7 cookie: 1.0.2 youch-core: 0.3.3 @@ -23749,3 +19338,5 @@ snapshots: zen-observable@0.8.15: {} zod@3.22.3: {} + + zod@3.25.76: {}