diff --git a/.changeset/funny-cobras-sneeze.md b/.changeset/funny-cobras-sneeze.md new file mode 100644 index 0000000..937600e --- /dev/null +++ b/.changeset/funny-cobras-sneeze.md @@ -0,0 +1,44 @@ +--- +"@vorsteh-queue/adapter-kysely": minor +--- + +Add Kysely ORM adapter for PostgreSQL with type-safe database operations + +**Features:** + +- `PostgresQueueAdapter`: PostgreSQL support using Kysely ORM +- Raw SQL with `SKIP LOCKED` for race condition prevention +- UTC-first design with proper timezone handling +- Database schema uses UTC defaults: `timezone('utc', now())` for PostgreSQL +- All timestamps explicitly stored as UTC for consistent behavior + +**Usage:** + +```typescript +import { Kysely, PostgresDialect } from "kysely" +import { Pool } from "pg" + +import { PostgresQueueAdapter } from "@vorsteh-queue/adapter-kysely" +import { Queue } from "@vorsteh-queue/core" + +const db = new Kysely({ + dialect: new PostgresDialect({ + pool: new Pool({ connectionString: "postgresql://..." }), + }), +}) + +const adapter = new PostgresQueueAdapter(db) +const queue = new Queue(adapter, { name: "my-queue" }) + +// Register job handlers +queue.register("send-email", async (payload: { to: string }) => { + // Send email logic + return { sent: true } +}) + +// Add jobs +await queue.add("send-email", { to: "user@example.com" }) + +// Start processing +queue.start() +``` diff --git a/.changeset/loose-parrots-glow copy 2.md b/.changeset/loose-parrots-glow copy 2.md new file mode 100644 index 0000000..79ba676 --- /dev/null +++ b/.changeset/loose-parrots-glow copy 2.md @@ -0,0 +1,5 @@ +--- +"@vorsteh-queue/adapter-drizzle": patch +--- + +Add `PostgresQueueAdapter` as alias to `PostgresDrizzleQueueAdapter` diff --git a/.changeset/loose-parrots-glow copy.md b/.changeset/loose-parrots-glow copy.md new file mode 100644 index 0000000..3d06411 --- /dev/null +++ b/.changeset/loose-parrots-glow copy.md @@ -0,0 +1,5 @@ +--- +"@vorsteh-queue/adapter-prisma": patch +--- + +Add `PostgresQueueAdapter` as alias to `PostgresPrismaQueueAdapter` diff --git a/.changeset/loose-parrots-glow.md b/.changeset/loose-parrots-glow.md new file mode 100644 index 0000000..3e5be6b --- /dev/null +++ b/.changeset/loose-parrots-glow.md @@ -0,0 +1,8 @@ +--- +"create-vorsteh-queue": patch +"@vorsteh-queue/adapter-drizzle": patch +"@vorsteh-queue/adapter-prisma": patch +"@vorsteh-queue/core": patch +--- + +update dependencies diff --git a/README.md b/README.md index 65cc3ee..1997fb0 100644 --- a/README.md +++ b/README.md @@ -311,19 +311,20 @@ This project was developed with AI assistance, combining human expertise with AI # Install dependencies pnpm install -# Run all tests -pnpm test +# Autofix format issues +pnpm format:fix + +# Fix issues in the `package.json` ( order, version mismatch ) +pnpm lint:ws -f -# Run specific test suites -pnpm test:core # Core package tests -pnpm test:drizzle-postgres # PostgreSQL adapter tests -pnpm test:drizzle-mariadb # MariaDB adapter tests +# Lint +pnpm lint # Type check pnpm typecheck -# Lint -pnpm lint +# Run all tests +pnpm test # Build packages pnpm build diff --git a/apps/docs/content/docs/01.getting-started/01.introduction.mdx b/apps/docs/content/docs/01.getting-started/01.introduction.mdx index 804b70c..0fffb6f 100644 --- a/apps/docs/content/docs/01.getting-started/01.introduction.mdx +++ b/apps/docs/content/docs/01.getting-started/01.introduction.mdx @@ -8,7 +8,7 @@ Vorsteh Queue is a powerful, type-safe queue engine designed for PostgreSQL 12+. ## Key Features - **Type-safe**: Full TypeScript support with generic job payloads -- **Multiple adapters**: Drizzle ORM (PostgreSQL), Prisma ORM (PostgreSQL), and in-memory implementations +- **Multiple adapters**: Drizzle ORM (PostgreSQL), Prisma ORM (PostgreSQL), Kysely (PostgreSQL) and in-memory implementations - **Priority queues**: Numeric priority system (lower = higher priority) - **Delayed jobs**: Schedule jobs for future execution - **Recurring jobs**: Cron expressions and interval-based repetition diff --git a/apps/docs/content/docs/01.getting-started/02.installation.mdx b/apps/docs/content/docs/01.getting-started/02.installation.mdx index ac3a842..d173e9d 100644 --- a/apps/docs/content/docs/01.getting-started/02.installation.mdx +++ b/apps/docs/content/docs/01.getting-started/02.installation.mdx @@ -53,12 +53,20 @@ If you prefer to add Vorsteh Queue to an existing project: className={{ container: "not-prose", code: "not-prose" }} /> +### Prisma ORM (PostgreSQL) + + + ## Database Setup After installation, you'll need to set up the required database tables. Each adapter provides migration scripts or schema definitions: - **Drizzle**: Use the provided schema and run migrations - **Prisma**: Add the schema to your `schema.prisma` and run `prisma migrate` +- **Kysely**: Use the provided schema and run migrations Refer to the specific adapter documentation for detailed setup instructions. diff --git a/apps/docs/content/docs/02.packages/adapter-drizzle.mdx b/apps/docs/content/docs/02.packages/adapter-drizzle.mdx index e81e43c..c6d9060 100644 --- a/apps/docs/content/docs/02.packages/adapter-drizzle.mdx +++ b/apps/docs/content/docs/02.packages/adapter-drizzle.mdx @@ -55,18 +55,9 @@ If you don't want to use the pre-defined schema, you can create your own schema ### Migration -Push the schema to your database: +To run the migrations, we recommend to use [`drizzle-kit`](https://orm.drizzle.team/docs/kit-overview). -```bash -npx drizzle-kit push -``` - -Or generate and run migrations: - -```bash -npx drizzle-kit generate -npx drizzle-kit migrate -``` +> Drizzle Kit is a CLI tool for managing SQL database migrations with Drizzle. ## References diff --git a/apps/docs/content/docs/02.packages/adapter-kysely.mdx b/apps/docs/content/docs/02.packages/adapter-kysely.mdx new file mode 100644 index 0000000..54adff8 --- /dev/null +++ b/apps/docs/content/docs/02.packages/adapter-kysely.mdx @@ -0,0 +1,85 @@ +--- +title: Kysely Adapter +navTitle: "@vorsteh-queue/adapter-kysely" +description: Kysely adapter for PostgreSQL providing type-safe database operations with excellent performance. +--- + +The Kysely adapter provides PostgreSQL support using Kysely, offering excellent TypeScript integration and performance. + +## Installation + + + +## Quick Start + +```typescript +import { Kysely } from "kysely" +import { PostgresJSDialect } from "kysely-postgres-js" +import postgres from "postgres" + +import type { QueueJobTableDefinition } from "@vorsteh-queue/adapter-kysely/types" +import { PostgresQueueAdapter } from "@vorsteh-queue/adapter-kysely" +import { Queue } from "@vorsteh-queue/core" + +interface DB { + queue_jobs: QueueJobTableDefinition + other_table: { + name: string + } +} + +// Shared database connection +const client = postgres( + process.env.DATABASE_URL || "postgresql://postgres:password@localhost:5432/queue_db", + { max: 10 }, // Connection pool +) + +const db = new Kysely({ + dialect: new PostgresJSDialect({ + postgres: client, + }), +}) + +const adapter = new PostgresQueueAdapter(db) +const queue = new Queue(adapter) +``` + +## Supported providers + +- PGlite +- Postgres.JS +- Node Progress + +## Database Setup + +### Schema + +The adapter includes a pre-defined migration: + +```typescript +// migrations/queue-jobs.ts +import { down, up } from "@vorsteh-queue/adapter-kysely/migrations" + +// Use in your schema file +export { up, down } +``` + +If you don't want to use the pre-defined schema, you can create your own migration. + + + +### Migration + +To run the migrations, we recommend to use [`kysely-ctl`](https://github.com/kysely-org/kysely-ctl). + +> `kysely-ctl` is the command-line tool for Kysely. + +## References + +- Sources: https://github.com/noxify/vorsteh-queue/tree/main/packages/adapter-kysely +- NPM: https://www.npmjs.com/package/@vorsteh-queue/adapter-kysely diff --git a/apps/docs/content/docs/02.packages/adapter-prisma.mdx b/apps/docs/content/docs/02.packages/adapter-prisma.mdx index 5bc8325..d9ad5bf 100644 --- a/apps/docs/content/docs/02.packages/adapter-prisma.mdx +++ b/apps/docs/content/docs/02.packages/adapter-prisma.mdx @@ -39,25 +39,9 @@ Add the queue job model to your `schema.prisma`: ### Migration -Push the schema to your database: +To run the migrations, we recommend to use the [`prisma cli`](https://www.prisma.io/docs/orm/tools/prisma-cli). -```bash -npx prisma db push -``` - -Or generate and apply the migration: - -```bash -npx prisma migrate dev --name add-queue-jobs -``` - -### Generate Client - -Generate the Prisma client: - -```bash -npx prisma generate -``` +> The Prisma command line interface (CLI) is the primary way to interact with your Prisma project from the command line. ## References diff --git a/apps/docs/content/docs/02.packages/index.mdx b/apps/docs/content/docs/02.packages/index.mdx index 564f901..d6d378e 100644 --- a/apps/docs/content/docs/02.packages/index.mdx +++ b/apps/docs/content/docs/02.packages/index.mdx @@ -13,6 +13,7 @@ Vorsteh Queue is built as a modular system with separate packages for different - **[@vorsteh-queue/adapter-drizzle](/docs/packages/adapter-drizzle)** - Drizzle ORM adapter for PostgreSQL - **[@vorsteh-queue/adapter-prisma](/docs/packages/adapter-prisma)** - Prisma ORM adapter for PostgreSQL +- **[@vorsteh-queue/adapter-kysely](/docs/packages/adapter-kysely)** - Kysely adapter for PostgreSQL ## CLI Tools diff --git a/apps/docs/content/features/11.orm-agnostic.mdx b/apps/docs/content/features/11.orm-agnostic.mdx index fa6b2d7..29f7d2b 100644 --- a/apps/docs/content/features/11.orm-agnostic.mdx +++ b/apps/docs/content/features/11.orm-agnostic.mdx @@ -4,4 +4,4 @@ title: ORM Agnostic icon: Database --- -Works with Drizzle ORM and Prisma ORM for PostgreSQL. Adapter pattern allows easy integration with your existing database setup. +Works with Drizzle ORM, Kysely and Prisma ORM for PostgreSQL. Adapter pattern allows easy integration with your existing database setup. diff --git a/apps/docs/package.json b/apps/docs/package.json index 0a6e4ea..44e13bd 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -19,28 +19,28 @@ "prettier": "@vorsteh-queue/prettier-config", "dependencies": { "@icons-pack/react-simple-icons": "13.7.0", - "@mdx-js/loader": "3.1.0", - "@mdx-js/node-loader": "3.1.0", - "@mdx-js/react": "3.1.0", - "@next/mdx": "15.4.5", - "@radix-ui/react-collapsible": "^1.1.11", + "@mdx-js/loader": "3.1.1", + "@mdx-js/node-loader": "3.1.1", + "@mdx-js/react": "3.1.1", + "@next/mdx": "15.5.2", + "@radix-ui/react-collapsible": "^1.1.12", "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-dialog": "^1.1.14", - "@radix-ui/react-dropdown-menu": "2.1.15", + "@radix-ui/react-dialog": "^1.1.15", + "@radix-ui/react-dropdown-menu": "2.1.16", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-separator": "^1.1.7", "@radix-ui/react-slot": "^1.2.3", - "@radix-ui/react-tabs": "1.1.12", - "@radix-ui/react-tooltip": "^1.2.7", + "@radix-ui/react-tabs": "1.1.13", + "@radix-ui/react-tooltip": "^1.2.8", "@vercel/og": "0.8.5", "class-variance-authority": "0.7.1", "clsx": "2.1.1", "date-fns": "^4.1.0", "interweave": "13.1.1", - "lucide-react": "0.534.0", + "lucide-react": "0.542.0", "multimatch": "7.0.0", - "next": "15.4.5", + "next": "15.5.2", "next-themes": "latest", "p-map": "7.0.3", "react": "19.1.1", @@ -51,20 +51,21 @@ "remark-mdx-frontmatter": "5.2.0", "remark-squeeze-paragraphs": "6.0.0", "remark-strip-badges": "7.0.0", - "renoun": "9.0.0", - "tm-themes": "1.10.7", + "renoun": "9.5.0", + "tm-grammars": "1.24.8", + "tm-themes": "1.10.9", "ts-morph": "26.0.0", - "tw-animate-css": "^1.3.6", - "use-debounce": "10.0.5", - "zod": "4.0.14" + "tw-animate-css": "^1.3.8", + "use-debounce": "10.0.6", + "zod": "4.1.5" }, "devDependencies": { - "@tailwindcss/postcss": "4.1.11", + "@tailwindcss/postcss": "4.1.12", "@tailwindcss/typography": "0.5.16", "@types/mdx": "2.0.13", "@types/node": "22.16.5", - "@types/react": "19.1.9", - "@types/react-dom": "19.1.7", + "@types/react": "19.1.12", + "@types/react-dom": "19.1.9", "@types/serve-handler": "6.1.4", "@vorsteh-queue/adapter-drizzle": "workspace:*", "@vorsteh-queue/adapter-prisma": "workspace:*", @@ -72,16 +73,16 @@ "@vorsteh-queue/eslint-config": "workspace:*", "@vorsteh-queue/prettier-config": "workspace:*", "@vorsteh-queue/tsconfig": "workspace:*", - "eslint": "^9.32.0", + "eslint": "^9.34.0", "next-validate-link": "1.5.2", - "pagefind": "1.3.0", + "pagefind": "1.4.0", "postcss": "8.5.6", "prettier": "^3.6.2", "serve-handler": "6.1.6", "tailwind-merge": "3.3.1", - "tailwindcss": "4.1.11", + "tailwindcss": "4.1.12", "tailwindcss-animate": "1.0.7", - "tsx": "4.20.3", - "typescript": "^5.8.3" + "tsx": "4.20.5", + "typescript": "^5.9.2" } } diff --git a/apps/docs/src/app/layout.tsx b/apps/docs/src/app/layout.tsx index 0a7f63d..a6ecaf0 100644 --- a/apps/docs/src/app/layout.tsx +++ b/apps/docs/src/app/layout.tsx @@ -1,6 +1,6 @@ import type { Metadata } from "next" import type React from "react" -import { PackageInstallScript, ThemeStyles } from "renoun/components" +import { ThemeStyles } from "renoun/components" import "./globals.css" @@ -9,7 +9,7 @@ import { ThemeProvider } from "~/components/theme-provider" export const metadata: Metadata = { title: "Vorsteh Queue - Reliable Job Queue for Modern Applications", description: - "A powerful, ORM-agnostic queue engine for PostgreSQL 12+, MariaDB, and MySQL. Handle background jobs, scheduled tasks, and recurring processes with ease.", + "A powerful, ORM-agnostic queue engine for PostgreSQL 12. Handle background jobs, scheduled tasks, and recurring processes with ease.", } export default function RootLayout({ children }: { children: React.ReactNode }) { @@ -17,7 +17,6 @@ export default function RootLayout({ children }: { children: React.ReactNode }) - - !entry.getBaseName().startsWith("_") && - !entry.getAbsolutePath().includes("_assets") && - // do not fetch all files in the example - // `depth == 0` - include the root `examples/readme.mdx` - // `depth == 1` - include only the `examples//readme.mdx - (entry.getDepth() == 1 || entry.getDepth() == 0) && - (isDirectory(entry) || isFile(entry, "mdx")), - + include: (entry) => { + return ( + !entry.getBaseName().startsWith("_") && + !entry.getBaseName().startsWith(".") && + !entry.getAbsolutePath().includes("_assets") && + // do not fetch all files in the example + // `depth == 0` - include the root `examples/readme.mdx` + // `depth == 1` - include only the `examples//readme.mdx + (entry.getDepth() == 1 || entry.getDepth() == 0) && + (isDirectory(entry) || isFile(entry, "mdx")) + ) + }, loader: { mdx: withSchema(docSchema, (path) => import(`../../../examples/${path}.mdx`)), }, diff --git a/examples/drizzle-pg/package.json b/examples/drizzle-pg/package.json index a89d4d0..19a8835 100644 --- a/examples/drizzle-pg/package.json +++ b/examples/drizzle-pg/package.json @@ -11,13 +11,13 @@ "dependencies": { "@vorsteh-queue/adapter-drizzle": "workspace:*", "@vorsteh-queue/core": "workspace:*", - "drizzle-orm": "^0.44.4", + "drizzle-orm": "^0.44.5", "pg": "8.16.3" }, "devDependencies": { "@types/pg": "8.15.5", "drizzle-kit": "^0.31.4", - "tsx": "4.20.3", - "typescript": "^5.8.3" + "tsx": "4.20.5", + "typescript": "^5.9.2" } } diff --git a/examples/drizzle-pglite/package.json b/examples/drizzle-pglite/package.json index 8994ad5..bea21f6 100644 --- a/examples/drizzle-pglite/package.json +++ b/examples/drizzle-pglite/package.json @@ -9,14 +9,14 @@ "db:push": "drizzle-kit push" }, "dependencies": { - "@electric-sql/pglite": "^0.3.6", + "@electric-sql/pglite": "^0.3.7", "@vorsteh-queue/adapter-drizzle": "workspace:*", "@vorsteh-queue/core": "workspace:*", - "drizzle-orm": "^0.44.4" + "drizzle-orm": "^0.44.5" }, "devDependencies": { "@types/node": "22.16.5", - "tsx": "4.20.3", - "typescript": "^5.8.3" + "tsx": "4.20.5", + "typescript": "^5.9.2" } } diff --git a/examples/drizzle-postgres/package.json b/examples/drizzle-postgres/package.json index 434bf8d..b4ab70f 100644 --- a/examples/drizzle-postgres/package.json +++ b/examples/drizzle-postgres/package.json @@ -12,13 +12,13 @@ "dependencies": { "@vorsteh-queue/adapter-drizzle": "workspace:*", "@vorsteh-queue/core": "workspace:*", - "drizzle-orm": "^0.44.4", + "drizzle-orm": "^0.44.5", "postgres": "^3.4.7" }, "devDependencies": { "dotenv-cli": "10.0.0", "drizzle-kit": "^0.31.4", - "tsx": "4.20.3", - "typescript": "^5.8.3" + "tsx": "4.20.5", + "typescript": "^5.9.2" } } diff --git a/examples/event-system/package.json b/examples/event-system/package.json index 5210ca8..812efa4 100644 --- a/examples/event-system/package.json +++ b/examples/event-system/package.json @@ -11,12 +11,12 @@ "dependencies": { "@vorsteh-queue/adapter-drizzle": "workspace:*", "@vorsteh-queue/core": "workspace:*", - "drizzle-orm": "^0.44.4", + "drizzle-orm": "^0.44.5", "postgres": "^3.4.7" }, "devDependencies": { "drizzle-kit": "^0.31.4", - "tsx": "4.20.3", - "typescript": "^5.8.3" + "tsx": "4.20.5", + "typescript": "^5.9.2" } } diff --git a/examples/kysely-postgres/.config/kysely.config.ts b/examples/kysely-postgres/.config/kysely.config.ts new file mode 100644 index 0000000..f0a6ae5 --- /dev/null +++ b/examples/kysely-postgres/.config/kysely.config.ts @@ -0,0 +1,5 @@ +import { defineConfig } from "kysely-ctl" + +import { db } from "../src/database" + +export default defineConfig({ kysely: db }) diff --git a/examples/kysely-postgres/.env.example b/examples/kysely-postgres/.env.example new file mode 100644 index 0000000..efc0f48 --- /dev/null +++ b/examples/kysely-postgres/.env.example @@ -0,0 +1 @@ +DATABASE_URL=postgresql://postgres:password@localhost:5432/queue_db \ No newline at end of file diff --git a/examples/kysely-postgres/migrations/queue_table.ts b/examples/kysely-postgres/migrations/queue_table.ts new file mode 100644 index 0000000..2d431ef --- /dev/null +++ b/examples/kysely-postgres/migrations/queue_table.ts @@ -0,0 +1,49 @@ +import type { Kysely } from "kysely" +import { sql } from "kysely" + +export async function up(db: Kysely) { + await db.schema + .createTable("queue_jobs") + .addColumn("id", "uuid", (col) => col.defaultTo(sql`gen_random_uuid()`).notNull()) + .addColumn("queue_name", "varchar(255)", (col) => col.notNull()) + .addColumn("name", "varchar(255)", (col) => col.notNull()) + .addColumn("payload", "jsonb", (col) => col.notNull()) + .addColumn("status", "varchar(50)", (col) => col.notNull()) + .addColumn("priority", "int4", (col) => col.notNull()) + .addColumn("attempts", "int4", (col) => col.defaultTo(0).notNull()) + .addColumn("max_attempts", "int4", (col) => col.notNull()) + .addColumn("timeout", "jsonb") + .addColumn("cron", "varchar(255)") + .addColumn("created_at", "timestamptz", (col) => + col.defaultTo(sql`timezone('utc'::text, now())`).notNull(), + ) + .addColumn("process_at", "timestamptz", (col) => col.notNull()) + .addColumn("processed_at", "timestamptz") + .addColumn("completed_at", "timestamptz") + .addColumn("failed_at", "timestamptz") + .addColumn("error", "jsonb") + .addColumn("result", "jsonb") + .addColumn("progress", "int4") + .addColumn("repeat_every", "int4") + .addColumn("repeat_limit", "int4") + .addColumn("repeat_count", "int4") + .execute() + + await db.schema + .createIndex("idx_queue_jobs_status_priority") + .on("queue_jobs") + + .columns(["queue_name", "status", "priority", "created_at"]) + .execute() + + await db.schema + .createIndex("idx_queue_jobs_process_at") + .on("queue_jobs") + + .column("process_at") + .execute() +} + +export async function down(db: Kysely) { + await db.schema.dropTable("queue_jobs").execute() +} diff --git a/examples/kysely-postgres/package.json b/examples/kysely-postgres/package.json new file mode 100644 index 0000000..c080d8f --- /dev/null +++ b/examples/kysely-postgres/package.json @@ -0,0 +1,25 @@ +{ + "name": "kysely-postgres-example", + "version": "1.0.0", + "description": "Advanced Vorsteh Queue example using kysely with postgres.js and recurring jobs", + "type": "module", + "private": true, + "scripts": { + "dev": "pnpm with-env tsx src/index.ts", + "db:push": "pnpm with-env kysely migrate:latest", + "with-env": "dotenv -e .env --" + }, + "dependencies": { + "@vorsteh-queue/adapter-kysely": "workspace:*", + "@vorsteh-queue/core": "workspace:*", + "kysely": "^0.28.5", + "kysely-postgres-js": "^2.0.0", + "postgres": "^3.4.7" + }, + "devDependencies": { + "dotenv-cli": "10.0.0", + "kysely-ctl": "^0.18.0", + "tsx": "4.20.5", + "typescript": "^5.9.2" + } +} diff --git a/examples/kysely-postgres/readme.mdx b/examples/kysely-postgres/readme.mdx new file mode 100644 index 0000000..b8dfcce --- /dev/null +++ b/examples/kysely-postgres/readme.mdx @@ -0,0 +1,18 @@ +--- +title: kysely with postgres.js Example +navTitle: kysely with postgres.js +description: Demonstrates Vorsteh Queue with kysely and postgres.js driver. Shows job priorities, recurring jobs, and event handling. +--- + +## Setup + +Use the CLI to create this example: + +```bash +npx create-vorsteh-queue@latest my-project --template kysely-postgres +cd my-project +cp .env.example .env +# Edit .env with your PostgreSQL database URL +pnpm db:push +pnpm dev +``` diff --git a/examples/kysely-postgres/src/database.ts b/examples/kysely-postgres/src/database.ts new file mode 100644 index 0000000..558e2ad --- /dev/null +++ b/examples/kysely-postgres/src/database.ts @@ -0,0 +1,26 @@ +import { Kysely } from "kysely" +import { PostgresJSDialect } from "kysely-postgres-js" +import postgres from "postgres" + +import type { QueueJobTableDefinition } from "@vorsteh-queue/adapter-kysely/types" + +interface DB { + queue_jobs: QueueJobTableDefinition + other_table: { + name: string + } +} + +// Shared database connection +const client = postgres( + process.env.DATABASE_URL || "postgresql://postgres:password@localhost:5432/queue_db", + { max: 10 }, // Connection pool +) + +const db = new Kysely({ + dialect: new PostgresJSDialect({ + postgres: client, + }), +}) + +export { client, db } diff --git a/examples/kysely-postgres/src/index.ts b/examples/kysely-postgres/src/index.ts new file mode 100644 index 0000000..65a12c9 --- /dev/null +++ b/examples/kysely-postgres/src/index.ts @@ -0,0 +1,172 @@ +import { PostgresQueueAdapter } from "@vorsteh-queue/adapter-kysely" +import { Queue } from "@vorsteh-queue/core" + +import { client, db } from "./database" + +// Job payload types +interface ReportJobPayload { + userId: string + type: "daily" | "weekly" | "monthly" + includeCharts?: boolean +} + +interface CleanupJobPayload { + olderThan: string + fileTypes?: string[] +} + +// Job result types +interface ReportJobResult { + reportId: string + status: "completed" | "failed" + fileSize?: number +} + +interface CleanupJobResult { + deletedCount: number + freedSpace: number +} + +// Queue setup +const queue = new Queue(new PostgresQueueAdapter(db), { + name: "advanced-queue", + removeOnComplete: 20, + removeOnFail: 10, +}) + +// Job handlers with proper types +queue.register("generate-report", async (job) => { + const { userId, type, includeCharts = false } = job.payload + console.log( + `šŸ“ˆ Generating ${type} report for user ${userId}${includeCharts ? " with charts" : ""}`, + ) + + // Simulate report generation with progress + const steps = ["Collecting data", "Processing metrics", "Generating charts", "Finalizing report"] + for (let i = 0; i < steps.length; i++) { + console.log(` ${steps[i]}...`) + await new Promise((resolve) => setTimeout(resolve, 1000)) + await job.updateProgress(Math.round(((i + 1) / steps.length) * 100)) + } + + return { + reportId: `report_${Date.now()}`, + status: "completed", + fileSize: Math.floor(Math.random() * 1000000) + 100000, + } +}) + +queue.register("cleanup-files", async (job) => { + const { olderThan, fileTypes = ["tmp", "log"] } = job.payload + console.log(`🧽 Cleaning up ${fileTypes.join(", ")} files older than ${olderThan}`) + + await new Promise((resolve) => setTimeout(resolve, 1500)) + const deletedCount = Math.floor(Math.random() * 50) + 10 + const freedSpace = deletedCount * Math.floor(Math.random() * 1000000) + + return { deletedCount, freedSpace } +}) + +// Event listeners +queue.on("job:added", (job) => { + console.log(`āœ… Job added: ${job.name} (${job.id})`) +}) + +queue.on("job:processing", (job) => { + console.log(`⚔ Processing: ${job.name} (${job.id})`) +}) + +queue.on("job:completed", (job) => { + console.log(`šŸŽ‰ Completed: ${job.name} (${job.id})`) +}) + +queue.on("job:failed", (job) => { + console.error(`āŒ Failed: ${job.name} (${job.id}) - ${job.error}`) +}) + +queue.on("job:progress", (job) => { + console.log(`šŸ“ˆ Progress: ${job.name} - ${job.progress}%`) +}) + +queue.on("job:retried", (job) => { + console.log(`šŸ”„ Retrying: ${job.name} (attempt ${job.attempts})`) +}) + +async function main() { + console.log("šŸš€ Starting Kysely Postgres.JS Queue Example") + + // Add jobs with different priorities and features + await queue.add( + "generate-report", + { + userId: "user123", + type: "monthly", + includeCharts: true, + }, + { priority: 1 }, + ) + + await queue.add( + "cleanup-files", + { + olderThan: "30d", + fileTypes: ["tmp", "log", "cache"], + }, + { priority: 3 }, + ) + + await queue.add( + "generate-report", + { + userId: "user456", + type: "weekly", + }, + { priority: 2, delay: 5000 }, + ) + + // Add recurring cleanup job + await queue.add( + "cleanup-files", + { olderThan: "7d" }, + { + repeat: { every: 30000, limit: 3 }, // Every 30 seconds, 3 times + }, + ) + + // Add cron job + await queue.add( + "generate-report", + { userId: "system", type: "daily" }, + { + cron: "0 9 * * *", // Every day at 9 AM + }, + ) + + // Start processing + queue.start() + console.log("šŸ”„ Advanced queue processing started. Press Ctrl+C to stop.") + + // Show detailed stats every 15 seconds + const statsInterval = setInterval(async () => { + const stats = await queue.getStats() + console.log("šŸ“Š Detailed Queue Stats:", { + ...stats, + total: Object.values(stats).reduce((sum, count) => sum + count, 0), + }) + }, 15000) + + // Graceful shutdown + process.on("SIGINT", async () => { + console.log("\nšŸ›‘ Shutting down advanced queue...") + clearInterval(statsInterval) + await queue.stop() + await client.end() + console.log("āœ… Advanced queue shutdown complete") + process.exit(0) + }) +} + +main().catch((error) => { + console.error("āŒ Advanced queue error:", error) + process.exit(1) +}) diff --git a/examples/kysely-postgres/tsconfig.json b/examples/kysely-postgres/tsconfig.json new file mode 100644 index 0000000..b064900 --- /dev/null +++ b/examples/kysely-postgres/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "ES2022", + "module": "ESNext", + "moduleResolution": "bundler", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"] +} \ No newline at end of file diff --git a/examples/pm2-workers/package.json b/examples/pm2-workers/package.json index ecbd863..e416821 100644 --- a/examples/pm2-workers/package.json +++ b/examples/pm2-workers/package.json @@ -19,14 +19,14 @@ "dependencies": { "@vorsteh-queue/adapter-drizzle": "workspace:*", "@vorsteh-queue/core": "workspace:*", - "drizzle-orm": "^0.44.4", + "drizzle-orm": "^0.44.5", "postgres": "^3.4.7" }, "devDependencies": { "dotenv-cli": "10.0.0", "drizzle-kit": "^0.31.4", - "pm2": "6.0.8", - "tsx": "4.20.3", - "typescript": "^5.8.3" + "pm2": "6.0.10", + "tsx": "4.20.5", + "typescript": "^5.9.2" } } diff --git a/examples/prisma-client-js/package.json b/examples/prisma-client-js/package.json index dcd400d..b793b38 100644 --- a/examples/prisma-client-js/package.json +++ b/examples/prisma-client-js/package.json @@ -11,14 +11,14 @@ "with-env": "dotenv -e .env --" }, "dependencies": { - "@prisma/client": "^6.13.0", + "@prisma/client": "^6.15.0", "@vorsteh-queue/adapter-prisma": "workspace:*", "@vorsteh-queue/core": "workspace:*" }, "devDependencies": { "dotenv-cli": "10.0.0", - "prisma": "^6.13.0", - "tsx": "4.20.3", - "typescript": "^5.8.3" + "prisma": "^6.15.0", + "tsx": "4.20.5", + "typescript": "^5.9.2" } } diff --git a/examples/prisma-client/package.json b/examples/prisma-client/package.json index a8bc5a7..88b145b 100644 --- a/examples/prisma-client/package.json +++ b/examples/prisma-client/package.json @@ -11,15 +11,15 @@ "with-env": "dotenv -e .env --" }, "dependencies": { - "@prisma/adapter-pg": "^6.13.0", - "@prisma/client": "^6.13.0", + "@prisma/adapter-pg": "^6.15.0", + "@prisma/client": "^6.15.0", "@vorsteh-queue/adapter-prisma": "workspace:*", "@vorsteh-queue/core": "workspace:*" }, "devDependencies": { "dotenv-cli": "10.0.0", - "prisma": "^6.13.0", - "tsx": "4.20.3", - "typescript": "^5.8.3" + "prisma": "^6.15.0", + "tsx": "4.20.5", + "typescript": "^5.9.2" } } diff --git a/examples/progress-tracking/package.json b/examples/progress-tracking/package.json index eecacab..a130ea1 100644 --- a/examples/progress-tracking/package.json +++ b/examples/progress-tracking/package.json @@ -11,12 +11,12 @@ "dependencies": { "@vorsteh-queue/adapter-drizzle": "workspace:*", "@vorsteh-queue/core": "workspace:*", - "drizzle-orm": "^0.44.4", + "drizzle-orm": "^0.44.5", "postgres": "^3.4.7" }, "devDependencies": { "drizzle-kit": "^0.31.4", - "tsx": "4.20.3", - "typescript": "^5.8.3" + "tsx": "4.20.5", + "typescript": "^5.9.2" } } diff --git a/examples/result-storage/package.json b/examples/result-storage/package.json index 17cf209..f3a8983 100644 --- a/examples/result-storage/package.json +++ b/examples/result-storage/package.json @@ -9,14 +9,14 @@ "db:push": "drizzle-kit push" }, "dependencies": { - "@electric-sql/pglite": "^0.3.6", + "@electric-sql/pglite": "^0.3.7", "@vorsteh-queue/adapter-drizzle": "workspace:*", "@vorsteh-queue/core": "workspace:*", - "drizzle-orm": "^0.44.4" + "drizzle-orm": "^0.44.5" }, "devDependencies": { "drizzle-kit": "^0.31.4", - "tsx": "4.20.3", - "typescript": "^5.8.3" + "tsx": "4.20.5", + "typescript": "^5.9.2" } } diff --git a/package.json b/package.json index 767a933..ba722b1 100644 --- a/package.json +++ b/package.json @@ -39,14 +39,14 @@ "ci:version": "pnpm changeset version && pnpm install --no-frozen-lockfile && git add ." }, "devDependencies": { - "@changesets/cli": "2.29.5", + "@changesets/cli": "2.29.6", "@vitest/coverage-v8": "3.2.4", "@vitest/ui": "3.2.4", "@vorsteh-queue/prettier-config": "workspace:*", "prettier": "^3.6.2", "sherif": "1.6.1", - "turbo": "2.5.5", - "typescript": "^5.8.3", + "turbo": "2.5.6", + "typescript": "^5.9.2", "vite-tsconfig-paths": "^5.1.4", "vitest": "^3.2.4" }, diff --git a/packages/adapter-drizzle/package.json b/packages/adapter-drizzle/package.json index 31cd8ce..9d348eb 100644 --- a/packages/adapter-drizzle/package.json +++ b/packages/adapter-drizzle/package.json @@ -67,18 +67,18 @@ "@vorsteh-queue/core": "workspace:*" }, "devDependencies": { - "@electric-sql/pglite": "^0.3.6", + "@electric-sql/pglite": "^0.3.7", "@vorsteh-queue/eslint-config": "workspace:*", "@vorsteh-queue/prettier-config": "workspace:*", "@vorsteh-queue/tsconfig": "workspace:*", "drizzle-kit": "^0.31.4", - "drizzle-orm": "^0.44.4", - "eslint": "^9.32.0", + "drizzle-orm": "^0.44.5", + "eslint": "^9.34.0", "postgres": "^3.4.7", "prettier": "^3.6.2", - "rolldown": "1.0.0-beta.30", + "rolldown": "1.0.0-beta.34", "rollup-plugin-delete": "^3.0.1", - "typescript": "^5.8.3", + "typescript": "^5.9.2", "vitest": "^3.2.4" }, "peerDependencies": { diff --git a/packages/adapter-drizzle/src/index.ts b/packages/adapter-drizzle/src/index.ts index 76680ea..7cc888e 100644 --- a/packages/adapter-drizzle/src/index.ts +++ b/packages/adapter-drizzle/src/index.ts @@ -1,5 +1,8 @@ // PostgreSQL adapter -export { PostgresQueueAdapter } from "./postgres-adapter" +export { + PostgresQueueAdapter, + PostgresQueueAdapter as PostgresDrizzleQueueAdapter, +} from "./postgres-adapter" // Schemas export * as postgresSchema from "./postgres-schema" diff --git a/packages/adapter-drizzle/tests/shared-tests.ts b/packages/adapter-drizzle/tests/shared-tests.ts deleted file mode 100644 index b3a2834..0000000 --- a/packages/adapter-drizzle/tests/shared-tests.ts +++ /dev/null @@ -1,213 +0,0 @@ -import { describe, expect, it } from "vitest" - -import type { BaseQueueAdapter } from "@vorsteh-queue/core" - -/** - * Shared test suite for all database adapters. - * Tests database-agnostic functionality that should work the same across all adapters. - */ -export function createSharedTests( - adapterName: string, - getAdapter: () => Promise, -) { - describe(`${adapterName} - Shared Functionality`, () => { - describe("Progress Tracking", () => { - it("should update job progress", async () => { - const adapter = await getAdapter() - adapter.setQueueName("progress-test-queue") - - const job = await adapter.addJob({ - name: "progress-test", - payload: { test: "data" }, - status: "pending", - priority: 2, - attempts: 0, - maxAttempts: 3, - processAt: new Date(), - progress: 0, - repeatCount: 0, - }) - - // Update progress - await adapter.updateJobProgress(job.id, 50) - - // Progress should be updated (we can't easily verify without direct DB access) - // This test mainly ensures the method doesn't throw - expect(job.id).toBeDefined() - }) - - it("should normalize progress values", async () => { - const adapter = await getAdapter() - adapter.setQueueName("progress-normalize-test-queue") - - const job = await adapter.addJob({ - name: "progress-normalize-test", - payload: { test: "data" }, - status: "pending", - priority: 2, - attempts: 0, - maxAttempts: 3, - processAt: new Date(), - progress: 0, - repeatCount: 0, - }) - - // Test boundary values - should not throw - await adapter.updateJobProgress(job.id, -10) // Should normalize to 0 - await adapter.updateJobProgress(job.id, 150) // Should normalize to 100 - - expect(job.id).toBeDefined() - }) - }) - - describe("UTC Storage", () => { - it("should store all timestamps as UTC", async () => { - const adapter = await getAdapter() - adapter.setQueueName("utc-test-queue") - - const job = await adapter.addJob({ - name: "utc-test", - payload: { test: "data" }, - status: "pending", - priority: 2, - attempts: 0, - maxAttempts: 3, - processAt: new Date("2024-01-15T14:00:00Z"), - progress: 0, - repeatCount: 0, - }) - - // Should store exact UTC timestamp - expect(job.processAt.toISOString()).toBe("2024-01-15T14:00:00.000Z") - expect(job).not.toHaveProperty("timezone") - }) - - it("should handle timezone offsets correctly", async () => { - const adapter = await getAdapter() - adapter.setQueueName("offset-test-queue") - - const dateWithOffset = new Date("2024-01-15T14:00:00+02:00") // 2 PM +2 = 12 PM UTC - - const job = await adapter.addJob({ - name: "offset-test", - payload: { test: "data" }, - status: "pending", - priority: 2, - attempts: 0, - maxAttempts: 3, - processAt: dateWithOffset, - progress: 0, - repeatCount: 0, - }) - - // Should store UTC equivalent - expect(job.processAt.toISOString()).toBe("2024-01-15T12:00:00.000Z") - expect(job.processAt.getTime()).toBe(dateWithOffset.getTime()) - }) - - it("should maintain timestamp consistency", async () => { - const adapter = await getAdapter() - adapter.setQueueName("consistency-test-queue") - - const originalTimestamp = 1705327200000 // 2024-01-15T14:00:00Z - const originalDate = new Date(originalTimestamp) - - await adapter.addJob({ - name: "consistency-test", - payload: { test: "data" }, - status: "pending", - priority: 2, - attempts: 0, - maxAttempts: 3, - processAt: originalDate, - progress: 0, - repeatCount: 0, - }) - - // Retrieve the job - const retrievedJob = await adapter.getNextJob() - - expect(retrievedJob).toBeTruthy() - expect(retrievedJob?.processAt.getTime()).toBe(originalTimestamp) - }) - }) - - describe("Timezone Edge Cases", () => { - it("should handle various date formats", async () => { - const adapter = await getAdapter() - adapter.setQueueName("format-test-queue") - - const testCases = [ - { - name: "ISO with Z", - date: new Date("2024-01-15T14:00:00Z"), - expected: "2024-01-15T14:00:00.000Z", - }, - { - name: "ISO with +02:00", - date: new Date("2024-01-15T14:00:00+02:00"), - expected: "2024-01-15T12:00:00.000Z", - }, - { - name: "ISO with -05:00", - date: new Date("2024-01-15T14:00:00-05:00"), - expected: "2024-01-15T19:00:00.000Z", - }, - ] - - for (const testCase of testCases) { - const job = await adapter.addJob({ - name: `format-test-${testCase.name}`, - payload: { format: testCase.name }, - status: "pending", - priority: 2, - attempts: 0, - maxAttempts: 3, - processAt: testCase.date, - progress: 0, - repeatCount: 0, - }) - - expect(job.processAt.toISOString()).toBe(testCase.expected) - } - }) - - it("should handle DST transitions", async () => { - const adapter = await getAdapter() - adapter.setQueueName("dst-test-queue") - - // Spring forward and fall back dates - const springDate = new Date("2024-03-10T07:00:00Z") - const fallDate = new Date("2024-11-03T06:00:00Z") - - const springJob = await adapter.addJob({ - name: "spring-job", - payload: { dst: "spring" }, - status: "pending", - priority: 2, - attempts: 0, - maxAttempts: 3, - processAt: springDate, - progress: 0, - repeatCount: 0, - }) - - const fallJob = await adapter.addJob({ - name: "fall-job", - payload: { dst: "fall" }, - status: "pending", - priority: 2, - attempts: 0, - maxAttempts: 3, - processAt: fallDate, - progress: 0, - repeatCount: 0, - }) - - // Should store exact UTC timestamps - expect(springJob.processAt.toISOString()).toBe("2024-03-10T07:00:00.000Z") - expect(fallJob.processAt.toISOString()).toBe("2024-11-03T06:00:00.000Z") - }) - }) - }) -} diff --git a/packages/adapter-kysely/README.md b/packages/adapter-kysely/README.md new file mode 100644 index 0000000..bfeb10e --- /dev/null +++ b/packages/adapter-kysely/README.md @@ -0,0 +1,168 @@ +# @vorsteh-queue/adapter-kysely + +Kysely ORM adapter for Vorsteh Queue supporting PostgreSQL databases. + +## Features + +- **PostgreSQL Support**: Full PostgreSQL compatibility with node-postgres and other drivers +- **Type Safety**: Full TypeScript support with Kysely ORM +- **SKIP LOCKED**: Concurrent job processing without lock contention +- **JSON Payloads**: Complex data structures with proper serialization +- **UTC-First**: All timestamps stored as UTC for reliable timezone handling + +## Requirements + +- **Node.js 20+** +- **PostgreSQL 12+** (for SKIP LOCKED support) +- **ESM only** - This package is ESM-only and cannot be imported with `require()` + +## Installation + +```bash +npm install @vorsteh-queue/adapter-kysely kysely +# or +pnpm add @vorsteh-queue/adapter-kysely kysely +``` + +> **Note**: Make sure your project has `"type": "module"` in package.json or use `.mjs` file extensions. + +## Usage + +```typescript +import { Kysely, PostgresDialect } from "kysely" +import { Pool } from "pg" + +import { PostgresQueueAdapter } from "@vorsteh-queue/adapter-kysely" +import { Queue } from "@vorsteh-queue/core" + +// Setup PostgreSQL connection +const db = new Kysely({ + dialect: new PostgresDialect({ + pool: new Pool({ + connectionString: "postgresql://user:password@localhost:5432/database", + }), + }), +}) + +interface EmailPayload { + to: string + subject: string + body: string +} + +interface EmailResult { + messageId: string + sent: boolean +} + +// Create adapter and queue +const adapter = new PostgresQueueAdapter(db) +const queue = new Queue(adapter, { name: "my-queue" }) + +// Register job handlers +queue.register("send-email", async (job) => { + console.log(`Sending email to ${job.payload.to}`) + + // Send email logic here + await sendEmail(job.payload) + + return { + messageId: "msg_123", + sent: true, + } +}) + +// Add jobs +await queue.add("send-email", { + to: "user@example.com", + subject: "Welcome!", + body: "Welcome to our service!", +}) + +// Start processing +queue.start() +``` + +## Schema Setup + +### Using Kysely Migrations + +The adapter includes migration files that you can run using Kysely's migration system. + +Create a new migration file for the `queue_table` and copy the following code into the new created file. + +```typescript +// src/migrations/queue_table.ts +export {up, down} from "@vorsteh-queue/adapter-kysely/migrations +``` + +### Manual Schema Creation + +```ts +// src/migrations/queue_table.ts +import type { Kysely } from "kysely" +import { sql } from "kysely" + +export async function up(db: Kysely) { + await db.schema + .createTable("queue_jobs") + .addColumn("id", "uuid", (col) => col.defaultTo(sql`gen_random_uuid()`).notNull()) + .addColumn("queue_name", "varchar(255)", (col) => col.notNull()) + .addColumn("name", "varchar(255)", (col) => col.notNull()) + .addColumn("payload", "jsonb", (col) => col.notNull()) + .addColumn("status", "varchar(50)", (col) => col.notNull()) + .addColumn("priority", "int4", (col) => col.notNull()) + .addColumn("attempts", "int4", (col) => col.defaultTo(0).notNull()) + .addColumn("max_attempts", "int4", (col) => col.notNull()) + .addColumn("cron", "varchar(255)") + .addColumn("created_at", "timestamptz", (col) => + col.defaultTo(sql`timezone('utc'::text, now())`).notNull(), + ) + .addColumn("process_at", "timestamptz", (col) => col.notNull()) + .addColumn("processed_at", "timestamptz") + .addColumn("completed_at", "timestamptz") + .addColumn("failed_at", "timestamptz") + .addColumn("error", "jsonb") + .addColumn("result", "jsonb") + .addColumn("progress", "int4") + .addColumn("repeat_every", "int4") + .addColumn("repeat_limit", "int4") + .addColumn("repeat_count", "int4") + .execute() + + await db.schema + .createIndex("idx_queue_jobs_status_priority") + .on("queue_jobs") + + .columns(["queue_name", "status", "priority", "created_at"]) + .execute() + + await db.schema + .createIndex("idx_queue_jobs_process_at") + .on("queue_jobs") + + .column("process_at") + .execute() +} + +export async function down(db: Kysely) { + await db.schema.dropTable("queue_jobs").execute() +} +``` + +## Supported PostgreSQL Drivers + +- **node-postgres** (`pg`) +- **postgres.js** (`postgres`) +- **pglite** +- Any Kysely-compatible PostgreSQL driver + +## Testing + +```bash +pnpm test +``` + +## License + +MIT License - see LICENSE file for details. diff --git a/packages/adapter-kysely/eslint.config.js b/packages/adapter-kysely/eslint.config.js new file mode 100644 index 0000000..cdca422 --- /dev/null +++ b/packages/adapter-kysely/eslint.config.js @@ -0,0 +1,3 @@ +import baseConfig from "@vorsteh-queue/eslint-config/base" + +export default [...baseConfig] diff --git a/packages/adapter-kysely/package.json b/packages/adapter-kysely/package.json new file mode 100644 index 0000000..0e86711 --- /dev/null +++ b/packages/adapter-kysely/package.json @@ -0,0 +1,101 @@ +{ + "name": "@vorsteh-queue/adapter-kysely", + "version": "0.0.0", + "description": "Kysely adapter for Vorsteh Queue with PostgreSQL support", + "keywords": [ + "queue", + "job-queue", + "drizzle", + "drizzle-orm", + "postgresql", + "postgres", + "database", + "adapter", + "typescript", + "background-jobs", + "task-queue", + "worker", + "pg", + "pglite", + "postgres-js", + "node-postgres", + "sql", + "orm" + ], + "homepage": "https://vorsteh-queue.dev", + "bugs": "https://github.com/noxify/vorsteh-queue/issues", + "repository": { + "type": "git", + "url": "https://github.com/noxify/vorsteh-queue", + "directory": "packages/adapter-kysely" + }, + "license": "MIT", + "type": "module", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./migrations": { + "default": "./src/migrations.js" + }, + "./postgres-adapter": { + "types": "./dist/postgres-adapter.d.ts", + "default": "./dist/postgres-adapter.js" + }, + "./types": { + "types": "./dist/types.d.ts", + "default": "./dist/types.js" + } + }, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], + "scripts": { + "build": "rolldown -c rolldown.config.ts && tsc -p tsconfig.build.json", + "clean": "git clean -xdf .cache .turbo dist node_modules", + "clean:cache": "git clean -xdf .cache", + "db:generate": "drizzle-kit generate", + "dev": "rolldown -c rolldown.config.ts --watch & tsc -p tsconfig.build.json --watch", + "format": "prettier --check . --ignore-path ../../.gitignore --ignore-path ../../.prettierignore", + "lint": "eslint .", + "test": "vitest", + "test:watch": "vitest --watch", + "typecheck": "tsc --noEmit" + }, + "prettier": "@vorsteh-queue/prettier-config", + "dependencies": { + "@vorsteh-queue/core": "workspace:*" + }, + "devDependencies": { + "@electric-sql/pglite": "^0.3.7", + "@vorsteh-queue/eslint-config": "workspace:*", + "@vorsteh-queue/prettier-config": "workspace:*", + "@vorsteh-queue/tsconfig": "workspace:*", + "eslint": "^9.34.0", + "kysely": "^0.28.5", + "kysely-ctl": "^0.18.0", + "kysely-pglite-dialect": "^1.1.1", + "prettier": "^3.6.2", + "rolldown": "1.0.0-beta.34", + "rollup-plugin-delete": "^3.0.1", + "typescript": "^5.9.2", + "vitest": "^3.2.4" + }, + "peerDependencies": { + "kysely": ">=0.28.0" + }, + "peerDependenciesMeta": { + "@types/pg": { + "optional": true + }, + "pg": { + "optional": true + }, + "postgres": { + "optional": true + } + } +} diff --git a/packages/adapter-kysely/rolldown.config.ts b/packages/adapter-kysely/rolldown.config.ts new file mode 100644 index 0000000..45ed391 --- /dev/null +++ b/packages/adapter-kysely/rolldown.config.ts @@ -0,0 +1,18 @@ +import { defineConfig } from "rolldown" +import del from "rollup-plugin-delete" + +export default defineConfig({ + input: { + index: "src/index.ts", + "postgres-adapter": "src/postgres-adapter.ts", + migrations: "src/migrations/queue_table.ts", + types: "src/types.ts", + }, + output: { + dir: "dist", + format: "esm", + entryFileNames: "[name].js", + }, + plugins: [del({ targets: "dist/*" })], + external: ["@vorsteh-queue/core", "kysely"], +}) diff --git a/packages/adapter-kysely/src/index.ts b/packages/adapter-kysely/src/index.ts new file mode 100644 index 0000000..e1fbb9d --- /dev/null +++ b/packages/adapter-kysely/src/index.ts @@ -0,0 +1,5 @@ +// PostgreSQL adapter +export { + PostgresQueueAdapter, + PostgresQueueAdapter as PostgresKyselyQueueAdapter, +} from "./postgres-adapter" diff --git a/packages/adapter-kysely/src/migrations/queue_table.ts b/packages/adapter-kysely/src/migrations/queue_table.ts new file mode 100644 index 0000000..2d431ef --- /dev/null +++ b/packages/adapter-kysely/src/migrations/queue_table.ts @@ -0,0 +1,49 @@ +import type { Kysely } from "kysely" +import { sql } from "kysely" + +export async function up(db: Kysely) { + await db.schema + .createTable("queue_jobs") + .addColumn("id", "uuid", (col) => col.defaultTo(sql`gen_random_uuid()`).notNull()) + .addColumn("queue_name", "varchar(255)", (col) => col.notNull()) + .addColumn("name", "varchar(255)", (col) => col.notNull()) + .addColumn("payload", "jsonb", (col) => col.notNull()) + .addColumn("status", "varchar(50)", (col) => col.notNull()) + .addColumn("priority", "int4", (col) => col.notNull()) + .addColumn("attempts", "int4", (col) => col.defaultTo(0).notNull()) + .addColumn("max_attempts", "int4", (col) => col.notNull()) + .addColumn("timeout", "jsonb") + .addColumn("cron", "varchar(255)") + .addColumn("created_at", "timestamptz", (col) => + col.defaultTo(sql`timezone('utc'::text, now())`).notNull(), + ) + .addColumn("process_at", "timestamptz", (col) => col.notNull()) + .addColumn("processed_at", "timestamptz") + .addColumn("completed_at", "timestamptz") + .addColumn("failed_at", "timestamptz") + .addColumn("error", "jsonb") + .addColumn("result", "jsonb") + .addColumn("progress", "int4") + .addColumn("repeat_every", "int4") + .addColumn("repeat_limit", "int4") + .addColumn("repeat_count", "int4") + .execute() + + await db.schema + .createIndex("idx_queue_jobs_status_priority") + .on("queue_jobs") + + .columns(["queue_name", "status", "priority", "created_at"]) + .execute() + + await db.schema + .createIndex("idx_queue_jobs_process_at") + .on("queue_jobs") + + .column("process_at") + .execute() +} + +export async function down(db: Kysely) { + await db.schema.dropTable("queue_jobs").execute() +} diff --git a/packages/adapter-kysely/src/postgres-adapter.ts b/packages/adapter-kysely/src/postgres-adapter.ts new file mode 100644 index 0000000..891b4c9 --- /dev/null +++ b/packages/adapter-kysely/src/postgres-adapter.ts @@ -0,0 +1,285 @@ +import type { Kysely } from "kysely" +import { sql } from "kysely" + +import type { BaseJob, JobStatus, QueueStats, SerializedError } from "@vorsteh-queue/core" +import { asUtc, BaseQueueAdapter, serializeError } from "@vorsteh-queue/core" + +import type { DB, QueueJob } from "./types" + +/** + * PostgreSQL adapter for the queue system using Drizzle ORM. + * Supports PostgreSQL databases through Drizzle ORM with node-postgres, postgres.js, or PGlite. + * Provides persistent job storage with ACID transactions and optimized job selection. + * + * @example + * ```typescript + * import { Kysely } from "kysely" + * import { PostgresJSDialect } from "kysely-postgres-js" + * import postgres from "postgres" + * + * import type { QueueJobTableDefinition } from "@vorsteh-queue/adapter-kysely/types" + * + * import { PostgresQueueAdapter } from "@vorsteh-queue/adapter-kysely" + * import { Queue } from "@vorsteh-queue/core" + * + * interface DB { + * queue_jobs: QueueJobTableDefinition + * other_table: { + * name: string + * } + * } + * + * const client = postgres( + * process.env.DATABASE_URL || "postgresql://postgres:password@localhost:5432/queue_db", + * { max: 10 }, // Connection pool + * ) + * + * const db = new Kysely({ + * dialect: new PostgresJSDialect({ + * postgres: client, + * }), + * }) + * + * + * const queue = new Queue(new PostgresQueueAdapter(db), { + * name: "advanced-queue", + * removeOnComplete: 20, + * removeOnFail: 10, + * }) + * ``` + */ +export class PostgresQueueAdapter extends BaseQueueAdapter { + private customDbClient: Kysely + /** + * Create a new PostgreSQL queue adapter. + * + * @param db Kysely database instance + */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + constructor(private readonly db: Kysely) { + super() + + this.customDbClient = db as Kysely + } + + async connect(): Promise { + // kysely doesn't require explicit connection + // TODO: check if `this.db.connection()` should be used here + } + + async disconnect(): Promise { + // Releases all resources and disconnects from the database. + + await this.customDbClient.destroy() + } + + async addJob( + job: Omit, "id" | "createdAt">, + ): Promise> { + const result = await this.customDbClient + .insertInto("queue_jobs") + .values({ + queue_name: this.queueName, + name: job.name, + payload: job.payload, + status: job.status, + priority: job.priority, + attempts: job.attempts, + max_attempts: job.maxAttempts, + process_at: sql`${job.processAt.toISOString()}::timestamptz`, + cron: job.cron, + repeat_every: job.repeatEvery, + repeat_limit: job.repeatLimit, + repeat_count: job.repeatCount, + timeout: job.timeout, + }) + .returningAll() + .executeTakeFirst() + + if (!result) { + throw new Error("Failed to create job") + } + + return this.transformJob(result) as BaseJob + } + + async updateJobStatus( + id: string, + status: JobStatus, + error?: unknown, + result?: unknown, + ): Promise { + const now = new Date() + const updates: Record = { status } + + if (error) updates.error = serializeError(error) + if (result !== undefined) updates.result = result + if (status === "processing") updates.processed_at = asUtc(now) + if (status === "completed") updates.completed_at = asUtc(now) + if (status === "failed") updates.failed_at = asUtc(now) + + await this.customDbClient.updateTable("queue_jobs").set(updates).where("id", "=", id).execute() + } + + async incrementJobAttempts(id: string): Promise { + await this.customDbClient + .updateTable("queue_jobs") + .set({ attempts: sql`${"attempts"} + 1` }) + .where("id", "=", id) + .execute() + } + + async updateJobProgress(id: string, progress: number): Promise { + // Ensure progress is between 0-100 + const normalizedProgress = Math.max(0, Math.min(100, progress)) + + await this.customDbClient + .updateTable("queue_jobs") + .set({ progress: normalizedProgress }) + .where("id", "=", id) + .execute() + } + + async getQueueStats(): Promise { + const stats = await this.customDbClient + .selectFrom("queue_jobs") + .select(({ fn }) => [ + "status", + + // The `fn` module contains the most common + // functions. + fn.countAll().as("count"), + ]) + + .where("queue_name", "=", this.queueName) + .groupBy("status") + .execute() + + const result = { + pending: 0, + processing: 0, + completed: 0, + failed: 0, + delayed: 0, + } + + for (const stat of stats) { + result[stat.status as JobStatus] = Number(stat.count) + } + + return result + } + + async clearJobs(status?: JobStatus): Promise { + const query = this.customDbClient + .deleteFrom("queue_jobs") + .where("queue_name", "=", this.queueName) + + if (status) { + query.where("status", "=", status) + } + + // const result = (await this.customDbClient + // .delete(schema.queueJobs) + const result = await query.executeTakeFirst() + + return Number(result.numDeletedRows) + } + + async cleanupJobs(status: JobStatus, keepCount: number): Promise { + // Get jobs to delete (all except the most recent N) + const jobsToDelete = await this.customDbClient + .selectFrom("queue_jobs") + .select("id") + .where("queue_name", "=", this.queueName) + .where("status", "=", status) + .orderBy("created_at", "desc") + .offset(keepCount) + .execute() + + if (jobsToDelete.length === 0) { + return 0 + } + + const idsToDelete = jobsToDelete.map((job) => job.id) + + const result = await this.customDbClient + .deleteFrom("queue_jobs") + .where("queue_name", "=", this.queueName) + .where("id", "in", idsToDelete) + .executeTakeFirst() + + return Number(result) + } + + async size(): Promise { + const result = await this.customDbClient + .selectFrom("queue_jobs") + .select(this.customDbClient.fn.count("id").as("count")) + .executeTakeFirst() + + return Number(result?.count ?? 0) + } + + async transaction(fn: () => Promise): Promise { + return this.customDbClient.transaction().execute(async () => fn()) + } + + protected async getDelayedJobReady(now: Date): Promise { + const job = await this.customDbClient + .selectFrom("queue_jobs") + .selectAll() + .where("queue_name", "=", this.queueName) + .where("status", "=", "delayed") + .where("process_at", "<=", now) + .orderBy("priority", "asc") + .orderBy("created_at", "asc") + .limit(1) + .forUpdate() + .skipLocked() + .executeTakeFirst() + + return job ? this.transformJob(job) : null + } + + protected async getPendingJobByPriority(): Promise { + const job = await this.customDbClient + .selectFrom("queue_jobs") + .selectAll() + .where("queue_name", "=", this.queueName) + .where("status", "=", "pending") + .orderBy("priority", "asc") + .orderBy("created_at", "asc") + .limit(1) + .forUpdate() + .skipLocked() + .executeTakeFirst() + + return job ? this.transformJob(job) : null + } + + private transformJob(job: QueueJob): BaseJob { + return { + id: job.id, + name: job.name, + payload: job.payload, + status: job.status as JobStatus, + priority: job.priority, + attempts: job.attempts, + maxAttempts: job.max_attempts, + createdAt: job.created_at, + processAt: job.process_at, + processedAt: job.processed_at ?? undefined, + completedAt: job.completed_at ?? undefined, + failedAt: job.failed_at ?? undefined, + error: job.error as SerializedError | undefined, + result: job.result, + progress: job.progress ?? 0, + cron: job.cron ?? undefined, + repeatEvery: job.repeat_every ?? undefined, + repeatLimit: job.repeat_limit ?? undefined, + repeatCount: job.repeat_count ?? 0, + timeout: job.timeout as number | false | undefined, + } + } +} diff --git a/packages/adapter-kysely/src/types.ts b/packages/adapter-kysely/src/types.ts new file mode 100644 index 0000000..422ade2 --- /dev/null +++ b/packages/adapter-kysely/src/types.ts @@ -0,0 +1,39 @@ +import type { ColumnType, Insertable, Selectable, Updateable } from "kysely" + +type Generated = + T extends ColumnType + ? ColumnType + : ColumnType +type Timestamp = ColumnType + +export interface QueueJobTableDefinition { + id: Generated + queue_name: string + name: string + payload: unknown + status: string + priority: number + attempts: Generated + max_attempts: number + created_at: Generated + process_at: Timestamp + processed_at: Timestamp | null + completed_at: Timestamp | null + failed_at: Timestamp | null + error: unknown + result: unknown + progress: Generated + timeout: number | false | null + cron: string | null + repeat_every: number | null + repeat_limit: number | null + repeat_count: Generated +} + +export type QueueJob = Selectable +export type NewQueueJob = Insertable +export type QueueJobUpdate = Updateable + +export interface DB { + queue_jobs: QueueJobTableDefinition +} diff --git a/packages/adapter-kysely/tests/postgres-adapter.test.ts b/packages/adapter-kysely/tests/postgres-adapter.test.ts new file mode 100644 index 0000000..7d24461 --- /dev/null +++ b/packages/adapter-kysely/tests/postgres-adapter.test.ts @@ -0,0 +1,418 @@ +import * as path from "path" +import { PGlite } from "@electric-sql/pglite" +import { Kysely, Migrator, sql } from "kysely" +import { TSFileMigrationProvider } from "kysely-ctl" +import { PGliteDialect } from "kysely-pglite-dialect" +import { afterEach, beforeEach, describe, expect, it } from "vitest" + +import type { DB } from "~/types" +import { PostgresQueueAdapter } from "~/index" + +describe("PostgresQueueAdapter", () => { + let db: Kysely + let adapter: PostgresQueueAdapter + + let client: PGlite + + beforeEach(async () => { + client = new PGlite(undefined, { database: "test" }) + + db = new Kysely({ + dialect: new PGliteDialect(client), + }) + + const migrator = new Migrator({ + db, + provider: new TSFileMigrationProvider({ + // This needs to be an absolute path. + migrationFolder: path.join(__dirname, "../src/migrations"), + }), + }) + + await migrator.migrateToLatest() + + adapter = new PostgresQueueAdapter(db) + adapter.setQueueName("test-queue") + await adapter.connect() + }) + + afterEach(async () => { + await adapter.disconnect() + await client.close() + }) + + describe("basic operations", () => { + it("should add a job", async () => { + const job = await adapter.addJob({ + name: "test-job", + payload: { data: "test" }, + status: "pending", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: new Date(), + }) + + expect(job.id).toBeDefined() + expect(job.name).toBe("test-job") + expect(job.payload).toEqual({ data: "test" }) + expect(job.status).toBe("pending") + }) + + it("should get next pending job with SKIP LOCKED", async () => { + await adapter.addJob({ + name: "job-1", + payload: { order: 1 }, + status: "pending", + priority: 1, + attempts: 0, + maxAttempts: 3, + processAt: new Date(), + }) + + await adapter.addJob({ + name: "job-2", + payload: { order: 2 }, + status: "pending", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: new Date(), + }) + + const job = await adapter.getNextJob() + expect(job).toBeTruthy() + + expect(job?.name).toBe("job-1") // High priority first + }) + + it("should update job status", async () => { + const job = await adapter.addJob({ + name: "test-job", + payload: { data: "test" }, + status: "pending", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: new Date(), + }) + + await adapter.updateJobStatus(job.id, "processing") + + const updated = await db + .selectFrom("queue_jobs") + .select(["status", "processed_at"]) + .where("id", "=", job.id) + .executeTakeFirst() + + expect(updated?.status).toBe("processing") + expect(updated?.processed_at).toBeTruthy() + }) + + it("should get queue stats", async () => { + await adapter.addJob({ + name: "job-1", + payload: {}, + status: "pending", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: new Date(), + }) + + await adapter.addJob({ + name: "job-2", + payload: {}, + status: "completed", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: new Date(), + }) + + const stats = await adapter.getQueueStats() + expect(stats.pending).toBe(1) + expect(stats.completed).toBe(1) + }) + + it("should handle delayed jobs", async () => { + const futureTime = new Date(Date.now() + 60000) + + await adapter.addJob({ + name: "delayed-job", + payload: { data: "delayed" }, + status: "delayed", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: futureTime, + }) + + // Should not get delayed job that's not ready + + const job1 = await adapter.getNextJob() + expect(job1).toBeNull() + + // Should get delayed job that's ready + const pastTime = new Date(Date.now() - 60000) + await adapter.addJob({ + name: "ready-job", + payload: { data: "ready" }, + status: "delayed", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: pastTime, + }) + + const job2 = await adapter.getNextJob() + expect(job2).toBeTruthy() + + expect(job2?.name).toBe("ready-job") + }) + }) + + describe("scheduling features", () => { + it("should handle cron jobs", async () => { + const job = await adapter.addJob({ + name: "cron-job", + payload: { data: "cron" }, + status: "delayed", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: new Date(Date.now() + 60000), + cron: "0 9 * * *", + }) + + expect(job.cron).toBe("0 9 * * *") + }) + + it("should handle recurring jobs", async () => { + const job = await adapter.addJob({ + name: "recurring-job", + payload: { data: "recurring" }, + status: "pending", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: new Date(), + repeatEvery: 60000, + repeatLimit: 5, + repeatCount: 2, + }) + + expect(job.repeatEvery).toBe(60000) + expect(job.repeatLimit).toBe(5) + expect(job.repeatCount).toBe(2) + }) + }) +}) + +describe("PostgresQueueAdapter - Timezone Handling", () => { + let db: Kysely + let adapter: PostgresQueueAdapter + + let client: PGlite + + beforeEach(async () => { + client = new PGlite() + + db = new Kysely({ + dialect: new PGliteDialect(new PGlite()), + }) + + const migrator = new Migrator({ + db, + provider: new TSFileMigrationProvider({ + // This needs to be an absolute path. + migrationFolder: path.join(__dirname, "../src/migrations"), + }), + }) + + await migrator.migrateToLatest() + + adapter = new PostgresQueueAdapter(db) + adapter.setQueueName("timezone-test-queue") + await adapter.connect() + }) + + afterEach(async () => { + await adapter.disconnect() + await client.close() + }) + + it("should handle UTC timestamps correctly regardless of database timezone", async () => { + // Set database timezone to something other than UTC + await sql`SET timezone = 'America/New_York'`.execute(db) + + const testDate = new Date("2025-01-15T12:00:00.000Z") // Explicit UTC time + + const job = await adapter.addJob({ + name: "timezone-test", + payload: { test: "timezone" }, + status: "pending", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: testDate, + }) + + const retrieved = await db + .selectFrom("queue_jobs") + .select("process_at") + .where("id", "=", job.id) + .executeTakeFirst() + + // The processAt should match our input UTC time + expect(retrieved?.process_at.getTime()).toBe(testDate.getTime()) + + // Update job status and check timestamp consistency + await adapter.updateJobStatus(job.id, "processing") + + const updated = await db + .selectFrom("queue_jobs") + .select("processed_at") + .where("id", "=", job.id) + .executeTakeFirst() + + // processedAt should be a valid UTC timestamp + expect(updated?.processed_at).toBeTruthy() + expect(updated?.processed_at?.getTime()).toBeGreaterThan(testDate.getTime()) + }) +}) + +describe("PostgresQueueAdapter - Result Storage", () => { + let db: Kysely + let adapter: PostgresQueueAdapter + let client: PGlite + + beforeEach(async () => { + client = new PGlite() + + db = new Kysely({ + dialect: new PGliteDialect(new PGlite()), + }) + + const migrator = new Migrator({ + db, + provider: new TSFileMigrationProvider({ + // This needs to be an absolute path. + migrationFolder: path.join(__dirname, "../src/migrations"), + }), + }) + + await migrator.migrateToLatest() + + adapter = new PostgresQueueAdapter(db) + adapter.setQueueName("test-queue") + await adapter.connect() + }) + + afterEach(async () => { + await adapter.disconnect() + await client.close() + }) + + it("should store job result when job completes", async () => { + const job = await adapter.addJob({ + name: "test-job", + payload: { input: "test" }, + status: "pending", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: new Date(), + }) + + const result = { success: true, output: "processed" } + await adapter.updateJobStatus(job.id, "completed", undefined, result) + + const updated = await db + .selectFrom("queue_jobs") + .select(["status", "completed_at", "result"]) + .where("id", "=", job.id) + .executeTakeFirst() + + expect(updated?.status).toBe("completed") + expect(updated?.result).toEqual(result) + expect(updated?.completed_at).toBeTruthy() + }) + + it("should handle null/undefined results", async () => { + const job = await adapter.addJob({ + name: "test-job", + payload: { input: "test" }, + status: "pending", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: new Date(), + }) + + await adapter.updateJobStatus(job.id, "completed", undefined, null) + + const updated = await db + .selectFrom("queue_jobs") + .select("result") + .where("id", "=", job.id) + .executeTakeFirst() + + expect(updated?.result).toBeNull() + }) + + it("should preserve result in transformJob method", async () => { + const job = await adapter.addJob({ + name: "test-job", + payload: { input: "test" }, + status: "pending", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: new Date(), + }) + + const result = { data: "test-result", count: 42 } + await adapter.updateJobStatus(job.id, "completed", undefined, result) + + const nextJob = await adapter.getNextJob() + expect(nextJob).toBeNull() // No pending jobs + + // Get the completed job directly from database and transform + const dbJob = await db + .selectFrom("queue_jobs") + .select("result") + .where("id", "=", job.id) + .executeTakeFirst() + + expect(dbJob?.result).toEqual(result) + }) + + it("should not update result when not provided", async () => { + const job = await adapter.addJob({ + name: "test-job", + payload: { input: "test" }, + status: "pending", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: new Date(), + }) + + // First update with result + const result = { initial: "result" } + await adapter.updateJobStatus(job.id, "processing", undefined, result) + + // Second update without result (should preserve existing result) + await adapter.updateJobStatus(job.id, "completed") + + const updated = await db + .selectFrom("queue_jobs") + .select(["result", "status"]) + .where("id", "=", job.id) + .executeTakeFirst() + + expect(updated?.result).toEqual(result) + expect(updated?.status).toBe("completed") + }) +}) diff --git a/packages/adapter-kysely/tests/progress.test.ts b/packages/adapter-kysely/tests/progress.test.ts new file mode 100644 index 0000000..a49c43e --- /dev/null +++ b/packages/adapter-kysely/tests/progress.test.ts @@ -0,0 +1,113 @@ +import * as path from "path" +import { PGlite } from "@electric-sql/pglite" +import { Kysely, Migrator } from "kysely" +import { TSFileMigrationProvider } from "kysely-ctl" +import { PGliteDialect } from "kysely-pglite-dialect" +import { afterEach, beforeEach, describe, expect, it } from "vitest" + +import type { DB } from "~/types" +import { PostgresQueueAdapter } from "~/index" + +describe("PostgresQueueAdapter Progress", () => { + let db: Kysely + let adapter: PostgresQueueAdapter + + let client: PGlite + + beforeEach(async () => { + client = new PGlite(undefined, { database: "test" }) + + db = new Kysely({ + dialect: new PGliteDialect(client), + }) + + const migrator = new Migrator({ + db, + provider: new TSFileMigrationProvider({ + // This needs to be an absolute path. + migrationFolder: path.join(__dirname, "../src/migrations"), + }), + }) + + await migrator.migrateToLatest() + + adapter = new PostgresQueueAdapter(db) + adapter.setQueueName("test-queue") + await adapter.connect() + }) + + afterEach(async () => { + await adapter.disconnect() + await client.close() + }) + + it("should update job progress", async () => { + // Add a job + const job = await adapter.addJob({ + name: "progress-test", + payload: { data: "test" }, + status: "processing", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: new Date(), + }) + + // Update progress to 50% + await adapter.updateJobProgress(job.id, 50) + + // Verify progress was updated in database + const updated = await db + .selectFrom("queue_jobs") + .select("progress") + .where("id", "=", job.id) + .executeTakeFirst() + + expect(updated?.progress).toBe(50) + + // Update progress to 100% + await adapter.updateJobProgress(job.id, 100) + + // Verify progress was updated again + + const completed = await db + .selectFrom("queue_jobs") + .select("progress") + .where("id", "=", job.id) + .executeTakeFirst() + + expect(completed?.progress).toBe(100) + }) + + it("should normalize progress values", async () => { + // Add a job + const job = await adapter.addJob({ + name: "progress-test", + payload: { data: "test" }, + status: "processing", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: new Date(), + }) + + // Test with out-of-range values + await adapter.updateJobProgress(job.id, -10) + + let result = await db + .selectFrom("queue_jobs") + .select("progress") + .where("id", "=", job.id) + .executeTakeFirst() + + expect(result?.progress).toBe(0) + + await adapter.updateJobProgress(job.id, 150) + result = await db + .selectFrom("queue_jobs") + .select("progress") + .where("id", "=", job.id) + .executeTakeFirst() + expect(result?.progress).toBe(100) + }) +}) diff --git a/packages/adapter-kysely/tests/timezone-edge-cases.test.ts b/packages/adapter-kysely/tests/timezone-edge-cases.test.ts new file mode 100644 index 0000000..17debbf --- /dev/null +++ b/packages/adapter-kysely/tests/timezone-edge-cases.test.ts @@ -0,0 +1,230 @@ +import * as path from "path" +import { PGlite } from "@electric-sql/pglite" +import { Kysely, Migrator } from "kysely" +import { TSFileMigrationProvider } from "kysely-ctl" +import { PGliteDialect } from "kysely-pglite-dialect" +import { afterEach, beforeEach, describe, expect, it } from "vitest" + +import type { DB } from "~/types" +import { PostgresQueueAdapter } from "~/index" + +describe("Timezone Edge Cases", () => { + let db: Kysely + let adapter: PostgresQueueAdapter + + let client: PGlite + + beforeEach(async () => { + client = new PGlite(undefined, { database: "test" }) + + db = new Kysely({ + dialect: new PGliteDialect(client), + }) + + const migrator = new Migrator({ + db, + provider: new TSFileMigrationProvider({ + // This needs to be an absolute path. + migrationFolder: path.join(__dirname, "../src/migrations"), + }), + }) + + await migrator.migrateToLatest() + + adapter = new PostgresQueueAdapter(db) + adapter.setQueueName("test-queue") + await adapter.connect() + }) + + afterEach(async () => { + await adapter.disconnect() + await client.close() + }) + + it("should handle dates with explicit timezone offsets", async () => { + // User passes date with timezone offset + const dateWithOffset = new Date("2024-01-15T14:00:00+02:00") // 2 PM in +2 timezone = 12 PM UTC + + const job = await adapter.addJob({ + name: "offset-test", + payload: { test: "data" }, + status: "pending", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: dateWithOffset, + progress: 0, + repeatCount: 0, + }) + + // Should store the UTC equivalent (12 PM UTC, not 2 PM UTC) + expect(job.processAt.toISOString()).toBe("2024-01-15T12:00:00.000Z") + expect(job.processAt.getTime()).toBe(dateWithOffset.getTime()) + }) + + it("should handle negative timezone offsets", async () => { + // User passes date with negative timezone offset + const dateWithNegativeOffset = new Date("2024-01-15T14:00:00-05:00") // 2 PM EST = 7 PM UTC + + const job = await adapter.addJob({ + name: "negative-offset-test", + payload: { test: "data" }, + status: "pending", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: dateWithNegativeOffset, + progress: 0, + repeatCount: 0, + }) + + // Should store the UTC equivalent (7 PM UTC) + expect(job.processAt.toISOString()).toBe("2024-01-15T19:00:00.000Z") + expect(job.processAt.getTime()).toBe(dateWithNegativeOffset.getTime()) + }) + + it("should handle server in different timezone", async () => { + // Simulate server running in different timezone by creating dates in different ways + const utcDate = new Date("2024-01-15T14:00:00Z") // Explicit UTC + const localDate = new Date("2024-01-15T14:00:00") // Local time (depends on server timezone) + + const utcJob = await adapter.addJob({ + name: "utc-job", + payload: { type: "utc" }, + status: "pending", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: utcDate, + progress: 0, + repeatCount: 0, + }) + + const localJob = await adapter.addJob({ + name: "local-job", + payload: { type: "local" }, + status: "pending", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: localDate, + progress: 0, + repeatCount: 0, + }) + + // UTC date should be stored exactly as provided + expect(utcJob.processAt.toISOString()).toBe("2024-01-15T14:00:00.000Z") + + // Local date gets stored as whatever the server interprets it as + // This is the key test - we store whatever Date object represents in UTC + expect(localJob.processAt).toBeInstanceOf(Date) + expect(localJob.processAt.getTime()).toBe(localDate.getTime()) + }) + + it("should handle daylight saving time transitions", async () => { + // Spring forward: March 10, 2024 in America/New_York + const springForwardDate = new Date("2024-03-10T07:00:00Z") // 2 AM EST becomes 3 AM EDT + + // Fall back: November 3, 2024 in America/New_York + const fallBackDate = new Date("2024-11-03T06:00:00Z") // 2 AM EDT becomes 1 AM EST + + const springJob = await adapter.addJob({ + name: "spring-job", + payload: { dst: "spring" }, + status: "pending", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: springForwardDate, + progress: 0, + repeatCount: 0, + }) + + const fallJob = await adapter.addJob({ + name: "fall-job", + payload: { dst: "fall" }, + status: "pending", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: fallBackDate, + progress: 0, + repeatCount: 0, + }) + + // Both should store exact UTC timestamps regardless of DST + expect(springJob.processAt.toISOString()).toBe("2024-03-10T07:00:00.000Z") + expect(fallJob.processAt.toISOString()).toBe("2024-11-03T06:00:00.000Z") + }) + + it("should handle various date formats consistently", async () => { + const testCases = [ + { + name: "ISO with Z", + date: new Date("2024-01-15T14:00:00Z"), + expected: "2024-01-15T14:00:00.000Z", + }, + { + name: "ISO with +00:00", + date: new Date("2024-01-15T14:00:00+00:00"), + expected: "2024-01-15T14:00:00.000Z", + }, + { + name: "ISO with +02:00", + date: new Date("2024-01-15T14:00:00+02:00"), + expected: "2024-01-15T12:00:00.000Z", // 2 hours earlier in UTC + }, + { + name: "ISO with -05:00", + date: new Date("2024-01-15T14:00:00-05:00"), + expected: "2024-01-15T19:00:00.000Z", // 5 hours later in UTC + }, + { + name: "Timestamp", + date: new Date(1705327200000), // 2024-01-15T14:00:00Z + expected: "2024-01-15T14:00:00.000Z", + }, + ] + + for (const testCase of testCases) { + const job = await adapter.addJob({ + name: `format-test-${testCase.name}`, + payload: { format: testCase.name }, + status: "pending", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: testCase.date, + progress: 0, + repeatCount: 0, + }) + + expect(job.processAt.toISOString()).toBe(testCase.expected) + } + }) + + it("should maintain timestamp consistency across retrieval", async () => { + // Test that what goes in comes out exactly the same + const originalTimestamp = 1705327200000 // 2024-01-15T14:00:00Z + const originalDate = new Date(originalTimestamp) + + await adapter.addJob({ + name: "consistency-test", + payload: { test: "data" }, + status: "pending", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: originalDate, + progress: 0, + repeatCount: 0, + }) + + // Retrieve the job + const retrievedJob = await adapter.getNextJob() + + expect(retrievedJob).toBeTruthy() + expect(retrievedJob?.processAt.getTime()).toBe(originalTimestamp) + expect(retrievedJob?.processAt.toISOString()).toBe(originalDate.toISOString()) + }) +}) diff --git a/packages/adapter-kysely/tests/utc-storage.test.ts b/packages/adapter-kysely/tests/utc-storage.test.ts new file mode 100644 index 0000000..208479e --- /dev/null +++ b/packages/adapter-kysely/tests/utc-storage.test.ts @@ -0,0 +1,166 @@ +import * as path from "path" +import { PGlite } from "@electric-sql/pglite" +import { Kysely, Migrator } from "kysely" +import { TSFileMigrationProvider } from "kysely-ctl" +import { PGliteDialect } from "kysely-pglite-dialect" +import { afterEach, beforeEach, describe, expect, it } from "vitest" + +import type { DB } from "~/types" +import { PostgresQueueAdapter } from "~/index" + +describe("UTC Storage Verification", () => { + let db: Kysely + let adapter: PostgresQueueAdapter + + let client: PGlite + + beforeEach(async () => { + client = new PGlite(undefined, { database: "test" }) + + db = new Kysely({ + dialect: new PGliteDialect(client), + }) + + const migrator = new Migrator({ + db, + provider: new TSFileMigrationProvider({ + // This needs to be an absolute path. + migrationFolder: path.join(__dirname, "../src/migrations"), + }), + }) + + await migrator.migrateToLatest() + + adapter = new PostgresQueueAdapter(db) + adapter.setQueueName("test-queue") + await adapter.connect() + }) + + afterEach(async () => { + await adapter.disconnect() + await client.close() + }) + it("should store all timestamps as UTC in database", async () => { + // Add job with timezone context + const job = await adapter.addJob({ + name: "timezone-test", + payload: { test: "data" }, + status: "pending", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: new Date("2024-01-15T14:00:00Z"), // 9 AM EST = 2 PM UTC + progress: 0, + cron: "0 9 * * *", + repeatEvery: undefined, + repeatLimit: undefined, + repeatCount: 0, + }) + + // Verify the job was stored + expect(job.processAt).toBeInstanceOf(Date) + + // The key test: processAt should be the exact UTC time we provided + expect(job.processAt.toISOString()).toBe("2024-01-15T14:00:00.000Z") + + // Verify no timezone field exists + expect(job).not.toHaveProperty("timezone") + + // Verify createdAt is also UTC + expect(job.createdAt.getTimezoneOffset()).toBe(new Date().getTimezoneOffset()) // Should be system UTC + }) + + it("should handle cron jobs with timezone conversion at creation", async () => { + // This simulates what happens when user adds a cron job with timezone + const processAt = new Date("2024-01-15T14:00:00Z") // Pre-converted to UTC + + const job = await adapter.addJob({ + name: "cron-timezone-test", + payload: { timezone: "America/New_York" }, // Timezone info in payload only + status: "delayed", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt, // Already UTC + progress: 0, + cron: "0 9 * * *", // Original cron expression + repeatEvery: undefined, + repeatLimit: undefined, + repeatCount: 0, + }) + + // Database should store exact UTC timestamp + expect(job.processAt.toISOString()).toBe("2024-01-15T14:00:00.000Z") + expect(job.cron).toBe("0 9 * * *") + expect(job).not.toHaveProperty("timezone") + }) + + it("should retrieve jobs with UTC timestamps", async () => { + // Add a job + await adapter.addJob({ + name: "retrieval-test", + payload: { test: "data" }, + status: "pending", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: new Date("2024-01-15T14:00:00Z"), + progress: 0, + repeatCount: 0, + }) + + // Retrieve the job + const job = await adapter.getNextJob() + + expect(job).toBeTruthy() + expect(job?.processAt.toISOString()).toBe("2024-01-15T14:00:00.000Z") + expect(job).not.toHaveProperty("timezone") + }) + + it("should handle delayed jobs with UTC timestamps", async () => { + const futureUTC = new Date(Date.now() + 3600000) // 1 hour from now in UTC + + const job = await adapter.addJob({ + name: "delayed-test", + payload: { test: "data" }, + status: "delayed", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: futureUTC, + progress: 0, + repeatCount: 0, + }) + + // Should store exact UTC timestamp + expect(job.processAt.getTime()).toBe(futureUTC.getTime()) + expect(job.status).toBe("delayed") + }) + + it("should verify database schema has no timezone columns", async () => { + // This is more of a schema verification test + const job = await adapter.addJob({ + name: "schema-test", + payload: { test: "data" }, + status: "pending", + priority: 2, + attempts: 0, + maxAttempts: 3, + processAt: new Date(), + progress: 0, + repeatCount: 0, + }) + + // Verify the job object structure + const jobKeys = Object.keys(job) + expect(jobKeys).not.toContain("timezone") + + // Verify required UTC fields exist + expect(jobKeys).toContain("createdAt") + expect(jobKeys).toContain("processAt") + + // All date fields should be Date objects (UTC) + expect(job.createdAt).toBeInstanceOf(Date) + expect(job.processAt).toBeInstanceOf(Date) + }) +}) diff --git a/packages/adapter-kysely/tsconfig.build.json b/packages/adapter-kysely/tsconfig.build.json new file mode 100644 index 0000000..777b017 --- /dev/null +++ b/packages/adapter-kysely/tsconfig.build.json @@ -0,0 +1,3 @@ +{ + "extends": "@vorsteh-queue/tsconfig/build.json" +} diff --git a/packages/adapter-kysely/tsconfig.json b/packages/adapter-kysely/tsconfig.json new file mode 100644 index 0000000..9e5ad39 --- /dev/null +++ b/packages/adapter-kysely/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "@vorsteh-queue/tsconfig/external-package.json", + "compilerOptions": { + "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json", + "baseUrl": ".", + "paths": { + "~/*": ["src/*"] + } + }, + "include": ["src", "tests"], + "exclude": ["node_modules"] +} diff --git a/packages/adapter-kysely/vitest.config.ts b/packages/adapter-kysely/vitest.config.ts new file mode 100644 index 0000000..8964785 --- /dev/null +++ b/packages/adapter-kysely/vitest.config.ts @@ -0,0 +1,9 @@ +import tsconfigPaths from "vite-tsconfig-paths" +import { defineConfig, Plugin } from "vitest/config" + +export default defineConfig({ + plugins: [tsconfigPaths() as unknown as Plugin], + test: { + environment: "node", + }, +}) diff --git a/packages/adapter-prisma/package.json b/packages/adapter-prisma/package.json index 6b2bf77..0afdde2 100644 --- a/packages/adapter-prisma/package.json +++ b/packages/adapter-prisma/package.json @@ -57,20 +57,20 @@ "@vorsteh-queue/core": "workspace:*" }, "devDependencies": { - "@prisma/adapter-pg": "^6.13.0", - "@prisma/client": "^6.13.0", - "@prisma/internals": "^6.13.0", - "@prisma/migrate": "^6.13.0", + "@prisma/adapter-pg": "^6.15.0", + "@prisma/client": "^6.15.0", + "@prisma/internals": "^6.15.0", + "@prisma/migrate": "^6.15.0", "@vorsteh-queue/eslint-config": "workspace:*", "@vorsteh-queue/prettier-config": "workspace:*", "@vorsteh-queue/tsconfig": "workspace:*", - "eslint": "^9.32.0", + "eslint": "^9.34.0", "prettier": "^3.6.2", - "prisma": "^6.13.0", - "rolldown": "1.0.0-beta.30", + "prisma": "^6.15.0", + "rolldown": "1.0.0-beta.34", "rollup-plugin-delete": "^3.0.1", - "testcontainers": "^11.4.0", - "typescript": "^5.8.3", + "testcontainers": "^11.5.1", + "typescript": "^5.9.2", "vitest": "^3.2.4" }, "peerDependencies": { diff --git a/packages/adapter-prisma/rolldown.config.ts b/packages/adapter-prisma/rolldown.config.ts index 72ea562..c9987eb 100644 --- a/packages/adapter-prisma/rolldown.config.ts +++ b/packages/adapter-prisma/rolldown.config.ts @@ -4,10 +4,7 @@ import del from "rollup-plugin-delete" export default defineConfig({ input: { index: "src/index.ts", - // "mariadb-adapter": "src/mariadb-adapter.ts", - // "mariadb-schema": "src/mariadb-schema.ts", "postgres-adapter": "src/postgres-adapter.ts", - // "postgres-schema": "src/postgres-schema.ts", }, output: { diff --git a/packages/adapter-prisma/src/index.ts b/packages/adapter-prisma/src/index.ts index cd74778..c539813 100644 --- a/packages/adapter-prisma/src/index.ts +++ b/packages/adapter-prisma/src/index.ts @@ -1 +1,4 @@ -export { PostgresPrismaQueueAdapter } from "./postgres-adapter" +export { + PostgresPrismaQueueAdapter, + PostgresPrismaQueueAdapter as PostgresQueueAdapter, +} from "./postgres-adapter" diff --git a/packages/core/package.json b/packages/core/package.json index 21954fc..a643dd1 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -63,7 +63,7 @@ }, "prettier": "@vorsteh-queue/prettier-config", "dependencies": { - "@date-fns/tz": "^1.2.0", + "@date-fns/tz": "^1.4.1", "croner": "^9.1.0", "date-fns": "^4.1.0" }, @@ -71,10 +71,10 @@ "@vorsteh-queue/eslint-config": "workspace:*", "@vorsteh-queue/prettier-config": "workspace:*", "@vorsteh-queue/tsconfig": "workspace:*", - "eslint": "^9.32.0", - "rolldown": "1.0.0-beta.30", + "eslint": "^9.34.0", + "rolldown": "1.0.0-beta.34", "rollup-plugin-delete": "^3.0.1", - "typescript": "^5.8.3", + "typescript": "^5.9.2", "vitest": "^3.2.4" }, "publishConfig": { diff --git a/packages/create-vorsteh-queue/package.json b/packages/create-vorsteh-queue/package.json index 89ae8a4..6ede19f 100644 --- a/packages/create-vorsteh-queue/package.json +++ b/packages/create-vorsteh-queue/package.json @@ -47,12 +47,12 @@ "@vorsteh-queue/eslint-config": "workspace:*", "@vorsteh-queue/prettier-config": "workspace:*", "@vorsteh-queue/tsconfig": "workspace:*", - "eslint": "^9.32.0", + "eslint": "^9.34.0", "prettier": "^3.6.2", - "rolldown": "1.0.0-beta.30", + "rolldown": "1.0.0-beta.34", "rollup-plugin-delete": "^3.0.1", - "tsx": "4.20.3", - "typescript": "^5.8.3" + "tsx": "4.20.5", + "typescript": "^5.9.2" }, "engines": { "node": ">=18" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 991c4a2..4c202d7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: devDependencies: '@changesets/cli': - specifier: 2.29.5 - version: 2.29.5 + specifier: 2.29.6 + version: 2.29.6(@types/node@24.3.0) '@vitest/coverage-v8': specifier: 3.2.4 version: 3.2.4(vitest@3.2.4) @@ -27,17 +27,17 @@ importers: specifier: 1.6.1 version: 1.6.1 turbo: - specifier: 2.5.5 - version: 2.5.5 + specifier: 2.5.6 + version: 2.5.6 typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.8.3)(vite@6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0)) + version: 5.1.4(typescript@5.9.2)(vite@6.3.5(@types/node@24.3.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5)(yaml@2.8.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.1.0)(@vitest/ui@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(msw@2.10.4(@types/node@24.1.0)(typescript@5.8.3))(tsx@4.20.3)(yaml@2.8.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(@vitest/ui@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(msw@2.10.4(@types/node@24.3.0)(typescript@5.9.2))(tsx@4.20.5)(yaml@2.8.1) apps/docs: dependencies: @@ -45,47 +45,47 @@ importers: specifier: 13.7.0 version: 13.7.0(react@19.1.1) '@mdx-js/loader': - specifier: 3.1.0 - version: 3.1.0(acorn@8.15.0) + specifier: 3.1.1 + version: 3.1.1 '@mdx-js/node-loader': - specifier: 3.1.0 - version: 3.1.0(acorn@8.15.0) + specifier: 3.1.1 + version: 3.1.1 '@mdx-js/react': - specifier: 3.1.0 - version: 3.1.0(@types/react@19.1.9)(react@19.1.1) + specifier: 3.1.1 + version: 3.1.1(@types/react@19.1.12)(react@19.1.1) '@next/mdx': - specifier: 15.4.5 - version: 15.4.5(@mdx-js/loader@3.1.0(acorn@8.15.0))(@mdx-js/react@3.1.0(@types/react@19.1.9)(react@19.1.1)) + specifier: 15.5.2 + version: 15.5.2(@mdx-js/loader@3.1.1)(@mdx-js/react@3.1.1(@types/react@19.1.12)(react@19.1.1)) '@radix-ui/react-collapsible': - specifier: ^1.1.11 - version: 1.1.11(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^1.1.12 + version: 1.1.12(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@radix-ui/react-compose-refs': specifier: 1.1.2 - version: 1.1.2(@types/react@19.1.9)(react@19.1.1) + version: 1.1.2(@types/react@19.1.12)(react@19.1.1) '@radix-ui/react-dialog': - specifier: ^1.1.14 - version: 1.1.14(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^1.1.15 + version: 1.1.15(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@radix-ui/react-dropdown-menu': - specifier: 2.1.15 - version: 2.1.15(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: 2.1.16 + version: 2.1.16(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@radix-ui/react-id': specifier: 1.1.1 - version: 1.1.1(@types/react@19.1.9)(react@19.1.1) + version: 1.1.1(@types/react@19.1.12)(react@19.1.1) '@radix-ui/react-primitive': specifier: 2.1.3 - version: 2.1.3(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@radix-ui/react-separator': specifier: ^1.1.7 - version: 1.1.7(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@radix-ui/react-slot': specifier: ^1.2.3 - version: 1.2.3(@types/react@19.1.9)(react@19.1.1) + version: 1.2.3(@types/react@19.1.12)(react@19.1.1) '@radix-ui/react-tabs': - specifier: 1.1.12 - version: 1.1.12(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: 1.1.13 + version: 1.1.13(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@radix-ui/react-tooltip': - specifier: ^1.2.7 - version: 1.2.7(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^1.2.8 + version: 1.2.8(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@vercel/og': specifier: 0.8.5 version: 0.8.5 @@ -102,14 +102,14 @@ importers: specifier: 13.1.1 version: 13.1.1(react@19.1.1) lucide-react: - specifier: 0.534.0 - version: 0.534.0(react@19.1.1) + specifier: 0.542.0 + version: 0.542.0(react@19.1.1) multimatch: specifier: 7.0.0 version: 7.0.0 next: - specifier: 15.4.5 - version: 15.4.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: 15.5.2 + version: 15.5.2(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) next-themes: specifier: latest version: 0.4.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1) @@ -141,30 +141,33 @@ importers: specifier: 7.0.0 version: 7.0.0 renoun: - specifier: 9.0.0 - version: 9.0.0(acorn@8.15.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: 9.5.0 + version: 9.5.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + tm-grammars: + specifier: 1.24.8 + version: 1.24.8 tm-themes: - specifier: 1.10.7 - version: 1.10.7 + specifier: 1.10.9 + version: 1.10.9 ts-morph: specifier: 26.0.0 version: 26.0.0 tw-animate-css: - specifier: ^1.3.6 - version: 1.3.6 + specifier: ^1.3.8 + version: 1.3.8 use-debounce: - specifier: 10.0.5 - version: 10.0.5(react@19.1.1) + specifier: 10.0.6 + version: 10.0.6(react@19.1.1) zod: - specifier: 4.0.14 - version: 4.0.14 + specifier: 4.1.5 + version: 4.1.5 devDependencies: '@tailwindcss/postcss': - specifier: 4.1.11 - version: 4.1.11 + specifier: 4.1.12 + version: 4.1.12 '@tailwindcss/typography': specifier: 0.5.16 - version: 0.5.16(tailwindcss@4.1.11) + version: 0.5.16(tailwindcss@4.1.12) '@types/mdx': specifier: 2.0.13 version: 2.0.13 @@ -172,11 +175,11 @@ importers: specifier: 22.16.5 version: 22.16.5 '@types/react': - specifier: 19.1.9 - version: 19.1.9 + specifier: 19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: 19.1.7 - version: 19.1.7(@types/react@19.1.9) + specifier: 19.1.9 + version: 19.1.9(@types/react@19.1.12) '@types/serve-handler': specifier: 6.1.4 version: 6.1.4 @@ -199,14 +202,14 @@ importers: specifier: workspace:* version: link:../../tooling/typescript eslint: - specifier: ^9.32.0 - version: 9.32.0(jiti@2.5.1) + specifier: ^9.34.0 + version: 9.34.0(jiti@2.5.1) next-validate-link: specifier: 1.5.2 version: 1.5.2 pagefind: - specifier: 1.3.0 - version: 1.3.0 + specifier: 1.4.0 + version: 1.4.0 postcss: specifier: 8.5.6 version: 8.5.6 @@ -220,17 +223,17 @@ importers: specifier: 3.3.1 version: 3.3.1 tailwindcss: - specifier: 4.1.11 - version: 4.1.11 + specifier: 4.1.12 + version: 4.1.12 tailwindcss-animate: specifier: 1.0.7 - version: 1.0.7(tailwindcss@4.1.11) + version: 1.0.7(tailwindcss@4.1.12) tsx: - specifier: 4.20.3 - version: 4.20.3 + specifier: 4.20.5 + version: 4.20.5 typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 examples/drizzle-pg: dependencies: @@ -241,8 +244,8 @@ importers: specifier: workspace:* version: link:../../packages/core drizzle-orm: - specifier: ^0.44.4 - version: 0.44.4(@electric-sql/pglite@0.3.6)(@prisma/client@6.13.0(prisma@6.13.0(magicast@0.3.5)(typescript@5.8.3))(typescript@5.8.3))(@types/pg@8.15.5)(mysql2@3.14.2)(pg@8.16.3)(postgres@3.4.7)(prisma@6.13.0(magicast@0.3.5)(typescript@5.8.3)) + specifier: ^0.44.5 + version: 0.44.5(@electric-sql/pglite@0.3.7)(@opentelemetry/api@1.9.0)(@prisma/client@6.15.0(prisma@6.15.0(magicast@0.3.5)(typescript@5.9.2))(typescript@5.9.2))(@types/pg@8.15.5)(kysely@0.28.5)(mysql2@3.14.2)(pg@8.16.3)(postgres@3.4.7)(prisma@6.15.0(magicast@0.3.5)(typescript@5.9.2)) pg: specifier: 8.16.3 version: 8.16.3 @@ -254,17 +257,17 @@ importers: specifier: ^0.31.4 version: 0.31.4 tsx: - specifier: 4.20.3 - version: 4.20.3 + specifier: 4.20.5 + version: 4.20.5 typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 examples/drizzle-pglite: dependencies: '@electric-sql/pglite': - specifier: ^0.3.6 - version: 0.3.6 + specifier: ^0.3.7 + version: 0.3.7 '@vorsteh-queue/adapter-drizzle': specifier: workspace:* version: link:../../packages/adapter-drizzle @@ -272,18 +275,18 @@ importers: specifier: workspace:* version: link:../../packages/core drizzle-orm: - specifier: ^0.44.4 - version: 0.44.4(@electric-sql/pglite@0.3.6)(@prisma/client@6.13.0(prisma@6.13.0(magicast@0.3.5)(typescript@5.8.3))(typescript@5.8.3))(@types/pg@8.15.5)(mysql2@3.14.2)(pg@8.16.3)(postgres@3.4.7)(prisma@6.13.0(magicast@0.3.5)(typescript@5.8.3)) + specifier: ^0.44.5 + version: 0.44.5(@electric-sql/pglite@0.3.7)(@opentelemetry/api@1.9.0)(@prisma/client@6.15.0(prisma@6.15.0(magicast@0.3.5)(typescript@5.9.2))(typescript@5.9.2))(@types/pg@8.15.5)(kysely@0.28.5)(mysql2@3.14.2)(pg@8.16.3)(postgres@3.4.7)(prisma@6.15.0(magicast@0.3.5)(typescript@5.9.2)) devDependencies: '@types/node': specifier: 22.16.5 version: 22.16.5 tsx: - specifier: 4.20.3 - version: 4.20.3 + specifier: 4.20.5 + version: 4.20.5 typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 examples/drizzle-postgres: dependencies: @@ -294,8 +297,8 @@ importers: specifier: workspace:* version: link:../../packages/core drizzle-orm: - specifier: ^0.44.4 - version: 0.44.4(@electric-sql/pglite@0.3.6)(@prisma/client@6.13.0(prisma@6.13.0(magicast@0.3.5)(typescript@5.8.3))(typescript@5.8.3))(@types/pg@8.15.5)(mysql2@3.14.2)(pg@8.16.3)(postgres@3.4.7)(prisma@6.13.0(magicast@0.3.5)(typescript@5.8.3)) + specifier: ^0.44.5 + version: 0.44.5(@electric-sql/pglite@0.3.7)(@opentelemetry/api@1.9.0)(@prisma/client@6.15.0(prisma@6.15.0(magicast@0.3.5)(typescript@5.9.2))(typescript@5.9.2))(@types/pg@8.15.5)(kysely@0.28.5)(mysql2@3.14.2)(pg@8.16.3)(postgres@3.4.7)(prisma@6.15.0(magicast@0.3.5)(typescript@5.9.2)) postgres: specifier: ^3.4.7 version: 3.4.7 @@ -307,11 +310,11 @@ importers: specifier: ^0.31.4 version: 0.31.4 tsx: - specifier: 4.20.3 - version: 4.20.3 + specifier: 4.20.5 + version: 4.20.5 typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 examples/event-system: dependencies: @@ -322,8 +325,8 @@ importers: specifier: workspace:* version: link:../../packages/core drizzle-orm: - specifier: ^0.44.4 - version: 0.44.4(@electric-sql/pglite@0.3.6)(@prisma/client@6.13.0(prisma@6.13.0(magicast@0.3.5)(typescript@5.8.3))(typescript@5.8.3))(@types/pg@8.15.5)(mysql2@3.14.2)(pg@8.16.3)(postgres@3.4.7)(prisma@6.13.0(magicast@0.3.5)(typescript@5.8.3)) + specifier: ^0.44.5 + version: 0.44.5(@electric-sql/pglite@0.3.7)(@opentelemetry/api@1.9.0)(@prisma/client@6.15.0(prisma@6.15.0(magicast@0.3.5)(typescript@5.9.2))(typescript@5.9.2))(@types/pg@8.15.5)(kysely@0.28.5)(mysql2@3.14.2)(pg@8.16.3)(postgres@3.4.7)(prisma@6.15.0(magicast@0.3.5)(typescript@5.9.2)) postgres: specifier: ^3.4.7 version: 3.4.7 @@ -332,11 +335,42 @@ importers: specifier: ^0.31.4 version: 0.31.4 tsx: - specifier: 4.20.3 - version: 4.20.3 + specifier: 4.20.5 + version: 4.20.5 + typescript: + specifier: ^5.9.2 + version: 5.9.2 + + examples/kysely-postgres: + dependencies: + '@vorsteh-queue/adapter-kysely': + specifier: workspace:* + version: link:../../packages/adapter-kysely + '@vorsteh-queue/core': + specifier: workspace:* + version: link:../../packages/core + kysely: + specifier: ^0.28.5 + version: 0.28.5 + kysely-postgres-js: + specifier: ^2.0.0 + version: 2.0.0(kysely@0.28.5)(postgres@3.4.7) + postgres: + specifier: ^3.4.7 + version: 3.4.7 + devDependencies: + dotenv-cli: + specifier: 10.0.0 + version: 10.0.0 + kysely-ctl: + specifier: ^0.18.0 + version: 0.18.0(kysely-postgres-js@2.0.0(kysely@0.28.5)(postgres@3.4.7))(kysely@0.28.5)(magicast@0.3.5)(typescript@5.9.2) + tsx: + specifier: 4.20.5 + version: 4.20.5 typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 examples/pm2-workers: dependencies: @@ -347,8 +381,8 @@ importers: specifier: workspace:* version: link:../../packages/core drizzle-orm: - specifier: ^0.44.4 - version: 0.44.4(@electric-sql/pglite@0.3.6)(@prisma/client@6.13.0(prisma@6.13.0(magicast@0.3.5)(typescript@5.8.3))(typescript@5.8.3))(@types/pg@8.15.5)(mysql2@3.14.2)(pg@8.16.3)(postgres@3.4.7)(prisma@6.13.0(magicast@0.3.5)(typescript@5.8.3)) + specifier: ^0.44.5 + version: 0.44.5(@electric-sql/pglite@0.3.7)(@opentelemetry/api@1.9.0)(@prisma/client@6.15.0(prisma@6.15.0(magicast@0.3.5)(typescript@5.9.2))(typescript@5.9.2))(@types/pg@8.15.5)(kysely@0.28.5)(mysql2@3.14.2)(pg@8.16.3)(postgres@3.4.7)(prisma@6.15.0(magicast@0.3.5)(typescript@5.9.2)) postgres: specifier: ^3.4.7 version: 3.4.7 @@ -360,23 +394,23 @@ importers: specifier: ^0.31.4 version: 0.31.4 pm2: - specifier: 6.0.8 - version: 6.0.8 + specifier: 6.0.10 + version: 6.0.10 tsx: - specifier: 4.20.3 - version: 4.20.3 + specifier: 4.20.5 + version: 4.20.5 typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 examples/prisma-client: dependencies: '@prisma/adapter-pg': - specifier: ^6.13.0 - version: 6.13.0 + specifier: ^6.15.0 + version: 6.15.0 '@prisma/client': - specifier: ^6.13.0 - version: 6.13.0(prisma@6.13.0(magicast@0.3.5)(typescript@5.8.3))(typescript@5.8.3) + specifier: ^6.15.0 + version: 6.15.0(prisma@6.15.0(magicast@0.3.5)(typescript@5.9.2))(typescript@5.9.2) '@vorsteh-queue/adapter-prisma': specifier: workspace:* version: link:../../packages/adapter-prisma @@ -388,20 +422,20 @@ importers: specifier: 10.0.0 version: 10.0.0 prisma: - specifier: ^6.13.0 - version: 6.13.0(magicast@0.3.5)(typescript@5.8.3) + specifier: ^6.15.0 + version: 6.15.0(magicast@0.3.5)(typescript@5.9.2) tsx: - specifier: 4.20.3 - version: 4.20.3 + specifier: 4.20.5 + version: 4.20.5 typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 examples/prisma-client-js: dependencies: '@prisma/client': - specifier: ^6.13.0 - version: 6.13.0(prisma@6.13.0(magicast@0.3.5)(typescript@5.8.3))(typescript@5.8.3) + specifier: ^6.15.0 + version: 6.15.0(prisma@6.15.0(magicast@0.3.5)(typescript@5.9.2))(typescript@5.9.2) '@vorsteh-queue/adapter-prisma': specifier: workspace:* version: link:../../packages/adapter-prisma @@ -413,14 +447,14 @@ importers: specifier: 10.0.0 version: 10.0.0 prisma: - specifier: ^6.13.0 - version: 6.13.0(magicast@0.3.5)(typescript@5.8.3) + specifier: ^6.15.0 + version: 6.15.0(magicast@0.3.5)(typescript@5.9.2) tsx: - specifier: 4.20.3 - version: 4.20.3 + specifier: 4.20.5 + version: 4.20.5 typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 examples/progress-tracking: dependencies: @@ -431,8 +465,8 @@ importers: specifier: workspace:* version: link:../../packages/core drizzle-orm: - specifier: ^0.44.4 - version: 0.44.4(@electric-sql/pglite@0.3.6)(@prisma/client@6.13.0(prisma@6.13.0(magicast@0.3.5)(typescript@5.8.3))(typescript@5.8.3))(@types/pg@8.15.5)(mysql2@3.14.2)(pg@8.16.3)(postgres@3.4.7)(prisma@6.13.0(magicast@0.3.5)(typescript@5.8.3)) + specifier: ^0.44.5 + version: 0.44.5(@electric-sql/pglite@0.3.7)(@opentelemetry/api@1.9.0)(@prisma/client@6.15.0(prisma@6.15.0(magicast@0.3.5)(typescript@5.9.2))(typescript@5.9.2))(@types/pg@8.15.5)(kysely@0.28.5)(mysql2@3.14.2)(pg@8.16.3)(postgres@3.4.7)(prisma@6.15.0(magicast@0.3.5)(typescript@5.9.2)) postgres: specifier: ^3.4.7 version: 3.4.7 @@ -441,17 +475,17 @@ importers: specifier: ^0.31.4 version: 0.31.4 tsx: - specifier: 4.20.3 - version: 4.20.3 + specifier: 4.20.5 + version: 4.20.5 typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 examples/result-storage: dependencies: '@electric-sql/pglite': - specifier: ^0.3.6 - version: 0.3.6 + specifier: ^0.3.7 + version: 0.3.7 '@vorsteh-queue/adapter-drizzle': specifier: workspace:* version: link:../../packages/adapter-drizzle @@ -459,18 +493,18 @@ importers: specifier: workspace:* version: link:../../packages/core drizzle-orm: - specifier: ^0.44.4 - version: 0.44.4(@electric-sql/pglite@0.3.6)(@prisma/client@6.13.0(prisma@6.13.0(magicast@0.3.5)(typescript@5.8.3))(typescript@5.8.3))(@types/pg@8.15.5)(mysql2@3.14.2)(pg@8.16.3)(postgres@3.4.7)(prisma@6.13.0(magicast@0.3.5)(typescript@5.8.3)) + specifier: ^0.44.5 + version: 0.44.5(@electric-sql/pglite@0.3.7)(@opentelemetry/api@1.9.0)(@prisma/client@6.15.0(prisma@6.15.0(magicast@0.3.5)(typescript@5.9.2))(typescript@5.9.2))(@types/pg@8.15.5)(kysely@0.28.5)(mysql2@3.14.2)(pg@8.16.3)(postgres@3.4.7)(prisma@6.15.0(magicast@0.3.5)(typescript@5.9.2)) devDependencies: drizzle-kit: specifier: ^0.31.4 version: 0.31.4 tsx: - specifier: 4.20.3 - version: 4.20.3 + specifier: 4.20.5 + version: 4.20.5 typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 packages/adapter-drizzle: dependencies: @@ -479,8 +513,8 @@ importers: version: link:../core devDependencies: '@electric-sql/pglite': - specifier: ^0.3.6 - version: 0.3.6 + specifier: ^0.3.7 + version: 0.3.7 '@vorsteh-queue/eslint-config': specifier: workspace:* version: link:../../tooling/eslint @@ -494,11 +528,11 @@ importers: specifier: ^0.31.4 version: 0.31.4 drizzle-orm: - specifier: ^0.44.4 - version: 0.44.4(@electric-sql/pglite@0.3.6)(@prisma/client@6.13.0(prisma@6.13.0(magicast@0.3.5)(typescript@5.8.3))(typescript@5.8.3))(@types/pg@8.15.5)(mysql2@3.14.2)(pg@8.16.3)(postgres@3.4.7)(prisma@6.13.0(magicast@0.3.5)(typescript@5.8.3)) + specifier: ^0.44.5 + version: 0.44.5(@electric-sql/pglite@0.3.7)(@opentelemetry/api@1.9.0)(@prisma/client@6.15.0(prisma@6.15.0(magicast@0.3.5)(typescript@5.9.2))(typescript@5.9.2))(@types/pg@8.15.5)(kysely@0.28.5)(mysql2@3.14.2)(pg@8.16.3)(postgres@3.4.7)(prisma@6.15.0(magicast@0.3.5)(typescript@5.9.2)) eslint: - specifier: ^9.32.0 - version: 9.32.0(jiti@2.5.1) + specifier: ^9.34.0 + version: 9.34.0(jiti@2.5.1) postgres: specifier: ^3.4.7 version: 3.4.7 @@ -506,17 +540,63 @@ importers: specifier: ^3.6.2 version: 3.6.2 rolldown: - specifier: 1.0.0-beta.30 - version: 1.0.0-beta.30 + specifier: 1.0.0-beta.34 + version: 1.0.0-beta.34 rollup-plugin-delete: specifier: ^3.0.1 version: 3.0.1(rollup@4.45.1) typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.1.0)(@vitest/ui@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(msw@2.10.4(@types/node@24.1.0)(typescript@5.8.3))(tsx@4.20.3)(yaml@2.8.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(@vitest/ui@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(msw@2.10.4(@types/node@24.3.0)(typescript@5.9.2))(tsx@4.20.5)(yaml@2.8.1) + + packages/adapter-kysely: + dependencies: + '@vorsteh-queue/core': + specifier: workspace:* + version: link:../core + devDependencies: + '@electric-sql/pglite': + specifier: ^0.3.7 + version: 0.3.7 + '@vorsteh-queue/eslint-config': + specifier: workspace:* + version: link:../../tooling/eslint + '@vorsteh-queue/prettier-config': + specifier: workspace:* + version: link:../../tooling/prettier + '@vorsteh-queue/tsconfig': + specifier: workspace:* + version: link:../../tooling/typescript + eslint: + specifier: ^9.34.0 + version: 9.34.0(jiti@2.5.1) + kysely: + specifier: ^0.28.5 + version: 0.28.5 + kysely-ctl: + specifier: ^0.18.0 + version: 0.18.0(kysely-postgres-js@2.0.0(kysely@0.28.5)(postgres@3.4.7))(kysely@0.28.5)(magicast@0.3.5)(typescript@5.9.2) + kysely-pglite-dialect: + specifier: ^1.1.1 + version: 1.1.1(@electric-sql/pglite@0.3.7)(kysely@0.28.5) + prettier: + specifier: ^3.6.2 + version: 3.6.2 + rolldown: + specifier: 1.0.0-beta.34 + version: 1.0.0-beta.34 + rollup-plugin-delete: + specifier: ^3.0.1 + version: 3.0.1(rollup@4.45.1) + typescript: + specifier: ^5.9.2 + version: 5.9.2 + vitest: + specifier: ^3.2.4 + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(@vitest/ui@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(msw@2.10.4(@types/node@24.3.0)(typescript@5.9.2))(tsx@4.20.5)(yaml@2.8.1) packages/adapter-prisma: dependencies: @@ -525,17 +605,17 @@ importers: version: link:../core devDependencies: '@prisma/adapter-pg': - specifier: ^6.13.0 - version: 6.13.0 + specifier: ^6.15.0 + version: 6.15.0 '@prisma/client': - specifier: ^6.13.0 - version: 6.13.0(prisma@6.13.0(magicast@0.3.5)(typescript@5.8.3))(typescript@5.8.3) + specifier: ^6.15.0 + version: 6.15.0(prisma@6.15.0(magicast@0.3.5)(typescript@5.9.2))(typescript@5.9.2) '@prisma/internals': - specifier: ^6.13.0 - version: 6.13.0(magicast@0.3.5)(typescript@5.8.3) + specifier: ^6.15.0 + version: 6.15.0(magicast@0.3.5)(typescript@5.9.2) '@prisma/migrate': - specifier: ^6.13.0 - version: 6.13.0(@prisma/internals@6.13.0(magicast@0.3.5)(typescript@5.8.3))(magicast@0.3.5)(typescript@5.8.3) + specifier: ^6.15.0 + version: 6.15.0(@prisma/internals@6.15.0(magicast@0.3.5)(typescript@5.9.2))(magicast@0.3.5)(typescript@5.9.2) '@vorsteh-queue/eslint-config': specifier: workspace:* version: link:../../tooling/eslint @@ -546,35 +626,35 @@ importers: specifier: workspace:* version: link:../../tooling/typescript eslint: - specifier: ^9.32.0 - version: 9.32.0(jiti@2.5.1) + specifier: ^9.34.0 + version: 9.34.0(jiti@2.5.1) prettier: specifier: ^3.6.2 version: 3.6.2 prisma: - specifier: ^6.13.0 - version: 6.13.0(magicast@0.3.5)(typescript@5.8.3) + specifier: ^6.15.0 + version: 6.15.0(magicast@0.3.5)(typescript@5.9.2) rolldown: - specifier: 1.0.0-beta.30 - version: 1.0.0-beta.30 + specifier: 1.0.0-beta.34 + version: 1.0.0-beta.34 rollup-plugin-delete: specifier: ^3.0.1 version: 3.0.1(rollup@4.45.1) testcontainers: - specifier: ^11.4.0 - version: 11.4.0 + specifier: ^11.5.1 + version: 11.5.1 typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.1.0)(@vitest/ui@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(msw@2.10.4(@types/node@24.1.0)(typescript@5.8.3))(tsx@4.20.3)(yaml@2.8.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(@vitest/ui@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(msw@2.10.4(@types/node@24.3.0)(typescript@5.9.2))(tsx@4.20.5)(yaml@2.8.1) packages/core: dependencies: '@date-fns/tz': - specifier: ^1.2.0 - version: 1.2.0 + specifier: ^1.4.1 + version: 1.4.1 croner: specifier: ^9.1.0 version: 9.1.0 @@ -592,20 +672,20 @@ importers: specifier: workspace:* version: link:../../tooling/typescript eslint: - specifier: ^9.32.0 - version: 9.32.0(jiti@2.5.1) + specifier: ^9.34.0 + version: 9.34.0(jiti@2.5.1) rolldown: - specifier: 1.0.0-beta.30 - version: 1.0.0-beta.30 + specifier: 1.0.0-beta.34 + version: 1.0.0-beta.34 rollup-plugin-delete: specifier: ^3.0.1 version: 3.0.1(rollup@4.45.1) typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.1.0)(@vitest/ui@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(msw@2.10.4(@types/node@24.1.0)(typescript@5.8.3))(tsx@4.20.3)(yaml@2.8.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(@vitest/ui@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(msw@2.10.4(@types/node@24.3.0)(typescript@5.9.2))(tsx@4.20.5)(yaml@2.8.1) packages/create-vorsteh-queue: dependencies: @@ -641,57 +721,57 @@ importers: specifier: workspace:* version: link:../../tooling/typescript eslint: - specifier: ^9.32.0 - version: 9.32.0(jiti@2.5.1) + specifier: ^9.34.0 + version: 9.34.0(jiti@2.5.1) prettier: specifier: ^3.6.2 version: 3.6.2 rolldown: - specifier: 1.0.0-beta.30 - version: 1.0.0-beta.30 + specifier: 1.0.0-beta.34 + version: 1.0.0-beta.34 rollup-plugin-delete: specifier: ^3.0.1 version: 3.0.1(rollup@4.45.1) tsx: - specifier: 4.20.3 - version: 4.20.3 + specifier: 4.20.5 + version: 4.20.5 typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 tooling/eslint: dependencies: '@eslint/compat': - specifier: 1.3.1 - version: 1.3.1(eslint@9.32.0(jiti@2.5.1)) + specifier: 1.3.2 + version: 1.3.2(eslint@9.34.0(jiti@2.5.1)) '@next/eslint-plugin-next': - specifier: 15.4.5 - version: 15.4.5 + specifier: 15.5.2 + version: 15.5.2 eslint-config-turbo: - specifier: 2.5.5 - version: 2.5.5(eslint@9.32.0(jiti@2.5.1))(turbo@2.5.5) + specifier: 2.5.6 + version: 2.5.6(eslint@9.34.0(jiti@2.5.1))(turbo@2.5.6) eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.32.0(jiti@2.5.1)) + version: 2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1)) eslint-plugin-package-json: - specifier: 0.47.1 - version: 0.47.1(@types/estree@1.0.8)(eslint@9.32.0(jiti@2.5.1))(jsonc-eslint-parser@2.4.0) + specifier: 0.56.1 + version: 0.56.1(@types/estree@1.0.8)(eslint@9.34.0(jiti@2.5.1))(jsonc-eslint-parser@2.4.0) eslint-plugin-react: specifier: 7.37.5 - version: 7.37.5(eslint@9.32.0(jiti@2.5.1)) + version: 7.37.5(eslint@9.34.0(jiti@2.5.1)) eslint-plugin-react-hooks: specifier: 5.2.0 - version: 5.2.0(eslint@9.32.0(jiti@2.5.1)) + version: 5.2.0(eslint@9.34.0(jiti@2.5.1)) jsonc-eslint-parser: specifier: 2.4.0 version: 2.4.0 typescript-eslint: - specifier: 8.38.0 - version: 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) + specifier: 8.42.0 + version: 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) devDependencies: '@eslint/js': - specifier: 9.32.0 - version: 9.32.0 + specifier: 9.34.0 + version: 9.34.0 '@vorsteh-queue/prettier-config': specifier: workspace:* version: link:../prettier @@ -699,33 +779,33 @@ importers: specifier: workspace:* version: link:../typescript eslint: - specifier: ^9.32.0 - version: 9.32.0(jiti@2.5.1) + specifier: ^9.34.0 + version: 9.34.0(jiti@2.5.1) prettier: specifier: ^3.6.2 version: 3.6.2 typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 tooling/prettier: dependencies: '@ianvs/prettier-plugin-sort-imports': - specifier: 4.5.1 - version: 4.5.1(prettier@3.6.2) + specifier: 4.7.0 + version: 4.7.0(prettier@3.6.2) prettier: specifier: ^3.6.2 version: 3.6.2 prettier-plugin-tailwindcss: specifier: 0.6.14 - version: 0.6.14(@ianvs/prettier-plugin-sort-imports@4.5.1(prettier@3.6.2))(prettier@3.6.2) + version: 0.6.14(@ianvs/prettier-plugin-sort-imports@4.7.0(prettier@3.6.2))(prettier@3.6.2) devDependencies: '@vorsteh-queue/tsconfig': specifier: workspace:* version: link:../typescript typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 tooling/typescript: {} @@ -753,8 +833,8 @@ packages: resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/generator@7.28.0': - resolution: {integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==} + '@babel/generator@7.28.3': + resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} engines: {node: '>=6.9.0'} '@babel/helper-globals@7.28.0': @@ -769,34 +849,25 @@ packages: resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} - '@babel/parser@7.27.5': - resolution: {integrity: sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==} + '@babel/parser@7.28.3': + resolution: {integrity: sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/parser@7.28.0': - resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/runtime@7.27.6': - resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} + '@babel/runtime@7.28.3': + resolution: {integrity: sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==} engines: {node: '>=6.9.0'} '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.0': - resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} + '@babel/traverse@7.28.3': + resolution: {integrity: sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==} engines: {node: '>=6.9.0'} - '@babel/types@7.27.6': - resolution: {integrity: sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.28.1': - resolution: {integrity: sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==} + '@babel/types@7.28.2': + resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} engines: {node: '>=6.9.0'} '@balena/dockerignore@1.0.2': @@ -806,6 +877,9 @@ packages: resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} + '@bugsnag/cuid@3.2.1': + resolution: {integrity: sha512-zpvN8xQ5rdRWakMd/BcVkdn2F8HKlDSbM3l7duueK590WmI1T0ObTLc1V/1e55r14WNjPd5AJTYX4yPEAFVi+Q==} + '@bundled-es-modules/cookie@2.0.1': resolution: {integrity: sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw==} @@ -824,8 +898,8 @@ 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.6': + resolution: {integrity: sha512-6qCcVsIG1KQLhpQ5zE8N0PckIx4+9QlHK3z6/lwKnw7Tir71Bjw8BeOZaxA/4Jt00pcgCnCSWZnyuZf5Il05QQ==} hasBin: true '@changesets/config@3.1.1': @@ -876,23 +950,23 @@ packages: '@clack/prompts@0.11.0': resolution: {integrity: sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==} - '@date-fns/tz@1.2.0': - resolution: {integrity: sha512-LBrd7MiJZ9McsOgxqWX7AaxrDjcFVjWH/tIKJd7pnR7McaslGYOP1QmmiBXdJH/H/yLCT+rcQ7FaPBUxRGUtrg==} + '@date-fns/tz@1.4.1': + resolution: {integrity: sha512-P5LUNhtbj6YfI3iJjw5EL9eUAG6OitD0W3fWQcpQjDRc/QIsL0tRNuO1PcDvPccWL1fSTXXdE1ds+l95DV/OFA==} '@drizzle-team/brocli@0.10.2': resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==} - '@electric-sql/pglite@0.3.6': - resolution: {integrity: sha512-KFIoLIhiOzYQzT2TOxqWH9eAMZcZd4tzSGXDY+6qRboZY2P76yFDNTKS4SB2c3hy6vRqIrHSh24VDPi9FyNhlA==} + '@electric-sql/pglite@0.3.7': + resolution: {integrity: sha512-5c3mybVrhxu5s47zFZtIGdG8YHkKCBENOmqxnNBjY53ZoDhADY/c5UqBDl159b7qtkzNPtbbb893wL9zi1kAuw==} - '@emnapi/core@1.4.5': - resolution: {integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==} + '@emnapi/core@1.5.0': + resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==} - '@emnapi/runtime@1.4.5': - resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==} + '@emnapi/runtime@1.5.0': + resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} - '@emnapi/wasi-threads@1.0.4': - resolution: {integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==} + '@emnapi/wasi-threads@1.1.0': + resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} '@esbuild-kit/core-utils@3.3.2': resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} @@ -908,6 +982,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.25.9': + resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.18.20': resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} @@ -920,6 +1000,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.25.9': + resolution: {integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.18.20': resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} @@ -932,6 +1018,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.25.9': + resolution: {integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.18.20': resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} @@ -944,6 +1036,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.25.9': + resolution: {integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.18.20': resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} @@ -956,6 +1054,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.25.9': + resolution: {integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.18.20': resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} @@ -968,6 +1072,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.25.9': + resolution: {integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.18.20': resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} @@ -980,6 +1090,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.25.9': + resolution: {integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.18.20': resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} @@ -992,6 +1108,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.25.9': + resolution: {integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.18.20': resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} @@ -1004,6 +1126,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.25.9': + resolution: {integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.18.20': resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} @@ -1016,6 +1144,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.25.9': + resolution: {integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.18.20': resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} @@ -1028,6 +1162,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.25.9': + resolution: {integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.18.20': resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} @@ -1040,6 +1180,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.25.9': + resolution: {integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.18.20': resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} @@ -1052,6 +1198,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.25.9': + resolution: {integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.18.20': resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} @@ -1064,6 +1216,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.25.9': + resolution: {integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.18.20': resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} @@ -1076,6 +1234,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.25.9': + resolution: {integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.18.20': resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} @@ -1088,6 +1252,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.25.9': + resolution: {integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.18.20': resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} @@ -1100,12 +1270,24 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.25.9': + resolution: {integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.25.6': resolution: {integrity: sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-arm64@0.25.9': + resolution: {integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.18.20': resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} @@ -1118,12 +1300,24 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.25.9': + resolution: {integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.25.6': resolution: {integrity: sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.25.9': + resolution: {integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.18.20': resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} @@ -1136,12 +1330,24 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.25.9': + resolution: {integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/openharmony-arm64@0.25.6': resolution: {integrity: sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] + '@esbuild/openharmony-arm64@0.25.9': + resolution: {integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.18.20': resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} @@ -1154,6 +1360,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.25.9': + resolution: {integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.18.20': resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} @@ -1166,6 +1378,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.25.9': + resolution: {integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.18.20': resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} @@ -1178,6 +1396,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.25.9': + resolution: {integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.18.20': resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} @@ -1190,8 +1414,14 @@ packages: cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.7.0': - resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} + '@esbuild/win32-x64@0.25.9': + resolution: {integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.8.0': + resolution: {integrity: sha512-MJQFqrZgcW0UNYLGOuQpey/oTN59vyWwplvCGZztn1cKz9agZPPYpJB7h2OMmuu7VLqkvEjN8feFZJmxNF9D+Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 @@ -1200,8 +1430,8 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/compat@1.3.1': - resolution: {integrity: sha512-k8MHony59I5EPic6EQTCNOuPoVBnoYXkP+20xvwFjN7t0qI3ImyvyBgg+hIVPwC8JaxVjjUZld+cLfBLFDLucg==} + '@eslint/compat@1.3.2': + resolution: {integrity: sha512-jRNwzTbd6p2Rw4sZ1CgWRS8YMtqG15YyZf7zvb6gY2rB2u6n+2Z+ELW0GtL0fQgyl0pr4Y/BzBfng/BdsereRA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.40 || 9 @@ -1213,38 +1443,38 @@ packages: resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/config-helpers@0.3.0': - resolution: {integrity: sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==} + '@eslint/config-helpers@0.3.1': + resolution: {integrity: sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.15.1': - resolution: {integrity: sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==} + '@eslint/core@0.15.2': + resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.3.1': resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.32.0': - resolution: {integrity: sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg==} + '@eslint/js@9.34.0': + resolution: {integrity: sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.3.4': - resolution: {integrity: sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==} + '@eslint/plugin-kit@0.3.5': + resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@floating-ui/core@1.7.2': - resolution: {integrity: sha512-wNB5ooIKHQc+Kui96jE/n69rHFWAVoxn5CAzL1Xdd8FG03cgY3MLO+GF9U3W737fYDSgPWA6MReKhBQBop6Pcw==} + '@floating-ui/core@1.7.3': + resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} - '@floating-ui/dom@1.7.2': - resolution: {integrity: sha512-7cfaOQuCS27HD7DX+6ib2OrnW+b4ZBwDNnCcT0uTyidcmyWb03FnQqJybDBoCnpdxwBSfA94UAYlRCt7mV+TbA==} + '@floating-ui/dom@1.7.4': + resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==} - '@floating-ui/react-dom@2.1.4': - resolution: {integrity: sha512-JbbpPhp38UmXDDAu60RJmbeme37Jbgsm7NrHGgzYYFKmblzRUh6Pa641dII6LsjwF4XlScDrde2UAzDo/b9KPw==} + '@floating-ui/react-dom@2.1.6': + resolution: {integrity: sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' @@ -1281,17 +1511,23 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@ianvs/prettier-plugin-sort-imports@4.5.1': - resolution: {integrity: sha512-vOQwIyQHnHz0ikvHEQDzwUkNfX74o/7qNEpm9LiPtyBvCg/AU/DOkhwe1o92chPS1QzS6G7HeiO+OwIt8a358A==} + '@ianvs/prettier-plugin-sort-imports@4.7.0': + resolution: {integrity: sha512-soa2bPUJAFruLL4z/CnMfSEKGznm5ebz29fIa9PxYtu8HHyLKNE1NXAs6dylfw1jn/ilEIfO2oLLN6uAafb7DA==} peerDependencies: '@prettier/plugin-oxc': ^0.0.4 '@vue/compiler-sfc': 2.7.x || 3.x + content-tag: ^4.0.0 prettier: 2 || 3 || ^4.0.0-0 + prettier-plugin-ember-template-tag: ^2.1.0 peerDependenciesMeta: '@prettier/plugin-oxc': optional: true '@vue/compiler-sfc': optional: true + content-tag: + optional: true + prettier-plugin-ember-template-tag: + optional: true '@icons-pack/react-simple-icons@13.7.0': resolution: {integrity: sha512-Vx5mnIm/3gD/9dpCfw/EdCXwzCswmvWnvMjL6zUJTbpk2PuyCdx5zSfiX8KQKYszD/1Z2mfaiBtqCxlHuDcpuA==} @@ -1420,8 +1656,17 @@ packages: cpu: [x64] os: [win32] - '@inquirer/confirm@5.1.14': - resolution: {integrity: sha512-5yR4IBfe0kXe59r1YCTG8WXkUbl7Z35HK87Sw+WUyGD8wNUx7JvY7laahzeytyE1oLn74bQnL7hstctQxisQ8Q==} + '@inquirer/confirm@5.1.16': + resolution: {integrity: sha512-j1a5VstaK5KQy8Mu8cHmuQvN1Zc62TbLhjJxwHvKPPKEoowSF6h/0UdOpA9DNdWZ+9Inq73+puRq1df6OJ8Sag==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/core@10.2.0': + resolution: {integrity: sha512-NyDSjPqhSvpZEMZrLCYUquWNl+XC/moEcVFqS55IEYIYsY0a1cUCevSqk7ctOlnm/RaSBU5psFryNlxcmGrjaA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1429,8 +1674,8 @@ packages: '@types/node': optional: true - '@inquirer/core@10.1.15': - resolution: {integrity: sha512-8xrp836RZvKkpNbVvgWUlxjT4CraKk2q+I3Ksy+seI2zkcE+y6wNs1BVhgcv8VyImFecUhdQrYLdW32pAjwBdA==} + '@inquirer/external-editor@1.0.1': + resolution: {integrity: sha512-Oau4yL24d2B5IL4ma4UpbQigkVhzPDXLoqy1ggK4gnHg/stmkffJE4oOXHXF3uz0UEpywG68KcyXsyYpA1Re/Q==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1471,13 +1716,16 @@ packages: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - '@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/gen-mapping@0.3.8': resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} + '@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'} @@ -1489,14 +1737,14 @@ packages: '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - '@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.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@jridgewell/trace-mapping@0.3.29': - resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} + '@jridgewell/trace-mapping@0.3.30': + resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==} '@js-sdsl/ordered-map@4.4.2': resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} @@ -1507,41 +1755,41 @@ packages: '@manypkg/get-packages@1.1.3': resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - '@mdx-js/loader@3.1.0': - resolution: {integrity: sha512-xU/lwKdOyfXtQGqn3VnJjlDrmKXEvMi1mgYxVmukEUtVycIz1nh7oQ40bKTd4cA7rLStqu0740pnhGYxGoqsCg==} + '@mdx-js/loader@3.1.1': + resolution: {integrity: sha512-0TTacJyZ9mDmY+VefuthVshaNIyCGZHJG2fMnGaDttCt8HmjUF7SizlHJpaCDoGnN635nK1wpzfpx/Xx5S4WnQ==} peerDependencies: webpack: '>=5' peerDependenciesMeta: webpack: optional: true - '@mdx-js/mdx@3.1.0': - resolution: {integrity: sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==} + '@mdx-js/mdx@3.1.1': + resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} - '@mdx-js/node-loader@3.1.0': - resolution: {integrity: sha512-ebg4584UltawHqC39PL99/8q4cImIrDsNkbWwg4EVMI0xSJb4M2EMCEyFLM97G/qTXcmLDyJhhcGRfx7cM2rfQ==} + '@mdx-js/node-loader@3.1.1': + resolution: {integrity: sha512-QUPA9DkIj+dmh655DZ+xJFGfbJO3rA4ujZIWrZx+Z01/24uHFp5GXafLsY0rqg608TYtlRXAp9HVofBJ/DQQng==} - '@mdx-js/react@3.1.0': - resolution: {integrity: sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==} + '@mdx-js/react@3.1.1': + resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==} peerDependencies: '@types/react': '>=16' react: '>=16' - '@mswjs/interceptors@0.39.5': - resolution: {integrity: sha512-B9nHSJYtsv79uo7QdkZ/b/WoKm20IkVSmTc/WCKarmDtFwM0dRx2ouEniqwNkzCSLn3fydzKmnMzjtfdOWt3VQ==} + '@mswjs/interceptors@0.39.6': + resolution: {integrity: sha512-bndDP83naYYkfayr/qhBHMhk0YGwS1iv6vaEGcr0SQbO0IZtbOPqjKjds/WcG+bJA+1T5vCx6kprKOzn5Bg+Vw==} engines: {node: '>=18'} - '@napi-rs/wasm-runtime@1.0.1': - resolution: {integrity: sha512-KVlQ/jgywZpixGCKMNwxStmmbYEMyokZpCf2YuIChhfJA2uqfAKNEM8INz7zzTo55iEXfBhIIs3VqYyqzDLj8g==} + '@napi-rs/wasm-runtime@1.0.3': + resolution: {integrity: sha512-rZxtMsLwjdXkMUGC3WwsPwLNVqVqnTJT6MNIB6e+5fhMcSCPP0AOsNWuMQ5mdCq6HNjs/ZeWAEchpqeprqBD2Q==} - '@next/env@15.4.5': - resolution: {integrity: sha512-ruM+q2SCOVCepUiERoxOmZY9ZVoecR3gcXNwCYZRvQQWRjhOiPJGmQ2fAiLR6YKWXcSAh7G79KEFxN3rwhs4LQ==} + '@next/env@15.5.2': + resolution: {integrity: sha512-Qe06ew4zt12LeO6N7j8/nULSOe3fMXE4dM6xgpBQNvdzyK1sv5y4oAP3bq4LamrvGCZtmRYnW8URFCeX5nFgGg==} - '@next/eslint-plugin-next@15.4.5': - resolution: {integrity: sha512-YhbrlbEt0m4jJnXHMY/cCUDBAWgd5SaTa5mJjzOt82QwflAFfW/h3+COp2TfVSzhmscIZ5sg2WXt3MLziqCSCw==} + '@next/eslint-plugin-next@15.5.2': + resolution: {integrity: sha512-lkLrRVxcftuOsJNhWatf1P2hNVfh98k/omQHrCEPPriUypR6RcS13IvLdIrEvkm9AH2Nu2YpR5vLqBuy6twH3Q==} - '@next/mdx@15.4.5': - resolution: {integrity: sha512-VQKJDAj/oRUG4vkxigCEEHalvXfTVtQyNsmIkXpFF+xSfN7GPnbvri2kzmMepWDA4ctaHKNEmvvEK53F4ZG3xg==} + '@next/mdx@15.5.2': + resolution: {integrity: sha512-Lz9mdoKRfSNc7T1cSk3gzryhRcc7ErsiAWba1HBoInCX4ZpGUQXmiZLAAyrIgDl7oS/UHxsgKtk2qp/Df4gKBg==} peerDependencies: '@mdx-js/loader': '>=0.15.0' '@mdx-js/react': '>=0.15.0' @@ -1551,54 +1799,58 @@ packages: '@mdx-js/react': optional: true - '@next/swc-darwin-arm64@15.4.5': - resolution: {integrity: sha512-84dAN4fkfdC7nX6udDLz9GzQlMUwEMKD7zsseXrl7FTeIItF8vpk1lhLEnsotiiDt+QFu3O1FVWnqwcRD2U3KA==} + '@next/swc-darwin-arm64@15.5.2': + resolution: {integrity: sha512-8bGt577BXGSd4iqFygmzIfTYizHb0LGWqH+qgIF/2EDxS5JsSdERJKA8WgwDyNBZgTIIA4D8qUtoQHmxIIquoQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@15.4.5': - resolution: {integrity: sha512-CL6mfGsKuFSyQjx36p2ftwMNSb8PQog8y0HO/ONLdQqDql7x3aJb/wB+LA651r4we2pp/Ck+qoRVUeZZEvSurA==} + '@next/swc-darwin-x64@15.5.2': + resolution: {integrity: sha512-2DjnmR6JHK4X+dgTXt5/sOCu/7yPtqpYt8s8hLkHFK3MGkka2snTv3yRMdHvuRtJVkPwCGsvBSwmoQCHatauFQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@15.4.5': - resolution: {integrity: sha512-1hTVd9n6jpM/thnDc5kYHD1OjjWYpUJrJxY4DlEacT7L5SEOXIifIdTye6SQNNn8JDZrcN+n8AWOmeJ8u3KlvQ==} + '@next/swc-linux-arm64-gnu@15.5.2': + resolution: {integrity: sha512-3j7SWDBS2Wov/L9q0mFJtEvQ5miIqfO4l7d2m9Mo06ddsgUK8gWfHGgbjdFlCp2Ek7MmMQZSxpGFqcC8zGh2AA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.4.5': - resolution: {integrity: sha512-4W+D/nw3RpIwGrqpFi7greZ0hjrCaioGErI7XHgkcTeWdZd146NNu1s4HnaHonLeNTguKnL2Urqvj28UJj6Gqw==} + '@next/swc-linux-arm64-musl@15.5.2': + resolution: {integrity: sha512-s6N8k8dF9YGc5T01UPQ08yxsK6fUow5gG1/axWc1HVVBYQBgOjca4oUZF7s4p+kwhkB1bDSGR8QznWrFZ/Rt5g==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@15.4.5': - resolution: {integrity: sha512-N6Mgdxe/Cn2K1yMHge6pclffkxzbSGOydXVKYOjYqQXZYjLCfN/CuFkaYDeDHY2VBwSHyM2fUjYBiQCIlxIKDA==} + '@next/swc-linux-x64-gnu@15.5.2': + resolution: {integrity: sha512-o1RV/KOODQh6dM6ZRJGZbc+MOAHww33Vbs5JC9Mp1gDk8cpEO+cYC/l7rweiEalkSm5/1WGa4zY7xrNwObN4+Q==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.4.5': - resolution: {integrity: sha512-YZ3bNDrS8v5KiqgWE0xZQgtXgCTUacgFtnEgI4ccotAASwSvcMPDLua7BWLuTfucoRv6mPidXkITJLd8IdJplQ==} + '@next/swc-linux-x64-musl@15.5.2': + resolution: {integrity: sha512-/VUnh7w8RElYZ0IV83nUcP/J4KJ6LLYliiBIri3p3aW2giF+PAVgZb6mk8jbQSB3WlTai8gEmCAr7kptFa1H6g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@15.4.5': - resolution: {integrity: sha512-9Wr4t9GkZmMNcTVvSloFtjzbH4vtT4a8+UHqDoVnxA5QyfWe6c5flTH1BIWPGNWSUlofc8dVJAE7j84FQgskvQ==} + '@next/swc-win32-arm64-msvc@15.5.2': + resolution: {integrity: sha512-sMPyTvRcNKXseNQ/7qRfVRLa0VhR0esmQ29DD6pqvG71+JdVnESJaHPA8t7bc67KD5spP3+DOCNLhqlEI2ZgQg==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@15.4.5': - resolution: {integrity: sha512-voWk7XtGvlsP+w8VBz7lqp8Y+dYw/MTI4KeS0gTVtfdhdJ5QwhXLmNrndFOin/MDoCvUaLWMkYKATaCoUkt2/A==} + '@next/swc-win32-x64-msvc@15.5.2': + resolution: {integrity: sha512-W5VvyZHnxG/2ukhZF/9Ikdra5fdNftxI6ybeVKYvBPDtyx7x4jPPSNduUkfH5fo3zG0JQ0bPxgy41af2JX5D4Q==} engines: {node: '>= 10'} cpu: [x64] os: [win32] + '@noble/hashes@1.8.0': + resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} + engines: {node: ^14.21.3 || >=16} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1620,38 +1872,50 @@ packages: '@open-draft/until@2.1.0': resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} - '@oxc-project/runtime@0.78.0': - resolution: {integrity: sha512-jOU7sDFMyq5ShGJC21UobalVzqcdtWGfySVp8ELvKoVLzMpLHb4kv1bs9VKxaP8XC7Z9hlAXwEKVhCTN+j21aQ==} + '@opentelemetry/api@1.9.0': + resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} + engines: {node: '>=8.0.0'} + + '@oxc-project/runtime@0.82.3': + resolution: {integrity: sha512-LNh5GlJvYHAnMurO+EyA8jJwN1rki7l3PSHuosDh2I7h00T6/u9rCkUjg/SvPmT1CZzvhuW0y+gf7jcqUy/Usg==} engines: {node: '>=6.9.0'} - '@oxc-project/types@0.78.0': - resolution: {integrity: sha512-8FvExh0WRWN1FoSTjah1xa9RlavZcJQ8/yxRbZ7ElmSa2Ij5f5Em7MvRbSthE6FbwC6Wh8iAw0Gpna7QdoqLGg==} + '@oxc-project/types@0.82.3': + resolution: {integrity: sha512-6nCUxBnGX0c6qfZW5MaF6/fmu5dHJDMiMPaioKHKs5mi5+8/FHQ7WGjgQIz1zxpmceMYfdIXkOaLYE+ejbuOtA==} - '@pagefind/darwin-arm64@1.3.0': - resolution: {integrity: sha512-365BEGl6ChOsauRjyVpBjXybflXAOvoMROw3TucAROHIcdBvXk9/2AmEvGFU0r75+vdQI4LJdJdpH4Y6Yqaj4A==} + '@pagefind/darwin-arm64@1.4.0': + resolution: {integrity: sha512-2vMqkbv3lbx1Awea90gTaBsvpzgRs7MuSgKDxW0m9oV1GPZCZbZBJg/qL83GIUEN2BFlY46dtUZi54pwH+/pTQ==} cpu: [arm64] os: [darwin] - '@pagefind/darwin-x64@1.3.0': - resolution: {integrity: sha512-zlGHA23uuXmS8z3XxEGmbHpWDxXfPZ47QS06tGUq0HDcZjXjXHeLG+cboOy828QIV5FXsm9MjfkP5e4ZNbOkow==} + '@pagefind/darwin-x64@1.4.0': + resolution: {integrity: sha512-e7JPIS6L9/cJfow+/IAqknsGqEPjJnVXGjpGm25bnq+NPdoD3c/7fAwr1OXkG4Ocjx6ZGSCijXEV4ryMcH2E3A==} cpu: [x64] os: [darwin] - '@pagefind/linux-arm64@1.3.0': - resolution: {integrity: sha512-8lsxNAiBRUk72JvetSBXs4WRpYrQrVJXjlRRnOL6UCdBN9Nlsz0t7hWstRk36+JqHpGWOKYiuHLzGYqYAqoOnQ==} + '@pagefind/freebsd-x64@1.4.0': + resolution: {integrity: sha512-WcJVypXSZ+9HpiqZjFXMUobfFfZZ6NzIYtkhQ9eOhZrQpeY5uQFqNWLCk7w9RkMUwBv1HAMDW3YJQl/8OqsV0Q==} + cpu: [x64] + os: [freebsd] + + '@pagefind/linux-arm64@1.4.0': + resolution: {integrity: sha512-PIt8dkqt4W06KGmQjONw7EZbhDF+uXI7i0XtRLN1vjCUxM9vGPdtJc2mUyVPevjomrGz5M86M8bqTr6cgDp1Uw==} cpu: [arm64] os: [linux] - '@pagefind/linux-x64@1.3.0': - resolution: {integrity: sha512-hAvqdPJv7A20Ucb6FQGE6jhjqy+vZ6pf+s2tFMNtMBG+fzcdc91uTw7aP/1Vo5plD0dAOHwdxfkyw0ugal4kcQ==} + '@pagefind/linux-x64@1.4.0': + resolution: {integrity: sha512-z4oddcWwQ0UHrTHR8psLnVlz6USGJ/eOlDPTDYZ4cI8TK8PgwRUPQZp9D2iJPNIPcS6Qx/E4TebjuGJOyK8Mmg==} cpu: [x64] os: [linux] - '@pagefind/windows-x64@1.3.0': - resolution: {integrity: sha512-BR1bIRWOMqkf8IoU576YDhij1Wd/Zf2kX/kCI0b2qzCKC8wcc2GQJaaRMCpzvCCrmliO4vtJ6RITp/AnoYUUmQ==} + '@pagefind/windows-x64@1.4.0': + resolution: {integrity: sha512-NkT+YAdgS2FPCn8mIA9bQhiBs+xmniMGq1LFPDhcFn0+2yIUEiIG06t7bsZlhdjknEQRTSdT7YitP6fC5qwP0g==} cpu: [x64] os: [win32] + '@paralleldrive/cuid2@2.2.2': + resolution: {integrity: sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==} + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -1673,23 +1937,26 @@ packages: '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} - '@prisma/adapter-pg@6.13.0': - resolution: {integrity: sha512-9jAb5F5gFDlh2jSbRRcB2W8L06WZtQWXcPtRxvoUuXubaGzCrQ/HxizwxsIjcvDSDe5YprQA2oUMM61jfSaQIg==} + '@prisma/adapter-pg@6.15.0': + resolution: {integrity: sha512-UDqysvOwrSLUDgSnLOKPmTvIrXhod5bMOBwb4GzSR/b6qqSO/SEb3Fq2ddGi1hZt6fAOSp+sXmdaQBy5Sakvkw==} + + '@prisma/client-common@6.15.0': + resolution: {integrity: sha512-WU+q/6wokU44DYv3cnOAWg5II2Cc/Ndq+WJdXNu/DD2G+Nd47vAilwk+QXm5DLY4zPLbQuuy6wSZygLYWzLmpg==} - '@prisma/client-common@6.13.0': - resolution: {integrity: sha512-5erjeKo6jZvZr5j2G9AYrco8RoTDI/lyVqMAQKk/IH4cebop5emVrSKFBNlMbGwowC/0pak19mzVZQb8McSadQ==} + '@prisma/client-engine-runtime@6.15.0': + resolution: {integrity: sha512-OJd9dG3/YTw8wCD4UnaIIuTGeRyhzJypMw1qwTxz0Vg5sfV5I/5l3sdP+oASnZGt0VMe0YORwUDZz2YT67uXCw==} - '@prisma/client-generator-js@6.13.0': - resolution: {integrity: sha512-5OTjG8+RkVqr39wLrtZJZEcNHE+fuYU10qi4CgSOHO8GjQtPiR9dRcCTD210yvUUKzT28w/qaa7TwONLgRb6KA==} + '@prisma/client-generator-js@6.15.0': + resolution: {integrity: sha512-AwlGIdNRjJouqlM6b/Qc7bfc+M8t4Qe26aHuiLTYXKK/kXurIkVYkQNq/6OkySZes3eC02gmVDdtKD43gSeerg==} - '@prisma/client-generator-registry@6.13.0': - resolution: {integrity: sha512-ulgJCLQfauUJGwD9UNdtay6XiEzq7Zqhi9wvjyeHS0KhR+Jib4Gfenqk7XL2bqwDW0mFqeClcIp8Ah4iaU3h5w==} + '@prisma/client-generator-registry@6.15.0': + resolution: {integrity: sha512-Tl3x8uTTEOErLrjug/wwUbFulCQWJtDN9ck5/WH4E3j/uqjbPEYFU4LR6pn47Y5r24QlBHFHm+lLNxLu9yzGEw==} - '@prisma/client-generator-ts@6.13.0': - resolution: {integrity: sha512-U8WnsFUkOyaot2IOXQ4pqSrKrqSchIl/MDXUhvK2iOu7sTxHo0NeH3t6JQi2fzxtKRFuTDtiOlpRNlW4KfkRuA==} + '@prisma/client-generator-ts@6.15.0': + resolution: {integrity: sha512-oDk6IIK1AzG6/7Y6fA0fyLJdclH1CIVqdmRGv0l3rGLwhwL/fBHJVO6YXRrsKvtg65slddnnKDIr2TducDD0zg==} - '@prisma/client@6.13.0': - resolution: {integrity: sha512-8m2+I3dQovkV8CkDMluiwEV1TxV9EXdT6xaCz39O6jYw7mkf5gwfmi+cL4LJsEPwz5tG7sreBwkRpEMJedGYUQ==} + '@prisma/client@6.15.0': + resolution: {integrity: sha512-wR2LXUbOH4cL/WToatI/Y2c7uzni76oNFND7+23ypLllBmIS8e3ZHhO+nud9iXSXKFt1SoM3fTZvHawg63emZw==} engines: {node: '>=18.18'} peerDependencies: prisma: '*' @@ -1700,60 +1967,60 @@ packages: typescript: optional: true - '@prisma/config@6.13.0': - resolution: {integrity: sha512-OYMM+pcrvj/NqNWCGESSxVG3O7kX6oWuGyvufTUNnDw740KIQvNyA4v0eILgkpuwsKIDU36beZCkUtIt0naTog==} + '@prisma/config@6.15.0': + resolution: {integrity: sha512-KMEoec9b2u6zX0EbSEx/dRpx1oNLjqJEBZYyK0S3TTIbZ7GEGoVyGyFRk4C72+A38cuPLbfQGQvgOD+gBErKlA==} - '@prisma/debug@6.13.0': - resolution: {integrity: sha512-um+9pfKJW0ihmM83id9FXGi5qEbVJ0Vxi1Gm0xpYsjwUBnw6s2LdPBbrsG9QXRX46K4CLWCTNvskXBup4i9hlw==} + '@prisma/debug@6.15.0': + resolution: {integrity: sha512-y7cSeLuQmyt+A3hstAs6tsuAiVXSnw9T55ra77z0nbNkA8Lcq9rNcQg6PI00by/+WnE/aMRJ/W7sZWn2cgIy1g==} - '@prisma/dmmf@6.13.0': - resolution: {integrity: sha512-69qWP2ddIpI2L3VyQkwGjhtyj1CNXUJ0qZPLa1VmZ27h20rUXBPflLAel9EtOyct/GSTjSq8qjBbhW5ohrfbSw==} + '@prisma/dmmf@6.15.0': + resolution: {integrity: sha512-HAUnWmxjtx8sJevhNhimSfAgho5JR6+H51DpQMZd1C5m1m4jOYkNIZ6oAdujls+Yo9iObfix4sUcvHmQY2HFQQ==} - '@prisma/driver-adapter-utils@6.13.0': - resolution: {integrity: sha512-72gQS/rz0KRV1bvi37OGu5PgMAzTQplFZuTo1kSb4hK7sm0PTvl7+V4NFHdwXEUecTq/+FnF9Ts9Ac+iKPnEow==} + '@prisma/driver-adapter-utils@6.15.0': + resolution: {integrity: sha512-tzcMG1eEBM3IJ8TBHo4jGeoUaalctqGXbrvxIoZb8jSEtgR82IUhdVyHHLVTlT8MdrHovcQJJ3jfcQfJARRnaQ==} - '@prisma/engines-version@6.13.0-35.361e86d0ea4987e9f53a565309b3eed797a6bcbd': - resolution: {integrity: sha512-MpPyKSzBX7P/ZY9odp9TSegnS/yH3CSbchQE9f0yBg3l2QyN59I6vGXcoYcqKC9VTniS1s18AMmhyr1OWavjHg==} + '@prisma/engines-version@6.15.0-5.85179d7826409ee107a6ba334b5e305ae3fba9fb': + resolution: {integrity: sha512-a/46aK5j6L3ePwilZYEgYDPrhBQ/n4gYjLxT5YncUTJJNRnTCVjPF86QdzUOLRdYjCLfhtZp9aum90W0J+trrg==} - '@prisma/engines@6.13.0': - resolution: {integrity: sha512-D+1B79LFvtWA0KTt8ALekQ6A/glB9w10ETknH5Y9g1k2NYYQOQy93ffiuqLn3Pl6IPJG3EsK/YMROKEaq8KBrA==} + '@prisma/engines@6.15.0': + resolution: {integrity: sha512-opITiR5ddFJ1N2iqa7mkRlohCZqVSsHhRcc29QXeldMljOf4FSellLT0J5goVb64EzRTKcIDeIsJBgmilNcKxA==} - '@prisma/fetch-engine@6.13.0': - resolution: {integrity: sha512-grmmq+4FeFKmaaytA8Ozc2+Tf3BC8xn/DVJos6LL022mfRlMZYjT3hZM0/xG7+5fO95zFG9CkDUs0m1S2rXs5Q==} + '@prisma/fetch-engine@6.15.0': + resolution: {integrity: sha512-xcT5f6b+OWBq6vTUnRCc7qL+Im570CtwvgSj+0MTSGA1o9UDSKZ/WANvwtiRXdbYWECpyC3CukoG3A04VTAPHw==} - '@prisma/generator-helper@6.13.0': - resolution: {integrity: sha512-6v5k9sGMhRDAnWxVfIo7QlewgVyOhr2NykyNh/PaH55g0LDswiTSYDfPPKyCPLxjDG0eA7FFX+gDyf94QkLT1A==} + '@prisma/generator-helper@6.15.0': + resolution: {integrity: sha512-QHwXmVo52tcbbqT72He+3iEjNFQmf26Pxt/FrA9rvM/AmpTeSVdwFWf7tJVk1p0CH/mL8hmgHMzzt6wjy3Aa3A==} - '@prisma/generator@6.13.0': - resolution: {integrity: sha512-vlV1qiEEb1w7D1J0h5/rz3ppgM/BRcJP5xz2QqHBlbjcAWzJjHkHsxeuC/OmkO4uHZXe9T2dGtf/nTw29UsBzA==} + '@prisma/generator@6.15.0': + resolution: {integrity: sha512-STY+e1wHAwl6rvnsmGG6/6ckVG9oRsYVP7W80N9dHSRxx2Wq1A9TxQBWRE8pep2Rq9hSoXNxJV0xcYwzC9K7Vg==} - '@prisma/get-platform@6.13.0': - resolution: {integrity: sha512-Nii2pX50fY4QKKxQwm7/vvqT6Ku8yYJLZAFX4e2vzHwRdMqjugcOG5hOSLjxqoXb0cvOspV70TOhMzrw8kqAnw==} + '@prisma/get-platform@6.15.0': + resolution: {integrity: sha512-Jbb+Xbxyp05NSR1x2epabetHiXvpO8tdN2YNoWoA/ZsbYyxxu/CO/ROBauIFuMXs3Ti+W7N7SJtWsHGaWte9Rg==} - '@prisma/internals@6.13.0': - resolution: {integrity: sha512-bVvbtT3hPem+oPr0R7ssfsT+gzi+29wux90SGSS5bytNkRwz+Ndbxk/H4w1ErLwN5ekizm2Uk51J6rwlkajbkQ==} + '@prisma/internals@6.15.0': + resolution: {integrity: sha512-0OptdhDwTSuICwk+Z8Oy47/jYF6ARD6ntUy71iQ64Pw0zDoSlUIhNLPKGngtZMo2iN0Dk7HPdgZj9dD9JvlCxw==} peerDependencies: typescript: '>=5.1.0' peerDependenciesMeta: typescript: optional: true - '@prisma/migrate@6.13.0': - resolution: {integrity: sha512-zb0SGdAgNTQSWynHzTXMQqSdM30mnalEysxaS54BTFB2Z0F2R9NKHCalL5W6lCElSskyeaujrzWISvqsKQEn1Q==} + '@prisma/migrate@6.15.0': + resolution: {integrity: sha512-emVWcGrW/BlXp0rAOssw0sjJ2qOha8pi9BAH3PxCbBVM3qwa/X1CPIVPQIDnU/D/7NYL0wazMLebJGJSIbWjSQ==} peerDependencies: '@prisma/internals': '*' - '@prisma/prisma-schema-wasm@6.13.0-35.361e86d0ea4987e9f53a565309b3eed797a6bcbd': - resolution: {integrity: sha512-qGm3hbUD9lFWXVqY48v+82F0bWyJHSAFFTKssCzbEsIUDOofmy3d50M9U9fyyOoRrKMekj9YfNhcdThMkIaxxw==} + '@prisma/prisma-schema-wasm@6.15.0-5.85179d7826409ee107a6ba334b5e305ae3fba9fb': + resolution: {integrity: sha512-vLhm9JB2xWzl3TxM0HRqbbDNuoqOuVP+veYUuxCeRfCoX6wMu65nTY0+Dxs0LPUWRzViM+antAmHUlDgnWLelw==} - '@prisma/schema-engine-wasm@6.13.0-35.361e86d0ea4987e9f53a565309b3eed797a6bcbd': - resolution: {integrity: sha512-GqtV354QSP6svheo1FYb87i/OXFw3QF8kX11MFRYTbsB3a4n+uyx9fo646yIASPQ9WPZJeFo02TARWUx69IV/A==} + '@prisma/schema-engine-wasm@6.15.0-5.85179d7826409ee107a6ba334b5e305ae3fba9fb': + resolution: {integrity: sha512-dmndTnOWV/8Evx+jrzRaXE+Qr6teeMmEUNRoAiGpbfWjFalZBYdt1Os3h1SHsTAgOFm6cafGlBR6eh0vBB8A3A==} - '@prisma/schema-files-loader@6.13.0': - resolution: {integrity: sha512-qalemg1t21AMa4JE6ZSgWn2bVJLV7SHYCJSnweur8CVwTKvZnNFlQMFJBHQsnvulvpm/Dvw3nBDebTL3Q04liw==} + '@prisma/schema-files-loader@6.15.0': + resolution: {integrity: sha512-Yxgj/H0B2ic8q982PKITgeFUCAgAqhc/cg+7bBL1VbcMqfV5PXD/Jm8mBA4v261EUTgUdkHYZnZhwepajzJWsg==} - '@prisma/ts-builders@6.13.0': - resolution: {integrity: sha512-/8AiAvzzTxZI1PKM7dFb8kO6f4BB6eW5HI2e854ZzGS0hCiz8/ksQ6KhNWXv+isF0jsqqh1ChVdhsJSj1Odk1g==} + '@prisma/ts-builders@6.15.0': + resolution: {integrity: sha512-ZXKodtJpLKFgvp1EaE5bFfr5xvyDzTUJxDy15jb46eEmezBfOT0GaP/pst4PsKd5pX95WabId3YTbKvK6LPj/w==} '@protobufjs/aspromise@1.1.2': resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} @@ -1785,8 +2052,8 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@radix-ui/primitive@1.1.2': - resolution: {integrity: sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==} + '@radix-ui/primitive@1.1.3': + resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} '@radix-ui/react-arrow@1.1.7': resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} @@ -1801,8 +2068,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-collapsible@1.1.11': - resolution: {integrity: sha512-2qrRsVGSCYasSz1RFOorXwl0H7g7J1frQtgpQgYrt+MOidtPAINHn9CPovQXb83r8ahapdx3Tu0fa/pdFFSdPg==} + '@radix-ui/react-collapsible@1.1.12': + resolution: {integrity: sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1845,8 +2112,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-dialog@1.1.14': - resolution: {integrity: sha512-+CpweKjqpzTmwRwcYECQcNYbI8V9VSQt0SNFKeEBLgfucbsLssU6Ppq7wUdNXEGb573bMjFhVjKVll8rmV6zMw==} + '@radix-ui/react-dialog@1.1.15': + resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1867,8 +2134,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-dismissable-layer@1.1.10': - resolution: {integrity: sha512-IM1zzRV4W3HtVgftdQiiOmA0AdJlCtMLe00FXaHwgt3rAnNsIyDqshvkIW3hj/iu5hu8ERP7KIYki6NkqDxAwQ==} + '@radix-ui/react-dismissable-layer@1.1.11': + resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1880,8 +2147,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-dropdown-menu@2.1.15': - resolution: {integrity: sha512-mIBnOjgwo9AH3FyKaSWoSu/dYj6VdhJ7frEPiGTeXCdUFHjl9h3mFh2wwhEtINOmYXWhdpf1rY2minFsmaNgVQ==} + '@radix-ui/react-dropdown-menu@2.1.16': + resolution: {integrity: sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1893,8 +2160,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-focus-guards@1.1.2': - resolution: {integrity: sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==} + '@radix-ui/react-focus-guards@1.1.3': + resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1924,8 +2191,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-menu@2.1.15': - resolution: {integrity: sha512-tVlmA3Vb9n8SZSd+YSbuFR66l87Wiy4du+YE+0hzKQEANA+7cWKH1WgqcEX4pXqxUFQKrWQGHdvEfw00TjFiew==} + '@radix-ui/react-menu@2.1.16': + resolution: {integrity: sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1937,8 +2204,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-popper@1.2.7': - resolution: {integrity: sha512-IUFAccz1JyKcf/RjB552PlWwxjeCJB8/4KxT7EhBHOJM+mN7LdW+B3kacJXILm32xawcMMjb2i0cIZpo+f9kiQ==} + '@radix-ui/react-popper@1.2.8': + resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1963,8 +2230,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-presence@1.1.4': - resolution: {integrity: sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==} + '@radix-ui/react-presence@1.1.5': + resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1989,8 +2256,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-roving-focus@1.1.10': - resolution: {integrity: sha512-dT9aOXUen9JSsxnMPv/0VqySQf5eDQ6LCk5Sw28kamz8wSOW2bJdlX2Bg5VUIIcV+6XlHpWTIuTPCf/UNIyq8Q==} + '@radix-ui/react-roving-focus@1.1.11': + resolution: {integrity: sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2024,8 +2291,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-tabs@1.1.12': - resolution: {integrity: sha512-GTVAlRVrQrSw3cEARM0nAx73ixrWDPNZAruETn3oHCNP6SbZ/hNxdxp+u7VkIEv3/sFoLq1PfcHrl7Pnp0CDpw==} + '@radix-ui/react-tabs@1.1.13': + resolution: {integrity: sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2037,8 +2304,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-tooltip@1.2.7': - resolution: {integrity: sha512-Ap+fNYwKTYJ9pzqW+Xe2HtMRbQ/EeWkj2qykZ6SuEV4iS/o1bZI5ssJbk4D2r8XuDuOBVz/tIx2JObtuqU+5Zw==} + '@radix-ui/react-tooltip@1.2.8': + resolution: {integrity: sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -2129,85 +2396,85 @@ packages: '@radix-ui/rect@1.1.1': resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} - '@renoun/mdx@3.0.0': - resolution: {integrity: sha512-uPJHSz6ceH/+7YF+Sk2AV1N0dFUP8kASqp6aZX1EjA8CR8dh7TREmLmlb5rixnYr6ftNe7qZRaiOu3BMWrmfwQ==} + '@renoun/mdx@3.1.0': + resolution: {integrity: sha512-R1n+E9ov8Y6IaOPnTfQZ4AyConE9sIxpV6RuP8GuX61OA7MawI1p8whphOrsnFqkjX9pELfMj2jjQH85r3NRXA==} '@resvg/resvg-wasm@2.4.0': resolution: {integrity: sha512-C7c51Nn4yTxXFKvgh2txJFNweaVcfUPQxwEUFw4aWsCmfiBDJsTSwviIF8EcwjQ6k8bPyMWCl1vw4BdxE569Cg==} engines: {node: '>= 10'} - '@rolldown/binding-android-arm64@1.0.0-beta.30': - resolution: {integrity: sha512-4j7QBitb/WMT1fzdJo7BsFvVNaFR5WCQPdf/RPDHEsgQIYwBaHaL47KTZxncGFQDD1UAKN3XScJ0k7LAsZfsvg==} + '@rolldown/binding-android-arm64@1.0.0-beta.34': + resolution: {integrity: sha512-jf5GNe5jP3Sr1Tih0WKvg2bzvh5T/1TA0fn1u32xSH7ca/p5t+/QRr4VRFCV/na5vjwKEhwWrChsL2AWlY+eoA==} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.30': - resolution: {integrity: sha512-4vWFTe1o5LXeitI2lW8qMGRxxwrH/LhKd2HDLa/QPhdxohvdnfKyDZWN96XUhDyje2bHFCFyhMs3ak2lg2mJFA==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.34': + resolution: {integrity: sha512-2F/TqH4QuJQ34tgWxqBjFL3XV1gMzeQgUO8YRtCPGBSP0GhxtoFzsp7KqmQEothsxztlv+KhhT9Dbg3HHwHViQ==} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.30': - resolution: {integrity: sha512-MxrfodqImbsDFFFU/8LxyFPZjt7s4ht8g2Zb76EmIQ+xlmit46L9IzvWiuMpEaSJ5WbnjO7fCDWwakMGyJJ+Dw==} + '@rolldown/binding-darwin-x64@1.0.0-beta.34': + resolution: {integrity: sha512-E1QuFslgLWbHQ8Qli/AqUKdfg0pockQPwRxVbhNQ74SciZEZpzLaujkdmOLSccMlSXDfFCF8RPnMoRAzQ9JV8Q==} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.30': - resolution: {integrity: sha512-c/TQXcATKoO8qE1bCjCOkymZTu7yVUAxBSNLp42Q97XHCb0Cu9v6MjZpB6c7Hq9NQ9NzW44uglak9D/r77JeDw==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.34': + resolution: {integrity: sha512-VS8VInNCwnkpI9WeQaWu3kVBq9ty6g7KrHdLxYMzeqz24+w9hg712TcWdqzdY6sn+24lUoMD9jTZrZ/qfVpk0g==} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.30': - resolution: {integrity: sha512-Vxci4xylM11zVqvrmezAaRjGBDyOlMRtlt7TDgxaBmSYLuiokXbZpD8aoSuOyjUAeN0/tmWItkxNGQza8UWGNQ==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.34': + resolution: {integrity: sha512-4St4emjcnULnxJYb/5ZDrH/kK/j6PcUgc3eAqH5STmTrcF+I9m/X2xvSF2a2bWv1DOQhxBewThu0KkwGHdgu5w==} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.30': - resolution: {integrity: sha512-iEBEdSs25Ol0lXyVNs763f7YPAIP0t1EAjoXME81oJ94DesJslaLTj71Rn1shoMDVA+dfkYA286w5uYnOs9ZNA==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.34': + resolution: {integrity: sha512-a737FTqhFUoWfnebS2SnQ2BS50p0JdukdkUBwy2J06j4hZ6Eej0zEB8vTfAqoCjn8BQKkXBy+3Sx0IRkgwz1gA==} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.30': - resolution: {integrity: sha512-Ny684Sn1X8c+gGLuDlxkOuwiEE3C7eEOqp1/YVBzQB4HO7U/b4n7alvHvShboOEY5DP1fFUjq6Z+sBLYlCIZbQ==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.34': + resolution: {integrity: sha512-NH+FeQWKyuw0k+PbXqpFWNfvD8RPvfJk766B/njdaWz4TmiEcSB0Nb6guNw1rBpM1FmltQYb3fFnTumtC6pRfA==} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-ohos@1.0.0-beta.30': - resolution: {integrity: sha512-6moyULHDPKwt5RDEV72EqYw5n+s46AerTwtEBau5wCsZd1wuHS1L9z6wqhKISXAFTK9sneN0TEjvYKo+sgbbiA==} - cpu: [arm64] - os: [openharmony] - - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.30': - resolution: {integrity: sha512-p0yoPdoGg5Ow2YZKKB5Ypbn58i7u4XFk3PvMkriFnEcgtVk40c5u7miaX7jH0JdzahyXVBJ/KT5yEpJrzQn8yg==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.34': + resolution: {integrity: sha512-Q3RSCivp8pNadYK8ke3hLnQk08BkpZX9BmMjgwae2FWzdxhxxUiUzd9By7kneUL0vRQ4uRnhD9VkFQ+Haeqdvw==} cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.30': - resolution: {integrity: sha512-sM/KhCrsT0YdHX10mFSr0cvbfk1+btG6ftepAfqhbcDfhi0s65J4dTOxGmklJnJL9i1LXZ8WA3N4wmnqsfoK8Q==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.34': + resolution: {integrity: sha512-wDd/HrNcVoBhWWBUW3evJHoo7GJE/RofssBy3Dsiip05YUBmokQVrYAyrboOY4dzs/lJ7HYeBtWQ9hj8wlyF0A==} cpu: [x64] os: [linux] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.30': - resolution: {integrity: sha512-i3kD5OWs8PQP0V+JW3TFyCLuyjuNzrB45em0g84Jc+gvnDsGVlzVjMNPo7txE/yT8CfE90HC/lDs3ry9FvaUyw==} + '@rolldown/binding-openharmony-arm64@1.0.0-beta.34': + resolution: {integrity: sha512-dH3FTEV6KTNWpYSgjSXZzeX7vLty9oBYn6R3laEdhwZftQwq030LKL+5wyQdlbX5pnbh4h127hpv3Hl1+sj8dg==} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.0.0-beta.34': + resolution: {integrity: sha512-y5BUf+QtO0JsIDKA51FcGwvhJmv89BYjUl8AmN7jqD6k/eU55mH6RJYnxwCsODq5m7KSSTigVb6O7/GqB8wbPw==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.30': - resolution: {integrity: sha512-q7mrYln30V35VrCqnBVQQvNPQm8Om9HC59I3kMYiOWogvJobzSPyO+HA1MP363+Qgwe39I2I1nqBKPOtWZ33AQ==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.34': + resolution: {integrity: sha512-ga5hFhdTwpaNxEiuxZHWnD3ed0GBAzbgzS5tRHpe0ObptxM1a9Xrq6TVfNQirBLwb5Y7T/FJmJi3pmdLy95ljg==} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.30': - resolution: {integrity: sha512-nUqGBt39XTpbBEREEnyKofdP3uz+SN/x2884BH+N3B2NjSUrP6NXwzltM35C0wKK42hX/nthRrwSgj715m99Jw==} + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.34': + resolution: {integrity: sha512-4/MBp9T9eRnZskxWr8EXD/xHvLhdjWaeX/qY9LPRG1JdCGV3DphkLTy5AWwIQ5jhAy2ZNJR5z2fYRlpWU0sIyQ==} cpu: [ia32] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.30': - resolution: {integrity: sha512-lbnvUwAXIVWSXAeZrCa4b1KvV/DW0rBnMHuX0T7I6ey1IsXZ90J37dEgt3j48Ex1Cw1E+5H7VDNP2gyOX8iu3w==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.34': + resolution: {integrity: sha512-7O5iUBX6HSBKlQU4WykpUoEmb0wQmonb6ziKFr3dJTHud2kzDnWMqk344T0qm3uGv9Ddq6Re/94pInxo1G2d4w==} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.30': - resolution: {integrity: sha512-whXaSoNUFiyDAjkUF8OBpOm77Szdbk5lGNqFe6CbVbJFrhCCPinCbRA3NjawwlNHla1No7xvXXh+CpSxnPfUEw==} + '@rolldown/pluginutils@1.0.0-beta.34': + resolution: {integrity: sha512-LyAREkZHP5pMom7c24meKmJCdhf2hEyvam2q0unr3or9ydwDL+DJ8chTF6Av/RFPb3rH8UFBdMzO5MxTZW97oA==} '@rollup/rollup-android-arm-eabi@4.43.0': resolution: {integrity: sha512-Krjy9awJl6rKbruhQDgivNbD1WuLb8xAclM4IR4cN5pHGAs2oIMMQJEiC3IC/9TZJ+QZkmZhlMO/6MBGxPidpw==} @@ -2412,18 +2679,6 @@ packages: '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - '@shikijs/langs@3.8.1': - resolution: {integrity: sha512-TjOFg2Wp1w07oKnXjs0AUMb4kJvujML+fJ1C5cmEj45lhjbUXtziT1x2bPQb9Db6kmPhkG5NI2tgYW1/DzhUuQ==} - - '@shikijs/themes@3.8.1': - resolution: {integrity: sha512-Vu3t3BBLifc0GB0UPg2Pox1naTemrrvyZv2lkiSw3QayVV60me1ujFQwPZGgUTmwXl1yhCPW8Lieesm0CYruLQ==} - - '@shikijs/types@3.8.1': - resolution: {integrity: sha512-5C39Q8/8r1I26suLh+5TPk1DTrbY/kn3IdWA5HdizR0FhlhD05zx5nKCqhzSfDHH3p4S0ZefxWd77DLV+8FhGg==} - - '@shikijs/vscode-textmate@10.0.2': - resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} - '@shuding/opentype.js@1.4.0-beta.0': resolution: {integrity: sha512-3NgmNyH3l/Hv6EvsWJbsvpcpUba6R8IREQ83nH83cyakCw7uM1arZKNfHwv1Wz6jgqrF/j4x5ELvR6PnK9nTcA==} engines: {node: '>= 8.0.0'} @@ -2439,65 +2694,65 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - '@tailwindcss/node@4.1.11': - resolution: {integrity: sha512-yzhzuGRmv5QyU9qLNg4GTlYI6STedBWRE7NjxP45CsFYYq9taI0zJXZBMqIC/c8fViNLhmrbpSFS57EoxUmD6Q==} + '@tailwindcss/node@4.1.12': + resolution: {integrity: sha512-3hm9brwvQkZFe++SBt+oLjo4OLDtkvlE8q2WalaD/7QWaeM7KEJbAiY/LJZUaCs7Xa8aUu4xy3uoyX4q54UVdQ==} - '@tailwindcss/oxide-android-arm64@4.1.11': - resolution: {integrity: sha512-3IfFuATVRUMZZprEIx9OGDjG3Ou3jG4xQzNTvjDoKmU9JdmoCohQJ83MYd0GPnQIu89YoJqvMM0G3uqLRFtetg==} + '@tailwindcss/oxide-android-arm64@4.1.12': + resolution: {integrity: sha512-oNY5pq+1gc4T6QVTsZKwZaGpBb2N1H1fsc1GD4o7yinFySqIuRZ2E4NvGasWc6PhYJwGK2+5YT1f9Tp80zUQZQ==} engines: {node: '>= 10'} cpu: [arm64] os: [android] - '@tailwindcss/oxide-darwin-arm64@4.1.11': - resolution: {integrity: sha512-ESgStEOEsyg8J5YcMb1xl8WFOXfeBmrhAwGsFxxB2CxY9evy63+AtpbDLAyRkJnxLy2WsD1qF13E97uQyP1lfQ==} + '@tailwindcss/oxide-darwin-arm64@4.1.12': + resolution: {integrity: sha512-cq1qmq2HEtDV9HvZlTtrj671mCdGB93bVY6J29mwCyaMYCP/JaUBXxrQQQm7Qn33AXXASPUb2HFZlWiiHWFytw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@tailwindcss/oxide-darwin-x64@4.1.11': - resolution: {integrity: sha512-EgnK8kRchgmgzG6jE10UQNaH9Mwi2n+yw1jWmof9Vyg2lpKNX2ioe7CJdf9M5f8V9uaQxInenZkOxnTVL3fhAw==} + '@tailwindcss/oxide-darwin-x64@4.1.12': + resolution: {integrity: sha512-6UCsIeFUcBfpangqlXay9Ffty9XhFH1QuUFn0WV83W8lGdX8cD5/+2ONLluALJD5+yJ7k8mVtwy3zMZmzEfbLg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@tailwindcss/oxide-freebsd-x64@4.1.11': - resolution: {integrity: sha512-xdqKtbpHs7pQhIKmqVpxStnY1skuNh4CtbcyOHeX1YBE0hArj2romsFGb6yUmzkq/6M24nkxDqU8GYrKrz+UcA==} + '@tailwindcss/oxide-freebsd-x64@4.1.12': + resolution: {integrity: sha512-JOH/f7j6+nYXIrHobRYCtoArJdMJh5zy5lr0FV0Qu47MID/vqJAY3r/OElPzx1C/wdT1uS7cPq+xdYYelny1ww==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.11': - resolution: {integrity: sha512-ryHQK2eyDYYMwB5wZL46uoxz2zzDZsFBwfjssgB7pzytAeCCa6glsiJGjhTEddq/4OsIjsLNMAiMlHNYnkEEeg==} + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.12': + resolution: {integrity: sha512-v4Ghvi9AU1SYgGr3/j38PD8PEe6bRfTnNSUE3YCMIRrrNigCFtHZ2TCm8142X8fcSqHBZBceDx+JlFJEfNg5zQ==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@tailwindcss/oxide-linux-arm64-gnu@4.1.11': - resolution: {integrity: sha512-mYwqheq4BXF83j/w75ewkPJmPZIqqP1nhoghS9D57CLjsh3Nfq0m4ftTotRYtGnZd3eCztgbSPJ9QhfC91gDZQ==} + '@tailwindcss/oxide-linux-arm64-gnu@4.1.12': + resolution: {integrity: sha512-YP5s1LmetL9UsvVAKusHSyPlzSRqYyRB0f+Kl/xcYQSPLEw/BvGfxzbH+ihUciePDjiXwHh+p+qbSP3SlJw+6g==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@tailwindcss/oxide-linux-arm64-musl@4.1.11': - resolution: {integrity: sha512-m/NVRFNGlEHJrNVk3O6I9ggVuNjXHIPoD6bqay/pubtYC9QIdAMpS+cswZQPBLvVvEF6GtSNONbDkZrjWZXYNQ==} + '@tailwindcss/oxide-linux-arm64-musl@4.1.12': + resolution: {integrity: sha512-V8pAM3s8gsrXcCv6kCHSuwyb/gPsd863iT+v1PGXC4fSL/OJqsKhfK//v8P+w9ThKIoqNbEnsZqNy+WDnwQqCA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@tailwindcss/oxide-linux-x64-gnu@4.1.11': - resolution: {integrity: sha512-YW6sblI7xukSD2TdbbaeQVDysIm/UPJtObHJHKxDEcW2exAtY47j52f8jZXkqE1krdnkhCMGqP3dbniu1Te2Fg==} + '@tailwindcss/oxide-linux-x64-gnu@4.1.12': + resolution: {integrity: sha512-xYfqYLjvm2UQ3TZggTGrwxjYaLB62b1Wiysw/YE3Yqbh86sOMoTn0feF98PonP7LtjsWOWcXEbGqDL7zv0uW8Q==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@tailwindcss/oxide-linux-x64-musl@4.1.11': - resolution: {integrity: sha512-e3C/RRhGunWYNC3aSF7exsQkdXzQ/M+aYuZHKnw4U7KQwTJotnWsGOIVih0s2qQzmEzOFIJ3+xt7iq67K/p56Q==} + '@tailwindcss/oxide-linux-x64-musl@4.1.12': + resolution: {integrity: sha512-ha0pHPamN+fWZY7GCzz5rKunlv9L5R8kdh+YNvP5awe3LtuXb5nRi/H27GeL2U+TdhDOptU7T6Is7mdwh5Ar3A==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@tailwindcss/oxide-wasm32-wasi@4.1.11': - resolution: {integrity: sha512-Xo1+/GU0JEN/C/dvcammKHzeM6NqKovG+6921MR6oadee5XPBaKOumrJCXvopJ/Qb5TH7LX/UAywbqrP4lax0g==} + '@tailwindcss/oxide-wasm32-wasi@4.1.12': + resolution: {integrity: sha512-4tSyu3dW+ktzdEpuk6g49KdEangu3eCYoqPhWNsZgUhyegEda3M9rG0/j1GV/JjVVsj+lG7jWAyrTlLzd/WEBg==} engines: {node: '>=14.0.0'} cpu: [wasm32] bundledDependencies: @@ -2508,24 +2763,24 @@ packages: - '@emnapi/wasi-threads' - tslib - '@tailwindcss/oxide-win32-arm64-msvc@4.1.11': - resolution: {integrity: sha512-UgKYx5PwEKrac3GPNPf6HVMNhUIGuUh4wlDFR2jYYdkX6pL/rn73zTq/4pzUm8fOjAn5L8zDeHp9iXmUGOXZ+w==} + '@tailwindcss/oxide-win32-arm64-msvc@4.1.12': + resolution: {integrity: sha512-iGLyD/cVP724+FGtMWslhcFyg4xyYyM+5F4hGvKA7eifPkXHRAUDFaimu53fpNg9X8dfP75pXx/zFt/jlNF+lg==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@tailwindcss/oxide-win32-x64-msvc@4.1.11': - resolution: {integrity: sha512-YfHoggn1j0LK7wR82TOucWc5LDCguHnoS879idHekmmiR7g9HUtMw9MI0NHatS28u/Xlkfi9w5RJWgz2Dl+5Qg==} + '@tailwindcss/oxide-win32-x64-msvc@4.1.12': + resolution: {integrity: sha512-NKIh5rzw6CpEodv/++r0hGLlfgT/gFN+5WNdZtvh6wpU2BpGNgdjvj6H2oFc8nCM839QM1YOhjpgbAONUb4IxA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@tailwindcss/oxide@4.1.11': - resolution: {integrity: sha512-Q69XzrtAhuyfHo+5/HMgr1lAiPP/G40OMFAnws7xcFEYqcypZmdW8eGXaOUIeOl1dzPJBPENXgbjsOyhg2nkrg==} + '@tailwindcss/oxide@4.1.12': + resolution: {integrity: sha512-gM5EoKHW/ukmlEtphNwaGx45fGoEmP10v51t9unv55voWh6WrOL19hfuIdo2FjxIaZzw776/BUQg7Pck++cIVw==} engines: {node: '>= 10'} - '@tailwindcss/postcss@4.1.11': - resolution: {integrity: sha512-q/EAIIpF6WpLhKEuQSEVMZNMIY8KhWoAemZ9eylNAih9jxMGAYPPWBn3I9QL/2jZ+e7OEz/tZkX5HwbBR4HohA==} + '@tailwindcss/postcss@4.1.12': + resolution: {integrity: sha512-5PpLYhCAwf9SJEeIsSmCDLgyVfdBhdBpzX1OJ87anT9IVR0Z9pjM0FNixCAUAHGnMBGB8K99SwAheXrT0Kh6QQ==} '@tailwindcss/typography@0.5.16': resolution: {integrity: sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==} @@ -2556,8 +2811,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.43': + resolution: {integrity: sha512-YCi0aKKpKeC9dhKTbuglvsWDnAyuIITd6CCJSTKiAdbDzPH4RWu0P9IK2XkJHdyplH6mzYtDYO+gB06JlzcPxg==} '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} @@ -2592,8 +2847,8 @@ packages: '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@18.19.121': - resolution: {integrity: sha512-bHOrbyztmyYIi4f1R0s17QsPs1uyyYnGcXeZoGEd227oZjry0q6XQBQxd82X1I57zEfwO8h9Xo+Kl5gX1d9MwQ==} + '@types/node@18.19.123': + resolution: {integrity: sha512-K7DIaHnh0mzVxreCR9qwgNxp3MH9dltPNIEddW9MYUlcKAzm+3grKNSTe2vCJHI1FaLpvpL5JGJrz1UZDKYvDg==} '@types/node@22.16.5': resolution: {integrity: sha512-bJFoMATwIGaxxx8VJPeM8TonI8t579oRvgAuT8zFugJsJZgzqv0Fu8Mhp68iecjzG7cnN3mO2dJQ5uUM2EFrgQ==} @@ -2601,19 +2856,22 @@ packages: '@types/node@24.1.0': resolution: {integrity: sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==} + '@types/node@24.3.0': + resolution: {integrity: sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==} + '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} '@types/pg@8.15.5': resolution: {integrity: sha512-LF7lF6zWEKxuT3/OR8wAZGzkg4ENGXFNyiV/JeOt9z5B+0ZVwbql9McqX5c/WStFq1GaGso7H1AzP/qSzmlCKQ==} - '@types/react-dom@19.1.7': - resolution: {integrity: sha512-i5ZzwYpqjmrKenzkoLM2Ibzt6mAsM7pxB6BCIouEVVmgiqaMj1TjaK7hnA36hbW5aZv20kx7Lw6hWzPWg0Rurw==} + '@types/react-dom@19.1.9': + resolution: {integrity: sha512-qXRuZaOsAdXKFyOhRBg6Lqqc0yay13vN7KrIg4L7N4aaHN68ma9OK3NE1BoDFgFOTfM7zg+3/8+2n8rLUH3OKQ==} peerDependencies: '@types/react': ^19.0.0 - '@types/react@19.1.9': - resolution: {integrity: sha512-WmdoynAX8Stew/36uTSVMcLJJ1KRh6L3IZRx1PZ7qJtBqT3dYTgyDTx8H1qoRghErydW7xw9mSJ3wS//tCRpFA==} + '@types/react@19.1.12': + resolution: {integrity: sha512-cMoR+FoAf/Jyq6+Df2/Z41jISvGZZ2eTlnsaJRptmZ76Caldwy1odD4xTr/gNV9VLj0AWgg/nmkevIyUfIIq5w==} '@types/serve-handler@6.1.4': resolution: {integrity: sha512-aXy58tNie0NkuSCY291xUxl0X+kGYy986l4kqW6Gi4kEXgr6Tx0fpSH7YwUSa5usPpG3s9DBeIR6hHcDtL2IvQ==} @@ -2642,63 +2900,63 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@typescript-eslint/eslint-plugin@8.38.0': - resolution: {integrity: sha512-CPoznzpuAnIOl4nhj4tRr4gIPj5AfKgkiJmGQDaq+fQnRJTYlcBjbX3wbciGmpoPf8DREufuPRe1tNMZnGdanA==} + '@typescript-eslint/eslint-plugin@8.42.0': + resolution: {integrity: sha512-Aq2dPqsQkxHOLfb2OPv43RnIvfj05nw8v/6n3B2NABIPpHnjQnaLo9QGMTvml+tv4korl/Cjfrb/BYhoL8UUTQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.38.0 + '@typescript-eslint/parser': ^8.42.0 eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.38.0': - resolution: {integrity: sha512-Zhy8HCvBUEfBECzIl1PKqF4p11+d0aUJS1GeUiuqK9WmOug8YCmC4h4bjyBvMyAMI9sbRczmrYL5lKg/YMbrcQ==} + '@typescript-eslint/parser@8.42.0': + resolution: {integrity: sha512-r1XG74QgShUgXph1BYseJ+KZd17bKQib/yF3SR+demvytiRXrwd12Blnz5eYGm8tXaeRdd4x88MlfwldHoudGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.38.0': - resolution: {integrity: sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg==} + '@typescript-eslint/project-service@8.42.0': + resolution: {integrity: sha512-vfVpLHAhbPjilrabtOSNcUDmBboQNrJUiNAGoImkZKnMjs2TIcWG33s4Ds0wY3/50aZmTMqJa6PiwkwezaAklg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.38.0': - resolution: {integrity: sha512-WJw3AVlFFcdT9Ri1xs/lg8LwDqgekWXWhH3iAF+1ZM+QPd7oxQ6jvtW/JPwzAScxitILUIFs0/AnQ/UWHzbATQ==} + '@typescript-eslint/scope-manager@8.42.0': + resolution: {integrity: sha512-51+x9o78NBAVgQzOPd17DkNTnIzJ8T/O2dmMBLoK9qbY0Gm52XJcdJcCl18ExBMiHo6jPMErUQWUv5RLE51zJw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.38.0': - resolution: {integrity: sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ==} + '@typescript-eslint/tsconfig-utils@8.42.0': + resolution: {integrity: sha512-kHeFUOdwAJfUmYKjR3CLgZSglGHjbNTi1H8sTYRYV2xX6eNz4RyJ2LIgsDLKf8Yi0/GL1WZAC/DgZBeBft8QAQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.38.0': - resolution: {integrity: sha512-c7jAvGEZVf0ao2z+nnz8BUaHZD09Agbh+DY7qvBQqLiz8uJzRgVPj5YvOh8I8uEiH8oIUGIfHzMwUcGVco/SJg==} + '@typescript-eslint/type-utils@8.42.0': + resolution: {integrity: sha512-9KChw92sbPTYVFw3JLRH1ockhyR3zqqn9lQXol3/YbI6jVxzWoGcT3AsAW0mu1MY0gYtsXnUGV/AKpkAj5tVlQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.38.0': - resolution: {integrity: sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw==} + '@typescript-eslint/types@8.42.0': + resolution: {integrity: sha512-LdtAWMiFmbRLNP7JNeY0SqEtJvGMYSzfiWBSmx+VSZ1CH+1zyl8Mmw1TT39OrtsRvIYShjJWzTDMPWZJCpwBlw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.38.0': - resolution: {integrity: sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ==} + '@typescript-eslint/typescript-estree@8.42.0': + resolution: {integrity: sha512-ku/uYtT4QXY8sl9EDJETD27o3Ewdi72hcXg1ah/kkUgBvAYHLwj2ofswFFNXS+FL5G+AGkxBtvGt8pFBHKlHsQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.38.0': - resolution: {integrity: sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg==} + '@typescript-eslint/utils@8.42.0': + resolution: {integrity: sha512-JnIzu7H3RH5BrKC4NoZqRfmjqCIS1u3hGZltDYJgkVdqAezl4L9d1ZLw+36huCujtSBSAirGINF/S4UxOcR+/g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.38.0': - resolution: {integrity: sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g==} + '@typescript-eslint/visitor-keys@8.42.0': + resolution: {integrity: sha512-3WbiuzoEowaEn8RSnhJBrxSwX8ULYE9CXaPepS2C2W3NSA5NNIvBaslpBSBElPq0UGr0xVJlXFWOAKIkyylydQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': @@ -2799,8 +3057,8 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + ansi-regex@6.2.0: + resolution: {integrity: sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==} engines: {node: '>=12'} ansi-styles@4.3.0: @@ -2948,11 +3206,11 @@ 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.6.1: + resolution: {integrity: sha512-AuTJkq9XmE6Vk0FJVNq5QxETrSA/vKHarWVBG5l/JbdCL1prJemiyJqUS0jrlXO0MftuPq4m3YVYhoNc5+aE/g==} - bare-fs@4.1.6: - resolution: {integrity: sha512-25RsLF33BqooOEFNdMcEhMpJy8EoR88zSMrnOQOaM3USnOK2VmaJ1uaQEwPA6AQjrv1lXChScosN6CzbwbO9OQ==} + bare-fs@4.2.2: + resolution: {integrity: sha512-5vn+bdnlCYMwETIm1FqQXDP6TYPbxr2uJd88ve40kr4oPbiTZJVrTNzqA3/4sfWZeWKuQR/RkboBt7qEEDtfMA==} engines: {bare: '>=1.16.0'} peerDependencies: bare-buffer: '*' @@ -2960,15 +3218,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: '*' @@ -3060,6 +3318,14 @@ packages: magicast: optional: true + c12@3.2.0: + resolution: {integrity: sha512-ixkEtbYafL56E6HiFuonMm1ZjoKtIo7TH68/uiEq4DAwv9NcUX2nJ95F8TrbMeNjqIkZpruo3ojXQJ+MGG5gcQ==} + peerDependencies: + magicast: ^0.3.5 + peerDependenciesMeta: + magicast: + optional: true + cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -3083,8 +3349,8 @@ packages: camelize@1.0.1: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} - caniuse-lite@1.0.30001731: - resolution: {integrity: sha512-lDdp2/wrOmTRWuoB5DpfNkC0rJDU8DqRa6nYL6HK6sytw70QMopt/NIc/9SM7ylItlBWfACXk0tEn37UWM/+mg==} + caniuse-lite@1.0.30001739: + resolution: {integrity: sha512-y+j60d6ulelrNSwpPyrHdl+9mJnQzHBr08xm48Qno0nSk4h3Qojh+ziv2qE6rXf4k3tadF4o1J/1tAbVm1NtnA==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -3116,8 +3382,8 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + chardet@2.1.0: + resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==} charm@0.1.2: resolution: {integrity: sha512-syedaZ9cPe7r3hoQA9twWYKu5AIyCswN5+szkmPBe9ccdLrj4bYaCnLVPTLd2kgVRc7+zoX4tyPgRnFKCj5YjQ==} @@ -3315,8 +3581,8 @@ packages: date-fns@4.1.0: resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} - dayjs@1.11.13: - resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + dayjs@1.11.18: + resolution: {integrity: sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==} dayjs@1.8.36: resolution: {integrity: sha512-3VmRXEtw7RZKAf+4Tv1Ym9AGeo8r8+CjDi26x+7SYQil1UqtqdaokhzoEJohqlzt0m5kacJSDhJQkG/LWhpRBw==} @@ -3347,6 +3613,9 @@ packages: supports-color: optional: true + decimal.js@10.5.0: + resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} + decode-named-character-reference@1.2.0: resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} @@ -3421,8 +3690,8 @@ packages: resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} hasBin: true - 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: @@ -3464,8 +3733,8 @@ packages: resolution: {integrity: sha512-tCPWVZWZqWVx2XUsVpJRnH9Mx0ClVOf5YUHerZ5so1OKSlqww4zy1R5ksEdGRcO3tM3zj0PYN6V48TbQCL1RfA==} hasBin: true - drizzle-orm@0.44.4: - resolution: {integrity: sha512-ZyzKFpTC/Ut3fIqc2c0dPZ6nhchQXriTsqTNs4ayRgl6sZcFlMs9QZKPSHXK4bdOf41GHGWf+FrpcDDYwW+W6Q==} + drizzle-orm@0.44.5: + resolution: {integrity: sha512-jBe37K7d8ZSKptdKfakQFdeljtu3P2Cbo7tJoJSVZADzIKOBo9IAJPOmMsH2bZl90bZgh8FQlD8BjxXA/zuBkQ==} peerDependencies: '@aws-sdk/client-rds-data': '>=3' '@cloudflare/workers-types': '>=4' @@ -3570,8 +3839,8 @@ packages: resolution: {integrity: sha512-1QFuh8l7LqUcKe24LsPUNzjrzJQ7pgRwp1QMcZ5MX6mFplk2zQ08NVCM84++1cveaUUYtcCYHmeFEuNg16sU4g==} engines: {node: '>=10.0.0'} - emoji-regex@10.4.0: - resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + emoji-regex@10.5.0: + resolution: {integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -3579,11 +3848,15 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + empathic@2.0.0: + resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} + engines: {node: '>=14'} + end-of-stream@1.4.5: resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} - enhanced-resolve@5.18.2: - resolution: {integrity: sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==} + enhanced-resolve@5.18.3: + resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} engines: {node: '>=10.13.0'} enquirer@2.3.6: @@ -3658,6 +3931,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.25.9: + resolution: {integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -3678,8 +3956,8 @@ packages: engines: {node: '>=6.0'} hasBin: true - eslint-config-turbo@2.5.5: - resolution: {integrity: sha512-23lKrCr66HQR62aa94n2dBGUUFz0GzM6N1KwmcREZHxomZ5Ik2rDm00wAz95lOEkhzSt6IaxW00Uz0az/Fcq5Q==} + eslint-config-turbo@2.5.6: + resolution: {integrity: sha512-1EV/UqdKE75st9q6y0MCxz7qp2v7RyGvbQsMLSuCz+VH8ScnSfmhd8FcAbqx3BshCy5IluujzMB6T5iCgL3/sA==} peerDependencies: eslint: '>6.6.0' turbo: '>2.0.0' @@ -3728,8 +4006,8 @@ packages: '@typescript-eslint/parser': optional: true - eslint-plugin-package-json@0.47.1: - resolution: {integrity: sha512-tkZynGhfHaiZd6lmElUXX/GFLXsgb+Z4Am7+uTLAuIQ6iUFpchMZa/d2KYqa6jR3k8drR80pwhj/TkYUSIIiaw==} + eslint-plugin-package-json@0.56.1: + resolution: {integrity: sha512-9yn1TVafPXKd9vznw/EG3Ge4fpTmTGOse9XhGsvNBur/aUIAmGvzSG+kYk3yTPpHDlT0sGlM4+XgW0xUHzCNpQ==} engines: {node: ^=20.19.0 || >=22.12.0} peerDependencies: eslint: '>=8.0.0' @@ -3747,8 +4025,8 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - eslint-plugin-turbo@2.5.5: - resolution: {integrity: sha512-IlN65X6W7rgK88u5xl1xC+7FIGKA7eyaca0yxZQ9CBNV6keAaqtjZQLw8ZfXdv7T+MzTLYkYOeOHAv8yCRUx4Q==} + eslint-plugin-turbo@2.5.6: + resolution: {integrity: sha512-KUDE23aP2JV8zbfZ4TeM1HpAXzMM/AYG/bJam7P4AalUxas8Pd/lS/6R3p4uX91qJcH1LwL4h0ED48nDe8KorQ==} peerDependencies: eslint: '>6.6.0' turbo: '>2.0.0' @@ -3765,8 +4043,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.32.0: - resolution: {integrity: sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg==} + eslint@9.34.0: + resolution: {integrity: sha512-RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -3859,10 +4137,6 @@ packages: extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} - external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - extrareqp2@1.0.0: resolution: {integrity: sha512-Gum0g1QYb6wpPJCVypWP3bbIuaibcFiJcpuPM10YSXp/tzqi84x9PJageob+eN4xVRIOto4wjSGNLyMD54D2xA==} @@ -3924,10 +4198,6 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - find-up-simple@1.0.1: - resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} - engines: {node: '>=18'} - find-up@3.0.0: resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} engines: {node: '>=6'} @@ -3950,8 +4220,8 @@ packages: flesch@1.0.5: resolution: {integrity: sha512-SE5X7jm4tp7sbKagLB0V9i0SrjWsFovus7db3E1nCyquy5249+Fyh+bBIK2crUuzX4maXn3Tu5bcMw8nF5oU8Q==} - 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: '*' @@ -4008,8 +4278,8 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-east-asian-width@1.3.0: - resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} + get-east-asian-width@1.3.1: + resolution: {integrity: sha512-R1QfovbPsKmosqTnPoRFiJ7CF9MLRgb53ChvMZm+r4p76/+8yKDy17qLL2PKInORy2RkZZekuK0efYgmzTkXyQ==} engines: {node: '>=18'} get-intrinsic@1.3.0: @@ -4175,10 +4445,6 @@ packages: hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - hast@1.0.0: - resolution: {integrity: sha512-vFUqlRV5C+xqP76Wwq2SrM0kipnmpxJm7OfvVXpB35Fp+Fn4MV+ozr+JZr5qFvyR1q/U+Foim2x+3P+x9S1PLA==} - deprecated: Renamed to rehype - headers-polyfill@4.0.3: resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} @@ -4261,8 +4527,8 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - ip-address@9.0.5: - resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + ip-address@10.0.1: + resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==} engines: {node: '>= 12'} is-alphabetical@2.0.1: @@ -4465,10 +4731,6 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jiti@2.4.2: - resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} - hasBin: true - jiti@2.5.1: resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} hasBin: true @@ -4490,9 +4752,6 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - jsbn@1.1.0: - resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -4521,8 +4780,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==} jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} @@ -4543,6 +4802,33 @@ packages: resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} engines: {node: '>= 8'} + kysely-ctl@0.18.0: + resolution: {integrity: sha512-4Ud65/AVFrtDX8sgki2LVvRpz/zDX8B7I3vUWucfar10xqNiezVmLg7ABb7fqJSbJ87i5D2GLbwQ/tNPjBfVFA==} + engines: {node: '>=20'} + hasBin: true + peerDependencies: + kysely: '>=0.18.1 <0.29.0' + kysely-postgres-js: ^2 + peerDependenciesMeta: + kysely-postgres-js: + optional: true + + kysely-pglite-dialect@1.1.1: + resolution: {integrity: sha512-WZxLbrqe+tAVv6eWKwt2OOpVfdQUPGGt6amFbLGSsKwODUt1RKqvuNdu02dOC2Kz0LebRnl/h+J5zY01WKDOGA==} + peerDependencies: + '@electric-sql/pglite': ^0.2.0 + kysely: '>=0.23.0' + + kysely-postgres-js@2.0.0: + resolution: {integrity: sha512-R1tWx6/x3tSatWvsmbHJxpBZYhNNxcnMw52QzZaHKg7ZOWtHib4iZyEaw4gb2hNKVctWQ3jfMxZT/ZaEMK6kBQ==} + peerDependencies: + kysely: '>= 0.24.0 < 1' + postgres: '>= 3.4.0 < 4' + + kysely@0.28.5: + resolution: {integrity: sha512-rlB0I/c6FBDWPcQoDtkxi9zIvpmnV5xoIalfCMSMCa7nuA6VGA3F54TW9mEgX4DVf10sXAWCF5fDbamI/5ZpKA==} + engines: {node: '>=20.0.0'} + lazystream@1.0.1: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} @@ -4676,14 +4962,17 @@ packages: resolution: {integrity: sha512-Nv9KddBcQSlQopmBHXSsZVY5xsdlZkdH/Iey0BlcBYggMd4two7cZnKOK9vmy3nY0O5RGH99z1PCeTpPqszUYg==} engines: {bun: '>=1.0.0', deno: '>=1.30.0', node: '>=8.0.0'} - lucide-react@0.534.0: - resolution: {integrity: sha512-4Bz7rujQ/mXHqCwjx09ih/Q9SCizz9CjBV5repw9YSHZZZaop9/Oj0RgCDt6WdEaeAPfbcZ8l2b4jzApStqgNw==} + lucide-react@0.542.0: + resolution: {integrity: sha512-w3hD8/SQB7+lzU2r4VdFyzzOzKnUjTZIF/MQJGSSvni7Llewni4vuViRppfRAa2guOsY5k4jZyxw/i9DQHv+dw==} peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + magic-string@0.30.18: + resolution: {integrity: sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ==} + magicast@0.3.5: resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} @@ -4976,6 +5265,11 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + nanoid@5.1.5: + resolution: {integrity: sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==} + engines: {node: ^18 || >=20} + hasBin: true + natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -4997,8 +5291,8 @@ packages: next-validate-link@1.5.2: resolution: {integrity: sha512-BMGyo0qJqscSJw0gSCUy3gDrF7LEID6qkVhHtLSIdPPtOYONq0+fidWvLteUzEUqHeKz1GBI9QN3bpfT6Me42A==} - next@15.4.5: - resolution: {integrity: sha512-nJ4v+IO9CPmbmcvsPebIoX3Q+S7f6Fu08/dEWu0Ttfa+wVwQRh9epcmsyCPjmL2b8MxC+CkBR97jgDhUUztI3g==} + next@15.5.2: + resolution: {integrity: sha512-H8Otr7abj1glFhbGnvUt3gz++0AF1+QoCXEBmd/6aKbfdFwrn0LpA836Ed5+00va/7HQSDD+mOoVhn3tNy3e/Q==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: @@ -5049,6 +5343,11 @@ packages: engines: {node: ^14.16.0 || >=16.10.0} hasBin: true + nypm@0.6.1: + resolution: {integrity: sha512-hlacBiRiv1k9hZFiphPUkfSQ/ZfQzZDzC+8z0wL3lvDAOUu/2NnChkKuMoMjNur/9OpKuz2QsIeiPVN0xM5Q0w==} + engines: {node: ^14.16.0 || >=16.10.0} + hasBin: true + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -5081,6 +5380,9 @@ packages: resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} + ofetch@1.4.1: + resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} + ohash@2.0.11: resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} @@ -5097,10 +5399,6 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} @@ -5158,8 +5456,8 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-json-validator@0.23.0: - resolution: {integrity: sha512-HJokcABTkX8Calu86WCG0EknqWwf+doB7Xk3/EnXoO5/mjHC8H+D66UDZBjHtyZ1MIo0lrdSasbdOCHlr80n6Q==} + package-json-validator@0.30.0: + resolution: {integrity: sha512-gOLW+BBye32t+IB2trIALIcL3DZBy3s4G4ZV6dAgDM+qLs/7jUNOV7iO7PwXqyf+3izI12qHBwtS4kOSJp5Tdg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -5169,8 +5467,8 @@ packages: package-manager-detector@1.3.0: resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} - pagefind@1.3.0: - resolution: {integrity: sha512-8KPLGT5g9s+olKMRTU9LFekLizkVIu9tes90O1/aigJ0T5LmyPqTzGJrETnSw3meSYg58YH7JTzhTTW/3z6VAw==} + pagefind@1.4.0: + resolution: {integrity: sha512-z2kY1mQlL4J8q5EIsQkLzQjilovKzfNVhX8De6oyE6uHpfFtyBaqUpcl/XzJC/4fjD8vBDyh1zolimIcVrCn9g==} hasBin: true pako@0.2.9: @@ -5308,8 +5606,8 @@ packages: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} - pkg-types@2.2.0: - resolution: {integrity: sha512-2SM/GZGAEkPp3KWORxQZns4M+WSeXbC2HEvmOIJe3Cmiv6ieAJvdVhDldtHqM5J1Y7MrR1XhkBT/rMlhh9FdqQ==} + pkg-types@2.3.0: + resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} pkg-up@3.1.0: resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} @@ -5337,8 +5635,8 @@ packages: pm2-sysmonit@1.2.8: resolution: {integrity: sha512-ACOhlONEXdCTVwKieBIQLSi2tQZ8eKinhcr9JpZSUAL8Qy0ajIgRtsLxG/lwPOW3JEKqPyw/UaHmTWhUzpP4kA==} - pm2@6.0.8: - resolution: {integrity: sha512-y7sO+UuGjfESK/ChRN+efJKAsHrBd95GY2p1GQfjVTtOfFtUfiW0NOuUhP5dN5QTF2F0EWcepgkLqbF32j90Iw==} + pm2@6.0.10: + resolution: {integrity: sha512-sbk4HsnhtJMx1wJlhFQhYfDRzHtVK+cvdrIezbjM9WjSyc7kLtQ4nZ5K7JLOdLe3AevytmRcTiOa3VvAQrve2A==} engines: {node: '>=16.0.0'} hasBin: true @@ -5460,8 +5758,8 @@ packages: engines: {node: '>=14'} hasBin: true - prisma@6.13.0: - resolution: {integrity: sha512-dfzORf0AbcEyyzxuv2lEwG8g+WRGF/qDQTpHf/6JoHsyF5MyzCEZwClVaEmw3WXcobgadosOboKUgQU0kFs9kw==} + prisma@6.15.0: + resolution: {integrity: sha512-E6RCgOt+kUVtjtZgLQDBJ6md2tDItLJNExwI0XJeBc1FKL+Vwb+ovxXxuok9r8oBgsOXBA33fGDuE/0qDdCWqQ==} engines: {node: '>=18.18'} hasBin: true peerDependencies: @@ -5497,8 +5795,8 @@ packages: property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} - protobufjs@7.5.3: - resolution: {integrity: sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw==} + protobufjs@7.5.4: + resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==} engines: {node: '>=12.0.0'} proxy-agent@6.4.0: @@ -5521,8 +5819,8 @@ packages: pure-rand@6.1.0: resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} - quansync@0.2.10: - resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==} + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} @@ -5579,10 +5877,6 @@ packages: resolution: {integrity: sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==} engines: {node: '>=0.10.0'} - read-package-up@11.0.0: - resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} - engines: {node: '>=18'} - read-pkg@9.0.1: resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} engines: {node: '>=18'} @@ -5623,8 +5917,10 @@ packages: recma-build-jsx@1.0.0: resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} - recma-jsx@1.0.0: - resolution: {integrity: sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==} + recma-jsx@1.0.1: + resolution: {integrity: sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 recma-parse@1.0.0: resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} @@ -5673,8 +5969,8 @@ packages: remark-mdx-frontmatter@5.2.0: resolution: {integrity: sha512-U/hjUYTkQqNjjMRYyilJgLXSPF65qbLPdoESOkXyrwz2tVyhAnm4GUKhfXqOOS9W34M3545xEMq+aMpHgVjEeQ==} - remark-mdx@3.1.0: - resolution: {integrity: sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==} + remark-mdx@3.1.1: + resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==} remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} @@ -5698,8 +5994,8 @@ packages: remark@15.0.1: resolution: {integrity: sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==} - renoun@9.0.0: - resolution: {integrity: sha512-hcf8nhM3yhOuRHoQmyArEZlTf1wjZP/kgML+mywwD5e8uVkamDsXejMbXujjaG9lEg3+lQCk4ltBtSZMaEn4wg==} + renoun@9.5.0: + resolution: {integrity: sha512-sJAbOCp7iYzN6Qgc6xZ4PG3MHEE+7CkqRsn3ryatZXuk60pSnJOPTafV5VEiahSsIq43a5beyLEGmQvGYEkNZg==} engines: {node: '>=20.19.0'} hasBin: true peerDependencies: @@ -5766,8 +6062,8 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rolldown@1.0.0-beta.30: - resolution: {integrity: sha512-H/LmDTUPlm65hWOTjXvd1k0qrGinNi8LrG3JsHVm6Oit7STg0upBmgoG5PZUHbAnGTHr0MLoLyzjmH261lIqSg==} + rolldown@1.0.0-beta.34: + resolution: {integrity: sha512-Wwh7EwalMzzX3Yy3VN58VEajeR2Si8+HDNMf706jPLIqU7CxneRW+dQVfznf5O0TWTnJyu4npelwg2bzTXB1Nw==} hasBin: true rollup-plugin-delete@3.0.1: @@ -5968,8 +6264,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'} sort-object-keys@1.1.3: @@ -5991,10 +6287,6 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - source-map@0.7.6: resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} engines: {node: '>= 12'} @@ -6036,9 +6328,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==} - sqlstring@2.3.3: resolution: {integrity: sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==} engines: {node: '>= 0.6'} @@ -6046,8 +6335,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'} stackback@0.0.2: @@ -6183,8 +6472,8 @@ packages: resolution: {integrity: sha512-KUiIxtFxV17EEKqLYCHDcwaYxudDTRhX34mfTVYWkWFDsmiNRz1ZumpP3v0lTqsVQs78y3dqlSxkEMRk/SCVYQ==} hasBin: true - systeminformation@5.27.7: - resolution: {integrity: sha512-saaqOoVEEFaux4v0K8Q7caiauRwjXC4XbD2eH60dxHXbpKxQ8kH9Rf7Jh+nryKpOUSEFxtCdBlSUx0/lO6rwRg==} + systeminformation@5.27.8: + resolution: {integrity: sha512-d3Z0gaQO1MlUxzDUKsmXz5y4TOBCMZ8IyijzaYOykV3AcNOTQ7mT+tpndUOXYNSxzLK3la8G32xiUFvZ0/s6PA==} engines: {node: '>=8.0.0'} os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android] hasBin: true @@ -6197,11 +6486,11 @@ packages: peerDependencies: tailwindcss: '>=3.0.0 || insiders' - tailwindcss@4.1.11: - resolution: {integrity: sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA==} + tailwindcss@4.1.12: + resolution: {integrity: sha512-DzFtxOi+7NsFf7DBtI3BJsynR+0Yp6etH+nRPTbpWnS2pZBaSksv/JGctNwSWzbFjp0vxSqknaUylseZqMDGrA==} - tapable@2.2.2: - resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} + tapable@2.2.3: + resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==} engines: {node: '>=6'} tar-fs@2.1.3: @@ -6233,8 +6522,8 @@ packages: resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} engines: {node: '>=18'} - testcontainers@11.4.0: - resolution: {integrity: sha512-eX5nc/Fi5I0LHqwxw6BuUvWNfdl+M2sKX6fX/47RP89Xs5nU6smd0iD7dpFogxy8/wACjlucLoutJc7b5mtq7w==} + testcontainers@11.5.1: + resolution: {integrity: sha512-YSSP4lSJB8498zTeu4HYTZYgSky54ozBmIDdC8PFU5inj+vBo5hPpilhcYTgmsqsYjrXOJGV7jl0MWByS7GwuA==} text-decoder@1.2.3: resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} @@ -6267,15 +6556,14 @@ packages: resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} engines: {node: '>=14.0.0'} - tm-themes@1.10.7: - resolution: {integrity: sha512-/7UiSrze10BQqlyy43LRT4QmQxCYJKMSlyMM6umKwsDIAQZlFqyj5sDe/qoaiVOvAzv22VsoC0GfcEKxI8J0ng==} + tm-grammars@1.24.8: + resolution: {integrity: sha512-+DUrP9IKlCoZpStOECtzCvBAIeDhms0236Tpvv22C279sPmz370YaJl5RQtAVgdweT73HpRzrhdxmBMIQjfgZw==} - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} + tm-themes@1.10.9: + resolution: {integrity: sha512-2pBK8ZHXFibHOoKmi1aE2VF1ISsMpqTU+RS3+YS8LGNEm4WSkmnDqdylbtsmZIfFTxy/8KbsiBKbrmnHYVTZFw==} - 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'} to-regex-range@5.0.1: @@ -6336,51 +6624,51 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsx@4.20.3: - resolution: {integrity: sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==} + tsx@4.20.5: + resolution: {integrity: sha512-+wKjMNU9w/EaQayHXb7WA7ZaHY6hN8WgfvHNQ3t1PnU91/7O8TcTnIhCDYTZwnt8JsO9IBqZ30Ln1r7pPF52Aw==} engines: {node: '>=18.0.0'} hasBin: true - turbo-darwin-64@2.5.5: - resolution: {integrity: sha512-RYnTz49u4F5tDD2SUwwtlynABNBAfbyT2uU/brJcyh5k6lDLyNfYKdKmqd3K2ls4AaiALWrFKVSBsiVwhdFNzQ==} + turbo-darwin-64@2.5.6: + resolution: {integrity: sha512-3C1xEdo4aFwMJAPvtlPqz1Sw/+cddWIOmsalHFMrsqqydcptwBfu26WW2cDm3u93bUzMbBJ8k3zNKFqxJ9ei2A==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.5.5: - resolution: {integrity: sha512-Tk+ZeSNdBobZiMw9aFypQt0DlLsWSFWu1ymqsAdJLuPoAH05qCfYtRxE1pJuYHcJB5pqI+/HOxtJoQ40726Btw==} + turbo-darwin-arm64@2.5.6: + resolution: {integrity: sha512-LyiG+rD7JhMfYwLqB6k3LZQtYn8CQQUePbpA8mF/hMLPAekXdJo1g0bUPw8RZLwQXUIU/3BU7tXENvhSGz5DPA==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.5.5: - resolution: {integrity: sha512-2/XvMGykD7VgsvWesZZYIIVXMlgBcQy+ZAryjugoTcvJv8TZzSU/B1nShcA7IAjZ0q7OsZ45uP2cOb8EgKT30w==} + turbo-linux-64@2.5.6: + resolution: {integrity: sha512-GOcUTT0xiT/pSnHL4YD6Yr3HreUhU8pUcGqcI2ksIF9b2/r/kRHwGFcsHgpG3+vtZF/kwsP0MV8FTlTObxsYIA==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.5.5: - resolution: {integrity: sha512-DW+8CjCjybu0d7TFm9dovTTVg1VRnlkZ1rceO4zqsaLrit3DgHnN4to4uwyuf9s2V/BwS3IYcRy+HG9BL596Iw==} + turbo-linux-arm64@2.5.6: + resolution: {integrity: sha512-10Tm15bruJEA3m0V7iZcnQBpObGBcOgUcO+sY7/2vk1bweW34LMhkWi8svjV9iDF68+KJDThnYDlYE/bc7/zzQ==} cpu: [arm64] os: [linux] - turbo-windows-64@2.5.5: - resolution: {integrity: sha512-q5p1BOy8ChtSZfULuF1BhFMYIx6bevXu4fJ+TE/hyNfyHJIfjl90Z6jWdqAlyaFLmn99X/uw+7d6T/Y/dr5JwQ==} + turbo-windows-64@2.5.6: + resolution: {integrity: sha512-FyRsVpgaj76It0ludwZsNN40ytHN+17E4PFJyeliBEbxrGTc5BexlXVpufB7XlAaoaZVxbS6KT8RofLfDRyEPg==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.5.5: - resolution: {integrity: sha512-AXbF1KmpHUq3PKQwddMGoKMYhHsy5t1YBQO8HZ04HLMR0rWv9adYlQ8kaeQJTko1Ay1anOBFTqaxfVOOsu7+1Q==} + turbo-windows-arm64@2.5.6: + resolution: {integrity: sha512-j/tWu8cMeQ7HPpKri6jvKtyXg9K1gRyhdK4tKrrchH8GNHscPX/F71zax58yYtLRWTiK04zNzPcUJuoS0+v/+Q==} cpu: [arm64] os: [win32] - turbo@2.5.5: - resolution: {integrity: sha512-eZ7wI6KjtT1eBqCnh2JPXWNUAxtoxxfi6VdBdZFvil0ychCOTxbm7YLRBi1JSt7U3c+u3CLxpoPxLdvr/Npr3A==} + turbo@2.5.6: + resolution: {integrity: sha512-gxToHmi9oTBNB05UjUsrWf0OyN5ZXtD0apOarC1KIx232Vp3WimRNy3810QzeNSgyD5rsaIDXlxlbnOzlouo+w==} hasBin: true tv4@1.3.0: resolution: {integrity: sha512-afizzfpJgvPr+eDkREK4MxJ/+r8nEEHcmitwgnPUqpaP+FpwQyadnxNoSACbgc/b1LsZYtODGoPiFxQrgJgjvw==} engines: {node: '>= 0.8.0'} - tw-animate-css@1.3.6: - resolution: {integrity: sha512-9dy0R9UsYEGmgf26L8UcHiLmSFTHa9+D7+dAt/G/sF5dCnPePZbfgDYinc7/UzAM7g/baVrmS6m9yEpU46d+LA==} + tw-animate-css@1.3.8: + resolution: {integrity: sha512-Qrk3PZ7l7wUcGYhwZloqfkWCmaXZAoqjkdbIDvzfGshwGtexa/DAs9koXxIkrpEasyevandomzCBAV1Yyop5rw==} tweetnacl@0.14.5: resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} @@ -6416,18 +6704,25 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typescript-eslint@8.38.0: - resolution: {integrity: sha512-FsZlrYK6bPDGoLeZRuvx2v6qrM03I0U0SnfCLPs/XCCPCFD80xU9Pg09H/K+XFa68uJuZo7l/Xhs+eDRg2l3hg==} + typescript-eslint@8.42.0: + resolution: {integrity: sha512-ozR/rQn+aQXQxh1YgbCzQWDFrsi9mcg+1PM3l/z5o1+20P7suOIaNg515bpr/OYt6FObz/NHcBstydDLHWeEKg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - typescript@5.8.3: - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + typescript@5.9.2: + resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} engines: {node: '>=14.17'} hasBin: true + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + + ulid@3.0.0: + resolution: {integrity: sha512-yvZYdXInnJve6LdlPIuYmURdS2NP41ZoF4QW7SXwbUKYt53+0eDAySO+rGSvM2O/ciuB/G+8N7GQrZ1mCJpuqw==} + hasBin: true + unbox-primitive@1.1.0: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} @@ -6438,11 +6733,14 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici-types@7.10.0: + resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==} + undici-types@7.8.0: resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} - undici@7.12.0: - resolution: {integrity: sha512-GrKEsc3ughskmGA9jevVlIOPMiiAHJ4OFUtaAH+NhfTUSiZ1wMPIQqQvAJUrJspFXJt3EBWgpAeoHEDVT1IBug==} + undici@7.15.0: + resolution: {integrity: sha512-7oZJCPvvMvTd0OlqWsIxTuItTpJBpU1tcbVl24FMn3xt3+VSunwUasmfPJRE57oNO1KsZ4PgA1xTdAX4hq8NyQ==} engines: {node: '>=20.18.1'} unherit@1.1.3: @@ -6541,8 +6839,8 @@ packages: '@types/react': optional: true - use-debounce@10.0.5: - resolution: {integrity: sha512-Q76E3lnIV+4YT9AHcrHEHYmAd9LKwUAbPXDm7FlqVGDHiSOhX3RDjT8dm0AxbJup6WgOb1YEcKyCr11kBJR5KQ==} + use-debounce@10.0.6: + resolution: {integrity: sha512-C5OtPyhAZgVoteO9heXMTdW7v/IbFI+8bSVKYCJrSmiWWCLsbUxiBSp4t9v0hNBTGY97bT72ydDIDyGSFWfwXg==} engines: {node: '>= 16.0.0'} peerDependencies: react: '*' @@ -6564,6 +6862,10 @@ packages: resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} hasBin: true + uuid@11.1.0: + resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + hasBin: true + validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -6589,6 +6891,9 @@ packages: vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + vfile-reporter@8.1.1: resolution: {integrity: sha512-qxRZcnFSQt6pWKn3PAk81yLK2rO2i7CDXpy8v8ZquiEOMLSnPw6BMSi9Y1sUCwGGl7a9b3CJT1CKpnRF7pp66g==} @@ -6785,8 +7090,8 @@ packages: engines: {node: '>= 14'} hasBin: true - 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 @@ -6810,8 +7115,8 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - yoctocolors-cjs@2.1.2: - resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} + yoctocolors-cjs@2.1.3: + resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} engines: {node: '>=18'} yoga-layout@3.2.1: @@ -6821,8 +7126,8 @@ packages: resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} engines: {node: '>= 14'} - zod@4.0.14: - resolution: {integrity: sha512-nGFJTnJN6cM2v9kXL+SOBq3AtjQby3Mv5ySGFof5UGRHrRioSJ5iG680cYNjE/yWk671nROcpPj4hAS8nyLhSw==} + zod@4.1.5: + resolution: {integrity: sha512-rcUUZqlLJgBC33IT3PNMgsCq6TzLQEG/Ei/KTCU0PedSWRMAXoOUN+4t/0H+Q8bdnLPdqUYnvboJT0bn/229qg==} zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -6851,12 +7156,12 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/generator@7.28.0': + '@babel/generator@7.28.3': dependencies: - '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 + '@babel/parser': 7.28.3 + '@babel/types': 7.28.2 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.30 jsesc: 3.1.0 '@babel/helper-globals@7.28.0': {} @@ -6865,40 +7170,31 @@ snapshots: '@babel/helper-validator-identifier@7.27.1': {} - '@babel/parser@7.27.5': + '@babel/parser@7.28.3': dependencies: - '@babel/types': 7.27.6 + '@babel/types': 7.28.2 - '@babel/parser@7.28.0': - dependencies: - '@babel/types': 7.28.1 - - '@babel/runtime@7.27.6': {} + '@babel/runtime@7.28.3': {} '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/parser': 7.28.3 + '@babel/types': 7.28.2 - '@babel/traverse@7.28.0': + '@babel/traverse@7.28.3': dependencies: '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.0 + '@babel/generator': 7.28.3 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.0 + '@babel/parser': 7.28.3 '@babel/template': 7.27.2 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 debug: 4.4.1 transitivePeerDependencies: - supports-color - '@babel/types@7.27.6': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - - '@babel/types@7.28.1': + '@babel/types@7.28.2': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 @@ -6907,6 +7203,8 @@ snapshots: '@bcoe/v8-coverage@1.0.2': {} + '@bugsnag/cuid@3.2.1': {} + '@bundled-es-modules/cookie@2.0.1': dependencies: cookie: 0.7.2 @@ -6952,7 +7250,7 @@ snapshots: dependencies: '@changesets/types': 6.1.0 - '@changesets/cli@2.29.5': + '@changesets/cli@2.29.6(@types/node@24.3.0)': dependencies: '@changesets/apply-release-plan': 7.0.12 '@changesets/assemble-release-plan': 6.0.9 @@ -6968,11 +7266,11 @@ snapshots: '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@changesets/write': 0.4.0 + '@inquirer/external-editor': 1.0.1(@types/node@24.3.0) '@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 @@ -6982,6 +7280,8 @@ snapshots: semver: 7.7.2 spawndamnit: 3.0.1 term-size: 2.2.1 + transitivePeerDependencies: + - '@types/node' '@changesets/config@3.1.1': dependencies: @@ -7076,24 +7376,24 @@ snapshots: picocolors: 1.1.1 sisteransi: 1.0.5 - '@date-fns/tz@1.2.0': {} + '@date-fns/tz@1.4.1': {} '@drizzle-team/brocli@0.10.2': {} - '@electric-sql/pglite@0.3.6': {} + '@electric-sql/pglite@0.3.7': {} - '@emnapi/core@1.4.5': + '@emnapi/core@1.5.0': dependencies: - '@emnapi/wasi-threads': 1.0.4 + '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.4.5': + '@emnapi/runtime@1.5.0': dependencies: tslib: 2.8.1 optional: true - '@emnapi/wasi-threads@1.0.4': + '@emnapi/wasi-threads@1.1.0': dependencies: tslib: 2.8.1 optional: true @@ -7111,157 +7411,235 @@ snapshots: '@esbuild/aix-ppc64@0.25.6': optional: true + '@esbuild/aix-ppc64@0.25.9': + optional: true + '@esbuild/android-arm64@0.18.20': optional: true '@esbuild/android-arm64@0.25.6': optional: true + '@esbuild/android-arm64@0.25.9': + optional: true + '@esbuild/android-arm@0.18.20': optional: true '@esbuild/android-arm@0.25.6': optional: true + '@esbuild/android-arm@0.25.9': + optional: true + '@esbuild/android-x64@0.18.20': optional: true '@esbuild/android-x64@0.25.6': optional: true + '@esbuild/android-x64@0.25.9': + optional: true + '@esbuild/darwin-arm64@0.18.20': optional: true '@esbuild/darwin-arm64@0.25.6': optional: true + '@esbuild/darwin-arm64@0.25.9': + optional: true + '@esbuild/darwin-x64@0.18.20': optional: true '@esbuild/darwin-x64@0.25.6': optional: true + '@esbuild/darwin-x64@0.25.9': + optional: true + '@esbuild/freebsd-arm64@0.18.20': optional: true '@esbuild/freebsd-arm64@0.25.6': optional: true + '@esbuild/freebsd-arm64@0.25.9': + optional: true + '@esbuild/freebsd-x64@0.18.20': optional: true '@esbuild/freebsd-x64@0.25.6': optional: true + '@esbuild/freebsd-x64@0.25.9': + optional: true + '@esbuild/linux-arm64@0.18.20': optional: true '@esbuild/linux-arm64@0.25.6': optional: true + '@esbuild/linux-arm64@0.25.9': + optional: true + '@esbuild/linux-arm@0.18.20': optional: true '@esbuild/linux-arm@0.25.6': optional: true + '@esbuild/linux-arm@0.25.9': + optional: true + '@esbuild/linux-ia32@0.18.20': optional: true '@esbuild/linux-ia32@0.25.6': optional: true + '@esbuild/linux-ia32@0.25.9': + optional: true + '@esbuild/linux-loong64@0.18.20': optional: true '@esbuild/linux-loong64@0.25.6': optional: true + '@esbuild/linux-loong64@0.25.9': + optional: true + '@esbuild/linux-mips64el@0.18.20': optional: true '@esbuild/linux-mips64el@0.25.6': optional: true + '@esbuild/linux-mips64el@0.25.9': + optional: true + '@esbuild/linux-ppc64@0.18.20': optional: true '@esbuild/linux-ppc64@0.25.6': optional: true + '@esbuild/linux-ppc64@0.25.9': + optional: true + '@esbuild/linux-riscv64@0.18.20': optional: true '@esbuild/linux-riscv64@0.25.6': optional: true + '@esbuild/linux-riscv64@0.25.9': + optional: true + '@esbuild/linux-s390x@0.18.20': optional: true '@esbuild/linux-s390x@0.25.6': optional: true + '@esbuild/linux-s390x@0.25.9': + optional: true + '@esbuild/linux-x64@0.18.20': optional: true '@esbuild/linux-x64@0.25.6': optional: true + '@esbuild/linux-x64@0.25.9': + optional: true + '@esbuild/netbsd-arm64@0.25.6': optional: true + '@esbuild/netbsd-arm64@0.25.9': + optional: true + '@esbuild/netbsd-x64@0.18.20': optional: true '@esbuild/netbsd-x64@0.25.6': optional: true + '@esbuild/netbsd-x64@0.25.9': + optional: true + '@esbuild/openbsd-arm64@0.25.6': optional: true + '@esbuild/openbsd-arm64@0.25.9': + optional: true + '@esbuild/openbsd-x64@0.18.20': optional: true '@esbuild/openbsd-x64@0.25.6': optional: true + '@esbuild/openbsd-x64@0.25.9': + optional: true + '@esbuild/openharmony-arm64@0.25.6': optional: true + '@esbuild/openharmony-arm64@0.25.9': + optional: true + '@esbuild/sunos-x64@0.18.20': optional: true '@esbuild/sunos-x64@0.25.6': optional: true + '@esbuild/sunos-x64@0.25.9': + optional: true + '@esbuild/win32-arm64@0.18.20': optional: true '@esbuild/win32-arm64@0.25.6': optional: true + '@esbuild/win32-arm64@0.25.9': + optional: true + '@esbuild/win32-ia32@0.18.20': optional: true '@esbuild/win32-ia32@0.25.6': optional: true + '@esbuild/win32-ia32@0.25.9': + optional: true + '@esbuild/win32-x64@0.18.20': optional: true '@esbuild/win32-x64@0.25.6': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.32.0(jiti@2.5.1))': + '@esbuild/win32-x64@0.25.9': + optional: true + + '@eslint-community/eslint-utils@4.8.0(eslint@9.34.0(jiti@2.5.1))': dependencies: - eslint: 9.32.0(jiti@2.5.1) + eslint: 9.34.0(jiti@2.5.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/compat@1.3.1(eslint@9.32.0(jiti@2.5.1))': + '@eslint/compat@1.3.2(eslint@9.34.0(jiti@2.5.1))': optionalDependencies: - eslint: 9.32.0(jiti@2.5.1) + eslint: 9.34.0(jiti@2.5.1) '@eslint/config-array@0.21.0': dependencies: @@ -7271,9 +7649,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.3.0': {} + '@eslint/config-helpers@0.3.1': {} - '@eslint/core@0.15.1': + '@eslint/core@0.15.2': dependencies: '@types/json-schema': 7.0.15 @@ -7291,27 +7669,27 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.32.0': {} + '@eslint/js@9.34.0': {} '@eslint/object-schema@2.1.6': {} - '@eslint/plugin-kit@0.3.4': + '@eslint/plugin-kit@0.3.5': dependencies: - '@eslint/core': 0.15.1 + '@eslint/core': 0.15.2 levn: 0.4.1 - '@floating-ui/core@1.7.2': + '@floating-ui/core@1.7.3': dependencies: '@floating-ui/utils': 0.2.10 - '@floating-ui/dom@1.7.2': + '@floating-ui/dom@1.7.4': dependencies: - '@floating-ui/core': 1.7.2 + '@floating-ui/core': 1.7.3 '@floating-ui/utils': 0.2.10 - '@floating-ui/react-dom@2.1.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@floating-ui/react-dom@2.1.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@floating-ui/dom': 1.7.2 + '@floating-ui/dom': 1.7.4 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) @@ -7326,7 +7704,7 @@ snapshots: dependencies: lodash.camelcase: 4.3.0 long: 5.3.2 - protobufjs: 7.5.3 + protobufjs: 7.5.4 yargs: 17.7.2 '@humanfs/core@0.19.1': {} @@ -7342,12 +7720,12 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@ianvs/prettier-plugin-sort-imports@4.5.1(prettier@3.6.2)': + '@ianvs/prettier-plugin-sort-imports@4.7.0(prettier@3.6.2)': dependencies: - '@babel/generator': 7.28.0 - '@babel/parser': 7.28.0 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/generator': 7.28.3 + '@babel/parser': 7.28.3 + '@babel/traverse': 7.28.3 + '@babel/types': 7.28.2 prettier: 3.6.2 semver: 7.7.2 transitivePeerDependencies: @@ -7431,7 +7809,7 @@ snapshots: '@img/sharp-wasm32@0.34.3': dependencies: - '@emnapi/runtime': 1.4.5 + '@emnapi/runtime': 1.5.0 optional: true '@img/sharp-win32-arm64@0.34.3': @@ -7443,34 +7821,41 @@ snapshots: '@img/sharp-win32-x64@0.34.3': optional: true - '@inquirer/confirm@5.1.14(@types/node@24.1.0)': + '@inquirer/confirm@5.1.16(@types/node@24.3.0)': dependencies: - '@inquirer/core': 10.1.15(@types/node@24.1.0) - '@inquirer/type': 3.0.8(@types/node@24.1.0) + '@inquirer/core': 10.2.0(@types/node@24.3.0) + '@inquirer/type': 3.0.8(@types/node@24.3.0) optionalDependencies: - '@types/node': 24.1.0 + '@types/node': 24.3.0 optional: true - '@inquirer/core@10.1.15(@types/node@24.1.0)': + '@inquirer/core@10.2.0(@types/node@24.3.0)': dependencies: '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@24.1.0) + '@inquirer/type': 3.0.8(@types/node@24.3.0) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.2 + yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.1.0 + '@types/node': 24.3.0 optional: true + '@inquirer/external-editor@1.0.1(@types/node@24.3.0)': + dependencies: + chardet: 2.1.0 + iconv-lite: 0.6.3 + optionalDependencies: + '@types/node': 24.3.0 + '@inquirer/figures@1.0.13': optional: true - '@inquirer/type@3.0.8(@types/node@24.1.0)': + '@inquirer/type@3.0.8(@types/node@24.3.0)': optionalDependencies: - '@types/node': 24.1.0 + '@types/node': 24.3.0 optional: true '@isaacs/balanced-match@4.0.1': {} @@ -7494,10 +7879,10 @@ snapshots: '@istanbuljs/schema@0.1.3': {} - '@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.30 '@jridgewell/gen-mapping@0.3.8': dependencies: @@ -7505,56 +7890,61 @@ snapshots: '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/set-array@1.2.1': {} '@jridgewell/sourcemap-codec@1.5.0': {} - '@jridgewell/sourcemap-codec@1.5.4': {} + '@jridgewell/sourcemap-codec@1.5.5': {} '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping@0.3.29': + '@jridgewell/trace-mapping@0.3.30': 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': {} '@manypkg/find-root@1.1.0': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.3 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 '@manypkg/get-packages@1.1.3': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.3 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 globby: 11.1.0 read-yaml-file: 1.1.0 - '@mdx-js/loader@3.1.0(acorn@8.15.0)': + '@mdx-js/loader@3.1.1': dependencies: - '@mdx-js/mdx': 3.1.0(acorn@8.15.0) - source-map: 0.7.4 + '@mdx-js/mdx': 3.1.1 + source-map: 0.7.6 transitivePeerDependencies: - - acorn - supports-color - '@mdx-js/mdx@3.1.0(acorn@8.15.0)': + '@mdx-js/mdx@3.1.1': dependencies: '@types/estree': 1.0.8 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdx': 2.0.13 + acorn: 8.15.0 collapse-white-space: 2.1.0 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 @@ -7563,10 +7953,10 @@ snapshots: hast-util-to-jsx-runtime: 2.3.6 markdown-extensions: 2.0.0 recma-build-jsx: 1.0.0 - recma-jsx: 1.0.0(acorn@8.15.0) + recma-jsx: 1.0.1(acorn@8.15.0) recma-stringify: 1.0.0 rehype-recma: 1.0.0 - remark-mdx: 3.1.0 + remark-mdx: 3.1.1 remark-parse: 11.0.0 remark-rehype: 11.1.2 source-map: 0.7.6 @@ -7576,26 +7966,24 @@ snapshots: unist-util-visit: 5.0.0 vfile: 6.0.3 transitivePeerDependencies: - - acorn - supports-color - '@mdx-js/node-loader@3.1.0(acorn@8.15.0)': + '@mdx-js/node-loader@3.1.1': dependencies: - '@mdx-js/mdx': 3.1.0(acorn@8.15.0) - source-map: 0.7.4 + '@mdx-js/mdx': 3.1.1 + source-map: 0.7.6 vfile: 6.0.3 vfile-reporter: 8.1.1 transitivePeerDependencies: - - acorn - supports-color - '@mdx-js/react@3.1.0(@types/react@19.1.9)(react@19.1.1)': + '@mdx-js/react@3.1.1(@types/react@19.1.12)(react@19.1.1)': dependencies: '@types/mdx': 2.0.13 - '@types/react': 19.1.9 + '@types/react': 19.1.12 react: 19.1.1 - '@mswjs/interceptors@0.39.5': + '@mswjs/interceptors@0.39.6': dependencies: '@open-draft/deferred-promise': 2.2.0 '@open-draft/logger': 0.3.0 @@ -7605,50 +7993,52 @@ snapshots: strict-event-emitter: 0.5.1 optional: true - '@napi-rs/wasm-runtime@1.0.1': + '@napi-rs/wasm-runtime@1.0.3': dependencies: - '@emnapi/core': 1.4.5 - '@emnapi/runtime': 1.4.5 + '@emnapi/core': 1.5.0 + '@emnapi/runtime': 1.5.0 '@tybys/wasm-util': 0.10.0 optional: true - '@next/env@15.4.5': {} + '@next/env@15.5.2': {} - '@next/eslint-plugin-next@15.4.5': + '@next/eslint-plugin-next@15.5.2': dependencies: fast-glob: 3.3.1 - '@next/mdx@15.4.5(@mdx-js/loader@3.1.0(acorn@8.15.0))(@mdx-js/react@3.1.0(@types/react@19.1.9)(react@19.1.1))': + '@next/mdx@15.5.2(@mdx-js/loader@3.1.1)(@mdx-js/react@3.1.1(@types/react@19.1.12)(react@19.1.1))': dependencies: source-map: 0.7.6 optionalDependencies: - '@mdx-js/loader': 3.1.0(acorn@8.15.0) - '@mdx-js/react': 3.1.0(@types/react@19.1.9)(react@19.1.1) + '@mdx-js/loader': 3.1.1 + '@mdx-js/react': 3.1.1(@types/react@19.1.12)(react@19.1.1) - '@next/swc-darwin-arm64@15.4.5': + '@next/swc-darwin-arm64@15.5.2': optional: true - '@next/swc-darwin-x64@15.4.5': + '@next/swc-darwin-x64@15.5.2': optional: true - '@next/swc-linux-arm64-gnu@15.4.5': + '@next/swc-linux-arm64-gnu@15.5.2': optional: true - '@next/swc-linux-arm64-musl@15.4.5': + '@next/swc-linux-arm64-musl@15.5.2': optional: true - '@next/swc-linux-x64-gnu@15.4.5': + '@next/swc-linux-x64-gnu@15.5.2': optional: true - '@next/swc-linux-x64-musl@15.4.5': + '@next/swc-linux-x64-musl@15.5.2': optional: true - '@next/swc-win32-arm64-msvc@15.4.5': + '@next/swc-win32-arm64-msvc@15.5.2': optional: true - '@next/swc-win32-x64-msvc@15.4.5': + '@next/swc-win32-x64-msvc@15.5.2': optional: true + '@noble/hashes@1.8.0': {} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -7673,25 +8063,34 @@ snapshots: '@open-draft/until@2.1.0': optional: true - '@oxc-project/runtime@0.78.0': {} + '@opentelemetry/api@1.9.0': {} + + '@oxc-project/runtime@0.82.3': {} - '@oxc-project/types@0.78.0': {} + '@oxc-project/types@0.82.3': {} - '@pagefind/darwin-arm64@1.3.0': + '@pagefind/darwin-arm64@1.4.0': optional: true - '@pagefind/darwin-x64@1.3.0': + '@pagefind/darwin-x64@1.4.0': optional: true - '@pagefind/linux-arm64@1.3.0': + '@pagefind/freebsd-x64@1.4.0': optional: true - '@pagefind/linux-x64@1.3.0': + '@pagefind/linux-arm64@1.4.0': optional: true - '@pagefind/windows-x64@1.3.0': + '@pagefind/linux-x64@1.4.0': optional: true + '@pagefind/windows-x64@1.4.0': + optional: true + + '@paralleldrive/cuid2@2.2.2': + dependencies: + '@noble/hashes': 1.8.0 + '@pkgjs/parseargs@0.11.0': optional: true @@ -7747,36 +8146,49 @@ snapshots: '@polka/url@1.0.0-next.29': {} - '@prisma/adapter-pg@6.13.0': + '@prisma/adapter-pg@6.15.0': dependencies: - '@prisma/driver-adapter-utils': 6.13.0 + '@prisma/driver-adapter-utils': 6.15.0 pg: 8.16.3 postgres-array: 3.0.4 transitivePeerDependencies: - pg-native - '@prisma/client-common@6.13.0(magicast@0.3.5)(typescript@5.8.3)': + '@prisma/client-common@6.15.0(magicast@0.3.5)(typescript@5.9.2)': dependencies: - '@prisma/dmmf': 6.13.0 - '@prisma/driver-adapter-utils': 6.13.0 - '@prisma/generator': 6.13.0 - '@prisma/internals': 6.13.0(magicast@0.3.5)(typescript@5.8.3) + '@prisma/client-engine-runtime': 6.15.0 + '@prisma/dmmf': 6.15.0 + '@prisma/driver-adapter-utils': 6.15.0 + '@prisma/generator': 6.15.0 + '@prisma/internals': 6.15.0(magicast@0.3.5)(typescript@5.9.2) transitivePeerDependencies: - magicast - typescript - '@prisma/client-generator-js@6.13.0(magicast@0.3.5)(typescript@5.8.3)': + '@prisma/client-engine-runtime@6.15.0': + dependencies: + '@bugsnag/cuid': 3.2.1 + '@opentelemetry/api': 1.9.0 + '@paralleldrive/cuid2': 2.2.2 + '@prisma/debug': 6.15.0 + '@prisma/driver-adapter-utils': 6.15.0 + decimal.js: 10.5.0 + nanoid: 5.1.5 + ulid: 3.0.0 + uuid: 11.1.0 + + '@prisma/client-generator-js@6.15.0(magicast@0.3.5)(typescript@5.9.2)': dependencies: '@antfu/ni': 0.21.12 - '@prisma/client-common': 6.13.0(magicast@0.3.5)(typescript@5.8.3) - '@prisma/debug': 6.13.0 - '@prisma/dmmf': 6.13.0 - '@prisma/engines-version': 6.13.0-35.361e86d0ea4987e9f53a565309b3eed797a6bcbd - '@prisma/fetch-engine': 6.13.0 - '@prisma/generator': 6.13.0 - '@prisma/get-platform': 6.13.0 - '@prisma/internals': 6.13.0(magicast@0.3.5)(typescript@5.8.3) - '@prisma/ts-builders': 6.13.0(magicast@0.3.5)(typescript@5.8.3) + '@prisma/client-common': 6.15.0(magicast@0.3.5)(typescript@5.9.2) + '@prisma/debug': 6.15.0 + '@prisma/dmmf': 6.15.0 + '@prisma/engines-version': 6.15.0-5.85179d7826409ee107a6ba334b5e305ae3fba9fb + '@prisma/fetch-engine': 6.15.0 + '@prisma/generator': 6.15.0 + '@prisma/get-platform': 6.15.0 + '@prisma/internals': 6.15.0(magicast@0.3.5)(typescript@5.9.2) + '@prisma/ts-builders': 6.15.0(magicast@0.3.5)(typescript@5.9.2) ci-info: 4.2.0 env-paths: 2.2.1 indent-string: 4.0.0 @@ -7788,28 +8200,28 @@ snapshots: - magicast - typescript - '@prisma/client-generator-registry@6.13.0(magicast@0.3.5)(typescript@5.8.3)': + '@prisma/client-generator-registry@6.15.0(magicast@0.3.5)(typescript@5.9.2)': dependencies: - '@prisma/client-generator-js': 6.13.0(magicast@0.3.5)(typescript@5.8.3) - '@prisma/client-generator-ts': 6.13.0(magicast@0.3.5)(typescript@5.8.3) - '@prisma/generator': 6.13.0 - '@prisma/internals': 6.13.0(magicast@0.3.5)(typescript@5.8.3) + '@prisma/client-generator-js': 6.15.0(magicast@0.3.5)(typescript@5.9.2) + '@prisma/client-generator-ts': 6.15.0(magicast@0.3.5)(typescript@5.9.2) + '@prisma/generator': 6.15.0 + '@prisma/internals': 6.15.0(magicast@0.3.5)(typescript@5.9.2) transitivePeerDependencies: - magicast - typescript - '@prisma/client-generator-ts@6.13.0(magicast@0.3.5)(typescript@5.8.3)': + '@prisma/client-generator-ts@6.15.0(magicast@0.3.5)(typescript@5.9.2)': dependencies: '@antfu/ni': 0.21.12 - '@prisma/client-common': 6.13.0(magicast@0.3.5)(typescript@5.8.3) - '@prisma/debug': 6.13.0 - '@prisma/dmmf': 6.13.0 - '@prisma/engines-version': 6.13.0-35.361e86d0ea4987e9f53a565309b3eed797a6bcbd - '@prisma/fetch-engine': 6.13.0 - '@prisma/generator': 6.13.0 - '@prisma/get-platform': 6.13.0 - '@prisma/internals': 6.13.0(magicast@0.3.5)(typescript@5.8.3) - '@prisma/ts-builders': 6.13.0(magicast@0.3.5)(typescript@5.8.3) + '@prisma/client-common': 6.15.0(magicast@0.3.5)(typescript@5.9.2) + '@prisma/debug': 6.15.0 + '@prisma/dmmf': 6.15.0 + '@prisma/engines-version': 6.15.0-5.85179d7826409ee107a6ba334b5e305ae3fba9fb + '@prisma/fetch-engine': 6.15.0 + '@prisma/generator': 6.15.0 + '@prisma/get-platform': 6.15.0 + '@prisma/internals': 6.15.0(magicast@0.3.5)(typescript@5.9.2) + '@prisma/ts-builders': 6.15.0(magicast@0.3.5)(typescript@5.9.2) ci-info: 4.2.0 fast-glob: 3.3.3 get-tsconfig: 4.10.0 @@ -7822,103 +8234,103 @@ snapshots: - magicast - typescript - '@prisma/client@6.13.0(prisma@6.13.0(magicast@0.3.5)(typescript@5.8.3))(typescript@5.8.3)': + '@prisma/client@6.15.0(prisma@6.15.0(magicast@0.3.5)(typescript@5.9.2))(typescript@5.9.2)': optionalDependencies: - prisma: 6.13.0(magicast@0.3.5)(typescript@5.8.3) - typescript: 5.8.3 + prisma: 6.15.0(magicast@0.3.5)(typescript@5.9.2) + typescript: 5.9.2 - '@prisma/config@6.13.0(magicast@0.3.5)': + '@prisma/config@6.15.0(magicast@0.3.5)': dependencies: c12: 3.1.0(magicast@0.3.5) deepmerge-ts: 7.1.5 effect: 3.16.12 - read-package-up: 11.0.0 + empathic: 2.0.0 transitivePeerDependencies: - magicast - '@prisma/debug@6.13.0': {} + '@prisma/debug@6.15.0': {} - '@prisma/dmmf@6.13.0': {} + '@prisma/dmmf@6.15.0': {} - '@prisma/driver-adapter-utils@6.13.0': + '@prisma/driver-adapter-utils@6.15.0': dependencies: - '@prisma/debug': 6.13.0 + '@prisma/debug': 6.15.0 - '@prisma/engines-version@6.13.0-35.361e86d0ea4987e9f53a565309b3eed797a6bcbd': {} + '@prisma/engines-version@6.15.0-5.85179d7826409ee107a6ba334b5e305ae3fba9fb': {} - '@prisma/engines@6.13.0': + '@prisma/engines@6.15.0': dependencies: - '@prisma/debug': 6.13.0 - '@prisma/engines-version': 6.13.0-35.361e86d0ea4987e9f53a565309b3eed797a6bcbd - '@prisma/fetch-engine': 6.13.0 - '@prisma/get-platform': 6.13.0 + '@prisma/debug': 6.15.0 + '@prisma/engines-version': 6.15.0-5.85179d7826409ee107a6ba334b5e305ae3fba9fb + '@prisma/fetch-engine': 6.15.0 + '@prisma/get-platform': 6.15.0 - '@prisma/fetch-engine@6.13.0': + '@prisma/fetch-engine@6.15.0': dependencies: - '@prisma/debug': 6.13.0 - '@prisma/engines-version': 6.13.0-35.361e86d0ea4987e9f53a565309b3eed797a6bcbd - '@prisma/get-platform': 6.13.0 + '@prisma/debug': 6.15.0 + '@prisma/engines-version': 6.15.0-5.85179d7826409ee107a6ba334b5e305ae3fba9fb + '@prisma/get-platform': 6.15.0 - '@prisma/generator-helper@6.13.0': + '@prisma/generator-helper@6.15.0': dependencies: - '@prisma/debug': 6.13.0 - '@prisma/dmmf': 6.13.0 - '@prisma/generator': 6.13.0 + '@prisma/debug': 6.15.0 + '@prisma/dmmf': 6.15.0 + '@prisma/generator': 6.15.0 - '@prisma/generator@6.13.0': {} + '@prisma/generator@6.15.0': {} - '@prisma/get-platform@6.13.0': + '@prisma/get-platform@6.15.0': dependencies: - '@prisma/debug': 6.13.0 + '@prisma/debug': 6.15.0 - '@prisma/internals@6.13.0(magicast@0.3.5)(typescript@5.8.3)': + '@prisma/internals@6.15.0(magicast@0.3.5)(typescript@5.9.2)': dependencies: - '@prisma/config': 6.13.0(magicast@0.3.5) - '@prisma/debug': 6.13.0 - '@prisma/dmmf': 6.13.0 - '@prisma/driver-adapter-utils': 6.13.0 - '@prisma/engines': 6.13.0 - '@prisma/fetch-engine': 6.13.0 - '@prisma/generator': 6.13.0 - '@prisma/generator-helper': 6.13.0 - '@prisma/get-platform': 6.13.0 - '@prisma/prisma-schema-wasm': 6.13.0-35.361e86d0ea4987e9f53a565309b3eed797a6bcbd - '@prisma/schema-engine-wasm': 6.13.0-35.361e86d0ea4987e9f53a565309b3eed797a6bcbd - '@prisma/schema-files-loader': 6.13.0 + '@prisma/config': 6.15.0(magicast@0.3.5) + '@prisma/debug': 6.15.0 + '@prisma/dmmf': 6.15.0 + '@prisma/driver-adapter-utils': 6.15.0 + '@prisma/engines': 6.15.0 + '@prisma/fetch-engine': 6.15.0 + '@prisma/generator': 6.15.0 + '@prisma/generator-helper': 6.15.0 + '@prisma/get-platform': 6.15.0 + '@prisma/prisma-schema-wasm': 6.15.0-5.85179d7826409ee107a6ba334b5e305ae3fba9fb + '@prisma/schema-engine-wasm': 6.15.0-5.85179d7826409ee107a6ba334b5e305ae3fba9fb + '@prisma/schema-files-loader': 6.15.0 arg: 5.0.2 prompts: 2.4.2 optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.2 transitivePeerDependencies: - magicast - '@prisma/migrate@6.13.0(@prisma/internals@6.13.0(magicast@0.3.5)(typescript@5.8.3))(magicast@0.3.5)(typescript@5.8.3)': + '@prisma/migrate@6.15.0(@prisma/internals@6.15.0(magicast@0.3.5)(typescript@5.9.2))(magicast@0.3.5)(typescript@5.9.2)': dependencies: - '@prisma/client-generator-registry': 6.13.0(magicast@0.3.5)(typescript@5.8.3) - '@prisma/config': 6.13.0(magicast@0.3.5) - '@prisma/debug': 6.13.0 - '@prisma/driver-adapter-utils': 6.13.0 - '@prisma/engines-version': 6.13.0-35.361e86d0ea4987e9f53a565309b3eed797a6bcbd - '@prisma/generator': 6.13.0 - '@prisma/get-platform': 6.13.0 - '@prisma/internals': 6.13.0(magicast@0.3.5)(typescript@5.8.3) + '@prisma/client-generator-registry': 6.15.0(magicast@0.3.5)(typescript@5.9.2) + '@prisma/config': 6.15.0(magicast@0.3.5) + '@prisma/debug': 6.15.0 + '@prisma/driver-adapter-utils': 6.15.0 + '@prisma/engines-version': 6.15.0-5.85179d7826409ee107a6ba334b5e305ae3fba9fb + '@prisma/generator': 6.15.0 + '@prisma/get-platform': 6.15.0 + '@prisma/internals': 6.15.0(magicast@0.3.5)(typescript@5.9.2) prompts: 2.4.2 transitivePeerDependencies: - magicast - typescript - '@prisma/prisma-schema-wasm@6.13.0-35.361e86d0ea4987e9f53a565309b3eed797a6bcbd': {} + '@prisma/prisma-schema-wasm@6.15.0-5.85179d7826409ee107a6ba334b5e305ae3fba9fb': {} - '@prisma/schema-engine-wasm@6.13.0-35.361e86d0ea4987e9f53a565309b3eed797a6bcbd': {} + '@prisma/schema-engine-wasm@6.15.0-5.85179d7826409ee107a6ba334b5e305ae3fba9fb': {} - '@prisma/schema-files-loader@6.13.0': + '@prisma/schema-files-loader@6.15.0': dependencies: - '@prisma/prisma-schema-wasm': 6.13.0-35.361e86d0ea4987e9f53a565309b3eed797a6bcbd + '@prisma/prisma-schema-wasm': 6.15.0-5.85179d7826409ee107a6ba334b5e305ae3fba9fb fs-extra: 11.3.0 - '@prisma/ts-builders@6.13.0(magicast@0.3.5)(typescript@5.8.3)': + '@prisma/ts-builders@6.15.0(magicast@0.3.5)(typescript@5.9.2)': dependencies: - '@prisma/internals': 6.13.0(magicast@0.3.5)(typescript@5.8.3) + '@prisma/internals': 6.15.0(magicast@0.3.5)(typescript@5.9.2) transitivePeerDependencies: - magicast - typescript @@ -7946,339 +8358,339 @@ snapshots: '@protobufjs/utf8@1.1.0': {} - '@radix-ui/primitive@1.1.2': {} + '@radix-ui/primitive@1.1.3': {} - '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.9 - '@types/react-dom': 19.1.7(@types/react@19.1.9) - - '@radix-ui/react-collapsible@1.1.11(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': - dependencies: - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.9)(react@19.1.1) + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) + + '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.12)(react@19.1.1) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.9 - '@types/react-dom': 19.1.7(@types/react@19.1.9) + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) - '@radix-ui/react-collection@1.1.7(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@radix-ui/react-collection@1.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-slot': 1.2.3(@types/react@19.1.9)(react@19.1.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.12)(react@19.1.1) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.9 - '@types/react-dom': 19.1.7(@types/react@19.1.9) + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) - '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.9)(react@19.1.1)': + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.12)(react@19.1.1)': dependencies: react: 19.1.1 optionalDependencies: - '@types/react': 19.1.9 + '@types/react': 19.1.12 - '@radix-ui/react-context@1.1.2(@types/react@19.1.9)(react@19.1.1)': + '@radix-ui/react-context@1.1.2(@types/react@19.1.12)(react@19.1.1)': dependencies: react: 19.1.1 optionalDependencies: - '@types/react': 19.1.9 - - '@radix-ui/react-dialog@1.1.14(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': - dependencies: - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-slot': 1.2.3(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.9)(react@19.1.1) + '@types/react': 19.1.12 + + '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.12)(react@19.1.1) aria-hidden: 1.2.6 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - react-remove-scroll: 2.7.1(@types/react@19.1.9)(react@19.1.1) + react-remove-scroll: 2.7.1(@types/react@19.1.12)(react@19.1.1) optionalDependencies: - '@types/react': 19.1.9 - '@types/react-dom': 19.1.7(@types/react@19.1.9) + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) - '@radix-ui/react-direction@1.1.1(@types/react@19.1.9)(react@19.1.1)': + '@radix-ui/react-direction@1.1.1(@types/react@19.1.12)(react@19.1.1)': dependencies: react: 19.1.1 optionalDependencies: - '@types/react': 19.1.9 + '@types/react': 19.1.12 - '@radix-ui/react-dismissable-layer@1.1.10(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.9)(react@19.1.1) + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.12)(react@19.1.1) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.9 - '@types/react-dom': 19.1.7(@types/react@19.1.9) - - '@radix-ui/react-dropdown-menu@2.1.15(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': - dependencies: - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-menu': 2.1.15(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.9)(react@19.1.1) + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) + + '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.12)(react@19.1.1) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.9 - '@types/react-dom': 19.1.7(@types/react@19.1.9) + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) - '@radix-ui/react-focus-guards@1.1.2(@types/react@19.1.9)(react@19.1.1)': + '@radix-ui/react-focus-guards@1.1.3(@types/react@19.1.12)(react@19.1.1)': dependencies: react: 19.1.1 optionalDependencies: - '@types/react': 19.1.9 + '@types/react': 19.1.12 - '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.9)(react@19.1.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.12)(react@19.1.1) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.9 - '@types/react-dom': 19.1.7(@types/react@19.1.9) + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) - '@radix-ui/react-id@1.1.1(@types/react@19.1.9)(react@19.1.1)': + '@radix-ui/react-id@1.1.1(@types/react@19.1.12)(react@19.1.1)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.9)(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.12)(react@19.1.1) react: 19.1.1 optionalDependencies: - '@types/react': 19.1.9 - - '@radix-ui/react-menu@2.1.15(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': - dependencies: - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-popper': 1.2.7(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-roving-focus': 1.1.10(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-slot': 1.2.3(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.9)(react@19.1.1) + '@types/react': 19.1.12 + + '@radix-ui/react-menu@2.1.16(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.12)(react@19.1.1) aria-hidden: 1.2.6 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - react-remove-scroll: 2.7.1(@types/react@19.1.9)(react@19.1.1) + react-remove-scroll: 2.7.1(@types/react@19.1.12)(react@19.1.1) optionalDependencies: - '@types/react': 19.1.9 - '@types/react-dom': 19.1.7(@types/react@19.1.9) - - '@radix-ui/react-popper@1.2.7(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': - dependencies: - '@floating-ui/react-dom': 2.1.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-use-rect': 1.1.1(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.9)(react@19.1.1) + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) + + '@radix-ui/react-popper@1.2.8(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@floating-ui/react-dom': 2.1.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.12)(react@19.1.1) '@radix-ui/rect': 1.1.1 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.9 - '@types/react-dom': 19.1.7(@types/react@19.1.9) + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) - '@radix-ui/react-portal@1.1.9(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@radix-ui/react-portal@1.1.9(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.9)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.12)(react@19.1.1) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.9 - '@types/react-dom': 19.1.7(@types/react@19.1.9) + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) - '@radix-ui/react-presence@1.1.4(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@radix-ui/react-presence@1.1.5(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.9)(react@19.1.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.12)(react@19.1.1) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.9 - '@types/react-dom': 19.1.7(@types/react@19.1.9) + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) - '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@radix-ui/react-slot': 1.2.3(@types/react@19.1.9)(react@19.1.1) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.12)(react@19.1.1) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.9 - '@types/react-dom': 19.1.7(@types/react@19.1.9) - - '@radix-ui/react-roving-focus@1.1.10(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': - dependencies: - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.9)(react@19.1.1) + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) + + '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.12)(react@19.1.1) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.9 - '@types/react-dom': 19.1.7(@types/react@19.1.9) + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) - '@radix-ui/react-separator@1.1.7(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@radix-ui/react-separator@1.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.9 - '@types/react-dom': 19.1.7(@types/react@19.1.9) + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) - '@radix-ui/react-slot@1.2.3(@types/react@19.1.9)(react@19.1.1)': + '@radix-ui/react-slot@1.2.3(@types/react@19.1.12)(react@19.1.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.9)(react@19.1.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) react: 19.1.1 optionalDependencies: - '@types/react': 19.1.9 - - '@radix-ui/react-tabs@1.1.12(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': - dependencies: - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-context': 1.1.2(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-roving-focus': 1.1.10(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.9)(react@19.1.1) + '@types/react': 19.1.12 + + '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-context': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.12)(react@19.1.1) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.9 - '@types/react-dom': 19.1.7(@types/react@19.1.9) - - '@radix-ui/react-tooltip@1.2.7(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': - dependencies: - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-popper': 1.2.7(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-slot': 1.2.3(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) + + '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.9 - '@types/react-dom': 19.1.7(@types/react@19.1.9) + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.9)(react@19.1.1)': + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.12)(react@19.1.1)': dependencies: react: 19.1.1 optionalDependencies: - '@types/react': 19.1.9 + '@types/react': 19.1.12 - '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.1.9)(react@19.1.1)': + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.1.12)(react@19.1.1)': dependencies: - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.9)(react@19.1.1) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.9)(react@19.1.1) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.12)(react@19.1.1) react: 19.1.1 optionalDependencies: - '@types/react': 19.1.9 + '@types/react': 19.1.12 - '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.1.9)(react@19.1.1)': + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.1.12)(react@19.1.1)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.9)(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.12)(react@19.1.1) react: 19.1.1 optionalDependencies: - '@types/react': 19.1.9 + '@types/react': 19.1.12 - '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.1.9)(react@19.1.1)': + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.1.12)(react@19.1.1)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.9)(react@19.1.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.12)(react@19.1.1) react: 19.1.1 optionalDependencies: - '@types/react': 19.1.9 + '@types/react': 19.1.12 - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.9)(react@19.1.1)': + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.12)(react@19.1.1)': dependencies: react: 19.1.1 optionalDependencies: - '@types/react': 19.1.9 + '@types/react': 19.1.12 - '@radix-ui/react-use-rect@1.1.1(@types/react@19.1.9)(react@19.1.1)': + '@radix-ui/react-use-rect@1.1.1(@types/react@19.1.12)(react@19.1.1)': dependencies: '@radix-ui/rect': 1.1.1 react: 19.1.1 optionalDependencies: - '@types/react': 19.1.9 + '@types/react': 19.1.12 - '@radix-ui/react-use-size@1.1.1(@types/react@19.1.9)(react@19.1.1)': + '@radix-ui/react-use-size@1.1.1(@types/react@19.1.12)(react@19.1.1)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.9)(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.12)(react@19.1.1) react: 19.1.1 optionalDependencies: - '@types/react': 19.1.9 + '@types/react': 19.1.12 - '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.9 - '@types/react-dom': 19.1.7(@types/react@19.1.9) + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) '@radix-ui/rect@1.1.1': {} - '@renoun/mdx@3.0.0': + '@renoun/mdx@3.1.0': dependencies: '@types/mdx': 2.0.13 estree-util-value-to-estree: 3.4.0 @@ -8297,51 +8709,51 @@ snapshots: '@resvg/resvg-wasm@2.4.0': {} - '@rolldown/binding-android-arm64@1.0.0-beta.30': + '@rolldown/binding-android-arm64@1.0.0-beta.34': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.30': + '@rolldown/binding-darwin-arm64@1.0.0-beta.34': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.30': + '@rolldown/binding-darwin-x64@1.0.0-beta.34': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.30': + '@rolldown/binding-freebsd-x64@1.0.0-beta.34': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.30': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.34': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.30': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.34': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.30': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.34': optional: true - '@rolldown/binding-linux-arm64-ohos@1.0.0-beta.30': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.34': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.30': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.34': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.30': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.34': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.30': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.34': dependencies: - '@napi-rs/wasm-runtime': 1.0.1 + '@napi-rs/wasm-runtime': 1.0.3 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.30': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.34': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.30': + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.34': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.30': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.34': optional: true - '@rolldown/pluginutils@1.0.0-beta.30': {} + '@rolldown/pluginutils@1.0.0-beta.34': {} '@rollup/rollup-android-arm-eabi@4.43.0': optional: true @@ -8465,21 +8877,6 @@ snapshots: '@rtsao/scc@1.1.0': {} - '@shikijs/langs@3.8.1': - dependencies: - '@shikijs/types': 3.8.1 - - '@shikijs/themes@3.8.1': - dependencies: - '@shikijs/types': 3.8.1 - - '@shikijs/types@3.8.1': - dependencies: - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 - - '@shikijs/vscode-textmate@10.0.2': {} - '@shuding/opentype.js@1.4.0-beta.0': dependencies: fflate: 0.7.4 @@ -8493,85 +8890,85 @@ snapshots: dependencies: tslib: 2.8.1 - '@tailwindcss/node@4.1.11': + '@tailwindcss/node@4.1.12': dependencies: - '@ampproject/remapping': 2.3.0 - enhanced-resolve: 5.18.2 - jiti: 2.4.2 + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.18.3 + jiti: 2.5.1 lightningcss: 1.30.1 - magic-string: 0.30.17 + magic-string: 0.30.18 source-map-js: 1.2.1 - tailwindcss: 4.1.11 + tailwindcss: 4.1.12 - '@tailwindcss/oxide-android-arm64@4.1.11': + '@tailwindcss/oxide-android-arm64@4.1.12': optional: true - '@tailwindcss/oxide-darwin-arm64@4.1.11': + '@tailwindcss/oxide-darwin-arm64@4.1.12': optional: true - '@tailwindcss/oxide-darwin-x64@4.1.11': + '@tailwindcss/oxide-darwin-x64@4.1.12': optional: true - '@tailwindcss/oxide-freebsd-x64@4.1.11': + '@tailwindcss/oxide-freebsd-x64@4.1.12': optional: true - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.11': + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.12': optional: true - '@tailwindcss/oxide-linux-arm64-gnu@4.1.11': + '@tailwindcss/oxide-linux-arm64-gnu@4.1.12': optional: true - '@tailwindcss/oxide-linux-arm64-musl@4.1.11': + '@tailwindcss/oxide-linux-arm64-musl@4.1.12': optional: true - '@tailwindcss/oxide-linux-x64-gnu@4.1.11': + '@tailwindcss/oxide-linux-x64-gnu@4.1.12': optional: true - '@tailwindcss/oxide-linux-x64-musl@4.1.11': + '@tailwindcss/oxide-linux-x64-musl@4.1.12': optional: true - '@tailwindcss/oxide-wasm32-wasi@4.1.11': + '@tailwindcss/oxide-wasm32-wasi@4.1.12': optional: true - '@tailwindcss/oxide-win32-arm64-msvc@4.1.11': + '@tailwindcss/oxide-win32-arm64-msvc@4.1.12': optional: true - '@tailwindcss/oxide-win32-x64-msvc@4.1.11': + '@tailwindcss/oxide-win32-x64-msvc@4.1.12': optional: true - '@tailwindcss/oxide@4.1.11': + '@tailwindcss/oxide@4.1.12': dependencies: detect-libc: 2.0.4 tar: 7.4.3 optionalDependencies: - '@tailwindcss/oxide-android-arm64': 4.1.11 - '@tailwindcss/oxide-darwin-arm64': 4.1.11 - '@tailwindcss/oxide-darwin-x64': 4.1.11 - '@tailwindcss/oxide-freebsd-x64': 4.1.11 - '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.11 - '@tailwindcss/oxide-linux-arm64-gnu': 4.1.11 - '@tailwindcss/oxide-linux-arm64-musl': 4.1.11 - '@tailwindcss/oxide-linux-x64-gnu': 4.1.11 - '@tailwindcss/oxide-linux-x64-musl': 4.1.11 - '@tailwindcss/oxide-wasm32-wasi': 4.1.11 - '@tailwindcss/oxide-win32-arm64-msvc': 4.1.11 - '@tailwindcss/oxide-win32-x64-msvc': 4.1.11 - - '@tailwindcss/postcss@4.1.11': + '@tailwindcss/oxide-android-arm64': 4.1.12 + '@tailwindcss/oxide-darwin-arm64': 4.1.12 + '@tailwindcss/oxide-darwin-x64': 4.1.12 + '@tailwindcss/oxide-freebsd-x64': 4.1.12 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.12 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.12 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.12 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.12 + '@tailwindcss/oxide-linux-x64-musl': 4.1.12 + '@tailwindcss/oxide-wasm32-wasi': 4.1.12 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.12 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.12 + + '@tailwindcss/postcss@4.1.12': dependencies: '@alloc/quick-lru': 5.2.0 - '@tailwindcss/node': 4.1.11 - '@tailwindcss/oxide': 4.1.11 + '@tailwindcss/node': 4.1.12 + '@tailwindcss/oxide': 4.1.12 postcss: 8.5.6 - tailwindcss: 4.1.11 + tailwindcss: 4.1.12 - '@tailwindcss/typography@0.5.16(tailwindcss@4.1.11)': + '@tailwindcss/typography@0.5.16(tailwindcss@4.1.12)': dependencies: lodash.castarray: 4.4.0 lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 postcss-selector-parser: 6.0.10 - tailwindcss: 4.1.11 + tailwindcss: 4.1.12 '@tootallnate/quickjs-emscripten@0.23.0': {} @@ -8601,13 +8998,13 @@ snapshots: '@types/docker-modem@3.0.6': dependencies: - '@types/node': 22.16.5 + '@types/node': 24.3.0 '@types/ssh2': 1.15.5 - '@types/dockerode@3.3.42': + '@types/dockerode@3.3.43': dependencies: '@types/docker-modem': 3.0.6 - '@types/node': 22.16.5 + '@types/node': 24.3.0 '@types/ssh2': 1.15.5 '@types/estree-jsx@1.0.5': @@ -8640,7 +9037,7 @@ snapshots: '@types/node@12.20.55': {} - '@types/node@18.19.121': + '@types/node@18.19.123': dependencies: undici-types: 5.26.5 @@ -8652,6 +9049,10 @@ snapshots: dependencies: undici-types: 7.8.0 + '@types/node@24.3.0': + dependencies: + undici-types: 7.10.0 + '@types/normalize-package-data@2.4.4': {} '@types/pg@8.15.5': @@ -8660,11 +9061,11 @@ snapshots: pg-protocol: 1.10.3 pg-types: 2.2.0 - '@types/react-dom@19.1.7(@types/react@19.1.9)': + '@types/react-dom@19.1.9(@types/react@19.1.12)': dependencies: - '@types/react': 19.1.9 + '@types/react': 19.1.12 - '@types/react@19.1.9': + '@types/react@19.1.12': dependencies: csstype: 3.1.3 @@ -8674,16 +9075,16 @@ snapshots: '@types/ssh2-streams@0.1.12': dependencies: - '@types/node': 24.1.0 + '@types/node': 24.3.0 '@types/ssh2@0.5.52': dependencies: - '@types/node': 24.1.0 + '@types/node': 24.3.0 '@types/ssh2-streams': 0.1.12 '@types/ssh2@1.15.5': dependencies: - '@types/node': 18.19.121 + '@types/node': 18.19.123 '@types/statuses@2.0.6': optional: true @@ -8697,97 +9098,97 @@ snapshots: '@types/unist@3.0.3': {} - '@typescript-eslint/eslint-plugin@8.38.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.42.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.38.0 - '@typescript-eslint/type-utils': 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) - '@typescript-eslint/utils': 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.38.0 - eslint: 9.32.0(jiti@2.5.1) + '@typescript-eslint/parser': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.42.0 + '@typescript-eslint/type-utils': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.42.0 + eslint: 9.34.0(jiti@2.5.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3)': + '@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/scope-manager': 8.38.0 - '@typescript-eslint/types': 8.38.0 - '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.38.0 + '@typescript-eslint/scope-manager': 8.42.0 + '@typescript-eslint/types': 8.42.0 + '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.42.0 debug: 4.4.1 - eslint: 9.32.0(jiti@2.5.1) - typescript: 5.8.3 + eslint: 9.34.0(jiti@2.5.1) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.38.0(typescript@5.8.3)': + '@typescript-eslint/project-service@8.42.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.8.3) - '@typescript-eslint/types': 8.38.0 + '@typescript-eslint/tsconfig-utils': 8.42.0(typescript@5.9.2) + '@typescript-eslint/types': 8.42.0 debug: 4.4.1 - typescript: 5.8.3 + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.38.0': + '@typescript-eslint/scope-manager@8.42.0': dependencies: - '@typescript-eslint/types': 8.38.0 - '@typescript-eslint/visitor-keys': 8.38.0 + '@typescript-eslint/types': 8.42.0 + '@typescript-eslint/visitor-keys': 8.42.0 - '@typescript-eslint/tsconfig-utils@8.38.0(typescript@5.8.3)': + '@typescript-eslint/tsconfig-utils@8.42.0(typescript@5.9.2)': dependencies: - typescript: 5.8.3 + typescript: 5.9.2 - '@typescript-eslint/type-utils@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/types': 8.38.0 - '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) - '@typescript-eslint/utils': 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) + '@typescript-eslint/types': 8.42.0 + '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) debug: 4.4.1 - eslint: 9.32.0(jiti@2.5.1) - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 + eslint: 9.34.0(jiti@2.5.1) + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.38.0': {} + '@typescript-eslint/types@8.42.0': {} - '@typescript-eslint/typescript-estree@8.38.0(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.42.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/project-service': 8.38.0(typescript@5.8.3) - '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.8.3) - '@typescript-eslint/types': 8.38.0 - '@typescript-eslint/visitor-keys': 8.38.0 + '@typescript-eslint/project-service': 8.42.0(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.42.0(typescript@5.9.2) + '@typescript-eslint/types': 8.42.0 + '@typescript-eslint/visitor-keys': 8.42.0 debug: 4.4.1 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.7.2 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3)': + '@typescript-eslint/utils@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.5.1)) - '@typescript-eslint/scope-manager': 8.38.0 - '@typescript-eslint/types': 8.38.0 - '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) - eslint: 9.32.0(jiti@2.5.1) - typescript: 5.8.3 + '@eslint-community/eslint-utils': 4.8.0(eslint@9.34.0(jiti@2.5.1)) + '@typescript-eslint/scope-manager': 8.42.0 + '@typescript-eslint/types': 8.42.0 + '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) + eslint: 9.34.0(jiti@2.5.1) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.38.0': + '@typescript-eslint/visitor-keys@8.42.0': dependencies: - '@typescript-eslint/types': 8.38.0 + '@typescript-eslint/types': 8.42.0 eslint-visitor-keys: 4.2.1 '@ungap/structured-clone@1.3.0': {} @@ -8812,7 +9213,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.1.0)(@vitest/ui@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(msw@2.10.4(@types/node@24.1.0)(typescript@5.8.3))(tsx@4.20.3)(yaml@2.8.0) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(@vitest/ui@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(msw@2.10.4(@types/node@24.3.0)(typescript@5.9.2))(tsx@4.20.5)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -8824,14 +9225,14 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(msw@2.10.4(@types/node@24.1.0)(typescript@5.8.3))(vite@6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0))': + '@vitest/mocker@3.2.4(msw@2.10.4(@types/node@24.3.0)(typescript@5.9.2))(vite@6.3.5(@types/node@24.3.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - msw: 2.10.4(@types/node@24.1.0)(typescript@5.8.3) - vite: 6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0) + msw: 2.10.4(@types/node@24.3.0)(typescript@5.9.2) + vite: 6.3.5(@types/node@24.3.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5)(yaml@2.8.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -8862,7 +9263,7 @@ snapshots: sirv: 3.0.1 tinyglobby: 0.2.14 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.1.0)(@vitest/ui@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(msw@2.10.4(@types/node@24.1.0)(typescript@5.8.3))(tsx@4.20.3)(yaml@2.8.0) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(@vitest/ui@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(msw@2.10.4(@types/node@24.3.0)(typescript@5.9.2))(tsx@4.20.5)(yaml@2.8.1) '@vitest/utils@3.2.4': dependencies: @@ -8914,7 +9315,7 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.1.0: {} + ansi-regex@6.2.0: {} ansi-styles@4.3.0: dependencies: @@ -9085,29 +9486,29 @@ snapshots: balanced-match@1.0.2: {} - bare-events@2.6.0: + bare-events@2.6.1: optional: true - bare-fs@4.1.6: + bare-fs@4.2.2: dependencies: - bare-events: 2.6.0 + bare-events: 2.6.1 bare-path: 3.0.0 - bare-stream: 2.6.5(bare-events@2.6.0) + bare-stream: 2.7.0(bare-events@2.6.1) 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.6.1): dependencies: streamx: 2.22.1 optionalDependencies: - bare-events: 2.6.0 + bare-events: 2.6.1 optional: true base64-js@0.0.8: {} @@ -9186,7 +9587,24 @@ snapshots: ohash: 2.0.11 pathe: 2.0.3 perfect-debounce: 1.0.0 - pkg-types: 2.2.0 + pkg-types: 2.3.0 + rc9: 2.1.2 + optionalDependencies: + magicast: 0.3.5 + + c12@3.2.0(magicast@0.3.5): + dependencies: + chokidar: 4.0.3 + confbox: 0.2.2 + defu: 6.1.4 + dotenv: 17.2.1 + exsolve: 1.0.7 + giget: 2.0.0 + jiti: 2.5.1 + ohash: 2.0.11 + pathe: 2.0.3 + perfect-debounce: 1.0.0 + pkg-types: 2.3.0 rc9: 2.1.2 optionalDependencies: magicast: 0.3.5 @@ -9214,7 +9632,7 @@ snapshots: camelize@1.0.1: {} - caniuse-lite@1.0.30001731: {} + caniuse-lite@1.0.30001739: {} ccount@2.0.1: {} @@ -9246,7 +9664,7 @@ snapshots: character-reference-invalid@2.0.1: {} - chardet@0.7.0: {} + chardet@2.1.0: {} charm@0.1.2: {} @@ -9434,7 +9852,7 @@ snapshots: date-fns@4.1.0: {} - dayjs@1.11.13: {} + dayjs@1.11.18: {} dayjs@1.8.36: {} @@ -9450,6 +9868,8 @@ snapshots: dependencies: ms: 2.1.3 + decimal.js@10.5.0: {} + decode-named-character-reference@1.2.0: dependencies: character-entities: 2.0.2 @@ -9516,16 +9936,16 @@ snapshots: direction@2.0.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 readable-stream: 3.6.2 split-ca: 1.0.1 - ssh2: 1.16.0 + ssh2: 1.17.0 transitivePeerDependencies: - supports-color @@ -9535,7 +9955,7 @@ snapshots: '@grpc/grpc-js': 1.13.4 '@grpc/proto-loader': 0.7.15 docker-modem: 5.0.6 - protobufjs: 7.5.3 + protobufjs: 7.5.4 tar-fs: 2.1.3 uuid: 10.0.0 transitivePeerDependencies: @@ -9573,15 +9993,17 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.44.4(@electric-sql/pglite@0.3.6)(@prisma/client@6.13.0(prisma@6.13.0(magicast@0.3.5)(typescript@5.8.3))(typescript@5.8.3))(@types/pg@8.15.5)(mysql2@3.14.2)(pg@8.16.3)(postgres@3.4.7)(prisma@6.13.0(magicast@0.3.5)(typescript@5.8.3)): + drizzle-orm@0.44.5(@electric-sql/pglite@0.3.7)(@opentelemetry/api@1.9.0)(@prisma/client@6.15.0(prisma@6.15.0(magicast@0.3.5)(typescript@5.9.2))(typescript@5.9.2))(@types/pg@8.15.5)(kysely@0.28.5)(mysql2@3.14.2)(pg@8.16.3)(postgres@3.4.7)(prisma@6.15.0(magicast@0.3.5)(typescript@5.9.2)): optionalDependencies: - '@electric-sql/pglite': 0.3.6 - '@prisma/client': 6.13.0(prisma@6.13.0(magicast@0.3.5)(typescript@5.8.3))(typescript@5.8.3) + '@electric-sql/pglite': 0.3.7 + '@opentelemetry/api': 1.9.0 + '@prisma/client': 6.15.0(prisma@6.15.0(magicast@0.3.5)(typescript@5.9.2))(typescript@5.9.2) '@types/pg': 8.15.5 + kysely: 0.28.5 mysql2: 3.14.2 pg: 8.16.3 postgres: 3.4.7 - prisma: 6.13.0(magicast@0.3.5)(typescript@5.8.3) + prisma: 6.15.0(magicast@0.3.5)(typescript@5.9.2) dunder-proto@1.0.1: dependencies: @@ -9598,20 +10020,22 @@ snapshots: emoji-regex-xs@2.0.1: {} - emoji-regex@10.4.0: {} + emoji-regex@10.5.0: {} emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} + empathic@2.0.0: {} + end-of-stream@1.4.5: dependencies: once: 1.4.0 - enhanced-resolve@5.18.2: + enhanced-resolve@5.18.3: dependencies: graceful-fs: 4.2.11 - tapable: 2.2.2 + tapable: 2.2.3 enquirer@2.3.6: dependencies: @@ -9741,7 +10165,7 @@ snapshots: '@types/estree-jsx': 1.0.5 acorn: 8.15.0 esast-util-from-estree: 2.0.0 - vfile-message: 4.0.2 + vfile-message: 4.0.3 esbuild-register@3.6.0(esbuild@0.25.6): dependencies: @@ -9804,6 +10228,35 @@ snapshots: '@esbuild/win32-ia32': 0.25.6 '@esbuild/win32-x64': 0.25.6 + esbuild@0.25.9: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.9 + '@esbuild/android-arm': 0.25.9 + '@esbuild/android-arm64': 0.25.9 + '@esbuild/android-x64': 0.25.9 + '@esbuild/darwin-arm64': 0.25.9 + '@esbuild/darwin-x64': 0.25.9 + '@esbuild/freebsd-arm64': 0.25.9 + '@esbuild/freebsd-x64': 0.25.9 + '@esbuild/linux-arm': 0.25.9 + '@esbuild/linux-arm64': 0.25.9 + '@esbuild/linux-ia32': 0.25.9 + '@esbuild/linux-loong64': 0.25.9 + '@esbuild/linux-mips64el': 0.25.9 + '@esbuild/linux-ppc64': 0.25.9 + '@esbuild/linux-riscv64': 0.25.9 + '@esbuild/linux-s390x': 0.25.9 + '@esbuild/linux-x64': 0.25.9 + '@esbuild/netbsd-arm64': 0.25.9 + '@esbuild/netbsd-x64': 0.25.9 + '@esbuild/openbsd-arm64': 0.25.9 + '@esbuild/openbsd-x64': 0.25.9 + '@esbuild/openharmony-arm64': 0.25.9 + '@esbuild/sunos-x64': 0.25.9 + '@esbuild/win32-arm64': 0.25.9 + '@esbuild/win32-ia32': 0.25.9 + '@esbuild/win32-x64': 0.25.9 + escalade@3.2.0: {} escape-html@1.0.3: {} @@ -9820,15 +10273,15 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-turbo@2.5.5(eslint@9.32.0(jiti@2.5.1))(turbo@2.5.5): + eslint-config-turbo@2.5.6(eslint@9.34.0(jiti@2.5.1))(turbo@2.5.6): dependencies: - eslint: 9.32.0(jiti@2.5.1) - eslint-plugin-turbo: 2.5.5(eslint@9.32.0(jiti@2.5.1))(turbo@2.5.5) - turbo: 2.5.5 + eslint: 9.34.0(jiti@2.5.1) + eslint-plugin-turbo: 2.5.6(eslint@9.34.0(jiti@2.5.1))(turbo@2.5.6) + turbo: 2.5.6 - eslint-fix-utils@0.4.0(@types/estree@1.0.8)(eslint@9.32.0(jiti@2.5.1)): + eslint-fix-utils@0.4.0(@types/estree@1.0.8)(eslint@9.34.0(jiti@2.5.1)): dependencies: - eslint: 9.32.0(jiti@2.5.1) + eslint: 9.34.0(jiti@2.5.1) optionalDependencies: '@types/estree': 1.0.8 @@ -9840,17 +10293,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.32.0(jiti@2.5.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0(jiti@2.5.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) - eslint: 9.32.0(jiti@2.5.1) + '@typescript-eslint/parser': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.34.0(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.32.0(jiti@2.5.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -9859,9 +10312,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.32.0(jiti@2.5.1) + eslint: 9.34.0(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.32.0(jiti@2.5.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0(jiti@2.5.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -9873,22 +10326,22 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) + '@typescript-eslint/parser': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-package-json@0.47.1(@types/estree@1.0.8)(eslint@9.32.0(jiti@2.5.1))(jsonc-eslint-parser@2.4.0): + eslint-plugin-package-json@0.56.1(@types/estree@1.0.8)(eslint@9.34.0(jiti@2.5.1))(jsonc-eslint-parser@2.4.0): dependencies: '@altano/repository-tools': 2.0.1 change-case: 5.4.4 detect-indent: 7.0.1 detect-newline: 4.0.1 - eslint: 9.32.0(jiti@2.5.1) - eslint-fix-utils: 0.4.0(@types/estree@1.0.8)(eslint@9.32.0(jiti@2.5.1)) + eslint: 9.34.0(jiti@2.5.1) + eslint-fix-utils: 0.4.0(@types/estree@1.0.8)(eslint@9.34.0(jiti@2.5.1)) jsonc-eslint-parser: 2.4.0 - package-json-validator: 0.23.0 + package-json-validator: 0.30.0 semver: 7.7.2 sort-object-keys: 1.1.3 sort-package-json: 3.4.0 @@ -9896,11 +10349,11 @@ snapshots: transitivePeerDependencies: - '@types/estree' - eslint-plugin-react-hooks@5.2.0(eslint@9.32.0(jiti@2.5.1)): + eslint-plugin-react-hooks@5.2.0(eslint@9.34.0(jiti@2.5.1)): dependencies: - eslint: 9.32.0(jiti@2.5.1) + eslint: 9.34.0(jiti@2.5.1) - eslint-plugin-react@7.37.5(eslint@9.32.0(jiti@2.5.1)): + eslint-plugin-react@7.37.5(eslint@9.34.0(jiti@2.5.1)): dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 @@ -9908,7 +10361,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 9.32.0(jiti@2.5.1) + eslint: 9.34.0(jiti@2.5.1) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -9922,11 +10375,11 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-turbo@2.5.5(eslint@9.32.0(jiti@2.5.1))(turbo@2.5.5): + eslint-plugin-turbo@2.5.6(eslint@9.34.0(jiti@2.5.1))(turbo@2.5.6): dependencies: dotenv: 16.0.3 - eslint: 9.32.0(jiti@2.5.1) - turbo: 2.5.5 + eslint: 9.34.0(jiti@2.5.1) + turbo: 2.5.6 eslint-scope@8.4.0: dependencies: @@ -9937,16 +10390,16 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.32.0(jiti@2.5.1): + eslint@9.34.0(jiti@2.5.1): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.5.1)) + '@eslint-community/eslint-utils': 4.8.0(eslint@9.34.0(jiti@2.5.1)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 - '@eslint/config-helpers': 0.3.0 - '@eslint/core': 0.15.1 + '@eslint/config-helpers': 0.3.1 + '@eslint/core': 0.15.2 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.32.0 - '@eslint/plugin-kit': 0.3.4 + '@eslint/js': 9.34.0 + '@eslint/plugin-kit': 0.3.5 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 @@ -10062,15 +10515,9 @@ snapshots: extendable-error@0.1.7: {} - external-editor@3.1.0: - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - extrareqp2@1.0.0(debug@4.3.7): dependencies: - follow-redirects: 1.15.9(debug@4.3.7) + follow-redirects: 1.15.11(debug@4.3.7) transitivePeerDependencies: - debug @@ -10130,8 +10577,6 @@ snapshots: dependencies: to-regex-range: 5.0.1 - find-up-simple@1.0.1: {} - find-up@3.0.0: dependencies: locate-path: 3.0.0 @@ -10155,7 +10600,7 @@ snapshots: flesch@1.0.5: {} - follow-redirects@1.15.9(debug@4.3.7): + follow-redirects@1.15.11(debug@4.3.7): optionalDependencies: debug: 4.3.7 @@ -10175,7 +10620,7 @@ snapshots: fs-extra@11.3.0: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.1.0 + jsonfile: 6.2.0 universalify: 2.0.1 fs-extra@7.0.1: @@ -10213,7 +10658,7 @@ snapshots: get-caller-file@2.0.5: {} - get-east-asian-width@1.3.0: {} + get-east-asian-width@1.3.1: {} get-intrinsic@1.3.0: dependencies: @@ -10453,7 +10898,7 @@ snapshots: space-separated-tokens: 2.0.2 style-to-js: 1.1.17 unist-util-position: 5.0.0 - vfile-message: 4.0.2 + vfile-message: 4.0.3 transitivePeerDependencies: - supports-color @@ -10472,8 +10917,6 @@ snapshots: dependencies: '@types/hast': 3.0.4 - hast@1.0.0: {} - headers-polyfill@4.0.3: optional: true @@ -10510,7 +10953,6 @@ snapshots: iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 - optional: true ieee754@1.2.1: {} @@ -10546,10 +10988,7 @@ snapshots: escape-html: 1.0.3 react: 19.1.1 - ip-address@9.0.5: - dependencies: - jsbn: 1.1.0 - sprintf-js: 1.1.3 + ip-address@10.0.1: {} is-alphabetical@2.0.1: {} @@ -10748,8 +11187,6 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jiti@2.4.2: {} - jiti@2.5.1: {} js-git@0.7.8: @@ -10772,8 +11209,6 @@ snapshots: dependencies: argparse: 2.0.1 - jsbn@1.1.0: {} - jsesc@3.1.0: {} json-buffer@3.0.1: {} @@ -10800,7 +11235,7 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 - jsonfile@6.1.0: + jsonfile@6.2.0: dependencies: universalify: 2.0.1 optionalDependencies: @@ -10823,6 +11258,38 @@ snapshots: klona@2.0.6: {} + kysely-ctl@0.18.0(kysely-postgres-js@2.0.0(kysely@0.28.5)(postgres@3.4.7))(kysely@0.28.5)(magicast@0.3.5)(typescript@5.9.2): + dependencies: + c12: 3.2.0(magicast@0.3.5) + citty: 0.1.6 + confbox: 0.2.2 + consola: 3.4.2 + jiti: 2.5.1 + kysely: 0.28.5 + nypm: 0.6.1 + ofetch: 1.4.1 + pathe: 2.0.3 + pkg-types: 2.3.0 + std-env: 3.9.0 + tsconfck: 3.1.6(typescript@5.9.2) + optionalDependencies: + kysely-postgres-js: 2.0.0(kysely@0.28.5)(postgres@3.4.7) + transitivePeerDependencies: + - magicast + - typescript + + kysely-pglite-dialect@1.1.1(@electric-sql/pglite@0.3.7)(kysely@0.28.5): + dependencies: + '@electric-sql/pglite': 0.3.7 + kysely: 0.28.5 + + kysely-postgres-js@2.0.0(kysely@0.28.5)(postgres@3.4.7): + dependencies: + kysely: 0.28.5 + postgres: 3.4.7 + + kysely@0.28.5: {} + lazystream@1.0.1: dependencies: readable-stream: 2.3.8 @@ -10928,7 +11395,7 @@ snapshots: lru.min@1.1.2: optional: true - lucide-react@0.534.0(react@19.1.1): + lucide-react@0.542.0(react@19.1.1): dependencies: react: 19.1.1 @@ -10936,10 +11403,14 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 + magic-string@0.30.18: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + magicast@0.3.5: dependencies: - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 + '@babel/parser': 7.28.3 + '@babel/types': 7.28.2 source-map-js: 1.2.1 make-dir@4.0.0: @@ -11245,7 +11716,7 @@ snapshots: micromark-util-events-to-acorn: 2.0.3 micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - vfile-message: 4.0.2 + vfile-message: 4.0.3 micromark-extension-mdx-md@2.0.0: dependencies: @@ -11261,7 +11732,7 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.2 + vfile-message: 4.0.3 micromark-extension-mdxjs@3.0.0: dependencies: @@ -11297,7 +11768,7 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.2 + vfile-message: 4.0.3 micromark-factory-space@2.0.1: dependencies: @@ -11359,7 +11830,7 @@ snapshots: estree-util-visit: 2.0.0 micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - vfile-message: 4.0.2 + vfile-message: 4.0.3 micromark-util-html-tag-name@2.0.1: {} @@ -11463,13 +11934,13 @@ snapshots: ms@2.1.3: {} - msw@2.10.4(@types/node@24.1.0)(typescript@5.8.3): + msw@2.10.4(@types/node@24.3.0)(typescript@5.9.2): dependencies: '@bundled-es-modules/cookie': 2.0.1 '@bundled-es-modules/statuses': 1.0.1 '@bundled-es-modules/tough-cookie': 0.1.6 - '@inquirer/confirm': 5.1.14(@types/node@24.1.0) - '@mswjs/interceptors': 0.39.5 + '@inquirer/confirm': 5.1.16(@types/node@24.3.0) + '@mswjs/interceptors': 0.39.6 '@open-draft/deferred-promise': 2.2.0 '@open-draft/until': 2.1.0 '@types/cookie': 0.6.0 @@ -11484,7 +11955,7 @@ snapshots: type-fest: 4.41.0 yargs: 17.7.2 optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.2 transitivePeerDependencies: - '@types/node' optional: true @@ -11523,6 +11994,8 @@ snapshots: nanoid@3.3.11: {} + nanoid@5.1.5: {} + natural-compare@1.4.0: {} needle@2.4.0: @@ -11551,24 +12024,25 @@ snapshots: transitivePeerDependencies: - supports-color - next@15.4.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + next@15.5.2(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: - '@next/env': 15.4.5 + '@next/env': 15.5.2 '@swc/helpers': 0.5.15 - caniuse-lite: 1.0.30001731 + caniuse-lite: 1.0.30001739 postcss: 8.4.31 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) styled-jsx: 5.1.6(react@19.1.1) optionalDependencies: - '@next/swc-darwin-arm64': 15.4.5 - '@next/swc-darwin-x64': 15.4.5 - '@next/swc-linux-arm64-gnu': 15.4.5 - '@next/swc-linux-arm64-musl': 15.4.5 - '@next/swc-linux-x64-gnu': 15.4.5 - '@next/swc-linux-x64-musl': 15.4.5 - '@next/swc-win32-arm64-msvc': 15.4.5 - '@next/swc-win32-x64-msvc': 15.4.5 + '@next/swc-darwin-arm64': 15.5.2 + '@next/swc-darwin-x64': 15.5.2 + '@next/swc-linux-arm64-gnu': 15.5.2 + '@next/swc-linux-arm64-musl': 15.5.2 + '@next/swc-linux-x64-gnu': 15.5.2 + '@next/swc-linux-x64-musl': 15.5.2 + '@next/swc-win32-arm64-msvc': 15.5.2 + '@next/swc-win32-x64-msvc': 15.5.2 + '@opentelemetry/api': 1.9.0 sharp: 0.34.3 transitivePeerDependencies: - '@babel/core' @@ -11605,9 +12079,17 @@ snapshots: citty: 0.1.6 consola: 3.4.2 pathe: 2.0.3 - pkg-types: 2.2.0 + pkg-types: 2.3.0 tinyexec: 0.3.2 + nypm@0.6.1: + dependencies: + citty: 0.1.6 + consola: 3.4.2 + pathe: 2.0.3 + pkg-types: 2.3.0 + tinyexec: 1.0.1 + object-assign@4.1.1: {} object-inspect@1.13.4: {} @@ -11650,6 +12132,12 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 + ofetch@1.4.1: + dependencies: + destr: 2.0.5 + node-fetch-native: 1.6.6 + ufo: 1.6.1 + ohash@2.0.11: {} once@1.4.0: @@ -11673,8 +12161,6 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - os-tmpdir@1.0.2: {} - outdent@0.5.0: {} outvariant@1.4.3: @@ -11736,7 +12222,7 @@ snapshots: package-json-from-dist@1.0.1: {} - package-json-validator@0.23.0: + package-json-validator@0.30.0: dependencies: semver: 7.7.2 validate-npm-package-license: 3.0.4 @@ -11744,17 +12230,18 @@ snapshots: package-manager-detector@0.2.11: dependencies: - quansync: 0.2.10 + quansync: 0.2.11 package-manager-detector@1.3.0: {} - pagefind@1.3.0: + pagefind@1.4.0: optionalDependencies: - '@pagefind/darwin-arm64': 1.3.0 - '@pagefind/darwin-x64': 1.3.0 - '@pagefind/linux-arm64': 1.3.0 - '@pagefind/linux-x64': 1.3.0 - '@pagefind/windows-x64': 1.3.0 + '@pagefind/darwin-arm64': 1.4.0 + '@pagefind/darwin-x64': 1.4.0 + '@pagefind/freebsd-x64': 1.4.0 + '@pagefind/linux-arm64': 1.4.0 + '@pagefind/linux-x64': 1.4.0 + '@pagefind/windows-x64': 1.4.0 pako@0.2.9: {} @@ -11891,7 +12378,7 @@ snapshots: pify@4.0.1: {} - pkg-types@2.2.0: + pkg-types@2.3.0: dependencies: confbox: 0.2.2 exsolve: 1.0.7 @@ -11932,13 +12419,13 @@ snapshots: async: 3.2.6 debug: 4.4.1 pidusage: 2.0.21 - systeminformation: 5.27.7 + systeminformation: 5.27.8 tx2: 1.0.5 transitivePeerDependencies: - supports-color optional: true - pm2@6.0.8: + pm2@6.0.10: dependencies: '@pm2/agent': 2.1.1 '@pm2/io': 6.1.0 @@ -11951,7 +12438,7 @@ snapshots: cli-tableau: 2.0.1 commander: 2.15.1 croner: 4.1.97 - dayjs: 1.11.13 + dayjs: 1.11.18 debug: 4.4.1 enquirer: 2.3.6 eventemitter2: 5.0.1 @@ -12013,22 +12500,22 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-tailwindcss@0.6.14(@ianvs/prettier-plugin-sort-imports@4.5.1(prettier@3.6.2))(prettier@3.6.2): + prettier-plugin-tailwindcss@0.6.14(@ianvs/prettier-plugin-sort-imports@4.7.0(prettier@3.6.2))(prettier@3.6.2): dependencies: prettier: 3.6.2 optionalDependencies: - '@ianvs/prettier-plugin-sort-imports': 4.5.1(prettier@3.6.2) + '@ianvs/prettier-plugin-sort-imports': 4.7.0(prettier@3.6.2) prettier@2.8.8: {} prettier@3.6.2: {} - prisma@6.13.0(magicast@0.3.5)(typescript@5.8.3): + prisma@6.15.0(magicast@0.3.5)(typescript@5.9.2): dependencies: - '@prisma/config': 6.13.0(magicast@0.3.5) - '@prisma/engines': 6.13.0 + '@prisma/config': 6.15.0(magicast@0.3.5) + '@prisma/engines': 6.15.0 optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.2 transitivePeerDependencies: - magicast @@ -12063,7 +12550,7 @@ snapshots: property-information@7.1.0: {} - protobufjs@7.5.3: + protobufjs@7.5.4: dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/base64': 1.1.2 @@ -12075,7 +12562,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 24.1.0 + '@types/node': 24.3.0 long: 5.3.2 proxy-agent@6.4.0: @@ -12107,7 +12594,7 @@ snapshots: pure-rand@6.1.0: {} - quansync@0.2.10: {} + quansync@0.2.11: {} querystringify@2.2.0: optional: true @@ -12128,41 +12615,35 @@ snapshots: react-is@16.13.1: {} - react-remove-scroll-bar@2.3.8(@types/react@19.1.9)(react@19.1.1): + react-remove-scroll-bar@2.3.8(@types/react@19.1.12)(react@19.1.1): dependencies: react: 19.1.1 - react-style-singleton: 2.2.3(@types/react@19.1.9)(react@19.1.1) + react-style-singleton: 2.2.3(@types/react@19.1.12)(react@19.1.1) tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.9 + '@types/react': 19.1.12 - react-remove-scroll@2.7.1(@types/react@19.1.9)(react@19.1.1): + react-remove-scroll@2.7.1(@types/react@19.1.12)(react@19.1.1): dependencies: react: 19.1.1 - react-remove-scroll-bar: 2.3.8(@types/react@19.1.9)(react@19.1.1) - react-style-singleton: 2.2.3(@types/react@19.1.9)(react@19.1.1) + react-remove-scroll-bar: 2.3.8(@types/react@19.1.12)(react@19.1.1) + react-style-singleton: 2.2.3(@types/react@19.1.12)(react@19.1.1) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.1.9)(react@19.1.1) - use-sidecar: 1.1.3(@types/react@19.1.9)(react@19.1.1) + use-callback-ref: 1.3.3(@types/react@19.1.12)(react@19.1.1) + use-sidecar: 1.1.3(@types/react@19.1.12)(react@19.1.1) optionalDependencies: - '@types/react': 19.1.9 + '@types/react': 19.1.12 - react-style-singleton@2.2.3(@types/react@19.1.9)(react@19.1.1): + react-style-singleton@2.2.3(@types/react@19.1.12)(react@19.1.1): dependencies: get-nonce: 1.0.1 react: 19.1.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.9 + '@types/react': 19.1.12 react@19.1.1: {} - read-package-up@11.0.0: - dependencies: - find-up-simple: 1.0.1 - read-pkg: 9.0.1 - type-fest: 4.41.0 - read-pkg@9.0.1: dependencies: '@types/normalize-package-data': 2.4.4 @@ -12242,15 +12723,14 @@ snapshots: estree-util-build-jsx: 3.0.1 vfile: 6.0.3 - recma-jsx@1.0.0(acorn@8.15.0): + recma-jsx@1.0.1(acorn@8.15.0): dependencies: + acorn: 8.15.0 acorn-jsx: 5.3.2(acorn@8.15.0) estree-util-to-js: 2.0.0 recma-parse: 1.0.0 recma-stringify: 1.0.0 unified: 11.0.5 - transitivePeerDependencies: - - acorn recma-parse@1.0.0: dependencies: @@ -12367,7 +12847,7 @@ snapshots: unist-util-mdx-define: 1.1.2 yaml: 2.7.0 - remark-mdx@3.1.0: + remark-mdx@3.1.1: dependencies: mdast-util-mdx: 3.0.0 micromark-extension-mdxjs: 3.0.0 @@ -12425,13 +12905,10 @@ snapshots: transitivePeerDependencies: - supports-color - renoun@9.0.0(acorn@8.15.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + renoun@9.5.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: - '@mdx-js/mdx': 3.1.0(acorn@8.15.0) - '@renoun/mdx': 3.0.0 - '@shikijs/langs': 3.8.1 - '@shikijs/themes': 3.8.1 - hast: 1.0.0 + '@mdx-js/mdx': 3.1.1 + '@renoun/mdx': 3.1.0 hast-util-to-jsx-runtime: 2.3.6 html-url-attributes: 3.0.1 ignore: 7.0.5 @@ -12448,7 +12925,6 @@ snapshots: vscode-textmate: 9.2.0 ws: 8.18.3 transitivePeerDependencies: - - acorn - bufferutil - supports-color - utf-8-validate @@ -12522,27 +12998,27 @@ snapshots: reusify@1.1.0: {} - rolldown@1.0.0-beta.30: + rolldown@1.0.0-beta.34: dependencies: - '@oxc-project/runtime': 0.78.0 - '@oxc-project/types': 0.78.0 - '@rolldown/pluginutils': 1.0.0-beta.30 + '@oxc-project/runtime': 0.82.3 + '@oxc-project/types': 0.82.3 + '@rolldown/pluginutils': 1.0.0-beta.34 ansis: 4.1.0 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.30 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.30 - '@rolldown/binding-darwin-x64': 1.0.0-beta.30 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.30 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.30 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.30 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.30 - '@rolldown/binding-linux-arm64-ohos': 1.0.0-beta.30 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.30 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.30 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.30 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.30 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.30 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.30 + '@rolldown/binding-android-arm64': 1.0.0-beta.34 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.34 + '@rolldown/binding-darwin-x64': 1.0.0-beta.34 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.34 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.34 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.34 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.34 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.34 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.34 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.34 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.34 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.34 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.34 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.34 rollup-plugin-delete@3.0.1(rollup@4.45.1): dependencies: @@ -12824,13 +13300,13 @@ snapshots: dependencies: agent-base: 7.1.4 debug: 4.4.1 - socks: 2.8.6 + socks: 2.8.7 transitivePeerDependencies: - supports-color - socks@2.8.6: + socks@2.8.7: dependencies: - ip-address: 9.0.5 + ip-address: 10.0.1 smart-buffer: 4.2.0 sort-object-keys@1.1.3: {} @@ -12854,8 +13330,6 @@ snapshots: source-map@0.6.1: {} - source-map@0.7.4: {} - source-map@0.7.6: {} space-separated-tokens@2.0.2: {} @@ -12891,17 +13365,15 @@ snapshots: sprintf-js@1.1.2: {} - sprintf-js@1.1.3: {} - sqlstring@2.3.3: optional: true 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 @@ -12928,7 +13400,7 @@ snapshots: fast-fifo: 1.3.2 text-decoder: 1.2.3 optionalDependencies: - bare-events: 2.6.0 + bare-events: 2.6.1 strict-event-emitter@0.5.1: optional: true @@ -12948,13 +13420,13 @@ snapshots: string-width@6.1.0: dependencies: eastasianwidth: 0.2.0 - emoji-regex: 10.4.0 + emoji-regex: 10.5.0 strip-ansi: 7.1.0 string-width@7.2.0: dependencies: - emoji-regex: 10.4.0 - get-east-asian-width: 1.3.0 + emoji-regex: 10.5.0 + get-east-asian-width: 1.3.1 strip-ansi: 7.1.0 string.prototype.codepointat@0.2.1: {} @@ -13022,7 +13494,7 @@ snapshots: strip-ansi@7.1.0: dependencies: - ansi-regex: 6.1.0 + ansi-regex: 6.2.0 strip-bom-string@1.0.0: {} @@ -13065,18 +13537,18 @@ snapshots: normalize-strings: 1.1.1 pluralize: 8.0.0 - systeminformation@5.27.7: + systeminformation@5.27.8: optional: true tailwind-merge@3.3.1: {} - tailwindcss-animate@1.0.7(tailwindcss@4.1.11): + tailwindcss-animate@1.0.7(tailwindcss@4.1.12): dependencies: - tailwindcss: 4.1.11 + tailwindcss: 4.1.12 - tailwindcss@4.1.11: {} + tailwindcss@4.1.12: {} - tapable@2.2.2: {} + tapable@2.2.3: {} tar-fs@2.1.3: dependencies: @@ -13090,7 +13562,7 @@ snapshots: pump: 3.0.3 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 4.1.6 + bare-fs: 4.2.2 bare-path: 3.0.0 transitivePeerDependencies: - bare-buffer @@ -13131,23 +13603,23 @@ snapshots: glob: 10.4.5 minimatch: 9.0.5 - testcontainers@11.4.0: + testcontainers@11.5.1: dependencies: '@balena/dockerignore': 1.0.2 - '@types/dockerode': 3.3.42 + '@types/dockerode': 3.3.43 archiver: 7.0.1 async-lock: 1.4.1 byline: 5.0.0 debug: 4.4.1 - docker-compose: 1.2.0 + docker-compose: 1.3.0 dockerode: 4.0.7 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 + tmp: 0.2.5 + undici: 7.15.0 transitivePeerDependencies: - bare-buffer - supports-color @@ -13175,13 +13647,11 @@ snapshots: tinyspy@4.0.3: {} - tm-themes@1.10.7: {} + tm-grammars@1.24.8: {} - tmp@0.0.33: - dependencies: - os-tmpdir: 1.0.2 + tm-themes@1.10.9: {} - tmp@0.2.3: {} + tmp@0.2.5: {} to-regex-range@5.0.1: dependencies: @@ -13209,9 +13679,9 @@ snapshots: trough@2.2.0: {} - ts-api-utils@2.1.0(typescript@5.8.3): + ts-api-utils@2.1.0(typescript@5.9.2): dependencies: - typescript: 5.8.3 + typescript: 5.9.2 ts-morph@26.0.0: dependencies: @@ -13220,9 +13690,9 @@ snapshots: ts-pattern@5.6.2: {} - tsconfck@3.1.6(typescript@5.8.3): + tsconfck@3.1.6(typescript@5.9.2): optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.2 tsconfig-paths@3.15.0: dependencies: @@ -13235,43 +13705,43 @@ snapshots: tslib@2.8.1: {} - tsx@4.20.3: + tsx@4.20.5: dependencies: - esbuild: 0.25.6 + esbuild: 0.25.9 get-tsconfig: 4.10.1 optionalDependencies: fsevents: 2.3.3 - turbo-darwin-64@2.5.5: + turbo-darwin-64@2.5.6: optional: true - turbo-darwin-arm64@2.5.5: + turbo-darwin-arm64@2.5.6: optional: true - turbo-linux-64@2.5.5: + turbo-linux-64@2.5.6: optional: true - turbo-linux-arm64@2.5.5: + turbo-linux-arm64@2.5.6: optional: true - turbo-windows-64@2.5.5: + turbo-windows-64@2.5.6: optional: true - turbo-windows-arm64@2.5.5: + turbo-windows-arm64@2.5.6: optional: true - turbo@2.5.5: + turbo@2.5.6: 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.5.6 + turbo-darwin-arm64: 2.5.6 + turbo-linux-64: 2.5.6 + turbo-linux-arm64: 2.5.6 + turbo-windows-64: 2.5.6 + turbo-windows-arm64: 2.5.6 tv4@1.3.0: {} - tw-animate-css@1.3.6: {} + tw-animate-css@1.3.8: {} tweetnacl@0.14.5: {} @@ -13322,18 +13792,22 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3): + typescript-eslint@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.38.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) - '@typescript-eslint/parser': 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) - '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) - '@typescript-eslint/utils': 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) - eslint: 9.32.0(jiti@2.5.1) - typescript: 5.8.3 + '@typescript-eslint/eslint-plugin': 8.42.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/parser': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.34.0(jiti@2.5.1) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - typescript@5.8.3: {} + typescript@5.9.2: {} + + ufo@1.6.1: {} + + ulid@3.0.0: {} unbox-primitive@1.1.0: dependencies: @@ -13346,9 +13820,11 @@ snapshots: undici-types@6.21.0: {} + undici-types@7.10.0: {} + undici-types@7.8.0: {} - undici@7.12.0: {} + undici@7.15.0: {} unherit@1.1.3: dependencies: @@ -13475,29 +13951,31 @@ snapshots: requires-port: 1.0.0 optional: true - use-callback-ref@1.3.3(@types/react@19.1.9)(react@19.1.1): + use-callback-ref@1.3.3(@types/react@19.1.12)(react@19.1.1): dependencies: react: 19.1.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.9 + '@types/react': 19.1.12 - use-debounce@10.0.5(react@19.1.1): + use-debounce@10.0.6(react@19.1.1): dependencies: react: 19.1.1 - use-sidecar@1.1.3(@types/react@19.1.9)(react@19.1.1): + use-sidecar@1.1.3(@types/react@19.1.12)(react@19.1.1): dependencies: detect-node-es: 1.1.0 react: 19.1.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.9 + '@types/react': 19.1.12 util-deprecate@1.0.2: {} uuid@10.0.0: {} + uuid@11.1.0: {} + validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 @@ -13525,6 +14003,11 @@ snapshots: '@types/unist': 3.0.3 unist-util-stringify-position: 4.0.0 + vfile-message@4.0.3: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + vfile-reporter@8.1.1: dependencies: '@types/supports-color': 8.1.3 @@ -13532,19 +14015,19 @@ snapshots: supports-color: 9.4.0 unist-util-stringify-position: 4.0.0 vfile: 6.0.3 - vfile-message: 4.0.2 + vfile-message: 4.0.3 vfile-sort: 4.0.0 vfile-statistics: 3.0.0 vfile-sort@4.0.0: dependencies: vfile: 6.0.3 - vfile-message: 4.0.2 + vfile-message: 4.0.3 vfile-statistics@3.0.0: dependencies: vfile: 6.0.3 - vfile-message: 4.0.2 + vfile-message: 4.0.3 vfile@4.2.1: dependencies: @@ -13556,15 +14039,15 @@ snapshots: vfile@6.0.3: dependencies: '@types/unist': 3.0.3 - vfile-message: 4.0.2 + vfile-message: 4.0.3 - vite-node@3.2.4(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0): + vite-node@3.2.4(@types/node@24.3.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5)(yaml@2.8.1): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0) + vite: 6.3.5(@types/node@24.3.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -13579,38 +14062,38 @@ snapshots: - tsx - yaml - vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0)): + vite-tsconfig-paths@5.1.4(typescript@5.9.2)(vite@6.3.5(@types/node@24.3.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5)(yaml@2.8.1)): dependencies: debug: 4.4.1 globrex: 0.1.2 - tsconfck: 3.1.6(typescript@5.8.3) + tsconfck: 3.1.6(typescript@5.9.2) optionalDependencies: - vite: 6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0) + vite: 6.3.5(@types/node@24.3.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5)(yaml@2.8.1) transitivePeerDependencies: - supports-color - typescript - vite@6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0): + vite@6.3.5(@types/node@24.3.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5)(yaml@2.8.1): dependencies: - esbuild: 0.25.6 + esbuild: 0.25.9 fdir: 6.4.6(picomatch@4.0.2) picomatch: 4.0.2 postcss: 8.5.6 rollup: 4.43.0 tinyglobby: 0.2.14 optionalDependencies: - '@types/node': 24.1.0 + '@types/node': 24.3.0 fsevents: 2.3.3 jiti: 2.5.1 lightningcss: 1.30.1 - tsx: 4.20.3 - yaml: 2.8.0 + tsx: 4.20.5 + yaml: 2.8.1 - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.1.0)(@vitest/ui@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(msw@2.10.4(@types/node@24.1.0)(typescript@5.8.3))(tsx@4.20.3)(yaml@2.8.0): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(@vitest/ui@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(msw@2.10.4(@types/node@24.3.0)(typescript@5.9.2))(tsx@4.20.5)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(msw@2.10.4(@types/node@24.1.0)(typescript@5.8.3))(vite@6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0)) + '@vitest/mocker': 3.2.4(msw@2.10.4(@types/node@24.3.0)(typescript@5.9.2))(vite@6.3.5(@types/node@24.3.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -13628,12 +14111,12 @@ snapshots: tinyglobby: 0.2.14 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0) - vite-node: 3.2.4(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0) + vite: 6.3.5(@types/node@24.3.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@24.3.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5)(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.3.0 '@vitest/ui': 3.2.4(vitest@3.2.4) transitivePeerDependencies: - jiti @@ -13751,7 +14234,7 @@ snapshots: yaml@2.7.0: {} - yaml@2.8.0: {} + yaml@2.8.1: {} yargs-parser@21.1.1: {} @@ -13778,7 +14261,7 @@ snapshots: yocto-queue@0.1.0: {} - yoctocolors-cjs@2.1.2: + yoctocolors-cjs@2.1.3: optional: true yoga-layout@3.2.1: {} @@ -13789,6 +14272,6 @@ snapshots: compress-commons: 6.0.2 readable-stream: 4.7.0 - zod@4.0.14: {} + zod@4.1.5: {} zwitch@2.0.4: {} diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index 63efca5..929a3df 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -15,23 +15,23 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "@eslint/compat": "1.3.1", - "@next/eslint-plugin-next": "15.4.5", - "eslint-config-turbo": "2.5.5", + "@eslint/compat": "1.3.2", + "@next/eslint-plugin-next": "15.5.2", + "eslint-config-turbo": "2.5.6", "eslint-plugin-import": "2.32.0", - "eslint-plugin-package-json": "0.47.1", + "eslint-plugin-package-json": "0.56.1", "eslint-plugin-react": "7.37.5", "eslint-plugin-react-hooks": "5.2.0", "jsonc-eslint-parser": "2.4.0", - "typescript-eslint": "8.38.0" + "typescript-eslint": "8.42.0" }, "devDependencies": { - "@eslint/js": "9.32.0", + "@eslint/js": "9.34.0", "@vorsteh-queue/prettier-config": "workspace:*", "@vorsteh-queue/tsconfig": "workspace:*", - "eslint": "^9.32.0", + "eslint": "^9.34.0", "prettier": "^3.6.2", - "typescript": "^5.8.3" + "typescript": "^5.9.2" }, "prettier": "@vorsteh-queue/prettier-config" } diff --git a/tooling/prettier/package.json b/tooling/prettier/package.json index 92a8d21..1519e2f 100644 --- a/tooling/prettier/package.json +++ b/tooling/prettier/package.json @@ -13,13 +13,13 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "@ianvs/prettier-plugin-sort-imports": "4.5.1", + "@ianvs/prettier-plugin-sort-imports": "4.7.0", "prettier": "^3.6.2", "prettier-plugin-tailwindcss": "0.6.14" }, "devDependencies": { "@vorsteh-queue/tsconfig": "workspace:*", - "typescript": "^5.8.3" + "typescript": "^5.9.2" }, "prettier": "@vorsteh-queue/prettier-config" }