From d9f9dc78bb3c44e4935c19f3491b89658f3f071e Mon Sep 17 00:00:00 2001 From: Kato Hiroki Date: Mon, 23 Mar 2026 11:40:00 +0000 Subject: [PATCH 1/3] docs: Add vite upgrade plan Co-Authored-By: Claude Sonnet 4.6 --- .../dev-notes/2026-03-23/vite-upgrade/plan.md | 143 ++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 docs/dev-notes/2026-03-23/vite-upgrade/plan.md diff --git a/docs/dev-notes/2026-03-23/vite-upgrade/plan.md b/docs/dev-notes/2026-03-23/vite-upgrade/plan.md new file mode 100644 index 000000000..6f206ab27 --- /dev/null +++ b/docs/dev-notes/2026-03-23/vite-upgrade/plan.md @@ -0,0 +1,143 @@ +# Vite 7 → 8 アップグレード計画 + +## 概要 + +`vite` を 7.3.1 から 8.0.1 へアップグレードする。 +Vite 8 は esbuild/Rollup を Rolldown/Oxc に置き換える大型メジャーバージョン。 + +コンパニオンパッケージも合わせてアップグレード対象: + +| パッケージ | 現行バージョン | 目標バージョン | 理由 | +| ------------------------------ | -------------- | -------------- | ------------------------------------- | +| `vite` | 7.3.1 | 8.0.1 | 主対象 | +| `@sveltejs/vite-plugin-svelte` | 6.2.4 | 7.0.0 | v7 が Vite 8 を peerDep として要求 | +| `vitest` | 4.0.18 | 4.1.0 | 4.1.0 で `^8.0.0-0` を peerDep に追加 | +| `@vitest/coverage-v8` | 4.0.18 | 4.1.0 | vitest と同一バージョンを維持 | +| `@vitest/ui` | 4.0.18 | 4.1.0 | vitest と同一バージョンを維持 | +| `@sveltejs/kit` | 2.55.0 | 変更なし | v2.53.0 で既に Vite 8 対応済み | + +--- + +## 背景:なぜ Rolldown/Oxc に移行するのか + +### dev/prod の分裂問題 + +Vite 7 以前は dev と prod で異なるバンドラーを使っていた: + +``` +dev サーバー → esbuild(Go製):高速だが Rollup と動作が異なる +本番ビルド → Rollup(JS製):バンドル品質は高いが遅い +``` + +2 つの異なるバンドラーが同居していたため「dev では動くが prod でクラッシュ」という再現困難なバグが構造的に発生していた。Vite 8 はこれを **Rolldown で一本化**することで解消する。 + +### VoidZero エコシステム + +Rolldown と Oxc はどちらも **VoidZero**(Evan You が設立)が開発している Rust 製ツールチェーン: + +``` +VoidZero +├── Oxc — JS ツールチェーンのコア(パーサー・トランスパイラー・ミニファイアー・oxlint・oxfmt) +├── Rolldown — Oxc の上に乗る Rust 製バンドラー(Rollup 後継) +└── Vite — Rolldown + Oxc transformer/minifier を dev/prod 両方で採用 +``` + +oxlint(ESLint 互換リンター)や oxfmt(フォーマッター)も同じ Oxc モノレポに属し、**同一のパーサーと AST を共有**している。Vite 8 に乗ることは「Oxc エコシステムの土台に立つ」ことを意味し、各ツールは独立して・好きなタイミングで追加移行できる。 + +### エコシステム一元化のメリット・デメリット + +**メリット** + +| 項目 | 内容 | +| ------------------- | --------------------------------------------------------------------------- | +| dev/prod の動作一致 | 同一バンドラー(Rolldown)を使うことで prod 限定バグが原理的になくなる | +| 一貫した高速化 | 全ツールが Rust 製。ビルド・lint・フォーマットがまとめて速くなる | +| 段階移行が可能 | oxlint・oxfmt は ESLint/Prettier と互換性を持たせた設計で、一括移行不要 | +| 統一されたコア | 全ツールが同じ AST を共有するため、パース結果のずれによる不整合が起きにくい | + +**デメリット・リスク** + +| 項目 | 内容 | +| ---------------------- | ----------------------------------------------------------------------------------------------------- | +| 単一障害点 | VoidZero 1 社への依存度が高まる。組織・方針変更の影響を受けやすい | +| 成熟度 | Rolldown/Oxc はまだ新しく、Rollup/esbuild に比べてエッジケースのバグが潜在する可能性がある | +| プラグインエコシステム | Rollup プラグインの一部は Rolldown で未対応(本プロジェクトはカスタムプラグイン未使用のため影響なし) | +| ロックイン | 将来 Oxc スタックで標準化するほど、他のツールチェーンへの乗り換えコストが上がる | + +--- + +## 破壊的変更の影響調査結果 + +### 問題なし(対応不要) + +| 確認項目 | 根拠 | +| ------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| ブラウザターゲット引き上げ (Chrome 111 / Firefox 114 / Safari 16.4) | AtCoder ユーザー向けで最新ブラウザ前提。影響なし | +| `optimizeDeps.esbuildOptions` → `rolldownOptions` | `vite.config.ts` で `esbuildOptions` 未使用。`optimizeDeps.exclude` のみ使用 | +| `esbuild` config → `oxc` | `vite.config.ts` に `esbuild` オプション未使用 | +| `build.rollupOptions` → `build.rolldownOptions` | `vite.config.ts` で `build.rollupOptions` 未使用 | +| `import.meta.hot.accept()` URL引数削除 | `src/` 全体に `import.meta.hot` 使用なし (grep 確認済み) | +| `transformWithEsbuild` deprecation | `src/` 内で未使用 | +| `parseAst`/`parseAstAsync` → `parseSync`/`parse` | 未使用 | +| `format: 'system'`/`'amd'` 削除 | 未使用 | +| `manualChunks` オブジェクト形式削除 | 未使用 | +| `build.rollupOptions.watch.chokidar` 削除 | 未使用 | +| Parallel plugin hooks → sequential | カスタム Vite プラグイン未作成 | +| `build.commonjsOptions` no-op | 未使用 | + +### 要対応 + +| 項目 | 内容 | リスク | +| ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ | +| CJS Interop 挙動変更 | `"type": "module"` プロジェクトでは CJS モジュールの default import が strict になる。`@prisma/client` 等は `optimizeDeps.exclude` 設定済みだが、`pnpm build` で実際の動作を確認する必要がある | Low | +| `@sveltejs/vite-plugin-svelte` 6→7 メジャーバンプ | svelte 5 を peerDep として要求 (`^5.46.4`)。現行は 5.54.1 なので問題なし。その他の breaking changes は `pnpm check` と `pnpm test:unit` で検出する | Low | + +--- + +## 設計方針 + +- コンパニオンパッケージ 5 本を 1 コミットで一括アップグレードする(バージョン不整合を防ぐため) +- `vite.config.ts` の変更は不要(esbuildOptions/rollupOptions いずれも未使用) +- CJS Interop は `pnpm build` でビルド成果物を確認することで検証する + +--- + +## 却下した代替案 + +- `vite` のみアップグレードして `@sveltejs/vite-plugin-svelte` は据え置く → `^7.0.0 || ^8.0.0` の peerDep 範囲を超えるため不可 +- `vitest` を 4.0.18 のままにする → peerDep が `^6.0.0 || ^7.0.0` で Vite 8 非対応のため不可 + +--- + +## 便利な新機能(採用検討) + +| 機能 | 説明 | 推奨度 | +| --------------------- | --------------------------------------------------------------------- | ----------------------- | +| Rolldown + Oxc ビルド | esbuild/Rollup を置き換え。設定変更なしで自動的に高速化 | High(自動適用) | +| Lightning CSS | CSS ミニファイが esbuild から Lightning CSS に変更。設定なしで適用 | High(自動適用) | +| `oxc` 設定オプション | JSX や decorator 等の変換設定を `esbuild` の代わりに `oxc` で指定可能 | Low(現時点で設定不要) | + +--- + +## 実装フェーズ + +- [ ] Phase 1: `package.json` の対象パッケージバージョンを更新する +- [ ] Phase 2: `pnpm install` でロックファイルを更新する +- [ ] Phase 3: `pnpm lint` を実行して ESLint エラーがないことを確認する +- [ ] Phase 4: `pnpm check` を実行して型エラーがないことを確認する +- [ ] Phase 5: `pnpm test:unit` を実行してテストが全通過することを確認する +- [ ] Phase 6: `pnpm build` を実行して CJS Interop 問題がないことを確認する + +--- + +## 検証手順 + +```bash +pnpm install +pnpm lint +pnpm check +pnpm test:unit +pnpm build +``` + +> **`pnpm check` 注意事項**: 型エラーが出た場合は `git stash && pnpm check 2>&1 | tail -5` でアップグレード前と比較して pre-existing エラーでないかを確認する。 From 5af6590ad636ab74b8e9011b50cb8f84c8c85778 Mon Sep 17 00:00:00 2001 From: Kato Hiroki Date: Mon, 23 Mar 2026 12:07:55 +0000 Subject: [PATCH 2/3] =?UTF-8?q?chore:=20upgrade=20Vite=207=20=E2=86=92=208?= =?UTF-8?q?=20with=20Rolldown/Oxc=20and=20migrate=20Tailwind=20to=20vite?= =?UTF-8?q?=20plugin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Upgrade vite 7.3.1 → 8.0.1, @sveltejs/vite-plugin-svelte 6 → 7, vitest/@vitest/* 4.0.18 → 4.1.0 in one atomic commit - Migrate @tailwindcss/postcss → @tailwindcss/vite to fix Rolldown CSS resolution error (ENOENT tailwindcss) - Note: client bundle gzip +75 kB (+22%) due to Rolldown chunk splitting; expected to improve as Rolldown matures Co-Authored-By: Claude Sonnet 4.6 --- .../dev-notes/2026-03-23/vite-upgrade/plan.md | 58 +- package.json | 12 +- pnpm-lock.yaml | 549 +++++++++++------- postcss.config.mjs | 4 +- vite.config.ts | 3 +- 5 files changed, 396 insertions(+), 230 deletions(-) diff --git a/docs/dev-notes/2026-03-23/vite-upgrade/plan.md b/docs/dev-notes/2026-03-23/vite-upgrade/plan.md index 6f206ab27..7602b2ea6 100644 --- a/docs/dev-notes/2026-03-23/vite-upgrade/plan.md +++ b/docs/dev-notes/2026-03-23/vite-upgrade/plan.md @@ -121,23 +121,51 @@ oxlint(ESLint 互換リンター)や oxfmt(フォーマッター)も同 ## 実装フェーズ -- [ ] Phase 1: `package.json` の対象パッケージバージョンを更新する -- [ ] Phase 2: `pnpm install` でロックファイルを更新する -- [ ] Phase 3: `pnpm lint` を実行して ESLint エラーがないことを確認する -- [ ] Phase 4: `pnpm check` を実行して型エラーがないことを確認する -- [ ] Phase 5: `pnpm test:unit` を実行してテストが全通過することを確認する -- [ ] Phase 6: `pnpm build` を実行して CJS Interop 問題がないことを確認する +- [x] Phase 1: `package.json` の対象パッケージバージョンを更新する +- [x] Phase 2: `pnpm install` でロックファイルを更新する +- [x] Phase 3: `pnpm lint` を実行して ESLint エラーがないことを確認する +- [x] Phase 4: `pnpm check` を実行して型エラーがないことを確認する(pre-existing 2 errors・差分なし) +- [x] Phase 5: `pnpm test:unit` を実行してテストが全通過することを確認する(45 files, 1954 passed) +- [x] Phase 6: `pnpm build` を実行して CJS Interop 問題がないことを確認する +- [x] Phase 7: `@tailwindcss/postcss` → `@tailwindcss/vite` へ移行してビルドを通す ---- +### Phase 7 補足 -## 検証手順 +`pnpm build` 実行時に以下のエラーが発生: -```bash -pnpm install -pnpm lint -pnpm check -pnpm test:unit -pnpm build ``` +Error: [postcss] ENOENT: no such file or directory, open '/usr/src/app/tailwindcss' +``` + +Rolldown が CSS の `@import 'tailwindcss'` をファイルパスとして解決しようとするため発生する。 +公式ドキュメントに従い、PostCSS 経由の統合から Vite プラグイン経由の統合へ切り替える。 + +**出典:** + +- https://tailwindcss.com/docs/installation/using-vite — "preferred approach over PostCSS for Vite projects" +- https://tailwindcss.com/docs/installation/framework-guides/sveltekit — "For v4, `@tailwindcss/vite` is used instead of `@tailwindcss/postcss`" + +**変更内容:** +| ファイル | 変更内容 | +| --- | --- | +| `package.json` | `@tailwindcss/postcss` を削除 → `@tailwindcss/vite` を追加 | +| `vite.config.ts` | `tailwindcss()` プラグインを追加 | +| `postcss.config.mjs` | `@tailwindcss/postcss` エントリを削除(ファイルを空にする) | + +--- + +## 注意事項:バンドルサイズの増加 + +Vite 7 → 8 のアップグレードにより、クライアントバンドルのサイズが増加している。 + +| | Vite 7 | Vite 8 | 差分 | +| --------------- | ----------------------- | ------------------------ | --------------------- | +| 最大 JS chunk | 345.7 kB / 91.9 kB gzip | 637.8 kB / 162.4 kB gzip | +70.5 kB gzip | +| CSS | 300.1 kB / 37.6 kB gzip | 290.4 kB / 37.1 kB gzip | ほぼ同じ | +| **合計 (gzip)** | **332.1 kB** | **407.4 kB** | **+75.3 kB (+22.7%)** | -> **`pnpm check` 注意事項**: 型エラーが出た場合は `git stash && pnpm check 2>&1 | tail -5` でアップグレード前と比較して pre-existing エラーでないかを確認する。 +**原因**: Rolldown の chunk splitting アルゴリズムが Rollup と異なるため。Vite 8.x の成熟とともに改善が期待される。 + +**判断**: 許容する。Rolldown が安定するにつれ自然に解消される可能性が高く、dev/prod 動作一致などのメリットが上回る。 + +--- diff --git a/package.json b/package.json index 5fe7dc5ee..d267ec030 100644 --- a/package.json +++ b/package.json @@ -31,16 +31,16 @@ "@quramy/prisma-fabbrica": "2.3.3", "@sveltejs/adapter-vercel": "6.3.3", "@sveltejs/kit": "2.55.0", - "@sveltejs/vite-plugin-svelte": "6.2.4", + "@sveltejs/vite-plugin-svelte": "7.0.0", "@tailwindcss/forms": "0.5.11", - "@tailwindcss/postcss": "4.2.2", + "@tailwindcss/vite": "4.2.2", "@testing-library/jest-dom": "6.9.1", "@types/gtag.js": "0.0.20", "@types/jsdom": "28.0.1", "@typescript-eslint/eslint-plugin": "8.57.1", "@typescript-eslint/parser": "8.57.1", - "@vitest/coverage-v8": "4.0.18", - "@vitest/ui": "4.0.18", + "@vitest/coverage-v8": "4.1.0", + "@vitest/ui": "4.1.0", "eslint": "10.1.0", "eslint-config-prettier": "10.1.8", "eslint-plugin-svelte": "3.16.0", @@ -64,8 +64,8 @@ "tslib": "2.8.1", "tsx": "4.21.0", "typescript": "5.9.3", - "vite": "7.3.1", - "vitest": "4.0.18", + "vite": "8.0.1", + "vitest": "4.1.0", "zod": "4.3.6" }, "type": "module", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 64a98f1ca..4aac66598 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -31,7 +31,7 @@ importers: version: 5.22.0(prisma@5.22.0) '@testing-library/svelte': specifier: 5.3.1 - version: 5.3.1(svelte@5.54.1)(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18) + version: 5.3.1(svelte@5.54.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.1.0) '@types/jest': specifier: 30.0.0 version: 30.0.0 @@ -86,19 +86,19 @@ importers: version: 2.3.3(@prisma/client@5.22.0(prisma@5.22.0))(magicast@0.3.5)(typescript@5.9.3) '@sveltejs/adapter-vercel': specifier: 6.3.3 - version: 6.3.3(@sveltejs/kit@2.55.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1)))(rollup@4.53.4) + version: 6.3.3(@sveltejs/kit@2.55.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)))(rollup@4.53.4) '@sveltejs/kit': specifier: 2.55.0 - version: 2.55.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 2.55.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)) '@sveltejs/vite-plugin-svelte': - specifier: 6.2.4 - version: 6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1)) + specifier: 7.0.0 + version: 7.0.0(svelte@5.54.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)) '@tailwindcss/forms': specifier: 0.5.11 version: 0.5.11(tailwindcss@4.2.2) - '@tailwindcss/postcss': + '@tailwindcss/vite': specifier: 4.2.2 - version: 4.2.2 + version: 4.2.2(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)) '@testing-library/jest-dom': specifier: 6.9.1 version: 6.9.1 @@ -115,11 +115,11 @@ importers: specifier: 8.57.1 version: 8.57.1(eslint@10.1.0(jiti@1.21.7))(typescript@5.9.3) '@vitest/coverage-v8': - specifier: 4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 4.1.0 + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: 4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 4.1.0 + version: 4.1.0(vitest@4.1.0) eslint: specifier: 10.1.0 version: 10.1.0(jiti@1.21.7) @@ -176,7 +176,7 @@ importers: version: 4.5.0(svelte@5.54.1) sveltekit-superforms: specifier: 2.30.0 - version: 2.30.0(@sveltejs/kit@2.55.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1)))(@types/json-schema@7.0.15)(svelte@5.54.1)(typescript@5.9.3) + version: 2.30.0(@sveltejs/kit@2.55.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)))(@types/json-schema@7.0.15)(svelte@5.54.1)(typescript@5.9.3) tailwindcss: specifier: 4.2.2 version: 4.2.2 @@ -190,11 +190,11 @@ importers: specifier: 5.9.3 version: 5.9.3 vite: - specifier: 7.3.1 - version: 7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1) + specifier: 8.0.1 + version: 8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1) vitest: - specifier: 4.0.18 - version: 4.0.18(@edge-runtime/vm@3.2.0)(@types/node@25.5.0)(@vitest/ui@4.0.18)(jiti@1.21.7)(jsdom@29.0.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1) + specifier: 4.1.0 + version: 4.1.0(@edge-runtime/vm@3.2.0)(@types/node@25.5.0)(@vitest/ui@4.1.0)(jsdom@29.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)) zod: specifier: 4.3.6 version: 4.3.6 @@ -247,11 +247,6 @@ packages: resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.6': - resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.29.2': resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} engines: {node: '>=6.0.0'} @@ -265,10 +260,6 @@ packages: resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.6': - resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} - engines: {node: '>=6.9.0'} - '@babel/types@7.29.0': resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} @@ -1110,6 +1101,9 @@ packages: '@oxc-project/types@0.110.0': resolution: {integrity: sha512-6Ct21OIlrEnFEJk5LT4e63pk3btsI6/TusD/GStLi7wYlGJNOl1GI9qvXAnRAxQU9zqA2Oz+UwhfTOU2rPZVow==} + '@oxc-project/types@0.120.0': + resolution: {integrity: sha512-k1YNu55DuvAip/MGE1FTsIuU3FUCn6v/ujG9V7Nq5Df/kX2CWb13hhwD0lmJGMGqE+bE1MXvv9SZVnMzEXlWcg==} + '@oxc-transform/binding-android-arm-eabi@0.111.0': resolution: {integrity: sha512-NdFLicvorfHYu0g2ftjVJaH7+Dz27AQUNJOq8t/ofRUoWmczOodgUCHx8C1M1htCN4ZmhS/FzfSy6yd/UngJGg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1396,30 +1390,60 @@ packages: cpu: [arm64] os: [android] + '@rolldown/binding-android-arm64@1.0.0-rc.10': + resolution: {integrity: sha512-jOHxwXhxmFKuXztiu1ORieJeTbx5vrTkcOkkkn2d35726+iwhrY1w/+nYY/AGgF12thg33qC3R1LMBF5tHTZHg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + '@rolldown/binding-darwin-arm64@1.0.0-rc.1': resolution: {integrity: sha512-YzJdn08kSOXnj85ghHauH2iHpOJ6eSmstdRTLyaziDcUxe9SyQJgGyx/5jDIhDvtOcNvMm2Ju7m19+S/Rm1jFg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] + '@rolldown/binding-darwin-arm64@1.0.0-rc.10': + resolution: {integrity: sha512-gED05Teg/vtTZbIJBc4VNMAxAFDUPkuO/rAIyyxZjTj1a1/s6z5TII/5yMGZ0uLRCifEtwUQn8OlYzuYc0m70w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + '@rolldown/binding-darwin-x64@1.0.0-rc.1': resolution: {integrity: sha512-cIvAbqM+ZVV6lBSKSBtlNqH5iCiW933t1q8j0H66B3sjbe8AxIRetVqfGgcHcJtMzBIkIALlL9fcDrElWLJQcQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] + '@rolldown/binding-darwin-x64@1.0.0-rc.10': + resolution: {integrity: sha512-rI15NcM1mA48lqrIxVkHfAqcyFLcQwyXWThy+BQ5+mkKKPvSO26ir+ZDp36AgYoYVkqvMcdS8zOE6SeBsR9e8A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + '@rolldown/binding-freebsd-x64@1.0.0-rc.1': resolution: {integrity: sha512-rVt+B1B/qmKwCl1XD02wKfgh3vQPXRXdB/TicV2w6g7RVAM1+cZcpigwhLarqiVCxDObFZ7UgXCxPC7tpDoRog==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] + '@rolldown/binding-freebsd-x64@1.0.0-rc.10': + resolution: {integrity: sha512-XZRXHdTa+4ME1MuDVp021+doQ+z6Ei4CCFmNc5/sKbqb8YmkiJdj8QKlV3rCI0AJtAeSB5n0WGPuJWNL9p/L2w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.1': resolution: {integrity: sha512-69YKwJJBOFprQa1GktPgbuBOfnn+EGxu8sBJ1TjPER+zhSpYeaU4N07uqmyBiksOLGXsMegymuecLobfz03h8Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.10': + resolution: {integrity: sha512-R0SQMRluISSLzFE20sPWYHVmJdDQnRyc/FzSCN72BqQmh2SOZUFG+N3/vBZpR4C6WpEUVYJLrYUXaj43sJsNLA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.1': resolution: {integrity: sha512-9JDhHUf3WcLfnViFWm+TyorqUtnSAHaCzlSNmMOq824prVuuzDOK91K0Hl8DUcEb9M5x2O+d2/jmBMsetRIn3g==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1427,6 +1451,13 @@ packages: os: [linux] libc: [glibc] + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.10': + resolution: {integrity: sha512-Y1reMrV/o+cwpduYhJuOE3OMKx32RMYCidf14y+HssARRmhDuWXJ4yVguDg2R/8SyyGNo+auzz64LnPK9Hq6jg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.1': resolution: {integrity: sha512-UvApLEGholmxw/HIwmUnLq3CwdydbhaHHllvWiCTNbyGom7wTwOtz5OAQbAKZYyiEOeIXZNPkM7nA4Dtng7CLw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1434,6 +1465,27 @@ packages: os: [linux] libc: [musl] + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.10': + resolution: {integrity: sha512-vELN+HNb2IzuzSBUOD4NHmP9yrGwl1DVM29wlQvx1OLSclL0NgVWnVDKl/8tEks79EFek/kebQKnNJkIAA4W2g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.10': + resolution: {integrity: sha512-ZqrufYTgzxbHwpqOjzSsb0UV/aV2TFIY5rP8HdsiPTv/CuAgCRjM6s9cYFwQ4CNH+hf9Y4erHW1GjZuZ7WoI7w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.10': + resolution: {integrity: sha512-gSlmVS1FZJSRicA6IyjoRoKAFK7IIHBs7xJuHRSmjImqk3mPPWbR7RhbnfH2G6bcmMEllCt2vQ/7u9e6bBnByg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.1': resolution: {integrity: sha512-uVctNgZHiGnJx5Fij7wHLhgw4uyZBVi6mykeWKOqE7bVy9Hcxn0fM/IuqdMwk6hXlaf9fFShDTFz2+YejP+x0A==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1441,6 +1493,13 @@ packages: os: [linux] libc: [glibc] + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.10': + resolution: {integrity: sha512-eOCKUpluKgfObT2pHjztnaWEIbUabWzk3qPZ5PuacuPmr4+JtQG4k2vGTY0H15edaTnicgU428XW/IH6AimcQw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-x64-musl@1.0.0-rc.1': resolution: {integrity: sha512-T6Eg0xWwcxd/MzBcuv4Z37YVbUbJxy5cMNnbIt/Yr99wFwli30O4BPlY8hKeGyn6lWNtU0QioBS46lVzDN38bg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1448,32 +1507,65 @@ packages: os: [linux] libc: [musl] + '@rolldown/binding-linux-x64-musl@1.0.0-rc.10': + resolution: {integrity: sha512-Xdf2jQbfQowJnLcgYfD/m0Uu0Qj5OdxKallD78/IPPfzaiaI4KRAwZzHcKQ4ig1gtg1SuzC7jovNiM2TzQsBXA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + '@rolldown/binding-openharmony-arm64@1.0.0-rc.1': resolution: {integrity: sha512-PuGZVS2xNJyLADeh2F04b+Cz4NwvpglbtWACgrDOa5YDTEHKwmiTDjoD5eZ9/ptXtcpeFrMqD2H4Zn33KAh1Eg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] + '@rolldown/binding-openharmony-arm64@1.0.0-rc.10': + resolution: {integrity: sha512-o1hYe8hLi1EY6jgPFyxQgQ1wcycX+qz8eEbVmot2hFkgUzPxy9+kF0u0NIQBeDq+Mko47AkaFFaChcvZa9UX9Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + '@rolldown/binding-wasm32-wasi@1.0.0-rc.1': resolution: {integrity: sha512-2mOxY562ihHlz9lEXuaGEIDCZ1vI+zyFdtsoa3M62xsEunDXQE+DVPO4S4x5MPK9tKulG/aFcA/IH5eVN257Cw==} engines: {node: '>=14.0.0'} cpu: [wasm32] + '@rolldown/binding-wasm32-wasi@1.0.0-rc.10': + resolution: {integrity: sha512-Ugv9o7qYJudqQO5Y5y2N2SOo6S4WiqiNOpuQyoPInnhVzCY+wi/GHltcLHypG9DEUYMB0iTB/huJrpadiAcNcA==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.1': resolution: {integrity: sha512-oQVOP5cfAWZwRD0Q3nGn/cA9FW3KhMMuQ0NIndALAe6obqjLhqYVYDiGGRGrxvnjJsVbpLwR14gIUYnpIcHR1g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.10': + resolution: {integrity: sha512-7UODQb4fQUNT/vmgDZBl3XOBAIOutP5R3O/rkxg0aLfEGQ4opbCgU5vOw/scPe4xOqBwL9fw7/RP1vAMZ6QlAQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.1': resolution: {integrity: sha512-Ydsxxx++FNOuov3wCBPaYjZrEvKOOGq3k+BF4BPridhg2pENfitSRD2TEuQ8i33bp5VptuNdC9IzxRKU031z5A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.10': + resolution: {integrity: sha512-PYxKHMVHOb5NJuDL53vBUl1VwUjymDcYI6rzpIni0C9+9mTiJedvUxSk7/RPp7OOAm3v+EjgMu9bIy3N6b408w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@rolldown/pluginutils@1.0.0-rc.1': resolution: {integrity: sha512-UTBjtTxVOhodhzFVp/ayITaTETRHPUPYZPXQe0WU0wOgxghMojXxYjOiPOauKIYNWJAWS2fd7gJgGQK8GU8vDA==} + '@rolldown/pluginutils@1.0.0-rc.10': + resolution: {integrity: sha512-UkVDEFk1w3mveXeKgaTuYfKWtPbvgck1dT8TUG3bnccrH0XtLTuAyfCoks4Q/M5ZGToSVJTIQYCzy2g/atAOeg==} + '@rollup/plugin-node-resolve@15.3.1': resolution: {integrity: sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==} engines: {node: '>=14.0.0'} @@ -1658,20 +1750,12 @@ packages: typescript: optional: true - '@sveltejs/vite-plugin-svelte-inspector@5.0.1': - resolution: {integrity: sha512-ubWshlMk4bc8mkwWbg6vNvCeT7lGQojE3ijDh3QTR6Zr/R+GXxsGbyH4PExEPpiFmqPhYiVSVmHBjUcVc1JIrA==} + '@sveltejs/vite-plugin-svelte@7.0.0': + resolution: {integrity: sha512-ILXmxC7HAsnkK2eslgPetrqqW1BKSL7LktsFgqzNj83MaivMGZzluWq32m25j2mDOjmSKX7GGWahePhuEs7P/g==} engines: {node: ^20.19 || ^22.12 || >=24} peerDependencies: - '@sveltejs/vite-plugin-svelte': ^6.0.0-next.0 - svelte: ^5.0.0 - vite: ^6.3.0 || ^7.0.0 - - '@sveltejs/vite-plugin-svelte@6.2.4': - resolution: {integrity: sha512-ou/d51QSdTyN26D7h6dSpusAKaZkAiGM55/AKYi+9AGZw7q85hElbjK3kEyzXHhLSnRISHOYzVge6x0jRZ7DXA==} - engines: {node: ^20.19 || ^22.12 || >=24} - peerDependencies: - svelte: ^5.0.0 - vite: ^6.3.0 || ^7.0.0 + svelte: ^5.46.4 + vite: ^8.0.0-beta.7 || ^8.0.0 '@svgdotjs/svg.draggable.js@3.0.6': resolution: {integrity: sha512-7iJFm9lL3C40HQcqzEfezK2l+dW2CpoVY3b77KQGqc8GXWa6LhhmX5Ckv7alQfUXBuZbjpICZ+Dvq1czlGx7gA==} @@ -1795,8 +1879,10 @@ packages: resolution: {integrity: sha512-qEUA07+E5kehxYp9BVMpq9E8vnJuBHfJEC0vPC5e7iL/hw7HR61aDKoVoKzrG+QKp56vhNZe4qwkRmMC0zDLvg==} engines: {node: '>= 20'} - '@tailwindcss/postcss@4.2.2': - resolution: {integrity: sha512-n4goKQbW8RVXIbNKRB/45LzyUqN451deQK0nzIeauVEqjlI49slUlgKYJM2QyUzap/PcpnS7kzSUmPb1sCRvYQ==} + '@tailwindcss/vite@4.2.2': + resolution: {integrity: sha512-mEiF5HO1QqCLXoNEfXVA1Tzo+cYsrqV7w9Juj2wdUFyW07JRenqMG225MvPwr3ZD9N1bFQj46X7r33iHxLUW0w==} + peerDependencies: + vite: ^5.2.0 || ^6 || ^7 || ^8 '@tanstack/react-virtual@3.13.12': resolution: {integrity: sha512-Gd13QdxPSukP8ZrkbgS2RwoZseTTbQPLnQEn7HY/rqtM+8Zt95f7xKC7N0EsKs7aoz0WzZ+fditZux+F8EzYxA==} @@ -2217,48 +2303,48 @@ packages: resolution: {integrity: sha512-ZtvYkYpZOYdvbws3uaOAvTFuvFXoQGAtmzeiXu+XSMGxi5GVsODpoI9Xu9TplEMuD/5fmAtBbKb9cQHkWkLXDQ==} engines: {node: '>=18.16.0'} - '@vitest/coverage-v8@4.0.18': - resolution: {integrity: sha512-7i+N2i0+ME+2JFZhfuz7Tg/FqKtilHjGyGvoHYQ6iLV0zahbsJ9sljC9OcFcPDbhYKCet+sG8SsVqlyGvPflZg==} + '@vitest/coverage-v8@4.1.0': + resolution: {integrity: sha512-nDWulKeik2bL2Va/Wl4x7DLuTKAXa906iRFooIRPR+huHkcvp9QDkPQ2RJdmjOFrqOqvNfoSQLF68deE3xC3CQ==} peerDependencies: - '@vitest/browser': 4.0.18 - vitest: 4.0.18 + '@vitest/browser': 4.1.0 + vitest: 4.1.0 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@4.0.18': - resolution: {integrity: sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==} + '@vitest/expect@4.1.0': + resolution: {integrity: sha512-EIxG7k4wlWweuCLG9Y5InKFwpMEOyrMb6ZJ1ihYu02LVj/bzUwn2VMU+13PinsjRW75XnITeFrQBMH5+dLvCDA==} - '@vitest/mocker@4.0.18': - resolution: {integrity: sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==} + '@vitest/mocker@4.1.0': + resolution: {integrity: sha512-evxREh+Hork43+Y4IOhTo+h5lGmVRyjqI739Rz4RlUPqwrkFFDF6EMvOOYjTx4E8Tl6gyCLRL8Mu7Ry12a13Tw==} peerDependencies: msw: ^2.4.9 - vite: ^6.0.0 || ^7.0.0-0 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0-0 peerDependenciesMeta: msw: optional: true vite: optional: true - '@vitest/pretty-format@4.0.18': - resolution: {integrity: sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==} + '@vitest/pretty-format@4.1.0': + resolution: {integrity: sha512-3RZLZlh88Ib0J7NQTRATfc/3ZPOnSUn2uDBUoGNn5T36+bALixmzphN26OUD3LRXWkJu4H0s5vvUeqBiw+kS0A==} - '@vitest/runner@4.0.18': - resolution: {integrity: sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==} + '@vitest/runner@4.1.0': + resolution: {integrity: sha512-Duvx2OzQ7d6OjchL+trw+aSrb9idh7pnNfxrklo14p3zmNL4qPCDeIJAK+eBKYjkIwG96Bc6vYuxhqDXQOWpoQ==} - '@vitest/snapshot@4.0.18': - resolution: {integrity: sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==} + '@vitest/snapshot@4.1.0': + resolution: {integrity: sha512-0Vy9euT1kgsnj1CHttwi9i9o+4rRLEaPRSOJ5gyv579GJkNpgJK+B4HSv/rAWixx2wdAFci1X4CEPjiu2bXIMg==} - '@vitest/spy@4.0.18': - resolution: {integrity: sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==} + '@vitest/spy@4.1.0': + resolution: {integrity: sha512-pz77k+PgNpyMDv2FV6qmk5ZVau6c3R8HC8v342T2xlFxQKTrSeYw9waIJG8KgV9fFwAtTu4ceRzMivPTH6wSxw==} - '@vitest/ui@4.0.18': - resolution: {integrity: sha512-CGJ25bc8fRi8Lod/3GHSvXRKi7nBo3kxh0ApW4yCjmrWmRmlT53B5E08XRSZRliygG0aVNxLrBEqPYdz/KcCtQ==} + '@vitest/ui@4.1.0': + resolution: {integrity: sha512-sTSDtVM1GOevRGsCNhp1mBUHKo9Qlc55+HCreFT4fe99AHxl1QQNXSL3uj4Pkjh5yEuWZIx8E2tVC94nnBZECQ==} peerDependencies: - vitest: 4.0.18 + vitest: 4.1.0 - '@vitest/utils@4.0.18': - resolution: {integrity: sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==} + '@vitest/utils@4.1.0': + resolution: {integrity: sha512-XfPXT6a8TZY3dcGY8EdwsBulFCIw+BeeX0RZn2x/BtiY/75YGh8FeWGG8QISN/WhaqSrE2OrlDgtF8q5uhOTmw==} '@yr/monotone-cubic-spline@1.0.3': resolution: {integrity: sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==} @@ -2382,8 +2468,8 @@ packages: resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} engines: {node: '>=4'} - ast-v8-to-istanbul@0.3.10: - resolution: {integrity: sha512-p4K7vMz2ZSk3wN8l5o3y2bJAoZXT3VuJI5OLTATY/01CYWumWvwkUw0SqDBnNq6IiTO3qDa1eSQDibAV8g7XOQ==} + ast-v8-to-istanbul@1.0.0: + resolution: {integrity: sha512-1fSfIwuDICFA4LKkCzRPO7F0hzFf0B7+Xqrl27ynQaa+Rh0e1Es0v6kWHPott3lU10AyAr7oKHa65OppjLn3Rg==} async-listen@1.2.0: resolution: {integrity: sha512-CcEtRh/oc9Jc4uWeUwdpG/+Mb2YUHKmdaTf0gUr7Wa+bfp4xx70HOb3RuSTJMvqKNB1TkdTfjLdrcz2X4rkkZA==} @@ -2531,8 +2617,8 @@ packages: resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} engines: {node: '>=16'} - chai@6.2.1: - resolution: {integrity: sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==} + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} chalk@2.4.2: @@ -2676,6 +2762,9 @@ packages: resolution: {integrity: sha512-7V+KqSvMiHp8yWDuwfww06XleMWVVB9b9tURBx+G7UTADuo5hYPuowKloz4OzOqbPezxgo+fdQ1522WzPG4OeA==} engines: {node: '>=8'} + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + cookie-es@2.0.0: resolution: {integrity: sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg==} @@ -3049,8 +3138,8 @@ packages: es-module-lexer@1.4.1: resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} - es-module-lexer@1.7.0: - resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-module-lexer@2.0.0: + resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} @@ -3212,8 +3301,8 @@ packages: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} - expect-type@1.2.2: - resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} expect@30.2.0: @@ -3300,6 +3389,9 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + flatted@3.4.0: + resolution: {integrity: sha512-kC6Bb+ooptOIvWj5B63EQWkF0FEnNjV2ZNkLMLZRDDduIiWeFF4iKnslwhiWxjAdbg4NzTNo6h0qLuvFrcx+Sw==} + flowbite-datepicker@1.3.2: resolution: {integrity: sha512-6Nfm0MCVX3mpaR7YSCjmEO2GO8CDt6CX8ZpQnGdeu03WUCWtEPQ/uy0PUiNtIJjJZWnX0Cm3H55MOhbD1g+E/g==} @@ -3639,12 +3731,12 @@ packages: react: optional: true + js-tokens@10.0.0: + resolution: {integrity: sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-tokens@9.0.1: - resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - js-yaml@4.1.1: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true @@ -3916,8 +4008,8 @@ packages: magicast@0.3.5: resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} - magicast@0.5.1: - resolution: {integrity: sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==} + magicast@0.5.2: + resolution: {integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==} make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} @@ -4648,6 +4740,11 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true + rolldown@1.0.0-rc.10: + resolution: {integrity: sha512-q7j6vvarRFmKpgJUT8HCAUljkgzEp4LAhPlJUvQhA5LA1SUL36s5QCysMutErzL3EbNOZOkoziSx9iZC4FddKA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + rollup@4.53.4: resolution: {integrity: sha512-YpXaaArg0MvrnJpvduEDYIp7uGOqKXbH9NsHGQ6SxKCOsNAjZF018MmxefFUulVP2KLtiGw1UvZbr+/ekjvlDg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -4789,8 +4886,8 @@ packages: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} - std-env@3.10.0: - resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + std-env@4.0.0: + resolution: {integrity: sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==} stream-to-array@2.3.0: resolution: {integrity: sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==} @@ -4982,10 +5079,6 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyexec@1.0.2: - resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} - engines: {node: '>=18'} - tinyexec@1.0.4: resolution: {integrity: sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==} engines: {node: '>=18'} @@ -5187,15 +5280,16 @@ packages: engines: {node: '>= 18'} hasBin: true - vite@7.3.1: - resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + vite@8.0.1: + resolution: {integrity: sha512-wt+Z2qIhfFt85uiyRt5LPU4oVEJBXj8hZNWKeqFG4gRG/0RaRGJ7njQCwzFVjO+v4+Ipmf5CY7VdmZRAYYBPHw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.1.0 + esbuild: ^0.27.0 jiti: '>=1.21.0' less: ^4.0.0 - lightningcss: ^1.21.0 sass: ^1.70.0 sass-embedded: ^1.70.0 stylus: '>=0.54.8' @@ -5206,12 +5300,14 @@ packages: peerDependenciesMeta: '@types/node': optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true jiti: optional: true less: optional: true - lightningcss: - optional: true sass: optional: true sass-embedded: @@ -5227,28 +5323,29 @@ packages: yaml: optional: true - vitefu@1.1.1: - resolution: {integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==} + vitefu@1.1.2: + resolution: {integrity: sha512-zpKATdUbzbsycPFBN71nS2uzBUQiVnFoOrr2rvqv34S1lcAgMKKkjWleLGeiJlZ8lwCXvtWaRn7R3ZC16SYRuw==} peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-beta.0 peerDependenciesMeta: vite: optional: true - vitest@4.0.18: - resolution: {integrity: sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==} + vitest@4.1.0: + resolution: {integrity: sha512-YbDrMF9jM2Lqc++2530UourxZHmkKLxrs4+mYhEwqWS97WJ7wOYEkcr+QfRgJ3PW9wz3odRijLZjHEaRLTNbqw==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.18 - '@vitest/browser-preview': 4.0.18 - '@vitest/browser-webdriverio': 4.0.18 - '@vitest/ui': 4.0.18 + '@vitest/browser-playwright': 4.1.0 + '@vitest/browser-preview': 4.1.0 + '@vitest/browser-webdriverio': 4.1.0 + '@vitest/ui': 4.1.0 happy-dom: '*' jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0-0 peerDependenciesMeta: '@edge-runtime/vm': optional: true @@ -5493,30 +5590,19 @@ snapshots: '@babel/helper-validator-identifier@7.28.5': {} - '@babel/parser@7.28.6': - dependencies: - '@babel/types': 7.28.6 - '@babel/parser@7.29.2': dependencies: '@babel/types': 7.29.0 - optional: true '@babel/runtime@7.28.4': {} '@babel/runtime@7.28.6': optional: true - '@babel/types@7.28.6': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/types@7.29.0': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - optional: true '@bcoe/v8-coverage@1.0.2': {} @@ -6171,6 +6257,8 @@ snapshots: '@oxc-project/types@0.110.0': {} + '@oxc-project/types@0.120.0': {} + '@oxc-transform/binding-android-arm-eabi@0.111.0': optional: true @@ -6438,46 +6526,95 @@ snapshots: '@rolldown/binding-android-arm64@1.0.0-rc.1': optional: true + '@rolldown/binding-android-arm64@1.0.0-rc.10': + optional: true + '@rolldown/binding-darwin-arm64@1.0.0-rc.1': optional: true + '@rolldown/binding-darwin-arm64@1.0.0-rc.10': + optional: true + '@rolldown/binding-darwin-x64@1.0.0-rc.1': optional: true + '@rolldown/binding-darwin-x64@1.0.0-rc.10': + optional: true + '@rolldown/binding-freebsd-x64@1.0.0-rc.1': optional: true + '@rolldown/binding-freebsd-x64@1.0.0-rc.10': + optional: true + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.1': optional: true + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.10': + optional: true + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.1': optional: true + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.10': + optional: true + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.1': optional: true + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.10': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.10': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.10': + optional: true + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.1': optional: true + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.10': + optional: true + '@rolldown/binding-linux-x64-musl@1.0.0-rc.1': optional: true + '@rolldown/binding-linux-x64-musl@1.0.0-rc.10': + optional: true + '@rolldown/binding-openharmony-arm64@1.0.0-rc.1': optional: true + '@rolldown/binding-openharmony-arm64@1.0.0-rc.10': + optional: true + '@rolldown/binding-wasm32-wasi@1.0.0-rc.1': dependencies: '@napi-rs/wasm-runtime': 1.1.1 optional: true + '@rolldown/binding-wasm32-wasi@1.0.0-rc.10': + dependencies: + '@napi-rs/wasm-runtime': 1.1.1 + optional: true + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.1': optional: true + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.10': + optional: true + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.1': optional: true + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.10': + optional: true + '@rolldown/pluginutils@1.0.0-rc.1': {} + '@rolldown/pluginutils@1.0.0-rc.10': {} + '@rollup/plugin-node-resolve@15.3.1(rollup@4.53.4)': dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.53.4) @@ -6583,9 +6720,9 @@ snapshots: dependencies: acorn: 8.16.0 - '@sveltejs/adapter-vercel@6.3.3(@sveltejs/kit@2.55.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1)))(rollup@4.53.4)': + '@sveltejs/adapter-vercel@6.3.3(@sveltejs/kit@2.55.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)))(rollup@4.53.4)': dependencies: - '@sveltejs/kit': 2.55.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1)) + '@sveltejs/kit': 2.55.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)) '@vercel/nft': 1.3.2(rollup@4.53.4) esbuild: 0.25.12 transitivePeerDependencies: @@ -6593,11 +6730,11 @@ snapshots: - rollup - supports-color - '@sveltejs/kit@2.55.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1))': + '@sveltejs/kit@2.55.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1))': dependencies: '@standard-schema/spec': 1.1.0 '@sveltejs/acorn-typescript': 1.0.9(acorn@8.16.0) - '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1)) + '@sveltejs/vite-plugin-svelte': 7.0.0(svelte@5.54.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)) '@types/cookie': 0.6.0 acorn: 8.16.0 cookie: 0.6.0 @@ -6609,30 +6746,18 @@ snapshots: set-cookie-parser: 3.0.1 sirv: 3.0.2 svelte: 5.54.1 - vite: 7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1) optionalDependencies: typescript: 5.9.3 - '@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.54.1)(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1))': + '@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1))': dependencies: - '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1)) - debug: 4.4.3 - svelte: 5.54.1 - vite: 7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1) - transitivePeerDependencies: - - supports-color - - '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1))': - dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 5.0.1(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.54.1)(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1)) deepmerge: 4.3.1 magic-string: 0.30.21 obug: 2.1.1 svelte: 5.54.1 - vite: 7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1) - vitefu: 1.1.1(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1)) - transitivePeerDependencies: - - supports-color + vite: 8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1) + vitefu: 1.1.2(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)) '@svgdotjs/svg.draggable.js@3.0.6(@svgdotjs/svg.js@3.2.5)': dependencies: @@ -6723,13 +6848,12 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.2.2 '@tailwindcss/oxide-win32-x64-msvc': 4.2.2 - '@tailwindcss/postcss@4.2.2': + '@tailwindcss/vite@4.2.2(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1))': dependencies: - '@alloc/quick-lru': 5.2.0 '@tailwindcss/node': 4.2.2 '@tailwindcss/oxide': 4.2.2 - postcss: 8.5.8 tailwindcss: 4.2.2 + vite: 8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1) '@tanstack/react-virtual@3.13.12(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: @@ -6763,14 +6887,14 @@ snapshots: dependencies: svelte: 5.54.1 - '@testing-library/svelte@5.3.1(svelte@5.54.1)(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.18)': + '@testing-library/svelte@5.3.1(svelte@5.54.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.1.0)': dependencies: '@testing-library/dom': 10.4.1 '@testing-library/svelte-core': 1.0.0(svelte@5.54.1) svelte: 5.54.1 optionalDependencies: - vite: 7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1) - vitest: 4.0.18(@edge-runtime/vm@3.2.0)(@types/node@25.5.0)(@vitest/ui@4.0.18)(jiti@1.21.7)(jsdom@29.0.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.1.0(@edge-runtime/vm@3.2.0)(@types/node@25.5.0)(@vitest/ui@4.1.0)(jsdom@29.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)) '@tootallnate/once@2.0.0': {} @@ -7412,68 +7536,70 @@ snapshots: validator: 13.15.26 optional: true - '@vitest/coverage-v8@4.0.18(vitest@4.0.18)': + '@vitest/coverage-v8@4.1.0(vitest@4.1.0)': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.0.18 - ast-v8-to-istanbul: 0.3.10 + '@vitest/utils': 4.1.0 + ast-v8-to-istanbul: 1.0.0 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-reports: 3.2.0 - magicast: 0.5.1 + magicast: 0.5.2 obug: 2.1.1 - std-env: 3.10.0 + std-env: 4.0.0 tinyrainbow: 3.0.3 - vitest: 4.0.18(@edge-runtime/vm@3.2.0)(@types/node@25.5.0)(@vitest/ui@4.0.18)(jiti@1.21.7)(jsdom@29.0.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.1.0(@edge-runtime/vm@3.2.0)(@types/node@25.5.0)(@vitest/ui@4.1.0)(jsdom@29.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)) - '@vitest/expect@4.0.18': + '@vitest/expect@4.1.0': dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.0.18 - '@vitest/utils': 4.0.18 - chai: 6.2.1 + '@vitest/spy': 4.1.0 + '@vitest/utils': 4.1.0 + chai: 6.2.2 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.18(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1))': + '@vitest/mocker@4.1.0(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1))': dependencies: - '@vitest/spy': 4.0.18 + '@vitest/spy': 4.1.0 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1) - '@vitest/pretty-format@4.0.18': + '@vitest/pretty-format@4.1.0': dependencies: tinyrainbow: 3.0.3 - '@vitest/runner@4.0.18': + '@vitest/runner@4.1.0': dependencies: - '@vitest/utils': 4.0.18 + '@vitest/utils': 4.1.0 pathe: 2.0.3 - '@vitest/snapshot@4.0.18': + '@vitest/snapshot@4.1.0': dependencies: - '@vitest/pretty-format': 4.0.18 + '@vitest/pretty-format': 4.1.0 + '@vitest/utils': 4.1.0 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.0.18': {} + '@vitest/spy@4.1.0': {} - '@vitest/ui@4.0.18(vitest@4.0.18)': + '@vitest/ui@4.1.0(vitest@4.1.0)': dependencies: - '@vitest/utils': 4.0.18 + '@vitest/utils': 4.1.0 fflate: 0.8.2 - flatted: 3.3.3 + flatted: 3.4.0 pathe: 2.0.3 sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vitest: 4.0.18(@edge-runtime/vm@3.2.0)(@types/node@25.5.0)(@vitest/ui@4.0.18)(jiti@1.21.7)(jsdom@29.0.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.1.0(@edge-runtime/vm@3.2.0)(@types/node@25.5.0)(@vitest/ui@4.1.0)(jsdom@29.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)) - '@vitest/utils@4.0.18': + '@vitest/utils@4.1.0': dependencies: - '@vitest/pretty-format': 4.0.18 + '@vitest/pretty-format': 4.1.0 + convert-source-map: 2.0.0 tinyrainbow: 3.0.3 '@yr/monotone-cubic-spline@1.0.3': {} @@ -7617,11 +7743,11 @@ snapshots: dependencies: tslib: 2.8.1 - ast-v8-to-istanbul@0.3.10: + ast-v8-to-istanbul@1.0.0: dependencies: '@jridgewell/trace-mapping': 0.3.31 estree-walker: 3.0.3 - js-tokens: 9.0.1 + js-tokens: 10.0.0 async-listen@1.2.0: {} @@ -7750,7 +7876,7 @@ snapshots: camelcase@8.0.0: optional: true - chai@6.2.1: {} + chai@6.2.2: {} chalk@2.4.2: dependencies: @@ -7894,6 +8020,8 @@ snapshots: convert-hrtime@3.0.0: {} + convert-source-map@2.0.0: {} + cookie-es@2.0.0: {} cookie@0.6.0: {} @@ -8263,7 +8391,7 @@ snapshots: es-module-lexer@1.4.1: {} - es-module-lexer@1.7.0: {} + es-module-lexer@2.0.0: {} es-object-atoms@1.1.1: dependencies: @@ -8536,7 +8664,7 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - expect-type@1.2.2: {} + expect-type@1.3.0: {} expect@30.2.0: dependencies: @@ -8625,6 +8753,8 @@ snapshots: flatted@3.3.3: {} + flatted@3.4.0: {} + flowbite-datepicker@1.3.2(rollup@4.53.4): dependencies: '@rollup/plugin-node-resolve': 15.3.1(rollup@4.53.4) @@ -8974,9 +9104,9 @@ snapshots: optionalDependencies: react: 19.2.0 - js-tokens@4.0.0: {} + js-tokens@10.0.0: {} - js-tokens@9.0.1: {} + js-tokens@4.0.0: {} js-yaml@4.1.1: dependencies: @@ -9216,10 +9346,10 @@ snapshots: source-map-js: 1.2.1 optional: true - magicast@0.5.1: + magicast@0.5.2: dependencies: - '@babel/parser': 7.28.6 - '@babel/types': 7.28.6 + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 source-map-js: 1.2.1 make-dir@4.0.0: @@ -9903,6 +10033,27 @@ snapshots: '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.1 '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.1 + rolldown@1.0.0-rc.10: + dependencies: + '@oxc-project/types': 0.120.0 + '@rolldown/pluginutils': 1.0.0-rc.10 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.0-rc.10 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.10 + '@rolldown/binding-darwin-x64': 1.0.0-rc.10 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.10 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.10 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.10 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.10 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.10 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.10 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.10 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.10 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.10 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.10 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.10 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.10 + rollup@4.53.4: dependencies: '@types/estree': 1.0.8 @@ -9930,6 +10081,7 @@ snapshots: '@rollup/rollup-win32-x64-gnu': 4.53.4 '@rollup/rollup-win32-x64-msvc': 4.53.4 fsevents: 2.3.3 + optional: true roughjs@4.6.6: dependencies: @@ -10043,7 +10195,7 @@ snapshots: statuses@1.5.0: {} - std-env@3.10.0: {} + std-env@4.0.0: {} stream-to-array@2.3.0: dependencies: @@ -10169,9 +10321,9 @@ snapshots: magic-string: 0.30.21 zimmerframe: 1.1.4 - sveltekit-superforms@2.30.0(@sveltejs/kit@2.55.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1)))(@types/json-schema@7.0.15)(svelte@5.54.1)(typescript@5.9.3): + sveltekit-superforms@2.30.0(@sveltejs/kit@2.55.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)))(@types/json-schema@7.0.15)(svelte@5.54.1)(typescript@5.9.3): dependencies: - '@sveltejs/kit': 2.55.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1)) + '@sveltejs/kit': 2.55.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.54.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)) devalue: 5.6.3 memoize-weak: 1.0.2 svelte: 5.54.1 @@ -10331,8 +10483,6 @@ snapshots: tinyexec@0.3.2: {} - tinyexec@1.0.2: {} - tinyexec@1.0.4: {} tinyglobby@0.2.15: @@ -10526,65 +10676,54 @@ snapshots: - supports-color - typescript - vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1): + vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1): dependencies: - esbuild: 0.27.1 - fdir: 6.5.0(picomatch@4.0.3) + lightningcss: 1.32.0 picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.53.4 + postcss: 8.5.8 + rolldown: 1.0.0-rc.10 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 25.5.0 + esbuild: 0.27.1 fsevents: 2.3.3 jiti: 1.21.7 - lightningcss: 1.32.0 tsx: 4.21.0 yaml: 2.8.1 - vitefu@1.1.1(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1)): + vitefu@1.1.2(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)): optionalDependencies: - vite: 7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1) - - vitest@4.0.18(@edge-runtime/vm@3.2.0)(@types/node@25.5.0)(@vitest/ui@4.0.18)(jiti@1.21.7)(jsdom@29.0.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1): - dependencies: - '@vitest/expect': 4.0.18 - '@vitest/mocker': 4.0.18(vite@7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1)) - '@vitest/pretty-format': 4.0.18 - '@vitest/runner': 4.0.18 - '@vitest/snapshot': 4.0.18 - '@vitest/spy': 4.0.18 - '@vitest/utils': 4.0.18 - es-module-lexer: 1.7.0 - expect-type: 1.2.2 + vite: 8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1) + + vitest@4.1.0(@edge-runtime/vm@3.2.0)(@types/node@25.5.0)(@vitest/ui@4.1.0)(jsdom@29.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)): + dependencies: + '@vitest/expect': 4.1.0 + '@vitest/mocker': 4.1.0(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)) + '@vitest/pretty-format': 4.1.0 + '@vitest/runner': 4.1.0 + '@vitest/snapshot': 4.1.0 + '@vitest/spy': 4.1.0 + '@vitest/utils': 4.1.0 + es-module-lexer: 2.0.0 + expect-type: 1.3.0 magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 picomatch: 4.0.3 - std-env: 3.10.0 + std-env: 4.0.0 tinybench: 2.9.0 - tinyexec: 1.0.2 + tinyexec: 1.0.4 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.1(@types/node@25.5.0)(jiti@1.21.7)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 8.0.1(@types/node@25.5.0)(esbuild@0.27.1)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@edge-runtime/vm': 3.2.0 '@types/node': 25.5.0 - '@vitest/ui': 4.0.18(vitest@4.0.18) + '@vitest/ui': 4.1.0(vitest@4.1.0) jsdom: 29.0.1 transitivePeerDependencies: - - jiti - - less - - lightningcss - msw - - sass - - sass-embedded - - stylus - - sugarss - - terser - - tsx - - yaml vscode-jsonrpc@8.2.0: {} diff --git a/postcss.config.mjs b/postcss.config.mjs index a34a3d560..3e0d24c43 100644 --- a/postcss.config.mjs +++ b/postcss.config.mjs @@ -1,5 +1,3 @@ export default { - plugins: { - '@tailwindcss/postcss': {}, - }, + plugins: {}, }; diff --git a/vite.config.ts b/vite.config.ts index 4eff0b546..b8b455a29 100755 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,8 +1,9 @@ +import tailwindcss from '@tailwindcss/vite'; import { sveltekit } from '@sveltejs/kit/vite'; import { defineConfig } from 'vitest/config'; export default defineConfig({ - plugins: [sveltekit()], + plugins: [tailwindcss(), sveltekit()], optimizeDeps: { exclude: ['@prisma/client', '@lucia-auth/adapter-prisma'], }, From f8ceb47e27fe4581f6612c5009ad6cbb3fd6f316 Mon Sep 17 00:00:00 2001 From: Kato Hiroki Date: Mon, 23 Mar 2026 12:12:19 +0000 Subject: [PATCH 3/3] docs: Remove vite upgrade plan after implementation complete Co-Authored-By: Claude Sonnet 4.6 --- .../dev-notes/2026-03-23/vite-upgrade/plan.md | 171 ------------------ 1 file changed, 171 deletions(-) delete mode 100644 docs/dev-notes/2026-03-23/vite-upgrade/plan.md diff --git a/docs/dev-notes/2026-03-23/vite-upgrade/plan.md b/docs/dev-notes/2026-03-23/vite-upgrade/plan.md deleted file mode 100644 index 7602b2ea6..000000000 --- a/docs/dev-notes/2026-03-23/vite-upgrade/plan.md +++ /dev/null @@ -1,171 +0,0 @@ -# Vite 7 → 8 アップグレード計画 - -## 概要 - -`vite` を 7.3.1 から 8.0.1 へアップグレードする。 -Vite 8 は esbuild/Rollup を Rolldown/Oxc に置き換える大型メジャーバージョン。 - -コンパニオンパッケージも合わせてアップグレード対象: - -| パッケージ | 現行バージョン | 目標バージョン | 理由 | -| ------------------------------ | -------------- | -------------- | ------------------------------------- | -| `vite` | 7.3.1 | 8.0.1 | 主対象 | -| `@sveltejs/vite-plugin-svelte` | 6.2.4 | 7.0.0 | v7 が Vite 8 を peerDep として要求 | -| `vitest` | 4.0.18 | 4.1.0 | 4.1.0 で `^8.0.0-0` を peerDep に追加 | -| `@vitest/coverage-v8` | 4.0.18 | 4.1.0 | vitest と同一バージョンを維持 | -| `@vitest/ui` | 4.0.18 | 4.1.0 | vitest と同一バージョンを維持 | -| `@sveltejs/kit` | 2.55.0 | 変更なし | v2.53.0 で既に Vite 8 対応済み | - ---- - -## 背景:なぜ Rolldown/Oxc に移行するのか - -### dev/prod の分裂問題 - -Vite 7 以前は dev と prod で異なるバンドラーを使っていた: - -``` -dev サーバー → esbuild(Go製):高速だが Rollup と動作が異なる -本番ビルド → Rollup(JS製):バンドル品質は高いが遅い -``` - -2 つの異なるバンドラーが同居していたため「dev では動くが prod でクラッシュ」という再現困難なバグが構造的に発生していた。Vite 8 はこれを **Rolldown で一本化**することで解消する。 - -### VoidZero エコシステム - -Rolldown と Oxc はどちらも **VoidZero**(Evan You が設立)が開発している Rust 製ツールチェーン: - -``` -VoidZero -├── Oxc — JS ツールチェーンのコア(パーサー・トランスパイラー・ミニファイアー・oxlint・oxfmt) -├── Rolldown — Oxc の上に乗る Rust 製バンドラー(Rollup 後継) -└── Vite — Rolldown + Oxc transformer/minifier を dev/prod 両方で採用 -``` - -oxlint(ESLint 互換リンター)や oxfmt(フォーマッター)も同じ Oxc モノレポに属し、**同一のパーサーと AST を共有**している。Vite 8 に乗ることは「Oxc エコシステムの土台に立つ」ことを意味し、各ツールは独立して・好きなタイミングで追加移行できる。 - -### エコシステム一元化のメリット・デメリット - -**メリット** - -| 項目 | 内容 | -| ------------------- | --------------------------------------------------------------------------- | -| dev/prod の動作一致 | 同一バンドラー(Rolldown)を使うことで prod 限定バグが原理的になくなる | -| 一貫した高速化 | 全ツールが Rust 製。ビルド・lint・フォーマットがまとめて速くなる | -| 段階移行が可能 | oxlint・oxfmt は ESLint/Prettier と互換性を持たせた設計で、一括移行不要 | -| 統一されたコア | 全ツールが同じ AST を共有するため、パース結果のずれによる不整合が起きにくい | - -**デメリット・リスク** - -| 項目 | 内容 | -| ---------------------- | ----------------------------------------------------------------------------------------------------- | -| 単一障害点 | VoidZero 1 社への依存度が高まる。組織・方針変更の影響を受けやすい | -| 成熟度 | Rolldown/Oxc はまだ新しく、Rollup/esbuild に比べてエッジケースのバグが潜在する可能性がある | -| プラグインエコシステム | Rollup プラグインの一部は Rolldown で未対応(本プロジェクトはカスタムプラグイン未使用のため影響なし) | -| ロックイン | 将来 Oxc スタックで標準化するほど、他のツールチェーンへの乗り換えコストが上がる | - ---- - -## 破壊的変更の影響調査結果 - -### 問題なし(対応不要) - -| 確認項目 | 根拠 | -| ------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| ブラウザターゲット引き上げ (Chrome 111 / Firefox 114 / Safari 16.4) | AtCoder ユーザー向けで最新ブラウザ前提。影響なし | -| `optimizeDeps.esbuildOptions` → `rolldownOptions` | `vite.config.ts` で `esbuildOptions` 未使用。`optimizeDeps.exclude` のみ使用 | -| `esbuild` config → `oxc` | `vite.config.ts` に `esbuild` オプション未使用 | -| `build.rollupOptions` → `build.rolldownOptions` | `vite.config.ts` で `build.rollupOptions` 未使用 | -| `import.meta.hot.accept()` URL引数削除 | `src/` 全体に `import.meta.hot` 使用なし (grep 確認済み) | -| `transformWithEsbuild` deprecation | `src/` 内で未使用 | -| `parseAst`/`parseAstAsync` → `parseSync`/`parse` | 未使用 | -| `format: 'system'`/`'amd'` 削除 | 未使用 | -| `manualChunks` オブジェクト形式削除 | 未使用 | -| `build.rollupOptions.watch.chokidar` 削除 | 未使用 | -| Parallel plugin hooks → sequential | カスタム Vite プラグイン未作成 | -| `build.commonjsOptions` no-op | 未使用 | - -### 要対応 - -| 項目 | 内容 | リスク | -| ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ | -| CJS Interop 挙動変更 | `"type": "module"` プロジェクトでは CJS モジュールの default import が strict になる。`@prisma/client` 等は `optimizeDeps.exclude` 設定済みだが、`pnpm build` で実際の動作を確認する必要がある | Low | -| `@sveltejs/vite-plugin-svelte` 6→7 メジャーバンプ | svelte 5 を peerDep として要求 (`^5.46.4`)。現行は 5.54.1 なので問題なし。その他の breaking changes は `pnpm check` と `pnpm test:unit` で検出する | Low | - ---- - -## 設計方針 - -- コンパニオンパッケージ 5 本を 1 コミットで一括アップグレードする(バージョン不整合を防ぐため) -- `vite.config.ts` の変更は不要(esbuildOptions/rollupOptions いずれも未使用) -- CJS Interop は `pnpm build` でビルド成果物を確認することで検証する - ---- - -## 却下した代替案 - -- `vite` のみアップグレードして `@sveltejs/vite-plugin-svelte` は据え置く → `^7.0.0 || ^8.0.0` の peerDep 範囲を超えるため不可 -- `vitest` を 4.0.18 のままにする → peerDep が `^6.0.0 || ^7.0.0` で Vite 8 非対応のため不可 - ---- - -## 便利な新機能(採用検討) - -| 機能 | 説明 | 推奨度 | -| --------------------- | --------------------------------------------------------------------- | ----------------------- | -| Rolldown + Oxc ビルド | esbuild/Rollup を置き換え。設定変更なしで自動的に高速化 | High(自動適用) | -| Lightning CSS | CSS ミニファイが esbuild から Lightning CSS に変更。設定なしで適用 | High(自動適用) | -| `oxc` 設定オプション | JSX や decorator 等の変換設定を `esbuild` の代わりに `oxc` で指定可能 | Low(現時点で設定不要) | - ---- - -## 実装フェーズ - -- [x] Phase 1: `package.json` の対象パッケージバージョンを更新する -- [x] Phase 2: `pnpm install` でロックファイルを更新する -- [x] Phase 3: `pnpm lint` を実行して ESLint エラーがないことを確認する -- [x] Phase 4: `pnpm check` を実行して型エラーがないことを確認する(pre-existing 2 errors・差分なし) -- [x] Phase 5: `pnpm test:unit` を実行してテストが全通過することを確認する(45 files, 1954 passed) -- [x] Phase 6: `pnpm build` を実行して CJS Interop 問題がないことを確認する -- [x] Phase 7: `@tailwindcss/postcss` → `@tailwindcss/vite` へ移行してビルドを通す - -### Phase 7 補足 - -`pnpm build` 実行時に以下のエラーが発生: - -``` -Error: [postcss] ENOENT: no such file or directory, open '/usr/src/app/tailwindcss' -``` - -Rolldown が CSS の `@import 'tailwindcss'` をファイルパスとして解決しようとするため発生する。 -公式ドキュメントに従い、PostCSS 経由の統合から Vite プラグイン経由の統合へ切り替える。 - -**出典:** - -- https://tailwindcss.com/docs/installation/using-vite — "preferred approach over PostCSS for Vite projects" -- https://tailwindcss.com/docs/installation/framework-guides/sveltekit — "For v4, `@tailwindcss/vite` is used instead of `@tailwindcss/postcss`" - -**変更内容:** -| ファイル | 変更内容 | -| --- | --- | -| `package.json` | `@tailwindcss/postcss` を削除 → `@tailwindcss/vite` を追加 | -| `vite.config.ts` | `tailwindcss()` プラグインを追加 | -| `postcss.config.mjs` | `@tailwindcss/postcss` エントリを削除(ファイルを空にする) | - ---- - -## 注意事項:バンドルサイズの増加 - -Vite 7 → 8 のアップグレードにより、クライアントバンドルのサイズが増加している。 - -| | Vite 7 | Vite 8 | 差分 | -| --------------- | ----------------------- | ------------------------ | --------------------- | -| 最大 JS chunk | 345.7 kB / 91.9 kB gzip | 637.8 kB / 162.4 kB gzip | +70.5 kB gzip | -| CSS | 300.1 kB / 37.6 kB gzip | 290.4 kB / 37.1 kB gzip | ほぼ同じ | -| **合計 (gzip)** | **332.1 kB** | **407.4 kB** | **+75.3 kB (+22.7%)** | - -**原因**: Rolldown の chunk splitting アルゴリズムが Rollup と異なるため。Vite 8.x の成熟とともに改善が期待される。 - -**判断**: 許容する。Rolldown が安定するにつれ自然に解消される可能性が高く、dev/prod 動作一致などのメリットが上回る。 - ----