diff --git a/package.json b/package.json index 08aa2c98..e04d8c15 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,22 @@ "packages": [ "packages/*" ], - "nohoist": [] + "nohoist": [], + "catalog": { + "eslint": "^9.13.0", + "prettier": "^3.3.3", + "prisma": "^6.5.0", + "tailwindcss": "^3.4.14", + "typescript": "^5.6.3", + "zod": "^4.0.10", + "concurrently": "^9.1.2", + "tsx": "^4.19.2", + "ts-jest": "^29.2.6", + "ts-node": "^10.9.2", + "jest": "^29.7.0", + "vitest": "^2.1.8", + "unplugin-swc": "^1.5.5" + } }, "scripts": { "build": "pnpm lint && turbo run build", @@ -32,11 +47,18 @@ }, "devDependencies": { "@biomejs/biome": "^2.1.3", + "@elysiajs/trpc": "^1.1.0", + "elysia": "^1.4.16", "turbo": "^2.5.5", "typescript": "^5.8.3" }, "engines": { "node": ">=14.16.0" }, - "packageManager": "pnpm@9.15.2" + "packageManager": "pnpm@9.15.2", + "pnpm": { + "overrides": { + "@sinclair/typebox": "^0.34.0" + } + } } diff --git a/packages/trpc-benchmarks/README.md b/packages/trpc-benchmarks/README.md new file mode 100644 index 00000000..fabaff17 --- /dev/null +++ b/packages/trpc-benchmarks/README.md @@ -0,0 +1,245 @@ +# @goatlab/trpc-benchmarks + +Performance benchmarks for tRPC APIs comparing **Express + Node.js** vs **Hono + Bun**. + +## Prerequisites + +### Required + +- **Node.js** >= 20.0.0 +- **k6** - Load testing tool ([installation guide](https://k6.io/docs/getting-started/installation/)) + +```bash +# macOS +brew install k6 + +# Ubuntu/Debian +sudo gpg -k +sudo gpg --no-default-keyring --keyring /usr/share/keyrings/k6-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69 +echo "deb [signed-by=/usr/share/keyrings/k6-archive-keyring.gpg] https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list +sudo apt-get update +sudo apt-get install k6 + +# Windows +choco install k6 +``` + +### Optional (for Bun benchmarks) + +- **Bun** - Fast JavaScript runtime ([installation guide](https://bun.sh/docs/installation)) + +```bash +curl -fsSL https://bun.sh/install | bash +``` + +## Installation + +```bash +cd packages/trpc-benchmarks +pnpm install +``` + +## Quick Start + +### Run All Benchmarks + +Run both Express+Node and Hono+Bun benchmarks sequentially: + +```bash +pnpm bench:all +``` + +With custom options: + +```bash +# More virtual users and longer duration +npx tsx src/runners/run-all-benchmarks.ts --vus 50 --duration 60s + +# Quick mode (simplified scenarios) +npx tsx src/runners/run-all-benchmarks.ts --quick +``` + +### Run Individual Benchmarks + +```bash +# Express + Node.js only +pnpm bench:k6:express + +# Hono + Bun only +pnpm bench:k6:hono +``` + +### Compare Results + +After running benchmarks, compare saved results: + +```bash +pnpm bench:compare +``` + +## Manual Testing + +### Start Servers Independently + +```bash +# Express + Node.js (port 3001) +pnpm dev:express + +# Hono + Bun (port 3002) - requires Bun +pnpm dev:hono +``` + +### Run k6 Directly + +```bash +# Against Express server +k6 run --vus 10 --duration 30s --env BASE_URL=http://localhost:3001 src/k6/benchmark.js + +# Against Hono server +k6 run --vus 10 --duration 30s --env BASE_URL=http://localhost:3002 src/k6/benchmark.js + +# Quick benchmark (simpler scenarios) +k6 run --vus 10 --duration 30s --env BASE_URL=http://localhost:3001 src/k6/quick-benchmark.js +``` + +## Benchmark Scenarios + +### Full Benchmark (`benchmark.js`) + +Three test scenarios run sequentially: + +1. **Smoke Test** (10s) - Basic functionality validation + - Health check, ping, server info + +2. **Load Test** (90s) - Sustained normal load + - Ramps from 0 → 10 → 20 VUs + - Mix of queries and mutations + - User CRUD operations + - Paginated list queries + - Light computation + +3. **Stress Test** (70s) - Find breaking points + - Ramps up to 100 VUs + - Rapid-fire requests + - Batch operations + - Large data transfers + - CPU-intensive computation + +### Quick Benchmark (`quick-benchmark.js`) + +Single scenario for rapid comparison: +- Ping endpoint (minimal overhead) +- User queries with input validation +- Mutations (create operations) +- Paginated list queries + +## API Endpoints + +The shared tRPC router includes these endpoints: + +| Endpoint | Type | Description | +|----------|------|-------------| +| `ping` | Query | Simple "pong" response | +| `health` | Query | Health check with timestamp | +| `info` | Query | Runtime info (node/bun version) | +| `user.get` | Query | Get user by ID | +| `user.create` | Mutation | Create new user | +| `user.list` | Query | List all users | +| `user.batch` | Query | Batch get users | +| `items.list` | Query | Paginated items with filtering | +| `items.all` | Query | All items (large response) | +| `items.count` | Query | Item count | +| `compute.fibonacci` | Query | CPU-bound calculation | +| `compute.isPrime` | Query | Prime number check | +| `compute.hash` | Query | Simulated work | +| `compute.sort` | Query | Array sorting benchmark | +| `echo` | Mutation | Echo payload back | + +## Metrics + +k6 collects the following custom metrics: + +- `trpc_ping_latency` - Ping endpoint latency +- `trpc_health_latency` - Health check latency +- `trpc_user_get_latency` - User query latency +- `trpc_user_create_latency` - User mutation latency +- `trpc_items_list_latency` - List query latency +- `trpc_compute_latency` - Computation latency +- `trpc_error_rate` - Error rate percentage +- `trpc_requests` - Total request count + +### Thresholds + +Default pass/fail thresholds: +- 95th percentile < 500ms +- 99th percentile < 1000ms +- Ping P95 < 50ms +- Error rate < 1% + +## Output + +Results are saved to `results/` directory: + +- `benchmark-{timestamp}.txt` - Human-readable summary +- `benchmark-{timestamp}.json` - Machine-readable data + +## CLI Options + +### `run-all-benchmarks.ts` + +| Option | Default | Description | +|--------|---------|-------------| +| `--vus` | 10 | Number of virtual users | +| `--duration` | 30s | Test duration | +| `--quick` | false | Use simplified quick benchmark | +| `--output` | results | Output directory | + +### `run-express-benchmark.ts` / `run-hono-benchmark.ts` + +| Option | Default | Description | +|--------|---------|-------------| +| `--vus` | 10 | Number of virtual users | +| `--duration` | 30s | Test duration | +| `--quick` | false | Use simplified quick benchmark | + +### `compare-results.ts` + +| Option | Default | Description | +|--------|---------|-------------| +| `--dir` | results | Results directory to read from | + +## Example Output + +``` +================================================================================ +tRPC API Benchmark Results +================================================================================ + +Timestamp: 2024-01-15T10:30:00.000Z + +-------------------------------------------------------------------------------- +Summary Comparison +-------------------------------------------------------------------------------- + +Server Avg (ms) P95 (ms) P99 (ms) Requests Req/s +------------------------------------------------------------------------------------- +Express + Node.js 2.45 5.12 8.34 15234 507 +Hono + Bun 1.23 2.56 4.12 28456 948 + +-------------------------------------------------------------------------------- +Performance Comparison +-------------------------------------------------------------------------------- + +Hono + Bun is 49.8% faster (avg latency) +Hono + Bun has 50.0% better P95 latency +Hono + Bun handled 86.8% more requests + +================================================================================ +``` + +## Notes + +- Benchmarks should be run on a quiet system for accurate results +- Results may vary based on hardware, OS, and system load +- The Hono+Bun benchmark requires Bun to be installed for accurate comparison +- If Bun is not available, Hono will run on Node.js (not representative of Bun performance) diff --git a/packages/trpc-benchmarks/package.json b/packages/trpc-benchmarks/package.json new file mode 100644 index 00000000..220adc3d --- /dev/null +++ b/packages/trpc-benchmarks/package.json @@ -0,0 +1,54 @@ +{ + "name": "@goatlab/trpc-benchmarks", + "version": "0.1.0", + "private": true, + "description": "Performance benchmarks for tRPC APIs: Express+Node vs Hono+Bun vs Elysia+Bun", + "type": "module", + "scripts": { + "build": "tsc", + "db:generate": "prisma generate", + "db:push": "prisma db push", + "db:seed": "tsx src/db/seed.ts", + "db:reset": "rm -f prisma/benchmark.db && prisma db push && tsx src/db/seed.ts", + "dev:express": "tsx src/servers/express-server.ts", + "dev:hono": "bun run src/servers/hono-server.ts", + "dev:elysia": "bun run src/servers/elysia-server.ts", + "bench:k6": "k6 run src/k6/benchmark.js", + "bench:k6:express": "tsx src/runners/run-express-benchmark.ts", + "bench:k6:hono": "tsx src/runners/run-hono-benchmark.ts", + "bench:k6:elysia": "tsx src/runners/run-elysia-benchmark.ts", + "bench:all": "tsx src/runners/run-all-benchmarks.ts", + "bench:compare": "tsx src/runners/compare-results.ts", + "bench:realistic": "tsx src/runners/run-realistic-benchmark.ts", + "lint": "biome check --write .", + "format": "biome format --write ." + }, + "dependencies": { + "@prisma/client": "^5.22.0", + "@trpc/client": "^11.4.3", + "@trpc/server": "^11.4.3", + "chalk": "^4.1.2", + "commander": "^12.0.0", + "express": "^5.1.0", + "superjson": "^2.2.2", + "zod": "^3.24.4" + }, + "devDependencies": { + "@biomejs/biome": "^2.1.3", + "@goatlab/biome": "workspace:*", + "@hono/node-server": "^1.14.0", + "@hono/trpc-server": "^0.3.4", + "@types/express": "^5.0.0", + "@types/node": "^22.15.21", + "@sinclair/typebox": "^0.34.0", + "bun-types": "^1.2.0", + "elysia": "^1.2.0", + "hono": "^4.7.9", + "prisma": "^5.22.0", + "tsx": "^4.7.1", + "typescript": "^5.6.3" + }, + "engines": { + "node": ">=20.0.0" + } +} diff --git a/packages/trpc-benchmarks/prisma/benchmark.db b/packages/trpc-benchmarks/prisma/benchmark.db new file mode 100644 index 00000000..08bf401c Binary files /dev/null and b/packages/trpc-benchmarks/prisma/benchmark.db differ diff --git a/packages/trpc-benchmarks/prisma/schema.prisma b/packages/trpc-benchmarks/prisma/schema.prisma new file mode 100644 index 00000000..974260c5 --- /dev/null +++ b/packages/trpc-benchmarks/prisma/schema.prisma @@ -0,0 +1,87 @@ +// Prisma schema for realistic tRPC benchmark +// This simulates an e-commerce API with users, products, orders + +generator client { + provider = "prisma-client-js" +} + +datasource db { + provider = "sqlite" + url = "file:./benchmark.db" +} + +model User { + id String @id @default(cuid()) + email String @unique + name String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + orders Order[] + reviews Review[] +} + +model Category { + id String @id @default(cuid()) + name String @unique + products Product[] +} + +model Product { + id String @id @default(cuid()) + name String + description String + price Float + stock Int @default(0) + categoryId String + category Category @relation(fields: [categoryId], references: [id]) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + orderItems OrderItem[] + reviews Review[] + + @@index([categoryId]) + @@index([price]) +} + +model Order { + id String @id @default(cuid()) + userId String + user User @relation(fields: [userId], references: [id]) + status String @default("pending") // pending, confirmed, shipped, delivered, cancelled + total Float + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + items OrderItem[] + + @@index([userId]) + @@index([status]) + @@index([createdAt]) +} + +model OrderItem { + id String @id @default(cuid()) + orderId String + order Order @relation(fields: [orderId], references: [id], onDelete: Cascade) + productId String + product Product @relation(fields: [productId], references: [id]) + quantity Int + price Float + + @@index([orderId]) + @@index([productId]) +} + +model Review { + id String @id @default(cuid()) + userId String + user User @relation(fields: [userId], references: [id]) + productId String + product Product @relation(fields: [productId], references: [id]) + rating Int // 1-5 + comment String + createdAt DateTime @default(now()) + + @@unique([userId, productId]) + @@index([productId]) + @@index([rating]) +} diff --git a/packages/trpc-benchmarks/results/native-benchmark-2025-11-30T18-08-41-097Z.json b/packages/trpc-benchmarks/results/native-benchmark-2025-11-30T18-08-41-097Z.json new file mode 100644 index 00000000..0637a088 --- /dev/null +++ b/packages/trpc-benchmarks/results/native-benchmark-2025-11-30T18-08-41-097Z.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/packages/trpc-benchmarks/results/native-benchmark-2025-11-30T18-11-40-697Z.json b/packages/trpc-benchmarks/results/native-benchmark-2025-11-30T18-11-40-697Z.json new file mode 100644 index 00000000..5a734887 --- /dev/null +++ b/packages/trpc-benchmarks/results/native-benchmark-2025-11-30T18-11-40-697Z.json @@ -0,0 +1,38 @@ +[ + { + "config": { + "name": "Hono Native + Bun", + "runtime": "bun", + "framework": "hono-native", + "port": 3005, + "command": [ + "bun", + "run", + "src/servers/hono-native-server.ts" + ] + }, + "metrics": { + "totalRequests": 5729, + "requestsPerSecond": 81.441184, + "errorRate": 5 + } + }, + { + "config": { + "name": "Elysia Native + Bun", + "runtime": "bun", + "framework": "elysia-native", + "port": 3004, + "command": [ + "bun", + "run", + "src/servers/elysia-native-server.ts" + ] + }, + "metrics": { + "totalRequests": 5743, + "requestsPerSecond": 81.972561, + "errorRate": 6 + } + } +] \ No newline at end of file diff --git a/packages/trpc-benchmarks/results/native-benchmark-2025-11-30T18-15-43-440Z.json b/packages/trpc-benchmarks/results/native-benchmark-2025-11-30T18-15-43-440Z.json new file mode 100644 index 00000000..7bb7baf9 --- /dev/null +++ b/packages/trpc-benchmarks/results/native-benchmark-2025-11-30T18-15-43-440Z.json @@ -0,0 +1,38 @@ +[ + { + "config": { + "name": "Hono Native + Bun", + "runtime": "bun", + "framework": "hono-native", + "port": 3005, + "command": [ + "bun", + "run", + "src/servers/hono-native-server.ts" + ] + }, + "metrics": { + "totalRequests": 5687, + "requestsPerSecond": 80.973829, + "errorRate": 6 + } + }, + { + "config": { + "name": "Elysia Native + Bun", + "runtime": "bun", + "framework": "elysia-native", + "port": 3004, + "command": [ + "bun", + "run", + "src/servers/elysia-native-server.ts" + ] + }, + "metrics": { + "totalRequests": 5738, + "requestsPerSecond": 81.766303, + "errorRate": 6 + } + } +] \ No newline at end of file diff --git a/packages/trpc-benchmarks/results/native-benchmark-2025-11-30T18-19-10-281Z.json b/packages/trpc-benchmarks/results/native-benchmark-2025-11-30T18-19-10-281Z.json new file mode 100644 index 00000000..c88ffbd2 --- /dev/null +++ b/packages/trpc-benchmarks/results/native-benchmark-2025-11-30T18-19-10-281Z.json @@ -0,0 +1,44 @@ +[ + { + "config": { + "name": "Hono Native + Bun", + "runtime": "bun", + "framework": "hono-native", + "port": 3005, + "command": [ + "bun", + "run", + "src/servers/hono-native-server.ts" + ] + }, + "metrics": { + "avgLatency": 8.22, + "p95Latency": 70.61, + "p99Latency": 7.13, + "totalRequests": 5764, + "requestsPerSecond": 82.097611, + "errorRate": 5 + } + }, + { + "config": { + "name": "Elysia Native + Bun", + "runtime": "bun", + "framework": "elysia-native", + "port": 3004, + "command": [ + "bun", + "run", + "src/servers/elysia-native-server.ts" + ] + }, + "metrics": { + "avgLatency": 9, + "p95Latency": 80.55, + "p99Latency": 7.53, + "totalRequests": 5710, + "requestsPerSecond": 81.311108, + "errorRate": 6 + } + } +] \ No newline at end of file diff --git a/packages/trpc-benchmarks/results/native-benchmark-2025-11-30T20-55-25-153Z.json b/packages/trpc-benchmarks/results/native-benchmark-2025-11-30T20-55-25-153Z.json new file mode 100644 index 00000000..4caf9762 --- /dev/null +++ b/packages/trpc-benchmarks/results/native-benchmark-2025-11-30T20-55-25-153Z.json @@ -0,0 +1,44 @@ +[ + { + "config": { + "name": "Hono Native + Bun", + "runtime": "bun", + "framework": "hono-native", + "port": 3005, + "command": [ + "bun", + "run", + "src/servers/hono-native-server.ts" + ] + }, + "metrics": { + "avgLatency": 7.71, + "p95Latency": 18.18, + "p99Latency": 6.37, + "totalRequests": 5778, + "requestsPerSecond": 82.317084, + "errorRate": 5 + } + }, + { + "config": { + "name": "Elysia Native + Bun", + "runtime": "bun", + "framework": "elysia-native", + "port": 3004, + "command": [ + "bun", + "run", + "src/servers/elysia-native-server.ts" + ] + }, + "metrics": { + "avgLatency": 8.12, + "p95Latency": 78.16, + "p99Latency": 6.72, + "totalRequests": 5746, + "requestsPerSecond": 81.970892, + "errorRate": 6 + } + } +] \ No newline at end of file diff --git a/packages/trpc-benchmarks/results/native-benchmark-2025-11-30T20-59-25-254Z.json b/packages/trpc-benchmarks/results/native-benchmark-2025-11-30T20-59-25-254Z.json new file mode 100644 index 00000000..a1e42991 --- /dev/null +++ b/packages/trpc-benchmarks/results/native-benchmark-2025-11-30T20-59-25-254Z.json @@ -0,0 +1,44 @@ +[ + { + "config": { + "name": "Hono Native + Bun", + "runtime": "bun", + "framework": "hono-native", + "port": 3005, + "command": [ + "bun", + "run", + "src/servers/hono-native-server.ts" + ] + }, + "metrics": { + "avgLatency": 7.88, + "p95Latency": 73.59, + "p99Latency": 6.7, + "totalRequests": 5782, + "requestsPerSecond": 82.435474, + "errorRate": 6 + } + }, + { + "config": { + "name": "Elysia Native + Bun", + "runtime": "bun", + "framework": "elysia-native", + "port": 3004, + "command": [ + "bun", + "run", + "src/servers/elysia-native-server.ts" + ] + }, + "metrics": { + "avgLatency": 7.58, + "p95Latency": 12.97, + "p99Latency": 6.65, + "totalRequests": 5742, + "requestsPerSecond": 81.919787, + "errorRate": 6 + } + } +] \ No newline at end of file diff --git a/packages/trpc-benchmarks/results/native-benchmark-2025-11-30T21-05-15-149Z.json b/packages/trpc-benchmarks/results/native-benchmark-2025-11-30T21-05-15-149Z.json new file mode 100644 index 00000000..4c6ffa55 --- /dev/null +++ b/packages/trpc-benchmarks/results/native-benchmark-2025-11-30T21-05-15-149Z.json @@ -0,0 +1,44 @@ +[ + { + "config": { + "name": "Hono Native + Bun", + "runtime": "bun", + "framework": "hono-native", + "port": 3005, + "command": [ + "bun", + "run", + "src/servers/hono-native-server.ts" + ] + }, + "metrics": { + "avgLatency": 8.03, + "p95Latency": 76.8, + "p99Latency": 6.82, + "totalRequests": 5739, + "requestsPerSecond": 81.733911, + "errorRate": 5 + } + }, + { + "config": { + "name": "Elysia Native + Bun", + "runtime": "bun", + "framework": "elysia-native", + "port": 3004, + "command": [ + "bun", + "run", + "src/servers/elysia-native-server.ts" + ] + }, + "metrics": { + "avgLatency": 8.15, + "p95Latency": 78.16, + "p99Latency": 6.91, + "totalRequests": 5758, + "requestsPerSecond": 82.037507, + "errorRate": 6 + } + } +] \ No newline at end of file diff --git a/packages/trpc-benchmarks/results/realistic-benchmark-2025-11-29T22-37-16-123Z.json b/packages/trpc-benchmarks/results/realistic-benchmark-2025-11-29T22-37-16-123Z.json new file mode 100644 index 00000000..f96703f4 --- /dev/null +++ b/packages/trpc-benchmarks/results/realistic-benchmark-2025-11-29T22-37-16-123Z.json @@ -0,0 +1,56 @@ +[ + { + "config": { + "name": "Express + Node + SQLite", + "runtime": "node", + "framework": "express", + "serverScript": "src/servers/express-db-server.ts", + "port": 3001, + "command": [ + "npx", + "tsx", + "src/servers/express-db-server.ts" + ] + }, + "metrics": { + "totalRequests": 4656, + "errorRate": 0 + } + }, + { + "config": { + "name": "Hono + Bun + SQLite", + "runtime": "bun", + "framework": "hono", + "serverScript": "src/servers/hono-db-server.ts", + "port": 3002, + "command": [ + "bun", + "run", + "src/servers/hono-db-server.ts" + ] + }, + "metrics": { + "totalRequests": 4684, + "errorRate": 0 + } + }, + { + "config": { + "name": "Elysia + Bun + SQLite", + "runtime": "bun", + "framework": "elysia", + "serverScript": "src/servers/elysia-db-server.ts", + "port": 3003, + "command": [ + "bun", + "run", + "src/servers/elysia-db-server.ts" + ] + }, + "metrics": { + "totalRequests": 4647, + "errorRate": 0 + } + } +] \ No newline at end of file diff --git a/packages/trpc-benchmarks/results/realistic-benchmark-2025-11-30T17-22-48-477Z.json b/packages/trpc-benchmarks/results/realistic-benchmark-2025-11-30T17-22-48-477Z.json new file mode 100644 index 00000000..867ef187 --- /dev/null +++ b/packages/trpc-benchmarks/results/realistic-benchmark-2025-11-30T17-22-48-477Z.json @@ -0,0 +1,56 @@ +[ + { + "config": { + "name": "Express + Node + SQLite", + "runtime": "node", + "framework": "express", + "serverScript": "src/servers/express-db-server.ts", + "port": 3001, + "command": [ + "npx", + "tsx", + "src/servers/express-db-server.ts" + ] + }, + "metrics": { + "totalRequests": 4658, + "errorRate": 0 + } + }, + { + "config": { + "name": "Hono + Bun + SQLite", + "runtime": "bun", + "framework": "hono", + "serverScript": "src/servers/hono-db-server.ts", + "port": 3002, + "command": [ + "bun", + "run", + "src/servers/hono-db-server.ts" + ] + }, + "metrics": { + "totalRequests": 4662, + "errorRate": 0 + } + }, + { + "config": { + "name": "Elysia + Bun + SQLite", + "runtime": "bun", + "framework": "elysia", + "serverScript": "src/servers/elysia-db-server.ts", + "port": 3003, + "command": [ + "bun", + "run", + "src/servers/elysia-db-server.ts" + ] + }, + "metrics": { + "totalRequests": 4665, + "errorRate": 0 + } + } +] \ No newline at end of file diff --git a/packages/trpc-benchmarks/results/stress-test-2025-12-04T18-02-20-896Z.json b/packages/trpc-benchmarks/results/stress-test-2025-12-04T18-02-20-896Z.json new file mode 100644 index 00000000..54c2d994 --- /dev/null +++ b/packages/trpc-benchmarks/results/stress-test-2025-12-04T18-02-20-896Z.json @@ -0,0 +1,56 @@ +[ + { + "config": { + "name": "Hono Native + Bun", + "runtime": "bun", + "framework": "hono-native", + "port": 3005, + "command": [ + "bun", + "run", + "src/servers/hono-native-server.ts" + ] + }, + "metrics": { + "avgLatency": 560.41, + "p95Latency": 4.72, + "p99Latency": 866.72, + "totalRequests": 27254, + "requestsPerSecond": 181.541404, + "peakRPS": 181.541404, + "errorRate": 2061, + "peakMemoryMB": 0, + "avgMemoryMB": 0, + "peakCpuPercent": 0, + "avgCpuPercent": 0 + }, + "resourceSamples": [] + }, + { + "config": { + "name": "Elysia Native + Bun", + "runtime": "bun", + "framework": "elysia-native", + "port": 3004, + "command": [ + "bun", + "run", + "src/servers/elysia-native-server.ts" + ] + }, + "metrics": { + "avgLatency": 618.88, + "p95Latency": 4.88, + "p99Latency": 4.11, + "totalRequests": 25038, + "requestsPerSecond": 164.769826, + "peakRPS": 164.769826, + "errorRate": 1928, + "peakMemoryMB": 0, + "avgMemoryMB": 0, + "peakCpuPercent": 0, + "avgCpuPercent": 0 + }, + "resourceSamples": [] + } +] \ No newline at end of file diff --git a/packages/trpc-benchmarks/results/stress-test-autocannon-2025-12-04T18-54-42-380Z.json b/packages/trpc-benchmarks/results/stress-test-autocannon-2025-12-04T18-54-42-380Z.json new file mode 100644 index 00000000..c8e968ab --- /dev/null +++ b/packages/trpc-benchmarks/results/stress-test-autocannon-2025-12-04T18-54-42-380Z.json @@ -0,0 +1,66 @@ +[ + { + "config": { + "name": "Express Native + Node", + "runtime": "node", + "framework": "express-native", + "port": 3007, + "command": [ + "npx", + "tsx", + "src/servers/express-native-server.ts" + ] + }, + "metrics": { + "requestsPerSecond": 1362.84, + "avgLatencyMs": 145.97, + "p99LatencyMs": 159, + "totalRequests": 40885, + "errors": 0, + "duration": 30.06 + } + }, + { + "config": { + "name": "Express + tRPC + Bun", + "runtime": "bun", + "framework": "express-trpc", + "port": 3008, + "command": [ + "bun", + "run", + "src/servers/express-trpc-bun-server.ts" + ], + "isTrpc": true + }, + "metrics": { + "requestsPerSecond": 708.54, + "avgLatencyMs": 280.41, + "p99LatencyMs": 416, + "totalRequests": 21256, + "errors": 0, + "duration": 30.06 + } + }, + { + "config": { + "name": "Hono Native + Bun", + "runtime": "bun", + "framework": "hono-native", + "port": 3005, + "command": [ + "bun", + "run", + "src/servers/hono-native-server.ts" + ] + }, + "metrics": { + "requestsPerSecond": 2208.54, + "avgLatencyMs": 89.94, + "p99LatencyMs": 109, + "totalRequests": 66250, + "errors": 0, + "duration": 30.06 + } + } +] \ No newline at end of file diff --git a/packages/trpc-benchmarks/src/db/client.ts b/packages/trpc-benchmarks/src/db/client.ts new file mode 100644 index 00000000..3923b9db --- /dev/null +++ b/packages/trpc-benchmarks/src/db/client.ts @@ -0,0 +1,19 @@ +// Database client singleton for benchmarks +import { PrismaClient } from '@prisma/client' + +// Use a singleton to avoid multiple connections +const globalForPrisma = globalThis as unknown as { + prisma: PrismaClient | undefined +} + +export const prisma = + globalForPrisma.prisma ?? + new PrismaClient({ + log: process.env.DEBUG_DB ? ['query', 'info', 'warn', 'error'] : ['error'] + }) + +if (process.env.NODE_ENV !== 'production') { + globalForPrisma.prisma = prisma +} + +export type { PrismaClient } diff --git a/packages/trpc-benchmarks/src/db/seed.ts b/packages/trpc-benchmarks/src/db/seed.ts new file mode 100644 index 00000000..04ca335a --- /dev/null +++ b/packages/trpc-benchmarks/src/db/seed.ts @@ -0,0 +1,186 @@ +// npx tsx src/db/seed.ts +// Seeds the database with realistic e-commerce data for benchmarking + +import { PrismaClient } from '@prisma/client' + +const prisma = new PrismaClient() + +// Configuration +const NUM_USERS = 1000 +const NUM_CATEGORIES = 10 +const NUM_PRODUCTS = 500 +const NUM_ORDERS = 2000 +const MAX_ITEMS_PER_ORDER = 5 +const NUM_REVIEWS = 3000 + +// Helper functions +function randomElement(arr: T[]): T { + return arr[Math.floor(Math.random() * arr.length)] +} + +function randomInt(min: number, max: number): number { + return Math.floor(Math.random() * (max - min + 1)) + min +} + +function randomFloat(min: number, max: number): number { + return Math.random() * (max - min) + min +} + +const categoryNames = [ + 'Electronics', + 'Clothing', + 'Books', + 'Home & Garden', + 'Sports', + 'Toys', + 'Food & Beverages', + 'Health & Beauty', + 'Automotive', + 'Office Supplies' +] + +const adjectives = ['Premium', 'Professional', 'Essential', 'Classic', 'Modern', 'Ultra', 'Smart', 'Eco', 'Deluxe', 'Compact'] +const nouns = ['Widget', 'Gadget', 'Tool', 'Device', 'Kit', 'Set', 'Pack', 'Bundle', 'System', 'Solution'] + +async function seed() { + console.log('Seeding database...') + const startTime = Date.now() + + // Clear existing data + console.log('Clearing existing data...') + await prisma.review.deleteMany() + await prisma.orderItem.deleteMany() + await prisma.order.deleteMany() + await prisma.product.deleteMany() + await prisma.category.deleteMany() + await prisma.user.deleteMany() + + // Create categories + console.log(`Creating ${NUM_CATEGORIES} categories...`) + const categories = await Promise.all( + categoryNames.slice(0, NUM_CATEGORIES).map((name) => + prisma.category.create({ + data: { name } + }) + ) + ) + + // Create users + console.log(`Creating ${NUM_USERS} users...`) + const users = await prisma.user.createManyAndReturn({ + data: Array.from({ length: NUM_USERS }, (_, i) => ({ + email: `user${i + 1}@benchmark.test`, + name: `User ${i + 1}` + })) + }) + + // Create products + console.log(`Creating ${NUM_PRODUCTS} products...`) + const products = await prisma.product.createManyAndReturn({ + data: Array.from({ length: NUM_PRODUCTS }, (_, i) => ({ + name: `${randomElement(adjectives)} ${randomElement(nouns)} ${i + 1}`, + description: `This is a high-quality product designed for professional use. Product #${i + 1} in our catalog.`, + price: parseFloat(randomFloat(9.99, 999.99).toFixed(2)), + stock: randomInt(0, 1000), + categoryId: randomElement(categories).id + })) + }) + + // Create orders with items + console.log(`Creating ${NUM_ORDERS} orders with items...`) + const orderStatuses = ['pending', 'confirmed', 'shipped', 'delivered', 'cancelled'] + + for (let i = 0; i < NUM_ORDERS; i++) { + const numItems = randomInt(1, MAX_ITEMS_PER_ORDER) + const selectedProducts = new Set() + + while (selectedProducts.size < numItems) { + selectedProducts.add(randomElement(products).id) + } + + const items = Array.from(selectedProducts).map((productId) => { + const product = products.find((p) => p.id === productId)! + const quantity = randomInt(1, 5) + return { + productId, + quantity, + price: product.price + } + }) + + const total = items.reduce((sum, item) => sum + item.price * item.quantity, 0) + + await prisma.order.create({ + data: { + userId: randomElement(users).id, + status: randomElement(orderStatuses), + total: parseFloat(total.toFixed(2)), + items: { + create: items + } + } + }) + + if ((i + 1) % 500 === 0) { + console.log(` Created ${i + 1}/${NUM_ORDERS} orders`) + } + } + + // Create reviews + console.log(`Creating ${NUM_REVIEWS} reviews...`) + const reviewComments = [ + 'Great product! Exactly what I needed.', + 'Good quality for the price.', + 'Average product, nothing special.', + 'Not as described, disappointed.', + 'Excellent! Would buy again.', + 'Fast shipping, good product.', + 'Works as expected.', + 'Could be better, but okay.', + 'Perfect for my needs!', + 'Highly recommend this product.' + ] + + const existingReviews = new Set() + let reviewsCreated = 0 + + while (reviewsCreated < NUM_REVIEWS) { + const userId = randomElement(users).id + const productId = randomElement(products).id + const key = `${userId}-${productId}` + + if (!existingReviews.has(key)) { + existingReviews.add(key) + await prisma.review.create({ + data: { + userId, + productId, + rating: randomInt(1, 5), + comment: randomElement(reviewComments) + } + }) + reviewsCreated++ + + if (reviewsCreated % 1000 === 0) { + console.log(` Created ${reviewsCreated}/${NUM_REVIEWS} reviews`) + } + } + } + + const duration = ((Date.now() - startTime) / 1000).toFixed(2) + console.log(`\nSeeding completed in ${duration}s`) + console.log(` - ${NUM_USERS} users`) + console.log(` - ${NUM_CATEGORIES} categories`) + console.log(` - ${NUM_PRODUCTS} products`) + console.log(` - ${NUM_ORDERS} orders`) + console.log(` - ${NUM_REVIEWS} reviews`) +} + +seed() + .catch((e) => { + console.error('Seeding failed:', e) + process.exit(1) + }) + .finally(async () => { + await prisma.$disconnect() + }) diff --git a/packages/trpc-benchmarks/src/index.ts b/packages/trpc-benchmarks/src/index.ts new file mode 100644 index 00000000..d46acb68 --- /dev/null +++ b/packages/trpc-benchmarks/src/index.ts @@ -0,0 +1,4 @@ +// @goatlab/trpc-benchmarks +// Performance benchmarks for tRPC APIs: Express+Node vs Bun+Hono + +export { appRouter, type AppRouter } from './shared/router.js' diff --git a/packages/trpc-benchmarks/src/k6/benchmark.js b/packages/trpc-benchmarks/src/k6/benchmark.js new file mode 100644 index 00000000..1938e1e8 --- /dev/null +++ b/packages/trpc-benchmarks/src/k6/benchmark.js @@ -0,0 +1,296 @@ +// k6 benchmark script for tRPC API performance testing +// Run: k6 run src/k6/benchmark.js --env BASE_URL=http://localhost:3001 +// Or with options: k6 run --vus 10 --duration 30s src/k6/benchmark.js + +import http from 'k6/http' +import { check, group, sleep } from 'k6' +import { Counter, Rate, Trend } from 'k6/metrics' +import { randomIntBetween, randomString } from 'https://jslib.k6.io/k6-utils/1.2.0/index.js' + +// Custom metrics +const pingLatency = new Trend('trpc_ping_latency', true) +const healthLatency = new Trend('trpc_health_latency', true) +const userGetLatency = new Trend('trpc_user_get_latency', true) +const userCreateLatency = new Trend('trpc_user_create_latency', true) +const itemsListLatency = new Trend('trpc_items_list_latency', true) +const computeLatency = new Trend('trpc_compute_latency', true) +const errorRate = new Rate('trpc_error_rate') +const requestCount = new Counter('trpc_requests') + +// Configuration +const BASE_URL = __ENV.BASE_URL || 'http://localhost:3001' +const TRPC_URL = `${BASE_URL}/trpc` + +// k6 options - can be overridden via CLI +export const options = { + scenarios: { + // Smoke test - quick validation + smoke: { + executor: 'constant-vus', + vus: 1, + duration: '10s', + tags: { scenario: 'smoke' }, + exec: 'smokeTest' + }, + // Load test - sustained load + load: { + executor: 'ramping-vus', + startVUs: 0, + stages: [ + { duration: '10s', target: 10 }, // Ramp up + { duration: '30s', target: 10 }, // Stay at 10 VUs + { duration: '10s', target: 20 }, // Ramp up more + { duration: '30s', target: 20 }, // Stay at 20 VUs + { duration: '10s', target: 0 } // Ramp down + ], + tags: { scenario: 'load' }, + exec: 'loadTest', + startTime: '15s' // Start after smoke test + }, + // Stress test - find breaking point + stress: { + executor: 'ramping-vus', + startVUs: 0, + stages: [ + { duration: '10s', target: 50 }, + { duration: '20s', target: 50 }, + { duration: '10s', target: 100 }, + { duration: '20s', target: 100 }, + { duration: '10s', target: 0 } + ], + tags: { scenario: 'stress' }, + exec: 'stressTest', + startTime: '120s' // Start after load test + } + }, + thresholds: { + http_req_duration: ['p(95)<500', 'p(99)<1000'], // 95% < 500ms, 99% < 1s + trpc_ping_latency: ['p(95)<50'], // Ping should be very fast + trpc_error_rate: ['rate<0.01'], // Less than 1% errors + http_req_failed: ['rate<0.01'] + } +} + +// Wrap input in superjson format (required by tRPC with superjson transformer) +function wrapInput(input) { + return { json: input } +} + +// Helper to make tRPC query calls +function trpcQuery(procedure, input = undefined) { + const url = input + ? `${TRPC_URL}/${procedure}?input=${encodeURIComponent(JSON.stringify(wrapInput(input)))}` + : `${TRPC_URL}/${procedure}` + + return http.get(url, { + headers: { 'Content-Type': 'application/json' } + }) +} + +// Helper to make tRPC mutation calls +function trpcMutation(procedure, input) { + return http.post(`${TRPC_URL}/${procedure}`, JSON.stringify(wrapInput(input)), { + headers: { 'Content-Type': 'application/json' } + }) +} + +// Smoke test - basic functionality validation +export function smokeTest() { + group('Smoke Test', () => { + // Test ping endpoint + const pingRes = trpcQuery('ping') + requestCount.add(1) + pingLatency.add(pingRes.timings.duration) + check(pingRes, { + 'ping status is 200': (r) => r.status === 200, + 'ping returns pong': (r) => { + try { + const data = JSON.parse(r.body) + return data.result?.data === 'pong' + } catch { + return false + } + } + }) + errorRate.add(pingRes.status !== 200) + + sleep(0.1) + + // Test health endpoint + const healthRes = trpcQuery('health') + requestCount.add(1) + healthLatency.add(healthRes.timings.duration) + check(healthRes, { + 'health status is 200': (r) => r.status === 200, + 'health returns ok': (r) => { + try { + const data = JSON.parse(r.body) + return data.result?.data?.status === 'ok' + } catch { + return false + } + } + }) + errorRate.add(healthRes.status !== 200) + + sleep(0.1) + + // Test info endpoint + const infoRes = trpcQuery('info') + requestCount.add(1) + check(infoRes, { + 'info status is 200': (r) => r.status === 200, + 'info has runtime': (r) => { + try { + const data = JSON.parse(r.body) + return ['node', 'bun'].includes(data.result?.data?.runtime) + } catch { + return false + } + } + }) + errorRate.add(infoRes.status !== 200) + }) + + sleep(1) +} + +// Load test - sustained normal load +export function loadTest() { + group('Load Test', () => { + // Mix of different endpoint types + + // 1. Simple queries (high frequency) + for (let i = 0; i < 5; i++) { + const res = trpcQuery('ping') + requestCount.add(1) + pingLatency.add(res.timings.duration) + errorRate.add(res.status !== 200) + sleep(0.05) + } + + // 2. User queries + const userId = `user-${randomIntBetween(0, 99)}` + const userRes = trpcQuery('user.get', { id: userId }) + requestCount.add(1) + userGetLatency.add(userRes.timings.duration) + check(userRes, { + 'user.get status is 200': (r) => r.status === 200 + }) + errorRate.add(userRes.status !== 200) + sleep(0.1) + + // 3. Create user (mutation) + const createRes = trpcMutation('user.create', { + name: `LoadTest User ${randomString(8)}`, + email: `loadtest-${randomString(8)}@example.com` + }) + requestCount.add(1) + userCreateLatency.add(createRes.timings.duration) + check(createRes, { + 'user.create status is 200': (r) => r.status === 200 + }) + errorRate.add(createRes.status !== 200) + sleep(0.1) + + // 4. Items list with pagination + const page = randomIntBetween(1, 5) + const itemsRes = trpcQuery('items.list', { page, pageSize: 20 }) + requestCount.add(1) + itemsListLatency.add(itemsRes.timings.duration) + check(itemsRes, { + 'items.list status is 200': (r) => r.status === 200, + 'items.list has items': (r) => { + try { + const data = JSON.parse(r.body) + return Array.isArray(data.result?.data?.items) + } catch { + return false + } + } + }) + errorRate.add(itemsRes.status !== 200) + sleep(0.1) + + // 5. Light computation + const computeRes = trpcQuery('compute.hash', { iterations: 100 }) + requestCount.add(1) + computeLatency.add(computeRes.timings.duration) + check(computeRes, { + 'compute.hash status is 200': (r) => r.status === 200 + }) + errorRate.add(computeRes.status !== 200) + }) + + sleep(0.5) +} + +// Stress test - high load to find limits +export function stressTest() { + group('Stress Test', () => { + // Rapid fire pings + for (let i = 0; i < 10; i++) { + const res = trpcQuery('ping') + requestCount.add(1) + pingLatency.add(res.timings.duration) + errorRate.add(res.status !== 200) + } + + // Batch user lookups + const ids = Array.from({ length: 10 }, (_, i) => `user-${randomIntBetween(0, 99)}`) + const batchRes = trpcQuery('user.batch', { ids }) + requestCount.add(1) + check(batchRes, { + 'user.batch status is 200': (r) => r.status === 200 + }) + errorRate.add(batchRes.status !== 200) + + // Large data request + const allItemsRes = trpcQuery('items.all') + requestCount.add(1) + check(allItemsRes, { + 'items.all status is 200': (r) => r.status === 200 + }) + errorRate.add(allItemsRes.status !== 200) + + // CPU-intensive computation + const fibRes = trpcQuery('compute.fibonacci', { n: 20 }) + requestCount.add(1) + check(fibRes, { + 'compute.fibonacci status is 200': (r) => r.status === 200 + }) + errorRate.add(fibRes.status !== 200) + }) + + sleep(0.2) +} + +// Default function - runs all scenarios +export default function () { + smokeTest() + sleep(1) + loadTest() + sleep(1) + stressTest() +} + +// Setup function - runs once at the beginning +export function setup() { + console.log(`Starting benchmark against ${BASE_URL}`) + + // Verify server is running + const healthRes = http.get(`${BASE_URL}/health`) + if (healthRes.status !== 200) { + throw new Error(`Server not responding at ${BASE_URL}`) + } + + const healthData = JSON.parse(healthRes.body) + console.log(`Server info: ${JSON.stringify(healthData)}`) + + return { serverInfo: healthData } +} + +// Teardown function - runs once at the end +export function teardown(data) { + console.log(`Benchmark complete. Server was: ${JSON.stringify(data.serverInfo)}`) +} diff --git a/packages/trpc-benchmarks/src/k6/native-benchmark.js b/packages/trpc-benchmarks/src/k6/native-benchmark.js new file mode 100644 index 00000000..1777ae99 --- /dev/null +++ b/packages/trpc-benchmarks/src/k6/native-benchmark.js @@ -0,0 +1,308 @@ +// k6 benchmark for native REST API endpoints (no tRPC) +// Run: k6 run src/k6/native-benchmark.js +// Stress test: STRESS_TEST=1 k6 run src/k6/native-benchmark.js + +import http from 'k6/http' +import { check, group, sleep } from 'k6' +import { Trend, Counter, Gauge } from 'k6/metrics' + +// Custom metrics +const productListLatency = new Trend('api_product_list_latency') +const productGetLatency = new Trend('api_product_get_latency') +const productSearchLatency = new Trend('api_product_search_latency') +const categoryListLatency = new Trend('api_category_list_latency') +const userGetLatency = new Trend('api_user_get_latency') +const orderCreateLatency = new Trend('api_order_create_latency') +const orderGetLatency = new Trend('api_order_get_latency') +const dashboardLatency = new Trend('api_dashboard_latency') +const errorRate = new Counter('error_rate') +const totalRequests = new Counter('total_requests') +const successfulRequests = new Counter('successful_requests') + +// Configuration from environment +const BASE_URL = __ENV.BASE_URL || 'http://localhost:3004' +const RUNTIME = __ENV.RUNTIME || 'bun' +const FRAMEWORK = __ENV.FRAMEWORK || 'elysia-native' +const STRESS_TEST = __ENV.STRESS_TEST === '1' || __ENV.STRESS_TEST === 'true' + +// Define scenarios based on mode +const scenarios = STRESS_TEST ? { + // Stress test: ramp up aggressively to find breaking point + stress_test: { + executor: 'ramping-vus', + startVUs: 5, + stages: [ + { duration: '20s', target: 50 }, // Ramp to 50 VUs + { duration: '30s', target: 100 }, // Ramp to 100 VUs + { duration: '30s', target: 150 }, // Ramp to 150 VUs + { duration: '30s', target: 200 }, // Peak at 200 VUs + { duration: '20s', target: 200 }, // Hold at peak + { duration: '20s', target: 0 } // Ramp down + ], + gracefulRampDown: '10s' + } +} : { + // Normal load test + realistic_load: { + executor: 'ramping-vus', + startVUs: 1, + stages: [ + { duration: '15s', target: 10 }, + { duration: '30s', target: 10 }, + { duration: '15s', target: 20 }, + { duration: '10s', target: 0 } + ], + gracefulRampDown: '5s' + } +} + +export const options = { + scenarios: scenarios, + thresholds: STRESS_TEST ? { + // Relaxed thresholds for stress test + http_req_duration: ['p(95)<2000'], + error_rate: ['rate<0.5'] + } : { + http_req_duration: ['p(95)<500'], + error_rate: ['count<100'], + api_product_list_latency: ['p(95)<200'], + api_dashboard_latency: ['p(95)<300'], + api_order_create_latency: ['p(95)<500'] + } +} + +// Test data +let testProducts = [] +let testUsers = [] +let testCategories = [] +let createdOrders = [] + +export function setup() { + console.log('Starting native API benchmark against ' + BASE_URL) + console.log('Server: ' + RUNTIME + ' + ' + FRAMEWORK + ' + sqlite') + console.log('Mode: ' + (STRESS_TEST ? 'STRESS TEST (up to 200 VUs)' : 'Normal load test')) + + // Get products + var productsRes = http.get(BASE_URL + '/api/products?limit=50') + if (productsRes.status === 200) { + var data = JSON.parse(productsRes.body) + if (data && data.products) { + testProducts = data.products + } + } + + // Get categories + var categoriesRes = http.get(BASE_URL + '/api/categories') + if (categoriesRes.status === 200) { + var cats = JSON.parse(categoriesRes.body) + if (cats && Array.isArray(cats)) { + testCategories = cats + } + } + + // Get a user + var dashRes = http.get(BASE_URL + '/api/analytics/dashboard') + if (dashRes.status === 200) { + // Create a test user ID based on existing data + testUsers = [{ id: 'user-1' }, { id: 'user-2' }, { id: 'user-3' }] + } + + console.log('Database has ' + testProducts.length + ' products') + + return { + products: testProducts, + users: testUsers, + categories: testCategories + } +} + +function getRandomItem(arr) { + if (!arr || arr.length === 0) return null + return arr[Math.floor(Math.random() * arr.length)] +} + +export default function(data) { + var products = data.products || [] + var users = data.users || [] + var categories = data.categories || [] + + // Scenario weights (probability of each action) + var rand = Math.random() + + if (rand < 0.35) { + // 35% - Browse products + group('Browse Products', function() { + // List products + var start = Date.now() + var limit = Math.floor(Math.random() * 20) + 10 + var offset = Math.floor(Math.random() * 100) + var res = http.get(BASE_URL + '/api/products?limit=' + limit + '&offset=' + offset) + productListLatency.add(Date.now() - start) + totalRequests.add(1) + + var listOk = check(res, { + 'product.list ok': function(r) { return r.status === 200 } + }) + if (!listOk) errorRate.add(1) + + sleep(0.1) + + // Get single product + var product = getRandomItem(products) + if (product && product.id) { + start = Date.now() + res = http.get(BASE_URL + '/api/products/' + product.id) + productGetLatency.add(Date.now() - start) + totalRequests.add(1) + + var getOk = check(res, { + 'product.get ok': function(r) { return r.status === 200 } + }) + if (!getOk) errorRate.add(1) + } + + sleep(0.1) + + // Get categories + start = Date.now() + res = http.get(BASE_URL + '/api/categories') + categoryListLatency.add(Date.now() - start) + totalRequests.add(1) + + var catOk = check(res, { + 'category.list ok': function(r) { return r.status === 200 } + }) + if (!catOk) errorRate.add(1) + }) + } else if (rand < 0.55) { + // 20% - Search products + group('Search Products', function() { + var searchTerms = ['pro', 'widget', 'gadget', 'device', 'tool', 'premium', 'basic'] + var term = searchTerms[Math.floor(Math.random() * searchTerms.length)] + + var start = Date.now() + var res = http.get(BASE_URL + '/api/products/search?q=' + term + '&limit=20') + productSearchLatency.add(Date.now() - start) + totalRequests.add(1) + + var searchOk = check(res, { + 'product.search ok': function(r) { return r.status === 200 } + }) + if (!searchOk) errorRate.add(1) + }) + } else if (rand < 0.70) { + // 15% - Place order + group('Place Order', function() { + if (products.length < 2) return + + var product1 = getRandomItem(products) + var product2 = getRandomItem(products) + if (!product1 || !product2) return + + var orderData = { + userId: 'user-' + (Math.floor(Math.random() * 100) + 1), + items: [ + { productId: product1.id, quantity: Math.floor(Math.random() * 2) + 1 }, + { productId: product2.id, quantity: Math.floor(Math.random() * 2) + 1 } + ] + } + + var start = Date.now() + var res = http.post( + BASE_URL + '/api/orders', + JSON.stringify(orderData), + { headers: { 'Content-Type': 'application/json' } } + ) + orderCreateLatency.add(Date.now() - start) + totalRequests.add(1) + + var orderOk = check(res, { + 'order.create ok or stock issue': function(r) { + return r.status === 200 || r.status === 201 || r.status === 400 + } + }) + if (!orderOk) errorRate.add(1) + + if (res.status === 200 || res.status === 201) { + try { + var order = JSON.parse(res.body) + if (order && order.id) { + createdOrders.push(order.id) + } + } catch (e) {} + } + }) + } else if (rand < 0.80) { + // 10% - View order + group('View Order', function() { + var orderId = getRandomItem(createdOrders) || 'order-1' + + var start = Date.now() + var res = http.get(BASE_URL + '/api/orders/' + orderId) + orderGetLatency.add(Date.now() - start) + totalRequests.add(1) + + var orderOk = check(res, { + 'order.get ok': function(r) { return r.status === 200 || r.status === 404 } + }) + if (!orderOk) errorRate.add(1) + }) + } else if (rand < 0.90) { + // 10% - User account + group('User Account', function() { + var userId = 'user-' + (Math.floor(Math.random() * 100) + 1) + + var start = Date.now() + var res = http.get(BASE_URL + '/api/users/' + userId) + userGetLatency.add(Date.now() - start) + totalRequests.add(1) + + var userOk = check(res, { + 'user.get ok': function(r) { return r.status === 200 || r.status === 404 } + }) + if (!userOk) errorRate.add(1) + + sleep(0.1) + + // Get user orders + res = http.get(BASE_URL + '/api/users/' + userId + '/orders?limit=5') + totalRequests.add(1) + + var ordersOk = check(res, { + 'user.orders ok': function(r) { return r.status === 200 } + }) + if (!ordersOk) errorRate.add(1) + }) + } else { + // 10% - Dashboard analytics + group('Dashboard Analytics', function() { + var start = Date.now() + var res = http.get(BASE_URL + '/api/analytics/dashboard') + dashboardLatency.add(Date.now() - start) + totalRequests.add(1) + + var dashOk = check(res, { + 'analytics.dashboard ok': function(r) { return r.status === 200 } + }) + if (!dashOk) errorRate.add(1) + + sleep(0.1) + + // Revenue by category + res = http.get(BASE_URL + '/api/analytics/revenue-by-category') + totalRequests.add(1) + + var revOk = check(res, { + 'analytics.revenueByCategory ok': function(r) { return r.status === 200 } + }) + if (!revOk) errorRate.add(1) + }) + } + + sleep(0.05 + Math.random() * 0.15) +} + +export function teardown(data) { + console.log('\nBenchmark complete for: ' + RUNTIME + ' + ' + FRAMEWORK) + console.log('Created ' + createdOrders.length + ' orders during test') +} diff --git a/packages/trpc-benchmarks/src/k6/quick-benchmark.js b/packages/trpc-benchmarks/src/k6/quick-benchmark.js new file mode 100644 index 00000000..02190079 --- /dev/null +++ b/packages/trpc-benchmarks/src/k6/quick-benchmark.js @@ -0,0 +1,94 @@ +// Quick k6 benchmark for rapid comparison testing +// Run: k6 run src/k6/quick-benchmark.js --env BASE_URL=http://localhost:3001 +// Quick run: k6 run --vus 10 --duration 10s src/k6/quick-benchmark.js + +import http from 'k6/http' +import { check, sleep } from 'k6' +import { Trend, Rate, Counter } from 'k6/metrics' + +// Custom metrics +const pingLatency = new Trend('ping_latency', true) +const queryLatency = new Trend('query_latency', true) +const mutationLatency = new Trend('mutation_latency', true) +const errorRate = new Rate('error_rate') +const throughput = new Counter('total_requests') + +// Configuration +const BASE_URL = __ENV.BASE_URL || 'http://localhost:3001' +const TRPC_URL = `${BASE_URL}/trpc` + +export const options = { + vus: __ENV.VUS ? parseInt(__ENV.VUS) : 10, + duration: __ENV.DURATION || '30s', + thresholds: { + http_req_duration: ['p(95)<200'], + error_rate: ['rate<0.01'] + } +} + +// Wrap input in superjson format +function wrapInput(input) { + return { json: input } +} + +function trpcQuery(procedure, input = undefined) { + const url = input + ? `${TRPC_URL}/${procedure}?input=${encodeURIComponent(JSON.stringify(wrapInput(input)))}` + : `${TRPC_URL}/${procedure}` + return http.get(url, { headers: { 'Content-Type': 'application/json' } }) +} + +function trpcMutation(procedure, input) { + return http.post(`${TRPC_URL}/${procedure}`, JSON.stringify(wrapInput(input)), { + headers: { 'Content-Type': 'application/json' } + }) +} + +export default function () { + // Ping (minimal overhead) + const pingRes = trpcQuery('ping') + throughput.add(1) + pingLatency.add(pingRes.timings.duration) + check(pingRes, { 'ping ok': (r) => r.status === 200 }) + errorRate.add(pingRes.status !== 200) + + // Query with input + const userRes = trpcQuery('user.get', { id: 'user-1' }) + throughput.add(1) + queryLatency.add(userRes.timings.duration) + check(userRes, { 'user.get ok': (r) => r.status === 200 }) + errorRate.add(userRes.status !== 200) + + // Mutation + const createRes = trpcMutation('user.create', { + name: `Test ${Date.now()}`, + email: `test-${Date.now()}@example.com` + }) + throughput.add(1) + mutationLatency.add(createRes.timings.duration) + check(createRes, { 'user.create ok': (r) => r.status === 200 }) + errorRate.add(createRes.status !== 200) + + // List query + const listRes = trpcQuery('items.list', { page: 1, pageSize: 20 }) + throughput.add(1) + queryLatency.add(listRes.timings.duration) + check(listRes, { 'items.list ok': (r) => r.status === 200 }) + errorRate.add(listRes.status !== 200) + + sleep(0.1) +} + +export function setup() { + const res = http.get(`${BASE_URL}/health`) + if (res.status !== 200) { + throw new Error(`Server not available at ${BASE_URL}`) + } + const info = JSON.parse(res.body) + console.log(`Testing: ${info.runtime} + ${info.framework}`) + return info +} + +export function teardown(data) { + console.log(`Completed benchmark for: ${data.runtime} + ${data.framework}`) +} diff --git a/packages/trpc-benchmarks/src/k6/realistic-benchmark.js b/packages/trpc-benchmarks/src/k6/realistic-benchmark.js new file mode 100644 index 00000000..ea633169 --- /dev/null +++ b/packages/trpc-benchmarks/src/k6/realistic-benchmark.js @@ -0,0 +1,343 @@ +// Realistic k6 benchmark with database operations +// Run: k6 run src/k6/realistic-benchmark.js --env BASE_URL=http://localhost:3001 +// This simulates real e-commerce API traffic patterns + +import http from 'k6/http' +import { check, sleep, group } from 'k6' +import { Trend, Rate, Counter } from 'k6/metrics' +import { randomIntBetween, randomItem } from 'https://jslib.k6.io/k6-utils/1.2.0/index.js' + +// Custom metrics by operation type +var productListLatency = new Trend('db_product_list_latency', true) +var productGetLatency = new Trend('db_product_get_latency', true) +var productSearchLatency = new Trend('db_product_search_latency', true) +var orderCreateLatency = new Trend('db_order_create_latency', true) +var orderGetLatency = new Trend('db_order_get_latency', true) +var userGetLatency = new Trend('db_user_get_latency', true) +var categoryListLatency = new Trend('db_category_list_latency', true) +var dashboardLatency = new Trend('db_dashboard_latency', true) + +var errorRate = new Rate('error_rate') +var throughput = new Counter('total_requests') + +// Configuration +var BASE_URL = __ENV.BASE_URL || 'http://localhost:3001' +var TRPC_URL = BASE_URL + '/trpc' + +// Track created resources for cleanup/reuse +var createdOrders = [] +var seenUsers = [] +var seenProducts = [] +var seenCategories = [] + +export var options = { + scenarios: { + realistic_load: { + executor: 'ramping-vus', + startVUs: 1, + stages: [ + { duration: '10s', target: 5 }, + { duration: '30s', target: 10 }, + { duration: '20s', target: 20 }, + { duration: '10s', target: 5 }, + ], + gracefulRampDown: '5s', + } + }, + thresholds: { + http_req_duration: ['p(95)<500', 'p(99)<1000'], + error_rate: ['rate<0.05'], + db_product_list_latency: ['p(95)<300'], + db_order_create_latency: ['p(95)<500'], + db_dashboard_latency: ['p(95)<800'] + } +} + +function wrapInput(input) { + return { json: input } +} + +function trpcQuery(procedure, input) { + var url = input + ? TRPC_URL + '/' + procedure + '?input=' + encodeURIComponent(JSON.stringify(wrapInput(input))) + : TRPC_URL + '/' + procedure + return http.get(url, { headers: { 'Content-Type': 'application/json' } }) +} + +function trpcMutation(procedure, input) { + return http.post(TRPC_URL + '/' + procedure, JSON.stringify(wrapInput(input)), { + headers: { 'Content-Type': 'application/json' } + }) +} + +function extractResult(response) { + try { + var data = JSON.parse(response.body) + if (data && data.result && data.result.data) { + return data.result.data.json || data.result.data + } + return null + } catch (e) { + return null + } +} + +function getNestedProp(obj, path) { + var parts = path.split('.') + var current = obj + for (var i = 0; i < parts.length; i++) { + if (current === null || current === undefined) return undefined + current = current[parts[i]] + } + return current +} + +// Browsing behavior - most common (60% of traffic) +function browseProducts() { + group('Browse Products', function() { + var page = randomIntBetween(1, 10) + var listRes = trpcQuery('product.list', { page: page, pageSize: 20 }) + throughput.add(1) + productListLatency.add(listRes.timings.duration) + + var listOk = check(listRes, { 'product.list ok': function(r) { return r.status === 200 } }) + errorRate.add(!listOk) + + var result = extractResult(listRes) + if (result && result.products) { + result.products.forEach(function(p) { + if (seenProducts.indexOf(p.id) === -1) seenProducts.push(p.id) + }) + } + + sleep(0.1) + + if (seenProducts.length > 0) { + var productId = randomItem(seenProducts) + var getRes = trpcQuery('product.get', { id: productId }) + throughput.add(1) + productGetLatency.add(getRes.timings.duration) + + var getOk = check(getRes, { 'product.get ok': function(r) { return r.status === 200 } }) + errorRate.add(!getOk) + } + + sleep(0.1) + + var catRes = trpcQuery('category.list') + throughput.add(1) + categoryListLatency.add(catRes.timings.duration) + + var catOk = check(catRes, { 'category.list ok': function(r) { return r.status === 200 } }) + errorRate.add(!catOk) + + var categories = extractResult(catRes) + if (Array.isArray(categories)) { + categories.forEach(function(c) { + if (seenCategories.indexOf(c.id) === -1) seenCategories.push(c.id) + }) + } + }) +} + +// Search behavior (15% of traffic) +function searchProducts() { + group('Search Products', function() { + var searchTerms = ['Premium', 'Professional', 'Ultra', 'Smart', 'Deluxe', 'Widget', 'Tool'] + var query = randomItem(searchTerms) + + var res = trpcQuery('product.search', { query: query, page: 1, pageSize: 20 }) + throughput.add(1) + productSearchLatency.add(res.timings.duration) + + var ok = check(res, { 'product.search ok': function(r) { return r.status === 200 } }) + errorRate.add(!ok) + + var result = extractResult(res) + if (result && result.products) { + result.products.forEach(function(p) { + if (seenProducts.indexOf(p.id) === -1) seenProducts.push(p.id) + }) + } + }) +} + +// User account behavior (10% of traffic) +function viewUserAccount() { + group('User Account', function() { + var listRes = trpcQuery('user.list', { page: randomIntBetween(1, 50), pageSize: 10 }) + throughput.add(1) + + var result = extractResult(listRes) + if (result && result.users) { + result.users.forEach(function(u) { + if (seenUsers.indexOf(u.id) === -1) seenUsers.push(u.id) + }) + } + + if (seenUsers.length > 0) { + var userId = randomItem(seenUsers) + + var userRes = trpcQuery('user.get', { id: userId }) + throughput.add(1) + userGetLatency.add(userRes.timings.duration) + + var userOk = check(userRes, { 'user.get ok': function(r) { return r.status === 200 } }) + errorRate.add(!userOk) + + sleep(0.05) + + var ordersRes = trpcQuery('user.orders', { userId: userId, page: 1, pageSize: 10 }) + throughput.add(1) + check(ordersRes, { 'user.orders ok': function(r) { return r.status === 200 } }) + } + }) +} + +// Place order (10% of traffic) +function placeOrder() { + group('Place Order', function() { + if (seenUsers.length === 0 || seenProducts.length < 2) { + var userRes = trpcQuery('user.list', { page: 1, pageSize: 10 }) + var prodRes = trpcQuery('product.list', { page: 1, pageSize: 20 }) + throughput.add(2) + + var users = extractResult(userRes) + var products = extractResult(prodRes) + + if (users && users.users) { + users.users.forEach(function(u) { seenUsers.push(u.id) }) + } + if (products && products.products) { + products.products.forEach(function(p) { seenProducts.push(p.id) }) + } + } + + if (seenUsers.length > 0 && seenProducts.length >= 2) { + var userId = randomItem(seenUsers) + var numItems = randomIntBetween(1, 3) + var items = [] + var usedProducts = {} + + for (var i = 0; i < numItems && i < seenProducts.length; i++) { + var productId + var attempts = 0 + do { + productId = randomItem(seenProducts) + attempts++ + } while (usedProducts[productId] && attempts < 10) + + if (!usedProducts[productId]) { + usedProducts[productId] = true + items.push({ + productId: productId, + quantity: randomIntBetween(1, 2) + }) + } + } + + if (items.length > 0) { + var res = trpcMutation('order.create', { userId: userId, items: items }) + throughput.add(1) + orderCreateLatency.add(res.timings.duration) + + var ok = check(res, { + 'order.create ok or stock issue': function(r) { return r.status === 200 || r.status === 400 } + }) + errorRate.add(res.status >= 500) + + var order = extractResult(res) + if (order && order.id) { + createdOrders.push(order.id) + } + } + } + }) +} + +// View order (3% of traffic) +function viewOrder() { + group('View Order', function() { + var recentRes = trpcQuery('order.recent', { page: 1, pageSize: 10 }) + throughput.add(1) + + var result = extractResult(recentRes) + var orderIds = (result && result.orders) ? result.orders.map(function(o) { return o.id }) : createdOrders + + if (orderIds.length > 0) { + var orderId = randomItem(orderIds) + var res = trpcQuery('order.get', { id: orderId }) + throughput.add(1) + orderGetLatency.add(res.timings.duration) + + var ok = check(res, { 'order.get ok': function(r) { return r.status === 200 } }) + errorRate.add(!ok) + } + }) +} + +// Admin/Analytics (2% of traffic) +function viewDashboard() { + group('Dashboard Analytics', function() { + var res = trpcQuery('analytics.dashboard') + throughput.add(1) + dashboardLatency.add(res.timings.duration) + + var ok = check(res, { 'analytics.dashboard ok': function(r) { return r.status === 200 } }) + errorRate.add(!ok) + + sleep(0.1) + + var revenueRes = trpcQuery('analytics.revenueByCategory') + throughput.add(1) + check(revenueRes, { 'analytics.revenueByCategory ok': function(r) { return r.status === 200 } }) + }) +} + +// Main test function +export default function() { + var rand = Math.random() + + if (rand < 0.60) { + browseProducts() + } else if (rand < 0.75) { + searchProducts() + } else if (rand < 0.85) { + viewUserAccount() + } else if (rand < 0.95) { + placeOrder() + } else if (rand < 0.98) { + viewOrder() + } else { + viewDashboard() + } + + sleep(randomIntBetween(1, 3) / 10) +} + +export function setup() { + console.log('Starting realistic benchmark against ' + BASE_URL) + + var healthRes = http.get(BASE_URL + '/health') + if (healthRes.status !== 200) { + throw new Error('Server not responding at ' + BASE_URL) + } + + var health = JSON.parse(healthRes.body) + console.log('Server: ' + health.runtime + ' + ' + health.framework + ' + ' + (health.database || 'no-db')) + + var prodRes = trpcQuery('product.list', { page: 1, pageSize: 1 }) + var products = extractResult(prodRes) + if (!products || !products.total || products.total < 100) { + console.warn('Warning: Database may not be seeded. Run: pnpm db:seed') + } else { + console.log('Database has ' + products.total + ' products') + } + + return health +} + +export function teardown(data) { + console.log('\nBenchmark complete for: ' + data.runtime + ' + ' + data.framework) + console.log('Created ' + createdOrders.length + ' orders during test') +} diff --git a/packages/trpc-benchmarks/src/runners/compare-results.ts b/packages/trpc-benchmarks/src/runners/compare-results.ts new file mode 100644 index 00000000..51be81d6 --- /dev/null +++ b/packages/trpc-benchmarks/src/runners/compare-results.ts @@ -0,0 +1,240 @@ +#!/usr/bin/env tsx +// Run: npx tsx src/runners/compare-results.ts +// Options: npx tsx src/runners/compare-results.ts --dir results + +import { readdir, readFile } from 'node:fs/promises' +import path from 'node:path' +import { fileURLToPath } from 'node:url' +import chalk from 'chalk' + +const __dirname = path.dirname(fileURLToPath(import.meta.url)) +const ROOT_DIR = path.resolve(__dirname, '../..') + +interface BenchmarkResult { + config: { + name: string + runtime: 'node' | 'bun' + framework: 'express' | 'hono' + port: number + } + metrics: { + httpReqDuration: { avg: number; min: number; max: number; p95: number; p99: number } + httpReqs: number + httpReqFailed: number + iterations: number + vus: number + } + timestamp: string +} + +function parseArgs(): { dir: string } { + const args = process.argv.slice(2) + let dir = 'results' + + for (let i = 0; i < args.length; i++) { + if (args[i] === '--dir' && args[i + 1]) { + dir = args[i + 1] + i++ + } + } + + return { dir } +} + +async function loadResults(resultsDir: string): Promise { + const files = await readdir(resultsDir) + const jsonFiles = files.filter(f => f.endsWith('.json')).sort().reverse() + + const allResults: BenchmarkResult[][] = [] + + for (const file of jsonFiles) { + try { + const content = await readFile(path.join(resultsDir, file), 'utf-8') + const results = JSON.parse(content) as BenchmarkResult[] + allResults.push(results) + } catch (error) { + console.error(`Error loading ${file}:`, error) + } + } + + return allResults +} + +function formatLatency(ms: number): string { + if (ms < 1) { + return `${(ms * 1000).toFixed(0)}µs` + } + return `${ms.toFixed(2)}ms` +} + +function colorLatency(ms: number, threshold: number = 10): string { + if (ms < threshold) { + return chalk.green(formatLatency(ms)) + } else if (ms < threshold * 2) { + return chalk.yellow(formatLatency(ms)) + } + return chalk.red(formatLatency(ms)) +} + +function printComparison(results: BenchmarkResult[]) { + console.log(chalk.bold('\n' + '='.repeat(80))) + console.log(chalk.bold('Benchmark Results Comparison')) + console.log(chalk.bold('='.repeat(80))) + console.log('') + + // Header + console.log( + chalk.bold('Server'.padEnd(25)) + + chalk.bold('Avg'.padStart(12)) + + chalk.bold('P95'.padStart(12)) + + chalk.bold('P99'.padStart(12)) + + chalk.bold('Min'.padStart(12)) + + chalk.bold('Max'.padStart(12)) + ) + console.log('-'.repeat(85)) + + // Results + for (const result of results) { + const d = result.metrics.httpReqDuration + console.log( + result.config.name.padEnd(25) + + colorLatency(d.avg).padStart(12) + + colorLatency(d.p95).padStart(12) + + colorLatency(d.p99).padStart(12) + + colorLatency(d.min).padStart(12) + + colorLatency(d.max, 100).padStart(12) + ) + } + + console.log('') + + // Comparison + if (results.length >= 2) { + console.log(chalk.bold('-'.repeat(80))) + console.log(chalk.bold('Performance Comparison')) + console.log(chalk.bold('-'.repeat(80))) + console.log('') + + // Find best performers + const sortedByAvg = [...results].sort((a, b) => + a.metrics.httpReqDuration.avg - b.metrics.httpReqDuration.avg + ) + const sortedByP95 = [...results].sort((a, b) => + a.metrics.httpReqDuration.p95 - b.metrics.httpReqDuration.p95 + ) + const sortedByReqs = [...results].sort((a, b) => + b.metrics.httpReqs - a.metrics.httpReqs + ) + + const fastest = sortedByAvg[0] + const slowest = sortedByAvg[sortedByAvg.length - 1] + + const speedup = ((slowest.metrics.httpReqDuration.avg - fastest.metrics.httpReqDuration.avg) / + slowest.metrics.httpReqDuration.avg * 100) + + console.log(chalk.green(`✓ Fastest (avg latency): ${fastest.config.name}`)) + console.log(chalk.green(`✓ Best P95 latency: ${sortedByP95[0].config.name}`)) + console.log(chalk.green(`✓ Highest throughput: ${sortedByReqs[0].config.name}`)) + console.log('') + + if (speedup > 0) { + console.log( + chalk.cyan(`${fastest.config.name} is `) + + chalk.bold.cyan(`${speedup.toFixed(1)}%`) + + chalk.cyan(` faster than ${slowest.config.name}`) + ) + } + + // Detailed comparison + console.log('') + console.log(chalk.bold('Detailed Metrics:')) + + for (let i = 0; i < results.length; i++) { + for (let j = i + 1; j < results.length; j++) { + const a = results[i] + const b = results[j] + + const avgDiff = ((a.metrics.httpReqDuration.avg - b.metrics.httpReqDuration.avg) / + Math.min(a.metrics.httpReqDuration.avg, b.metrics.httpReqDuration.avg) * 100) + const p95Diff = ((a.metrics.httpReqDuration.p95 - b.metrics.httpReqDuration.p95) / + Math.min(a.metrics.httpReqDuration.p95, b.metrics.httpReqDuration.p95) * 100) + + console.log('') + console.log(` ${a.config.name} vs ${b.config.name}:`) + + if (Math.abs(avgDiff) < 5) { + console.log(` Average latency: ${chalk.yellow('Similar')} (${Math.abs(avgDiff).toFixed(1)}% diff)`) + } else if (avgDiff > 0) { + console.log(` Average latency: ${chalk.green(b.config.name)} is ${Math.abs(avgDiff).toFixed(1)}% faster`) + } else { + console.log(` Average latency: ${chalk.green(a.config.name)} is ${Math.abs(avgDiff).toFixed(1)}% faster`) + } + + if (Math.abs(p95Diff) < 5) { + console.log(` P95 latency: ${chalk.yellow('Similar')} (${Math.abs(p95Diff).toFixed(1)}% diff)`) + } else if (p95Diff > 0) { + console.log(` P95 latency: ${chalk.green(b.config.name)} is ${Math.abs(p95Diff).toFixed(1)}% better`) + } else { + console.log(` P95 latency: ${chalk.green(a.config.name)} is ${Math.abs(p95Diff).toFixed(1)}% better`) + } + } + } + } + + console.log('') + console.log(chalk.bold('='.repeat(80))) +} + +async function main() { + const { dir } = parseArgs() + const resultsDir = path.join(ROOT_DIR, dir) + + console.log(`Loading results from: ${resultsDir}`) + + try { + const allResults = await loadResults(resultsDir) + + if (allResults.length === 0) { + console.log(chalk.yellow('\nNo benchmark results found.')) + console.log('Run benchmarks first:') + console.log(' npx tsx src/runners/run-all-benchmarks.ts') + process.exit(0) + } + + // Show most recent results + console.log(chalk.dim(`\nFound ${allResults.length} benchmark run(s). Showing most recent:\n`)) + + printComparison(allResults[0]) + + // Show trend if multiple runs exist + if (allResults.length > 1) { + console.log(chalk.bold('\nHistorical Comparison (last 3 runs):')) + console.log('-'.repeat(60)) + + for (let i = 0; i < Math.min(3, allResults.length); i++) { + const results = allResults[i] + const timestamp = new Date(results[0].timestamp).toLocaleString() + + console.log(chalk.dim(`\nRun ${i + 1}: ${timestamp}`)) + for (const result of results) { + console.log( + ` ${result.config.name}: ` + + `avg=${formatLatency(result.metrics.httpReqDuration.avg)}, ` + + `p95=${formatLatency(result.metrics.httpReqDuration.p95)}` + ) + } + } + } + } catch (error) { + if ((error as NodeJS.ErrnoException).code === 'ENOENT') { + console.log(chalk.yellow(`\nResults directory not found: ${resultsDir}`)) + console.log('Run benchmarks first:') + console.log(' npx tsx src/runners/run-all-benchmarks.ts') + } else { + console.error('Error:', error) + } + process.exit(1) + } +} + +main() diff --git a/packages/trpc-benchmarks/src/runners/run-all-benchmarks.ts b/packages/trpc-benchmarks/src/runners/run-all-benchmarks.ts new file mode 100644 index 00000000..546b7327 --- /dev/null +++ b/packages/trpc-benchmarks/src/runners/run-all-benchmarks.ts @@ -0,0 +1,425 @@ +#!/usr/bin/env tsx +// Run: npx tsx src/runners/run-all-benchmarks.ts +// Options: npx tsx src/runners/run-all-benchmarks.ts --vus 20 --duration 60s --quick + +import { spawn, ChildProcess, execSync } from 'node:child_process' +import { mkdir, writeFile, readFile } from 'node:fs/promises' +import path from 'node:path' +import { fileURLToPath } from 'node:url' + +const __dirname = path.dirname(fileURLToPath(import.meta.url)) +const ROOT_DIR = path.resolve(__dirname, '../..') + +interface BenchmarkConfig { + name: string + runtime: 'node' | 'bun' + framework: 'express' | 'hono' + serverScript: string + port: number + command: string[] +} + +interface BenchmarkResult { + config: BenchmarkConfig + metrics: { + httpReqDuration: { avg: number; min: number; max: number; p95: number; p99: number } + httpReqs: number + httpReqFailed: number + iterations: number + vus: number + duration: string + } + raw: string + timestamp: Date +} + +const configs: BenchmarkConfig[] = [ + { + name: 'Express + Node.js', + runtime: 'node', + framework: 'express', + serverScript: 'src/servers/express-server.ts', + port: 3001, + command: ['npx', 'tsx', 'src/servers/express-server.ts'] + }, + { + name: 'Hono + Bun', + runtime: 'bun', + framework: 'hono', + serverScript: 'src/servers/hono-server.ts', + port: 3002, + command: ['bun', 'run', 'src/servers/hono-server.ts'] + } +] + +// Parse CLI arguments +function parseArgs(): { vus: number; duration: string; quick: boolean; output: string } { + const args = process.argv.slice(2) + let vus = 10 + let duration = '30s' + let quick = false + let output = 'results' + + for (let i = 0; i < args.length; i++) { + if (args[i] === '--vus' && args[i + 1]) { + vus = parseInt(args[i + 1], 10) + i++ + } else if (args[i] === '--duration' && args[i + 1]) { + duration = args[i + 1] + i++ + } else if (args[i] === '--quick') { + quick = true + } else if (args[i] === '--output' && args[i + 1]) { + output = args[i + 1] + i++ + } + } + + return { vus, duration, quick, output } +} + +// Check if k6 is installed +function checkK6(): boolean { + try { + execSync('k6 version', { stdio: 'pipe' }) + return true + } catch { + return false + } +} + +// Check if Bun is installed +function checkBun(): boolean { + try { + execSync('bun --version', { stdio: 'pipe' }) + return true + } catch { + return false + } +} + +// Start a server process +async function startServer(config: BenchmarkConfig): Promise { + console.log(`\nStarting ${config.name} server...`) + + const env = { ...process.env, PORT: config.port.toString() } + + const serverProcess = spawn(config.command[0], config.command.slice(1), { + cwd: ROOT_DIR, + env, + stdio: ['ignore', 'pipe', 'pipe'] + }) + + // Wait for server to be ready + return new Promise((resolve, reject) => { + const timeout = setTimeout(() => { + serverProcess.kill() + reject(new Error(`Server ${config.name} failed to start within 10 seconds`)) + }, 10000) + + serverProcess.stdout?.on('data', (data: Buffer) => { + const output = data.toString() + console.log(`[${config.name}] ${output.trim()}`) + if (output.includes('Server running')) { + clearTimeout(timeout) + // Give server a moment to fully initialize + setTimeout(() => resolve(serverProcess), 500) + } + }) + + serverProcess.stderr?.on('data', (data: Buffer) => { + console.error(`[${config.name}] ERROR: ${data.toString().trim()}`) + }) + + serverProcess.on('error', (err) => { + clearTimeout(timeout) + reject(err) + }) + + serverProcess.on('exit', (code) => { + if (code !== 0 && code !== null) { + clearTimeout(timeout) + reject(new Error(`Server exited with code ${code}`)) + } + }) + }) +} + +// Run k6 benchmark +async function runBenchmark( + config: BenchmarkConfig, + options: { vus: number; duration: string; quick: boolean } +): Promise { + const scriptPath = options.quick + ? 'src/k6/quick-benchmark.js' + : 'src/k6/benchmark.js' + + const baseUrl = `http://localhost:${config.port}` + + console.log(`\nRunning k6 benchmark for ${config.name}...`) + console.log(` URL: ${baseUrl}`) + console.log(` VUs: ${options.vus}`) + console.log(` Duration: ${options.duration}`) + + return new Promise((resolve, reject) => { + const args = [ + 'run', + '--vus', options.vus.toString(), + '--duration', options.duration, + '--env', `BASE_URL=${baseUrl}`, + '--summary-trend-stats', 'avg,min,med,max,p(90),p(95),p(99)', + '--out', 'json=results.json', + scriptPath + ] + + const k6Process = spawn('k6', args, { + cwd: ROOT_DIR, + stdio: ['ignore', 'pipe', 'pipe'] + }) + + let stdout = '' + let stderr = '' + + k6Process.stdout?.on('data', (data: Buffer) => { + const output = data.toString() + stdout += output + process.stdout.write(output) + }) + + k6Process.stderr?.on('data', (data: Buffer) => { + const output = data.toString() + stderr += output + process.stderr.write(output) + }) + + k6Process.on('close', async (code) => { + if (code !== 0) { + reject(new Error(`k6 exited with code ${code}\n${stderr}`)) + return + } + + // Parse results + const metrics = parseK6Output(stdout) + + resolve({ + config, + metrics, + raw: stdout, + timestamp: new Date() + }) + }) + }) +} + +// Parse k6 output for metrics +function parseK6Output(output: string): BenchmarkResult['metrics'] { + const metrics: BenchmarkResult['metrics'] = { + httpReqDuration: { avg: 0, min: 0, max: 0, p95: 0, p99: 0 }, + httpReqs: 0, + httpReqFailed: 0, + iterations: 0, + vus: 0, + duration: '' + } + + // Extract http_req_duration + const durationMatch = output.match(/http_req_duration[^=]*=\s*avg=([0-9.]+)m?s\s+min=([0-9.]+)m?s.*max=([0-9.]+)m?s.*p\(95\)=([0-9.]+)m?s.*p\(99\)=([0-9.]+)m?s/i) + if (durationMatch) { + metrics.httpReqDuration.avg = parseFloat(durationMatch[1]) + metrics.httpReqDuration.min = parseFloat(durationMatch[2]) + metrics.httpReqDuration.max = parseFloat(durationMatch[3]) + metrics.httpReqDuration.p95 = parseFloat(durationMatch[4]) + metrics.httpReqDuration.p99 = parseFloat(durationMatch[5]) + } + + // Extract http_reqs + const reqsMatch = output.match(/http_reqs[^0-9]*([0-9]+)/) + if (reqsMatch) { + metrics.httpReqs = parseInt(reqsMatch[1], 10) + } + + // Extract iterations + const iterMatch = output.match(/iterations[^0-9]*([0-9]+)/) + if (iterMatch) { + metrics.iterations = parseInt(iterMatch[1], 10) + } + + // Extract VUs + const vusMatch = output.match(/vus[^0-9]*([0-9]+)/) + if (vusMatch) { + metrics.vus = parseInt(vusMatch[1], 10) + } + + return metrics +} + +// Generate comparison report +function generateReport(results: BenchmarkResult[]): string { + const lines: string[] = [] + + lines.push('=' .repeat(80)) + lines.push('tRPC API Benchmark Results') + lines.push('=' .repeat(80)) + lines.push('') + lines.push(`Timestamp: ${new Date().toISOString()}`) + lines.push('') + + // Summary table + lines.push('-'.repeat(80)) + lines.push('Summary Comparison') + lines.push('-'.repeat(80)) + lines.push('') + lines.push( + 'Server'.padEnd(25) + + 'Avg (ms)'.padStart(12) + + 'P95 (ms)'.padStart(12) + + 'P99 (ms)'.padStart(12) + + 'Requests'.padStart(12) + + 'Req/s'.padStart(12) + ) + lines.push('-'.repeat(85)) + + for (const result of results) { + const duration = result.metrics.httpReqDuration + const reqsPerSec = Math.round(result.metrics.httpReqs / 30) // Approximate + + lines.push( + result.config.name.padEnd(25) + + duration.avg.toFixed(2).padStart(12) + + duration.p95.toFixed(2).padStart(12) + + duration.p99.toFixed(2).padStart(12) + + result.metrics.httpReqs.toString().padStart(12) + + reqsPerSec.toString().padStart(12) + ) + } + + lines.push('') + + // Performance comparison + if (results.length >= 2) { + lines.push('-'.repeat(80)) + lines.push('Performance Comparison') + lines.push('-'.repeat(80)) + lines.push('') + + const [first, second] = results + const avgDiff = ((first.metrics.httpReqDuration.avg - second.metrics.httpReqDuration.avg) / + first.metrics.httpReqDuration.avg * 100) + const p95Diff = ((first.metrics.httpReqDuration.p95 - second.metrics.httpReqDuration.p95) / + first.metrics.httpReqDuration.p95 * 100) + const reqsDiff = ((second.metrics.httpReqs - first.metrics.httpReqs) / + first.metrics.httpReqs * 100) + + if (avgDiff > 0) { + lines.push(`${second.config.name} is ${Math.abs(avgDiff).toFixed(1)}% faster (avg latency)`) + } else { + lines.push(`${first.config.name} is ${Math.abs(avgDiff).toFixed(1)}% faster (avg latency)`) + } + + if (p95Diff > 0) { + lines.push(`${second.config.name} has ${Math.abs(p95Diff).toFixed(1)}% better P95 latency`) + } else { + lines.push(`${first.config.name} has ${Math.abs(p95Diff).toFixed(1)}% better P95 latency`) + } + + if (reqsDiff > 0) { + lines.push(`${second.config.name} handled ${Math.abs(reqsDiff).toFixed(1)}% more requests`) + } else { + lines.push(`${first.config.name} handled ${Math.abs(reqsDiff).toFixed(1)}% more requests`) + } + } + + lines.push('') + lines.push('=' .repeat(80)) + + return lines.join('\n') +} + +// Main runner +async function main() { + console.log('tRPC API Benchmark Runner') + console.log('='.repeat(50)) + + // Check dependencies + if (!checkK6()) { + console.error('Error: k6 is not installed. Install it with:') + console.error(' brew install k6 (macOS)') + console.error(' choco install k6 (Windows)') + console.error(' sudo apt install k6 (Ubuntu/Debian)') + console.error(' Or download from: https://k6.io/docs/getting-started/installation/') + process.exit(1) + } + + if (!checkBun()) { + console.warn('Warning: Bun is not installed. Hono+Bun benchmark will be skipped.') + console.warn(' Install Bun: curl -fsSL https://bun.sh/install | bash') + } + + const options = parseArgs() + console.log(`\nBenchmark options:`) + console.log(` VUs: ${options.vus}`) + console.log(` Duration: ${options.duration}`) + console.log(` Quick mode: ${options.quick}`) + + const results: BenchmarkResult[] = [] + const hasBun = checkBun() + + for (const config of configs) { + // Skip Bun tests if Bun is not installed + if (config.runtime === 'bun' && !hasBun) { + console.log(`\nSkipping ${config.name} (Bun not installed)`) + continue + } + + let serverProcess: ChildProcess | null = null + + try { + // Start server + serverProcess = await startServer(config) + + // Run benchmark + const result = await runBenchmark(config, options) + results.push(result) + } catch (error) { + console.error(`\nError benchmarking ${config.name}:`, error) + } finally { + // Stop server + if (serverProcess) { + console.log(`\nStopping ${config.name} server...`) + serverProcess.kill('SIGTERM') + await new Promise((resolve) => setTimeout(resolve, 1000)) + } + } + } + + // Generate and save report + if (results.length > 0) { + const report = generateReport(results) + console.log('\n') + console.log(report) + + // Save results + const outputDir = path.join(ROOT_DIR, options.output) + await mkdir(outputDir, { recursive: true }) + + const timestamp = new Date().toISOString().replace(/[:.]/g, '-') + await writeFile( + path.join(outputDir, `benchmark-${timestamp}.txt`), + report + ) + await writeFile( + path.join(outputDir, `benchmark-${timestamp}.json`), + JSON.stringify(results, null, 2) + ) + + console.log(`\nResults saved to ${outputDir}/`) + } else { + console.error('\nNo benchmark results collected!') + process.exit(1) + } +} + +main().catch((error) => { + console.error('Fatal error:', error) + process.exit(1) +}) diff --git a/packages/trpc-benchmarks/src/runners/run-express-benchmark.ts b/packages/trpc-benchmarks/src/runners/run-express-benchmark.ts new file mode 100644 index 00000000..84fbe326 --- /dev/null +++ b/packages/trpc-benchmarks/src/runners/run-express-benchmark.ts @@ -0,0 +1,144 @@ +#!/usr/bin/env tsx +// Run: npx tsx src/runners/run-express-benchmark.ts +// Options: npx tsx src/runners/run-express-benchmark.ts --vus 20 --duration 60s + +import { spawn, ChildProcess, execSync } from 'node:child_process' +import path from 'node:path' +import { fileURLToPath } from 'node:url' + +const __dirname = path.dirname(fileURLToPath(import.meta.url)) +const ROOT_DIR = path.resolve(__dirname, '../..') + +const PORT = 3001 +const BASE_URL = `http://localhost:${PORT}` + +function parseArgs() { + const args = process.argv.slice(2) + let vus = 10 + let duration = '30s' + let quick = false + + for (let i = 0; i < args.length; i++) { + if (args[i] === '--vus' && args[i + 1]) { + vus = parseInt(args[i + 1], 10) + i++ + } else if (args[i] === '--duration' && args[i + 1]) { + duration = args[i + 1] + i++ + } else if (args[i] === '--quick') { + quick = true + } + } + + return { vus, duration, quick } +} + +function checkK6(): boolean { + try { + execSync('k6 version', { stdio: 'pipe' }) + return true + } catch { + return false + } +} + +async function startServer(): Promise { + console.log('Starting Express+Node server...') + + const serverProcess = spawn('npx', ['tsx', 'src/servers/express-server.ts'], { + cwd: ROOT_DIR, + env: { ...process.env, PORT: PORT.toString() }, + stdio: ['ignore', 'pipe', 'pipe'] + }) + + return new Promise((resolve, reject) => { + const timeout = setTimeout(() => { + serverProcess.kill() + reject(new Error('Server failed to start within 10 seconds')) + }, 10000) + + serverProcess.stdout?.on('data', (data: Buffer) => { + const output = data.toString() + console.log(`[Express] ${output.trim()}`) + if (output.includes('Server running')) { + clearTimeout(timeout) + setTimeout(() => resolve(serverProcess), 500) + } + }) + + serverProcess.stderr?.on('data', (data: Buffer) => { + console.error(`[Express] ERROR: ${data.toString().trim()}`) + }) + + serverProcess.on('error', (err) => { + clearTimeout(timeout) + reject(err) + }) + }) +} + +async function runBenchmark(options: { vus: number; duration: string; quick: boolean }) { + const scriptPath = options.quick + ? 'src/k6/quick-benchmark.js' + : 'src/k6/benchmark.js' + + console.log(`\nRunning k6 benchmark...`) + console.log(` URL: ${BASE_URL}`) + console.log(` VUs: ${options.vus}`) + console.log(` Duration: ${options.duration}`) + console.log(` Script: ${scriptPath}`) + console.log('') + + return new Promise((resolve, reject) => { + const k6Process = spawn('k6', [ + 'run', + '--vus', options.vus.toString(), + '--duration', options.duration, + '--env', `BASE_URL=${BASE_URL}`, + '--summary-trend-stats', 'avg,min,med,max,p(90),p(95),p(99)', + scriptPath + ], { + cwd: ROOT_DIR, + stdio: 'inherit' + }) + + k6Process.on('close', (code) => { + if (code !== 0) { + reject(new Error(`k6 exited with code ${code}`)) + } else { + resolve() + } + }) + }) +} + +async function main() { + console.log('Express + Node.js tRPC Benchmark') + console.log('='.repeat(50)) + + if (!checkK6()) { + console.error('Error: k6 is not installed') + process.exit(1) + } + + const options = parseArgs() + let serverProcess: ChildProcess | null = null + + try { + serverProcess = await startServer() + await runBenchmark(options) + } catch (error) { + console.error('Benchmark error:', error) + process.exit(1) + } finally { + if (serverProcess) { + console.log('\nStopping server...') + serverProcess.kill('SIGTERM') + await new Promise((resolve) => setTimeout(resolve, 1000)) + } + } + + console.log('\nBenchmark complete!') +} + +main() diff --git a/packages/trpc-benchmarks/src/runners/run-hono-benchmark.ts b/packages/trpc-benchmarks/src/runners/run-hono-benchmark.ts new file mode 100644 index 00000000..fe6e538c --- /dev/null +++ b/packages/trpc-benchmarks/src/runners/run-hono-benchmark.ts @@ -0,0 +1,166 @@ +#!/usr/bin/env tsx +// Run: npx tsx src/runners/run-hono-benchmark.ts +// Options: npx tsx src/runners/run-hono-benchmark.ts --vus 20 --duration 60s + +import { spawn, ChildProcess, execSync } from 'node:child_process' +import path from 'node:path' +import { fileURLToPath } from 'node:url' + +const __dirname = path.dirname(fileURLToPath(import.meta.url)) +const ROOT_DIR = path.resolve(__dirname, '../..') + +const PORT = 3002 +const BASE_URL = `http://localhost:${PORT}` + +function parseArgs() { + const args = process.argv.slice(2) + let vus = 10 + let duration = '30s' + let quick = false + + for (let i = 0; i < args.length; i++) { + if (args[i] === '--vus' && args[i + 1]) { + vus = parseInt(args[i + 1], 10) + i++ + } else if (args[i] === '--duration' && args[i + 1]) { + duration = args[i + 1] + i++ + } else if (args[i] === '--quick') { + quick = true + } + } + + return { vus, duration, quick } +} + +function checkK6(): boolean { + try { + execSync('k6 version', { stdio: 'pipe' }) + return true + } catch { + return false + } +} + +function checkBun(): boolean { + try { + execSync('bun --version', { stdio: 'pipe' }) + return true + } catch { + return false + } +} + +async function startServer(): Promise { + const hasBun = checkBun() + + if (hasBun) { + console.log('Starting Hono+Bun server...') + } else { + console.log('Starting Hono+Node server (Bun not available)...') + console.log(' Note: For accurate benchmarks, install Bun: curl -fsSL https://bun.sh/install | bash') + } + + const command = hasBun ? 'bun' : 'npx' + const args = hasBun ? ['run', 'src/servers/hono-server.ts'] : ['tsx', 'src/servers/hono-server.ts'] + + const serverProcess = spawn(command, args, { + cwd: ROOT_DIR, + env: { ...process.env, PORT: PORT.toString() }, + stdio: ['ignore', 'pipe', 'pipe'] + }) + + return new Promise((resolve, reject) => { + const timeout = setTimeout(() => { + serverProcess.kill() + reject(new Error('Server failed to start within 10 seconds')) + }, 10000) + + serverProcess.stdout?.on('data', (data: Buffer) => { + const output = data.toString() + console.log(`[Hono] ${output.trim()}`) + if (output.includes('Server running')) { + clearTimeout(timeout) + setTimeout(() => resolve(serverProcess), 500) + } + }) + + serverProcess.stderr?.on('data', (data: Buffer) => { + console.error(`[Hono] ERROR: ${data.toString().trim()}`) + }) + + serverProcess.on('error', (err) => { + clearTimeout(timeout) + reject(err) + }) + }) +} + +async function runBenchmark(options: { vus: number; duration: string; quick: boolean }) { + const scriptPath = options.quick + ? 'src/k6/quick-benchmark.js' + : 'src/k6/benchmark.js' + + console.log(`\nRunning k6 benchmark...`) + console.log(` URL: ${BASE_URL}`) + console.log(` VUs: ${options.vus}`) + console.log(` Duration: ${options.duration}`) + console.log(` Script: ${scriptPath}`) + console.log('') + + return new Promise((resolve, reject) => { + const k6Process = spawn('k6', [ + 'run', + '--vus', options.vus.toString(), + '--duration', options.duration, + '--env', `BASE_URL=${BASE_URL}`, + '--summary-trend-stats', 'avg,min,med,max,p(90),p(95),p(99)', + scriptPath + ], { + cwd: ROOT_DIR, + stdio: 'inherit' + }) + + k6Process.on('close', (code) => { + if (code !== 0) { + reject(new Error(`k6 exited with code ${code}`)) + } else { + resolve() + } + }) + }) +} + +async function main() { + const hasBun = checkBun() + const serverType = hasBun ? 'Hono + Bun' : 'Hono + Node.js' + + console.log(`${serverType} tRPC Benchmark`) + console.log('='.repeat(50)) + + if (!checkK6()) { + console.error('Error: k6 is not installed') + process.exit(1) + } + + const options = parseArgs() + let serverProcess: ChildProcess | null = null + + try { + serverProcess = await startServer() + await runBenchmark(options) + } catch (error) { + console.error('Benchmark error:', error) + process.exit(1) + } finally { + if (serverProcess) { + console.log('\nStopping server...') + serverProcess.kill('SIGTERM') + await new Promise((resolve) => setTimeout(resolve, 1000)) + } + } + + console.log('\nBenchmark complete!') +} + +main() diff --git a/packages/trpc-benchmarks/src/runners/run-native-benchmark.ts b/packages/trpc-benchmarks/src/runners/run-native-benchmark.ts new file mode 100644 index 00000000..f1675b3d --- /dev/null +++ b/packages/trpc-benchmarks/src/runners/run-native-benchmark.ts @@ -0,0 +1,485 @@ +// Native API Benchmark Runner (Elysia native vs Hono native - no tRPC) +// Run: npx tsx src/runners/run-native-benchmark.ts +// Stress test: npx tsx src/runners/run-native-benchmark.ts --stress + +import { spawn, execSync, ChildProcess } from 'child_process' +import { existsSync, mkdirSync, writeFileSync, readFileSync } from 'fs' + +interface ResourceSample { + timestamp: number + memoryMB: number + cpuPercent: number +} + +interface BenchmarkConfig { + name: string + runtime: 'bun' | 'node' + framework: string + port: number + command: string[] +} + +interface BenchmarkResult { + config: BenchmarkConfig + metrics: { + avgLatency?: number + p95Latency?: number + p99Latency?: number + totalRequests?: number + errorRate?: number + requestsPerSecond?: number + peakRPS?: number + // Resource metrics + peakMemoryMB?: number + avgMemoryMB?: number + peakCpuPercent?: number + avgCpuPercent?: number + } + resourceSamples?: ResourceSample[] +} + +// Check for stress test mode +const STRESS_TEST = process.argv.includes('--stress') + +const configs: BenchmarkConfig[] = [ + { + name: 'Express Native + Node', + runtime: 'node', + framework: 'express-native', + port: 3007, + command: ['npx', 'tsx', 'src/servers/express-native-server.ts'] + }, + { + name: 'Hono Native + Bun', + runtime: 'bun', + framework: 'hono-native', + port: 3005, + command: ['bun', 'run', 'src/servers/hono-native-server.ts'] + }, + { + name: 'Elysia Native + Bun', + runtime: 'bun', + framework: 'elysia-native', + port: 3004, + command: ['bun', 'run', 'src/servers/elysia-native-server.ts'] + }, + { + name: 'Elysia Optimized + Bun', + runtime: 'bun', + framework: 'elysia-optimized', + port: 3006, + command: ['bun', 'run', 'src/servers/elysia-optimized-server.ts'] + } +] + +async function sleep(ms: number): Promise { + return new Promise(resolve => setTimeout(resolve, ms)) +} + +async function waitForServer(url: string, maxAttempts = 30): Promise { + for (let i = 0; i < maxAttempts; i++) { + try { + const response = await fetch(`${url}/health`) + if (response.ok) { + return true + } + } catch { + // Server not ready yet + } + await sleep(500) + } + return false +} + +function startServer(config: BenchmarkConfig): ChildProcess { + const env = { ...process.env, PORT: String(config.port) } + const proc = spawn(config.command[0], config.command.slice(1), { + env, + stdio: ['ignore', 'pipe', 'pipe'], + cwd: process.cwd() + }) + + proc.stdout?.on('data', (data) => { + console.log(`[${config.name}] ${data.toString().trim()}`) + }) + + proc.stderr?.on('data', (data) => { + const msg = data.toString().trim() + if (msg && !msg.includes('ExperimentalWarning') && !msg.includes('prisma:error')) { + console.error(`[${config.name}] ${msg}`) + } + }) + + return proc +} + +// Resource monitoring using /proc filesystem (Linux) +function getProcessStats(pid: number): { memoryMB: number; cpuPercent: number } | null { + try { + // Read memory from /proc/[pid]/status + const statusPath = `/proc/${pid}/status` + if (!existsSync(statusPath)) return null + + const status = readFileSync(statusPath, 'utf-8') + const vmRssMatch = status.match(/VmRSS:\s+(\d+)\s+kB/) + const memoryKB = vmRssMatch ? parseInt(vmRssMatch[1]) : 0 + const memoryMB = memoryKB / 1024 + + // Read CPU from /proc/[pid]/stat + const statPath = `/proc/${pid}/stat` + const stat = readFileSync(statPath, 'utf-8') + const parts = stat.split(' ') + // utime (14th field) + stime (15th field) = total CPU time in jiffies + const utime = parseInt(parts[13]) || 0 + const stime = parseInt(parts[14]) || 0 + const totalTime = utime + stime + + // This is cumulative, so we just return a rough estimate + // Real CPU% would need two samples to calculate delta + const cpuPercent = totalTime / 100 // Rough approximation + + return { memoryMB, cpuPercent } + } catch { + return null + } +} + +class ResourceMonitor { + private pid: number + private samples: ResourceSample[] = [] + private interval: NodeJS.Timeout | null = null + private lastCpuTime = 0 + private lastSampleTime = Date.now() + + constructor(pid: number) { + this.pid = pid + } + + start(intervalMs = 1000) { + this.samples = [] + this.lastSampleTime = Date.now() + + // Get initial CPU time + const initial = this.getCpuTime() + if (initial !== null) { + this.lastCpuTime = initial + } + + this.interval = setInterval(() => { + this.takeSample() + }, intervalMs) + } + + private getCpuTime(): number | null { + try { + const statPath = `/proc/${this.pid}/stat` + if (!existsSync(statPath)) return null + const stat = readFileSync(statPath, 'utf-8') + const parts = stat.split(' ') + const utime = parseInt(parts[13]) || 0 + const stime = parseInt(parts[14]) || 0 + return utime + stime + } catch { + return null + } + } + + private takeSample() { + try { + const statusPath = `/proc/${this.pid}/status` + if (!existsSync(statusPath)) return + + const status = readFileSync(statusPath, 'utf-8') + const vmRssMatch = status.match(/VmRSS:\s+(\d+)\s+kB/) + const memoryKB = vmRssMatch ? parseInt(vmRssMatch[1]) : 0 + const memoryMB = memoryKB / 1024 + + // Calculate CPU percentage + const now = Date.now() + const currentCpuTime = this.getCpuTime() + let cpuPercent = 0 + + if (currentCpuTime !== null && this.lastCpuTime > 0) { + const cpuDelta = currentCpuTime - this.lastCpuTime + const timeDelta = (now - this.lastSampleTime) / 1000 // seconds + // CPU time is in jiffies (usually 100Hz = 10ms each) + // So cpuDelta jiffies / 100 = seconds of CPU time + // CPU% = (CPU seconds / wall clock seconds) * 100 + cpuPercent = (cpuDelta / 100 / timeDelta) * 100 + this.lastCpuTime = currentCpuTime + } + + this.lastSampleTime = now + + this.samples.push({ + timestamp: now, + memoryMB: Math.round(memoryMB * 100) / 100, + cpuPercent: Math.round(cpuPercent * 100) / 100 + }) + } catch { + // Process may have exited + } + } + + stop(): ResourceSample[] { + if (this.interval) { + clearInterval(this.interval) + this.interval = null + } + return this.samples + } + + getStats(): { peak: { memoryMB: number; cpuPercent: number }; avg: { memoryMB: number; cpuPercent: number } } { + if (this.samples.length === 0) { + return { peak: { memoryMB: 0, cpuPercent: 0 }, avg: { memoryMB: 0, cpuPercent: 0 } } + } + + const peakMemory = Math.max(...this.samples.map(s => s.memoryMB)) + const peakCpu = Math.max(...this.samples.map(s => s.cpuPercent)) + const avgMemory = this.samples.reduce((sum, s) => sum + s.memoryMB, 0) / this.samples.length + const avgCpu = this.samples.reduce((sum, s) => sum + s.cpuPercent, 0) / this.samples.length + + return { + peak: { memoryMB: Math.round(peakMemory * 100) / 100, cpuPercent: Math.round(peakCpu * 100) / 100 }, + avg: { memoryMB: Math.round(avgMemory * 100) / 100, cpuPercent: Math.round(avgCpu * 100) / 100 } + } + } +} + +async function runK6Benchmark(config: BenchmarkConfig, stressTest: boolean): Promise { + const baseUrl = `http://localhost:${config.port}` + + const env = { + ...process.env, + BASE_URL: baseUrl, + RUNTIME: config.runtime, + FRAMEWORK: config.framework, + STRESS_TEST: stressTest ? '1' : '0' + } + + // Longer timeout for stress tests + const timeout = stressTest ? 300000 : 180000 + + try { + const result = execSync('k6 run src/k6/native-benchmark.js', { + env, + encoding: 'utf-8', + maxBuffer: 50 * 1024 * 1024, + timeout + }) + return result + } catch (error: any) { + if (error.stdout) { + return error.stdout + } + throw error + } +} + +function parseK6Output(output: string): BenchmarkResult['metrics'] { + const metrics: BenchmarkResult['metrics'] = {} + + // Parse http_req_duration - k6 outputs: avg=Xms p(90)=Yms p(95)=Zms + const durationMatch = output.match(/http_req_duration[^:]*:\s*avg=([0-9.]+)(\w+)\s+min=[\d.]+[µm]?s?\s+med=[\d.]+[µm]?s?\s+max=[\d.]+[µm]?s?\s+p\(90\)=([0-9.]+)(\w+)\s+p\(95\)=([0-9.]+)(\w+)/) + if (durationMatch) { + metrics.avgLatency = parseFloat(durationMatch[1]) + metrics.p95Latency = parseFloat(durationMatch[5]) + // p99 not in default k6 output, use p90 as fallback + metrics.p99Latency = parseFloat(durationMatch[3]) + } + + // Parse http_reqs + const reqsMatch = output.match(/http_reqs[^:]*:\s*(\d+)\s+([0-9.]+)\/s/) + if (reqsMatch) { + metrics.totalRequests = parseInt(reqsMatch[1]) + metrics.requestsPerSecond = parseFloat(reqsMatch[2]) + metrics.peakRPS = metrics.requestsPerSecond // Will be same as avg for k6 + } + + // Parse error_rate - handle both count and rate format + const errorMatch = output.match(/error_rate[^:]*:\s*(\d+)/) + if (errorMatch) { + metrics.errorRate = parseInt(errorMatch[1]) + } + + return metrics +} + +async function runBenchmark(config: BenchmarkConfig, stressTest: boolean): Promise { + console.log(`\nStarting ${config.name} server...`) + + const server = startServer(config) + let monitor: ResourceMonitor | null = null + + try { + const serverUrl = `http://localhost:${config.port}` + const ready = await waitForServer(serverUrl) + + if (!ready) { + throw new Error(`Server ${config.name} failed to start`) + } + + // Start resource monitoring + if (server.pid) { + monitor = new ResourceMonitor(server.pid) + monitor.start(500) // Sample every 500ms + } + + console.log(`\nRunning ${stressTest ? 'STRESS TEST' : 'benchmark'} for ${config.name}...`) + console.log(` URL: ${serverUrl}`) + if (server.pid) { + console.log(` PID: ${server.pid}`) + } + + const output = await runK6Benchmark(config, stressTest) + console.log(output) + + const metrics = parseK6Output(output) + + // Get resource stats + if (monitor) { + const resourceStats = monitor.getStats() + metrics.peakMemoryMB = resourceStats.peak.memoryMB + metrics.avgMemoryMB = resourceStats.avg.memoryMB + metrics.peakCpuPercent = resourceStats.peak.cpuPercent + metrics.avgCpuPercent = resourceStats.avg.cpuPercent + } + + const resourceSamples = monitor?.stop() || [] + + return { config, metrics, resourceSamples } + } finally { + if (monitor) { + monitor.stop() + } + console.log(`\nStopping ${config.name} server...`) + server.kill('SIGTERM') + await sleep(1000) + } +} + +function printComparison(results: BenchmarkResult[], stressTest: boolean) { + console.log('\n' + '='.repeat(80)) + console.log(stressTest ? 'STRESS TEST RESULTS (Max RPS & Resource Usage)' : 'NATIVE API COMPARISON RESULTS (No tRPC)') + console.log('='.repeat(80)) + + // Header + const headers = ['Metric', ...results.map(r => r.config.name.replace(' + Bun', ''))] + const colWidths = headers.map((h, i) => Math.max(h.length + 2, i === 0 ? 20 : 18)) + + const printRow = (cells: string[]) => { + console.log(cells.map((c, i) => c.padEnd(colWidths[i])).join('')) + } + + printRow(headers) + console.log('-'.repeat(colWidths.reduce((a, b) => a + b, 0))) + + // Performance metrics + printRow(['Avg Latency (ms)', ...results.map(r => r.metrics.avgLatency?.toFixed(2) || 'N/A')]) + printRow(['P95 Latency (ms)', ...results.map(r => r.metrics.p95Latency?.toFixed(2) || 'N/A')]) + printRow(['Total Requests', ...results.map(r => String(r.metrics.totalRequests || 'N/A'))]) + printRow(['Requests/sec', ...results.map(r => r.metrics.requestsPerSecond?.toFixed(1) || 'N/A')]) + printRow(['Errors', ...results.map(r => String(r.metrics.errorRate || 0))]) + + // Resource metrics + console.log('-'.repeat(colWidths.reduce((a, b) => a + b, 0))) + printRow(['Peak Memory (MB)', ...results.map(r => r.metrics.peakMemoryMB?.toFixed(1) || 'N/A')]) + printRow(['Avg Memory (MB)', ...results.map(r => r.metrics.avgMemoryMB?.toFixed(1) || 'N/A')]) + printRow(['Peak CPU (%)', ...results.map(r => r.metrics.peakCpuPercent?.toFixed(1) || 'N/A')]) + printRow(['Avg CPU (%)', ...results.map(r => r.metrics.avgCpuPercent?.toFixed(1) || 'N/A')]) + + // Rankings + console.log('\n' + '='.repeat(80)) + console.log('RANKINGS') + console.log('='.repeat(80)) + + // By RPS (higher is better) + console.log('\nBy Throughput (requests/sec - higher is better):') + const sortedByRps = [...results] + .filter(r => r.metrics.requestsPerSecond !== undefined) + .sort((a, b) => (b.metrics.requestsPerSecond || 0) - (a.metrics.requestsPerSecond || 0)) + + sortedByRps.forEach((r, i) => { + const rps = r.metrics.requestsPerSecond?.toFixed(1) || 'N/A' + const mem = r.metrics.peakMemoryMB?.toFixed(1) || 'N/A' + let comparison = '' + if (i > 0 && sortedByRps[0].metrics.requestsPerSecond) { + const diff = ((sortedByRps[0].metrics.requestsPerSecond! - r.metrics.requestsPerSecond!) / sortedByRps[0].metrics.requestsPerSecond!) * 100 + comparison = ` (-${diff.toFixed(1)}% throughput)` + } + console.log(`${i + 1}. ${r.config.name}: ${rps} req/s, ${mem}MB peak${comparison}`) + }) + + // By latency (lower is better) + console.log('\nBy Latency (avg ms - lower is better):') + const sortedByLatency = [...results] + .filter(r => r.metrics.avgLatency !== undefined) + .sort((a, b) => (a.metrics.avgLatency || 999) - (b.metrics.avgLatency || 999)) + + sortedByLatency.forEach((r, i) => { + const latency = r.metrics.avgLatency?.toFixed(2) || 'N/A' + let comparison = '' + if (i > 0 && sortedByLatency[0].metrics.avgLatency) { + const diff = ((r.metrics.avgLatency! - sortedByLatency[0].metrics.avgLatency!) / sortedByLatency[0].metrics.avgLatency!) * 100 + comparison = ` (+${diff.toFixed(1)}% slower)` + } + console.log(`${i + 1}. ${r.config.name}: ${latency}ms avg${comparison}`) + }) + + // By efficiency (RPS per MB of memory) + console.log('\nBy Efficiency (req/s per MB memory - higher is better):') + const sortedByEfficiency = [...results] + .filter(r => r.metrics.requestsPerSecond !== undefined && r.metrics.peakMemoryMB !== undefined && r.metrics.peakMemoryMB > 0) + .sort((a, b) => { + const effA = (a.metrics.requestsPerSecond || 0) / (a.metrics.peakMemoryMB || 1) + const effB = (b.metrics.requestsPerSecond || 0) / (b.metrics.peakMemoryMB || 1) + return effB - effA + }) + + sortedByEfficiency.forEach((r, i) => { + const eff = ((r.metrics.requestsPerSecond || 0) / (r.metrics.peakMemoryMB || 1)).toFixed(2) + console.log(`${i + 1}. ${r.config.name}: ${eff} req/s/MB`) + }) +} + +async function main() { + console.log('='.repeat(80)) + console.log(STRESS_TEST ? 'Native API STRESS TEST (Finding Max RPS & Resource Limits)' : 'Native API Benchmark (Elysia vs Hono - No tRPC)') + console.log('='.repeat(80)) + + if (STRESS_TEST) { + console.log('\nSTRESS TEST MODE: Ramping up to 200 concurrent users') + console.log('This will take approximately 2.5 minutes per framework\n') + } + + // Ensure results directory exists + if (!existsSync('results')) { + mkdirSync('results') + } + + const results: BenchmarkResult[] = [] + + for (const config of configs) { + try { + const result = await runBenchmark(config, STRESS_TEST) + results.push(result) + } catch (error) { + console.error(`Failed to benchmark ${config.name}:`, error) + } + + // Wait between benchmarks + await sleep(3000) + } + + // Print comparison + printComparison(results, STRESS_TEST) + + // Save results + const timestamp = new Date().toISOString().replace(/[:.]/g, '-') + const prefix = STRESS_TEST ? 'stress-test' : 'native-benchmark' + const resultsFile = `results/${prefix}-${timestamp}.json` + writeFileSync(resultsFile, JSON.stringify(results, null, 2)) + console.log(`\nResults saved to ${resultsFile}`) +} + +main().catch(console.error) diff --git a/packages/trpc-benchmarks/src/runners/run-realistic-benchmark.ts b/packages/trpc-benchmarks/src/runners/run-realistic-benchmark.ts new file mode 100644 index 00000000..8d8373fa --- /dev/null +++ b/packages/trpc-benchmarks/src/runners/run-realistic-benchmark.ts @@ -0,0 +1,347 @@ +#!/usr/bin/env tsx +// Run: npx tsx src/runners/run-realistic-benchmark.ts +// Runs realistic database benchmarks for Express+Node vs Hono+Bun vs Elysia+Bun + +import { spawn, ChildProcess, execSync } from 'node:child_process' +import { mkdir, writeFile } from 'node:fs/promises' +import path from 'node:path' +import { fileURLToPath } from 'node:url' + +const __dirname = path.dirname(fileURLToPath(import.meta.url)) +const ROOT_DIR = path.resolve(__dirname, '../..') + +interface BenchmarkConfig { + name: string + runtime: 'node' | 'bun' + framework: 'express' | 'hono' | 'elysia' + serverScript: string + port: number + command: string[] +} + +const configs: BenchmarkConfig[] = [ + { + name: 'Express + Node + SQLite', + runtime: 'node', + framework: 'express', + serverScript: 'src/servers/express-db-server.ts', + port: 3001, + command: ['npx', 'tsx', 'src/servers/express-db-server.ts'] + }, + { + name: 'Hono + Bun + SQLite', + runtime: 'bun', + framework: 'hono', + serverScript: 'src/servers/hono-db-server.ts', + port: 3002, + command: ['bun', 'run', 'src/servers/hono-db-server.ts'] + }, + { + name: 'Elysia + Bun + SQLite', + runtime: 'bun', + framework: 'elysia', + serverScript: 'src/servers/elysia-db-server.ts', + port: 3003, + command: ['bun', 'run', 'src/servers/elysia-db-server.ts'] + } +] + +function parseArgs() { + const args = process.argv.slice(2) + let duration = '60s' + let maxVus = 20 + + for (let i = 0; i < args.length; i++) { + if (args[i] === '--duration' && args[i + 1]) { + duration = args[i + 1] + i++ + } else if (args[i] === '--max-vus' && args[i + 1]) { + maxVus = parseInt(args[i + 1], 10) + i++ + } + } + + return { duration, maxVus } +} + +function checkBun(): boolean { + try { + execSync('bun --version', { stdio: 'pipe' }) + return true + } catch { + return false + } +} + +function checkElysia(): boolean { + try { + // Check if Elysia can be loaded (requires compatible typebox version) + execSync('bun -e "import(\'elysia\')"', { stdio: 'pipe', timeout: 5000 }) + return true + } catch { + return false + } +} + +async function startServer(config: BenchmarkConfig): Promise { + console.log(`\nStarting ${config.name} server...`) + + const env = { ...process.env, PORT: config.port.toString() } + + const serverProcess = spawn(config.command[0], config.command.slice(1), { + cwd: ROOT_DIR, + env, + stdio: ['ignore', 'pipe', 'pipe'] + }) + + return new Promise((resolve, reject) => { + const timeout = setTimeout(() => { + serverProcess.kill() + reject(new Error(`Server ${config.name} failed to start within 15 seconds`)) + }, 15000) + + serverProcess.stdout?.on('data', (data: Buffer) => { + const output = data.toString() + console.log(`[${config.name}] ${output.trim()}`) + if (output.includes('Server running')) { + clearTimeout(timeout) + setTimeout(() => resolve(serverProcess), 1000) // Extra time for DB connection + } + }) + + serverProcess.stderr?.on('data', (data: Buffer) => { + console.error(`[${config.name}] ERROR: ${data.toString().trim()}`) + }) + + serverProcess.on('error', (err) => { + clearTimeout(timeout) + reject(err) + }) + }) +} + +async function runBenchmark(config: BenchmarkConfig): Promise { + const baseUrl = `http://localhost:${config.port}` + + console.log(`\nRunning realistic benchmark for ${config.name}...`) + console.log(` URL: ${baseUrl}`) + + return new Promise((resolve, reject) => { + let output = '' + + const k6Process = spawn('k6', [ + 'run', + '--env', `BASE_URL=${baseUrl}`, + '--summary-trend-stats', 'avg,min,med,max,p(90),p(95),p(99)', + 'src/k6/realistic-benchmark.js' + ], { + cwd: ROOT_DIR, + env: { ...process.env, PATH: `/home/user/.local/bin:${process.env.PATH}` }, + stdio: ['ignore', 'pipe', 'pipe'] + }) + + k6Process.stdout?.on('data', (data: Buffer) => { + const str = data.toString() + output += str + process.stdout.write(str) + }) + + k6Process.stderr?.on('data', (data: Buffer) => { + const str = data.toString() + output += str + process.stderr.write(str) + }) + + k6Process.on('close', (code) => { + if (code !== 0 && code !== 99) { // 99 = threshold crossed but ran + reject(new Error(`k6 exited with code ${code}`)) + } else { + resolve(output) + } + }) + }) +} + +function extractMetrics(output: string) { + const metrics: Record = {} + + // Extract http_req_duration + const durationMatch = output.match(/http_req_duration[^=]*=\s*avg=([0-9.]+)m?s.*p\(95\)=([0-9.]+)m?s.*p\(99\)=([0-9.]+)m?s/i) + if (durationMatch) { + metrics.httpReqDuration = { + avg: parseFloat(durationMatch[1]), + p95: parseFloat(durationMatch[2]), + p99: parseFloat(durationMatch[3]) + } + } + + // Extract custom DB metrics + const dbMetrics = ['product_list', 'product_get', 'product_search', 'order_create', 'order_get', 'dashboard'] + for (const metric of dbMetrics) { + const regex = new RegExp(`db_${metric}_latency[^=]*=\\s*avg=([0-9.]+)m?s.*p\\(95\\)=([0-9.]+)m?s`, 'i') + const match = output.match(regex) + if (match) { + metrics[metric] = { + avg: parseFloat(match[1]), + p95: parseFloat(match[2]) + } + } + } + + // Extract request count + const reqsMatch = output.match(/http_reqs[^0-9]*([0-9]+)/) + if (reqsMatch) { + metrics.totalRequests = parseInt(reqsMatch[1], 10) + } + + // Extract error rate + const errorMatch = output.match(/error_rate[^0-9]*([0-9.]+)%/) + if (errorMatch) { + metrics.errorRate = parseFloat(errorMatch[1]) + } + + return metrics +} + +async function main() { + console.log('='.repeat(70)) + console.log('Realistic tRPC API Benchmark (with SQLite Database)') + console.log('='.repeat(70)) + + const hasBun = checkBun() + if (!hasBun) { + console.warn('\nWarning: Bun not installed. Hono+Bun and Elysia+Bun benchmarks will be skipped.') + } + + const hasElysia = hasBun && checkElysia() + if (hasBun && !hasElysia) { + console.warn('\nWarning: Elysia has TypeBox compatibility issues. Elysia benchmark will be skipped.') + } + + const results: Array<{ config: BenchmarkConfig; metrics: any; output: string }> = [] + + for (const config of configs) { + if (config.runtime === 'bun' && !hasBun) { + console.log(`\nSkipping ${config.name} (Bun not installed)`) + continue + } + + if (config.framework === 'elysia' && !hasElysia) { + console.log(`\nSkipping ${config.name} (Elysia TypeBox incompatibility)`) + continue + } + + let serverProcess: ChildProcess | null = null + + try { + serverProcess = await startServer(config) + const output = await runBenchmark(config) + const metrics = extractMetrics(output) + results.push({ config, metrics, output }) + } catch (error) { + console.error(`\nError with ${config.name}:`, error) + } finally { + if (serverProcess) { + console.log(`\nStopping ${config.name} server...`) + serverProcess.kill('SIGTERM') + await new Promise((resolve) => setTimeout(resolve, 2000)) + } + } + } + + // Print comparison + if (results.length >= 2) { + console.log('\n') + console.log('='.repeat(70)) + console.log('COMPARISON RESULTS') + console.log('='.repeat(70)) + console.log('') + + const headers = ['Metric', ...results.map(r => r.config.name)] + const rows: string[][] = [] + + // HTTP overall + rows.push([ + 'HTTP Avg Latency', + ...results.map(r => `${r.metrics.httpReqDuration?.avg?.toFixed(2) || 'N/A'}ms`) + ]) + rows.push([ + 'HTTP P95 Latency', + ...results.map(r => `${r.metrics.httpReqDuration?.p95?.toFixed(2) || 'N/A'}ms`) + ]) + + // DB operations + const dbOps = [ + ['Product List', 'product_list'], + ['Product Get', 'product_get'], + ['Product Search', 'product_search'], + ['Order Create', 'order_create'], + ['Dashboard', 'dashboard'] + ] + + for (const [label, key] of dbOps) { + rows.push([ + `${label} Avg`, + ...results.map(r => `${r.metrics[key]?.avg?.toFixed(2) || 'N/A'}ms`) + ]) + } + + rows.push([ + 'Total Requests', + ...results.map(r => r.metrics.totalRequests?.toString() || 'N/A') + ]) + rows.push([ + 'Error Rate', + ...results.map(r => `${r.metrics.errorRate?.toFixed(2) || '0'}%`) + ]) + + // Print table + const colWidths = headers.map((h, i) => + Math.max(h.length, ...rows.map(r => (r[i] || '').length)) + 2 + ) + + console.log(headers.map((h, i) => h.padEnd(colWidths[i])).join('')) + console.log('-'.repeat(colWidths.reduce((a, b) => a + b, 0))) + for (const row of rows) { + console.log(row.map((c, i) => c.padEnd(colWidths[i])).join('')) + } + + // Find the fastest + const sortedByAvg = results + .filter(r => r.metrics.httpReqDuration?.avg) + .sort((a, b) => a.metrics.httpReqDuration.avg - b.metrics.httpReqDuration.avg) + + if (sortedByAvg.length >= 2) { + const fastest = sortedByAvg[0] + const slowest = sortedByAvg[sortedByAvg.length - 1] + + console.log('') + console.log('Rankings (by average latency):') + sortedByAvg.forEach((r, i) => { + const diffFromFastest = ((r.metrics.httpReqDuration.avg - fastest.metrics.httpReqDuration.avg) / + fastest.metrics.httpReqDuration.avg * 100) + if (i === 0) { + console.log(` 1. ${r.config.name} - ${r.metrics.httpReqDuration.avg.toFixed(2)}ms (fastest)`) + } else { + console.log(` ${i + 1}. ${r.config.name} - ${r.metrics.httpReqDuration.avg.toFixed(2)}ms (+${diffFromFastest.toFixed(1)}%)`) + } + }) + } + } + + // Save results + const outputDir = path.join(ROOT_DIR, 'results') + await mkdir(outputDir, { recursive: true }) + const timestamp = new Date().toISOString().replace(/[:.]/g, '-') + await writeFile( + path.join(outputDir, `realistic-benchmark-${timestamp}.json`), + JSON.stringify(results.map(r => ({ config: r.config, metrics: r.metrics })), null, 2) + ) + + console.log(`\nResults saved to results/realistic-benchmark-${timestamp}.json`) +} + +main().catch((error) => { + console.error('Fatal error:', error) + process.exit(1) +}) diff --git a/packages/trpc-benchmarks/src/runners/run-stress-test.ts b/packages/trpc-benchmarks/src/runners/run-stress-test.ts new file mode 100644 index 00000000..d9ce20e0 --- /dev/null +++ b/packages/trpc-benchmarks/src/runners/run-stress-test.ts @@ -0,0 +1,268 @@ +// Stress Test Runner using autocannon (no k6 required) +// Run: npx tsx src/runners/run-stress-test.ts + +import { spawn, ChildProcess } from 'child_process' +import { existsSync, mkdirSync, writeFileSync } from 'fs' + +interface ServerConfig { + name: string + runtime: 'bun' | 'node' + framework: string + port: number + command: string[] + // Endpoint to test (defaults to /api/products for native, /trpc/product.list for tRPC) + endpoint?: string + // Whether this uses tRPC (needs special URL encoding) + isTrpc?: boolean +} + +interface StressResult { + config: ServerConfig + metrics: { + requestsPerSecond: number + avgLatencyMs: number + p99LatencyMs: number + totalRequests: number + errors: number + duration: number + } +} + +const configs: ServerConfig[] = [ + { + name: 'Express Native + Node', + runtime: 'node', + framework: 'express-native', + port: 3007, + command: ['npx', 'tsx', 'src/servers/express-native-server.ts'] + }, + { + name: 'Express + tRPC + Bun', + runtime: 'bun', + framework: 'express-trpc', + port: 3008, + command: ['bun', 'run', 'src/servers/express-trpc-bun-server.ts'], + isTrpc: true + }, + { + name: 'Hono Native + Bun', + runtime: 'bun', + framework: 'hono-native', + port: 3005, + command: ['bun', 'run', 'src/servers/hono-native-server.ts'] + } +] + +async function sleep(ms: number): Promise { + return new Promise(resolve => setTimeout(resolve, ms)) +} + +async function waitForServer(url: string, maxAttempts = 30): Promise { + for (let i = 0; i < maxAttempts; i++) { + try { + const response = await fetch(`${url}/health`) + if (response.ok) return true + } catch { + // Server not ready + } + await sleep(500) + } + return false +} + +function startServer(config: ServerConfig): ChildProcess { + const env = { ...process.env, PORT: String(config.port) } + const proc = spawn(config.command[0], config.command.slice(1), { + env, + stdio: ['ignore', 'pipe', 'pipe'], + cwd: process.cwd() + }) + + proc.stdout?.on('data', (data) => { + console.log(`[${config.name}] ${data.toString().trim()}`) + }) + + proc.stderr?.on('data', (data) => { + const msg = data.toString().trim() + if (msg && !msg.includes('ExperimentalWarning')) { + console.error(`[${config.name}] ${msg}`) + } + }) + + return proc +} + +async function runAutocannon(url: string, duration: number, connections: number): Promise { + return new Promise((resolve, reject) => { + const args = [ + 'autocannon', + '-c', String(connections), // concurrent connections + '-d', String(duration), // duration in seconds + '-j', // JSON output + url + ] + + const proc = spawn('npx', args, { cwd: process.cwd() }) + let output = '' + + proc.stdout?.on('data', (data) => { + output += data.toString() + }) + + proc.stderr?.on('data', (data) => { + const msg = data.toString() + if (!msg.includes('Running')) { + console.log(` [autocannon] ${msg.trim()}`) + } + }) + + proc.on('close', (code) => { + if (code === 0) { + try { + resolve(JSON.parse(output)) + } catch { + reject(new Error('Failed to parse autocannon output')) + } + } else { + reject(new Error(`autocannon exited with code ${code}`)) + } + }) + }) +} + +function getTrpcUrl(baseUrl: string, procedure: string, input: object): string { + // tRPC uses SuperJSON encoding for input + // Format: /trpc/procedure?input=encodedJSON + const encodedInput = encodeURIComponent(JSON.stringify({ json: input })) + return `${baseUrl}/trpc/${procedure}?input=${encodedInput}` +} + +async function runStressTest(config: ServerConfig): Promise { + console.log(`\n${'='.repeat(60)}`) + console.log(`Starting ${config.name}...`) + + const server = startServer(config) + + try { + const serverUrl = `http://localhost:${config.port}` + const ready = await waitForServer(serverUrl) + + if (!ready) { + console.error(` Server failed to start`) + return null + } + + // Determine endpoint URL based on server type + let testUrl: string + if (config.isTrpc) { + // tRPC endpoint for product list + testUrl = getTrpcUrl(serverUrl, 'product.list', { page: 1, pageSize: 20 }) + console.log(` Server ready, running stress test...`) + console.log(` Testing tRPC product.list with 200 connections for 30s`) + } else { + testUrl = `${serverUrl}/api/products` + console.log(` Server ready, running stress test...`) + console.log(` Testing /api/products endpoint with 200 connections for 30s`) + } + + // Run autocannon with high concurrency + const result = await runAutocannon(testUrl, 30, 200) + + const metrics = { + requestsPerSecond: result.requests?.average || 0, + avgLatencyMs: result.latency?.average || 0, + p99LatencyMs: result.latency?.p99 || 0, + totalRequests: result.requests?.total || 0, + errors: result.errors || 0, + duration: result.duration || 30 + } + + console.log(`\n Results:`) + console.log(` Requests/sec: ${metrics.requestsPerSecond.toFixed(1)}`) + console.log(` Avg Latency: ${metrics.avgLatencyMs.toFixed(2)}ms`) + console.log(` P99 Latency: ${metrics.p99LatencyMs.toFixed(2)}ms`) + console.log(` Total Reqs: ${metrics.totalRequests}`) + console.log(` Errors: ${metrics.errors}`) + + return { config, metrics } + } catch (error) { + console.error(` Error: ${error}`) + return null + } finally { + console.log(` Stopping server...`) + server.kill('SIGTERM') + await sleep(1000) + } +} + +function printComparison(results: StressResult[]) { + console.log('\n' + '='.repeat(80)) + console.log('STRESS TEST RESULTS - Max RPS Comparison (200 concurrent connections)') + console.log('='.repeat(80)) + + // Sort by RPS + const sorted = [...results].sort((a, b) => b.metrics.requestsPerSecond - a.metrics.requestsPerSecond) + + console.log('\n+--------------------------+-------------+-------------+-------------+-------------+') + console.log('| Framework | Requests/s | Avg Latency | P99 Latency | Total Reqs |') + console.log('+--------------------------+-------------+-------------+-------------+-------------+') + + sorted.forEach((r, i) => { + const name = r.config.name.padEnd(24) + const rps = r.metrics.requestsPerSecond.toFixed(1).padStart(9) + const avg = (r.metrics.avgLatencyMs.toFixed(1) + 'ms').padStart(9) + const p99 = (r.metrics.p99LatencyMs.toFixed(1) + 'ms').padStart(9) + const total = String(r.metrics.totalRequests).padStart(9) + const medal = i === 0 ? ' *' : '' + console.log(`| ${name} | ${rps}${medal} | ${avg} | ${p99} | ${total} |`) + }) + + console.log('+--------------------------+-------------+-------------+-------------+-------------+') + + // Performance comparison + if (sorted.length >= 2) { + console.log('\nPerformance Analysis:') + const best = sorted[0] + sorted.slice(1).forEach(r => { + const diff = ((best.metrics.requestsPerSecond - r.metrics.requestsPerSecond) / r.metrics.requestsPerSecond * 100).toFixed(1) + console.log(` ${best.config.name} is ${diff}% faster than ${r.config.name}`) + }) + } +} + +async function main() { + console.log('='.repeat(80)) + console.log('STRESS TEST: Express Native vs Express+tRPC vs Hono Native') + console.log('='.repeat(80)) + console.log('\nConfiguration:') + console.log(' - 200 concurrent connections') + console.log(' - 30 second duration per framework') + console.log(' - Testing product list endpoint (native REST or tRPC)') + + if (!existsSync('results')) { + mkdirSync('results') + } + + const results: StressResult[] = [] + + for (const config of configs) { + const result = await runStressTest(config) + if (result) { + results.push(result) + } + await sleep(2000) + } + + if (results.length > 0) { + printComparison(results) + + const timestamp = new Date().toISOString().replace(/[:.]/g, '-') + const resultsFile = `results/stress-test-autocannon-${timestamp}.json` + writeFileSync(resultsFile, JSON.stringify(results, null, 2)) + console.log(`\nResults saved to ${resultsFile}`) + } else { + console.log('\nNo successful benchmark results') + } +} + +main().catch(console.error) diff --git a/packages/trpc-benchmarks/src/servers/elysia-db-server.ts b/packages/trpc-benchmarks/src/servers/elysia-db-server.ts new file mode 100644 index 00000000..52b6ecfa --- /dev/null +++ b/packages/trpc-benchmarks/src/servers/elysia-db-server.ts @@ -0,0 +1,47 @@ +// Run with Bun: bun run src/servers/elysia-db-server.ts +// Elysia + Bun server with tRPC and Prisma/SQLite database (manual integration) +import { Elysia } from 'elysia' +import { fetchRequestHandler } from '@trpc/server/adapters/fetch' +import { prisma } from '../db/client.js' +import { dbRouter } from '../shared/db-router.js' + +const PORT = Number(process.env.PORT) || 3003 + +const app = new Elysia() + .get('/health', () => ({ + status: 'ok', + runtime: 'bun', + framework: 'elysia', + database: 'sqlite' + })) + .all('/trpc/*', async ({ request }) => { + return fetchRequestHandler({ + endpoint: '/trpc', + req: request, + router: dbRouter, + createContext: () => ({ prisma }) + }) + }) + .listen(PORT) + +console.log(`[Elysia+Bun+SQLite] Server running on http://localhost:${app.server?.port}`) +console.log(`[Elysia+Bun+SQLite] tRPC endpoint: http://localhost:${app.server?.port}/trpc`) +console.log(`[Elysia+Bun+SQLite] Bun version: ${Bun.version}`) +console.log(`[Elysia+Bun+SQLite] PID: ${process.pid}`) + +// Graceful shutdown +process.on('SIGTERM', async () => { + console.log('[Elysia+Bun+SQLite] SIGTERM received, shutting down...') + await prisma.$disconnect() + app.stop() + process.exit(0) +}) + +process.on('SIGINT', async () => { + console.log('[Elysia+Bun+SQLite] SIGINT received, shutting down...') + await prisma.$disconnect() + app.stop() + process.exit(0) +}) + +export { app } diff --git a/packages/trpc-benchmarks/src/servers/elysia-native-server.ts b/packages/trpc-benchmarks/src/servers/elysia-native-server.ts new file mode 100644 index 00000000..0eca0118 --- /dev/null +++ b/packages/trpc-benchmarks/src/servers/elysia-native-server.ts @@ -0,0 +1,257 @@ +// Native Elysia server without tRPC - using Elysia's native routing +// Run: bun run src/servers/elysia-native-server.ts + +import { Elysia, t } from 'elysia' +import { prisma } from '../db/client.js' + +const PORT = Number(process.env.PORT) || 3004 + +const app = new Elysia() + .get('/health', () => ({ + status: 'ok', + runtime: 'bun', + framework: 'elysia-native', + database: 'sqlite' + })) + + // Product routes + .get('/api/products', async ({ query }) => { + const limit = Number(query.limit) || 20 + const offset = Number(query.offset) || 0 + const categoryId = query.categoryId + + const where = categoryId ? { categoryId } : {} + + const [products, total] = await Promise.all([ + prisma.product.findMany({ + where, + take: limit, + skip: offset, + include: { category: true } + }), + prisma.product.count({ where }) + ]) + + return { products, total, limit, offset } + }) + + .get('/api/products/search', async ({ query }) => { + const q = query.q || '' + const limit = Number(query.limit) || 20 + + const products = await prisma.product.findMany({ + where: { + OR: [ + { name: { contains: q } }, + { description: { contains: q } } + ] + }, + take: limit, + include: { category: true } + }) + + return { products, query: q } + }) + + .get('/api/products/:id', async ({ params, set }) => { + const product = await prisma.product.findUnique({ + where: { id: params.id }, + include: { + category: true, + reviews: { + take: 5, + orderBy: { createdAt: 'desc' }, + include: { user: { select: { id: true, name: true } } } + } + } + }) + + if (!product) { + set.status = 404 + return { error: 'Product not found' } + } + + return product + }) + + // Category routes + .get('/api/categories', async () => { + const categories = await prisma.category.findMany({ + include: { + _count: { select: { products: true } } + } + }) + return categories + }) + + // User routes + .get('/api/users/:id', async ({ params, set }) => { + const user = await prisma.user.findUnique({ + where: { id: params.id }, + select: { + id: true, + email: true, + name: true, + createdAt: true, + _count: { select: { orders: true, reviews: true } } + } + }) + + if (!user) { + set.status = 404 + return { error: 'User not found' } + } + + return user + }) + + .get('/api/users/:id/orders', async ({ params, query }) => { + const limit = Number(query.limit) || 10 + + const orders = await prisma.order.findMany({ + where: { userId: params.id }, + take: limit, + orderBy: { createdAt: 'desc' }, + include: { + items: { + include: { product: { select: { id: true, name: true, price: true } } } + } + } + }) + + return orders + }) + + // Order routes + .post('/api/orders', async ({ body, set }) => { + const { userId, items } = body as { userId: string; items: { productId: string; quantity: number }[] } + + // Validate stock and calculate total + let total = 0 + const productIds = items.map(i => i.productId) + const products = await prisma.product.findMany({ + where: { id: { in: productIds } } + }) + + const productMap = new Map(products.map(p => [p.id, p])) + + for (const item of items) { + const product = productMap.get(item.productId) + if (!product) { + set.status = 400 + return { error: `Product ${item.productId} not found` } + } + if (product.stock < item.quantity) { + set.status = 400 + return { error: `Insufficient stock for ${product.name}` } + } + total += product.price * item.quantity + } + + // Create order with transaction + const order = await prisma.$transaction(async (tx) => { + const newOrder = await tx.order.create({ + data: { + userId, + total, + status: 'pending', + items: { + create: items.map(item => ({ + productId: item.productId, + quantity: item.quantity, + price: productMap.get(item.productId)!.price + })) + } + }, + include: { items: true } + }) + + // Update stock + for (const item of items) { + await tx.product.update({ + where: { id: item.productId }, + data: { stock: { decrement: item.quantity } } + }) + } + + return newOrder + }) + + return order + }) + + .get('/api/orders/:id', async ({ params, set }) => { + const order = await prisma.order.findUnique({ + where: { id: params.id }, + include: { + user: { select: { id: true, name: true, email: true } }, + items: { + include: { product: { select: { id: true, name: true, price: true } } } + } + } + }) + + if (!order) { + set.status = 404 + return { error: 'Order not found' } + } + + return order + }) + + // Analytics routes + .get('/api/analytics/dashboard', async () => { + const [totalUsers, totalProducts, totalOrders, revenue] = await Promise.all([ + prisma.user.count(), + prisma.product.count(), + prisma.order.count(), + prisma.order.aggregate({ _sum: { total: true } }) + ]) + + return { + totalUsers, + totalProducts, + totalOrders, + totalRevenue: revenue._sum.total || 0 + } + }) + + .get('/api/analytics/revenue-by-category', async () => { + const categories = await prisma.category.findMany({ + include: { + products: { + include: { + orderItems: true + } + } + } + }) + + const result = categories.map(cat => ({ + categoryId: cat.id, + categoryName: cat.name, + revenue: cat.products.reduce((sum, prod) => + sum + prod.orderItems.reduce((itemSum, item) => + itemSum + (item.price * item.quantity), 0), 0), + productCount: cat.products.length + })) + + return result + }) + + .listen(PORT) + +console.log(`[Elysia-Native+Bun+SQLite] Server running on http://localhost:${PORT}`) +console.log(`[Elysia-Native+Bun+SQLite] API endpoint: http://localhost:${PORT}/api`) +console.log(`[Elysia-Native+Bun+SQLite] Bun version: ${Bun.version}`) +console.log(`[Elysia-Native+Bun+SQLite] PID: ${process.pid}`) + +process.on('SIGTERM', () => { + console.log('[Elysia-Native+Bun+SQLite] SIGTERM received, shutting down...') + process.exit(0) +}) + +process.on('SIGINT', () => { + console.log('[Elysia-Native+Bun+SQLite] SIGINT received, shutting down...') + process.exit(0) +}) diff --git a/packages/trpc-benchmarks/src/servers/elysia-optimized-server.ts b/packages/trpc-benchmarks/src/servers/elysia-optimized-server.ts new file mode 100644 index 00000000..b178d37d --- /dev/null +++ b/packages/trpc-benchmarks/src/servers/elysia-optimized-server.ts @@ -0,0 +1,317 @@ +// Optimized Elysia server using Elysia-native patterns +// Run: bun run src/servers/elysia-optimized-server.ts +// +// Elysia optimizations applied: +// 1. Using .group() for route organization +// 2. Using TypeBox schema validation (compile-time type checking) +// 3. Using Elysia's error() for standardized errors +// 4. Using derive for shared context +// 5. Avoiding manual set.status where possible + +import { Elysia, t, error } from 'elysia' +import { prisma } from '../db/client.js' + +const PORT = Number(process.env.PORT) || 3004 + +// Create the optimized Elysia app +const app = new Elysia() + // Health check + .get('/health', () => ({ + status: 'ok', + runtime: 'bun', + framework: 'elysia-optimized', + database: 'sqlite' + })) + + // Product routes group + .group('/api/products', (app) => + app + // List products + .get('/', async ({ query }) => { + const limit = query.limit ?? 20 + const offset = query.offset ?? 0 + const categoryId = query.categoryId + + const where = categoryId ? { categoryId } : {} + + const [products, total] = await Promise.all([ + prisma.product.findMany({ + where, + take: limit, + skip: offset, + include: { category: true } + }), + prisma.product.count({ where }) + ]) + + return { products, total, limit, offset } + }, { + query: t.Object({ + limit: t.Optional(t.Numeric({ default: 20 })), + offset: t.Optional(t.Numeric({ default: 0 })), + categoryId: t.Optional(t.String()) + }) + }) + + // Search products + .get('/search', async ({ query }) => { + const q = query.q ?? '' + const limit = query.limit ?? 20 + + const products = await prisma.product.findMany({ + where: { + OR: [ + { name: { contains: q } }, + { description: { contains: q } } + ] + }, + take: limit, + include: { category: true } + }) + + return { products, query: q } + }, { + query: t.Object({ + q: t.Optional(t.String({ default: '' })), + limit: t.Optional(t.Numeric({ default: 20 })) + }) + }) + + // Get single product + .get('/:id', async ({ params }) => { + const product = await prisma.product.findUnique({ + where: { id: params.id }, + include: { + category: true, + reviews: { + take: 5, + orderBy: { createdAt: 'desc' }, + include: { user: { select: { id: true, name: true } } } + } + } + }) + + if (!product) { + return error(404, { error: 'Product not found' }) + } + + return product + }, { + params: t.Object({ + id: t.String() + }) + }) + ) + + // Category routes group + .group('/api/categories', (app) => + app + .get('/', async () => { + const categories = await prisma.category.findMany({ + include: { + _count: { select: { products: true } } + } + }) + return categories + }) + ) + + // User routes group + .group('/api/users', (app) => + app + .get('/:id', async ({ params }) => { + const user = await prisma.user.findUnique({ + where: { id: params.id }, + select: { + id: true, + email: true, + name: true, + createdAt: true, + _count: { select: { orders: true, reviews: true } } + } + }) + + if (!user) { + return error(404, { error: 'User not found' }) + } + + return user + }, { + params: t.Object({ + id: t.String() + }) + }) + + .get('/:id/orders', async ({ params, query }) => { + const limit = query.limit ?? 10 + + const orders = await prisma.order.findMany({ + where: { userId: params.id }, + take: limit, + orderBy: { createdAt: 'desc' }, + include: { + items: { + include: { product: { select: { id: true, name: true, price: true } } } + } + } + }) + + return orders + }, { + params: t.Object({ + id: t.String() + }), + query: t.Object({ + limit: t.Optional(t.Numeric({ default: 10 })) + }) + }) + ) + + // Order routes group + .group('/api/orders', (app) => + app + .post('/', async ({ body }) => { + const { userId, items } = body + + // Validate stock and calculate total + let total = 0 + const productIds = items.map(i => i.productId) + const products = await prisma.product.findMany({ + where: { id: { in: productIds } } + }) + + const productMap = new Map(products.map(p => [p.id, p])) + + for (const item of items) { + const product = productMap.get(item.productId) + if (!product) { + return error(400, { error: `Product ${item.productId} not found` }) + } + if (product.stock < item.quantity) { + return error(400, { error: `Insufficient stock for ${product.name}` }) + } + total += product.price * item.quantity + } + + // Create order with transaction + const order = await prisma.$transaction(async (tx) => { + const newOrder = await tx.order.create({ + data: { + userId, + total, + status: 'pending', + items: { + create: items.map(item => ({ + productId: item.productId, + quantity: item.quantity, + price: productMap.get(item.productId)!.price + })) + } + }, + include: { items: true } + }) + + // Update stock + for (const item of items) { + await tx.product.update({ + where: { id: item.productId }, + data: { stock: { decrement: item.quantity } } + }) + } + + return newOrder + }) + + return order + }, { + body: t.Object({ + userId: t.String(), + items: t.Array(t.Object({ + productId: t.String(), + quantity: t.Number() + })) + }) + }) + + .get('/:id', async ({ params }) => { + const order = await prisma.order.findUnique({ + where: { id: params.id }, + include: { + user: { select: { id: true, name: true, email: true } }, + items: { + include: { product: { select: { id: true, name: true, price: true } } } + } + } + }) + + if (!order) { + return error(404, { error: 'Order not found' }) + } + + return order + }, { + params: t.Object({ + id: t.String() + }) + }) + ) + + // Analytics routes group + .group('/api/analytics', (app) => + app + .get('/dashboard', async () => { + const [totalUsers, totalProducts, totalOrders, revenue] = await Promise.all([ + prisma.user.count(), + prisma.product.count(), + prisma.order.count(), + prisma.order.aggregate({ _sum: { total: true } }) + ]) + + return { + totalUsers, + totalProducts, + totalOrders, + totalRevenue: revenue._sum.total || 0 + } + }) + + .get('/revenue-by-category', async () => { + const categories = await prisma.category.findMany({ + include: { + products: { + include: { + orderItems: true + } + } + } + }) + + const result = categories.map(cat => ({ + categoryId: cat.id, + categoryName: cat.name, + revenue: cat.products.reduce((sum, prod) => + sum + prod.orderItems.reduce((itemSum, item) => + itemSum + (item.price * item.quantity), 0), 0), + productCount: cat.products.length + })) + + return result + }) + ) + + .listen(PORT) + +console.log(`[Elysia-Optimized+Bun+SQLite] Server running on http://localhost:${PORT}`) +console.log(`[Elysia-Optimized+Bun+SQLite] API endpoint: http://localhost:${PORT}/api`) +console.log(`[Elysia-Optimized+Bun+SQLite] Bun version: ${Bun.version}`) +console.log(`[Elysia-Optimized+Bun+SQLite] PID: ${process.pid}`) + +process.on('SIGTERM', () => { + console.log('[Elysia-Optimized+Bun+SQLite] SIGTERM received, shutting down...') + process.exit(0) +}) + +process.on('SIGINT', () => { + console.log('[Elysia-Optimized+Bun+SQLite] SIGINT received, shutting down...') + process.exit(0) +}) diff --git a/packages/trpc-benchmarks/src/servers/elysia-server.ts b/packages/trpc-benchmarks/src/servers/elysia-server.ts new file mode 100644 index 00000000..0fd2eca3 --- /dev/null +++ b/packages/trpc-benchmarks/src/servers/elysia-server.ts @@ -0,0 +1,43 @@ +// Run with Bun: bun run src/servers/elysia-server.ts +// Elysia + Bun server with tRPC (manual integration) +import { Elysia } from 'elysia' +import { fetchRequestHandler } from '@trpc/server/adapters/fetch' +import { appRouter } from '../shared/router.js' + +const PORT = Number(process.env.PORT) || 3003 + +const app = new Elysia() + .get('/health', () => ({ + status: 'ok', + runtime: 'bun', + framework: 'elysia' + })) + .all('/trpc/*', async ({ request }) => { + return fetchRequestHandler({ + endpoint: '/trpc', + req: request, + router: appRouter, + createContext: () => ({}) + }) + }) + .listen(PORT) + +console.log(`[Elysia+Bun] Server running on http://localhost:${app.server?.port}`) +console.log(`[Elysia+Bun] tRPC endpoint: http://localhost:${app.server?.port}/trpc`) +console.log(`[Elysia+Bun] Bun version: ${Bun.version}`) +console.log(`[Elysia+Bun] PID: ${process.pid}`) + +// Graceful shutdown +process.on('SIGTERM', () => { + console.log('[Elysia+Bun] SIGTERM received, shutting down...') + app.stop() + process.exit(0) +}) + +process.on('SIGINT', () => { + console.log('[Elysia+Bun] SIGINT received, shutting down...') + app.stop() + process.exit(0) +}) + +export { app } diff --git a/packages/trpc-benchmarks/src/servers/express-db-server.ts b/packages/trpc-benchmarks/src/servers/express-db-server.ts new file mode 100644 index 00000000..c80a8b14 --- /dev/null +++ b/packages/trpc-benchmarks/src/servers/express-db-server.ts @@ -0,0 +1,51 @@ +// Run: npx tsx src/servers/express-db-server.ts +// Express + Node.js server with Prisma/SQLite database +import * as trpcExpress from '@trpc/server/adapters/express' +import express from 'express' +import { prisma } from '../db/client.js' +import { dbRouter, type Context } from '../shared/db-router.js' + +const PORT = Number(process.env.PORT) || 3001 + +const app = express() + +// Minimal middleware for benchmarking +app.use(express.json({ limit: '1mb' })) +app.disable('x-powered-by') + +// Health check outside of tRPC +app.get('/health', (_req, res) => { + res.json({ status: 'ok', runtime: 'node', framework: 'express', database: 'sqlite' }) +}) + +// tRPC endpoint with Prisma context +app.use( + '/trpc', + trpcExpress.createExpressMiddleware({ + router: dbRouter, + createContext: (): Context => ({ prisma }) + }) +) + +// Start server +const server = app.listen(PORT, () => { + console.log(`[Express+Node+SQLite] Server running on http://localhost:${PORT}`) + console.log(`[Express+Node+SQLite] tRPC endpoint: http://localhost:${PORT}/trpc`) + console.log(`[Express+Node+SQLite] Node version: ${process.version}`) + console.log(`[Express+Node+SQLite] PID: ${process.pid}`) +}) + +// Graceful shutdown +const shutdown = async () => { + console.log('[Express+Node+SQLite] Shutting down...') + await prisma.$disconnect() + server.close(() => { + console.log('[Express+Node+SQLite] Server closed') + process.exit(0) + }) +} + +process.on('SIGTERM', shutdown) +process.on('SIGINT', shutdown) + +export { app, server } diff --git a/packages/trpc-benchmarks/src/servers/express-native-server.ts b/packages/trpc-benchmarks/src/servers/express-native-server.ts new file mode 100644 index 00000000..2a3fa4ee --- /dev/null +++ b/packages/trpc-benchmarks/src/servers/express-native-server.ts @@ -0,0 +1,263 @@ +// Native Express server without tRPC - using Express routing +// Run: npx tsx src/servers/express-native-server.ts + +import express from 'express' +import { prisma } from '../db/client.js' + +const PORT = Number(process.env.PORT) || 3007 +const app = express() + +app.use(express.json()) + +app.get('/health', (_req, res) => { + res.json({ + status: 'ok', + runtime: 'node', + framework: 'express-native', + database: 'sqlite' + }) +}) + +// Product routes +app.get('/api/products', async (req, res) => { + const limit = Number(req.query.limit) || 20 + const offset = Number(req.query.offset) || 0 + const categoryId = req.query.categoryId as string | undefined + + const where = categoryId ? { categoryId } : {} + + const [products, total] = await Promise.all([ + prisma.product.findMany({ + where, + take: limit, + skip: offset, + include: { category: true } + }), + prisma.product.count({ where }) + ]) + + res.json({ products, total, limit, offset }) +}) + +app.get('/api/products/search', async (req, res) => { + const q = (req.query.q as string) || '' + const limit = Number(req.query.limit) || 20 + + const products = await prisma.product.findMany({ + where: { + OR: [ + { name: { contains: q } }, + { description: { contains: q } } + ] + }, + take: limit, + include: { category: true } + }) + + res.json({ products, query: q }) +}) + +app.get('/api/products/:id', async (req, res) => { + const id = req.params.id + + const product = await prisma.product.findUnique({ + where: { id }, + include: { + category: true, + reviews: { + take: 5, + orderBy: { createdAt: 'desc' }, + include: { user: { select: { id: true, name: true } } } + } + } + }) + + if (!product) { + return res.status(404).json({ error: 'Product not found' }) + } + + res.json(product) +}) + +// Category routes +app.get('/api/categories', async (_req, res) => { + const categories = await prisma.category.findMany({ + include: { + _count: { select: { products: true } } + } + }) + res.json(categories) +}) + +// User routes +app.get('/api/users/:id', async (req, res) => { + const id = req.params.id + + const user = await prisma.user.findUnique({ + where: { id }, + select: { + id: true, + email: true, + name: true, + createdAt: true, + _count: { select: { orders: true, reviews: true } } + } + }) + + if (!user) { + return res.status(404).json({ error: 'User not found' }) + } + + res.json(user) +}) + +app.get('/api/users/:id/orders', async (req, res) => { + const id = req.params.id + const limit = Number(req.query.limit) || 10 + + const orders = await prisma.order.findMany({ + where: { userId: id }, + take: limit, + orderBy: { createdAt: 'desc' }, + include: { + items: { + include: { product: { select: { id: true, name: true, price: true } } } + } + } + }) + + res.json(orders) +}) + +// Order routes +app.post('/api/orders', async (req, res) => { + const { userId, items } = req.body as { userId: string; items: { productId: string; quantity: number }[] } + + // Validate stock and calculate total + let total = 0 + const productIds = items.map(i => i.productId) + const products = await prisma.product.findMany({ + where: { id: { in: productIds } } + }) + + const productMap = new Map(products.map(p => [p.id, p])) + + for (const item of items) { + const product = productMap.get(item.productId) + if (!product) { + return res.status(400).json({ error: `Product ${item.productId} not found` }) + } + if (product.stock < item.quantity) { + return res.status(400).json({ error: `Insufficient stock for ${product.name}` }) + } + total += product.price * item.quantity + } + + // Create order with transaction + const order = await prisma.$transaction(async (tx) => { + const newOrder = await tx.order.create({ + data: { + userId, + total, + status: 'pending', + items: { + create: items.map(item => ({ + productId: item.productId, + quantity: item.quantity, + price: productMap.get(item.productId)!.price + })) + } + }, + include: { items: true } + }) + + // Update stock + for (const item of items) { + await tx.product.update({ + where: { id: item.productId }, + data: { stock: { decrement: item.quantity } } + }) + } + + return newOrder + }) + + res.json(order) +}) + +app.get('/api/orders/:id', async (req, res) => { + const id = req.params.id + + const order = await prisma.order.findUnique({ + where: { id }, + include: { + user: { select: { id: true, name: true, email: true } }, + items: { + include: { product: { select: { id: true, name: true, price: true } } } + } + } + }) + + if (!order) { + return res.status(404).json({ error: 'Order not found' }) + } + + res.json(order) +}) + +// Analytics routes +app.get('/api/analytics/dashboard', async (_req, res) => { + const [totalUsers, totalProducts, totalOrders, revenue] = await Promise.all([ + prisma.user.count(), + prisma.product.count(), + prisma.order.count(), + prisma.order.aggregate({ _sum: { total: true } }) + ]) + + res.json({ + totalUsers, + totalProducts, + totalOrders, + totalRevenue: revenue._sum.total || 0 + }) +}) + +app.get('/api/analytics/revenue-by-category', async (_req, res) => { + const categories = await prisma.category.findMany({ + include: { + products: { + include: { + orderItems: true + } + } + } + }) + + const result = categories.map(cat => ({ + categoryId: cat.id, + categoryName: cat.name, + revenue: cat.products.reduce((sum, prod) => + sum + prod.orderItems.reduce((itemSum, item) => + itemSum + (item.price * item.quantity), 0), 0), + productCount: cat.products.length + })) + + res.json(result) +}) + +const server = app.listen(PORT, () => { + console.log(`[Express-Native+Node+SQLite] Server running on http://localhost:${PORT}`) + console.log(`[Express-Native+Node+SQLite] API endpoint: http://localhost:${PORT}/api`) + console.log(`[Express-Native+Node+SQLite] Node version: ${process.version}`) + console.log(`[Express-Native+Node+SQLite] PID: ${process.pid}`) +}) + +process.on('SIGTERM', () => { + console.log('[Express-Native+Node+SQLite] SIGTERM received, shutting down...') + server.close(() => process.exit(0)) +}) + +process.on('SIGINT', () => { + console.log('[Express-Native+Node+SQLite] SIGINT received, shutting down...') + server.close(() => process.exit(0)) +}) diff --git a/packages/trpc-benchmarks/src/servers/express-server.ts b/packages/trpc-benchmarks/src/servers/express-server.ts new file mode 100644 index 00000000..cc0c4495 --- /dev/null +++ b/packages/trpc-benchmarks/src/servers/express-server.ts @@ -0,0 +1,56 @@ +// Run: npx tsx src/servers/express-server.ts +// Or: node --import tsx src/servers/express-server.ts +import * as trpcExpress from '@trpc/server/adapters/express' +import express from 'express' +import { appRouter } from '../shared/router.js' + +const PORT = Number(process.env.PORT) || 3001 + +const app = express() + +// Minimal middleware for benchmarking (no unnecessary overhead) +app.use(express.json({ limit: '1mb' })) + +// Disable x-powered-by header +app.disable('x-powered-by') + +// Health check outside of tRPC +app.get('/health', (_req, res) => { + res.json({ status: 'ok', runtime: 'node', framework: 'express' }) +}) + +// tRPC endpoint +app.use( + '/trpc', + trpcExpress.createExpressMiddleware({ + router: appRouter, + createContext: () => ({}) + }) +) + +// Start server +const server = app.listen(PORT, () => { + console.log(`[Express+Node] Server running on http://localhost:${PORT}`) + console.log(`[Express+Node] tRPC endpoint: http://localhost:${PORT}/trpc`) + console.log(`[Express+Node] Node version: ${process.version}`) + console.log(`[Express+Node] PID: ${process.pid}`) +}) + +// Graceful shutdown +process.on('SIGTERM', () => { + console.log('[Express+Node] SIGTERM received, shutting down...') + server.close(() => { + console.log('[Express+Node] Server closed') + process.exit(0) + }) +}) + +process.on('SIGINT', () => { + console.log('[Express+Node] SIGINT received, shutting down...') + server.close(() => { + console.log('[Express+Node] Server closed') + process.exit(0) + }) +}) + +export { app, server } diff --git a/packages/trpc-benchmarks/src/servers/express-trpc-bun-server.ts b/packages/trpc-benchmarks/src/servers/express-trpc-bun-server.ts new file mode 100644 index 00000000..6ccbd1be --- /dev/null +++ b/packages/trpc-benchmarks/src/servers/express-trpc-bun-server.ts @@ -0,0 +1,56 @@ +// Run: bun run src/servers/express-trpc-bun-server.ts +// Express + tRPC running on Bun runtime with Prisma/SQLite database +import * as trpcExpress from '@trpc/server/adapters/express' +import express from 'express' +import { prisma } from '../db/client.js' +import { dbRouter, type Context } from '../shared/db-router.js' + +const PORT = Number(process.env.PORT) || 3008 + +const app = express() + +// Minimal middleware for benchmarking +app.use(express.json({ limit: '1mb' })) +app.disable('x-powered-by') + +// Health check outside of tRPC +app.get('/health', (_req, res) => { + res.json({ + status: 'ok', + runtime: 'bun', + framework: 'express-trpc', + database: 'sqlite' + }) +}) + +// tRPC endpoint with Prisma context +app.use( + '/trpc', + trpcExpress.createExpressMiddleware({ + router: dbRouter, + createContext: (): Context => ({ prisma }) + }) +) + +// Start server +const server = app.listen(PORT, () => { + console.log(`[Express+tRPC+Bun+SQLite] Server running on http://localhost:${PORT}`) + console.log(`[Express+tRPC+Bun+SQLite] tRPC endpoint: http://localhost:${PORT}/trpc`) + console.log(`[Express+tRPC+Bun+SQLite] Bun version: ${Bun.version}`) + console.log(`[Express+tRPC+Bun+SQLite] PID: ${process.pid}`) +}) + +// Graceful shutdown +const shutdown = async () => { + console.log('[Express+tRPC+Bun+SQLite] Shutting down...') + await prisma.$disconnect() + server.close(() => { + console.log('[Express+tRPC+Bun+SQLite] Server closed') + process.exit(0) + }) +} + +process.on('SIGTERM', shutdown) +process.on('SIGINT', shutdown) + +export { app, server } diff --git a/packages/trpc-benchmarks/src/servers/hono-db-server.ts b/packages/trpc-benchmarks/src/servers/hono-db-server.ts new file mode 100644 index 00000000..8dafbffa --- /dev/null +++ b/packages/trpc-benchmarks/src/servers/hono-db-server.ts @@ -0,0 +1,86 @@ +// Run with Bun: bun run src/servers/hono-db-server.ts +// Hono + Bun server with Prisma/SQLite database +import { trpcServer } from '@hono/trpc-server' +import { Hono } from 'hono' +import { prisma } from '../db/client.js' +import { dbRouter, type Context } from '../shared/db-router.js' + +const PORT = Number(process.env.PORT) || 3002 + +const app = new Hono() + +// Health check outside of tRPC +app.get('/health', (c) => { + return c.json({ + status: 'ok', + runtime: typeof Bun !== 'undefined' ? 'bun' : 'node', + framework: 'hono', + database: 'sqlite' + }) +}) + +// tRPC endpoint using Hono adapter +app.use( + '/trpc/*', + trpcServer({ + router: dbRouter, + createContext: (): Context => ({ prisma }) + }) +) + +// Detect runtime and start appropriate server +const isBun = typeof Bun !== 'undefined' + +if (isBun) { + // Bun native server + const server = Bun.serve({ + port: PORT, + fetch: app.fetch + }) + + console.log(`[Hono+Bun+SQLite] Server running on http://localhost:${server.port}`) + console.log(`[Hono+Bun+SQLite] tRPC endpoint: http://localhost:${server.port}/trpc`) + console.log(`[Hono+Bun+SQLite] Bun version: ${Bun.version}`) + console.log(`[Hono+Bun+SQLite] PID: ${process.pid}`) + + // Graceful shutdown for Bun + process.on('SIGTERM', async () => { + console.log('[Hono+Bun+SQLite] Shutting down...') + await prisma.$disconnect() + process.exit(0) + }) + process.on('SIGINT', async () => { + console.log('[Hono+Bun+SQLite] Shutting down...') + await prisma.$disconnect() + process.exit(0) + }) +} else { + // Node.js fallback using @hono/node-server + const { serve } = await import('@hono/node-server') + + const server = serve({ + fetch: app.fetch, + port: PORT + }) + + console.log(`[Hono+Node+SQLite] Server running on http://localhost:${PORT}`) + console.log(`[Hono+Node+SQLite] tRPC endpoint: http://localhost:${PORT}/trpc`) + console.log(`[Hono+Node+SQLite] Node version: ${process.version}`) + console.log(`[Hono+Node+SQLite] PID: ${process.pid}`) + console.log('[Hono+Node+SQLite] Note: For accurate benchmarks, run with Bun runtime') + + // Graceful shutdown for Node + const shutdown = async () => { + console.log('[Hono+Node+SQLite] Shutting down...') + await prisma.$disconnect() + server.close(() => { + console.log('[Hono+Node+SQLite] Server closed') + process.exit(0) + }) + } + + process.on('SIGTERM', shutdown) + process.on('SIGINT', shutdown) +} + +export { app } diff --git a/packages/trpc-benchmarks/src/servers/hono-native-server.ts b/packages/trpc-benchmarks/src/servers/hono-native-server.ts new file mode 100644 index 00000000..fb0df4a9 --- /dev/null +++ b/packages/trpc-benchmarks/src/servers/hono-native-server.ts @@ -0,0 +1,263 @@ +// Native Hono server without tRPC - using Hono's native routing +// Run: bun run src/servers/hono-native-server.ts + +import { Hono } from 'hono' +import { prisma } from '../db/client.js' + +const PORT = Number(process.env.PORT) || 3005 + +const app = new Hono() + +app.get('/health', (c) => c.json({ + status: 'ok', + runtime: 'bun', + framework: 'hono-native', + database: 'sqlite' +})) + +// Product routes +app.get('/api/products', async (c) => { + const limit = Number(c.req.query('limit')) || 20 + const offset = Number(c.req.query('offset')) || 0 + const categoryId = c.req.query('categoryId') + + const where = categoryId ? { categoryId } : {} + + const [products, total] = await Promise.all([ + prisma.product.findMany({ + where, + take: limit, + skip: offset, + include: { category: true } + }), + prisma.product.count({ where }) + ]) + + return c.json({ products, total, limit, offset }) +}) + +app.get('/api/products/search', async (c) => { + const q = c.req.query('q') || '' + const limit = Number(c.req.query('limit')) || 20 + + const products = await prisma.product.findMany({ + where: { + OR: [ + { name: { contains: q } }, + { description: { contains: q } } + ] + }, + take: limit, + include: { category: true } + }) + + return c.json({ products, query: q }) +}) + +app.get('/api/products/:id', async (c) => { + const id = c.req.param('id') + + const product = await prisma.product.findUnique({ + where: { id }, + include: { + category: true, + reviews: { + take: 5, + orderBy: { createdAt: 'desc' }, + include: { user: { select: { id: true, name: true } } } + } + } + }) + + if (!product) { + return c.json({ error: 'Product not found' }, 404) + } + + return c.json(product) +}) + +// Category routes +app.get('/api/categories', async (c) => { + const categories = await prisma.category.findMany({ + include: { + _count: { select: { products: true } } + } + }) + return c.json(categories) +}) + +// User routes +app.get('/api/users/:id', async (c) => { + const id = c.req.param('id') + + const user = await prisma.user.findUnique({ + where: { id }, + select: { + id: true, + email: true, + name: true, + createdAt: true, + _count: { select: { orders: true, reviews: true } } + } + }) + + if (!user) { + return c.json({ error: 'User not found' }, 404) + } + + return c.json(user) +}) + +app.get('/api/users/:id/orders', async (c) => { + const id = c.req.param('id') + const limit = Number(c.req.query('limit')) || 10 + + const orders = await prisma.order.findMany({ + where: { userId: id }, + take: limit, + orderBy: { createdAt: 'desc' }, + include: { + items: { + include: { product: { select: { id: true, name: true, price: true } } } + } + } + }) + + return c.json(orders) +}) + +// Order routes +app.post('/api/orders', async (c) => { + const { userId, items } = await c.req.json() as { userId: string; items: { productId: string; quantity: number }[] } + + // Validate stock and calculate total + let total = 0 + const productIds = items.map(i => i.productId) + const products = await prisma.product.findMany({ + where: { id: { in: productIds } } + }) + + const productMap = new Map(products.map(p => [p.id, p])) + + for (const item of items) { + const product = productMap.get(item.productId) + if (!product) { + return c.json({ error: `Product ${item.productId} not found` }, 400) + } + if (product.stock < item.quantity) { + return c.json({ error: `Insufficient stock for ${product.name}` }, 400) + } + total += product.price * item.quantity + } + + // Create order with transaction + const order = await prisma.$transaction(async (tx) => { + const newOrder = await tx.order.create({ + data: { + userId, + total, + status: 'pending', + items: { + create: items.map(item => ({ + productId: item.productId, + quantity: item.quantity, + price: productMap.get(item.productId)!.price + })) + } + }, + include: { items: true } + }) + + // Update stock + for (const item of items) { + await tx.product.update({ + where: { id: item.productId }, + data: { stock: { decrement: item.quantity } } + }) + } + + return newOrder + }) + + return c.json(order) +}) + +app.get('/api/orders/:id', async (c) => { + const id = c.req.param('id') + + const order = await prisma.order.findUnique({ + where: { id }, + include: { + user: { select: { id: true, name: true, email: true } }, + items: { + include: { product: { select: { id: true, name: true, price: true } } } + } + } + }) + + if (!order) { + return c.json({ error: 'Order not found' }, 404) + } + + return c.json(order) +}) + +// Analytics routes +app.get('/api/analytics/dashboard', async (c) => { + const [totalUsers, totalProducts, totalOrders, revenue] = await Promise.all([ + prisma.user.count(), + prisma.product.count(), + prisma.order.count(), + prisma.order.aggregate({ _sum: { total: true } }) + ]) + + return c.json({ + totalUsers, + totalProducts, + totalOrders, + totalRevenue: revenue._sum.total || 0 + }) +}) + +app.get('/api/analytics/revenue-by-category', async (c) => { + const categories = await prisma.category.findMany({ + include: { + products: { + include: { + orderItems: true + } + } + } + }) + + const result = categories.map(cat => ({ + categoryId: cat.id, + categoryName: cat.name, + revenue: cat.products.reduce((sum, prod) => + sum + prod.orderItems.reduce((itemSum, item) => + itemSum + (item.price * item.quantity), 0), 0), + productCount: cat.products.length + })) + + return c.json(result) +}) + +export default { + port: PORT, + fetch: app.fetch +} + +console.log(`[Hono-Native+Bun+SQLite] Server running on http://localhost:${PORT}`) +console.log(`[Hono-Native+Bun+SQLite] API endpoint: http://localhost:${PORT}/api`) +console.log(`[Hono-Native+Bun+SQLite] Bun version: ${Bun.version}`) +console.log(`[Hono-Native+Bun+SQLite] PID: ${process.pid}`) + +process.on('SIGTERM', () => { + console.log('[Hono-Native+Bun+SQLite] SIGTERM received, shutting down...') + process.exit(0) +}) + +process.on('SIGINT', () => { + console.log('[Hono-Native+Bun+SQLite] SIGINT received, shutting down...') + process.exit(0) +}) diff --git a/packages/trpc-benchmarks/src/servers/hono-server.ts b/packages/trpc-benchmarks/src/servers/hono-server.ts new file mode 100644 index 00000000..515ad974 --- /dev/null +++ b/packages/trpc-benchmarks/src/servers/hono-server.ts @@ -0,0 +1,76 @@ +// Run with Bun: bun run src/servers/hono-server.ts +// Run with Node: npx tsx src/servers/hono-server.ts (for testing, but use Bun for benchmarks) +import { trpcServer } from '@hono/trpc-server' +import { Hono } from 'hono' +import { appRouter } from '../shared/router.js' + +const PORT = Number(process.env.PORT) || 3002 + +const app = new Hono() + +// Health check outside of tRPC +app.get('/health', (c) => { + return c.json({ + status: 'ok', + runtime: typeof Bun !== 'undefined' ? 'bun' : 'node', + framework: 'hono' + }) +}) + +// tRPC endpoint using Hono adapter +app.use( + '/trpc/*', + trpcServer({ + router: appRouter, + createContext: () => ({}) + }) +) + +// Detect runtime and start appropriate server +const isBun = typeof Bun !== 'undefined' + +if (isBun) { + // Bun native server + const server = Bun.serve({ + port: PORT, + fetch: app.fetch + }) + + console.log(`[Hono+Bun] Server running on http://localhost:${server.port}`) + console.log(`[Hono+Bun] tRPC endpoint: http://localhost:${server.port}/trpc`) + console.log(`[Hono+Bun] Bun version: ${Bun.version}`) + console.log(`[Hono+Bun] PID: ${process.pid}`) +} else { + // Node.js fallback using @hono/node-server + const { serve } = await import('@hono/node-server') + + const server = serve({ + fetch: app.fetch, + port: PORT + }) + + console.log(`[Hono+Node] Server running on http://localhost:${PORT}`) + console.log(`[Hono+Node] tRPC endpoint: http://localhost:${PORT}/trpc`) + console.log(`[Hono+Node] Node version: ${process.version}`) + console.log(`[Hono+Node] PID: ${process.pid}`) + console.log('[Hono+Node] Note: For accurate benchmarks, run with Bun runtime') + + // Graceful shutdown for Node + process.on('SIGTERM', () => { + console.log('[Hono+Node] SIGTERM received, shutting down...') + server.close(() => { + console.log('[Hono+Node] Server closed') + process.exit(0) + }) + }) + + process.on('SIGINT', () => { + console.log('[Hono+Node] SIGINT received, shutting down...') + server.close(() => { + console.log('[Hono+Node] Server closed') + process.exit(0) + }) + }) +} + +export { app } diff --git a/packages/trpc-benchmarks/src/shared/db-router.ts b/packages/trpc-benchmarks/src/shared/db-router.ts new file mode 100644 index 00000000..96708b14 --- /dev/null +++ b/packages/trpc-benchmarks/src/shared/db-router.ts @@ -0,0 +1,469 @@ +// npx tsx src/shared/db-router.ts (for type checking) +// Realistic tRPC router with database operations for benchmarking +import { initTRPC, TRPCError } from '@trpc/server' +import type { PrismaClient } from '@prisma/client' +import superjson from 'superjson' +import { z } from 'zod' + +// Context type with Prisma client +export interface Context { + prisma: PrismaClient +} + +// Initialize tRPC with context +const t = initTRPC.context().create({ + transformer: superjson +}) + +export const router = t.router +export const publicProcedure = t.procedure + +// Input schemas +const paginationInput = z.object({ + page: z.number().int().min(1).default(1), + pageSize: z.number().int().min(1).max(100).default(20) +}) + +const productFilterInput = z.object({ + categoryId: z.string().optional(), + minPrice: z.number().optional(), + maxPrice: z.number().optional(), + inStock: z.boolean().optional(), + search: z.string().optional() +}).merge(paginationInput) + +const createOrderInput = z.object({ + userId: z.string(), + items: z.array(z.object({ + productId: z.string(), + quantity: z.number().int().min(1) + })).min(1) +}) + +const createReviewInput = z.object({ + userId: z.string(), + productId: z.string(), + rating: z.number().int().min(1).max(5), + comment: z.string().min(1).max(1000) +}) + +// Create the database-backed router +export const dbRouter = router({ + // Health check with DB ping + health: publicProcedure.query(async ({ ctx }) => { + await ctx.prisma.$queryRaw`SELECT 1` + return { status: 'ok', database: 'connected', timestamp: Date.now() } + }), + + // User operations + user: router({ + // Get user by ID with order count + get: publicProcedure + .input(z.object({ id: z.string() })) + .query(async ({ ctx, input }) => { + const user = await ctx.prisma.user.findUnique({ + where: { id: input.id }, + include: { + _count: { select: { orders: true, reviews: true } } + } + }) + if (!user) { + throw new TRPCError({ code: 'NOT_FOUND', message: 'User not found' }) + } + return user + }), + + // List users with pagination + list: publicProcedure + .input(paginationInput) + .query(async ({ ctx, input }) => { + const [users, total] = await Promise.all([ + ctx.prisma.user.findMany({ + skip: (input.page - 1) * input.pageSize, + take: input.pageSize, + orderBy: { createdAt: 'desc' }, + include: { + _count: { select: { orders: true } } + } + }), + ctx.prisma.user.count() + ]) + return { + users, + total, + page: input.page, + pageSize: input.pageSize, + totalPages: Math.ceil(total / input.pageSize) + } + }), + + // Get user's orders + orders: publicProcedure + .input(z.object({ userId: z.string() }).merge(paginationInput)) + .query(async ({ ctx, input }) => { + const [orders, total] = await Promise.all([ + ctx.prisma.order.findMany({ + where: { userId: input.userId }, + skip: (input.page - 1) * input.pageSize, + take: input.pageSize, + orderBy: { createdAt: 'desc' }, + include: { + items: { + include: { product: true } + } + } + }), + ctx.prisma.order.count({ where: { userId: input.userId } }) + ]) + return { orders, total, page: input.page, totalPages: Math.ceil(total / input.pageSize) } + }) + }), + + // Product operations + product: router({ + // Get single product with reviews + get: publicProcedure + .input(z.object({ id: z.string() })) + .query(async ({ ctx, input }) => { + const product = await ctx.prisma.product.findUnique({ + where: { id: input.id }, + include: { + category: true, + reviews: { + take: 5, + orderBy: { createdAt: 'desc' }, + include: { user: { select: { id: true, name: true } } } + }, + _count: { select: { reviews: true, orderItems: true } } + } + }) + if (!product) { + throw new TRPCError({ code: 'NOT_FOUND', message: 'Product not found' }) + } + return product + }), + + // List products with filtering and pagination + list: publicProcedure + .input(productFilterInput) + .query(async ({ ctx, input }) => { + const where: any = {} + + if (input.categoryId) where.categoryId = input.categoryId + if (input.minPrice !== undefined) where.price = { ...where.price, gte: input.minPrice } + if (input.maxPrice !== undefined) where.price = { ...where.price, lte: input.maxPrice } + if (input.inStock) where.stock = { gt: 0 } + if (input.search) { + where.OR = [ + { name: { contains: input.search } }, + { description: { contains: input.search } } + ] + } + + const [products, total] = await Promise.all([ + ctx.prisma.product.findMany({ + where, + skip: (input.page - 1) * input.pageSize, + take: input.pageSize, + orderBy: { createdAt: 'desc' }, + include: { + category: true, + _count: { select: { reviews: true } } + } + }), + ctx.prisma.product.count({ where }) + ]) + + return { + products, + total, + page: input.page, + pageSize: input.pageSize, + totalPages: Math.ceil(total / input.pageSize) + } + }), + + // Get product reviews + reviews: publicProcedure + .input(z.object({ productId: z.string() }).merge(paginationInput)) + .query(async ({ ctx, input }) => { + const [reviews, total, avgRating] = await Promise.all([ + ctx.prisma.review.findMany({ + where: { productId: input.productId }, + skip: (input.page - 1) * input.pageSize, + take: input.pageSize, + orderBy: { createdAt: 'desc' }, + include: { user: { select: { id: true, name: true } } } + }), + ctx.prisma.review.count({ where: { productId: input.productId } }), + ctx.prisma.review.aggregate({ + where: { productId: input.productId }, + _avg: { rating: true } + }) + ]) + return { + reviews, + total, + avgRating: avgRating._avg.rating || 0, + page: input.page, + totalPages: Math.ceil(total / input.pageSize) + } + }), + + // Search products (text search simulation) + search: publicProcedure + .input(z.object({ query: z.string().min(1) }).merge(paginationInput)) + .query(async ({ ctx, input }) => { + const [products, total] = await Promise.all([ + ctx.prisma.product.findMany({ + where: { + OR: [ + { name: { contains: input.query } }, + { description: { contains: input.query } } + ] + }, + skip: (input.page - 1) * input.pageSize, + take: input.pageSize, + include: { category: true } + }), + ctx.prisma.product.count({ + where: { + OR: [ + { name: { contains: input.query } }, + { description: { contains: input.query } } + ] + } + }) + ]) + return { products, total, page: input.page, totalPages: Math.ceil(total / input.pageSize) } + }) + }), + + // Category operations + category: router({ + // List all categories with product count + list: publicProcedure.query(async ({ ctx }) => { + return ctx.prisma.category.findMany({ + include: { + _count: { select: { products: true } } + }, + orderBy: { name: 'asc' } + }) + }), + + // Get category products + products: publicProcedure + .input(z.object({ categoryId: z.string() }).merge(paginationInput)) + .query(async ({ ctx, input }) => { + const [products, total, category] = await Promise.all([ + ctx.prisma.product.findMany({ + where: { categoryId: input.categoryId }, + skip: (input.page - 1) * input.pageSize, + take: input.pageSize, + orderBy: { createdAt: 'desc' } + }), + ctx.prisma.product.count({ where: { categoryId: input.categoryId } }), + ctx.prisma.category.findUnique({ where: { id: input.categoryId } }) + ]) + return { category, products, total, page: input.page, totalPages: Math.ceil(total / input.pageSize) } + }) + }), + + // Order operations + order: router({ + // Get single order with all details + get: publicProcedure + .input(z.object({ id: z.string() })) + .query(async ({ ctx, input }) => { + const order = await ctx.prisma.order.findUnique({ + where: { id: input.id }, + include: { + user: { select: { id: true, name: true, email: true } }, + items: { + include: { + product: { + include: { category: true } + } + } + } + } + }) + if (!order) { + throw new TRPCError({ code: 'NOT_FOUND', message: 'Order not found' }) + } + return order + }), + + // Create a new order (transaction) + create: publicProcedure + .input(createOrderInput) + .mutation(async ({ ctx, input }) => { + return ctx.prisma.$transaction(async (tx) => { + // Get products and validate stock + const products = await tx.product.findMany({ + where: { id: { in: input.items.map((i) => i.productId) } } + }) + + const productMap = new Map(products.map((p) => [p.id, p])) + + // Validate all products exist and have stock + let total = 0 + const orderItems = input.items.map((item) => { + const product = productMap.get(item.productId) + if (!product) { + throw new TRPCError({ code: 'NOT_FOUND', message: `Product ${item.productId} not found` }) + } + if (product.stock < item.quantity) { + throw new TRPCError({ code: 'BAD_REQUEST', message: `Insufficient stock for ${product.name}` }) + } + total += product.price * item.quantity + return { + productId: item.productId, + quantity: item.quantity, + price: product.price + } + }) + + // Create order + const order = await tx.order.create({ + data: { + userId: input.userId, + total: parseFloat(total.toFixed(2)), + status: 'pending', + items: { create: orderItems } + }, + include: { items: true } + }) + + // Update stock + await Promise.all( + input.items.map((item) => + tx.product.update({ + where: { id: item.productId }, + data: { stock: { decrement: item.quantity } } + }) + ) + ) + + return order + }) + }), + + // Update order status + updateStatus: publicProcedure + .input(z.object({ + id: z.string(), + status: z.enum(['pending', 'confirmed', 'shipped', 'delivered', 'cancelled']) + })) + .mutation(async ({ ctx, input }) => { + return ctx.prisma.order.update({ + where: { id: input.id }, + data: { status: input.status } + }) + }), + + // List recent orders + recent: publicProcedure + .input(paginationInput) + .query(async ({ ctx, input }) => { + const [orders, total] = await Promise.all([ + ctx.prisma.order.findMany({ + skip: (input.page - 1) * input.pageSize, + take: input.pageSize, + orderBy: { createdAt: 'desc' }, + include: { + user: { select: { id: true, name: true } }, + _count: { select: { items: true } } + } + }), + ctx.prisma.order.count() + ]) + return { orders, total, page: input.page, totalPages: Math.ceil(total / input.pageSize) } + }) + }), + + // Review operations + review: router({ + // Create a review + create: publicProcedure + .input(createReviewInput) + .mutation(async ({ ctx, input }) => { + // Check if user already reviewed this product + const existing = await ctx.prisma.review.findUnique({ + where: { userId_productId: { userId: input.userId, productId: input.productId } } + }) + if (existing) { + throw new TRPCError({ code: 'CONFLICT', message: 'You already reviewed this product' }) + } + return ctx.prisma.review.create({ + data: input, + include: { user: { select: { id: true, name: true } } } + }) + }) + }), + + // Analytics/Dashboard operations (complex queries) + analytics: router({ + // Get dashboard summary + dashboard: publicProcedure.query(async ({ ctx }) => { + const [ + totalUsers, + totalProducts, + totalOrders, + recentOrders, + topProducts, + ordersByStatus + ] = await Promise.all([ + ctx.prisma.user.count(), + ctx.prisma.product.count(), + ctx.prisma.order.count(), + ctx.prisma.order.findMany({ + take: 5, + orderBy: { createdAt: 'desc' }, + include: { user: { select: { name: true } } } + }), + ctx.prisma.product.findMany({ + take: 5, + orderBy: { orderItems: { _count: 'desc' } }, + include: { _count: { select: { orderItems: true } } } + }), + ctx.prisma.order.groupBy({ + by: ['status'], + _count: true + }) + ]) + + return { + summary: { totalUsers, totalProducts, totalOrders }, + recentOrders, + topProducts, + ordersByStatus + } + }), + + // Revenue by category + revenueByCategory: publicProcedure.query(async ({ ctx }) => { + const categories = await ctx.prisma.category.findMany({ + include: { + products: { + include: { + orderItems: true + } + } + } + }) + + return categories.map((cat) => ({ + category: cat.name, + revenue: cat.products.reduce( + (sum, product) => + sum + product.orderItems.reduce((pSum, item) => pSum + item.price * item.quantity, 0), + 0 + ), + productCount: cat.products.length + })) + }) + }) +}) + +export type DbRouter = typeof dbRouter diff --git a/packages/trpc-benchmarks/src/shared/router.ts b/packages/trpc-benchmarks/src/shared/router.ts new file mode 100644 index 00000000..26588bd3 --- /dev/null +++ b/packages/trpc-benchmarks/src/shared/router.ts @@ -0,0 +1,199 @@ +// npx tsx src/shared/router.ts (for type checking) +import { initTRPC } from '@trpc/server' +import superjson from 'superjson' +import { z } from 'zod' + +/** + * Shared tRPC router for benchmarking Express+Node vs Bun+Hono + * + * Endpoint categories: + * 1. Simple queries (minimal overhead) + * 2. Data queries (JSON serialization) + * 3. Mutations (input validation + processing) + * 4. Computation (CPU-bound operations) + */ + +// Initialize tRPC +const t = initTRPC.create({ + transformer: superjson +}) + +export const router = t.router +export const publicProcedure = t.procedure + +// Simulated data store +const users = new Map() +const items = Array.from({ length: 1000 }, (_, i) => ({ + id: `item-${i}`, + name: `Item ${i}`, + price: Math.random() * 100, + category: ['electronics', 'clothing', 'food', 'books'][i % 4], + inStock: Math.random() > 0.3 +})) + +// Seed some users +for (let i = 0; i < 100; i++) { + const id = `user-${i}` + users.set(id, { + id, + name: `User ${i}`, + email: `user${i}@example.com` + }) +} + +// Input schemas +const getUserInput = z.object({ + id: z.string() +}) + +const createUserInput = z.object({ + name: z.string().min(1).max(100), + email: z.string().email() +}) + +const listItemsInput = z.object({ + page: z.number().int().min(1).default(1), + pageSize: z.number().int().min(1).max(100).default(20), + category: z.string().optional() +}) + +const computeInput = z.object({ + iterations: z.number().int().min(1).max(100000).default(1000) +}) + +const batchInput = z.object({ + ids: z.array(z.string()).min(1).max(50) +}) + +// Create the router +export const appRouter = router({ + // Simple health check - minimal overhead + health: publicProcedure.query(() => { + return { status: 'ok', timestamp: Date.now() } + }), + + // Simple ping - absolute minimum + ping: publicProcedure.query(() => 'pong'), + + // Get server info + info: publicProcedure.query(() => ({ + runtime: typeof Bun !== 'undefined' ? 'bun' : 'node', + version: typeof Bun !== 'undefined' ? Bun.version : process.version, + platform: process.platform, + arch: process.arch, + pid: process.pid, + uptime: process.uptime() + })), + + // User operations + user: router({ + // Get single user + get: publicProcedure.input(getUserInput).query(({ input }) => { + const user = users.get(input.id) + if (!user) { + throw new Error(`User ${input.id} not found`) + } + return user + }), + + // Create user (mutation) + create: publicProcedure.input(createUserInput).mutation(({ input }) => { + const id = `user-${Date.now()}-${Math.random().toString(36).slice(2)}` + const user = { id, ...input } + users.set(id, user) + return user + }), + + // List all users + list: publicProcedure.query(() => { + return Array.from(users.values()) + }), + + // Batch get users + batch: publicProcedure.input(batchInput).query(({ input }) => { + return input.ids.map((id) => users.get(id)).filter(Boolean) + }) + }), + + // Item operations (larger data sets) + items: router({ + // Paginated list with filtering + list: publicProcedure.input(listItemsInput).query(({ input }) => { + let filtered = items + if (input.category) { + filtered = items.filter((item) => item.category === input.category) + } + const start = (input.page - 1) * input.pageSize + const end = start + input.pageSize + return { + items: filtered.slice(start, end), + total: filtered.length, + page: input.page, + pageSize: input.pageSize, + totalPages: Math.ceil(filtered.length / input.pageSize) + } + }), + + // Get all items (large response) + all: publicProcedure.query(() => items), + + // Get item count + count: publicProcedure.query(() => ({ count: items.length })) + }), + + // Computation endpoints (CPU-bound) + compute: router({ + // Fibonacci (recursive, inefficient on purpose) + fibonacci: publicProcedure + .input(z.object({ n: z.number().int().min(1).max(35) })) + .query(({ input }) => { + const fib = (n: number): number => { + if (n <= 1) return n + return fib(n - 1) + fib(n - 2) + } + return { n: input.n, result: fib(input.n) } + }), + + // Prime check + isPrime: publicProcedure + .input(z.object({ n: z.number().int().min(1) })) + .query(({ input }) => { + const isPrime = (n: number): boolean => { + if (n < 2) return false + for (let i = 2; i <= Math.sqrt(n); i++) { + if (n % i === 0) return false + } + return true + } + return { n: input.n, isPrime: isPrime(input.n) } + }), + + // Hash computation (simulate work) + hash: publicProcedure.input(computeInput).query(({ input }) => { + let hash = 0 + for (let i = 0; i < input.iterations; i++) { + hash = ((hash << 5) - hash + i) | 0 + } + return { iterations: input.iterations, hash } + }), + + // Array sorting benchmark + sort: publicProcedure + .input(z.object({ size: z.number().int().min(1).max(10000).default(1000) })) + .query(({ input }) => { + const arr = Array.from({ length: input.size }, () => Math.random()) + const start = performance.now() + arr.sort((a, b) => a - b) + const duration = performance.now() - start + return { size: input.size, durationMs: duration } + }) + }), + + // Echo endpoint for payload testing + echo: publicProcedure + .input(z.object({ data: z.unknown() })) + .mutation(({ input }) => input.data) +}) + +// Export type for client +export type AppRouter = typeof appRouter diff --git a/packages/trpc-benchmarks/tsconfig.json b/packages/trpc-benchmarks/tsconfig.json new file mode 100644 index 00000000..b10751e9 --- /dev/null +++ b/packages/trpc-benchmarks/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ES2022", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "lib": ["ES2022"], + "outDir": "./dist", + "rootDir": "./src", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "resolveJsonModule": true, + "types": ["node", "bun-types"] + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 61b70e5e..3c66b6fb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,19 +11,22 @@ catalogs: version: 29.7.0 ts-jest: specifier: ^29.2.6 - version: 29.4.0 + version: 29.4.5 ts-node: specifier: ^10.9.2 version: 10.9.2 unplugin-swc: specifier: ^1.5.5 - version: 1.5.5 + version: 1.5.9 vitest: specifier: ^2.1.8 version: 2.1.9 zod: specifier: ^4.0.10 - version: 4.0.10 + version: 4.1.13 + +overrides: + '@sinclair/typebox': ^0.34.0 importers: @@ -31,26 +34,32 @@ importers: dependencies: '@changesets/cli': specifier: ^2.29.5 - version: 2.29.5 + version: 2.29.8(@types/node@24.10.1) devDependencies: '@biomejs/biome': specifier: ^2.1.3 - version: 2.1.3 + version: 2.3.8 + '@elysiajs/trpc': + specifier: ^1.1.0 + version: 1.1.0(elysia@1.4.16(@sinclair/typebox@0.34.41)(exact-mirror@0.2.5(@sinclair/typebox@0.34.41))(file-type@16.5.4)(openapi-types@12.1.3)(typescript@5.9.3)) + elysia: + specifier: ^1.4.16 + version: 1.4.16(@sinclair/typebox@0.34.41)(exact-mirror@0.2.5(@sinclair/typebox@0.34.41))(file-type@16.5.4)(openapi-types@12.1.3)(typescript@5.9.3) turbo: specifier: ^2.5.5 - version: 2.5.5 + version: 2.6.1 typescript: specifier: ^5.8.3 - version: 5.8.3 + version: 5.9.3 packages/benchmarks: dependencies: '@mikro-orm/core': specifier: ^6.4.16 - version: 6.4.16 + version: 6.6.1 '@mikro-orm/mysql': specifier: ^6.4.16 - version: 6.4.16(@mikro-orm/core@6.4.16)(better-sqlite3@11.10.0)(pg@8.16.3)(sqlite3@5.1.7) + version: 6.6.1(@mikro-orm/core@6.6.1)(better-sqlite3@12.5.0)(pg@8.16.3)(sqlite3@5.1.7) '@prisma/client': specifier: ^5.22.0 version: 5.22.0(prisma@5.22.0) @@ -77,19 +86,19 @@ importers: version: 16.6.1 drizzle-kit: specifier: ^0.31.4 - version: 0.31.4 + version: 0.31.7 drizzle-orm: specifier: ^0.44.3 - version: 0.44.3(@opentelemetry/api@1.9.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.6.1)(better-sqlite3@11.10.0)(knex@3.1.0(better-sqlite3@11.10.0)(mysql2@3.14.2)(pg@8.16.3)(sqlite3@5.1.7))(kysely@0.28.3)(mysql2@3.14.2)(pg@8.16.3)(prisma@5.22.0)(sqlite3@5.1.7) + version: 0.44.7(@opentelemetry/api@1.9.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.6.1)(better-sqlite3@12.5.0)(bun-types@1.3.3)(knex@3.1.0(better-sqlite3@12.5.0)(mysql2@3.15.3)(pg@8.16.3)(sqlite3@5.1.7))(kysely@0.28.8)(mysql2@3.15.3)(pg@8.16.3)(prisma@5.22.0)(sqlite3@5.1.7) knex: specifier: ^3.1.0 - version: 3.1.0(better-sqlite3@11.10.0)(mysql2@3.14.2)(pg@8.16.3)(sqlite3@5.1.7) + version: 3.1.0(better-sqlite3@12.5.0)(mysql2@3.15.3)(pg@8.16.3)(sqlite3@5.1.7) kysely: specifier: ^0.28.3 - version: 0.28.3 + version: 0.28.8 mysql2: specifier: ^3.11.3 - version: 3.14.2 + version: 3.15.3 prisma-extension-kysely: specifier: ^3.0.0 version: 3.0.0(@prisma/client@5.22.0(prisma@5.22.0)) @@ -98,23 +107,23 @@ importers: version: 0.1.14 sequelize: specifier: ^6.37.7 - version: 6.37.7(mysql2@3.14.2)(pg@8.16.3)(sqlite3@5.1.7) + version: 6.37.7(mysql2@3.15.3)(pg@8.16.3)(sqlite3@5.1.7) typeorm: specifier: ^0.3.9 - version: 0.3.25(better-sqlite3@11.10.0)(ioredis@5.6.1)(mongodb@6.18.0(@aws-sdk/credential-providers@3.848.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.6))(mysql2@3.14.2)(pg@8.16.3)(reflect-metadata@0.1.14)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3)) + version: 0.3.27(better-sqlite3@12.5.0)(ioredis@5.8.2)(mongodb@6.21.0(@aws-sdk/credential-providers@3.940.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.7))(mysql2@3.15.3)(pg@8.16.3)(redis@5.10.0)(reflect-metadata@0.1.14)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3)) devDependencies: '@biomejs/biome': specifier: ^2.1.3 - version: 2.1.3 + version: 2.3.8 '@goatlab/biome': specifier: workspace:* version: link:../biome '@testcontainers/mysql': specifier: ^11.0.3 - version: 11.4.0 + version: 11.9.0 '@testcontainers/redis': specifier: ^11.0.3 - version: 11.4.0 + version: 11.9.0 '@types/benchmark': specifier: ^2.1.5 version: 2.1.5 @@ -132,13 +141,13 @@ importers: version: 5.0.10 tsx: specifier: ^4.7.1 - version: 4.20.3 + version: 4.20.6 typescript: specifier: ^5.6.3 - version: 5.8.3 + version: 5.9.3 vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@17.0.45)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0)(tsx@4.20.3)(yaml@2.8.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@17.0.45)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jsdom@27.0.1)(tsx@4.20.6)(yaml@2.8.1) packages/biome: dependencies: @@ -150,22 +159,22 @@ importers: dependencies: '@ai-sdk/anthropic': specifier: ^0.0.39 - version: 0.0.39(zod@4.0.10) + version: 0.0.39(zod@4.1.13) '@ai-sdk/google': specifier: ^0.0.35 - version: 0.0.35(zod@4.0.10) + version: 0.0.35(zod@4.1.13) '@ai-sdk/openai': specifier: ^0.0.44 - version: 0.0.44(zod@4.0.10) + version: 0.0.44(zod@4.1.13) '@goatlab/js-utils': specifier: workspace:* version: link:../js-utils '@langchain/core': specifier: ^0.3.66 - version: 0.3.66(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)) + version: 0.3.79(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)) '@langchain/langgraph': specifier: ^0.3.11 - version: 0.3.12(@langchain/core@0.3.66(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)))(react@19.1.1)(zod-to-json-schema@3.24.6(zod@4.0.10)) + version: 0.3.12(@langchain/core@0.3.79(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)))(react@19.2.0)(zod-to-json-schema@3.25.0(zod@4.1.13)) '@modelcontextprotocol/sdk': specifier: ^0.5.0 version: 0.5.0 @@ -183,26 +192,26 @@ importers: version: 0.52.1(@opentelemetry/api@1.9.0) ai: specifier: ^3.4.7 - version: 3.4.33(react@19.1.1)(sswr@2.2.0(svelte@5.38.0))(svelte@5.38.0)(vue@3.5.18(typescript@5.8.3))(zod@4.0.10) + version: 3.4.33(react@19.2.0)(sswr@2.2.0(svelte@5.45.2))(svelte@5.45.2)(vue@3.5.25(typescript@5.9.3))(zod@4.1.13) dotenv: specifier: ^16.4.5 version: 16.6.1 zod: specifier: 'catalog:' - version: 4.0.10 + version: 4.1.13 devDependencies: '@ai-sdk/provider-utils': specifier: ^3.0.1 - version: 3.0.1(zod@4.0.10) + version: 3.0.18(zod@4.1.13) '@biomejs/biome': specifier: ^2.1.3 - version: 2.1.3 + version: 2.3.8 '@goatlab/biome': specifier: workspace:* version: link:../biome '@langchain/langgraph-checkpoint-sqlite': specifier: ^0.1.5 - version: 0.1.5(@langchain/core@0.3.66(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)))(@langchain/langgraph-checkpoint@0.0.18(@langchain/core@0.3.66(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)))) + version: 0.1.5(@langchain/core@0.3.79(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)))(@langchain/langgraph-checkpoint@0.0.18(@langchain/core@0.3.79(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)))) '@opentelemetry/api': specifier: ^1.9.0 version: 1.9.0 @@ -214,22 +223,22 @@ importers: version: 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': specifier: ^1.36.0 - version: 1.36.0 + version: 1.38.0 '@types/better-sqlite3': specifier: ^7.6.13 version: 7.6.13 '@types/node': specifier: ^22.10.7 - version: 22.16.5 + version: 22.19.1 '@types/pino': specifier: ^7.0.5 version: 7.0.5 '@vitest/coverage-v8': specifier: ^2.0.0 - version: 2.1.9(vitest@2.1.9(@types/node@22.16.5)(happy-dom@18.0.1)(jsdom@26.1.0)) + version: 2.1.9(vitest@2.1.9(@types/node@22.19.1)(happy-dom@18.0.1)(jsdom@27.0.1)) better-sqlite3: specifier: ^12.2.0 - version: 12.2.0 + version: 12.5.0 c8: specifier: ^10.1.2 version: 10.1.3 @@ -238,37 +247,37 @@ importers: version: 12.1.0 langsmith: specifier: ^0.3.53 - version: 0.3.53(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)) + version: 0.3.82(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)) nock: specifier: ^13.5.0 version: 13.5.6 ollama-ai-provider: specifier: ^1.2.0 - version: 1.2.0(zod@4.0.10) + version: 1.2.0(zod@4.1.13) pino: specifier: ^9.7.0 - version: 9.7.0 + version: 9.14.0 pino-pretty: specifier: ^13.1.1 - version: 13.1.1 + version: 13.1.2 tsx: specifier: ^4.19.2 - version: 4.20.3 + version: 4.20.6 typescript: specifier: ^5.7.3 - version: 5.8.3 + version: 5.9.3 uuid: specifier: ^11.1.0 version: 11.1.0 vitest: specifier: ^2.0.0 - version: 2.1.9(@types/node@22.16.5)(happy-dom@18.0.1)(jsdom@26.1.0) + version: 2.1.9(@types/node@22.19.1)(happy-dom@18.0.1)(jsdom@27.0.1) packages/docs: dependencies: algoliasearch: specifier: ^5.32.0 - version: 5.34.1 + version: 5.45.0 dotenv: specifier: ^16.4.5 version: 16.6.1 @@ -284,7 +293,7 @@ importers: devDependencies: '@biomejs/biome': specifier: ^2.1.3 - version: 2.1.3 + version: 2.3.8 '@goatlab/biome': specifier: workspace:* version: link:../biome @@ -293,13 +302,13 @@ importers: version: 17.0.45 rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 serve: specifier: ^14.2.4 - version: 14.2.4 + version: 14.2.5 tsx: specifier: ^4.7.1 - version: 4.20.3 + version: 4.20.6 typescript: specifier: ^4.6.3 version: 4.9.5 @@ -314,13 +323,13 @@ importers: version: link:../node-backend '@loopback/metadata': specifier: ^8.0.2 - version: 8.0.2 + version: 8.0.6 bson: specifier: ^6.10.4 version: 6.10.4 graphql: specifier: ^16.11.0 - version: 16.11.0 + version: 16.12.0 openapi3-ts: specifier: ^4.5.0 version: 4.5.0 @@ -329,14 +338,14 @@ importers: version: 0.2.2 typeorm: specifier: ^0.3.25 - version: 0.3.25(better-sqlite3@11.10.0)(ioredis@5.6.1)(mongodb@6.18.0(@aws-sdk/credential-providers@3.848.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.6))(mysql2@3.14.2)(pg@8.16.3)(reflect-metadata@0.2.2)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@24.1.0)(typescript@5.8.3)) + version: 0.3.27(better-sqlite3@12.5.0)(ioredis@5.8.2)(mongodb@6.21.0(@aws-sdk/credential-providers@3.940.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.7))(mysql2@3.15.3)(pg@8.16.3)(redis@5.10.0)(reflect-metadata@0.2.2)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.1)(typescript@5.9.3)) zod: specifier: 'catalog:' - version: 4.0.10 + version: 4.1.13 devDependencies: '@biomejs/biome': specifier: ^2.1.3 - version: 2.1.3 + version: 2.3.8 '@goatlab/biome': specifier: workspace:* version: link:../biome @@ -345,19 +354,19 @@ importers: version: link:../tsconfig '@swc/core': specifier: ^1.13.0 - version: 1.13.2 + version: 1.15.3 '@testcontainers/mongodb': specifier: ^11.3.0 - version: 11.4.0 + version: 11.9.0 '@testcontainers/mysql': specifier: ^11.0.3 - version: 11.4.0 + version: 11.9.0 '@testcontainers/postgresql': specifier: ^11.0.3 - version: 11.4.0 + version: 11.9.0 '@types/node': specifier: ^24.0.15 - version: 24.1.0 + version: 24.10.1 '@vitest/runner': specifier: ^3.2.4 version: 3.2.4 @@ -372,7 +381,7 @@ importers: version: 0.5.1 class-validator: specifier: ^0.14.2 - version: 0.14.2 + version: 0.14.3 cross-spawn: specifier: ^7.0.6 version: 7.0.6 @@ -384,16 +393,16 @@ importers: version: 8.0.0 jest: specifier: 'catalog:' - version: 29.7.0(@types/node@24.1.0)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@24.1.0)(typescript@5.8.3)) + version: 29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.1)(typescript@5.9.3)) modern-spawn: specifier: ^1.0.0 version: 1.0.0 mongodb: specifier: ^6.17.0 - version: 6.18.0(@aws-sdk/credential-providers@3.848.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.6) + version: 6.21.0(@aws-sdk/credential-providers@3.940.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.7) mysql2: specifier: ^3.14.2 - version: 3.14.2 + version: 3.15.3 net: specifier: ^1.0.2 version: 1.0.2 @@ -402,31 +411,31 @@ importers: version: 8.16.3 pretty-quick: specifier: ^4.2.2 - version: 4.2.2(prettier@3.6.2) + version: 4.2.2(prettier@2.8.8) sqlite3: specifier: ^5.1.7 version: 5.1.7 testcontainers: specifier: ^11.0.3 - version: 11.4.0 + version: 11.9.0 ts-jest: specifier: 'catalog:' - version: 29.4.0(@babel/core@7.28.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.0))(jest-util@29.7.0)(jest@29.7.0(@types/node@24.1.0)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@24.1.0)(typescript@5.8.3)))(typescript@5.8.3) + version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@29.7.0)(jest@29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.1)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: 'catalog:' - version: 10.9.2(@swc/core@1.13.2)(@types/node@24.1.0)(typescript@5.8.3) + version: 10.9.2(@swc/core@1.15.3)(@types/node@24.10.1)(typescript@5.9.3) turbo: specifier: ^2.5.5 - version: 2.5.5 + version: 2.6.1 typescript: specifier: ^5.8.3 - version: 5.8.3 + version: 5.9.3 unplugin-swc: specifier: ^1.5.5 - version: 1.5.5(@swc/core@1.13.2)(rollup@4.46.1) + version: 1.5.9(@swc/core@1.15.3)(rollup@4.53.3) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.1.0)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0)(tsx@4.20.3)(yaml@2.8.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.1)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jsdom@27.0.1)(tsx@4.20.6)(yaml@2.8.1) packages/fluent-firebase: dependencies: @@ -445,7 +454,7 @@ importers: devDependencies: '@biomejs/biome': specifier: ^2.1.3 - version: 2.1.3 + version: 2.3.8 '@goatlab/biome': specifier: workspace:* version: link:../biome @@ -460,7 +469,7 @@ importers: version: 5.1.0 pretty-quick: specifier: ^3.1.3 - version: 3.3.1(prettier@3.6.2) + version: 3.3.1(prettier@2.8.8) rimraf: specifier: ^3.0.2 version: 3.0.2 @@ -469,22 +478,22 @@ importers: version: 10.28.0 ts-node: specifier: 'catalog:' - version: 10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3) + version: 10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3) turbo: specifier: ^1.1.10 version: 1.13.4 typeorm: specifier: ^0.3.17 - version: 0.3.25(better-sqlite3@11.10.0)(ioredis@5.6.1)(mongodb@6.18.0(@aws-sdk/credential-providers@3.848.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.6))(mysql2@3.14.2)(pg@8.16.3)(reflect-metadata@0.2.2)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3)) + version: 0.3.27(better-sqlite3@12.5.0)(ioredis@5.8.2)(mongodb@6.21.0(@aws-sdk/credential-providers@3.940.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.7))(mysql2@3.15.3)(pg@8.16.3)(redis@5.10.0)(reflect-metadata@0.2.2)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3)) typescript: specifier: ^5.0.0 - version: 5.8.3 + version: 5.9.3 unplugin-swc: specifier: 'catalog:' - version: 1.5.5(@swc/core@1.13.2)(rollup@4.46.1) + version: 1.5.9(@swc/core@1.15.3)(rollup@4.53.3) vitest: specifier: 'catalog:' - version: 2.1.9(@types/node@17.0.45)(happy-dom@18.0.1)(jsdom@26.1.0) + version: 2.1.9(@types/node@17.0.45)(happy-dom@18.0.1)(jsdom@27.0.1) packages/fluent-formio: dependencies: @@ -497,7 +506,7 @@ importers: devDependencies: '@biomejs/biome': specifier: ^2.1.3 - version: 2.1.3 + version: 2.3.8 '@goatlab/biome': specifier: workspace:* version: link:../biome @@ -512,10 +521,10 @@ importers: version: 5.1.0 pretty-quick: specifier: ^3.1.3 - version: 3.3.1(prettier@3.6.2) + version: 3.3.1(prettier@2.8.8) ts-node: specifier: 'catalog:' - version: 10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5) + version: 10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5) turbo: specifier: ^1.1.10 version: 1.13.4 @@ -524,7 +533,7 @@ importers: version: 4.9.5 vitest: specifier: 'catalog:' - version: 2.1.9(@types/node@17.0.45)(happy-dom@18.0.1)(jsdom@26.1.0) + version: 2.1.9(@types/node@17.0.45)(happy-dom@18.0.1)(jsdom@27.0.1) packages/fluent-loki: dependencies: @@ -545,11 +554,11 @@ importers: version: 1.5.12 typeorm: specifier: ^0.3.25 - version: 0.3.25(better-sqlite3@11.10.0)(ioredis@5.6.1)(mongodb@6.18.0(@aws-sdk/credential-providers@3.848.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.6))(mysql2@3.14.2)(pg@8.16.3)(reflect-metadata@0.2.2)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3)) + version: 0.3.27(better-sqlite3@12.5.0)(ioredis@5.8.2)(mongodb@6.21.0(@aws-sdk/credential-providers@3.940.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.7))(mysql2@3.15.3)(pg@8.16.3)(redis@5.10.0)(reflect-metadata@0.2.2)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3)) devDependencies: '@biomejs/biome': specifier: ^2.1.3 - version: 2.1.3 + version: 2.3.8 '@goatlab/biome': specifier: workspace:* version: link:../biome @@ -564,19 +573,19 @@ importers: version: 5.1.0 pretty-quick: specifier: ^3.1.3 - version: 3.3.1(prettier@3.6.2) + version: 3.3.1(prettier@2.8.8) ts-node: specifier: 'catalog:' - version: 10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3) + version: 10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3) turbo: specifier: ^1.1.10 version: 1.13.4 typescript: specifier: ^5.0.0 - version: 5.8.3 + version: 5.9.3 vitest: specifier: 'catalog:' - version: 2.1.9(@types/node@17.0.45)(happy-dom@18.0.1)(jsdom@26.1.0) + version: 2.1.9(@types/node@17.0.45)(happy-dom@18.0.1)(jsdom@27.0.1) packages/fluent-pouchdb: dependencies: @@ -604,13 +613,13 @@ importers: devDependencies: '@biomejs/biome': specifier: ^2.1.3 - version: 2.1.3 + version: 2.3.8 '@goatlab/biome': specifier: workspace:* version: link:../biome '@types/node': specifier: ^18.6.5 - version: 18.19.120 + version: 18.19.130 '@types/pouchdb': specifier: ^6.4.0 version: 6.4.2 @@ -619,22 +628,22 @@ importers: version: 5.1.0 pretty-quick: specifier: ^3.1.3 - version: 3.3.1(prettier@3.6.2) + version: 3.3.1(prettier@2.8.8) ts-node: specifier: 'catalog:' - version: 10.9.2(@swc/core@1.13.2)(@types/node@18.19.120)(typescript@5.8.3) + version: 10.9.2(@swc/core@1.15.3)(@types/node@18.19.130)(typescript@5.9.3) turbo: specifier: ^1.1.10 version: 1.13.4 typescript: specifier: ^5.0.0 - version: 5.8.3 + version: 5.9.3 unplugin-swc: specifier: 'catalog:' - version: 1.5.5(@swc/core@1.13.2)(rollup@4.46.1) + version: 1.5.9(@swc/core@1.15.3)(rollup@4.53.3) vitest: specifier: 'catalog:' - version: 2.1.9(@types/node@18.19.120)(happy-dom@18.0.1)(jsdom@26.1.0) + version: 2.1.9(@types/node@18.19.130)(happy-dom@18.0.1)(jsdom@27.0.1) packages/fluentjs: dependencies: @@ -661,7 +670,7 @@ importers: version: 1.2.1 dayjs: specifier: ^1.11.0 - version: 1.11.13 + version: 1.11.19 jwt-decode: specifier: ^3.1.2 version: 3.1.2 @@ -689,7 +698,7 @@ importers: devDependencies: '@biomejs/biome': specifier: ^2.1.3 - version: 2.1.3 + version: 2.3.8 '@goatlab/biome': specifier: workspace:* version: link:../biome @@ -719,10 +728,10 @@ importers: version: 5.1.0 pretty-quick: specifier: ^3.1.3 - version: 3.3.1(prettier@3.6.2) + version: 3.3.1(prettier@2.8.8) ts-node: specifier: 'catalog:' - version: 10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5) + version: 10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5) tslint: specifier: ^6.1.3 version: 6.1.3(typescript@4.9.5) @@ -737,13 +746,13 @@ importers: version: 4.9.5 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@17.0.45)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0)(tsx@4.20.3)(yaml@2.8.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@17.0.45)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jsdom@27.0.1)(tsx@4.20.6)(yaml@2.8.1) packages/formio-utils: dependencies: '@goatlab/fluent': specifier: '*' - version: link:../fluent + version: 0.9.17(@types/express@5.0.5)(@types/node@17.0.45)(better-sqlite3@12.5.0)(encoding@0.1.13)(ioredis@5.8.2)(mongodb@6.21.0(@aws-sdk/credential-providers@3.940.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.7))(mysql2@3.15.3)(pg@8.16.3)(redis@5.10.0)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5))(typescript@4.9.5)(winston@3.18.3)(zod-openapi@4.2.4(zod@4.1.13)) '@goatlab/js-utils': specifier: workspace:* version: link:../js-utils @@ -792,7 +801,7 @@ importers: devDependencies: '@biomejs/biome': specifier: ^2.1.3 - version: 2.1.3 + version: 2.3.8 '@goatlab/biome': specifier: workspace:* version: link:../biome @@ -804,10 +813,10 @@ importers: version: 5.1.0 pretty-quick: specifier: ^3.1.3 - version: 3.3.1(prettier@3.6.2) + version: 3.3.1(prettier@2.8.8) ts-node: specifier: 'catalog:' - version: 10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5) + version: 10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5) turbo: specifier: ^1.1.10 version: 1.13.4 @@ -816,7 +825,7 @@ importers: version: 4.9.5 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@17.0.45)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0)(tsx@4.20.3)(yaml@2.8.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@17.0.45)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jsdom@27.0.1)(tsx@4.20.6)(yaml@2.8.1) packages/js-html: dependencies: @@ -850,7 +859,7 @@ importers: devDependencies: '@biomejs/biome': specifier: ^2.1.3 - version: 2.1.3 + version: 2.3.8 '@goatlab/biome': specifier: workspace:* version: link:../biome @@ -859,7 +868,7 @@ importers: version: link:../tsconfig '@testcontainers/redis': specifier: ^11.0.3 - version: 11.4.0 + version: 11.9.0 '@types/jest': specifier: ^27.4.1 version: 27.5.2 @@ -874,19 +883,19 @@ importers: version: 5.1.0 jest: specifier: 'catalog:' - version: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5)) + version: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5)) jest-environment-node: specifier: ^27.5.1 version: 27.5.1 pretty-quick: specifier: ^3.1.3 - version: 3.3.1(prettier@3.6.2) + version: 3.3.1(prettier@2.8.8) ts-jest: specifier: 'catalog:' - version: 29.4.0(@babel/core@7.28.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.0))(jest-util@29.7.0)(jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5)))(typescript@4.9.5) + version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@29.7.0)(jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5)))(typescript@4.9.5) ts-node: specifier: 'catalog:' - version: 10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5) + version: 10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5) turbo: specifier: ^1.1.10 version: 1.13.4 @@ -895,7 +904,7 @@ importers: version: 4.9.5 vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@17.0.45)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0)(tsx@4.20.3)(yaml@2.8.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@17.0.45)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jsdom@27.0.1)(tsx@4.20.6)(yaml@2.8.1) packages/js-utils: dependencies: @@ -911,7 +920,7 @@ importers: devDependencies: '@biomejs/biome': specifier: ^2.1.3 - version: 2.1.3 + version: 2.3.8 '@goatlab/biome': specifier: workspace:* version: link:../biome @@ -923,7 +932,7 @@ importers: version: 17.0.45 '@yarnpkg/esbuild-plugin-pnp': specifier: 3.0.0-rc.15 - version: 3.0.0-rc.15(esbuild@0.25.8) + version: 3.0.0-rc.15(esbuild@0.25.12) abort-controller: specifier: ^3.0.0 version: 3.0.0 @@ -932,19 +941,19 @@ importers: version: 5.1.0 esbuild: specifier: ^0.25.5 - version: 0.25.8 + version: 0.25.12 ky: specifier: ^1.8.1 - version: 1.8.2 + version: 1.14.0 pretty-quick: specifier: ^3.1.3 - version: 3.3.1(prettier@3.6.2) + version: 3.3.1(prettier@2.8.8) ts-node: specifier: 'catalog:' - version: 10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5) + version: 10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5) tsup: specifier: ^8.5.0 - version: 8.5.0(@swc/core@1.13.2)(jiti@2.5.1)(postcss@8.5.6)(tsx@4.20.3)(typescript@4.9.5)(yaml@2.8.0) + version: 8.5.1(@swc/core@1.15.3)(postcss@8.5.6)(tsx@4.20.6)(typescript@4.9.5)(yaml@2.8.1) turbo: specifier: ^1.1.10 version: 1.13.4 @@ -953,10 +962,10 @@ importers: version: 4.9.5 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@17.0.45)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0)(tsx@4.20.3)(yaml@2.8.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@17.0.45)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jsdom@27.0.1)(tsx@4.20.6)(yaml@2.8.1) web-streams-polyfill: specifier: ^4.1.0 - version: 4.1.0 + version: 4.2.0 packages/metabase: dependencies: @@ -969,16 +978,16 @@ importers: devDependencies: '@biomejs/biome': specifier: ^2.1.3 - version: 2.1.3 + version: 2.3.8 '@goatlab/biome': specifier: workspace:* version: link:../biome '@testcontainers/mysql': specifier: ^11.0.3 - version: 11.4.0 + version: 11.9.0 '@types/node': specifier: ^18.15.9 - version: 18.19.120 + version: 18.19.130 '@vitest/ui': specifier: ^3.2.4 version: 3.2.4(vitest@3.2.4) @@ -990,25 +999,25 @@ importers: version: 18.0.1 pretty-quick: specifier: ^3.1.3 - version: 3.3.1(prettier@3.6.2) + version: 3.3.1(prettier@2.8.8) rimraf: specifier: ^5.0.1 version: 5.0.10 testcontainers: specifier: ^11.3.1 - version: 11.4.0 + version: 11.9.0 ts-node: specifier: ^10.9.1 - version: 10.9.2(@swc/core@1.13.2)(@types/node@18.19.120)(typescript@5.8.3) + version: 10.9.2(@swc/core@1.15.3)(@types/node@18.19.130)(typescript@5.9.3) turbo: specifier: ^1.1.10 version: 1.13.4 typescript: specifier: ^5.0.2 - version: 5.8.3 + version: 5.9.3 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@18.19.120)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0)(tsx@4.20.3)(yaml@2.8.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@18.19.130)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jsdom@27.0.1)(tsx@4.20.6)(yaml@2.8.1) packages/node-backend: dependencies: @@ -1020,19 +1029,19 @@ importers: version: link:../node-utils '@google-cloud/logging-winston': specifier: ^6.0.1 - version: 6.0.1(encoding@0.1.13)(winston@3.17.0) + version: 6.0.1(encoding@0.1.13)(winston@3.18.3) '@keyv/redis': specifier: ^3.0.1 version: 3.0.1 '@sentry/node': specifier: ^9.42.0 - version: 9.42.0 + version: 9.47.1 '@sentry/profiling-node': specifier: ^9.42.0 - version: 9.42.0 + version: 9.47.1 '@trpc/server': specifier: ^11.4.3 - version: 11.4.3(typescript@5.8.3) + version: 11.7.2(typescript@5.9.3) '@types/compression': specifier: ^1.8.1 version: 1.8.1 @@ -1065,7 +1074,7 @@ importers: version: 5.1.0 express-rate-limit: specifier: ^8.0.1 - version: 8.0.1(express@5.1.0) + version: 8.2.1(express@5.1.0) express-session: specifier: ^1.18.2 version: 1.18.2 @@ -1083,10 +1092,10 @@ importers: version: 4.1.5 mjml: specifier: ^4.15.3 - version: 4.15.3(encoding@0.1.13) + version: 4.17.1(encoding@0.1.13) node-mocks-http: specifier: ^1.17.2 - version: 1.17.2(@types/express@5.0.3)(@types/node@17.0.45) + version: 1.17.2(@types/express@5.0.5)(@types/node@17.0.45) passport-jwt: specifier: ^4.0.1 version: 4.0.1 @@ -1101,23 +1110,23 @@ importers: version: 5.0.1(express@5.1.0) tiny-lru: specifier: ^11.3.4 - version: 11.3.4 + version: 11.4.5 trpc-to-openapi: specifier: ^2.3.2 - version: 2.3.2(@trpc/server@11.4.3(typescript@5.8.3))(zod-openapi@4.2.4(zod@4.0.10))(zod@4.0.10) + version: 2.4.0(@trpc/server@11.7.2(typescript@5.9.3))(zod-openapi@4.2.4(zod@4.1.13))(zod@4.1.13) ua-parser-js: specifier: ^2.0.4 - version: 2.0.4(encoding@0.1.13) + version: 2.0.6 undici: specifier: ^7.12.0 - version: 7.12.0 + version: 7.16.0 zod: specifier: 'catalog:' - version: 4.0.10 + version: 4.1.13 devDependencies: '@biomejs/biome': specifier: ^2.1.3 - version: 2.1.3 + version: 2.3.8 '@goatlab/biome': specifier: workspace:* version: link:../biome @@ -1126,10 +1135,10 @@ importers: version: link:../tsconfig '@testcontainers/redis': specifier: ^11.0.3 - version: 11.4.0 + version: 11.9.0 '@testcontainers/vault': specifier: ^11.4.0 - version: 11.4.0 + version: 11.9.0 '@types/cors': specifier: ^2.8.17 version: 2.8.19 @@ -1138,7 +1147,7 @@ importers: version: 3.1.5 '@types/express': specifier: ^5.0.0 - version: 5.0.3 + version: 5.0.5 '@types/geoip-lite': specifier: ^1.4.4 version: 1.4.4 @@ -1171,31 +1180,31 @@ importers: version: 5.1.0 jest: specifier: 'catalog:' - version: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3)) + version: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3)) jest-environment-node: specifier: ^27.5.1 version: 27.5.1 pretty-quick: specifier: ^3.1.3 - version: 3.3.1(prettier@3.6.2) + version: 3.3.1(prettier@2.8.8) supertest: specifier: ^7.1.4 version: 7.1.4 ts-jest: specifier: 'catalog:' - version: 29.4.0(@babel/core@7.28.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.0))(jest-util@29.7.0)(jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3)))(typescript@5.8.3) + version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@29.7.0)(jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: 'catalog:' - version: 10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3) + version: 10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3) turbo: specifier: ^1.1.10 version: 1.13.4 typescript: specifier: ^5.6.3 - version: 5.8.3 + version: 5.9.3 vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@17.0.45)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0)(tsx@4.20.3)(yaml@2.8.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@17.0.45)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jsdom@27.0.1)(tsx@4.20.6)(yaml@2.8.1) packages/node-metascraper: dependencies: @@ -1213,59 +1222,59 @@ importers: version: 1.12.1 metascraper: specifier: ^5.47.1 - version: 5.49.1 + version: 5.49.5 metascraper-author: specifier: ^5.47.1 - version: 5.49.1 + version: 5.49.5 metascraper-clearbit: specifier: ^5.47.1 - version: 5.49.1 + version: 5.49.2 metascraper-date: specifier: ^5.47.1 - version: 5.49.1 + version: 5.49.5 metascraper-description: specifier: ^5.47.1 - version: 5.49.1 + version: 5.49.5 metascraper-feed: specifier: ^5.47.1 - version: 5.49.1 + version: 5.49.5 metascraper-image: specifier: ^5.47.1 - version: 5.49.1 + version: 5.49.5 metascraper-lang: specifier: ^5.47.1 - version: 5.49.1 + version: 5.49.5 metascraper-logo: specifier: ^5.47.1 - version: 5.49.1 + version: 5.49.5 metascraper-publisher: specifier: ^5.47.1 - version: 5.49.1 + version: 5.49.5 metascraper-title: specifier: ^5.47.1 - version: 5.49.1 + version: 5.49.5 metascraper-url: specifier: ^5.47.1 - version: 5.49.1 + version: 5.49.5 puppeteer: specifier: ^24.10.2 - version: 24.15.0(typescript@4.9.5) + version: 24.31.0(typescript@4.9.5) puppeteer-core: specifier: ^24.10.2 - version: 24.15.0 + version: 24.31.0 puppeteer-extra: specifier: ^3.3.6 - version: 3.3.6(puppeteer-core@24.15.0)(puppeteer@24.15.0(typescript@4.9.5)) + version: 3.3.6(puppeteer-core@24.31.0)(puppeteer@24.31.0(typescript@4.9.5)) puppeteer-extra-plugin-adblocker: specifier: ^2.13.6 - version: 2.13.6(encoding@0.1.13)(puppeteer-core@24.15.0)(puppeteer-extra@3.3.6(puppeteer-core@24.15.0)(puppeteer@24.15.0(typescript@4.9.5)))(puppeteer@24.15.0(typescript@4.9.5)) + version: 2.13.6(encoding@0.1.13)(puppeteer-core@24.31.0)(puppeteer-extra@3.3.6(puppeteer-core@24.31.0)(puppeteer@24.31.0(typescript@4.9.5)))(puppeteer@24.31.0(typescript@4.9.5)) puppeteer-extra-plugin-stealth: specifier: ^2.11.2 - version: 2.11.2(puppeteer-extra@3.3.6(puppeteer-core@24.15.0)(puppeteer@24.15.0(typescript@4.9.5))) + version: 2.11.2(puppeteer-extra@3.3.6(puppeteer-core@24.31.0)(puppeteer@24.31.0(typescript@4.9.5))) devDependencies: '@biomejs/biome': specifier: ^2.1.3 - version: 2.1.3 + version: 2.3.8 '@goatlab/biome': specifier: workspace:* version: link:../biome @@ -1274,19 +1283,19 @@ importers: version: link:../tsconfig '@testcontainers/redis': specifier: ^11.0.3 - version: 11.4.0 + version: 11.9.0 '@types/node': specifier: ^18.15.9 - version: 18.19.120 + version: 18.19.130 dotenv-cli: specifier: ^5.1.0 version: 5.1.0 pretty-quick: specifier: ^3.1.3 - version: 3.3.1(prettier@3.6.2) + version: 3.3.1(prettier@2.8.8) ts-node: specifier: 'catalog:' - version: 10.9.2(@swc/core@1.13.2)(@types/node@18.19.120)(typescript@4.9.5) + version: 10.9.2(@swc/core@1.15.3)(@types/node@18.19.130)(typescript@4.9.5) turbo: specifier: ^1.1.10 version: 1.13.4 @@ -1295,7 +1304,7 @@ importers: version: 4.9.5 vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@18.19.120)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0)(tsx@4.20.3)(yaml@2.8.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@18.19.130)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jsdom@27.0.1)(tsx@4.20.6)(yaml@2.8.1) packages/node-utils: dependencies: @@ -1325,17 +1334,17 @@ importers: version: 0.12.7 portfinder: specifier: ^1.0.37 - version: 1.0.37 + version: 1.0.38 through2-concurrent: specifier: ^2.0.0 version: 2.0.0 winston: specifier: ^3.17.0 - version: 3.17.0 + version: 3.18.3 devDependencies: '@biomejs/biome': specifier: ^2.1.3 - version: 2.1.3 + version: 2.3.8 '@goatlab/biome': specifier: workspace:* version: link:../biome @@ -1344,7 +1353,7 @@ importers: version: 6.0.0 '@types/node': specifier: ^18.15.9 - version: 18.19.120 + version: 18.19.130 '@types/through2-concurrent': specifier: ^2.0.1 version: 2.0.4 @@ -1359,19 +1368,19 @@ importers: version: 18.0.1 pretty-quick: specifier: ^3.1.3 - version: 3.3.1(prettier@3.6.2) + version: 3.3.1(prettier@2.8.8) ts-node: specifier: ^10.9.1 - version: 10.9.2(@swc/core@1.13.2)(@types/node@18.19.120)(typescript@5.8.3) + version: 10.9.2(@swc/core@1.15.3)(@types/node@18.19.130)(typescript@5.9.3) turbo: specifier: ^1.1.10 version: 1.13.4 typescript: specifier: ^5.0.2 - version: 5.8.3 + version: 5.9.3 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@18.19.120)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0)(tsx@4.20.3)(yaml@2.8.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@18.19.130)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jsdom@27.0.1)(tsx@4.20.6)(yaml@2.8.1) packages/node-xlsx: dependencies: @@ -1387,7 +1396,7 @@ importers: devDependencies: '@biomejs/biome': specifier: ^2.1.3 - version: 2.1.3 + version: 2.3.8 '@goatlab/biome': specifier: workspace:* version: link:../biome @@ -1396,25 +1405,25 @@ importers: version: link:../tsconfig '@types/node': specifier: ^18.15.9 - version: 18.19.120 + version: 18.19.130 dotenv-cli: specifier: ^7.1.0 version: 7.4.4 pretty-quick: specifier: ^3.1.3 - version: 3.3.1(prettier@3.6.2) + version: 3.3.1(prettier@2.8.8) ts-node: specifier: 'catalog:' - version: 10.9.2(@swc/core@1.13.2)(@types/node@18.19.120)(typescript@5.8.3) + version: 10.9.2(@swc/core@1.15.3)(@types/node@18.19.130)(typescript@5.9.3) turbo: specifier: ^1.1.10 version: 1.13.4 typescript: specifier: ^5.0.2 - version: 5.8.3 + version: 5.9.3 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@18.19.120)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0)(tsx@4.20.3)(yaml@2.8.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@18.19.130)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jsdom@27.0.1)(tsx@4.20.6)(yaml@2.8.1) packages/queue-core: dependencies: @@ -1423,7 +1432,7 @@ importers: version: link:../js-utils amqplib: specifier: ^0.10.7 - version: 0.10.8 + version: 0.10.9 fastq: specifier: ^1.19.1 version: 1.19.1 @@ -1433,7 +1442,7 @@ importers: devDependencies: '@biomejs/biome': specifier: ^2.1.3 - version: 2.1.3 + version: 2.3.8 '@goatlab/biome': specifier: workspace:* version: link:../biome @@ -1460,19 +1469,19 @@ importers: version: 5.1.0 jest: specifier: 'catalog:' - version: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5)) + version: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5)) jest-environment-node: specifier: ^27.5.1 version: 27.5.1 pretty-quick: specifier: ^3.1.3 - version: 3.3.1(prettier@3.6.2) + version: 3.3.1(prettier@2.8.8) ts-jest: specifier: 'catalog:' - version: 29.4.0(@babel/core@7.28.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.0))(jest-util@29.7.0)(jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5)))(typescript@4.9.5) + version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@29.7.0)(jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5)))(typescript@4.9.5) ts-node: specifier: 'catalog:' - version: 10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5) + version: 10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5) turbo: specifier: ^1.1.10 version: 1.13.4 @@ -1481,17 +1490,17 @@ importers: version: 4.9.5 vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@17.0.45)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0)(tsx@4.20.3)(yaml@2.8.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@17.0.45)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jsdom@27.0.1)(tsx@4.20.6)(yaml@2.8.1) packages/queue-node: dependencies: cron: specifier: ^4.1.4 - version: 4.3.2 + version: 4.3.4 devDependencies: '@biomejs/biome': specifier: ^2.1.3 - version: 2.1.3 + version: 2.3.8 '@goatlab/biome': specifier: workspace:* version: link:../biome @@ -1500,25 +1509,25 @@ importers: version: link:../tsconfig '@types/node': specifier: ^18.15.9 - version: 18.19.120 + version: 18.19.130 dotenv-cli: specifier: ^7.1.0 version: 7.4.4 pretty-quick: specifier: ^3.1.3 - version: 3.3.1(prettier@3.6.2) + version: 3.3.1(prettier@2.8.8) ts-node: specifier: 'catalog:' - version: 10.9.2(@swc/core@1.13.2)(@types/node@18.19.120)(typescript@5.8.3) + version: 10.9.2(@swc/core@1.15.3)(@types/node@18.19.130)(typescript@5.9.3) turbo: specifier: ^1.1.10 version: 1.13.4 typescript: specifier: ^5.0.2 - version: 5.8.3 + version: 5.9.3 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@18.19.120)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0)(tsx@4.20.3)(yaml@2.8.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@18.19.130)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jsdom@27.0.1)(tsx@4.20.6)(yaml@2.8.1) packages/tasks-adapter-gcp: dependencies: @@ -1533,11 +1542,11 @@ importers: version: link:../tasks-core '@google-cloud/tasks': specifier: ^6.1.0 - version: 6.2.0 + version: 6.2.1 devDependencies: '@biomejs/biome': specifier: ^2.1.3 - version: 2.1.3 + version: 2.3.8 '@goatlab/biome': specifier: workspace:* version: link:../biome @@ -1567,22 +1576,22 @@ importers: version: 5.1.0 google-gax: specifier: ^5.0.0 - version: 5.0.1 + version: 5.0.6 jest: specifier: 'catalog:' - version: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5)) + version: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5)) jest-environment-node: specifier: ^27.5.1 version: 27.5.1 pretty-quick: specifier: ^3.1.3 - version: 3.3.1(prettier@3.6.2) + version: 3.3.1(prettier@2.8.8) ts-jest: specifier: 'catalog:' - version: 29.4.0(@babel/core@7.28.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.0))(jest-util@29.7.0)(jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5)))(typescript@4.9.5) + version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@29.7.0)(jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5)))(typescript@4.9.5) ts-node: specifier: 'catalog:' - version: 10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5) + version: 10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5) turbo: specifier: ^1.1.10 version: 1.13.4 @@ -1591,7 +1600,7 @@ importers: version: 4.9.5 vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@17.0.45)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0)(tsx@4.20.3)(yaml@2.8.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@17.0.45)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jsdom@27.0.1)(tsx@4.20.6)(yaml@2.8.1) packages/tasks-adapter-hatchet: dependencies: @@ -1606,11 +1615,11 @@ importers: version: link:../tasks-core '@hatchet-dev/typescript-sdk': specifier: ^1.9.3 - version: 1.9.3 + version: 1.10.3 devDependencies: '@biomejs/biome': specifier: ^2.1.3 - version: 2.1.3 + version: 2.3.8 '@goatlab/biome': specifier: workspace:* version: link:../biome @@ -1619,7 +1628,7 @@ importers: version: link:../tsconfig '@testcontainers/postgresql': specifier: ^11.0.3 - version: 11.4.0 + version: 11.9.0 '@types/jest': specifier: ^27.4.1 version: 27.5.2 @@ -1634,22 +1643,22 @@ importers: version: 5.1.0 jest: specifier: 'catalog:' - version: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5)) + version: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5)) jest-environment-node: specifier: ^27.5.1 version: 27.5.1 pretty-quick: specifier: ^3.1.3 - version: 3.3.1(prettier@3.6.2) + version: 3.3.1(prettier@2.8.8) testcontainers: specifier: ^11.0.3 - version: 11.4.0 + version: 11.9.0 ts-jest: specifier: 'catalog:' - version: 29.4.0(@babel/core@7.28.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.0))(jest-util@29.7.0)(jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5)))(typescript@4.9.5) + version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@29.7.0)(jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5)))(typescript@4.9.5) ts-node: specifier: 'catalog:' - version: 10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5) + version: 10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5) turbo: specifier: ^1.1.10 version: 1.13.4 @@ -1658,7 +1667,7 @@ importers: version: 4.9.5 vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@17.0.45)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0)(tsx@4.20.3)(yaml@2.8.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@17.0.45)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jsdom@27.0.1)(tsx@4.20.6)(yaml@2.8.1) packages/tasks-core: dependencies: @@ -1668,7 +1677,7 @@ importers: devDependencies: '@biomejs/biome': specifier: ^2.1.3 - version: 2.1.3 + version: 2.3.8 '@goatlab/biome': specifier: workspace:* version: link:../biome @@ -1695,19 +1704,19 @@ importers: version: 5.1.0 jest: specifier: 'catalog:' - version: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5)) + version: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5)) jest-environment-node: specifier: ^27.5.1 version: 27.5.1 pretty-quick: specifier: ^3.1.3 - version: 3.3.1(prettier@3.6.2) + version: 3.3.1(prettier@2.8.8) ts-jest: specifier: 'catalog:' - version: 29.4.0(@babel/core@7.28.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.0))(jest-util@29.7.0)(jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5)))(typescript@4.9.5) + version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@29.7.0)(jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5)))(typescript@4.9.5) ts-node: specifier: 'catalog:' - version: 10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5) + version: 10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5) turbo: specifier: ^1.1.10 version: 1.13.4 @@ -1716,19 +1725,86 @@ importers: version: 4.9.5 vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@17.0.45)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0)(tsx@4.20.3)(yaml@2.8.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@17.0.45)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jsdom@27.0.1)(tsx@4.20.6)(yaml@2.8.1) + + packages/trpc-benchmarks: + dependencies: + '@prisma/client': + specifier: ^5.22.0 + version: 5.22.0(prisma@5.22.0) + '@trpc/client': + specifier: ^11.4.3 + version: 11.7.2(@trpc/server@11.7.2(typescript@5.9.3))(typescript@5.9.3) + '@trpc/server': + specifier: ^11.4.3 + version: 11.7.2(typescript@5.9.3) + chalk: + specifier: ^4.1.2 + version: 4.1.2 + commander: + specifier: ^12.0.0 + version: 12.1.0 + express: + specifier: ^5.1.0 + version: 5.1.0 + superjson: + specifier: ^2.2.2 + version: 2.2.6 + zod: + specifier: ^3.24.4 + version: 3.25.76 + devDependencies: + '@biomejs/biome': + specifier: ^2.1.3 + version: 2.3.8 + '@goatlab/biome': + specifier: workspace:* + version: link:../biome + '@hono/node-server': + specifier: ^1.14.0 + version: 1.19.6(hono@4.10.7) + '@hono/trpc-server': + specifier: ^0.3.4 + version: 0.3.4(@trpc/server@11.7.2(typescript@5.9.3))(hono@4.10.7) + '@sinclair/typebox': + specifier: ^0.34.0 + version: 0.34.41 + '@types/express': + specifier: ^5.0.0 + version: 5.0.5 + '@types/node': + specifier: ^22.15.21 + version: 22.19.1 + bun-types: + specifier: ^1.2.0 + version: 1.3.3 + elysia: + specifier: ^1.2.0 + version: 1.4.16(@sinclair/typebox@0.34.41)(exact-mirror@0.2.5(@sinclair/typebox@0.34.41))(file-type@16.5.4)(openapi-types@12.1.3)(typescript@5.9.3) + hono: + specifier: ^4.7.9 + version: 4.10.7 + prisma: + specifier: ^5.22.0 + version: 5.22.0 + tsx: + specifier: ^4.7.1 + version: 4.20.6 + typescript: + specifier: ^5.6.3 + version: 5.9.3 packages/tsconfig: devDependencies: '@biomejs/biome': specifier: ^2.1.3 - version: 2.1.3 + version: 2.3.8 '@goatlab/biome': specifier: workspace:* version: link:../biome rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 packages/typesense: dependencies: @@ -1740,20 +1816,20 @@ importers: version: link:../tsconfig zod: specifier: 'catalog:' - version: 4.0.10 + version: 4.1.13 devDependencies: '@biomejs/biome': specifier: ^2.1.3 - version: 2.1.3 + version: 2.3.8 '@goatlab/biome': specifier: workspace:* version: link:../biome '@testcontainers/mysql': specifier: ^11.0.3 - version: 11.4.0 + version: 11.9.0 '@types/node': specifier: ^18.15.9 - version: 18.19.120 + version: 18.19.130 '@vitest/ui': specifier: ^3.2.4 version: 3.2.4(vitest@3.2.4) @@ -1765,25 +1841,25 @@ importers: version: 18.0.1 pretty-quick: specifier: ^3.1.3 - version: 3.3.1(prettier@3.6.2) + version: 3.3.1(prettier@2.8.8) rimraf: specifier: ^5.0.1 version: 5.0.10 testcontainers: specifier: ^11.3.1 - version: 11.4.0 + version: 11.9.0 ts-node: specifier: ^10.9.1 - version: 10.9.2(@swc/core@1.13.2)(@types/node@18.19.120)(typescript@5.8.3) + version: 10.9.2(@swc/core@1.15.3)(@types/node@18.19.130)(typescript@5.9.3) turbo: specifier: ^1.1.10 version: 1.13.4 typescript: specifier: ^5.0.2 - version: 5.8.3 + version: 5.9.3 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@18.19.120)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0)(tsx@4.20.3)(yaml@2.8.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@18.19.130)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jsdom@27.0.1)(tsx@4.20.6)(yaml@2.8.1) packages/uploads: dependencies: @@ -1811,7 +1887,7 @@ importers: devDependencies: '@biomejs/biome': specifier: ^2.1.3 - version: 2.1.3 + version: 2.3.8 '@goatlab/biome': specifier: workspace:* version: link:../biome @@ -1844,13 +1920,13 @@ importers: version: 1.3.0 pretty-quick: specifier: ^3.1.3 - version: 3.3.1(prettier@3.6.2) + version: 3.3.1(prettier@2.8.8) release-it: specifier: ^14.13.1 version: 14.14.3(encoding@0.1.13) ts-node: specifier: 'catalog:' - version: 10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5) + version: 10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5) turbo: specifier: ^1.1.10 version: 1.13.4 @@ -1859,7 +1935,7 @@ importers: version: 4.9.5 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@17.0.45)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0)(tsx@4.20.3)(yaml@2.8.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@17.0.45)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jsdom@27.0.1)(tsx@4.20.6)(yaml@2.8.1) packages: @@ -1905,11 +1981,11 @@ packages: peerDependencies: zod: ^3.23.8 - '@ai-sdk/provider-utils@3.0.1': - resolution: {integrity: sha512-/iP1sKc6UdJgGH98OCly7sWJKv+J9G47PnTjIj40IJMUQKwDrUMyf7zOOfRtPwSuNifYhSoJQ4s1WltI65gJ/g==} + '@ai-sdk/provider-utils@3.0.18': + resolution: {integrity: sha512-ypv1xXMsgGcNKUP+hglKqtdDuMg68nWHucPPAhIENrbFAI+xCHiqPVN8Zllxyv1TNZwGWUghPxJXU+Mqps0YRQ==} engines: {node: '>=18'} peerDependencies: - zod: ^3.25.76 || ^4 + zod: ^3.25.76 || ^4.1.8 '@ai-sdk/provider@0.0.17': resolution: {integrity: sha512-f9j+P5yYRkqKFHxvWae5FI0j6nqROPCoPnMkpc2hc2vC7vKjqzrxBJucD8rpSaUjqiBnY/QuRJ0QeV717Uz5tg==} @@ -1975,56 +2051,60 @@ packages: vue: optional: true - '@algolia/client-abtesting@5.34.1': - resolution: {integrity: sha512-M4zb6J7q+pg9V9Xk0k1WDgvupfCtXcxjKGTrNVYemiredLVGOmvVIPAUjg2rx4QmK7DWNApWLsieYwk7PAaOXw==} + '@algolia/abtesting@1.11.0': + resolution: {integrity: sha512-a7oQ8dwiyoyVmzLY0FcuBqyqcNSq78qlcOtHmNBumRlHCSnXDcuoYGBGPN1F6n8JoGhviDDsIaF/oQrzTzs6Lg==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-abtesting@5.45.0': + resolution: {integrity: sha512-WTW0VZA8xHMbzuQD5b3f41ovKZ0MNTIXkWfm0F2PU+XGcLxmxX15UqODzF2sWab0vSbi3URM1xLhJx+bXbd1eQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.34.1': - resolution: {integrity: sha512-h18zlL+bVUlbNE92olo1d/r6HQPkxhmP7yCpA1osERwpgC6F058kWm0O0aYdrHJIHtWBcs9aRqq7IkQSkpjPJg==} + '@algolia/client-analytics@5.45.0': + resolution: {integrity: sha512-I3g7VtvG/QJOH3tQO7E7zWTwBfK/nIQXShFLR8RvPgWburZ626JNj332M3wHCYcaAMivN9WJG66S2JNXhm6+Xg==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.34.1': - resolution: {integrity: sha512-otPWALs72KvmVuP0CN0DI6sqVx1jQWKi+/DgAiP8DysVMgiNlva3GDKTtAK6XVGlT08f4h32FNuL0yQODuCfKA==} + '@algolia/client-common@5.45.0': + resolution: {integrity: sha512-/nTqm1tLiPtbUr+8kHKyFiCOfhRfgC+JxLvOCq471gFZZOlsh6VtFRiKI60/zGmHTojFC6B0mD80PB7KeK94og==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.34.1': - resolution: {integrity: sha512-SNDb5wuEpQFM6S5Shk2iytLMusvGycm9uTuYh7cGa1h3U7O65OjjjIgQ0lLY5HPybHNtmXr4Zh/EZ23pZvAJHg==} + '@algolia/client-insights@5.45.0': + resolution: {integrity: sha512-suQTx/1bRL1g/K2hRtbK3ANmbzaZCi13487sxxmqok+alBDKKw0/TI73ZiHjjFXM2NV52inwwcmW4fUR45206Q==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.34.1': - resolution: {integrity: sha512-T8z9KqYJOup83Hw0mgICYWfJoLh//FNWbf4roFd95ZJzZ4v1cN/hvr7Eqml1qWMoCkJb4y/XQjrXsJ6Y9XnMLw==} + '@algolia/client-personalization@5.45.0': + resolution: {integrity: sha512-CId/dbjpzI3eoUhPU6rt/z4GrRsDesqFISEMOwrqWNSrf4FJhiUIzN42Ac+Gzg69uC0RnzRYy60K1y4Na5VSMw==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.34.1': - resolution: {integrity: sha512-YA0kC4CwO1mc1dliNgbFgToweRa7Uihjz3izEaV4cXninF1v4SaOrPkQUsiFPprAffjMzOUoT7vahQZ/HZyiKQ==} + '@algolia/client-query-suggestions@5.45.0': + resolution: {integrity: sha512-tjbBKfA8fjAiFtvl9g/MpIPiD6pf3fj7rirVfh1eMIUi8ybHP4ovDzIaE216vHuRXoePQVCkMd2CokKvYq1CLw==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.34.1': - resolution: {integrity: sha512-bt5hC9vvjaKvdvsgzfXJ42Sl3qjQqoi/FD8V7HOQgtNFhwSauZOlgLwFoUiw67sM+r7ehF7QDk5WRDgY7fAkIg==} + '@algolia/client-search@5.45.0': + resolution: {integrity: sha512-nxuCid+Nszs4xqwIMDw11pRJPes2c+Th1yup/+LtpjFH8QWXkr3SirNYSD3OXAeM060HgWWPLA8/Fxk+vwxQOA==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.34.1': - resolution: {integrity: sha512-QLxiBskQxFGzPqKZvBNEvNN95kgDCbBd2X29ZGfh6Sr2QOSU34US6Z9x2duiF4o9FwsB0i6eQ2c9vHfuH0lAQg==} + '@algolia/ingestion@1.45.0': + resolution: {integrity: sha512-t+1doBzhkQTeOOjLHMlm4slmXBhvgtEGQhOmNpMPTnIgWOyZyESWdm+XD984qM4Ej1i9FRh8VttOGrdGnAjAng==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.34.1': - resolution: {integrity: sha512-NteCvWcWXXdnPGyZH8rXHslcf2pM1WGDNMGNZFXLFtOt1Gf1Tjy2t0NZLp+Mxap3JMV4mbYmactbXrvpQf/lLA==} + '@algolia/monitoring@1.45.0': + resolution: {integrity: sha512-IaX3ZX1A/0wlgWZue+1BNWlq5xtJgsRo7uUk/aSiYD7lPbJ7dFuZ+yTLFLKgbl4O0QcyHTj1/mSBj9ryF1Lizg==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.34.1': - resolution: {integrity: sha512-UdgDSrunLIBAAAxQlYLXYLnYFN4wkzkrAYx+wMLEk/pzASWyza3BkecbUFVqoYOBIgwo7Mt4iymzVtFkzL2uCQ==} + '@algolia/recommend@5.45.0': + resolution: {integrity: sha512-1jeMLoOhkgezCCPsOqkScwYzAAc1Jr5T2hisZl0s32D94ZV7d1OHozBukgOjf8Dw+6Hgi6j52jlAdUWTtkX9Mg==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.34.1': - resolution: {integrity: sha512-567LfFTc9VOiPtuySQohoqaWMeohYWbXK71aMSin+SLMgeKX7hz5LrVmkmMQj9udwWK6/mtHEYZGPYHSuXpLQg==} + '@algolia/requester-browser-xhr@5.45.0': + resolution: {integrity: sha512-46FIoUkQ9N7wq4/YkHS5/W9Yjm4Ab+q5kfbahdyMpkBPJ7IBlwuNEGnWUZIQ6JfUZuJVojRujPRHMihX4awUMg==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.34.1': - resolution: {integrity: sha512-YRbygPgGBEik5U593JvyjgxFjcsyZMR25eIQxNHvSQumdAzt5A4E4Idw3yXnwhrmMdjML54ZXT7EAjnTjWy8Xw==} + '@algolia/requester-fetch@5.45.0': + resolution: {integrity: sha512-XFTSAtCwy4HdBhSReN2rhSyH/nZOM3q3qe5ERG2FLbYId62heIlJBGVyAPRbltRwNlotlydbvSJ+SQ0ruWC2cw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.34.1': - resolution: {integrity: sha512-o0mqRYbS82Rt4DE02Od7RL6pNtV7oSxScPuIw8LW4aqO2V5eCF05Pry/SnUgcI/Vb2QCYC66hytBCqzyC/toZA==} + '@algolia/requester-node-http@5.45.0': + resolution: {integrity: sha512-8mTg6lHx5i44raCU52APsu0EqMsdm4+7Hch/e4ZsYZw0hzwkuaMFh826ngnkYf9XOl58nHoou63aZ874m8AbpQ==} engines: {node: '>= 14.0.0'} '@ampproject/remapping@2.3.0': @@ -2034,6 +2114,15 @@ packages: '@asamuzakjp/css-color@3.2.0': resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} + '@asamuzakjp/css-color@4.1.0': + resolution: {integrity: sha512-9xiBAtLn4aNsa4mDnpovJvBn72tNEIACyvlqaNJ+ADemR+yeMJWnBudOi2qGDviJa7SwcDOU/TRh5dnET7qk0w==} + + '@asamuzakjp/dom-selector@6.7.4': + resolution: {integrity: sha512-buQDjkm+wDPXd6c13534URWZqbz0RP5PAhXZ+LIoa5LgwInT9HVJvGIJivg75vi8I13CxDGdTnz+aY5YUJlIAA==} + + '@asamuzakjp/nwsapi@2.3.9': + resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} + '@aws-crypto/sha256-browser@5.2.0': resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} @@ -2047,99 +2136,103 @@ packages: '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/client-cognito-identity@3.848.0': - resolution: {integrity: sha512-Sin8aLnA81MgvUJrfQsBIQ1UJg4klWT3NuYYjExLiVQf3A0/F7Bfx1HTIyWXtSchY4QgGr7MMone0/0KZ4Dy9g==} + '@aws-sdk/client-cognito-identity@3.940.0': + resolution: {integrity: sha512-kFl2zLYQBLMplmYglbEe4qGuj1jlIuGuYUmtpH+XUMnbeqwU2KoDiLh+bn2u32KGrxNWHZQgraoqxMKN2q6Kcg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/client-sso@3.940.0': + resolution: {integrity: sha512-SdqJGWVhmIURvCSgkDditHRO+ozubwZk9aCX9MK8qxyOndhobCndW1ozl3hX9psvMAo9Q4bppjuqy/GHWpjB+A==} engines: {node: '>=18.0.0'} - '@aws-sdk/client-sso@3.848.0': - resolution: {integrity: sha512-mD+gOwoeZQvbecVLGoCmY6pS7kg02BHesbtIxUj+PeBqYoZV5uLvjUOmuGfw1SfoSobKvS11urxC9S7zxU/Maw==} + '@aws-sdk/core@3.940.0': + resolution: {integrity: sha512-KsGD2FLaX5ngJao1mHxodIVU9VYd1E8810fcYiGwO1PFHDzf5BEkp6D9IdMeQwT8Q6JLYtiiT1Y/o3UCScnGoA==} engines: {node: '>=18.0.0'} - '@aws-sdk/core@3.846.0': - resolution: {integrity: sha512-7CX0pM906r4WSS68fCTNMTtBCSkTtf3Wggssmx13gD40gcWEZXsU00KzPp1bYheNRyPlAq3rE22xt4wLPXbuxA==} + '@aws-sdk/credential-provider-cognito-identity@3.940.0': + resolution: {integrity: sha512-VZMijB+Dc2tISeumWw+Oxn0Oi9f4g4/xJu3kdFIjsac6GDdmBVuBbAG+bvPP73J1j1m1G1BwaYqEZvOlLwgjIA==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-cognito-identity@3.848.0': - resolution: {integrity: sha512-2cm/Ye6ktagW1h7FmF4sgo8STZyBr2+0+L9lr/veuPKZVWoi/FyhJR3l0TtKrd8z78no9P5xbsGUmxoDLtsxiw==} + '@aws-sdk/credential-provider-env@3.940.0': + resolution: {integrity: sha512-/G3l5/wbZYP2XEQiOoIkRJmlv15f1P3MSd1a0gz27lHEMrOJOGq66rF1Ca4OJLzapWt3Fy9BPrZAepoAX11kMw==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-env@3.846.0': - resolution: {integrity: sha512-QuCQZET9enja7AWVISY+mpFrEIeHzvkx/JEEbHYzHhUkxcnC2Kq2c0bB7hDihGD0AZd3Xsm653hk1O97qu69zg==} + '@aws-sdk/credential-provider-http@3.940.0': + resolution: {integrity: sha512-dOrc03DHElNBD6N9Okt4U0zhrG4Wix5QUBSZPr5VN8SvmjD9dkrrxOkkJaMCl/bzrW7kbQEp7LuBdbxArMmOZQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-http@3.846.0': - resolution: {integrity: sha512-Jh1iKUuepdmtreMYozV2ePsPcOF5W9p3U4tWhi3v6nDvz0GsBjzjAROW+BW8XMz9vAD3I9R+8VC3/aq63p5nlw==} + '@aws-sdk/credential-provider-ini@3.940.0': + resolution: {integrity: sha512-gn7PJQEzb/cnInNFTOaDoCN/hOKqMejNmLof1W5VW95Qk0TPO52lH8R4RmJPnRrwFMswOWswTOpR1roKNLIrcw==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-ini@3.848.0': - resolution: {integrity: sha512-r6KWOG+En2xujuMhgZu7dzOZV3/M5U/5+PXrG8dLQ3rdPRB3vgp5tc56KMqLwm/EXKRzAOSuw/UE4HfNOAB8Hw==} + '@aws-sdk/credential-provider-login@3.940.0': + resolution: {integrity: sha512-fOKC3VZkwa9T2l2VFKWRtfHQPQuISqqNl35ZhcXjWKVwRwl/o7THPMkqI4XwgT2noGa7LLYVbWMwnsgSsBqglg==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-node@3.848.0': - resolution: {integrity: sha512-AblNesOqdzrfyASBCo1xW3uweiSro4Kft9/htdxLeCVU1KVOnFWA5P937MNahViRmIQm2sPBCqL8ZG0u9lnh5g==} + '@aws-sdk/credential-provider-node@3.940.0': + resolution: {integrity: sha512-M8NFAvgvO6xZjiti5kztFiAYmSmSlG3eUfr4ZHSfXYZUA/KUdZU/D6xJyaLnU8cYRWBludb6K9XPKKVwKfqm4g==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-process@3.846.0': - resolution: {integrity: sha512-mEpwDYarJSH+CIXnnHN0QOe0MXI+HuPStD6gsv3z/7Q6ESl8KRWon3weFZCDnqpiJMUVavlDR0PPlAFg2MQoPg==} + '@aws-sdk/credential-provider-process@3.940.0': + resolution: {integrity: sha512-pILBzt5/TYCqRsJb7vZlxmRIe0/T+FZPeml417EK75060ajDGnVJjHcuVdLVIeKoTKm9gmJc9l45gon6PbHyUQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-sso@3.848.0': - resolution: {integrity: sha512-pozlDXOwJZL0e7w+dqXLgzVDB7oCx4WvtY0sk6l4i07uFliWF/exupb6pIehFWvTUcOvn5aFTTqcQaEzAD5Wsg==} + '@aws-sdk/credential-provider-sso@3.940.0': + resolution: {integrity: sha512-q6JMHIkBlDCOMnA3RAzf8cGfup+8ukhhb50fNpghMs1SNBGhanmaMbZSgLigBRsPQW7fOk2l8jnzdVLS+BB9Uw==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-web-identity@3.848.0': - resolution: {integrity: sha512-D1fRpwPxtVDhcSc/D71exa2gYweV+ocp4D3brF0PgFd//JR3XahZ9W24rVnTQwYEcK9auiBZB89Ltv+WbWN8qw==} + '@aws-sdk/credential-provider-web-identity@3.940.0': + resolution: {integrity: sha512-9QLTIkDJHHaYL0nyymO41H8g3ui1yz6Y3GmAN1gYQa6plXisuFBnGAbmKVj7zNvjWaOKdF0dV3dd3AFKEDoJ/w==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-providers@3.848.0': - resolution: {integrity: sha512-lRDuU05YC+r/1JmRULngJQli7scP5hmq0/7D+xw1s8eRM0H2auaH7LQFlq/SLxQZLMkVNPCrmsug3b3KcLj1NA==} + '@aws-sdk/credential-providers@3.940.0': + resolution: {integrity: sha512-1Thn8cboeJSZlsAwqFmwE6Z7i2/qDM9RiyusUp4M6YLSRumeCTsxR/BokxprOqWVH4ZMMB9cDjpewfkw7myUfQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-host-header@3.840.0': - resolution: {integrity: sha512-ub+hXJAbAje94+Ya6c6eL7sYujoE8D4Bumu1NUI8TXjUhVVn0HzVWQjpRLshdLsUp1AW7XyeJaxyajRaJQ8+Xg==} + '@aws-sdk/middleware-host-header@3.936.0': + resolution: {integrity: sha512-tAaObaAnsP1XnLGndfkGWFuzrJYuk9W0b/nLvol66t8FZExIAf/WdkT2NNAWOYxljVs++oHnyHBCxIlaHrzSiw==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-logger@3.840.0': - resolution: {integrity: sha512-lSV8FvjpdllpGaRspywss4CtXV8M7NNNH+2/j86vMH+YCOZ6fu2T/TyFd/tHwZ92vDfHctWkRbQxg0bagqwovA==} + '@aws-sdk/middleware-logger@3.936.0': + resolution: {integrity: sha512-aPSJ12d3a3Ea5nyEnLbijCaaYJT2QjQ9iW+zGh5QcZYXmOGWbKVyPSxmVOboZQG+c1M8t6d2O7tqrwzIq8L8qw==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-recursion-detection@3.840.0': - resolution: {integrity: sha512-Gu7lGDyfddyhIkj1Z1JtrY5NHb5+x/CRiB87GjaSrKxkDaydtX2CU977JIABtt69l9wLbcGDIQ+W0uJ5xPof7g==} + '@aws-sdk/middleware-recursion-detection@3.936.0': + resolution: {integrity: sha512-l4aGbHpXM45YNgXggIux1HgsCVAvvBoqHPkqLnqMl9QVapfuSTjJHfDYDsx1Xxct6/m7qSMUzanBALhiaGO2fA==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-user-agent@3.848.0': - resolution: {integrity: sha512-rjMuqSWJEf169/ByxvBqfdei1iaduAnfolTshsZxwcmLIUtbYrFUmts0HrLQqsAG8feGPpDLHA272oPl+NTCCA==} + '@aws-sdk/middleware-user-agent@3.940.0': + resolution: {integrity: sha512-nJbLrUj6fY+l2W2rIB9P4Qvpiy0tnTdg/dmixRxrU1z3e8wBdspJlyE+AZN4fuVbeL6rrRrO/zxQC1bB3cw5IA==} engines: {node: '>=18.0.0'} - '@aws-sdk/nested-clients@3.848.0': - resolution: {integrity: sha512-joLsyyo9u61jnZuyYzo1z7kmS7VgWRAkzSGESVzQHfOA1H2PYeUFek6vLT4+c9xMGrX/Z6B0tkRdzfdOPiatLg==} + '@aws-sdk/nested-clients@3.940.0': + resolution: {integrity: sha512-x0mdv6DkjXqXEcQj3URbCltEzW6hoy/1uIL+i8gExP6YKrnhiZ7SzuB4gPls2UOpK5UqLiqXjhRLfBb1C9i4Dw==} engines: {node: '>=18.0.0'} - '@aws-sdk/region-config-resolver@3.840.0': - resolution: {integrity: sha512-Qjnxd/yDv9KpIMWr90ZDPtRj0v75AqGC92Lm9+oHXZ8p1MjG5JE2CW0HL8JRgK9iKzgKBL7pPQRXI8FkvEVfrA==} + '@aws-sdk/region-config-resolver@3.936.0': + resolution: {integrity: sha512-wOKhzzWsshXGduxO4pqSiNyL9oUtk4BEvjWm9aaq6Hmfdoydq6v6t0rAGHWPjFwy9z2haovGRi3C8IxdMB4muw==} engines: {node: '>=18.0.0'} - '@aws-sdk/token-providers@3.848.0': - resolution: {integrity: sha512-oNPyM4+Di2Umu0JJRFSxDcKQ35+Chl/rAwD47/bS0cDPI8yrao83mLXLeDqpRPHyQW4sXlP763FZcuAibC0+mg==} + '@aws-sdk/token-providers@3.940.0': + resolution: {integrity: sha512-k5qbRe/ZFjW9oWEdzLIa2twRVIEx7p/9rutofyrRysrtEnYh3HAWCngAnwbgKMoiwa806UzcTRx0TjyEpnKcCg==} engines: {node: '>=18.0.0'} - '@aws-sdk/types@3.840.0': - resolution: {integrity: sha512-xliuHaUFZxEx1NSXeLLZ9Dyu6+EJVQKEoD+yM+zqUo3YDZ7medKJWY6fIOKiPX/N7XbLdBYwajb15Q7IL8KkeA==} + '@aws-sdk/types@3.936.0': + resolution: {integrity: sha512-uz0/VlMd2pP5MepdrHizd+T+OKfyK4r3OA9JI+L/lPKg0YFQosdJNCKisr6o70E3dh8iMpFYxF1UN/4uZsyARg==} engines: {node: '>=18.0.0'} - '@aws-sdk/util-endpoints@3.848.0': - resolution: {integrity: sha512-fY/NuFFCq/78liHvRyFKr+aqq1aA/uuVSANjzr5Ym8c+9Z3HRPE9OrExAHoMrZ6zC8tHerQwlsXYYH5XZ7H+ww==} + '@aws-sdk/util-endpoints@3.936.0': + resolution: {integrity: sha512-0Zx3Ntdpu+z9Wlm7JKUBOzS9EunwKAb4KdGUQQxDqh5Lc3ta5uBoub+FgmVuzwnmBu9U1Os8UuwVTH0Lgu+P5w==} engines: {node: '>=18.0.0'} - '@aws-sdk/util-locate-window@3.804.0': - resolution: {integrity: sha512-zVoRfpmBVPodYlnMjgVjfGoEZagyRF5IPn3Uo6ZvOZp24chnW/FRstH7ESDHDDRga4z3V+ElUQHKpFDXWyBW5A==} + '@aws-sdk/util-locate-window@3.893.0': + resolution: {integrity: sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==} engines: {node: '>=18.0.0'} - '@aws-sdk/util-user-agent-browser@3.840.0': - resolution: {integrity: sha512-JdyZM3EhhL4PqwFpttZu1afDpPJCCc3eyZOLi+srpX11LsGj6sThf47TYQN75HT1CarZ7cCdQHGzP2uy3/xHfQ==} + '@aws-sdk/util-user-agent-browser@3.936.0': + resolution: {integrity: sha512-eZ/XF6NxMtu+iCma58GRNRxSq4lHo6zHQLOZRIeL/ghqYJirqHdenMOwrzPettj60KWlv827RVebP9oNVrwZbw==} - '@aws-sdk/util-user-agent-node@3.848.0': - resolution: {integrity: sha512-Zz1ft9NiLqbzNj/M0jVNxaoxI2F4tGXN0ZbZIj+KJ+PbJo+w5+Jo6d0UDAtbj3AEd79pjcCaP4OA9NTVzItUdw==} + '@aws-sdk/util-user-agent-node@3.940.0': + resolution: {integrity: sha512-dlD/F+L/jN26I8Zg5x0oDGJiA+/WEQmnSE27fi5ydvYnpfQLwThtQo9SsNS47XSR/SOULaaoC9qx929rZuo74A==} engines: {node: '>=18.0.0'} peerDependencies: aws-crt: '>=1.0.0' @@ -2147,24 +2240,28 @@ packages: aws-crt: optional: true - '@aws-sdk/xml-builder@3.821.0': - resolution: {integrity: sha512-DIIotRnefVL6DiaHtO6/21DhJ4JZnnIwdNbpwiAhdt/AVbttcE4yw925gsjur0OGv5BTYXQXU3YnANBYnZjuQA==} + '@aws-sdk/xml-builder@3.930.0': + resolution: {integrity: sha512-YIfkD17GocxdmlUVc3ia52QhcWuRIUJonbF8A2CYfcWNV3HzvAqpcPeC0bYUhkK+8e8YO1ARnLKZQE0TlwzorA==} + engines: {node: '>=18.0.0'} + + '@aws/lambda-invoke-store@0.2.1': + resolution: {integrity: sha512-sIyFcoPZkTtNu9xFeEoynMef3bPJIAbOfUh+ueYcfhVl6xm2VRtMcMclSxmZCMnHHd4hlYKJeq/aggmBEWynww==} engines: {node: '>=18.0.0'} '@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==} + '@babel/compat-data@7.28.5': + resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==} engines: {node: '>=6.9.0'} - '@babel/core@7.28.0': - resolution: {integrity: sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==} + '@babel/core@7.28.5': + resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} engines: {node: '>=6.9.0'} - '@babel/generator@7.28.0': - resolution: {integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==} + '@babel/generator@7.28.5': + resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} engines: {node: '>=6.9.0'} '@babel/helper-compilation-targets@7.27.2': @@ -2179,8 +2276,8 @@ packages: resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.27.3': - resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==} + '@babel/helper-module-transforms@7.28.3': + resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -2193,20 +2290,20 @@ packages: resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.27.1': - resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} '@babel/helper-validator-option@7.27.1': resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.28.2': - resolution: {integrity: sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==} + '@babel/helpers@7.28.4': + resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.0': - resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} + '@babel/parser@7.28.5': + resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -2301,20 +2398,20 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime@7.28.2': - resolution: {integrity: sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA==} + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} 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.0': - resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} + '@babel/traverse@7.28.5': + resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.2': - resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} + '@babel/types@7.28.5': + resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} engines: {node: '>=6.9.0'} '@balena/dockerignore@1.0.2': @@ -2332,8 +2429,8 @@ packages: engines: {node: '>=14.21.3'} hasBin: true - '@biomejs/biome@2.1.3': - resolution: {integrity: sha512-KE/tegvJIxTkl7gJbGWSgun7G6X/n2M6C35COT6ctYrAy7SiPyNvi6JtoQERVK/VRbttZfgGq96j2bFmhmnH4w==} + '@biomejs/biome@2.3.8': + resolution: {integrity: sha512-Qjsgoe6FEBxWAUzwFGFrB+1+M8y/y5kwmg5CHac+GSVOdmOIqsAiXM5QMVGZJ1eCUCLlPZtq4aFAQ0eawEUuUA==} engines: {node: '>=14.21.3'} hasBin: true @@ -2343,8 +2440,8 @@ packages: cpu: [arm64] os: [darwin] - '@biomejs/cli-darwin-arm64@2.1.3': - resolution: {integrity: sha512-LFLkSWRoSGS1wVUD/BE6Nlt2dSn0ulH3XImzg2O/36BoToJHKXjSxzPEMAqT9QvwVtk7/9AQhZpTneERU9qaXA==} + '@biomejs/cli-darwin-arm64@2.3.8': + resolution: {integrity: sha512-HM4Zg9CGQ3txTPflxD19n8MFPrmUAjaC7PQdLkugeeC0cQ+PiVrd7i09gaBS/11QKsTDBJhVg85CEIK9f50Qww==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] @@ -2355,8 +2452,8 @@ packages: cpu: [x64] os: [darwin] - '@biomejs/cli-darwin-x64@2.1.3': - resolution: {integrity: sha512-Q/4OTw8P9No9QeowyxswcWdm0n2MsdCwWcc5NcKQQvzwPjwuPdf8dpPPf4r+x0RWKBtl1FLiAUtJvBlri6DnYw==} + '@biomejs/cli-darwin-x64@2.3.8': + resolution: {integrity: sha512-lUDQ03D7y/qEao7RgdjWVGCu+BLYadhKTm40HkpJIi6kn8LSv5PAwRlew/DmwP4YZ9ke9XXoTIQDO1vAnbRZlA==} engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] @@ -2367,8 +2464,8 @@ packages: cpu: [arm64] os: [linux] - '@biomejs/cli-linux-arm64-musl@2.1.3': - resolution: {integrity: sha512-KXouFSBnoxAWZYDQrnNRzZBbt5s9UJkIm40hdvSL9mBxSSoxRFQJbtg1hP3aa8A2SnXyQHxQfpiVeJlczZt76w==} + '@biomejs/cli-linux-arm64-musl@2.3.8': + resolution: {integrity: sha512-PShR4mM0sjksUMyxbyPNMxoKFPVF48fU8Qe8Sfx6w6F42verbwRLbz+QiKNiDPRJwUoMG1nPM50OBL3aOnTevA==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] @@ -2379,8 +2476,8 @@ packages: cpu: [arm64] os: [linux] - '@biomejs/cli-linux-arm64@2.1.3': - resolution: {integrity: sha512-2hS6LgylRqMFmAZCOFwYrf77QMdUwJp49oe8PX/O8+P2yKZMSpyQTf3Eo5ewnsMFUEmYbPOskafdV1ds1MZMJA==} + '@biomejs/cli-linux-arm64@2.3.8': + resolution: {integrity: sha512-Uo1OJnIkJgSgF+USx970fsM/drtPcQ39I+JO+Fjsaa9ZdCN1oysQmy6oAGbyESlouz+rzEckLTF6DS7cWse95g==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] @@ -2391,8 +2488,8 @@ packages: cpu: [x64] os: [linux] - '@biomejs/cli-linux-x64-musl@2.1.3': - resolution: {integrity: sha512-KaLAxnROouzIWtl6a0Y88r/4hW5oDUJTIqQorOTVQITaKQsKjZX4XCUmHIhdEk8zMnaiLZzRTAwk1yIAl+mIew==} + '@biomejs/cli-linux-x64-musl@2.3.8': + resolution: {integrity: sha512-YGLkqU91r1276uwSjiUD/xaVikdxgV1QpsicT0bIA1TaieM6E5ibMZeSyjQ/izBn4tKQthUSsVZacmoJfa3pDA==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] @@ -2403,8 +2500,8 @@ packages: cpu: [x64] os: [linux] - '@biomejs/cli-linux-x64@2.1.3': - resolution: {integrity: sha512-NxlSCBhLvQtWGagEztfAZ4WcE1AkMTntZV65ZvR+J9jp06+EtOYEBPQndA70ZGhHbEDG57bR6uNvqkd1WrEYVA==} + '@biomejs/cli-linux-x64@2.3.8': + resolution: {integrity: sha512-QDPMD5bQz6qOVb3kiBui0zKZXASLo0NIQ9JVJio5RveBEFgDgsvJFUvZIbMbUZT3T00M/1wdzwWXk4GIh0KaAw==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] @@ -2415,8 +2512,8 @@ packages: cpu: [arm64] os: [win32] - '@biomejs/cli-win32-arm64@2.1.3': - resolution: {integrity: sha512-V9CUZCtWH4u0YwyCYbQ3W5F4ZGPWp2C2TYcsiWFNNyRfmOW1j/TY/jAurl33SaRjgZPO5UUhGyr9m6BN9t84NQ==} + '@biomejs/cli-win32-arm64@2.3.8': + resolution: {integrity: sha512-H4IoCHvL1fXKDrTALeTKMiE7GGWFAraDwBYFquE/L/5r1927Te0mYIGseXi4F+lrrwhSWbSGt5qPFswNoBaCxg==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [win32] @@ -2427,20 +2524,20 @@ packages: cpu: [x64] os: [win32] - '@biomejs/cli-win32-x64@2.1.3': - resolution: {integrity: sha512-dxy599q6lgp8ANPpR8sDMscwdp9oOumEsVXuVCVT9N2vAho8uYXlCz53JhxX6LtJOXaE73qzgkGQ7QqvFlMC0g==} + '@biomejs/cli-win32-x64@2.3.8': + resolution: {integrity: sha512-RguzimPoZWtBapfKhKjcWXBVI91tiSprqdBYu7tWhgN8pKRZhw24rFeNZTNf6UiBfjCYCi9eFQs/JzJZIhuK4w==} engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] - '@bufbuild/protobuf@2.6.2': - resolution: {integrity: sha512-vLu7SRY84CV/Dd+NUdgtidn2hS5hSMUC1vDBY0VcviTdgRYkU43vIz3vIFbmx14cX1r+mM7WjzE5Fl1fGEM0RQ==} + '@bufbuild/protobuf@2.10.1': + resolution: {integrity: sha512-ckS3+vyJb5qGpEYv/s1OebUHDi/xSNtfgw1wqKZo7MR9F2z+qXr0q5XagafAG/9O0QPVIUfST0smluYSTpYFkg==} '@cfworker/json-schema@4.1.1': resolution: {integrity: sha512-gAmrUZSGtKc3AiBL71iNWxDsyUC5uMaKKGdvzYsBoTW/xi42JQHl7eKV2OYzCUqvc+D2RCcf7EXY2iCyFIk6og==} - '@changesets/apply-release-plan@7.0.12': - resolution: {integrity: sha512-EaET7As5CeuhTzvXTQCRZeBUcisoYPDDcXvgTE/2jmmypKp0RC7LxKj/yzqeh/1qFTZI7oDGFcL1PHRuQuketQ==} + '@changesets/apply-release-plan@7.0.14': + resolution: {integrity: sha512-ddBvf9PHdy2YY0OUiEl3TV78mH9sckndJR14QAt87KLEbIov81XO0q0QAmvooBxXlqRRP8I9B7XOzZwQG7JkWA==} '@changesets/assemble-release-plan@6.0.9': resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} @@ -2448,12 +2545,12 @@ packages: '@changesets/changelog-git@0.2.1': resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} - '@changesets/cli@2.29.5': - resolution: {integrity: sha512-0j0cPq3fgxt2dPdFsg4XvO+6L66RC0pZybT9F4dG5TBrLA3jA/1pNkdTXH9IBBVHkgsKrNKenI3n1mPyPlIydg==} + '@changesets/cli@2.29.8': + resolution: {integrity: sha512-1weuGZpP63YWUYjay/E84qqwcnt5yJMM0tep10Up7Q5cS/DGe2IZ0Uj3HNMxGhCINZuR7aO9WBMdKnPit5ZDPA==} hasBin: true - '@changesets/config@3.1.1': - resolution: {integrity: sha512-bd+3Ap2TKXxljCggI0mKPfzCQKeV/TU4yO2h2C6vAihIo8tzseAn2e7klSuiyYYXvgu53zMN1OeYMIQkaQoWnA==} + '@changesets/config@3.1.2': + resolution: {integrity: sha512-CYiRhA4bWKemdYi/uwImjPxqWNpqGPNbEBdX1BdONALFIDK7MCUj6FPkzD+z9gJcvDFUQJn9aDVf4UG7OT6Kog==} '@changesets/errors@0.2.0': resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} @@ -2461,8 +2558,8 @@ packages: '@changesets/get-dependents-graph@2.1.3': resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==} - '@changesets/get-release-plan@4.0.13': - resolution: {integrity: sha512-DWG1pus72FcNeXkM12tx+xtExyH/c9I1z+2aXlObH3i9YA7+WZEVaiHzHl03thpvAgWTRaH64MpfHxozfF7Dvg==} + '@changesets/get-release-plan@4.0.14': + resolution: {integrity: sha512-yjZMHpUHgl4Xl5gRlolVuxDkm4HgSJqT93Ri1Uz8kGrQb+5iJ8dkXJ20M2j/Y4iV5QzS2c5SeTxVSKX+2eMI0g==} '@changesets/get-version-range-type@0.4.0': resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} @@ -2473,14 +2570,14 @@ packages: '@changesets/logger@0.1.1': resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} - '@changesets/parse@0.4.1': - resolution: {integrity: sha512-iwksMs5Bf/wUItfcg+OXrEpravm5rEd9Bf4oyIPL4kVTmJQ7PNDSd6MDYkpSJR1pn7tz/k8Zf2DhTCqX08Ou+Q==} + '@changesets/parse@0.4.2': + resolution: {integrity: sha512-Uo5MC5mfg4OM0jU3up66fmSn6/NE9INK+8/Vn/7sMVcdWg46zfbvvUSjD9EMonVqPi9fbrJH9SXHn48Tr1f2yA==} '@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/read@0.6.6': + resolution: {integrity: sha512-P5QaN9hJSQQKJShzzpBT13FzOSPyHbqdoIBUd2DJdgvnECCyO6LmAOWSV+O8se2TaZJVwSXjL+v9yhb+a9JeJg==} '@changesets/should-skip-package@0.1.2': resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} @@ -2524,8 +2621,8 @@ packages: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} - '@csstools/color-helpers@5.0.2': - resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} + '@csstools/color-helpers@5.1.0': + resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} engines: {node: '>=18'} '@csstools/css-calc@2.1.4': @@ -2535,8 +2632,8 @@ packages: '@csstools/css-parser-algorithms': ^3.0.5 '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-color-parser@3.0.10': - resolution: {integrity: sha512-TiJ5Ajr6WRd1r8HSiwJvZBiJOqtH86aHpUjq5aEKWHiII2Qfjqd/HCWKPOW8EP4vcspXbHnXrwIDlu5savQipg==} + '@csstools/css-color-parser@3.1.0': + resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} engines: {node: '>=18'} peerDependencies: '@csstools/css-parser-algorithms': ^3.0.5 @@ -2548,16 +2645,25 @@ packages: peerDependencies: '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-syntax-patches-for-csstree@1.0.20': + resolution: {integrity: sha512-8BHsjXfSciZxjmHQOuVdW2b8WLUPts9a+mfL13/PzEviufUEW2xnvQuOlKs9dRBHgRqJ53SF/DUoK9+MZk72oQ==} + engines: {node: '>=18'} + '@csstools/css-tokenizer@3.0.4': resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} engines: {node: '>=18'} - '@dabh/diagnostics@2.0.3': - resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} + '@dabh/diagnostics@2.0.8': + resolution: {integrity: sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==} '@drizzle-team/brocli@0.10.2': resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==} + '@elysiajs/trpc@1.1.0': + resolution: {integrity: sha512-M8QWC+Wa5Z5MWY/+uMQuwZ+JoQkp4jOc1ra4SncFy1zSjFGin59LO1AT0pE+DRJaFV17gha9y7cB6Q7GnaJEAw==} + peerDependencies: + elysia: '>= 1.1.0' + '@esbuild-kit/core-utils@3.3.2': resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} deprecated: 'Merged into tsx: https://tsx.is' @@ -2572,8 +2678,14 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.8': - resolution: {integrity: sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==} + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.27.0': + resolution: {integrity: sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -2590,8 +2702,14 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.8': - resolution: {integrity: sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==} + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.27.0': + resolution: {integrity: sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -2608,8 +2726,14 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.8': - resolution: {integrity: sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==} + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.27.0': + resolution: {integrity: sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -2626,8 +2750,14 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.8': - resolution: {integrity: sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==} + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.27.0': + resolution: {integrity: sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -2644,8 +2774,14 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.8': - resolution: {integrity: sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==} + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.27.0': + resolution: {integrity: sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -2662,8 +2798,14 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.8': - resolution: {integrity: sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==} + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.0': + resolution: {integrity: sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -2680,8 +2822,14 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.8': - resolution: {integrity: sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==} + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.27.0': + resolution: {integrity: sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -2698,8 +2846,14 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.8': - resolution: {integrity: sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==} + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.0': + resolution: {integrity: sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -2716,8 +2870,14 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.8': - resolution: {integrity: sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==} + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.27.0': + resolution: {integrity: sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -2734,8 +2894,14 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.8': - resolution: {integrity: sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==} + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.27.0': + resolution: {integrity: sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -2752,8 +2918,14 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.8': - resolution: {integrity: sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==} + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.27.0': + resolution: {integrity: sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -2770,8 +2942,14 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.8': - resolution: {integrity: sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==} + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.27.0': + resolution: {integrity: sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -2788,8 +2966,14 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.8': - resolution: {integrity: sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==} + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.27.0': + resolution: {integrity: sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -2806,8 +2990,14 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.8': - resolution: {integrity: sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==} + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.27.0': + resolution: {integrity: sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -2824,8 +3014,14 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.8': - resolution: {integrity: sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==} + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.27.0': + resolution: {integrity: sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -2842,8 +3038,14 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.8': - resolution: {integrity: sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==} + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.27.0': + resolution: {integrity: sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -2860,14 +3062,26 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.8': - resolution: {integrity: sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==} + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.8': - resolution: {integrity: sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==} + '@esbuild/linux-x64@0.27.0': + resolution: {integrity: sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-arm64@0.27.0': + resolution: {integrity: sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -2884,14 +3098,26 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.8': - resolution: {integrity: sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==} + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.0': + resolution: {integrity: sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.8': - resolution: {integrity: sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==} + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-arm64@0.27.0': + resolution: {integrity: sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -2908,14 +3134,26 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.8': - resolution: {integrity: sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==} + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.0': + resolution: {integrity: sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.8': - resolution: {integrity: sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==} + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/openharmony-arm64@0.27.0': + resolution: {integrity: sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] @@ -2932,8 +3170,14 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.8': - resolution: {integrity: sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==} + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.27.0': + resolution: {integrity: sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -2950,8 +3194,14 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.8': - resolution: {integrity: sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==} + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.27.0': + resolution: {integrity: sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -2968,8 +3218,14 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.8': - resolution: {integrity: sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==} + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.27.0': + resolution: {integrity: sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -2986,8 +3242,14 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.8': - resolution: {integrity: sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==} + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.27.0': + resolution: {integrity: sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -3046,6 +3308,24 @@ packages: resolution: {integrity: sha512-6/p5r8VypKuKHwSv9ylu2ASWXJdkB5i/0h2nUGiSxJ9LBqI2q5YBrkfxuMddu/kzJyWPFsocDcE1DJEQNFrFQw==} engines: {node: '>=14.16.0'} + '@goatlab/fluent@0.9.17': + resolution: {integrity: sha512-Ne9NBOdI274rMXA5WKsLeihM7mQdEAvN5lGalsKMr6gaM6kaWbpkiJx8RXlqqmA/Bbf4ZQAbmtB3Joxu9TSfPg==} + engines: {node: '>=14.16.0'} + + '@goatlab/js-utils@0.10.2': + resolution: {integrity: sha512-QTpkutQyfkEggIg3wx9iUSGj6cJHy4AvVObue1KoNJJHgNf2OYkFMu6x+aZRvhY02DzWTpgByN/xnOd+aUTBEA==} + + '@goatlab/node-backend@1.1.10': + resolution: {integrity: sha512-In8cVHFubJQiqJPSKVAUNnbkDn6KrrKM6qhH+DOfrDT6ZfDsVxZ8AeCZcu5EjysQE18eEzFZ/FFHnmh5uyHvKA==} + engines: {node: '>=14.16.0'} + + '@goatlab/node-utils@0.10.4': + resolution: {integrity: sha512-z6U3jOJpXaOVkp06nw/+Kr0gyTS14i5gLEc7u2oVVulFUINrw+0QMYvJDmBuuQ4m5j1s0cqxcOF8dkdqJp55nA==} + engines: {node: '>=14.16.0'} + + '@goatlab/tsconfig@0.1.0': + resolution: {integrity: sha512-79bqxo1uv9v5W5YMZZUsZAeon7idVgc5u2xtT49d38nxz1OCZG8xQPsZToHoxFr9vW7Bfx/c2vbaJc3xdU1ZjA==} + '@google-cloud/common@0.17.0': resolution: {integrity: sha512-HRZLSU762E6HaKoGfJGa8W95yRjb9rY7LePhjaHK9ILAnFacMuUGVamDbTHu1csZomm1g3tZTtXfX/aAhtie/Q==} engines: {node: '>=4.0.0'} @@ -3064,8 +3344,8 @@ packages: peerDependencies: winston: '>=3.2.1' - '@google-cloud/logging@11.2.0': - resolution: {integrity: sha512-Ma94jvuoMpbgNniwtelOt8w82hxK62FuOXZonEv0Hyk3B+/YVuLG/SWNyY9yMso/RXnPEc1fP2qo9kDrjf/b2w==} + '@google-cloud/logging@11.2.1': + resolution: {integrity: sha512-2h9HBJG3OAsvzXmb81qXmaTPfXYU7KJTQUxunoOKFGnY293YQ/eCkW1Y5mHLocwpEqeqQYT/Qvl6Tk+Q7PfStw==} engines: {node: '>=14.0.0'} '@google-cloud/paginator@3.0.7': @@ -3088,9 +3368,9 @@ packages: resolution: {integrity: sha512-z1CjRjtQyBOYL+5Qr9DdYIfrdLBe746jRTYfaYU6MeXkqp7UfYs/jX16lFFVzZ7PGEJvqZNqYUEtb1mvDww4pA==} engines: {node: '>=12'} - '@google-cloud/promisify@4.1.0': - resolution: {integrity: sha512-G/FQx5cE/+DqBbOpA5jKsegGwdPniU6PuIEMt+qxWgFxvxuFOzVmp6zYchtYuwAWV5/8Dgs0yAmjvNZv3uXLQg==} - engines: {node: '>=18'} + '@google-cloud/promisify@4.0.0': + resolution: {integrity: sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==} + engines: {node: '>=14'} '@google-cloud/storage@1.7.0': resolution: {integrity: sha512-QaAxzCkbhspwajoaEnT0GcnQcpjPRcBrHYuQsXtD05BtOJgVnHCLXSsfUiRdU0nVpK+Thp7+sTkQ0fvk5PanKg==} @@ -3100,12 +3380,12 @@ packages: resolution: {integrity: sha512-78nNAY7iiZ4O/BouWMWTD/oSF2YtYgYB3GZirn0To6eBOugjXVoK+GXgUXOl+HlqbAOyHxAVXOlsj3snfbQ1dw==} engines: {node: '>=12'} - '@google-cloud/tasks@6.2.0': - resolution: {integrity: sha512-LHnmkhaMWoVTU7mYMtlNy++Gva2273vATiHYbmxN4QJ8cHXcFHynYByZvCxUqW/ehANheQZ5d/JVS8Q21Gui8w==} + '@google-cloud/tasks@6.2.1': + resolution: {integrity: sha512-Y21jNAdaUwZvYQijJSE9E27NA87c/Wl9fZxNDGx6WsWFFGEBmJmc1zg2fXLXTW0kPvKIxHQC+IcKa9SNgvIEsQ==} engines: {node: '>=18'} - '@grpc/grpc-js@1.13.4': - resolution: {integrity: sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg==} + '@grpc/grpc-js@1.14.1': + resolution: {integrity: sha512-sPxgEWtPUR3EnRJCEtbGZG2iX8LQDUls2wUS3o27jg07KqJFMq6YDeWvMo1wfpmy3rqRdS0rivpLwhqQtEyCuQ==} engines: {node: '>=12.10.0'} '@grpc/grpc-js@1.8.22': @@ -3117,17 +3397,44 @@ packages: engines: {node: '>=6'} hasBin: true + '@grpc/proto-loader@0.8.0': + resolution: {integrity: sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ==} + engines: {node: '>=6'} + hasBin: true + '@hapi/bourne@3.0.0': resolution: {integrity: sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==} - '@hatchet-dev/typescript-sdk@1.9.3': - resolution: {integrity: sha512-TzUDsUqx0Rsypfq/fP5XUyGQfcym7oCTY5OEFflPo/mx+Znq5b4NwyfNwFqfBmM88+bqcQFGu+U0nznrbuEV4w==} + '@hatchet-dev/typescript-sdk@1.10.3': + resolution: {integrity: sha512-sCPH+HiyqXt+T4+8nOrv94a6b6ExHyLh1VNDkgJiGU+QXr/g6lL1kqoOzq3m1H6lf3OuHyYA3o2G0h45BQhYIQ==} + + '@hono/node-server@1.19.6': + resolution: {integrity: sha512-Shz/KjlIeAhfiuE93NDKVdZ7HdBVLQAfdbaXEaoAVO3ic9ibRSLGIQGkcBbFyuLr+7/1D5ZCINM8B+6IvXeMtw==} + engines: {node: '>=18.14.1'} + peerDependencies: + hono: ^4 + + '@hono/trpc-server@0.3.4': + resolution: {integrity: sha512-xFOPjUPnII70FgicDzOJy1ufIoBTu8eF578zGiDOrYOrYN8CJe140s9buzuPkX+SwJRYK8LjEBHywqZtxdm8aA==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@trpc/server': ^10.10.0 || >11.0.0-rc + hono: '>=4.*' '@iarna/toml@2.2.5': resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} - '@ioredis/commands@1.3.0': - resolution: {integrity: sha512-M/T6Zewn7sDaBQEqIZ8Rb+i9y8qfGmq+5SDFSf9sA2lUZTmdDLVdOiQaeDp+Q4wElZ9HG1GAX5KhDaidp6LQsQ==} + '@inquirer/external-editor@1.0.3': + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@ioredis/commands@1.4.0': + resolution: {integrity: sha512-aFT2yemJJo+TZCmieA7qnYGQooOS7QfNmYrzGtsYd3g9j5iDP8AimYYAesf79ohjbLG12XxC4nG5DyEnC88AsQ==} '@isaacs/balanced-match@4.0.1': resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} @@ -3153,10 +3460,6 @@ packages: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - '@jclem/logfmt2@2.4.3': - resolution: {integrity: sha512-d7zluLlx+JRtVICF0+ghcrVdXBdE3eXrpIuFdcCcWxA3ABOyemkTySG4ha2AdsWFwAnh8tkB1vtyeZsWAbLumg==} - engines: {node: '>= 14.x', npm: '>= 7.x'} - '@jest/console@29.7.0': resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3347,18 +3650,21 @@ packages: resolution: {integrity: sha512-gqFTGEosKbOkYF/WFj26jMHOI5OH2jeP1MmC/zbK6BF6VJBf8rIC5898dPfSzZEbSA0wbbV5slbntWVc5PKLFA==} engines: {node: '>=18'} - '@jridgewell/gen-mapping@0.3.12': - resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.5.4': - resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@jridgewell/trace-mapping@0.3.29': - resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} @@ -3374,20 +3680,20 @@ packages: resolution: {integrity: sha512-eyqzomQC76LjUOEkPP8rdR2Fk4eZBSS0Ma47i7CNiQuv8NCw3trZvghx8L5Xruk7XPEj/eRAMrAxP//xQFOPdQ==} engines: {node: '>= 18'} - '@keyvhq/core@2.1.7': - resolution: {integrity: sha512-+XLdAto9ItxJcc5g11QRmuGTppn3lLkjR3+UrK1RsQow/piNlXIJKWls4duZWlxgzxTYUykyrMBnmY8ByFOT7A==} + '@keyvhq/core@2.1.11': + resolution: {integrity: sha512-17xBRTwkRnvx1vsIO2j7xUKNh6L1kLSRLuy+4TvcSSO0bi1VrbYhbRiT5AgLYdlnBlRDiRYOYxLGZnzY3mD8tA==} engines: {node: '>= 18'} - '@keyvhq/memoize@2.1.9': - resolution: {integrity: sha512-2Mx3HRTZRvNRwyOinU8dTcjX+f6TDaQQDpJ8+NmF9ntKYALUvNtHlz42SS2Ls2dDEqXw0q/mGfOBKLt61mDJ0g==} + '@keyvhq/memoize@2.1.11': + resolution: {integrity: sha512-C+Cuj8s3KWxHEfiei4RSsSAUGl2Wo+p8c/ReQVXsQvpbwH0P3+dNy2S5T0cT2bH0Ew5PDCfHMSRPdDPN05j/Fw==} engines: {node: '>= 18'} - '@kikobeats/time-span@1.0.6': - resolution: {integrity: sha512-GZS6SI1o5NWHEOpCa4CpofOkfitR4xjRY3ZwAm85VQIXTPtYvUv9bDI9qRvlgNUX04kWhC3LxnNjM1jwD4h0aA==} + '@kikobeats/time-span@1.0.11': + resolution: {integrity: sha512-S+msolgD9aPVoJ+ZomVD0WSKm+qJBKvJimzwq8dMvlGKbIPsAyEWhHHdSRuQT3g2VpDIctvbi9nU++kN/VPZaw==} engines: {node: '>= 18'} - '@langchain/core@0.3.66': - resolution: {integrity: sha512-d3SgSDOlgOjdIbReIXVQl9HaQzKqO/5+E+o3kJwoKXLGP9dxi7+lMyaII7yv7G8/aUxMWLwFES9zc1jFoeJEZw==} + '@langchain/core@0.3.79': + resolution: {integrity: sha512-ZLAs5YMM5N2UXN3kExMglltJrKKoW7hs3KMZFlXUnD7a5DFKBYxPFMeXA4rT+uvTxuJRZPCYX0JKI5BhyAWx4A==} engines: {node: '>=18'} '@langchain/langgraph-checkpoint-sqlite@0.1.5': @@ -3403,8 +3709,8 @@ packages: peerDependencies: '@langchain/core': '>=0.2.31 <0.4.0' - '@langchain/langgraph-sdk@0.0.102': - resolution: {integrity: sha512-O2jZbzbIObddbS1lWR5yu+GCjC6L1kg6VHIySJGAulyBwmaAZLbvJUKwL2jUehYQxAgabI859jEKP7VSmhxeLA==} + '@langchain/langgraph-sdk@0.0.112': + resolution: {integrity: sha512-/9W5HSWCqYgwma6EoOspL4BGYxGxeJP6lIquPSF4FA0JlKopaUv58ucZC3vAgdJyCgg6sorCIV/qg7SGpEcCLw==} peerDependencies: '@langchain/core': '>=0.2.31 <0.4.0' react: ^18 || ^19 @@ -3430,8 +3736,8 @@ packages: '@leichtgewicht/ip-codec@2.0.5': resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} - '@loopback/metadata@8.0.2': - resolution: {integrity: sha512-B9P1Rnp+aCbd5HcXSdXJ8wxVvsDnKGhPZdzO4aoqCUiGUjPN0O9w4gReQHycr0Ss4mva1oBCM5f/PgFD1q3LVw==} + '@loopback/metadata@8.0.6': + resolution: {integrity: sha512-imvk4Mu2H+dajQBt9Hg8jvRCFxZ/OHkUGLoajRwSbDArHGHWUi8v357Vz/fPSunBsuGChkKTCmqE9wio+dDXaw==} engines: {node: 20 || 22 || 24} '@lukeed/csprng@1.1.0': @@ -3448,16 +3754,20 @@ packages: '@manypkg/get-packages@1.1.3': resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - '@metascraper/helpers@5.49.1': - resolution: {integrity: sha512-5q1H3IwhQQi64qjvi3DfYSTulFCSgrqukhXF05IffgBS9dlegzaSAql8NXvYF4DgiQzwnXax/wrBrpNUddD2sg==} + '@metascraper/helpers@5.49.2': + resolution: {integrity: sha512-SfcbELN5ZjU9oIUGCiquLsPSAGHhfd6IstSj4l27e7yO6mdPm2yCeiZMfSTQtGQnUPxbJ2Lha95Hec/53nU1Pw==} + engines: {node: '>= 16'} + + '@metascraper/helpers@5.49.5': + resolution: {integrity: sha512-VbXquXB+U9g84XaazoTHF3MMVqnxBDnEAUfnpRnj7w2GV4imlqxjLgWlfixWtkcuR859mUEszniuxJ/L0NBXyw==} engines: {node: '>= 16'} - '@mikro-orm/core@6.4.16': - resolution: {integrity: sha512-BW/My1VlI0R25Eojdh0UiET8J+mEruThksGVfllEnjJQ0uwGs3mm/TbMclv0g+d7Qp4+mpzDQU4+lIo8okHYsw==} + '@mikro-orm/core@6.6.1': + resolution: {integrity: sha512-MoxktUDHam+VuE3vSxAQ0TSfKqxh4pdH7/W0s5i6TBftrwMMTlTLBaYxfoBGm6PVXiuPtmr/yyMRpDfr06X1FQ==} engines: {node: '>= 18.12.0'} - '@mikro-orm/knex@6.4.16': - resolution: {integrity: sha512-2xQodj3uh8maPGsLR7PZMmECtdyLutGxzzrGrrhSX2b+7v9k4MeMazTi4/627hJvivdUpuofypW5zMpw3TU1vQ==} + '@mikro-orm/knex@6.6.1': + resolution: {integrity: sha512-fclNi9NOCGyzqCMq5HTm1j+hzrwdDWyK8wjz2e0f/AiUYA8kqC92WzPD7bq91eJAsiGIEVXBW5tT2q0xc8cnLQ==} engines: {node: '>= 18.12.0'} peerDependencies: '@mikro-orm/core': ^6.0.0 @@ -3472,8 +3782,8 @@ packages: mariadb: optional: true - '@mikro-orm/mysql@6.4.16': - resolution: {integrity: sha512-YYCEWtVRjCOU642QD/1iENmPJw8tpP1WpL4hZuRhWClIZp+D2K1U1y6UCdthGKMxqgOPf48ehJBU49aAC7kmnw==} + '@mikro-orm/mysql@6.6.1': + resolution: {integrity: sha512-clhMwdT2AJqwoYvYmSYlAWON2NUYZXM4zOPfM9JLGXKTVQYUx9kxTBlhAT4VCk1b0tu43p9XexcS/Re4AvQnDw==} engines: {node: '>= 18.12.0'} peerDependencies: '@mikro-orm/core': ^6.0.0 @@ -3481,8 +3791,8 @@ packages: '@modelcontextprotocol/sdk@0.5.0': resolution: {integrity: sha512-RXgulUX6ewvxjAG0kOpLMEdXXWkzWgaoCGaA2CwNW7cQCIphjpJhjpHSiaPdVCnisjRF/0Cm9KWHUuIoeiAblQ==} - '@mongodb-js/saslprep@1.3.0': - resolution: {integrity: sha512-zlayKCsIjYb7/IdfqxorK5+xUMyi4vOKcFy10wKJYc63NSdKI8mNME+uJqfatkPmOSMMUiojrL58IePKBm3gvQ==} + '@mongodb-js/saslprep@1.3.2': + resolution: {integrity: sha512-QgA5AySqB27cGTXBFmnpifAi7HxoGUeezwo6p9dI03MuDB6Pp33zgclqVb6oVK3j6I9Vesg0+oojW2XxB59SGg==} '@noble/hashes@1.8.0': resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} @@ -4277,8 +4587,8 @@ packages: resolution: {integrity: sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==} engines: {node: '>=14'} - '@opentelemetry/semantic-conventions@1.36.0': - resolution: {integrity: sha512-TtxJSRD8Ohxp6bKkhrm27JRHAxPczQA7idtcTOMYI+wQRRrfgqxHv1cFbCApcSnNjtXkmzFozn6jQtFrOmbjPQ==} + '@opentelemetry/semantic-conventions@1.38.0': + resolution: {integrity: sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==} engines: {node: '>=14'} '@opentelemetry/sql-common@0.40.1': @@ -4287,8 +4597,11 @@ packages: peerDependencies: '@opentelemetry/api': ^1.1.0 - '@paralleldrive/cuid2@2.2.2': - resolution: {integrity: sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==} + '@paralleldrive/cuid2@2.3.1': + resolution: {integrity: sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==} + + '@pinojs/redact@0.4.0': + resolution: {integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==} '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} @@ -4363,38 +4676,38 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@puppeteer/browsers@2.10.6': - resolution: {integrity: sha512-pHUn6ZRt39bP3698HFQlu2ZHCkS/lPcpv7fVQcGBSzNNygw171UXAKrCUhy+TEMw4lEttOKDgNpb04hwUAJeiQ==} + '@puppeteer/browsers@2.10.13': + resolution: {integrity: sha512-a9Ruw3j3qlnB5a/zHRTkruppynxqaeE4H9WNj5eYGRWqw0ZauZ23f4W2ARf3hghF5doozyD+CRtt7XSYuYRI/Q==} engines: {node: '>=18'} hasBin: true - '@redis/bloom@5.6.1': - resolution: {integrity: sha512-5/22U76IMEfn6TeZ+uvjXspHw+ykBF0kpBa8xouzeHaQMXs/auqBUOEYzU2VKYDvnd2RSpPTyIg82oB7PpUgLg==} + '@redis/bloom@5.10.0': + resolution: {integrity: sha512-doIF37ob+l47n0rkpRNgU8n4iacBlKM9xLiP1LtTZTvz8TloJB8qx/MgvhMhKdYG+CvCY2aPBnN2706izFn/4A==} engines: {node: '>= 18'} peerDependencies: - '@redis/client': ^5.6.1 + '@redis/client': ^5.10.0 - '@redis/client@5.6.1': - resolution: {integrity: sha512-bWHmSFIJ5w1Y4aHsYs46XMDHKQsBHFRhNcllYaBxz2Zl+lu+gbm5yI9BqxvKh48bLTs/Wx1Kns0gN2WIasE8MA==} + '@redis/client@5.10.0': + resolution: {integrity: sha512-JXmM4XCoso6C75Mr3lhKA3eNxSzkYi3nCzxDIKY+YOszYsJjuKbFgVtguVPbLMOttN4iu2fXoc2BGhdnYhIOxA==} engines: {node: '>= 18'} - '@redis/json@5.6.1': - resolution: {integrity: sha512-cTggVzPIVuiFeXcEcnTRiUzV7rmUvM9KUYxWiHyjsAVACTEUe4ifKkvzrij0H/z3ammU5tfGACffDB3olBwtVA==} + '@redis/json@5.10.0': + resolution: {integrity: sha512-B2G8XlOmTPUuZtD44EMGbtoepQG34RCDXLZbjrtON1Djet0t5Ri7/YPXvL9aomXqP8lLTreaprtyLKF4tmXEEA==} engines: {node: '>= 18'} peerDependencies: - '@redis/client': ^5.6.1 + '@redis/client': ^5.10.0 - '@redis/search@5.6.1': - resolution: {integrity: sha512-+eOjx8O2YoKygjqkLpTHqcAq0zKLjior+ee2tRBx/3RSf1+OHxiC9Y6NstshQpvB1XHqTw9n7+f0+MsRJZrp0g==} + '@redis/search@5.10.0': + resolution: {integrity: sha512-3SVcPswoSfp2HnmWbAGUzlbUPn7fOohVu2weUQ0S+EMiQi8jwjL+aN2p6V3TI65eNfVsJ8vyPvqWklm6H6esmg==} engines: {node: '>= 18'} peerDependencies: - '@redis/client': ^5.6.1 + '@redis/client': ^5.10.0 - '@redis/time-series@5.6.1': - resolution: {integrity: sha512-sd3q4jMJdoSO2akw1L9NrdFI1JJ6zeMgMUoTh4a34p9sY3AnOI4aDLCecy8L2IcPAP1oNR3TbLFJiCJDQ35QTA==} + '@redis/time-series@5.10.0': + resolution: {integrity: sha512-cPkpddXH5kc/SdRhF0YG0qtjL+noqFT0AcHbQ6axhsPsO7iqPi1cjxgdkE9TNeKiBUUdCaU1DbqkR/LzbzPBhg==} engines: {node: '>= 18'} peerDependencies: - '@redis/client': ^5.6.1 + '@redis/client': ^5.10.0 '@remusao/guess-url-type@1.3.0': resolution: {integrity: sha512-SNSJGxH5ckvxb3EUHj4DqlAm/bxNxNv2kx/AESZva/9VfcBokwKNS+C4D1lQdWIDM1R3d3UG+xmVzlkNG8CPTQ==} @@ -4414,8 +4727,8 @@ packages: '@remusao/trie@1.5.0': resolution: {integrity: sha512-UX+3utJKgwCsg6sUozjxd38gNMVRXrY4TNX9VvCdSrlZBS1nZjRPi98ON3QjRAdf6KCguJFyQARRsulTeqQiPg==} - '@rollup/pluginutils@5.2.0': - resolution: {integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==} + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -4423,83 +4736,83 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.46.1': - resolution: {integrity: sha512-oENme6QxtLCqjChRUUo3S6X8hjCXnWmJWnedD7VbGML5GUtaOtAyx+fEEXnBXVf0CBZApMQU0Idwi0FmyxzQhw==} + '@rollup/rollup-android-arm-eabi@4.53.3': + resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.46.1': - resolution: {integrity: sha512-OikvNT3qYTl9+4qQ9Bpn6+XHM+ogtFadRLuT2EXiFQMiNkXFLQfNVppi5o28wvYdHL2s3fM0D/MZJ8UkNFZWsw==} + '@rollup/rollup-android-arm64@4.53.3': + resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.46.1': - resolution: {integrity: sha512-EFYNNGij2WllnzljQDQnlFTXzSJw87cpAs4TVBAWLdkvic5Uh5tISrIL6NRcxoh/b2EFBG/TK8hgRrGx94zD4A==} + '@rollup/rollup-darwin-arm64@4.53.3': + resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.46.1': - resolution: {integrity: sha512-ZaNH06O1KeTug9WI2+GRBE5Ujt9kZw4a1+OIwnBHal92I8PxSsl5KpsrPvthRynkhMck4XPdvY0z26Cym/b7oA==} + '@rollup/rollup-darwin-x64@4.53.3': + resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.46.1': - resolution: {integrity: sha512-n4SLVebZP8uUlJ2r04+g2U/xFeiQlw09Me5UFqny8HGbARl503LNH5CqFTb5U5jNxTouhRjai6qPT0CR5c/Iig==} + '@rollup/rollup-freebsd-arm64@4.53.3': + resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.46.1': - resolution: {integrity: sha512-8vu9c02F16heTqpvo3yeiu7Vi1REDEC/yES/dIfq3tSXe6mLndiwvYr3AAvd1tMNUqE9yeGYa5w7PRbI5QUV+w==} + '@rollup/rollup-freebsd-x64@4.53.3': + resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.46.1': - resolution: {integrity: sha512-K4ncpWl7sQuyp6rWiGUvb6Q18ba8mzM0rjWJ5JgYKlIXAau1db7hZnR0ldJvqKWWJDxqzSLwGUhA4jp+KqgDtQ==} + '@rollup/rollup-linux-arm-gnueabihf@4.53.3': + resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.46.1': - resolution: {integrity: sha512-YykPnXsjUjmXE6j6k2QBBGAn1YsJUix7pYaPLK3RVE0bQL2jfdbfykPxfF8AgBlqtYbfEnYHmLXNa6QETjdOjQ==} + '@rollup/rollup-linux-arm-musleabihf@4.53.3': + resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.46.1': - resolution: {integrity: sha512-kKvqBGbZ8i9pCGW3a1FH3HNIVg49dXXTsChGFsHGXQaVJPLA4f/O+XmTxfklhccxdF5FefUn2hvkoGJH0ScWOA==} + '@rollup/rollup-linux-arm64-gnu@4.53.3': + resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.46.1': - resolution: {integrity: sha512-zzX5nTw1N1plmqC9RGC9vZHFuiM7ZP7oSWQGqpbmfjK7p947D518cVK1/MQudsBdcD84t6k70WNczJOct6+hdg==} + '@rollup/rollup-linux-arm64-musl@4.53.3': + resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.46.1': - resolution: {integrity: sha512-O8CwgSBo6ewPpktFfSDgB6SJN9XDcPSvuwxfejiddbIC/hn9Tg6Ai0f0eYDf3XvB/+PIWzOQL+7+TZoB8p9Yuw==} + '@rollup/rollup-linux-loong64-gnu@4.53.3': + resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.46.1': - resolution: {integrity: sha512-JnCfFVEKeq6G3h3z8e60kAp8Rd7QVnWCtPm7cxx+5OtP80g/3nmPtfdCXbVl063e3KsRnGSKDHUQMydmzc/wBA==} + '@rollup/rollup-linux-ppc64-gnu@4.53.3': + resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.46.1': - resolution: {integrity: sha512-dVxuDqS237eQXkbYzQQfdf/njgeNw6LZuVyEdUaWwRpKHhsLI+y4H/NJV8xJGU19vnOJCVwaBFgr936FHOnJsQ==} + '@rollup/rollup-linux-riscv64-gnu@4.53.3': + resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.46.1': - resolution: {integrity: sha512-CvvgNl2hrZrTR9jXK1ye0Go0HQRT6ohQdDfWR47/KFKiLd5oN5T14jRdUVGF4tnsN8y9oSfMOqH6RuHh+ck8+w==} + '@rollup/rollup-linux-riscv64-musl@4.53.3': + resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.46.1': - resolution: {integrity: sha512-x7ANt2VOg2565oGHJ6rIuuAon+A8sfe1IeUx25IKqi49OjSr/K3awoNqr9gCwGEJo9OuXlOn+H2p1VJKx1psxA==} + '@rollup/rollup-linux-s390x-gnu@4.53.3': + resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.46.1': - resolution: {integrity: sha512-9OADZYryz/7E8/qt0vnaHQgmia2Y0wrjSSn1V/uL+zw/i7NUhxbX4cHXdEQ7dnJgzYDS81d8+tf6nbIdRFZQoQ==} + '@rollup/rollup-linux-x64-gnu@4.53.3': + resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} cpu: [x64] os: [linux] @@ -4508,23 +4821,33 @@ packages: cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.46.1': - resolution: {integrity: sha512-NuvSCbXEKY+NGWHyivzbjSVJi68Xfq1VnIvGmsuXs6TCtveeoDRKutI5vf2ntmNnVq64Q4zInet0UDQ+yMB6tA==} + '@rollup/rollup-linux-x64-musl@4.53.3': + resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.46.1': - resolution: {integrity: sha512-mWz+6FSRb82xuUMMV1X3NGiaPFqbLN9aIueHleTZCc46cJvwTlvIh7reQLk4p97dv0nddyewBhwzryBHH7wtPw==} + '@rollup/rollup-openharmony-arm64@4.53.3': + resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.53.3': + resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.46.1': - resolution: {integrity: sha512-7Thzy9TMXDw9AU4f4vsLNBxh7/VOKuXi73VH3d/kHGr0tZ3x/ewgL9uC7ojUKmH1/zvmZe2tLapYcZllk3SO8Q==} + '@rollup/rollup-win32-ia32-msvc@4.53.3': + resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.46.1': - resolution: {integrity: sha512-7GVB4luhFmGUNXXJhH2jJwZCFB3pIOixv2E3s17GQHBFUOQaISlt7aGcQgqvCaDSxTZJUzlK/QJ1FN8S94MrzQ==} + '@rollup/rollup-win32-x64-gnu@4.53.3': + resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.53.3': + resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==} cpu: [x64] os: [win32] @@ -4535,12 +4858,12 @@ packages: resolution: {integrity: sha512-oLHVYurqZfADPh5hvmQYS5qx8t0UZzT2u6+/68VXsFruQEOnYJTODKgU3BVLmemRs3WE6kCJjPeFdHVYOQGSzQ==} engines: {node: '>=18'} - '@sentry/core@9.42.0': - resolution: {integrity: sha512-AsfB2eklY09GGsCLC2r0pvh/h3tgr9Co3CB7XisEfzhoQH9RaEb0XeIVLyfo+503ktdlPTjH24j4Zpts4y0Jmg==} + '@sentry/core@9.47.1': + resolution: {integrity: sha512-KX62+qIt4xgy8eHKHiikfhz2p5fOciXd0Cl+dNzhgPFq8klq4MGMNaf148GB3M/vBqP4nw/eFvRMAayFCgdRQw==} engines: {node: '>=18'} - '@sentry/node-core@9.42.0': - resolution: {integrity: sha512-j0zLLatut3tY+KdHqAn1t2lih+RnR2sDUJagq+swZZFgja0nsWybm3kzPN4n2aRB7yLvjU40n8oj8vi2qBK41g==} + '@sentry/node-core@9.47.1': + resolution: {integrity: sha512-7TEOiCGkyShJ8CKtsri9lbgMCbB+qNts2Xq37itiMPN2m+lIukK3OX//L8DC5nfKYZlgikrefS63/vJtm669hQ==} engines: {node: '>=18'} peerDependencies: '@opentelemetry/api': ^1.9.0 @@ -4551,12 +4874,12 @@ packages: '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.0.0 '@opentelemetry/semantic-conventions': ^1.34.0 - '@sentry/node@9.42.0': - resolution: {integrity: sha512-SrfSTy570zk1ucRy5qSZ94eXj7E26ZAJ1jS7mJtUFLu2fwJt39qtbqfDncXneBJcKzLvXE6WSLVlH/WfwQ5lKg==} + '@sentry/node@9.47.1': + resolution: {integrity: sha512-CDbkasBz3fnWRKSFs6mmaRepM2pa+tbZkrqhPWifFfIkJDidtVW40p6OnquTvPXyPAszCnDZRnZT14xyvNmKPQ==} engines: {node: '>=18'} - '@sentry/opentelemetry@9.42.0': - resolution: {integrity: sha512-RdF2Pps9XH+oQpb/yBzG4+RyrQc5eJ55zi+kzY1cG5asPxqKfgBrniy9Q2szy3YJpvN73T//aPrasXuCTgWohg==} + '@sentry/opentelemetry@9.47.1': + resolution: {integrity: sha512-STtFpjF7lwzeoedDJV+5XA6P89BfmFwFftmHSGSe3UTI8z8IoiR5yB6X2vCjSPvXlfeOs13qCNNCEZyznxM8Xw==} engines: {node: '>=18'} peerDependencies: '@opentelemetry/api': ^1.9.0 @@ -4565,13 +4888,13 @@ packages: '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.0.0 '@opentelemetry/semantic-conventions': ^1.34.0 - '@sentry/profiling-node@9.42.0': - resolution: {integrity: sha512-PangGU7zshuGAmRKEEoeeWI2YFynWc9baB6QJhQDAfd9mHisprhJMN2Gdz8w6wl7eNsW1dxLBJnw4swe7JIw7w==} + '@sentry/profiling-node@9.47.1': + resolution: {integrity: sha512-4Llq0it2nL/1iJcEEm3JwdRyvRAjYuoS0MB9+9eKRaCJBIj//3fOcyjw75BbhdSFBhkDMRv2W5b3gn9oPrJAHA==} engines: {node: '>=18'} hasBin: true - '@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@0.14.0': resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} @@ -4601,174 +4924,181 @@ packages: '@sinonjs/fake-timers@8.1.0': resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} - '@smithy/abort-controller@4.0.4': - resolution: {integrity: sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==} + '@smithy/abort-controller@4.2.5': + resolution: {integrity: sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==} engines: {node: '>=18.0.0'} - '@smithy/config-resolver@4.1.4': - resolution: {integrity: sha512-prmU+rDddxHOH0oNcwemL+SwnzcG65sBF2yXRO7aeXIn/xTlq2pX7JLVbkBnVLowHLg4/OL4+jBmv9hVrVGS+w==} + '@smithy/config-resolver@4.4.3': + resolution: {integrity: sha512-ezHLe1tKLUxDJo2LHtDuEDyWXolw8WGOR92qb4bQdWq/zKenO5BvctZGrVJBK08zjezSk7bmbKFOXIVyChvDLw==} engines: {node: '>=18.0.0'} - '@smithy/core@3.7.2': - resolution: {integrity: sha512-JoLw59sT5Bm8SAjFCYZyuCGxK8y3vovmoVbZWLDPTH5XpPEIwpFd9m90jjVMwoypDuB/SdVgje5Y4T7w50lJaw==} + '@smithy/core@3.18.5': + resolution: {integrity: sha512-6gnIz3h+PEPQGDj8MnRSjDvKBah042jEoPgjFGJ4iJLBE78L4lY/n98x14XyPF4u3lN179Ub/ZKFY5za9GeLQw==} engines: {node: '>=18.0.0'} - '@smithy/credential-provider-imds@4.0.6': - resolution: {integrity: sha512-hKMWcANhUiNbCJouYkZ9V3+/Qf9pteR1dnwgdyzR09R4ODEYx8BbUysHwRSyex4rZ9zapddZhLFTnT4ZijR4pw==} + '@smithy/credential-provider-imds@4.2.5': + resolution: {integrity: sha512-BZwotjoZWn9+36nimwm/OLIcVe+KYRwzMjfhd4QT7QxPm9WY0HiOV8t/Wlh+HVUif0SBVV7ksq8//hPaBC/okQ==} engines: {node: '>=18.0.0'} - '@smithy/fetch-http-handler@5.1.0': - resolution: {integrity: sha512-mADw7MS0bYe2OGKkHYMaqarOXuDwRbO6ArD91XhHcl2ynjGCFF+hvqf0LyQcYxkA1zaWjefSkU7Ne9mqgApSgQ==} + '@smithy/fetch-http-handler@5.3.6': + resolution: {integrity: sha512-3+RG3EA6BBJ/ofZUeTFJA7mHfSYrZtQIrDP9dI8Lf7X6Jbos2jptuLrAAteDiFVrmbEmLSuRG/bUKzfAXk7dhg==} engines: {node: '>=18.0.0'} - '@smithy/hash-node@4.0.4': - resolution: {integrity: sha512-qnbTPUhCVnCgBp4z4BUJUhOEkVwxiEi1cyFM+Zj6o+aY8OFGxUQleKWq8ltgp3dujuhXojIvJWdoqpm6dVO3lQ==} + '@smithy/hash-node@4.2.5': + resolution: {integrity: sha512-DpYX914YOfA3UDT9CN1BM787PcHfWRBB43fFGCYrZFUH0Jv+5t8yYl+Pd5PW4+QzoGEDvn5d5QIO4j2HyYZQSA==} engines: {node: '>=18.0.0'} - '@smithy/invalid-dependency@4.0.4': - resolution: {integrity: sha512-bNYMi7WKTJHu0gn26wg8OscncTt1t2b8KcsZxvOv56XA6cyXtOAAAaNP7+m45xfppXfOatXF3Sb1MNsLUgVLTw==} + '@smithy/invalid-dependency@4.2.5': + resolution: {integrity: sha512-2L2erASEro1WC5nV+plwIMxrTXpvpfzl4e+Nre6vBVRR2HKeGGcvpJyyL3/PpiSg+cJG2KpTmZmq934Olb6e5A==} 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==} + '@smithy/is-array-buffer@4.2.0': + resolution: {integrity: sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==} engines: {node: '>=18.0.0'} - '@smithy/middleware-content-length@4.0.4': - resolution: {integrity: sha512-F7gDyfI2BB1Kc+4M6rpuOLne5LOcEknH1n6UQB69qv+HucXBR1rkzXBnQTB2q46sFy1PM/zuSJOB532yc8bg3w==} + '@smithy/middleware-content-length@4.2.5': + resolution: {integrity: sha512-Y/RabVa5vbl5FuHYV2vUCwvh/dqzrEY/K2yWPSqvhFUwIY0atLqO4TienjBXakoy4zrKAMCZwg+YEqmH7jaN7A==} engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@4.1.17': - resolution: {integrity: sha512-S3hSGLKmHG1m35p/MObQCBCdRsrpbPU8B129BVzRqRfDvQqPMQ14iO4LyRw+7LNizYc605COYAcjqgawqi+6jA==} + '@smithy/middleware-endpoint@4.3.12': + resolution: {integrity: sha512-9pAX/H+VQPzNbouhDhkW723igBMLgrI8OtX+++M7iKJgg/zY/Ig3i1e6seCcx22FWhE6Q/S61BRdi2wXBORT+A==} engines: {node: '>=18.0.0'} - '@smithy/middleware-retry@4.1.18': - resolution: {integrity: sha512-bYLZ4DkoxSsPxpdmeapvAKy7rM5+25gR7PGxq2iMiecmbrRGBHj9s75N74Ylg+aBiw9i5jIowC/cLU2NR0qH8w==} + '@smithy/middleware-retry@4.4.12': + resolution: {integrity: sha512-S4kWNKFowYd0lID7/DBqWHOQxmxlsf0jBaos9chQZUWTVOjSW1Ogyh8/ib5tM+agFDJ/TCxuCTvrnlc+9cIBcQ==} engines: {node: '>=18.0.0'} - '@smithy/middleware-serde@4.0.8': - resolution: {integrity: sha512-iSSl7HJoJaGyMIoNn2B7czghOVwJ9nD7TMvLhMWeSB5vt0TnEYyRRqPJu/TqW76WScaNvYYB8nRoiBHR9S1Ddw==} + '@smithy/middleware-serde@4.2.6': + resolution: {integrity: sha512-VkLoE/z7e2g8pirwisLz8XJWedUSY8my/qrp81VmAdyrhi94T+riBfwP+AOEEFR9rFTSonC/5D2eWNmFabHyGQ==} engines: {node: '>=18.0.0'} - '@smithy/middleware-stack@4.0.4': - resolution: {integrity: sha512-kagK5ggDrBUCCzI93ft6DjteNSfY8Ulr83UtySog/h09lTIOAJ/xUSObutanlPT0nhoHAkpmW9V5K8oPyLh+QA==} + '@smithy/middleware-stack@4.2.5': + resolution: {integrity: sha512-bYrutc+neOyWxtZdbB2USbQttZN0mXaOyYLIsaTbJhFsfpXyGWUxJpEuO1rJ8IIJm2qH4+xJT0mxUSsEDTYwdQ==} engines: {node: '>=18.0.0'} - '@smithy/node-config-provider@4.1.3': - resolution: {integrity: sha512-HGHQr2s59qaU1lrVH6MbLlmOBxadtzTsoO4c+bF5asdgVik3I8o7JIOzoeqWc5MjVa+vD36/LWE0iXKpNqooRw==} + '@smithy/node-config-provider@4.3.5': + resolution: {integrity: sha512-UTurh1C4qkVCtqggI36DGbLB2Kv8UlcFdMXDcWMbqVY2uRg0XmT9Pb4Vj6oSQ34eizO1fvR0RnFV4Axw4IrrAg==} engines: {node: '>=18.0.0'} - '@smithy/node-http-handler@4.1.0': - resolution: {integrity: sha512-vqfSiHz2v8b3TTTrdXi03vNz1KLYYS3bhHCDv36FYDqxT7jvTll1mMnCrkD+gOvgwybuunh/2VmvOMqwBegxEg==} + '@smithy/node-http-handler@4.4.5': + resolution: {integrity: sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==} engines: {node: '>=18.0.0'} - '@smithy/property-provider@4.0.4': - resolution: {integrity: sha512-qHJ2sSgu4FqF4U/5UUp4DhXNmdTrgmoAai6oQiM+c5RZ/sbDwJ12qxB1M6FnP+Tn/ggkPZf9ccn4jqKSINaquw==} + '@smithy/property-provider@4.2.5': + resolution: {integrity: sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg==} engines: {node: '>=18.0.0'} - '@smithy/protocol-http@5.1.2': - resolution: {integrity: sha512-rOG5cNLBXovxIrICSBm95dLqzfvxjEmuZx4KK3hWwPFHGdW3lxY0fZNXfv2zebfRO7sJZ5pKJYHScsqopeIWtQ==} + '@smithy/protocol-http@5.3.5': + resolution: {integrity: sha512-RlaL+sA0LNMp03bf7XPbFmT5gN+w3besXSWMkA8rcmxLSVfiEXElQi4O2IWwPfxzcHkxqrwBFMbngB8yx/RvaQ==} engines: {node: '>=18.0.0'} - '@smithy/querystring-builder@4.0.4': - resolution: {integrity: sha512-SwREZcDnEYoh9tLNgMbpop+UTGq44Hl9tdj3rf+yeLcfH7+J8OXEBaMc2kDxtyRHu8BhSg9ADEx0gFHvpJgU8w==} + '@smithy/querystring-builder@4.2.5': + resolution: {integrity: sha512-y98otMI1saoajeik2kLfGyRp11e5U/iJYH/wLCh3aTV/XutbGT9nziKGkgCaMD1ghK7p6htHMm6b6scl9JRUWg==} engines: {node: '>=18.0.0'} - '@smithy/querystring-parser@4.0.4': - resolution: {integrity: sha512-6yZf53i/qB8gRHH/l2ZwUG5xgkPgQF15/KxH0DdXMDHjesA9MeZje/853ifkSY0x4m5S+dfDZ+c4x439PF0M2w==} + '@smithy/querystring-parser@4.2.5': + resolution: {integrity: sha512-031WCTdPYgiQRYNPXznHXof2YM0GwL6SeaSyTH/P72M1Vz73TvCNH2Nq8Iu2IEPq9QP2yx0/nrw5YmSeAi/AjQ==} engines: {node: '>=18.0.0'} - '@smithy/service-error-classification@4.0.6': - resolution: {integrity: sha512-RRoTDL//7xi4tn5FrN2NzH17jbgmnKidUqd4KvquT0954/i6CXXkh1884jBiunq24g9cGtPBEXlU40W6EpNOOg==} + '@smithy/service-error-classification@4.2.5': + resolution: {integrity: sha512-8fEvK+WPE3wUAcDvqDQG1Vk3ANLR8Px979te96m84CbKAjBVf25rPYSzb4xU4hlTyho7VhOGnh5i62D/JVF0JQ==} engines: {node: '>=18.0.0'} - '@smithy/shared-ini-file-loader@4.0.4': - resolution: {integrity: sha512-63X0260LoFBjrHifPDs+nM9tV0VMkOTl4JRMYNuKh/f5PauSjowTfvF3LogfkWdcPoxsA9UjqEOgjeYIbhb7Nw==} + '@smithy/shared-ini-file-loader@4.4.0': + resolution: {integrity: sha512-5WmZ5+kJgJDjwXXIzr1vDTG+RhF9wzSODQBfkrQ2VVkYALKGvZX1lgVSxEkgicSAFnFhPj5rudJV0zoinqS0bA==} engines: {node: '>=18.0.0'} - '@smithy/signature-v4@5.1.2': - resolution: {integrity: sha512-d3+U/VpX7a60seHziWnVZOHuEgJlclufjkS6zhXvxcJgkJq4UWdH5eOBLzHRMx6gXjsdT9h6lfpmLzbrdupHgQ==} + '@smithy/signature-v4@5.3.5': + resolution: {integrity: sha512-xSUfMu1FT7ccfSXkoLl/QRQBi2rOvi3tiBZU2Tdy3I6cgvZ6SEi9QNey+lqps/sJRnogIS+lq+B1gxxbra2a/w==} engines: {node: '>=18.0.0'} - '@smithy/smithy-client@4.4.9': - resolution: {integrity: sha512-mbMg8mIUAWwMmb74LoYiArP04zWElPzDoA1jVOp3or0cjlDMgoS6WTC3QXK0Vxoc9I4zdrX0tq6qsOmaIoTWEQ==} + '@smithy/smithy-client@4.9.8': + resolution: {integrity: sha512-8xgq3LgKDEFoIrLWBho/oYKyWByw9/corz7vuh1upv7ZBm0ZMjGYBhbn6v643WoIqA9UTcx5A5htEp/YatUwMA==} engines: {node: '>=18.0.0'} - '@smithy/types@4.3.1': - resolution: {integrity: sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==} + '@smithy/types@4.9.0': + resolution: {integrity: sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==} engines: {node: '>=18.0.0'} - '@smithy/url-parser@4.0.4': - resolution: {integrity: sha512-eMkc144MuN7B0TDA4U2fKs+BqczVbk3W+qIvcoCY6D1JY3hnAdCuhCZODC+GAeaxj0p6Jroz4+XMUn3PCxQQeQ==} + '@smithy/url-parser@4.2.5': + resolution: {integrity: sha512-VaxMGsilqFnK1CeBX+LXnSuaMx4sTL/6znSZh2829txWieazdVxr54HmiyTsIbpOTLcf5nYpq9lpzmwRdxj6rQ==} engines: {node: '>=18.0.0'} - '@smithy/util-base64@4.0.0': - resolution: {integrity: sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==} + '@smithy/util-base64@4.3.0': + resolution: {integrity: sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==} engines: {node: '>=18.0.0'} - '@smithy/util-body-length-browser@4.0.0': - resolution: {integrity: sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==} + '@smithy/util-body-length-browser@4.2.0': + resolution: {integrity: sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==} engines: {node: '>=18.0.0'} - '@smithy/util-body-length-node@4.0.0': - resolution: {integrity: sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==} + '@smithy/util-body-length-node@4.2.1': + resolution: {integrity: sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==} 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==} + '@smithy/util-buffer-from@4.2.0': + resolution: {integrity: sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==} engines: {node: '>=18.0.0'} - '@smithy/util-config-provider@4.0.0': - resolution: {integrity: sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==} + '@smithy/util-config-provider@4.2.0': + resolution: {integrity: sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-browser@4.0.25': - resolution: {integrity: sha512-pxEWsxIsOPLfKNXvpgFHBGFC3pKYKUFhrud1kyooO9CJai6aaKDHfT10Mi5iiipPXN/JhKAu3qX9o75+X85OdQ==} + '@smithy/util-defaults-mode-browser@4.3.11': + resolution: {integrity: sha512-yHv+r6wSQXEXTPVCIQTNmXVWs7ekBTpMVErjqZoWkYN75HIFN5y9+/+sYOejfAuvxWGvgzgxbTHa/oz61YTbKw==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-node@4.0.25': - resolution: {integrity: sha512-+w4n4hKFayeCyELZLfsSQG5mCC3TwSkmRHv4+el5CzFU8ToQpYGhpV7mrRzqlwKkntlPilT1HJy1TVeEvEjWOQ==} + '@smithy/util-defaults-mode-node@4.2.14': + resolution: {integrity: sha512-ljZN3iRvaJUgulfvobIuG97q1iUuCMrvXAlkZ4msY+ZuVHQHDIqn7FKZCEj+bx8omz6kF5yQXms/xhzjIO5XiA==} engines: {node: '>=18.0.0'} - '@smithy/util-endpoints@3.0.6': - resolution: {integrity: sha512-YARl3tFL3WgPuLzljRUnrS2ngLiUtkwhQtj8PAL13XZSyUiNLQxwG3fBBq3QXFqGFUXepIN73pINp3y8c2nBmA==} + '@smithy/util-endpoints@3.2.5': + resolution: {integrity: sha512-3O63AAWu2cSNQZp+ayl9I3NapW1p1rR5mlVHcF6hAB1dPZUQFfRPYtplWX/3xrzWthPGj5FqB12taJJCfH6s8A==} engines: {node: '>=18.0.0'} - '@smithy/util-hex-encoding@4.0.0': - resolution: {integrity: sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==} + '@smithy/util-hex-encoding@4.2.0': + resolution: {integrity: sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==} engines: {node: '>=18.0.0'} - '@smithy/util-middleware@4.0.4': - resolution: {integrity: sha512-9MLKmkBmf4PRb0ONJikCbCwORACcil6gUWojwARCClT7RmLzF04hUR4WdRprIXal7XVyrddadYNfp2eF3nrvtQ==} + '@smithy/util-middleware@4.2.5': + resolution: {integrity: sha512-6Y3+rvBF7+PZOc40ybeZMcGln6xJGVeY60E7jy9Mv5iKpMJpHgRE6dKy9ScsVxvfAYuEX4Q9a65DQX90KaQ3bA==} engines: {node: '>=18.0.0'} - '@smithy/util-retry@4.0.6': - resolution: {integrity: sha512-+YekoF2CaSMv6zKrA6iI/N9yva3Gzn4L6n35Luydweu5MMPYpiGZlWqehPHDHyNbnyaYlz/WJyYAZnC+loBDZg==} + '@smithy/util-retry@4.2.5': + resolution: {integrity: sha512-GBj3+EZBbN4NAqJ/7pAhsXdfzdlznOh8PydUijy6FpNIMnHPSMO2/rP4HKu+UFeikJxShERk528oy7GT79YiJg==} engines: {node: '>=18.0.0'} - '@smithy/util-stream@4.2.3': - resolution: {integrity: sha512-cQn412DWHHFNKrQfbHY8vSFI3nTROY1aIKji9N0tpp8gUABRilr7wdf8fqBbSlXresobM+tQFNk6I+0LXK/YZg==} + '@smithy/util-stream@4.5.6': + resolution: {integrity: sha512-qWw/UM59TiaFrPevefOZ8CNBKbYEP6wBAIlLqxn3VAIo9rgnTNc4ASbVrqDmhuwI87usnjhdQrxodzAGFFzbRQ==} engines: {node: '>=18.0.0'} - '@smithy/util-uri-escape@4.0.0': - resolution: {integrity: sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==} + '@smithy/util-uri-escape@4.2.0': + resolution: {integrity: sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==} 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==} + '@smithy/util-utf8@4.2.0': + resolution: {integrity: sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==} engines: {node: '>=18.0.0'} + '@smithy/uuid@1.1.0': + resolution: {integrity: sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==} + engines: {node: '>=18.0.0'} + + '@so-ric/colorspace@1.1.6': + resolution: {integrity: sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==} + '@sphinxxxx/color-conversion@2.2.2': resolution: {integrity: sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==} @@ -4796,73 +5126,73 @@ packages: '@standard-schema/spec@1.0.0': resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} - '@sveltejs/acorn-typescript@1.0.5': - resolution: {integrity: sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ==} + '@sveltejs/acorn-typescript@1.0.8': + resolution: {integrity: sha512-esgN+54+q0NjB0Y/4BomT9samII7jGwNy/2a3wNZbT2A2RpmXsXwUt24LvLhx6jUq2gVk4cWEvcRO6MFQbOfNA==} peerDependencies: acorn: ^8.9.0 - '@swc/core-darwin-arm64@1.13.2': - resolution: {integrity: sha512-44p7ivuLSGFJ15Vly4ivLJjg3ARo4879LtEBAabcHhSZygpmkP8eyjyWxrH3OxkY1eRZSIJe8yRZPFw4kPXFPw==} + '@swc/core-darwin-arm64@1.15.3': + resolution: {integrity: sha512-AXfeQn0CvcQ4cndlIshETx6jrAM45oeUrK8YeEY6oUZU/qzz0Id0CyvlEywxkWVC81Ajpd8TQQ1fW5yx6zQWkQ==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.13.2': - resolution: {integrity: sha512-Lb9EZi7X2XDAVmuUlBm2UvVAgSCbD3qKqDCxSI4jEOddzVOpNCnyZ/xEampdngUIyDDhhJLYU9duC+Mcsv5Y+A==} + '@swc/core-darwin-x64@1.15.3': + resolution: {integrity: sha512-p68OeCz1ui+MZYG4wmfJGvcsAcFYb6Sl25H9TxWl+GkBgmNimIiRdnypK9nBGlqMZAcxngNPtnG3kEMNnvoJ2A==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.13.2': - resolution: {integrity: sha512-9TDe/92ee1x57x+0OqL1huG4BeljVx0nWW4QOOxp8CCK67Rpc/HHl2wciJ0Kl9Dxf2NvpNtkPvqj9+BUmM9WVA==} + '@swc/core-linux-arm-gnueabihf@1.15.3': + resolution: {integrity: sha512-Nuj5iF4JteFgwrai97mUX+xUOl+rQRHqTvnvHMATL/l9xE6/TJfPBpd3hk/PVpClMXG3Uvk1MxUFOEzM1JrMYg==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.13.2': - resolution: {integrity: sha512-KJUSl56DBk7AWMAIEcU83zl5mg3vlQYhLELhjwRFkGFMvghQvdqQ3zFOYa4TexKA7noBZa3C8fb24rI5sw9Exg==} + '@swc/core-linux-arm64-gnu@1.15.3': + resolution: {integrity: sha512-2Nc/s8jE6mW2EjXWxO/lyQuLKShcmTrym2LRf5Ayp3ICEMX6HwFqB1EzDhwoMa2DcUgmnZIalesq2lG3krrUNw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.13.2': - resolution: {integrity: sha512-teU27iG1oyWpNh9CzcGQ48ClDRt/RCem7mYO7ehd2FY102UeTws2+OzLESS1TS1tEZipq/5xwx3FzbVgiolCiQ==} + '@swc/core-linux-arm64-musl@1.15.3': + resolution: {integrity: sha512-j4SJniZ/qaZ5g8op+p1G9K1z22s/EYGg1UXIb3+Cg4nsxEpF5uSIGEE4mHUfA70L0BR9wKT2QF/zv3vkhfpX4g==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.13.2': - resolution: {integrity: sha512-dRPsyPyqpLD0HMRCRpYALIh4kdOir8pPg4AhNQZLehKowigRd30RcLXGNVZcc31Ua8CiPI4QSgjOIxK+EQe4LQ==} + '@swc/core-linux-x64-gnu@1.15.3': + resolution: {integrity: sha512-aKttAZnz8YB1VJwPQZtyU8Uk0BfMP63iDMkvjhJzRZVgySmqt/apWSdnoIcZlUoGheBrcqbMC17GGUmur7OT5A==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.13.2': - resolution: {integrity: sha512-CCxETW+KkYEQDqz1SYC15YIWYheqFC+PJVOW76Maa/8yu8Biw+HTAcblKf2isrlUtK8RvrQN94v3UXkC2NzCEw==} + '@swc/core-linux-x64-musl@1.15.3': + resolution: {integrity: sha512-oe8FctPu1gnUsdtGJRO2rvOUIkkIIaHqsO9xxN0bTR7dFTlPTGi2Fhk1tnvXeyAvCPxLIcwD8phzKg6wLv9yug==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.13.2': - resolution: {integrity: sha512-Wv/QTA6PjyRLlmKcN6AmSI4jwSMRl0VTLGs57PHTqYRwwfwd7y4s2fIPJVBNbAlXd795dOEP6d/bGSQSyhOX3A==} + '@swc/core-win32-arm64-msvc@1.15.3': + resolution: {integrity: sha512-L9AjzP2ZQ/Xh58e0lTRMLvEDrcJpR7GwZqAtIeNLcTK7JVE+QineSyHp0kLkO1rttCHyCy0U74kDTj0dRz6raA==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.13.2': - resolution: {integrity: sha512-PuCdtNynEkUNbUXX/wsyUC+t4mamIU5y00lT5vJcAvco3/r16Iaxl5UCzhXYaWZSNVZMzPp9qN8NlSL8M5pPxw==} + '@swc/core-win32-ia32-msvc@1.15.3': + resolution: {integrity: sha512-B8UtogMzErUPDWUoKONSVBdsgKYd58rRyv2sHJWKOIMCHfZ22FVXICR4O/VwIYtlnZ7ahERcjayBHDlBZpR0aw==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.13.2': - resolution: {integrity: sha512-qlmMkFZJus8cYuBURx1a3YAG2G7IW44i+FEYV5/32ylKkzGNAr9tDJSA53XNnNXkAB5EXSPsOz7bn5C3JlEtdQ==} + '@swc/core-win32-x64-msvc@1.15.3': + resolution: {integrity: sha512-SpZKMR9QBTecHeqpzJdYEfgw30Oo8b/Xl6rjSzBt1g0ZsXyy60KLXrp6IagQyfTYqNYE/caDvwtF2FPn7pomog==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.13.2': - resolution: {integrity: sha512-YWqn+0IKXDhqVLKoac4v2tV6hJqB/wOh8/Br8zjqeqBkKa77Qb0Kw2i7LOFzjFNZbZaPH6AlMGlBwNrxaauaAg==} + '@swc/core@1.15.3': + resolution: {integrity: sha512-Qd8eBPkUFL4eAONgGjycZXj1jFCBW8Fd+xF0PzdTlBCWQIV1xnUT7B93wUANtW3KGjl3TRcOyxwSx/u/jyKw/Q==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '>=0.5.17' @@ -4873,8 +5203,8 @@ packages: '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@swc/types@0.1.23': - resolution: {integrity: sha512-u1iIVZV9Q0jxY+yM2vw/hZGDNudsN85bBpTqzAQ9rzkxW9D+e3aEM4Han+ow518gSewkXgjmEK0BD79ZcNVgPw==} + '@swc/types@0.1.25': + resolution: {integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==} '@szmarczak/http-timer@1.1.2': resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} @@ -4891,23 +5221,23 @@ packages: '@testcontainers/kafka@10.28.0': resolution: {integrity: sha512-4FxjliTmDf+1UpXxDi2qUQsxXRiMMqBq9sSiazguft7sPvHpZ5Snh/OdW+rBBJ2f8+xF0474LS+57vF+q5M6uw==} - '@testcontainers/mongodb@11.4.0': - resolution: {integrity: sha512-Fnn31NElM1ZKEk4r5EBMLBBewVoGl1uCcDCoajBOU4rGN4piYTGzahsz3CV3siR7R6WECZnR/8FGzN+KELJdNA==} + '@testcontainers/mongodb@11.9.0': + resolution: {integrity: sha512-GRLfkKXiMvzxdiqpuBcSy+qeSZNAFPvfubD/nv6sRZTOHYqKlkiDevhaBI64RvkKicKrCFAbIdIyD+1b2sjBqw==} - '@testcontainers/mysql@11.4.0': - resolution: {integrity: sha512-i6aiaWhGuicckk7MoVX0iDpVdw18voHg+SLqt65beFDi+D+KuL/Lr4qVzrmxLGiffEgsoKYbF/zH3n9pMFQ84w==} + '@testcontainers/mysql@11.9.0': + resolution: {integrity: sha512-XayyQs0QAKIlYVngUOyaqwjGobERXOsvjgw6vyvdYavUDx8AXpNEe2dc4sCcXSH0CgiTTcF3SzFuodjXvDecww==} - '@testcontainers/postgresql@11.4.0': - resolution: {integrity: sha512-WiKsz3Np5twNZGp2kgatqGaE/KqNR271CPwvIgAvFyN7E581P34glQljM4iLfxdv1XpzVYGWRO6PbQAVDbehBQ==} + '@testcontainers/postgresql@11.9.0': + resolution: {integrity: sha512-beLyLdLygFllktviM132Xd6tQ4i5FnuyZP+4BQEjUb5sJYHYnIrV/ZBzRRflIlF8gugt1GXgudkmr/HxM9vtKw==} '@testcontainers/rabbitmq@10.28.0': resolution: {integrity: sha512-Gl8/gAYfRCsjuhTfAIT7/0e49ozMRe05RDFr2CFQWcZDgB4A7qx2QaUqEIhcQnHqRjfEQTWoV1PovnGNZU+dGQ==} - '@testcontainers/redis@11.4.0': - resolution: {integrity: sha512-w+2VpYt5xAEYbsdhITgwDMif+5Atae+q0ifG/ZrSUZXK528CzqsfnxIgwrZWFnLDCqk1mVNgG4mXdD8VDGd38w==} + '@testcontainers/redis@11.9.0': + resolution: {integrity: sha512-nDDsi8d17mYK44JAkX4tI91kgoQAT4E02UJK+d2BbcYYLZJtS3tP+w+MUkDuHWrUMlqb3HiyAdhcPz2ezxn2TA==} - '@testcontainers/vault@11.4.0': - resolution: {integrity: sha512-sN80g9iaeMbRFURBmScUgtbIDAwSN+2JpUVuVID4hbD2+YOUD1Vojtca7JTcs6Fobw/1VPy48lImgVMpEMRArQ==} + '@testcontainers/vault@11.9.0': + resolution: {integrity: sha512-FcO3uYzzZt7beNQwostt2qezZMYCgO23k5vJ8dv8jADdixsDHrdTVTHj6yWdLkqTeyEPnf9+Xg8R2hJ0BTKD+Q==} '@tokenizer/token@0.3.0': resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} @@ -4923,13 +5253,19 @@ packages: '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - '@trpc/server@11.4.3': - resolution: {integrity: sha512-wnWq3wiLlMOlYkaIZz+qbuYA5udPTLS4GVVRyFkr6aT83xpdCHyVtURT+u4hSoIrOXQM9OPCNXSXsAujWZDdaw==} + '@trpc/client@11.7.2': + resolution: {integrity: sha512-OQxqUMfpDvjcszo9dbnqWQXnW2L5IbrKSz2H7l8s+mVM3EvYw7ztQ/gjFIN3iy0NcamiQfd4eE6qjcb9Lm+63A==} + peerDependencies: + '@trpc/server': 11.7.2 + typescript: '>=5.7.2' + + '@trpc/server@11.7.2': + resolution: {integrity: sha512-AgB26PXY69sckherIhCacKLY49rxE2XP5h38vr/KMZTbLCL1p8IuIoKPjALTcugC2kbyQ7Lbqo2JDVfRSmPmfQ==} peerDependencies: typescript: '>=5.7.2' - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + '@tsconfig/node10@1.0.12': + resolution: {integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==} '@tsconfig/node12@1.0.11': resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} @@ -4955,8 +5291,8 @@ packages: '@types/babel__template@7.4.4': resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - '@types/babel__traverse@7.20.7': - resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} '@types/bcrypt@6.0.0': resolution: {integrity: sha512-/oJGukuH3D2+D+3H4JWLaAsJ/ji86dhRidzZ/Od7H/i8g+aCmvkeCc6Ni/f9uxGLSQVCRZkX2/lqEFG2BvWtlQ==} @@ -4982,8 +5318,8 @@ packages: '@types/caseless@0.12.5': resolution: {integrity: sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==} - '@types/chai@5.2.2': - resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} '@types/chrome@0.0.278': resolution: {integrity: sha512-PDIJodOu7o54PpSOYLybPW/MDZBCjM1TKgf31I3Q/qaEbNpIH09rOM3tSEH3N7Q+FAqb1933LhF8ksUPYeQLNg==} @@ -5021,8 +5357,8 @@ packages: '@types/docker-modem@3.0.6': resolution: {integrity: sha512-yKpAGEuKRSS8wwx0joknWxsmLha78wNMe9R2S3UNsVOkZded8UqOrV8KoeDXoXsjndxwyF3eIhyClGbO1SEhEg==} - '@types/dockerode@3.3.42': - resolution: {integrity: sha512-U1jqHMShibMEWHdxYhj3rCMNCiLx5f35i4e3CEUuW+JSSszc/tVqc6WCAPdhwBymG5R/vgbcceagK0St7Cq6Eg==} + '@types/dockerode@3.3.47': + resolution: {integrity: sha512-ShM1mz7rCjdssXt7Xz0u1/R2BJC7piWa3SJpUBiVjCf2A3XNn4cP6pUVaD8bLanpPVVn4IKzJuw3dOvkJ8IbYw==} '@types/ejs@3.1.5': resolution: {integrity: sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==} @@ -5034,20 +5370,20 @@ packages: resolution: {integrity: sha512-e1xZLOOlxCDvplAGq7rDcXtbdBu2CWRsMjaIu1LVqGxWtKvwr884YE5mPs3IvHeG/OMDhf24oTaqG5T1bV3rBQ==} deprecated: This is a stub types definition. express-rate-limit provides its own type definitions, so you do not need this installed. - '@types/express-serve-static-core@4.19.6': - resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} + '@types/express-serve-static-core@4.19.7': + resolution: {integrity: sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==} - '@types/express-serve-static-core@5.0.7': - resolution: {integrity: sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ==} + '@types/express-serve-static-core@5.1.0': + resolution: {integrity: sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==} '@types/express-session@1.18.2': resolution: {integrity: sha512-k+I0BxwVXsnEU2hV77cCobC08kIsn4y44C3gC0b46uxZVMaXA04lSPgRLR/bSL2w0t0ShJiG8o4jPzRG/nscFg==} - '@types/express@4.17.23': - resolution: {integrity: sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==} + '@types/express@4.17.25': + resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} - '@types/express@5.0.3': - resolution: {integrity: sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==} + '@types/express@5.0.5': + resolution: {integrity: sha512-LuIQOcb6UmnF7C1PCFmEU1u2hmiHL43fgFQX67sN3H4Z+0Yk0Neo++mFsBjhOAuLzvlQeqAAkeDOZrJs9rzumQ==} '@types/filesystem@0.0.36': resolution: {integrity: sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA==} @@ -5055,8 +5391,8 @@ packages: '@types/filewriter@0.0.33': resolution: {integrity: sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==} - '@types/firefox-webext-browser@120.0.4': - resolution: {integrity: sha512-lBrpf08xhiZBigrtdQfUaqX1UauwZ+skbFiL8u2Tdra/rklkKadYmIzTwkNZSWtuZ7OKpFqbE2HHfDoFqvZf6w==} + '@types/firefox-webext-browser@120.0.5': + resolution: {integrity: sha512-imn8ecga0HQWcOSvxy9i0lD+7vpHgkj1NVLvXS1lNHqHt03Z4QwazeEdoWe+C9JXpmVyKiRanb+z9D/w001tRg==} '@types/geoip-lite@1.4.4': resolution: {integrity: sha512-2uVfn+C6bX/H356H6mjxsWUA5u8LO8dJgSBIRO/NFlpMe4DESzacutD/rKYrTDKm1Ugv78b4Wz1KvpHrlv3jSw==} @@ -5113,8 +5449,8 @@ packages: '@types/long@4.0.2': resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} - '@types/luxon@3.6.2': - resolution: {integrity: sha512-R/BdP7OxEMc44l2Ex5lSXHoIXTB2JLNa3y2QISIbr58U/YcsffyQrYW//hZSdrfxrjRZj3GcUoxMPGdO8gSYuw==} + '@types/luxon@3.7.1': + resolution: {integrity: sha512-H3iskjFIAn5SlJU7OuxUmTEpebK6TKB8rxZShDslBMZJ5u9S//KM1sbdAisiSrqwLQncVjnpi2OK2J51h+4lsg==} '@types/markdown-it@14.1.2': resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} @@ -5149,9 +5485,6 @@ packages: '@types/mysql@2.15.26': resolution: {integrity: sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==} - '@types/node-fetch@2.6.12': - resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} - '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} @@ -5161,17 +5494,17 @@ packages: '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - '@types/node@18.19.120': - resolution: {integrity: sha512-WtCGHFXnVI8WHLxDAt5TbnCM4eSE+nI0QN2NJtwzcgMhht2eNz6V9evJrk+lwC8bCY8OWV5Ym8Jz7ZEyGnKnMA==} + '@types/node@18.19.130': + resolution: {integrity: sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==} - '@types/node@20.19.9': - resolution: {integrity: sha512-cuVNgarYWZqxRJDQHEB58GEONhOK79QVR/qYx4S7kcUObQvUwvFnYxJuuHUKm2aieN9X3yZB4LZsuYNU1Qphsw==} + '@types/node@20.19.25': + resolution: {integrity: sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==} - '@types/node@22.16.5': - resolution: {integrity: sha512-bJFoMATwIGaxxx8VJPeM8TonI8t579oRvgAuT8zFugJsJZgzqv0Fu8Mhp68iecjzG7cnN3mO2dJQ5uUM2EFrgQ==} + '@types/node@22.19.1': + resolution: {integrity: sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==} - '@types/node@24.1.0': - resolution: {integrity: sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==} + '@types/node@24.10.1': + resolution: {integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -5259,8 +5592,8 @@ packages: resolution: {integrity: sha512-bI+gth8La8Wg/QCR1+V1fhrL9+LZUSWfcqpOj2Kc80ZQ4ffbdL173vQd5wovmoV9i071FU9oP2g6etLuEwb6Rg==} deprecated: This is a stub types definition. redis provides its own type definitions, so you do not need this installed. - '@types/request@2.48.12': - resolution: {integrity: sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==} + '@types/request@2.48.13': + resolution: {integrity: sha512-FGJ6udDNUCjd19pp0Q3iTiDkwhYup7J8hpMW9c4k53NrccQFFWKRho6hvtPPEhnXWKvukfwAlB6DbDz4yhH5Gg==} '@types/response-time@2.3.9': resolution: {integrity: sha512-w5i5/y/1N3hkSBru1dat7Pf/YzdFLAANbKR78i2VIPnKw1Ub2ZNXE/n3K4v1BBMIIbAccgxpGZT8lIuLW284Dw==} @@ -5277,17 +5610,23 @@ packages: '@types/sanitize-html@2.16.0': resolution: {integrity: sha512-l6rX1MUXje5ztPT0cAFtUayXF06DqPhRyfVXareEN5gGCFaP/iwsxIyKODr9XDhfxPpN6vXUFNfo5kZMXCxBtw==} - '@types/send@0.17.5': - resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} + '@types/send@0.17.6': + resolution: {integrity: sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==} + + '@types/send@1.2.1': + resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==} - '@types/serve-static@1.15.8': - resolution: {integrity: sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==} + '@types/serve-static@1.15.10': + resolution: {integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==} + + '@types/serve-static@2.2.0': + resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==} '@types/shimmer@1.2.0': resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==} - '@types/ssh2-streams@0.1.12': - resolution: {integrity: sha512-Sy8tpEmCce4Tq0oSOYdfqaBpA3hDM8SoxoFh5vzFsu2oL+znzGz8oVWW7xb4K920yYMUY+PIG31qZnFMfPWNCg==} + '@types/ssh2-streams@0.1.13': + resolution: {integrity: sha512-faHyY3brO9oLEA0QlcO8N2wT7R0+1sHWZvQ+y3rMLwdY1ZyS1z0W3t65j9PqT4HmQ6ALzNe7RZlNuCNE0wBSWA==} '@types/ssh2@0.5.52': resolution: {integrity: sha512-lbLLlXxdCZOSJMCInKH2+9V/77ET2J6NPQHpFI0kda61Dd1KglJs+fPQBchizmzYSOJBgdTajhPqBO1xxLywvg==} @@ -5334,8 +5673,8 @@ packages: '@types/uuid@10.0.0': resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} - '@types/validator@13.15.2': - resolution: {integrity: sha512-y7pa/oEJJ4iGYBxOpfAKn5b9+xuihvzDVnC/OSvlVnGxVg0pOqmjiMafiJ1KVNQEaPZf9HsEp5icEwGg8uIe5Q==} + '@types/validator@13.15.10': + resolution: {integrity: sha512-T8L6i7wCuyoK8A/ZeLYt1+q0ty3Zb9+qbSSvrIVitzT3YjZqkTZ40IbRsPanlB4h1QB3JVL1SYCdR6ngtFYcuA==} '@types/webidl-conversions@7.0.3': resolution: {integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==} @@ -5352,11 +5691,11 @@ packages: '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - '@types/yargs@16.0.9': - resolution: {integrity: sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==} + '@types/yargs@16.0.11': + resolution: {integrity: sha512-sbtvk8wDN+JvEdabmZExoW/HNr1cB7D/j4LT08rMiuikfA7m/JNJg7ATQcgzs34zHnoScDkY0ZRSl29Fkmk36g==} - '@types/yargs@17.0.33': - resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + '@types/yargs@17.0.35': + resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} @@ -5433,34 +5772,34 @@ packages: '@vitest/utils@3.2.4': resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} - '@vue/compiler-core@3.5.18': - resolution: {integrity: sha512-3slwjQrrV1TO8MoXgy3aynDQ7lslj5UqDxuHnrzHtpON5CBinhWjJETciPngpin/T3OuW3tXUf86tEurusnztw==} + '@vue/compiler-core@3.5.25': + resolution: {integrity: sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==} - '@vue/compiler-dom@3.5.18': - resolution: {integrity: sha512-RMbU6NTU70++B1JyVJbNbeFkK+A+Q7y9XKE2EM4NLGm2WFR8x9MbAtWxPPLdm0wUkuZv9trpwfSlL6tjdIa1+A==} + '@vue/compiler-dom@3.5.25': + resolution: {integrity: sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==} - '@vue/compiler-sfc@3.5.18': - resolution: {integrity: sha512-5aBjvGqsWs+MoxswZPoTB9nSDb3dhd1x30xrrltKujlCxo48j8HGDNj3QPhF4VIS0VQDUrA1xUfp2hEa+FNyXA==} + '@vue/compiler-sfc@3.5.25': + resolution: {integrity: sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag==} - '@vue/compiler-ssr@3.5.18': - resolution: {integrity: sha512-xM16Ak7rSWHkM3m22NlmcdIM+K4BMyFARAfV9hYFl+SFuRzrZ3uGMNW05kA5pmeMa0X9X963Kgou7ufdbpOP9g==} + '@vue/compiler-ssr@3.5.25': + resolution: {integrity: sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==} - '@vue/reactivity@3.5.18': - resolution: {integrity: sha512-x0vPO5Imw+3sChLM5Y+B6G1zPjwdOri9e8V21NnTnlEvkxatHEH5B5KEAJcjuzQ7BsjGrKtfzuQ5eQwXh8HXBg==} + '@vue/reactivity@3.5.25': + resolution: {integrity: sha512-5xfAypCQepv4Jog1U4zn8cZIcbKKFka3AgWHEFQeK65OW+Ys4XybP6z2kKgws4YB43KGpqp5D/K3go2UPPunLA==} - '@vue/runtime-core@3.5.18': - resolution: {integrity: sha512-DUpHa1HpeOQEt6+3nheUfqVXRog2kivkXHUhoqJiKR33SO4x+a5uNOMkV487WPerQkL0vUuRvq/7JhRgLW3S+w==} + '@vue/runtime-core@3.5.25': + resolution: {integrity: sha512-Z751v203YWwYzy460bzsYQISDfPjHTl+6Zzwo/a3CsAf+0ccEjQ8c+0CdX1WsumRTHeywvyUFtW6KvNukT/smA==} - '@vue/runtime-dom@3.5.18': - resolution: {integrity: sha512-YwDj71iV05j4RnzZnZtGaXwPoUWeRsqinblgVJwR8XTXYZ9D5PbahHQgsbmzUvCWNF6x7siQ89HgnX5eWkr3mw==} + '@vue/runtime-dom@3.5.25': + resolution: {integrity: sha512-a4WrkYFbb19i9pjkz38zJBg8wa/rboNERq3+hRRb0dHiJh13c+6kAbgqCPfMaJ2gg4weWD3APZswASOfmKwamA==} - '@vue/server-renderer@3.5.18': - resolution: {integrity: sha512-PvIHLUoWgSbDG7zLHqSqaCoZvHi6NNmfVFOqO+OnwvqMz/tqQr3FuGWS8ufluNddk7ZLBJYMrjcw1c6XzR12mA==} + '@vue/server-renderer@3.5.25': + resolution: {integrity: sha512-UJaXR54vMG61i8XNIzTSf2Q7MOqZHpp8+x3XLGtE3+fL+nQd+k7O5+X3D/uWrnQXOdMw5VPih+Uremcw+u1woQ==} peerDependencies: - vue: 3.5.18 + vue: 3.5.25 - '@vue/shared@3.5.18': - resolution: {integrity: sha512-cZy8Dq+uuIXbxCZpuLd2GJdeSO/lIzIspC2WtkqIpje5QyFbvLaI5wZtdUjLHjGZrlVX6GilejatWwVYYRc8tA==} + '@vue/shared@3.5.25': + resolution: {integrity: sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==} '@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15': resolution: {integrity: sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA==} @@ -5589,12 +5928,12 @@ packages: ajv@8.12.0: resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} - algoliasearch@5.34.1: - resolution: {integrity: sha512-s70HlfBgswgEdmCYkUJG8i/ULYhbkk8N9+N8JsWUwszcp7eauPEr5tIX4BY0qDGeKWQ/qZvmt4mxwTusYY23sg==} + algoliasearch@5.45.0: + resolution: {integrity: sha512-wrj4FGr14heLOYkBKV3Fbq5ZBGuIFeDJkTilYq/G+hH1CSlQBtYvG2X1j67flwv0fUeQJwnWxxRIunSemAZirA==} engines: {node: '>= 14.0.0'} - amqplib@0.10.8: - resolution: {integrity: sha512-Tfn1O9sFgAP8DqeMEpt2IacsVTENBpblB3SqLdn0jK2AeX8iyCvbptBc8lyATT9bQ31MsjVwUSQ1g8f4jHOUfw==} + amqplib@0.10.9: + resolution: {integrity: sha512-jwSftI4QjS3mizvnSnOrPGYiUnm1vI2OP1iXeOUz5pb74Ua0nbf6nPyyTzuiCLEE3fMpaJORXh2K/TQ08H5xGA==} engines: {node: '>=10'} animation-frame-polyfill@1.0.2: @@ -5623,8 +5962,8 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} ansi-styles@3.2.1: @@ -5639,8 +5978,8 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} ansis@3.17.0: @@ -5776,8 +6115,8 @@ packages: async-lock@1.4.1: resolution: {integrity: sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==} - async-memoize-one@1.1.8: - resolution: {integrity: sha512-pS8gDRFMFDGEVaWUFy9i9OIJQ5o9L8XNQMnv7Ku76XONO5pxK+1cN9IackyPUv717Vg1J8KI2AaLJG28ZHKIkw==} + async-memoize-one@1.1.9: + resolution: {integrity: sha512-ObGU8rCTxO38DvE6j8MWFn/4O1kBph3BKqxzPtwwp03ZR5gPfzuNgCC76c4re10ckjs26tOjVLLUIuQEYYtkSA==} engines: {node: '>= 12'} async-retry@1.3.3: @@ -5840,8 +6179,8 @@ packages: axios@0.26.1: resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==} - axios@1.11.0: - resolution: {integrity: sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==} + axios@1.13.2: + resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==} axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} @@ -5852,8 +6191,13 @@ packages: engines: {node: '>= 0.8.26'} deprecated: 'Please note: newer packages @azure/storage-blob, @azure/storage-queue and @azure/storage-file are available as of November 2019 and @azure/data-tables is available as of June 2021. While the legacy azure-storage package will continue to receive critical bug fixes, we strongly encourage you to upgrade. Migration guide can be found: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/storage/MigrationGuide.md' - b4a@1.6.7: - resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} + b4a@1.7.3: + resolution: {integrity: sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==} + peerDependencies: + react-native-b4a: '*' + peerDependenciesMeta: + react-native-b4a: + optional: true babel-jest@29.7.0: resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} @@ -5872,10 +6216,10 @@ packages: babel-polyfill@6.26.0: resolution: {integrity: sha512-F2rZGQnAdaHWQ8YAoeRbukc7HS9QgdgeyJ0rQDd485v9opwuPvjpPFcOOT/WmkKTdgy9ESgSPXDcTNpzrGr6iQ==} - babel-preset-current-node-syntax@1.1.0: - resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + babel-preset-current-node-syntax@1.2.0: + resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': ^7.0.0 || ^8.0.0-0 babel-preset-jest@29.6.3: resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} @@ -5889,11 +6233,16 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - bare-events@2.6.0: - resolution: {integrity: sha512-EKZ5BTXYExaNqi3I3f9RtEsaI/xBSGjE0XZCZilPzFAV/goswFHuPd9jEZlPIZ/iNZJwDSao9qRiScySz7MbQg==} + bare-events@2.8.2: + resolution: {integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==} + peerDependencies: + bare-abort-controller: '*' + peerDependenciesMeta: + bare-abort-controller: + optional: true - bare-fs@4.1.6: - resolution: {integrity: sha512-25RsLF33BqooOEFNdMcEhMpJy8EoR88zSMrnOQOaM3USnOK2VmaJ1uaQEwPA6AQjrv1lXChScosN6CzbwbO9OQ==} + bare-fs@4.5.2: + resolution: {integrity: sha512-veTnRzkb6aPHOvSKIOy60KzURfBdUflr5VReI+NSaPL6xf+XLdONQgZgpYvUuZLVQ8dCqxpBAudaOM1+KpAUxw==} engines: {bare: '>=1.16.0'} peerDependencies: bare-buffer: '*' @@ -5901,15 +6250,15 @@ packages: bare-buffer: optional: true - bare-os@3.6.1: - resolution: {integrity: sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==} + bare-os@3.6.2: + resolution: {integrity: sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==} engines: {bare: '>=1.14.0'} bare-path@3.0.0: resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==} - bare-stream@2.6.5: - resolution: {integrity: sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==} + bare-stream@2.7.0: + resolution: {integrity: sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==} peerDependencies: bare-buffer: '*' bare-events: '*' @@ -5919,9 +6268,16 @@ packages: bare-events: optional: true + bare-url@2.3.2: + resolution: {integrity: sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==} + base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + baseline-browser-mapping@2.8.32: + resolution: {integrity: sha512-OPz5aBThlyLFgxyhdwf/s2+8ab3OvT7AdTNvKHBwpXomIYeXqpUUuT8LrdtxZSsWJ4R4CU1un4XGh5Ez3nlTpw==} + hasBin: true + basic-ftp@5.0.5: resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} engines: {node: '>=10.0.0'} @@ -5946,9 +6302,12 @@ packages: better-sqlite3@11.10.0: resolution: {integrity: sha512-EwhOpyXiOEL/lKzHz9AW1msWFNzGc/z+LzeB3/jnFJpxu+th2yqvzsSWas1v9jgs9+xiXJcD5A8CJxAG2TaghQ==} - better-sqlite3@12.2.0: - resolution: {integrity: sha512-eGbYq2CT+tos1fBwLQ/tkBt9J5M3JEHjku4hbvQUePCckkvVf14xWj+1m7dGoK81M/fOjFT7yM9UMeKT/+vFLQ==} - engines: {node: 20.x || 22.x || 23.x || 24.x} + better-sqlite3@12.5.0: + resolution: {integrity: sha512-WwCZ/5Diz7rsF29o27o0Gcc1Du+l7Zsv7SYtVPG0X3G/uUI1LqdxrQI7c9Hs2FWpqXXERjW9hp6g3/tH7DlVKg==} + engines: {node: 20.x || 22.x || 23.x || 24.x || 25.x} + + bidi-js@1.0.3: + resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} bignumber.js@9.3.1: resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==} @@ -5960,6 +6319,9 @@ packages: bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + bintrees@1.0.2: + resolution: {integrity: sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==} + bl@1.2.3: resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==} @@ -5976,15 +6338,15 @@ packages: resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - body-parser@2.2.0: - resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} + body-parser@2.2.1: + resolution: {integrity: sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==} engines: {node: '>=18'} boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - bowser@2.11.0: - resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + bowser@2.13.1: + resolution: {integrity: sha512-OHawaAbjwx6rqICCKgSG0SAnT05bzd7ppyKLVUITZpANBaaMFBAsaNkto3LoQ31tyFP5kNujE8Cdx85G9VzOkw==} boxen@5.1.2: resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} @@ -6013,8 +6375,8 @@ packages: browserify-mime@1.2.9: resolution: {integrity: sha512-uz+ItyJXBLb6wgon1ELEiVowJBEsy03PUWGRQU7cxxx9S+DW2hujPp+DaMYEOClRPzsn7NB99NtJ6pGnt8y+CQ==} - browserslist@4.25.1: - resolution: {integrity: sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==} + browserslist@4.28.0: + resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -6072,14 +6434,17 @@ packages: buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - buildcheck@0.0.6: - resolution: {integrity: sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A==} + buildcheck@0.0.7: + resolution: {integrity: sha512-lHblz4ahamxpTmnsk+MNTRWsjYKv965MwOrSJyeD588rR3Jcu7swE+0wN5F+PbL5cjgu/9ObkhfzEPuofEMwLA==} engines: {node: '>=10.0.0'} builtin-modules@1.1.1: resolution: {integrity: sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==} engines: {node: '>=0.10.0'} + bun-types@1.3.3: + resolution: {integrity: sha512-z3Xwlg7j2l9JY27x5Qn3Wlyos8YAp0kKRlrePAOjgjMGS5IG6E7Jnlx736vH9UVI4wUICwwhC9anYL++XeOgTQ==} + bundle-require@5.1.0: resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -6183,8 +6548,8 @@ packages: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} - caniuse-lite@1.0.30001727: - resolution: {integrity: sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==} + caniuse-lite@1.0.30001757: + resolution: {integrity: sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==} capture-stack-trace@1.0.2: resolution: {integrity: sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==} @@ -6205,8 +6570,8 @@ packages: resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} engines: {node: '>=4'} - chai@5.2.1: - resolution: {integrity: sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==} + chai@5.3.3: + resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} engines: {node: '>=18'} chalk-template@0.4.0: @@ -6225,8 +6590,8 @@ packages: resolution: {integrity: sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - chalk@5.4.1: - resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} char-regex@1.0.2: @@ -6236,6 +6601,9 @@ packages: chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + chardet@2.1.1: + resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} + check-error@1.0.3: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} @@ -6273,13 +6641,17 @@ packages: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} - chromium-bidi@7.2.0: - resolution: {integrity: sha512-gREyhyBstermK+0RbcJLbFhcQctg92AGgDe/h/taMJEOLRdtSswBAO9KmvltFSQWgM2LrwWu5SIuEUbdm3JsyQ==} + chromium-bidi@11.0.0: + resolution: {integrity: sha512-cM3DI+OOb89T3wO8cpPSro80Q9eKYJ7hGVXoGS3GkDPxnYSqiv+6xwpIf6XERyJ9Tdsl09hmNmY94BkgZdVekw==} peerDependencies: devtools-protocol: '*' - chrono-node@2.8.3: - resolution: {integrity: sha512-YukiXak31pshonVWaeJ9cZ4xxWIlbsyn5qYUkG5pQ+usZ6l22ASXDIk0kHUQkIBNOCLRevFkHJjnGKXwZNtyZw==} + chrono-node@2.8.4: + resolution: {integrity: sha512-F+Rq88qF3H2dwjnFrl3TZrn5v4ZO57XxeQ+AhuL1C685So1hdUV/hT/q8Ja5UbmPYEZfx8VrxFDa72Dgldcxpg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + chrono-node@2.9.0: + resolution: {integrity: sha512-glI4YY2Jy6JII5l3d5FN6rcrIbKSQqKPhWsIRYPK2IK8Mm4Q1ZZFdYIaDqglUNf7gNwG+kWIzTn0omzzE0VkvQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} ci-info@2.0.0: @@ -6295,8 +6667,8 @@ packages: class-transformer@0.5.1: resolution: {integrity: sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==} - class-validator@0.14.2: - resolution: {integrity: sha512-3kMVRF2io8N8pY1IFIXlho9r8IPUUIfHe2hYVtiebvAzU2XeQFXTv+XI4WX+TnXmtwXMDcjngcpkiPM0O9PvLw==} + class-validator@0.14.3: + resolution: {integrity: sha512-rXXekcjofVN1LTOSw+u4u9WXVEUvNBVjORW154q/IdmYWy1nMbOU9aNtZB0t8m+FJQ9q91jlr2f9CwwUFdFMRA==} clean-css@4.2.4: resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==} @@ -6380,8 +6752,8 @@ packages: resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} engines: {node: '>=0.10.0'} - collect-v8-coverage@1.0.2: - resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + collect-v8-coverage@1.0.3: + resolution: {integrity: sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==} color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -6390,27 +6762,37 @@ packages: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} + color-convert@3.1.3: + resolution: {integrity: sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==} + engines: {node: '>=14.6'} + color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + color-name@2.1.0: + resolution: {integrity: sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==} + engines: {node: '>=12.20'} + + color-string@2.1.4: + resolution: {integrity: sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==} + engines: {node: '>=18'} color-support@1.1.3: resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} hasBin: true - color@3.2.1: - resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + color@5.0.3: + resolution: {integrity: sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==} + engines: {node: '>=18'} colorette@2.0.19: resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} - colorspace@1.1.4: - resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} @@ -6460,10 +6842,6 @@ packages: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} - compression@1.7.4: - resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} - engines: {node: '>= 0.8.0'} - compression@1.8.1: resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} engines: {node: '>= 0.8.0'} @@ -6504,8 +6882,8 @@ packages: console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - console-table-printer@2.14.6: - resolution: {integrity: sha512-MCBl5HNVaFuuHW6FGbL/4fB7N/ormCy+tQ+sxTrF6QtSbSNETvPuOVbkJBhzDgYhvjWGrTma4eYJa37ZuoQsPw==} + console-table-printer@2.15.0: + resolution: {integrity: sha512-SrhBq4hYVjLCkBVOWaTzceJalvn5K1Zq5aQA6wXC/cYjI3frKWNPEMK3sZsJfNNQApvCQmgBcc13ZKmFj8qExw==} content-disposition@0.5.2: resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} @@ -6515,9 +6893,9 @@ packages: 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'} + content-disposition@1.0.1: + resolution: {integrity: sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==} + engines: {node: '>=18'} content-type@1.0.5: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} @@ -6554,15 +6932,23 @@ packages: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} + cookie@1.1.1: + resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} + engines: {node: '>=18'} + cookiejar@2.1.4: resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} + copy-anything@4.0.5: + resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} + engines: {node: '>=18'} + core-js@2.6.12: resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. - core-js@3.44.0: - resolution: {integrity: sha512-aFCtd4l6GvAXwVEh3XbbVqJGHDJt0OZRa+5ePGx3LLwi12WfexqQxcsohb2wgsa/92xtl19Hd66G/L+TaAxDMw==} + core-js@3.47.0: + resolution: {integrity: sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==} core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} @@ -6622,8 +7008,8 @@ packages: create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - cron@4.3.2: - resolution: {integrity: sha512-JxBBnf5zRz+NhW9XcP16gwUKAKIimy2G0QCCQu8kk5XwM4aCGwMt+nntouAfXF9A57965XzB6hitBlJAz5Ts6w==} + cron@4.3.4: + resolution: {integrity: sha512-OiO0l73MGhQOZQCjYZ0v7r8yFWpBOWteemwR1RIxiHtfVsIOwiTJZDvg7GmKzggkwC0RO8tI3P1QYBUCIZNYRQ==} engines: {node: '>=18.x'} cross-spawn@6.0.6: @@ -6651,6 +7037,10 @@ packages: css-select@5.2.2: resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} + css-tree@3.1.0: + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-what@6.2.2: resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} engines: {node: '>= 6'} @@ -6659,8 +7049,12 @@ packages: resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} engines: {node: '>=18'} - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + cssstyle@5.3.3: + resolution: {integrity: sha512-OytmFH+13/QXONJcC75QNdMtKpceNk3u8ThBjyyYjkEcy/ekBwR1mMAuNvi3gdBPW3N5TlCzQ0WZw8H0lN/bDw==} + engines: {node: '>=20'} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} custom-event-polyfill@1.0.7: resolution: {integrity: sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w==} @@ -6668,10 +7062,6 @@ packages: custom-event@1.0.1: resolution: {integrity: sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==} - d@1.0.2: - resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} - engines: {node: '>=0.12'} - dashdash@1.14.1: resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} engines: {node: '>=0.10'} @@ -6692,14 +7082,18 @@ packages: resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} engines: {node: '>= 14'} - data-uri-utils@1.0.8: - resolution: {integrity: sha512-LHm6O/aHmTdSsIKGI6d/BJ8gQyBiai/5g57s1XKDHFecVWbq0HYlEXheohwiLbpsEHjpdHNf+D50Q/onMnNIYQ==} + data-uri-utils@1.0.9: + resolution: {integrity: sha512-oJNXjA6X7WpJHXVhy8ZWpiTSsigd6z64Mret1Aj8XcqDlWQSFPaAkvG0yCJnlsUmcTAWa9p0ENNWMBbxUckFFg==} engines: {node: '>= 14'} data-urls@5.0.0: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} + data-urls@6.0.0: + resolution: {integrity: sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA==} + engines: {node: '>=20'} + data-view-buffer@1.0.2: resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} @@ -6718,15 +7112,11 @@ packages: dateformat@4.6.3: resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} - dayjs@1.11.13: - resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} - - debug-fabulous@2.0.2: - resolution: {integrity: sha512-XfAbX8/owqC+pjIg0/+3V1gp8TugJT7StX/TE1TYedjrRf7h7SgUAL/+gKoAQGPCLbSU5L5LPvDg4/cGn1E/WA==} - engines: {node: '>= 8'} + dayjs@1.11.19: + resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} - debug-logfmt@1.2.3: - resolution: {integrity: sha512-Btc8hrSu2017BcECwhnkKtA7+9qBRv06x8igvJRRyDcZo1cmEbwp/OmLDSJFuJ/wgrdF7TbtGeVV6FCxagJoNQ==} + debug-logfmt@1.4.7: + resolution: {integrity: sha512-NzGmPp2Fru8KerWcg4zfiPCC1rspLUPqfH5Duz/ZF49CqO97odSx7eFjBNiOQzNQYfvpEEPrxNjyA436lITQkQ==} engines: {node: '>= 8'} debug@2.6.9: @@ -6762,8 +7152,8 @@ packages: supports-color: optional: true - debug@4.4.1: - resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -6790,8 +7180,8 @@ packages: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} - dedent@1.6.0: - resolution: {integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==} + dedent@1.7.0: + resolution: {integrity: sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==} peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: @@ -6898,8 +7288,8 @@ packages: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} - detect-libc@2.0.4: - resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} detect-newline@3.1.0: @@ -6914,8 +7304,11 @@ packages: engines: {node: '>= 16.0.0'} hasBin: true - devtools-protocol@0.0.1464554: - resolution: {integrity: sha512-CAoP3lYfwAGQTaAXYvA6JZR0fjGUb7qec1qf4mToyoH2TZgUFeIqYcjh6f9jNuhHfuZiEdH+PONHYrLhRQX6aw==} + devalue@5.5.0: + resolution: {integrity: sha512-69sM5yrHfFLJt0AZ9QqZXGCPfJ7fQjvpln3Rq5+PS03LD32Ost1Q9N+eEnaQwGRIriKkMImXD56ocjQmfjbV3w==} + + devtools-protocol@0.0.1521046: + resolution: {integrity: sha512-vhE6eymDQSKWUXwwA37NtTTVEzjtGVfDr3pRbsWEQ5onH/Snp2c+2xZHWJJawG/0hCCJLRGt4xVtEVUVILol4w==} dezalgo@1.0.4: resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} @@ -6958,16 +7351,16 @@ packages: resolution: {integrity: sha512-plizRs/Vf15H+GCVxq2EUvyPK7ei9b/cVesHvjnX4xaXjM9spHe2Ytq0BitndFgvTJ3E3NljPNUEl7BAN43iZw==} engines: {node: '>= 6.0.0'} - docker-compose@1.2.0: - resolution: {integrity: sha512-wIU1eHk3Op7dFgELRdmOYlPYS4gP8HhH1ZmZa13QZF59y0fblzFDFmKPhyc05phCy2hze9OEvNZAsoljrs+72w==} + docker-compose@1.3.0: + resolution: {integrity: sha512-7Gevk/5eGD50+eMD+XDnFnOrruFkL0kSd7jEG4cjmqweDSUhB7i0g8is/nBdVpl+Bx338SqIB2GLKm32M+Vs6g==} engines: {node: '>= 6.0.0'} docker-modem@5.0.6: resolution: {integrity: sha512-ens7BiayssQz/uAxGzH8zGXCtiV24rRWXdjNha5V4zSOcxmAZsfGVm/PPFbwQdqEkDnhG+SyR9E3zSHUbOKXBQ==} engines: {node: '>= 8.0'} - dockerode@4.0.7: - resolution: {integrity: sha512-R+rgrSRTRdU5mH14PZTCPZtW/zw3HDWNTS/1ZAQpL/5Upe/ye5K9WQkIysu4wBoiMwKynsz0a8qWuGsHgEvSAA==} + dockerode@4.0.9: + resolution: {integrity: sha512-iND4mcOWhPaCNh54WmK/KoSb35AFqPAUWFMffTQcp52uQt36b5uNwEJTSXntJZBbeGad72Crbi/hvDIv6us/6Q==} engines: {node: '>= 8.0'} dom-autoscroller@2.3.4: @@ -7003,8 +7396,8 @@ packages: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} - dompurify@3.2.6: - resolution: {integrity: sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==} + dompurify@3.3.0: + resolution: {integrity: sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ==} domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} @@ -7044,14 +7437,14 @@ packages: resolution: {integrity: sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg==} engines: {node: '>=12'} - dotenv@16.5.0: - resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} - engines: {node: '>=12'} - dotenv@16.6.1: resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} engines: {node: '>=12'} + dotenv@17.2.3: + resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} + engines: {node: '>=12'} + dottie@2.0.6: resolution: {integrity: sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA==} @@ -7064,12 +7457,12 @@ packages: dragula@3.7.3: resolution: {integrity: sha512-/rRg4zRhcpf81TyDhaHLtXt6sEywdfpv1cRUMeFFy7DuypH2U0WUL0GTdyAQvXegviT4PJK4KuMmOaIDpICseQ==} - drizzle-kit@0.31.4: - resolution: {integrity: sha512-tCPWVZWZqWVx2XUsVpJRnH9Mx0ClVOf5YUHerZ5so1OKSlqww4zy1R5ksEdGRcO3tM3zj0PYN6V48TbQCL1RfA==} + drizzle-kit@0.31.7: + resolution: {integrity: sha512-hOzRGSdyKIU4FcTSFYGKdXEjFsncVwHZ43gY3WU5Bz9j5Iadp6Rh6hxLSQ1IWXpKLBKt/d5y1cpSPcV+FcoQ1A==} hasBin: true - drizzle-orm@0.44.3: - resolution: {integrity: sha512-8nIiYQxOpgUicEL04YFojJmvC4DNO4KoyXsEIqN44+g6gNBr6hmVpWk3uyAt4CaTiRGDwoU+alfqNNeonLAFOQ==} + drizzle-orm@0.44.7: + resolution: {integrity: sha512-quIpnYznjU9lHshEOAYLoZ9s3jweleHlZIAWR/jX9gAWNg/JhQ1wj0KGRf7/Zm+obRrYd9GjPVJg790QY9N5AQ==} peerDependencies: '@aws-sdk/client-rds-data': '>=3' '@cloudflare/workers-types': '>=4' @@ -7195,8 +7588,23 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.191: - resolution: {integrity: sha512-xcwe9ELcuxYLUFqZZxL19Z6HVKcvNkIwhbHUz7L3us6u12yR+7uY89dSl570f/IqNthx8dAw3tojG7i4Ni4tDA==} + electron-to-chromium@1.5.262: + resolution: {integrity: sha512-NlAsMteRHek05jRUxUR0a5jpjYq9ykk6+kO0yRaMi5moe7u0fVIOeQ3Y30A8dIiWFBNUoQGi1ljb1i5VtS9WQQ==} + + elysia@1.4.16: + resolution: {integrity: sha512-KZtKN160/bdWVKg2hEgyoNXY8jRRquc+m6PboyisaLZL891I+Ufb7Ja6lDAD7vMQur8sLEWIcidZOzj5lWw9UA==} + peerDependencies: + '@sinclair/typebox': ^0.34.0 + '@types/bun': '>= 1.2.0' + exact-mirror: '>= 0.0.9' + file-type: '>= 20.0.0' + openapi-types: '>= 12.0.0' + typescript: '>= 5.0.0' + peerDependenciesMeta: + '@types/bun': + optional: true + typescript: + optional: true emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -7266,8 +7674,8 @@ packages: resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} hasBin: true - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} es-abstract@1.24.0: resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} @@ -7302,26 +7710,12 @@ packages: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} - es5-ext@0.10.64: - resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} - engines: {node: '>=0.10'} - - es6-iterator@2.0.3: - resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} - es6-promise@4.2.8: resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} es6-promisify@5.0.0: resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - es6-symbol@3.1.4: - resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} - engines: {node: '>=0.12'} - - es6-weak-map@2.0.3: - resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} - esbuild-register@3.6.0: resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} peerDependencies: @@ -7337,8 +7731,13 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.25.8: - resolution: {integrity: sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==} + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + engines: {node: '>=18'} + hasBin: true + + esbuild@0.27.0: + resolution: {integrity: sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==} engines: {node: '>=18'} hasBin: true @@ -7390,10 +7789,6 @@ packages: resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} engines: {node: '>=6'} - esniff@2.0.1: - resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} - engines: {node: '>=0.10'} - espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -7403,8 +7798,8 @@ packages: engines: {node: '>=4'} hasBin: true - esrap@2.1.0: - resolution: {integrity: sha512-yzmPNpl7TBbMRC5Lj2JlJZNPml0tzqoqP5B1JXycNUwtqma9AKCO0M2wHrdgsHcy1WRW7S9rJknAMtByg3usgA==} + esrap@2.2.0: + resolution: {integrity: sha512-WBmtxe7R9C5mvL4n2le8nMUe4mD5V9oiK2vJpQ9I3y20ENPUomPcphBXE8D1x/Bm84oN1V+lOfgXxtqmxTp3Xg==} estraverse@4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} @@ -7428,9 +7823,6 @@ packages: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} - event-emitter@0.3.5: - resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} - event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} @@ -7445,6 +7837,9 @@ packages: resolution: {integrity: sha512-sPNTqiMokAvV048P2c9+foqVJzk49o6d4e0D/sq5jog3pw+4kBgyR0gaM1FM7Mx6Kzd9dztesh9oYz1LWWOpzw==} engines: {node: '>=10'} + events-universal@1.0.1: + resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==} + events@1.1.1: resolution: {integrity: sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==} engines: {node: '>=0.4.x'} @@ -7457,9 +7852,17 @@ packages: resolution: {integrity: sha512-v0eOBUbiaFojBu2s2NPBfYUoRR9GjcDNvCXVaqEf5vVfpIAh9f8RCo4vXTP8c63QRKCFwoLpMpTdPwwhEKVgzA==} engines: {node: '>=14.18'} - eventsource-parser@3.0.3: - resolution: {integrity: sha512-nVpZkTMM9rF6AQ9gPJpFsNAMt48wIzB5TQgiTLdHiuO8XEDhUgZEhqKlZWXbIzo9VmJ/HvysHqEaVeD5v9TPvA==} - engines: {node: '>=20.0.0'} + eventsource-parser@3.0.6: + resolution: {integrity: sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==} + engines: {node: '>=18.0.0'} + + exact-mirror@0.2.5: + resolution: {integrity: sha512-u8Wu2lO8nio5lKSJubOydsdNtQmH8ENba5m0nbQYmTvsjksXKYIS1nSShdDlO8Uem+kbo+N6eD5I03cpZ+QsRQ==} + peerDependencies: + '@sinclair/typebox': ^0.34.0 + peerDependenciesMeta: + '@sinclair/typebox': + optional: true execa@1.0.0: resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} @@ -7492,11 +7895,11 @@ packages: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - exponential-backoff@3.1.2: - resolution: {integrity: sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==} + exponential-backoff@3.1.3: + resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} - express-rate-limit@8.0.1: - resolution: {integrity: sha512-aZVCnybn7TVmxO4BtlmnvX+nuz8qHW124KKJ8dumsBsmv5ZLxE0pYu7S2nwyRBGHHCAzdmnGyrc5U/rksSPO7Q==} + express-rate-limit@8.2.1: + resolution: {integrity: sha512-PCZEIEIxqwhzw4KF0n7QF4QqruVTcF73O5kFKUnGOyjbCCgizBBiFaYpd/fnBLUMPw/BWw9OsiN7GgrNYr7j6g==} engines: {node: '>= 16'} peerDependencies: express: '>= 4.11' @@ -7513,9 +7916,6 @@ packages: resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} engines: {node: '>= 18'} - ext@1.7.0: - resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} - extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} engines: {node: '>=0.10.0'} @@ -7542,6 +7942,9 @@ packages: fast-copy@3.0.2: resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} + fast-decode-uri-component@1.0.1: + resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -7564,10 +7967,6 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-redact@3.5.0: - resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} - engines: {node: '>=6'} - fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} @@ -7598,8 +7997,9 @@ packages: fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - fdir@6.4.6: - resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -7689,8 +8089,8 @@ packages: fn.name@1.1.0: resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} - follow-redirects@1.15.9: - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -7741,8 +8141,8 @@ packages: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} - form-data@4.0.4: - resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} engines: {node: '>= 6'} formdata-polyfill@4.0.10: @@ -7782,8 +8182,8 @@ packages: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} - fs-extra@11.3.0: - resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} + fs-extra@11.3.2: + resolution: {integrity: sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==} engines: {node: '>=14.14'} fs-extra@5.0.0: @@ -7857,8 +8257,8 @@ packages: resolution: {integrity: sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==} engines: {node: '>=14'} - gaxios@7.1.1: - resolution: {integrity: sha512-Odju3uBUJyVCkW64nLD4wKLhbh93bh6vIg/ZIXkWiLPBrdgtc65+tls/qml+un3pr6JqYVFDZbbmLDQT68rTOQ==} + gaxios@7.1.3: + resolution: {integrity: sha512-YGGyuEdVIjqxkxVH1pUTMY/XtmmsApXrCVv5EU25iX6inEPbV+VakJfLealkBtJN69AQmh1eGOdCl9Sm1UP6XQ==} engines: {node: '>=18'} gcp-metadata@0.6.3: @@ -7873,8 +8273,8 @@ packages: resolution: {integrity: sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==} engines: {node: '>=14'} - gcp-metadata@7.0.1: - resolution: {integrity: sha512-UcO3kefx6dCcZkgcTGgVOTFb7b1LlQ02hY1omMjjrrBzkajRMCFgYOjs7J71WqnuG1k2b+9ppGL7FsOfhZMQKQ==} + gcp-metadata@8.1.2: + resolution: {integrity: sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==} engines: {node: '>=18'} gcs-resumable-upload@0.10.2: @@ -7885,6 +8285,10 @@ packages: generate-function@2.3.1: resolution: {integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==} + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} + gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -7935,8 +8339,8 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} - get-tsconfig@4.10.1: - resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + get-tsconfig@4.13.0: + resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} get-uri@3.0.2: resolution: {integrity: sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==} @@ -7968,14 +8372,13 @@ packages: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} hasBin: true - glob@11.0.3: - resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} + glob@13.0.0: + resolution: {integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==} engines: {node: 20 || >=22} - hasBin: true glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} @@ -8010,8 +8413,8 @@ packages: resolution: {integrity: sha512-jYiWC8NA9n9OtQM7ANn0Tk464do9yhKEtaJ72pKcaBiEwn4LwcGYIYOfwtfsSm3aur/ed3tlSxbmg24IAT6gAg==} engines: {node: '>=4'} - google-auth-library@10.2.0: - resolution: {integrity: sha512-gy/0hRx8+Ye0HlUm3GrfpR4lbmJQ6bJ7F44DmN7GtMxxzWSojLzx0Bhv/hj7Wlj7a2On0FcT8jrz8Y1c1nxCyg==} + google-auth-library@10.5.0: + resolution: {integrity: sha512-7ABviyMOlX5hIVD60YOfHw4/CxOfBhyduaYB+wbFWCWoni4N7SLcV46hrVRktuBbZjFC9ONyqamZITN7q3n32w==} engines: {node: '>=18'} google-auth-library@8.9.0: @@ -8035,16 +8438,16 @@ packages: resolution: {integrity: sha512-V6eky/xz2mcKfAd1Ioxyd6nmA61gao3n01C+YeuIwu3vzM9EDR6wcVzMSIbLMDXWeoi9SHYctXuKYC5uJUT3eQ==} engines: {node: '>=14'} - google-gax@5.0.1: - resolution: {integrity: sha512-I8fTFXvIG8tYpiDxDXwCXoFsTVsvHJ2GA7DToH+eaRccU8r3nqPMFghVb2GdHSVcu4pq9ScRyB2S1BjO+vsa1Q==} + google-gax@5.0.6: + resolution: {integrity: sha512-1kGbqVQBZPAAu4+/R1XxPQKP0ydbNYoLAr4l0ZO2bMV0kLyLW4I1gAk++qBLWt7DPORTzmWRMsCZe86gDjShJA==} engines: {node: '>=18'} google-logging-utils@0.0.2: resolution: {integrity: sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==} engines: {node: '>=14'} - google-logging-utils@1.1.1: - resolution: {integrity: sha512-rcX58I7nqpu4mbKztFeOAObbomBbHU2oIb/d3tJfF3dizGSApqtSwYJigGCooHdnMyQBIw8BrWyK96w3YXgr6A==} + google-logging-utils@1.1.3: + resolution: {integrity: sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==} engines: {node: '>=14'} google-p12-pem@1.0.5: @@ -8077,8 +8480,8 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphql@16.11.0: - resolution: {integrity: sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==} + graphql@16.12.0: + resolution: {integrity: sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} gray-matter@4.0.3: @@ -8160,9 +8563,9 @@ packages: resolution: {integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==} engines: {node: '>=8'} - hash-base@3.1.0: - resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} - engines: {node: '>=4'} + hash-base@3.1.2: + resolution: {integrity: sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==} + engines: {node: '>= 0.8'} hash-stream-validation@0.2.4: resolution: {integrity: sha512-Gjzu0Xn7IagXVkSu9cSFuK1fqzwtLwFhNhVL8IFJijRNMgUttFbBSIAzKuSIrsFMO1+g1RlsoN49zPIbwPDMGQ==} @@ -8186,6 +8589,10 @@ packages: resolution: {integrity: sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==} deprecated: This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues. + hono@4.10.7: + resolution: {integrity: sha512-icXIITfw/07Q88nLSkB9aiUrd8rYzSweK681Kjo/TSggaGbOX4RRyxxm71v+3PC8C/j+4rlxGeoTRxQDkaJkUw==} + engines: {node: '>=16.9.0'} + html-comment-regex@1.1.2: resolution: {integrity: sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==} @@ -8230,6 +8637,10 @@ packages: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} + http-parser-js@0.5.10: resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==} @@ -8269,8 +8680,8 @@ packages: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} - human-id@4.1.1: - resolution: {integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==} + human-id@4.1.3: + resolution: {integrity: sha512-tsYlhAYpjCKa//8rXZ9DqKEawhPoSytweBC2eNvcaDK+57RZLHGqNs3PZTQO6yekLFSuvA6AlnAfrw1uBvtb+Q==} hasBin: true human-signals@1.1.1: @@ -8300,6 +8711,10 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} + iconv-lite@0.7.0: + resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==} + engines: {node: '>=0.10.0'} + idb@7.1.1: resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} @@ -8342,8 +8757,8 @@ packages: resolution: {integrity: sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==} engines: {node: '>=8'} - import-in-the-middle@1.14.2: - resolution: {integrity: sha512-5tCuY9BV8ujfOpwtAGgsTx9CGUapcFMEEyByLv1B+v2+6DhAcw+Zr0nhQT7uwaZ7DiourxFEscghOR8e1aPLQw==} + import-in-the-middle@1.15.0: + resolution: {integrity: sha512-bpQy+CrsRmYmoPMAE/0G33iwRqwW4ouqdRg8jgbH3aKuCtOc8lxgmYXg2dMM92CRiGP660EtBcymH/eVUpCSaA==} import-lazy@2.1.0: resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} @@ -8417,22 +8832,22 @@ packages: resolution: {integrity: sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==} engines: {node: '>=4'} - ioredis@5.6.1: - resolution: {integrity: sha512-UxC0Yv1Y4WRJiGQxQkP0hfdL0/5/6YvdfOOClRgJ0qppSarkhneSa6UvkMkms0AkdGimSH3Ikqm+6mkMmX7vGA==} + ioredis@5.8.2: + resolution: {integrity: sha512-C6uC+kleiIMmjViJINWk80sOQw5lEzse1ZmvD+S/s8p8CWapftSaC+kocGTx6xrbrJ4WmYQGC08ffHLr6ToR6Q==} engines: {node: '>=12.22.0'} ip-address@10.0.1: resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==} engines: {node: '>= 12'} + ip-address@10.1.0: + resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} + engines: {node: '>= 12'} + ip-address@5.9.4: resolution: {integrity: sha512-dHkI3/YNJq4b/qQaz+c8LuarD3pY24JqZWfjB8aZx1gtpc2MDILu9L9jpZe1sHpzo/yWFweQVn+U//FhazUxmw==} engines: {node: '>= 0.10'} - ip-address@9.0.5: - resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} - engines: {node: '>= 12'} - ip-regex@4.3.0: resolution: {integrity: sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==} engines: {node: '>=8'} @@ -8469,9 +8884,6 @@ packages: is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - is-async-function@2.1.1: resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} engines: {node: '>= 0.4'} @@ -8552,8 +8964,8 @@ packages: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} engines: {node: '>=6'} - is-generator-function@1.1.0: - resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} engines: {node: '>= 0.4'} is-glob@4.0.3: @@ -8622,9 +9034,6 @@ packages: is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - is-promise@2.2.2: - resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} - is-promise@4.0.0: resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} @@ -8694,8 +9103,8 @@ packages: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} - is-uri@1.2.8: - resolution: {integrity: sha512-Z7hGoSV8XV8Q86Tqw2hR4XAlY5aZkd8gFCnHAC/eMJZ2A4MGIhXpPYPkAvVamIGMyVFjeOdsI0d8yeYk6Ekbhw==} + is-uri@1.2.12: + resolution: {integrity: sha512-dsdV/MQ1enO8kwkPSJcB2TsTNR0GbQI7s2wgx1XQFu6akGJmS/Qo1xjdSmyuivVelltgWC4UyNjAJ7cCaBwY6w==} engines: {node: '>= 4'} is-weakmap@2.0.2: @@ -8710,6 +9119,10 @@ packages: resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} + is-what@5.5.0: + resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==} + engines: {node: '>=18'} + is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} @@ -8788,8 +9201,8 @@ packages: resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} engines: {node: '>=10'} - istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + istanbul-reports@3.2.0: + resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} iterate-iterator@1.0.2: @@ -8801,12 +9214,8 @@ packages: jackspeak@3.4.3: 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} - - jake@10.9.2: - resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + jake@10.9.4: + resolution: {integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==} engines: {node: '>=10'} hasBin: true @@ -8971,10 +9380,6 @@ packages: resolution: {integrity: sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg==} engines: {node: '>=18'} - jiti@2.5.1: - resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} - hasBin: true - jmespath@0.16.0: resolution: {integrity: sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==} engines: {node: '>= 0.6.0'} @@ -9002,8 +9407,8 @@ packages: resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} engines: {node: '>=14'} - js-tiktoken@1.0.20: - resolution: {integrity: sha512-Xlaqhhs8VfCd6Sh7a1cFkZHQbYTLCwVJJWiHVxBYzLPxW0XsoxBy1hitmjkdIjD3Aon5BXLHFwU5O8WUx6HH+A==} + js-tiktoken@1.0.21: + resolution: {integrity: sha512-biOj/6M5qdgx5TKjDnFT1ymSpM5tbd3ylwDtrQvFQSu0Z7bBYko2dF+W/aUkXUPuk6IVpRxk/3Q2sHOzGlS36g==} js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -9011,12 +9416,12 @@ packages: js-tokens@9.0.1: resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + js-yaml@3.14.2: + resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} hasBin: true - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true js2xmlparser@4.0.2: @@ -9028,8 +9433,8 @@ packages: jsbn@1.1.0: resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - jsdoc@4.0.4: - resolution: {integrity: sha512-zeFezwyXeG4syyYHbvh1A967IAqq/67yXtXvuL5wnqCkFZe8I0vKfm+EO+YEvLguo6w9CDUbrAXVtJSHh2E8rw==} + jsdoc@4.0.5: + resolution: {integrity: sha512-P4C6MWP9yIlMiK8nwoZvxN84vb6MsnXcHuy7XzVOvQoCizWX5JFCBsWIIWKXBltpoRZXddUOVQmCTOZt9yDj9g==} engines: {node: '>=12.0.0'} hasBin: true @@ -9042,6 +9447,15 @@ packages: canvas: optional: true + jsdom@27.0.1: + resolution: {integrity: sha512-SNSQteBL1IlV2zqhwwolaG9CwhIhTvVHWg3kTss/cLE7H/X4644mtPQqYvCfsSrGQWt9hSZcgOXX8bOZaMN+kA==} + engines: {node: '>=20'} + peerDependencies: + canvas: ^3.0.0 + peerDependenciesMeta: + canvas: + optional: true + jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -9090,8 +9504,8 @@ packages: jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + jsonfile@6.2.0: + resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} jsonparse@1.2.0: resolution: {integrity: sha512-LkDEYtKnPFI9hQ/IURETe6F1dUH80cbRkaF6RaViSwoSNPwaxQpi6TgJGvJKyLQ2/9pQW+XCxK3hBoR44RAjkg==} @@ -9200,16 +9614,16 @@ packages: kuler@2.0.0: resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} - ky@1.8.2: - resolution: {integrity: sha512-XybQJ3d4Ea1kI27DoelE5ZCT3bSJlibYTtQuMsyzKox3TMyayw1asgQdl54WroAm+fIA3ZCr8zXW2RpR7qWVpA==} + ky@1.14.0: + resolution: {integrity: sha512-Rczb6FMM6JT0lvrOlP5WUOCB7s9XKxzwgErzhKlKde1bEV90FXplV1o87fpt4PU/asJFiqjYJxAJyzJhcrxOsQ==} engines: {node: '>=18'} - kysely@0.28.3: - resolution: {integrity: sha512-svKnkSH72APRdjfVCCOknxaC9Eb3nA2StHG9d5/sKOqRvHRp2Dtf1XwDvc92b4B5v6LV+EAGWXQbZ5jMOvHaDw==} + kysely@0.28.8: + resolution: {integrity: sha512-QUOgl5ZrS9IRuhq5FvOKFSsD/3+IA6MLE81/bOOTRA/YQpKDza2sFdN5g6JCB9BOpqMJDGefLCQ9F12hRS13TA==} engines: {node: '>=20.0.0'} - langsmith@0.3.53: - resolution: {integrity: sha512-cnEcJEiYjbcFQy7vTCQb7sR4w70UtBCu9loCOON+yYcK6T1lVmx27lQ4AF2KY7xzKY+FhbxWms5PV3SocizzaQ==} + langsmith@0.3.82: + resolution: {integrity: sha512-RTcxtRm0zp2lV+pMesMW7EZSsIlqN7OmR2F6sZ/sOFQwmcLVl+VErMPV4VkX4Sycs4/EIAFT5hpr36EqiHoikQ==} peerDependencies: '@opentelemetry/api': '*' '@opentelemetry/exporter-trace-otlp-proto': '*' @@ -9320,8 +9734,8 @@ packages: resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} engines: {node: '>= 0.8.0'} - libphonenumber-js@1.12.10: - resolution: {integrity: sha512-E91vHJD61jekHHR/RF/E83T/CMoaLXT7cwYA75T4gim4FZjnM6hbJjVIGg7chqlSqRsSvQ3izGmOjHy1SQzcGQ==} + libphonenumber-js@1.12.29: + resolution: {integrity: sha512-P2aLrbeqHbmh8+9P35LXQfXOKc7XJ0ymUKl7tyeyQjdRNfzunXWxQXGc4yl3fUf28fqLRfPY+vIVvFXK7KEBTw==} lilconfig@3.1.3: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} @@ -9435,9 +9849,6 @@ packages: lodash.property@4.4.2: resolution: {integrity: sha512-WVnsHSCea5NFrsWGdZilCFJWhHFtb/nqVrDXzR1bIXmOxIykrsAKOpRaYu9rCYoHYuq1SnG6G4A0inMwShV4dg==} - lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} @@ -9468,8 +9879,8 @@ packages: loupe@2.3.7: resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - loupe@3.2.0: - resolution: {integrity: sha512-2NCfZcT5VGVNX9mSZIxLRkEAegDGBpuQZBy13desuHeVORmBDyAET4TkJr4SjqQy3A8JDofMN6LpkK8Xcm/dlw==} + loupe@3.2.1: + resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} lower-case@1.1.4: resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} @@ -9489,8 +9900,8 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.1.0: - resolution: {integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==} + lru-cache@11.2.2: + resolution: {integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==} engines: {node: 20 || >=22} lru-cache@4.1.5: @@ -9510,18 +9921,15 @@ packages: lru-memoizer@2.3.0: resolution: {integrity: sha512-GXn7gyHAMhO13WSKrIiNfztwxodVsP8IoZ3XfrJV4yH2x0/OeTO/FIaAHTY5YekdGgW94njfuKmyyt1E0mR6Ug==} - lru-queue@0.1.0: - resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} - - lru.min@1.1.2: - resolution: {integrity: sha512-Nv9KddBcQSlQopmBHXSsZVY5xsdlZkdH/Iey0BlcBYggMd4two7cZnKOK9vmy3nY0O5RGH99z1PCeTpPqszUYg==} + lru.min@1.1.3: + resolution: {integrity: sha512-Lkk/vx6ak3rYkRR0Nhu4lFUT2VDnQSxBe8Hbl7f36358p6ow8Bnvr8lrLt98H8J1aGxfhbX4Fs5tYg2+FTwr5Q==} engines: {bun: '>=1.0.0', deno: '>=1.30.0', node: '>=8.0.0'} ltgt@2.2.1: resolution: {integrity: sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==} - luxon@3.7.1: - resolution: {integrity: sha512-RkRWjA926cTvz5rAb1BqyWkKbbjzCGchDUIKMCUvNi17j6f6j8uHGDV82Aqcqtzd+icoYpELmG3ksgGiFNNcNg==} + luxon@3.7.2: + resolution: {integrity: sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==} engines: {node: '>=12'} macos-release@2.5.1: @@ -9531,8 +9939,8 @@ packages: magic-bytes.js@1.12.1: resolution: {integrity: sha512-ThQLOhN86ZkJ7qemtVRGYM+gRgR8GEXNli9H/PMvpnZsE44Xfh3wx9kGJaldg314v85m+bFW6WBMaVHJc/c3zA==} - magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} magicast@0.3.5: resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} @@ -9589,6 +9997,9 @@ packages: md5.js@1.3.5: resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + mdn-data@2.12.2: + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} @@ -9608,13 +10019,12 @@ packages: resolution: {integrity: sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w==} deprecated: Superseded by memory-level (https://github.com/Level/community#faq) + memoirist@0.4.0: + resolution: {integrity: sha512-zxTgA0mSYELa66DimuNQDvyLq36AwDlTuVRbnQtB+VuTcKWm5Qc4z3WkSpgsFWHNhexqkIooqpv4hdcqrX5Nmg==} + memoize-one@6.0.0: resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} - memoizee@0.4.17: - resolution: {integrity: sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==} - engines: {node: '>=0.12'} - memory-cache@0.2.0: resolution: {integrity: sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA==} @@ -9642,52 +10052,53 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - metascraper-author@5.49.1: - resolution: {integrity: sha512-r8O+cnudC5QOqxRTg6EjceQI4QkP220MDDBaassNwLXRGGehTVdcAPTlrqwK4dHy5V4J5ZzMTnHcTJz5/POpIA==} + metascraper-author@5.49.5: + resolution: {integrity: sha512-36NR9B9eQKFrpBxnQgHpTRA67tczetsyelzRnCeY5drRBXKPWS56FaHc+S+VjpNrUq0mpPo6eG1nR++BkSm6aQ==} engines: {node: '>= 16'} - metascraper-clearbit@5.49.1: - resolution: {integrity: sha512-bLEiwzaTMvz31AdeYsVYNCnAWvkwz/fVyJ22pKjY6c/CjZ5fFP1iAsZRZQJ23i6Q/n1Ysfm+lHwfn4rPAxn++g==} + metascraper-clearbit@5.49.2: + resolution: {integrity: sha512-/WsQ5eklxXvWWCQevBQtN8BwBsEEzVfYscuFENBMaX8tvP9r+hXxNdip7er7X6g5YO4Cj+cENHDwqvS/94rv2w==} engines: {node: '>= 16'} + deprecated: This package is discontinued. See https://github.com/microlinkhq/metascraper/issues/750 - metascraper-date@5.49.1: - resolution: {integrity: sha512-/bdW609+hj/WiEqnplELPwg7KjUFukVOkwQY2Rw/72+DJV2buix44YHOKfiTkA7IQIxamHkRrGU5eSRYCI0Asg==} + metascraper-date@5.49.5: + resolution: {integrity: sha512-pc2MIhEXpWGhAuCZPAQuWoBI2pogJhRcZq5/1q6Odb4AkDW6NsN9s+wewSL2i8/A54pAnC9s0wK8/NJQ1m1JzA==} engines: {node: '>= 16'} - metascraper-description@5.49.1: - resolution: {integrity: sha512-UiC+4JTkjJt92ot+ap+YJDpP7Vsd9Or/4i7OOhMiptGSZfgs5N0aEAB7MdmBz3yT6D/ouAPcv57uMaS6fMZzdQ==} + metascraper-description@5.49.5: + resolution: {integrity: sha512-5krr6h0viwKsA//oLyah3SPLJZ+ZrKjsro8RJNtO/YOUW1X82K14Kt92S2Xhnpva4Hk2UuRHVlaPCpbDv3DZ6g==} engines: {node: '>= 16'} - metascraper-feed@5.49.1: - resolution: {integrity: sha512-SA3XvhLFdyWi7wTNm2T64Y97IFmmx3zBZwiJlpAvdn56qHWl1APyJ3au7Y8XDrjFDmloql4NeypvhybJSFtLJw==} + metascraper-feed@5.49.5: + resolution: {integrity: sha512-yknv4C4PbHiNWKdvNyZqBwJkndIaYJ1vRQ+5sGZq/G2CBrCuaTzSzI8rP6YKq+80wAnv0BPmdsPA4RmnGt9dPw==} engines: {node: '>= 16'} - metascraper-image@5.49.1: - resolution: {integrity: sha512-j2y5P2X9o6xzYr9YEwqKEkvDowM3Opjf9zM0viMrmaxiQdqLpiijmbR83HgJGwlCBbUqZXZqQLBQn/w02FaLnw==} + metascraper-image@5.49.5: + resolution: {integrity: sha512-/uXrqNTjD8t+eyKVnmqk8IwmIRM0LV3+OE2eRUk64njVJ6OKyazIQpNKGCIdkYKV70kZ0YuaKXflc69kpex3vA==} engines: {node: '>= 16'} - metascraper-lang@5.49.1: - resolution: {integrity: sha512-GPzPG5Noob1mfFVwoZy3LnJ3ASaR3x0u2hwm0q8hcibdR/QAf8kNdLsC7IH68j3Esn+VDE1wp0J4K5YT/+sqsA==} + metascraper-lang@5.49.5: + resolution: {integrity: sha512-OuAu7HNbBMrlid77kjT4gVxwWGi2a4H29wtiyU1pD14WRK7oKhSFSdMw5BoNv3/pZB+r/mC+uX8e0x6nLpc3Sg==} engines: {node: '>= 16'} - metascraper-logo@5.49.1: - resolution: {integrity: sha512-5YgBMqz64rUgoqz/2ai5ySb2vCvF+nPZBbiF/Vlqb48MOeb7KZskiRtgh4g6HBdnhMqbAem7xDUAJeZfaqeiww==} + metascraper-logo@5.49.5: + resolution: {integrity: sha512-6CNHi0WfFam6XUuButvC5Y+ts+BqhqEOlDodAQG9Rm883QIF2kd1XpobwNQ4JZ4qpmJNVQacU87H+bCSLtd1HA==} engines: {node: '>= 16'} - metascraper-publisher@5.49.1: - resolution: {integrity: sha512-5lDAw8Fk4GjauES+QzMu9CIPxZqKY3xfI/JHSi/RZjopV15xYag+tes6EkGtqBupaPVMDsPLOLgRFjC2SFR8Ew==} + metascraper-publisher@5.49.5: + resolution: {integrity: sha512-4QEDfzaJFDojtsoJzr9mxuH/po9Rv9Kv2F1YPifXdSJIf4vigzK5MNYWtqoZQIDGtYGH7O7MscKzJQgZwDo5Tg==} engines: {node: '>= 16'} - metascraper-title@5.49.1: - resolution: {integrity: sha512-hGpOYmA5PR7UvnJri1A7+Pz4kLsV7mxIK7rG45hfC635aR2vISe75O0pPteUzfeczbzQNo1rIwgrSABxL73+Nw==} + metascraper-title@5.49.5: + resolution: {integrity: sha512-ZZVEtaHryN0konetrQYXRaYI2OFJpn3WHu8wJEzXcUxmXPdKC/6IDs5fdrFO/1VPinmXfvs/sM0HMXUu7A2v8g==} engines: {node: '>= 16'} - metascraper-url@5.49.1: - resolution: {integrity: sha512-eFTS6BdPrn2Cds1mVPUP6t3rJMPuhI2QTyFWnrMns+j5SNzLP2HDW/YugFASFHWFMOCB+QEwpdKa/E4jdVBuTQ==} + metascraper-url@5.49.5: + resolution: {integrity: sha512-0QHMRJCfuU9F7nZDCMf/171WJhk6l1fnQswgaLszchEn/Qg+0K7D0oFj/oPLrQXUxMpt0ViOvfZXMbJl1ObGSw==} engines: {node: '>= 16'} - metascraper@5.49.1: - resolution: {integrity: sha512-pfR51TqV++iivEnK6kWqAiiAUAAyOPFKXh2+50PilKZFTWEhScqpmGUTHnvGFTu0KgbiJV1rqfkUUD4ed3WIOg==} + metascraper@5.49.5: + resolution: {integrity: sha512-AbGZ2wQkFxacsl2U01E/c3blWeOceYxnl00QQg9dtZqrnAXjgm/xSxWb4yI3yq3AjDLDsy+7y/fH46VNRhWSkg==} engines: {node: '>= 16'} methmeth@1.1.0: @@ -9705,8 +10116,8 @@ packages: resolution: {integrity: sha512-iqDMU9J643BHg8Zp7EMZNLTp6Pgs2f1S2SMnCW2VlUqMs17xCZ5vwVjalBJEGVcUfG+/1ePqeEGcMW3VfzHK5A==} engines: {node: '>= 10'} - mikro-orm@6.4.16: - resolution: {integrity: sha512-a+19cRuEPEJ3qf5Vpv4HO9TAxo/I6/rP1bZT93ln8YtNzAbCrcLC766EG6upLS6Sf7OLqdq0cXs5mUN9ESQQrg==} + mikro-orm@6.6.1: + resolution: {integrity: sha512-AaYXM3M4/X/Jum/RlZXuI7QngQX8DhyY4LM5phV01PFMtFZAvKHzRr62IrOJVtmJiKYKEHWmEYpuc+bD4169Zg==} engines: {node: '>= 18.12.0'} mime-db@1.33.0: @@ -9729,9 +10140,9 @@ packages: 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'} + mime-types@3.0.2: + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} + engines: {node: '>=18'} mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} @@ -9768,8 +10179,8 @@ packages: resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - minimatch@10.0.3: - resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} + minimatch@10.1.1: + resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} engines: {node: 20 || >=22} minimatch@3.1.2: @@ -9834,8 +10245,8 @@ packages: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} - minizlib@3.0.2: - resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} engines: {node: '>= 18'} mitt@3.0.1: @@ -9845,103 +10256,103 @@ packages: resolution: {integrity: sha512-ALGF1Jt9ouehcaXaHhn6t1yGWRqGaHkPFndtFVHfZXOvkIZ/yoGaSi0AHVTafb3ZBGg4dr/bDwnaEKqCXzchMA==} engines: {node: '>=0.10.0'} - mjml-accordion@4.15.3: - resolution: {integrity: sha512-LPNVSj1LyUVYT9G1gWwSw3GSuDzDsQCu0tPB2uDsq4VesYNnU6v3iLCQidMiR6azmIt13OEozG700ygAUuA6Ng==} + mjml-accordion@4.17.1: + resolution: {integrity: sha512-xl9oUbMp8aju6b1OZYqv3orE287ofGNEv09h2mFmzRTJxug7nJBFXs2I9v7dUVuWIBRk940PjnIVSuW+9bPvCA==} - mjml-body@4.15.3: - resolution: {integrity: sha512-7pfUOVPtmb0wC+oUOn4xBsAw4eT5DyD6xqaxj/kssu6RrFXOXgJaVnDPAI9AzIvXJ/5as9QrqRGYAddehwWpHQ==} + mjml-body@4.17.1: + resolution: {integrity: sha512-EfvVVfutARRjJ1jsOxxf2DY/ufqWswv9JKjbwu/Fu8h4havAcdmw2BDmX3vwXEzatqpL1l//YWOKlqUe9ZEs+A==} - mjml-button@4.15.3: - resolution: {integrity: sha512-79qwn9AgdGjJR1vLnrcm2rq2AsAZkKC5JPwffTMG+Nja6zGYpTDZFZ56ekHWr/r1b5WxkukcPj2PdevUug8c+Q==} + mjml-button@4.17.1: + resolution: {integrity: sha512-A9xQwgccPzrwr11izorBsA92THpkrviWkCwlYMxL9V3wgt5YJYDrt4r023HCveqN7b6iTkvqkXeDoIPX/kEDDQ==} - mjml-carousel@4.15.3: - resolution: {integrity: sha512-3ju6I4l7uUhPRrJfN3yK9AMsfHvrYbRkcJ1GRphFHzUj37B2J6qJOQUpzA547Y4aeh69TSb7HFVf1t12ejQxVw==} + mjml-carousel@4.17.1: + resolution: {integrity: sha512-pWo/aIgRL3XduckOBVEvbpph3vR4f9maRrbJ8Jfu4NVI6Ws3PQ6wt7HPXHmJlzJlK0gTiAF9f4+I076RVHPG7A==} - mjml-cli@4.15.3: - resolution: {integrity: sha512-+V2TDw3tXUVEptFvLSerz125C2ogYl8klIBRY1m5BHd4JvGVf3yhx8N3PngByCzA6PGcv/eydGQN+wy34SHf0Q==} + mjml-cli@4.17.1: + resolution: {integrity: sha512-1cMWP+yDDBUIjDYnjiKhIPW3NYJrt/W5rqOiB3zOTZQBT722Uh055S3BoLUikKxc+1sQPww4d9dH371zX2HaXA==} hasBin: true - mjml-column@4.15.3: - resolution: {integrity: sha512-hYdEFdJGHPbZJSEysykrevEbB07yhJGSwfDZEYDSbhQQFjV2tXrEgYcFD5EneMaowjb55e3divSJxU4c5q4Qgw==} + mjml-column@4.17.1: + resolution: {integrity: sha512-S+oNZaWFP1/TCEgVwVcwqYIyHwwVZWSKLKj4fcWIMUCaHWKuojYrexOGfULDAwTjYEDhZaRDrrq96ulF12wJeQ==} - mjml-core@4.15.3: - resolution: {integrity: sha512-Dmwk+2cgSD9L9GmTbEUNd8QxkTZtW9P7FN/ROZW/fGZD6Hq6/4TB0zEspg2Ow9eYjZXO2ofOJ3PaQEEShKV0kQ==} + mjml-core@4.17.1: + resolution: {integrity: sha512-u2aHbBxFA2uJdS6T1A1ZTGYryPNebHMByRrMPCbe5W8Os+sGiC5gKLhZgjavZteKiMS+09swkvfneNLGYwzBKg==} - mjml-divider@4.15.3: - resolution: {integrity: sha512-vh27LQ9FG/01y0b9ntfqm+GT5AjJnDSDY9hilss2ixIUh0FemvfGRfsGVeV5UBVPBKK7Ffhvfqc7Rciob9Spzw==} + mjml-divider@4.17.1: + resolution: {integrity: sha512-KUWvcx1cIDwkN/gDuY37e9Vv+0U5U+xOVOfXRGloSnapYcP0IvmLtLTJeBwvGhwoN30wBiHDGwO8p/7B6CyxqQ==} - mjml-group@4.15.3: - resolution: {integrity: sha512-HSu/rKnGZVKFq3ciT46vi1EOy+9mkB0HewO4+P6dP/Y0UerWkN6S3UK11Cxsj0cAp0vFwkPDCdOeEzRdpFEkzA==} + mjml-group@4.17.1: + resolution: {integrity: sha512-0vOcLm7l4ptLM5rqC6DhCafxIw5+WUrSYLcdUSJxO3AZMGJMxU7fkWeWGowE+PQdgqh6ee1/4RYc2qJDWtHW5A==} - mjml-head-attributes@4.15.3: - resolution: {integrity: sha512-2ISo0r5ZKwkrvJgDou9xVPxxtXMaETe2AsAA02L89LnbB2KC0N5myNsHV0sEysTw9+CfCmgjAb0GAI5QGpxKkQ==} + mjml-head-attributes@4.17.1: + resolution: {integrity: sha512-p+g33eI4xyHb9Yv28zIXnNdsXQYvoGex/GvoGumwyxu6O8OOvPk1mIV87SjDISQHosJJMcTiZVd/RfBlwnZpGA==} - mjml-head-breakpoint@4.15.3: - resolution: {integrity: sha512-Eo56FA5C2v6ucmWQL/JBJ2z641pLOom4k0wP6CMZI2utfyiJ+e2Uuinj1KTrgDcEvW4EtU9HrfAqLK9UosLZlg==} + mjml-head-breakpoint@4.17.1: + resolution: {integrity: sha512-vjsNAgdLnwqmkVlIENbH6odK6ZARiNQvsm+1o8CLo9ymw82WhIEbOnAeCfoddumZ6h2ywbZuBZzS23jJi13MUQ==} - mjml-head-font@4.15.3: - resolution: {integrity: sha512-CzV2aDPpiNIIgGPHNcBhgyedKY4SX3BJoTwOobSwZVIlEA6TAWB4Z9WwFUmQqZOgo1AkkiTHPZQvGcEhFFXH6g==} + mjml-head-font@4.17.1: + resolution: {integrity: sha512-Xeih/vqocR1BoBLbh8Sn67kNkfLsyHeZ7Z/3nyNz7TriZ//TGAR/PGTFFghQlXyX1BCtSx/eFoxMkKKswLYReA==} - mjml-head-html-attributes@4.15.3: - resolution: {integrity: sha512-MDNDPMBOgXUZYdxhosyrA2kudiGO8aogT0/cODyi2Ed9o/1S7W+je11JUYskQbncqhWKGxNyaP4VWa+6+vUC/g==} + mjml-head-html-attributes@4.17.1: + resolution: {integrity: sha512-O7YzEAFtSELB7wVYV808g6JcxXrzHk5glDdzzCEhDR4bjPHewSUpkrYOqvt0BdfdFsvqH4zm4vsJImUMW692HQ==} - mjml-head-preview@4.15.3: - resolution: {integrity: sha512-J2PxCefUVeFwsAExhrKo4lwxDevc5aKj888HBl/wN4EuWOoOg06iOGCxz4Omd8dqyFsrqvbBuPqRzQ+VycGmaA==} + mjml-head-preview@4.17.1: + resolution: {integrity: sha512-XL+8N9yrADJSw4gX9lvDcp31ghGy8WavenVO8UhxPyhLu/sMJ9lFXLbTB4z5JU1z4t/HPEp/GtgMGxAbr+QrQQ==} - mjml-head-style@4.15.3: - resolution: {integrity: sha512-9J+JuH+mKrQU65CaJ4KZegACUgNIlYmWQYx3VOBR/tyz+8kDYX7xBhKJCjQ1I4wj2Tvga3bykd89Oc2kFZ5WOw==} + mjml-head-style@4.17.1: + resolution: {integrity: sha512-YTjtqZAG0hD0aYwk02/8hS1W+T4nDUhVCBFmcxL/aTSrRbJQew0dSVtCvqNpAsbIJCUg/mUxx6pKKzRPdN+FtA==} - mjml-head-title@4.15.3: - resolution: {integrity: sha512-IM59xRtsxID4DubQ0iLmoCGXguEe+9BFG4z6y2xQDrscIa4QY3KlfqgKGT69ojW+AVbXXJPEVqrAi4/eCsLItQ==} + mjml-head-title@4.17.1: + resolution: {integrity: sha512-cUO4b7tDuX1BLu6XYnPgG40o3pBUCkT+Yzu5DGsvRxvCWougJFN68ocF6zcc7OOanmLgBYlJevQKUyT6W5Rp0g==} - mjml-head@4.15.3: - resolution: {integrity: sha512-o3mRuuP/MB5fZycjD3KH/uXsnaPl7Oo8GtdbJTKtH1+O/3pz8GzGMkscTKa97l03DAG2EhGrzzLcU2A6eshwFw==} + mjml-head@4.17.1: + resolution: {integrity: sha512-+DBJ6UvkpYkKJGJKqo8luucDGbg9+rQZKytl/4VOGTE8bmbrKFixY3lkfmBrSkQ7/t6L4dDVSXywl6H91JsL+g==} - mjml-hero@4.15.3: - resolution: {integrity: sha512-9cLAPuc69yiuzNrMZIN58j+HMK1UWPaq2i3/Fg2ZpimfcGFKRcPGCbEVh0v+Pb6/J0+kf8yIO0leH20opu3AyQ==} + mjml-hero@4.17.1: + resolution: {integrity: sha512-WDmNVJ4+xHLrkYOrGrq23hUYDVG3iFSyk/vIC/KlcG5Kebu5vVWbe6n3ZEucatPuYn/EUVV1ofIJM6dnXXfkGQ==} - mjml-image@4.15.3: - resolution: {integrity: sha512-g1OhSdofIytE9qaOGdTPmRIp7JsCtgO0zbsn1Fk6wQh2gEL55Z40j/VoghslWAWTgT2OHFdBKnMvWtN6U5+d2Q==} + mjml-image@4.17.1: + resolution: {integrity: sha512-ZIFXmP2Fb77vvX8SBQYbrAPPvkqx5GqJ7AqVWteQk4iz6nJf8GspZiotWyL4LvgZzf0B81aQCB11y7+RvAfVvw==} - mjml-migrate@4.15.3: - resolution: {integrity: sha512-sr/+35RdxZroNQVegjpfRHJ5hda9XCgaS4mK2FGO+Mb1IUevKfeEPII3F/cHDpNwFeYH3kAgyqQ22ClhGLWNBA==} + mjml-migrate@4.17.1: + resolution: {integrity: sha512-Rb66BdvuV8fGYdQJzvLK0naWGI8G9smzm1OJDjdhcCrQU3BfTW/BiTS9FP5G0W73kFJe//vlHCDZ3uBIr6REAA==} hasBin: true - mjml-navbar@4.15.3: - resolution: {integrity: sha512-VsKH/Jdlf8Yu3y7GpzQV5n7JMdpqvZvTSpF6UQXL0PWOm7k6+LX+sCZimOfpHJ+wCaaybpxokjWZ71mxOoCWoA==} + mjml-navbar@4.17.1: + resolution: {integrity: sha512-SWtovALlb+tM2lu2stlsKItrM/Tc/YxWiCm+UtLuOvkBmouBX/vASufaFab3VPAq/pGJKF9nFGX2eWoJCGA4rA==} - mjml-parser-xml@4.15.3: - resolution: {integrity: sha512-Tz0UX8/JVYICLjT+U8J1f/TFxIYVYjzZHeh4/Oyta0pLpRLeZlxEd71f3u3kdnulCKMP4i37pFRDmyLXAlEuLw==} + mjml-parser-xml@4.17.1: + resolution: {integrity: sha512-8cc1+cI1+ymeKmiaioZMaIzg8K9SmCErr0WOdS0n90pnt5eLqGQEh3RQJv7VoucO5aoJXgAnCSGeCstVXvZykg==} - mjml-preset-core@4.15.3: - resolution: {integrity: sha512-1zZS8P4O0KweWUqNS655+oNnVMPQ1Rq1GaZq5S9JfwT1Vh/m516lSmiTW9oko6gGHytt5s6Yj6oOeu5Zm8FoLw==} + mjml-preset-core@4.17.1: + resolution: {integrity: sha512-cFfelKeRJNG+WZv+kGWjjHrQam5PiHH8JaC3vvjl1eEwLcR2nbaYArlnLTIzgG+M3+cBlIl0Ru3Say5ZqWAcxw==} - mjml-raw@4.15.3: - resolution: {integrity: sha512-IGyHheOYyRchBLiAEgw3UM11kFNmBSMupu2BDdejC6ZiDhEAdG+tyERlsCwDPYtXanvFpGWULIu3XlsUPc+RZw==} + mjml-raw@4.17.1: + resolution: {integrity: sha512-CnfgXh+c8u/jOuVjmv9N6Hxal5U4PPJFVY1JFRRJr/7Tcxl8aJUF03mBjqW9zAzoYO1bRcgyG3clchyEwwXQ8g==} - mjml-section@4.15.3: - resolution: {integrity: sha512-JfVPRXH++Hd933gmQfG8JXXCBCR6fIzC3DwiYycvanL/aW1cEQ2EnebUfQkt5QzlYjOkJEH+JpccAsq3ln6FZQ==} + mjml-section@4.17.1: + resolution: {integrity: sha512-YrkvcBgJw2NBnPirjuVU4AoqwySZzOovm5sfryID9I59EmmG+lbBJOnv/v/5wXQSlw2a4n1+VX2sCUcH5/O5sA==} - mjml-social@4.15.3: - resolution: {integrity: sha512-7sD5FXrESOxpT9Z4Oh36bS6u/geuUrMP1aCg2sjyAwbPcF1aWa2k9OcatQfpRf6pJEhUZ18y6/WBBXmMVmSzXg==} + mjml-social@4.17.1: + resolution: {integrity: sha512-Agp6CHJn7SwD+cckCxibZ/32luTzAiDJDlKH0SjQ+9NvSoGskkhii3yOqtYnJ+t3NmQkxpRkXOnUN4GEbupghA==} - mjml-spacer@4.15.3: - resolution: {integrity: sha512-3B7Qj+17EgDdAtZ3NAdMyOwLTX1jfmJuY7gjyhS2HtcZAmppW+cxqHUBwCKfvSRgTQiccmEvtNxaQK+tfyrZqA==} + mjml-spacer@4.17.1: + resolution: {integrity: sha512-TxXDosuRzuoQNdceG47TKy+NWbwIGZmVDV/4XRtkcPHEvlsHpIIzn2+zzj+xrA6qh5Z+zlXL+x8ZpWMqrUoKfQ==} - mjml-table@4.15.3: - resolution: {integrity: sha512-FLx7DcRKTdKdcOCbMyBaeudeHaHpwPveRrBm6WyQe3LXx6FfdmOh59i71/16LFQMgBOD3N4/UJkzxLzlTJzMqQ==} + mjml-table@4.17.1: + resolution: {integrity: sha512-AcAcsNrpzTOsNc0X0i0+5+iNNGEnYjwn9qodF/413yuWDSH9p7SL8vFuI3Snmgv9s1dR+BKDiF8uPt4XTOMlzA==} - mjml-text@4.15.3: - resolution: {integrity: sha512-+C0hxCmw9kg0XzT6vhE5mFkK6y225nC8UEQcN94K0fBCjPKkM+HqZMwGX205fzdGRi+Bxa55b/VhrIVwdv+8vw==} + mjml-text@4.17.1: + resolution: {integrity: sha512-pOrz8tRU3hReKd+K69dJmiVndC0+gB5IfVKIK3fdvYMb9laZBAstkXW0j5wn/0Af4FZSlJkDRLM7Ylxbh1+fqQ==} - mjml-validator@4.15.3: - resolution: {integrity: sha512-Xb72KdqRwjv/qM2rJpV22syyP2N3cRQ9VVDrN6u2FSzLq02buFNxmSPJ7CKhat3PrUNdVHU75KZwOf/tz4UEhA==} + mjml-validator@4.17.1: + resolution: {integrity: sha512-0Au5L5fIfAzOJpQG4PkpFeV0mbzCgjCTu5XbG7pJX4Wup72TGYwrA6Aq2yAdlx17kFPWThSZxeB3Xpd3/kwqOg==} - mjml-wrapper@4.15.3: - resolution: {integrity: sha512-ditsCijeHJrmBmObtJmQ18ddLxv5oPyMTdPU8Di8APOnD2zPk7Z4UAuJSl7HXB45oFiivr3MJf4koFzMUSZ6Gg==} + mjml-wrapper@4.17.1: + resolution: {integrity: sha512-c0bCgXCwffI4krnQYU0Zp8ifGkYMgE7a65NAWXlV3AWEfVmjDlhCcD8LBfZ8UfY8zR3Che8pnunowPZfwh0Nxg==} - mjml@4.15.3: - resolution: {integrity: sha512-bW2WpJxm6HS+S3Yu6tq1DUPFoTxU9sPviUSmnL7Ua+oVO3WA5ILFWqvujUlz+oeuM+HCwEyMiP5xvKNPENVjYA==} + mjml@4.17.1: + resolution: {integrity: sha512-aqy5EVZuwXIINl+d7vC1Fn+MzMfIU4qxCx2TUHnGJxYONrtNIgSQEDlgB2ns2oK8a8WgPuEJCZBYwRE+5ZFcng==} hasBin: true mkdirp-classic@0.5.3: @@ -9956,13 +10367,8 @@ packages: engines: {node: '>=10'} hasBin: true - mkdirp@3.0.1: - resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} - engines: {node: '>=10'} - hasBin: true - - mlly@1.7.4: - resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} + mlly@1.8.0: + resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} modelo@4.2.3: resolution: {integrity: sha512-9DITV2YEMcw7XojdfvGl3gDD8J9QjZTJ7ZOUuSAkP+F3T6rDbzMJuPktxptsdHYEvZcmXrCD3LMOhdSAEq6zKA==} @@ -9989,8 +10395,8 @@ packages: resolution: {integrity: sha512-mLV7SEiov2LHleRJPMPrK2PMyhXFZt2UQLC4VD4pnth3jMjYKHhtqfwwkkvS/NXuo/Fp3vbhaNcXrIDaLRb9Tg==} engines: {node: '>=12.9.0'} - mongodb@6.18.0: - resolution: {integrity: sha512-fO5ttN9VC8P0F5fqtQmclAkgXZxbIkYRTUi1j8JO6IYwvamkhtYDilJr35jOPELR49zqCJgXZWwCtW7B+TM8vQ==} + mongodb@6.21.0: + resolution: {integrity: sha512-URyb/VXMjJ4da46OeSXg+puO39XH9DeQpWCslifrRn9JWugy0D+DvvBvkm2WxmHe61O/H19JM66p1z7RHVkZ6A==} engines: {node: '>=16.20.1'} peerDependencies: '@aws-sdk/credential-providers': ^3.188.0 @@ -9998,7 +10404,7 @@ packages: gcp-metadata: ^5.2.0 kerberos: ^2.0.1 mongodb-client-encryption: '>=6.0.0 <7' - snappy: ^7.2.2 + snappy: ^7.3.2 socks: ^2.7.1 peerDependenciesMeta: '@aws-sdk/credential-providers': @@ -10071,12 +10477,8 @@ packages: mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - mysql2@3.14.1: - resolution: {integrity: sha512-7ytuPQJjQB8TNAYX/H2yhL+iQOnIBjAMam361R7UAL0lOVXWjtdrmoL9HYKqKoLp/8UUTRcvo1QPvK9KL7wA8w==} - engines: {node: '>= 8.0'} - - mysql2@3.14.2: - resolution: {integrity: sha512-YD6mZMeoypmheHT6b2BrVmQFvouEpRICuvPIREulx2OvP1xAxxeqkMQqZSTBefv0PiOBKGYFa2zQtY+gf/4eQw==} + mysql2@3.15.3: + resolution: {integrity: sha512-FBrGau0IXmuqg4haEZRBfHNWB5mUARw6hNwPDXXGg0XzVJ50mr/9hb267lvpVMnhZ1FON3qNd4Xfcez1rbFwSg==} engines: {node: '>= 8.0'} mz@2.7.0: @@ -10086,8 +10488,8 @@ packages: resolution: {integrity: sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==} engines: {node: '>=12.0.0'} - nan@2.23.0: - resolution: {integrity: sha512-1UxuyYGdoQHcGg87Lkqm3FzefucTa0NAiOcuRsDmysep3c1LVCRK2krrUDafMWtjSG04htvAmvg96+SDknOmgQ==} + nan@2.23.1: + resolution: {integrity: sha512-r7bBUGKzlqk8oPBDYxt6Z0aEdF1G1rwlMcLk8LCOMbOzf0mG+JUfUzG4fIMWwHWP0iyaLWEQZJmtB7nOHEm/qw==} nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} @@ -10137,14 +10539,11 @@ packages: resolution: {integrity: sha512-dle7yf655IMjyFUqn6Nxkb18r4AOAkzRcgcZv6WZ0IqrOH4QCEZ8Sm6I7XX21zvHdBeeMeTkhR9qT2Z0EJDx6A==} engines: {node: '>=10'} - next-tick@1.1.0: - resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} - nice-grpc-common@2.0.2: resolution: {integrity: sha512-7RNWbls5kAL1QVUOXvBsv1uO0wPQK3lHv+cY1gwkTzirnG1Nop4cBJZubpgziNbaVc/bl9QJcyvsf/NQxa3rjQ==} - nice-grpc@2.1.12: - resolution: {integrity: sha512-J1n4Wg+D3IhRhGQb+iqh2OpiM0GzTve/kf2lnlW4S+xczmIEd0aHUDV1OsJ5a3q8GSTqJf+s4Rgg1M8uJltarw==} + nice-grpc@2.1.14: + resolution: {integrity: sha512-GK9pKNxlvnU5FAdaw7i2FFuR9CqBspcE+if2tqnKXBcE0R8525wj4BZvfcwj7FjvqbssqKxRHt2nwedalbJlww==} nice-try@1.0.5: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} @@ -10156,8 +10555,8 @@ packages: resolution: {integrity: sha512-o2zOYiCpzRqSzPj0Zt/dQ/DqZeYoaQ7TUonc/xUPjCGl9WeHpNbxgVvOquXYAaJzI0M9BXV3HTzG0p8IUAbBTQ==} engines: {node: '>= 10.13'} - node-abi@3.75.0: - resolution: {integrity: sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg==} + node-abi@3.85.0: + resolution: {integrity: sha512-zsFhmbkAzwhTft6nd3VxcG0cvJsT70rL+BIGHWVq5fi6MwGrHwzqKaxXE+Hl2GmnGItnDKPPkO5/LQqjVkIdFg==} engines: {node: '>=10'} node-addon-api@7.1.1: @@ -10207,8 +10606,8 @@ packages: resolution: {integrity: sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==} engines: {node: '>= 6.0.0'} - node-forge@1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + node-forge@1.3.2: + resolution: {integrity: sha512-6xKiQ+cph9KImrRh0VsjH2d8/GXA4FIMlgU4B757iI1ApvcyA9VlouP0yZJha01V+huImO+kKMU7ih+2+E14fw==} engines: {node: '>= 6.13.0'} node-gyp-build@4.1.1: @@ -10219,8 +10618,8 @@ packages: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true - node-gyp@11.2.0: - resolution: {integrity: sha512-T0S1zqskVUSxcsSTkAsLc7xCycrRYmtDHadDinzocrThjyQCn5kMlEBSj6H4qDbgsIOSLmmlRIeb0lZXj+UArA==} + node-gyp@11.5.0: + resolution: {integrity: sha512-ra7Kvlhxn5V9Slyus0ygMa2h+UqExPqUIkfk7Pc8QTLT956JLSy51uWFwHtIYy0vI8cB4BDhc/S03+880My/LQ==} engines: {node: ^18.17.0 || >=20.5.0} hasBin: true @@ -10232,8 +10631,8 @@ packages: node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - node-mock-http@1.0.1: - resolution: {integrity: sha512-0gJJgENizp4ghds/Ywu2FCmcRsgBTmRQzYPZm61wy+Em2sBarSka0OhQS5huLBg6od1zkNpnWMCZloQDFVvOMQ==} + node-mock-http@1.0.3: + resolution: {integrity: sha512-jN8dK25fsfnMrVsEhluUTPkBFY+6ybu7jSB1n+ri/vOGjJxU8J9CZhpSGkHXSkFjtUhbmoncG/YG9ta5Ludqog==} node-mocks-http@1.17.2: resolution: {integrity: sha512-HVxSnjNzE9NzoWMx9T9z4MLqwMpLwVvA0oVZ+L+gXskYXEJ6tFn3Kx4LargoB6ie7ZlCLplv7QbWO6N+MysWGA==} @@ -10247,8 +10646,8 @@ packages: '@types/node': optional: true - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + node-releases@2.0.27: + resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} node-stream-zip@1.15.0: resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} @@ -10285,8 +10684,8 @@ packages: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} - normalize-url@8.0.2: - resolution: {integrity: sha512-Ee/R3SyN4BuynXcnTaekmaVdbDAEiNrHqjQIA37mHU8G9pf7aaAD4ZX3XjBLo6rsdcxA/gtkcNYZLt30ACgynw==} + normalize-url@8.1.0: + resolution: {integrity: sha512-X06Mfd/5aKsRHc0O0J5CUedwnPmnDtLF2+nq+KN9KSDlJHkPuh0JUviWjEWMe0SW/9TDdSLVPuk7L5gGTIA1/w==} engines: {node: '>=14.16'} npm-bundled@1.1.2: @@ -10322,6 +10721,10 @@ packages: resolution: {integrity: sha512-VpnQAGu2aJ43ThI8G9JPB6hg6/G6u9gOyDXnZEJULQcjmXC5AzLHLBYlcc0Mp3g7s7zx58TfZ/v7PMS41Bs0bw==} engines: {node: '>= 20'} + null-prototype-object@1.2.5: + resolution: {integrity: sha512-YAPMPwBVlXXmIx/eIHx/KwIL1Bsd8I+YHQdFpW0Ydvez6vu5Bx2CaP4GrEnH5c1huVWZD9MqEuFwAJoBMm5LJQ==} + engines: {node: '>= 20'} + number-is-nan@1.0.1: resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} engines: {node: '>=0.10.0'} @@ -10329,8 +10732,8 @@ packages: numfmt@3.2.3: resolution: {integrity: sha512-q5vjJSiuomxYNNVhB/TWqjtctZz+fnscUchvwonutXZ/neY2XLw6z4q3DS4ijLDrP5Y/tgrVeP1/7PjgHRoZuw==} - nwsapi@2.2.21: - resolution: {integrity: sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==} + nwsapi@2.2.22: + resolution: {integrity: sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==} oauth-sign@0.9.0: resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} @@ -10379,10 +10782,6 @@ packages: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} - on-headers@1.0.2: - resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} - engines: {node: '>= 0.8'} - on-headers@1.1.0: resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} engines: {node: '>= 0.8'} @@ -10401,6 +10800,9 @@ packages: resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} engines: {node: '>=8'} + openapi-types@12.1.3: + resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} + openapi3-ts@4.4.0: resolution: {integrity: sha512-9asTNB9IkKEzWMcHmVZE7Ts3kC9G7AFHfs8i7caD8HbI76gEjdkId4z/AkP83xdZsH7PLAnnbl47qZkXuxpArw==} @@ -10494,8 +10896,8 @@ packages: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} - p-map@7.0.3: - resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} + p-map@7.0.4: + resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==} engines: {node: '>=18'} p-queue@6.6.2: @@ -10585,8 +10987,8 @@ packages: parse-srcset@1.0.2: resolution: {integrity: sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==} - parse-uri@2.0.0: - resolution: {integrity: sha512-exftilEeHUWsql3LDzaMPxF+e4ze3M2Py08RCnmM7hXqr3n7bZTNvT08BuPEz4q9AxQcuZnKOI5tZxBmPGnGDQ==} + parse-uri@2.0.4: + resolution: {integrity: sha512-ITV6S3dwNU98VMAPn+SQP798cA7CKbhLjkt9QZK/fhocz7diEfnmAVPkJ5HhJPwtOub4cJIJByUYyWK7o/bQ/w==} engines: {node: '>= 0.10'} parse-url@6.0.5: @@ -10601,6 +11003,9 @@ packages: parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + parse5@8.0.0: + resolution: {integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==} + parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} @@ -10645,8 +11050,8 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} - path-scurry@2.0.0: - resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + path-scurry@2.0.1: + resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} engines: {node: 20 || >=22} path-to-regexp@0.1.12: @@ -10655,9 +11060,8 @@ packages: path-to-regexp@3.3.0: resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==} - path-to-regexp@8.2.0: - resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} - engines: {node: '>=16'} + path-to-regexp@8.3.0: + resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==} path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} @@ -10756,15 +11160,15 @@ packages: pino-abstract-transport@2.0.0: resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} - pino-pretty@13.1.1: - resolution: {integrity: sha512-TNNEOg0eA0u+/WuqH0MH0Xui7uqVk9D74ESOpjtebSQYbNWJk/dIxCXIxFsNfeN53JmtWqYHP2OrIZjT/CBEnA==} + pino-pretty@13.1.2: + resolution: {integrity: sha512-3cN0tCakkT4f3zo9RXDIhy6GTvtYD6bK4CRBLN9j3E/ePqN1tugAXD5rGVfoChW6s0hiek+eyYlLNqc/BG7vBQ==} hasBin: true pino-std-serializers@7.0.0: resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} - pino@9.7.0: - resolution: {integrity: sha512-vnMCM6xZTb1WDmLvtG2lE/2p+t9hDEIvTWJsu6FejkE62vB7gDhvzrpFR4Cw2to+9JNQxVnkAKVPA1KPB98vWg==} + pino@9.14.0: + resolution: {integrity: sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w==} hasBin: true pirates@4.0.7: @@ -10797,8 +11201,8 @@ packages: resolution: {integrity: sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==} engines: {node: '>=14.19.0'} - portfinder@1.0.37: - resolution: {integrity: sha512-yuGIEjDAYnnOex9ddMnKZEMFE0CcGo6zbfzDklkmT1m5z734ss6JMzN9rNB3+RR7iS+F10D4/BVIaXOyh8PQKw==} + portfinder@1.0.38: + resolution: {integrity: sha512-rEwq/ZHlJIKw++XtLAO8PPuOQA/zaPJOZJ37BVuN97nLpMJeuDVLVGRwbFoBgLudgdTMP2hdRJP++H+8QOA3vg==} engines: {node: '>= 10.12'} possible-typed-array-names@1.1.0: @@ -10915,11 +11319,6 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - prettier@3.6.2: - resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} - engines: {node: '>=14'} - hasBin: true - 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} @@ -10974,6 +11373,10 @@ packages: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} + prom-client@15.1.3: + resolution: {integrity: sha512-6ZiOBfCywsD4k1BN9IX0uZhF+tJkV8q8llP64G5Hajs4JOeVLPCwpPVcpXy3BwYiUGgyJzsJJQeOIv7+hDSq8g==} + engines: {node: ^16 || ^18 || >=20} + promise-inflight@1.0.1: resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} peerDependencies: @@ -11016,8 +11419,8 @@ packages: resolution: {integrity: sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ==} engines: {node: '>=14.0.0'} - proto3-json-serializer@3.0.1: - resolution: {integrity: sha512-Rug90pDIefARAG9MgaFjd0yR/YP4bN3Fov00kckXMjTZa0x86c4WoWfCQFdSeWi9DvRXjhfLlPDIvODB5LOTfg==} + proto3-json-serializer@3.0.4: + resolution: {integrity: sha512-E1sbAYg3aEbXrq0n1ojJkRHQJGE1kaE/O6GLA94y8rnJBfgvOPTOd1b9hOceQK1FFZI9qMh1vBERCyO2ifubcw==} engines: {node: '>=18'} protobufjs-cli@1.1.1: @@ -11031,8 +11434,8 @@ packages: resolution: {integrity: sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ==} engines: {node: '>=12.0.0'} - protobufjs@7.5.3: - resolution: {integrity: sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw==} + protobufjs@7.5.4: + resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==} engines: {node: '>=12.0.0'} protocols@1.4.8: @@ -11103,8 +11506,8 @@ packages: resolution: {integrity: sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==} engines: {node: '>=8'} - puppeteer-core@24.15.0: - resolution: {integrity: sha512-2iy0iBeWbNyhgiCGd/wvGrDSo73emNFjSxYOcyAqYiagkYt5q4cPfVXaVDKBsukgc2fIIfLAalBZlaxldxdDYg==} + puppeteer-core@24.31.0: + resolution: {integrity: sha512-pnAohhSZipWQoFpXuGV7xCZfaGhqcBR9C4pVrU0QSrcMi7tQMH9J9lDBqBvyMAHQqe8HCARuREqFuVKRQOgTvg==} engines: {node: '>=18'} puppeteer-extra-plugin-adblocker@2.13.6: @@ -11185,8 +11588,8 @@ packages: puppeteer-core: optional: true - puppeteer@24.15.0: - resolution: {integrity: sha512-HPSOTw+DFsU/5s2TUUWEum9WjFbyjmvFDuGHtj2X4YUz2AzOzvKMkT3+A3FR+E+ZefiX/h3kyLyXzWJWx/eMLQ==} + puppeteer@24.31.0: + resolution: {integrity: sha512-q8y5yLxLD8xdZdzNWqdOL43NbfvUOp60SYhaLZQwHC9CdKldxQKXOyJAciOr7oUJfyAH/KgB2wKvqT2sFKoVXA==} engines: {node: '>=18'} hasBin: true @@ -11213,8 +11616,8 @@ packages: resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} engines: {node: '>=0.6'} - quansync@0.2.10: - resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==} + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} query-string@6.14.1: resolution: {integrity: sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==} @@ -11265,16 +11668,20 @@ packages: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} - raw-body@3.0.0: - resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} + raw-body@2.5.3: + resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} engines: {node: '>= 0.8'} + raw-body@3.0.2: + resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} + engines: {node: '>= 0.10'} + rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true - re2@1.22.1: - resolution: {integrity: sha512-E4J0EtgyNLdIr0wTg0dQPefuiqNY29KaLacytiUAYYRzxCG+zOkWoUygt1rI+TA1LrhN49/njrfSO1DHtVC5Vw==} + re2@1.22.3: + resolution: {integrity: sha512-002aE82U91DiaUA16U6vbiJusvPXn1OWiQukOxJkVUTXbzrSuQbFNHYKcGw8QK/uifRCfjl2Hd/vXYDanKkmaQ==} react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} @@ -11282,8 +11689,8 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - react@19.1.1: - resolution: {integrity: sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==} + react@19.2.0: + resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==} engines: {node: '>=0.10.0'} read-yaml-file@1.1.0: @@ -11342,8 +11749,8 @@ packages: resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} engines: {node: '>=4'} - redis@5.6.1: - resolution: {integrity: sha512-O9DwAvcBm/lrlkGE0A6gNBtUdA8J9oD9njeLYlLzmm+MGTR7nd7VkpspfXqeXFg3gm89zldDqckyaHhXfhY80g==} + redis@5.10.0: + resolution: {integrity: sha512-0/Y+7IEiTgVGPrLFKy8oAEArSyEJkU0zvgV5xyi9NzNQ+SLZmyFbUsWIbgPcd4UdUh00opXGKlXJwMmsis5Byw==} engines: {node: '>= 18'} redux@4.2.1: @@ -11464,8 +11871,8 @@ packages: resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} engines: {node: '>=10'} - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} engines: {node: '>= 0.4'} hasBin: true @@ -11507,8 +11914,8 @@ packages: resolution: {integrity: sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==} engines: {node: '>=14'} - retry-request@8.0.0: - resolution: {integrity: sha512-dJkZNmyV9C8WKUmbdj1xcvVlXBSvsUQCkg89TCK8rD72RdSn9A2jlXlS2VuYSTHoPJjJEfUHhjNYrlvuksF9cg==} + retry-request@8.0.2: + resolution: {integrity: sha512-JzFPAfklk1kjR1w76f0QOIhoDkNkSqW8wYKT08n9yysTmZfB+RQ2QoXoTAeOi1HD9ZipTyTAZg3c4pM/jeqgSw==} engines: {node: '>=18'} retry@0.12.0: @@ -11537,13 +11944,13 @@ packages: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true - rimraf@6.0.1: - resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} + rimraf@6.1.2: + resolution: {integrity: sha512-cFCkPslJv7BAXJsYlK1dZsbP8/ZNLkCAQ0bi1hf5EKX2QHegmDFEFA6QhuYJlk7UDdc+02JjO80YSOrWPpw06g==} engines: {node: 20 || >=22} hasBin: true - rollup@4.46.1: - resolution: {integrity: sha512-33xGNBsDJAkzt0PvninskHlWnTIPgDtTwhg0U38CUoNP/7H6wI2Cz6dUeoNPbjdTdsYTGuiFFASuUOWovH0SyQ==} + rollup@4.53.3: + resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -11604,8 +12011,8 @@ packages: sax@1.2.1: resolution: {integrity: sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==} - sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + sax@1.4.3: + resolution: {integrity: sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==} saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} @@ -11618,8 +12025,8 @@ packages: secure-json-parse@2.7.0: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} - secure-json-parse@4.0.0: - resolution: {integrity: sha512-dxtLJO6sc35jWidmLxo7ij+Eg48PM/kleBsxpC8QJE0qJICe+KawkDQmvCMZUr9u7WKVHgMW6vy3fQ7zMiFZMA==} + secure-json-parse@4.1.0: + resolution: {integrity: sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==} semver-diff@3.1.1: resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} @@ -11638,8 +12045,8 @@ packages: engines: {node: '>=10'} hasBin: true - semver@7.7.2: - resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} engines: {node: '>=10'} hasBin: true @@ -11702,16 +12109,16 @@ packages: resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} engines: {node: '>= 18'} - serve@14.2.4: - resolution: {integrity: sha512-qy1S34PJ/fcY8gjVGszDB3EXiPSk5FKhUa7tQe0UPRddxRidc2V6cNHPNewbE1D7MAkgLuWEt3Vw56vYy73tzQ==} + serve@14.2.5: + resolution: {integrity: sha512-Qn/qMkzCcMFVPb60E/hQy+iRLpiU8PamOfOSYoAHmmF+fFFmpPpqa6Oci2iWYpTdOUM3VF+TINud7CfbQnsZbA==} engines: {node: '>= 14'} hasBin: true set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - set-cookie-parser@2.7.1: - resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} + set-cookie-parser@2.7.2: + resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} @@ -11802,9 +12209,6 @@ packages: simple-get@4.0.1: resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - simple-wcswidth@1.1.2: resolution: {integrity: sha512-j7piyCjAeTDSjzTSQ7DokZtMNwNlEAyxqSZeCS+CXH7fJ4jx3FuJ/mTW3mE+6JLs4VJBbcll0Kjn+KXI5t21Iw==} @@ -11812,8 +12216,8 @@ packages: resolution: {integrity: sha512-kWJDCr9EWtZ+/EYYM5MareWj2cRnZGF93YDNpH4jQiHB+hBIZnfPFSQiVMzZOdk+zXWqTZ/9fTeQNu2DqeiudA==} engines: {node: '>=20.12.2'} - sirv@3.0.1: - resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==} + sirv@3.0.2: + resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} engines: {node: '>=18'} sisteransi@1.0.5: @@ -11853,8 +12257,8 @@ packages: resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} engines: {node: '>= 14'} - socks@2.8.6: - resolution: {integrity: sha512-pe4Y2yzru68lXCb38aAqRf5gvN8YdjP1lok5o0J7BOHljkyCGKVz7H3vpVIXKD27rj2giOJ7DwVyk/GWrPHDWA==} + socks@2.8.7: + resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} sonic-boom@4.2.0: @@ -11874,10 +12278,9 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - source-map@0.8.0-beta.0: - resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} - engines: {node: '>= 8'} - deprecated: The work that was done in this beta branch won't be included in future versions + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} spark-md5@2.0.2: resolution: {integrity: sha512-9WfT+FYBEvlrOOBEs484/zmbtSX4BlGjzXih1qIEWA1yhHbcqgcMHkiwXoWk2Sq1aJjLpcs6ZKV7JxrDNjIlNg==} @@ -11911,9 +12314,6 @@ packages: sprintf-js@1.1.2: resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==} - sprintf-js@1.1.3: - resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - sql-highlight@6.1.0: resolution: {integrity: sha512-ed7OK4e9ywpE7pgRMkMQmZDPKSVdm0oX5IEtZiKnFucSF0zu6c80GZBe38UqHuVhTWJ9xsKgSMjCG2bml86KvA==} engines: {node: '>=14'} @@ -11932,8 +12332,8 @@ packages: ssh-remote-port-forward@1.0.4: resolution: {integrity: sha512-x0LV1eVDwjf1gmG7TTnfqIzf+3VPRz7vrNIjX6oYLbeCrf/PeVY6hkT68Mg+q02qXxQhrLjB0jfgvhevoCRmLQ==} - ssh2@1.16.0: - resolution: {integrity: sha512-r1X4KsBGedJqo7h8F5c4Ybpcr5RjyP+aWIG007uBPRjmdQWfEiVLzSK71Zji1B9sKxwaCvD8y8cwSkYrlLiRRg==} + ssh2@1.17.0: + resolution: {integrity: sha512-wPldCk3asibAjQ/kziWQQt1Wh3PgDFpC0XpwclzKcdT1vql6KeYxf5LIt4nlFkUeR8WuphYMKqUA56X4rjbfgQ==} engines: {node: '>=10.16.0'} sshpk@1.18.0: @@ -11982,8 +12382,8 @@ packages: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} - std-env@3.9.0: - resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + std-env@3.10.0: + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} stealthy-require@1.1.1: resolution: {integrity: sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==} @@ -12007,8 +12407,8 @@ packages: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} - streamx@2.22.1: - resolution: {integrity: sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==} + streamx@2.23.0: + resolution: {integrity: sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==} strict-uri-encode@2.0.0: resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} @@ -12073,8 +12473,8 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} engines: {node: '>=12'} strip-bom-string@1.0.0: @@ -12105,12 +12505,12 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strip-json-comments@5.0.2: - resolution: {integrity: sha512-4X2FR3UwhNUE9G49aIsJW5hRRR3GXGTBTZRMfv568O60ojM8HcWjV/VxAxCDW3SUND33O6ZY66ZuRcdkj73q2g==} + strip-json-comments@5.0.3: + resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==} engines: {node: '>=14.16'} - strip-literal@3.0.0: - resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} + strip-literal@3.1.0: + resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} strnum@1.1.2: resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==} @@ -12128,8 +12528,8 @@ packages: sublevel-pouchdb@9.0.0: resolution: {integrity: sha512-pX4r8+F7wuts0C81kUJ341h4bl2aRe7qV572FE8X1FMz9VkKlmi2nPD1vfeiOJXz5Y09I4MHjGULAbqvTfQZEQ==} - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + sucrase@3.35.1: + resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true @@ -12141,6 +12541,10 @@ packages: resolution: {integrity: sha512-y/hkYGeXAj7wUMjxRbB21g/l6aAEituGXM9Rwl4o20+SX3e8YOSV6BxFXl+dL3Uk0mjSL3kCbNkwURm8/gEDig==} engines: {node: '>=14.18.0'} + superjson@2.2.6: + resolution: {integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==} + engines: {node: '>=16'} + supertest@7.1.4: resolution: {integrity: sha512-tjLPs7dVyqgItVFirHYqe2T+MfWc2VOBQ8QFKKbWTA3PU7liZR8zoSpAi/C1k1ilm9RsXIKYf197oap9wXGVYg==} engines: {node: '>=14.18.0'} @@ -12161,12 +12565,12 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svelte@5.38.0: - resolution: {integrity: sha512-cWF1Oc2IM/QbktdK89u5lt9MdKxRtQnRKnf2tq6KOhYuhLOd2hbMuTiJ+vWMzAeMDe81AzbCgLd4GVtOJ4fDRg==} + svelte@5.45.2: + resolution: {integrity: sha512-yyXdW2u3H0H/zxxWoGwJoQlRgaSJLp+Vhktv12iRw2WRDlKqUPT54Fi0K/PkXqrdkcQ98aBazpy0AH4BCBVfoA==} engines: {node: '>=18'} - swagger-ui-dist@5.27.0: - resolution: {integrity: sha512-tS6LRyBhY6yAqxrfsA9IYpGWPUJOri6sclySa7TdC7XQfGLvTwDY531KLgfQwHEtQsn+sT4JlUspbeQDBVGWig==} + swagger-ui-dist@5.30.3: + resolution: {integrity: sha512-giQl7/ToPxCqnUAx2wpnSnDNGZtGzw1LyUw6ZitIpTmdrvpxKFY/94v1hihm0zYNpgp1/VY0jTDk//R0BBgnRQ==} swagger-ui-express@5.0.1: resolution: {integrity: sha512-SrNU3RiBGTLLmFU8GIJdOdanJTl4TOmT27tt3bWWHppqYmAZ6IDuEuBvMU6nZq0zLEe6b/1rACXCgLZqO6ZfrA==} @@ -12174,8 +12578,8 @@ packages: peerDependencies: express: '>=4.0.0 || >=5.0.0-beta' - swr@2.3.4: - resolution: {integrity: sha512-bYd2lrhc+VarcpkgWclcUi92wYCpOgMws9Sd1hG1ntAu0NEy+14CbotuFjshBU2kt9rYj9TSmDcybpxpeTU1fg==} + swr@2.3.7: + resolution: {integrity: sha512-ZEquQ82QvalqTxhBVv/DlAg2mbmUjF4UgpPg9wwk4ufb9rQnZXh1iKyyKBqV6bQGu1Ie7L1QwSYO07qFIa1p+g==} peerDependencies: react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -12190,11 +12594,11 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - tar-fs@2.1.3: - resolution: {integrity: sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==} + tar-fs@2.1.4: + resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==} - tar-fs@3.1.0: - resolution: {integrity: sha512-5Mty5y/sOF1YWj1J6GiBodjlDc05CUR8PKXrsnFAiSG0xA+GHeWLovaZPYUDXkH/1iKRf2+M5+OrRgzC7O9b7w==} + tar-fs@3.1.1: + resolution: {integrity: sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==} tar-stream@1.6.2: resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==} @@ -12211,14 +12615,17 @@ packages: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} - tar@7.4.3: - resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + tar@7.5.2: + resolution: {integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==} engines: {node: '>=18'} tarn@3.0.2: resolution: {integrity: sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==} engines: {node: '>=8.0.0'} + tdigest@0.1.2: + resolution: {integrity: sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==} + teeny-request@10.1.0: resolution: {integrity: sha512-3ZnLvgWF29jikg1sAQ1g0o+lr5JX6sVgYvfUJazn7ZjJroDBUTWp44/+cFVX0bULjv4vci+rBD+oGVAkWqhUbw==} engines: {node: '>=18'} @@ -12246,8 +12653,8 @@ packages: testcontainers@10.28.0: resolution: {integrity: sha512-1fKrRRCsgAQNkarjHCMKzBKXSJFmzNTiTbhb5E/j5hflRXChEtHvkefjaHlgkNUjfw92/Dq8LTgwQn6RDBFbMg==} - testcontainers@11.4.0: - resolution: {integrity: sha512-eX5nc/Fi5I0LHqwxw6BuUvWNfdl+M2sKX6fX/47RP89Xs5nU6smd0iD7dpFogxy8/wACjlucLoutJc7b5mtq7w==} + testcontainers@11.9.0: + resolution: {integrity: sha512-SQ6OqQUig7HcGVF72i+ZVIMvxPSpEz8cgC/B63ekqMzgf98DnveoBbOmqux/Wa5wQAQCt4mEPNMa/Jz7vMg9fQ==} text-decoder@1.2.3: resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} @@ -12295,12 +12702,8 @@ packages: resolution: {integrity: sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==} engines: {node: '>=12'} - timers-ext@0.1.8: - resolution: {integrity: sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==} - engines: {node: '>=0.12'} - - tiny-lru@11.3.4: - resolution: {integrity: sha512-UxWEfRKpFCabAf6fkTNdlfSw/RDUJ/4C6i1aLZaDnGF82PERHyYhz5CMCVYXtLt34LbqgfpJ2bjmgGKgxuF/6A==} + tiny-lru@11.4.5: + resolution: {integrity: sha512-hkcz3FjNJfKXjV4mjQ1OrXSLAehg8Hw+cEZclOVT+5c/cWQWImQ9wolzTjth+dmmDe++p3bme3fTxz6Q4Etsqw==} engines: {node: '>=12'} tinybench@2.9.0: @@ -12312,8 +12715,8 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyglobby@0.2.14: - resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} tinypool@1.1.1: @@ -12332,15 +12735,15 @@ packages: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} - tinyspy@4.0.3: - resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} + tinyspy@4.0.4: + resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} engines: {node: '>=14.0.0'} tippy.js@6.3.7: resolution: {integrity: sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==} - tlds@1.259.0: - resolution: {integrity: sha512-AldGGlDP0PNgwppe2quAvuBl18UcjuNtOnDuUkqhd6ipPqrYYBt3aTxK1QTsBVknk97lS2JcafWMghjGWFtunw==} + tlds@1.261.0: + resolution: {integrity: sha512-QXqwfEl9ddlGBaRFXIvNKK6OhipSiLXuRuLJX5DErz0o0Q0rYxulWLdFryTkV5PkdZct5iMInwYEGe/eR++1AA==} hasBin: true tldts-core@5.7.112: @@ -12349,8 +12752,8 @@ packages: tldts-core@6.1.86: resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} - tldts-core@7.0.10: - resolution: {integrity: sha512-z7PilFbUHwd+IlQ72D0aHDpqykUUpe9yvwa5k/rFvFLmpvNmWqHEIHoSYwE5sA5LZU4bTTIjhDZEjURHc8f2ag==} + tldts-core@7.0.19: + resolution: {integrity: sha512-lJX2dEWx0SGH4O6p+7FPwYmJ/bu1JbcGJ8RLaG9b7liIgZ85itUVEPbMtWRVrde/0fnDPEPHW10ZsKW3kVsE9A==} tldts-experimental@5.7.112: resolution: {integrity: sha512-Nq5qWN4OiLziAOOOEoSME7cZI4Hz8Srt+9q6cl8mZ5EAhCfmeE6l7K5XjuIKN+pySuGUvthE5aPiD185YU1/lg==} @@ -12362,23 +12765,23 @@ packages: resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} hasBin: true - tldts@7.0.10: - resolution: {integrity: sha512-n6xyIpjWEn6Ikpkir7zVdxNoRO3ZrL+x65ztg/JYoIMoPkpRQ87W4RxbNiso+axhF2zTAzwR+NJJE3NJazLb6Q==} + tldts@7.0.19: + resolution: {integrity: sha512-8PWx8tvC4jDB39BQw1m4x8y5MH1BcQ5xHeL2n7UVFulMPH/3Q0uiamahFJ3lXA0zO2SUyRXuVVbWSDmstlt9YA==} hasBin: true tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} - tmp@0.2.3: - resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + tmp@0.2.5: + resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} engines: {node: '>=14.14'} tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - to-buffer@1.2.1: - resolution: {integrity: sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ==} + to-buffer@1.2.2: + resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==} engines: {node: '>= 0.4'} to-readable-stream@1.0.0: @@ -12420,12 +12823,13 @@ packages: resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} engines: {node: '>=16'} + tough-cookie@6.0.0: + resolution: {integrity: sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==} + engines: {node: '>=16'} + tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@1.0.1: - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} - tr46@3.0.0: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} @@ -12434,6 +12838,10 @@ packages: resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} engines: {node: '>=18'} + tr46@6.0.0: + resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} + engines: {node: '>=20'} + tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true @@ -12442,8 +12850,8 @@ packages: resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} engines: {node: '>= 14.0.0'} - trpc-to-openapi@2.3.2: - resolution: {integrity: sha512-uDZou+5a+H77yhiqfzVRBXzTSX8/mQUGeFpr8+VtZmpzUBOmv5XYbyEtWpG7fOdGWZkB99wuuKeWUwNwwOGaXQ==} + trpc-to-openapi@2.4.0: + resolution: {integrity: sha512-B6xrwOC3Ab0q1BWD/QbJzK4OUpCLoT02hAzshSUXEuIZGcJZkMG/OJ4/3gd20dyr8aI+CrFirpWKRIo7JmHbMQ==} peerDependencies: '@trpc/server': ^11.1.0 zod: ^3.23.8 @@ -12458,8 +12866,8 @@ packages: ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - ts-jest@29.4.0: - resolution: {integrity: sha512-d423TJMnJGu80/eSgfQ5w/R+0zFJvdtTxwtF9KzFFunOpSeD+79lHJQIiAhluJoyGRbvj9NZJsl9WjCUo0ND7Q==} + ts-jest@29.4.5: + resolution: {integrity: sha512-HO3GyiWn2qvTQA4kTgjDcXiMwYQt68a1Y8+JuLRVpdIzm+UOLSHgl/XqR4c6nzJkq5rOkjc02O2I7P7l/Yof0Q==} engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -12518,8 +12926,8 @@ packages: peerDependencies: typescript: '>=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev' - tsup@8.5.0: - resolution: {integrity: sha512-VmBp77lWNQq6PfuMqCHD3xWl22vEoWsKajkF8t+yMBawlUS8JzEI+vOVMeuNZIuMML8qXRizFKi9oD5glKQVcQ==} + tsup@8.5.1: + resolution: {integrity: sha512-xtgkqwdhpKWr3tKPmCkvYmS9xnQK3m3XgxZHwSUjvfTjp7YfXe5tT3GgWi0F2N+ZSMsOeWeZFh7ZZFg5iPhing==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -12542,8 +12950,8 @@ packages: peerDependencies: typescript: '>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev' - tsx@4.20.3: - resolution: {integrity: sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==} + tsx@4.20.6: + resolution: {integrity: sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==} engines: {node: '>=18.0.0'} hasBin: true @@ -12555,8 +12963,8 @@ packages: cpu: [x64] os: [darwin] - turbo-darwin-64@2.5.5: - resolution: {integrity: sha512-RYnTz49u4F5tDD2SUwwtlynABNBAfbyT2uU/brJcyh5k6lDLyNfYKdKmqd3K2ls4AaiALWrFKVSBsiVwhdFNzQ==} + turbo-darwin-64@2.6.1: + resolution: {integrity: sha512-Dm0HwhyZF4J0uLqkhUyCVJvKM9Rw7M03v3J9A7drHDQW0qAbIGBrUijQ8g4Q9Cciw/BXRRd8Uzkc3oue+qn+ZQ==} cpu: [x64] os: [darwin] @@ -12565,8 +12973,8 @@ packages: cpu: [arm64] os: [darwin] - turbo-darwin-arm64@2.5.5: - resolution: {integrity: sha512-Tk+ZeSNdBobZiMw9aFypQt0DlLsWSFWu1ymqsAdJLuPoAH05qCfYtRxE1pJuYHcJB5pqI+/HOxtJoQ40726Btw==} + turbo-darwin-arm64@2.6.1: + resolution: {integrity: sha512-U0PIPTPyxdLsrC3jN7jaJUwgzX5sVUBsKLO7+6AL+OASaa1NbT1pPdiZoTkblBAALLP76FM0LlnsVQOnmjYhyw==} cpu: [arm64] os: [darwin] @@ -12575,8 +12983,8 @@ packages: cpu: [x64] os: [linux] - turbo-linux-64@2.5.5: - resolution: {integrity: sha512-2/XvMGykD7VgsvWesZZYIIVXMlgBcQy+ZAryjugoTcvJv8TZzSU/B1nShcA7IAjZ0q7OsZ45uP2cOb8EgKT30w==} + turbo-linux-64@2.6.1: + resolution: {integrity: sha512-eM1uLWgzv89bxlK29qwQEr9xYWBhmO/EGiH22UGfq+uXr+QW1OvNKKMogSN65Ry8lElMH4LZh0aX2DEc7eC0Mw==} cpu: [x64] os: [linux] @@ -12585,8 +12993,8 @@ packages: cpu: [arm64] os: [linux] - turbo-linux-arm64@2.5.5: - resolution: {integrity: sha512-DW+8CjCjybu0d7TFm9dovTTVg1VRnlkZ1rceO4zqsaLrit3DgHnN4to4uwyuf9s2V/BwS3IYcRy+HG9BL596Iw==} + turbo-linux-arm64@2.6.1: + resolution: {integrity: sha512-MFFh7AxAQAycXKuZDrbeutfWM5Ep0CEZ9u7zs4Hn2FvOViTCzIfEhmuJou3/a5+q5VX1zTxQrKGy+4Lf5cdpsA==} cpu: [arm64] os: [linux] @@ -12595,8 +13003,8 @@ packages: cpu: [x64] os: [win32] - turbo-windows-64@2.5.5: - resolution: {integrity: sha512-q5p1BOy8ChtSZfULuF1BhFMYIx6bevXu4fJ+TE/hyNfyHJIfjl90Z6jWdqAlyaFLmn99X/uw+7d6T/Y/dr5JwQ==} + turbo-windows-64@2.6.1: + resolution: {integrity: sha512-buq7/VAN7KOjMYi4tSZT5m+jpqyhbRU2EUTTvp6V0Ii8dAkY2tAAjQN1q5q2ByflYWKecbQNTqxmVploE0LVwQ==} cpu: [x64] os: [win32] @@ -12605,8 +13013,8 @@ packages: cpu: [arm64] os: [win32] - turbo-windows-arm64@2.5.5: - resolution: {integrity: sha512-AXbF1KmpHUq3PKQwddMGoKMYhHsy5t1YBQO8HZ04HLMR0rWv9adYlQ8kaeQJTko1Ay1anOBFTqaxfVOOsu7+1Q==} + turbo-windows-arm64@2.6.1: + resolution: {integrity: sha512-7w+AD5vJp3R+FB0YOj1YJcNcOOvBior7bcHTodqp90S3x3bLgpr7tE6xOea1e8JkP7GK6ciKVUpQvV7psiwU5Q==} cpu: [arm64] os: [win32] @@ -12614,8 +13022,8 @@ packages: resolution: {integrity: sha512-1q7+9UJABuBAHrcC4Sxp5lOqYS5mvxRrwa33wpIyM18hlOCpRD/fTJNxZ0vhbMcJmz15o9kkVm743mPn7p6jpQ==} hasBin: true - turbo@2.5.5: - resolution: {integrity: sha512-eZ7wI6KjtT1eBqCnh2JPXWNUAxtoxxfi6VdBdZFvil0ychCOTxbm7YLRBi1JSt7U3c+u3CLxpoPxLdvr/Npr3A==} + turbo@2.6.1: + resolution: {integrity: sha512-qBwXXuDT3rA53kbNafGbT5r++BrhRgx3sAo0cHoDAeG9g1ItTmUMgltz3Hy7Hazy1ODqNpR+C7QwqL6DYB52yA==} hasBin: true tweetnacl@0.14.5: @@ -12664,9 +13072,6 @@ packages: resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} engines: {node: '>= 0.6'} - type@2.7.3: - resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} - typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} @@ -12695,15 +13100,14 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typeorm@0.3.25: - resolution: {integrity: sha512-fTKDFzWXKwAaBdEMU4k661seZewbNYET4r1J/z3Jwf+eAvlzMVpTLKAVcAzg75WwQk7GDmtsmkZ5MfkmXCiFWg==} + typeorm@0.3.27: + resolution: {integrity: sha512-pNV1bn+1n8qEe8tUNsNdD8ejuPcMAg47u2lUGnbsajiNUr3p2Js1XLKQjBMH0yMRMDfdX8T+fIRejFmIwy9x4A==} engines: {node: '>=16.13.0'} hasBin: true peerDependencies: '@google-cloud/spanner': ^5.18.0 || ^6.0.0 || ^7.0.0 - '@sap/hana-client': ^2.12.25 - better-sqlite3: ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 - hdb-pool: ^0.1.6 + '@sap/hana-client': ^2.14.22 + better-sqlite3: ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 ioredis: ^5.0.4 mongodb: ^5.8.0 || ^6.0.0 mssql: ^9.1.1 || ^10.0.1 || ^11.0.1 @@ -12712,7 +13116,7 @@ packages: pg: ^8.5.1 pg-native: ^3.0.0 pg-query-stream: ^4.0.0 - redis: ^3.1.1 || ^4.0.0 + redis: ^3.1.1 || ^4.0.0 || ^5.0.14 reflect-metadata: ^0.1.14 || ^0.2.0 sql.js: ^1.4.0 sqlite3: ^5.0.3 @@ -12725,8 +13129,6 @@ packages: optional: true better-sqlite3: optional: true - hdb-pool: - optional: true ioredis: optional: true mongodb: @@ -12759,16 +13161,16 @@ packages: engines: {node: '>=4.2.0'} hasBin: true - typescript@5.8.3: - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} hasBin: true ua-is-frozen@0.1.2: resolution: {integrity: sha512-RwKDW2p3iyWn4UbaxpP2+VxwqXh0jpvdxsYpZ5j/MLLiQOfbsV5shpgQiw93+KMYQPcteeMQ289MaAFzs3G9pw==} - ua-parser-js@2.0.4: - resolution: {integrity: sha512-XiBOnM/UpUq21ZZ91q2AVDOnGROE6UQd37WrO9WBgw4u2eGvUCNOheMmZ3EfEUj7DLHr8tre+Um/436Of/Vwzg==} + ua-parser-js@2.0.6: + resolution: {integrity: sha512-EmaxXfltJaDW75SokrY4/lXMrVyXomE/0FpIIqP2Ctic93gK7rlme55Cwkz8l3YZ6gqf94fCU7AnIkidd/KXPg==} hasBin: true uc.micro@2.1.0: @@ -12802,15 +13204,15 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - undici-types@7.8.0: - resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} undici@5.29.0: resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} engines: {node: '>=14.0'} - undici@7.12.0: - resolution: {integrity: sha512-GrKEsc3ughskmGA9jevVlIOPMiiAHJ4OFUtaAH+NhfTUSiZ1wMPIQqQvAJUrJspFXJt3EBWgpAeoHEDVT1IBug==} + undici@7.16.0: + resolution: {integrity: sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==} engines: {node: '>=20.18.1'} unicorn-magic@0.3.0: @@ -12858,17 +13260,17 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - unplugin-swc@1.5.5: - resolution: {integrity: sha512-BahYtYvQ/KSgOqHoy5FfQgp/oZNAB7jwERxNeFVeN/PtJhg4fpK/ybj9OwKtqGPseOadS7+TGbq6tH2DmDAYvA==} + unplugin-swc@1.5.9: + resolution: {integrity: sha512-RKwK3yf0M+MN17xZfF14bdKqfx0zMXYdtOdxLiE6jHAoidupKq3jGdJYANyIM1X/VmABhh1WpdO+/f4+Ol89+g==} peerDependencies: '@swc/core': ^1.2.108 - unplugin@2.3.5: - resolution: {integrity: sha512-RyWSb5AHmGtjjNQ6gIlA67sHOsWpsbWpwDokLwTcejVdOjEkJZh7QKu14J00gDDVSh8kGH4KYC/TNBceXFZhtw==} + unplugin@2.3.11: + resolution: {integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==} engines: {node: '>=18.12.0'} - update-browserslist-db@1.1.3: - resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + update-browserslist-db@1.1.4: + resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -12912,8 +13314,8 @@ packages: resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} engines: {node: '>= 0.4'} - use-sync-external-store@1.5.0: - resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} + use-sync-external-store@1.6.0: + resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -12972,8 +13374,8 @@ packages: resolution: {integrity: sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA==} engines: {node: '>=10'} - validator@13.15.15: - resolution: {integrity: sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==} + validator@13.15.23: + resolution: {integrity: sha512-4yoz1kEWqUjzi5zsPbAS/903QXSYp0UOtHsPpp7p9rHAw/W+dkInskAE386Fat3oKRROwO98d9ZB0G4cObgUyw==} engines: {node: '>= 0.10'} vanilla-picker@2.12.3: @@ -13001,8 +13403,8 @@ packages: engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite@5.4.19: - resolution: {integrity: sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==} + vite@5.4.21: + resolution: {integrity: sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -13032,8 +13434,8 @@ packages: terser: optional: true - vite@7.0.6: - resolution: {integrity: sha512-MHFiOENNBd+Bd9uvc8GEsIzdkn1JxMmEeYX35tI3fv0sJBUTfW5tQsoaOwuY4KhBI09A3dUJ/DXf2yxPVPUceg==} + vite@7.2.4: + resolution: {integrity: sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -13125,14 +13527,13 @@ packages: jsdom: optional: true - vm2@3.9.19: - resolution: {integrity: sha512-J637XF0DHDMV57R6JyVsTak7nIL8gy5KH4r1HiwWLf/4GBbb5MKL5y7LpmF4A8E2nR6XmzpmMFQ7V7ppPTmUQg==} + vm2@3.10.0: + resolution: {integrity: sha512-3ggF4Bs0cw4M7Rxn19/Cv3nJi04xrgHwt4uLto+zkcZocaKwP/nKP9wPx6ggN2X0DSXxOOIc63BV1jvES19wXQ==} engines: {node: '>=6.0'} - deprecated: The library contains critical security issues and should not be used for production! The maintenance of the project has been discontinued. Consider migrating your code to isolated-vm. hasBin: true - vue@3.5.18: - resolution: {integrity: sha512-7W4Y4ZbMiQ3SEo+m9lnoNpV9xG7QVMLa+/0RFwwiAVkeYoyGXqWE85jabU4pllJNUzqfLShJ5YLptewhCWUgNA==} + vue@3.5.25: + resolution: {integrity: sha512-YLVdgv2K13WJ6n+kD5owehKtEXwdwXuj2TTyJMsO7pSeKw2bfRNZGjhB7YzrpbMYj5b5QsUebHpOqR3R3ziy/g==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -13164,20 +13565,24 @@ packages: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} - web-streams-polyfill@4.1.0: - resolution: {integrity: sha512-A7Jxrg7+eV+eZR/CIdESDnRGFb6/bcKukGvJBB5snI6cw3is1c2qamkYstC1bY1p08TyMRlN9eTMkxmnKJBPBw==} + web-streams-polyfill@4.2.0: + resolution: {integrity: sha512-0rYDzGOh9EZpig92umN5g5D/9A1Kff7k0/mzPSSCY8jEQeYkgRMoY7LhbXtUCWzLCMX0TUE9aoHkjFNB7D9pfA==} engines: {node: '>= 8'} + webdriver-bidi-protocol@0.3.9: + resolution: {integrity: sha512-uIYvlRQ0PwtZR1EzHlTMol1G0lAlmOe6wPykF9a77AK3bkpvZHzIVxRE2ThOx5vjy2zISe0zhwf5rzuUfbo1PQ==} + webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} + webidl-conversions@8.0.0: + resolution: {integrity: sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==} + engines: {node: '>=20'} + webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} @@ -13209,12 +13614,13 @@ packages: resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} engines: {node: '>=18'} + whatwg-url@15.1.0: + resolution: {integrity: sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==} + engines: {node: '>=20'} + whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - whatwg-url@7.1.0: - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} - which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} @@ -13248,8 +13654,8 @@ packages: engines: {node: ^18.17.0 || >=20.5.0} hasBin: true - whoops@5.0.1: - resolution: {integrity: sha512-H2sKu1asxnFE2mNUeRzNY0CQuvl+n6iyE6phvzOaBfZblItNKpC1EzKWy2Zx+woZ3qUFK/wbmmNiLeqXwzk+FA==} + whoops@5.0.5: + resolution: {integrity: sha512-N7F1sDbtomwdd0fvstTzUdNcDOrNlMHrt7zGDA7qzv0QJjLOfnqahEEOawecjiD7kbSNcTm+vuUAKvYxWfcclA==} engines: {node: '>= 8'} why-is-node-running@2.3.0: @@ -13279,8 +13685,8 @@ packages: resolution: {integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==} engines: {node: '>= 12.0.0'} - winston@3.17.0: - resolution: {integrity: sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw==} + winston@3.18.3: + resolution: {integrity: sha512-NoBZauFNNWENgsnC9YpgyYwOVrl2m58PpQ8lNHjV3kosGs7KJ7Npk9pCUE+WJlawVSe8mykWDKWFSVfs3QO9ww==} engines: {node: '>= 12.0.0'} wkx@0.5.0: @@ -13407,8 +13813,8 @@ packages: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - yaml@2.8.0: - resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} + yaml@2.8.1: + resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} engines: {node: '>= 14.6'} hasBin: true @@ -13441,8 +13847,8 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - zimmerframe@1.1.2: - resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==} + zimmerframe@1.1.4: + resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==} zip-stream@1.2.0: resolution: {integrity: sha512-2olrDUuPM4NvRIgGPhvrp84f7/HmWR6RiQrgwFF2VctmnssFiogtYL3DcA8Vl2bsSmju79sVXe38TsII7JleUg==} @@ -13458,69 +13864,68 @@ packages: peerDependencies: zod: ^3.21.4 - zod-to-json-schema@3.24.6: - resolution: {integrity: sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==} + zod-to-json-schema@3.25.0: + resolution: {integrity: sha512-HvWtU2UG41LALjajJrML6uQejQhNJx+JBO9IflpSja4R03iNWfKXrj6W2h7ljuLyc1nKS+9yDyL/9tD1U/yBnQ==} peerDependencies: - zod: ^3.24.1 + zod: ^3.25 || ^4 zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - zod@4.0.10: - resolution: {integrity: sha512-3vB+UU3/VmLL2lvwcY/4RV2i9z/YU0DTV/tDuYjrwmx5WeJ7hwy+rGEEx8glHp6Yxw7ibRbKSaIFBgReRPe5KA==} + zod@4.1.13: + resolution: {integrity: sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==} snapshots: - '@ai-sdk/anthropic@0.0.39(zod@4.0.10)': + '@ai-sdk/anthropic@0.0.39(zod@4.1.13)': dependencies: '@ai-sdk/provider': 0.0.17 - '@ai-sdk/provider-utils': 1.0.9(zod@4.0.10) - zod: 4.0.10 + '@ai-sdk/provider-utils': 1.0.9(zod@4.1.13) + zod: 4.1.13 - '@ai-sdk/google@0.0.35(zod@4.0.10)': + '@ai-sdk/google@0.0.35(zod@4.1.13)': dependencies: '@ai-sdk/provider': 0.0.17 - '@ai-sdk/provider-utils': 1.0.9(zod@4.0.10) - zod: 4.0.10 + '@ai-sdk/provider-utils': 1.0.9(zod@4.1.13) + zod: 4.1.13 - '@ai-sdk/openai@0.0.44(zod@4.0.10)': + '@ai-sdk/openai@0.0.44(zod@4.1.13)': dependencies: '@ai-sdk/provider': 0.0.17 - '@ai-sdk/provider-utils': 1.0.9(zod@4.0.10) - zod: 4.0.10 + '@ai-sdk/provider-utils': 1.0.9(zod@4.1.13) + zod: 4.1.13 - '@ai-sdk/provider-utils@1.0.22(zod@4.0.10)': + '@ai-sdk/provider-utils@1.0.22(zod@4.1.13)': dependencies: '@ai-sdk/provider': 0.0.26 eventsource-parser: 1.1.2 nanoid: 3.3.11 secure-json-parse: 2.7.0 optionalDependencies: - zod: 4.0.10 + zod: 4.1.13 - '@ai-sdk/provider-utils@1.0.9(zod@4.0.10)': + '@ai-sdk/provider-utils@1.0.9(zod@4.1.13)': dependencies: '@ai-sdk/provider': 0.0.17 eventsource-parser: 1.1.2 nanoid: 3.3.6 secure-json-parse: 2.7.0 optionalDependencies: - zod: 4.0.10 + zod: 4.1.13 - '@ai-sdk/provider-utils@2.2.8(zod@4.0.10)': + '@ai-sdk/provider-utils@2.2.8(zod@4.1.13)': dependencies: '@ai-sdk/provider': 1.1.3 nanoid: 3.3.11 secure-json-parse: 2.7.0 - zod: 4.0.10 + zod: 4.1.13 - '@ai-sdk/provider-utils@3.0.1(zod@4.0.10)': + '@ai-sdk/provider-utils@3.0.18(zod@4.1.13)': dependencies: '@ai-sdk/provider': 2.0.0 '@standard-schema/spec': 1.0.0 - eventsource-parser: 3.0.3 - zod: 4.0.10 - zod-to-json-schema: 3.24.6(zod@4.0.10) + eventsource-parser: 3.0.6 + zod: 4.1.13 '@ai-sdk/provider@0.0.17': dependencies: @@ -13538,150 +13943,175 @@ snapshots: dependencies: json-schema: 0.4.0 - '@ai-sdk/react@0.0.70(react@19.1.1)(zod@4.0.10)': + '@ai-sdk/react@0.0.70(react@19.2.0)(zod@4.1.13)': dependencies: - '@ai-sdk/provider-utils': 1.0.22(zod@4.0.10) - '@ai-sdk/ui-utils': 0.0.50(zod@4.0.10) - swr: 2.3.4(react@19.1.1) + '@ai-sdk/provider-utils': 1.0.22(zod@4.1.13) + '@ai-sdk/ui-utils': 0.0.50(zod@4.1.13) + swr: 2.3.7(react@19.2.0) throttleit: 2.1.0 optionalDependencies: - react: 19.1.1 - zod: 4.0.10 + react: 19.2.0 + zod: 4.1.13 - '@ai-sdk/solid@0.0.54(zod@4.0.10)': + '@ai-sdk/solid@0.0.54(zod@4.1.13)': dependencies: - '@ai-sdk/provider-utils': 1.0.22(zod@4.0.10) - '@ai-sdk/ui-utils': 0.0.50(zod@4.0.10) + '@ai-sdk/provider-utils': 1.0.22(zod@4.1.13) + '@ai-sdk/ui-utils': 0.0.50(zod@4.1.13) transitivePeerDependencies: - zod - '@ai-sdk/svelte@0.0.57(svelte@5.38.0)(zod@4.0.10)': + '@ai-sdk/svelte@0.0.57(svelte@5.45.2)(zod@4.1.13)': dependencies: - '@ai-sdk/provider-utils': 1.0.22(zod@4.0.10) - '@ai-sdk/ui-utils': 0.0.50(zod@4.0.10) - sswr: 2.2.0(svelte@5.38.0) + '@ai-sdk/provider-utils': 1.0.22(zod@4.1.13) + '@ai-sdk/ui-utils': 0.0.50(zod@4.1.13) + sswr: 2.2.0(svelte@5.45.2) optionalDependencies: - svelte: 5.38.0 + svelte: 5.45.2 transitivePeerDependencies: - zod - '@ai-sdk/ui-utils@0.0.50(zod@4.0.10)': + '@ai-sdk/ui-utils@0.0.50(zod@4.1.13)': dependencies: '@ai-sdk/provider': 0.0.26 - '@ai-sdk/provider-utils': 1.0.22(zod@4.0.10) + '@ai-sdk/provider-utils': 1.0.22(zod@4.1.13) json-schema: 0.4.0 secure-json-parse: 2.7.0 - zod-to-json-schema: 3.24.6(zod@4.0.10) + zod-to-json-schema: 3.25.0(zod@4.1.13) optionalDependencies: - zod: 4.0.10 + zod: 4.1.13 - '@ai-sdk/vue@0.0.59(vue@3.5.18(typescript@5.8.3))(zod@4.0.10)': + '@ai-sdk/vue@0.0.59(vue@3.5.25(typescript@5.9.3))(zod@4.1.13)': dependencies: - '@ai-sdk/provider-utils': 1.0.22(zod@4.0.10) - '@ai-sdk/ui-utils': 0.0.50(zod@4.0.10) - swrv: 1.1.0(vue@3.5.18(typescript@5.8.3)) + '@ai-sdk/provider-utils': 1.0.22(zod@4.1.13) + '@ai-sdk/ui-utils': 0.0.50(zod@4.1.13) + swrv: 1.1.0(vue@3.5.25(typescript@5.9.3)) optionalDependencies: - vue: 3.5.18(typescript@5.8.3) + vue: 3.5.25(typescript@5.9.3) transitivePeerDependencies: - zod - '@algolia/client-abtesting@5.34.1': + '@algolia/abtesting@1.11.0': + dependencies: + '@algolia/client-common': 5.45.0 + '@algolia/requester-browser-xhr': 5.45.0 + '@algolia/requester-fetch': 5.45.0 + '@algolia/requester-node-http': 5.45.0 + + '@algolia/client-abtesting@5.45.0': dependencies: - '@algolia/client-common': 5.34.1 - '@algolia/requester-browser-xhr': 5.34.1 - '@algolia/requester-fetch': 5.34.1 - '@algolia/requester-node-http': 5.34.1 + '@algolia/client-common': 5.45.0 + '@algolia/requester-browser-xhr': 5.45.0 + '@algolia/requester-fetch': 5.45.0 + '@algolia/requester-node-http': 5.45.0 - '@algolia/client-analytics@5.34.1': + '@algolia/client-analytics@5.45.0': dependencies: - '@algolia/client-common': 5.34.1 - '@algolia/requester-browser-xhr': 5.34.1 - '@algolia/requester-fetch': 5.34.1 - '@algolia/requester-node-http': 5.34.1 + '@algolia/client-common': 5.45.0 + '@algolia/requester-browser-xhr': 5.45.0 + '@algolia/requester-fetch': 5.45.0 + '@algolia/requester-node-http': 5.45.0 - '@algolia/client-common@5.34.1': {} + '@algolia/client-common@5.45.0': {} - '@algolia/client-insights@5.34.1': + '@algolia/client-insights@5.45.0': dependencies: - '@algolia/client-common': 5.34.1 - '@algolia/requester-browser-xhr': 5.34.1 - '@algolia/requester-fetch': 5.34.1 - '@algolia/requester-node-http': 5.34.1 + '@algolia/client-common': 5.45.0 + '@algolia/requester-browser-xhr': 5.45.0 + '@algolia/requester-fetch': 5.45.0 + '@algolia/requester-node-http': 5.45.0 - '@algolia/client-personalization@5.34.1': + '@algolia/client-personalization@5.45.0': dependencies: - '@algolia/client-common': 5.34.1 - '@algolia/requester-browser-xhr': 5.34.1 - '@algolia/requester-fetch': 5.34.1 - '@algolia/requester-node-http': 5.34.1 + '@algolia/client-common': 5.45.0 + '@algolia/requester-browser-xhr': 5.45.0 + '@algolia/requester-fetch': 5.45.0 + '@algolia/requester-node-http': 5.45.0 - '@algolia/client-query-suggestions@5.34.1': + '@algolia/client-query-suggestions@5.45.0': dependencies: - '@algolia/client-common': 5.34.1 - '@algolia/requester-browser-xhr': 5.34.1 - '@algolia/requester-fetch': 5.34.1 - '@algolia/requester-node-http': 5.34.1 + '@algolia/client-common': 5.45.0 + '@algolia/requester-browser-xhr': 5.45.0 + '@algolia/requester-fetch': 5.45.0 + '@algolia/requester-node-http': 5.45.0 - '@algolia/client-search@5.34.1': + '@algolia/client-search@5.45.0': dependencies: - '@algolia/client-common': 5.34.1 - '@algolia/requester-browser-xhr': 5.34.1 - '@algolia/requester-fetch': 5.34.1 - '@algolia/requester-node-http': 5.34.1 + '@algolia/client-common': 5.45.0 + '@algolia/requester-browser-xhr': 5.45.0 + '@algolia/requester-fetch': 5.45.0 + '@algolia/requester-node-http': 5.45.0 - '@algolia/ingestion@1.34.1': + '@algolia/ingestion@1.45.0': dependencies: - '@algolia/client-common': 5.34.1 - '@algolia/requester-browser-xhr': 5.34.1 - '@algolia/requester-fetch': 5.34.1 - '@algolia/requester-node-http': 5.34.1 + '@algolia/client-common': 5.45.0 + '@algolia/requester-browser-xhr': 5.45.0 + '@algolia/requester-fetch': 5.45.0 + '@algolia/requester-node-http': 5.45.0 - '@algolia/monitoring@1.34.1': + '@algolia/monitoring@1.45.0': dependencies: - '@algolia/client-common': 5.34.1 - '@algolia/requester-browser-xhr': 5.34.1 - '@algolia/requester-fetch': 5.34.1 - '@algolia/requester-node-http': 5.34.1 + '@algolia/client-common': 5.45.0 + '@algolia/requester-browser-xhr': 5.45.0 + '@algolia/requester-fetch': 5.45.0 + '@algolia/requester-node-http': 5.45.0 - '@algolia/recommend@5.34.1': + '@algolia/recommend@5.45.0': dependencies: - '@algolia/client-common': 5.34.1 - '@algolia/requester-browser-xhr': 5.34.1 - '@algolia/requester-fetch': 5.34.1 - '@algolia/requester-node-http': 5.34.1 + '@algolia/client-common': 5.45.0 + '@algolia/requester-browser-xhr': 5.45.0 + '@algolia/requester-fetch': 5.45.0 + '@algolia/requester-node-http': 5.45.0 - '@algolia/requester-browser-xhr@5.34.1': + '@algolia/requester-browser-xhr@5.45.0': dependencies: - '@algolia/client-common': 5.34.1 + '@algolia/client-common': 5.45.0 - '@algolia/requester-fetch@5.34.1': + '@algolia/requester-fetch@5.45.0': dependencies: - '@algolia/client-common': 5.34.1 + '@algolia/client-common': 5.45.0 - '@algolia/requester-node-http@5.34.1': + '@algolia/requester-node-http@5.45.0': dependencies: - '@algolia/client-common': 5.34.1 + '@algolia/client-common': 5.45.0 '@ampproject/remapping@2.3.0': dependencies: - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 '@asamuzakjp/css-color@3.2.0': dependencies: '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 lru-cache: 10.4.3 + '@asamuzakjp/css-color@4.1.0': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + lru-cache: 11.2.2 + + '@asamuzakjp/dom-selector@6.7.4': + dependencies: + '@asamuzakjp/nwsapi': 2.3.9 + bidi-js: 1.0.3 + css-tree: 3.1.0 + is-potential-custom-element-name: 1.0.1 + lru-cache: 11.2.2 + + '@asamuzakjp/nwsapi@2.3.9': {} + '@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.840.0 - '@aws-sdk/util-locate-window': 3.804.0 + '@aws-sdk/types': 3.936.0 + '@aws-sdk/util-locate-window': 3.893.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 optional: true @@ -13689,7 +14119,7 @@ snapshots: '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.840.0 + '@aws-sdk/types': 3.936.0 tslib: 2.8.1 optional: true @@ -13700,436 +14130,455 @@ snapshots: '@aws-crypto/util@5.2.0': dependencies: - '@aws-sdk/types': 3.840.0 + '@aws-sdk/types': 3.936.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 optional: true - '@aws-sdk/client-cognito-identity@3.848.0': + '@aws-sdk/client-cognito-identity@3.940.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.846.0 - '@aws-sdk/credential-provider-node': 3.848.0 - '@aws-sdk/middleware-host-header': 3.840.0 - '@aws-sdk/middleware-logger': 3.840.0 - '@aws-sdk/middleware-recursion-detection': 3.840.0 - '@aws-sdk/middleware-user-agent': 3.848.0 - '@aws-sdk/region-config-resolver': 3.840.0 - '@aws-sdk/types': 3.840.0 - '@aws-sdk/util-endpoints': 3.848.0 - '@aws-sdk/util-user-agent-browser': 3.840.0 - '@aws-sdk/util-user-agent-node': 3.848.0 - '@smithy/config-resolver': 4.1.4 - '@smithy/core': 3.7.2 - '@smithy/fetch-http-handler': 5.1.0 - '@smithy/hash-node': 4.0.4 - '@smithy/invalid-dependency': 4.0.4 - '@smithy/middleware-content-length': 4.0.4 - '@smithy/middleware-endpoint': 4.1.17 - '@smithy/middleware-retry': 4.1.18 - '@smithy/middleware-serde': 4.0.8 - '@smithy/middleware-stack': 4.0.4 - '@smithy/node-config-provider': 4.1.3 - '@smithy/node-http-handler': 4.1.0 - '@smithy/protocol-http': 5.1.2 - '@smithy/smithy-client': 4.4.9 - '@smithy/types': 4.3.1 - '@smithy/url-parser': 4.0.4 - '@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.25 - '@smithy/util-defaults-mode-node': 4.0.25 - '@smithy/util-endpoints': 3.0.6 - '@smithy/util-middleware': 4.0.4 - '@smithy/util-retry': 4.0.6 - '@smithy/util-utf8': 4.0.0 + '@aws-sdk/core': 3.940.0 + '@aws-sdk/credential-provider-node': 3.940.0 + '@aws-sdk/middleware-host-header': 3.936.0 + '@aws-sdk/middleware-logger': 3.936.0 + '@aws-sdk/middleware-recursion-detection': 3.936.0 + '@aws-sdk/middleware-user-agent': 3.940.0 + '@aws-sdk/region-config-resolver': 3.936.0 + '@aws-sdk/types': 3.936.0 + '@aws-sdk/util-endpoints': 3.936.0 + '@aws-sdk/util-user-agent-browser': 3.936.0 + '@aws-sdk/util-user-agent-node': 3.940.0 + '@smithy/config-resolver': 4.4.3 + '@smithy/core': 3.18.5 + '@smithy/fetch-http-handler': 5.3.6 + '@smithy/hash-node': 4.2.5 + '@smithy/invalid-dependency': 4.2.5 + '@smithy/middleware-content-length': 4.2.5 + '@smithy/middleware-endpoint': 4.3.12 + '@smithy/middleware-retry': 4.4.12 + '@smithy/middleware-serde': 4.2.6 + '@smithy/middleware-stack': 4.2.5 + '@smithy/node-config-provider': 4.3.5 + '@smithy/node-http-handler': 4.4.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/smithy-client': 4.9.8 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.11 + '@smithy/util-defaults-mode-node': 4.2.14 + '@smithy/util-endpoints': 3.2.5 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-retry': 4.2.5 + '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt optional: true - '@aws-sdk/client-sso@3.848.0': + '@aws-sdk/client-sso@3.940.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.846.0 - '@aws-sdk/middleware-host-header': 3.840.0 - '@aws-sdk/middleware-logger': 3.840.0 - '@aws-sdk/middleware-recursion-detection': 3.840.0 - '@aws-sdk/middleware-user-agent': 3.848.0 - '@aws-sdk/region-config-resolver': 3.840.0 - '@aws-sdk/types': 3.840.0 - '@aws-sdk/util-endpoints': 3.848.0 - '@aws-sdk/util-user-agent-browser': 3.840.0 - '@aws-sdk/util-user-agent-node': 3.848.0 - '@smithy/config-resolver': 4.1.4 - '@smithy/core': 3.7.2 - '@smithy/fetch-http-handler': 5.1.0 - '@smithy/hash-node': 4.0.4 - '@smithy/invalid-dependency': 4.0.4 - '@smithy/middleware-content-length': 4.0.4 - '@smithy/middleware-endpoint': 4.1.17 - '@smithy/middleware-retry': 4.1.18 - '@smithy/middleware-serde': 4.0.8 - '@smithy/middleware-stack': 4.0.4 - '@smithy/node-config-provider': 4.1.3 - '@smithy/node-http-handler': 4.1.0 - '@smithy/protocol-http': 5.1.2 - '@smithy/smithy-client': 4.4.9 - '@smithy/types': 4.3.1 - '@smithy/url-parser': 4.0.4 - '@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.25 - '@smithy/util-defaults-mode-node': 4.0.25 - '@smithy/util-endpoints': 3.0.6 - '@smithy/util-middleware': 4.0.4 - '@smithy/util-retry': 4.0.6 - '@smithy/util-utf8': 4.0.0 + '@aws-sdk/core': 3.940.0 + '@aws-sdk/middleware-host-header': 3.936.0 + '@aws-sdk/middleware-logger': 3.936.0 + '@aws-sdk/middleware-recursion-detection': 3.936.0 + '@aws-sdk/middleware-user-agent': 3.940.0 + '@aws-sdk/region-config-resolver': 3.936.0 + '@aws-sdk/types': 3.936.0 + '@aws-sdk/util-endpoints': 3.936.0 + '@aws-sdk/util-user-agent-browser': 3.936.0 + '@aws-sdk/util-user-agent-node': 3.940.0 + '@smithy/config-resolver': 4.4.3 + '@smithy/core': 3.18.5 + '@smithy/fetch-http-handler': 5.3.6 + '@smithy/hash-node': 4.2.5 + '@smithy/invalid-dependency': 4.2.5 + '@smithy/middleware-content-length': 4.2.5 + '@smithy/middleware-endpoint': 4.3.12 + '@smithy/middleware-retry': 4.4.12 + '@smithy/middleware-serde': 4.2.6 + '@smithy/middleware-stack': 4.2.5 + '@smithy/node-config-provider': 4.3.5 + '@smithy/node-http-handler': 4.4.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/smithy-client': 4.9.8 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.11 + '@smithy/util-defaults-mode-node': 4.2.14 + '@smithy/util-endpoints': 3.2.5 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-retry': 4.2.5 + '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt optional: true - '@aws-sdk/core@3.846.0': - dependencies: - '@aws-sdk/types': 3.840.0 - '@aws-sdk/xml-builder': 3.821.0 - '@smithy/core': 3.7.2 - '@smithy/node-config-provider': 4.1.3 - '@smithy/property-provider': 4.0.4 - '@smithy/protocol-http': 5.1.2 - '@smithy/signature-v4': 5.1.2 - '@smithy/smithy-client': 4.4.9 - '@smithy/types': 4.3.1 - '@smithy/util-base64': 4.0.0 - '@smithy/util-body-length-browser': 4.0.0 - '@smithy/util-middleware': 4.0.4 - '@smithy/util-utf8': 4.0.0 - fast-xml-parser: 5.2.5 + '@aws-sdk/core@3.940.0': + dependencies: + '@aws-sdk/types': 3.936.0 + '@aws-sdk/xml-builder': 3.930.0 + '@smithy/core': 3.18.5 + '@smithy/node-config-provider': 4.3.5 + '@smithy/property-provider': 4.2.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/signature-v4': 5.3.5 + '@smithy/smithy-client': 4.9.8 + '@smithy/types': 4.9.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 optional: true - '@aws-sdk/credential-provider-cognito-identity@3.848.0': + '@aws-sdk/credential-provider-cognito-identity@3.940.0': dependencies: - '@aws-sdk/client-cognito-identity': 3.848.0 - '@aws-sdk/types': 3.840.0 - '@smithy/property-provider': 4.0.4 - '@smithy/types': 4.3.1 + '@aws-sdk/client-cognito-identity': 3.940.0 + '@aws-sdk/types': 3.936.0 + '@smithy/property-provider': 4.2.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt optional: true - '@aws-sdk/credential-provider-env@3.846.0': + '@aws-sdk/credential-provider-env@3.940.0': dependencies: - '@aws-sdk/core': 3.846.0 - '@aws-sdk/types': 3.840.0 - '@smithy/property-provider': 4.0.4 - '@smithy/types': 4.3.1 + '@aws-sdk/core': 3.940.0 + '@aws-sdk/types': 3.936.0 + '@smithy/property-provider': 4.2.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 optional: true - '@aws-sdk/credential-provider-http@3.846.0': + '@aws-sdk/credential-provider-http@3.940.0': dependencies: - '@aws-sdk/core': 3.846.0 - '@aws-sdk/types': 3.840.0 - '@smithy/fetch-http-handler': 5.1.0 - '@smithy/node-http-handler': 4.1.0 - '@smithy/property-provider': 4.0.4 - '@smithy/protocol-http': 5.1.2 - '@smithy/smithy-client': 4.4.9 - '@smithy/types': 4.3.1 - '@smithy/util-stream': 4.2.3 + '@aws-sdk/core': 3.940.0 + '@aws-sdk/types': 3.936.0 + '@smithy/fetch-http-handler': 5.3.6 + '@smithy/node-http-handler': 4.4.5 + '@smithy/property-provider': 4.2.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/smithy-client': 4.9.8 + '@smithy/types': 4.9.0 + '@smithy/util-stream': 4.5.6 + tslib: 2.8.1 + optional: true + + '@aws-sdk/credential-provider-ini@3.940.0': + dependencies: + '@aws-sdk/core': 3.940.0 + '@aws-sdk/credential-provider-env': 3.940.0 + '@aws-sdk/credential-provider-http': 3.940.0 + '@aws-sdk/credential-provider-login': 3.940.0 + '@aws-sdk/credential-provider-process': 3.940.0 + '@aws-sdk/credential-provider-sso': 3.940.0 + '@aws-sdk/credential-provider-web-identity': 3.940.0 + '@aws-sdk/nested-clients': 3.940.0 + '@aws-sdk/types': 3.936.0 + '@smithy/credential-provider-imds': 4.2.5 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt optional: true - '@aws-sdk/credential-provider-ini@3.848.0': - dependencies: - '@aws-sdk/core': 3.846.0 - '@aws-sdk/credential-provider-env': 3.846.0 - '@aws-sdk/credential-provider-http': 3.846.0 - '@aws-sdk/credential-provider-process': 3.846.0 - '@aws-sdk/credential-provider-sso': 3.848.0 - '@aws-sdk/credential-provider-web-identity': 3.848.0 - '@aws-sdk/nested-clients': 3.848.0 - '@aws-sdk/types': 3.840.0 - '@smithy/credential-provider-imds': 4.0.6 - '@smithy/property-provider': 4.0.4 - '@smithy/shared-ini-file-loader': 4.0.4 - '@smithy/types': 4.3.1 + '@aws-sdk/credential-provider-login@3.940.0': + dependencies: + '@aws-sdk/core': 3.940.0 + '@aws-sdk/nested-clients': 3.940.0 + '@aws-sdk/types': 3.936.0 + '@smithy/property-provider': 4.2.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt optional: true - '@aws-sdk/credential-provider-node@3.848.0': + '@aws-sdk/credential-provider-node@3.940.0': dependencies: - '@aws-sdk/credential-provider-env': 3.846.0 - '@aws-sdk/credential-provider-http': 3.846.0 - '@aws-sdk/credential-provider-ini': 3.848.0 - '@aws-sdk/credential-provider-process': 3.846.0 - '@aws-sdk/credential-provider-sso': 3.848.0 - '@aws-sdk/credential-provider-web-identity': 3.848.0 - '@aws-sdk/types': 3.840.0 - '@smithy/credential-provider-imds': 4.0.6 - '@smithy/property-provider': 4.0.4 - '@smithy/shared-ini-file-loader': 4.0.4 - '@smithy/types': 4.3.1 + '@aws-sdk/credential-provider-env': 3.940.0 + '@aws-sdk/credential-provider-http': 3.940.0 + '@aws-sdk/credential-provider-ini': 3.940.0 + '@aws-sdk/credential-provider-process': 3.940.0 + '@aws-sdk/credential-provider-sso': 3.940.0 + '@aws-sdk/credential-provider-web-identity': 3.940.0 + '@aws-sdk/types': 3.936.0 + '@smithy/credential-provider-imds': 4.2.5 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt optional: true - '@aws-sdk/credential-provider-process@3.846.0': + '@aws-sdk/credential-provider-process@3.940.0': dependencies: - '@aws-sdk/core': 3.846.0 - '@aws-sdk/types': 3.840.0 - '@smithy/property-provider': 4.0.4 - '@smithy/shared-ini-file-loader': 4.0.4 - '@smithy/types': 4.3.1 + '@aws-sdk/core': 3.940.0 + '@aws-sdk/types': 3.936.0 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 tslib: 2.8.1 optional: true - '@aws-sdk/credential-provider-sso@3.848.0': + '@aws-sdk/credential-provider-sso@3.940.0': dependencies: - '@aws-sdk/client-sso': 3.848.0 - '@aws-sdk/core': 3.846.0 - '@aws-sdk/token-providers': 3.848.0 - '@aws-sdk/types': 3.840.0 - '@smithy/property-provider': 4.0.4 - '@smithy/shared-ini-file-loader': 4.0.4 - '@smithy/types': 4.3.1 + '@aws-sdk/client-sso': 3.940.0 + '@aws-sdk/core': 3.940.0 + '@aws-sdk/token-providers': 3.940.0 + '@aws-sdk/types': 3.936.0 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt optional: true - '@aws-sdk/credential-provider-web-identity@3.848.0': + '@aws-sdk/credential-provider-web-identity@3.940.0': dependencies: - '@aws-sdk/core': 3.846.0 - '@aws-sdk/nested-clients': 3.848.0 - '@aws-sdk/types': 3.840.0 - '@smithy/property-provider': 4.0.4 - '@smithy/types': 4.3.1 + '@aws-sdk/core': 3.940.0 + '@aws-sdk/nested-clients': 3.940.0 + '@aws-sdk/types': 3.936.0 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt optional: true - '@aws-sdk/credential-providers@3.848.0': - dependencies: - '@aws-sdk/client-cognito-identity': 3.848.0 - '@aws-sdk/core': 3.846.0 - '@aws-sdk/credential-provider-cognito-identity': 3.848.0 - '@aws-sdk/credential-provider-env': 3.846.0 - '@aws-sdk/credential-provider-http': 3.846.0 - '@aws-sdk/credential-provider-ini': 3.848.0 - '@aws-sdk/credential-provider-node': 3.848.0 - '@aws-sdk/credential-provider-process': 3.846.0 - '@aws-sdk/credential-provider-sso': 3.848.0 - '@aws-sdk/credential-provider-web-identity': 3.848.0 - '@aws-sdk/nested-clients': 3.848.0 - '@aws-sdk/types': 3.840.0 - '@smithy/config-resolver': 4.1.4 - '@smithy/core': 3.7.2 - '@smithy/credential-provider-imds': 4.0.6 - '@smithy/node-config-provider': 4.1.3 - '@smithy/property-provider': 4.0.4 - '@smithy/types': 4.3.1 + '@aws-sdk/credential-providers@3.940.0': + dependencies: + '@aws-sdk/client-cognito-identity': 3.940.0 + '@aws-sdk/core': 3.940.0 + '@aws-sdk/credential-provider-cognito-identity': 3.940.0 + '@aws-sdk/credential-provider-env': 3.940.0 + '@aws-sdk/credential-provider-http': 3.940.0 + '@aws-sdk/credential-provider-ini': 3.940.0 + '@aws-sdk/credential-provider-login': 3.940.0 + '@aws-sdk/credential-provider-node': 3.940.0 + '@aws-sdk/credential-provider-process': 3.940.0 + '@aws-sdk/credential-provider-sso': 3.940.0 + '@aws-sdk/credential-provider-web-identity': 3.940.0 + '@aws-sdk/nested-clients': 3.940.0 + '@aws-sdk/types': 3.936.0 + '@smithy/config-resolver': 4.4.3 + '@smithy/core': 3.18.5 + '@smithy/credential-provider-imds': 4.2.5 + '@smithy/node-config-provider': 4.3.5 + '@smithy/property-provider': 4.2.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt optional: true - '@aws-sdk/middleware-host-header@3.840.0': + '@aws-sdk/middleware-host-header@3.936.0': dependencies: - '@aws-sdk/types': 3.840.0 - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 + '@aws-sdk/types': 3.936.0 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 optional: true - '@aws-sdk/middleware-logger@3.840.0': + '@aws-sdk/middleware-logger@3.936.0': dependencies: - '@aws-sdk/types': 3.840.0 - '@smithy/types': 4.3.1 + '@aws-sdk/types': 3.936.0 + '@smithy/types': 4.9.0 tslib: 2.8.1 optional: true - '@aws-sdk/middleware-recursion-detection@3.840.0': + '@aws-sdk/middleware-recursion-detection@3.936.0': dependencies: - '@aws-sdk/types': 3.840.0 - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 + '@aws-sdk/types': 3.936.0 + '@aws/lambda-invoke-store': 0.2.1 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 optional: true - '@aws-sdk/middleware-user-agent@3.848.0': + '@aws-sdk/middleware-user-agent@3.940.0': dependencies: - '@aws-sdk/core': 3.846.0 - '@aws-sdk/types': 3.840.0 - '@aws-sdk/util-endpoints': 3.848.0 - '@smithy/core': 3.7.2 - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 + '@aws-sdk/core': 3.940.0 + '@aws-sdk/types': 3.936.0 + '@aws-sdk/util-endpoints': 3.936.0 + '@smithy/core': 3.18.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 optional: true - '@aws-sdk/nested-clients@3.848.0': + '@aws-sdk/nested-clients@3.940.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.846.0 - '@aws-sdk/middleware-host-header': 3.840.0 - '@aws-sdk/middleware-logger': 3.840.0 - '@aws-sdk/middleware-recursion-detection': 3.840.0 - '@aws-sdk/middleware-user-agent': 3.848.0 - '@aws-sdk/region-config-resolver': 3.840.0 - '@aws-sdk/types': 3.840.0 - '@aws-sdk/util-endpoints': 3.848.0 - '@aws-sdk/util-user-agent-browser': 3.840.0 - '@aws-sdk/util-user-agent-node': 3.848.0 - '@smithy/config-resolver': 4.1.4 - '@smithy/core': 3.7.2 - '@smithy/fetch-http-handler': 5.1.0 - '@smithy/hash-node': 4.0.4 - '@smithy/invalid-dependency': 4.0.4 - '@smithy/middleware-content-length': 4.0.4 - '@smithy/middleware-endpoint': 4.1.17 - '@smithy/middleware-retry': 4.1.18 - '@smithy/middleware-serde': 4.0.8 - '@smithy/middleware-stack': 4.0.4 - '@smithy/node-config-provider': 4.1.3 - '@smithy/node-http-handler': 4.1.0 - '@smithy/protocol-http': 5.1.2 - '@smithy/smithy-client': 4.4.9 - '@smithy/types': 4.3.1 - '@smithy/url-parser': 4.0.4 - '@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.25 - '@smithy/util-defaults-mode-node': 4.0.25 - '@smithy/util-endpoints': 3.0.6 - '@smithy/util-middleware': 4.0.4 - '@smithy/util-retry': 4.0.6 - '@smithy/util-utf8': 4.0.0 + '@aws-sdk/core': 3.940.0 + '@aws-sdk/middleware-host-header': 3.936.0 + '@aws-sdk/middleware-logger': 3.936.0 + '@aws-sdk/middleware-recursion-detection': 3.936.0 + '@aws-sdk/middleware-user-agent': 3.940.0 + '@aws-sdk/region-config-resolver': 3.936.0 + '@aws-sdk/types': 3.936.0 + '@aws-sdk/util-endpoints': 3.936.0 + '@aws-sdk/util-user-agent-browser': 3.936.0 + '@aws-sdk/util-user-agent-node': 3.940.0 + '@smithy/config-resolver': 4.4.3 + '@smithy/core': 3.18.5 + '@smithy/fetch-http-handler': 5.3.6 + '@smithy/hash-node': 4.2.5 + '@smithy/invalid-dependency': 4.2.5 + '@smithy/middleware-content-length': 4.2.5 + '@smithy/middleware-endpoint': 4.3.12 + '@smithy/middleware-retry': 4.4.12 + '@smithy/middleware-serde': 4.2.6 + '@smithy/middleware-stack': 4.2.5 + '@smithy/node-config-provider': 4.3.5 + '@smithy/node-http-handler': 4.4.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/smithy-client': 4.9.8 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.11 + '@smithy/util-defaults-mode-node': 4.2.14 + '@smithy/util-endpoints': 3.2.5 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-retry': 4.2.5 + '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt optional: true - '@aws-sdk/region-config-resolver@3.840.0': + '@aws-sdk/region-config-resolver@3.936.0': dependencies: - '@aws-sdk/types': 3.840.0 - '@smithy/node-config-provider': 4.1.3 - '@smithy/types': 4.3.1 - '@smithy/util-config-provider': 4.0.0 - '@smithy/util-middleware': 4.0.4 + '@aws-sdk/types': 3.936.0 + '@smithy/config-resolver': 4.4.3 + '@smithy/node-config-provider': 4.3.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 optional: true - '@aws-sdk/token-providers@3.848.0': + '@aws-sdk/token-providers@3.940.0': dependencies: - '@aws-sdk/core': 3.846.0 - '@aws-sdk/nested-clients': 3.848.0 - '@aws-sdk/types': 3.840.0 - '@smithy/property-provider': 4.0.4 - '@smithy/shared-ini-file-loader': 4.0.4 - '@smithy/types': 4.3.1 + '@aws-sdk/core': 3.940.0 + '@aws-sdk/nested-clients': 3.940.0 + '@aws-sdk/types': 3.936.0 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt optional: true - '@aws-sdk/types@3.840.0': + '@aws-sdk/types@3.936.0': dependencies: - '@smithy/types': 4.3.1 + '@smithy/types': 4.9.0 tslib: 2.8.1 optional: true - '@aws-sdk/util-endpoints@3.848.0': + '@aws-sdk/util-endpoints@3.936.0': dependencies: - '@aws-sdk/types': 3.840.0 - '@smithy/types': 4.3.1 - '@smithy/url-parser': 4.0.4 - '@smithy/util-endpoints': 3.0.6 + '@aws-sdk/types': 3.936.0 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 + '@smithy/util-endpoints': 3.2.5 tslib: 2.8.1 optional: true - '@aws-sdk/util-locate-window@3.804.0': + '@aws-sdk/util-locate-window@3.893.0': dependencies: tslib: 2.8.1 optional: true - '@aws-sdk/util-user-agent-browser@3.840.0': + '@aws-sdk/util-user-agent-browser@3.936.0': dependencies: - '@aws-sdk/types': 3.840.0 - '@smithy/types': 4.3.1 - bowser: 2.11.0 + '@aws-sdk/types': 3.936.0 + '@smithy/types': 4.9.0 + bowser: 2.13.1 tslib: 2.8.1 optional: true - '@aws-sdk/util-user-agent-node@3.848.0': + '@aws-sdk/util-user-agent-node@3.940.0': dependencies: - '@aws-sdk/middleware-user-agent': 3.848.0 - '@aws-sdk/types': 3.840.0 - '@smithy/node-config-provider': 4.1.3 - '@smithy/types': 4.3.1 + '@aws-sdk/middleware-user-agent': 3.940.0 + '@aws-sdk/types': 3.936.0 + '@smithy/node-config-provider': 4.3.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 optional: true - '@aws-sdk/xml-builder@3.821.0': + '@aws-sdk/xml-builder@3.930.0': dependencies: - '@smithy/types': 4.3.1 + '@smithy/types': 4.9.0 + fast-xml-parser: 5.2.5 tslib: 2.8.1 optional: true + '@aws/lambda-invoke-store@0.2.1': + optional: true + '@babel/code-frame@7.27.1': dependencies: - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.28.0': {} + '@babel/compat-data@7.28.5': {} - '@babel/core@7.28.0': + '@babel/core@7.28.5': dependencies: - '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.0 + '@babel/generator': 7.28.5 '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) - '@babel/helpers': 7.28.2 - '@babel/parser': 7.28.0 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.5 '@babel/template': 7.27.2 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 + '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 - debug: 4.4.1 + debug: 4.4.3 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/generator@7.28.0': + '@babel/generator@7.28.5': dependencies: - '@babel/parser': 7.28.0 - '@babel/types': 7.28.2 - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 '@babel/helper-compilation-targets@7.27.2': dependencies: - '@babel/compat-data': 7.28.0 + '@babel/compat-data': 7.28.5 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.25.1 + browserslist: 4.28.0 lru-cache: 5.1.1 semver: 6.3.1 @@ -14137,17 +14586,17 @@ snapshots: '@babel/helper-module-imports@7.27.1': dependencies: - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.27.3(@babel/core@7.28.0)': + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color @@ -14155,128 +14604,128 @@ snapshots: '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-validator-identifier@7.27.1': {} + '@babel/helper-validator-identifier@7.28.5': {} '@babel/helper-validator-option@7.27.1': {} - '@babel/helpers@7.28.2': + '@babel/helpers@7.28.4': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.2 + '@babel/types': 7.28.5 - '@babel/parser@7.28.0': + '@babel/parser@7.28.5': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.5 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.0)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.0)': + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.0)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.0)': + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.0)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.0)': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.0)': + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.0)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.0)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.0)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.0)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.0)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.0)': + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.0)': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/runtime@7.28.2': {} + '@babel/runtime@7.28.4': {} '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.0 - '@babel/types': 7.28.2 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 - '@babel/traverse@7.28.0': + '@babel/traverse@7.28.5': dependencies: '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.0 + '@babel/generator': 7.28.5 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.0 + '@babel/parser': 7.28.5 '@babel/template': 7.27.2 - '@babel/types': 7.28.2 - debug: 4.4.1 + '@babel/types': 7.28.5 + debug: 4.4.3 transitivePeerDependencies: - supports-color - '@babel/types@7.28.2': + '@babel/types@7.28.5': dependencies: '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 '@balena/dockerignore@1.0.2': {} @@ -14295,72 +14744,72 @@ snapshots: '@biomejs/cli-win32-arm64': 1.9.4 '@biomejs/cli-win32-x64': 1.9.4 - '@biomejs/biome@2.1.3': + '@biomejs/biome@2.3.8': optionalDependencies: - '@biomejs/cli-darwin-arm64': 2.1.3 - '@biomejs/cli-darwin-x64': 2.1.3 - '@biomejs/cli-linux-arm64': 2.1.3 - '@biomejs/cli-linux-arm64-musl': 2.1.3 - '@biomejs/cli-linux-x64': 2.1.3 - '@biomejs/cli-linux-x64-musl': 2.1.3 - '@biomejs/cli-win32-arm64': 2.1.3 - '@biomejs/cli-win32-x64': 2.1.3 + '@biomejs/cli-darwin-arm64': 2.3.8 + '@biomejs/cli-darwin-x64': 2.3.8 + '@biomejs/cli-linux-arm64': 2.3.8 + '@biomejs/cli-linux-arm64-musl': 2.3.8 + '@biomejs/cli-linux-x64': 2.3.8 + '@biomejs/cli-linux-x64-musl': 2.3.8 + '@biomejs/cli-win32-arm64': 2.3.8 + '@biomejs/cli-win32-x64': 2.3.8 '@biomejs/cli-darwin-arm64@1.9.4': optional: true - '@biomejs/cli-darwin-arm64@2.1.3': + '@biomejs/cli-darwin-arm64@2.3.8': optional: true '@biomejs/cli-darwin-x64@1.9.4': optional: true - '@biomejs/cli-darwin-x64@2.1.3': + '@biomejs/cli-darwin-x64@2.3.8': optional: true '@biomejs/cli-linux-arm64-musl@1.9.4': optional: true - '@biomejs/cli-linux-arm64-musl@2.1.3': + '@biomejs/cli-linux-arm64-musl@2.3.8': optional: true '@biomejs/cli-linux-arm64@1.9.4': optional: true - '@biomejs/cli-linux-arm64@2.1.3': + '@biomejs/cli-linux-arm64@2.3.8': optional: true '@biomejs/cli-linux-x64-musl@1.9.4': optional: true - '@biomejs/cli-linux-x64-musl@2.1.3': + '@biomejs/cli-linux-x64-musl@2.3.8': optional: true '@biomejs/cli-linux-x64@1.9.4': optional: true - '@biomejs/cli-linux-x64@2.1.3': + '@biomejs/cli-linux-x64@2.3.8': optional: true '@biomejs/cli-win32-arm64@1.9.4': optional: true - '@biomejs/cli-win32-arm64@2.1.3': + '@biomejs/cli-win32-arm64@2.3.8': optional: true '@biomejs/cli-win32-x64@1.9.4': optional: true - '@biomejs/cli-win32-x64@2.1.3': + '@biomejs/cli-win32-x64@2.3.8': optional: true - '@bufbuild/protobuf@2.6.2': {} + '@bufbuild/protobuf@2.10.1': {} '@cfworker/json-schema@4.1.1': {} - '@changesets/apply-release-plan@7.0.12': + '@changesets/apply-release-plan@7.0.14': dependencies: - '@changesets/config': 3.1.1 + '@changesets/config': 3.1.2 '@changesets/get-version-range-type': 0.4.0 '@changesets/git': 3.0.4 '@changesets/should-skip-package': 0.1.2 @@ -14372,7 +14821,7 @@ snapshots: outdent: 0.5.0 prettier: 2.8.8 resolve-from: 5.0.0 - semver: 7.7.2 + semver: 7.7.3 '@changesets/assemble-release-plan@6.0.9': dependencies: @@ -14381,44 +14830,46 @@ snapshots: '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 - semver: 7.7.2 + semver: 7.7.3 '@changesets/changelog-git@0.2.1': dependencies: '@changesets/types': 6.1.0 - '@changesets/cli@2.29.5': + '@changesets/cli@2.29.8(@types/node@24.10.1)': dependencies: - '@changesets/apply-release-plan': 7.0.12 + '@changesets/apply-release-plan': 7.0.14 '@changesets/assemble-release-plan': 6.0.9 '@changesets/changelog-git': 0.2.1 - '@changesets/config': 3.1.1 + '@changesets/config': 3.1.2 '@changesets/errors': 0.2.0 '@changesets/get-dependents-graph': 2.1.3 - '@changesets/get-release-plan': 4.0.13 + '@changesets/get-release-plan': 4.0.14 '@changesets/git': 3.0.4 '@changesets/logger': 0.1.1 '@changesets/pre': 2.0.2 - '@changesets/read': 0.6.5 + '@changesets/read': 0.6.6 '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@changesets/write': 0.4.0 + '@inquirer/external-editor': 1.0.3(@types/node@24.10.1) '@manypkg/get-packages': 1.1.3 ansi-colors: 4.1.3 ci-info: 3.9.0 enquirer: 2.4.1 - external-editor: 3.1.0 fs-extra: 7.0.1 mri: 1.2.0 p-limit: 2.3.0 package-manager-detector: 0.2.11 picocolors: 1.1.1 resolve-from: 5.0.0 - semver: 7.7.2 + semver: 7.7.3 spawndamnit: 3.0.1 term-size: 2.2.1 + transitivePeerDependencies: + - '@types/node' - '@changesets/config@3.1.1': + '@changesets/config@3.1.2': dependencies: '@changesets/errors': 0.2.0 '@changesets/get-dependents-graph': 2.1.3 @@ -14437,14 +14888,14 @@ snapshots: '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 picocolors: 1.1.1 - semver: 7.7.2 + semver: 7.7.3 - '@changesets/get-release-plan@4.0.13': + '@changesets/get-release-plan@4.0.14': dependencies: '@changesets/assemble-release-plan': 6.0.9 - '@changesets/config': 3.1.1 + '@changesets/config': 3.1.2 '@changesets/pre': 2.0.2 - '@changesets/read': 0.6.5 + '@changesets/read': 0.6.6 '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 @@ -14462,10 +14913,10 @@ snapshots: dependencies: picocolors: 1.1.1 - '@changesets/parse@0.4.1': + '@changesets/parse@0.4.2': dependencies: '@changesets/types': 6.1.0 - js-yaml: 3.14.1 + js-yaml: 4.1.1 '@changesets/pre@2.0.2': dependencies: @@ -14474,11 +14925,11 @@ snapshots: '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 - '@changesets/read@0.6.5': + '@changesets/read@0.6.6': dependencies: '@changesets/git': 3.0.4 '@changesets/logger': 0.1.1 - '@changesets/parse': 0.4.1 + '@changesets/parse': 0.4.2 '@changesets/types': 6.1.0 fs-extra: 7.0.1 p-filter: 2.1.0 @@ -14497,7 +14948,7 @@ snapshots: dependencies: '@changesets/types': 6.1.0 fs-extra: 7.0.1 - human-id: 4.1.1 + human-id: 4.1.3 prettier: 2.8.8 '@cliqz/adblocker-content@1.34.0': @@ -14506,11 +14957,11 @@ snapshots: '@cliqz/adblocker-extended-selectors@1.34.0': {} - '@cliqz/adblocker-puppeteer@1.23.8(puppeteer@24.15.0(typescript@4.9.5))': + '@cliqz/adblocker-puppeteer@1.23.8(puppeteer@24.31.0(typescript@4.9.5))': dependencies: '@cliqz/adblocker': 1.34.0 '@cliqz/adblocker-content': 1.34.0 - puppeteer: 24.15.0(typescript@4.9.5) + puppeteer: 24.31.0(typescript@4.9.5) tldts-experimental: 5.7.112 '@cliqz/adblocker@1.34.0': @@ -14521,7 +14972,7 @@ snapshots: '@remusao/small': 1.3.0 '@remusao/smaz': 1.10.0 '@types/chrome': 0.0.278 - '@types/firefox-webext-browser': 120.0.4 + '@types/firefox-webext-browser': 120.0.5 tldts-experimental: 6.1.86 '@colors/colors@1.5.0': @@ -14533,16 +14984,16 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@csstools/color-helpers@5.0.2': {} + '@csstools/color-helpers@5.1.0': {} '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-color-parser@3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/color-helpers': 5.0.2 + '@csstools/color-helpers': 5.1.0 '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 @@ -14551,16 +15002,22 @@ snapshots: dependencies: '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-syntax-patches-for-csstree@1.0.20': {} + '@csstools/css-tokenizer@3.0.4': {} - '@dabh/diagnostics@2.0.3': + '@dabh/diagnostics@2.0.8': dependencies: - colorspace: 1.1.4 + '@so-ric/colorspace': 1.1.6 enabled: 2.0.0 kuler: 2.0.0 '@drizzle-team/brocli@0.10.2': {} + '@elysiajs/trpc@1.1.0(elysia@1.4.16(@sinclair/typebox@0.34.41)(exact-mirror@0.2.5(@sinclair/typebox@0.34.41))(file-type@16.5.4)(openapi-types@12.1.3)(typescript@5.9.3))': + dependencies: + elysia: 1.4.16(@sinclair/typebox@0.34.41)(exact-mirror@0.2.5(@sinclair/typebox@0.34.41))(file-type@16.5.4)(openapi-types@12.1.3)(typescript@5.9.3) + '@esbuild-kit/core-utils@3.3.2': dependencies: esbuild: 0.18.20 @@ -14569,12 +15026,15 @@ snapshots: '@esbuild-kit/esm-loader@2.6.5': dependencies: '@esbuild-kit/core-utils': 3.3.2 - get-tsconfig: 4.10.1 + get-tsconfig: 4.13.0 '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/aix-ppc64@0.25.8': + '@esbuild/aix-ppc64@0.25.12': + optional: true + + '@esbuild/aix-ppc64@0.27.0': optional: true '@esbuild/android-arm64@0.18.20': @@ -14583,7 +15043,10 @@ snapshots: '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm64@0.25.8': + '@esbuild/android-arm64@0.25.12': + optional: true + + '@esbuild/android-arm64@0.27.0': optional: true '@esbuild/android-arm@0.18.20': @@ -14592,7 +15055,10 @@ snapshots: '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-arm@0.25.8': + '@esbuild/android-arm@0.25.12': + optional: true + + '@esbuild/android-arm@0.27.0': optional: true '@esbuild/android-x64@0.18.20': @@ -14601,7 +15067,10 @@ snapshots: '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/android-x64@0.25.8': + '@esbuild/android-x64@0.25.12': + optional: true + + '@esbuild/android-x64@0.27.0': optional: true '@esbuild/darwin-arm64@0.18.20': @@ -14610,7 +15079,10 @@ snapshots: '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.25.8': + '@esbuild/darwin-arm64@0.25.12': + optional: true + + '@esbuild/darwin-arm64@0.27.0': optional: true '@esbuild/darwin-x64@0.18.20': @@ -14619,7 +15091,10 @@ snapshots: '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/darwin-x64@0.25.8': + '@esbuild/darwin-x64@0.25.12': + optional: true + + '@esbuild/darwin-x64@0.27.0': optional: true '@esbuild/freebsd-arm64@0.18.20': @@ -14628,7 +15103,10 @@ snapshots: '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.25.8': + '@esbuild/freebsd-arm64@0.25.12': + optional: true + + '@esbuild/freebsd-arm64@0.27.0': optional: true '@esbuild/freebsd-x64@0.18.20': @@ -14637,7 +15115,10 @@ snapshots: '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.25.8': + '@esbuild/freebsd-x64@0.25.12': + optional: true + + '@esbuild/freebsd-x64@0.27.0': optional: true '@esbuild/linux-arm64@0.18.20': @@ -14646,7 +15127,10 @@ snapshots: '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm64@0.25.8': + '@esbuild/linux-arm64@0.25.12': + optional: true + + '@esbuild/linux-arm64@0.27.0': optional: true '@esbuild/linux-arm@0.18.20': @@ -14655,7 +15139,10 @@ snapshots: '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-arm@0.25.8': + '@esbuild/linux-arm@0.25.12': + optional: true + + '@esbuild/linux-arm@0.27.0': optional: true '@esbuild/linux-ia32@0.18.20': @@ -14664,7 +15151,10 @@ snapshots: '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-ia32@0.25.8': + '@esbuild/linux-ia32@0.25.12': + optional: true + + '@esbuild/linux-ia32@0.27.0': optional: true '@esbuild/linux-loong64@0.18.20': @@ -14673,7 +15163,10 @@ snapshots: '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-loong64@0.25.8': + '@esbuild/linux-loong64@0.25.12': + optional: true + + '@esbuild/linux-loong64@0.27.0': optional: true '@esbuild/linux-mips64el@0.18.20': @@ -14682,7 +15175,10 @@ snapshots: '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-mips64el@0.25.8': + '@esbuild/linux-mips64el@0.25.12': + optional: true + + '@esbuild/linux-mips64el@0.27.0': optional: true '@esbuild/linux-ppc64@0.18.20': @@ -14691,7 +15187,10 @@ snapshots: '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-ppc64@0.25.8': + '@esbuild/linux-ppc64@0.25.12': + optional: true + + '@esbuild/linux-ppc64@0.27.0': optional: true '@esbuild/linux-riscv64@0.18.20': @@ -14700,7 +15199,10 @@ snapshots: '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.25.8': + '@esbuild/linux-riscv64@0.25.12': + optional: true + + '@esbuild/linux-riscv64@0.27.0': optional: true '@esbuild/linux-s390x@0.18.20': @@ -14709,7 +15211,10 @@ snapshots: '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-s390x@0.25.8': + '@esbuild/linux-s390x@0.25.12': + optional: true + + '@esbuild/linux-s390x@0.27.0': optional: true '@esbuild/linux-x64@0.18.20': @@ -14718,10 +15223,16 @@ snapshots: '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/linux-x64@0.25.8': + '@esbuild/linux-x64@0.25.12': + optional: true + + '@esbuild/linux-x64@0.27.0': + optional: true + + '@esbuild/netbsd-arm64@0.25.12': optional: true - '@esbuild/netbsd-arm64@0.25.8': + '@esbuild/netbsd-arm64@0.27.0': optional: true '@esbuild/netbsd-x64@0.18.20': @@ -14730,10 +15241,16 @@ snapshots: '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.25.8': + '@esbuild/netbsd-x64@0.25.12': + optional: true + + '@esbuild/netbsd-x64@0.27.0': + optional: true + + '@esbuild/openbsd-arm64@0.25.12': optional: true - '@esbuild/openbsd-arm64@0.25.8': + '@esbuild/openbsd-arm64@0.27.0': optional: true '@esbuild/openbsd-x64@0.18.20': @@ -14742,10 +15259,16 @@ snapshots: '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.25.8': + '@esbuild/openbsd-x64@0.25.12': + optional: true + + '@esbuild/openbsd-x64@0.27.0': + optional: true + + '@esbuild/openharmony-arm64@0.25.12': optional: true - '@esbuild/openharmony-arm64@0.25.8': + '@esbuild/openharmony-arm64@0.27.0': optional: true '@esbuild/sunos-x64@0.18.20': @@ -14754,7 +15277,10 @@ snapshots: '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.25.8': + '@esbuild/sunos-x64@0.25.12': + optional: true + + '@esbuild/sunos-x64@0.27.0': optional: true '@esbuild/win32-arm64@0.18.20': @@ -14763,7 +15289,10 @@ snapshots: '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-arm64@0.25.8': + '@esbuild/win32-arm64@0.25.12': + optional: true + + '@esbuild/win32-arm64@0.27.0': optional: true '@esbuild/win32-ia32@0.18.20': @@ -14772,7 +15301,10 @@ snapshots: '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-ia32@0.25.8': + '@esbuild/win32-ia32@0.25.12': + optional: true + + '@esbuild/win32-ia32@0.27.0': optional: true '@esbuild/win32-x64@0.18.20': @@ -14781,7 +15313,10 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@esbuild/win32-x64@0.25.8': + '@esbuild/win32-x64@0.25.12': + optional: true + + '@esbuild/win32-x64@0.27.0': optional: true '@fastify/busboy@1.2.1': @@ -14851,7 +15386,113 @@ snapshots: '@goatlab/dates@0.6.7': dependencies: - dayjs: 1.11.13 + dayjs: 1.11.19 + + '@goatlab/fluent@0.9.17(@types/express@5.0.5)(@types/node@17.0.45)(better-sqlite3@12.5.0)(encoding@0.1.13)(ioredis@5.8.2)(mongodb@6.21.0(@aws-sdk/credential-providers@3.940.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.7))(mysql2@3.15.3)(pg@8.16.3)(redis@5.10.0)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5))(typescript@4.9.5)(winston@3.18.3)(zod-openapi@4.2.4(zod@4.1.13))': + dependencies: + '@goatlab/js-utils': 0.10.2 + '@goatlab/node-backend': 1.1.10(@types/express@5.0.5)(@types/node@17.0.45)(encoding@0.1.13)(typescript@4.9.5)(winston@3.18.3)(zod-openapi@4.2.4(zod@4.1.13)) + '@loopback/metadata': 8.0.6 + bson: 6.10.4 + graphql: 16.12.0 + openapi3-ts: 4.5.0 + reflect-metadata: 0.2.2 + typeorm: 0.3.27(better-sqlite3@12.5.0)(ioredis@5.8.2)(mongodb@6.21.0(@aws-sdk/credential-providers@3.940.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.7))(mysql2@3.15.3)(pg@8.16.3)(redis@5.10.0)(reflect-metadata@0.2.2)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5)) + zod: 4.1.13 + transitivePeerDependencies: + - '@google-cloud/spanner' + - '@sap/hana-client' + - '@types/express' + - '@types/node' + - babel-plugin-macros + - better-sqlite3 + - encoding + - ioredis + - mongodb + - mssql + - mysql2 + - oracledb + - pg + - pg-native + - pg-query-stream + - redis + - sql.js + - sqlite3 + - supports-color + - ts-node + - typeorm-aurora-data-api-driver + - typescript + - winston + - zod-openapi + + '@goatlab/js-utils@0.10.2': + dependencies: + '@lukeed/uuid': 2.0.1 + nanoid: 3.3.11 + typed-path: 2.2.3 + + '@goatlab/node-backend@1.1.10(@types/express@5.0.5)(@types/node@17.0.45)(encoding@0.1.13)(typescript@4.9.5)(winston@3.18.3)(zod-openapi@4.2.4(zod@4.1.13))': + dependencies: + '@goatlab/js-utils': 0.10.2 + '@goatlab/node-utils': 0.10.4 + '@google-cloud/logging-winston': 6.0.1(encoding@0.1.13)(winston@3.18.3) + '@keyv/redis': 3.0.1 + '@sentry/node': 9.47.1 + '@sentry/profiling-node': 9.47.1 + '@trpc/server': 11.7.2(typescript@4.9.5) + '@types/compression': 1.8.1 + '@types/connect-timeout': 1.9.0 + '@types/express-rate-limit': 6.0.2(express@5.1.0) + '@types/express-session': 1.18.2 + '@types/response-time': 2.3.9 + compression: 1.8.1 + connect-timeout: 1.9.1 + cors: 2.8.5 + ejs: 3.1.10 + express: 5.1.0 + express-rate-limit: 8.2.1(express@5.1.0) + express-session: 1.18.2 + geoip-lite: 1.4.10 + helmet: 8.1.0 + keyv: 4.5.4 + kleur: 4.1.5 + mjml: 4.17.1(encoding@0.1.13) + node-mocks-http: 1.17.2(@types/express@5.0.5)(@types/node@17.0.45) + passport-jwt: 4.0.1 + public-ip: 7.0.1 + response-time: 2.3.4 + swagger-ui-express: 5.0.1(express@5.1.0) + tiny-lru: 11.4.5 + trpc-to-openapi: 2.4.0(@trpc/server@11.7.2(typescript@4.9.5))(zod-openapi@4.2.4(zod@4.1.13))(zod@4.1.13) + ua-parser-js: 2.0.6 + undici: 7.16.0 + zod: 4.1.13 + transitivePeerDependencies: + - '@types/express' + - '@types/node' + - encoding + - supports-color + - typescript + - winston + - zod-openapi + + '@goatlab/node-utils@0.10.4': + dependencies: + '@goatlab/js-utils': 0.10.2 + '@goatlab/tsconfig': 0.1.0 + bcrypt: 6.0.0 + bson: 6.10.4 + jsonwebtoken: 9.0.2 + kleur: 4.1.5 + net: 1.0.2 + path: 0.12.7 + portfinder: 1.0.38 + through2-concurrent: 2.0.0 + winston: 3.18.3 + transitivePeerDependencies: + - supports-color + + '@goatlab/tsconfig@0.1.0': {} '@google-cloud/common@0.17.0(encoding@0.1.13)': dependencies: @@ -14880,7 +15521,7 @@ snapshots: '@google-cloud/common@5.0.2(encoding@0.1.13)': dependencies: '@google-cloud/projectify': 4.0.0 - '@google-cloud/promisify': 4.1.0 + '@google-cloud/promisify': 4.0.0 arrify: 2.0.1 duplexify: 4.1.3 extend: 3.0.2 @@ -14897,28 +15538,28 @@ snapshots: fast-deep-equal: 3.1.3 functional-red-black-tree: 1.0.1 google-gax: 3.6.1(encoding@0.1.13) - protobufjs: 7.5.3 + protobufjs: 7.5.4 transitivePeerDependencies: - encoding - supports-color - '@google-cloud/logging-winston@6.0.1(encoding@0.1.13)(winston@3.17.0)': + '@google-cloud/logging-winston@6.0.1(encoding@0.1.13)(winston@3.18.3)': dependencies: - '@google-cloud/logging': 11.2.0(encoding@0.1.13) + '@google-cloud/logging': 11.2.1(encoding@0.1.13) google-auth-library: 9.15.1(encoding@0.1.13) lodash.mapvalues: 4.6.0 - winston: 3.17.0 + winston: 3.18.3 winston-transport: 4.9.0 transitivePeerDependencies: - encoding - supports-color - '@google-cloud/logging@11.2.0(encoding@0.1.13)': + '@google-cloud/logging@11.2.1(encoding@0.1.13)': dependencies: '@google-cloud/common': 5.0.2(encoding@0.1.13) '@google-cloud/paginator': 5.0.2 '@google-cloud/projectify': 4.0.0 - '@google-cloud/promisify': 4.1.0 + '@google-cloud/promisify': 4.0.0 '@opentelemetry/api': 1.9.0 arrify: 2.0.1 dot-prop: 6.0.1 @@ -14954,7 +15595,7 @@ snapshots: '@google-cloud/promisify@3.0.1': optional: true - '@google-cloud/promisify@4.1.0': {} + '@google-cloud/promisify@4.0.0': {} '@google-cloud/storage@1.7.0(encoding@0.1.13)': dependencies: @@ -15008,51 +15649,76 @@ snapshots: - supports-color optional: true - '@google-cloud/tasks@6.2.0': + '@google-cloud/tasks@6.2.1': dependencies: - google-gax: 5.0.1 + google-gax: 5.0.6 transitivePeerDependencies: - supports-color - '@grpc/grpc-js@1.13.4': + '@grpc/grpc-js@1.14.1': dependencies: - '@grpc/proto-loader': 0.7.15 + '@grpc/proto-loader': 0.8.0 '@js-sdsl/ordered-map': 4.4.2 '@grpc/grpc-js@1.8.22': dependencies: '@grpc/proto-loader': 0.7.15 - '@types/node': 18.19.120 + '@types/node': 22.19.1 '@grpc/proto-loader@0.7.15': dependencies: lodash.camelcase: 4.3.0 long: 5.3.2 - protobufjs: 7.5.3 + protobufjs: 7.5.4 + yargs: 17.7.2 + + '@grpc/proto-loader@0.8.0': + dependencies: + lodash.camelcase: 4.3.0 + long: 5.3.2 + protobufjs: 7.5.4 yargs: 17.7.2 '@hapi/bourne@3.0.0': {} - '@hatchet-dev/typescript-sdk@1.9.3': + '@hatchet-dev/typescript-sdk@1.10.3': dependencies: - '@bufbuild/protobuf': 2.6.2 + '@bufbuild/protobuf': 2.10.1 '@types/qs': 6.14.0 abort-controller-x: 0.4.3 - axios: 1.11.0 + axios: 1.13.2 long: 5.3.2 - nice-grpc: 2.1.12 + nice-grpc: 2.1.14 nice-grpc-common: 2.0.2 - protobufjs: 7.5.3 + protobufjs: 7.5.4 qs: 6.14.0 - semver: 7.7.2 - yaml: 2.8.0 + semver: 7.7.3 + yaml: 2.8.1 zod: 3.25.76 + optionalDependencies: + prom-client: 15.1.3 transitivePeerDependencies: - debug + '@hono/node-server@1.19.6(hono@4.10.7)': + dependencies: + hono: 4.10.7 + + '@hono/trpc-server@0.3.4(@trpc/server@11.7.2(typescript@5.9.3))(hono@4.10.7)': + dependencies: + '@trpc/server': 11.7.2(typescript@5.9.3) + hono: 4.10.7 + '@iarna/toml@2.2.5': {} - '@ioredis/commands@1.3.0': {} + '@inquirer/external-editor@1.0.3(@types/node@24.10.1)': + dependencies: + chardet: 2.1.1 + iconv-lite: 0.7.0 + optionalDependencies: + '@types/node': 24.10.1 + + '@ioredis/commands@1.4.0': {} '@isaacs/balanced-match@4.0.1': {} @@ -15064,7 +15730,7 @@ snapshots: dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 strip-ansi-cjs: strip-ansi@6.0.1 wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 @@ -15078,37 +15744,35 @@ snapshots: camelcase: 5.3.1 find-up: 4.1.0 get-package-type: 0.1.0 - js-yaml: 3.14.1 + js-yaml: 3.14.2 resolve-from: 5.0.0 '@istanbuljs/schema@0.1.3': {} - '@jclem/logfmt2@2.4.3': {} - '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 18.19.120 + '@types/node': 24.10.1 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(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5))': + '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5))': 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': 24.1.0 + '@types/node': 24.10.1 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@24.1.0)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5)) + jest-config: 29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -15129,21 +15793,21 @@ snapshots: - supports-color - ts-node - '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3))': + '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3))': 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': 24.1.0 + '@types/node': 24.10.1 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@24.1.0)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -15164,21 +15828,21 @@ snapshots: - supports-color - ts-node - '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@24.1.0)(typescript@5.8.3))': + '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.1)(typescript@5.9.3))': 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': 24.1.0 + '@types/node': 24.10.1 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@24.1.0)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@24.1.0)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.1)(typescript@5.9.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -15203,14 +15867,14 @@ snapshots: dependencies: '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.19.120 + '@types/node': 22.19.1 jest-mock: 27.5.1 '@jest/environment@29.7.0': dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.19.120 + '@types/node': 24.10.1 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -15228,7 +15892,7 @@ snapshots: dependencies: '@jest/types': 27.5.1 '@sinonjs/fake-timers': 8.1.0 - '@types/node': 18.19.120 + '@types/node': 22.19.1 jest-message-util: 27.5.1 jest-mock: 27.5.1 jest-util: 27.5.1 @@ -15237,7 +15901,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 18.19.120 + '@types/node': 24.10.1 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -15258,10 +15922,10 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.29 - '@types/node': 18.19.120 + '@jridgewell/trace-mapping': 0.3.31 + '@types/node': 24.10.1 chalk: 4.1.2 - collect-v8-coverage: 1.0.2 + collect-v8-coverage: 1.0.3 exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.11 @@ -15269,7 +15933,7 @@ snapshots: istanbul-lib-instrument: 6.0.3 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 + istanbul-reports: 3.2.0 jest-message-util: 29.7.0 jest-util: 29.7.0 jest-worker: 29.7.0 @@ -15282,11 +15946,11 @@ snapshots: '@jest/schemas@29.6.3': dependencies: - '@sinclair/typebox': 0.27.8 + '@sinclair/typebox': 0.34.41 '@jest/source-map@29.6.3': dependencies: - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/trace-mapping': 0.3.31 callsites: 3.1.0 graceful-fs: 4.2.11 @@ -15295,7 +15959,7 @@ snapshots: '@jest/console': 29.7.0 '@jest/types': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2 + collect-v8-coverage: 1.0.3 '@jest/test-sequencer@29.7.0': dependencies: @@ -15306,9 +15970,9 @@ snapshots: '@jest/transform@29.7.0': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/trace-mapping': 0.3.31 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 @@ -15328,8 +15992,8 @@ snapshots: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 18.19.120 - '@types/yargs': 16.0.9 + '@types/node': 22.19.1 + '@types/yargs': 16.0.11 chalk: 4.1.2 '@jest/types@29.6.3': @@ -15337,8 +16001,8 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 24.1.0 - '@types/yargs': 17.0.33 + '@types/node': 24.10.1 + '@types/yargs': 17.0.35 chalk: 4.1.2 '@jimp/core@1.6.0': @@ -15530,24 +16194,29 @@ snapshots: '@jimp/types': 1.6.0 tinycolor2: 1.6.0 - '@jridgewell/gen-mapping@0.3.12': + '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/sourcemap-codec@1.5.4': {} + '@jridgewell/sourcemap-codec@1.5.5': {} - '@jridgewell/trace-mapping@0.3.29': + '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.5 '@js-sdsl/ordered-map@4.4.2': {} @@ -15557,81 +16226,81 @@ snapshots: '@keyv/redis@3.0.1': dependencies: - ioredis: 5.6.1 + ioredis: 5.8.2 transitivePeerDependencies: - supports-color - '@keyvhq/core@2.1.7': + '@keyvhq/core@2.1.11': dependencies: json-buffer: 3.0.1 - '@keyvhq/memoize@2.1.9': + '@keyvhq/memoize@2.1.11': dependencies: - '@keyvhq/core': 2.1.7 + '@keyvhq/core': 2.1.11 mimic-fn: 3.0.0 null-prototype-object: 1.0.0 - '@kikobeats/time-span@1.0.6': {} + '@kikobeats/time-span@1.0.11': {} - '@langchain/core@0.3.66(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))': + '@langchain/core@0.3.79(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))': dependencies: '@cfworker/json-schema': 4.1.1 ansi-styles: 5.2.0 camelcase: 6.3.0 decamelize: 1.2.0 - js-tiktoken: 1.0.20 - langsmith: 0.3.53(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)) + js-tiktoken: 1.0.21 + langsmith: 0.3.82(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)) mustache: 4.2.0 p-queue: 6.6.2 p-retry: 4.6.2 uuid: 10.0.0 zod: 3.25.76 - zod-to-json-schema: 3.24.6(zod@3.25.76) + zod-to-json-schema: 3.25.0(zod@3.25.76) transitivePeerDependencies: - '@opentelemetry/api' - '@opentelemetry/exporter-trace-otlp-proto' - '@opentelemetry/sdk-trace-base' - openai - '@langchain/langgraph-checkpoint-sqlite@0.1.5(@langchain/core@0.3.66(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)))(@langchain/langgraph-checkpoint@0.0.18(@langchain/core@0.3.66(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))))': + '@langchain/langgraph-checkpoint-sqlite@0.1.5(@langchain/core@0.3.79(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)))(@langchain/langgraph-checkpoint@0.0.18(@langchain/core@0.3.79(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))))': dependencies: - '@langchain/core': 0.3.66(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)) - '@langchain/langgraph-checkpoint': 0.0.18(@langchain/core@0.3.66(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))) + '@langchain/core': 0.3.79(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)) + '@langchain/langgraph-checkpoint': 0.0.18(@langchain/core@0.3.79(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))) better-sqlite3: 11.10.0 - '@langchain/langgraph-checkpoint@0.0.18(@langchain/core@0.3.66(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)))': + '@langchain/langgraph-checkpoint@0.0.18(@langchain/core@0.3.79(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)))': dependencies: - '@langchain/core': 0.3.66(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)) + '@langchain/core': 0.3.79(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)) uuid: 10.0.0 - '@langchain/langgraph-sdk@0.0.102(@langchain/core@0.3.66(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)))(react@19.1.1)': + '@langchain/langgraph-sdk@0.0.112(@langchain/core@0.3.79(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)))(react@19.2.0)': dependencies: '@types/json-schema': 7.0.15 p-queue: 6.6.2 p-retry: 4.6.2 uuid: 9.0.1 optionalDependencies: - '@langchain/core': 0.3.66(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)) - react: 19.1.1 + '@langchain/core': 0.3.79(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)) + react: 19.2.0 - '@langchain/langgraph@0.3.12(@langchain/core@0.3.66(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)))(react@19.1.1)(zod-to-json-schema@3.24.6(zod@4.0.10))': + '@langchain/langgraph@0.3.12(@langchain/core@0.3.79(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)))(react@19.2.0)(zod-to-json-schema@3.25.0(zod@4.1.13))': dependencies: - '@langchain/core': 0.3.66(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)) - '@langchain/langgraph-checkpoint': 0.0.18(@langchain/core@0.3.66(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))) - '@langchain/langgraph-sdk': 0.0.102(@langchain/core@0.3.66(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)))(react@19.1.1) + '@langchain/core': 0.3.79(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)) + '@langchain/langgraph-checkpoint': 0.0.18(@langchain/core@0.3.79(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))) + '@langchain/langgraph-sdk': 0.0.112(@langchain/core@0.3.79(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)))(react@19.2.0) uuid: 10.0.0 zod: 3.25.76 optionalDependencies: - zod-to-json-schema: 3.24.6(zod@4.0.10) + zod-to-json-schema: 3.25.0(zod@4.1.13) transitivePeerDependencies: - react - react-dom '@leichtgewicht/ip-codec@2.0.5': {} - '@loopback/metadata@8.0.2': + '@loopback/metadata@8.0.6': dependencies: - debug: 4.4.1 + debug: 4.4.3 lodash: 4.17.21 reflect-metadata: 0.2.2 tslib: 2.8.1 @@ -15646,33 +16315,33 @@ snapshots: '@manypkg/find-root@1.1.0': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 '@manypkg/get-packages@1.1.3': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@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 - '@metascraper/helpers@5.49.1': + '@metascraper/helpers@5.49.2': dependencies: audio-extensions: 0.0.0 - chrono-node: 2.8.3 + chrono-node: 2.8.4 condense-whitespace: 2.0.0 - data-uri-utils: 1.0.8 - debug-logfmt: 1.2.3 + data-uri-utils: 1.0.9 + debug-logfmt: 1.4.7 entities: 6.0.1 file-extension: 4.0.5 has-values: 2.0.1 image-extensions: 1.1.0 is-relative-url: 3.0.0 - is-uri: 1.2.8 + is-uri: 1.2.12 iso-639-3: 2.2.0 isostring: 0.0.1 jsdom: 26.1.0 @@ -15681,10 +16350,42 @@ snapshots: microsoft-capitalize: 1.0.5 mime: 3.0.0 normalize-url: 6.1.0 - re2: 1.22.1 + re2: 1.22.3 + smartquotes: 2.3.2 + tldts: 7.0.19 + url-regex-safe: 4.0.0(re2@1.22.3) + video-extensions: 1.2.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + '@metascraper/helpers@5.49.5': + dependencies: + audio-extensions: 0.0.0 + chrono-node: 2.9.0 + condense-whitespace: 2.0.0 + data-uri-utils: 1.0.9 + debug-logfmt: 1.4.7 + entities: 6.0.1 + file-extension: 4.0.5 + has-values: 2.0.1 + image-extensions: 1.1.0 + is-relative-url: 3.0.0 + is-uri: 1.2.12 + iso-639-3: 2.2.0 + isostring: 0.0.1 + jsdom: 27.0.1 + lodash: 4.17.21 + memoize-one: 6.0.0 + microsoft-capitalize: 1.0.5 + mime: 3.0.0 + normalize-url: 6.1.0 + re2: 1.22.3 smartquotes: 2.3.2 - tldts: 7.0.10 - url-regex-safe: 4.0.0(re2@1.22.1) + tldts: 7.0.19 + url-regex-safe: 4.0.0(re2@1.22.3) video-extensions: 1.2.0 transitivePeerDependencies: - bufferutil @@ -15692,24 +16393,24 @@ snapshots: - supports-color - utf-8-validate - '@mikro-orm/core@6.4.16': + '@mikro-orm/core@6.6.1': dependencies: dataloader: 2.2.3 - dotenv: 16.5.0 + dotenv: 17.2.3 esprima: 4.0.1 - fs-extra: 11.3.0 + fs-extra: 11.3.2 globby: 11.1.0 - mikro-orm: 6.4.16 + mikro-orm: 6.6.1 reflect-metadata: 0.2.2 - '@mikro-orm/knex@6.4.16(@mikro-orm/core@6.4.16)(better-sqlite3@11.10.0)(mysql2@3.14.1)(pg@8.16.3)(sqlite3@5.1.7)': + '@mikro-orm/knex@6.6.1(@mikro-orm/core@6.6.1)(better-sqlite3@12.5.0)(mysql2@3.15.3)(pg@8.16.3)(sqlite3@5.1.7)': dependencies: - '@mikro-orm/core': 6.4.16 - fs-extra: 11.3.0 - knex: 3.1.0(better-sqlite3@11.10.0)(mysql2@3.14.1)(pg@8.16.3)(sqlite3@5.1.7) + '@mikro-orm/core': 6.6.1 + fs-extra: 11.3.2 + knex: 3.1.0(better-sqlite3@12.5.0)(mysql2@3.15.3)(pg@8.16.3)(sqlite3@5.1.7) sqlstring: 2.3.3 optionalDependencies: - better-sqlite3: 11.10.0 + better-sqlite3: 12.5.0 transitivePeerDependencies: - mysql - mysql2 @@ -15719,11 +16420,11 @@ snapshots: - supports-color - tedious - '@mikro-orm/mysql@6.4.16(@mikro-orm/core@6.4.16)(better-sqlite3@11.10.0)(pg@8.16.3)(sqlite3@5.1.7)': + '@mikro-orm/mysql@6.6.1(@mikro-orm/core@6.6.1)(better-sqlite3@12.5.0)(pg@8.16.3)(sqlite3@5.1.7)': dependencies: - '@mikro-orm/core': 6.4.16 - '@mikro-orm/knex': 6.4.16(@mikro-orm/core@6.4.16)(better-sqlite3@11.10.0)(mysql2@3.14.1)(pg@8.16.3)(sqlite3@5.1.7) - mysql2: 3.14.1 + '@mikro-orm/core': 6.6.1 + '@mikro-orm/knex': 6.6.1(@mikro-orm/core@6.6.1)(better-sqlite3@12.5.0)(mysql2@3.15.3)(pg@8.16.3)(sqlite3@5.1.7) + mysql2: 3.15.3 transitivePeerDependencies: - better-sqlite3 - libsql @@ -15738,10 +16439,10 @@ snapshots: '@modelcontextprotocol/sdk@0.5.0': dependencies: content-type: 1.0.5 - raw-body: 3.0.0 + raw-body: 3.0.2 zod: 3.25.76 - '@mongodb-js/saslprep@1.3.0': + '@mongodb-js/saslprep@1.3.2': dependencies: sparse-bitfield: 3.0.3 @@ -15772,12 +16473,12 @@ snapshots: '@npmcli/fs@1.1.1': dependencies: '@gar/promisify': 1.1.3 - semver: 7.7.2 + semver: 7.7.3 optional: true '@npmcli/fs@4.0.0': dependencies: - semver: 7.7.2 + semver: 7.7.3 '@npmcli/move-file@1.1.2': dependencies: @@ -15961,7 +16662,7 @@ snapshots: '@opentelemetry/exporter-logs-otlp-grpc@0.53.0(@opentelemetry/api@1.9.0)': dependencies: - '@grpc/grpc-js': 1.13.4 + '@grpc/grpc-js': 1.14.1 '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0) '@opentelemetry/otlp-grpc-exporter-base': 0.53.0(@opentelemetry/api@1.9.0) @@ -15990,7 +16691,7 @@ snapshots: '@opentelemetry/exporter-trace-otlp-grpc@0.52.1(@opentelemetry/api@1.9.0)': dependencies: - '@grpc/grpc-js': 1.13.4 + '@grpc/grpc-js': 1.14.1 '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) '@opentelemetry/otlp-grpc-exporter-base': 0.52.1(@opentelemetry/api@1.9.0) @@ -16000,7 +16701,7 @@ snapshots: '@opentelemetry/exporter-trace-otlp-grpc@0.53.0(@opentelemetry/api@1.9.0)': dependencies: - '@grpc/grpc-js': 1.13.4 + '@grpc/grpc-js': 1.14.1 '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0) '@opentelemetry/otlp-grpc-exporter-base': 0.53.0(@opentelemetry/api@1.9.0) @@ -16065,7 +16766,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16074,7 +16775,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16084,7 +16785,7 @@ snapshots: '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) '@opentelemetry/propagator-aws-xray': 1.26.2(@opentelemetry/api@1.9.0) '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 '@types/aws-lambda': 8.10.143 transitivePeerDependencies: - supports-color @@ -16095,7 +16796,7 @@ snapshots: '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) '@opentelemetry/propagation-utils': 0.30.16(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16112,7 +16813,7 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16121,7 +16822,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 '@types/connect': 3.4.36 transitivePeerDependencies: - supports-color @@ -16131,7 +16832,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 '@types/connect': 3.4.38 transitivePeerDependencies: - supports-color @@ -16140,7 +16841,7 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16162,7 +16863,7 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) - semver: 7.7.2 + semver: 7.7.3 transitivePeerDependencies: - supports-color @@ -16171,7 +16872,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16180,7 +16881,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16189,7 +16890,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16250,7 +16951,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16259,7 +16960,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16269,7 +16970,7 @@ snapshots: '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.27.0 - semver: 7.7.2 + semver: 7.7.3 transitivePeerDependencies: - supports-color @@ -16280,7 +16981,7 @@ snapshots: '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 forwarded-parse: 2.1.2 - semver: 7.7.2 + semver: 7.7.3 transitivePeerDependencies: - supports-color @@ -16289,7 +16990,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) '@opentelemetry/redis-common': 0.36.2 - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16298,7 +16999,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) '@opentelemetry/redis-common': 0.36.2 - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16306,7 +17007,7 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16314,7 +17015,7 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16322,7 +17023,7 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16330,7 +17031,7 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16339,7 +17040,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16348,7 +17049,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16370,7 +17071,7 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 '@types/memcached': 2.2.10 transitivePeerDependencies: - supports-color @@ -16380,7 +17081,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-metrics': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16388,7 +17089,7 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16397,7 +17098,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16406,7 +17107,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16414,7 +17115,7 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color @@ -16423,7 +17124,7 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color @@ -16432,7 +17133,7 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 '@types/mysql': 2.15.26 transitivePeerDependencies: - supports-color @@ -16441,7 +17142,7 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 '@types/mysql': 2.15.26 transitivePeerDependencies: - supports-color @@ -16450,7 +17151,7 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16458,7 +17159,7 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16479,7 +17180,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) '@types/pg': 8.6.1 '@types/pg-pool': 2.0.6 @@ -16500,7 +17201,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) '@opentelemetry/redis-common': 0.36.2 - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16509,7 +17210,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) '@opentelemetry/redis-common': 0.36.2 - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16518,7 +17219,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) '@opentelemetry/redis-common': 0.36.2 - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16527,7 +17228,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16535,7 +17236,7 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16543,7 +17244,7 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -16551,7 +17252,7 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 '@types/tedious': 4.0.14 transitivePeerDependencies: - supports-color @@ -16560,7 +17261,7 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 '@types/tedious': 4.0.14 transitivePeerDependencies: - supports-color @@ -16594,9 +17295,9 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/api-logs': 0.52.1 '@types/shimmer': 1.2.0 - import-in-the-middle: 1.14.2 + import-in-the-middle: 1.15.0 require-in-the-middle: 7.5.2 - semver: 7.7.2 + semver: 7.7.3 shimmer: 1.2.1 transitivePeerDependencies: - supports-color @@ -16606,9 +17307,9 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/api-logs': 0.53.0 '@types/shimmer': 1.2.0 - import-in-the-middle: 1.14.2 + import-in-the-middle: 1.15.0 require-in-the-middle: 7.5.2 - semver: 7.7.2 + semver: 7.7.3 shimmer: 1.2.1 transitivePeerDependencies: - supports-color @@ -16618,9 +17319,9 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/api-logs': 0.57.2 '@types/shimmer': 1.2.0 - import-in-the-middle: 1.14.2 + import-in-the-middle: 1.15.0 require-in-the-middle: 7.5.2 - semver: 7.7.2 + semver: 7.7.3 shimmer: 1.2.1 transitivePeerDependencies: - supports-color @@ -16639,7 +17340,7 @@ snapshots: '@opentelemetry/otlp-grpc-exporter-base@0.52.1(@opentelemetry/api@1.9.0)': dependencies: - '@grpc/grpc-js': 1.13.4 + '@grpc/grpc-js': 1.14.1 '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) '@opentelemetry/otlp-exporter-base': 0.52.1(@opentelemetry/api@1.9.0) @@ -16647,7 +17348,7 @@ snapshots: '@opentelemetry/otlp-grpc-exporter-base@0.53.0(@opentelemetry/api@1.9.0)': dependencies: - '@grpc/grpc-js': 1.13.4 + '@grpc/grpc-js': 1.14.1 '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0) '@opentelemetry/otlp-exporter-base': 0.53.0(@opentelemetry/api@1.9.0) @@ -16662,7 +17363,7 @@ snapshots: '@opentelemetry/sdk-logs': 0.52.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-metrics': 1.25.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0) - protobufjs: 7.5.3 + protobufjs: 7.5.4 '@opentelemetry/otlp-transformer@0.53.0(@opentelemetry/api@1.9.0)': dependencies: @@ -16673,7 +17374,7 @@ snapshots: '@opentelemetry/sdk-logs': 0.53.0(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-metrics': 1.26.0(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.26.0(@opentelemetry/api@1.9.0) - protobufjs: 7.5.3 + protobufjs: 7.5.4 '@opentelemetry/propagation-utils@0.30.16(@opentelemetry/api@1.9.0)': dependencies: @@ -16710,35 +17411,35 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 '@opentelemetry/resource-detector-aws@1.12.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 '@opentelemetry/resource-detector-azure@0.2.12(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 '@opentelemetry/resource-detector-container@0.4.4(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 '@opentelemetry/resource-detector-gcp@0.29.13(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 gcp-metadata: 6.1.1(encoding@0.1.13) transitivePeerDependencies: - encoding @@ -16865,7 +17566,7 @@ snapshots: '@opentelemetry/propagator-b3': 1.25.1(@opentelemetry/api@1.9.0) '@opentelemetry/propagator-jaeger': 1.25.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0) - semver: 7.7.2 + semver: 7.7.3 '@opentelemetry/sdk-trace-node@1.26.0(@opentelemetry/api@1.9.0)': dependencies: @@ -16875,7 +17576,7 @@ snapshots: '@opentelemetry/propagator-b3': 1.26.0(@opentelemetry/api@1.9.0) '@opentelemetry/propagator-jaeger': 1.26.0(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.26.0(@opentelemetry/api@1.9.0) - semver: 7.7.2 + semver: 7.7.3 '@opentelemetry/semantic-conventions@1.25.1': {} @@ -16883,17 +17584,19 @@ snapshots: '@opentelemetry/semantic-conventions@1.28.0': {} - '@opentelemetry/semantic-conventions@1.36.0': {} + '@opentelemetry/semantic-conventions@1.38.0': {} '@opentelemetry/sql-common@0.40.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) - '@paralleldrive/cuid2@2.2.2': + '@paralleldrive/cuid2@2.3.1': dependencies: '@noble/hashes': 1.8.0 + '@pinojs/redact@0.4.0': {} + '@pkgjs/parseargs@0.11.0': optional: true @@ -16958,38 +17661,40 @@ snapshots: '@protobufjs/utf8@1.1.0': {} - '@puppeteer/browsers@2.10.6': + '@puppeteer/browsers@2.10.13': dependencies: - debug: 4.4.1 + debug: 4.4.3 extract-zip: 2.0.1 progress: 2.0.3 proxy-agent: 6.5.0 - semver: 7.7.2 - tar-fs: 3.1.0 + semver: 7.7.3 + tar-fs: 3.1.1 yargs: 17.7.2 transitivePeerDependencies: + - bare-abort-controller - bare-buffer + - react-native-b4a - supports-color - '@redis/bloom@5.6.1(@redis/client@5.6.1)': + '@redis/bloom@5.10.0(@redis/client@5.10.0)': dependencies: - '@redis/client': 5.6.1 + '@redis/client': 5.10.0 - '@redis/client@5.6.1': + '@redis/client@5.10.0': dependencies: cluster-key-slot: 1.1.2 - '@redis/json@5.6.1(@redis/client@5.6.1)': + '@redis/json@5.10.0(@redis/client@5.10.0)': dependencies: - '@redis/client': 5.6.1 + '@redis/client': 5.10.0 - '@redis/search@5.6.1(@redis/client@5.6.1)': + '@redis/search@5.10.0(@redis/client@5.10.0)': dependencies: - '@redis/client': 5.6.1 + '@redis/client': 5.10.0 - '@redis/time-series@5.6.1(@redis/client@5.6.1)': + '@redis/time-series@5.10.0(@redis/client@5.10.0)': dependencies: - '@redis/client': 5.6.1 + '@redis/client': 5.10.0 '@remusao/guess-url-type@1.3.0': {} @@ -17008,87 +17713,93 @@ snapshots: '@remusao/trie@1.5.0': {} - '@rollup/pluginutils@5.2.0(rollup@4.46.1)': + '@rollup/pluginutils@5.3.0(rollup@4.53.3)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.46.1 + rollup: 4.53.3 - '@rollup/rollup-android-arm-eabi@4.46.1': + '@rollup/rollup-android-arm-eabi@4.53.3': optional: true - '@rollup/rollup-android-arm64@4.46.1': + '@rollup/rollup-android-arm64@4.53.3': optional: true - '@rollup/rollup-darwin-arm64@4.46.1': + '@rollup/rollup-darwin-arm64@4.53.3': optional: true - '@rollup/rollup-darwin-x64@4.46.1': + '@rollup/rollup-darwin-x64@4.53.3': optional: true - '@rollup/rollup-freebsd-arm64@4.46.1': + '@rollup/rollup-freebsd-arm64@4.53.3': optional: true - '@rollup/rollup-freebsd-x64@4.46.1': + '@rollup/rollup-freebsd-x64@4.53.3': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.46.1': + '@rollup/rollup-linux-arm-gnueabihf@4.53.3': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.46.1': + '@rollup/rollup-linux-arm-musleabihf@4.53.3': optional: true - '@rollup/rollup-linux-arm64-gnu@4.46.1': + '@rollup/rollup-linux-arm64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-arm64-musl@4.46.1': + '@rollup/rollup-linux-arm64-musl@4.53.3': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.46.1': + '@rollup/rollup-linux-loong64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.46.1': + '@rollup/rollup-linux-ppc64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.46.1': + '@rollup/rollup-linux-riscv64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-riscv64-musl@4.46.1': + '@rollup/rollup-linux-riscv64-musl@4.53.3': optional: true - '@rollup/rollup-linux-s390x-gnu@4.46.1': + '@rollup/rollup-linux-s390x-gnu@4.53.3': optional: true - '@rollup/rollup-linux-x64-gnu@4.46.1': + '@rollup/rollup-linux-x64-gnu@4.53.3': optional: true '@rollup/rollup-linux-x64-gnu@4.6.1': optional: true - '@rollup/rollup-linux-x64-musl@4.46.1': + '@rollup/rollup-linux-x64-musl@4.53.3': + optional: true + + '@rollup/rollup-openharmony-arm64@4.53.3': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.53.3': optional: true - '@rollup/rollup-win32-arm64-msvc@4.46.1': + '@rollup/rollup-win32-ia32-msvc@4.53.3': optional: true - '@rollup/rollup-win32-ia32-msvc@4.46.1': + '@rollup/rollup-win32-x64-gnu@4.53.3': optional: true - '@rollup/rollup-win32-x64-msvc@4.46.1': + '@rollup/rollup-win32-x64-msvc@4.53.3': optional: true '@scarf/scarf@1.4.0': {} '@sentry-internal/node-cpu-profiler@2.2.0': dependencies: - detect-libc: 2.0.4 - node-abi: 3.75.0 + detect-libc: 2.1.2 + node-abi: 3.85.0 - '@sentry/core@9.42.0': {} + '@sentry/core@9.47.1': {} - '@sentry/node-core@9.42.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.36.0)': + '@sentry/node-core@9.47.1(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/context-async-hooks': 1.30.1(@opentelemetry/api@1.9.0) @@ -17096,12 +17807,12 @@ snapshots: '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 - '@sentry/core': 9.42.0 - '@sentry/opentelemetry': 9.42.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.36.0) - import-in-the-middle: 1.14.2 + '@opentelemetry/semantic-conventions': 1.38.0 + '@sentry/core': 9.47.1 + '@sentry/opentelemetry': 9.47.1(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0) + import-in-the-middle: 1.15.0 - '@sentry/node@9.42.0': + '@sentry/node@9.47.1': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/context-async-hooks': 1.30.1(@opentelemetry/api@1.9.0) @@ -17131,34 +17842,34 @@ snapshots: '@opentelemetry/instrumentation-undici': 0.10.1(@opentelemetry/api@1.9.0) '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/semantic-conventions': 1.38.0 '@prisma/instrumentation': 6.11.1(@opentelemetry/api@1.9.0) - '@sentry/core': 9.42.0 - '@sentry/node-core': 9.42.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.36.0) - '@sentry/opentelemetry': 9.42.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.36.0) - import-in-the-middle: 1.14.2 + '@sentry/core': 9.47.1 + '@sentry/node-core': 9.47.1(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0) + '@sentry/opentelemetry': 9.47.1(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0) + import-in-the-middle: 1.15.0 minimatch: 9.0.5 transitivePeerDependencies: - supports-color - '@sentry/opentelemetry@9.42.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.36.0)': + '@sentry/opentelemetry@9.47.1(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/context-async-hooks': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 - '@sentry/core': 9.42.0 + '@opentelemetry/semantic-conventions': 1.38.0 + '@sentry/core': 9.47.1 - '@sentry/profiling-node@9.42.0': + '@sentry/profiling-node@9.47.1': dependencies: '@sentry-internal/node-cpu-profiler': 2.2.0 - '@sentry/core': 9.42.0 - '@sentry/node': 9.42.0 + '@sentry/core': 9.47.1 + '@sentry/node': 9.47.1 transitivePeerDependencies: - supports-color - '@sinclair/typebox@0.27.8': {} + '@sinclair/typebox@0.34.41': {} '@sindresorhus/is@0.14.0': {} @@ -17184,63 +17895,65 @@ snapshots: dependencies: '@sinonjs/commons': 1.8.6 - '@smithy/abort-controller@4.0.4': + '@smithy/abort-controller@4.2.5': dependencies: - '@smithy/types': 4.3.1 + '@smithy/types': 4.9.0 tslib: 2.8.1 optional: true - '@smithy/config-resolver@4.1.4': + '@smithy/config-resolver@4.4.3': dependencies: - '@smithy/node-config-provider': 4.1.3 - '@smithy/types': 4.3.1 - '@smithy/util-config-provider': 4.0.0 - '@smithy/util-middleware': 4.0.4 + '@smithy/node-config-provider': 4.3.5 + '@smithy/types': 4.9.0 + '@smithy/util-config-provider': 4.2.0 + '@smithy/util-endpoints': 3.2.5 + '@smithy/util-middleware': 4.2.5 tslib: 2.8.1 optional: true - '@smithy/core@3.7.2': + '@smithy/core@3.18.5': dependencies: - '@smithy/middleware-serde': 4.0.8 - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 - '@smithy/util-base64': 4.0.0 - '@smithy/util-body-length-browser': 4.0.0 - '@smithy/util-middleware': 4.0.4 - '@smithy/util-stream': 4.2.3 - '@smithy/util-utf8': 4.0.0 + '@smithy/middleware-serde': 4.2.6 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-stream': 4.5.6 + '@smithy/util-utf8': 4.2.0 + '@smithy/uuid': 1.1.0 tslib: 2.8.1 optional: true - '@smithy/credential-provider-imds@4.0.6': + '@smithy/credential-provider-imds@4.2.5': dependencies: - '@smithy/node-config-provider': 4.1.3 - '@smithy/property-provider': 4.0.4 - '@smithy/types': 4.3.1 - '@smithy/url-parser': 4.0.4 + '@smithy/node-config-provider': 4.3.5 + '@smithy/property-provider': 4.2.5 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 tslib: 2.8.1 optional: true - '@smithy/fetch-http-handler@5.1.0': + '@smithy/fetch-http-handler@5.3.6': dependencies: - '@smithy/protocol-http': 5.1.2 - '@smithy/querystring-builder': 4.0.4 - '@smithy/types': 4.3.1 - '@smithy/util-base64': 4.0.0 + '@smithy/protocol-http': 5.3.5 + '@smithy/querystring-builder': 4.2.5 + '@smithy/types': 4.9.0 + '@smithy/util-base64': 4.3.0 tslib: 2.8.1 optional: true - '@smithy/hash-node@4.0.4': + '@smithy/hash-node@4.2.5': dependencies: - '@smithy/types': 4.3.1 - '@smithy/util-buffer-from': 4.0.0 - '@smithy/util-utf8': 4.0.0 + '@smithy/types': 4.9.0 + '@smithy/util-buffer-from': 4.2.0 + '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 optional: true - '@smithy/invalid-dependency@4.0.4': + '@smithy/invalid-dependency@4.2.5': dependencies: - '@smithy/types': 4.3.1 + '@smithy/types': 4.9.0 tslib: 2.8.1 optional: true @@ -17249,157 +17962,157 @@ snapshots: tslib: 2.8.1 optional: true - '@smithy/is-array-buffer@4.0.0': + '@smithy/is-array-buffer@4.2.0': dependencies: tslib: 2.8.1 optional: true - '@smithy/middleware-content-length@4.0.4': + '@smithy/middleware-content-length@4.2.5': dependencies: - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 optional: true - '@smithy/middleware-endpoint@4.1.17': + '@smithy/middleware-endpoint@4.3.12': dependencies: - '@smithy/core': 3.7.2 - '@smithy/middleware-serde': 4.0.8 - '@smithy/node-config-provider': 4.1.3 - '@smithy/shared-ini-file-loader': 4.0.4 - '@smithy/types': 4.3.1 - '@smithy/url-parser': 4.0.4 - '@smithy/util-middleware': 4.0.4 + '@smithy/core': 3.18.5 + '@smithy/middleware-serde': 4.2.6 + '@smithy/node-config-provider': 4.3.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 + '@smithy/util-middleware': 4.2.5 tslib: 2.8.1 optional: true - '@smithy/middleware-retry@4.1.18': + '@smithy/middleware-retry@4.4.12': dependencies: - '@smithy/node-config-provider': 4.1.3 - '@smithy/protocol-http': 5.1.2 - '@smithy/service-error-classification': 4.0.6 - '@smithy/smithy-client': 4.4.9 - '@smithy/types': 4.3.1 - '@smithy/util-middleware': 4.0.4 - '@smithy/util-retry': 4.0.6 + '@smithy/node-config-provider': 4.3.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/service-error-classification': 4.2.5 + '@smithy/smithy-client': 4.9.8 + '@smithy/types': 4.9.0 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-retry': 4.2.5 + '@smithy/uuid': 1.1.0 tslib: 2.8.1 - uuid: 9.0.1 optional: true - '@smithy/middleware-serde@4.0.8': + '@smithy/middleware-serde@4.2.6': dependencies: - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 optional: true - '@smithy/middleware-stack@4.0.4': + '@smithy/middleware-stack@4.2.5': dependencies: - '@smithy/types': 4.3.1 + '@smithy/types': 4.9.0 tslib: 2.8.1 optional: true - '@smithy/node-config-provider@4.1.3': + '@smithy/node-config-provider@4.3.5': dependencies: - '@smithy/property-provider': 4.0.4 - '@smithy/shared-ini-file-loader': 4.0.4 - '@smithy/types': 4.3.1 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 tslib: 2.8.1 optional: true - '@smithy/node-http-handler@4.1.0': + '@smithy/node-http-handler@4.4.5': dependencies: - '@smithy/abort-controller': 4.0.4 - '@smithy/protocol-http': 5.1.2 - '@smithy/querystring-builder': 4.0.4 - '@smithy/types': 4.3.1 + '@smithy/abort-controller': 4.2.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/querystring-builder': 4.2.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 optional: true - '@smithy/property-provider@4.0.4': + '@smithy/property-provider@4.2.5': dependencies: - '@smithy/types': 4.3.1 + '@smithy/types': 4.9.0 tslib: 2.8.1 optional: true - '@smithy/protocol-http@5.1.2': + '@smithy/protocol-http@5.3.5': dependencies: - '@smithy/types': 4.3.1 + '@smithy/types': 4.9.0 tslib: 2.8.1 optional: true - '@smithy/querystring-builder@4.0.4': + '@smithy/querystring-builder@4.2.5': dependencies: - '@smithy/types': 4.3.1 - '@smithy/util-uri-escape': 4.0.0 + '@smithy/types': 4.9.0 + '@smithy/util-uri-escape': 4.2.0 tslib: 2.8.1 optional: true - '@smithy/querystring-parser@4.0.4': + '@smithy/querystring-parser@4.2.5': dependencies: - '@smithy/types': 4.3.1 + '@smithy/types': 4.9.0 tslib: 2.8.1 optional: true - '@smithy/service-error-classification@4.0.6': + '@smithy/service-error-classification@4.2.5': dependencies: - '@smithy/types': 4.3.1 + '@smithy/types': 4.9.0 optional: true - '@smithy/shared-ini-file-loader@4.0.4': + '@smithy/shared-ini-file-loader@4.4.0': dependencies: - '@smithy/types': 4.3.1 + '@smithy/types': 4.9.0 tslib: 2.8.1 optional: true - '@smithy/signature-v4@5.1.2': + '@smithy/signature-v4@5.3.5': dependencies: - '@smithy/is-array-buffer': 4.0.0 - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 - '@smithy/util-hex-encoding': 4.0.0 - '@smithy/util-middleware': 4.0.4 - '@smithy/util-uri-escape': 4.0.0 - '@smithy/util-utf8': 4.0.0 + '@smithy/is-array-buffer': 4.2.0 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 + '@smithy/util-hex-encoding': 4.2.0 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-uri-escape': 4.2.0 + '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 optional: true - '@smithy/smithy-client@4.4.9': + '@smithy/smithy-client@4.9.8': dependencies: - '@smithy/core': 3.7.2 - '@smithy/middleware-endpoint': 4.1.17 - '@smithy/middleware-stack': 4.0.4 - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 - '@smithy/util-stream': 4.2.3 + '@smithy/core': 3.18.5 + '@smithy/middleware-endpoint': 4.3.12 + '@smithy/middleware-stack': 4.2.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 + '@smithy/util-stream': 4.5.6 tslib: 2.8.1 optional: true - '@smithy/types@4.3.1': + '@smithy/types@4.9.0': dependencies: tslib: 2.8.1 optional: true - '@smithy/url-parser@4.0.4': + '@smithy/url-parser@4.2.5': dependencies: - '@smithy/querystring-parser': 4.0.4 - '@smithy/types': 4.3.1 + '@smithy/querystring-parser': 4.2.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 optional: true - '@smithy/util-base64@4.0.0': + '@smithy/util-base64@4.3.0': dependencies: - '@smithy/util-buffer-from': 4.0.0 - '@smithy/util-utf8': 4.0.0 + '@smithy/util-buffer-from': 4.2.0 + '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 optional: true - '@smithy/util-body-length-browser@4.0.0': + '@smithy/util-body-length-browser@4.2.0': dependencies: tslib: 2.8.1 optional: true - '@smithy/util-body-length-node@4.0.0': + '@smithy/util-body-length-node@4.2.1': dependencies: tslib: 2.8.1 optional: true @@ -17410,75 +18123,74 @@ snapshots: tslib: 2.8.1 optional: true - '@smithy/util-buffer-from@4.0.0': + '@smithy/util-buffer-from@4.2.0': dependencies: - '@smithy/is-array-buffer': 4.0.0 + '@smithy/is-array-buffer': 4.2.0 tslib: 2.8.1 optional: true - '@smithy/util-config-provider@4.0.0': + '@smithy/util-config-provider@4.2.0': dependencies: tslib: 2.8.1 optional: true - '@smithy/util-defaults-mode-browser@4.0.25': + '@smithy/util-defaults-mode-browser@4.3.11': dependencies: - '@smithy/property-provider': 4.0.4 - '@smithy/smithy-client': 4.4.9 - '@smithy/types': 4.3.1 - bowser: 2.11.0 + '@smithy/property-provider': 4.2.5 + '@smithy/smithy-client': 4.9.8 + '@smithy/types': 4.9.0 tslib: 2.8.1 optional: true - '@smithy/util-defaults-mode-node@4.0.25': + '@smithy/util-defaults-mode-node@4.2.14': dependencies: - '@smithy/config-resolver': 4.1.4 - '@smithy/credential-provider-imds': 4.0.6 - '@smithy/node-config-provider': 4.1.3 - '@smithy/property-provider': 4.0.4 - '@smithy/smithy-client': 4.4.9 - '@smithy/types': 4.3.1 + '@smithy/config-resolver': 4.4.3 + '@smithy/credential-provider-imds': 4.2.5 + '@smithy/node-config-provider': 4.3.5 + '@smithy/property-provider': 4.2.5 + '@smithy/smithy-client': 4.9.8 + '@smithy/types': 4.9.0 tslib: 2.8.1 optional: true - '@smithy/util-endpoints@3.0.6': + '@smithy/util-endpoints@3.2.5': dependencies: - '@smithy/node-config-provider': 4.1.3 - '@smithy/types': 4.3.1 + '@smithy/node-config-provider': 4.3.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 optional: true - '@smithy/util-hex-encoding@4.0.0': + '@smithy/util-hex-encoding@4.2.0': dependencies: tslib: 2.8.1 optional: true - '@smithy/util-middleware@4.0.4': + '@smithy/util-middleware@4.2.5': dependencies: - '@smithy/types': 4.3.1 + '@smithy/types': 4.9.0 tslib: 2.8.1 optional: true - '@smithy/util-retry@4.0.6': + '@smithy/util-retry@4.2.5': dependencies: - '@smithy/service-error-classification': 4.0.6 - '@smithy/types': 4.3.1 + '@smithy/service-error-classification': 4.2.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 optional: true - '@smithy/util-stream@4.2.3': + '@smithy/util-stream@4.5.6': dependencies: - '@smithy/fetch-http-handler': 5.1.0 - '@smithy/node-http-handler': 4.1.0 - '@smithy/types': 4.3.1 - '@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.3.6 + '@smithy/node-http-handler': 4.4.5 + '@smithy/types': 4.9.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-buffer-from': 4.2.0 + '@smithy/util-hex-encoding': 4.2.0 + '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 optional: true - '@smithy/util-uri-escape@4.0.0': + '@smithy/util-uri-escape@4.2.0': dependencies: tslib: 2.8.1 optional: true @@ -17489,12 +18201,22 @@ snapshots: tslib: 2.8.1 optional: true - '@smithy/util-utf8@4.0.0': + '@smithy/util-utf8@4.2.0': dependencies: - '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-buffer-from': 4.2.0 tslib: 2.8.1 optional: true + '@smithy/uuid@1.1.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@so-ric/colorspace@1.1.6': + dependencies: + color: 5.0.3 + text-hex: 1.0.0 + '@sphinxxxx/color-conversion@2.2.2': {} '@sqltools/formatter@1.2.5': {} @@ -17527,59 +18249,59 @@ snapshots: '@standard-schema/spec@1.0.0': {} - '@sveltejs/acorn-typescript@1.0.5(acorn@8.15.0)': + '@sveltejs/acorn-typescript@1.0.8(acorn@8.15.0)': dependencies: acorn: 8.15.0 - '@swc/core-darwin-arm64@1.13.2': + '@swc/core-darwin-arm64@1.15.3': optional: true - '@swc/core-darwin-x64@1.13.2': + '@swc/core-darwin-x64@1.15.3': optional: true - '@swc/core-linux-arm-gnueabihf@1.13.2': + '@swc/core-linux-arm-gnueabihf@1.15.3': optional: true - '@swc/core-linux-arm64-gnu@1.13.2': + '@swc/core-linux-arm64-gnu@1.15.3': optional: true - '@swc/core-linux-arm64-musl@1.13.2': + '@swc/core-linux-arm64-musl@1.15.3': optional: true - '@swc/core-linux-x64-gnu@1.13.2': + '@swc/core-linux-x64-gnu@1.15.3': optional: true - '@swc/core-linux-x64-musl@1.13.2': + '@swc/core-linux-x64-musl@1.15.3': optional: true - '@swc/core-win32-arm64-msvc@1.13.2': + '@swc/core-win32-arm64-msvc@1.15.3': optional: true - '@swc/core-win32-ia32-msvc@1.13.2': + '@swc/core-win32-ia32-msvc@1.15.3': optional: true - '@swc/core-win32-x64-msvc@1.13.2': + '@swc/core-win32-x64-msvc@1.15.3': optional: true - '@swc/core@1.13.2': + '@swc/core@1.15.3': dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.23 + '@swc/types': 0.1.25 optionalDependencies: - '@swc/core-darwin-arm64': 1.13.2 - '@swc/core-darwin-x64': 1.13.2 - '@swc/core-linux-arm-gnueabihf': 1.13.2 - '@swc/core-linux-arm64-gnu': 1.13.2 - '@swc/core-linux-arm64-musl': 1.13.2 - '@swc/core-linux-x64-gnu': 1.13.2 - '@swc/core-linux-x64-musl': 1.13.2 - '@swc/core-win32-arm64-msvc': 1.13.2 - '@swc/core-win32-ia32-msvc': 1.13.2 - '@swc/core-win32-x64-msvc': 1.13.2 + '@swc/core-darwin-arm64': 1.15.3 + '@swc/core-darwin-x64': 1.15.3 + '@swc/core-linux-arm-gnueabihf': 1.15.3 + '@swc/core-linux-arm64-gnu': 1.15.3 + '@swc/core-linux-arm64-musl': 1.15.3 + '@swc/core-linux-x64-gnu': 1.15.3 + '@swc/core-linux-x64-musl': 1.15.3 + '@swc/core-win32-arm64-msvc': 1.15.3 + '@swc/core-win32-ia32-msvc': 1.15.3 + '@swc/core-win32-x64-msvc': 1.15.3 '@swc/counter@0.1.3': {} - '@swc/types@0.1.23': + '@swc/types@0.1.25': dependencies: '@swc/counter': 0.1.3 @@ -17599,50 +18321,64 @@ snapshots: dependencies: testcontainers: 10.28.0 transitivePeerDependencies: + - bare-abort-controller - bare-buffer + - react-native-b4a - supports-color - '@testcontainers/mongodb@11.4.0': + '@testcontainers/mongodb@11.9.0': dependencies: compare-versions: 6.1.1 - testcontainers: 11.4.0 + testcontainers: 11.9.0 transitivePeerDependencies: + - bare-abort-controller - bare-buffer + - react-native-b4a - supports-color - '@testcontainers/mysql@11.4.0': + '@testcontainers/mysql@11.9.0': dependencies: - testcontainers: 11.4.0 + testcontainers: 11.9.0 transitivePeerDependencies: + - bare-abort-controller - bare-buffer + - react-native-b4a - supports-color - '@testcontainers/postgresql@11.4.0': + '@testcontainers/postgresql@11.9.0': dependencies: - testcontainers: 11.4.0 + testcontainers: 11.9.0 transitivePeerDependencies: + - bare-abort-controller - bare-buffer + - react-native-b4a - supports-color '@testcontainers/rabbitmq@10.28.0': dependencies: testcontainers: 10.28.0 transitivePeerDependencies: + - bare-abort-controller - bare-buffer + - react-native-b4a - supports-color - '@testcontainers/redis@11.4.0': + '@testcontainers/redis@11.9.0': dependencies: - testcontainers: 11.4.0 + testcontainers: 11.9.0 transitivePeerDependencies: + - bare-abort-controller - bare-buffer + - react-native-b4a - supports-color - '@testcontainers/vault@11.4.0': + '@testcontainers/vault@11.9.0': dependencies: - testcontainers: 11.4.0 + testcontainers: 11.9.0 transitivePeerDependencies: + - bare-abort-controller - bare-buffer + - react-native-b4a - supports-color '@tokenizer/token@0.3.0': {} @@ -17653,11 +18389,20 @@ snapshots: '@tootallnate/quickjs-emscripten@0.23.0': {} - '@trpc/server@11.4.3(typescript@5.8.3)': + '@trpc/client@11.7.2(@trpc/server@11.7.2(typescript@5.9.3))(typescript@5.9.3)': + dependencies: + '@trpc/server': 11.7.2(typescript@5.9.3) + typescript: 5.9.3 + + '@trpc/server@11.7.2(typescript@4.9.5)': + dependencies: + typescript: 4.9.5 + + '@trpc/server@11.7.2(typescript@5.9.3)': dependencies: - typescript: 5.8.3 + typescript: 5.9.3 - '@tsconfig/node10@1.0.11': {} + '@tsconfig/node10@1.0.12': {} '@tsconfig/node12@1.0.11': {} @@ -17668,64 +18413,65 @@ snapshots: '@types/amqplib@0.8.2': dependencies: '@types/bluebird': 3.5.42 - '@types/node': 18.19.120 + '@types/node': 22.19.1 '@types/aws-lambda@8.10.143': {} '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.28.0 - '@babel/types': 7.28.2 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.7 + '@types/babel__traverse': 7.28.0 '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.5 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.28.0 - '@babel/types': 7.28.2 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 - '@types/babel__traverse@7.20.7': + '@types/babel__traverse@7.28.0': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.5 '@types/bcrypt@6.0.0': dependencies: - '@types/node': 18.19.120 + '@types/node': 18.19.130 '@types/benchmark@2.1.5': {} '@types/better-sqlite3@7.6.13': dependencies: - '@types/node': 22.16.5 + '@types/node': 22.19.1 '@types/bluebird@3.5.42': {} '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 18.19.120 + '@types/node': 22.19.1 '@types/bunyan@1.8.9': dependencies: - '@types/node': 18.19.120 + '@types/node': 22.19.1 '@types/cacheable-request@6.0.3': dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 18.19.120 + '@types/node': 18.19.130 '@types/responselike': 1.0.3 '@types/caseless@0.12.5': {} - '@types/chai@5.2.2': + '@types/chai@5.2.3': dependencies: '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 '@types/chrome@0.0.278': dependencies: @@ -17734,30 +18480,30 @@ snapshots: '@types/cli-progress@3.11.6': dependencies: - '@types/node': 18.19.120 + '@types/node': 22.19.1 '@types/compression@1.8.1': dependencies: - '@types/express': 5.0.3 - '@types/node': 18.19.120 + '@types/express': 5.0.5 + '@types/node': 22.19.1 '@types/connect-timeout@1.9.0': dependencies: - '@types/express': 5.0.3 + '@types/express': 5.0.5 '@types/connect@3.4.36': dependencies: - '@types/node': 18.19.120 + '@types/node': 22.19.1 '@types/connect@3.4.38': dependencies: - '@types/node': 18.19.120 + '@types/node': 22.19.1 '@types/cookiejar@2.1.5': {} '@types/cors@2.8.19': dependencies: - '@types/node': 18.19.120 + '@types/node': 22.19.1 '@types/debug@4.1.12': dependencies: @@ -17769,13 +18515,13 @@ snapshots: '@types/docker-modem@3.0.6': dependencies: - '@types/node': 18.19.120 + '@types/node': 24.10.1 '@types/ssh2': 1.15.5 - '@types/dockerode@3.3.42': + '@types/dockerode@3.3.47': dependencies: '@types/docker-modem': 3.0.6 - '@types/node': 24.1.0 + '@types/node': 24.10.1 '@types/ssh2': 1.15.5 '@types/ejs@3.1.5': {} @@ -17784,40 +18530,40 @@ snapshots: '@types/express-rate-limit@6.0.2(express@5.1.0)': dependencies: - express-rate-limit: 8.0.1(express@5.1.0) + express-rate-limit: 8.2.1(express@5.1.0) transitivePeerDependencies: - express - '@types/express-serve-static-core@4.19.6': + '@types/express-serve-static-core@4.19.7': dependencies: - '@types/node': 18.19.120 + '@types/node': 22.19.1 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 - '@types/send': 0.17.5 + '@types/send': 1.2.1 - '@types/express-serve-static-core@5.0.7': + '@types/express-serve-static-core@5.1.0': dependencies: - '@types/node': 18.19.120 + '@types/node': 22.19.1 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 - '@types/send': 0.17.5 + '@types/send': 1.2.1 '@types/express-session@1.18.2': dependencies: - '@types/express': 5.0.3 + '@types/express': 5.0.5 - '@types/express@4.17.23': + '@types/express@4.17.25': dependencies: '@types/body-parser': 1.19.6 - '@types/express-serve-static-core': 4.19.6 + '@types/express-serve-static-core': 4.19.7 '@types/qs': 6.14.0 - '@types/serve-static': 1.15.8 + '@types/serve-static': 1.15.10 - '@types/express@5.0.3': + '@types/express@5.0.5': dependencies: '@types/body-parser': 1.19.6 - '@types/express-serve-static-core': 5.0.7 - '@types/serve-static': 1.15.8 + '@types/express-serve-static-core': 5.1.0 + '@types/serve-static': 1.15.10 '@types/filesystem@0.0.36': dependencies: @@ -17825,22 +18571,22 @@ snapshots: '@types/filewriter@0.0.33': {} - '@types/firefox-webext-browser@120.0.4': {} + '@types/firefox-webext-browser@120.0.5': {} '@types/geoip-lite@1.4.4': {} '@types/glob@9.0.0': dependencies: - glob: 11.0.3 + glob: 13.0.0 '@types/google-cloud__storage@1.7.2': dependencies: - '@types/node': 18.19.120 - '@types/request': 2.48.12 + '@types/node': 22.19.1 + '@types/request': 2.48.13 '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 18.19.120 + '@types/node': 24.10.1 '@types/har-format@1.2.16': {} @@ -17870,11 +18616,11 @@ snapshots: '@types/jsonwebtoken@9.0.10': dependencies: '@types/ms': 2.1.0 - '@types/node': 18.19.120 + '@types/node': 22.19.1 '@types/keyv@3.1.4': dependencies: - '@types/node': 18.19.120 + '@types/node': 22.19.1 '@types/linkify-it@5.0.0': {} @@ -17882,7 +18628,7 @@ snapshots: '@types/long@4.0.2': {} - '@types/luxon@3.6.2': {} + '@types/luxon@3.7.1': {} '@types/markdown-it@14.1.2': dependencies: @@ -17893,7 +18639,7 @@ snapshots: '@types/memcached@2.2.10': dependencies: - '@types/node': 18.19.120 + '@types/node': 22.19.1 '@types/methods@1.1.4': {} @@ -17914,16 +18660,11 @@ snapshots: '@types/multer@1.4.13': dependencies: - '@types/express': 5.0.3 + '@types/express': 5.0.5 '@types/mysql@2.15.26': dependencies: - '@types/node': 18.19.120 - - '@types/node-fetch@2.6.12': - dependencies: - '@types/node': 18.19.120 - form-data: 4.0.4 + '@types/node': 22.19.1 '@types/node@12.20.55': {} @@ -17931,27 +18672,27 @@ snapshots: '@types/node@17.0.45': {} - '@types/node@18.19.120': + '@types/node@18.19.130': dependencies: undici-types: 5.26.5 - '@types/node@20.19.9': + '@types/node@20.19.25': dependencies: undici-types: 6.21.0 - '@types/node@22.16.5': + '@types/node@22.19.1': dependencies: undici-types: 6.21.0 - '@types/node@24.1.0': + '@types/node@24.10.1': dependencies: - undici-types: 7.8.0 + undici-types: 7.16.0 '@types/parse-json@4.0.2': {} '@types/passport-http@0.3.11': dependencies: - '@types/express': 5.0.3 + '@types/express': 5.0.5 '@types/passport': 1.0.17 '@types/passport-jwt@4.0.1': @@ -17961,12 +18702,12 @@ snapshots: '@types/passport-strategy@0.2.38': dependencies: - '@types/express': 5.0.3 + '@types/express': 5.0.5 '@types/passport': 1.0.17 '@types/passport@1.0.17': dependencies: - '@types/express': 5.0.3 + '@types/express': 5.0.5 '@types/pg-pool@2.0.6': dependencies: @@ -17974,13 +18715,13 @@ snapshots: '@types/pg@8.6.1': dependencies: - '@types/node': 18.19.120 + '@types/node': 22.19.1 pg-protocol: 1.10.3 pg-types: 2.2.0 '@types/pino@7.0.5': dependencies: - pino: 9.7.0 + pino: 9.14.0 '@types/pouchdb-adapter-cordova-sqlite@1.0.4': dependencies: @@ -18083,60 +18824,69 @@ snapshots: '@types/redis@4.0.11': dependencies: - redis: 5.6.1 + redis: 5.10.0 - '@types/request@2.48.12': + '@types/request@2.48.13': dependencies: '@types/caseless': 0.12.5 - '@types/node': 18.19.120 + '@types/node': 22.19.1 '@types/tough-cookie': 4.0.5 form-data: 2.5.5 '@types/response-time@2.3.9': dependencies: - '@types/express': 5.0.3 - '@types/node': 18.19.120 + '@types/express': 5.0.5 + '@types/node': 22.19.1 '@types/responselike@1.0.3': dependencies: - '@types/node': 18.19.120 + '@types/node': 18.19.130 '@types/retry@0.12.0': {} '@types/rimraf@3.0.2': dependencies: '@types/glob': 9.0.0 - '@types/node': 18.19.120 + '@types/node': 22.19.1 '@types/sanitize-html@2.16.0': dependencies: htmlparser2: 8.0.2 - '@types/send@0.17.5': + '@types/send@0.17.6': dependencies: '@types/mime': 1.3.5 - '@types/node': 18.19.120 + '@types/node': 22.19.1 + + '@types/send@1.2.1': + dependencies: + '@types/node': 22.19.1 + + '@types/serve-static@1.15.10': + dependencies: + '@types/http-errors': 2.0.5 + '@types/node': 22.19.1 + '@types/send': 0.17.6 - '@types/serve-static@1.15.8': + '@types/serve-static@2.2.0': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 18.19.120 - '@types/send': 0.17.5 + '@types/node': 22.19.1 '@types/shimmer@1.2.0': {} - '@types/ssh2-streams@0.1.12': + '@types/ssh2-streams@0.1.13': dependencies: - '@types/node': 18.19.120 + '@types/node': 24.10.1 '@types/ssh2@0.5.52': dependencies: - '@types/node': 18.19.120 - '@types/ssh2-streams': 0.1.12 + '@types/node': 24.10.1 + '@types/ssh2-streams': 0.1.13 '@types/ssh2@1.15.5': dependencies: - '@types/node': 18.19.120 + '@types/node': 18.19.130 '@types/stack-utils@2.0.3': {} @@ -18144,8 +18894,8 @@ snapshots: dependencies: '@types/cookiejar': 2.1.5 '@types/methods': 1.1.4 - '@types/node': 18.19.120 - form-data: 4.0.4 + '@types/node': 22.19.1 + form-data: 4.0.5 '@types/supertest@6.0.3': dependencies: @@ -18156,21 +18906,21 @@ snapshots: '@types/swagger-ui-express@4.1.8': dependencies: - '@types/express': 5.0.3 - '@types/serve-static': 1.15.8 + '@types/express': 5.0.5 + '@types/serve-static': 2.2.0 '@types/tedious@4.0.14': dependencies: - '@types/node': 18.19.120 + '@types/node': 22.19.1 '@types/through2-concurrent@2.0.4': dependencies: - '@types/node': 18.19.120 + '@types/node': 18.19.130 '@types/through2': 2.0.41 '@types/through2@2.0.41': dependencies: - '@types/node': 18.19.120 + '@types/node': 18.19.130 '@types/tough-cookie@4.0.5': {} @@ -18183,7 +18933,7 @@ snapshots: '@types/uuid@10.0.0': {} - '@types/validator@13.15.2': {} + '@types/validator@13.15.10': {} '@types/webidl-conversions@7.0.3': {} @@ -18195,39 +18945,39 @@ snapshots: '@types/whatwg-url@8.2.2': dependencies: - '@types/node': 18.19.120 + '@types/node': 22.19.1 '@types/webidl-conversions': 7.0.3 '@types/yargs-parser@21.0.3': {} - '@types/yargs@16.0.9': + '@types/yargs@16.0.11': dependencies: '@types/yargs-parser': 21.0.3 - '@types/yargs@17.0.33': + '@types/yargs@17.0.35': dependencies: '@types/yargs-parser': 21.0.3 '@types/yauzl@2.10.3': dependencies: - '@types/node': 18.19.120 + '@types/node': 18.19.130 optional: true - '@vitest/coverage-v8@2.1.9(vitest@2.1.9(@types/node@22.16.5)(happy-dom@18.0.1)(jsdom@26.1.0))': + '@vitest/coverage-v8@2.1.9(vitest@2.1.9(@types/node@22.19.1)(happy-dom@18.0.1)(jsdom@27.0.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 - debug: 4.4.1 + debug: 4.4.3 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 - istanbul-reports: 3.1.7 - magic-string: 0.30.17 + istanbul-reports: 3.2.0 + magic-string: 0.30.21 magicast: 0.3.5 - std-env: 3.9.0 + std-env: 3.10.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.9(@types/node@22.16.5)(happy-dom@18.0.1)(jsdom@26.1.0) + vitest: 2.1.9(@types/node@22.19.1)(happy-dom@18.0.1)(jsdom@27.0.1) transitivePeerDependencies: - supports-color @@ -18235,64 +18985,64 @@ snapshots: dependencies: '@vitest/spy': 2.1.9 '@vitest/utils': 2.1.9 - chai: 5.2.1 + chai: 5.3.3 tinyrainbow: 1.2.0 '@vitest/expect@3.2.4': dependencies: - '@types/chai': 5.2.2 + '@types/chai': 5.2.3 '@vitest/spy': 3.2.4 '@vitest/utils': 3.2.4 - chai: 5.2.1 + chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@2.1.9(vite@5.4.19(@types/node@17.0.45))': + '@vitest/mocker@2.1.9(vite@5.4.21(@types/node@17.0.45))': dependencies: '@vitest/spy': 2.1.9 estree-walker: 3.0.3 - magic-string: 0.30.17 + magic-string: 0.30.21 optionalDependencies: - vite: 5.4.19(@types/node@17.0.45) + vite: 5.4.21(@types/node@17.0.45) - '@vitest/mocker@2.1.9(vite@5.4.19(@types/node@18.19.120))': + '@vitest/mocker@2.1.9(vite@5.4.21(@types/node@18.19.130))': dependencies: '@vitest/spy': 2.1.9 estree-walker: 3.0.3 - magic-string: 0.30.17 + magic-string: 0.30.21 optionalDependencies: - vite: 5.4.19(@types/node@18.19.120) + vite: 5.4.21(@types/node@18.19.130) - '@vitest/mocker@2.1.9(vite@5.4.19(@types/node@22.16.5))': + '@vitest/mocker@2.1.9(vite@5.4.21(@types/node@22.19.1))': dependencies: '@vitest/spy': 2.1.9 estree-walker: 3.0.3 - magic-string: 0.30.17 + magic-string: 0.30.21 optionalDependencies: - vite: 5.4.19(@types/node@22.16.5) + vite: 5.4.21(@types/node@22.19.1) - '@vitest/mocker@3.2.4(vite@7.0.6(@types/node@17.0.45)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.0))': + '@vitest/mocker@3.2.4(vite@7.2.4(@types/node@17.0.45)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 - magic-string: 0.30.17 + magic-string: 0.30.21 optionalDependencies: - vite: 7.0.6(@types/node@17.0.45)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.0) + vite: 7.2.4(@types/node@17.0.45)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/mocker@3.2.4(vite@7.0.6(@types/node@18.19.120)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.0))': + '@vitest/mocker@3.2.4(vite@7.2.4(@types/node@18.19.130)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 - magic-string: 0.30.17 + magic-string: 0.30.21 optionalDependencies: - vite: 7.0.6(@types/node@18.19.120)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.0) + vite: 7.2.4(@types/node@18.19.130)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/mocker@3.2.4(vite@7.0.6(@types/node@24.1.0)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.0))': + '@vitest/mocker@3.2.4(vite@7.2.4(@types/node@24.10.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 - magic-string: 0.30.17 + magic-string: 0.30.21 optionalDependencies: - vite: 7.0.6(@types/node@24.1.0)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.0) + vite: 7.2.4(@types/node@24.10.1)(tsx@4.20.6)(yaml@2.8.1) '@vitest/pretty-format@2.1.9': dependencies: @@ -18311,18 +19061,18 @@ snapshots: dependencies: '@vitest/utils': 3.2.4 pathe: 2.0.3 - strip-literal: 3.0.0 + strip-literal: 3.1.0 '@vitest/snapshot@2.1.9': dependencies: '@vitest/pretty-format': 2.1.9 - magic-string: 0.30.17 + magic-string: 0.30.21 pathe: 1.1.2 '@vitest/snapshot@3.2.4': dependencies: '@vitest/pretty-format': 3.2.4 - magic-string: 0.30.17 + magic-string: 0.30.21 pathe: 2.0.3 '@vitest/spy@2.1.9': @@ -18331,7 +19081,7 @@ snapshots: '@vitest/spy@3.2.4': dependencies: - tinyspy: 4.0.3 + tinyspy: 4.0.4 '@vitest/ui@3.2.4(vitest@3.2.4)': dependencies: @@ -18339,80 +19089,80 @@ snapshots: fflate: 0.8.2 flatted: 3.3.3 pathe: 2.0.3 - sirv: 3.0.1 - tinyglobby: 0.2.14 + sirv: 3.0.2 + tinyglobby: 0.2.15 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@17.0.45)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0)(tsx@4.20.3)(yaml@2.8.0) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@17.0.45)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jsdom@27.0.1)(tsx@4.20.6)(yaml@2.8.1) '@vitest/utils@2.1.9': dependencies: '@vitest/pretty-format': 2.1.9 - loupe: 3.2.0 + loupe: 3.2.1 tinyrainbow: 1.2.0 '@vitest/utils@3.2.4': dependencies: '@vitest/pretty-format': 3.2.4 - loupe: 3.2.0 + loupe: 3.2.1 tinyrainbow: 2.0.0 - '@vue/compiler-core@3.5.18': + '@vue/compiler-core@3.5.25': dependencies: - '@babel/parser': 7.28.0 - '@vue/shared': 3.5.18 + '@babel/parser': 7.28.5 + '@vue/shared': 3.5.25 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.18': + '@vue/compiler-dom@3.5.25': dependencies: - '@vue/compiler-core': 3.5.18 - '@vue/shared': 3.5.18 + '@vue/compiler-core': 3.5.25 + '@vue/shared': 3.5.25 - '@vue/compiler-sfc@3.5.18': + '@vue/compiler-sfc@3.5.25': dependencies: - '@babel/parser': 7.28.0 - '@vue/compiler-core': 3.5.18 - '@vue/compiler-dom': 3.5.18 - '@vue/compiler-ssr': 3.5.18 - '@vue/shared': 3.5.18 + '@babel/parser': 7.28.5 + '@vue/compiler-core': 3.5.25 + '@vue/compiler-dom': 3.5.25 + '@vue/compiler-ssr': 3.5.25 + '@vue/shared': 3.5.25 estree-walker: 2.0.2 - magic-string: 0.30.17 + magic-string: 0.30.21 postcss: 8.5.6 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.18': + '@vue/compiler-ssr@3.5.25': dependencies: - '@vue/compiler-dom': 3.5.18 - '@vue/shared': 3.5.18 + '@vue/compiler-dom': 3.5.25 + '@vue/shared': 3.5.25 - '@vue/reactivity@3.5.18': + '@vue/reactivity@3.5.25': dependencies: - '@vue/shared': 3.5.18 + '@vue/shared': 3.5.25 - '@vue/runtime-core@3.5.18': + '@vue/runtime-core@3.5.25': dependencies: - '@vue/reactivity': 3.5.18 - '@vue/shared': 3.5.18 + '@vue/reactivity': 3.5.25 + '@vue/shared': 3.5.25 - '@vue/runtime-dom@3.5.18': + '@vue/runtime-dom@3.5.25': dependencies: - '@vue/reactivity': 3.5.18 - '@vue/runtime-core': 3.5.18 - '@vue/shared': 3.5.18 - csstype: 3.1.3 + '@vue/reactivity': 3.5.25 + '@vue/runtime-core': 3.5.25 + '@vue/shared': 3.5.25 + csstype: 3.2.3 - '@vue/server-renderer@3.5.18(vue@3.5.18(typescript@5.8.3))': + '@vue/server-renderer@3.5.25(vue@3.5.25(typescript@5.9.3))': dependencies: - '@vue/compiler-ssr': 3.5.18 - '@vue/shared': 3.5.18 - vue: 3.5.18(typescript@5.8.3) + '@vue/compiler-ssr': 3.5.25 + '@vue/shared': 3.5.25 + vue: 3.5.25(typescript@5.9.3) - '@vue/shared@3.5.18': {} + '@vue/shared@3.5.25': {} - '@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15(esbuild@0.25.8)': + '@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15(esbuild@0.25.12)': dependencies: - esbuild: 0.25.8 + esbuild: 0.25.12 tslib: 2.8.1 '@zeit/schemas@2.36.0': {} @@ -18468,7 +19218,7 @@ snapshots: accepts@2.0.0: dependencies: - mime-types: 3.0.1 + mime-types: 3.0.2 negotiator: 1.0.0 acorn-import-attributes@1.9.5(acorn@8.15.0): @@ -18493,7 +19243,7 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.4.1 + debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -18510,26 +19260,26 @@ snapshots: indent-string: 4.0.0 optional: true - ai@3.4.33(react@19.1.1)(sswr@2.2.0(svelte@5.38.0))(svelte@5.38.0)(vue@3.5.18(typescript@5.8.3))(zod@4.0.10): + ai@3.4.33(react@19.2.0)(sswr@2.2.0(svelte@5.45.2))(svelte@5.45.2)(vue@3.5.25(typescript@5.9.3))(zod@4.1.13): dependencies: '@ai-sdk/provider': 0.0.26 - '@ai-sdk/provider-utils': 1.0.22(zod@4.0.10) - '@ai-sdk/react': 0.0.70(react@19.1.1)(zod@4.0.10) - '@ai-sdk/solid': 0.0.54(zod@4.0.10) - '@ai-sdk/svelte': 0.0.57(svelte@5.38.0)(zod@4.0.10) - '@ai-sdk/ui-utils': 0.0.50(zod@4.0.10) - '@ai-sdk/vue': 0.0.59(vue@3.5.18(typescript@5.8.3))(zod@4.0.10) + '@ai-sdk/provider-utils': 1.0.22(zod@4.1.13) + '@ai-sdk/react': 0.0.70(react@19.2.0)(zod@4.1.13) + '@ai-sdk/solid': 0.0.54(zod@4.1.13) + '@ai-sdk/svelte': 0.0.57(svelte@5.45.2)(zod@4.1.13) + '@ai-sdk/ui-utils': 0.0.50(zod@4.1.13) + '@ai-sdk/vue': 0.0.59(vue@3.5.25(typescript@5.9.3))(zod@4.1.13) '@opentelemetry/api': 1.9.0 eventsource-parser: 1.1.2 json-schema: 0.4.0 jsondiffpatch: 0.6.0 secure-json-parse: 2.7.0 - zod-to-json-schema: 3.24.6(zod@4.0.10) + zod-to-json-schema: 3.25.0(zod@4.1.13) optionalDependencies: - react: 19.1.1 - sswr: 2.2.0(svelte@5.38.0) - svelte: 5.38.0 - zod: 4.0.10 + react: 19.2.0 + sswr: 2.2.0(svelte@5.45.2) + svelte: 5.45.2 + zod: 4.1.13 transitivePeerDependencies: - solid-js - vue @@ -18548,23 +19298,24 @@ snapshots: require-from-string: 2.0.2 uri-js: 4.4.1 - algoliasearch@5.34.1: - dependencies: - '@algolia/client-abtesting': 5.34.1 - '@algolia/client-analytics': 5.34.1 - '@algolia/client-common': 5.34.1 - '@algolia/client-insights': 5.34.1 - '@algolia/client-personalization': 5.34.1 - '@algolia/client-query-suggestions': 5.34.1 - '@algolia/client-search': 5.34.1 - '@algolia/ingestion': 1.34.1 - '@algolia/monitoring': 1.34.1 - '@algolia/recommend': 5.34.1 - '@algolia/requester-browser-xhr': 5.34.1 - '@algolia/requester-fetch': 5.34.1 - '@algolia/requester-node-http': 5.34.1 - - amqplib@0.10.8: + algoliasearch@5.45.0: + dependencies: + '@algolia/abtesting': 1.11.0 + '@algolia/client-abtesting': 5.45.0 + '@algolia/client-analytics': 5.45.0 + '@algolia/client-common': 5.45.0 + '@algolia/client-insights': 5.45.0 + '@algolia/client-personalization': 5.45.0 + '@algolia/client-query-suggestions': 5.45.0 + '@algolia/client-search': 5.45.0 + '@algolia/ingestion': 1.45.0 + '@algolia/monitoring': 1.45.0 + '@algolia/recommend': 5.45.0 + '@algolia/requester-browser-xhr': 5.45.0 + '@algolia/requester-fetch': 5.45.0 + '@algolia/requester-node-http': 5.45.0 + + amqplib@0.10.9: dependencies: buffer-more-ints: 1.0.0 url-parse: 1.5.10 @@ -18587,7 +19338,7 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.1.0: {} + ansi-regex@6.2.2: {} ansi-styles@3.2.1: dependencies: @@ -18599,7 +19350,7 @@ snapshots: ansi-styles@5.2.0: {} - ansi-styles@6.2.1: {} + ansi-styles@6.2.3: {} ansis@3.17.0: {} @@ -18636,7 +19387,7 @@ snapshots: archiver-utils@5.0.2: dependencies: - glob: 10.4.5 + glob: 10.5.0 graceful-fs: 4.2.11 is-stream: 2.0.1 lazystream: 1.0.1 @@ -18665,6 +19416,9 @@ snapshots: readdir-glob: 1.1.3 tar-stream: 3.1.7 zip-stream: 6.0.1 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a are-we-there-yet@3.0.1: dependencies: @@ -18743,7 +19497,7 @@ snapshots: async-lock@1.4.1: {} - async-memoize-one@1.1.8: + async-memoize-one@1.1.9: dependencies: fast-deep-equal: 3.1.3 @@ -18772,7 +19526,7 @@ snapshots: import-cwd: 3.0.0 node-fetch: 2.7.0(encoding@0.1.13) parse-github-url: 1.0.3 - semver: 7.7.2 + semver: 7.7.3 transitivePeerDependencies: - encoding @@ -18812,14 +19566,14 @@ snapshots: axios@0.26.1: dependencies: - follow-redirects: 1.15.9 + follow-redirects: 1.15.11 transitivePeerDependencies: - debug - axios@1.11.0: + axios@1.13.2: dependencies: - follow-redirects: 1.15.9 - form-data: 4.0.4 + follow-redirects: 1.15.11 + form-data: 4.0.5 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug @@ -18837,19 +19591,19 @@ snapshots: request: 2.88.2 underscore: 1.13.7 uuid: 3.4.0 - validator: 13.15.15 + validator: 13.15.23 xml2js: 0.2.8 xmlbuilder: 9.0.7 - b4a@1.6.7: {} + b4a@1.7.3: {} - babel-jest@29.7.0(@babel/core@7.28.0): + babel-jest@29.7.0(@babel/core@7.28.5): dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@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.0) + babel-preset-jest: 29.6.3(@babel/core@7.28.5) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -18869,9 +19623,9 @@ snapshots: babel-plugin-jest-hoist@29.6.3: dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.2 + '@babel/types': 7.28.5 '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.7 + '@types/babel__traverse': 7.28.0 babel-polyfill@6.26.0: dependencies: @@ -18879,30 +19633,30 @@ snapshots: core-js: 2.6.12 regenerator-runtime: 0.10.5 - babel-preset-current-node-syntax@1.1.0(@babel/core@7.28.0): - dependencies: - '@babel/core': 7.28.0 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.0) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.0) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.0) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.0) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.0) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.0) - - babel-preset-jest@29.6.3(@babel/core@7.28.0): - dependencies: - '@babel/core': 7.28.0 + babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.5): + dependencies: + '@babel/core': 7.28.5 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.5) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.5) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.5) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.5) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.5) + + babel-preset-jest@29.6.3(@babel/core@7.28.5): + dependencies: + '@babel/core': 7.28.5 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.28.0) + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.5) babel-runtime@6.26.0: dependencies: @@ -18911,33 +19665,47 @@ snapshots: balanced-match@1.0.2: {} - bare-events@2.6.0: - optional: true + bare-events@2.8.2: {} - bare-fs@4.1.6: + bare-fs@4.5.2: dependencies: - bare-events: 2.6.0 + bare-events: 2.8.2 bare-path: 3.0.0 - bare-stream: 2.6.5(bare-events@2.6.0) + bare-stream: 2.7.0(bare-events@2.8.2) + bare-url: 2.3.2 + fast-fifo: 1.3.2 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a optional: true - bare-os@3.6.1: + bare-os@3.6.2: optional: true bare-path@3.0.0: dependencies: - bare-os: 3.6.1 + bare-os: 3.6.2 optional: true - bare-stream@2.6.5(bare-events@2.6.0): + bare-stream@2.7.0(bare-events@2.8.2): dependencies: - streamx: 2.22.1 + streamx: 2.23.0 optionalDependencies: - bare-events: 2.6.0 + bare-events: 2.8.2 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + optional: true + + bare-url@2.3.2: + dependencies: + bare-path: 3.0.0 optional: true base64-js@1.5.1: {} + baseline-browser-mapping@2.8.32: {} + basic-ftp@5.0.5: {} bcrypt-pbkdf@1.0.2: @@ -18965,11 +19733,15 @@ snapshots: bindings: 1.5.0 prebuild-install: 7.1.3 - better-sqlite3@12.2.0: + better-sqlite3@12.5.0: dependencies: bindings: 1.5.0 prebuild-install: 7.1.3 + bidi-js@1.0.3: + dependencies: + require-from-string: 2.0.2 + bignumber.js@9.3.1: {} binary-extensions@2.3.0: {} @@ -18978,6 +19750,9 @@ snapshots: dependencies: file-uri-to-path: 1.0.0 + bintrees@1.0.2: + optional: true + bl@1.2.3: dependencies: readable-stream: 2.3.8 @@ -19010,23 +19785,23 @@ snapshots: transitivePeerDependencies: - supports-color - body-parser@2.2.0: + body-parser@2.2.1: dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 4.4.1 - http-errors: 2.0.0 - iconv-lite: 0.6.3 + debug: 4.4.3 + http-errors: 2.0.1 + iconv-lite: 0.7.0 on-finished: 2.4.1 qs: 6.14.0 - raw-body: 3.0.0 + raw-body: 3.0.2 type-is: 2.0.1 transitivePeerDependencies: - supports-color boolbase@1.0.0: {} - bowser@2.11.0: + bowser@2.13.1: optional: true boxen@5.1.2: @@ -19072,12 +19847,13 @@ snapshots: browserify-mime@1.2.9: {} - browserslist@4.25.1: + browserslist@4.28.0: dependencies: - caniuse-lite: 1.0.30001727 - electron-to-chromium: 1.5.191 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.1) + baseline-browser-mapping: 2.8.32 + caniuse-lite: 1.0.30001757 + electron-to-chromium: 1.5.262 + node-releases: 2.0.27 + update-browserslist-db: 1.1.4(browserslist@4.28.0) bs-logger@0.2.6: dependencies: @@ -19130,14 +19906,18 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - buildcheck@0.0.6: + buildcheck@0.0.7: optional: true builtin-modules@1.1.1: {} - bundle-require@5.1.0(esbuild@0.25.8): + bun-types@1.3.3: dependencies: - esbuild: 0.25.8 + '@types/node': 22.19.1 + + bundle-require@5.1.0(esbuild@0.27.0): + dependencies: + esbuild: 0.27.0 load-tsconfig: 0.2.5 busboy@0.2.14: @@ -19163,7 +19943,7 @@ snapshots: foreground-child: 3.3.1 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 - istanbul-reports: 3.1.7 + istanbul-reports: 3.2.0 test-exclude: 7.0.1 v8-to-istanbul: 9.3.0 yargs: 17.7.2 @@ -19199,15 +19979,15 @@ snapshots: dependencies: '@npmcli/fs': 4.0.0 fs-minipass: 3.0.3 - glob: 10.4.5 + glob: 10.5.0 lru-cache: 10.4.3 minipass: 7.1.2 minipass-collect: 2.0.1 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 - p-map: 7.0.3 + p-map: 7.0.4 ssri: 12.0.0 - tar: 7.4.3 + tar: 7.5.2 unique-filename: 4.0.0 cacheable-lookup@5.0.4: {} @@ -19221,7 +20001,7 @@ snapshots: http-cache-semantics: 4.2.0 keyv: 4.5.4 mimic-response: 4.0.0 - normalize-url: 8.0.2 + normalize-url: 8.1.0 responselike: 3.0.0 cacheable-request@6.1.0: @@ -19276,7 +20056,7 @@ snapshots: camelcase@7.0.1: {} - caniuse-lite@1.0.30001727: {} + caniuse-lite@1.0.30001757: {} capture-stack-trace@1.0.2: {} @@ -19298,12 +20078,12 @@ snapshots: pathval: 1.1.1 type-detect: 4.1.0 - chai@5.2.1: + chai@5.3.3: dependencies: assertion-error: 2.0.1 check-error: 2.1.1 deep-eql: 5.0.2 - loupe: 3.2.0 + loupe: 3.2.1 pathval: 2.0.1 chalk-template@0.4.0: @@ -19323,12 +20103,14 @@ snapshots: chalk@5.0.1: {} - chalk@5.4.1: {} + chalk@5.6.2: {} char-regex@1.0.2: {} chardet@0.7.0: {} + chardet@2.1.1: {} + check-error@1.0.3: dependencies: get-func-name: 2.0.2 @@ -19365,7 +20147,7 @@ snapshots: parse5: 7.3.0 parse5-htmlparser2-tree-adapter: 7.1.0 parse5-parser-stream: 7.1.2 - undici: 7.12.0 + undici: 7.16.0 whatwg-mimetype: 4.0.0 chokidar@3.6.0: @@ -19390,15 +20172,17 @@ snapshots: chownr@3.0.0: {} - chromium-bidi@7.2.0(devtools-protocol@0.0.1464554): + chromium-bidi@11.0.0(devtools-protocol@0.0.1521046): dependencies: - devtools-protocol: 0.0.1464554 + devtools-protocol: 0.0.1521046 mitt: 3.0.1 zod: 3.25.76 - chrono-node@2.8.3: + chrono-node@2.8.4: dependencies: - dayjs: 1.11.13 + dayjs: 1.11.19 + + chrono-node@2.9.0: {} ci-info@2.0.0: {} @@ -19408,11 +20192,11 @@ snapshots: class-transformer@0.5.1: {} - class-validator@0.14.2: + class-validator@0.14.3: dependencies: - '@types/validator': 13.15.2 - libphonenumber-js: 1.12.10 - validator: 13.15.15 + '@types/validator': 13.15.10 + libphonenumber-js: 1.12.29 + validator: 13.15.23 clean-css@4.2.4: dependencies: @@ -19488,14 +20272,14 @@ snapshots: '@hapi/bourne': 3.0.0 inflation: 2.1.0 qs: 6.14.0 - raw-body: 2.5.2 + raw-body: 2.5.3 type-is: 1.6.18 co@4.6.0: {} code-point-at@1.1.0: {} - collect-v8-coverage@1.0.2: {} + collect-v8-coverage@1.0.3: {} color-convert@1.9.3: dependencies: @@ -19505,29 +20289,31 @@ snapshots: dependencies: color-name: 1.1.4 + color-convert@3.1.3: + dependencies: + color-name: 2.1.0 + color-name@1.1.3: {} color-name@1.1.4: {} - color-string@1.9.1: + color-name@2.1.0: {} + + color-string@2.1.4: dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 + color-name: 2.1.0 color-support@1.1.3: optional: true - color@3.2.1: + color@5.0.3: dependencies: - color-convert: 1.9.3 - color-string: 1.9.1 + color-convert: 3.1.3 + color-string: 2.1.4 colorette@2.0.19: {} - colorspace@1.1.4: - dependencies: - color: 3.2.1 - text-hex: 1.0.0 + colorette@2.0.20: {} combined-stream@1.0.8: dependencies: @@ -19567,20 +20353,8 @@ snapshots: readable-stream: 4.7.0 compressible@2.0.18: - dependencies: - mime-db: 1.54.0 - - compression@1.7.4: - dependencies: - accepts: 1.3.8 - bytes: 3.0.0 - compressible: 2.0.18 - debug: 2.6.9 - on-headers: 1.0.2 - safe-buffer: 5.1.2 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color + dependencies: + mime-db: 1.54.0 compression@1.8.1: dependencies: @@ -19642,7 +20416,7 @@ snapshots: console-control-strings@1.1.0: optional: true - console-table-printer@2.14.6: + console-table-printer@2.15.0: dependencies: simple-wcswidth: 1.1.2 @@ -19652,9 +20426,7 @@ snapshots: dependencies: safe-buffer: 5.2.1 - content-disposition@1.0.0: - dependencies: - safe-buffer: 5.2.1 + content-disposition@1.0.1: {} content-type@1.0.5: {} @@ -19679,11 +20451,17 @@ snapshots: cookie@0.7.2: {} + cookie@1.1.1: {} + cookiejar@2.1.4: {} + copy-anything@4.0.5: + dependencies: + is-what: 5.5.0 + core-js@2.6.12: {} - core-js@3.44.0: {} + core-js@3.47.0: {} core-util-is@1.0.2: {} @@ -19706,15 +20484,15 @@ snapshots: dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 parse-json: 5.2.0 optionalDependencies: typescript: 4.9.5 cpu-features@0.0.10: dependencies: - buildcheck: 0.0.6 - nan: 2.23.0 + buildcheck: 0.0.7 + nan: 2.23.1 optional: true crc-32@1.2.2: {} @@ -19737,13 +20515,13 @@ snapshots: dependencies: capture-stack-trace: 1.0.2 - create-jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5)): + create-jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5)) + jest-config: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -19752,13 +20530,13 @@ snapshots: - supports-color - ts-node - create-jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3)): + create-jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -19767,13 +20545,13 @@ snapshots: - supports-color - ts-node - create-jest@29.7.0(@types/node@24.1.0)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@24.1.0)(typescript@5.8.3)): + create-jest@29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.1)(typescript@5.9.3)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@24.1.0)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@24.1.0)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.1)(typescript@5.9.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -19788,10 +20566,10 @@ snapshots: create-require@1.1.1: {} - cron@4.3.2: + cron@4.3.4: dependencies: - '@types/luxon': 3.6.2 - luxon: 3.7.1 + '@types/luxon': 3.7.1 + luxon: 3.7.2 cross-spawn@6.0.6: dependencies: @@ -19827,6 +20605,11 @@ snapshots: domutils: 3.2.2 nth-check: 2.1.1 + css-tree@3.1.0: + dependencies: + mdn-data: 2.12.2 + source-map-js: 1.2.1 + css-what@6.2.2: {} cssstyle@4.6.0: @@ -19834,17 +20617,18 @@ snapshots: '@asamuzakjp/css-color': 3.2.0 rrweb-cssom: 0.8.0 - csstype@3.1.3: {} + cssstyle@5.3.3: + dependencies: + '@asamuzakjp/css-color': 4.1.0 + '@csstools/css-syntax-patches-for-csstree': 1.0.20 + css-tree: 3.1.0 + + csstype@3.2.3: {} custom-event-polyfill@1.0.7: {} custom-event@1.0.1: {} - d@1.0.2: - dependencies: - es5-ext: 0.10.64 - type: 2.7.3 - dashdash@1.14.1: dependencies: assert-plus: 1.0.0 @@ -19857,7 +20641,7 @@ snapshots: data-uri-to-buffer@6.0.2: {} - data-uri-utils@1.0.8: + data-uri-utils@1.0.9: dependencies: data-uri-to-buffer: 5.0.1 @@ -19866,6 +20650,11 @@ snapshots: whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 + data-urls@6.0.0: + dependencies: + whatwg-mimetype: 4.0.0 + whatwg-url: 15.1.0 + data-view-buffer@1.0.2: dependencies: call-bound: 1.0.4 @@ -19888,23 +20677,13 @@ snapshots: dateformat@4.6.3: {} - dayjs@1.11.13: {} - - debug-fabulous@2.0.2: - dependencies: - debug: 4.4.1 - memoizee: 0.4.17 - transitivePeerDependencies: - - supports-color + dayjs@1.11.19: {} - debug-logfmt@1.2.3: + debug-logfmt@1.4.7: dependencies: - '@jclem/logfmt2': 2.4.3 - '@kikobeats/time-span': 1.0.6 - debug-fabulous: 2.0.2 + '@kikobeats/time-span': 1.0.11 + null-prototype-object: 1.2.5 pretty-ms: 7.0.1 - transitivePeerDependencies: - - supports-color debug@2.6.9: dependencies: @@ -19922,7 +20701,7 @@ snapshots: dependencies: ms: 2.1.2 - debug@4.4.1: + debug@4.4.3: dependencies: ms: 2.1.3 @@ -19940,7 +20719,7 @@ snapshots: dependencies: mimic-response: 3.1.0 - dedent@1.6.0: {} + dedent@1.7.0: {} deep-eql@4.1.4: dependencies: @@ -19991,7 +20770,7 @@ snapshots: ast-types: 0.13.4 escodegen: 1.14.3 esprima: 4.0.1 - vm2: 3.9.19 + vm2: 3.10.0 degenerator@5.0.1: dependencies: @@ -20026,7 +20805,7 @@ snapshots: detect-indent@6.1.0: {} - detect-libc@2.0.4: {} + detect-libc@2.1.2: {} detect-newline@3.1.0: {} @@ -20036,7 +20815,9 @@ snapshots: dependencies: address: 2.0.3 - devtools-protocol@0.0.1464554: {} + devalue@5.5.0: {} + + devtools-protocol@0.0.1521046: {} dezalgo@1.0.4: dependencies: @@ -20072,29 +20853,29 @@ snapshots: docker-compose@0.24.8: dependencies: - yaml: 2.8.0 + yaml: 2.8.1 - docker-compose@1.2.0: + docker-compose@1.3.0: dependencies: - yaml: 2.8.0 + yaml: 2.8.1 docker-modem@5.0.6: dependencies: - debug: 4.4.1 + debug: 4.4.3 readable-stream: 3.6.2 split-ca: 1.0.1 - ssh2: 1.16.0 + ssh2: 1.17.0 transitivePeerDependencies: - supports-color - dockerode@4.0.7: + dockerode@4.0.9: dependencies: '@balena/dockerignore': 1.0.2 - '@grpc/grpc-js': 1.13.4 + '@grpc/grpc-js': 1.14.1 '@grpc/proto-loader': 0.7.15 docker-modem: 5.0.6 - protobufjs: 7.5.3 - tar-fs: 2.1.3 + protobufjs: 7.5.4 + tar-fs: 2.1.4 uuid: 10.0.0 transitivePeerDependencies: - supports-color @@ -20146,7 +20927,7 @@ snapshots: dependencies: domelementtype: 2.3.0 - dompurify@3.2.6: + dompurify@3.3.0: optionalDependencies: '@types/trusted-types': 2.0.7 @@ -20199,10 +20980,10 @@ snapshots: dotenv-expand@8.0.3: {} - dotenv@16.5.0: {} - dotenv@16.6.1: {} + dotenv@17.2.3: {} + dottie@2.0.6: {} double-ended-queue@2.1.0-0: {} @@ -20214,25 +20995,26 @@ snapshots: contra: 1.9.4 crossvent: 1.5.5 - drizzle-kit@0.31.4: + drizzle-kit@0.31.7: dependencies: '@drizzle-team/brocli': 0.10.2 '@esbuild-kit/esm-loader': 2.6.5 - esbuild: 0.25.8 - esbuild-register: 3.6.0(esbuild@0.25.8) + esbuild: 0.25.12 + esbuild-register: 3.6.0(esbuild@0.25.12) transitivePeerDependencies: - supports-color - drizzle-orm@0.44.3(@opentelemetry/api@1.9.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.6.1)(better-sqlite3@11.10.0)(knex@3.1.0(better-sqlite3@11.10.0)(mysql2@3.14.2)(pg@8.16.3)(sqlite3@5.1.7))(kysely@0.28.3)(mysql2@3.14.2)(pg@8.16.3)(prisma@5.22.0)(sqlite3@5.1.7): + drizzle-orm@0.44.7(@opentelemetry/api@1.9.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.6.1)(better-sqlite3@12.5.0)(bun-types@1.3.3)(knex@3.1.0(better-sqlite3@12.5.0)(mysql2@3.15.3)(pg@8.16.3)(sqlite3@5.1.7))(kysely@0.28.8)(mysql2@3.15.3)(pg@8.16.3)(prisma@5.22.0)(sqlite3@5.1.7): optionalDependencies: '@opentelemetry/api': 1.9.0 '@prisma/client': 5.22.0(prisma@5.22.0) '@types/better-sqlite3': 7.6.13 '@types/pg': 8.6.1 - better-sqlite3: 11.10.0 - knex: 3.1.0(better-sqlite3@11.10.0)(mysql2@3.14.2)(pg@8.16.3)(sqlite3@5.1.7) - kysely: 0.28.3 - mysql2: 3.14.2 + better-sqlite3: 12.5.0 + bun-types: 1.3.3 + knex: 3.1.0(better-sqlite3@12.5.0)(mysql2@3.15.3)(pg@8.16.3)(sqlite3@5.1.7) + kysely: 0.28.8 + mysql2: 3.15.3 pg: 8.16.3 prisma: 5.22.0 sqlite3: 5.1.7 @@ -20275,15 +21057,27 @@ snapshots: '@one-ini/wasm': 0.1.1 commander: 10.0.1 minimatch: 9.0.1 - semver: 7.7.2 + semver: 7.7.3 ee-first@1.1.1: {} ejs@3.1.10: dependencies: - jake: 10.9.2 + jake: 10.9.4 + + electron-to-chromium@1.5.262: {} - electron-to-chromium@1.5.191: {} + elysia@1.4.16(@sinclair/typebox@0.34.41)(exact-mirror@0.2.5(@sinclair/typebox@0.34.41))(file-type@16.5.4)(openapi-types@12.1.3)(typescript@5.9.3): + dependencies: + '@sinclair/typebox': 0.34.41 + cookie: 1.1.1 + exact-mirror: 0.2.5(@sinclair/typebox@0.34.41) + fast-decode-uri-component: 1.0.1 + file-type: 16.5.4 + memoirist: 0.4.0 + openapi-types: 12.1.3 + optionalDependencies: + typescript: 5.9.3 emittery@0.13.1: {} @@ -20348,7 +21142,7 @@ snapshots: dependencies: prr: 1.0.1 - error-ex@1.3.2: + error-ex@1.3.4: dependencies: is-arrayish: 0.2.1 @@ -20446,41 +21240,16 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 - es5-ext@0.10.64: - dependencies: - es6-iterator: 2.0.3 - es6-symbol: 3.1.4 - esniff: 2.0.1 - next-tick: 1.1.0 - - es6-iterator@2.0.3: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - es6-symbol: 3.1.4 - es6-promise@4.2.8: {} es6-promisify@5.0.0: dependencies: es6-promise: 4.2.8 - es6-symbol@3.1.4: - dependencies: - d: 1.0.2 - ext: 1.7.0 - - es6-weak-map@2.0.3: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - es6-iterator: 2.0.3 - es6-symbol: 3.1.4 - - esbuild-register@3.6.0(esbuild@0.25.8): + esbuild-register@3.6.0(esbuild@0.25.12): dependencies: - debug: 4.4.1 - esbuild: 0.25.8 + debug: 4.4.3 + esbuild: 0.25.12 transitivePeerDependencies: - supports-color @@ -20535,34 +21304,63 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - esbuild@0.25.8: + esbuild@0.25.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 + + esbuild@0.27.0: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.8 - '@esbuild/android-arm': 0.25.8 - '@esbuild/android-arm64': 0.25.8 - '@esbuild/android-x64': 0.25.8 - '@esbuild/darwin-arm64': 0.25.8 - '@esbuild/darwin-x64': 0.25.8 - '@esbuild/freebsd-arm64': 0.25.8 - '@esbuild/freebsd-x64': 0.25.8 - '@esbuild/linux-arm': 0.25.8 - '@esbuild/linux-arm64': 0.25.8 - '@esbuild/linux-ia32': 0.25.8 - '@esbuild/linux-loong64': 0.25.8 - '@esbuild/linux-mips64el': 0.25.8 - '@esbuild/linux-ppc64': 0.25.8 - '@esbuild/linux-riscv64': 0.25.8 - '@esbuild/linux-s390x': 0.25.8 - '@esbuild/linux-x64': 0.25.8 - '@esbuild/netbsd-arm64': 0.25.8 - '@esbuild/netbsd-x64': 0.25.8 - '@esbuild/openbsd-arm64': 0.25.8 - '@esbuild/openbsd-x64': 0.25.8 - '@esbuild/openharmony-arm64': 0.25.8 - '@esbuild/sunos-x64': 0.25.8 - '@esbuild/win32-arm64': 0.25.8 - '@esbuild/win32-ia32': 0.25.8 - '@esbuild/win32-x64': 0.25.8 + '@esbuild/aix-ppc64': 0.27.0 + '@esbuild/android-arm': 0.27.0 + '@esbuild/android-arm64': 0.27.0 + '@esbuild/android-x64': 0.27.0 + '@esbuild/darwin-arm64': 0.27.0 + '@esbuild/darwin-x64': 0.27.0 + '@esbuild/freebsd-arm64': 0.27.0 + '@esbuild/freebsd-x64': 0.27.0 + '@esbuild/linux-arm': 0.27.0 + '@esbuild/linux-arm64': 0.27.0 + '@esbuild/linux-ia32': 0.27.0 + '@esbuild/linux-loong64': 0.27.0 + '@esbuild/linux-mips64el': 0.27.0 + '@esbuild/linux-ppc64': 0.27.0 + '@esbuild/linux-riscv64': 0.27.0 + '@esbuild/linux-s390x': 0.27.0 + '@esbuild/linux-x64': 0.27.0 + '@esbuild/netbsd-arm64': 0.27.0 + '@esbuild/netbsd-x64': 0.27.0 + '@esbuild/openbsd-arm64': 0.27.0 + '@esbuild/openbsd-x64': 0.27.0 + '@esbuild/openharmony-arm64': 0.27.0 + '@esbuild/sunos-x64': 0.27.0 + '@esbuild/win32-arm64': 0.27.0 + '@esbuild/win32-ia32': 0.27.0 + '@esbuild/win32-x64': 0.27.0 escalade@3.2.0: {} @@ -20601,13 +21399,6 @@ snapshots: esm@3.2.25: {} - esniff@2.0.1: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - event-emitter: 0.3.5 - type: 2.7.3 - espree@9.6.1: dependencies: acorn: 8.15.0 @@ -20616,9 +21407,9 @@ snapshots: esprima@4.0.1: {} - esrap@2.1.0: + esrap@2.2.0: dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.5 estraverse@4.3.0: {} @@ -20634,11 +21425,6 @@ snapshots: etag@1.8.1: {} - event-emitter@0.3.5: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - event-target-shim@5.0.1: {} eventemitter3@4.0.7: {} @@ -20649,13 +21435,23 @@ snapshots: dependencies: uuid: 8.3.2 + events-universal@1.0.1: + dependencies: + bare-events: 2.8.2 + transitivePeerDependencies: + - bare-abort-controller + events@1.1.1: {} events@3.3.0: {} eventsource-parser@1.1.2: {} - eventsource-parser@3.0.3: {} + eventsource-parser@3.0.6: {} + + exact-mirror@0.2.5(@sinclair/typebox@0.34.41): + optionalDependencies: + '@sinclair/typebox': 0.34.41 execa@1.0.0: dependencies: @@ -20707,9 +21503,9 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 - exponential-backoff@3.1.2: {} + exponential-backoff@3.1.3: {} - express-rate-limit@8.0.1(express@5.1.0): + express-rate-limit@8.2.1(express@5.1.0): dependencies: express: 5.1.0 ip-address: 10.0.1 @@ -20766,20 +21562,20 @@ snapshots: express@5.1.0: dependencies: accepts: 2.0.0 - body-parser: 2.2.0 - content-disposition: 1.0.0 + body-parser: 2.2.1 + content-disposition: 1.0.1 content-type: 1.0.5 cookie: 0.7.2 cookie-signature: 1.2.2 - debug: 4.4.1 + debug: 4.4.3 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 finalhandler: 2.1.0 fresh: 2.0.0 - http-errors: 2.0.0 + http-errors: 2.0.1 merge-descriptors: 2.0.0 - mime-types: 3.0.1 + mime-types: 3.0.2 on-finished: 2.4.1 once: 1.4.0 parseurl: 1.3.3 @@ -20795,10 +21591,6 @@ snapshots: transitivePeerDependencies: - supports-color - ext@1.7.0: - dependencies: - type: 2.7.3 - extend-shallow@2.0.1: dependencies: is-extendable: 0.1.1 @@ -20815,7 +21607,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.1 + debug: 4.4.3 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -20827,6 +21619,8 @@ snapshots: fast-copy@3.0.2: {} + fast-decode-uri-component@1.0.1: {} + fast-deep-equal@3.1.3: {} fast-diff@1.3.0: {} @@ -20847,8 +21641,6 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-redact@3.5.0: {} - fast-safe-stringify@2.1.1: {} fast-text-encoding@1.0.6: {} @@ -20881,7 +21673,7 @@ snapshots: dependencies: pend: 1.2.0 - fdir@6.4.6(picomatch@4.0.3): + fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -20894,7 +21686,7 @@ snapshots: fetch-cookie@2.2.0: dependencies: - set-cookie-parser: 2.7.1 + set-cookie-parser: 2.7.2 tough-cookie: 4.1.4 fetch-ponyfill@7.1.0(encoding@0.1.13): @@ -20947,7 +21739,7 @@ snapshots: finalhandler@2.1.0: dependencies: - debug: 4.4.1 + debug: 4.4.3 encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 @@ -20975,10 +21767,10 @@ snapshots: '@fastify/busboy': 1.2.1 '@firebase/database-compat': 0.3.4 '@firebase/database-types': 0.10.4 - '@types/node': 18.19.120 + '@types/node': 22.19.1 jsonwebtoken: 9.0.2 jwks-rsa: 3.2.0 - node-forge: 1.3.1 + node-forge: 1.3.2 uuid: 9.0.1 optionalDependencies: '@google-cloud/firestore': 6.8.0(encoding@0.1.13) @@ -20989,15 +21781,15 @@ snapshots: fix-dts-default-cjs-exports@1.0.1: dependencies: - magic-string: 0.30.17 - mlly: 1.7.4 - rollup: 4.46.1 + magic-string: 0.30.21 + mlly: 1.8.0 + rollup: 4.53.3 flatted@3.3.3: {} fn.name@1.1.0: {} - follow-redirects@1.15.9: {} + follow-redirects@1.15.11: {} follow-redirects@1.5.10: dependencies: @@ -21047,7 +21839,7 @@ snapshots: combined-stream: 1.0.8 mime-types: 2.1.35 - form-data@4.0.4: + form-data@4.0.5: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 @@ -21061,7 +21853,7 @@ snapshots: formidable@3.5.4: dependencies: - '@paralleldrive/cuid2': 2.2.2 + '@paralleldrive/cuid2': 2.3.1 dezalgo: 1.0.4 once: 1.4.0 @@ -21077,11 +21869,11 @@ snapshots: browser-cookies: 1.2.0 browser-md5-file: 1.1.1 compare-versions: 5.0.3 - core-js: 3.44.0 + core-js: 3.47.0 custom-event-polyfill: 1.0.7 dialog-polyfill: 0.5.6 dom-autoscroller: 2.3.4 - dompurify: 3.2.6 + dompurify: 3.3.0 downloadjs: 1.4.7 dragula: 3.7.3 eventemitter3: 4.0.7 @@ -21123,13 +21915,13 @@ snapshots: fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.1.0 + jsonfile: 6.2.0 universalify: 2.0.1 - fs-extra@11.3.0: + fs-extra@11.3.2: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.1.0 + jsonfile: 6.2.0 universalify: 2.0.1 fs-extra@5.0.0: @@ -21232,11 +22024,12 @@ snapshots: - encoding - supports-color - gaxios@7.1.1: + gaxios@7.1.3: dependencies: extend: 3.0.2 https-proxy-agent: 7.0.6 node-fetch: 3.3.2 + rimraf: 5.0.10 transitivePeerDependencies: - supports-color @@ -21265,10 +22058,10 @@ snapshots: - encoding - supports-color - gcp-metadata@7.0.1: + gcp-metadata@8.1.2: dependencies: - gaxios: 7.1.1 - google-logging-utils: 1.1.1 + gaxios: 7.1.3 + google-logging-utils: 1.1.3 json-bigint: 1.0.0 transitivePeerDependencies: - supports-color @@ -21288,6 +22081,8 @@ snapshots: dependencies: is-property: 1.0.2 + generator-function@2.0.1: {} + gensync@1.0.0-beta.2: {} geoip-lite@1.4.10: @@ -21344,7 +22139,7 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 - get-tsconfig@4.10.1: + get-tsconfig@4.13.0: dependencies: resolve-pkg-maps: 1.0.0 @@ -21352,7 +22147,7 @@ snapshots: dependencies: '@tootallnate/once': 1.1.2 data-uri-to-buffer: 3.0.1 - debug: 4.4.1 + debug: 4.3.4 file-uri-to-path: 2.0.0 fs-extra: 8.1.0 ftp: 0.3.10 @@ -21363,7 +22158,7 @@ snapshots: dependencies: basic-ftp: 5.0.5 data-uri-to-buffer: 6.0.2 - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -21393,7 +22188,7 @@ snapshots: dependencies: is-glob: 4.0.3 - glob@10.4.5: + glob@10.5.0: dependencies: foreground-child: 3.3.1 jackspeak: 3.4.3 @@ -21402,14 +22197,11 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 - glob@11.0.3: + glob@13.0.0: dependencies: - foreground-child: 3.3.1 - jackspeak: 4.1.1 - minimatch: 10.0.3 + minimatch: 10.1.1 minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 2.0.0 + path-scurry: 2.0.1 glob@7.2.3: dependencies: @@ -21477,13 +22269,13 @@ snapshots: - encoding - supports-color - google-auth-library@10.2.0: + google-auth-library@10.5.0: dependencies: base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 - gaxios: 7.1.1 - gcp-metadata: 7.0.1 - google-logging-utils: 1.1.1 + gaxios: 7.1.3 + gcp-metadata: 8.1.2 + google-logging-utils: 1.1.3 gtoken: 8.0.0 jws: 4.0.0 transitivePeerDependencies: @@ -21549,7 +22341,7 @@ snapshots: google-gax@4.6.1(encoding@0.1.13): dependencies: - '@grpc/grpc-js': 1.13.4 + '@grpc/grpc-js': 1.14.1 '@grpc/proto-loader': 0.7.15 '@types/long': 4.0.2 abort-controller: 3.0.0 @@ -21558,32 +22350,32 @@ snapshots: node-fetch: 2.7.0(encoding@0.1.13) object-hash: 3.0.0 proto3-json-serializer: 2.0.2 - protobufjs: 7.5.3 + protobufjs: 7.5.4 retry-request: 7.0.2(encoding@0.1.13) uuid: 9.0.1 transitivePeerDependencies: - encoding - supports-color - google-gax@5.0.1: + google-gax@5.0.6: dependencies: - '@grpc/grpc-js': 1.13.4 - '@grpc/proto-loader': 0.7.15 - abort-controller: 3.0.0 + '@grpc/grpc-js': 1.14.1 + '@grpc/proto-loader': 0.8.0 duplexify: 4.1.3 - google-auth-library: 10.2.0 - google-logging-utils: 1.1.1 + google-auth-library: 10.5.0 + google-logging-utils: 1.1.3 node-fetch: 3.3.2 object-hash: 3.0.0 - proto3-json-serializer: 3.0.1 - protobufjs: 7.5.3 - retry-request: 8.0.0 + proto3-json-serializer: 3.0.4 + protobufjs: 7.5.4 + retry-request: 8.0.2 + rimraf: 5.0.10 transitivePeerDependencies: - supports-color google-logging-utils@0.0.2: {} - google-logging-utils@1.1.1: {} + google-logging-utils@1.1.3: {} google-p12-pem@1.0.5: dependencies: @@ -21592,7 +22384,7 @@ snapshots: google-p12-pem@4.0.1: dependencies: - node-forge: 1.3.1 + node-forge: 1.3.2 gopd@1.2.0: {} @@ -21642,11 +22434,11 @@ snapshots: graceful-fs@4.2.11: {} - graphql@16.11.0: {} + graphql@16.12.0: {} gray-matter@4.0.3: dependencies: - js-yaml: 3.14.1 + js-yaml: 3.14.2 kind-of: 6.0.3 section-matter: 1.0.0 strip-bom-string: 1.0.0 @@ -21681,7 +22473,7 @@ snapshots: gtoken@8.0.0: dependencies: - gaxios: 7.1.1 + gaxios: 7.1.3 jws: 4.0.0 transitivePeerDependencies: - supports-color @@ -21693,7 +22485,7 @@ snapshots: defu: 6.1.4 destr: 2.0.5 iron-webcrypto: 1.2.1 - node-mock-http: 1.0.1 + node-mock-http: 1.0.3 radix3: 1.1.2 ufo: 1.6.1 uncrypto: 0.1.3 @@ -21709,7 +22501,7 @@ snapshots: happy-dom@18.0.1: dependencies: - '@types/node': 20.19.9 + '@types/node': 20.19.25 '@types/whatwg-mimetype': 3.0.2 whatwg-mimetype: 3.0.0 @@ -21749,11 +22541,12 @@ snapshots: has-yarn@2.1.0: {} - hash-base@3.1.0: + hash-base@3.1.2: dependencies: inherits: 2.0.4 - readable-stream: 3.6.2 + readable-stream: 2.3.8 safe-buffer: 5.2.1 + to-buffer: 1.2.2 hash-stream-validation@0.2.4: {} @@ -21769,6 +22562,8 @@ snapshots: hoek@6.1.3: {} + hono@4.10.7: {} + html-comment-regex@1.1.2: {} html-encoding-sniffer@4.0.0: @@ -21836,13 +22631,21 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 + http-errors@2.0.1: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.2 + toidentifier: 1.0.1 + http-parser-js@0.5.10: {} http-proxy-agent@4.0.1: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.4.1 + debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -21850,14 +22653,14 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.4 - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -21887,18 +22690,18 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.4.1 + debug: 4.3.4 transitivePeerDependencies: - supports-color https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color - human-id@4.1.1: {} + human-id@4.1.3: {} human-signals@1.1.1: {} @@ -21913,7 +22716,7 @@ snapshots: i18next@22.4.12: dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 iconv-lite@0.4.24: dependencies: @@ -21923,6 +22726,10 @@ snapshots: dependencies: safer-buffer: 2.1.2 + iconv-lite@0.7.0: + dependencies: + safer-buffer: 2.1.2 + idb@7.1.1: {} ieee754@1.1.13: {} @@ -21958,7 +22765,7 @@ snapshots: dependencies: resolve-from: 5.0.0 - import-in-the-middle@1.14.2: + import-in-the-middle@1.15.0: dependencies: acorn: 8.15.0 acorn-import-attributes: 1.9.5(acorn@8.15.0) @@ -22030,11 +22837,11 @@ snapshots: invert-kv@2.0.0: {} - ioredis@5.6.1: + ioredis@5.8.2: dependencies: - '@ioredis/commands': 1.3.0 + '@ioredis/commands': 1.4.0 cluster-key-slot: 1.1.2 - debug: 4.4.1 + debug: 4.4.3 denque: 2.1.0 lodash.defaults: 4.2.0 lodash.isarguments: 3.1.0 @@ -22046,17 +22853,14 @@ snapshots: ip-address@10.0.1: {} + ip-address@10.1.0: {} + ip-address@5.9.4: dependencies: jsbn: 1.1.0 lodash: 4.17.21 sprintf-js: 1.1.2 - ip-address@9.0.5: - dependencies: - jsbn: 1.1.0 - sprintf-js: 1.1.3 - ip-regex@4.3.0: {} ip-regex@5.0.0: {} @@ -22084,8 +22888,6 @@ snapshots: is-arrayish@0.2.1: {} - is-arrayish@0.3.2: {} - is-async-function@2.1.1: dependencies: async-function: 1.0.0 @@ -22156,9 +22958,10 @@ snapshots: is-generator-fn@2.1.0: {} - is-generator-function@1.1.0: + is-generator-function@1.1.2: dependencies: call-bound: 1.0.4 + generator-function: 2.0.1 get-proto: 1.0.1 has-tostringtag: 1.0.2 safe-regex-test: 1.1.0 @@ -22211,8 +23014,6 @@ snapshots: is-potential-custom-element-name@1.0.1: {} - is-promise@2.2.2: {} - is-promise@4.0.0: {} is-property@1.0.2: {} @@ -22275,9 +23076,9 @@ snapshots: is-unicode-supported@0.1.0: {} - is-uri@1.2.8: + is-uri@1.2.12: dependencies: - parse-uri: 2.0.0 + parse-uri: 2.0.4 punycode2: 1.0.1 is-weakmap@2.0.2: {} @@ -22291,6 +23092,8 @@ snapshots: call-bound: 1.0.4 get-intrinsic: 1.3.0 + is-what@5.5.0: {} + is-windows@1.0.2: {} is-wsl@2.2.0: @@ -22331,8 +23134,8 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.28.0 - '@babel/parser': 7.28.0 + '@babel/core': 7.28.5 + '@babel/parser': 7.28.5 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -22341,11 +23144,11 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: - '@babel/core': 7.28.0 - '@babel/parser': 7.28.0 + '@babel/core': 7.28.5 + '@babel/parser': 7.28.5 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.7.2 + semver: 7.7.3 transitivePeerDependencies: - supports-color @@ -22357,7 +23160,7 @@ snapshots: istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.4.1 + debug: 4.4.3 istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -22365,13 +23168,13 @@ snapshots: istanbul-lib-source-maps@5.0.6: dependencies: - '@jridgewell/trace-mapping': 0.3.29 - debug: 4.4.1 + '@jridgewell/trace-mapping': 0.3.31 + debug: 4.4.3 istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color - istanbul-reports@3.1.7: + istanbul-reports@3.2.0: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 @@ -22389,16 +23192,11 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jackspeak@4.1.1: - dependencies: - '@isaacs/cliui': 8.0.2 - - jake@10.9.2: + jake@10.9.4: dependencies: async: 3.2.6 - chalk: 4.1.2 filelist: 1.0.4 - minimatch: 3.1.2 + picocolors: 1.1.1 jest-changed-files@29.7.0: dependencies: @@ -22412,10 +23210,10 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.19.120 + '@types/node': 24.10.1 chalk: 4.1.2 co: 4.6.0 - dedent: 1.6.0 + dedent: 1.7.0 is-generator-fn: 2.1.0 jest-each: 29.7.0 jest-matcher-utils: 29.7.0 @@ -22432,16 +23230,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5)): + jest-cli@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5)) + create-jest: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5)) + jest-config: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -22451,16 +23249,16 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3)): + jest-cli@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3)) + create-jest: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -22470,16 +23268,16 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@24.1.0)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@24.1.0)(typescript@5.8.3)): + jest-cli@29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.1)(typescript@5.9.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@24.1.0)(typescript@5.8.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.1)(typescript@5.9.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@24.1.0)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@24.1.0)(typescript@5.8.3)) + create-jest: 29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.1)(typescript@5.9.3)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@24.1.0)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@24.1.0)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.1)(typescript@5.9.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -22489,12 +23287,12 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5)): + jest-config@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5)): dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.28.0) + babel-jest: 29.7.0(@babel/core@7.28.5) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -22515,17 +23313,17 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 17.0.45 - ts-node: 10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5) + ts-node: 10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3)): + jest-config@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3)): dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.28.0) + babel-jest: 29.7.0(@babel/core@7.28.5) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -22546,17 +23344,17 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 17.0.45 - ts-node: 10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3) + ts-node: 10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@24.1.0)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5)): + jest-config@29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5)): dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.28.0) + babel-jest: 29.7.0(@babel/core@7.28.5) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -22576,18 +23374,18 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 24.1.0 - ts-node: 10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5) + '@types/node': 24.10.1 + ts-node: 10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@24.1.0)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3)): + jest-config@29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3)): dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.28.0) + babel-jest: 29.7.0(@babel/core@7.28.5) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -22607,18 +23405,18 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 24.1.0 - ts-node: 10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3) + '@types/node': 24.10.1 + ts-node: 10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@24.1.0)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@24.1.0)(typescript@5.8.3)): + jest-config@29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.1)(typescript@5.9.3)): dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.28.0) + babel-jest: 29.7.0(@babel/core@7.28.5) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -22638,8 +23436,8 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 24.1.0 - ts-node: 10.9.2(@swc/core@1.13.2)(@types/node@24.1.0)(typescript@5.8.3) + '@types/node': 24.10.1 + ts-node: 10.9.2(@swc/core@1.15.3)(@types/node@24.10.1)(typescript@5.9.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -22675,7 +23473,7 @@ snapshots: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.19.120 + '@types/node': 22.19.1 jest-mock: 27.5.1 jest-util: 27.5.1 @@ -22684,7 +23482,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.19.120 + '@types/node': 24.10.1 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -22696,7 +23494,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 18.19.120 + '@types/node': 24.10.1 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -22754,12 +23552,12 @@ snapshots: jest-mock@27.5.1: dependencies: '@jest/types': 27.5.1 - '@types/node': 18.19.120 + '@types/node': 22.19.1 jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 18.19.120 + '@types/node': 24.10.1 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -22783,7 +23581,7 @@ snapshots: jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) jest-util: 29.7.0 jest-validate: 29.7.0 - resolve: 1.22.10 + resolve: 1.22.11 resolve.exports: 2.0.3 slash: 3.0.0 @@ -22794,7 +23592,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.19.120 + '@types/node': 24.10.1 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -22822,10 +23620,10 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.19.120 + '@types/node': 24.10.1 chalk: 4.1.2 cjs-module-lexer: 1.4.3 - collect-v8-coverage: 1.0.2 + collect-v8-coverage: 1.0.3 glob: 7.2.3 graceful-fs: 4.2.11 jest-haste-map: 29.7.0 @@ -22842,15 +23640,15 @@ snapshots: jest-snapshot@29.7.0: dependencies: - '@babel/core': 7.28.0 - '@babel/generator': 7.28.0 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.0) - '@babel/types': 7.28.2 + '@babel/core': 7.28.5 + '@babel/generator': 7.28.5 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5) + '@babel/types': 7.28.5 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.28.0) + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.5) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -22861,14 +23659,14 @@ snapshots: jest-util: 29.7.0 natural-compare: 1.4.0 pretty-format: 29.7.0 - semver: 7.7.2 + semver: 7.7.3 transitivePeerDependencies: - supports-color jest-util@27.5.1: dependencies: '@jest/types': 27.5.1 - '@types/node': 18.19.120 + '@types/node': 22.19.1 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -22877,7 +23675,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 18.19.120 + '@types/node': 24.10.1 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -22896,7 +23694,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.19.120 + '@types/node': 24.10.1 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -22905,41 +23703,41 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 18.19.120 + '@types/node': 24.10.1 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5)): + jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5)) + jest-cli: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros - supports-color - ts-node - jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3)): + jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3)) + jest-cli: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros - supports-color - ts-node - jest@29.7.0(@types/node@24.1.0)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@24.1.0)(typescript@5.8.3)): + jest@29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.1)(typescript@5.9.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@24.1.0)(typescript@5.8.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.1)(typescript@5.9.3)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@24.1.0)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@24.1.0)(typescript@5.8.3)) + jest-cli: 29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.1)(typescript@5.9.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -22976,9 +23774,6 @@ snapshots: '@jimp/types': 1.6.0 '@jimp/utils': 1.6.0 - jiti@2.5.1: - optional: true - jmespath@0.16.0: {} joi@14.3.1: @@ -22997,13 +23792,13 @@ snapshots: dependencies: config-chain: 1.1.13 editorconfig: 1.0.4 - glob: 10.4.5 + glob: 10.5.0 js-cookie: 3.0.5 nopt: 7.2.1 js-cookie@3.0.5: {} - js-tiktoken@1.0.20: + js-tiktoken@1.0.21: dependencies: base64-js: 1.5.1 @@ -23011,12 +23806,12 @@ snapshots: js-tokens@9.0.1: {} - js-yaml@3.14.1: + js-yaml@3.14.2: dependencies: argparse: 1.0.10 esprima: 4.0.1 - js-yaml@4.1.0: + js-yaml@4.1.1: dependencies: argparse: 2.0.1 @@ -23028,9 +23823,9 @@ snapshots: jsbn@1.1.0: {} - jsdoc@4.0.4: + jsdoc@4.0.5: dependencies: - '@babel/parser': 7.28.0 + '@babel/parser': 7.28.5 '@jsdoc/salty': 0.2.9 '@types/markdown-it': 14.1.2 bluebird: 3.7.2 @@ -23055,7 +23850,7 @@ snapshots: http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.21 + nwsapi: 2.2.22 parse5: 7.3.0 rrweb-cssom: 0.8.0 saxes: 6.0.0 @@ -23073,6 +23868,33 @@ snapshots: - supports-color - utf-8-validate + jsdom@27.0.1: + dependencies: + '@asamuzakjp/dom-selector': 6.7.4 + cssstyle: 5.3.3 + data-urls: 6.0.0 + decimal.js: 10.6.0 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + is-potential-custom-element-name: 1.0.1 + parse5: 8.0.0 + rrweb-cssom: 0.8.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 6.0.0 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 8.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 15.1.0 + ws: 8.18.3 + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + jsesc@3.1.0: {} json-bigint@1.0.0: @@ -23104,14 +23926,14 @@ snapshots: jsondiffpatch@0.6.0: dependencies: '@types/diff-match-patch': 1.0.36 - chalk: 5.4.1 + chalk: 5.6.2 diff-match-patch: 1.0.5 jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 - jsonfile@6.1.0: + jsonfile@6.2.0: dependencies: universalify: 2.0.1 optionalDependencies: @@ -23130,7 +23952,7 @@ snapshots: lodash.isstring: 4.0.1 lodash.once: 4.1.1 ms: 2.1.3 - semver: 7.7.2 + semver: 7.7.3 jsprim@1.4.2: dependencies: @@ -23165,9 +23987,9 @@ snapshots: jwks-rsa@3.2.0: dependencies: - '@types/express': 4.17.23 + '@types/express': 4.17.25 '@types/jsonwebtoken': 9.0.10 - debug: 4.4.1 + debug: 4.4.3 jose: 4.15.9 limiter: 1.1.5 lru-memoizer: 2.3.0 @@ -23216,31 +24038,7 @@ snapshots: kleur@4.1.5: {} - knex@3.1.0(better-sqlite3@11.10.0)(mysql2@3.14.1)(pg@8.16.3)(sqlite3@5.1.7): - dependencies: - colorette: 2.0.19 - commander: 10.0.1 - debug: 4.3.4 - escalade: 3.2.0 - esm: 3.2.25 - get-package-type: 0.1.0 - getopts: 2.3.0 - interpret: 2.2.0 - lodash: 4.17.21 - pg-connection-string: 2.6.2 - rechoir: 0.8.0 - resolve-from: 5.0.0 - tarn: 3.0.2 - tildify: 2.0.0 - optionalDependencies: - better-sqlite3: 11.10.0 - mysql2: 3.14.1 - pg: 8.16.3 - sqlite3: 5.1.7 - transitivePeerDependencies: - - supports-color - - knex@3.1.0(better-sqlite3@11.10.0)(mysql2@3.14.2)(pg@8.16.3)(sqlite3@5.1.7): + knex@3.1.0(better-sqlite3@12.5.0)(mysql2@3.15.3)(pg@8.16.3)(sqlite3@5.1.7): dependencies: colorette: 2.0.19 commander: 10.0.1 @@ -23257,8 +24055,8 @@ snapshots: tarn: 3.0.2 tildify: 2.0.0 optionalDependencies: - better-sqlite3: 11.10.0 - mysql2: 3.14.2 + better-sqlite3: 12.5.0 + mysql2: 3.15.3 pg: 8.16.3 sqlite3: 5.1.7 transitivePeerDependencies: @@ -23266,18 +24064,17 @@ snapshots: kuler@2.0.0: {} - ky@1.8.2: {} + ky@1.14.0: {} - kysely@0.28.3: {} + kysely@0.28.8: {} - langsmith@0.3.53(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)): + langsmith@0.3.82(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)): dependencies: '@types/uuid': 10.0.0 chalk: 4.1.2 - console-table-printer: 2.14.6 + console-table-printer: 2.15.0 p-queue: 6.6.2 - p-retry: 4.6.2 - semver: 7.7.2 + semver: 7.7.3 uuid: 10.0.0 optionalDependencies: '@opentelemetry/api': 1.9.0 @@ -23377,7 +24174,7 @@ snapshots: prelude-ls: 1.1.2 type-check: 0.3.2 - libphonenumber-js@1.12.10: {} + libphonenumber-js@1.12.29: {} lilconfig@3.1.3: {} @@ -23462,8 +24259,6 @@ snapshots: lodash.property@4.4.2: {} - lodash.sortby@4.7.0: {} - lodash.startcase@4.4.0: {} lodash@4.17.21: {} @@ -23494,7 +24289,7 @@ snapshots: dependencies: get-func-name: 2.0.2 - loupe@3.2.0: {} + loupe@3.2.1: {} lower-case@1.1.4: {} @@ -23506,7 +24301,7 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.1.0: {} + lru-cache@11.2.2: {} lru-cache@4.1.5: dependencies: @@ -23528,28 +24323,24 @@ snapshots: lodash.clonedeep: 4.5.0 lru-cache: 6.0.0 - lru-queue@0.1.0: - dependencies: - es5-ext: 0.10.64 - - lru.min@1.1.2: {} + lru.min@1.1.3: {} ltgt@2.2.1: {} - luxon@3.7.1: {} + luxon@3.7.2: {} macos-release@2.5.1: {} magic-bytes.js@1.12.1: {} - magic-string@0.30.17: + magic-string@0.30.21: dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.5 magicast@0.3.5: dependencies: - '@babel/parser': 7.28.0 - '@babel/types': 7.28.2 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 source-map-js: 1.2.1 make-dir@1.3.0: @@ -23562,7 +24353,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.7.2 + semver: 7.7.3 make-error@1.3.6: {} @@ -23596,7 +24387,7 @@ snapshots: minipass-fetch: 1.4.1 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 - negotiator: 0.6.3 + negotiator: 0.6.4 promise-retry: 2.0.1 socks-proxy-agent: 6.2.1 ssri: 8.0.1 @@ -23633,10 +24424,12 @@ snapshots: md5.js@1.3.5: dependencies: - hash-base: 3.1.0 + hash-base: 3.1.2 inherits: 2.0.4 safe-buffer: 5.2.1 + mdn-data@2.12.2: {} + mdurl@2.0.0: {} media-typer@0.3.0: {} @@ -23658,18 +24451,9 @@ snapshots: ltgt: 2.2.1 safe-buffer: 5.1.2 - memoize-one@6.0.0: {} + memoirist@0.4.0: {} - memoizee@0.4.17: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - es6-weak-map: 2.0.3 - event-emitter: 0.3.5 - is-promise: 2.2.2 - lru-queue: 0.1.0 - next-tick: 1.1.0 - timers-ext: 0.1.8 + memoize-one@6.0.0: {} memory-cache@0.2.0: {} @@ -23691,20 +24475,20 @@ snapshots: merge2@1.4.1: {} - metascraper-author@5.49.1: + metascraper-author@5.49.5: dependencies: - '@metascraper/helpers': 5.49.1 + '@metascraper/helpers': 5.49.5 transitivePeerDependencies: - bufferutil - canvas - supports-color - utf-8-validate - metascraper-clearbit@5.49.1: + metascraper-clearbit@5.49.2: dependencies: - '@keyvhq/memoize': 2.1.9 - '@metascraper/helpers': 5.49.1 - async-memoize-one: 1.1.8 + '@keyvhq/memoize': 2.1.11 + '@metascraper/helpers': 5.49.2 + async-memoize-one: 1.1.9 got: 11.8.6 lodash: 4.17.21 transitivePeerDependencies: @@ -23713,54 +24497,54 @@ snapshots: - supports-color - utf-8-validate - metascraper-date@5.49.1: + metascraper-date@5.49.5: dependencies: - '@metascraper/helpers': 5.49.1 + '@metascraper/helpers': 5.49.5 transitivePeerDependencies: - bufferutil - canvas - supports-color - utf-8-validate - metascraper-description@5.49.1: + metascraper-description@5.49.5: dependencies: - '@metascraper/helpers': 5.49.1 + '@metascraper/helpers': 5.49.5 transitivePeerDependencies: - bufferutil - canvas - supports-color - utf-8-validate - metascraper-feed@5.49.1: + metascraper-feed@5.49.5: dependencies: - '@metascraper/helpers': 5.49.1 + '@metascraper/helpers': 5.49.5 transitivePeerDependencies: - bufferutil - canvas - supports-color - utf-8-validate - metascraper-image@5.49.1: + metascraper-image@5.49.5: dependencies: - '@metascraper/helpers': 5.49.1 + '@metascraper/helpers': 5.49.5 transitivePeerDependencies: - bufferutil - canvas - supports-color - utf-8-validate - metascraper-lang@5.49.1: + metascraper-lang@5.49.5: dependencies: - '@metascraper/helpers': 5.49.1 + '@metascraper/helpers': 5.49.5 transitivePeerDependencies: - bufferutil - canvas - supports-color - utf-8-validate - metascraper-logo@5.49.1: + metascraper-logo@5.49.5: dependencies: - '@metascraper/helpers': 5.49.1 + '@metascraper/helpers': 5.49.5 lodash: 4.17.21 transitivePeerDependencies: - bufferutil @@ -23768,39 +24552,39 @@ snapshots: - supports-color - utf-8-validate - metascraper-publisher@5.49.1: + metascraper-publisher@5.49.5: dependencies: - '@metascraper/helpers': 5.49.1 + '@metascraper/helpers': 5.49.5 transitivePeerDependencies: - bufferutil - canvas - supports-color - utf-8-validate - metascraper-title@5.49.1: + metascraper-title@5.49.5: dependencies: - '@metascraper/helpers': 5.49.1 + '@metascraper/helpers': 5.49.5 transitivePeerDependencies: - bufferutil - canvas - supports-color - utf-8-validate - metascraper-url@5.49.1: + metascraper-url@5.49.5: dependencies: - '@metascraper/helpers': 5.49.1 + '@metascraper/helpers': 5.49.5 transitivePeerDependencies: - bufferutil - canvas - supports-color - utf-8-validate - metascraper@5.49.1: + metascraper@5.49.5: dependencies: - '@metascraper/helpers': 5.49.1 + '@metascraper/helpers': 5.49.5 cheerio: 1.1.2 - debug-logfmt: 1.2.3 - whoops: 5.0.1 + debug-logfmt: 1.4.7 + whoops: 5.0.5 transitivePeerDependencies: - bufferutil - canvas @@ -23818,7 +24602,7 @@ snapshots: microsoft-capitalize@1.0.5: {} - mikro-orm@6.4.16: {} + mikro-orm@6.6.1: {} mime-db@1.33.0: {} @@ -23834,7 +24618,7 @@ snapshots: dependencies: mime-db: 1.52.0 - mime-types@3.0.1: + mime-types@3.0.2: dependencies: mime-db: 1.54.0 @@ -23854,7 +24638,7 @@ snapshots: mimic-response@4.0.0: {} - minimatch@10.0.3: + minimatch@10.1.1: dependencies: '@isaacs/brace-expansion': 5.0.0 @@ -23898,7 +24682,7 @@ snapshots: dependencies: minipass: 7.1.2 minipass-sized: 1.0.3 - minizlib: 3.0.2 + minizlib: 3.1.0 optionalDependencies: encoding: 0.1.13 @@ -23927,7 +24711,7 @@ snapshots: minipass: 3.3.6 yallist: 4.0.0 - minizlib@3.0.2: + minizlib@3.1.0: dependencies: minipass: 7.1.2 @@ -23938,300 +24722,300 @@ snapshots: for-in: 0.1.8 is-extendable: 0.1.1 - mjml-accordion@4.15.3(encoding@0.1.13): + mjml-accordion@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 lodash: 4.17.21 - mjml-core: 4.15.3(encoding@0.1.13) + mjml-core: 4.17.1(encoding@0.1.13) transitivePeerDependencies: - encoding - mjml-body@4.15.3(encoding@0.1.13): + mjml-body@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 lodash: 4.17.21 - mjml-core: 4.15.3(encoding@0.1.13) + mjml-core: 4.17.1(encoding@0.1.13) transitivePeerDependencies: - encoding - mjml-button@4.15.3(encoding@0.1.13): + mjml-button@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 lodash: 4.17.21 - mjml-core: 4.15.3(encoding@0.1.13) + mjml-core: 4.17.1(encoding@0.1.13) transitivePeerDependencies: - encoding - mjml-carousel@4.15.3(encoding@0.1.13): + mjml-carousel@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 lodash: 4.17.21 - mjml-core: 4.15.3(encoding@0.1.13) + mjml-core: 4.17.1(encoding@0.1.13) transitivePeerDependencies: - encoding - mjml-cli@4.15.3(encoding@0.1.13): + mjml-cli@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 chokidar: 3.6.0 - glob: 10.4.5 + glob: 10.5.0 html-minifier: 4.0.0 js-beautify: 1.15.4 lodash: 4.17.21 minimatch: 9.0.5 - mjml-core: 4.15.3(encoding@0.1.13) - mjml-migrate: 4.15.3(encoding@0.1.13) - mjml-parser-xml: 4.15.3 - mjml-validator: 4.15.3 + mjml-core: 4.17.1(encoding@0.1.13) + mjml-migrate: 4.17.1(encoding@0.1.13) + mjml-parser-xml: 4.17.1 + mjml-validator: 4.17.1 yargs: 17.7.2 transitivePeerDependencies: - encoding - mjml-column@4.15.3(encoding@0.1.13): + mjml-column@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 lodash: 4.17.21 - mjml-core: 4.15.3(encoding@0.1.13) + mjml-core: 4.17.1(encoding@0.1.13) transitivePeerDependencies: - encoding - mjml-core@4.15.3(encoding@0.1.13): + mjml-core@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 cheerio: 1.0.0-rc.12 detect-node: 2.1.0 html-minifier: 4.0.0 js-beautify: 1.15.4 juice: 10.0.1(encoding@0.1.13) lodash: 4.17.21 - mjml-migrate: 4.15.3(encoding@0.1.13) - mjml-parser-xml: 4.15.3 - mjml-validator: 4.15.3 + mjml-migrate: 4.17.1(encoding@0.1.13) + mjml-parser-xml: 4.17.1 + mjml-validator: 4.17.1 transitivePeerDependencies: - encoding - mjml-divider@4.15.3(encoding@0.1.13): + mjml-divider@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 lodash: 4.17.21 - mjml-core: 4.15.3(encoding@0.1.13) + mjml-core: 4.17.1(encoding@0.1.13) transitivePeerDependencies: - encoding - mjml-group@4.15.3(encoding@0.1.13): + mjml-group@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 lodash: 4.17.21 - mjml-core: 4.15.3(encoding@0.1.13) + mjml-core: 4.17.1(encoding@0.1.13) transitivePeerDependencies: - encoding - mjml-head-attributes@4.15.3(encoding@0.1.13): + mjml-head-attributes@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 lodash: 4.17.21 - mjml-core: 4.15.3(encoding@0.1.13) + mjml-core: 4.17.1(encoding@0.1.13) transitivePeerDependencies: - encoding - mjml-head-breakpoint@4.15.3(encoding@0.1.13): + mjml-head-breakpoint@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 lodash: 4.17.21 - mjml-core: 4.15.3(encoding@0.1.13) + mjml-core: 4.17.1(encoding@0.1.13) transitivePeerDependencies: - encoding - mjml-head-font@4.15.3(encoding@0.1.13): + mjml-head-font@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 lodash: 4.17.21 - mjml-core: 4.15.3(encoding@0.1.13) + mjml-core: 4.17.1(encoding@0.1.13) transitivePeerDependencies: - encoding - mjml-head-html-attributes@4.15.3(encoding@0.1.13): + mjml-head-html-attributes@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 lodash: 4.17.21 - mjml-core: 4.15.3(encoding@0.1.13) + mjml-core: 4.17.1(encoding@0.1.13) transitivePeerDependencies: - encoding - mjml-head-preview@4.15.3(encoding@0.1.13): + mjml-head-preview@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 lodash: 4.17.21 - mjml-core: 4.15.3(encoding@0.1.13) + mjml-core: 4.17.1(encoding@0.1.13) transitivePeerDependencies: - encoding - mjml-head-style@4.15.3(encoding@0.1.13): + mjml-head-style@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 lodash: 4.17.21 - mjml-core: 4.15.3(encoding@0.1.13) + mjml-core: 4.17.1(encoding@0.1.13) transitivePeerDependencies: - encoding - mjml-head-title@4.15.3(encoding@0.1.13): + mjml-head-title@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 lodash: 4.17.21 - mjml-core: 4.15.3(encoding@0.1.13) + mjml-core: 4.17.1(encoding@0.1.13) transitivePeerDependencies: - encoding - mjml-head@4.15.3(encoding@0.1.13): + mjml-head@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 lodash: 4.17.21 - mjml-core: 4.15.3(encoding@0.1.13) + mjml-core: 4.17.1(encoding@0.1.13) transitivePeerDependencies: - encoding - mjml-hero@4.15.3(encoding@0.1.13): + mjml-hero@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 lodash: 4.17.21 - mjml-core: 4.15.3(encoding@0.1.13) + mjml-core: 4.17.1(encoding@0.1.13) transitivePeerDependencies: - encoding - mjml-image@4.15.3(encoding@0.1.13): + mjml-image@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 lodash: 4.17.21 - mjml-core: 4.15.3(encoding@0.1.13) + mjml-core: 4.17.1(encoding@0.1.13) transitivePeerDependencies: - encoding - mjml-migrate@4.15.3(encoding@0.1.13): + mjml-migrate@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 js-beautify: 1.15.4 lodash: 4.17.21 - mjml-core: 4.15.3(encoding@0.1.13) - mjml-parser-xml: 4.15.3 + mjml-core: 4.17.1(encoding@0.1.13) + mjml-parser-xml: 4.17.1 yargs: 17.7.2 transitivePeerDependencies: - encoding - mjml-navbar@4.15.3(encoding@0.1.13): + mjml-navbar@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 lodash: 4.17.21 - mjml-core: 4.15.3(encoding@0.1.13) + mjml-core: 4.17.1(encoding@0.1.13) transitivePeerDependencies: - encoding - mjml-parser-xml@4.15.3: + mjml-parser-xml@4.17.1: dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 detect-node: 2.1.0 htmlparser2: 9.1.0 lodash: 4.17.21 - mjml-preset-core@4.15.3(encoding@0.1.13): - dependencies: - '@babel/runtime': 7.28.2 - mjml-accordion: 4.15.3(encoding@0.1.13) - mjml-body: 4.15.3(encoding@0.1.13) - mjml-button: 4.15.3(encoding@0.1.13) - mjml-carousel: 4.15.3(encoding@0.1.13) - mjml-column: 4.15.3(encoding@0.1.13) - mjml-divider: 4.15.3(encoding@0.1.13) - mjml-group: 4.15.3(encoding@0.1.13) - mjml-head: 4.15.3(encoding@0.1.13) - mjml-head-attributes: 4.15.3(encoding@0.1.13) - mjml-head-breakpoint: 4.15.3(encoding@0.1.13) - mjml-head-font: 4.15.3(encoding@0.1.13) - mjml-head-html-attributes: 4.15.3(encoding@0.1.13) - mjml-head-preview: 4.15.3(encoding@0.1.13) - mjml-head-style: 4.15.3(encoding@0.1.13) - mjml-head-title: 4.15.3(encoding@0.1.13) - mjml-hero: 4.15.3(encoding@0.1.13) - mjml-image: 4.15.3(encoding@0.1.13) - mjml-navbar: 4.15.3(encoding@0.1.13) - mjml-raw: 4.15.3(encoding@0.1.13) - mjml-section: 4.15.3(encoding@0.1.13) - mjml-social: 4.15.3(encoding@0.1.13) - mjml-spacer: 4.15.3(encoding@0.1.13) - mjml-table: 4.15.3(encoding@0.1.13) - mjml-text: 4.15.3(encoding@0.1.13) - mjml-wrapper: 4.15.3(encoding@0.1.13) + mjml-preset-core@4.17.1(encoding@0.1.13): + dependencies: + '@babel/runtime': 7.28.4 + mjml-accordion: 4.17.1(encoding@0.1.13) + mjml-body: 4.17.1(encoding@0.1.13) + mjml-button: 4.17.1(encoding@0.1.13) + mjml-carousel: 4.17.1(encoding@0.1.13) + mjml-column: 4.17.1(encoding@0.1.13) + mjml-divider: 4.17.1(encoding@0.1.13) + mjml-group: 4.17.1(encoding@0.1.13) + mjml-head: 4.17.1(encoding@0.1.13) + mjml-head-attributes: 4.17.1(encoding@0.1.13) + mjml-head-breakpoint: 4.17.1(encoding@0.1.13) + mjml-head-font: 4.17.1(encoding@0.1.13) + mjml-head-html-attributes: 4.17.1(encoding@0.1.13) + mjml-head-preview: 4.17.1(encoding@0.1.13) + mjml-head-style: 4.17.1(encoding@0.1.13) + mjml-head-title: 4.17.1(encoding@0.1.13) + mjml-hero: 4.17.1(encoding@0.1.13) + mjml-image: 4.17.1(encoding@0.1.13) + mjml-navbar: 4.17.1(encoding@0.1.13) + mjml-raw: 4.17.1(encoding@0.1.13) + mjml-section: 4.17.1(encoding@0.1.13) + mjml-social: 4.17.1(encoding@0.1.13) + mjml-spacer: 4.17.1(encoding@0.1.13) + mjml-table: 4.17.1(encoding@0.1.13) + mjml-text: 4.17.1(encoding@0.1.13) + mjml-wrapper: 4.17.1(encoding@0.1.13) transitivePeerDependencies: - encoding - mjml-raw@4.15.3(encoding@0.1.13): + mjml-raw@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 lodash: 4.17.21 - mjml-core: 4.15.3(encoding@0.1.13) + mjml-core: 4.17.1(encoding@0.1.13) transitivePeerDependencies: - encoding - mjml-section@4.15.3(encoding@0.1.13): + mjml-section@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 lodash: 4.17.21 - mjml-core: 4.15.3(encoding@0.1.13) + mjml-core: 4.17.1(encoding@0.1.13) transitivePeerDependencies: - encoding - mjml-social@4.15.3(encoding@0.1.13): + mjml-social@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 lodash: 4.17.21 - mjml-core: 4.15.3(encoding@0.1.13) + mjml-core: 4.17.1(encoding@0.1.13) transitivePeerDependencies: - encoding - mjml-spacer@4.15.3(encoding@0.1.13): + mjml-spacer@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 lodash: 4.17.21 - mjml-core: 4.15.3(encoding@0.1.13) + mjml-core: 4.17.1(encoding@0.1.13) transitivePeerDependencies: - encoding - mjml-table@4.15.3(encoding@0.1.13): + mjml-table@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 lodash: 4.17.21 - mjml-core: 4.15.3(encoding@0.1.13) + mjml-core: 4.17.1(encoding@0.1.13) transitivePeerDependencies: - encoding - mjml-text@4.15.3(encoding@0.1.13): + mjml-text@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 lodash: 4.17.21 - mjml-core: 4.15.3(encoding@0.1.13) + mjml-core: 4.17.1(encoding@0.1.13) transitivePeerDependencies: - encoding - mjml-validator@4.15.3: + mjml-validator@4.17.1: dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 - mjml-wrapper@4.15.3(encoding@0.1.13): + mjml-wrapper@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 lodash: 4.17.21 - mjml-core: 4.15.3(encoding@0.1.13) - mjml-section: 4.15.3(encoding@0.1.13) + mjml-core: 4.17.1(encoding@0.1.13) + mjml-section: 4.17.1(encoding@0.1.13) transitivePeerDependencies: - encoding - mjml@4.15.3(encoding@0.1.13): + mjml@4.17.1(encoding@0.1.13): dependencies: - '@babel/runtime': 7.28.2 - mjml-cli: 4.15.3(encoding@0.1.13) - mjml-core: 4.15.3(encoding@0.1.13) - mjml-migrate: 4.15.3(encoding@0.1.13) - mjml-preset-core: 4.15.3(encoding@0.1.13) - mjml-validator: 4.15.3 + '@babel/runtime': 7.28.4 + mjml-cli: 4.17.1(encoding@0.1.13) + mjml-core: 4.17.1(encoding@0.1.13) + mjml-migrate: 4.17.1(encoding@0.1.13) + mjml-preset-core: 4.17.1(encoding@0.1.13) + mjml-validator: 4.17.1 transitivePeerDependencies: - encoding @@ -24243,9 +25027,7 @@ snapshots: mkdirp@1.0.4: {} - mkdirp@3.0.1: {} - - mlly@1.7.4: + mlly@1.8.0: dependencies: acorn: 8.15.0 pathe: 2.0.3 @@ -24280,22 +25062,22 @@ snapshots: dependencies: bson: 4.7.2 mongodb-connection-string-url: 2.6.0 - socks: 2.8.6 + socks: 2.8.7 optionalDependencies: - '@aws-sdk/credential-providers': 3.848.0 - '@mongodb-js/saslprep': 1.3.0 + '@aws-sdk/credential-providers': 3.940.0 + '@mongodb-js/saslprep': 1.3.2 transitivePeerDependencies: - aws-crt - mongodb@6.18.0(@aws-sdk/credential-providers@3.848.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.6): + mongodb@6.21.0(@aws-sdk/credential-providers@3.940.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.7): dependencies: - '@mongodb-js/saslprep': 1.3.0 + '@mongodb-js/saslprep': 1.3.2 bson: 6.10.4 mongodb-connection-string-url: 3.0.2 optionalDependencies: - '@aws-sdk/credential-providers': 3.848.0 + '@aws-sdk/credential-providers': 3.940.0 gcp-metadata: 5.3.0(encoding@0.1.13) - socks: 2.8.6 + socks: 2.8.7 mongoose@6.13.8: dependencies: @@ -24314,7 +25096,7 @@ snapshots: mquery@4.0.3: dependencies: - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -24341,7 +25123,7 @@ snapshots: multer-google-storage@1.3.0(encoding@0.1.13): dependencies: '@google-cloud/storage': 1.7.0(encoding@0.1.13) - '@types/express': 4.17.23 + '@types/express': 4.17.25 '@types/google-cloud__storage': 1.7.2 multer: 1.4.4 uuid: 3.4.0 @@ -24380,26 +25162,14 @@ snapshots: mute-stream@0.0.8: {} - mysql2@3.14.1: - dependencies: - aws-ssl-profiles: 1.1.2 - denque: 2.1.0 - generate-function: 2.3.1 - iconv-lite: 0.6.3 - long: 5.3.2 - lru.min: 1.1.2 - named-placeholders: 1.1.3 - seq-queue: 0.0.5 - sqlstring: 2.3.3 - - mysql2@3.14.2: + mysql2@3.15.3: dependencies: aws-ssl-profiles: 1.1.2 denque: 2.1.0 generate-function: 2.3.1 - iconv-lite: 0.6.3 + iconv-lite: 0.7.0 long: 5.3.2 - lru.min: 1.1.2 + lru.min: 1.1.3 named-placeholders: 1.1.3 seq-queue: 0.0.5 sqlstring: 2.3.3 @@ -24414,7 +25184,7 @@ snapshots: dependencies: lru-cache: 7.18.3 - nan@2.23.0: {} + nan@2.23.1: {} nanoid@3.3.11: {} @@ -24444,15 +25214,13 @@ snapshots: dependencies: type-fest: 0.4.1 - next-tick@1.1.0: {} - nice-grpc-common@2.0.2: dependencies: ts-error: 1.0.6 - nice-grpc@2.1.12: + nice-grpc@2.1.14: dependencies: - '@grpc/grpc-js': 1.13.4 + '@grpc/grpc-js': 1.14.1 abort-controller-x: 0.4.3 nice-grpc-common: 2.0.2 @@ -24464,15 +25232,15 @@ snapshots: nock@13.5.6: dependencies: - debug: 4.4.1 + debug: 4.4.3 json-stringify-safe: 5.0.1 propagate: 2.0.1 transitivePeerDependencies: - supports-color - node-abi@3.75.0: + node-abi@3.85.0: dependencies: - semver: 7.7.2 + semver: 7.7.3 node-addon-api@7.1.1: {} @@ -24506,23 +25274,23 @@ snapshots: node-forge@0.10.0: {} - node-forge@1.3.1: {} + node-forge@1.3.2: {} node-gyp-build@4.1.1: {} node-gyp-build@4.8.4: {} - node-gyp@11.2.0: + node-gyp@11.5.0: dependencies: env-paths: 2.2.1 - exponential-backoff: 3.1.2 + exponential-backoff: 3.1.3 graceful-fs: 4.2.11 make-fetch-happen: 14.0.3 nopt: 8.1.0 proc-log: 5.0.0 - semver: 7.7.2 - tar: 7.4.3 - tinyglobby: 0.2.14 + semver: 7.7.3 + tar: 7.5.2 + tinyglobby: 0.2.15 which: 5.0.0 transitivePeerDependencies: - supports-color @@ -24536,7 +25304,7 @@ snapshots: nopt: 5.0.0 npmlog: 6.0.2 rimraf: 3.0.2 - semver: 7.7.2 + semver: 7.7.3 tar: 6.2.1 which: 2.0.2 transitivePeerDependencies: @@ -24546,9 +25314,9 @@ snapshots: node-int64@0.4.0: {} - node-mock-http@1.0.1: {} + node-mock-http@1.0.3: {} - node-mocks-http@1.17.2(@types/express@5.0.3)(@types/node@17.0.45): + node-mocks-http@1.17.2(@types/express@5.0.5)(@types/node@17.0.45): dependencies: accepts: 1.3.8 content-disposition: 0.5.4 @@ -24561,10 +25329,10 @@ snapshots: range-parser: 1.2.1 type-is: 1.6.18 optionalDependencies: - '@types/express': 5.0.3 + '@types/express': 5.0.5 '@types/node': 17.0.45 - node-releases@2.0.19: {} + node-releases@2.0.27: {} node-stream-zip@1.15.0: {} @@ -24591,7 +25359,7 @@ snapshots: normalize-url@6.1.0: {} - normalize-url@8.0.2: {} + normalize-url@8.1.0: {} npm-bundled@1.1.2: dependencies: @@ -24636,11 +25404,13 @@ snapshots: null-prototype-object@1.0.0: {} + null-prototype-object@1.2.5: {} + number-is-nan@1.0.1: {} numfmt@3.2.3: {} - nwsapi@2.2.21: {} + nwsapi@2.2.22: {} oauth-sign@0.9.0: {} @@ -24661,13 +25431,13 @@ snapshots: has-symbols: 1.1.0 object-keys: 1.1.1 - ollama-ai-provider@1.2.0(zod@4.0.10): + ollama-ai-provider@1.2.0(zod@4.1.13): dependencies: '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@4.0.10) + '@ai-sdk/provider-utils': 2.2.8(zod@4.1.13) partial-json: 0.1.7 optionalDependencies: - zod: 4.0.10 + zod: 4.1.13 omggif@1.0.10: {} @@ -24681,8 +25451,6 @@ snapshots: dependencies: ee-first: 1.1.1 - on-headers@1.0.2: {} - on-headers@1.1.0: {} once@1.4.0: @@ -24702,13 +25470,15 @@ snapshots: is-docker: 2.2.1 is-wsl: 2.2.0 + openapi-types@12.1.3: {} + openapi3-ts@4.4.0: dependencies: - yaml: 2.8.0 + yaml: 2.8.1 openapi3-ts@4.5.0: dependencies: - yaml: 2.8.0 + yaml: 2.8.1 optionator@0.8.3: dependencies: @@ -24799,7 +25569,7 @@ snapshots: aggregate-error: 3.1.0 optional: true - p-map@7.0.3: {} + p-map@7.0.4: {} p-queue@6.6.2: dependencies: @@ -24823,12 +25593,12 @@ snapshots: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.4.1 + debug: 4.3.4 get-uri: 3.0.2 http-proxy-agent: 4.0.1 https-proxy-agent: 5.0.1 pac-resolver: 5.0.1 - raw-body: 2.5.2 + raw-body: 2.5.3 socks-proxy-agent: 5.0.1 transitivePeerDependencies: - supports-color @@ -24837,7 +25607,7 @@ snapshots: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 agent-base: 7.1.4 - debug: 4.4.1 + debug: 4.4.3 get-uri: 6.0.5 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 @@ -24868,7 +25638,7 @@ snapshots: package-manager-detector@0.2.11: dependencies: - quansync: 0.2.10 + quansync: 0.2.11 pako@1.0.11: {} @@ -24896,7 +25666,7 @@ snapshots: parse-json@5.2.0: dependencies: '@babel/code-frame': 7.27.1 - error-ex: 1.3.2 + error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -24911,7 +25681,7 @@ snapshots: parse-srcset@1.0.2: {} - parse-uri@2.0.0: {} + parse-uri@2.0.4: {} parse-url@6.0.5: dependencies: @@ -24933,6 +25703,10 @@ snapshots: dependencies: entities: 6.0.1 + parse5@8.0.0: + dependencies: + entities: 6.0.1 + parseurl@1.3.3: {} partial-json@0.1.7: {} @@ -24963,16 +25737,16 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 - path-scurry@2.0.0: + path-scurry@2.0.1: dependencies: - lru-cache: 11.1.0 + lru-cache: 11.2.2 minipass: 7.1.2 path-to-regexp@0.1.12: {} path-to-regexp@3.3.0: {} - path-to-regexp@8.2.0: {} + path-to-regexp@8.3.0: {} path-type@4.0.0: {} @@ -25050,9 +25824,9 @@ snapshots: dependencies: split2: 4.2.0 - pino-pretty@13.1.1: + pino-pretty@13.1.2: dependencies: - colorette: 2.0.19 + colorette: 2.0.20 dateformat: 4.6.3 fast-copy: 3.0.2 fast-safe-stringify: 2.1.1 @@ -25062,16 +25836,16 @@ snapshots: on-exit-leak-free: 2.1.2 pino-abstract-transport: 2.0.0 pump: 3.0.3 - secure-json-parse: 4.0.0 + secure-json-parse: 4.1.0 sonic-boom: 4.2.0 - strip-json-comments: 5.0.2 + strip-json-comments: 5.0.3 pino-std-serializers@7.0.0: {} - pino@9.7.0: + pino@9.14.0: dependencies: + '@pinojs/redact': 0.4.0 atomic-sleep: 1.0.0 - fast-redact: 3.5.0 on-exit-leak-free: 2.1.2 pino-abstract-transport: 2.0.0 pino-std-serializers: 7.0.0 @@ -25095,7 +25869,7 @@ snapshots: pkg-types@1.3.1: dependencies: confbox: 0.1.8 - mlly: 1.7.4 + mlly: 1.8.0 pathe: 2.0.3 platform@1.3.6: {} @@ -25106,23 +25880,22 @@ snapshots: pngjs@7.0.0: {} - portfinder@1.0.37: + portfinder@1.0.38: dependencies: async: 3.2.6 - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color possible-typed-array-names@1.1.0: {} - postcss-load-config@6.0.1(jiti@2.5.1)(postcss@8.5.6)(tsx@4.20.3)(yaml@2.8.0): + postcss-load-config@6.0.1(postcss@8.5.6)(tsx@4.20.6)(yaml@2.8.1): dependencies: lilconfig: 3.1.3 optionalDependencies: - jiti: 2.5.1 postcss: 8.5.6 - tsx: 4.20.3 - yaml: 2.8.0 + tsx: 4.20.6 + yaml: 2.8.1 postcss@8.5.6: dependencies: @@ -25275,17 +26048,17 @@ snapshots: prebuild-install@7.1.3: dependencies: - detect-libc: 2.0.4 + detect-libc: 2.1.2 expand-template: 2.0.3 github-from-package: 0.0.0 minimist: 1.2.8 mkdirp-classic: 0.5.3 napi-build-utils: 2.0.0 - node-abi: 3.75.0 + node-abi: 3.85.0 pump: 3.0.3 rc: 1.2.8 simple-get: 4.0.1 - tar-fs: 2.1.3 + tar-fs: 2.1.4 tunnel-agent: 0.6.0 prelude-ls@1.1.2: {} @@ -25294,8 +26067,6 @@ snapshots: prettier@2.8.8: {} - prettier@3.6.2: {} - pretty-format@27.5.1: dependencies: ansi-regex: 5.0.1 @@ -25312,7 +26083,7 @@ snapshots: dependencies: parse-ms: 2.1.0 - pretty-quick@3.3.1(prettier@3.6.2): + pretty-quick@3.3.1(prettier@2.8.8): dependencies: execa: 4.1.0 find-up: 4.1.0 @@ -25320,17 +26091,17 @@ snapshots: mri: 1.2.0 picocolors: 1.1.1 picomatch: 3.0.1 - prettier: 3.6.2 + prettier: 2.8.8 tslib: 2.8.1 - pretty-quick@4.2.2(prettier@3.6.2): + pretty-quick@4.2.2(prettier@2.8.8): dependencies: '@pkgr/core': 0.2.9 ignore: 7.0.5 mri: 1.2.0 picocolors: 1.1.1 picomatch: 4.0.3 - prettier: 3.6.2 + prettier: 2.8.8 tinyexec: 0.3.2 tslib: 2.8.1 @@ -25354,6 +26125,12 @@ snapshots: progress@2.0.3: {} + prom-client@15.1.3: + dependencies: + '@opentelemetry/api': 1.9.0 + tdigest: 0.1.2 + optional: true + promise-inflight@1.0.1: optional: true @@ -25392,15 +26169,15 @@ snapshots: proto3-json-serializer@1.1.1: dependencies: - protobufjs: 7.5.3 + protobufjs: 7.5.4 proto3-json-serializer@2.0.2: dependencies: - protobufjs: 7.5.3 + protobufjs: 7.5.4 - proto3-json-serializer@3.0.1: + proto3-json-serializer@3.0.4: dependencies: - protobufjs: 7.5.3 + protobufjs: 7.5.4 protobufjs-cli@1.1.1(protobufjs@7.2.4): dependencies: @@ -25409,11 +26186,11 @@ snapshots: espree: 9.6.1 estraverse: 5.3.0 glob: 8.1.0 - jsdoc: 4.0.4 + jsdoc: 4.0.5 minimist: 1.2.8 protobufjs: 7.2.4 - semver: 7.7.2 - tmp: 0.2.3 + semver: 7.7.3 + tmp: 0.2.5 uglify-js: 3.19.3 protobufjs@7.2.4: @@ -25428,10 +26205,10 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 18.19.120 + '@types/node': 22.19.1 long: 5.3.2 - protobufjs@7.5.3: + protobufjs@7.5.4: dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/base64': 1.1.2 @@ -25443,7 +26220,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 18.19.120 + '@types/node': 22.19.1 long: 5.3.2 protocols@1.4.8: {} @@ -25458,7 +26235,7 @@ snapshots: proxy-agent@5.0.0: dependencies: agent-base: 6.0.2 - debug: 4.4.1 + debug: 4.3.4 http-proxy-agent: 4.0.1 https-proxy-agent: 5.0.1 lru-cache: 5.1.1 @@ -25471,7 +26248,7 @@ snapshots: proxy-agent@6.5.0: dependencies: agent-base: 7.1.4 - debug: 4.4.1 + debug: 4.4.3 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 lru-cache: 7.18.3 @@ -25533,99 +26310,104 @@ snapshots: dependencies: escape-goat: 2.1.1 - puppeteer-core@24.15.0: + puppeteer-core@24.31.0: dependencies: - '@puppeteer/browsers': 2.10.6 - chromium-bidi: 7.2.0(devtools-protocol@0.0.1464554) - debug: 4.4.1 - devtools-protocol: 0.0.1464554 + '@puppeteer/browsers': 2.10.13 + chromium-bidi: 11.0.0(devtools-protocol@0.0.1521046) + debug: 4.4.3 + devtools-protocol: 0.0.1521046 typed-query-selector: 2.12.0 + webdriver-bidi-protocol: 0.3.9 ws: 8.18.3 transitivePeerDependencies: + - bare-abort-controller - bare-buffer - bufferutil + - react-native-b4a - supports-color - utf-8-validate - puppeteer-extra-plugin-adblocker@2.13.6(encoding@0.1.13)(puppeteer-core@24.15.0)(puppeteer-extra@3.3.6(puppeteer-core@24.15.0)(puppeteer@24.15.0(typescript@4.9.5)))(puppeteer@24.15.0(typescript@4.9.5)): + puppeteer-extra-plugin-adblocker@2.13.6(encoding@0.1.13)(puppeteer-core@24.31.0)(puppeteer-extra@3.3.6(puppeteer-core@24.31.0)(puppeteer@24.31.0(typescript@4.9.5)))(puppeteer@24.31.0(typescript@4.9.5)): dependencies: - '@cliqz/adblocker-puppeteer': 1.23.8(puppeteer@24.15.0(typescript@4.9.5)) - debug: 4.4.1 + '@cliqz/adblocker-puppeteer': 1.23.8(puppeteer@24.31.0(typescript@4.9.5)) + debug: 4.4.3 node-fetch: 2.7.0(encoding@0.1.13) - puppeteer-extra-plugin: 3.2.3(puppeteer-extra@3.3.6(puppeteer-core@24.15.0)(puppeteer@24.15.0(typescript@4.9.5))) + puppeteer-extra-plugin: 3.2.3(puppeteer-extra@3.3.6(puppeteer-core@24.31.0)(puppeteer@24.31.0(typescript@4.9.5))) optionalDependencies: - puppeteer: 24.15.0(typescript@4.9.5) - puppeteer-core: 24.15.0 - puppeteer-extra: 3.3.6(puppeteer-core@24.15.0)(puppeteer@24.15.0(typescript@4.9.5)) + puppeteer: 24.31.0(typescript@4.9.5) + puppeteer-core: 24.31.0 + puppeteer-extra: 3.3.6(puppeteer-core@24.31.0)(puppeteer@24.31.0(typescript@4.9.5)) transitivePeerDependencies: - encoding - playwright-extra - supports-color - puppeteer-extra-plugin-stealth@2.11.2(puppeteer-extra@3.3.6(puppeteer-core@24.15.0)(puppeteer@24.15.0(typescript@4.9.5))): + puppeteer-extra-plugin-stealth@2.11.2(puppeteer-extra@3.3.6(puppeteer-core@24.31.0)(puppeteer@24.31.0(typescript@4.9.5))): dependencies: - debug: 4.4.1 - puppeteer-extra-plugin: 3.2.3(puppeteer-extra@3.3.6(puppeteer-core@24.15.0)(puppeteer@24.15.0(typescript@4.9.5))) - puppeteer-extra-plugin-user-preferences: 2.4.1(puppeteer-extra@3.3.6(puppeteer-core@24.15.0)(puppeteer@24.15.0(typescript@4.9.5))) + debug: 4.4.3 + puppeteer-extra-plugin: 3.2.3(puppeteer-extra@3.3.6(puppeteer-core@24.31.0)(puppeteer@24.31.0(typescript@4.9.5))) + puppeteer-extra-plugin-user-preferences: 2.4.1(puppeteer-extra@3.3.6(puppeteer-core@24.31.0)(puppeteer@24.31.0(typescript@4.9.5))) optionalDependencies: - puppeteer-extra: 3.3.6(puppeteer-core@24.15.0)(puppeteer@24.15.0(typescript@4.9.5)) + puppeteer-extra: 3.3.6(puppeteer-core@24.31.0)(puppeteer@24.31.0(typescript@4.9.5)) transitivePeerDependencies: - supports-color - puppeteer-extra-plugin-user-data-dir@2.4.1(puppeteer-extra@3.3.6(puppeteer-core@24.15.0)(puppeteer@24.15.0(typescript@4.9.5))): + puppeteer-extra-plugin-user-data-dir@2.4.1(puppeteer-extra@3.3.6(puppeteer-core@24.31.0)(puppeteer@24.31.0(typescript@4.9.5))): dependencies: - debug: 4.4.1 + debug: 4.4.3 fs-extra: 10.1.0 - puppeteer-extra-plugin: 3.2.3(puppeteer-extra@3.3.6(puppeteer-core@24.15.0)(puppeteer@24.15.0(typescript@4.9.5))) + puppeteer-extra-plugin: 3.2.3(puppeteer-extra@3.3.6(puppeteer-core@24.31.0)(puppeteer@24.31.0(typescript@4.9.5))) rimraf: 3.0.2 optionalDependencies: - puppeteer-extra: 3.3.6(puppeteer-core@24.15.0)(puppeteer@24.15.0(typescript@4.9.5)) + puppeteer-extra: 3.3.6(puppeteer-core@24.31.0)(puppeteer@24.31.0(typescript@4.9.5)) transitivePeerDependencies: - supports-color - puppeteer-extra-plugin-user-preferences@2.4.1(puppeteer-extra@3.3.6(puppeteer-core@24.15.0)(puppeteer@24.15.0(typescript@4.9.5))): + puppeteer-extra-plugin-user-preferences@2.4.1(puppeteer-extra@3.3.6(puppeteer-core@24.31.0)(puppeteer@24.31.0(typescript@4.9.5))): dependencies: - debug: 4.4.1 + debug: 4.4.3 deepmerge: 4.3.1 - puppeteer-extra-plugin: 3.2.3(puppeteer-extra@3.3.6(puppeteer-core@24.15.0)(puppeteer@24.15.0(typescript@4.9.5))) - puppeteer-extra-plugin-user-data-dir: 2.4.1(puppeteer-extra@3.3.6(puppeteer-core@24.15.0)(puppeteer@24.15.0(typescript@4.9.5))) + puppeteer-extra-plugin: 3.2.3(puppeteer-extra@3.3.6(puppeteer-core@24.31.0)(puppeteer@24.31.0(typescript@4.9.5))) + puppeteer-extra-plugin-user-data-dir: 2.4.1(puppeteer-extra@3.3.6(puppeteer-core@24.31.0)(puppeteer@24.31.0(typescript@4.9.5))) optionalDependencies: - puppeteer-extra: 3.3.6(puppeteer-core@24.15.0)(puppeteer@24.15.0(typescript@4.9.5)) + puppeteer-extra: 3.3.6(puppeteer-core@24.31.0)(puppeteer@24.31.0(typescript@4.9.5)) transitivePeerDependencies: - supports-color - puppeteer-extra-plugin@3.2.3(puppeteer-extra@3.3.6(puppeteer-core@24.15.0)(puppeteer@24.15.0(typescript@4.9.5))): + puppeteer-extra-plugin@3.2.3(puppeteer-extra@3.3.6(puppeteer-core@24.31.0)(puppeteer@24.31.0(typescript@4.9.5))): dependencies: '@types/debug': 4.1.12 - debug: 4.4.1 + debug: 4.4.3 merge-deep: 3.0.3 optionalDependencies: - puppeteer-extra: 3.3.6(puppeteer-core@24.15.0)(puppeteer@24.15.0(typescript@4.9.5)) + puppeteer-extra: 3.3.6(puppeteer-core@24.31.0)(puppeteer@24.31.0(typescript@4.9.5)) transitivePeerDependencies: - supports-color - puppeteer-extra@3.3.6(puppeteer-core@24.15.0)(puppeteer@24.15.0(typescript@4.9.5)): + puppeteer-extra@3.3.6(puppeteer-core@24.31.0)(puppeteer@24.31.0(typescript@4.9.5)): dependencies: '@types/debug': 4.1.12 - debug: 4.4.1 + debug: 4.4.3 deepmerge: 4.3.1 optionalDependencies: - puppeteer: 24.15.0(typescript@4.9.5) - puppeteer-core: 24.15.0 + puppeteer: 24.31.0(typescript@4.9.5) + puppeteer-core: 24.31.0 transitivePeerDependencies: - supports-color - puppeteer@24.15.0(typescript@4.9.5): + puppeteer@24.31.0(typescript@4.9.5): dependencies: - '@puppeteer/browsers': 2.10.6 - chromium-bidi: 7.2.0(devtools-protocol@0.0.1464554) + '@puppeteer/browsers': 2.10.13 + chromium-bidi: 11.0.0(devtools-protocol@0.0.1521046) cosmiconfig: 9.0.0(typescript@4.9.5) - devtools-protocol: 0.0.1464554 - puppeteer-core: 24.15.0 + devtools-protocol: 0.0.1521046 + puppeteer-core: 24.31.0 typed-query-selector: 2.12.0 transitivePeerDependencies: + - bare-abort-controller - bare-buffer - bufferutil + - react-native-b4a - supports-color - typescript - utf-8-validate @@ -25644,7 +26426,7 @@ snapshots: qs@6.5.3: {} - quansync@0.2.10: {} + quansync@0.2.11: {} query-string@6.14.1: dependencies: @@ -25691,11 +26473,18 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 - raw-body@3.0.0: + raw-body@2.5.3: dependencies: bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.6.3 + http-errors: 2.0.1 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + raw-body@3.0.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.1 + iconv-lite: 0.7.0 unpipe: 1.0.0 rc@1.2.8: @@ -25705,11 +26494,11 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - re2@1.22.1: + re2@1.22.3: dependencies: install-artifact-from-github: 1.4.0 - nan: 2.23.0 - node-gyp: 11.2.0 + nan: 2.23.1 + node-gyp: 11.5.0 transitivePeerDependencies: - supports-color @@ -25717,12 +26506,12 @@ snapshots: react-is@18.3.1: {} - react@19.1.1: {} + react@19.2.0: {} read-yaml-file@1.1.0: dependencies: graceful-fs: 4.2.11 - js-yaml: 3.14.1 + js-yaml: 3.14.2 pify: 4.0.1 strip-bom: 3.0.0 @@ -25777,11 +26566,11 @@ snapshots: rechoir@0.6.2: dependencies: - resolve: 1.22.10 + resolve: 1.22.11 rechoir@0.8.0: dependencies: - resolve: 1.22.10 + resolve: 1.22.11 redis-errors@1.2.0: {} @@ -25789,17 +26578,17 @@ snapshots: dependencies: redis-errors: 1.2.0 - redis@5.6.1: + redis@5.10.0: dependencies: - '@redis/bloom': 5.6.1(@redis/client@5.6.1) - '@redis/client': 5.6.1 - '@redis/json': 5.6.1(@redis/client@5.6.1) - '@redis/search': 5.6.1(@redis/client@5.6.1) - '@redis/time-series': 5.6.1(@redis/client@5.6.1) + '@redis/bloom': 5.10.0(@redis/client@5.10.0) + '@redis/client': 5.10.0 + '@redis/json': 5.10.0(@redis/client@5.10.0) + '@redis/search': 5.10.0(@redis/client@5.10.0) + '@redis/time-series': 5.10.0(@redis/client@5.10.0) redux@4.2.1: dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 reflect-metadata@0.1.14: {} @@ -25930,9 +26719,9 @@ snapshots: require-in-the-middle@7.5.2: dependencies: - debug: 4.4.1 + debug: 4.4.3 module-details-from-path: 1.0.4 - resolve: 1.22.10 + resolve: 1.22.11 transitivePeerDependencies: - supports-color @@ -25960,7 +26749,7 @@ snapshots: resolve.exports@2.0.3: {} - resolve@1.22.10: + resolve@1.22.11: dependencies: is-core-module: 2.16.1 path-parse: 1.0.7 @@ -26001,23 +26790,22 @@ snapshots: retry-request@5.0.2: dependencies: - debug: 4.4.1 + debug: 4.4.3 extend: 3.0.2 transitivePeerDependencies: - supports-color retry-request@7.0.2(encoding@0.1.13): dependencies: - '@types/request': 2.48.12 + '@types/request': 2.48.13 extend: 3.0.2 teeny-request: 9.0.0(encoding@0.1.13) transitivePeerDependencies: - encoding - supports-color - retry-request@8.0.0: + retry-request@8.0.2: dependencies: - '@types/request': 2.48.12 extend: 3.0.2 teeny-request: 10.1.0 transitivePeerDependencies: @@ -26039,46 +26827,48 @@ snapshots: rimraf@5.0.10: dependencies: - glob: 10.4.5 + glob: 10.5.0 - rimraf@6.0.1: + rimraf@6.1.2: dependencies: - glob: 11.0.3 + glob: 13.0.0 package-json-from-dist: 1.0.1 - rollup@4.46.1: + rollup@4.53.3: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.46.1 - '@rollup/rollup-android-arm64': 4.46.1 - '@rollup/rollup-darwin-arm64': 4.46.1 - '@rollup/rollup-darwin-x64': 4.46.1 - '@rollup/rollup-freebsd-arm64': 4.46.1 - '@rollup/rollup-freebsd-x64': 4.46.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.46.1 - '@rollup/rollup-linux-arm-musleabihf': 4.46.1 - '@rollup/rollup-linux-arm64-gnu': 4.46.1 - '@rollup/rollup-linux-arm64-musl': 4.46.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.46.1 - '@rollup/rollup-linux-ppc64-gnu': 4.46.1 - '@rollup/rollup-linux-riscv64-gnu': 4.46.1 - '@rollup/rollup-linux-riscv64-musl': 4.46.1 - '@rollup/rollup-linux-s390x-gnu': 4.46.1 - '@rollup/rollup-linux-x64-gnu': 4.46.1 - '@rollup/rollup-linux-x64-musl': 4.46.1 - '@rollup/rollup-win32-arm64-msvc': 4.46.1 - '@rollup/rollup-win32-ia32-msvc': 4.46.1 - '@rollup/rollup-win32-x64-msvc': 4.46.1 + '@rollup/rollup-android-arm-eabi': 4.53.3 + '@rollup/rollup-android-arm64': 4.53.3 + '@rollup/rollup-darwin-arm64': 4.53.3 + '@rollup/rollup-darwin-x64': 4.53.3 + '@rollup/rollup-freebsd-arm64': 4.53.3 + '@rollup/rollup-freebsd-x64': 4.53.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.53.3 + '@rollup/rollup-linux-arm-musleabihf': 4.53.3 + '@rollup/rollup-linux-arm64-gnu': 4.53.3 + '@rollup/rollup-linux-arm64-musl': 4.53.3 + '@rollup/rollup-linux-loong64-gnu': 4.53.3 + '@rollup/rollup-linux-ppc64-gnu': 4.53.3 + '@rollup/rollup-linux-riscv64-gnu': 4.53.3 + '@rollup/rollup-linux-riscv64-musl': 4.53.3 + '@rollup/rollup-linux-s390x-gnu': 4.53.3 + '@rollup/rollup-linux-x64-gnu': 4.53.3 + '@rollup/rollup-linux-x64-musl': 4.53.3 + '@rollup/rollup-openharmony-arm64': 4.53.3 + '@rollup/rollup-win32-arm64-msvc': 4.53.3 + '@rollup/rollup-win32-ia32-msvc': 4.53.3 + '@rollup/rollup-win32-x64-gnu': 4.53.3 + '@rollup/rollup-win32-x64-msvc': 4.53.3 fsevents: 2.3.3 router@2.2.0: dependencies: - debug: 4.4.1 + debug: 4.4.3 depd: 2.0.0 is-promise: 4.0.0 parseurl: 1.3.3 - path-to-regexp: 8.2.0 + path-to-regexp: 8.3.0 transitivePeerDependencies: - supports-color @@ -26137,7 +26927,7 @@ snapshots: sax-stream@1.3.0: dependencies: debug: 2.6.9 - sax: 1.4.1 + sax: 1.4.3 transitivePeerDependencies: - supports-color @@ -26145,7 +26935,7 @@ snapshots: sax@1.2.1: {} - sax@1.4.1: {} + sax@1.4.3: {} saxes@6.0.0: dependencies: @@ -26158,7 +26948,7 @@ snapshots: secure-json-parse@2.7.0: {} - secure-json-parse@4.0.0: {} + secure-json-parse@4.1.0: {} semver-diff@3.1.1: dependencies: @@ -26172,7 +26962,7 @@ snapshots: dependencies: lru-cache: 6.0.0 - semver@7.7.2: {} + semver@7.7.3: {} send@0.19.0: dependencies: @@ -26194,13 +26984,13 @@ snapshots: send@1.2.0: dependencies: - debug: 4.4.1 + debug: 4.4.3 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 fresh: 2.0.0 - http-errors: 2.0.0 - mime-types: 3.0.1 + http-errors: 2.0.1 + mime-types: 3.0.2 ms: 2.1.3 on-finished: 2.4.1 range-parser: 1.2.1 @@ -26212,11 +27002,11 @@ snapshots: sequelize-pool@7.1.0: {} - sequelize@6.37.7(mysql2@3.14.2)(pg@8.16.3)(sqlite3@5.1.7): + sequelize@6.37.7(mysql2@3.15.3)(pg@8.16.3)(sqlite3@5.1.7): dependencies: '@types/debug': 4.1.12 - '@types/validator': 13.15.2 - debug: 4.4.1 + '@types/validator': 13.15.10 + debug: 4.4.3 dottie: 2.0.6 inflection: 1.13.4 lodash: 4.17.21 @@ -26224,14 +27014,14 @@ snapshots: moment-timezone: 0.5.48 pg-connection-string: 2.9.1 retry-as-promised: 7.1.1 - semver: 7.7.2 + semver: 7.7.3 sequelize-pool: 7.1.0 toposort-class: 1.0.1 uuid: 8.3.2 - validator: 13.15.15 + validator: 13.15.23 wkx: 0.5.0 optionalDependencies: - mysql2: 3.14.2 + mysql2: 3.15.3 pg: 8.16.3 sqlite3: 5.1.7 transitivePeerDependencies: @@ -26265,7 +27055,7 @@ snapshots: transitivePeerDependencies: - supports-color - serve@14.2.4: + serve@14.2.5: dependencies: '@zeit/schemas': 2.36.0 ajv: 8.12.0 @@ -26274,7 +27064,7 @@ snapshots: chalk: 5.0.1 chalk-template: 0.4.0 clipboardy: 3.0.0 - compression: 1.7.4 + compression: 1.8.1 is-port-reachable: 4.0.0 serve-handler: 6.1.6 update-check: 1.5.4 @@ -26283,7 +27073,7 @@ snapshots: set-blocking@2.0.0: {} - set-cookie-parser@2.7.1: {} + set-cookie-parser@2.7.2: {} set-function-length@1.2.2: dependencies: @@ -26315,7 +27105,7 @@ snapshots: dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 - to-buffer: 1.2.1 + to-buffer: 1.2.2 shallow-clone@0.1.2: dependencies: @@ -26390,15 +27180,11 @@ snapshots: once: 1.4.0 simple-concat: 1.0.1 - simple-swizzle@0.2.2: - dependencies: - is-arrayish: 0.3.2 - simple-wcswidth@1.1.2: {} simple-xml-to-json@1.2.3: {} - sirv@3.0.1: + sirv@3.0.2: dependencies: '@polka/url': 1.0.0-next.29 mrmime: 2.0.1 @@ -26421,16 +27207,16 @@ snapshots: socks-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.4.1 - socks: 2.8.6 + debug: 4.3.4 + socks: 2.8.7 transitivePeerDependencies: - supports-color socks-proxy-agent@6.2.1: dependencies: agent-base: 6.0.2 - debug: 4.4.1 - socks: 2.8.6 + debug: 4.4.3 + socks: 2.8.7 transitivePeerDependencies: - supports-color optional: true @@ -26438,14 +27224,14 @@ snapshots: socks-proxy-agent@8.0.5: dependencies: agent-base: 7.1.4 - debug: 4.4.1 - socks: 2.8.6 + debug: 4.4.3 + socks: 2.8.7 transitivePeerDependencies: - supports-color - socks@2.8.6: + socks@2.8.7: dependencies: - ip-address: 9.0.5 + ip-address: 10.1.0 smart-buffer: 4.2.0 sonic-boom@4.2.0: @@ -26466,9 +27252,7 @@ snapshots: source-map@0.6.1: {} - source-map@0.8.0-beta.0: - dependencies: - whatwg-url: 7.1.0 + source-map@0.7.6: {} spark-md5@2.0.2: {} @@ -26498,8 +27282,6 @@ snapshots: sprintf-js@1.1.2: {} - sprintf-js@1.1.3: {} - sql-highlight@6.1.0: {} sqlite3@5.1.7: @@ -26523,15 +27305,15 @@ snapshots: ssh-remote-port-forward@1.0.4: dependencies: '@types/ssh2': 0.5.52 - ssh2: 1.16.0 + ssh2: 1.17.0 - ssh2@1.16.0: + ssh2@1.17.0: dependencies: asn1: 0.2.6 bcrypt-pbkdf: 1.0.2 optionalDependencies: cpu-features: 0.0.10 - nan: 2.23.0 + nan: 2.23.1 sshpk@1.18.0: dependencies: @@ -26554,9 +27336,9 @@ snapshots: minipass: 3.3.6 optional: true - sswr@2.2.0(svelte@5.38.0): + sswr@2.2.0(svelte@5.45.2): dependencies: - svelte: 5.38.0 + svelte: 5.45.2 swrev: 4.0.0 stack-trace@0.0.10: {} @@ -26577,7 +27359,7 @@ snapshots: statuses@2.0.2: {} - std-env@3.9.0: {} + std-env@3.10.0: {} stealthy-require@1.1.1: {} @@ -26596,12 +27378,14 @@ snapshots: streamsearch@1.1.0: {} - streamx@2.22.1: + streamx@2.23.0: dependencies: + events-universal: 1.0.1 fast-fifo: 1.3.2 text-decoder: 1.2.3 - optionalDependencies: - bare-events: 2.6.0 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a strict-uri-encode@2.0.0: {} @@ -26635,7 +27419,7 @@ snapshots: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 string.prototype.trim@1.2.10: dependencies: @@ -26682,9 +27466,9 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: + strip-ansi@7.1.2: dependencies: - ansi-regex: 6.1.0 + ansi-regex: 6.2.2 strip-bom-string@1.0.0: {} @@ -26700,9 +27484,9 @@ snapshots: strip-json-comments@3.1.1: {} - strip-json-comments@5.0.2: {} + strip-json-comments@5.0.3: {} - strip-literal@3.0.0: + strip-literal@3.1.0: dependencies: js-tokens: 9.0.1 @@ -26725,14 +27509,14 @@ snapshots: ltgt: 2.2.1 readable-stream: 1.1.14 - sucrase@3.35.0: + sucrase@3.35.1: dependencies: - '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/gen-mapping': 0.3.13 commander: 4.1.1 - glob: 10.4.5 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.7 + tinyglobby: 0.2.15 ts-interface-checker: 0.1.13 super-regex@0.2.0: @@ -26745,9 +27529,9 @@ snapshots: dependencies: component-emitter: 1.3.1 cookiejar: 2.1.4 - debug: 4.4.1 + debug: 4.4.3 fast-safe-stringify: 2.1.1 - form-data: 4.0.4 + form-data: 4.0.5 formidable: 3.5.4 methods: 1.1.2 mime: 2.6.0 @@ -26755,6 +27539,10 @@ snapshots: transitivePeerDependencies: - supports-color + superjson@2.2.6: + dependencies: + copy-anything: 4.0.5 + supertest@7.1.4: dependencies: methods: 1.1.2 @@ -26776,62 +27564,65 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte@5.38.0: + svelte@5.45.2: dependencies: - '@ampproject/remapping': 2.3.0 - '@jridgewell/sourcemap-codec': 1.5.4 - '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0) + '@jridgewell/remapping': 2.3.5 + '@jridgewell/sourcemap-codec': 1.5.5 + '@sveltejs/acorn-typescript': 1.0.8(acorn@8.15.0) '@types/estree': 1.0.8 acorn: 8.15.0 aria-query: 5.3.2 axobject-query: 4.1.0 clsx: 2.1.1 + devalue: 5.5.0 esm-env: 1.2.2 - esrap: 2.1.0 + esrap: 2.2.0 is-reference: 3.0.3 locate-character: 3.0.0 - magic-string: 0.30.17 - zimmerframe: 1.1.2 + magic-string: 0.30.21 + zimmerframe: 1.1.4 - swagger-ui-dist@5.27.0: + swagger-ui-dist@5.30.3: dependencies: '@scarf/scarf': 1.4.0 swagger-ui-express@5.0.1(express@5.1.0): dependencies: express: 5.1.0 - swagger-ui-dist: 5.27.0 + swagger-ui-dist: 5.30.3 - swr@2.3.4(react@19.1.1): + swr@2.3.7(react@19.2.0): dependencies: dequal: 2.0.3 - react: 19.1.1 - use-sync-external-store: 1.5.0(react@19.1.1) + react: 19.2.0 + use-sync-external-store: 1.6.0(react@19.2.0) swrev@4.0.0: {} - swrv@1.1.0(vue@3.5.18(typescript@5.8.3)): + swrv@1.1.0(vue@3.5.25(typescript@5.9.3)): dependencies: - vue: 3.5.18(typescript@5.8.3) + vue: 3.5.25(typescript@5.9.3) symbol-tree@3.2.4: {} - tar-fs@2.1.3: + tar-fs@2.1.4: dependencies: chownr: 1.1.4 mkdirp-classic: 0.5.3 pump: 3.0.3 tar-stream: 2.2.0 - tar-fs@3.1.0: + tar-fs@3.1.1: dependencies: pump: 3.0.3 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 4.1.6 + bare-fs: 4.5.2 bare-path: 3.0.0 transitivePeerDependencies: + - bare-abort-controller - bare-buffer + - react-native-b4a tar-stream@1.6.2: dependencies: @@ -26840,7 +27631,7 @@ snapshots: end-of-stream: 1.4.5 fs-constants: 1.0.0 readable-stream: 2.3.8 - to-buffer: 1.2.1 + to-buffer: 1.2.2 xtend: 4.0.2 tar-stream@2.2.0: @@ -26853,9 +27644,12 @@ snapshots: tar-stream@3.1.7: dependencies: - b4a: 1.6.7 + b4a: 1.7.3 fast-fifo: 1.3.2 - streamx: 2.22.1 + streamx: 2.23.0 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a tar@6.2.1: dependencies: @@ -26866,17 +27660,21 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 - tar@7.4.3: + tar@7.5.2: dependencies: '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 minipass: 7.1.2 - minizlib: 3.0.2 - mkdirp: 3.0.1 + minizlib: 3.1.0 yallist: 5.0.0 tarn@3.0.2: {} + tdigest@0.1.2: + dependencies: + bintrees: 1.0.2 + optional: true + teeny-request@10.1.0: dependencies: http-proxy-agent: 5.0.0 @@ -26920,54 +27718,60 @@ snapshots: test-exclude@7.0.1: dependencies: '@istanbuljs/schema': 0.1.3 - glob: 10.4.5 + glob: 10.5.0 minimatch: 9.0.5 testcontainers@10.28.0: dependencies: '@balena/dockerignore': 1.0.2 - '@types/dockerode': 3.3.42 + '@types/dockerode': 3.3.47 archiver: 7.0.1 async-lock: 1.4.1 byline: 5.0.0 - debug: 4.4.1 + debug: 4.4.3 docker-compose: 0.24.8 - dockerode: 4.0.7 + dockerode: 4.0.9 get-port: 7.1.0 proper-lockfile: 4.1.2 properties-reader: 2.3.0 ssh-remote-port-forward: 1.0.4 - tar-fs: 3.1.0 - tmp: 0.2.3 + tar-fs: 3.1.1 + tmp: 0.2.5 undici: 5.29.0 transitivePeerDependencies: + - bare-abort-controller - bare-buffer + - react-native-b4a - supports-color - testcontainers@11.4.0: + testcontainers@11.9.0: dependencies: '@balena/dockerignore': 1.0.2 - '@types/dockerode': 3.3.42 + '@types/dockerode': 3.3.47 archiver: 7.0.1 async-lock: 1.4.1 byline: 5.0.0 - debug: 4.4.1 - docker-compose: 1.2.0 - dockerode: 4.0.7 + debug: 4.4.3 + docker-compose: 1.3.0 + dockerode: 4.0.9 get-port: 7.1.0 proper-lockfile: 4.1.2 properties-reader: 2.3.0 ssh-remote-port-forward: 1.0.4 - tar-fs: 3.1.0 - tmp: 0.2.3 - undici: 7.12.0 + tar-fs: 3.1.1 + tmp: 0.2.5 + undici: 7.16.0 transitivePeerDependencies: + - bare-abort-controller - bare-buffer + - react-native-b4a - supports-color text-decoder@1.2.3: dependencies: - b4a: 1.6.7 + b4a: 1.7.3 + transitivePeerDependencies: + - react-native-b4a text-decoding@1.0.0: {} @@ -27011,12 +27815,7 @@ snapshots: dependencies: convert-hrtime: 5.0.0 - timers-ext@0.1.8: - dependencies: - es5-ext: 0.10.64 - next-tick: 1.1.0 - - tiny-lru@11.3.4: {} + tiny-lru@11.4.5: {} tinybench@2.9.0: {} @@ -27024,9 +27823,9 @@ snapshots: tinyexec@0.3.2: {} - tinyglobby@0.2.14: + tinyglobby@0.2.15: dependencies: - fdir: 6.4.6(picomatch@4.0.3) + fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 tinypool@1.1.1: {} @@ -27037,19 +27836,19 @@ snapshots: tinyspy@3.0.2: {} - tinyspy@4.0.3: {} + tinyspy@4.0.4: {} tippy.js@6.3.7: dependencies: '@popperjs/core': 2.11.8 - tlds@1.259.0: {} + tlds@1.261.0: {} tldts-core@5.7.112: {} tldts-core@6.1.86: {} - tldts-core@7.0.10: {} + tldts-core@7.0.19: {} tldts-experimental@5.7.112: dependencies: @@ -27063,19 +27862,19 @@ snapshots: dependencies: tldts-core: 6.1.86 - tldts@7.0.10: + tldts@7.0.19: dependencies: - tldts-core: 7.0.10 + tldts-core: 7.0.19 tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 - tmp@0.2.3: {} + tmp@0.2.5: {} tmpl@1.0.5: {} - to-buffer@1.2.1: + to-buffer@1.2.2: dependencies: isarray: 2.0.5 safe-buffer: 5.2.1 @@ -27118,17 +27917,21 @@ snapshots: dependencies: tldts: 6.1.86 + tough-cookie@6.0.0: + dependencies: + tldts: 7.0.19 + tr46@0.0.3: {} - tr46@1.0.1: + tr46@3.0.0: dependencies: punycode: 2.3.1 - tr46@3.0.0: + tr46@5.1.1: dependencies: punycode: 2.3.1 - tr46@5.1.1: + tr46@6.0.0: dependencies: punycode: 2.3.1 @@ -27136,14 +27939,25 @@ snapshots: triple-beam@1.4.1: {} - trpc-to-openapi@2.3.2(@trpc/server@11.4.3(typescript@5.8.3))(zod-openapi@4.2.4(zod@4.0.10))(zod@4.0.10): + trpc-to-openapi@2.4.0(@trpc/server@11.7.2(typescript@4.9.5))(zod-openapi@4.2.4(zod@4.1.13))(zod@4.1.13): + dependencies: + '@trpc/server': 11.7.2(typescript@4.9.5) + co-body: 6.2.0 + h3: 1.15.1 + openapi3-ts: 4.4.0 + zod: 4.1.13 + zod-openapi: 4.2.4(zod@4.1.13) + optionalDependencies: + '@rollup/rollup-linux-x64-gnu': 4.6.1 + + trpc-to-openapi@2.4.0(@trpc/server@11.7.2(typescript@5.9.3))(zod-openapi@4.2.4(zod@4.1.13))(zod@4.1.13): dependencies: - '@trpc/server': 11.4.3(typescript@5.8.3) + '@trpc/server': 11.7.2(typescript@5.9.3) co-body: 6.2.0 h3: 1.15.1 openapi3-ts: 4.4.0 - zod: 4.0.10 - zod-openapi: 4.2.4(zod@4.0.10) + zod: 4.1.13 + zod-openapi: 4.2.4(zod@4.1.13) optionalDependencies: '@rollup/rollup-linux-x64-gnu': 4.6.1 @@ -27155,70 +27969,70 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.4.0(@babel/core@7.28.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.0))(jest-util@29.7.0)(jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5)))(typescript@4.9.5): + ts-jest@29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@29.7.0)(jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5)))(typescript@4.9.5): dependencies: bs-logger: 0.2.6 - ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5)) + handlebars: 4.7.8 + jest: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5)) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.7.2 + semver: 7.7.3 type-fest: 4.41.0 typescript: 4.9.5 yargs-parser: 21.1.1 optionalDependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.28.0) + babel-jest: 29.7.0(@babel/core@7.28.5) jest-util: 29.7.0 - ts-jest@29.4.0(@babel/core@7.28.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.0))(jest-util@29.7.0)(jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3)))(typescript@5.8.3): + ts-jest@29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@29.7.0)(jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3)))(typescript@5.9.3): dependencies: bs-logger: 0.2.6 - ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3)) + handlebars: 4.7.8 + jest: 29.7.0(@types/node@17.0.45)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3)) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.7.2 + semver: 7.7.3 type-fest: 4.41.0 - typescript: 5.8.3 + typescript: 5.9.3 yargs-parser: 21.1.1 optionalDependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.28.0) + babel-jest: 29.7.0(@babel/core@7.28.5) jest-util: 29.7.0 - ts-jest@29.4.0(@babel/core@7.28.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.0))(jest-util@29.7.0)(jest@29.7.0(@types/node@24.1.0)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@24.1.0)(typescript@5.8.3)))(typescript@5.8.3): + ts-jest@29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@29.7.0)(jest@29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.1)(typescript@5.9.3)))(typescript@5.9.3): dependencies: bs-logger: 0.2.6 - ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@24.1.0)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@24.1.0)(typescript@5.8.3)) + handlebars: 4.7.8 + jest: 29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.1)(typescript@5.9.3)) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.7.2 + semver: 7.7.3 type-fest: 4.41.0 - typescript: 5.8.3 + typescript: 5.9.3 yargs-parser: 21.1.1 optionalDependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.5 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.28.0) + babel-jest: 29.7.0(@babel/core@7.28.5) jest-util: 29.7.0 - ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@4.9.5): + ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5): dependencies: '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 + '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 @@ -27233,12 +28047,12 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.13.2 + '@swc/core': 1.15.3 - ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3): + ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 + '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 @@ -27249,20 +28063,20 @@ snapshots: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.8.3 + typescript: 5.9.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.13.2 + '@swc/core': 1.15.3 - ts-node@10.9.2(@swc/core@1.13.2)(@types/node@18.19.120)(typescript@4.9.5): + ts-node@10.9.2(@swc/core@1.15.3)(@types/node@18.19.130)(typescript@4.9.5): dependencies: '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 + '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 18.19.120 + '@types/node': 18.19.130 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -27273,47 +28087,47 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.13.2 + '@swc/core': 1.15.3 - ts-node@10.9.2(@swc/core@1.13.2)(@types/node@18.19.120)(typescript@5.8.3): + ts-node@10.9.2(@swc/core@1.15.3)(@types/node@18.19.130)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 + '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 18.19.120 + '@types/node': 18.19.130 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.8.3 + typescript: 5.9.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.13.2 + '@swc/core': 1.15.3 - ts-node@10.9.2(@swc/core@1.13.2)(@types/node@24.1.0)(typescript@5.8.3): + ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.1)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 + '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 24.1.0 + '@types/node': 24.10.1 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.8.3 + typescript: 5.9.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.13.2 + '@swc/core': 1.15.3 tslib@1.14.1: {} @@ -27329,36 +28143,36 @@ snapshots: commander: 2.20.3 diff: 4.0.2 glob: 7.2.3 - js-yaml: 3.14.1 + js-yaml: 3.14.2 minimatch: 3.1.2 mkdirp: 0.5.6 - resolve: 1.22.10 + resolve: 1.22.11 semver: 5.7.2 tslib: 1.14.1 tsutils: 2.29.0(typescript@4.9.5) typescript: 4.9.5 - tsup@8.5.0(@swc/core@1.13.2)(jiti@2.5.1)(postcss@8.5.6)(tsx@4.20.3)(typescript@4.9.5)(yaml@2.8.0): + tsup@8.5.1(@swc/core@1.15.3)(postcss@8.5.6)(tsx@4.20.6)(typescript@4.9.5)(yaml@2.8.1): dependencies: - bundle-require: 5.1.0(esbuild@0.25.8) + bundle-require: 5.1.0(esbuild@0.27.0) cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.2 - debug: 4.4.1 - esbuild: 0.25.8 + debug: 4.4.3 + esbuild: 0.27.0 fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.5.1)(postcss@8.5.6)(tsx@4.20.3)(yaml@2.8.0) + postcss-load-config: 6.0.1(postcss@8.5.6)(tsx@4.20.6)(yaml@2.8.1) resolve-from: 5.0.0 - rollup: 4.46.1 - source-map: 0.8.0-beta.0 - sucrase: 3.35.0 + rollup: 4.53.3 + source-map: 0.7.6 + sucrase: 3.35.1 tinyexec: 0.3.2 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 tree-kill: 1.2.2 optionalDependencies: - '@swc/core': 1.13.2 + '@swc/core': 1.15.3 postcss: 8.5.6 typescript: 4.9.5 transitivePeerDependencies: @@ -27372,10 +28186,10 @@ snapshots: tslib: 1.14.1 typescript: 4.9.5 - tsx@4.20.3: + tsx@4.20.6: dependencies: - esbuild: 0.25.8 - get-tsconfig: 4.10.1 + esbuild: 0.25.12 + get-tsconfig: 4.13.0 optionalDependencies: fsevents: 2.3.3 @@ -27386,37 +28200,37 @@ snapshots: turbo-darwin-64@1.13.4: optional: true - turbo-darwin-64@2.5.5: + turbo-darwin-64@2.6.1: optional: true turbo-darwin-arm64@1.13.4: optional: true - turbo-darwin-arm64@2.5.5: + turbo-darwin-arm64@2.6.1: optional: true turbo-linux-64@1.13.4: optional: true - turbo-linux-64@2.5.5: + turbo-linux-64@2.6.1: optional: true turbo-linux-arm64@1.13.4: optional: true - turbo-linux-arm64@2.5.5: + turbo-linux-arm64@2.6.1: optional: true turbo-windows-64@1.13.4: optional: true - turbo-windows-64@2.5.5: + turbo-windows-64@2.6.1: optional: true turbo-windows-arm64@1.13.4: optional: true - turbo-windows-arm64@2.5.5: + turbo-windows-arm64@2.6.1: optional: true turbo@1.13.4: @@ -27428,14 +28242,14 @@ snapshots: turbo-windows-64: 1.13.4 turbo-windows-arm64: 1.13.4 - turbo@2.5.5: + turbo@2.6.1: optionalDependencies: - turbo-darwin-64: 2.5.5 - turbo-darwin-arm64: 2.5.5 - turbo-linux-64: 2.5.5 - turbo-linux-arm64: 2.5.5 - turbo-windows-64: 2.5.5 - turbo-windows-arm64: 2.5.5 + turbo-darwin-64: 2.6.1 + turbo-darwin-arm64: 2.6.1 + turbo-linux-64: 2.6.1 + turbo-linux-arm64: 2.6.1 + turbo-windows-64: 2.6.1 + turbo-windows-arm64: 2.6.1 tweetnacl@0.14.5: {} @@ -27468,9 +28282,7 @@ snapshots: dependencies: content-type: 1.0.5 media-typer: 1.1.0 - mime-types: 3.0.1 - - type@2.7.3: {} + mime-types: 3.0.2 typed-array-buffer@1.0.3: dependencies: @@ -27515,17 +28327,17 @@ snapshots: typedarray@0.0.6: {} - typeorm@0.3.25(better-sqlite3@11.10.0)(ioredis@5.6.1)(mongodb@6.18.0(@aws-sdk/credential-providers@3.848.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.6))(mysql2@3.14.2)(pg@8.16.3)(reflect-metadata@0.1.14)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3)): + typeorm@0.3.27(better-sqlite3@12.5.0)(ioredis@5.8.2)(mongodb@6.21.0(@aws-sdk/credential-providers@3.940.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.7))(mysql2@3.15.3)(pg@8.16.3)(redis@5.10.0)(reflect-metadata@0.1.14)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3)): dependencies: '@sqltools/formatter': 1.2.5 ansis: 3.17.0 app-root-path: 3.1.0 buffer: 6.0.3 - dayjs: 1.11.13 - debug: 4.4.1 - dedent: 1.6.0 + dayjs: 1.11.19 + debug: 4.4.3 + dedent: 1.7.0 dotenv: 16.6.1 - glob: 10.4.5 + glob: 10.5.0 reflect-metadata: 0.1.14 sha.js: 2.4.12 sql-highlight: 6.1.0 @@ -27533,28 +28345,29 @@ snapshots: uuid: 11.1.0 yargs: 17.7.2 optionalDependencies: - better-sqlite3: 11.10.0 - ioredis: 5.6.1 - mongodb: 6.18.0(@aws-sdk/credential-providers@3.848.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.6) - mysql2: 3.14.2 + better-sqlite3: 12.5.0 + ioredis: 5.8.2 + mongodb: 6.21.0(@aws-sdk/credential-providers@3.940.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.7) + mysql2: 3.15.3 pg: 8.16.3 + redis: 5.10.0 sqlite3: 5.1.7 - ts-node: 10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3) + ts-node: 10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3) transitivePeerDependencies: - babel-plugin-macros - supports-color - typeorm@0.3.25(better-sqlite3@11.10.0)(ioredis@5.6.1)(mongodb@6.18.0(@aws-sdk/credential-providers@3.848.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.6))(mysql2@3.14.2)(pg@8.16.3)(reflect-metadata@0.2.2)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3)): + typeorm@0.3.27(better-sqlite3@12.5.0)(ioredis@5.8.2)(mongodb@6.21.0(@aws-sdk/credential-providers@3.940.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.7))(mysql2@3.15.3)(pg@8.16.3)(redis@5.10.0)(reflect-metadata@0.2.2)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5)): dependencies: '@sqltools/formatter': 1.2.5 ansis: 3.17.0 app-root-path: 3.1.0 buffer: 6.0.3 - dayjs: 1.11.13 - debug: 4.4.1 - dedent: 1.6.0 + dayjs: 1.11.19 + debug: 4.4.3 + dedent: 1.7.0 dotenv: 16.6.1 - glob: 10.4.5 + glob: 10.5.0 reflect-metadata: 0.2.2 sha.js: 2.4.12 sql-highlight: 6.1.0 @@ -27562,28 +28375,29 @@ snapshots: uuid: 11.1.0 yargs: 17.7.2 optionalDependencies: - better-sqlite3: 11.10.0 - ioredis: 5.6.1 - mongodb: 6.18.0(@aws-sdk/credential-providers@3.848.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.6) - mysql2: 3.14.2 + better-sqlite3: 12.5.0 + ioredis: 5.8.2 + mongodb: 6.21.0(@aws-sdk/credential-providers@3.940.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.7) + mysql2: 3.15.3 pg: 8.16.3 + redis: 5.10.0 sqlite3: 5.1.7 - ts-node: 10.9.2(@swc/core@1.13.2)(@types/node@17.0.45)(typescript@5.8.3) + ts-node: 10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@4.9.5) transitivePeerDependencies: - babel-plugin-macros - supports-color - typeorm@0.3.25(better-sqlite3@11.10.0)(ioredis@5.6.1)(mongodb@6.18.0(@aws-sdk/credential-providers@3.848.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.6))(mysql2@3.14.2)(pg@8.16.3)(reflect-metadata@0.2.2)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.13.2)(@types/node@24.1.0)(typescript@5.8.3)): + typeorm@0.3.27(better-sqlite3@12.5.0)(ioredis@5.8.2)(mongodb@6.21.0(@aws-sdk/credential-providers@3.940.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.7))(mysql2@3.15.3)(pg@8.16.3)(redis@5.10.0)(reflect-metadata@0.2.2)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3)): dependencies: '@sqltools/formatter': 1.2.5 ansis: 3.17.0 app-root-path: 3.1.0 buffer: 6.0.3 - dayjs: 1.11.13 - debug: 4.4.1 - dedent: 1.6.0 + dayjs: 1.11.19 + debug: 4.4.3 + dedent: 1.7.0 dotenv: 16.6.1 - glob: 10.4.5 + glob: 10.5.0 reflect-metadata: 0.2.2 sha.js: 2.4.12 sql-highlight: 6.1.0 @@ -27591,32 +28405,59 @@ snapshots: uuid: 11.1.0 yargs: 17.7.2 optionalDependencies: - better-sqlite3: 11.10.0 - ioredis: 5.6.1 - mongodb: 6.18.0(@aws-sdk/credential-providers@3.848.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.6) - mysql2: 3.14.2 + better-sqlite3: 12.5.0 + ioredis: 5.8.2 + mongodb: 6.21.0(@aws-sdk/credential-providers@3.940.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.7) + mysql2: 3.15.3 + pg: 8.16.3 + redis: 5.10.0 + sqlite3: 5.1.7 + ts-node: 10.9.2(@swc/core@1.15.3)(@types/node@17.0.45)(typescript@5.9.3) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + typeorm@0.3.27(better-sqlite3@12.5.0)(ioredis@5.8.2)(mongodb@6.21.0(@aws-sdk/credential-providers@3.940.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.7))(mysql2@3.15.3)(pg@8.16.3)(redis@5.10.0)(reflect-metadata@0.2.2)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.1)(typescript@5.9.3)): + dependencies: + '@sqltools/formatter': 1.2.5 + ansis: 3.17.0 + app-root-path: 3.1.0 + buffer: 6.0.3 + dayjs: 1.11.19 + debug: 4.4.3 + dedent: 1.7.0 + dotenv: 16.6.1 + glob: 10.5.0 + reflect-metadata: 0.2.2 + sha.js: 2.4.12 + sql-highlight: 6.1.0 + tslib: 2.8.1 + uuid: 11.1.0 + yargs: 17.7.2 + optionalDependencies: + better-sqlite3: 12.5.0 + ioredis: 5.8.2 + mongodb: 6.21.0(@aws-sdk/credential-providers@3.940.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.7) + mysql2: 3.15.3 pg: 8.16.3 + redis: 5.10.0 sqlite3: 5.1.7 - ts-node: 10.9.2(@swc/core@1.13.2)(@types/node@24.1.0)(typescript@5.8.3) + ts-node: 10.9.2(@swc/core@1.15.3)(@types/node@24.10.1)(typescript@5.9.3) transitivePeerDependencies: - babel-plugin-macros - supports-color typescript@4.9.5: {} - typescript@5.8.3: {} + typescript@5.9.3: {} ua-is-frozen@0.1.2: {} - ua-parser-js@2.0.4(encoding@0.1.13): + ua-parser-js@2.0.6: dependencies: - '@types/node-fetch': 2.6.12 detect-europe-js: 0.1.2 is-standalone-pwa: 0.1.1 - node-fetch: 2.7.0(encoding@0.1.13) ua-is-frozen: 0.1.2 - transitivePeerDependencies: - - encoding uc.micro@2.1.0: {} @@ -27643,13 +28484,13 @@ snapshots: undici-types@6.21.0: {} - undici-types@7.8.0: {} + undici-types@7.16.0: {} undici@5.29.0: dependencies: '@fastify/busboy': 2.1.1 - undici@7.12.0: {} + undici@7.16.0: {} unicorn-magic@0.3.0: {} @@ -27689,24 +28530,25 @@ snapshots: unpipe@1.0.0: {} - unplugin-swc@1.5.5(@swc/core@1.13.2)(rollup@4.46.1): + unplugin-swc@1.5.9(@swc/core@1.15.3)(rollup@4.53.3): dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.46.1) - '@swc/core': 1.13.2 + '@rollup/pluginutils': 5.3.0(rollup@4.53.3) + '@swc/core': 1.15.3 load-tsconfig: 0.2.5 - unplugin: 2.3.5 + unplugin: 2.3.11 transitivePeerDependencies: - rollup - unplugin@2.3.5: + unplugin@2.3.11: dependencies: + '@jridgewell/remapping': 2.3.5 acorn: 8.15.0 picomatch: 4.0.3 webpack-virtual-modules: 0.6.2 - update-browserslist-db@1.1.3(browserslist@4.25.1): + update-browserslist-db@1.1.4(browserslist@4.28.0): dependencies: - browserslist: 4.25.1 + browserslist: 4.28.0 escalade: 3.2.0 picocolors: 1.1.1 @@ -27728,7 +28570,7 @@ snapshots: is-yarn-global: 0.3.0 latest-version: 5.1.0 pupa: 2.1.1 - semver: 7.7.2 + semver: 7.3.5 semver-diff: 3.1.1 xdg-basedir: 4.0.0 @@ -27749,12 +28591,12 @@ snapshots: querystringify: 2.2.0 requires-port: 1.0.0 - url-regex-safe@4.0.0(re2@1.22.1): + url-regex-safe@4.0.0(re2@1.22.3): dependencies: ip-regex: 4.3.0 - tlds: 1.259.0 + tlds: 1.261.0 optionalDependencies: - re2: 1.22.1 + re2: 1.22.3 url@0.10.3: dependencies: @@ -27766,9 +28608,9 @@ snapshots: punycode: 1.4.1 qs: 6.14.0 - use-sync-external-store@1.5.0(react@19.1.1): + use-sync-external-store@1.6.0(react@19.2.0): dependencies: - react: 19.1.1 + react: 19.2.0 utf8-byte-length@1.0.5: {} @@ -27786,7 +28628,7 @@ snapshots: dependencies: inherits: 2.0.4 is-arguments: 1.2.0 - is-generator-function: 1.1.0 + is-generator-function: 1.1.2 is-typed-array: 1.1.15 which-typed-array: 1.1.19 @@ -27808,13 +28650,13 @@ snapshots: v8-to-istanbul@9.3.0: dependencies: - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/trace-mapping': 0.3.31 '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 valid-data-url@3.0.1: {} - validator@13.15.15: {} + validator@13.15.23: {} vanilla-picker@2.12.3: dependencies: @@ -27833,10 +28675,10 @@ snapshots: vite-node@2.1.9(@types/node@17.0.45): dependencies: cac: 6.7.14 - debug: 4.4.1 + debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 1.1.2 - vite: 5.4.19(@types/node@17.0.45) + vite: 5.4.21(@types/node@17.0.45) transitivePeerDependencies: - '@types/node' - less @@ -27848,13 +28690,13 @@ snapshots: - supports-color - terser - vite-node@2.1.9(@types/node@18.19.120): + vite-node@2.1.9(@types/node@18.19.130): dependencies: cac: 6.7.14 - debug: 4.4.1 + debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 1.1.2 - vite: 5.4.19(@types/node@18.19.120) + vite: 5.4.21(@types/node@18.19.130) transitivePeerDependencies: - '@types/node' - less @@ -27866,13 +28708,13 @@ snapshots: - supports-color - terser - vite-node@2.1.9(@types/node@22.16.5): + vite-node@2.1.9(@types/node@22.19.1): dependencies: cac: 6.7.14 - debug: 4.4.1 + debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 1.1.2 - vite: 5.4.19(@types/node@22.16.5) + vite: 5.4.21(@types/node@22.19.1) transitivePeerDependencies: - '@types/node' - less @@ -27884,13 +28726,13 @@ snapshots: - supports-color - terser - vite-node@3.2.4(@types/node@17.0.45)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.0): + vite-node@3.2.4(@types/node@17.0.45)(tsx@4.20.6)(yaml@2.8.1): dependencies: cac: 6.7.14 - debug: 4.4.1 + debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.0.6(@types/node@17.0.45)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.0) + vite: 7.2.4(@types/node@17.0.45)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -27905,13 +28747,13 @@ snapshots: - tsx - yaml - vite-node@3.2.4(@types/node@18.19.120)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.0): + vite-node@3.2.4(@types/node@18.19.130)(tsx@4.20.6)(yaml@2.8.1): dependencies: cac: 6.7.14 - debug: 4.4.1 + debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.0.6(@types/node@18.19.120)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.0) + vite: 7.2.4(@types/node@18.19.130)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -27926,13 +28768,13 @@ snapshots: - tsx - yaml - vite-node@3.2.4(@types/node@24.1.0)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.0): + vite-node@3.2.4(@types/node@24.10.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: cac: 6.7.14 - debug: 4.4.1 + debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.0.6(@types/node@24.1.0)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.0) + vite: 7.2.4(@types/node@24.10.1)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -27947,104 +28789,101 @@ snapshots: - tsx - yaml - vite@5.4.19(@types/node@17.0.45): + vite@5.4.21(@types/node@17.0.45): dependencies: esbuild: 0.21.5 postcss: 8.5.6 - rollup: 4.46.1 + rollup: 4.53.3 optionalDependencies: '@types/node': 17.0.45 fsevents: 2.3.3 - vite@5.4.19(@types/node@18.19.120): + vite@5.4.21(@types/node@18.19.130): dependencies: esbuild: 0.21.5 postcss: 8.5.6 - rollup: 4.46.1 + rollup: 4.53.3 optionalDependencies: - '@types/node': 18.19.120 + '@types/node': 18.19.130 fsevents: 2.3.3 - vite@5.4.19(@types/node@22.16.5): + vite@5.4.21(@types/node@22.19.1): dependencies: esbuild: 0.21.5 postcss: 8.5.6 - rollup: 4.46.1 + rollup: 4.53.3 optionalDependencies: - '@types/node': 22.16.5 + '@types/node': 22.19.1 fsevents: 2.3.3 - vite@7.0.6(@types/node@17.0.45)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.0): + vite@7.2.4(@types/node@17.0.45)(tsx@4.20.6)(yaml@2.8.1): dependencies: - esbuild: 0.25.8 - fdir: 6.4.6(picomatch@4.0.3) + esbuild: 0.25.12 + fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.46.1 - tinyglobby: 0.2.14 + rollup: 4.53.3 + tinyglobby: 0.2.15 optionalDependencies: '@types/node': 17.0.45 fsevents: 2.3.3 - jiti: 2.5.1 - tsx: 4.20.3 - yaml: 2.8.0 + tsx: 4.20.6 + yaml: 2.8.1 - vite@7.0.6(@types/node@18.19.120)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.0): + vite@7.2.4(@types/node@18.19.130)(tsx@4.20.6)(yaml@2.8.1): dependencies: - esbuild: 0.25.8 - fdir: 6.4.6(picomatch@4.0.3) + esbuild: 0.25.12 + fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.46.1 - tinyglobby: 0.2.14 + rollup: 4.53.3 + tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 18.19.120 + '@types/node': 18.19.130 fsevents: 2.3.3 - jiti: 2.5.1 - tsx: 4.20.3 - yaml: 2.8.0 + tsx: 4.20.6 + yaml: 2.8.1 - vite@7.0.6(@types/node@24.1.0)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.0): + vite@7.2.4(@types/node@24.10.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: - esbuild: 0.25.8 - fdir: 6.4.6(picomatch@4.0.3) + esbuild: 0.25.12 + fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.46.1 - tinyglobby: 0.2.14 + rollup: 4.53.3 + tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.1.0 + '@types/node': 24.10.1 fsevents: 2.3.3 - jiti: 2.5.1 - tsx: 4.20.3 - yaml: 2.8.0 + tsx: 4.20.6 + yaml: 2.8.1 - vitest@2.1.9(@types/node@17.0.45)(happy-dom@18.0.1)(jsdom@26.1.0): + vitest@2.1.9(@types/node@17.0.45)(happy-dom@18.0.1)(jsdom@27.0.1): dependencies: '@vitest/expect': 2.1.9 - '@vitest/mocker': 2.1.9(vite@5.4.19(@types/node@17.0.45)) + '@vitest/mocker': 2.1.9(vite@5.4.21(@types/node@17.0.45)) '@vitest/pretty-format': 2.1.9 '@vitest/runner': 2.1.9 '@vitest/snapshot': 2.1.9 '@vitest/spy': 2.1.9 '@vitest/utils': 2.1.9 - chai: 5.2.1 - debug: 4.4.1 + chai: 5.3.3 + debug: 4.4.3 expect-type: 1.2.2 - magic-string: 0.30.17 + magic-string: 0.30.21 pathe: 1.1.2 - std-env: 3.9.0 + std-env: 3.10.0 tinybench: 2.9.0 tinyexec: 0.3.2 tinypool: 1.1.1 tinyrainbow: 1.2.0 - vite: 5.4.19(@types/node@17.0.45) + vite: 5.4.21(@types/node@17.0.45) vite-node: 2.1.9(@types/node@17.0.45) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 17.0.45 happy-dom: 18.0.1 - jsdom: 26.1.0 + jsdom: 27.0.1 transitivePeerDependencies: - less - lightningcss @@ -28056,32 +28895,32 @@ snapshots: - supports-color - terser - vitest@2.1.9(@types/node@18.19.120)(happy-dom@18.0.1)(jsdom@26.1.0): + vitest@2.1.9(@types/node@18.19.130)(happy-dom@18.0.1)(jsdom@27.0.1): dependencies: '@vitest/expect': 2.1.9 - '@vitest/mocker': 2.1.9(vite@5.4.19(@types/node@18.19.120)) + '@vitest/mocker': 2.1.9(vite@5.4.21(@types/node@18.19.130)) '@vitest/pretty-format': 2.1.9 '@vitest/runner': 2.1.9 '@vitest/snapshot': 2.1.9 '@vitest/spy': 2.1.9 '@vitest/utils': 2.1.9 - chai: 5.2.1 - debug: 4.4.1 + chai: 5.3.3 + debug: 4.4.3 expect-type: 1.2.2 - magic-string: 0.30.17 + magic-string: 0.30.21 pathe: 1.1.2 - std-env: 3.9.0 + std-env: 3.10.0 tinybench: 2.9.0 tinyexec: 0.3.2 tinypool: 1.1.1 tinyrainbow: 1.2.0 - vite: 5.4.19(@types/node@18.19.120) - vite-node: 2.1.9(@types/node@18.19.120) + vite: 5.4.21(@types/node@18.19.130) + vite-node: 2.1.9(@types/node@18.19.130) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 18.19.120 + '@types/node': 18.19.130 happy-dom: 18.0.1 - jsdom: 26.1.0 + jsdom: 27.0.1 transitivePeerDependencies: - less - lightningcss @@ -28093,32 +28932,32 @@ snapshots: - supports-color - terser - vitest@2.1.9(@types/node@22.16.5)(happy-dom@18.0.1)(jsdom@26.1.0): + vitest@2.1.9(@types/node@22.19.1)(happy-dom@18.0.1)(jsdom@27.0.1): dependencies: '@vitest/expect': 2.1.9 - '@vitest/mocker': 2.1.9(vite@5.4.19(@types/node@22.16.5)) + '@vitest/mocker': 2.1.9(vite@5.4.21(@types/node@22.19.1)) '@vitest/pretty-format': 2.1.9 '@vitest/runner': 2.1.9 '@vitest/snapshot': 2.1.9 '@vitest/spy': 2.1.9 '@vitest/utils': 2.1.9 - chai: 5.2.1 - debug: 4.4.1 + chai: 5.3.3 + debug: 4.4.3 expect-type: 1.2.2 - magic-string: 0.30.17 + magic-string: 0.30.21 pathe: 1.1.2 - std-env: 3.9.0 + std-env: 3.10.0 tinybench: 2.9.0 tinyexec: 0.3.2 tinypool: 1.1.1 tinyrainbow: 1.2.0 - vite: 5.4.19(@types/node@22.16.5) - vite-node: 2.1.9(@types/node@22.16.5) + vite: 5.4.21(@types/node@22.19.1) + vite-node: 2.1.9(@types/node@22.19.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.16.5 + '@types/node': 22.19.1 happy-dom: 18.0.1 - jsdom: 26.1.0 + jsdom: 27.0.1 transitivePeerDependencies: - less - lightningcss @@ -28130,37 +28969,37 @@ snapshots: - supports-color - terser - vitest@3.2.4(@types/debug@4.1.12)(@types/node@17.0.45)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0)(tsx@4.20.3)(yaml@2.8.0): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@17.0.45)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jsdom@27.0.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: - '@types/chai': 5.2.2 + '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.0.6(@types/node@17.0.45)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.0)) + '@vitest/mocker': 3.2.4(vite@7.2.4(@types/node@17.0.45)(tsx@4.20.6)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 '@vitest/spy': 3.2.4 '@vitest/utils': 3.2.4 - chai: 5.2.1 - debug: 4.4.1 + chai: 5.3.3 + debug: 4.4.3 expect-type: 1.2.2 - magic-string: 0.30.17 + magic-string: 0.30.21 pathe: 2.0.3 picomatch: 4.0.3 - std-env: 3.9.0 + std-env: 3.10.0 tinybench: 2.9.0 tinyexec: 0.3.2 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.0.6(@types/node@17.0.45)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.0) - vite-node: 3.2.4(@types/node@17.0.45)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.0) + vite: 7.2.4(@types/node@17.0.45)(tsx@4.20.6)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@17.0.45)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 '@types/node': 17.0.45 '@vitest/ui': 3.2.4(vitest@3.2.4) happy-dom: 18.0.1 - jsdom: 26.1.0 + jsdom: 27.0.1 transitivePeerDependencies: - jiti - less @@ -28175,37 +29014,37 @@ snapshots: - tsx - yaml - vitest@3.2.4(@types/debug@4.1.12)(@types/node@18.19.120)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0)(tsx@4.20.3)(yaml@2.8.0): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@18.19.130)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jsdom@27.0.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: - '@types/chai': 5.2.2 + '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.0.6(@types/node@18.19.120)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.0)) + '@vitest/mocker': 3.2.4(vite@7.2.4(@types/node@18.19.130)(tsx@4.20.6)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 '@vitest/spy': 3.2.4 '@vitest/utils': 3.2.4 - chai: 5.2.1 - debug: 4.4.1 + chai: 5.3.3 + debug: 4.4.3 expect-type: 1.2.2 - magic-string: 0.30.17 + magic-string: 0.30.21 pathe: 2.0.3 picomatch: 4.0.3 - std-env: 3.9.0 + std-env: 3.10.0 tinybench: 2.9.0 tinyexec: 0.3.2 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.0.6(@types/node@18.19.120)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.0) - vite-node: 3.2.4(@types/node@18.19.120)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.0) + vite: 7.2.4(@types/node@18.19.130)(tsx@4.20.6)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@18.19.130)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 - '@types/node': 18.19.120 + '@types/node': 18.19.130 '@vitest/ui': 3.2.4(vitest@3.2.4) happy-dom: 18.0.1 - jsdom: 26.1.0 + jsdom: 27.0.1 transitivePeerDependencies: - jiti - less @@ -28220,37 +29059,37 @@ snapshots: - tsx - yaml - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.1.0)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0)(tsx@4.20.3)(yaml@2.8.0): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.1)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jsdom@27.0.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: - '@types/chai': 5.2.2 + '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.0.6(@types/node@24.1.0)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.0)) + '@vitest/mocker': 3.2.4(vite@7.2.4(@types/node@24.10.1)(tsx@4.20.6)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 '@vitest/spy': 3.2.4 '@vitest/utils': 3.2.4 - chai: 5.2.1 - debug: 4.4.1 + chai: 5.3.3 + debug: 4.4.3 expect-type: 1.2.2 - magic-string: 0.30.17 + magic-string: 0.30.21 pathe: 2.0.3 picomatch: 4.0.3 - std-env: 3.9.0 + std-env: 3.10.0 tinybench: 2.9.0 tinyexec: 0.3.2 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.0.6(@types/node@24.1.0)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.0) - vite-node: 3.2.4(@types/node@24.1.0)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.0) + vite: 7.2.4(@types/node@24.10.1)(tsx@4.20.6)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@24.10.1)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 - '@types/node': 24.1.0 + '@types/node': 24.10.1 '@vitest/ui': 3.2.4(vitest@3.2.4) happy-dom: 18.0.1 - jsdom: 26.1.0 + jsdom: 27.0.1 transitivePeerDependencies: - jiti - less @@ -28265,20 +29104,20 @@ snapshots: - tsx - yaml - vm2@3.9.19: + vm2@3.10.0: dependencies: acorn: 8.15.0 acorn-walk: 8.3.4 - vue@3.5.18(typescript@5.8.3): + vue@3.5.25(typescript@5.9.3): dependencies: - '@vue/compiler-dom': 3.5.18 - '@vue/compiler-sfc': 3.5.18 - '@vue/runtime-dom': 3.5.18 - '@vue/server-renderer': 3.5.18(vue@3.5.18(typescript@5.8.3)) - '@vue/shared': 3.5.18 + '@vue/compiler-dom': 3.5.25 + '@vue/compiler-sfc': 3.5.25 + '@vue/runtime-dom': 3.5.25 + '@vue/server-renderer': 3.5.25(vue@3.5.25(typescript@5.9.3)) + '@vue/shared': 3.5.25 optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.3 vuvuzela@1.0.3: {} @@ -28309,14 +29148,16 @@ snapshots: web-streams-polyfill@3.3.3: {} - web-streams-polyfill@4.1.0: {} + web-streams-polyfill@4.2.0: {} - webidl-conversions@3.0.1: {} + webdriver-bidi-protocol@0.3.9: {} - webidl-conversions@4.0.2: {} + webidl-conversions@3.0.1: {} webidl-conversions@7.0.0: {} + webidl-conversions@8.0.0: {} + webpack-virtual-modules@0.6.2: {} websocket-driver@0.7.4: @@ -28345,17 +29186,16 @@ snapshots: tr46: 5.1.1 webidl-conversions: 7.0.0 + whatwg-url@15.1.0: + dependencies: + tr46: 6.0.0 + webidl-conversions: 8.0.0 + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - whatwg-url@7.1.0: - dependencies: - lodash.sortby: 4.7.0 - tr46: 1.0.1 - webidl-conversions: 4.0.2 - which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 @@ -28372,7 +29212,7 @@ snapshots: is-async-function: 2.1.1 is-date-object: 1.1.0 is-finalizationregistry: 1.1.1 - is-generator-function: 1.1.0 + is-generator-function: 1.1.2 is-regex: 1.2.1 is-weakref: 1.1.1 isarray: 2.0.5 @@ -28411,7 +29251,7 @@ snapshots: dependencies: isexe: 3.1.1 - whoops@5.0.1: {} + whoops@5.0.5: {} why-is-node-running@2.3.0: dependencies: @@ -28443,10 +29283,10 @@ snapshots: readable-stream: 3.6.2 triple-beam: 1.4.1 - winston@3.17.0: + winston@3.18.3: dependencies: '@colors/colors': 1.6.0 - '@dabh/diagnostics': 2.0.3 + '@dabh/diagnostics': 2.0.8 async: 3.2.6 is-stream: 2.0.1 logform: 2.7.0 @@ -28459,7 +29299,7 @@ snapshots: wkx@0.5.0: dependencies: - '@types/node': 18.19.120 + '@types/node': 22.19.1 word-wrap@1.2.5: {} @@ -28478,9 +29318,9 @@ snapshots: wrap-ansi@8.1.0: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 5.1.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 wrappy@1.0.2: {} @@ -28533,7 +29373,7 @@ snapshots: xml2js@0.5.0: dependencies: - sax: 1.4.1 + sax: 1.4.3 xmlbuilder: 11.0.1 xml2js@0.6.2: @@ -28567,7 +29407,7 @@ snapshots: yaml@1.10.2: {} - yaml@2.8.0: {} + yaml@2.8.1: {} yargs-parser@20.2.9: {} @@ -28611,7 +29451,7 @@ snapshots: yocto-queue@0.1.0: {} - zimmerframe@1.1.2: {} + zimmerframe@1.1.4: {} zip-stream@1.2.0: dependencies: @@ -28626,18 +29466,18 @@ snapshots: compress-commons: 6.0.2 readable-stream: 4.7.0 - zod-openapi@4.2.4(zod@4.0.10): + zod-openapi@4.2.4(zod@4.1.13): dependencies: - zod: 4.0.10 + zod: 4.1.13 - zod-to-json-schema@3.24.6(zod@3.25.76): + zod-to-json-schema@3.25.0(zod@3.25.76): dependencies: zod: 3.25.76 - zod-to-json-schema@3.24.6(zod@4.0.10): + zod-to-json-schema@3.25.0(zod@4.1.13): dependencies: - zod: 4.0.10 + zod: 4.1.13 zod@3.25.76: {} - zod@4.0.10: {} + zod@4.1.13: {}