From 7c1555e1632e48400d8d97820fb06c975f233d5e Mon Sep 17 00:00:00 2001 From: burnedchris Date: Mon, 11 Aug 2025 11:31:00 +0100 Subject: [PATCH 1/3] Update dependencies across benchmarks to use Next.js 15.4.6, React 19.1.1, and TypeScript 5.9.2. Upgrade various packages including @c15t/translations, @playwright/test, and @types for improved compatibility and performance. --- benchmarks/baseline/package.json | 14 +- benchmarks/with-c15t-nextjs/package.json | 16 +- benchmarks/with-c15t-react/package.json | 18 +- benchmarks/with-cookie-control/package.json | 16 +- benchmarks/with-cookie-yes/package.json | 16 +- benchmarks/with-didomi/package.json | 14 +- benchmarks/with-enzuzo/package.json | 16 +- benchmarks/with-iubenda/package.json | 16 +- benchmarks/with-ketch/package.json | 14 +- benchmarks/with-onetrust/package.json | 14 +- benchmarks/with-osano/package.json | 14 +- benchmarks/with-usercentrics/package.json | 16 +- package.json | 10 +- packages/cli/package.json | 12 +- pnpm-lock.yaml | 2576 ++++++++----------- 15 files changed, 1233 insertions(+), 1549 deletions(-) diff --git a/benchmarks/baseline/package.json b/benchmarks/baseline/package.json index 3d25695..0ca24c1 100644 --- a/benchmarks/baseline/package.json +++ b/benchmarks/baseline/package.json @@ -11,17 +11,17 @@ "benchmark": "pnpm exec benchmark-cli benchmark" }, "dependencies": { - "next": "15.3.3", - "react": "^19.0.0", - "react-dom": "^19.0.0" + "next": "15.4.6", + "react": "^19.1.1", + "react-dom": "^19.1.1" }, "devDependencies": { "@cookiebench/benchmark-schema": "workspace:*", "@cookiebench/cli": "workspace:*", "@cookiebench/ts-config": "workspace:*", - "@types/node": "^22.15.30", - "@types/react": "^19.1.6", - "@types/react-dom": "^19.1.6", - "typescript": "^5.8.3" + "@types/node": "^24.2.1", + "@types/react": "^19.1.9", + "@types/react-dom": "^19.1.7", + "typescript": "^5.9.2" } } diff --git a/benchmarks/with-c15t-nextjs/package.json b/benchmarks/with-c15t-nextjs/package.json index 297dd71..67e6bc3 100644 --- a/benchmarks/with-c15t-nextjs/package.json +++ b/benchmarks/with-c15t-nextjs/package.json @@ -11,18 +11,18 @@ "benchmark": "pnpm exec benchmark-cli benchmark" }, "dependencies": { - "@c15t/nextjs": "1.2.2-canary-20250603153501", - "next": "15.3.3", - "react": "^19.0.0", - "react-dom": "^19.0.0" + "@c15t/nextjs": "1.5.0", + "next": "15.4.6", + "react": "^19.1.1", + "react-dom": "^19.1.1" }, "devDependencies": { "@cookiebench/benchmark-schema": "workspace:*", "@cookiebench/cli": "workspace:*", "@cookiebench/ts-config": "workspace:*", - "@types/node": "^22.15.30", - "@types/react": "^19.1.6", - "@types/react-dom": "^19.1.6", - "typescript": "^5.8.3" + "@types/node": "^24.2.1", + "@types/react": "^19.1.9", + "@types/react-dom": "^19.1.7", + "typescript": "^5.9.2" } } diff --git a/benchmarks/with-c15t-react/package.json b/benchmarks/with-c15t-react/package.json index 79cab8e..259a6d9 100644 --- a/benchmarks/with-c15t-react/package.json +++ b/benchmarks/with-c15t-react/package.json @@ -10,19 +10,19 @@ "benchmark": "pnpm exec benchmark-cli benchmark" }, "dependencies": { - "@c15t/react": "1.2.2-canary-20250603153501", - "@c15t/translations": "^1.0.0", - "next": "15.3.3", - "react": "^19.0.0", - "react-dom": "^19.0.0" + "@c15t/react": "1.5.0", + "@c15t/translations": "^1.5.0", + "next": "15.4.6", + "react": "^19.1.1", + "react-dom": "^19.1.1" }, "devDependencies": { "@cookiebench/benchmark-schema": "workspace:*", "@cookiebench/cli": "workspace:*", "@cookiebench/ts-config": "workspace:*", - "@types/node": "^22.15.30", - "@types/react": "^19.1.6", - "@types/react-dom": "^19.1.6", - "typescript": "^5.8.3" + "@types/node": "^24.2.1", + "@types/react": "^19.1.9", + "@types/react-dom": "^19.1.7", + "typescript": "^5.9.2" } } diff --git a/benchmarks/with-cookie-control/package.json b/benchmarks/with-cookie-control/package.json index 94c5647..9f70879 100644 --- a/benchmarks/with-cookie-control/package.json +++ b/benchmarks/with-cookie-control/package.json @@ -10,17 +10,17 @@ "benchmark": "pnpm exec benchmark-cli benchmark" }, "dependencies": { - "next": "15.3.3", - "react": "^19.0.0", - "react-dom": "^19.0.0" + "next": "15.4.6", + "react": "^19.1.1", + "react-dom": "^19.1.1" }, "devDependencies": { - "@cookiebench/cli": "workspace:*", "@cookiebench/benchmark-schema": "workspace:*", + "@cookiebench/cli": "workspace:*", "@cookiebench/ts-config": "workspace:*", - "@types/node": "^22.15.30", - "@types/react": "^19.1.6", - "@types/react-dom": "^19.1.6", - "typescript": "^5.8.3" + "@types/node": "^24.2.1", + "@types/react": "^19.1.9", + "@types/react-dom": "^19.1.7", + "typescript": "^5.9.2" } } diff --git a/benchmarks/with-cookie-yes/package.json b/benchmarks/with-cookie-yes/package.json index 3747ba8..7ae78d4 100644 --- a/benchmarks/with-cookie-yes/package.json +++ b/benchmarks/with-cookie-yes/package.json @@ -10,17 +10,17 @@ "benchmark": "pnpm exec benchmark-cli benchmark" }, "dependencies": { - "next": "15.3.3", - "react": "^19.0.0", - "react-dom": "^19.0.0" + "next": "15.4.6", + "react": "^19.1.1", + "react-dom": "^19.1.1" }, "devDependencies": { - "@cookiebench/cli": "workspace:*", "@cookiebench/benchmark-schema": "workspace:*", + "@cookiebench/cli": "workspace:*", "@cookiebench/ts-config": "workspace:*", - "@types/node": "^22.15.30", - "@types/react": "^19.1.6", - "@types/react-dom": "^19.1.6", - "typescript": "^5.8.3" + "@types/node": "^24.2.1", + "@types/react": "^19.1.9", + "@types/react-dom": "^19.1.7", + "typescript": "^5.9.2" } } diff --git a/benchmarks/with-didomi/package.json b/benchmarks/with-didomi/package.json index 090d982..3e0b7b0 100644 --- a/benchmarks/with-didomi/package.json +++ b/benchmarks/with-didomi/package.json @@ -11,16 +11,16 @@ }, "dependencies": { "@didomi/react": "^1.8.8", - "next": "15.3.3", - "react": "^19.0.0", - "react-dom": "^19.0.0" + "next": "15.4.6", + "react": "^19.1.1", + "react-dom": "^19.1.1" }, "devDependencies": { "@cookiebench/benchmark-schema": "workspace:*", "@cookiebench/ts-config": "workspace:*", - "@types/node": "^22.15.30", - "@types/react": "^19.1.6", - "@types/react-dom": "^19.1.6", - "typescript": "^5.8.3" + "@types/node": "^24.2.1", + "@types/react": "^19.1.9", + "@types/react-dom": "^19.1.7", + "typescript": "^5.9.2" } } diff --git a/benchmarks/with-enzuzo/package.json b/benchmarks/with-enzuzo/package.json index 53a87fe..e2ba0e6 100644 --- a/benchmarks/with-enzuzo/package.json +++ b/benchmarks/with-enzuzo/package.json @@ -10,17 +10,17 @@ "benchmark": "pnpm exec benchmark-cli benchmark" }, "dependencies": { - "next": "15.3.3", - "react": "^19.0.0", - "react-dom": "^19.0.0" + "next": "15.4.6", + "react": "^19.1.1", + "react-dom": "^19.1.1" }, "devDependencies": { - "@cookiebench/cli": "workspace:*", "@cookiebench/benchmark-schema": "workspace:*", + "@cookiebench/cli": "workspace:*", "@cookiebench/ts-config": "workspace:*", - "@types/node": "^22.15.30", - "@types/react": "^19.1.6", - "@types/react-dom": "^19.1.6", - "typescript": "^5.8.3" + "@types/node": "^24.2.1", + "@types/react": "^19.1.9", + "@types/react-dom": "^19.1.7", + "typescript": "^5.9.2" } } diff --git a/benchmarks/with-iubenda/package.json b/benchmarks/with-iubenda/package.json index 42406c0..5e13ebc 100644 --- a/benchmarks/with-iubenda/package.json +++ b/benchmarks/with-iubenda/package.json @@ -10,17 +10,17 @@ "benchmark": "pnpm exec benchmark-cli benchmark" }, "dependencies": { - "next": "15.3.3", - "react": "^19.0.0", - "react-dom": "^19.0.0" + "next": "15.4.6", + "react": "^19.1.1", + "react-dom": "^19.1.1" }, "devDependencies": { - "@cookiebench/cli": "workspace:*", "@cookiebench/benchmark-schema": "workspace:*", + "@cookiebench/cli": "workspace:*", "@cookiebench/ts-config": "workspace:*", - "@types/node": "^22.15.30", - "@types/react": "^19.1.6", - "@types/react-dom": "^19.1.6", - "typescript": "^5.8.3" + "@types/node": "^24.2.1", + "@types/react": "^19.1.9", + "@types/react-dom": "^19.1.7", + "typescript": "^5.9.2" } } diff --git a/benchmarks/with-ketch/package.json b/benchmarks/with-ketch/package.json index 207f482..969afc2 100644 --- a/benchmarks/with-ketch/package.json +++ b/benchmarks/with-ketch/package.json @@ -10,16 +10,16 @@ "benchmark": "pnpm exec benchmark-cli benchmark" }, "dependencies": { - "next": "15.3.3", - "react": "^19.0.0", - "react-dom": "^19.0.0" + "next": "15.4.6", + "react": "^19.1.1", + "react-dom": "^19.1.1" }, "devDependencies": { "@cookiebench/benchmark-schema": "workspace:*", "@cookiebench/ts-config": "workspace:*", - "@types/node": "^22.15.30", - "@types/react": "^19.1.6", - "@types/react-dom": "^19.1.6", - "typescript": "^5.8.3" + "@types/node": "^24.2.1", + "@types/react": "^19.1.9", + "@types/react-dom": "^19.1.7", + "typescript": "^5.9.2" } } diff --git a/benchmarks/with-onetrust/package.json b/benchmarks/with-onetrust/package.json index 87ff08f..fa87f90 100644 --- a/benchmarks/with-onetrust/package.json +++ b/benchmarks/with-onetrust/package.json @@ -10,17 +10,17 @@ "benchmark": "pnpm exec benchmark-cli benchmark" }, "dependencies": { - "next": "15.3.3", - "react": "^19.0.0", - "react-dom": "^19.0.0" + "next": "15.4.6", + "react": "^19.1.1", + "react-dom": "^19.1.1" }, "devDependencies": { "@cookiebench/benchmark-schema": "workspace:*", "@cookiebench/cli": "workspace:*", "@cookiebench/ts-config": "workspace:*", - "@types/node": "^22.15.30", - "@types/react": "^19.1.6", - "@types/react-dom": "^19.1.6", - "typescript": "^5.8.3" + "@types/node": "^24.2.1", + "@types/react": "^19.1.9", + "@types/react-dom": "^19.1.7", + "typescript": "^5.9.2" } } diff --git a/benchmarks/with-osano/package.json b/benchmarks/with-osano/package.json index 86bd27b..ad0911b 100644 --- a/benchmarks/with-osano/package.json +++ b/benchmarks/with-osano/package.json @@ -10,17 +10,17 @@ "benchmark": "pnpm exec benchmark-cli benchmark" }, "dependencies": { - "next": "15.3.3", - "react": "^19.0.0", - "react-dom": "^19.0.0" + "next": "15.4.6", + "react": "^19.1.1", + "react-dom": "^19.1.1" }, "devDependencies": { "@cookiebench/benchmark-schema": "workspace:*", "@cookiebench/cli": "workspace:*", "@cookiebench/ts-config": "workspace:*", - "@types/node": "^22.15.30", - "@types/react": "^19.1.6", - "@types/react-dom": "^19.1.6", - "typescript": "^5.8.3" + "@types/node": "^24.2.1", + "@types/react": "^19.1.9", + "@types/react-dom": "^19.1.7", + "typescript": "^5.9.2" } } diff --git a/benchmarks/with-usercentrics/package.json b/benchmarks/with-usercentrics/package.json index b0b5e26..b576542 100644 --- a/benchmarks/with-usercentrics/package.json +++ b/benchmarks/with-usercentrics/package.json @@ -10,17 +10,17 @@ "benchmark": "pnpm exec benchmark-cli benchmark" }, "dependencies": { - "next": "15.3.3", - "react": "^19.0.0", - "react-dom": "^19.0.0" + "next": "15.4.6", + "react": "^19.1.1", + "react-dom": "^19.1.1" }, "devDependencies": { - "@cookiebench/cli": "workspace:*", "@cookiebench/benchmark-schema": "workspace:*", + "@cookiebench/cli": "workspace:*", "@cookiebench/ts-config": "workspace:*", - "@types/node": "^22.15.30", - "@types/react": "^19.1.6", - "@types/react-dom": "^19.1.6", - "typescript": "^5.8.3" + "@types/node": "^24.2.1", + "@types/react": "^19.1.9", + "@types/react-dom": "^19.1.7", + "typescript": "^5.9.2" } } diff --git a/package.json b/package.json index 5f84d1e..dd56484 100644 --- a/package.json +++ b/package.json @@ -13,15 +13,15 @@ }, "devDependencies": { "@biomejs/biome": "1.9.4", - "@c15t/translations": "^1.0.0", + "@c15t/translations": "^1.5.0", "@cookiebench/cli": "workspace:*", - "@playwright/test": "^1.42.1", + "@playwright/test": "^1.54.2", "cli-table3": "^0.6.5", - "drizzle-kit": "^0.31.1", + "drizzle-kit": "^0.31.4", "p-limit": "^6.2.0", "pretty-ms": "^9.2.0", - "turbo": "^2.5.3", - "typescript": "5.8.3" + "turbo": "^2.5.5", + "typescript": "5.9.2" }, "packageManager": "pnpm@9.0.0", "engines": { diff --git a/packages/cli/package.json b/packages/cli/package.json index 900fef2..aef8e04 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -19,17 +19,17 @@ }, "dependencies": { "@clack/prompts": "^1.0.0-alpha.0", - "@playwright/test": "^1.42.1", + "@playwright/test": "^1.54.2", "cli-table3": "^0.6.3", - "dotenv": "^16.5.0", + "dotenv": "^17.2.1", "package-manager-detector": "^1.3.0", "picocolors": "^1.0.0" }, "devDependencies": { - "@rsdoctor/rspack-plugin": "^1.1.3", - "@rslib/core": "^0.9.1", - "@types/node": "^22.15.30", + "@rsdoctor/rspack-plugin": "^1.2.1", + "@rslib/core": "^0.11.2", + "@types/node": "^24.2.1", "playwright-performance-metrics": "^1.2.2", - "typescript": "^5.8.3" + "typescript": "^5.9.2" } } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index afcb82d..c3b8207 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,20 +12,20 @@ importers: specifier: 1.9.4 version: 1.9.4 '@c15t/translations': - specifier: ^1.0.0 - version: 1.0.0 + specifier: ^1.5.0 + version: 1.5.0 '@cookiebench/cli': specifier: workspace:* version: link:packages/cli '@playwright/test': - specifier: ^1.42.1 - version: 1.52.0 + specifier: ^1.54.2 + version: 1.54.2 cli-table3: specifier: ^0.6.5 version: 0.6.5 drizzle-kit: - specifier: ^0.31.1 - version: 0.31.1 + specifier: ^0.31.4 + version: 0.31.4 p-limit: specifier: ^6.2.0 version: 6.2.0 @@ -33,23 +33,23 @@ importers: specifier: ^9.2.0 version: 9.2.0 turbo: - specifier: ^2.5.3 - version: 2.5.3 + specifier: ^2.5.5 + version: 2.5.5 typescript: - specifier: 5.8.3 - version: 5.8.3 + specifier: 5.9.2 + version: 5.9.2 benchmarks/baseline: dependencies: next: - specifier: 15.3.3 - version: 15.3.3(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: 15.4.6 + version: 15.4.6(@opentelemetry/api@1.9.0)(@playwright/test@1.54.2)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: - specifier: ^19.0.0 - version: 19.1.0 + specifier: ^19.1.1 + version: 19.1.1 react-dom: - specifier: ^19.0.0 - version: 19.1.0(react@19.1.0) + specifier: ^19.1.1 + version: 19.1.1(react@19.1.1) devDependencies: '@cookiebench/benchmark-schema': specifier: workspace:* @@ -61,32 +61,32 @@ importers: specifier: workspace:* version: link:../../packages/typescript-config '@types/node': - specifier: ^22.15.30 - version: 22.15.30 + specifier: ^24.2.1 + version: 24.2.1 '@types/react': - specifier: ^19.1.6 - version: 19.1.6 + specifier: ^19.1.9 + version: 19.1.9 '@types/react-dom': - specifier: ^19.1.6 - version: 19.1.6(@types/react@19.1.6) + specifier: ^19.1.7 + version: 19.1.7(@types/react@19.1.9) typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 benchmarks/with-c15t-nextjs: dependencies: '@c15t/nextjs': - specifier: 1.2.2-canary-20250603153501 - version: 1.2.2-canary-20250603153501(@libsql/client@0.15.8)(@playwright/test@1.52.0)(@types/better-sqlite3@7.6.13)(@types/react-dom@19.1.6(@types/react@19.1.6))(@types/react@19.1.6)(better-sqlite3@11.10.0)(next@15.3.3(@opentelemetry/api@1.8.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(use-sync-external-store@1.5.0(react@19.1.0))(ws@8.18.2) + specifier: 1.5.0 + version: 1.5.0(@libsql/client@0.15.10)(@playwright/test@1.54.2)(@types/better-sqlite3@7.6.13)(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(better-sqlite3@12.2.0)(next@15.4.6(@opentelemetry/api@1.8.0)(@playwright/test@1.54.2)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(use-sync-external-store@1.5.0(react@19.1.1))(ws@8.18.3) next: - specifier: 15.3.3 - version: 15.3.3(@opentelemetry/api@1.8.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: 15.4.6 + version: 15.4.6(@opentelemetry/api@1.8.0)(@playwright/test@1.54.2)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: - specifier: ^19.0.0 - version: 19.1.0 + specifier: ^19.1.1 + version: 19.1.1 react-dom: - specifier: ^19.0.0 - version: 19.1.0(react@19.1.0) + specifier: ^19.1.1 + version: 19.1.1(react@19.1.1) devDependencies: '@cookiebench/benchmark-schema': specifier: workspace:* @@ -98,35 +98,35 @@ importers: specifier: workspace:* version: link:../../packages/typescript-config '@types/node': - specifier: ^22.15.30 - version: 22.15.30 + specifier: ^24.2.1 + version: 24.2.1 '@types/react': - specifier: ^19.1.6 - version: 19.1.6 + specifier: ^19.1.9 + version: 19.1.9 '@types/react-dom': - specifier: ^19.1.6 - version: 19.1.6(@types/react@19.1.6) + specifier: ^19.1.7 + version: 19.1.7(@types/react@19.1.9) typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 benchmarks/with-c15t-react: dependencies: '@c15t/react': - specifier: 1.2.2-canary-20250603153501 - version: 1.2.2-canary-20250603153501(@libsql/client@0.15.8)(@playwright/test@1.52.0)(@types/better-sqlite3@7.6.13)(@types/react-dom@19.1.6(@types/react@19.1.6))(@types/react@19.1.6)(better-sqlite3@11.10.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(use-sync-external-store@1.5.0(react@19.1.0))(ws@8.18.2) + specifier: 1.5.0 + version: 1.5.0(@libsql/client@0.15.10)(@playwright/test@1.54.2)(@types/better-sqlite3@7.6.13)(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(better-sqlite3@12.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(use-sync-external-store@1.5.0(react@19.1.1))(ws@8.18.3) '@c15t/translations': - specifier: ^1.0.0 - version: 1.0.0 + specifier: ^1.5.0 + version: 1.5.0 next: - specifier: 15.3.3 - version: 15.3.3(@opentelemetry/api@1.8.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: 15.4.6 + version: 15.4.6(@opentelemetry/api@1.8.0)(@playwright/test@1.54.2)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: - specifier: ^19.0.0 - version: 19.1.0 + specifier: ^19.1.1 + version: 19.1.1 react-dom: - specifier: ^19.0.0 - version: 19.1.0(react@19.1.0) + specifier: ^19.1.1 + version: 19.1.1(react@19.1.1) devDependencies: '@cookiebench/benchmark-schema': specifier: workspace:* @@ -138,29 +138,29 @@ importers: specifier: workspace:* version: link:../../packages/typescript-config '@types/node': - specifier: ^22.15.30 - version: 22.15.30 + specifier: ^24.2.1 + version: 24.2.1 '@types/react': - specifier: ^19.1.6 - version: 19.1.6 + specifier: ^19.1.9 + version: 19.1.9 '@types/react-dom': - specifier: ^19.1.6 - version: 19.1.6(@types/react@19.1.6) + specifier: ^19.1.7 + version: 19.1.7(@types/react@19.1.9) typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 benchmarks/with-cookie-control: dependencies: next: - specifier: 15.3.3 - version: 15.3.3(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: 15.4.6 + version: 15.4.6(@opentelemetry/api@1.9.0)(@playwright/test@1.54.2)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: - specifier: ^19.0.0 - version: 19.1.0 + specifier: ^19.1.1 + version: 19.1.1 react-dom: - specifier: ^19.0.0 - version: 19.1.0(react@19.1.0) + specifier: ^19.1.1 + version: 19.1.1(react@19.1.1) devDependencies: '@cookiebench/benchmark-schema': specifier: workspace:* @@ -172,29 +172,29 @@ importers: specifier: workspace:* version: link:../../packages/typescript-config '@types/node': - specifier: ^22.15.30 - version: 22.15.30 + specifier: ^24.2.1 + version: 24.2.1 '@types/react': - specifier: ^19.1.6 - version: 19.1.6 + specifier: ^19.1.9 + version: 19.1.9 '@types/react-dom': - specifier: ^19.1.6 - version: 19.1.6(@types/react@19.1.6) + specifier: ^19.1.7 + version: 19.1.7(@types/react@19.1.9) typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 benchmarks/with-cookie-yes: dependencies: next: - specifier: 15.3.3 - version: 15.3.3(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: 15.4.6 + version: 15.4.6(@opentelemetry/api@1.9.0)(@playwright/test@1.54.2)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: - specifier: ^19.0.0 - version: 19.1.0 + specifier: ^19.1.1 + version: 19.1.1 react-dom: - specifier: ^19.0.0 - version: 19.1.0(react@19.1.0) + specifier: ^19.1.1 + version: 19.1.1(react@19.1.1) devDependencies: '@cookiebench/benchmark-schema': specifier: workspace:* @@ -206,32 +206,32 @@ importers: specifier: workspace:* version: link:../../packages/typescript-config '@types/node': - specifier: ^22.15.30 - version: 22.15.30 + specifier: ^24.2.1 + version: 24.2.1 '@types/react': - specifier: ^19.1.6 - version: 19.1.6 + specifier: ^19.1.9 + version: 19.1.9 '@types/react-dom': - specifier: ^19.1.6 - version: 19.1.6(@types/react@19.1.6) + specifier: ^19.1.7 + version: 19.1.7(@types/react@19.1.9) typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 benchmarks/with-didomi: dependencies: '@didomi/react': specifier: ^1.8.8 - version: 1.8.8(react@19.1.0) + version: 1.8.8(react@19.1.1) next: - specifier: 15.3.3 - version: 15.3.3(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: 15.4.6 + version: 15.4.6(@opentelemetry/api@1.9.0)(@playwright/test@1.54.2)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: - specifier: ^19.0.0 - version: 19.1.0 + specifier: ^19.1.1 + version: 19.1.1 react-dom: - specifier: ^19.0.0 - version: 19.1.0(react@19.1.0) + specifier: ^19.1.1 + version: 19.1.1(react@19.1.1) devDependencies: '@cookiebench/benchmark-schema': specifier: workspace:* @@ -240,29 +240,29 @@ importers: specifier: workspace:* version: link:../../packages/typescript-config '@types/node': - specifier: ^22.15.30 - version: 22.15.30 + specifier: ^24.2.1 + version: 24.2.1 '@types/react': - specifier: ^19.1.6 - version: 19.1.6 + specifier: ^19.1.9 + version: 19.1.9 '@types/react-dom': - specifier: ^19.1.6 - version: 19.1.6(@types/react@19.1.6) + specifier: ^19.1.7 + version: 19.1.7(@types/react@19.1.9) typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 benchmarks/with-enzuzo: dependencies: next: - specifier: 15.3.3 - version: 15.3.3(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: 15.4.6 + version: 15.4.6(@opentelemetry/api@1.9.0)(@playwright/test@1.54.2)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: - specifier: ^19.0.0 - version: 19.1.0 + specifier: ^19.1.1 + version: 19.1.1 react-dom: - specifier: ^19.0.0 - version: 19.1.0(react@19.1.0) + specifier: ^19.1.1 + version: 19.1.1(react@19.1.1) devDependencies: '@cookiebench/benchmark-schema': specifier: workspace:* @@ -274,29 +274,29 @@ importers: specifier: workspace:* version: link:../../packages/typescript-config '@types/node': - specifier: ^22.15.30 - version: 22.15.30 + specifier: ^24.2.1 + version: 24.2.1 '@types/react': - specifier: ^19.1.6 - version: 19.1.6 + specifier: ^19.1.9 + version: 19.1.9 '@types/react-dom': - specifier: ^19.1.6 - version: 19.1.6(@types/react@19.1.6) + specifier: ^19.1.7 + version: 19.1.7(@types/react@19.1.9) typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 benchmarks/with-iubenda: dependencies: next: - specifier: 15.3.3 - version: 15.3.3(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: 15.4.6 + version: 15.4.6(@opentelemetry/api@1.9.0)(@playwright/test@1.54.2)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: - specifier: ^19.0.0 - version: 19.1.0 + specifier: ^19.1.1 + version: 19.1.1 react-dom: - specifier: ^19.0.0 - version: 19.1.0(react@19.1.0) + specifier: ^19.1.1 + version: 19.1.1(react@19.1.1) devDependencies: '@cookiebench/benchmark-schema': specifier: workspace:* @@ -308,29 +308,29 @@ importers: specifier: workspace:* version: link:../../packages/typescript-config '@types/node': - specifier: ^22.15.30 - version: 22.15.30 + specifier: ^24.2.1 + version: 24.2.1 '@types/react': - specifier: ^19.1.6 - version: 19.1.6 + specifier: ^19.1.9 + version: 19.1.9 '@types/react-dom': - specifier: ^19.1.6 - version: 19.1.6(@types/react@19.1.6) + specifier: ^19.1.7 + version: 19.1.7(@types/react@19.1.9) typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 benchmarks/with-ketch: dependencies: next: - specifier: 15.3.3 - version: 15.3.3(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: 15.4.6 + version: 15.4.6(@opentelemetry/api@1.9.0)(@playwright/test@1.54.2)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: - specifier: ^19.0.0 - version: 19.1.0 + specifier: ^19.1.1 + version: 19.1.1 react-dom: - specifier: ^19.0.0 - version: 19.1.0(react@19.1.0) + specifier: ^19.1.1 + version: 19.1.1(react@19.1.1) devDependencies: '@cookiebench/benchmark-schema': specifier: workspace:* @@ -339,29 +339,29 @@ importers: specifier: workspace:* version: link:../../packages/typescript-config '@types/node': - specifier: ^22.15.30 - version: 22.15.30 + specifier: ^24.2.1 + version: 24.2.1 '@types/react': - specifier: ^19.1.6 - version: 19.1.6 + specifier: ^19.1.9 + version: 19.1.9 '@types/react-dom': - specifier: ^19.1.6 - version: 19.1.6(@types/react@19.1.6) + specifier: ^19.1.7 + version: 19.1.7(@types/react@19.1.9) typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 benchmarks/with-onetrust: dependencies: next: - specifier: 15.3.3 - version: 15.3.3(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: 15.4.6 + version: 15.4.6(@opentelemetry/api@1.9.0)(@playwright/test@1.54.2)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: - specifier: ^19.0.0 - version: 19.1.0 + specifier: ^19.1.1 + version: 19.1.1 react-dom: - specifier: ^19.0.0 - version: 19.1.0(react@19.1.0) + specifier: ^19.1.1 + version: 19.1.1(react@19.1.1) devDependencies: '@cookiebench/benchmark-schema': specifier: workspace:* @@ -373,29 +373,29 @@ importers: specifier: workspace:* version: link:../../packages/typescript-config '@types/node': - specifier: ^22.15.30 - version: 22.15.30 + specifier: ^24.2.1 + version: 24.2.1 '@types/react': - specifier: ^19.1.6 - version: 19.1.6 + specifier: ^19.1.9 + version: 19.1.9 '@types/react-dom': - specifier: ^19.1.6 - version: 19.1.6(@types/react@19.1.6) + specifier: ^19.1.7 + version: 19.1.7(@types/react@19.1.9) typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 benchmarks/with-osano: dependencies: next: - specifier: 15.3.3 - version: 15.3.3(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: 15.4.6 + version: 15.4.6(@opentelemetry/api@1.9.0)(@playwright/test@1.54.2)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: - specifier: ^19.0.0 - version: 19.1.0 + specifier: ^19.1.1 + version: 19.1.1 react-dom: - specifier: ^19.0.0 - version: 19.1.0(react@19.1.0) + specifier: ^19.1.1 + version: 19.1.1(react@19.1.1) devDependencies: '@cookiebench/benchmark-schema': specifier: workspace:* @@ -407,29 +407,29 @@ importers: specifier: workspace:* version: link:../../packages/typescript-config '@types/node': - specifier: ^22.15.30 - version: 22.15.30 + specifier: ^24.2.1 + version: 24.2.1 '@types/react': - specifier: ^19.1.6 - version: 19.1.6 + specifier: ^19.1.9 + version: 19.1.9 '@types/react-dom': - specifier: ^19.1.6 - version: 19.1.6(@types/react@19.1.6) + specifier: ^19.1.7 + version: 19.1.7(@types/react@19.1.9) typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 benchmarks/with-usercentrics: dependencies: next: - specifier: 15.3.3 - version: 15.3.3(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: 15.4.6 + version: 15.4.6(@opentelemetry/api@1.9.0)(@playwright/test@1.54.2)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: - specifier: ^19.0.0 - version: 19.1.0 + specifier: ^19.1.1 + version: 19.1.1 react-dom: - specifier: ^19.0.0 - version: 19.1.0(react@19.1.0) + specifier: ^19.1.1 + version: 19.1.1(react@19.1.1) devDependencies: '@cookiebench/benchmark-schema': specifier: workspace:* @@ -441,17 +441,17 @@ importers: specifier: workspace:* version: link:../../packages/typescript-config '@types/node': - specifier: ^22.15.30 - version: 22.15.30 + specifier: ^24.2.1 + version: 24.2.1 '@types/react': - specifier: ^19.1.6 - version: 19.1.6 + specifier: ^19.1.9 + version: 19.1.9 '@types/react-dom': - specifier: ^19.1.6 - version: 19.1.6(@types/react@19.1.6) + specifier: ^19.1.7 + version: 19.1.7(@types/react@19.1.9) typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 packages/benchmark-schema: {} @@ -461,14 +461,14 @@ importers: specifier: ^1.0.0-alpha.0 version: 1.0.0-alpha.0 '@playwright/test': - specifier: ^1.42.1 - version: 1.52.0 + specifier: ^1.54.2 + version: 1.54.2 cli-table3: specifier: ^0.6.3 version: 0.6.5 dotenv: - specifier: ^16.5.0 - version: 16.5.0 + specifier: ^17.2.1 + version: 17.2.1 package-manager-detector: specifier: ^1.3.0 version: 1.3.0 @@ -477,20 +477,20 @@ importers: version: 1.1.1 devDependencies: '@rsdoctor/rspack-plugin': - specifier: ^1.1.3 - version: 1.1.3(@rsbuild/core@1.3.22)(@rspack/core@1.3.15(@swc/helpers@0.5.17)) + specifier: ^1.2.1 + version: 1.2.1(@rsbuild/core@1.4.15)(@rspack/core@1.4.11(@swc/helpers@0.5.17)) '@rslib/core': - specifier: ^0.9.1 - version: 0.9.1(typescript@5.8.3) + specifier: ^0.11.2 + version: 0.11.2(typescript@5.9.2) '@types/node': - specifier: ^22.15.30 - version: 22.15.30 + specifier: ^24.2.1 + version: 24.2.1 playwright-performance-metrics: specifier: ^1.2.2 - version: 1.2.2(@playwright/test@1.52.0) + version: 1.2.2(@playwright/test@1.54.2) typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 packages/typescript-config: {} @@ -615,30 +615,24 @@ packages: cpu: [x64] os: [win32] - '@c15t/backend@1.2.2-canary-20250602152741': - resolution: {integrity: sha512-LlL5GkopE4pPQmL2LZeYZttrPTrApKamcJt3H9gLJyRf54McG4slgNb9UwLi1M4NPneZmdhpTt5YiWfkqYogHA==} + '@c15t/backend@1.5.0': + resolution: {integrity: sha512-npKw/40EPKe0EkL3wfvJbHO1BM2xWDL9KTMdKL64w3FKA2raqSsPJM+2fRtS+goKrfpyUVffTNTD/lNErS7Wyw==} - '@c15t/nextjs@1.2.2-canary-20250603153501': - resolution: {integrity: sha512-2KjPTqyO8xzfoKQ4fax/HsoYGn9jVvBtS3dTWLJcHOYPuyCfY1e5KgqM7WvQfZqS8YhYGpIeC5THRpC2nzPXww==} + '@c15t/nextjs@1.5.0': + resolution: {integrity: sha512-A+zpQanwYnk6wtBAZY/uxxNiEK6xLbV6rTY6sUiX8JPo8Y1GQe75BT3pPUccwY83PaGir/vWgK0bGDzMhrEncQ==} peerDependencies: - next: ^15.0.0 || ^14.0.0 + next: ^15.0.0 || ^14.0.0 || ^13.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc - '@c15t/node-sdk@1.2.2-canary-20250602152741': - resolution: {integrity: sha512-k1OQSYWmbDFe3RaOFVzSGYzczn+NjZSFvUcn1zYSvTaWNu8lxCzi7u802GctuQpKPX5EOXY97QATnxgyBHZCCg==} - - '@c15t/react@1.2.2-canary-20250603153501': - resolution: {integrity: sha512-4N9QCTN+npq2mqPFr30z81oFSjBBxH7KOGbwfl5iD7AqOteHspIY+yx6kCnC8kJkgTXTAvt/oIi+h0Ft3j4VoQ==} + '@c15t/react@1.5.0': + resolution: {integrity: sha512-tMXV/zAILeujhEO4GFgi/gRQHphuax6LLnk3Tad3snsYY4zzMXM+ldZk1gZlXcqSIl+wunxf2T8fnDujySpCgw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc - '@c15t/translations@1.0.0': - resolution: {integrity: sha512-YmlL70VuTi2TvHPM2xw4WWV4JOY/TR6/jQNTTtN9n5al/ZUlI1WNbFZrL+sNs/isuVnpWibl5rVIOeP+HCVoWQ==} - - '@c15t/translations@1.2.2-canary-20250514203718': - resolution: {integrity: sha512-OaQMMpcNF3oa8+xhIpiM0qh/kzbXi13PZIPdEFMU5Zgmu7PuKrJrrrET69xNr5JLBAAiZmoYpLtEusDd2A6xRQ==} + '@c15t/translations@1.5.0': + resolution: {integrity: sha512-tqxdwBoXVnlGm0ShDV3Fe6AFRgRf2j9ZuMqBXjRe+i1sRy8MaZDVx0CKGk5KXo8ICDkoSzLlApEU/LZ9Ggf/yw==} '@clack/core@1.0.0-alpha.0': resolution: {integrity: sha512-Cp/bPW/pMUCkJ7Lr8VFixvFrlnJ4tQPDHqfTNQ51z50qwX1fSIAstQLfel2NquVHqbfjyrUkBsal8OJRBPJVjw==} @@ -655,10 +649,6 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@discoveryjs/json-ext@0.5.7': - resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} - engines: {node: '>=10.0.0'} - '@doubletie/logger@1.0.4': resolution: {integrity: sha512-oZXaHQbTh76kCwIVv+EzAvQObr2k0+hDziB6bDBzvB/B7WCrNMBpqn8JWDMtzMJQhr4iGdmPT2FTczbcnR3zvg==} engines: {node: '>=16.2.0'} @@ -666,8 +656,14 @@ packages: '@drizzle-team/brocli@0.10.2': resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==} - '@emnapi/runtime@1.4.3': - resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} + '@emnapi/core@1.4.5': + resolution: {integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==} + + '@emnapi/runtime@1.4.5': + resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==} + + '@emnapi/wasi-threads@1.0.4': + resolution: {integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==} '@esbuild-kit/core-utils@3.3.2': resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} @@ -677,8 +673,8 @@ packages: resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} deprecated: 'Merged into tsx: https://tsx.is' - '@esbuild/aix-ppc64@0.25.4': - resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} + '@esbuild/aix-ppc64@0.25.8': + resolution: {integrity: sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -689,8 +685,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.4': - resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} + '@esbuild/android-arm64@0.25.8': + resolution: {integrity: sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -701,8 +697,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.4': - resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} + '@esbuild/android-arm@0.25.8': + resolution: {integrity: sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -713,8 +709,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.4': - resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} + '@esbuild/android-x64@0.25.8': + resolution: {integrity: sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -725,8 +721,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.4': - resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} + '@esbuild/darwin-arm64@0.25.8': + resolution: {integrity: sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -737,8 +733,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.4': - resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} + '@esbuild/darwin-x64@0.25.8': + resolution: {integrity: sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -749,8 +745,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.4': - resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} + '@esbuild/freebsd-arm64@0.25.8': + resolution: {integrity: sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -761,8 +757,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.4': - resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} + '@esbuild/freebsd-x64@0.25.8': + resolution: {integrity: sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -773,8 +769,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.4': - resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} + '@esbuild/linux-arm64@0.25.8': + resolution: {integrity: sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -785,8 +781,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.4': - resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} + '@esbuild/linux-arm@0.25.8': + resolution: {integrity: sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -797,8 +793,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.4': - resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} + '@esbuild/linux-ia32@0.25.8': + resolution: {integrity: sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -809,8 +805,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.4': - resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} + '@esbuild/linux-loong64@0.25.8': + resolution: {integrity: sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -821,8 +817,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.4': - resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} + '@esbuild/linux-mips64el@0.25.8': + resolution: {integrity: sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -833,8 +829,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.4': - resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} + '@esbuild/linux-ppc64@0.25.8': + resolution: {integrity: sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -845,8 +841,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.4': - resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} + '@esbuild/linux-riscv64@0.25.8': + resolution: {integrity: sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -857,8 +853,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.4': - resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} + '@esbuild/linux-s390x@0.25.8': + resolution: {integrity: sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -869,14 +865,14 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.4': - resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} + '@esbuild/linux-x64@0.25.8': + resolution: {integrity: sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.4': - resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} + '@esbuild/netbsd-arm64@0.25.8': + resolution: {integrity: sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -887,14 +883,14 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.4': - resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} + '@esbuild/netbsd-x64@0.25.8': + resolution: {integrity: sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.4': - resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} + '@esbuild/openbsd-arm64@0.25.8': + resolution: {integrity: sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -905,20 +901,26 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.4': - resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} + '@esbuild/openbsd-x64@0.25.8': + resolution: {integrity: sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/openharmony-arm64@0.25.8': + resolution: {integrity: sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.18.20': resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.4': - resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} + '@esbuild/sunos-x64@0.25.8': + resolution: {integrity: sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -929,8 +931,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.4': - resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} + '@esbuild/win32-arm64@0.25.8': + resolution: {integrity: sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -941,8 +943,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.4': - resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} + '@esbuild/win32-ia32@0.25.8': + resolution: {integrity: sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -953,14 +955,14 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.4': - resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} + '@esbuild/win32-x64@0.25.8': + resolution: {integrity: sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@grpc/grpc-js@1.13.3': - resolution: {integrity: sha512-FTXHdOoPbZrBjlVLHuKbDZnsTxXv2BlHF57xw6LuThXacXvtkahEPED0CKMk6obZDf65Hv4k3z62eyPNpvinIg==} + '@grpc/grpc-js@1.13.4': + resolution: {integrity: sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg==} engines: {node: '>=12.10.0'} '@grpc/proto-loader@0.7.15': @@ -974,8 +976,8 @@ packages: cpu: [arm64] os: [darwin] - '@img/sharp-darwin-arm64@0.34.2': - resolution: {integrity: sha512-OfXHZPppddivUJnqyKoi5YVeHRkkNE2zUFT2gbpKxp/JZCFYEYubnMg+gOp6lWfasPrTS+KPosKqdI+ELYVDtg==} + '@img/sharp-darwin-arm64@0.34.3': + resolution: {integrity: sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] @@ -986,8 +988,8 @@ packages: cpu: [x64] os: [darwin] - '@img/sharp-darwin-x64@0.34.2': - resolution: {integrity: sha512-dYvWqmjU9VxqXmjEtjmvHnGqF8GrVjM2Epj9rJ6BUIXvk8slvNDJbhGFvIoXzkDhrJC2jUxNLz/GUjjvSzfw+g==} + '@img/sharp-darwin-x64@0.34.3': + resolution: {integrity: sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] @@ -997,8 +999,8 @@ packages: cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.1.0': - resolution: {integrity: sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==} + '@img/sharp-libvips-darwin-arm64@1.2.0': + resolution: {integrity: sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ==} cpu: [arm64] os: [darwin] @@ -1007,8 +1009,8 @@ packages: cpu: [x64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.1.0': - resolution: {integrity: sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==} + '@img/sharp-libvips-darwin-x64@1.2.0': + resolution: {integrity: sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg==} cpu: [x64] os: [darwin] @@ -1017,8 +1019,8 @@ packages: cpu: [arm64] os: [linux] - '@img/sharp-libvips-linux-arm64@1.1.0': - resolution: {integrity: sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==} + '@img/sharp-libvips-linux-arm64@1.2.0': + resolution: {integrity: sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==} cpu: [arm64] os: [linux] @@ -1027,13 +1029,13 @@ packages: cpu: [arm] os: [linux] - '@img/sharp-libvips-linux-arm@1.1.0': - resolution: {integrity: sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==} + '@img/sharp-libvips-linux-arm@1.2.0': + resolution: {integrity: sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==} cpu: [arm] os: [linux] - '@img/sharp-libvips-linux-ppc64@1.1.0': - resolution: {integrity: sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==} + '@img/sharp-libvips-linux-ppc64@1.2.0': + resolution: {integrity: sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ==} cpu: [ppc64] os: [linux] @@ -1042,8 +1044,8 @@ packages: cpu: [s390x] os: [linux] - '@img/sharp-libvips-linux-s390x@1.1.0': - resolution: {integrity: sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==} + '@img/sharp-libvips-linux-s390x@1.2.0': + resolution: {integrity: sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw==} cpu: [s390x] os: [linux] @@ -1052,8 +1054,8 @@ packages: cpu: [x64] os: [linux] - '@img/sharp-libvips-linux-x64@1.1.0': - resolution: {integrity: sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==} + '@img/sharp-libvips-linux-x64@1.2.0': + resolution: {integrity: sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg==} cpu: [x64] os: [linux] @@ -1062,8 +1064,8 @@ packages: cpu: [arm64] os: [linux] - '@img/sharp-libvips-linuxmusl-arm64@1.1.0': - resolution: {integrity: sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==} + '@img/sharp-libvips-linuxmusl-arm64@1.2.0': + resolution: {integrity: sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q==} cpu: [arm64] os: [linux] @@ -1072,8 +1074,8 @@ packages: cpu: [x64] os: [linux] - '@img/sharp-libvips-linuxmusl-x64@1.1.0': - resolution: {integrity: sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==} + '@img/sharp-libvips-linuxmusl-x64@1.2.0': + resolution: {integrity: sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q==} cpu: [x64] os: [linux] @@ -1083,8 +1085,8 @@ packages: cpu: [arm64] os: [linux] - '@img/sharp-linux-arm64@0.34.2': - resolution: {integrity: sha512-D8n8wgWmPDakc83LORcfJepdOSN6MvWNzzz2ux0MnIbOqdieRZwVYY32zxVx+IFUT8er5KPcyU3XXsn+GzG/0Q==} + '@img/sharp-linux-arm64@0.34.3': + resolution: {integrity: sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] @@ -1095,20 +1097,26 @@ packages: cpu: [arm] os: [linux] - '@img/sharp-linux-arm@0.34.2': - resolution: {integrity: sha512-0DZzkvuEOqQUP9mo2kjjKNok5AmnOr1jB2XYjkaoNRwpAYMDzRmAqUIa1nRi58S2WswqSfPOWLNOr0FDT3H5RQ==} + '@img/sharp-linux-arm@0.34.3': + resolution: {integrity: sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] + '@img/sharp-linux-ppc64@0.34.3': + resolution: {integrity: sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ppc64] + os: [linux] + '@img/sharp-linux-s390x@0.33.5': resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] - '@img/sharp-linux-s390x@0.34.2': - resolution: {integrity: sha512-EGZ1xwhBI7dNISwxjChqBGELCWMGDvmxZXKjQRuqMrakhO8QoMgqCrdjnAqJq/CScxfRn+Bb7suXBElKQpPDiw==} + '@img/sharp-linux-s390x@0.34.3': + resolution: {integrity: sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] @@ -1119,8 +1127,8 @@ packages: cpu: [x64] os: [linux] - '@img/sharp-linux-x64@0.34.2': - resolution: {integrity: sha512-sD7J+h5nFLMMmOXYH4DD9UtSNBD05tWSSdWAcEyzqW8Cn5UxXvsHAxmxSesYUsTOBmUnjtxghKDl15EvfqLFbQ==} + '@img/sharp-linux-x64@0.34.3': + resolution: {integrity: sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] @@ -1131,8 +1139,8 @@ packages: cpu: [arm64] os: [linux] - '@img/sharp-linuxmusl-arm64@0.34.2': - resolution: {integrity: sha512-NEE2vQ6wcxYav1/A22OOxoSOGiKnNmDzCYFOZ949xFmrWZOVII1Bp3NqVVpvj+3UeHMFyN5eP/V5hzViQ5CZNA==} + '@img/sharp-linuxmusl-arm64@0.34.3': + resolution: {integrity: sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] @@ -1143,8 +1151,8 @@ packages: cpu: [x64] os: [linux] - '@img/sharp-linuxmusl-x64@0.34.2': - resolution: {integrity: sha512-DOYMrDm5E6/8bm/yQLCWyuDJwUnlevR8xtF8bs+gjZ7cyUNYXiSf/E8Kp0Ss5xasIaXSHzb888V1BE4i1hFhAA==} + '@img/sharp-linuxmusl-x64@0.34.3': + resolution: {integrity: sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] @@ -1154,13 +1162,13 @@ packages: engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] - '@img/sharp-wasm32@0.34.2': - resolution: {integrity: sha512-/VI4mdlJ9zkaq53MbIG6rZY+QRN3MLbR6usYlgITEzi4Rpx5S6LFKsycOQjkOGmqTNmkIdLjEvooFKwww6OpdQ==} + '@img/sharp-wasm32@0.34.3': + resolution: {integrity: sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] - '@img/sharp-win32-arm64@0.34.2': - resolution: {integrity: sha512-cfP/r9FdS63VA5k0xiqaNaEoGxBg9k7uE+RQGzuK9fHt7jib4zAVVseR9LsE4gJcNWgT6APKMNnCcnyOtmSEUQ==} + '@img/sharp-win32-arm64@0.34.3': + resolution: {integrity: sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [win32] @@ -1171,8 +1179,8 @@ packages: cpu: [ia32] os: [win32] - '@img/sharp-win32-ia32@0.34.2': - resolution: {integrity: sha512-QLjGGvAbj0X/FXl8n1WbtQ6iVBpWU7JO94u/P2M4a8CFYsvQi4GW2mRy/JqkRx0qpBzaOdKJKw8uc930EX2AHw==} + '@img/sharp-win32-ia32@0.34.3': + resolution: {integrity: sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] @@ -1183,31 +1191,31 @@ packages: cpu: [x64] os: [win32] - '@img/sharp-win32-x64@0.34.2': - resolution: {integrity: sha512-aUdT6zEYtDKCaxkofmmJDJYGCf0+pJg3eU9/oBuqvEeoB9dKI6ZLc/1iLJCTuJQDO4ptntAlkUmHgGjyuobZbw==} + '@img/sharp-win32-x64@0.34.3': + resolution: {integrity: sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [win32] - '@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==} '@js-sdsl/ordered-map@4.4.2': resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} - '@libsql/client@0.15.8': - resolution: {integrity: sha512-TskygwF+ToZeWhPPT0WennyGrP3tmkKraaKopT2YwUjqD6DWDRm6SG5iy0VqnaO+HC9FNBCDX0oQPODU3gqqPQ==} + '@libsql/client@0.15.10': + resolution: {integrity: sha512-J9cJQwrgH92JlPBYjUGxPIH5G9z3j/V/aPnQvcmmCgjatdVb/f7bzK3yNq15Phc+gVuKMwox3toXL+58qUMylg==} - '@libsql/core@0.15.8': - resolution: {integrity: sha512-oX2fQqDbZkaBUvFMGvJq1Jh+mVzJrgNbEwK6Wzvp91z3uMe9iaIIXgO8yxB72RpUf7BqzjiKHjEiRXytfTdbUw==} + '@libsql/core@0.15.10': + resolution: {integrity: sha512-fAMD+GnGQNdZ9zxeNC8AiExpKnou/97GJWkiDDZbTRHj3c9dvF1y4jsRQ0WE72m/CqTdbMGyU98yL0SJ9hQVeg==} - '@libsql/darwin-arm64@0.5.12': - resolution: {integrity: sha512-RDA87qaCWPE+uJWY91A0Is8KU9x43xDWMH8VNlj330CLFT9rC6jDypqadg0mzu1FEL2leG6BRdX6EcfM6NM3pw==} + '@libsql/darwin-arm64@0.5.17': + resolution: {integrity: sha512-WTYG2skZsUnZmfZ2v7WFj7s3/5s2PfrYBZOWBKOnxHA8g4XCDc/4bFDaqob9Q2e88+GC7cWeJ8VNkVBFpD2Xxg==} cpu: [arm64] os: [darwin] - '@libsql/darwin-x64@0.5.12': - resolution: {integrity: sha512-6Ufip8uxQkLOFCsGd07miDt1w+Rx5VIJdDI6mSRBlVaEXWuWx1R8D7gfeCS0k73vDd+oh39pYF/R8nVFkwiOcg==} + '@libsql/darwin-x64@0.5.17': + resolution: {integrity: sha512-ab0RlTR4KYrxgjNrZhAhY/10GibKoq6G0W4oi0kdm+eYiAv/Ip8GDMpSaZdAcoKA4T+iKR/ehczKHnMEB8MFxA==} cpu: [x64] os: [darwin] @@ -1221,76 +1229,61 @@ packages: '@libsql/isomorphic-ws@0.1.5': resolution: {integrity: sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==} - '@libsql/linux-arm-gnueabihf@0.5.12': - resolution: {integrity: sha512-I+4K++7byiOjYJNRGcrCBlIXjP6MwUta2GxPGZMoH2kAv6AintO4dvritu6vDe9LyRPXTjRJl30k+ThXR0RWxQ==} + '@libsql/linux-arm-gnueabihf@0.5.17': + resolution: {integrity: sha512-PcASh4k47RqC+kMWAbLUKf1y6Do0q8vnUGi0yhKY4ghJcimMExViBimjbjYRSa+WIb/zh3QxNoXOhQAXx3tiuw==} cpu: [arm] os: [linux] - '@libsql/linux-arm-musleabihf@0.5.12': - resolution: {integrity: sha512-87C3A5ozNEdOnI5VZq9lHpPJ3Ncl3p+qB5roDluVKflx9kKH1hEc8MpwkvU3qeIWppvgHowXlO9CfS572V10OA==} + '@libsql/linux-arm-musleabihf@0.5.17': + resolution: {integrity: sha512-vxOkSLG9Wspit+SNle84nuIzMtr2G2qaxFzW7BhsZBjlZ8+kErf9RXcT2YJQdJYxmBYRbsOrc91gg0jLEQVCqg==} cpu: [arm] os: [linux] - '@libsql/linux-arm64-gnu@0.5.12': - resolution: {integrity: sha512-0jpcuD7nHGD4XVTbId44SaY/JcqURKpxkXUcW4FsQ1qmkG5PsUy5l2Ob29P8HwGRBhDBomFWA4PvwJGrP/2pMA==} + '@libsql/linux-arm64-gnu@0.5.17': + resolution: {integrity: sha512-L8jnaN01TxjBJlDuDTX2W2BKzBkAOhcnKfCOf3xzvvygblxnDOK0whkYwIXeTfwtd/rr4jN/d6dZD/bcHiDxEQ==} cpu: [arm64] os: [linux] - '@libsql/linux-arm64-musl@0.5.12': - resolution: {integrity: sha512-ic5bHp9OTCNgmvqojqkxWfuPm4Y8CKfpUe/AqmXrstzqlE9EKg1qD9KZIjso2g4pX15KPWJGPSd29OXxHkzsog==} + '@libsql/linux-arm64-musl@0.5.17': + resolution: {integrity: sha512-HfFD7TzQtmmTwyQsuiHhWZdMRtdNpKJ1p4tbMMTMRECk+971NFHrj69D64cc2ClVTAmn7fA9XibKPil7WN/Q7w==} cpu: [arm64] os: [linux] - '@libsql/linux-x64-gnu@0.5.12': - resolution: {integrity: sha512-9zDtahCw2q0WJ54c/0vq142JtzI16OB8/U0bVCrpxF9DmLFyKBrAtEvoYdvKtFmvcvNn7YA5LEytr2g2q+xl1g==} + '@libsql/linux-x64-gnu@0.5.17': + resolution: {integrity: sha512-5l3XxWqUPVFrtX0xnZaXwqsXs0BFbP4w6ahRFTPSdXU50YBfUOajFznJRB6bJTMsCvraDSD0IkHhjSNfrE1CuQ==} cpu: [x64] os: [linux] - '@libsql/linux-x64-musl@0.5.12': - resolution: {integrity: sha512-+fisSpE+2yK1N88shPtB7bEB8d+fF3CQmy1KnbJ4Oned8cw5uBfU46A1ICG+49RFaKxmoIQimHVAxfGV9NFQ3w==} + '@libsql/linux-x64-musl@0.5.17': + resolution: {integrity: sha512-FvSpWlwc+dIeYIFYlsSv+UdQ/NiZWr+SstwVji+QZ//8NnvzwWQU9cgP+Vpps6Qiq4jyYQm9chJhTYOVT9Y3BA==} cpu: [x64] os: [linux] - '@libsql/win32-x64-msvc@0.5.12': - resolution: {integrity: sha512-upNJCcgMgpAFXlL//rRVwlPgMT8uG1LoilHgCEpAp+GEjgBjoDgGW6iOkktuJC8paZh5kt9dCPh3r3jF3HWQjg==} + '@libsql/win32-x64-msvc@0.5.17': + resolution: {integrity: sha512-f5bGH8+3A5sn6Lrqg8FsQ09a1pYXPnKGXGTFiAYlfQXVst1tUTxDTugnuWcJYKXyzDe/T7ccxyIZXeSmPOhq8A==} cpu: [x64] os: [win32] - '@module-federation/error-codes@0.14.0': - resolution: {integrity: sha512-GGk+EoeSACJikZZyShnLshtq9E2eCrDWbRiB4QAFXCX4oYmGgFfzXlx59vMNwqTKPJWxkEGnPYacJMcr2YYjag==} - - '@module-federation/error-codes@0.14.3': - resolution: {integrity: sha512-sBJ3XKU9g5Up31jFeXPFsD8AgORV7TLO/cCSMuRewSfgYbG/3vSKLJmfHrO6+PvjZSb9VyV2UaF02ojktW65vw==} - - '@module-federation/runtime-core@0.14.0': - resolution: {integrity: sha512-fGE1Ro55zIFDp/CxQuRhKQ1pJvG7P0qvRm2N+4i8z++2bgDjcxnCKUqDJ8lLD+JfJQvUJf0tuSsJPgevzueD4g==} + '@module-federation/error-codes@0.17.1': + resolution: {integrity: sha512-n6Elm4qKSjwAPxLUGtwnl7qt4y1dxB8OpSgVvXBIzqI9p27a3ZXshLPLnumlpPg1Qudaj8sLnSnFtt9yGpt5yQ==} - '@module-federation/runtime-core@0.14.3': - resolution: {integrity: sha512-xMFQXflLVW/AJTWb4soAFP+LB4XuhE7ryiLIX8oTyUoBBgV6U2OPghnFljPjeXbud72O08NYlQ1qsHw1kN/V8Q==} + '@module-federation/runtime-core@0.17.1': + resolution: {integrity: sha512-LCtIFuKgWPQ3E+13OyrVpuTPOWBMI/Ggwsq1Q874YeT8Px28b8tJRCj09DjyRFyhpSPyV/uG80T6iXPAUoLIfQ==} - '@module-federation/runtime-tools@0.14.0': - resolution: {integrity: sha512-y/YN0c2DKsLETE+4EEbmYWjqF9G6ZwgZoDIPkaQ9p0pQu0V4YxzWfQagFFxR0RigYGuhJKmSU/rtNoHq+qF8jg==} + '@module-federation/runtime-tools@0.17.1': + resolution: {integrity: sha512-4kr6zTFFwGywJx6whBtxsc84V+COAuuBpEdEbPZN//YLXhNB0iz2IGsy9r9wDl+06h84bD+3dQ05l9euRLgXzQ==} - '@module-federation/runtime-tools@0.14.3': - resolution: {integrity: sha512-QBETX7iMYXdSa3JtqFlYU+YkpymxETZqyIIRiqg0gW+XGpH3jgU68yjrme2NBJp7URQi/CFZG8KWtfClk0Pjgw==} + '@module-federation/runtime@0.17.1': + resolution: {integrity: sha512-vKEN32MvUbpeuB/s6UXfkHDZ9N5jFyDDJnj83UTJ8n4N1jHIJu9VZ6Yi4/Ac8cfdvU8UIK9bIbfVXWbUYZUDsw==} - '@module-federation/runtime@0.14.0': - resolution: {integrity: sha512-kR3cyHw/Y64SEa7mh4CHXOEQYY32LKLK75kJOmBroLNLO7/W01hMNAvGBYTedS7hWpVuefPk1aFZioy3q2VLdQ==} + '@module-federation/sdk@0.17.1': + resolution: {integrity: sha512-nlUcN6UTEi+3HWF+k8wPy7gH0yUOmCT+xNatihkIVR9REAnr7BUvHFGlPJmx7WEbLPL46+zJUbtQHvLzXwFhng==} - '@module-federation/runtime@0.14.3': - resolution: {integrity: sha512-7ZHpa3teUDVhraYdxQGkfGHzPbjna4LtwbpudgzAxSLLFxLDNanaxCuSeIgSM9c+8sVUNC9kvzUgJEZB0krPJw==} + '@module-federation/webpack-bundler-runtime@0.17.1': + resolution: {integrity: sha512-Swspdgf4PzcbvS9SNKFlBzfq8h/Qxwqjq/xRSqw1pqAZWondZQzwTTqPXhgrg0bFlz7qWjBS/6a8KuH/gRvGaQ==} - '@module-federation/sdk@0.14.0': - resolution: {integrity: sha512-lg/OWRsh18hsyTCamOOhEX546vbDiA2O4OggTxxH2wTGr156N6DdELGQlYIKfRdU/0StgtQS81Goc0BgDZlx9A==} - - '@module-federation/sdk@0.14.3': - resolution: {integrity: sha512-THJZMfbXpqjQOLblCQ8jjcBFFXsGRJwUWE9l/Q4SmuCSKMgAwie7yLT0qSGrHmyBYrsUjAuy+xNB4nfKP0pnGw==} - - '@module-federation/webpack-bundler-runtime@0.14.0': - resolution: {integrity: sha512-POWS6cKBicAAQ3DNY5X7XEUSfOfUsRaBNxbuwEfSGlrkTE9UcWheO06QP2ndHi8tHQuUKcIHi2navhPkJ+k5xg==} - - '@module-federation/webpack-bundler-runtime@0.14.3': - resolution: {integrity: sha512-hIyJFu34P7bY2NeMIUHAS/mYUHEY71VTAsN0A0AqEJFSVPszheopu9VdXq0VDLrP9KQfuXT8SDxeYeJXyj0mgA==} + '@napi-rs/wasm-runtime@1.0.3': + resolution: {integrity: sha512-rZxtMsLwjdXkMUGC3WwsPwLNVqVqnTJT6MNIB6e+5fhMcSCPP0AOsNWuMQ5mdCq6HNjs/ZeWAEchpqeprqBD2Q==} '@neon-rs/load@0.0.4': resolution: {integrity: sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==} @@ -1298,8 +1291,8 @@ packages: '@next/env@15.2.2': resolution: {integrity: sha512-yWgopCfA9XDR8ZH3taB5nRKtKJ1Q5fYsTOuYkzIIoS8TJ0UAUKAGF73JnGszbjk2ufAQDj6mDdgsJAFx5CLtYQ==} - '@next/env@15.3.3': - resolution: {integrity: sha512-OdiMrzCl2Xi0VTjiQQUK0Xh7bJHnOuET2s+3V+Y40WJBAXrJeGA3f+I8MZJ/YQ3mVGi5XGR1L66oFlgqXhQ4Vw==} + '@next/env@15.4.6': + resolution: {integrity: sha512-yHDKVTcHrZy/8TWhj0B23ylKv5ypocuCwey9ZqPyv4rPdUdRzpGCkSi03t04KBPyU96kxVtUqx6O3nE1kpxASQ==} '@next/swc-darwin-arm64@15.2.2': resolution: {integrity: sha512-HNBRnz+bkZ+KfyOExpUxTMR0Ow8nkkcE6IlsdEa9W/rI7gefud19+Sn1xYKwB9pdCdxIP1lPru/ZfjfA+iT8pw==} @@ -1307,8 +1300,8 @@ packages: cpu: [arm64] os: [darwin] - '@next/swc-darwin-arm64@15.3.3': - resolution: {integrity: sha512-WRJERLuH+O3oYB4yZNVahSVFmtxRNjNF1I1c34tYMoJb0Pve+7/RaLAJJizyYiFhjYNGHRAE1Ri2Fd23zgDqhg==} + '@next/swc-darwin-arm64@15.4.6': + resolution: {integrity: sha512-667R0RTP4DwxzmrqTs4Lr5dcEda9OxuZsVFsjVtxVMVhzSpo6nLclXejJVfQo2/g7/Z9qF3ETDmN3h65mTjpTQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -1319,8 +1312,8 @@ packages: cpu: [x64] os: [darwin] - '@next/swc-darwin-x64@15.3.3': - resolution: {integrity: sha512-XHdzH/yBc55lu78k/XwtuFR/ZXUTcflpRXcsu0nKmF45U96jt1tsOZhVrn5YH+paw66zOANpOnFQ9i6/j+UYvw==} + '@next/swc-darwin-x64@15.4.6': + resolution: {integrity: sha512-KMSFoistFkaiQYVQQnaU9MPWtp/3m0kn2Xed1Ces5ll+ag1+rlac20sxG+MqhH2qYWX1O2GFOATQXEyxKiIscg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -1331,8 +1324,8 @@ packages: cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-gnu@15.3.3': - resolution: {integrity: sha512-VZ3sYL2LXB8znNGcjhocikEkag/8xiLgnvQts41tq6i+wql63SMS1Q6N8RVXHw5pEUjiof+II3HkDd7GFcgkzw==} + '@next/swc-linux-arm64-gnu@15.4.6': + resolution: {integrity: sha512-PnOx1YdO0W7m/HWFeYd2A6JtBO8O8Eb9h6nfJia2Dw1sRHoHpNf6lN1U4GKFRzRDBi9Nq2GrHk9PF3Vmwf7XVw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1343,8 +1336,8 @@ packages: cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.3.3': - resolution: {integrity: sha512-h6Y1fLU4RWAp1HPNJWDYBQ+e3G7sLckyBXhmH9ajn8l/RSMnhbuPBV/fXmy3muMcVwoJdHL+UtzRzs0nXOf9SA==} + '@next/swc-linux-arm64-musl@15.4.6': + resolution: {integrity: sha512-XBbuQddtY1p5FGPc2naMO0kqs4YYtLYK/8aPausI5lyOjr4J77KTG9mtlU4P3NwkLI1+OjsPzKVvSJdMs3cFaw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1355,8 +1348,8 @@ packages: cpu: [x64] os: [linux] - '@next/swc-linux-x64-gnu@15.3.3': - resolution: {integrity: sha512-jJ8HRiF3N8Zw6hGlytCj5BiHyG/K+fnTKVDEKvUCyiQ/0r5tgwO7OgaRiOjjRoIx2vwLR+Rz8hQoPrnmFbJdfw==} + '@next/swc-linux-x64-gnu@15.4.6': + resolution: {integrity: sha512-+WTeK7Qdw82ez3U9JgD+igBAP75gqZ1vbK6R8PlEEuY0OIe5FuYXA4aTjL811kWPf7hNeslD4hHK2WoM9W0IgA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1367,8 +1360,8 @@ packages: cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.3.3': - resolution: {integrity: sha512-HrUcTr4N+RgiiGn3jjeT6Oo208UT/7BuTr7K0mdKRBtTbT4v9zJqCDKO97DUqqoBK1qyzP1RwvrWTvU6EPh/Cw==} + '@next/swc-linux-x64-musl@15.4.6': + resolution: {integrity: sha512-XP824mCbgQsK20jlXKrUpZoh/iO3vUWhMpxCz8oYeagoiZ4V0TQiKy0ASji1KK6IAe3DYGfj5RfKP6+L2020OQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1379,8 +1372,8 @@ packages: cpu: [arm64] os: [win32] - '@next/swc-win32-arm64-msvc@15.3.3': - resolution: {integrity: sha512-SxorONgi6K7ZUysMtRF3mIeHC5aA3IQLmKFQzU0OuhuUYwpOBc1ypaLJLP5Bf3M9k53KUUUj4vTPwzGvl/NwlQ==} + '@next/swc-win32-arm64-msvc@15.4.6': + resolution: {integrity: sha512-FxrsenhUz0LbgRkNWx6FRRJIPe/MI1JRA4W4EPd5leXO00AZ6YU8v5vfx4MDXTvN77lM/EqsE3+6d2CIeF5NYg==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -1391,8 +1384,8 @@ packages: cpu: [x64] os: [win32] - '@next/swc-win32-x64-msvc@15.3.3': - resolution: {integrity: sha512-4QZG6F8enl9/S2+yIiOiju0iCTFd93d8VC1q9LZS4p/Xuk81W2QDjCFeoogmrWWkAD59z8ZxepBQap2dKS5ruw==} + '@next/swc-win32-x64-msvc@15.4.6': + resolution: {integrity: sha512-T4ufqnZ4u88ZheczkBTtOF+eKaM14V8kbjud/XrAakoM5DKQWjW09vD6B9fsdsWS2T7D5EY31hRHdta7QKWOng==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1553,21 +1546,12 @@ packages: '@orpc/client@1.2.0': resolution: {integrity: sha512-Wt1il08fs6l9YK8TIjLmMBwb7MzzO8+3aOxFMs7RaQE3iGQ9Ox7ImomSPV8lhxQpWefpDN9fqOCH6pOid6cH6Q==} - '@orpc/client@1.4.2': - resolution: {integrity: sha512-EPpEYsEqCubCEF1orqBuh8KCVL94YabWadvcP+xzmxwEYuxYtJXl1Ic5QTkf/Wyv8A6IhCYyKF+YhZr+hIuuTA==} - '@orpc/contract@1.2.0': resolution: {integrity: sha512-hl90EmPYtP4oMK2+93yocgDaah95tXi3YQbmdgQuKCec4x4GAn85LbHze4G8pPZ5BiSjNSBpyykRV4uA4E5zbA==} - '@orpc/contract@1.4.2': - resolution: {integrity: sha512-1gse3zxyYtQDtUxQ6xqnC9IjUC4mF5BBPyc+C8Jwuz57K5rW/JrBLB8QBnVnMyl0suuqrHO1xrpLtq2lHfA4rg==} - '@orpc/openapi-client@1.2.0': resolution: {integrity: sha512-f3eK9vfwbc2Ni3tQJrhHJb8BCxdCqDoUZ/hvoAhSieYROK5p+cB67+biI3zD/XNaee9xHbC/SyWa1ThtvTEgmg==} - '@orpc/openapi-client@1.4.2': - resolution: {integrity: sha512-mE02vYqchiCoRecfELG0EkDabtqf0W1RXlENWsHXSQHDaeklKeXKHKXAwdRdvIvawrNzuOlLJBXzb7ac7VQyoQ==} - '@orpc/openapi@1.2.0': resolution: {integrity: sha512-yZ5RWyBSltHuSrh17wdjA69OcbQwjeBrKecTRe1ORJmaIMHFSW/aDij/nBYzWHspJPcD911j3vsD6CjVvz8k9Q==} @@ -1585,30 +1569,18 @@ packages: '@orpc/shared@1.2.0': resolution: {integrity: sha512-Y01Q4dS/vlxWfV4cEAmMSWaitbIqp6yFXgin/rIEtciwXr5X1YRw80+dtu91eLWAmEaOCOL/BcyACinqEvc/DQ==} - '@orpc/shared@1.4.2': - resolution: {integrity: sha512-Z6YBYO9YmLI5uWsKZ3OTpWooltyyn2Pz4L/ESo02rDu1qFyBMpslvt83xTBLGYB23NssKsXxDU1Kw67u2g85kg==} - '@orpc/standard-server-fetch@1.2.0': resolution: {integrity: sha512-2gNOSkmgoWD1L3LWr5/47C8PibsMnFr4GCU7VXKtyFo0ejsP51hxgwnetFwDeKfDWugEtjNzk19xsvN09Vj4Ug==} - '@orpc/standard-server-fetch@1.4.2': - resolution: {integrity: sha512-qxoPDdgVmxRzarCQ1PWfNKNurB4DiMjftXzUwa1BAaaAaHophuaniDHZbjW0otMpdegUF7/ePJbgp8i2wSSUrw==} - '@orpc/standard-server-node@1.2.0': resolution: {integrity: sha512-ZRUAZKxQWwzJuHWUsskK5+E+V1mx21eJtGihJRnk5VZWiK8ooA/0g4Kvf8v5ewfyahFLjDsRPEJJV2UZLUlVtg==} '@orpc/standard-server-peer@1.2.0': resolution: {integrity: sha512-G6shbGltkxpYVeQiJEOAQnlCyxKGzMi5vzL3+EMggCqm6ykt3UIR3+QEcey1x7OKXopienjh6Rq+i7IwVBI+ZA==} - '@orpc/standard-server-peer@1.4.2': - resolution: {integrity: sha512-H5Gd4dkc/w2OevRdg11O6o+x7DEOQ+qQK/SGbmnIFW5d8OLud/jPEduQ5EOyF+tZhAIg28lnZHv4gmdlSGzfGA==} - '@orpc/standard-server@1.2.0': resolution: {integrity: sha512-EJ9GqNwK6gGfcdoQGgAJsVZ2c4HFcvkq8TJOUDdv6DFl/GmViIU2log0o4K83C5B9vNIYRahk26hOOFp9sdQAQ==} - '@orpc/standard-server@1.4.2': - resolution: {integrity: sha512-f0nRTunupbIaKoBtO+/bn7+ggurkxo48jze6wDbynImLVZSa9LDSc6N94MGxqt5240dXCLWR9dj9rPeQqbG+iA==} - '@orpc/zod@1.2.0': resolution: {integrity: sha512-Ua1fJpFvZsn1Cf2bM1dmjJckU7V7rYlaSlumNLNpOZcaH0NZ2b7e/ffY/MeB8GtWACyzggZ5lj/Jtc79WdUuVw==} peerDependencies: @@ -1622,8 +1594,8 @@ packages: zod: optional: true - '@playwright/test@1.52.0': - resolution: {integrity: sha512-uh6W7sb55hl7D6vsAeA+V2p5JnlAqzhqFyF0VcJkKZXkgnFcVG9PziERRHQfPLfNGx1C292a4JqbWzhR8L4R1g==} + '@playwright/test@1.54.2': + resolution: {integrity: sha512-A+znathYxPf+72riFd1r1ovOLqsIIB0jKIoPjyK2kqEIe30/6jF6BC7QNluHuwUmsD2tv1XZVugN8GqfTMOxsA==} engines: {node: '>=18'} hasBin: true @@ -1831,13 +1803,13 @@ packages: '@types/react': optional: true - '@rollup/rollup-linux-x64-gnu@4.41.0': - resolution: {integrity: sha512-XMLeKjyH8NsEDCRptf6LO8lJk23o9wvB+dJwcXMaH6ZQbbkHu2dbGIUindbMtRN6ux1xKi16iXWu6q9mu7gDhQ==} + '@rollup/rollup-linux-x64-gnu@4.46.2': + resolution: {integrity: sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==} cpu: [x64] os: [linux] - '@rsbuild/core@1.3.22': - resolution: {integrity: sha512-FGB7m8Tn/uiOhvqk0lw+NRMyD+VYJ+eBqVfpn0X11spkJDiPWn8UkMRvfzCX4XFcNZwRKYuuKJaZK1DNU8UG+w==} + '@rsbuild/core@1.4.15': + resolution: {integrity: sha512-KoSTtKjzQUQwamcbeCp63Ne9kL7io1WI4+skTJe2chfLz6wsp/Gfg8aKkfs1DuyG1p+zxFDcYpwTWMsNtxqqiw==} engines: {node: '>=16.10.0'} hasBin: true @@ -1849,28 +1821,28 @@ packages: '@rsbuild/core': optional: true - '@rsdoctor/client@1.1.3': - resolution: {integrity: sha512-TJiRK3Xl8cFA68WiJlaFcYpLxBYAtsRhHphpCoSVAWM/pq3d5ZXPUEKQAJJ36/NEiZI0t/IN2dWoIAOvZ4g7pw==} + '@rsdoctor/client@1.2.1': + resolution: {integrity: sha512-Mq9gpI249B+fFZIpjykR8SZXRDEFHRWMqqeMyHl6s7AYJ5aIDVaWUq+30YHHWOTnCHzVZrX43vqq9i+7371k1w==} - '@rsdoctor/core@1.1.3': - resolution: {integrity: sha512-UpzuOl4YYnUTmWtkEejrIPRKA3FdqYQvcrNxJwLCPiifoc72mFnkvUo2PPVWYEBZf9WN1IxR9h6h6zNE8w7XrA==} + '@rsdoctor/core@1.2.1': + resolution: {integrity: sha512-RSWpcw4UVxxHQA54hrHsbas08K2Fez/241KU8JA2THK0TBt7ESk122h4AOGjGk981hHvCEXl2kCv4A8sjy4vUw==} - '@rsdoctor/graph@1.1.3': - resolution: {integrity: sha512-BXf5VLhYpVeh8qP+dTzpN52K736sXtIwuz5MPDlqvUgbF2Yd3fvMnn+UNNTxn2nxJVd9vxHuLwSYWz4H0mj6Fg==} + '@rsdoctor/graph@1.2.1': + resolution: {integrity: sha512-r7iQmfhRH3pjKOqO0k/kh51Q5e1OemF/SbTzcr2E3yPrajOxY0YFgL6wGA4TM544D8jvdwlbv9OC7D+pf8smsA==} - '@rsdoctor/rspack-plugin@1.1.3': - resolution: {integrity: sha512-zgPry3muSXlAAkrkTnVm9fqGU6byZGXKbg3qkayx/3wbJHv3AtzuvxlHGvPma+62d8PA+PUwi0HAHz1i+i3gNA==} + '@rsdoctor/rspack-plugin@1.2.1': + resolution: {integrity: sha512-SqmpIi5o1JkRr4p5pYNKta7EzOfM0MGGuxN3HpwqrG4rOLRI4d6Ou0FvbF9KuRjRU1LL5qHLLWr7c6EGX8QwnQ==} peerDependencies: '@rspack/core': '*' peerDependenciesMeta: '@rspack/core': optional: true - '@rsdoctor/sdk@1.1.3': - resolution: {integrity: sha512-OjepCYUvpFphtulItXEkn9ryDvAIUAY2LSaOuFQ+NUXJ+CaGGu9D3eaRiofRb8FmE1sniXP8NLRYbMXHyQWRFw==} + '@rsdoctor/sdk@1.2.1': + resolution: {integrity: sha512-i12zLOCSw2iWQC5q6pg8kyzukJmlwIjhDmAuvxY4Cs293hdWfsug3GpDdInsx8ZR2yMbcr9DM1ZbYSdaootApw==} - '@rsdoctor/types@1.1.3': - resolution: {integrity: sha512-DC26DObzw3pYzfQzUBfKwFDax1jkTrBdO4ovR+jQjGW/VuDOola2g7fUYoyUmOgDNx0kq684kz9tAu4WuTyrsw==} + '@rsdoctor/types@1.2.1': + resolution: {integrity: sha512-TeRpJAm/lWwNFwcR9Mxo1jzCmx0jZ7QZwNqOJYextlVUx91IMsV2Ufhzz5N/mmRSktges8lbynu3tAd3DdrwGA==} peerDependencies: '@rspack/core': '*' webpack: 5.x @@ -1880,11 +1852,11 @@ packages: webpack: optional: true - '@rsdoctor/utils@1.1.3': - resolution: {integrity: sha512-pygyA6wInU7VmWW2gihyhw5qIetSDtr3aFyzNsV+0VUduSUtZEsKnEz3JUzxvX23W34PapqjRDyfuMqphFsnKg==} + '@rsdoctor/utils@1.2.1': + resolution: {integrity: sha512-KjLqCl1yTg13uEi7gTPTPgGJQTPsJghhaAN85WswpAljajfUj8xK0vKg+Vdn2T1/ygWcogutb8p150DQ3g5Bgw==} - '@rslib/core@0.9.1': - resolution: {integrity: sha512-aa/LXYxr49lCNm/b0B4CQoTB5286MPglGsE5/YFoY0VwIcKJdMz0zBJ4DsPwh27/fcfDQvmN1+J9tzjt9TxQtQ==} + '@rslib/core@0.11.2': + resolution: {integrity: sha512-NubpSx2DF5sSBpzJRQTsS2xFPdC2nCTBTRbQVXUNBYJikmJY6XgI1MU2jPzrecjX7QZOaH8APt2AEiWl0YNlrg==} engines: {node: '>=16.7.0'} hasBin: true peerDependencies: @@ -1896,113 +1868,60 @@ packages: typescript: optional: true - '@rspack/binding-darwin-arm64@1.3.12': - resolution: {integrity: sha512-8hKjVTBeWPqkMzFPNWIh72oU9O3vFy3e88wRjMPImDCXBiEYrKqGTTLd/J0SO+efdL3SBD1rX1IvdJpxCv6Yrw==} - cpu: [arm64] - os: [darwin] - - '@rspack/binding-darwin-arm64@1.3.15': - resolution: {integrity: sha512-f+DnVRENRdVe+ufpZeqTtWAUDSTnP48jVo7x9KWsXf8XyJHUi+eHKEPrFoy1HvL1/k5yJ3HVnFBh1Hb9cNIwSg==} + '@rspack/binding-darwin-arm64@1.4.11': + resolution: {integrity: sha512-PrmBVhR8MC269jo6uQ+BMy1uwIDx0HAJYLQRQur8gXiehWabUBCRg/d4U9KR7rLzdaSScRyc5JWXR52T7/4MfA==} cpu: [arm64] os: [darwin] - '@rspack/binding-darwin-x64@1.3.12': - resolution: {integrity: sha512-Sj4m+mCUxL7oCpdu7OmWT7fpBM7hywk5CM9RDc3D7StaBZbvNtNftafCrTZzTYKuZrKmemTh5SFzT5Tz7tf6GA==} + '@rspack/binding-darwin-x64@1.4.11': + resolution: {integrity: sha512-YIV8Wzy+JY0SoSsVtN4wxFXOjzxxVPnVXNswrrfqVUTPr9jqGOFYUWCGpbt8lcCgfuBFm6zN8HpOsKm1xUNsVA==} cpu: [x64] os: [darwin] - '@rspack/binding-darwin-x64@1.3.15': - resolution: {integrity: sha512-TfUvEIBqYUT2OK01BYXb2MNcZeZIhAnJy/5aj0qV0uy4KlvwW63HYcKWa1sFd4Ac7bnGShDkanvP3YEuHOFOyg==} - cpu: [x64] - os: [darwin] - - '@rspack/binding-linux-arm64-gnu@1.3.12': - resolution: {integrity: sha512-7MuOxf3/Mhv4mgFdLTvgnt/J+VouNR65DEhorth+RZm3LEWojgoFEphSAMAvpvAOpYSS68Sw4SqsOZi719ia2w==} + '@rspack/binding-linux-arm64-gnu@1.4.11': + resolution: {integrity: sha512-ms6uwECUIcu+6e82C5HJhRMHnfsI+l33v7XQezntzRPN0+sG3EpikEoT7SGbgt4vDwaWLR7wS20suN4qd5r3GA==} cpu: [arm64] os: [linux] - '@rspack/binding-linux-arm64-gnu@1.3.15': - resolution: {integrity: sha512-D/YjYk9snKvYm1Elotq8/GsEipB4ZJWVv/V8cZ+ohhFNOPzygENi6JfyI06TryBTQiN0/JDZqt/S9RaWBWnMqw==} + '@rspack/binding-linux-arm64-musl@1.4.11': + resolution: {integrity: sha512-9evq0DOdxMN/H8VM8ZmyY9NSuBgILNVV6ydBfVPMHPx4r1E7JZGpWeKDegZcS5Erw3sS9kVSIxyX78L5PDzzKw==} cpu: [arm64] os: [linux] - '@rspack/binding-linux-arm64-musl@1.3.12': - resolution: {integrity: sha512-s6KKj20T9Z1bA8caIjU6EzJbwyDo1URNFgBAlafCT2UC6yX7flstDJJ38CxZacA9A2P24RuQK2/jPSZpWrTUFA==} - cpu: [arm64] - os: [linux] - - '@rspack/binding-linux-arm64-musl@1.3.15': - resolution: {integrity: sha512-lJbBsPMOiR0hYPCSM42yp7QiZjfo0ALtX7ws2wURpsQp3BMfRVAmXU3Ixpo2XCRtG1zj8crHaCmAWOJTS0smsA==} - cpu: [arm64] - os: [linux] - - '@rspack/binding-linux-x64-gnu@1.3.12': - resolution: {integrity: sha512-0w/sRREYbRgHgWvs2uMEJSLfvzbZkPHUg6CMcYQGNVK6axYRot6jPyKetyFYA9pR5fB5rsXegpnFaZaVrRIK2g==} + '@rspack/binding-linux-x64-gnu@1.4.11': + resolution: {integrity: sha512-bHYFLxPPYBOSaHdQbEoCYGMQ1gOrEWj7Mro/DLfSHZi1a0okcQ2Q1y0i1DczReim3ZhLGNrK7k1IpFXCRbAobQ==} cpu: [x64] os: [linux] - '@rspack/binding-linux-x64-gnu@1.3.15': - resolution: {integrity: sha512-qGB8ucHklrzNg6lsAS36VrBsCbOw0acgpQNqTE5cuHWrp1Pu3GFTRiFEogenxEmzoRbohMZt0Ev5grivrcgKBQ==} + '@rspack/binding-linux-x64-musl@1.4.11': + resolution: {integrity: sha512-wrm4E7q2k4+cwT6Uhp6hIQ3eUe/YoaUttj6j5TqHYZX6YeLrNPtD9+ne6lQQ17BV8wmm6NZsmoFIJ5xIptpRhQ==} cpu: [x64] os: [linux] - '@rspack/binding-linux-x64-musl@1.3.12': - resolution: {integrity: sha512-jEdxkPymkRxbijDRsBGdhopcbGXiXDg59lXqIRkVklqbDmZ/O6DHm7gImmlx5q9FoWbz0gqJuOKBz4JqWxjWVA==} - cpu: [x64] - os: [linux] - - '@rspack/binding-linux-x64-musl@1.3.15': - resolution: {integrity: sha512-qRn6e40fLQP+N2rQD8GAj/h4DakeTIho32VxTIaHRVuzw68ZD7VmKkwn55ssN370ejmey35ZdoNFNE12RBrMZA==} - cpu: [x64] - os: [linux] - - '@rspack/binding-win32-arm64-msvc@1.3.12': - resolution: {integrity: sha512-ZRvUCb3TDLClAqcTsl/o9UdJf0B5CgzAxgdbnYJbldyuyMeTUB4jp20OfG55M3C2Nute2SNhu2bOOp9Se5Ongw==} - cpu: [arm64] - os: [win32] + '@rspack/binding-wasm32-wasi@1.4.11': + resolution: {integrity: sha512-hiYxHZjaZ17wQtXyLCK0IdtOvMWreGVTiGsaHCxyeT+SldDG+r16bXNjmlqfZsjlfl1mkAqKz1dg+mMX28OTqw==} + cpu: [wasm32] - '@rspack/binding-win32-arm64-msvc@1.3.15': - resolution: {integrity: sha512-7uJ7dWhO1nWXJiCss6Rslz8hoAxAhFpwpbWja3eHgRb7O4NPHg6MWw63AQSI2aFVakreenfu9yXQqYfpVWJ2dA==} + '@rspack/binding-win32-arm64-msvc@1.4.11': + resolution: {integrity: sha512-+HF/mnjmTr8PC1dccRt1bkrD2tPDGeqvXC1BBLYd/Klq1VbtIcnrhfmvQM6KaXbiLcY9VWKzcZPOTmnyZ8TaHQ==} cpu: [arm64] os: [win32] - '@rspack/binding-win32-ia32-msvc@1.3.12': - resolution: {integrity: sha512-1TKPjuXStPJr14f3ZHuv40Xc/87jUXx10pzVtrPnw+f3hckECHrbYU/fvbVzZyuXbsXtkXpYca6ygCDRJAoNeQ==} - cpu: [ia32] - os: [win32] - - '@rspack/binding-win32-ia32-msvc@1.3.15': - resolution: {integrity: sha512-UsaWTYCjDiSCB0A0qETgZk4QvhwfG8gCrO4SJvA+QSEWOmgSai1YV70prFtLLIiyT9mDt1eU3tPWl1UWPRU/EQ==} + '@rspack/binding-win32-ia32-msvc@1.4.11': + resolution: {integrity: sha512-EU2fQGwrRfwFd/tcOInlD0jy6gNQE4Q3Ayj0Is+cX77sbhPPyyOz0kZDEaQ4qaN2VU8w4Hu/rrD7c0GAKLFvCw==} cpu: [ia32] os: [win32] - '@rspack/binding-win32-x64-msvc@1.3.12': - resolution: {integrity: sha512-lCR0JfnYKpV+a6r2A2FdxyUKUS4tajePgpPJN5uXDgMGwrDtRqvx+d0BHhwjFudQVJq9VVbRaL89s2MQ6u+xYw==} + '@rspack/binding-win32-x64-msvc@1.4.11': + resolution: {integrity: sha512-1Nc5ZzWqfvE+iJc47qtHFzYYnHsC3awavXrCo74GdGip1vxtksM3G30BlvAQHHVtEmULotWqPbjZpflw/Xk9Ag==} cpu: [x64] os: [win32] - '@rspack/binding-win32-x64-msvc@1.3.15': - resolution: {integrity: sha512-ZnDIc9Es8EF94MirPDN+hOMt7tkb8nMEbRJFKLMmNd0ElNPgsql+1cY5SqyGRH1hsKB87KfSUQlhFiKZvzbfIg==} - cpu: [x64] - os: [win32] - - '@rspack/binding@1.3.12': - resolution: {integrity: sha512-4Ic8lV0+LCBfTlH5aIOujIRWZOtgmG223zC4L3o8WY/+ESAgpdnK6lSSMfcYgRanYLAy3HOmFIp20jwskMpbAg==} - - '@rspack/binding@1.3.15': - resolution: {integrity: sha512-utNPuJglLO5lW9XbwIqjB7+2ilMo6JkuVLTVdnNVKU94FW7asn9F/qV+d+MgjUVqU1QPCGm0NuGO9xhbgeJ7pg==} - - '@rspack/core@1.3.12': - resolution: {integrity: sha512-mAPmV4LPPRgxpouUrGmAE4kpF1NEWJGyM5coebsjK/zaCMSjw3mkdxiU2b5cO44oIi0Ifv5iGkvwbdrZOvMyFA==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@swc/helpers': '>=0.5.1' - peerDependenciesMeta: - '@swc/helpers': - optional: true + '@rspack/binding@1.4.11': + resolution: {integrity: sha512-maGl/zRwnl0QVwkBCkgjn5PH20L9HdlRIdkYhEsfTepy5x2QZ0ti/0T49djjTJQrqb+S1i6wWQymMMMMMsxx6Q==} - '@rspack/core@1.3.15': - resolution: {integrity: sha512-QuElIC8jXSKWAp0LSx18pmbhA7NiA5HGoVYesmai90UVxz98tud0KpMxTVCg+0lrLrnKZfCWN9kwjCxM5pGnrA==} + '@rspack/core@1.4.11': + resolution: {integrity: sha512-JtKnL6p7Kc/YgWQJF3Woo4OccbgKGyT/4187W4dyex8BMkdQcbqCNIdi6dFk02hwQzxpOOxRSBI4hlGRbz7oYQ==} engines: {node: '>=16.0.0'} peerDependencies: '@swc/helpers': '>=0.5.1' @@ -2029,14 +1948,17 @@ packages: '@swc/helpers@0.5.17': resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + '@tybys/wasm-util@0.10.0': + resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==} + '@types/better-sqlite3@7.6.13': resolution: {integrity: sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==} '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - '@types/cors@2.8.18': - resolution: {integrity: sha512-nX3d0sxJW41CqQvfOzVG1NCTXfFDrDWIghCZncpHeWlVFd81zxB/DLhg7avFg6eHLCRX7ckBmoIIcqa++upvJA==} + '@types/cors@2.8.19': + resolution: {integrity: sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==} '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} @@ -2047,16 +1969,19 @@ packages: '@types/jsonfile@6.1.4': resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} - '@types/node@22.15.30': - resolution: {integrity: sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==} + '@types/node@22.17.1': + resolution: {integrity: sha512-y3tBaz+rjspDTylNjAX37jEC3TETEFGNJL6uQDxwF9/8GLLIjW1rvVHlynyuUKMnMr1Roq8jOv3vkopBjC4/VA==} - '@types/react-dom@19.1.6': - resolution: {integrity: sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==} + '@types/node@24.2.1': + resolution: {integrity: sha512-DRh5K+ka5eJic8CjH7td8QpYEV6Zo10gfRkjHCO3weqZHWDtAaSTFtl4+VMqOJ4N5jcuhZ9/l+yy8rVgw7BQeQ==} + + '@types/react-dom@19.1.7': + resolution: {integrity: sha512-i5ZzwYpqjmrKenzkoLM2Ibzt6mAsM7pxB6BCIouEVVmgiqaMj1TjaK7hnA36hbW5aZv20kx7Lw6hWzPWg0Rurw==} peerDependencies: '@types/react': ^19.0.0 - '@types/react@19.1.6': - resolution: {integrity: sha512-JeG0rEWak0N6Itr6QUx+X60uQmN+5t3j9r/OVDtWzFXKaj6kD1BwJzOksD0FF6iWxZlbE1kB0q9vtnU2ekqa1Q==} + '@types/react@19.1.9': + resolution: {integrity: sha512-WmdoynAX8Stew/36uTSVMcLJJ1KRh6L3IZRx1PZ7qJtBqT3dYTgyDTx8H1qoRghErydW7xw9mSJ3wS//tCRpFA==} '@types/shimmer@1.2.0': resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==} @@ -2080,9 +2005,10 @@ packages: resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} - acorn@8.14.1: - resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} + hasBin: true ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} @@ -2095,8 +2021,8 @@ packages: asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - axios@1.9.0: - resolution: {integrity: sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==} + axios@1.11.0: + resolution: {integrity: sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==} base-x@5.0.1: resolution: {integrity: sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==} @@ -2108,8 +2034,9 @@ packages: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} engines: {node: ^4.5.0 || >= 5.9} - better-sqlite3@11.10.0: - resolution: {integrity: sha512-EwhOpyXiOEL/lKzHz9AW1msWFNzGc/z+LzeB3/jnFJpxu+th2yqvzsSWas1v9jgs9+xiXJcD5A8CJxAG2TaghQ==} + better-sqlite3@12.2.0: + resolution: {integrity: sha512-eGbYq2CT+tos1fBwLQ/tkBt9J5M3JEHjku4hbvQUePCckkvVf14xWj+1m7dGoK81M/fOjFT7yM9UMeKT/+vFLQ==} + engines: {node: 20.x || 22.x || 23.x || 24.x} bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} @@ -2121,14 +2048,14 @@ packages: resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - browserslist-load-config@1.0.0: - resolution: {integrity: sha512-jj4xzExS1hRVMUIFQSkW4l3KPni5JRxnKfYfRpirooK5S4CjY31PhqfEjCB/mfqgCxkZIxc9rcu0pyXlEpYp/Q==} + browserslist-load-config@1.0.1: + resolution: {integrity: sha512-orLR5HAoQugQNVUXUwNd+GAAwl3H64KLIwoMFBNW0AbMSqX2Lxs4ZV2/5UoNrVQlQqF9ygychiu7Svr/99bLtg==} - browserslist-to-es-version@1.0.0: - resolution: {integrity: sha512-i6dR03ClGy9ti97FSa4s0dpv01zW/t5VbvGjFfTLsrRQFsPgSeyGkCrlU7BTJuI5XDHVY5S2JgDnDsvQXifJ8w==} + browserslist-to-es-version@1.1.1: + resolution: {integrity: sha512-jfRStKh3aQ8HqQA45MWHYYtzhhlMM8X3cffhXJmMRlRWEu8+fk9bN8dYEsfY7j5pAvtSK8ehelUSvyDmEKijOg==} - browserslist@4.25.0: - resolution: {integrity: sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==} + browserslist@4.25.2: + resolution: {integrity: sha512-0si2SJK3ooGzIawRu61ZdPCO1IncZwS8IzuX73sPZsXW6EQ/w/DAfPyKI8l1ETTCr2MnvqWitmlCUxgdul45jA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -2138,10 +2065,6 @@ packages: buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - bundle-name@4.1.0: - resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} - engines: {node: '>=18'} - busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} @@ -2150,8 +2073,8 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} - c15t@1.2.2-canary-20250603153501: - resolution: {integrity: sha512-5jMLQUfis8mYZ77wN5HB2vqayQGduqi1cpeRW9pyYCcUH4ApYkYThtzgwqxYRF6V0w/sRBm4WaEqQ4avU4NMqA==} + c15t@1.5.0: + resolution: {integrity: sha512-rSxnpp2gXTHx2w89lJ2fOA4iLtvrpVqx/SxRdL05LPWn2VJc3ja+OZz+2mP01cvoKZHgiOjXGxB8IwDj5v0vxg==} call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} @@ -2161,8 +2084,8 @@ packages: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} - caniuse-lite@1.0.30001721: - resolution: {integrity: sha512-cOuvmUVtKrtEaoKiO0rSc29jcjwMwX5tOHDy4MgVFEWiUXj4uBMJkwI8MDySkgXidpMiHUcviogAvFi4pA2hDQ==} + caniuse-lite@1.0.30001734: + resolution: {integrity: sha512-uhE1Ye5vgqju6OI71HTQqcBCZrvHugk0MjLak7Q+HfoBgoq5Bi+5YnwjP4fjDgrtYr/l8MVRBvzz9dPD4KyK0A==} chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} @@ -2203,10 +2126,6 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} - commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - connect@3.7.0: resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} engines: {node: '>= 0.10.0'} @@ -2223,8 +2142,8 @@ packages: resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} engines: {node: '>=12.13'} - core-js@3.42.0: - resolution: {integrity: sha512-Sz4PP4ZA+Rq4II21qkNqOEDTDrCvcANId3xpIgB34NDkWc3UduWj2dqEtN9yZIq8Dk3HyPI33x9sqqU5C8sr0g==} + core-js@3.45.0: + resolution: {integrity: sha512-c2KZL9lP4DjkN3hk/an4pWn5b5ZefhRJnAc42n6LJ19kSnbeRbdQZE5dSeE2LBol1OwJD3X1BQvFTAsa8ReeDA==} cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} @@ -2240,9 +2159,6 @@ packages: dayjs@1.11.13: resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} - debounce@1.2.1: - resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} - debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -2281,17 +2197,9 @@ packages: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} - default-browser-id@5.0.0: - resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} - engines: {node: '>=18'} - - default-browser@5.2.1: - resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} - engines: {node: '>=18'} - - define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} - engines: {node: '>=12'} + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} @@ -2329,12 +2237,12 @@ packages: domutils@3.2.2: resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} - dotenv@16.5.0: - resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} + dotenv@17.2.1: + resolution: {integrity: sha512-kQhDYKZecqnM0fCnzI5eIv5L4cAe/iRI+HqMbO/hbRdTAeXDG+M9FjipUxNfbARuEg4iHIbhnhs78BCHNbSxEQ==} engines: {node: '>=12'} - drizzle-kit@0.31.1: - resolution: {integrity: sha512-PUjYKWtzOzPtdtQlTHQG3qfv4Y0XT8+Eas6UbxCmxTj7qgMf+39dDujf1BP1I+qqZtw9uzwTh8jYtkMuCq+B0Q==} + drizzle-kit@0.31.4: + resolution: {integrity: sha512-tCPWVZWZqWVx2XUsVpJRnH9Mx0ClVOf5YUHerZ5so1OKSlqww4zy1R5ksEdGRcO3tM3zj0PYN6V48TbQCL1RfA==} hasBin: true drizzle-orm@0.41.0: @@ -2430,14 +2338,11 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} - duplexer@0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.165: - resolution: {integrity: sha512-naiMx1Z6Nb2TxPU6fiFrUrDTjyPMLdTtaOd2oLmG8zVSg2hCWGkhPyxwk+qRmZ1ytwVqUv0u7ZcDA5+ALhaUtw==} + electron-to-chromium@1.5.199: + resolution: {integrity: sha512-3gl0S7zQd88kCAZRO/DnxtBKuhMO4h0EaQIN3YgZfV6+pW+5+bf2AdQeHNESCoaQqo/gjGVYEf2YM4O5HJQqpQ==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2446,8 +2351,8 @@ packages: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} engine.io-parser@5.2.3: resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} @@ -2465,8 +2370,8 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - entities@6.0.0: - resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==} + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} envinfo@7.14.0: @@ -2500,8 +2405,8 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.25.4: - resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} + esbuild@0.25.8: + resolution: {integrity: sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==} engines: {node: '>=18'} hasBin: true @@ -2512,10 +2417,6 @@ packages: escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} @@ -2524,8 +2425,8 @@ packages: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} - fdir@6.4.5: - resolution: {integrity: sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==} + fdir@6.4.6: + resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -2547,8 +2448,8 @@ packages: resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} engines: {node: '>= 0.8'} - 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: '*' @@ -2556,8 +2457,8 @@ packages: debug: optional: true - form-data@4.0.3: - resolution: {integrity: sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==} + form-data@4.0.4: + resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} engines: {node: '>= 6'} formdata-polyfill@4.0.10: @@ -2567,8 +2468,8 @@ packages: fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - fs-extra@11.3.0: - resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} + fs-extra@11.3.1: + resolution: {integrity: sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==} engines: {node: '>=14.14'} fsevents@2.3.2: @@ -2608,10 +2509,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - gzip-size@6.0.0: - resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} - engines: {node: '>=10'} - has-symbols@1.1.0: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} @@ -2624,9 +2521,6 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} - html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - htmlparser2@10.0.0: resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} @@ -2657,34 +2551,29 @@ packages: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} - is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} hasBin: true is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true - is-what@4.1.16: resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} engines: {node: '>=12.13'} - is-wsl@3.1.0: - resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} - engines: {node: '>=16'} + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} - jiti@2.4.2: - resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + jiti@2.5.1: + resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} hasBin: true - js-base64@3.7.7: - resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} + js-base64@3.7.8: + resolution: {integrity: sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==} js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -2711,8 +2600,8 @@ packages: resolution: {integrity: sha512-FIyV/64EkKhJmjgC0g2hygpBv5RNWVPyNCqSAD7eTCv6eFWNIi4PN1UvdSJGicN/o35bnevgis4Y0UDC0qi8jQ==} engines: {node: '>=14.0.0'} - libsql@0.5.12: - resolution: {integrity: sha512-TikiQZ1j4TwFEqVdJdTM9ZTti28is/ytGEvn0S2MocOj69UKQetWACe/qd8KAD5VeNnQSVd6Nlm2AJx0DFW9Ag==} + libsql@0.5.17: + resolution: {integrity: sha512-RRlj5XQI9+Wq+/5UY8EnugSWfRmHEw4hn3DKlPrkUgZONsge1PwTtHcpStP6MSNi8ohcbsRgEHJaymA33a8cBw==} cpu: [x64, arm64, wasm32, arm] os: [darwin, linux, win32] @@ -2818,13 +2707,13 @@ packages: sass: optional: true - next@15.3.3: - resolution: {integrity: sha512-JqNj29hHNmCLtNvd090SyRbXJiivQ+58XjCcrC50Crb5g5u2zi7Y2YivbsEfzk6AtVI80akdOQbaMZwWB1Hthw==} + next@15.4.6: + resolution: {integrity: sha512-us++E/Q80/8+UekzB3SAGs71AlLDsadpFMXVNM/uQ0BMwsh9m3mr0UNQIfjKed8vpWXsASe+Qifrnu1oLIcKEQ==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 - '@playwright/test': ^1.41.2 + '@playwright/test': ^1.51.1 babel-plugin-react-compiler: '*' react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 @@ -2874,17 +2763,13 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - open@10.1.2: - resolution: {integrity: sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==} - engines: {node: '>=18'} + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} openapi-types@12.1.3: resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} - opener@1.5.2: - resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} - hasBin: true - p-limit@6.2.0: resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==} engines: {node: '>=18'} @@ -2909,12 +2794,12 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} - playwright-core@1.52.0: - resolution: {integrity: sha512-l2osTgLXSMeuLZOML9qYODUQoPPnUsKsb5/P6LJ2e6uPKXUdPK5WYhN4z03G+YNbWmGDY4YENauNu4ZKczreHg==} + playwright-core@1.54.2: + resolution: {integrity: sha512-n5r4HFbMmWsB4twG7tJLDN9gmBUeSPcsBZiWSE4DnYz9mJMAFqr2ID7+eGC9kpEnxExJ1epttwR59LEWCk8mtA==} engines: {node: '>=18'} hasBin: true @@ -2924,8 +2809,8 @@ packages: peerDependencies: '@playwright/test': '>=1.40.0 <2.0.0' - playwright@1.52.0: - resolution: {integrity: sha512-JAwMNMBlxJ2oD1kce4KPtMkDeKGHQstdpFPcPH3maElAXon/QZeTvtsfXmTMRyO9TslfoYOXkSsvao2nE1ilTw==} + playwright@1.54.2: + resolution: {integrity: sha512-Hu/BMoA1NAdRUuulyvQC0pEqZ4vQbGfn8f7wPXcnqQmM+zct9UliKxsIkLNmz/ku7LElUNqmaiv1TG/aL5ACsw==} engines: {node: '>=18'} hasBin: true @@ -2948,22 +2833,22 @@ packages: prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - protobufjs@7.4.0: - resolution: {integrity: sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==} + protobufjs@7.5.3: + resolution: {integrity: sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw==} engines: {node: '>=12.0.0'} proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - pump@3.0.2: - resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + pump@3.0.3: + resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} qs@6.13.0: resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} - radash@12.1.0: - resolution: {integrity: sha512-b0Zcf09AhqKS83btmUeYBS8tFK7XL2e3RvLmZcm0sTdF1/UUlHSsjXdCcWNxe7yfmAlPve5ym0DmKGtTzP6kVQ==} + radash@12.1.1: + resolution: {integrity: sha512-h36JMxKRqrAxVD8201FrCpyeNuUY9Y5zZwujr20fFO77tpUtGa6EZzfKw/3WaiBX95fq7+MpsuMLNdSnORAwSA==} engines: {node: '>=14.18.0'} raw-body@2.5.2: @@ -2974,16 +2859,16 @@ packages: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true - react-dom@19.1.0: - resolution: {integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==} + react-dom@19.1.1: + resolution: {integrity: sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==} peerDependencies: - react: ^19.1.0 + react: ^19.1.1 react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - react@19.1.0: - resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} + react@19.1.1: + resolution: {integrity: sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==} engines: {node: '>=0.10.0'} readable-stream@3.6.2: @@ -3006,11 +2891,11 @@ packages: engines: {node: '>= 0.4'} hasBin: true - rou3@0.6.1: - resolution: {integrity: sha512-mqyxhSO0LLAa/lwNhH3329NEbRFJEHpZGIqr0cWQTtQEwqFMpf0a15cGw3kh9nil1oufh97Qhx4KWsy++0yn4g==} + rou3@0.6.3: + resolution: {integrity: sha512-1HSG1ENTj7Kkm5muMnXuzzfdDOf7CFnbSYFA+H3Fp/rB9lOCxCPgy1jlZxTKyFoC5jJay8Mmc+VbPLYRjzYLrA==} - rsbuild-plugin-dts@0.9.1: - resolution: {integrity: sha512-04pkKrebuajsCpC8Vj2z4n6NFFxUYAdUdqSQRFGkGhdmururoDFYW0k9+ZQq9XrSQTlB01F/HFv5mAc0dwG/Qg==} + rsbuild-plugin-dts@0.11.2: + resolution: {integrity: sha512-D3sSqcrxRnuIbGaXZgmV8K/WLaJ6lBe0mD3SemWAexBXYezu4rj1ndqQeRwkDBji+XU6wLUA+w43GyWtY4E79g==} engines: {node: '>=16.7.0'} peerDependencies: '@microsoft/api-extractor': ^7 @@ -3022,13 +2907,8 @@ packages: typescript: optional: true - rslog@1.2.3: - resolution: {integrity: sha512-antALPJaKBRPBU1X2q9t085K4htWDOOv/K1qhTUk7h0l1ePU/KbDqKJn19eKP0dk7PqMioeA0+fu3gyPXCsXxQ==} - engines: {node: '>=14.17.6'} - - run-applescript@7.0.0: - resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} - engines: {node: '>=18'} + rslog@1.2.11: + resolution: {integrity: sha512-YgMMzQf6lL9q4rD9WS/lpPWxVNJ1ttY9+dOXJ0+7vJrKCAOT4GH0EiRnBi9mKOitcHiOwjqJPV1n/HRqqgZmOQ==} safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} @@ -3051,8 +2931,8 @@ packages: resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - sharp@0.34.2: - resolution: {integrity: sha512-lszvBmB9QURERtyKT2bNmsgxXK0ShJrL/fvqlonCo7e6xBF8nT8xU6pW+PMIbLsz0RxQk3rgH9kd8UmvOzlMJg==} + sharp@0.34.3: + resolution: {integrity: sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} shimmer@1.2.1: @@ -3112,9 +2992,9 @@ 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'} statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} @@ -3172,8 +3052,8 @@ packages: resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} engines: {node: '>=6'} - tar-fs@2.1.2: - resolution: {integrity: sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==} + tar-fs@2.1.3: + resolution: {integrity: sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==} tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} @@ -3207,38 +3087,38 @@ packages: tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - turbo-darwin-64@2.5.3: - resolution: {integrity: sha512-YSItEVBUIvAGPUDpAB9etEmSqZI3T6BHrkBkeSErvICXn3dfqXUfeLx35LfptLDEbrzFUdwYFNmt8QXOwe9yaw==} + turbo-darwin-64@2.5.5: + resolution: {integrity: sha512-RYnTz49u4F5tDD2SUwwtlynABNBAfbyT2uU/brJcyh5k6lDLyNfYKdKmqd3K2ls4AaiALWrFKVSBsiVwhdFNzQ==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.5.3: - resolution: {integrity: sha512-5PefrwHd42UiZX7YA9m1LPW6x9YJBDErXmsegCkVp+GjmWrADfEOxpFrGQNonH3ZMj77WZB2PVE5Aw3gA+IOhg==} + turbo-darwin-arm64@2.5.5: + resolution: {integrity: sha512-Tk+ZeSNdBobZiMw9aFypQt0DlLsWSFWu1ymqsAdJLuPoAH05qCfYtRxE1pJuYHcJB5pqI+/HOxtJoQ40726Btw==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.5.3: - resolution: {integrity: sha512-M9xigFgawn5ofTmRzvjjLj3Lqc05O8VHKuOlWNUlnHPUltFquyEeSkpQNkE/vpPdOR14AzxqHbhhxtfS4qvb1w==} + turbo-linux-64@2.5.5: + resolution: {integrity: sha512-2/XvMGykD7VgsvWesZZYIIVXMlgBcQy+ZAryjugoTcvJv8TZzSU/B1nShcA7IAjZ0q7OsZ45uP2cOb8EgKT30w==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.5.3: - resolution: {integrity: sha512-auJRbYZ8SGJVqvzTikpg1bsRAsiI9Tk0/SDkA5Xgg0GdiHDH/BOzv1ZjDE2mjmlrO/obr19Dw+39OlMhwLffrw==} + turbo-linux-arm64@2.5.5: + resolution: {integrity: sha512-DW+8CjCjybu0d7TFm9dovTTVg1VRnlkZ1rceO4zqsaLrit3DgHnN4to4uwyuf9s2V/BwS3IYcRy+HG9BL596Iw==} cpu: [arm64] os: [linux] - turbo-windows-64@2.5.3: - resolution: {integrity: sha512-arLQYohuHtIEKkmQSCU9vtrKUg+/1TTstWB9VYRSsz+khvg81eX6LYHtXJfH/dK7Ho6ck+JaEh5G+QrE1jEmCQ==} + turbo-windows-64@2.5.5: + resolution: {integrity: sha512-q5p1BOy8ChtSZfULuF1BhFMYIx6bevXu4fJ+TE/hyNfyHJIfjl90Z6jWdqAlyaFLmn99X/uw+7d6T/Y/dr5JwQ==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.5.3: - resolution: {integrity: sha512-3JPn66HAynJ0gtr6H+hjY4VHpu1RPKcEwGATvGUTmLmYSYBQieVlnGDRMMoYN066YfyPqnNGCfhYbXfH92Cm0g==} + turbo-windows-arm64@2.5.5: + resolution: {integrity: sha512-AXbF1KmpHUq3PKQwddMGoKMYhHsy5t1YBQO8HZ04HLMR0rWv9adYlQ8kaeQJTko1Ay1anOBFTqaxfVOOsu7+1Q==} cpu: [arm64] os: [win32] - turbo@2.5.3: - resolution: {integrity: sha512-iHuaNcq5GZZnr3XDZNuu2LSyCzAOPwDuo5Qt+q64DfsTP1i3T2bKfxJhni2ZQxsvAoxRbuUK5QetJki4qc5aYA==} + turbo@2.5.5: + resolution: {integrity: sha512-eZ7wI6KjtT1eBqCnh2JPXWNUAxtoxxfi6VdBdZFvil0ychCOTxbm7YLRBi1JSt7U3c+u3CLxpoPxLdvr/Npr3A==} hasBin: true type-detect@4.1.0: @@ -3253,14 +3133,17 @@ packages: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} - 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 undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici-types@7.10.0: + resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==} + universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -3295,11 +3178,6 @@ packages: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} - webpack-bundle-analyzer@4.10.2: - resolution: {integrity: sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==} - engines: {node: '>= 10.13.0'} - hasBin: true - wildcard-match@5.1.4: resolution: {integrity: sha512-wldeCaczs8XXq7hj+5d/F38JE2r7EXgb6WQDM84RVwxy81T/sxB5e9+uZLK9Q9oNz1mlvjut+QtvgaOQFPVq/g==} @@ -3310,18 +3188,6 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - ws@8.17.1: resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} engines: {node: '>=10.0.0'} @@ -3334,8 +3200,8 @@ packages: utf-8-validate: optional: true - ws@8.18.2: - resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==} + ws@8.18.3: + resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -3362,11 +3228,11 @@ packages: resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} engines: {node: '>=12.20'} - zod@3.25.55: - resolution: {integrity: sha512-219huNnkSLQnLsQ3uaRjXsxMrVm5C9W3OOpEVt2k5tvMKuA8nBSu38e0B//a+he9Iq2dvmk2VyYVlHqiHa4YBA==} + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - zustand@5.0.4: - resolution: {integrity: sha512-39VFTN5InDtMd28ZhjLyuTnlytDr9HfwO512Ai4I8ZABCoyAj4F1+sr7sD1jP/+p7k77Iko0Pb5NhgBFDCX0kQ==} + zustand@5.0.7: + resolution: {integrity: sha512-Ot6uqHDW/O2VdYsKLLU8GQu8sCOM1LcoE8RwvLv9uuRT9s6SOHCKs0ZEOhxg+I1Ld+A1Q5lwx+UlKXXUoCZITg==} engines: {node: '>=12.20.0'} peerDependencies: '@types/react': '>=18.0.0' @@ -3467,25 +3333,25 @@ snapshots: '@biomejs/cli-win32-x64@1.9.4': optional: true - '@c15t/backend@1.2.2-canary-20250602152741(@libsql/client@0.15.8)(@playwright/test@1.52.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(ws@8.18.2)': + '@c15t/backend@1.5.0(@libsql/client@0.15.10)(@playwright/test@1.54.2)(@types/better-sqlite3@7.6.13)(better-sqlite3@12.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(ws@8.18.3)': dependencies: - '@c15t/translations': 1.2.2-canary-20250514203718 - '@doubletie/logger': 1.0.4(@opentelemetry/api@1.8.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@c15t/translations': 1.5.0 + '@doubletie/logger': 1.0.4(@opentelemetry/api@1.8.0)(@playwright/test@1.54.2)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@opentelemetry/api': 1.8.0 '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.8.0) '@opentelemetry/sdk-node': 0.51.1(@opentelemetry/api@1.8.0) '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.8.0) '@orpc/contract': 1.2.0 - '@orpc/openapi': 1.2.0(ws@8.18.2) - '@orpc/server': 1.2.0(ws@8.18.2) - '@orpc/zod': 1.2.0(@orpc/contract@1.2.0)(@orpc/server@1.2.0(ws@8.18.2))(ws@8.18.2)(zod@3.25.55) + '@orpc/openapi': 1.2.0(ws@8.18.3) + '@orpc/server': 1.2.0(ws@8.18.3) + '@orpc/zod': 1.2.0(@orpc/contract@1.2.0)(@orpc/server@1.2.0(ws@8.18.3))(ws@8.18.3)(zod@3.25.76) base-x: 5.0.1 defu: 6.1.4 - drizzle-orm: 0.41.0(@libsql/client@0.15.8)(@opentelemetry/api@1.8.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(kysely@0.27.6) + drizzle-orm: 0.41.0(@libsql/client@0.15.10)(@opentelemetry/api@1.8.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@12.2.0)(kysely@0.27.6) kysely: 0.27.6 neverthrow: 8.2.0 superjson: 2.2.2 - zod: 3.25.55 + zod: 3.25.76 transitivePeerDependencies: - '@aws-sdk/client-rds-data' - '@babel/core' @@ -3525,13 +3391,13 @@ snapshots: - supports-color - ws - '@c15t/nextjs@1.2.2-canary-20250603153501(@libsql/client@0.15.8)(@playwright/test@1.52.0)(@types/better-sqlite3@7.6.13)(@types/react-dom@19.1.6(@types/react@19.1.6))(@types/react@19.1.6)(better-sqlite3@11.10.0)(next@15.3.3(@opentelemetry/api@1.8.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(use-sync-external-store@1.5.0(react@19.1.0))(ws@8.18.2)': + '@c15t/nextjs@1.5.0(@libsql/client@0.15.10)(@playwright/test@1.54.2)(@types/better-sqlite3@7.6.13)(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(better-sqlite3@12.2.0)(next@15.4.6(@opentelemetry/api@1.8.0)(@playwright/test@1.54.2)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(use-sync-external-store@1.5.0(react@19.1.1))(ws@8.18.3)': dependencies: - '@c15t/react': 1.2.2-canary-20250603153501(@libsql/client@0.15.8)(@playwright/test@1.52.0)(@types/better-sqlite3@7.6.13)(@types/react-dom@19.1.6(@types/react@19.1.6))(@types/react@19.1.6)(better-sqlite3@11.10.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(use-sync-external-store@1.5.0(react@19.1.0))(ws@8.18.2) - '@c15t/translations': 1.2.2-canary-20250514203718 - next: 15.3.3(@opentelemetry/api@1.8.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@c15t/react': 1.5.0(@libsql/client@0.15.10)(@playwright/test@1.54.2)(@types/better-sqlite3@7.6.13)(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(better-sqlite3@12.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(use-sync-external-store@1.5.0(react@19.1.1))(ws@8.18.3) + '@c15t/translations': 1.5.0 + next: 15.4.6(@opentelemetry/api@1.8.0)(@playwright/test@1.54.2)(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) transitivePeerDependencies: - '@aws-sdk/client-rds-data' - '@babel/core' @@ -3573,63 +3439,16 @@ snapshots: - use-sync-external-store - ws - '@c15t/node-sdk@1.2.2-canary-20250602152741(@libsql/client@0.15.8)(@playwright/test@1.52.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(ws@8.18.2)': - dependencies: - '@c15t/backend': 1.2.2-canary-20250602152741(@libsql/client@0.15.8)(@playwright/test@1.52.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(ws@8.18.2) - '@orpc/client': 1.2.0 - '@orpc/contract': 1.2.0 - '@orpc/openapi-client': 1.4.2 - '@orpc/server': 1.2.0(ws@8.18.2) - transitivePeerDependencies: - - '@aws-sdk/client-rds-data' - - '@babel/core' - - '@cloudflare/workers-types' - - '@electric-sql/pglite' - - '@libsql/client' - - '@libsql/client-wasm' - - '@neondatabase/serverless' - - '@op-engineering/op-sqlite' - - '@planetscale/database' - - '@playwright/test' - - '@prisma/client' - - '@tidbcloud/serverless' - - '@types/better-sqlite3' - - '@types/pg' - - '@types/sql.js' - - '@vercel/postgres' - - '@xata.io/client' - - '@zod/core' - - babel-plugin-macros - - babel-plugin-react-compiler - - better-sqlite3 - - bun-types - - crossws - - expo-sqlite - - gel - - knex - - mysql2 - - pg - - postgres - - prisma - - react - - react-dom - - sass - - sql.js - - sqlite3 - - supports-color - - ws - - '@c15t/react@1.2.2-canary-20250603153501(@libsql/client@0.15.8)(@playwright/test@1.52.0)(@types/better-sqlite3@7.6.13)(@types/react-dom@19.1.6(@types/react@19.1.6))(@types/react@19.1.6)(better-sqlite3@11.10.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(use-sync-external-store@1.5.0(react@19.1.0))(ws@8.18.2)': + '@c15t/react@1.5.0(@libsql/client@0.15.10)(@playwright/test@1.54.2)(@types/better-sqlite3@7.6.13)(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(better-sqlite3@12.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(use-sync-external-store@1.5.0(react@19.1.1))(ws@8.18.3)': dependencies: - '@c15t/node-sdk': 1.2.2-canary-20250602152741(@libsql/client@0.15.8)(@playwright/test@1.52.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(ws@8.18.2) - '@radix-ui/react-accordion': 1.2.4(@types/react-dom@19.1.6(@types/react@19.1.6))(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.0(@types/react@19.1.6)(react@19.1.0) - '@radix-ui/react-switch': 1.1.4(@types/react-dom@19.1.6(@types/react@19.1.6))(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - c15t: 1.2.2-canary-20250603153501(@libsql/client@0.15.8)(@playwright/test@1.52.0)(@types/better-sqlite3@7.6.13)(@types/react@19.1.6)(better-sqlite3@11.10.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(use-sync-external-store@1.5.0(react@19.1.0))(ws@8.18.2) + '@radix-ui/react-accordion': 1.2.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-slot': 1.2.0(@types/react@19.1.9)(react@19.1.1) + '@radix-ui/react-switch': 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) + c15t: 1.5.0(@libsql/client@0.15.10)(@playwright/test@1.54.2)(@types/better-sqlite3@7.6.13)(@types/react@19.1.9)(better-sqlite3@12.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(use-sync-external-store@1.5.0(react@19.1.1))(ws@8.18.3) clsx: 2.1.1 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - zustand: 5.0.4(@types/react@19.1.6)(react@19.1.0)(use-sync-external-store@1.5.0(react@19.1.0)) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + zustand: 5.0.7(@types/react@19.1.9)(react@19.1.1)(use-sync-external-store@1.5.0(react@19.1.1)) transitivePeerDependencies: - '@aws-sdk/client-rds-data' - '@babel/core' @@ -3671,9 +3490,7 @@ snapshots: - use-sync-external-store - ws - '@c15t/translations@1.0.0': {} - - '@c15t/translations@1.2.2-canary-20250514203718': {} + '@c15t/translations@1.5.0': {} '@clack/core@1.0.0-alpha.0': dependencies: @@ -3689,16 +3506,14 @@ snapshots: '@colors/colors@1.5.0': optional: true - '@didomi/react@1.8.8(react@19.1.0)': + '@didomi/react@1.8.8(react@19.1.1)': dependencies: prop-types: 15.8.1 - react: 19.1.0 - - '@discoveryjs/json-ext@0.5.7': {} + react: 19.1.1 - '@doubletie/logger@1.0.4(@opentelemetry/api@1.8.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@doubletie/logger@1.0.4(@opentelemetry/api@1.8.0)(@playwright/test@1.54.2)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - next: 15.2.2(@opentelemetry/api@1.8.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.2.2(@opentelemetry/api@1.8.0)(@playwright/test@1.54.2)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) picocolors: 1.1.1 tinygradient: 2.0.1 transitivePeerDependencies: @@ -3713,7 +3528,18 @@ snapshots: '@drizzle-team/brocli@0.10.2': {} - '@emnapi/runtime@1.4.3': + '@emnapi/core@1.4.5': + dependencies: + '@emnapi/wasi-threads': 1.0.4 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.4.5': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.0.4': dependencies: tslib: 2.8.1 optional: true @@ -3728,148 +3554,151 @@ snapshots: '@esbuild-kit/core-utils': 3.3.2 get-tsconfig: 4.10.1 - '@esbuild/aix-ppc64@0.25.4': + '@esbuild/aix-ppc64@0.25.8': optional: true '@esbuild/android-arm64@0.18.20': optional: true - '@esbuild/android-arm64@0.25.4': + '@esbuild/android-arm64@0.25.8': optional: true '@esbuild/android-arm@0.18.20': optional: true - '@esbuild/android-arm@0.25.4': + '@esbuild/android-arm@0.25.8': optional: true '@esbuild/android-x64@0.18.20': optional: true - '@esbuild/android-x64@0.25.4': + '@esbuild/android-x64@0.25.8': optional: true '@esbuild/darwin-arm64@0.18.20': optional: true - '@esbuild/darwin-arm64@0.25.4': + '@esbuild/darwin-arm64@0.25.8': optional: true '@esbuild/darwin-x64@0.18.20': optional: true - '@esbuild/darwin-x64@0.25.4': + '@esbuild/darwin-x64@0.25.8': optional: true '@esbuild/freebsd-arm64@0.18.20': optional: true - '@esbuild/freebsd-arm64@0.25.4': + '@esbuild/freebsd-arm64@0.25.8': optional: true '@esbuild/freebsd-x64@0.18.20': optional: true - '@esbuild/freebsd-x64@0.25.4': + '@esbuild/freebsd-x64@0.25.8': optional: true '@esbuild/linux-arm64@0.18.20': optional: true - '@esbuild/linux-arm64@0.25.4': + '@esbuild/linux-arm64@0.25.8': optional: true '@esbuild/linux-arm@0.18.20': optional: true - '@esbuild/linux-arm@0.25.4': + '@esbuild/linux-arm@0.25.8': optional: true '@esbuild/linux-ia32@0.18.20': optional: true - '@esbuild/linux-ia32@0.25.4': + '@esbuild/linux-ia32@0.25.8': optional: true '@esbuild/linux-loong64@0.18.20': optional: true - '@esbuild/linux-loong64@0.25.4': + '@esbuild/linux-loong64@0.25.8': optional: true '@esbuild/linux-mips64el@0.18.20': optional: true - '@esbuild/linux-mips64el@0.25.4': + '@esbuild/linux-mips64el@0.25.8': optional: true '@esbuild/linux-ppc64@0.18.20': optional: true - '@esbuild/linux-ppc64@0.25.4': + '@esbuild/linux-ppc64@0.25.8': optional: true '@esbuild/linux-riscv64@0.18.20': optional: true - '@esbuild/linux-riscv64@0.25.4': + '@esbuild/linux-riscv64@0.25.8': optional: true '@esbuild/linux-s390x@0.18.20': optional: true - '@esbuild/linux-s390x@0.25.4': + '@esbuild/linux-s390x@0.25.8': optional: true '@esbuild/linux-x64@0.18.20': optional: true - '@esbuild/linux-x64@0.25.4': + '@esbuild/linux-x64@0.25.8': optional: true - '@esbuild/netbsd-arm64@0.25.4': + '@esbuild/netbsd-arm64@0.25.8': optional: true '@esbuild/netbsd-x64@0.18.20': optional: true - '@esbuild/netbsd-x64@0.25.4': + '@esbuild/netbsd-x64@0.25.8': optional: true - '@esbuild/openbsd-arm64@0.25.4': + '@esbuild/openbsd-arm64@0.25.8': optional: true '@esbuild/openbsd-x64@0.18.20': optional: true - '@esbuild/openbsd-x64@0.25.4': + '@esbuild/openbsd-x64@0.25.8': + optional: true + + '@esbuild/openharmony-arm64@0.25.8': optional: true '@esbuild/sunos-x64@0.18.20': optional: true - '@esbuild/sunos-x64@0.25.4': + '@esbuild/sunos-x64@0.25.8': optional: true '@esbuild/win32-arm64@0.18.20': optional: true - '@esbuild/win32-arm64@0.25.4': + '@esbuild/win32-arm64@0.25.8': optional: true '@esbuild/win32-ia32@0.18.20': optional: true - '@esbuild/win32-ia32@0.25.4': + '@esbuild/win32-ia32@0.25.8': optional: true '@esbuild/win32-x64@0.18.20': optional: true - '@esbuild/win32-x64@0.25.4': + '@esbuild/win32-x64@0.25.8': optional: true - '@grpc/grpc-js@1.13.3': + '@grpc/grpc-js@1.13.4': dependencies: '@grpc/proto-loader': 0.7.15 '@js-sdsl/ordered-map': 4.4.2 @@ -3878,7 +3707,7 @@ snapshots: dependencies: lodash.camelcase: 4.3.0 long: 5.3.2 - protobufjs: 7.4.0 + protobufjs: 7.5.3 yargs: 17.7.2 '@img/sharp-darwin-arm64@0.33.5': @@ -3886,9 +3715,9 @@ snapshots: '@img/sharp-libvips-darwin-arm64': 1.0.4 optional: true - '@img/sharp-darwin-arm64@0.34.2': + '@img/sharp-darwin-arm64@0.34.3': optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.1.0 + '@img/sharp-libvips-darwin-arm64': 1.2.0 optional: true '@img/sharp-darwin-x64@0.33.5': @@ -3896,60 +3725,60 @@ snapshots: '@img/sharp-libvips-darwin-x64': 1.0.4 optional: true - '@img/sharp-darwin-x64@0.34.2': + '@img/sharp-darwin-x64@0.34.3': optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.1.0 + '@img/sharp-libvips-darwin-x64': 1.2.0 optional: true '@img/sharp-libvips-darwin-arm64@1.0.4': optional: true - '@img/sharp-libvips-darwin-arm64@1.1.0': + '@img/sharp-libvips-darwin-arm64@1.2.0': optional: true '@img/sharp-libvips-darwin-x64@1.0.4': optional: true - '@img/sharp-libvips-darwin-x64@1.1.0': + '@img/sharp-libvips-darwin-x64@1.2.0': optional: true '@img/sharp-libvips-linux-arm64@1.0.4': optional: true - '@img/sharp-libvips-linux-arm64@1.1.0': + '@img/sharp-libvips-linux-arm64@1.2.0': optional: true '@img/sharp-libvips-linux-arm@1.0.5': optional: true - '@img/sharp-libvips-linux-arm@1.1.0': + '@img/sharp-libvips-linux-arm@1.2.0': optional: true - '@img/sharp-libvips-linux-ppc64@1.1.0': + '@img/sharp-libvips-linux-ppc64@1.2.0': optional: true '@img/sharp-libvips-linux-s390x@1.0.4': optional: true - '@img/sharp-libvips-linux-s390x@1.1.0': + '@img/sharp-libvips-linux-s390x@1.2.0': optional: true '@img/sharp-libvips-linux-x64@1.0.4': optional: true - '@img/sharp-libvips-linux-x64@1.1.0': + '@img/sharp-libvips-linux-x64@1.2.0': optional: true '@img/sharp-libvips-linuxmusl-arm64@1.0.4': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.1.0': + '@img/sharp-libvips-linuxmusl-arm64@1.2.0': optional: true '@img/sharp-libvips-linuxmusl-x64@1.0.4': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.1.0': + '@img/sharp-libvips-linuxmusl-x64@1.2.0': optional: true '@img/sharp-linux-arm64@0.33.5': @@ -3957,9 +3786,9 @@ snapshots: '@img/sharp-libvips-linux-arm64': 1.0.4 optional: true - '@img/sharp-linux-arm64@0.34.2': + '@img/sharp-linux-arm64@0.34.3': optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.1.0 + '@img/sharp-libvips-linux-arm64': 1.2.0 optional: true '@img/sharp-linux-arm@0.33.5': @@ -3967,9 +3796,14 @@ snapshots: '@img/sharp-libvips-linux-arm': 1.0.5 optional: true - '@img/sharp-linux-arm@0.34.2': + '@img/sharp-linux-arm@0.34.3': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.2.0 + optional: true + + '@img/sharp-linux-ppc64@0.34.3': optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.1.0 + '@img/sharp-libvips-linux-ppc64': 1.2.0 optional: true '@img/sharp-linux-s390x@0.33.5': @@ -3977,9 +3811,9 @@ snapshots: '@img/sharp-libvips-linux-s390x': 1.0.4 optional: true - '@img/sharp-linux-s390x@0.34.2': + '@img/sharp-linux-s390x@0.34.3': optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.1.0 + '@img/sharp-libvips-linux-s390x': 1.2.0 optional: true '@img/sharp-linux-x64@0.33.5': @@ -3987,9 +3821,9 @@ snapshots: '@img/sharp-libvips-linux-x64': 1.0.4 optional: true - '@img/sharp-linux-x64@0.34.2': + '@img/sharp-linux-x64@0.34.3': optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.1.0 + '@img/sharp-libvips-linux-x64': 1.2.0 optional: true '@img/sharp-linuxmusl-arm64@0.33.5': @@ -3997,9 +3831,9 @@ snapshots: '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 optional: true - '@img/sharp-linuxmusl-arm64@0.34.2': + '@img/sharp-linuxmusl-arm64@0.34.3': optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.1.0 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.0 optional: true '@img/sharp-linuxmusl-x64@0.33.5': @@ -4007,68 +3841,68 @@ snapshots: '@img/sharp-libvips-linuxmusl-x64': 1.0.4 optional: true - '@img/sharp-linuxmusl-x64@0.34.2': + '@img/sharp-linuxmusl-x64@0.34.3': optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.1.0 + '@img/sharp-libvips-linuxmusl-x64': 1.2.0 optional: true '@img/sharp-wasm32@0.33.5': dependencies: - '@emnapi/runtime': 1.4.3 + '@emnapi/runtime': 1.4.5 optional: true - '@img/sharp-wasm32@0.34.2': + '@img/sharp-wasm32@0.34.3': dependencies: - '@emnapi/runtime': 1.4.3 + '@emnapi/runtime': 1.4.5 optional: true - '@img/sharp-win32-arm64@0.34.2': + '@img/sharp-win32-arm64@0.34.3': optional: true '@img/sharp-win32-ia32@0.33.5': optional: true - '@img/sharp-win32-ia32@0.34.2': + '@img/sharp-win32-ia32@0.34.3': optional: true '@img/sharp-win32-x64@0.33.5': optional: true - '@img/sharp-win32-x64@0.34.2': + '@img/sharp-win32-x64@0.34.3': optional: true - '@jridgewell/sourcemap-codec@1.5.0': {} + '@jridgewell/sourcemap-codec@1.5.4': {} '@js-sdsl/ordered-map@4.4.2': {} - '@libsql/client@0.15.8': + '@libsql/client@0.15.10': dependencies: - '@libsql/core': 0.15.8 + '@libsql/core': 0.15.10 '@libsql/hrana-client': 0.7.0 - js-base64: 3.7.7 - libsql: 0.5.12 + js-base64: 3.7.8 + libsql: 0.5.17 promise-limit: 2.7.0 transitivePeerDependencies: - bufferutil - utf-8-validate optional: true - '@libsql/core@0.15.8': + '@libsql/core@0.15.10': dependencies: - js-base64: 3.7.7 + js-base64: 3.7.8 optional: true - '@libsql/darwin-arm64@0.5.12': + '@libsql/darwin-arm64@0.5.17': optional: true - '@libsql/darwin-x64@0.5.12': + '@libsql/darwin-x64@0.5.17': optional: true '@libsql/hrana-client@0.7.0': dependencies: '@libsql/isomorphic-fetch': 0.3.1 '@libsql/isomorphic-ws': 0.1.5 - js-base64: 3.7.7 + js-base64: 3.7.8 node-fetch: 3.3.2 transitivePeerDependencies: - bufferutil @@ -4081,87 +3915,63 @@ snapshots: '@libsql/isomorphic-ws@0.1.5': dependencies: '@types/ws': 8.18.1 - ws: 8.18.2 + ws: 8.18.3 transitivePeerDependencies: - bufferutil - utf-8-validate optional: true - '@libsql/linux-arm-gnueabihf@0.5.12': + '@libsql/linux-arm-gnueabihf@0.5.17': optional: true - '@libsql/linux-arm-musleabihf@0.5.12': + '@libsql/linux-arm-musleabihf@0.5.17': optional: true - '@libsql/linux-arm64-gnu@0.5.12': + '@libsql/linux-arm64-gnu@0.5.17': optional: true - '@libsql/linux-arm64-musl@0.5.12': + '@libsql/linux-arm64-musl@0.5.17': optional: true - '@libsql/linux-x64-gnu@0.5.12': + '@libsql/linux-x64-gnu@0.5.17': optional: true - '@libsql/linux-x64-musl@0.5.12': + '@libsql/linux-x64-musl@0.5.17': optional: true - '@libsql/win32-x64-msvc@0.5.12': + '@libsql/win32-x64-msvc@0.5.17': optional: true - '@module-federation/error-codes@0.14.0': {} - - '@module-federation/error-codes@0.14.3': - optional: true + '@module-federation/error-codes@0.17.1': {} - '@module-federation/runtime-core@0.14.0': + '@module-federation/runtime-core@0.17.1': dependencies: - '@module-federation/error-codes': 0.14.0 - '@module-federation/sdk': 0.14.0 + '@module-federation/error-codes': 0.17.1 + '@module-federation/sdk': 0.17.1 - '@module-federation/runtime-core@0.14.3': + '@module-federation/runtime-tools@0.17.1': dependencies: - '@module-federation/error-codes': 0.14.3 - '@module-federation/sdk': 0.14.3 - optional: true + '@module-federation/runtime': 0.17.1 + '@module-federation/webpack-bundler-runtime': 0.17.1 - '@module-federation/runtime-tools@0.14.0': + '@module-federation/runtime@0.17.1': dependencies: - '@module-federation/runtime': 0.14.0 - '@module-federation/webpack-bundler-runtime': 0.14.0 + '@module-federation/error-codes': 0.17.1 + '@module-federation/runtime-core': 0.17.1 + '@module-federation/sdk': 0.17.1 - '@module-federation/runtime-tools@0.14.3': - dependencies: - '@module-federation/runtime': 0.14.3 - '@module-federation/webpack-bundler-runtime': 0.14.3 - optional: true + '@module-federation/sdk@0.17.1': {} - '@module-federation/runtime@0.14.0': + '@module-federation/webpack-bundler-runtime@0.17.1': dependencies: - '@module-federation/error-codes': 0.14.0 - '@module-federation/runtime-core': 0.14.0 - '@module-federation/sdk': 0.14.0 + '@module-federation/runtime': 0.17.1 + '@module-federation/sdk': 0.17.1 - '@module-federation/runtime@0.14.3': + '@napi-rs/wasm-runtime@1.0.3': dependencies: - '@module-federation/error-codes': 0.14.3 - '@module-federation/runtime-core': 0.14.3 - '@module-federation/sdk': 0.14.3 - optional: true - - '@module-federation/sdk@0.14.0': {} - - '@module-federation/sdk@0.14.3': - optional: true - - '@module-federation/webpack-bundler-runtime@0.14.0': - dependencies: - '@module-federation/runtime': 0.14.0 - '@module-federation/sdk': 0.14.0 - - '@module-federation/webpack-bundler-runtime@0.14.3': - dependencies: - '@module-federation/runtime': 0.14.3 - '@module-federation/sdk': 0.14.3 + '@emnapi/core': 1.4.5 + '@emnapi/runtime': 1.4.5 + '@tybys/wasm-util': 0.10.0 optional: true '@neon-rs/load@0.0.4': @@ -4169,63 +3979,64 @@ snapshots: '@next/env@15.2.2': {} - '@next/env@15.3.3': {} + '@next/env@15.4.6': {} '@next/swc-darwin-arm64@15.2.2': optional: true - '@next/swc-darwin-arm64@15.3.3': + '@next/swc-darwin-arm64@15.4.6': optional: true '@next/swc-darwin-x64@15.2.2': optional: true - '@next/swc-darwin-x64@15.3.3': + '@next/swc-darwin-x64@15.4.6': optional: true '@next/swc-linux-arm64-gnu@15.2.2': optional: true - '@next/swc-linux-arm64-gnu@15.3.3': + '@next/swc-linux-arm64-gnu@15.4.6': optional: true '@next/swc-linux-arm64-musl@15.2.2': optional: true - '@next/swc-linux-arm64-musl@15.3.3': + '@next/swc-linux-arm64-musl@15.4.6': optional: true '@next/swc-linux-x64-gnu@15.2.2': optional: true - '@next/swc-linux-x64-gnu@15.3.3': + '@next/swc-linux-x64-gnu@15.4.6': optional: true '@next/swc-linux-x64-musl@15.2.2': optional: true - '@next/swc-linux-x64-musl@15.3.3': + '@next/swc-linux-x64-musl@15.4.6': optional: true '@next/swc-win32-arm64-msvc@15.2.2': optional: true - '@next/swc-win32-arm64-msvc@15.3.3': + '@next/swc-win32-arm64-msvc@15.4.6': optional: true '@next/swc-win32-x64-msvc@15.2.2': optional: true - '@next/swc-win32-x64-msvc@15.3.3': + '@next/swc-win32-x64-msvc@15.4.6': optional: true '@opentelemetry/api-logs@0.51.1': dependencies: - '@opentelemetry/api': 1.9.0 + '@opentelemetry/api': 1.8.0 '@opentelemetry/api@1.8.0': {} - '@opentelemetry/api@1.9.0': {} + '@opentelemetry/api@1.9.0': + optional: true '@opentelemetry/context-async-hooks@1.24.1(@opentelemetry/api@1.8.0)': dependencies: @@ -4243,7 +4054,7 @@ snapshots: '@opentelemetry/exporter-trace-otlp-grpc@0.51.1(@opentelemetry/api@1.8.0)': dependencies: - '@grpc/grpc-js': 1.13.3 + '@grpc/grpc-js': 1.13.4 '@opentelemetry/api': 1.8.0 '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) '@opentelemetry/otlp-grpc-exporter-base': 0.51.1(@opentelemetry/api@1.8.0) @@ -4297,18 +4108,18 @@ snapshots: '@opentelemetry/otlp-grpc-exporter-base@0.51.1(@opentelemetry/api@1.8.0)': dependencies: - '@grpc/grpc-js': 1.13.3 + '@grpc/grpc-js': 1.13.4 '@opentelemetry/api': 1.8.0 '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) '@opentelemetry/otlp-exporter-base': 0.51.1(@opentelemetry/api@1.8.0) - protobufjs: 7.4.0 + protobufjs: 7.5.3 '@opentelemetry/otlp-proto-exporter-base@0.51.1(@opentelemetry/api@1.8.0)': dependencies: '@opentelemetry/api': 1.8.0 '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) '@opentelemetry/otlp-exporter-base': 0.51.1(@opentelemetry/api@1.8.0) - protobufjs: 7.4.0 + protobufjs: 7.5.3 '@opentelemetry/otlp-transformer@0.51.1(@opentelemetry/api@1.8.0)': dependencies: @@ -4410,26 +4221,12 @@ snapshots: '@orpc/standard-server-fetch': 1.2.0 '@orpc/standard-server-peer': 1.2.0 - '@orpc/client@1.4.2': - dependencies: - '@orpc/shared': 1.4.2 - '@orpc/standard-server': 1.4.2 - '@orpc/standard-server-fetch': 1.4.2 - '@orpc/standard-server-peer': 1.4.2 - '@orpc/contract@1.2.0': dependencies: '@orpc/client': 1.2.0 '@orpc/shared': 1.2.0 '@standard-schema/spec': 1.0.0 - '@orpc/contract@1.4.2': - dependencies: - '@orpc/client': 1.4.2 - '@orpc/shared': 1.4.2 - '@standard-schema/spec': 1.0.0 - openapi-types: 12.1.3 - '@orpc/openapi-client@1.2.0': dependencies: '@orpc/client': 1.2.0 @@ -4437,29 +4234,22 @@ snapshots: '@orpc/shared': 1.2.0 '@orpc/standard-server': 1.2.0 - '@orpc/openapi-client@1.4.2': - dependencies: - '@orpc/client': 1.4.2 - '@orpc/contract': 1.4.2 - '@orpc/shared': 1.4.2 - '@orpc/standard-server': 1.4.2 - - '@orpc/openapi@1.2.0(ws@8.18.2)': + '@orpc/openapi@1.2.0(ws@8.18.3)': dependencies: '@orpc/client': 1.2.0 '@orpc/contract': 1.2.0 '@orpc/openapi-client': 1.2.0 - '@orpc/server': 1.2.0(ws@8.18.2) + '@orpc/server': 1.2.0(ws@8.18.3) '@orpc/shared': 1.2.0 '@orpc/standard-server': 1.2.0 json-schema-typed: 8.0.1 openapi-types: 12.1.3 - rou3: 0.6.1 + rou3: 0.6.3 transitivePeerDependencies: - crossws - ws - '@orpc/server@1.2.0(ws@8.18.2)': + '@orpc/server@1.2.0(ws@8.18.3)': dependencies: '@orpc/client': 1.2.0 '@orpc/contract': 1.2.0 @@ -4469,16 +4259,11 @@ snapshots: '@orpc/standard-server-node': 1.2.0 '@orpc/standard-server-peer': 1.2.0 optionalDependencies: - ws: 8.18.2 + ws: 8.18.3 '@orpc/shared@1.2.0': dependencies: - radash: 12.1.0 - type-fest: 4.41.0 - - '@orpc/shared@1.4.2': - dependencies: - radash: 12.1.0 + radash: 12.1.1 type-fest: 4.41.0 '@orpc/standard-server-fetch@1.2.0': @@ -4486,11 +4271,6 @@ snapshots: '@orpc/shared': 1.2.0 '@orpc/standard-server': 1.2.0 - '@orpc/standard-server-fetch@1.4.2': - dependencies: - '@orpc/shared': 1.4.2 - '@orpc/standard-server': 1.4.2 - '@orpc/standard-server-node@1.2.0': dependencies: '@orpc/shared': 1.2.0 @@ -4501,36 +4281,27 @@ snapshots: '@orpc/shared': 1.2.0 '@orpc/standard-server': 1.2.0 - '@orpc/standard-server-peer@1.4.2': - dependencies: - '@orpc/shared': 1.4.2 - '@orpc/standard-server': 1.4.2 - '@orpc/standard-server@1.2.0': dependencies: '@orpc/shared': 1.2.0 - '@orpc/standard-server@1.4.2': - dependencies: - '@orpc/shared': 1.4.2 - - '@orpc/zod@1.2.0(@orpc/contract@1.2.0)(@orpc/server@1.2.0(ws@8.18.2))(ws@8.18.2)(zod@3.25.55)': + '@orpc/zod@1.2.0(@orpc/contract@1.2.0)(@orpc/server@1.2.0(ws@8.18.3))(ws@8.18.3)(zod@3.25.76)': dependencies: '@orpc/contract': 1.2.0 - '@orpc/openapi': 1.2.0(ws@8.18.2) - '@orpc/server': 1.2.0(ws@8.18.2) + '@orpc/openapi': 1.2.0(ws@8.18.3) + '@orpc/server': 1.2.0(ws@8.18.3) '@orpc/shared': 1.2.0 escape-string-regexp: 5.0.0 wildcard-match: 5.1.4 optionalDependencies: - zod: 3.25.55 + zod: 3.25.76 transitivePeerDependencies: - crossws - ws - '@playwright/test@1.52.0': + '@playwright/test@1.54.2': dependencies: - playwright: 1.52.0 + playwright: 1.54.2 '@polka/url@1.0.0-next.29': {} @@ -4559,189 +4330,189 @@ snapshots: '@radix-ui/primitive@1.1.2': {} - '@radix-ui/react-accordion@1.2.4(@types/react-dom@19.1.6(@types/react@19.1.6))(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-accordion@1.2.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)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-collapsible': 1.1.4(@types/react-dom@19.1.6(@types/react@19.1.6))(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-collection': 1.1.3(@types/react-dom@19.1.6(@types/react@19.1.6))(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.6)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.6)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.6)(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.6)(react@19.1.0) - '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.1.6(@types/react@19.1.6))(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.1.1(@types/react@19.1.6)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-collapsible': 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-collection': 1.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-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.0.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.1.1(@types/react@19.1.9)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.6 - '@types/react-dom': 19.1.6(@types/react@19.1.6) + '@types/react': 19.1.9 + '@types/react-dom': 19.1.7(@types/react@19.1.9) - '@radix-ui/react-collapsible@1.1.4(@types/react-dom@19.1.6(@types/react@19.1.6))(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-collapsible@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)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.6)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.6)(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.6)(react@19.1.0) - '@radix-ui/react-presence': 1.1.3(@types/react-dom@19.1.6(@types/react@19.1.6))(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.1.6(@types/react@19.1.6))(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.1.1(@types/react@19.1.6)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.6)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@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.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.0.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.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) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.6 - '@types/react-dom': 19.1.6(@types/react@19.1.6) + '@types/react': 19.1.9 + '@types/react-dom': 19.1.7(@types/react@19.1.9) - '@radix-ui/react-collection@1.1.3(@types/react-dom@19.1.6(@types/react@19.1.6))(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-collection@1.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)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.6)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.6)(react@19.1.0) - '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.1.6(@types/react@19.1.6))(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.0(@types/react@19.1.6)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@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.0.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.0(@types/react@19.1.9)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.6 - '@types/react-dom': 19.1.6(@types/react@19.1.6) + '@types/react': 19.1.9 + '@types/react-dom': 19.1.7(@types/react@19.1.9) - '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.6)(react@19.1.0)': + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.9)(react@19.1.1)': dependencies: - react: 19.1.0 + react: 19.1.1 optionalDependencies: - '@types/react': 19.1.6 + '@types/react': 19.1.9 - '@radix-ui/react-context@1.1.2(@types/react@19.1.6)(react@19.1.0)': + '@radix-ui/react-context@1.1.2(@types/react@19.1.9)(react@19.1.1)': dependencies: - react: 19.1.0 + react: 19.1.1 optionalDependencies: - '@types/react': 19.1.6 + '@types/react': 19.1.9 - '@radix-ui/react-direction@1.1.1(@types/react@19.1.6)(react@19.1.0)': + '@radix-ui/react-direction@1.1.1(@types/react@19.1.9)(react@19.1.1)': dependencies: - react: 19.1.0 + react: 19.1.1 optionalDependencies: - '@types/react': 19.1.6 + '@types/react': 19.1.9 - '@radix-ui/react-id@1.1.1(@types/react@19.1.6)(react@19.1.0)': + '@radix-ui/react-id@1.1.1(@types/react@19.1.9)(react@19.1.1)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.6)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.9)(react@19.1.1) + react: 19.1.1 optionalDependencies: - '@types/react': 19.1.6 + '@types/react': 19.1.9 - '@radix-ui/react-presence@1.1.3(@types/react-dom@19.1.6(@types/react@19.1.6))(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-presence@1.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)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.6)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.6)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@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) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.6 - '@types/react-dom': 19.1.6(@types/react@19.1.6) + '@types/react': 19.1.9 + '@types/react-dom': 19.1.7(@types/react@19.1.9) - '@radix-ui/react-primitive@2.0.3(@types/react-dom@19.1.6(@types/react@19.1.6))(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-primitive@2.0.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)': dependencies: - '@radix-ui/react-slot': 1.2.0(@types/react@19.1.6)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-slot': 1.2.0(@types/react@19.1.9)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.6 - '@types/react-dom': 19.1.6(@types/react@19.1.6) + '@types/react': 19.1.9 + '@types/react-dom': 19.1.7(@types/react@19.1.9) - '@radix-ui/react-slot@1.2.0(@types/react@19.1.6)(react@19.1.0)': + '@radix-ui/react-slot@1.2.0(@types/react@19.1.9)(react@19.1.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.6)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.9)(react@19.1.1) + react: 19.1.1 optionalDependencies: - '@types/react': 19.1.6 + '@types/react': 19.1.9 - '@radix-ui/react-switch@1.1.4(@types/react-dom@19.1.6(@types/react@19.1.6))(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-switch@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)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.6)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.6)(react@19.1.0) - '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.1.6(@types/react@19.1.6))(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.1.1(@types/react@19.1.6)(react@19.1.0) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.6)(react@19.1.0) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.6)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@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.0.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.1.1(@types/react@19.1.9)(react@19.1.1) + '@radix-ui/react-use-previous': 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) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.6 - '@types/react-dom': 19.1.6(@types/react@19.1.6) + '@types/react': 19.1.9 + '@types/react-dom': 19.1.7(@types/react@19.1.9) - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.6)(react@19.1.0)': + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.9)(react@19.1.1)': dependencies: - react: 19.1.0 + react: 19.1.1 optionalDependencies: - '@types/react': 19.1.6 + '@types/react': 19.1.9 - '@radix-ui/react-use-controllable-state@1.1.1(@types/react@19.1.6)(react@19.1.0)': + '@radix-ui/react-use-controllable-state@1.1.1(@types/react@19.1.9)(react@19.1.1)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.6)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.9)(react@19.1.1) + react: 19.1.1 optionalDependencies: - '@types/react': 19.1.6 + '@types/react': 19.1.9 - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.6)(react@19.1.0)': + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.9)(react@19.1.1)': dependencies: - react: 19.1.0 + react: 19.1.1 optionalDependencies: - '@types/react': 19.1.6 + '@types/react': 19.1.9 - '@radix-ui/react-use-previous@1.1.1(@types/react@19.1.6)(react@19.1.0)': + '@radix-ui/react-use-previous@1.1.1(@types/react@19.1.9)(react@19.1.1)': dependencies: - react: 19.1.0 + react: 19.1.1 optionalDependencies: - '@types/react': 19.1.6 + '@types/react': 19.1.9 - '@radix-ui/react-use-size@1.1.1(@types/react@19.1.6)(react@19.1.0)': + '@radix-ui/react-use-size@1.1.1(@types/react@19.1.9)(react@19.1.1)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.6)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.9)(react@19.1.1) + react: 19.1.1 optionalDependencies: - '@types/react': 19.1.6 + '@types/react': 19.1.9 - '@rollup/rollup-linux-x64-gnu@4.41.0': + '@rollup/rollup-linux-x64-gnu@4.46.2': optional: true - '@rsbuild/core@1.3.22': + '@rsbuild/core@1.4.15': dependencies: - '@rspack/core': 1.3.12(@swc/helpers@0.5.17) + '@rspack/core': 1.4.11(@swc/helpers@0.5.17) '@rspack/lite-tapable': 1.0.1 '@swc/helpers': 0.5.17 - core-js: 3.42.0 - jiti: 2.4.2 + core-js: 3.45.0 + jiti: 2.5.1 - '@rsbuild/plugin-check-syntax@1.3.0(@rsbuild/core@1.3.22)': + '@rsbuild/plugin-check-syntax@1.3.0(@rsbuild/core@1.4.15)': dependencies: - acorn: 8.14.1 - browserslist-to-es-version: 1.0.0 + acorn: 8.15.0 + browserslist-to-es-version: 1.1.1 htmlparser2: 10.0.0 picocolors: 1.1.1 - source-map: 0.7.4 + source-map: 0.7.6 optionalDependencies: - '@rsbuild/core': 1.3.22 + '@rsbuild/core': 1.4.15 - '@rsdoctor/client@1.1.3': {} + '@rsdoctor/client@1.2.1': {} - '@rsdoctor/core@1.1.3(@rsbuild/core@1.3.22)(@rspack/core@1.3.15(@swc/helpers@0.5.17))': + '@rsdoctor/core@1.2.1(@rsbuild/core@1.4.15)(@rspack/core@1.4.11(@swc/helpers@0.5.17))': dependencies: - '@rsbuild/plugin-check-syntax': 1.3.0(@rsbuild/core@1.3.22) - '@rsdoctor/graph': 1.1.3(@rspack/core@1.3.15(@swc/helpers@0.5.17)) - '@rsdoctor/sdk': 1.1.3(@rspack/core@1.3.15(@swc/helpers@0.5.17)) - '@rsdoctor/types': 1.1.3(@rspack/core@1.3.15(@swc/helpers@0.5.17)) - '@rsdoctor/utils': 1.1.3(@rspack/core@1.3.15(@swc/helpers@0.5.17)) - axios: 1.9.0 - browserslist-load-config: 1.0.0 + '@rsbuild/plugin-check-syntax': 1.3.0(@rsbuild/core@1.4.15) + '@rsdoctor/graph': 1.2.1(@rspack/core@1.4.11(@swc/helpers@0.5.17)) + '@rsdoctor/sdk': 1.2.1(@rspack/core@1.4.11(@swc/helpers@0.5.17)) + '@rsdoctor/types': 1.2.1(@rspack/core@1.4.11(@swc/helpers@0.5.17)) + '@rsdoctor/utils': 1.2.1(@rspack/core@1.4.11(@swc/helpers@0.5.17)) + axios: 1.11.0 + browserslist-load-config: 1.0.1 enhanced-resolve: 5.12.0 filesize: 10.1.6 - fs-extra: 11.3.0 + fs-extra: 11.3.1 lodash: 4.17.21 path-browserify: 1.0.1 semver: 7.7.2 - source-map: 0.7.4 - webpack-bundle-analyzer: 4.10.2 + source-map: 0.7.6 + source-map-js: 1.2.1 transitivePeerDependencies: - '@rsbuild/core' - '@rspack/core' @@ -4751,13 +4522,13 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/graph@1.1.3(@rspack/core@1.3.15(@swc/helpers@0.5.17))': + '@rsdoctor/graph@1.2.1(@rspack/core@1.4.11(@swc/helpers@0.5.17))': dependencies: - '@rsdoctor/types': 1.1.3(@rspack/core@1.3.15(@swc/helpers@0.5.17)) - '@rsdoctor/utils': 1.1.3(@rspack/core@1.3.15(@swc/helpers@0.5.17)) + '@rsdoctor/types': 1.2.1(@rspack/core@1.4.11(@swc/helpers@0.5.17)) + '@rsdoctor/utils': 1.2.1(@rspack/core@1.4.11(@swc/helpers@0.5.17)) lodash.unionby: 4.8.0 socket.io: 4.8.1 - source-map: 0.7.4 + source-map: 0.7.6 transitivePeerDependencies: - '@rspack/core' - bufferutil @@ -4765,16 +4536,16 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/rspack-plugin@1.1.3(@rsbuild/core@1.3.22)(@rspack/core@1.3.15(@swc/helpers@0.5.17))': + '@rsdoctor/rspack-plugin@1.2.1(@rsbuild/core@1.4.15)(@rspack/core@1.4.11(@swc/helpers@0.5.17))': dependencies: - '@rsdoctor/core': 1.1.3(@rsbuild/core@1.3.22)(@rspack/core@1.3.15(@swc/helpers@0.5.17)) - '@rsdoctor/graph': 1.1.3(@rspack/core@1.3.15(@swc/helpers@0.5.17)) - '@rsdoctor/sdk': 1.1.3(@rspack/core@1.3.15(@swc/helpers@0.5.17)) - '@rsdoctor/types': 1.1.3(@rspack/core@1.3.15(@swc/helpers@0.5.17)) - '@rsdoctor/utils': 1.1.3(@rspack/core@1.3.15(@swc/helpers@0.5.17)) + '@rsdoctor/core': 1.2.1(@rsbuild/core@1.4.15)(@rspack/core@1.4.11(@swc/helpers@0.5.17)) + '@rsdoctor/graph': 1.2.1(@rspack/core@1.4.11(@swc/helpers@0.5.17)) + '@rsdoctor/sdk': 1.2.1(@rspack/core@1.4.11(@swc/helpers@0.5.17)) + '@rsdoctor/types': 1.2.1(@rspack/core@1.4.11(@swc/helpers@0.5.17)) + '@rsdoctor/utils': 1.2.1(@rspack/core@1.4.11(@swc/helpers@0.5.17)) lodash: 4.17.21 optionalDependencies: - '@rspack/core': 1.3.15(@swc/helpers@0.5.17) + '@rspack/core': 1.4.11(@swc/helpers@0.5.17) transitivePeerDependencies: - '@rsbuild/core' - bufferutil @@ -4783,23 +4554,23 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/sdk@1.1.3(@rspack/core@1.3.15(@swc/helpers@0.5.17))': + '@rsdoctor/sdk@1.2.1(@rspack/core@1.4.11(@swc/helpers@0.5.17))': dependencies: - '@rsdoctor/client': 1.1.3 - '@rsdoctor/graph': 1.1.3(@rspack/core@1.3.15(@swc/helpers@0.5.17)) - '@rsdoctor/types': 1.1.3(@rspack/core@1.3.15(@swc/helpers@0.5.17)) - '@rsdoctor/utils': 1.1.3(@rspack/core@1.3.15(@swc/helpers@0.5.17)) + '@rsdoctor/client': 1.2.1 + '@rsdoctor/graph': 1.2.1(@rspack/core@1.4.11(@swc/helpers@0.5.17)) + '@rsdoctor/types': 1.2.1(@rspack/core@1.4.11(@swc/helpers@0.5.17)) + '@rsdoctor/utils': 1.2.1(@rspack/core@1.4.11(@swc/helpers@0.5.17)) '@types/fs-extra': 11.0.4 body-parser: 1.20.3 cors: 2.8.5 dayjs: 1.11.13 - fs-extra: 11.3.0 + fs-extra: 11.3.1 json-cycle: 1.5.0 lodash: 4.17.21 - open: 10.1.2 + open: 8.4.2 sirv: 2.0.4 socket.io: 4.8.1 - source-map: 0.7.4 + source-map: 0.7.6 tapable: 2.2.2 transitivePeerDependencies: - '@rspack/core' @@ -4808,143 +4579,99 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/types@1.1.3(@rspack/core@1.3.15(@swc/helpers@0.5.17))': + '@rsdoctor/types@1.2.1(@rspack/core@1.4.11(@swc/helpers@0.5.17))': dependencies: '@types/connect': 3.4.38 '@types/estree': 1.0.5 '@types/tapable': 2.2.7 - source-map: 0.7.4 + source-map: 0.7.6 optionalDependencies: - '@rspack/core': 1.3.15(@swc/helpers@0.5.17) + '@rspack/core': 1.4.11(@swc/helpers@0.5.17) - '@rsdoctor/utils@1.1.3(@rspack/core@1.3.15(@swc/helpers@0.5.17))': + '@rsdoctor/utils@1.2.1(@rspack/core@1.4.11(@swc/helpers@0.5.17))': dependencies: '@babel/code-frame': 7.26.2 - '@rsdoctor/types': 1.1.3(@rspack/core@1.3.15(@swc/helpers@0.5.17)) + '@rsdoctor/types': 1.2.1(@rspack/core@1.4.11(@swc/helpers@0.5.17)) '@types/estree': 1.0.5 - acorn: 8.14.1 - acorn-import-attributes: 1.9.5(acorn@8.14.1) + acorn: 8.15.0 + acorn-import-attributes: 1.9.5(acorn@8.15.0) acorn-walk: 8.3.4 connect: 3.7.0 deep-eql: 4.1.4 envinfo: 7.14.0 filesize: 10.1.6 - fs-extra: 11.3.0 + fs-extra: 11.3.1 get-port: 5.1.1 json-stream-stringify: 3.0.1 lines-and-columns: 2.0.4 picocolors: 1.1.1 - rslog: 1.2.3 + rslog: 1.2.11 strip-ansi: 6.0.1 transitivePeerDependencies: - '@rspack/core' - supports-color - webpack - '@rslib/core@0.9.1(typescript@5.8.3)': + '@rslib/core@0.11.2(typescript@5.9.2)': dependencies: - '@rsbuild/core': 1.3.22 - rsbuild-plugin-dts: 0.9.1(@rsbuild/core@1.3.22)(typescript@5.8.3) + '@rsbuild/core': 1.4.15 + rsbuild-plugin-dts: 0.11.2(@rsbuild/core@1.4.15)(typescript@5.9.2) tinyglobby: 0.2.14 optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.2 - '@rspack/binding-darwin-arm64@1.3.12': + '@rspack/binding-darwin-arm64@1.4.11': optional: true - '@rspack/binding-darwin-arm64@1.3.15': + '@rspack/binding-darwin-x64@1.4.11': optional: true - '@rspack/binding-darwin-x64@1.3.12': + '@rspack/binding-linux-arm64-gnu@1.4.11': optional: true - '@rspack/binding-darwin-x64@1.3.15': + '@rspack/binding-linux-arm64-musl@1.4.11': optional: true - '@rspack/binding-linux-arm64-gnu@1.3.12': + '@rspack/binding-linux-x64-gnu@1.4.11': optional: true - '@rspack/binding-linux-arm64-gnu@1.3.15': + '@rspack/binding-linux-x64-musl@1.4.11': optional: true - '@rspack/binding-linux-arm64-musl@1.3.12': - optional: true - - '@rspack/binding-linux-arm64-musl@1.3.15': - optional: true - - '@rspack/binding-linux-x64-gnu@1.3.12': - optional: true - - '@rspack/binding-linux-x64-gnu@1.3.15': - optional: true - - '@rspack/binding-linux-x64-musl@1.3.12': - optional: true - - '@rspack/binding-linux-x64-musl@1.3.15': - optional: true - - '@rspack/binding-win32-arm64-msvc@1.3.12': - optional: true - - '@rspack/binding-win32-arm64-msvc@1.3.15': - optional: true - - '@rspack/binding-win32-ia32-msvc@1.3.12': - optional: true - - '@rspack/binding-win32-ia32-msvc@1.3.15': + '@rspack/binding-wasm32-wasi@1.4.11': + dependencies: + '@napi-rs/wasm-runtime': 1.0.3 optional: true - '@rspack/binding-win32-x64-msvc@1.3.12': + '@rspack/binding-win32-arm64-msvc@1.4.11': optional: true - '@rspack/binding-win32-x64-msvc@1.3.15': + '@rspack/binding-win32-ia32-msvc@1.4.11': optional: true - '@rspack/binding@1.3.12': - optionalDependencies: - '@rspack/binding-darwin-arm64': 1.3.12 - '@rspack/binding-darwin-x64': 1.3.12 - '@rspack/binding-linux-arm64-gnu': 1.3.12 - '@rspack/binding-linux-arm64-musl': 1.3.12 - '@rspack/binding-linux-x64-gnu': 1.3.12 - '@rspack/binding-linux-x64-musl': 1.3.12 - '@rspack/binding-win32-arm64-msvc': 1.3.12 - '@rspack/binding-win32-ia32-msvc': 1.3.12 - '@rspack/binding-win32-x64-msvc': 1.3.12 - - '@rspack/binding@1.3.15': - optionalDependencies: - '@rspack/binding-darwin-arm64': 1.3.15 - '@rspack/binding-darwin-x64': 1.3.15 - '@rspack/binding-linux-arm64-gnu': 1.3.15 - '@rspack/binding-linux-arm64-musl': 1.3.15 - '@rspack/binding-linux-x64-gnu': 1.3.15 - '@rspack/binding-linux-x64-musl': 1.3.15 - '@rspack/binding-win32-arm64-msvc': 1.3.15 - '@rspack/binding-win32-ia32-msvc': 1.3.15 - '@rspack/binding-win32-x64-msvc': 1.3.15 + '@rspack/binding-win32-x64-msvc@1.4.11': optional: true - '@rspack/core@1.3.12(@swc/helpers@0.5.17)': - dependencies: - '@module-federation/runtime-tools': 0.14.0 - '@rspack/binding': 1.3.12 - '@rspack/lite-tapable': 1.0.1 - caniuse-lite: 1.0.30001721 + '@rspack/binding@1.4.11': optionalDependencies: - '@swc/helpers': 0.5.17 - - '@rspack/core@1.3.15(@swc/helpers@0.5.17)': - dependencies: - '@module-federation/runtime-tools': 0.14.3 - '@rspack/binding': 1.3.15 + '@rspack/binding-darwin-arm64': 1.4.11 + '@rspack/binding-darwin-x64': 1.4.11 + '@rspack/binding-linux-arm64-gnu': 1.4.11 + '@rspack/binding-linux-arm64-musl': 1.4.11 + '@rspack/binding-linux-x64-gnu': 1.4.11 + '@rspack/binding-linux-x64-musl': 1.4.11 + '@rspack/binding-wasm32-wasi': 1.4.11 + '@rspack/binding-win32-arm64-msvc': 1.4.11 + '@rspack/binding-win32-ia32-msvc': 1.4.11 + '@rspack/binding-win32-x64-msvc': 1.4.11 + + '@rspack/core@1.4.11(@swc/helpers@0.5.17)': + dependencies: + '@module-federation/runtime-tools': 0.17.1 + '@rspack/binding': 1.4.11 '@rspack/lite-tapable': 1.0.1 optionalDependencies: '@swc/helpers': 0.5.17 - optional: true '@rspack/lite-tapable@1.0.1': {} @@ -4962,39 +4689,49 @@ snapshots: dependencies: tslib: 2.8.1 + '@tybys/wasm-util@0.10.0': + dependencies: + tslib: 2.8.1 + optional: true + '@types/better-sqlite3@7.6.13': dependencies: - '@types/node': 22.15.30 + '@types/node': 22.17.1 optional: true '@types/connect@3.4.38': dependencies: - '@types/node': 22.15.30 + '@types/node': 24.2.1 - '@types/cors@2.8.18': + '@types/cors@2.8.19': dependencies: - '@types/node': 22.15.30 + '@types/node': 24.2.1 '@types/estree@1.0.5': {} '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 22.15.30 + '@types/node': 24.2.1 '@types/jsonfile@6.1.4': dependencies: - '@types/node': 22.15.30 + '@types/node': 24.2.1 - '@types/node@22.15.30': + '@types/node@22.17.1': dependencies: undici-types: 6.21.0 + optional: true + + '@types/node@24.2.1': + dependencies: + undici-types: 7.10.0 - '@types/react-dom@19.1.6(@types/react@19.1.6)': + '@types/react-dom@19.1.7(@types/react@19.1.9)': dependencies: - '@types/react': 19.1.6 + '@types/react': 19.1.9 - '@types/react@19.1.6': + '@types/react@19.1.9': dependencies: csstype: 3.1.3 @@ -5006,7 +4743,7 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 22.15.30 + '@types/node': 22.17.1 optional: true accepts@1.3.8: @@ -5014,15 +4751,15 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-import-attributes@1.9.5(acorn@8.14.1): + acorn-import-attributes@1.9.5(acorn@8.15.0): dependencies: - acorn: 8.14.1 + acorn: 8.15.0 acorn-walk@8.3.4: dependencies: - acorn: 8.14.1 + acorn: 8.15.0 - acorn@8.14.1: {} + acorn@8.15.0: {} ansi-regex@5.0.1: {} @@ -5032,10 +4769,10 @@ snapshots: asynckit@0.4.0: {} - axios@1.9.0: + axios@1.11.0: dependencies: - follow-redirects: 1.15.9 - form-data: 4.0.3 + follow-redirects: 1.15.11 + form-data: 4.0.4 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug @@ -5047,7 +4784,7 @@ snapshots: base64id@2.0.0: {} - better-sqlite3@11.10.0: + better-sqlite3@12.2.0: dependencies: bindings: 1.5.0 prebuild-install: 7.1.3 @@ -5082,18 +4819,18 @@ snapshots: transitivePeerDependencies: - supports-color - browserslist-load-config@1.0.0: {} + browserslist-load-config@1.0.1: {} - browserslist-to-es-version@1.0.0: + browserslist-to-es-version@1.1.1: dependencies: - browserslist: 4.25.0 + browserslist: 4.25.2 - browserslist@4.25.0: + browserslist@4.25.2: dependencies: - caniuse-lite: 1.0.30001721 - electron-to-chromium: 1.5.165 + caniuse-lite: 1.0.30001734 + electron-to-chromium: 1.5.199 node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.0) + update-browserslist-db: 1.1.3(browserslist@4.25.2) buffer-from@1.1.2: {} @@ -5103,23 +4840,19 @@ snapshots: ieee754: 1.2.1 optional: true - bundle-name@4.1.0: - dependencies: - run-applescript: 7.0.0 - busboy@1.6.0: dependencies: streamsearch: 1.1.0 bytes@3.1.2: {} - c15t@1.2.2-canary-20250603153501(@libsql/client@0.15.8)(@playwright/test@1.52.0)(@types/better-sqlite3@7.6.13)(@types/react@19.1.6)(better-sqlite3@11.10.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(use-sync-external-store@1.5.0(react@19.1.0))(ws@8.18.2): + c15t@1.5.0(@libsql/client@0.15.10)(@playwright/test@1.54.2)(@types/better-sqlite3@7.6.13)(@types/react@19.1.9)(better-sqlite3@12.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(use-sync-external-store@1.5.0(react@19.1.1))(ws@8.18.3): dependencies: - '@c15t/backend': 1.2.2-canary-20250602152741(@libsql/client@0.15.8)(@playwright/test@1.52.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(ws@8.18.2) - '@c15t/translations': 1.2.2-canary-20250514203718 + '@c15t/backend': 1.5.0(@libsql/client@0.15.10)(@playwright/test@1.54.2)(@types/better-sqlite3@7.6.13)(better-sqlite3@12.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(ws@8.18.3) + '@c15t/translations': 1.5.0 '@orpc/client': 1.2.0 - '@orpc/server': 1.2.0(ws@8.18.2) - zustand: 5.0.4(@types/react@19.1.6)(react@19.1.0)(use-sync-external-store@1.5.0(react@19.1.0)) + '@orpc/server': 1.2.0(ws@8.18.3) + zustand: 5.0.7(@types/react@19.1.9)(react@19.1.1)(use-sync-external-store@1.5.0(react@19.1.1)) transitivePeerDependencies: - '@aws-sdk/client-rds-data' - '@babel/core' @@ -5172,7 +4905,7 @@ snapshots: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 - caniuse-lite@1.0.30001721: {} + caniuse-lite@1.0.30001734: {} chownr@1.1.4: optional: true @@ -5217,8 +4950,6 @@ snapshots: dependencies: delayed-stream: 1.0.0 - commander@7.2.0: {} - connect@3.7.0: dependencies: debug: 2.6.9 @@ -5236,7 +4967,7 @@ snapshots: dependencies: is-what: 4.1.16 - core-js@3.42.0: {} + core-js@3.45.0: {} cors@2.8.5: dependencies: @@ -5250,8 +4981,6 @@ snapshots: dayjs@1.11.13: {} - debounce@1.2.1: {} - debug@2.6.9: dependencies: ms: 2.0.0 @@ -5276,14 +5005,7 @@ snapshots: deep-extend@0.6.0: optional: true - default-browser-id@5.0.0: {} - - default-browser@5.2.1: - dependencies: - bundle-name: 4.1.0 - default-browser-id: 5.0.0 - - define-lazy-prop@3.0.0: {} + define-lazy-prop@2.0.0: {} defu@6.1.4: {} @@ -5317,23 +5039,23 @@ snapshots: domelementtype: 2.3.0 domhandler: 5.0.3 - dotenv@16.5.0: {} + dotenv@17.2.1: {} - drizzle-kit@0.31.1: + drizzle-kit@0.31.4: dependencies: '@drizzle-team/brocli': 0.10.2 '@esbuild-kit/esm-loader': 2.6.5 - esbuild: 0.25.4 - esbuild-register: 3.6.0(esbuild@0.25.4) + esbuild: 0.25.8 + esbuild-register: 3.6.0(esbuild@0.25.8) transitivePeerDependencies: - supports-color - drizzle-orm@0.41.0(@libsql/client@0.15.8)(@opentelemetry/api@1.8.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(kysely@0.27.6): + drizzle-orm@0.41.0(@libsql/client@0.15.10)(@opentelemetry/api@1.8.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@12.2.0)(kysely@0.27.6): optionalDependencies: - '@libsql/client': 0.15.8 + '@libsql/client': 0.15.10 '@opentelemetry/api': 1.8.0 '@types/better-sqlite3': 7.6.13 - better-sqlite3: 11.10.0 + better-sqlite3: 12.2.0 kysely: 0.27.6 dunder-proto@1.0.1: @@ -5342,17 +5064,15 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 - duplexer@0.1.2: {} - ee-first@1.1.1: {} - electron-to-chromium@1.5.165: {} + electron-to-chromium@1.5.199: {} emoji-regex@8.0.0: {} encodeurl@1.0.2: {} - end-of-stream@1.4.4: + end-of-stream@1.4.5: dependencies: once: 1.4.0 optional: true @@ -5361,8 +5081,8 @@ snapshots: engine.io@6.6.4: dependencies: - '@types/cors': 2.8.18 - '@types/node': 22.15.30 + '@types/cors': 2.8.19 + '@types/node': 24.2.1 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -5382,7 +5102,7 @@ snapshots: entities@4.5.0: {} - entities@6.0.0: {} + entities@6.0.1: {} envinfo@7.14.0: {} @@ -5401,10 +5121,10 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.2 - esbuild-register@3.6.0(esbuild@0.25.4): + esbuild-register@3.6.0(esbuild@0.25.8): dependencies: debug: 4.4.1 - esbuild: 0.25.4 + esbuild: 0.25.8 transitivePeerDependencies: - supports-color @@ -5433,48 +5153,47 @@ snapshots: '@esbuild/win32-ia32': 0.18.20 '@esbuild/win32-x64': 0.18.20 - esbuild@0.25.4: + esbuild@0.25.8: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.4 - '@esbuild/android-arm': 0.25.4 - '@esbuild/android-arm64': 0.25.4 - '@esbuild/android-x64': 0.25.4 - '@esbuild/darwin-arm64': 0.25.4 - '@esbuild/darwin-x64': 0.25.4 - '@esbuild/freebsd-arm64': 0.25.4 - '@esbuild/freebsd-x64': 0.25.4 - '@esbuild/linux-arm': 0.25.4 - '@esbuild/linux-arm64': 0.25.4 - '@esbuild/linux-ia32': 0.25.4 - '@esbuild/linux-loong64': 0.25.4 - '@esbuild/linux-mips64el': 0.25.4 - '@esbuild/linux-ppc64': 0.25.4 - '@esbuild/linux-riscv64': 0.25.4 - '@esbuild/linux-s390x': 0.25.4 - '@esbuild/linux-x64': 0.25.4 - '@esbuild/netbsd-arm64': 0.25.4 - '@esbuild/netbsd-x64': 0.25.4 - '@esbuild/openbsd-arm64': 0.25.4 - '@esbuild/openbsd-x64': 0.25.4 - '@esbuild/sunos-x64': 0.25.4 - '@esbuild/win32-arm64': 0.25.4 - '@esbuild/win32-ia32': 0.25.4 - '@esbuild/win32-x64': 0.25.4 + '@esbuild/aix-ppc64': 0.25.8 + '@esbuild/android-arm': 0.25.8 + '@esbuild/android-arm64': 0.25.8 + '@esbuild/android-x64': 0.25.8 + '@esbuild/darwin-arm64': 0.25.8 + '@esbuild/darwin-x64': 0.25.8 + '@esbuild/freebsd-arm64': 0.25.8 + '@esbuild/freebsd-x64': 0.25.8 + '@esbuild/linux-arm': 0.25.8 + '@esbuild/linux-arm64': 0.25.8 + '@esbuild/linux-ia32': 0.25.8 + '@esbuild/linux-loong64': 0.25.8 + '@esbuild/linux-mips64el': 0.25.8 + '@esbuild/linux-ppc64': 0.25.8 + '@esbuild/linux-riscv64': 0.25.8 + '@esbuild/linux-s390x': 0.25.8 + '@esbuild/linux-x64': 0.25.8 + '@esbuild/netbsd-arm64': 0.25.8 + '@esbuild/netbsd-x64': 0.25.8 + '@esbuild/openbsd-arm64': 0.25.8 + '@esbuild/openbsd-x64': 0.25.8 + '@esbuild/openharmony-arm64': 0.25.8 + '@esbuild/sunos-x64': 0.25.8 + '@esbuild/win32-arm64': 0.25.8 + '@esbuild/win32-ia32': 0.25.8 + '@esbuild/win32-x64': 0.25.8 escalade@3.2.0: {} escape-html@1.0.3: {} - escape-string-regexp@4.0.0: {} - escape-string-regexp@5.0.0: {} expand-template@2.0.3: optional: true - fdir@6.4.5(picomatch@4.0.2): + fdir@6.4.6(picomatch@4.0.3): optionalDependencies: - picomatch: 4.0.2 + picomatch: 4.0.3 fetch-blob@3.2.0: dependencies: @@ -5499,9 +5218,9 @@ snapshots: transitivePeerDependencies: - supports-color - follow-redirects@1.15.9: {} + follow-redirects@1.15.11: {} - form-data@4.0.3: + form-data@4.0.4: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 @@ -5517,7 +5236,7 @@ snapshots: fs-constants@1.0.0: optional: true - fs-extra@11.3.0: + fs-extra@11.3.1: dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 @@ -5561,10 +5280,6 @@ snapshots: graceful-fs@4.2.11: {} - gzip-size@6.0.0: - dependencies: - duplexer: 0.1.2 - has-symbols@1.1.0: {} has-tostringtag@1.0.2: @@ -5575,14 +5290,12 @@ snapshots: dependencies: function-bind: 1.1.2 - html-escaper@2.0.2: {} - htmlparser2@10.0.0: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.2.2 - entities: 6.0.0 + entities: 6.0.1 http-errors@2.0.0: dependencies: @@ -5601,8 +5314,8 @@ snapshots: import-in-the-middle@1.7.4: dependencies: - acorn: 8.14.1 - acorn-import-attributes: 1.9.5(acorn@8.14.1) + acorn: 8.15.0 + acorn-import-attributes: 1.9.5(acorn@8.15.0) cjs-module-lexer: 1.4.3 module-details-from-path: 1.0.4 @@ -5618,23 +5331,19 @@ snapshots: dependencies: hasown: 2.0.2 - is-docker@3.0.0: {} + is-docker@2.2.1: {} is-fullwidth-code-point@3.0.0: {} - is-inside-container@1.0.0: - dependencies: - is-docker: 3.0.0 - is-what@4.1.16: {} - is-wsl@3.1.0: + is-wsl@2.2.0: dependencies: - is-inside-container: 1.0.0 + is-docker: 2.2.1 - jiti@2.4.2: {} + jiti@2.5.1: {} - js-base64@3.7.7: + js-base64@3.7.8: optional: true js-tokens@4.0.0: {} @@ -5655,20 +5364,20 @@ snapshots: kysely@0.27.6: {} - libsql@0.5.12: + libsql@0.5.17: dependencies: '@neon-rs/load': 0.0.4 detect-libc: 2.0.2 optionalDependencies: - '@libsql/darwin-arm64': 0.5.12 - '@libsql/darwin-x64': 0.5.12 - '@libsql/linux-arm-gnueabihf': 0.5.12 - '@libsql/linux-arm-musleabihf': 0.5.12 - '@libsql/linux-arm64-gnu': 0.5.12 - '@libsql/linux-arm64-musl': 0.5.12 - '@libsql/linux-x64-gnu': 0.5.12 - '@libsql/linux-x64-musl': 0.5.12 - '@libsql/win32-x64-msvc': 0.5.12 + '@libsql/darwin-arm64': 0.5.17 + '@libsql/darwin-x64': 0.5.17 + '@libsql/linux-arm-gnueabihf': 0.5.17 + '@libsql/linux-arm-musleabihf': 0.5.17 + '@libsql/linux-arm64-gnu': 0.5.17 + '@libsql/linux-arm64-musl': 0.5.17 + '@libsql/linux-x64-gnu': 0.5.17 + '@libsql/linux-x64-musl': 0.5.17 + '@libsql/win32-x64-msvc': 0.5.17 optional: true lines-and-columns@2.0.4: {} @@ -5689,7 +5398,7 @@ snapshots: magic-string@0.30.17: dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.4 math-intrinsics@1.1.0: {} @@ -5726,19 +5435,19 @@ snapshots: neverthrow@8.2.0: optionalDependencies: - '@rollup/rollup-linux-x64-gnu': 4.41.0 + '@rollup/rollup-linux-x64-gnu': 4.46.2 - next@15.2.2(@opentelemetry/api@1.8.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + next@15.2.2(@opentelemetry/api@1.8.0)(@playwright/test@1.54.2)(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: '@next/env': 15.2.2 '@swc/counter': 0.1.3 '@swc/helpers': 0.5.15 busboy: 1.6.0 - caniuse-lite: 1.0.30001721 + caniuse-lite: 1.0.30001734 postcss: 8.4.31 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - styled-jsx: 5.1.6(react@19.1.0) + 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.2.2 '@next/swc-darwin-x64': 15.2.2 @@ -5749,62 +5458,58 @@ snapshots: '@next/swc-win32-arm64-msvc': 15.2.2 '@next/swc-win32-x64-msvc': 15.2.2 '@opentelemetry/api': 1.8.0 - '@playwright/test': 1.52.0 + '@playwright/test': 1.54.2 sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - next@15.3.3(@opentelemetry/api@1.8.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + next@15.4.6(@opentelemetry/api@1.8.0)(@playwright/test@1.54.2)(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: - '@next/env': 15.3.3 - '@swc/counter': 0.1.3 + '@next/env': 15.4.6 '@swc/helpers': 0.5.15 - busboy: 1.6.0 - caniuse-lite: 1.0.30001721 + caniuse-lite: 1.0.30001734 postcss: 8.4.31 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - styled-jsx: 5.1.6(react@19.1.0) + 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.3.3 - '@next/swc-darwin-x64': 15.3.3 - '@next/swc-linux-arm64-gnu': 15.3.3 - '@next/swc-linux-arm64-musl': 15.3.3 - '@next/swc-linux-x64-gnu': 15.3.3 - '@next/swc-linux-x64-musl': 15.3.3 - '@next/swc-win32-arm64-msvc': 15.3.3 - '@next/swc-win32-x64-msvc': 15.3.3 + '@next/swc-darwin-arm64': 15.4.6 + '@next/swc-darwin-x64': 15.4.6 + '@next/swc-linux-arm64-gnu': 15.4.6 + '@next/swc-linux-arm64-musl': 15.4.6 + '@next/swc-linux-x64-gnu': 15.4.6 + '@next/swc-linux-x64-musl': 15.4.6 + '@next/swc-win32-arm64-msvc': 15.4.6 + '@next/swc-win32-x64-msvc': 15.4.6 '@opentelemetry/api': 1.8.0 - '@playwright/test': 1.52.0 - sharp: 0.34.2 + '@playwright/test': 1.54.2 + sharp: 0.34.3 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - next@15.3.3(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + next@15.4.6(@opentelemetry/api@1.9.0)(@playwright/test@1.54.2)(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: - '@next/env': 15.3.3 - '@swc/counter': 0.1.3 + '@next/env': 15.4.6 '@swc/helpers': 0.5.15 - busboy: 1.6.0 - caniuse-lite: 1.0.30001721 + caniuse-lite: 1.0.30001734 postcss: 8.4.31 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - styled-jsx: 5.1.6(react@19.1.0) + 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.3.3 - '@next/swc-darwin-x64': 15.3.3 - '@next/swc-linux-arm64-gnu': 15.3.3 - '@next/swc-linux-arm64-musl': 15.3.3 - '@next/swc-linux-x64-gnu': 15.3.3 - '@next/swc-linux-x64-musl': 15.3.3 - '@next/swc-win32-arm64-msvc': 15.3.3 - '@next/swc-win32-x64-msvc': 15.3.3 + '@next/swc-darwin-arm64': 15.4.6 + '@next/swc-darwin-x64': 15.4.6 + '@next/swc-linux-arm64-gnu': 15.4.6 + '@next/swc-linux-arm64-musl': 15.4.6 + '@next/swc-linux-x64-gnu': 15.4.6 + '@next/swc-linux-x64-musl': 15.4.6 + '@next/swc-win32-arm64-msvc': 15.4.6 + '@next/swc-win32-x64-msvc': 15.4.6 '@opentelemetry/api': 1.9.0 - '@playwright/test': 1.52.0 - sharp: 0.34.2 + '@playwright/test': 1.54.2 + sharp: 0.34.3 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -5843,17 +5548,14 @@ snapshots: wrappy: 1.0.2 optional: true - open@10.1.2: + open@8.4.2: dependencies: - default-browser: 5.2.1 - define-lazy-prop: 3.0.0 - is-inside-container: 1.0.0 - is-wsl: 3.1.0 + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 openapi-types@12.1.3: {} - opener@1.5.2: {} - p-limit@6.2.0: dependencies: yocto-queue: 1.2.1 @@ -5870,17 +5572,17 @@ snapshots: picocolors@1.1.1: {} - picomatch@4.0.2: {} + picomatch@4.0.3: {} - playwright-core@1.52.0: {} + playwright-core@1.54.2: {} - playwright-performance-metrics@1.2.2(@playwright/test@1.52.0): + playwright-performance-metrics@1.2.2(@playwright/test@1.54.2): dependencies: - '@playwright/test': 1.52.0 + '@playwright/test': 1.54.2 - playwright@1.52.0: + playwright@1.54.2: dependencies: - playwright-core: 1.52.0 + playwright-core: 1.54.2 optionalDependencies: fsevents: 2.3.2 @@ -5899,10 +5601,10 @@ snapshots: mkdirp-classic: 0.5.3 napi-build-utils: 2.0.0 node-abi: 3.75.0 - pump: 3.0.2 + pump: 3.0.3 rc: 1.2.8 simple-get: 4.0.1 - tar-fs: 2.1.2 + tar-fs: 2.1.3 tunnel-agent: 0.6.0 optional: true @@ -5919,7 +5621,7 @@ snapshots: object-assign: 4.1.1 react-is: 16.13.1 - protobufjs@7.4.0: + protobufjs@7.5.3: dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/base64': 1.1.2 @@ -5931,14 +5633,14 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 22.15.30 + '@types/node': 24.2.1 long: 5.3.2 proxy-from-env@1.1.0: {} - pump@3.0.2: + pump@3.0.3: dependencies: - end-of-stream: 1.4.4 + end-of-stream: 1.4.5 once: 1.4.0 optional: true @@ -5946,7 +5648,7 @@ snapshots: dependencies: side-channel: 1.1.0 - radash@12.1.0: {} + radash@12.1.1: {} raw-body@2.5.2: dependencies: @@ -5963,14 +5665,14 @@ snapshots: strip-json-comments: 2.0.1 optional: true - react-dom@19.1.0(react@19.1.0): + react-dom@19.1.1(react@19.1.1): dependencies: - react: 19.1.0 + react: 19.1.1 scheduler: 0.26.0 react-is@16.13.1: {} - react@19.1.0: {} + react@19.1.1: {} readable-stream@3.6.2: dependencies: @@ -5997,22 +5699,20 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - rou3@0.6.1: {} + rou3@0.6.3: {} - rsbuild-plugin-dts@0.9.1(@rsbuild/core@1.3.22)(typescript@5.8.3): + rsbuild-plugin-dts@0.11.2(@rsbuild/core@1.4.15)(typescript@5.9.2): dependencies: '@ast-grep/napi': 0.37.0 - '@rsbuild/core': 1.3.22 + '@rsbuild/core': 1.4.15 magic-string: 0.30.17 picocolors: 1.1.1 tinyglobby: 0.2.14 tsconfig-paths: 4.2.0 optionalDependencies: - typescript: 5.8.3 - - rslog@1.2.3: {} + typescript: 5.9.2 - run-applescript@7.0.0: {} + rslog@1.2.11: {} safe-buffer@5.2.1: optional: true @@ -6052,33 +5752,34 @@ snapshots: '@img/sharp-win32-x64': 0.33.5 optional: true - sharp@0.34.2: + sharp@0.34.3: dependencies: color: 4.2.3 detect-libc: 2.0.4 semver: 7.7.2 optionalDependencies: - '@img/sharp-darwin-arm64': 0.34.2 - '@img/sharp-darwin-x64': 0.34.2 - '@img/sharp-libvips-darwin-arm64': 1.1.0 - '@img/sharp-libvips-darwin-x64': 1.1.0 - '@img/sharp-libvips-linux-arm': 1.1.0 - '@img/sharp-libvips-linux-arm64': 1.1.0 - '@img/sharp-libvips-linux-ppc64': 1.1.0 - '@img/sharp-libvips-linux-s390x': 1.1.0 - '@img/sharp-libvips-linux-x64': 1.1.0 - '@img/sharp-libvips-linuxmusl-arm64': 1.1.0 - '@img/sharp-libvips-linuxmusl-x64': 1.1.0 - '@img/sharp-linux-arm': 0.34.2 - '@img/sharp-linux-arm64': 0.34.2 - '@img/sharp-linux-s390x': 0.34.2 - '@img/sharp-linux-x64': 0.34.2 - '@img/sharp-linuxmusl-arm64': 0.34.2 - '@img/sharp-linuxmusl-x64': 0.34.2 - '@img/sharp-wasm32': 0.34.2 - '@img/sharp-win32-arm64': 0.34.2 - '@img/sharp-win32-ia32': 0.34.2 - '@img/sharp-win32-x64': 0.34.2 + '@img/sharp-darwin-arm64': 0.34.3 + '@img/sharp-darwin-x64': 0.34.3 + '@img/sharp-libvips-darwin-arm64': 1.2.0 + '@img/sharp-libvips-darwin-x64': 1.2.0 + '@img/sharp-libvips-linux-arm': 1.2.0 + '@img/sharp-libvips-linux-arm64': 1.2.0 + '@img/sharp-libvips-linux-ppc64': 1.2.0 + '@img/sharp-libvips-linux-s390x': 1.2.0 + '@img/sharp-libvips-linux-x64': 1.2.0 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.0 + '@img/sharp-libvips-linuxmusl-x64': 1.2.0 + '@img/sharp-linux-arm': 0.34.3 + '@img/sharp-linux-arm64': 0.34.3 + '@img/sharp-linux-ppc64': 0.34.3 + '@img/sharp-linux-s390x': 0.34.3 + '@img/sharp-linux-x64': 0.34.3 + '@img/sharp-linuxmusl-arm64': 0.34.3 + '@img/sharp-linuxmusl-x64': 0.34.3 + '@img/sharp-wasm32': 0.34.3 + '@img/sharp-win32-arm64': 0.34.3 + '@img/sharp-win32-ia32': 0.34.3 + '@img/sharp-win32-x64': 0.34.3 optional: true shimmer@1.2.1: {} @@ -6173,7 +5874,7 @@ snapshots: source-map@0.6.1: {} - source-map@0.7.4: {} + source-map@0.7.6: {} statuses@1.5.0: {} @@ -6201,10 +5902,10 @@ snapshots: strip-json-comments@2.0.1: optional: true - styled-jsx@5.1.6(react@19.1.0): + styled-jsx@5.1.6(react@19.1.1): dependencies: client-only: 0.0.1 - react: 19.1.0 + react: 19.1.1 superjson@2.2.2: dependencies: @@ -6214,18 +5915,18 @@ snapshots: tapable@2.2.2: {} - tar-fs@2.1.2: + tar-fs@2.1.3: dependencies: chownr: 1.1.4 mkdirp-classic: 0.5.3 - pump: 3.0.2 + pump: 3.0.3 tar-stream: 2.2.0 optional: true tar-stream@2.2.0: dependencies: bl: 4.1.0 - end-of-stream: 1.4.4 + end-of-stream: 1.4.5 fs-constants: 1.0.0 inherits: 2.0.4 readable-stream: 3.6.2 @@ -6235,8 +5936,8 @@ snapshots: tinyglobby@0.2.14: dependencies: - fdir: 6.4.5(picomatch@4.0.2) - picomatch: 4.0.2 + fdir: 6.4.6(picomatch@4.0.3) + picomatch: 4.0.3 tinygradient@2.0.1: dependencies: @@ -6259,32 +5960,32 @@ snapshots: safe-buffer: 5.2.1 optional: true - turbo-darwin-64@2.5.3: + turbo-darwin-64@2.5.5: optional: true - turbo-darwin-arm64@2.5.3: + turbo-darwin-arm64@2.5.5: optional: true - turbo-linux-64@2.5.3: + turbo-linux-64@2.5.5: optional: true - turbo-linux-arm64@2.5.3: + turbo-linux-arm64@2.5.5: optional: true - turbo-windows-64@2.5.3: + turbo-windows-64@2.5.5: optional: true - turbo-windows-arm64@2.5.3: + turbo-windows-arm64@2.5.5: optional: true - turbo@2.5.3: + turbo@2.5.5: optionalDependencies: - turbo-darwin-64: 2.5.3 - turbo-darwin-arm64: 2.5.3 - turbo-linux-64: 2.5.3 - turbo-linux-arm64: 2.5.3 - turbo-windows-64: 2.5.3 - turbo-windows-arm64: 2.5.3 + 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 type-detect@4.1.0: {} @@ -6295,23 +5996,26 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 - typescript@5.8.3: {} + typescript@5.9.2: {} - undici-types@6.21.0: {} + undici-types@6.21.0: + optional: true + + undici-types@7.10.0: {} universalify@2.0.1: {} unpipe@1.0.0: {} - update-browserslist-db@1.1.3(browserslist@4.25.0): + update-browserslist-db@1.1.3(browserslist@4.25.2): dependencies: - browserslist: 4.25.0 + browserslist: 4.25.2 escalade: 3.2.0 picocolors: 1.1.1 - use-sync-external-store@1.5.0(react@19.1.0): + use-sync-external-store@1.5.0(react@19.1.1): dependencies: - react: 19.1.0 + react: 19.1.1 optional: true util-deprecate@1.0.2: @@ -6324,24 +6028,6 @@ snapshots: web-streams-polyfill@3.3.3: optional: true - webpack-bundle-analyzer@4.10.2: - dependencies: - '@discoveryjs/json-ext': 0.5.7 - acorn: 8.14.1 - acorn-walk: 8.3.4 - commander: 7.2.0 - debounce: 1.2.1 - escape-string-regexp: 4.0.0 - gzip-size: 6.0.0 - html-escaper: 2.0.2 - opener: 1.5.2 - picocolors: 1.1.1 - sirv: 2.0.4 - ws: 7.5.10 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - wildcard-match@5.1.4: {} wrap-ansi@7.0.0: @@ -6353,11 +6039,9 @@ snapshots: wrappy@1.0.2: optional: true - ws@7.5.10: {} - ws@8.17.1: {} - ws@8.18.2: + ws@8.18.3: optional: true y18n@5.0.8: {} @@ -6376,10 +6060,10 @@ snapshots: yocto-queue@1.2.1: {} - zod@3.25.55: {} + zod@3.25.76: {} - zustand@5.0.4(@types/react@19.1.6)(react@19.1.0)(use-sync-external-store@1.5.0(react@19.1.0)): + zustand@5.0.7(@types/react@19.1.9)(react@19.1.1)(use-sync-external-store@1.5.0(react@19.1.1)): optionalDependencies: - '@types/react': 19.1.6 - react: 19.1.0 - use-sync-external-store: 1.5.0(react@19.1.0) + '@types/react': 19.1.9 + react: 19.1.1 + use-sync-external-store: 1.5.0(react@19.1.1) From 228007eca4886d8f9dbbd8063002b7b981902526 Mon Sep 17 00:00:00 2001 From: burnedchris Date: Mon, 11 Aug 2025 11:40:17 +0100 Subject: [PATCH 2/3] Update biome configuration and dependencies to version 2.1.4, enhancing linter rules and adding JSON formatting options. Remove deprecated performance metrics and collectors to streamline the codebase. --- biome.jsonc | 241 +++++----- package.json | 2 +- packages/cli/package.json | 4 +- .../commands/benchmark/benchmark-runner.ts | 1 - .../benchmark/cookie-banner-detector.ts | 4 +- packages/cli/src/commands/db.ts | 2 +- packages/cli/src/commands/results.ts | 19 +- packages/cli/src/index.ts | 1 - packages/cli/src/lib/benchmark-runner.ts | 189 -------- .../lib/collectors/cookie-banner-collector.ts | 279 ----------- packages/cli/src/lib/collectors/index.ts | 14 - .../cli/src/lib/collectors/network-monitor.ts | 136 ------ .../collectors/resource-timing-collector.ts | 274 ----------- packages/cli/src/lib/metrics/index.ts | 4 - .../src/lib/metrics/performance-aggregator.ts | 286 ------------ packages/cli/src/lib/performance-enhanced.ts | 259 ----------- packages/cli/src/lib/performance.ts | 437 ------------------ packages/cli/src/types/index.ts | 25 - packages/cli/src/utils/index.ts | 6 - packages/cli/src/utils/scoring.ts | 9 +- packages/cli/tsconfig.json | 1 + pnpm-lock.yaml | 103 ++--- 22 files changed, 167 insertions(+), 2129 deletions(-) delete mode 100644 packages/cli/src/lib/benchmark-runner.ts delete mode 100644 packages/cli/src/lib/collectors/cookie-banner-collector.ts delete mode 100644 packages/cli/src/lib/collectors/index.ts delete mode 100644 packages/cli/src/lib/collectors/network-monitor.ts delete mode 100644 packages/cli/src/lib/collectors/resource-timing-collector.ts delete mode 100644 packages/cli/src/lib/metrics/index.ts delete mode 100644 packages/cli/src/lib/metrics/performance-aggregator.ts delete mode 100644 packages/cli/src/lib/performance-enhanced.ts delete mode 100644 packages/cli/src/lib/performance.ts diff --git a/biome.jsonc b/biome.jsonc index b20fa9f..4246b72 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -1,127 +1,118 @@ { - "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", - "formatter": { - "enabled": true, - "formatWithErrors": true, - "indentStyle": "tab", - "indentWidth": 2, - "lineEnding": "lf", - "lineWidth": 80, - "attributePosition": "auto" - }, - "organizeImports": { "enabled": true }, - "linter": { - "enabled": true, - "rules": { - "all": true, - "a11y": { - "noAutofocus": "off" - }, - "complexity": { - "useSimplifiedLogicExpression": "off" - }, - "correctness": { - "noUndeclaredDependencies": "off", - "useImportExtensions": "off", - "noNodejsModules": "off" - }, - "nursery": { - "all": true, - "noCommonJs": "off", - "noProcessEnv": "off", - "noSecrets": "off", - "useComponentExportOnlyModules": "off", - "useExplicitType": "off", - "useImportRestrictions": "off", - "useConsistentCurlyBraces": "off", - "useSortedClasses": { - "fix": "safe", - "level": "error", - "options": { - "attributes": ["className"], - "functions": ["clsx", "cva", "tw", "twMerge", "cn", "twJoin"] - } - } - }, - "performance": { - "noBarrelFile": "off", - "noReExportAll": "off" - }, - "style": { - "noDefaultExport": "off", - "noImplicitBoolean": "off", - "useExplicitLengthCheck": "off", - "noNamespaceImport": "off", - "useFilenamingConvention": { - "level": "error", - "options": { - "requireAscii": true, - "filenameCases": ["kebab-case"] - } - }, - "useSingleVarDeclarator": "off", - "useNamingConvention": "off" - }, - "suspicious": { - "noReactSpecificProps": "off", - "noArrayIndexKey": "off", - "noConsoleLog": "off", - "noConsole": "off" - } - } - }, - "javascript": { - "formatter": { - "arrowParentheses": "always", - "attributePosition": "auto", - "bracketSameLine": false, - "bracketSpacing": true, - "enabled": true, - "indentStyle": "tab", - "indentWidth": 2, - "jsxQuoteStyle": "double", - "lineEnding": "lf", - "lineWidth": 80, - "quoteProperties": "asNeeded", - "quoteStyle": "single", - "semicolons": "always", - "trailingCommas": "es5" - } - }, - "css": { - "formatter": { - "indentStyle": "tab", - "indentWidth": 2, - "lineEnding": "lf", - "lineWidth": 80, - "quoteStyle": "double" - }, - "parser": { - "allowWrongLineComments": true, - "cssModules": true - } - }, - "json": { - "formatter": { - "enabled": true, - "indentStyle": "tab", - "indentWidth": 2, - "lineEnding": "lf", - "lineWidth": 80, - "trailingCommas": "none" - }, - "linter": { - "enabled": true - }, - "parser": { - "allowComments": false, - "allowTrailingCommas": false - } - }, - "vcs": { - "enabled": true, - "clientKind": "git", - "useIgnoreFile": true, - "defaultBranch": "main" - } + "$schema": "https://biomejs.dev/schemas/2.1.4/schema.json", + "formatter": { + "enabled": true, + "formatWithErrors": true, + "indentStyle": "tab", + "indentWidth": 2, + "lineEnding": "lf", + "lineWidth": 80, + "attributePosition": "auto" + }, + "assist": { "actions": { "source": { "organizeImports": "on" } } }, + "linter": { + "enabled": true, + "rules": { + "a11y": { + "noAutofocus": "off" + }, + "complexity": { + "useSimplifiedLogicExpression": "off" + }, + "correctness": { + "noUndeclaredDependencies": "off", + "useImportExtensions": "off", + "noNodejsModules": "off" + }, + "nursery": { + "noSecrets": "off", + "useExplicitType": "off", + "useSortedClasses": { + "fix": "safe", + "level": "error", + "options": { + "attributes": ["className"], + "functions": ["clsx", "cva", "tw", "twMerge", "cn", "twJoin"] + } + } + }, + "performance": { + "noBarrelFile": "off", + "noReExportAll": "off" + }, + "style": { + "noDefaultExport": "off", + "noImplicitBoolean": "off", + "useExplicitLengthCheck": "off", + "useFilenamingConvention": { + "level": "error", + "options": { + "requireAscii": true, + "filenameCases": ["kebab-case"] + } + }, + "useSingleVarDeclarator": "off", + "useNamingConvention": "off" + }, + "suspicious": { + "noReactSpecificProps": "off", + "noArrayIndexKey": "off", + "noConsole": "off" + } + } + }, + "javascript": { + "formatter": { + "arrowParentheses": "always", + "attributePosition": "auto", + "bracketSameLine": false, + "bracketSpacing": true, + "enabled": true, + "indentStyle": "tab", + "indentWidth": 2, + "jsxQuoteStyle": "double", + "lineEnding": "lf", + "lineWidth": 80, + "quoteProperties": "asNeeded", + "quoteStyle": "single", + "semicolons": "always", + "trailingCommas": "es5" + } + }, + "css": { + "formatter": { + "indentStyle": "tab", + "indentWidth": 2, + "lineEnding": "lf", + "lineWidth": 80, + "quoteStyle": "double" + }, + "parser": { + "allowWrongLineComments": true, + "cssModules": true + } + }, + "json": { + "formatter": { + "enabled": true, + "indentStyle": "tab", + "indentWidth": 2, + "lineEnding": "lf", + "lineWidth": 80, + "trailingCommas": "none" + }, + "linter": { + "enabled": true + }, + "parser": { + "allowComments": false, + "allowTrailingCommas": false + } + }, + "vcs": { + "enabled": true, + "clientKind": "git", + "useIgnoreFile": true, + "defaultBranch": "main" + } } diff --git a/package.json b/package.json index dd56484..806476b 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "db": "pnpm exec benchmark-cli db" }, "devDependencies": { - "@biomejs/biome": "1.9.4", + "@biomejs/biome": "2.1.4", "@c15t/translations": "^1.5.0", "@cookiebench/cli": "workspace:*", "@playwright/test": "^1.54.2", diff --git a/packages/cli/package.json b/packages/cli/package.json index aef8e04..15d602f 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -22,8 +22,8 @@ "@playwright/test": "^1.54.2", "cli-table3": "^0.6.3", "dotenv": "^17.2.1", - "package-manager-detector": "^1.3.0", - "picocolors": "^1.0.0" + "picocolors": "^1.0.0", + "pretty-ms": "^9.2.0" }, "devDependencies": { "@rsdoctor/rspack-plugin": "^1.2.1", diff --git a/packages/cli/src/commands/benchmark/benchmark-runner.ts b/packages/cli/src/commands/benchmark/benchmark-runner.ts index a1f2568..b6a4b29 100644 --- a/packages/cli/src/commands/benchmark/benchmark-runner.ts +++ b/packages/cli/src/commands/benchmark/benchmark-runner.ts @@ -19,7 +19,6 @@ import { CookieBannerDetector } from "./cookie-banner-detector"; import { ResourceCollector } from "./resource-collector"; import { MetricsCalculator } from "./metrics-calculator"; import { calculateScores, printScores } from "../../utils/scoring"; -import type { RawBenchmarkDetail } from "../results"; async function runBenchmark( page: Page, diff --git a/packages/cli/src/commands/benchmark/cookie-banner-detector.ts b/packages/cli/src/commands/benchmark/cookie-banner-detector.ts index bb04e2a..578d692 100644 --- a/packages/cli/src/commands/benchmark/cookie-banner-detector.ts +++ b/packages/cli/src/commands/benchmark/cookie-banner-detector.ts @@ -200,13 +200,11 @@ export class CookieBannerDetector { for (const mutation of mutations) { if (mutation.type === 'childList' && mutation.addedNodes.length > 0) { console.log("🔍 [MUTATION] Nodes added:", mutation.addedNodes.length); - // Check if any added nodes might be our banner - for (const node of mutation.addedNodes) { + for (const node of Array.from(mutation.addedNodes)) { if (node.nodeType === Node.ELEMENT_NODE) { const element = node as Element; console.log("🔍 [MUTATION] Added element:", element.tagName, element.className, element.id); - // Check if this element or its children match our selectors for (const selector of selectors) { if (element.matches?.(selector)) { diff --git a/packages/cli/src/commands/db.ts b/packages/cli/src/commands/db.ts index 4e861ee..0e32688 100644 --- a/packages/cli/src/commands/db.ts +++ b/packages/cli/src/commands/db.ts @@ -173,7 +173,7 @@ async function studioCommand() { try { runDrizzleCommand('studio'); - } catch (error) { + } catch { // Studio command might be interrupted by Ctrl+C, which is normal p.log.info('Studio closed.'); } diff --git a/packages/cli/src/commands/results.ts b/packages/cli/src/commands/results.ts index 39054bc..35f0593 100644 --- a/packages/cli/src/commands/results.ts +++ b/packages/cli/src/commands/results.ts @@ -238,7 +238,7 @@ export interface RawBenchmarkDetail { language: string; } -export interface BenchmarkOutput { +interface BenchmarkOutput { app: string; results: RawBenchmarkDetail[]; scores?: { @@ -375,23 +375,6 @@ async function loadConfigForApp(appName: string): Promise { } } -// Helper function to safely access optional nested properties -function safeGet(obj: unknown, path: string, defaultValue: T): T { - try { - const result = path.split(".").reduce((current, key) => { - if (current && typeof current === "object" && key in current) { - return (current as Record)[key]; - } - return undefined; - }, obj); - return result !== undefined && result !== null - ? (result as T) - : defaultValue; - } catch { - return defaultValue; - } -} - async function aggregateResults(resultsDir: string) { const resultsFiles = await findResultsFiles(resultsDir); const results: Record = {}; diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index 29b5808..5cee321 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -64,7 +64,6 @@ async function main() { return onCancel(); } - // biome-ignore lint/style/useDefaultSwitchClause: switch (selectedCommand) { case "benchmark": await benchmarkCommand(); diff --git a/packages/cli/src/lib/benchmark-runner.ts b/packages/cli/src/lib/benchmark-runner.ts deleted file mode 100644 index d311fee..0000000 --- a/packages/cli/src/lib/benchmark-runner.ts +++ /dev/null @@ -1,189 +0,0 @@ -import { chromium, type Page } from "@playwright/test"; -import { PerformanceMetricsCollector } from "playwright-performance-metrics"; -import type { Config, BenchmarkResult, BenchmarkDetails } from "../types"; -import { CookieBannerCollector } from "./collectors/cookie-banner-collector"; -import { NetworkMonitor } from "./collectors/network-monitor"; -import { ResourceTimingCollector } from "./collectors/resource-timing-collector"; -import { - PerformanceAggregator, - type CoreWebVitals, -} from "./metrics/performance-aggregator"; - -export class BenchmarkRunner { - private config: Config; - private cookieBannerCollector: CookieBannerCollector; - private networkMonitor: NetworkMonitor; - private resourceTimingCollector: ResourceTimingCollector; - private performanceAggregator: PerformanceAggregator; - - constructor(config: Config) { - this.config = config; - this.cookieBannerCollector = new CookieBannerCollector(config); - this.networkMonitor = new NetworkMonitor(config); - this.resourceTimingCollector = new ResourceTimingCollector(); - this.performanceAggregator = new PerformanceAggregator(); - } - - /** - * Run a single benchmark iteration - */ - async runSingleBenchmark(page: Page, url: string): Promise { - console.log(`🔍 [DEBUG] Starting cookie banner benchmark for: ${url}`); - console.log( - "🔍 [DEBUG] Cookie banner selectors:", - this.config.cookieBanner?.selectors || [] - ); - console.log( - "🔍 [DEBUG] Bundle type from config:", - this.config.techStack?.bundleType - ); - - // Initialize collectors - const collector = new PerformanceMetricsCollector(); - const cookieBannerMetrics = this.cookieBannerCollector.initializeMetrics(); - - // Setup monitoring and detection - await this.networkMonitor.setupMonitoring(page); - await this.cookieBannerCollector.setupDetection(page); - - // Navigate to the page - console.log(`🔍 [DEBUG] Navigating to: ${url}`); - await page.goto(url, { waitUntil: "networkidle" }); - - // Wait for the specified element - await this.waitForElement(page); - - // Wait for network to be idle - console.log("🔍 [DEBUG] Waiting for network idle..."); - await page.waitForLoadState("networkidle"); - - // Collect core web vitals - console.log("🔍 [DEBUG] Collecting core web vitals..."); - const coreWebVitals = await this.collectCoreWebVitals(collector, page); - - // Collect cookie banner specific metrics - const cookieBannerData = await this.cookieBannerCollector.collectMetrics( - page - ); - console.log("🔍 [DEBUG] Cookie banner metrics:", cookieBannerData); - - // Collect detailed resource timing data - const resourceMetrics = await this.resourceTimingCollector.collect(page); - - // Get network metrics - const networkRequests = this.networkMonitor.getNetworkRequests(); - const networkMetrics = this.networkMonitor.getMetrics(); - - // Aggregate all metrics - const finalMetrics = this.performanceAggregator.aggregateMetrics( - coreWebVitals, - cookieBannerData, - cookieBannerMetrics, - networkRequests, - networkMetrics, - resourceMetrics, - this.config - ); - - // Log results - this.performanceAggregator.logResults( - finalMetrics, - cookieBannerMetrics, - this.config - ); - - // Cleanup - await collector.cleanup(); - this.networkMonitor.reset(); - - return finalMetrics; - } - - /** - * Run multiple benchmark iterations - */ - async runBenchmarks(serverUrl: string): Promise { - const browser = await chromium.launch({ - headless: true, // Keep headless mode for stability - args: ["--remote-debugging-port=9222"], - }); - const results: BenchmarkDetails[] = []; - - try { - for (let i = 0; i < this.config.iterations; i++) { - console.log( - `[Benchmark] Running iteration ${i + 1}/${this.config.iterations}...` - ); - - const context = await browser.newContext(); - const page = await context.newPage(); - - const result = await this.runSingleBenchmark( - page, - // Add a timestamp to the URL to avoid caching - `${serverUrl}?t=${Date.now()}` - ); - results.push(result); - - await context.close(); - } - } finally { - await browser.close(); - } - - const averages = this.performanceAggregator.calculateAverages(results); - - return { - name: this.config.name, - baseline: this.config.baseline || false, - techStack: this.config.techStack, - source: this.config.source, - includes: this.config.includes, - company: this.config.company, - tags: this.config.tags, - details: results, - average: averages, - }; - } - - /** - * Wait for the specified element based on config - */ - private async waitForElement(page: Page): Promise { - if (this.config.testId) { - console.log(`🔍 [DEBUG] Waiting for testId: ${this.config.testId}`); - await page.waitForSelector(`[data-testid="${this.config.testId}"]`); - } else if (this.config.id) { - console.log(`🔍 [DEBUG] Waiting for id: ${this.config.id}`); - await page.waitForSelector(`#${this.config.id}`); - } else if (this.config.custom) { - console.log("🔍 [DEBUG] Running custom wait function"); - await this.config.custom(page); - } - } - - /** - * Collect core web vitals using playwright-performance-metrics - */ - private async collectCoreWebVitals( - collector: PerformanceMetricsCollector, - page: Page - ): Promise { - const coreWebVitals = await collector.collectMetrics(page, { - timeout: 10000, - retryTimeout: 5000, - }); - - console.log("🔍 [DEBUG] Core web vitals collected:", { - fcp: coreWebVitals.paint?.firstContentfulPaint, - lcp: coreWebVitals.largestContentfulPaint, - cls: coreWebVitals.cumulativeLayoutShift, - tbt: coreWebVitals.totalBlockingTime, - domComplete: coreWebVitals.domCompleteTiming, - pageLoad: coreWebVitals.pageloadTiming, - totalBytes: coreWebVitals.totalBytes, - }); - - return coreWebVitals; - } -} diff --git a/packages/cli/src/lib/collectors/cookie-banner-collector.ts b/packages/cli/src/lib/collectors/cookie-banner-collector.ts deleted file mode 100644 index 8f92c0b..0000000 --- a/packages/cli/src/lib/collectors/cookie-banner-collector.ts +++ /dev/null @@ -1,279 +0,0 @@ -import type { Page } from "@playwright/test"; -import type { Config, LayoutShiftEntry } from "../../types"; - -interface WindowWithCookieMetrics extends Window { - __cookieBannerMetrics: { - pageLoadStart: number; - bannerDetectionStart: number; - bannerFirstSeen: number; - bannerInteractive: number; - layoutShiftsBefore: number; - layoutShiftsAfter: number; - detected: boolean; - selector: string | null; - }; -} - -export interface CookieBannerMetrics { - detectionStartTime: number; - bannerRenderTime: number; - bannerInteractiveTime: number; - bannerScriptLoadTime: number; - bannerLayoutShiftImpact: number; - bannerNetworkRequests: number; - bannerBundleSize: number; - bannerMainThreadBlockingTime: number; - isBundled: boolean; - isIIFE: boolean; - bannerDetected: boolean; - bannerSelector: string | null; -} - -export interface CookieBannerData { - detected: boolean; - selector: string | null; - bannerRenderTime: number; - bannerInteractiveTime: number; - bannerHydrationTime: number; - layoutShiftImpact: number; - viewportCoverage: number; -} - -export class CookieBannerCollector { - private config: Config; - - constructor(config: Config) { - this.config = config; - } - - /** - * Determines bundle strategy from config - */ - getBundleStrategy(): { isBundled: boolean; isIIFE: boolean } { - const bundleType = this.config.techStack?.bundleType; - const isIIFE = - bundleType === "iffe" || - (Array.isArray(bundleType) && bundleType.includes("iffe")); - const isBundled = - !isIIFE && - (bundleType === "bundled" || - (Array.isArray(bundleType) && - (bundleType.includes("esm") || bundleType.includes("cjs"))) || - bundleType === "esm" || - bundleType === "cjs"); - - console.log( - `🔍 [BUNDLE-STRATEGY] Detected from config: ${ - isBundled ? "Bundled" : isIIFE ? "IIFE" : "Unknown" - }`, - { - bundleType, - isBundled, - isIIFE, - } - ); - - return { isBundled, isIIFE }; - } - - /** - * Initialize cookie banner metrics tracking - */ - initializeMetrics(): CookieBannerMetrics { - const { isBundled, isIIFE } = this.getBundleStrategy(); - - return { - detectionStartTime: 0, - bannerRenderTime: 0, - bannerInteractiveTime: 0, - bannerScriptLoadTime: 0, - bannerLayoutShiftImpact: 0, - bannerNetworkRequests: 0, - bannerBundleSize: 0, - bannerMainThreadBlockingTime: 0, - isBundled, - isIIFE, - bannerDetected: false, - bannerSelector: null, - }; - } - - /** - * Set up cookie banner detection script in the browser - */ - async setupDetection(page: Page): Promise { - const selectors = this.config.cookieBanner?.selectors || []; - - await page.addInitScript((selectors: string[]) => { - console.log("🔍 [BROWSER] Setting up cookie banner detection..."); - - // Store initial performance baseline - (window as unknown as WindowWithCookieMetrics).__cookieBannerMetrics = { - pageLoadStart: performance.now(), - bannerDetectionStart: 0, - bannerFirstSeen: 0, - bannerInteractive: 0, - layoutShiftsBefore: 0, - layoutShiftsAfter: 0, - detected: false, - selector: null, - }; - - // Monitor for layout shifts specifically - let cumulativeLayoutShift = 0; - if ("PerformanceObserver" in window) { - const clsObserver = new PerformanceObserver((list) => { - for (const entry of list.getEntries()) { - const layoutShiftEntry = entry as LayoutShiftEntry; - if (!layoutShiftEntry.hadRecentInput) { - cumulativeLayoutShift += layoutShiftEntry.value; - ( - window as unknown as WindowWithCookieMetrics - ).__cookieBannerMetrics.layoutShiftsAfter = cumulativeLayoutShift; - } - } - }); - clsObserver.observe({ type: "layout-shift", buffered: true }); - } - - // Cookie banner detection logic - const detectCookieBanner = () => { - ( - window as unknown as WindowWithCookieMetrics - ).__cookieBannerMetrics.bannerDetectionStart = performance.now(); - - for (const selector of selectors) { - try { - const element = document.querySelector(selector); - if (element) { - const rect = element.getBoundingClientRect(); - const isVisible = - rect.width > 0 && - rect.height > 0 && - window.getComputedStyle(element).visibility !== "hidden" && - window.getComputedStyle(element).display !== "none"; - - if (isVisible) { - const metrics = (window as unknown as WindowWithCookieMetrics) - .__cookieBannerMetrics; - metrics.detected = true; - metrics.selector = selector; - metrics.bannerFirstSeen = performance.now(); - metrics.layoutShiftsBefore = cumulativeLayoutShift; - - console.log("🔍 [BANNER] Cookie banner detected:", selector); - console.log( - "🔍 [BANNER] Banner render time:", - metrics.bannerFirstSeen - metrics.pageLoadStart, - "ms" - ); - - // Check if banner is interactive - const buttons = element.querySelectorAll( - 'button, a, [role="button"], [onclick]' - ); - if (buttons.length > 0) { - // Test if buttons are actually clickable - const firstButton = buttons[0] as HTMLElement; - if (firstButton.offsetParent !== null) { - // Element is visible and clickable - metrics.bannerInteractive = performance.now(); - console.log( - "🔍 [BANNER] Banner interactive time:", - metrics.bannerInteractive - metrics.pageLoadStart, - "ms" - ); - } - } - - return true; - } - } - } catch (error) { - console.warn( - "🔍 [BANNER] Error checking selector:", - selector, - error - ); - } - } - return false; - }; - - // Start detection after DOM is ready - if (document.readyState === "loading") { - document.addEventListener("DOMContentLoaded", () => { - setTimeout(() => { - if (!detectCookieBanner()) { - // Keep checking for dynamically loaded banners - const interval = setInterval(() => { - if (detectCookieBanner()) { - clearInterval(interval); - } - }, 100); - - // Stop checking after 10 seconds - setTimeout(() => clearInterval(interval), 10000); - } - }, 100); // Small delay to allow for initial render - }); - } else { - setTimeout(() => { - if (!detectCookieBanner()) { - const interval = setInterval(() => { - if (detectCookieBanner()) { - clearInterval(interval); - } - }, 100); - - setTimeout(() => clearInterval(interval), 10000); - } - }, 100); - } - }, selectors); - } - - /** - * Collect cookie banner specific metrics from the browser - */ - async collectMetrics(page: Page): Promise { - return page.evaluate(() => { - const metrics = (window as unknown as WindowWithCookieMetrics) - .__cookieBannerMetrics; - if (!metrics) { - return null; - } - - return { - detected: metrics.detected, - selector: metrics.selector, - bannerRenderTime: metrics.bannerFirstSeen - metrics.pageLoadStart, - bannerInteractiveTime: - metrics.bannerInteractive - metrics.pageLoadStart, - bannerHydrationTime: - metrics.bannerInteractive > 0 - ? metrics.bannerInteractive - metrics.bannerFirstSeen - : 0, - layoutShiftImpact: - metrics.layoutShiftsAfter - metrics.layoutShiftsBefore, - viewportCoverage: metrics.detected - ? (() => { - if (!metrics.selector) { - return 0; - } - const element = document.querySelector(metrics.selector); - if (element) { - const rect = element.getBoundingClientRect(); - return ( - ((rect.width * rect.height) / - (window.innerWidth * window.innerHeight)) * - 100 - ); - } - return 0; - })() - : 0, - }; - }); - } -} diff --git a/packages/cli/src/lib/collectors/index.ts b/packages/cli/src/lib/collectors/index.ts deleted file mode 100644 index 0eb6d64..0000000 --- a/packages/cli/src/lib/collectors/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -export { - CookieBannerCollector, - type CookieBannerMetrics, - type CookieBannerData, -} from "./cookie-banner-collector"; -export { - NetworkMonitor, - type NetworkRequest, - type NetworkMetrics, -} from "./network-monitor"; -export { - ResourceTimingCollector, - type ResourceTimingData, -} from "./resource-timing-collector"; diff --git a/packages/cli/src/lib/collectors/network-monitor.ts b/packages/cli/src/lib/collectors/network-monitor.ts deleted file mode 100644 index 8be8c34..0000000 --- a/packages/cli/src/lib/collectors/network-monitor.ts +++ /dev/null @@ -1,136 +0,0 @@ -import type { Page, Route } from "@playwright/test"; -import type { Config } from "../../types"; - -export interface NetworkRequest { - url: string; - size: number; - duration: number; - startTime: number; - isScript: boolean; - isThirdParty: boolean; -} - -export interface NetworkMetrics { - bannerNetworkRequests: number; - bannerBundleSize: number; -} - -export class NetworkMonitor { - private config: Config; - private networkRequests: NetworkRequest[] = []; - private metrics: NetworkMetrics = { - bannerNetworkRequests: 0, - bannerBundleSize: 0, - }; - - constructor(config: Config) { - this.config = config; - } - - /** - * Set up network request monitoring - */ - async setupMonitoring(page: Page): Promise { - await page.route("**/*", async (route: Route) => { - const request = route.request(); - const url = request.url(); - - try { - const response = await route.fetch(); - const headers = response.headers(); - - // Add timing-allow-origin header for all responses - headers["timing-allow-origin"] = "*"; - - const isScript = request.resourceType() === "script"; - const isThirdParty = !url.includes(new URL(url).hostname); - - if (isScript) { - const contentLength = response.headers()["content-length"]; - const size = contentLength ? +contentLength || 0 : 0; - - this.networkRequests.push({ - url, - size: size / 1024, // Convert to KB - duration: 0, // Will be calculated later - startTime: Date.now(), - isScript, - isThirdParty, - }); - - if (isThirdParty) { - this.metrics.bannerNetworkRequests++; - this.metrics.bannerBundleSize += size / 1024; - console.log( - `🌐 [THIRD-PARTY-SCRIPT] Detected: ${url} (${( - size / 1024 - ).toFixed(2)}KB)` - ); - } - } - - await route.fulfill({ response, headers }); - } catch { - // If we can't modify the response, just continue with the original request - await route.continue(); - } - }); - } - - /** - * Get collected network requests - */ - getNetworkRequests(): NetworkRequest[] { - return this.networkRequests; - } - - /** - * Get network metrics - */ - getMetrics(): NetworkMetrics { - return this.metrics; - } - - /** - * Calculate network impact metrics - */ - calculateNetworkImpact(): { - totalImpact: number; - totalDownloadTime: number; - thirdPartyImpact: number; - scriptImpact: number; - } { - const totalImpact = this.networkRequests.reduce( - (acc, req) => acc + req.size, - 0 - ); - const totalDownloadTime = this.networkRequests.reduce( - (acc, req) => acc + req.duration, - 0 - ); - const thirdPartyImpact = this.networkRequests - .filter((req) => req.isThirdParty) - .reduce((acc, req) => acc + req.size, 0); - const scriptImpact = this.networkRequests - .filter((req) => req.isScript) - .reduce((acc, req) => acc + req.size, 0); - - return { - totalImpact, - totalDownloadTime, - thirdPartyImpact, - scriptImpact, - }; - } - - /** - * Reset collected data - */ - reset(): void { - this.networkRequests = []; - this.metrics = { - bannerNetworkRequests: 0, - bannerBundleSize: 0, - }; - } -} diff --git a/packages/cli/src/lib/collectors/resource-timing-collector.ts b/packages/cli/src/lib/collectors/resource-timing-collector.ts deleted file mode 100644 index 26b09f3..0000000 --- a/packages/cli/src/lib/collectors/resource-timing-collector.ts +++ /dev/null @@ -1,274 +0,0 @@ -import type { Page } from "@playwright/test"; - -export interface ResourceTimingData { - timing: { - navigationStart: number; - domContentLoaded: number; - load: number; - scripts: { - bundled: { - loadStart: number; - loadEnd: number; - executeStart: number; - executeEnd: number; - }; - thirdParty: { - loadStart: number; - loadEnd: number; - executeStart: number; - executeEnd: number; - }; - }; - }; - size: { - total: number; - bundled: number; - thirdParty: number; - cookieServices: number; - scripts: { - total: number; - initial: number; - dynamic: number; - thirdParty: number; - cookieServices: number; - }; - styles: number; - images: number; - fonts: number; - other: number; - }; - resources: { - scripts: Array<{ - name: string; - size: number; - duration: number; - startTime: number; - isThirdParty: boolean; - isDynamic: boolean; - isCookieService: boolean; - dnsTime: number; - connectionTime: number; - }>; - styles: Array<{ - name: string; - size: number; - duration: number; - startTime: number; - isThirdParty: boolean; - isCookieService: boolean; - }>; - images: Array<{ - name: string; - size: number; - duration: number; - startTime: number; - isThirdParty: boolean; - isCookieService: boolean; - }>; - fonts: Array<{ - name: string; - size: number; - duration: number; - startTime: number; - isThirdParty: boolean; - isCookieService: boolean; - }>; - other: Array<{ - name: string; - size: number; - duration: number; - startTime: number; - isThirdParty: boolean; - isCookieService: boolean; - type: string; - }>; - }; - language: string; - duration: number; -} - -export class ResourceTimingCollector { - /** - * Collect detailed resource timing data from the browser - */ - async collect(page: Page): Promise { - console.log("🔍 [DEBUG] Collecting resource timing data..."); - - return page.evaluate(() => { - console.log("🔍 [BROWSER] Starting resource collection..."); - - const perfEntries = performance.getEntriesByType( - "navigation" - )[0] as PerformanceNavigationTiming; - const resourceEntries = performance.getEntriesByType( - "resource" - ) as PerformanceResourceTiming[]; - - console.log("🔍 [BROWSER] Navigation timing:", { - navigationStart: perfEntries.startTime, - domContentLoaded: - perfEntries.domContentLoadedEventEnd - perfEntries.startTime, - loadComplete: perfEntries.loadEventEnd - perfEntries.startTime, - domInteractive: perfEntries.domInteractive - perfEntries.startTime, - }); - - console.log("🔍 [BROWSER] Found", resourceEntries.length, "resources"); - - // Categorize resources - const scriptEntries = resourceEntries.filter( - (entry) => entry.initiatorType === "script" - ); - const styleEntries = resourceEntries.filter( - (entry) => entry.initiatorType === "link" && entry.name.endsWith(".css") - ); - const imageEntries = resourceEntries.filter( - (entry) => entry.initiatorType === "img" - ); - const fontEntries = resourceEntries.filter( - (entry) => entry.initiatorType === "font" - ); - const otherEntries = resourceEntries.filter( - (entry) => - !["script", "link", "img", "font"].includes(entry.initiatorType) - ); - - console.log("🔍 [BROWSER] Resource breakdown:", { - scripts: scriptEntries.length, - styles: styleEntries.length, - images: imageEntries.length, - fonts: fontEntries.length, - other: otherEntries.length, - }); - - // Calculate sizes - const calculateSize = (entries: PerformanceResourceTiming[]) => { - const total = - entries.reduce((acc, entry) => { - const size = entry.transferSize || entry.encodedBodySize || 0; - return acc + size; - }, 0) / 1024; - return total; - }; - - const navigationStart = perfEntries.startTime; - const domContentLoaded = - perfEntries.domContentLoadedEventEnd - navigationStart; - const load = perfEntries.loadEventEnd - navigationStart; - - console.log("🔍 [BROWSER] Calculated timings:", { - navigationStart, - domContentLoaded, - load, - }); - - return { - timing: { - navigationStart, - domContentLoaded, - load, - scripts: { - bundled: { - loadStart: 0, - loadEnd: scriptEntries.reduce( - (acc, entry) => acc + entry.duration, - 0 - ), - executeStart: 0, - executeEnd: 0, - }, - thirdParty: { - loadStart: 0, - loadEnd: scriptEntries.reduce( - (acc, entry) => acc + entry.duration, - 0 - ), - executeStart: 0, - executeEnd: 0, - }, - }, - }, - size: { - total: calculateSize(resourceEntries), - bundled: calculateSize( - scriptEntries.filter((e) => - e.name.includes(window.location.hostname) - ) - ), - thirdParty: calculateSize( - scriptEntries.filter( - (e) => !e.name.includes(window.location.hostname) - ) - ), - cookieServices: 0, // Will be calculated later - scripts: { - total: calculateSize(scriptEntries), - initial: calculateSize( - scriptEntries.filter((e) => e.startTime < domContentLoaded) - ), - dynamic: calculateSize( - scriptEntries.filter((e) => e.startTime >= domContentLoaded) - ), - thirdParty: calculateSize( - scriptEntries.filter( - (e) => !e.name.includes(window.location.hostname) - ) - ), - cookieServices: 0, // Will be calculated later - }, - styles: calculateSize(styleEntries), - images: calculateSize(imageEntries), - fonts: calculateSize(fontEntries), - other: calculateSize(otherEntries), - }, - resources: { - scripts: scriptEntries.map((entry) => ({ - name: entry.name, - size: entry.transferSize ? entry.transferSize / 1024 : 0, - duration: entry.duration, - startTime: entry.startTime - navigationStart, - isThirdParty: !entry.name.includes(window.location.hostname), - isDynamic: entry.startTime >= domContentLoaded, - isCookieService: false, - dnsTime: entry.domainLookupEnd - entry.domainLookupStart, - connectionTime: entry.connectEnd - entry.connectStart, - })), - styles: styleEntries.map((entry) => ({ - name: entry.name, - size: entry.transferSize ? entry.transferSize / 1024 : 0, - duration: entry.duration, - startTime: entry.startTime - navigationStart, - isThirdParty: !entry.name.includes(window.location.hostname), - isCookieService: false, - })), - images: imageEntries.map((entry) => ({ - name: entry.name, - size: entry.transferSize ? entry.transferSize / 1024 : 0, - duration: entry.duration, - startTime: entry.startTime - navigationStart, - isThirdParty: !entry.name.includes(window.location.hostname), - isCookieService: false, - })), - fonts: fontEntries.map((entry) => ({ - name: entry.name, - size: entry.transferSize ? entry.transferSize / 1024 : 0, - duration: entry.duration, - startTime: entry.startTime - navigationStart, - isThirdParty: !entry.name.includes(window.location.hostname), - isCookieService: false, - })), - other: otherEntries.map((entry) => ({ - name: entry.name, - size: entry.transferSize ? entry.transferSize / 1024 : 0, - duration: entry.duration, - startTime: entry.startTime - navigationStart, - isThirdParty: !entry.name.includes(window.location.hostname), - isCookieService: false, - type: entry.initiatorType, - })), - }, - language: "en", - duration: load, - }; - }); - } -} diff --git a/packages/cli/src/lib/metrics/index.ts b/packages/cli/src/lib/metrics/index.ts deleted file mode 100644 index a6b3319..0000000 --- a/packages/cli/src/lib/metrics/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export { - PerformanceAggregator, - type CoreWebVitals, -} from "./performance-aggregator"; diff --git a/packages/cli/src/lib/metrics/performance-aggregator.ts b/packages/cli/src/lib/metrics/performance-aggregator.ts deleted file mode 100644 index 38b6a81..0000000 --- a/packages/cli/src/lib/metrics/performance-aggregator.ts +++ /dev/null @@ -1,286 +0,0 @@ -import type { BenchmarkDetails, BenchmarkResult, Config } from "../../types"; -import type { - CookieBannerData, - CookieBannerMetrics, -} from "../collectors/cookie-banner-collector"; -import type { - NetworkRequest, - NetworkMetrics, -} from "../collectors/network-monitor"; -import type { ResourceTimingData } from "../collectors/resource-timing-collector"; - -export interface CoreWebVitals { - paint?: { - firstPaint?: number; - firstContentfulPaint?: number; - }; - largestContentfulPaint?: number; - cumulativeLayoutShift?: number; - totalBlockingTime?: number; - domCompleteTiming?: number; - pageloadTiming?: number; - totalBytes?: number; -} - -export class PerformanceAggregator { - /** - * Calculate Time to Interactive based on core web vitals and cookie banner interaction - */ - calculateTTI( - coreWebVitals: CoreWebVitals, - cookieBannerData: CookieBannerData | null - ): number { - return ( - Math.max( - coreWebVitals.paint?.firstContentfulPaint || 0, - coreWebVitals.domCompleteTiming || 0, - cookieBannerData?.bannerInteractiveTime || 0 - ) + 1000 - ); // Add buffer for true interactivity - } - - /** - * Merge all collected metrics into final benchmark details - */ - aggregateMetrics( - coreWebVitals: CoreWebVitals, - cookieBannerData: CookieBannerData | null, - cookieBannerMetrics: CookieBannerMetrics, - networkRequests: NetworkRequest[], - networkMetrics: NetworkMetrics, - resourceMetrics: ResourceTimingData, - config: Config - ): BenchmarkDetails { - const tti = this.calculateTTI(coreWebVitals, cookieBannerData); - - const networkImpact = this.calculateNetworkImpact(networkRequests); - - return { - duration: resourceMetrics.duration, - size: resourceMetrics.size, - timing: { - navigationStart: resourceMetrics.timing.navigationStart, - domContentLoaded: resourceMetrics.timing.domContentLoaded, - load: resourceMetrics.timing.load, - firstPaint: coreWebVitals.paint?.firstPaint || 0, - firstContentfulPaint: coreWebVitals.paint?.firstContentfulPaint || 0, - largestContentfulPaint: coreWebVitals.largestContentfulPaint || 0, - timeToInteractive: tti, - cumulativeLayoutShift: coreWebVitals.cumulativeLayoutShift || 0, - cookieBanner: { - renderStart: cookieBannerData?.bannerRenderTime || 0, - renderEnd: cookieBannerData?.bannerInteractiveTime || 0, - interactionStart: cookieBannerData?.bannerInteractiveTime || 0, - interactionEnd: cookieBannerData?.bannerInteractiveTime || 0, - layoutShift: cookieBannerData?.layoutShiftImpact || 0, - detected: cookieBannerData?.detected || false, - selector: cookieBannerData?.selector || null, - serviceName: config.cookieBanner?.serviceName || "unknown", - visibilityTime: cookieBannerData?.bannerInteractiveTime || 0, - viewportCoverage: cookieBannerData?.viewportCoverage || 0, - }, - thirdParty: { - dnsLookupTime: 0, - connectionTime: 0, - downloadTime: networkImpact.totalDownloadTime, - totalImpact: networkImpact.totalImpact, - cookieServices: { - hosts: config.cookieBanner?.serviceHosts || [], - totalSize: networkMetrics.bannerBundleSize, - resourceCount: networkMetrics.bannerNetworkRequests, - dnsLookupTime: 0, - connectionTime: 0, - downloadTime: networkImpact.totalDownloadTime, - }, - }, - mainThreadBlocking: { - total: coreWebVitals.totalBlockingTime || 0, - cookieBannerEstimate: - cookieBannerMetrics.bannerMainThreadBlockingTime, - percentageFromCookies: - (coreWebVitals.totalBlockingTime || 0) > 0 - ? (cookieBannerMetrics.bannerMainThreadBlockingTime / - (coreWebVitals.totalBlockingTime || 1)) * - 100 - : 0, - }, - scripts: resourceMetrics.timing.scripts, - }, - resources: resourceMetrics.resources, - language: resourceMetrics.language, - cookieBanner: { - detected: cookieBannerData?.detected || false, - selector: cookieBannerData?.selector || null, - serviceName: config.cookieBanner?.serviceName || "unknown", - visibilityTime: cookieBannerData?.bannerInteractiveTime || 0, - viewportCoverage: cookieBannerData?.viewportCoverage || 0, - }, - thirdParty: { - cookieServices: { - hosts: config.cookieBanner?.serviceHosts || [], - totalSize: networkMetrics.bannerBundleSize, - resourceCount: networkMetrics.bannerNetworkRequests, - dnsLookupTime: 0, - connectionTime: 0, - downloadTime: networkImpact.totalDownloadTime, - }, - totalImpact: networkImpact.totalImpact, - }, - }; - } - - /** - * Calculate network impact metrics - */ - private calculateNetworkImpact(networkRequests: NetworkRequest[]): { - totalImpact: number; - totalDownloadTime: number; - } { - const totalImpact = networkRequests.reduce((acc, req) => acc + req.size, 0); - const totalDownloadTime = networkRequests.reduce( - (acc, req) => acc + req.duration, - 0 - ); - - return { totalImpact, totalDownloadTime }; - } - - /** - * Calculate average metrics from multiple benchmark results - */ - calculateAverages(results: BenchmarkDetails[]): BenchmarkResult["average"] { - if (results.length === 0) { - throw new Error("Cannot calculate averages from empty results array"); - } - - return { - firstContentfulPaint: - results.reduce( - (acc, curr) => acc + curr.timing.firstContentfulPaint, - 0 - ) / results.length, - largestContentfulPaint: - results.reduce( - (acc, curr) => acc + curr.timing.largestContentfulPaint, - 0 - ) / results.length, - timeToInteractive: - results.reduce((acc, curr) => acc + curr.timing.timeToInteractive, 0) / - results.length, - totalBlockingTime: - results.reduce( - (acc, curr) => acc + curr.timing.mainThreadBlocking.total, - 0 - ) / results.length, - speedIndex: 0, // Default value - timeToFirstByte: 0, // Default value - firstInputDelay: 0, // Default value - cumulativeLayoutShift: - results.reduce( - (acc, curr) => acc + curr.timing.cumulativeLayoutShift, - 0 - ) / results.length, - domSize: 0, // Default value - totalRequests: - results.reduce( - (acc, curr) => - acc + - (curr.resources.scripts.length + - curr.resources.styles.length + - curr.resources.images.length + - curr.resources.fonts.length + - curr.resources.other.length), - 0 - ) / results.length, - totalSize: - results.reduce((acc, curr) => acc + curr.size.total, 0) / - results.length, - jsSize: - results.reduce((acc, curr) => acc + curr.size.scripts.total, 0) / - results.length, - cssSize: - results.reduce((acc, curr) => acc + curr.size.styles, 0) / results.length, - imageSize: - results.reduce((acc, curr) => acc + curr.size.images, 0) / results.length, - fontSize: - results.reduce((acc, curr) => acc + curr.size.fonts, 0) / results.length, - otherSize: - results.reduce((acc, curr) => acc + curr.size.other, 0) / results.length, - thirdPartyRequests: 0, // Default value - thirdPartySize: 0, // Default value - thirdPartyDomains: 0, // Default value - thirdPartyCookies: 0, // Default value - thirdPartyLocalStorage: 0, // Default value - thirdPartySessionStorage: 0, // Default value - thirdPartyIndexedDB: 0, // Default value - thirdPartyCache: 0, // Default value - thirdPartyServiceWorkers: 0, // Default value - thirdPartyWebWorkers: 0, // Default value - thirdPartyWebSockets: 0, // Default value - thirdPartyBeacons: 0, // Default value - thirdPartyFetch: 0, // Default value - thirdPartyXHR: 0, // Default value - thirdPartyScripts: 0, // Default value - thirdPartyStyles: 0, // Default value - thirdPartyImages: 0, // Default value - thirdPartyFonts: 0, // Default value - thirdPartyMedia: 0, // Default value - thirdPartyOther: 0, // Default value - thirdPartyTiming: { - total: 0, - blocking: 0, - dns: 0, - connect: 0, - ssl: 0, - send: 0, - wait: 0, - receive: 0, - }, - cookieBannerTiming: { - firstPaint: 0, - firstContentfulPaint: - results.reduce( - (acc, curr) => acc + curr.timing.firstContentfulPaint, - 0 - ) / results.length, - domContentLoaded: - results.reduce((acc, curr) => acc + curr.timing.domContentLoaded, 0) / - results.length, - load: - results.reduce((acc, curr) => acc + curr.timing.load, 0) / - results.length, - }, - }; - } - - /** - * Log comprehensive benchmark results - */ - logResults( - finalMetrics: BenchmarkDetails, - cookieBannerMetrics: CookieBannerMetrics, - config: Config - ): void { - console.log("🔍 [DEBUG] Final cookie banner benchmark results:", { - fcp: finalMetrics.timing.firstContentfulPaint, - lcp: finalMetrics.timing.largestContentfulPaint, - cls: finalMetrics.timing.cumulativeLayoutShift, - tti: finalMetrics.timing.timeToInteractive, - tbt: finalMetrics.timing.mainThreadBlocking.total, - bannerDetected: finalMetrics.cookieBanner.detected, - bannerRenderTime: - finalMetrics.timing.cookieBanner.renderEnd - - finalMetrics.timing.cookieBanner.renderStart, - bannerLayoutShift: finalMetrics.timing.cookieBanner.layoutShift, - bannerNetworkImpact: finalMetrics.thirdParty.totalImpact, - bundleStrategy: cookieBannerMetrics.isBundled - ? "Bundled" - : cookieBannerMetrics.isIIFE - ? "IIFE" - : "Unknown", - isBundled: cookieBannerMetrics.isBundled, - isIIFE: cookieBannerMetrics.isIIFE, - configBundleType: config.techStack?.bundleType, - }); - } -} diff --git a/packages/cli/src/lib/performance-enhanced.ts b/packages/cli/src/lib/performance-enhanced.ts deleted file mode 100644 index e2e9e71..0000000 --- a/packages/cli/src/lib/performance-enhanced.ts +++ /dev/null @@ -1,259 +0,0 @@ -import type { Page } from "@playwright/test"; -import { - PerformanceMetricsCollector, - DefaultNetworkPresets, -} from "playwright-performance-metrics"; -import type { CookieBannerMetrics } from "./performance"; - -export interface EnhancedPerformanceOptions { - networkCondition?: keyof typeof DefaultNetworkPresets | "none"; - timeout?: number; - initialDelay?: number; - retryTimeout?: number; -} - -export class EnhancedPerformanceCollector { - private collector: PerformanceMetricsCollector; - - constructor() { - this.collector = new PerformanceMetricsCollector(); - } - - async initialize( - page: Page, - options: EnhancedPerformanceOptions = {} - ): Promise { - console.log( - "🔍 [ENHANCED-PERF] Initializing enhanced performance collector..." - ); - - // Set up network conditions if specified - if (options.networkCondition && options.networkCondition !== "none") { - const networkPreset = DefaultNetworkPresets[options.networkCondition]; - if (networkPreset) { - console.log( - `🔍 [ENHANCED-PERF] Applying network preset: ${options.networkCondition}` - ); - await this.collector.initialize(page, networkPreset); - } else { - console.warn( - `🔍 [ENHANCED-PERF] Unknown network preset: ${options.networkCondition}` - ); - } - } - } - - async collectMetrics( - page: Page, - cookieBannerSelectors: string[] = [], - options: EnhancedPerformanceOptions = {} - ): Promise { - console.log("🔍 [ENHANCED-PERF] Collecting performance metrics..."); - - try { - // Use the robust playwright-performance-metrics library - const metrics = await this.collector.collectMetrics(page, { - timeout: options.timeout || 10000, - retryTimeout: options.retryTimeout || 5000, - ...options, - }); - - console.log("🔍 [ENHANCED-PERF] Raw metrics collected:", { - fcp: metrics.paint?.firstContentfulPaint, - lcp: metrics.largestContentfulPaint, - cls: metrics.cumulativeLayoutShift, - tbt: metrics.totalBlockingTime, - domComplete: metrics.domCompleteTiming, - pageLoad: metrics.pageloadTiming, - totalBytes: metrics.totalBytes, - }); - - // Detect cookie banners using our existing logic - const bannerMetrics = await this.detectCookieBanner( - page, - cookieBannerSelectors - ); - - // Convert to our CookieBannerMetrics format - const enhancedMetrics: CookieBannerMetrics = { - // Core Web Vitals from the library - fcp: metrics.paint?.firstContentfulPaint || 0, - lcp: metrics.largestContentfulPaint || 0, - cls: metrics.cumulativeLayoutShift || 0, - tti: this.calculateTTI(metrics), - tbt: metrics.totalBlockingTime || 0, - - // Cookie Banner Specific - bannerDetected: bannerMetrics.detected, - bannerSelector: bannerMetrics.selector, - bannerFirstPaint: bannerMetrics.firstPaint, - bannerLargestContentfulPaint: bannerMetrics.lcp, - bannerTimeToInteractive: bannerMetrics.timeToInteractive, - bannerHydrationTime: bannerMetrics.hydrationTime, - bannerLayoutShift: bannerMetrics.layoutShift, - bannerMainThreadBlocking: bannerMetrics.mainThreadBlocking, - bannerNetworkImpact: bannerMetrics.networkImpact, - bannerVisibilityTime: bannerMetrics.visibilityTime, - bannerViewportCoverage: bannerMetrics.viewportCoverage, - }; - - console.log("🔍 [ENHANCED-PERF] Final enhanced metrics:", { - fcp: enhancedMetrics.fcp, - lcp: enhancedMetrics.lcp, - cls: enhancedMetrics.cls, - tti: enhancedMetrics.tti, - tbt: enhancedMetrics.tbt, - bannerDetected: enhancedMetrics.bannerDetected, - }); - - return enhancedMetrics; - } catch (error) { - console.error("🔍 [ENHANCED-PERF] Error collecting metrics:", error); - // Fallback to basic metrics - return this.getDefaultMetrics(); - } - } - - private async detectCookieBanner( - page: Page, - selectors: string[] - ): Promise<{ - detected: boolean; - selector: string | null; - firstPaint: number; - lcp: number; - timeToInteractive: number; - hydrationTime: number; - layoutShift: number; - mainThreadBlocking: number; - networkImpact: number; - visibilityTime: number; - viewportCoverage: number; - }> { - if (selectors.length === 0) { - return { - detected: false, - selector: null, - firstPaint: 0, - lcp: 0, - timeToInteractive: 0, - hydrationTime: 0, - layoutShift: 0, - mainThreadBlocking: 0, - networkImpact: 0, - visibilityTime: 0, - viewportCoverage: 0, - }; - } - - return page.evaluate((selectors: string[]) => { - for (const selector of selectors) { - try { - const element = document.querySelector(selector); - if (element) { - const rect = element.getBoundingClientRect(); - const isVisible = - rect.width > 0 && - rect.height > 0 && - window.getComputedStyle(element).visibility !== "hidden" && - window.getComputedStyle(element).display !== "none"; - - if (isVisible) { - const viewportCoverage = - ((rect.width * rect.height) / - (window.innerWidth * window.innerHeight)) * - 100; - const now = performance.now(); - - // Check if banner is interactive - const buttons = element.querySelectorAll( - 'button, a, [role="button"], [onclick]' - ); - const timeToInteractive = buttons.length > 0 ? now : 0; - - return { - detected: true, - selector: selector, - firstPaint: now, - lcp: now, - timeToInteractive: timeToInteractive, - hydrationTime: - timeToInteractive > 0 ? timeToInteractive - now : 0, - layoutShift: 0, // Would need more complex measurement - mainThreadBlocking: 0, // Would need more complex measurement - networkImpact: 0, // Would need more complex measurement - visibilityTime: 0, // Would need time tracking - viewportCoverage: viewportCoverage, - }; - } - } - } catch (error) { - console.warn("🔍 [BANNER] Error checking selector:", selector, error); - } - } - - return { - detected: false, - selector: null, - firstPaint: 0, - lcp: 0, - timeToInteractive: 0, - hydrationTime: 0, - layoutShift: 0, - mainThreadBlocking: 0, - networkImpact: 0, - visibilityTime: 0, - viewportCoverage: 0, - }; - }, selectors); - } - - private calculateTTI(metrics: { - paint?: { firstContentfulPaint?: number }; - domCompleteTiming?: number | null; - }): number { - // TTI calculation based on the available metrics - // This is a simplified approach - the library might provide better TTI measurement in the future - const baseTime = Math.max( - metrics.paint?.firstContentfulPaint || 0, - metrics.domCompleteTiming || 0 - ); - - // Add some buffer time for interactivity (simplified approach) - return baseTime + 2000; // Add 2 seconds as a buffer - } - - private getDefaultMetrics(): CookieBannerMetrics { - return { - fcp: 0, - lcp: 0, - cls: 0, - tti: 0, - tbt: 0, - bannerDetected: false, - bannerSelector: null, - bannerFirstPaint: 0, - bannerLargestContentfulPaint: 0, - bannerTimeToInteractive: 0, - bannerHydrationTime: 0, - bannerLayoutShift: 0, - bannerMainThreadBlocking: 0, - bannerNetworkImpact: 0, - bannerVisibilityTime: 0, - bannerViewportCoverage: 0, - }; - } - - async cleanup(): Promise { - await this.collector.cleanup(); - } -} - -// Network presets for easy access -export const NetworkPresets = { - REGULAR_4G: "REGULAR_4G" as const, - SLOW_3G: "SLOW_3G" as const, - FAST_3G: "FAST_3G" as const, - FAST_WIFI: "FAST_WIFI" as const, - NONE: "none" as const, -}; diff --git a/packages/cli/src/lib/performance.ts b/packages/cli/src/lib/performance.ts deleted file mode 100644 index a9953bb..0000000 --- a/packages/cli/src/lib/performance.ts +++ /dev/null @@ -1,437 +0,0 @@ -import type { Page } from "@playwright/test"; -import type { LayoutShiftEntry } from "../types"; - -interface WebVitalsMetrics { - fcp: number; - lcp: number; - cls: number; - tti: number; - tbt: number; - bannerDetected: boolean; - bannerSelector: string | null; - bannerVisibilityTime: number; - bannerViewportCoverage: number; - bannerFirstPaint: number; - bannerLargestContentfulPaint: number; - bannerTimeToInteractive: number; - bannerHydrationTime: number; - bannerLayoutShift: number; - bannerMainThreadBlocking: number; - bannerNetworkImpact: number; - measurementComplete: boolean; -} - -interface WindowWithWebVitals extends Window { - __webVitalsMetrics: WebVitalsMetrics; -} - -export interface CookieBannerMetrics { - // Core Web Vitals - fcp: number; // First Contentful Paint - lcp: number; // Largest Contentful Paint - cls: number; // Cumulative Layout Shift - tti: number; // Time to Interactive - tbt: number; // Total Blocking Time - - // Cookie Banner Specific Timings - bannerFirstPaint: number; // When banner first appears - bannerLargestContentfulPaint: number; // When banner's main content renders - bannerTimeToInteractive: number; // When banner buttons become clickable - bannerHydrationTime: number; // Time from first paint to interactive (hydration) - - // Cookie Banner Impact Measurements - bannerLayoutShift: number; // Layout shifts caused by banner - bannerMainThreadBlocking: number; // Main thread blocking from banner scripts - bannerNetworkImpact: number; // Network requests caused by banner - - // Cookie Banner Detection - bannerDetected: boolean; - bannerSelector: string | null; - bannerVisibilityTime: number; // How long banner was visible - bannerViewportCoverage: number; // Percentage of viewport covered -} - -export async function collectCookieBannerMetrics( - page: Page, - cookieBannerSelectors: string[], - serviceHosts: string[] -): Promise { - console.log( - "🔍 [PERFORMANCE] Setting up Web Vitals measurement before navigation..." - ); - - // Set up performance measurement BEFORE navigation - await page.addInitScript((selectors: string[]) => { - console.log( - "🔍 [BROWSER] Setting up performance observers before page load..." - ); - - // Initialize global storage for metrics - const webVitalsMetrics = { - fcp: 0, - lcp: 0, - cls: 0, - tti: 0, - tbt: 0, - bannerDetected: false, - bannerSelector: null as string | null, - bannerVisibilityTime: 0, - bannerViewportCoverage: 0, - bannerFirstPaint: 0, - bannerLargestContentfulPaint: 0, - bannerTimeToInteractive: 0, - bannerHydrationTime: 0, - bannerLayoutShift: 0, - bannerMainThreadBlocking: 0, - bannerNetworkImpact: 0, - measurementComplete: false, - }; - - (window as unknown as WindowWithWebVitals).__webVitalsMetrics = - webVitalsMetrics; - - // Set up observers for paint timing - try { - // First Contentful Paint - const fcpObserver = new PerformanceObserver((list) => { - for (const entry of list.getEntries()) { - if (entry.name === "first-contentful-paint") { - webVitalsMetrics.fcp = entry.startTime; - console.log("🔍 [BROWSER] FCP captured:", webVitalsMetrics.fcp); - fcpObserver.disconnect(); - } - } - }); - fcpObserver.observe({ type: "paint", buffered: true }); - - // Largest Contentful Paint - const lcpObserver = new PerformanceObserver((list) => { - const entries = list.getEntries(); - const lastEntry = entries.at(-1); - if (lastEntry) { - webVitalsMetrics.lcp = lastEntry.startTime; - console.log("🔍 [BROWSER] LCP captured:", webVitalsMetrics.lcp); - } - }); - lcpObserver.observe({ type: "largest-contentful-paint", buffered: true }); - - // Cumulative Layout Shift - let clsValue = 0; - const clsObserver = new PerformanceObserver((list) => { - for (const entry of list.getEntries()) { - const layoutShiftEntry = entry as LayoutShiftEntry; - if (!layoutShiftEntry.hadRecentInput) { - clsValue += layoutShiftEntry.value; - } - } - webVitalsMetrics.cls = clsValue; - if (clsValue > 0) { - console.log("🔍 [BROWSER] CLS updated:", webVitalsMetrics.cls); - } - }); - clsObserver.observe({ type: "layout-shift", buffered: true }); - - // Total Blocking Time - let tbtValue = 0; - const longTaskObserver = new PerformanceObserver((list) => { - for (const entry of list.getEntries()) { - if (entry.duration > 50) { - tbtValue += entry.duration - 50; - } - } - webVitalsMetrics.tbt = tbtValue; - if (tbtValue > 0) { - console.log("🔍 [BROWSER] TBT updated:", webVitalsMetrics.tbt); - } - }); - longTaskObserver.observe({ type: "longtask", buffered: true }); - - console.log("🔍 [BROWSER] Performance observers set up successfully"); - } catch (error) { - console.warn( - "🔍 [BROWSER] Error setting up performance observers:", - error - ); - } - - // Cookie banner detection setup - const detectCookieBanner = () => { - for (const selector of selectors) { - try { - const element = document.querySelector(selector); - if (element) { - const rect = element.getBoundingClientRect(); - const isVisible = - rect.width > 0 && - rect.height > 0 && - window.getComputedStyle(element).visibility !== "hidden" && - window.getComputedStyle(element).display !== "none"; - - if (isVisible) { - webVitalsMetrics.bannerDetected = true; - webVitalsMetrics.bannerSelector = selector; - webVitalsMetrics.bannerFirstPaint = performance.now(); - webVitalsMetrics.bannerViewportCoverage = - ((rect.width * rect.height) / - (window.innerWidth * window.innerHeight)) * - 100; - - console.log("🔍 [BANNER] Cookie banner detected:", selector); - - // Check if banner is interactive - const buttons = element.querySelectorAll( - 'button, a, [role="button"], [onclick]' - ); - if (buttons.length > 0) { - webVitalsMetrics.bannerTimeToInteractive = performance.now(); - webVitalsMetrics.bannerHydrationTime = - webVitalsMetrics.bannerTimeToInteractive - - webVitalsMetrics.bannerFirstPaint; - } - - return true; - } - } - } catch (error) { - console.warn("🔍 [BANNER] Error checking selector:", selector, error); - } - } - return false; - }; - - // Set up banner detection after DOM is ready - if (document.readyState === "loading") { - document.addEventListener("DOMContentLoaded", () => { - // Check immediately and then periodically - if (!detectCookieBanner()) { - const interval = setInterval(() => { - if (detectCookieBanner()) { - clearInterval(interval); - } - }, 100); - - // Stop checking after 10 seconds - setTimeout(() => clearInterval(interval), 10000); - } - }); - } else { - // DOM is already ready - if (!detectCookieBanner()) { - const interval = setInterval(() => { - if (detectCookieBanner()) { - clearInterval(interval); - } - }, 100); - - // Stop checking after 10 seconds - setTimeout(() => clearInterval(interval), 10000); - } - } - }, cookieBannerSelectors); - - return { - fcp: 0, - lcp: 0, - cls: 0, - tti: 0, - tbt: 0, - bannerDetected: false, - bannerSelector: null, - bannerVisibilityTime: 0, - bannerViewportCoverage: 0, - bannerFirstPaint: 0, - bannerLargestContentfulPaint: 0, - bannerTimeToInteractive: 0, - bannerHydrationTime: 0, - bannerLayoutShift: 0, - bannerMainThreadBlocking: 0, - bannerNetworkImpact: 0, - }; -} - -export async function collectWebVitalsAfterLoad( - page: Page -): Promise { - console.log("🔍 [PERFORMANCE] Collecting final Web Vitals..."); - - // Wait for page to be ready - await page.waitForLoadState("networkidle"); - - // Get final metrics from the browser - const webVitals = await page.evaluate(() => { - console.log("🔍 [BROWSER] Collecting final Web Vitals..."); - - const storedMetrics = (window as unknown as WindowWithWebVitals) - .__webVitalsMetrics; - if (!storedMetrics) { - console.error("🔍 [BROWSER] No stored metrics found!"); - return null; - } - - // Get additional paint entries that might have been missed - const paintEntries = performance.getEntriesByType("paint"); - console.log("🔍 [BROWSER] Paint entries found:", paintEntries.length); - for (const entry of paintEntries) { - console.log( - `🔍 [BROWSER] Paint entry: ${entry.name} = ${entry.startTime}ms` - ); - if (entry.name === "first-contentful-paint" && storedMetrics.fcp === 0) { - storedMetrics.fcp = entry.startTime; - console.log("🔍 [BROWSER] FCP from fallback:", storedMetrics.fcp); - } - } - - // Get LCP entries that might have been missed - const lcpEntries = performance.getEntriesByType("largest-contentful-paint"); - console.log("🔍 [BROWSER] LCP entries found:", lcpEntries.length); - if (lcpEntries.length > 0 && storedMetrics.lcp === 0) { - const lastLCP = lcpEntries[lcpEntries.length - 1]; - storedMetrics.lcp = lastLCP.startTime; - console.log("🔍 [BROWSER] LCP from fallback:", storedMetrics.lcp); - } - - console.log("🔍 [BROWSER] Final stored metrics:", { - fcp: storedMetrics.fcp, - lcp: storedMetrics.lcp, - cls: storedMetrics.cls, - tbt: storedMetrics.tbt, - bannerDetected: storedMetrics.bannerDetected, - }); - - return storedMetrics; - }); - - if (!webVitals) { - console.warn( - "🔍 [PERFORMANCE] No web vitals data available, returning defaults" - ); - return { - fcp: 0, - lcp: 0, - cls: 0, - tti: 0, - tbt: 0, - bannerDetected: false, - bannerSelector: null, - bannerVisibilityTime: 0, - bannerViewportCoverage: 0, - bannerFirstPaint: 0, - bannerLargestContentfulPaint: 0, - bannerTimeToInteractive: 0, - bannerHydrationTime: 0, - bannerLayoutShift: 0, - bannerMainThreadBlocking: 0, - bannerNetworkImpact: 0, - }; - } - - // Calculate TTI (simplified approach) - const navigationTiming = await page.evaluate(() => { - const navigation = performance.getEntriesByType( - "navigation" - )[0] as PerformanceNavigationTiming; - return { - domContentLoaded: - navigation.domContentLoadedEventEnd - navigation.fetchStart, - loadComplete: navigation.loadEventEnd - navigation.fetchStart, - }; - }); - - // Calculate TTI as a simple estimation - const tti = - Math.max( - webVitals.fcp || 0, - navigationTiming.domContentLoaded, - webVitals.bannerTimeToInteractive || 0 - ) + 5000; // Add 5 seconds for page to become truly interactive - - const finalMetrics: CookieBannerMetrics = { - fcp: webVitals.fcp, - lcp: webVitals.lcp, - cls: webVitals.cls, - tti: tti, - tbt: webVitals.tbt, - bannerDetected: webVitals.bannerDetected, - bannerSelector: webVitals.bannerSelector, - bannerVisibilityTime: webVitals.bannerVisibilityTime, - bannerViewportCoverage: webVitals.bannerViewportCoverage, - bannerFirstPaint: webVitals.bannerFirstPaint, - bannerLargestContentfulPaint: - webVitals.bannerLargestContentfulPaint || webVitals.bannerFirstPaint, - bannerTimeToInteractive: webVitals.bannerTimeToInteractive, - bannerHydrationTime: webVitals.bannerHydrationTime, - bannerLayoutShift: webVitals.bannerLayoutShift, - bannerMainThreadBlocking: webVitals.bannerMainThreadBlocking, - bannerNetworkImpact: webVitals.bannerNetworkImpact, - }; - - console.log("🔍 [PERFORMANCE] Final metrics collected:", { - fcp: finalMetrics.fcp, - lcp: finalMetrics.lcp, - cls: finalMetrics.cls, - tti: finalMetrics.tti, - tbt: finalMetrics.tbt, - bannerDetected: finalMetrics.bannerDetected, - }); - - return finalMetrics; -} - -// Legacy function for backwards compatibility -export async function collectPerformanceMetrics( - page: Page, - cookieBannerSelectors: string[] = [] -): Promise<{ - fcp: number; - lcp: number; - cls: number; - tbt: number; - tti: number; -}> { - const metrics = await collectCookieBannerMetrics( - page, - cookieBannerSelectors, - [] - ); - return { - fcp: metrics.fcp, - lcp: metrics.lcp, - cls: metrics.cls, - tbt: metrics.tbt, - tti: metrics.tti, - }; -} - -export async function collectResourceTiming(page: Page): Promise<{ - scriptLoadTime: number; - totalSize: number; - scriptSize: number; - resourceCount: number; - scriptCount: number; -}> { - return page.evaluate(() => { - const resources = performance.getEntriesByType( - "resource" - ) as PerformanceResourceTiming[]; - const scripts = resources.filter((r) => r.initiatorType === "script"); - - const totalSize = resources.reduce( - (sum, r) => sum + (r.transferSize || 0), - 0 - ); - const scriptSize = scripts.reduce( - (sum, r) => sum + (r.transferSize || 0), - 0 - ); - const scriptLoadTime = - scripts.reduce((sum, r) => sum + r.duration, 0) / (scripts.length || 1); - - return { - scriptLoadTime, - totalSize, - scriptSize, - resourceCount: resources.length, - scriptCount: scripts.length, - }; - }); -} diff --git a/packages/cli/src/types/index.ts b/packages/cli/src/types/index.ts index 26d1967..0dde5a7 100644 --- a/packages/cli/src/types/index.ts +++ b/packages/cli/src/types/index.ts @@ -266,31 +266,6 @@ export interface LayoutShiftEntry extends PerformanceEntry { hadRecentInput: boolean; } -export interface ResourceTimingEntry extends PerformanceEntry { - initiatorType: string; - transferSize: number; -} - -export interface LargestContentfulPaintEntry extends PerformanceEntry { - startTime: number; -} - -export interface FirstContentfulPaintEntry extends PerformanceEntry { - startTime: number; -} - -export interface LongTaskEntry extends PerformanceEntry { - duration: number; -} - -export interface PerformanceMetrics { - fcp: number; - lcp: number; - cls: number; - tbt: number; - tti: number; -} - interface CookieBannerConfig { selectors: string[]; serviceHosts: string[]; diff --git a/packages/cli/src/utils/index.ts b/packages/cli/src/utils/index.ts index 372ea35..10750d4 100644 --- a/packages/cli/src/utils/index.ts +++ b/packages/cli/src/utils/index.ts @@ -13,12 +13,6 @@ export function readConfig(configName = "config"): Config | null { } } -export function formatTime(ms: number): string { - if (ms < 1000) { - return `${ms.toFixed(0)}ms`; - } - return `${(ms / 1000).toFixed(2)}s`; -} export async function getPackageManager(): Promise<{ command: string; diff --git a/packages/cli/src/utils/scoring.ts b/packages/cli/src/utils/scoring.ts index 9b4552c..bd29854 100644 --- a/packages/cli/src/utils/scoring.ts +++ b/packages/cli/src/utils/scoring.ts @@ -1,8 +1,4 @@ -import type { RawBenchmarkDetail } from "../commands/results"; -import type { Config } from "../types"; import Table from "cli-table3"; -import color from "picocolors"; -import { determineBundleStrategy } from "../commands/benchmark/bundle-strategy"; import type { BenchmarkScores } from '../types'; // Type definitions for better type safety @@ -90,7 +86,7 @@ interface ScoreWeights { } // Default scoring weights -export const DEFAULT_SCORE_WEIGHTS: ScoreWeights = { +const DEFAULT_SCORE_WEIGHTS: ScoreWeights = { performance: 0.4, // 40% - Core Web Vitals and performance metrics bundleStrategy: 0.25, // 25% - First-party vs third-party, bundling approach networkImpact: 0.2, // 20% - Network requests, bundle size, third-party impact @@ -409,7 +405,6 @@ function calculateBundleScore( // Calculate network impact score (out of 100) function calculateNetworkScore( metrics: MetricsData, - resourceData: ResourceData[] ): { score: number; maxScore: number; @@ -984,7 +979,7 @@ export function calculateScores( // Calculate individual category scores const performanceScore = calculatePerformanceScore(metricsData); const bundleScore = calculateBundleScore(metricsData, techStack, resourceData); - const networkScore = calculateNetworkScore(metricsData, resourceData); + const networkScore = calculateNetworkScore(metricsData); const transparencyScore = calculateTransparencyScore( isOpenSource, company, diff --git a/packages/cli/tsconfig.json b/packages/cli/tsconfig.json index a655867..008955d 100644 --- a/packages/cli/tsconfig.json +++ b/packages/cli/tsconfig.json @@ -3,6 +3,7 @@ "target": "ES2020", "module": "ESNext", "moduleResolution": "bundler", + "lib": ["ES2022", "DOM"], "esModuleInterop": true, "strict": true, "skipLibCheck": true, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c3b8207..c7b57b0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: devDependencies: '@biomejs/biome': - specifier: 1.9.4 - version: 1.9.4 + specifier: 2.1.4 + version: 2.1.4 '@c15t/translations': specifier: ^1.5.0 version: 1.5.0 @@ -469,12 +469,12 @@ importers: dotenv: specifier: ^17.2.1 version: 17.2.1 - package-manager-detector: - specifier: ^1.3.0 - version: 1.3.0 picocolors: specifier: ^1.0.0 version: 1.1.1 + pretty-ms: + specifier: ^9.2.0 + version: 9.2.0 devDependencies: '@rsdoctor/rspack-plugin': specifier: ^1.2.1 @@ -562,55 +562,55 @@ packages: resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} - '@biomejs/biome@1.9.4': - resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==} + '@biomejs/biome@2.1.4': + resolution: {integrity: sha512-QWlrqyxsU0FCebuMnkvBIkxvPqH89afiJzjMl+z67ybutse590jgeaFdDurE9XYtzpjRGTI1tlUZPGWmbKsElA==} engines: {node: '>=14.21.3'} hasBin: true - '@biomejs/cli-darwin-arm64@1.9.4': - resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==} + '@biomejs/cli-darwin-arm64@2.1.4': + resolution: {integrity: sha512-sCrNENE74I9MV090Wq/9Dg7EhPudx3+5OiSoQOkIe3DLPzFARuL1dOwCWhKCpA3I5RHmbrsbNSRfZwCabwd8Qg==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] - '@biomejs/cli-darwin-x64@1.9.4': - resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==} + '@biomejs/cli-darwin-x64@2.1.4': + resolution: {integrity: sha512-gOEICJbTCy6iruBywBDcG4X5rHMbqCPs3clh3UQ+hRKlgvJTk4NHWQAyHOXvaLe+AxD1/TNX1jbZeffBJzcrOw==} engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] - '@biomejs/cli-linux-arm64-musl@1.9.4': - resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==} + '@biomejs/cli-linux-arm64-musl@2.1.4': + resolution: {integrity: sha512-nYr7H0CyAJPaLupFE2cH16KZmRC5Z9PEftiA2vWxk+CsFkPZQ6dBRdcC6RuS+zJlPc/JOd8xw3uCCt9Pv41WvQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-arm64@1.9.4': - resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==} + '@biomejs/cli-linux-arm64@2.1.4': + resolution: {integrity: sha512-juhEkdkKR4nbUi5k/KRp1ocGPNWLgFRD4NrHZSveYrD6i98pyvuzmS9yFYgOZa5JhaVqo0HPnci0+YuzSwT2fw==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-x64-musl@1.9.4': - resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==} + '@biomejs/cli-linux-x64-musl@2.1.4': + resolution: {integrity: sha512-lvwvb2SQQHctHUKvBKptR6PLFCM7JfRjpCCrDaTmvB7EeZ5/dQJPhTYBf36BE/B4CRWR2ZiBLRYhK7hhXBCZAg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-linux-x64@1.9.4': - resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==} + '@biomejs/cli-linux-x64@2.1.4': + resolution: {integrity: sha512-Eoy9ycbhpJVYuR+LskV9s3uyaIkp89+qqgqhGQsWnp/I02Uqg2fXFblHJOpGZR8AxdB9ADy87oFVxn9MpFKUrw==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-win32-arm64@1.9.4': - resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==} + '@biomejs/cli-win32-arm64@2.1.4': + resolution: {integrity: sha512-3WRYte7orvyi6TRfIZkDN9Jzoogbv+gSvR+b9VOXUg1We1XrjBg6WljADeVEaKTvOcpVdH0a90TwyOQ6ue4fGw==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [win32] - '@biomejs/cli-win32-x64@1.9.4': - resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==} + '@biomejs/cli-win32-x64@2.1.4': + resolution: {integrity: sha512-tBc+W7anBPSFXGAoQW+f/+svkpt8/uXfRwDzN1DvnatkRMt16KIYpEi/iw8u9GahJlFv98kgHcIrSsZHZTR0sw==} engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] @@ -1969,9 +1969,6 @@ packages: '@types/jsonfile@6.1.4': resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} - '@types/node@22.17.1': - resolution: {integrity: sha512-y3tBaz+rjspDTylNjAX37jEC3TETEFGNJL6uQDxwF9/8GLLIjW1rvVHlynyuUKMnMr1Roq8jOv3vkopBjC4/VA==} - '@types/node@24.2.1': resolution: {integrity: sha512-DRh5K+ka5eJic8CjH7td8QpYEV6Zo10gfRkjHCO3weqZHWDtAaSTFtl4+VMqOJ4N5jcuhZ9/l+yy8rVgw7BQeQ==} @@ -2774,9 +2771,6 @@ packages: resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==} engines: {node: '>=18'} - package-manager-detector@1.3.0: - resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} - parse-ms@4.0.0: resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} engines: {node: '>=18'} @@ -3138,9 +3132,6 @@ packages: engines: {node: '>=14.17'} hasBin: true - undici-types@6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - undici-types@7.10.0: resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==} @@ -3298,39 +3289,39 @@ snapshots: '@babel/helper-validator-identifier@7.27.1': {} - '@biomejs/biome@1.9.4': + '@biomejs/biome@2.1.4': optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.9.4 - '@biomejs/cli-darwin-x64': 1.9.4 - '@biomejs/cli-linux-arm64': 1.9.4 - '@biomejs/cli-linux-arm64-musl': 1.9.4 - '@biomejs/cli-linux-x64': 1.9.4 - '@biomejs/cli-linux-x64-musl': 1.9.4 - '@biomejs/cli-win32-arm64': 1.9.4 - '@biomejs/cli-win32-x64': 1.9.4 + '@biomejs/cli-darwin-arm64': 2.1.4 + '@biomejs/cli-darwin-x64': 2.1.4 + '@biomejs/cli-linux-arm64': 2.1.4 + '@biomejs/cli-linux-arm64-musl': 2.1.4 + '@biomejs/cli-linux-x64': 2.1.4 + '@biomejs/cli-linux-x64-musl': 2.1.4 + '@biomejs/cli-win32-arm64': 2.1.4 + '@biomejs/cli-win32-x64': 2.1.4 - '@biomejs/cli-darwin-arm64@1.9.4': + '@biomejs/cli-darwin-arm64@2.1.4': optional: true - '@biomejs/cli-darwin-x64@1.9.4': + '@biomejs/cli-darwin-x64@2.1.4': optional: true - '@biomejs/cli-linux-arm64-musl@1.9.4': + '@biomejs/cli-linux-arm64-musl@2.1.4': optional: true - '@biomejs/cli-linux-arm64@1.9.4': + '@biomejs/cli-linux-arm64@2.1.4': optional: true - '@biomejs/cli-linux-x64-musl@1.9.4': + '@biomejs/cli-linux-x64-musl@2.1.4': optional: true - '@biomejs/cli-linux-x64@1.9.4': + '@biomejs/cli-linux-x64@2.1.4': optional: true - '@biomejs/cli-win32-arm64@1.9.4': + '@biomejs/cli-win32-arm64@2.1.4': optional: true - '@biomejs/cli-win32-x64@1.9.4': + '@biomejs/cli-win32-x64@2.1.4': optional: true '@c15t/backend@1.5.0(@libsql/client@0.15.10)(@playwright/test@1.54.2)(@types/better-sqlite3@7.6.13)(better-sqlite3@12.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(ws@8.18.3)': @@ -4696,7 +4687,7 @@ snapshots: '@types/better-sqlite3@7.6.13': dependencies: - '@types/node': 22.17.1 + '@types/node': 24.2.1 optional: true '@types/connect@3.4.38': @@ -4718,11 +4709,6 @@ snapshots: dependencies: '@types/node': 24.2.1 - '@types/node@22.17.1': - dependencies: - undici-types: 6.21.0 - optional: true - '@types/node@24.2.1': dependencies: undici-types: 7.10.0 @@ -4743,7 +4729,7 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 22.17.1 + '@types/node': 24.2.1 optional: true accepts@1.3.8: @@ -5560,8 +5546,6 @@ snapshots: dependencies: yocto-queue: 1.2.1 - package-manager-detector@1.3.0: {} - parse-ms@4.0.0: {} parseurl@1.3.3: {} @@ -5998,9 +5982,6 @@ snapshots: typescript@5.9.2: {} - undici-types@6.21.0: - optional: true - undici-types@7.10.0: {} universalify@2.0.1: {} From 72df3ff07b4e2472a949210be35ad648f3ffdb73 Mon Sep 17 00:00:00 2001 From: burnedchris Date: Mon, 11 Aug 2025 12:03:36 +0100 Subject: [PATCH 3/3] Add new benchmark project 'with-ethyca' with Next.js setup, configurations, and cookie consent integration. Includes TypeScript support, necessary dependencies, and initial layout and page components. --- benchmarks/with-ethyca/app/favicon.ico | Bin 0 -> 25931 bytes benchmarks/with-ethyca/app/layout.tsx | 59 +++++++++++++++++++++++++ benchmarks/with-ethyca/app/page.tsx | 7 +++ benchmarks/with-ethyca/config.json | 44 ++++++++++++++++++ benchmarks/with-ethyca/next-env.d.ts | 5 +++ benchmarks/with-ethyca/next.config.ts | 7 +++ benchmarks/with-ethyca/package.json | 26 +++++++++++ benchmarks/with-ethyca/tsconfig.json | 11 +++++ 8 files changed, 159 insertions(+) create mode 100644 benchmarks/with-ethyca/app/favicon.ico create mode 100644 benchmarks/with-ethyca/app/layout.tsx create mode 100644 benchmarks/with-ethyca/app/page.tsx create mode 100644 benchmarks/with-ethyca/config.json create mode 100644 benchmarks/with-ethyca/next-env.d.ts create mode 100644 benchmarks/with-ethyca/next.config.ts create mode 100644 benchmarks/with-ethyca/package.json create mode 100644 benchmarks/with-ethyca/tsconfig.json diff --git a/benchmarks/with-ethyca/app/favicon.ico b/benchmarks/with-ethyca/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 zcmeHv30#a{`}aL_*G&7qml|y<+KVaDM2m#dVr!KsA!#An?kSQM(q<_dDNCpjEux83 zLb9Z^XxbDl(w>%i@8hT6>)&Gu{h#Oeyszu?xtw#Zb1mO{pgX9699l+Qppw7jXaYf~-84xW z)w4x8?=youko|}Vr~(D$UXIbiXABHh`p1?nn8Po~fxRJv}|0e(BPs|G`(TT%kKVJAdg5*Z|x0leQq0 zkdUBvb#>9F()jo|T~kx@OM8$9wzs~t2l;K=woNssA3l6|sx2r3+kdfVW@e^8e*E}v zA1y5{bRi+3Z`uD3{F7LgFJDdvm;nJilkzDku>BwXH(8ItVCXk*-lSJnR?-2UN%hJ){&rlvg`CDTj z)Bzo!3v7Ou#83zEDEFcKt(f1E0~=rqeEbTnMvWR#{+9pg%7G8y>u1OVRUSoox-ovF z2Ydma(;=YuBY(eI|04{hXzZD6_f(v~H;C~y5=DhAC{MMS>2fm~1H_t2$56pc$NH8( z5bH|<)71dV-_oCHIrzrT`2s-5w_+2CM0$95I6X8p^r!gHp+j_gd;9O<1~CEQQGS8) zS9Qh3#p&JM-G8rHekNmKVewU;pJRcTAog68KYo^dRo}(M>36U4Us zfgYWSiHZL3;lpWT=zNAW>Dh#mB!_@Lg%$ms8N-;aPqMn+C2HqZgz&9~Eu z4|Kp<`$q)Uw1R?y(~S>ePdonHxpV1#eSP1B;Ogo+-Pk}6#0GsZZ5!||ev2MGdh}_m z{DeR7?0-1^zVs&`AV6Vt;r3`I`OI_wgs*w=eO%_#7Kepl{B@xiyCANc(l zzIyd4y|c6PXWq9-|KM8(zIk8LPk(>a)zyFWjhT!$HJ$qX1vo@d25W<fvZQ2zUz5WRc(UnFMKHwe1| zWmlB1qdbiA(C0jmnV<}GfbKtmcu^2*P^O?MBLZKt|As~ge8&AAO~2K@zbXelK|4T<{|y4`raF{=72kC2Kn(L4YyenWgrPiv z@^mr$t{#X5VuIMeL!7Ab6_kG$&#&5p*Z{+?5U|TZ`B!7llpVmp@skYz&n^8QfPJzL z0G6K_OJM9x+Wu2gfN45phANGt{7=C>i34CV{Xqlx(fWpeAoj^N0Biu`w+MVcCUyU* zDZuzO0>4Z6fbu^T_arWW5n!E45vX8N=bxTVeFoep_G#VmNlQzAI_KTIc{6>c+04vr zx@W}zE5JNSU>!THJ{J=cqjz+4{L4A{Ob9$ZJ*S1?Ggg3klFp!+Y1@K+pK1DqI|_gq z5ZDXVpge8-cs!o|;K73#YXZ3AShj50wBvuq3NTOZ`M&qtjj#GOFfgExjg8Gn8>Vq5 z`85n+9|!iLCZF5$HJ$Iu($dm?8~-ofu}tEc+-pyke=3!im#6pk_Wo8IA|fJwD&~~F zc16osQ)EBo58U7XDuMexaPRjU@h8tXe%S{fA0NH3vGJFhuyyO!Uyl2^&EOpX{9As0 zWj+P>{@}jxH)8|r;2HdupP!vie{sJ28b&bo!8`D^x}TE$%zXNb^X1p@0PJ86`dZyj z%ce7*{^oo+6%&~I!8hQy-vQ7E)0t0ybH4l%KltWOo~8cO`T=157JqL(oq_rC%ea&4 z2NcTJe-HgFjNg-gZ$6!Y`SMHrlj}Etf7?r!zQTPPSv}{so2e>Fjs1{gzk~LGeesX%r(Lh6rbhSo_n)@@G-FTQy93;l#E)hgP@d_SGvyCp0~o(Y;Ee8{ zdVUDbHm5`2taPUOY^MAGOw*>=s7=Gst=D+p+2yON!0%Hk` zz5mAhyT4lS*T3LS^WSxUy86q&GnoHxzQ6vm8)VS}_zuqG?+3td68_x;etQAdu@sc6 zQJ&5|4(I?~3d-QOAODHpZ=hlSg(lBZ!JZWCtHHSj`0Wh93-Uk)_S%zsJ~aD>{`A0~ z9{AG(e|q3g5B%wYKRxiL2Y$8(4w6bzchKuloQW#e&S3n+P- z8!ds-%f;TJ1>)v)##>gd{PdS2Oc3VaR`fr=`O8QIO(6(N!A?pr5C#6fc~Ge@N%Vvu zaoAX2&(a6eWy_q&UwOhU)|P3J0Qc%OdhzW=F4D|pt0E4osw;%<%Dn58hAWD^XnZD= z>9~H(3bmLtxpF?a7su6J7M*x1By7YSUbxGi)Ot0P77`}P3{)&5Un{KD?`-e?r21!4vTTnN(4Y6Lin?UkSM z`MXCTC1@4A4~mvz%Rh2&EwY))LeoT=*`tMoqcEXI>TZU9WTP#l?uFv+@Dn~b(>xh2 z;>B?;Tz2SR&KVb>vGiBSB`@U7VIWFSo=LDSb9F{GF^DbmWAfpms8Sx9OX4CnBJca3 zlj9(x!dIjN?OG1X4l*imJNvRCk}F%!?SOfiOq5y^mZW)jFL@a|r-@d#f7 z2gmU8L3IZq0ynIws=}~m^#@&C%J6QFo~Mo4V`>v7MI-_!EBMMtb%_M&kvAaN)@ZVw z+`toz&WG#HkWDjnZE!6nk{e-oFdL^$YnbOCN}JC&{$#$O27@|Tn-skXr)2ml2~O!5 zX+gYoxhoc7qoU?C^3~&!U?kRFtnSEecWuH0B0OvLodgUAi}8p1 zrO6RSXHH}DMc$&|?D004DiOVMHV8kXCP@7NKB zgaZq^^O<7PoKEp72kby@W0Z!Y*Ay{&vfg#C&gG@YVR9g?FEocMUi1gSN$+V+ayF45{a zuDZDTN}mS|;BO%gEf}pjBfN2-gIrU#G5~cucA;dokXW89%>AyXJJI z9X4UlIWA|ZYHgbI z5?oFk@A=Ik7lrEQPDH!H+b`7_Y~aDb_qa=B2^Y&Ow41cU=4WDd40dp5(QS-WMN-=Y z9g;6_-JdNU;|6cPwf$ak*aJIcwL@1n$#l~zi{c{EW?T;DaW*E8DYq?Umtz{nJ&w-M zEMyTDrC&9K$d|kZe2#ws6)L=7K+{ zQw{XnV6UC$6-rW0emqm8wJoeZK)wJIcV?dST}Z;G0Arq{dVDu0&4kd%N!3F1*;*pW zR&qUiFzK=@44#QGw7k1`3t_d8&*kBV->O##t|tonFc2YWrL7_eqg+=+k;!F-`^b8> z#KWCE8%u4k@EprxqiV$VmmtiWxDLgnGu$Vs<8rppV5EajBXL4nyyZM$SWVm!wnCj-B!Wjqj5-5dNXukI2$$|Bu3Lrw}z65Lc=1G z^-#WuQOj$hwNGG?*CM_TO8Bg-1+qc>J7k5c51U8g?ZU5n?HYor;~JIjoWH-G>AoUP ztrWWLbRNqIjW#RT*WqZgPJXU7C)VaW5}MiijYbABmzoru6EmQ*N8cVK7a3|aOB#O& zBl8JY2WKfmj;h#Q!pN%9o@VNLv{OUL?rixHwOZuvX7{IJ{(EdPpuVFoQqIOa7giLVkBOKL@^smUA!tZ1CKRK}#SSM)iQHk)*R~?M!qkCruaS!#oIL1c z?J;U~&FfH#*98^G?i}pA{ z9Jg36t4=%6mhY(quYq*vSxptes9qy|7xSlH?G=S@>u>Ebe;|LVhs~@+06N<4CViBk zUiY$thvX;>Tby6z9Y1edAMQaiH zm^r3v#$Q#2T=X>bsY#D%s!bhs^M9PMAcHbCc0FMHV{u-dwlL;a1eJ63v5U*?Q_8JO zT#50!RD619#j_Uf))0ooADz~*9&lN!bBDRUgE>Vud-i5ck%vT=r^yD*^?Mp@Q^v+V zG#-?gKlr}Eeqifb{|So?HM&g91P8|av8hQoCmQXkd?7wIJwb z_^v8bbg`SAn{I*4bH$u(RZ6*xUhuA~hc=8czK8SHEKTzSxgbwi~9(OqJB&gwb^l4+m`k*Q;_?>Y-APi1{k zAHQ)P)G)f|AyjSgcCFps)Fh6Bca*Xznq36!pV6Az&m{O8$wGFD? zY&O*3*J0;_EqM#jh6^gMQKpXV?#1?>$ml1xvh8nSN>-?H=V;nJIwB07YX$e6vLxH( zqYwQ>qxwR(i4f)DLd)-$P>T-no_c!LsN@)8`e;W@)-Hj0>nJ-}Kla4-ZdPJzI&Mce zv)V_j;(3ERN3_@I$N<^|4Lf`B;8n+bX@bHbcZTopEmDI*Jfl)-pFDvo6svPRoo@(x z);_{lY<;);XzT`dBFpRmGrr}z5u1=pC^S-{ce6iXQlLGcItwJ^mZx{m$&DA_oEZ)B{_bYPq-HA zcH8WGoBG(aBU_j)vEy+_71T34@4dmSg!|M8Vf92Zj6WH7Q7t#OHQqWgFE3ARt+%!T z?oLovLVlnf?2c7pTc)~cc^($_8nyKwsN`RA-23ed3sdj(ys%pjjM+9JrctL;dy8a( z@en&CQmnV(()bu|Y%G1-4a(6x{aLytn$T-;(&{QIJB9vMox11U-1HpD@d(QkaJdEb zG{)+6Dos_L+O3NpWo^=gR?evp|CqEG?L&Ut#D*KLaRFOgOEK(Kq1@!EGcTfo+%A&I z=dLbB+d$u{sh?u)xP{PF8L%;YPPW53+@{>5W=Jt#wQpN;0_HYdw1{ksf_XhO4#2F= zyPx6Lx2<92L-;L5PD`zn6zwIH`Jk($?Qw({erA$^bC;q33hv!d!>%wRhj# zal^hk+WGNg;rJtb-EB(?czvOM=H7dl=vblBwAv>}%1@{}mnpUznfq1cE^sgsL0*4I zJ##!*B?=vI_OEVis5o+_IwMIRrpQyT_Sq~ZU%oY7c5JMIADzpD!Upz9h@iWg_>>~j zOLS;wp^i$-E?4<_cp?RiS%Rd?i;f*mOz=~(&3lo<=@(nR!_Rqiprh@weZlL!t#NCc zO!QTcInq|%#>OVgobj{~ixEUec`E25zJ~*DofsQdzIa@5^nOXj2T;8O`l--(QyU^$t?TGY^7#&FQ+2SS3B#qK*k3`ye?8jUYSajE5iBbJls75CCc(m3dk{t?- zopcER9{Z?TC)mk~gpi^kbbu>b-+a{m#8-y2^p$ka4n60w;Sc2}HMf<8JUvhCL0B&Btk)T`ctE$*qNW8L$`7!r^9T+>=<=2qaq-;ll2{`{Rg zc5a0ZUI$oG&j-qVOuKa=*v4aY#IsoM+1|c4Z)<}lEDvy;5huB@1RJPquU2U*U-;gu z=En2m+qjBzR#DEJDO`WU)hdd{Vj%^0V*KoyZ|5lzV87&g_j~NCjwv0uQVqXOb*QrQ zy|Qn`hxx(58c70$E;L(X0uZZ72M1!6oeg)(cdKO ze0gDaTz+ohR-#d)NbAH4x{I(21yjwvBQfmpLu$)|m{XolbgF!pmsqJ#D}(ylp6uC> z{bqtcI#hT#HW=wl7>p!38sKsJ`r8}lt-q%Keqy%u(xk=yiIJiUw6|5IvkS+#?JTBl z8H5(Q?l#wzazujH!8o>1xtn8#_w+397*_cy8!pQGP%K(Ga3pAjsaTbbXJlQF_+m+-UpUUent@xM zg%jqLUExj~o^vQ3Gl*>wh=_gOr2*|U64_iXb+-111aH}$TjeajM+I20xw(((>fej-@CIz4S1pi$(#}P7`4({6QS2CaQS4NPENDp>sAqD z$bH4KGzXGffkJ7R>V>)>tC)uax{UsN*dbeNC*v}#8Y#OWYwL4t$ePR?VTyIs!wea+ z5Urmc)X|^`MG~*dS6pGSbU+gPJoq*^a=_>$n4|P^w$sMBBy@f*Z^Jg6?n5?oId6f{ z$LW4M|4m502z0t7g<#Bx%X;9<=)smFolV&(V^(7Cv2-sxbxopQ!)*#ZRhTBpx1)Fc zNm1T%bONzv6@#|dz(w02AH8OXe>kQ#1FMCzO}2J_mST)+ExmBr9cva-@?;wnmWMOk z{3_~EX_xadgJGv&H@zK_8{(x84`}+c?oSBX*Ge3VdfTt&F}yCpFP?CpW+BE^cWY0^ zb&uBN!Ja3UzYHK-CTyA5=L zEMW{l3Usky#ly=7px648W31UNV@K)&Ub&zP1c7%)`{);I4b0Q<)B}3;NMG2JH=X$U zfIW4)4n9ZM`-yRj67I)YSLDK)qfUJ_ij}a#aZN~9EXrh8eZY2&=uY%2N0UFF7<~%M zsB8=erOWZ>Ct_#^tHZ|*q`H;A)5;ycw*IcmVxi8_0Xk}aJA^ath+E;xg!x+As(M#0=)3!NJR6H&9+zd#iP(m0PIW8$ z1Y^VX`>jm`W!=WpF*{ioM?C9`yOR>@0q=u7o>BP-eSHqCgMDj!2anwH?s%i2p+Q7D zzszIf5XJpE)IG4;d_(La-xenmF(tgAxK`Y4sQ}BSJEPs6N_U2vI{8=0C_F?@7<(G; zo$~G=8p+076G;`}>{MQ>t>7cm=zGtfbdDXm6||jUU|?X?CaE?(<6bKDYKeHlz}DA8 zXT={X=yp_R;HfJ9h%?eWvQ!dRgz&Su*JfNt!Wu>|XfU&68iRikRrHRW|ZxzRR^`eIGt zIeiDgVS>IeExKVRWW8-=A=yA`}`)ZkWBrZD`hpWIxBGkh&f#ijr449~m`j6{4jiJ*C!oVA8ZC?$1RM#K(_b zL9TW)kN*Y4%^-qPpMP7d4)o?Nk#>aoYHT(*g)qmRUb?**F@pnNiy6Fv9rEiUqD(^O zzyS?nBrX63BTRYduaG(0VVG2yJRe%o&rVrLjbxTaAFTd8s;<<@Qs>u(<193R8>}2_ zuwp{7;H2a*X7_jryzriZXMg?bTuegABb^87@SsKkr2)0Gyiax8KQWstw^v#ix45EVrcEhr>!NMhprl$InQMzjSFH54x5k9qHc`@9uKQzvL4ihcq{^B zPrVR=o_ic%Y>6&rMN)hTZsI7I<3&`#(nl+3y3ys9A~&^=4?PL&nd8)`OfG#n zwAMN$1&>K++c{^|7<4P=2y(B{jJsQ0a#U;HTo4ZmWZYvI{+s;Td{Yzem%0*k#)vjpB zia;J&>}ICate44SFYY3vEelqStQWFihx%^vQ@Do(sOy7yR2@WNv7Y9I^yL=nZr3mb zXKV5t@=?-Sk|b{XMhA7ZGB@2hqsx}4xwCW!in#C zI@}scZlr3-NFJ@NFaJlhyfcw{k^vvtGl`N9xSo**rDW4S}i zM9{fMPWo%4wYDG~BZ18BD+}h|GQKc-g^{++3MY>}W_uq7jGHx{mwE9fZiPCoxN$+7 zrODGGJrOkcPQUB(FD5aoS4g~7#6NR^ma7-!>mHuJfY5kTe6PpNNKC9GGRiu^L31uG z$7v`*JknQHsYB!Tm_W{a32TM099djW%5e+j0Ve_ct}IM>XLF1Ap+YvcrLV=|CKo6S zb+9Nl3_YdKP6%Cxy@6TxZ>;4&nTneadr z_ES90ydCev)LV!dN=#(*f}|ZORFdvkYBni^aLbUk>BajeWIOcmHP#8S)*2U~QKI%S zyrLmtPqb&TphJ;>yAxri#;{uyk`JJqODDw%(Z=2`1uc}br^V%>j!gS)D*q*f_-qf8&D;W1dJgQMlaH5er zN2U<%Smb7==vE}dDI8K7cKz!vs^73o9f>2sgiTzWcwY|BMYHH5%Vn7#kiw&eItCqa zIkR2~Q}>X=Ar8W|^Ms41Fm8o6IB2_j60eOeBB1Br!boW7JnoeX6Gs)?7rW0^5psc- zjS16yb>dFn>KPOF;imD}e!enuIniFzv}n$m2#gCCv4jM#ArwlzZ$7@9&XkFxZ4n!V zj3dyiwW4Ki2QG{@i>yuZXQizw_OkZI^-3otXC{!(lUpJF33gI60ak;Uqitp74|B6I zgg{b=Iz}WkhCGj1M=hu4#Aw173YxIVbISaoc z-nLZC*6Tgivd5V`K%GxhBsp@SUU60-rfc$=wb>zdJzXS&-5(NRRodFk;Kxk!S(O(a0e7oY=E( zAyS;Ow?6Q&XA+cnkCb{28_1N8H#?J!*$MmIwLq^*T_9-z^&UE@A(z9oGYtFy6EZef LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/benchmarks/with-ethyca/app/layout.tsx b/benchmarks/with-ethyca/app/layout.tsx new file mode 100644 index 0000000..c195748 --- /dev/null +++ b/benchmarks/with-ethyca/app/layout.tsx @@ -0,0 +1,59 @@ +import Script from "next/script"; + +export default function RootLayout({ children }: { children: React.ReactNode }) { + return ( + + + + + {children} + + ); +} diff --git a/benchmarks/with-ethyca/app/page.tsx b/benchmarks/with-ethyca/app/page.tsx new file mode 100644 index 0000000..cb954f2 --- /dev/null +++ b/benchmarks/with-ethyca/app/page.tsx @@ -0,0 +1,7 @@ +export default function Home() { + return ( +
+

Benchmark

+
+ ); +} diff --git a/benchmarks/with-ethyca/config.json b/benchmarks/with-ethyca/config.json new file mode 100644 index 0000000..d361e66 --- /dev/null +++ b/benchmarks/with-ethyca/config.json @@ -0,0 +1,44 @@ +{ + "$schema": "./node_modules/@cookiebench/benchmark-schema/schema.json", + "name": "with-ethyca", + "id": "fides-banner-container", + "iterations": 20, + "cookieBanner": { + "selectors": [ + "#fides-banner-container", + ".fides-banner" + ], + "serviceHosts": ["ethyca.fides-cdn.ethyca.com", "ethyca.com"], + "waitForVisibility": true, + "measureViewportCoverage": true, + "expectedLayoutShift": true, + "serviceName": "Ethyca" + }, + "techStack": { + "bundler": "unknown", + "bundleType": "iffe", + "frameworks": [], + "languages": ["javascript"], + "packageManager": "unknown", + "typescript": false + }, + "internationalization": { + "detection": "ip", + "stringLoading": "none" + }, + "source": { + "isOpenSource": true, + "license": "Apache-2.0 license", + "website": "https://www.ethyca.com", + "github": "github.com/ethyca/fides" + }, + "company": { + "name": "Ethyca", + "website": "https://ethyca.com", + "avatar": "https://pbs.twimg.com/profile_images/1864656485285797888/rvV-KPyK_400x400.png" + }, + "includes": { + "backend": "Apache-2.0 license", + "components": ["python"] + } +} diff --git a/benchmarks/with-ethyca/next-env.d.ts b/benchmarks/with-ethyca/next-env.d.ts new file mode 100644 index 0000000..1b3be08 --- /dev/null +++ b/benchmarks/with-ethyca/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/benchmarks/with-ethyca/next.config.ts b/benchmarks/with-ethyca/next.config.ts new file mode 100644 index 0000000..a67a28b --- /dev/null +++ b/benchmarks/with-ethyca/next.config.ts @@ -0,0 +1,7 @@ +import type { NextConfig } from 'next'; + +const nextConfig: NextConfig = { + /* config options here */ +}; + +export default nextConfig; diff --git a/benchmarks/with-ethyca/package.json b/benchmarks/with-ethyca/package.json new file mode 100644 index 0000000..75b6b38 --- /dev/null +++ b/benchmarks/with-ethyca/package.json @@ -0,0 +1,26 @@ +{ + "name": "with-ethyca", + "private": true, + "scripts": { + "dev": "next dev --port 3006 --turbopack", + "build": "next build --turbopack", + "start": "next start", + "lint": "next lint", + "fmt": "pnpm biome format --write . && pnpm biome check --formatter-enabled=false --linter-enabled=false --organize-imports-enabled=true --write", + "benchmark": "pnpm exec benchmark-cli benchmark" + }, + "dependencies": { + "next": "15.4.6", + "react": "^19.1.1", + "react-dom": "^19.1.1" + }, + "devDependencies": { + "@cookiebench/benchmark-schema": "workspace:*", + "@cookiebench/cli": "workspace:*", + "@cookiebench/ts-config": "workspace:*", + "@types/node": "^24.2.1", + "@types/react": "^19.1.9", + "@types/react-dom": "^19.1.7", + "typescript": "^5.9.2" + } +} diff --git a/benchmarks/with-ethyca/tsconfig.json b/benchmarks/with-ethyca/tsconfig.json new file mode 100644 index 0000000..99f37b5 --- /dev/null +++ b/benchmarks/with-ethyca/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "@cookiebench/ts-config/nextjs.json", + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["./*"] + } + }, + "include": ["next-env.d.ts", ".next/types/**/*.ts", "**/*.ts", "**/*.tsx"], + "exclude": ["node_modules"] +}