diff --git a/.github/workflows/deps-check.yaml b/.github/workflows/deps-check.yaml index c64d8ff57..394c034c0 100644 --- a/.github/workflows/deps-check.yaml +++ b/.github/workflows/deps-check.yaml @@ -34,6 +34,7 @@ jobs: outputs: has_major_updates: ${{ steps.check.outputs.has_major_updates }} major_packages: ${{ steps.check.outputs.major_packages }} + has_pr_changes: ${{ steps.pending.outputs.has_changes }} steps: - name: Checkout Code @@ -67,11 +68,11 @@ jobs: run: | cd packages/template-generator - # Scheduled runs should auto-open PRs with safe updates by default. + # Scheduled runs should keep dependency update PRs aligned with the newest stable versions. EFFECTIVE_UPDATE_MODE="${{ inputs.update_mode }}" if [ -z "$EFFECTIVE_UPDATE_MODE" ]; then if [ "${{ github.event_name }}" = "schedule" ]; then - EFFECTIVE_UPDATE_MODE="patch-minor" + EFFECTIVE_UPDATE_MODE="all" else EFFECTIVE_UPDATE_MODE="check-only" fi @@ -99,17 +100,10 @@ jobs: echo "major_packages=" >> "$GITHUB_OUTPUT" fi - # Store the report - { - echo 'report<> "$GITHUB_OUTPUT" - - name: Display Report run: | echo "## Dependency Check Report" - echo "${{ steps.check.outputs.report }}" + cat packages/deps-report.md - name: Apply Updates (if requested) if: steps.check.outputs.effective_update_mode == 'patch-minor' || steps.check.outputs.effective_update_mode == 'all' @@ -122,12 +116,52 @@ jobs: bun run scripts/check-deps.ts --apply-all || true fi + - name: Sync Templates And Verification Artifacts + if: steps.check.outputs.effective_update_mode == 'patch-minor' || steps.check.outputs.effective_update_mode == 'all' + run: | + bun run --cwd packages/template-generator sync-versions:fix + bun run --cwd packages/template-generator sync-versions + bun run --cwd packages/types build + bun run --cwd packages/template-generator build + bun test apps/cli/test/template-snapshots.test.ts -u + bun test apps/cli/test/cli-builder-sync.test.ts + bun test apps/web/test/preview-config.test.ts + + - name: Regenerate Dependency Report + if: steps.check.outputs.effective_update_mode == 'patch-minor' || steps.check.outputs.effective_update_mode == 'all' + run: | + cd packages/template-generator + + if [ -n "${{ inputs.ecosystem }}" ]; then + bun run scripts/check-deps.ts --markdown --ecosystem "${{ inputs.ecosystem }}" > ../deps-report.md || true + else + bun run scripts/check-deps.ts --markdown > ../deps-report.md || true + fi + + - name: Determine Pending Changes + id: pending + run: | + if git diff --quiet; then + echo "has_changes=false" >> "$GITHUB_OUTPUT" + else + echo "has_changes=true" >> "$GITHUB_OUTPUT" + fi + + - name: Capture Final Report + id: final-report + run: | + { + echo 'report<> "$GITHUB_OUTPUT" + - name: Disable Git Hooks For Automation Commit - if: steps.check.outputs.has_updates == 'true' && (steps.check.outputs.effective_update_mode == 'patch-minor' || steps.check.outputs.effective_update_mode == 'all') + if: steps.pending.outputs.has_changes == 'true' && (steps.check.outputs.effective_update_mode == 'patch-minor' || steps.check.outputs.effective_update_mode == 'all') run: git config core.hooksPath /dev/null - name: Create Pull Request - if: steps.check.outputs.has_updates == 'true' && (steps.check.outputs.effective_update_mode == 'patch-minor' || steps.check.outputs.effective_update_mode == 'all') + if: steps.pending.outputs.has_changes == 'true' && (steps.check.outputs.effective_update_mode == 'patch-minor' || steps.check.outputs.effective_update_mode == 'all') uses: peter-evans/create-pull-request@v6 with: token: ${{ secrets.GITHUB_TOKEN }} @@ -140,9 +174,10 @@ jobs: - Mode: `${{ steps.check.outputs.effective_update_mode }}` - Downgrades detected in check report: `${{ steps.check.outputs.downgrade_count }}` - - Note: `patch-minor` mode only applies patch/minor changes; downgrades/major updates remain for manual review. + - Note: Template versions, snapshots, and the dependency report were regenerated after applying updates. + - Note: `all` mode includes major-version changes; the major dependency smoke test runs automatically when majors are detected. - ${{ steps.check.outputs.report }} + ${{ steps.final-report.outputs.report }} ### Review Checklist - [ ] Review the version changes @@ -170,13 +205,13 @@ jobs: echo "" >> $GITHUB_STEP_SUMMARY echo "### Report" >> $GITHUB_STEP_SUMMARY echo '```' >> $GITHUB_STEP_SUMMARY - echo "${{ steps.check.outputs.report }}" >> $GITHUB_STEP_SUMMARY + echo "${{ steps.final-report.outputs.report }}" >> $GITHUB_STEP_SUMMARY echo '```' >> $GITHUB_STEP_SUMMARY major-deps-smoke: name: Major Deps Smoke Test needs: check-versions - if: needs.check-versions.outputs.has_major_updates == 'true' + if: needs.check-versions.outputs.has_major_updates == 'true' && needs.check-versions.outputs.has_pr_changes == 'true' runs-on: ubuntu-latest timeout-minutes: 45 permissions: @@ -229,7 +264,6 @@ jobs: --dev-check \ --route-check \ --output testing/.smoke-output - continue-on-error: true - name: Post Step Summary if: always() diff --git a/apps/cli/test/__snapshots__/template-snapshots.test.ts.snap b/apps/cli/test/__snapshots__/template-snapshots.test.ts.snap index a4695bd54..6d1b99a34 100644 --- a/apps/cli/test/__snapshots__/template-snapshots.test.ts.snap +++ b/apps/cli/test/__snapshots__/template-snapshots.test.ts.snap @@ -747,7 +747,7 @@ exports[`Template Snapshots Key File Content Snapshots key files: tanstack-route }, "devDependencies": { "typescript": "catalog:", - "tsdown": "^0.16.5", + "tsdown": "^0.21.7", "@snapshot-tanstack-router-minimal/config": "workspace:*", "@types/bun": "catalog:" } @@ -851,11 +851,11 @@ export default app; "clsx": "^2.1.1", "next-themes": "^0.4.6", "sonner": "^2.0.7", - "tailwind-merge": "^3.3.1", - "@tailwindcss/vite": "^4.2.1", - "tw-animate-css": "^1.2.5", - "@tanstack/react-router": "^1.167.4", - "react": "^19.2.3", + "tailwind-merge": "^3.5.0", + "@tailwindcss/vite": "^4.2.2", + "tw-animate-css": "^1.4.0", + "@tanstack/react-router": "^1.168.8", + "react": "^19.2.4", "react-dom": "^19.2.3", "dotenv": "catalog:", "zod": "catalog:", @@ -863,26 +863,26 @@ export default app; "@snapshot-tanstack-router-minimal/api": "workspace:*", "@libsql/client": "catalog:", "libsql": "catalog:", - "@trpc/tanstack-react-query": "^11.13.4", + "@trpc/tanstack-react-query": "^11.16.0", "@trpc/client": "catalog:", "@trpc/server": "catalog:", - "@tanstack/react-query": "^5.90.21", - "lucide-react": "^0.577.0" + "@tanstack/react-query": "^5.95.2", + "lucide-react": "^1.7.0" }, "devDependencies": { - "@tanstack/react-router-devtools": "^1.166.9", - "@tanstack/router-cli": "^1.154.3", - "@tanstack/router-plugin": "^1.166.13", - "@types/node": "^22.13.14", - "@types/react": "19.2.7", + "@tanstack/react-router-devtools": "^1.166.11", + "@tanstack/router-cli": "^1.166.23", + "@tanstack/router-plugin": "^1.167.9", + "@types/node": "^25.5.0", + "@types/react": "^19.2.14", "@types/react-dom": "19.2.3", - "@vitejs/plugin-react": "^4.3.4", + "@vitejs/plugin-react": "^6.0.1", "postcss": "^8.5.8", - "tailwindcss": "^4.2.1", - "vite": "^6.2.2", + "tailwindcss": "^4.2.2", + "vite": "^8.0.3", "typescript": "catalog:", "@snapshot-tanstack-router-minimal/config": "workspace:*", - "@tanstack/react-query-devtools": "^5.91.3" + "@tanstack/react-query-devtools": "^5.95.2" } } " @@ -1153,15 +1153,15 @@ export default defineConfig({ "packages/*" ], "catalog": { - "dotenv": "^17.2.2", - "zod": "^4.1.13", - "typescript": "^5", - "@types/bun": "^1.3.10", - "hono": "^4.8.2", - "@trpc/server": "^11.13.4", - "@libsql/client": "^0.17.0", - "libsql": "0.5.22", - "@trpc/client": "^11.13.4" + "dotenv": "^17.3.1", + "zod": "^4.3.6", + "typescript": "^6.0.2", + "@types/bun": "^1.3.11", + "hono": "^4.12.9", + "@trpc/server": "^11.16.0", + "@libsql/client": "^0.17.2", + "libsql": "^0.5.29", + "@trpc/client": "^11.16.0" } }, "scripts": { @@ -1367,7 +1367,7 @@ export default defineConfig({ "dotenv": "catalog:", "zod": "catalog:", "@snapshot-tanstack-router-minimal/env": "workspace:*", - "drizzle-orm": "^0.45.1", + "drizzle-orm": "^0.45.2", "@libsql/client": "catalog:", "libsql": "catalog:" } @@ -1426,7 +1426,7 @@ export const db = drizzle({ client, schema }); "dependencies": { "dotenv": "catalog:", "zod": "catalog:", - "@t3-oss/env-core": "^0.13.10" + "@t3-oss/env-core": "^0.13.11" }, "devDependencies": { "typescript": "catalog:", @@ -1521,10 +1521,10 @@ export default nextConfig; "clsx": "^2.1.1", "next-themes": "^0.4.6", "sonner": "^2.0.7", - "tailwind-merge": "^3.3.1", - "tw-animate-css": "^1.3.4", + "tailwind-merge": "^3.5.0", + "tw-animate-css": "^1.4.0", "next": "catalog:", - "react": "^19.2.3", + "react": "^19.2.4", "react-dom": "^19.2.3", "babel-plugin-react-compiler": "^1.0.0", "dotenv": "catalog:", @@ -1534,21 +1534,21 @@ export default nextConfig; "@snapshot-next-self-fullstack/auth": "workspace:*", "@trpc/server": "catalog:", "@trpc/client": "catalog:", - "@trpc/tanstack-react-query": "^11.13.4", - "@tanstack/react-query": "^5.90.21", + "@trpc/tanstack-react-query": "^11.16.0", + "@tanstack/react-query": "^5.95.2", "better-auth": "catalog:", - "@tanstack/react-form": "^1.28.5", - "lucide-react": "^0.577.0" + "@tanstack/react-form": "^1.28.6", + "lucide-react": "^1.7.0" }, "devDependencies": { - "@tailwindcss/postcss": "^4.2.1", - "tailwindcss": "^4.2.1", - "@types/node": "^20", - "@types/react": "^19.2.7", + "@tailwindcss/postcss": "^4.2.2", + "tailwindcss": "^4.2.2", + "@types/node": "^25.5.0", + "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", - "typescript": "catalog:", + "typescript": "^5", "@snapshot-next-self-fullstack/config": "workspace:*", - "@tanstack/react-query-devtools": "^5.91.3" + "@tanstack/react-query-devtools": "^5.95.2" } } " @@ -1764,14 +1764,13 @@ export const trpc = createTRPCOptionsProxy({ "packages/*" ], "catalog": { - "dotenv": "^17.2.2", - "zod": "^4.1.13", - "typescript": "^5", - "@types/bun": "^1.3.10", - "next": "^16.1.1", - "@trpc/server": "^11.13.4", - "@trpc/client": "^11.13.4", - "better-auth": "^1.5.5" + "dotenv": "^17.3.1", + "zod": "^4.3.6", + "@types/bun": "^1.3.11", + "next": "^16.2.1", + "@trpc/server": "^11.16.0", + "@trpc/client": "^11.16.0", + "better-auth": "^1.5.6" } }, "scripts": { @@ -1792,7 +1791,7 @@ export const trpc = createTRPCOptionsProxy({ "@snapshot-next-self-fullstack/env": "workspace:*" }, "devDependencies": { - "typescript": "catalog:", + "typescript": "^6.0.2", "@types/bun": "catalog:", "@snapshot-next-self-fullstack/config": "workspace:*" } @@ -1816,7 +1815,7 @@ export const trpc = createTRPCOptionsProxy({ "type": "module", "scripts": {}, "devDependencies": { - "typescript": "catalog:", + "typescript": "^6.0.2", "@snapshot-next-self-fullstack/config": "workspace:*" }, "dependencies": { @@ -1923,7 +1922,7 @@ export type AppRouter = typeof appRouter; "type": "module", "scripts": {}, "devDependencies": { - "typescript": "catalog:", + "typescript": "^6.0.2", "@snapshot-next-self-fullstack/config": "workspace:*" }, "dependencies": { @@ -1932,7 +1931,7 @@ export type AppRouter = typeof appRouter; "@snapshot-next-self-fullstack/env": "workspace:*", "@snapshot-next-self-fullstack/db": "workspace:*", "better-auth": "catalog:", - "@better-auth/drizzle-adapter": "^1.5.5" + "@better-auth/drizzle-adapter": "^1.5.6" } } " @@ -2071,17 +2070,17 @@ export default defineConfig({ "db:migrate": "drizzle-kit migrate" }, "devDependencies": { - "typescript": "catalog:", + "typescript": "^6.0.2", "@snapshot-next-self-fullstack/config": "workspace:*", "drizzle-kit": "^0.31.10", - "@types/pg": "^8.18.0" + "@types/pg": "^8.20.0" }, "dependencies": { "dotenv": "catalog:", "zod": "catalog:", "@snapshot-next-self-fullstack/env": "workspace:*", - "drizzle-orm": "^0.45.1", - "pg": "^8.16.3" + "drizzle-orm": "^0.45.2", + "pg": "^8.20.0" } } " @@ -2236,11 +2235,11 @@ export {};" "dependencies": { "dotenv": "catalog:", "zod": "catalog:", - "@t3-oss/env-nextjs": "^0.13.10", - "@t3-oss/env-core": "^0.13.10" + "@t3-oss/env-nextjs": "^0.13.11", + "@t3-oss/env-core": "^0.13.11" }, "devDependencies": { - "typescript": "catalog:", + "typescript": "^6.0.2", "@types/bun": "catalog:", "@snapshot-next-self-fullstack/config": "workspace:*" } @@ -2317,8 +2316,8 @@ exports[`Template Snapshots Key File Content Snapshots key files: astro-react-in "astro": "astro" }, "dependencies": { - "astro": "^5.7.10", - "@astrojs/node": "^9.1.3", + "astro": "^6.1.1", + "@astrojs/node": "^10.0.4", "dotenv": "catalog:", "zod": "catalog:", "@snapshot-astro-react-integration/env": "workspace:*", @@ -2327,8 +2326,8 @@ exports[`Template Snapshots Key File Content Snapshots key files: astro-react-in "libsql": "catalog:" }, "devDependencies": { - "@tailwindcss/vite": "^4.2.1", - "tailwindcss": "^4.2.1", + "@tailwindcss/vite": "^4.2.2", + "tailwindcss": "^4.2.2", "typescript": "catalog:", "@snapshot-astro-react-integration/config": "workspace:*" } @@ -2409,12 +2408,12 @@ export const client = createORPCClient(link); "packages/*" ], "catalog": { - "dotenv": "^17.2.2", - "zod": "^4.1.13", - "typescript": "^5", - "@types/bun": "^1.3.10", - "@libsql/client": "^0.17.0", - "libsql": "0.5.22" + "dotenv": "^17.3.1", + "zod": "^4.3.6", + "typescript": "^6.0.2", + "@types/bun": "^1.3.11", + "@libsql/client": "^0.17.2", + "libsql": "^0.5.29" } }, "scripts": { @@ -2468,10 +2467,10 @@ export const client = createORPCClient(link); "zod": "catalog:", "@snapshot-astro-react-integration/env": "workspace:*", "@snapshot-astro-react-integration/db": "workspace:*", - "@orpc/server": "^1.13.7", - "@orpc/client": "^1.13.7", - "@orpc/openapi": "^1.13.7", - "@orpc/zod": "^1.13.7" + "@orpc/server": "^1.13.13", + "@orpc/client": "^1.13.13", + "@orpc/openapi": "^1.13.13", + "@orpc/zod": "^1.13.13" } } " @@ -2617,7 +2616,7 @@ export default defineConfig({ "dotenv": "catalog:", "zod": "catalog:", "@snapshot-astro-react-integration/env": "workspace:*", - "drizzle-orm": "^0.45.1", + "drizzle-orm": "^0.45.2", "@libsql/client": "catalog:", "libsql": "catalog:" } @@ -2675,7 +2674,7 @@ export const db = drizzle({ client, schema }); "dependencies": { "dotenv": "catalog:", "zod": "catalog:", - "@t3-oss/env-core": "^0.13.10" + "@t3-oss/env-core": "^0.13.11" }, "devDependencies": { "typescript": "catalog:", @@ -2831,12 +2830,12 @@ export default defineNuxtConfig({ "postinstall": "nuxt prepare" }, "dependencies": { - "@nuxt/ui": "^4.5.1", + "@nuxt/ui": "^4.6.0", "@nuxt/content": "^3.12.0", - "@nuxtjs/mdc": "^0.20.2", + "@nuxtjs/mdc": "^0.21.0", "nuxt": "^4.4.2", - "vue": "^3.5.30", - "vue-router": "^4.5.1", + "vue": "^3.5.31", + "vue-router": "^5.0.4", "dotenv": "catalog:", "zod": "catalog:", "@snapshot-nuxt-standalone/env": "workspace:*", @@ -2847,15 +2846,15 @@ export default defineNuxtConfig({ "@orpc/client": "catalog:", "@orpc/openapi": "catalog:", "@orpc/zod": "catalog:", - "@tanstack/vue-query": "^5.92.9", - "@orpc/tanstack-query": "^1.13.7" + "@tanstack/vue-query": "^5.95.2", + "@orpc/tanstack-query": "^1.13.13" }, "devDependencies": { - "tailwindcss": "^4.2.1", - "@iconify-json/lucide": "^1.2.98", + "tailwindcss": "^4.2.2", + "@iconify-json/lucide": "^1.2.100", "typescript": "catalog:", "@snapshot-nuxt-standalone/config": "workspace:*", - "@tanstack/vue-query-devtools": "^5.90.2" + "@tanstack/vue-query-devtools": "^6.1.10" } } " @@ -2915,16 +2914,16 @@ export default defineNuxtConfig({ "packages/*" ], "catalog": { - "dotenv": "^17.2.2", - "zod": "^4.1.13", - "typescript": "^5", - "@types/bun": "^1.3.10", - "@libsql/client": "^0.17.0", - "libsql": "0.5.22", - "@orpc/server": "^1.13.7", - "@orpc/client": "^1.13.7", - "@orpc/openapi": "^1.13.7", - "@orpc/zod": "^1.13.7" + "dotenv": "^17.3.1", + "zod": "^4.3.6", + "typescript": "^6.0.2", + "@types/bun": "^1.3.11", + "@libsql/client": "^0.17.2", + "libsql": "^0.5.29", + "@orpc/server": "^1.13.13", + "@orpc/client": "^1.13.13", + "@orpc/openapi": "^1.13.13", + "@orpc/zod": "^1.13.13" } }, "scripts": { @@ -3127,7 +3126,7 @@ export default defineConfig({ "dotenv": "catalog:", "zod": "catalog:", "@snapshot-nuxt-standalone/env": "workspace:*", - "drizzle-orm": "^0.45.1", + "drizzle-orm": "^0.45.2", "@libsql/client": "catalog:", "libsql": "catalog:" } @@ -3186,8 +3185,8 @@ export const db = drizzle({ client, schema }); "dependencies": { "dotenv": "catalog:", "zod": "catalog:", - "@t3-oss/env-nuxt": "^0.13.10", - "@t3-oss/env-core": "^0.13.10" + "@t3-oss/env-nuxt": "^0.13.11", + "@t3-oss/env-core": "^0.13.11" }, "devDependencies": { "typescript": "catalog:", @@ -3264,18 +3263,18 @@ exports[`Template Snapshots Key File Content Snapshots key files: express-node-t "@snapshot-express-node-trpc/env": "workspace:*", "@snapshot-express-node-trpc/api": "workspace:*", "@snapshot-express-node-trpc/db": "workspace:*", - "express": "^5.1.0", - "cors": "^2.8.5", + "express": "^5.2.1", + "cors": "^2.8.6", "@trpc/server": "catalog:", "@hono/trpc-server": "^0.4.2" }, "devDependencies": { "typescript": "catalog:", - "tsdown": "^0.16.5", + "tsdown": "^0.21.7", "@snapshot-express-node-trpc/config": "workspace:*", "@types/express": "catalog:", "@types/cors": "^2.8.19", - "tsx": "^4.19.2", + "tsx": "^4.21.0", "@types/node": "catalog:" } } @@ -3375,37 +3374,37 @@ app.listen(3000, () => { "clsx": "^2.1.1", "next-themes": "^0.4.6", "sonner": "^2.0.7", - "tailwind-merge": "^3.3.1", - "@tailwindcss/vite": "^4.2.1", - "tw-animate-css": "^1.2.5", - "@tanstack/react-router": "^1.167.4", - "react": "^19.2.3", + "tailwind-merge": "^3.5.0", + "@tailwindcss/vite": "^4.2.2", + "tw-animate-css": "^1.4.0", + "@tanstack/react-router": "^1.168.8", + "react": "^19.2.4", "react-dom": "^19.2.3", "dotenv": "catalog:", "zod": "catalog:", "@snapshot-express-node-trpc/env": "workspace:*", "@snapshot-express-node-trpc/api": "workspace:*", "@prisma/client": "catalog:", - "@trpc/tanstack-react-query": "^11.13.4", + "@trpc/tanstack-react-query": "^11.16.0", "@trpc/client": "catalog:", "@trpc/server": "catalog:", - "@tanstack/react-query": "^5.90.21", - "lucide-react": "^0.577.0" + "@tanstack/react-query": "^5.95.2", + "lucide-react": "^1.7.0" }, "devDependencies": { - "@tanstack/react-router-devtools": "^1.166.9", - "@tanstack/router-cli": "^1.154.3", - "@tanstack/router-plugin": "^1.166.13", + "@tanstack/react-router-devtools": "^1.166.11", + "@tanstack/router-cli": "^1.166.23", + "@tanstack/router-plugin": "^1.167.9", "@types/node": "catalog:", - "@types/react": "19.2.7", + "@types/react": "^19.2.14", "@types/react-dom": "19.2.3", - "@vitejs/plugin-react": "^4.3.4", + "@vitejs/plugin-react": "^6.0.1", "postcss": "^8.5.8", - "tailwindcss": "^4.2.1", - "vite": "^6.2.2", + "tailwindcss": "^4.2.2", + "vite": "^8.0.3", "typescript": "catalog:", "@snapshot-express-node-trpc/config": "workspace:*", - "@tanstack/react-query-devtools": "^5.91.3" + "@tanstack/react-query-devtools": "^5.95.2" } } " @@ -3676,14 +3675,14 @@ export default defineConfig({ "packages/*" ], "catalog": { - "dotenv": "^17.2.2", - "zod": "^4.1.13", - "typescript": "^5", - "@types/node": "^22.13.14", - "@trpc/server": "^11.13.4", + "dotenv": "^17.3.1", + "zod": "^4.3.6", + "typescript": "^6.0.2", + "@types/node": "^25.5.0", + "@trpc/server": "^11.16.0", "@types/express": "^5.0.6", - "@prisma/client": "^7.5.0", - "@trpc/client": "^11.13.4" + "@prisma/client": "^7.6.0", + "@trpc/client": "^11.16.0" } }, "scripts": { @@ -3861,16 +3860,16 @@ export type AppRouter = typeof appRouter; "devDependencies": { "typescript": "catalog:", "@snapshot-express-node-trpc/config": "workspace:*", - "prisma": "^7.4.1", - "@types/pg": "^8.18.0" + "prisma": "^7.6.0", + "@types/pg": "^8.20.0" }, "dependencies": { "dotenv": "catalog:", "zod": "catalog:", "@snapshot-express-node-trpc/env": "workspace:*", "@prisma/client": "catalog:", - "@prisma/adapter-pg": "^7.5.0", - "pg": "^8.16.3" + "@prisma/adapter-pg": "^7.6.0", + "pg": "^8.20.0" } } " @@ -3929,7 +3928,7 @@ export default prisma; "dependencies": { "dotenv": "catalog:", "zod": "catalog:", - "@t3-oss/env-core": "^0.13.10" + "@t3-oss/env-core": "^0.13.11" }, "devDependencies": { "typescript": "catalog:", @@ -4013,7 +4012,7 @@ exports[`Template Snapshots Key File Content Snapshots key files: hono-bun-orpc }, "devDependencies": { "typescript": "catalog:", - "tsdown": "^0.16.5", + "tsdown": "^0.21.7", "@snapshot-hono-bun-orpc/config": "workspace:*", "@types/bun": "catalog:" } @@ -4156,11 +4155,11 @@ export default app; "clsx": "^2.1.1", "next-themes": "^0.4.6", "sonner": "^2.0.7", - "tailwind-merge": "^3.3.1", - "@tailwindcss/vite": "^4.2.1", - "tw-animate-css": "^1.2.5", - "@tanstack/react-router": "^1.167.4", - "react": "^19.2.3", + "tailwind-merge": "^3.5.0", + "@tailwindcss/vite": "^4.2.2", + "tw-animate-css": "^1.4.0", + "@tanstack/react-router": "^1.168.8", + "react": "^19.2.4", "react-dom": "^19.2.3", "dotenv": "catalog:", "zod": "catalog:", @@ -4168,26 +4167,26 @@ export default app; "@snapshot-hono-bun-orpc/api": "workspace:*", "@libsql/client": "catalog:", "libsql": "catalog:", - "@orpc/tanstack-query": "^1.13.7", + "@orpc/tanstack-query": "^1.13.13", "@orpc/client": "catalog:", "@orpc/server": "catalog:", - "@tanstack/react-query": "^5.90.21", - "lucide-react": "^0.577.0" + "@tanstack/react-query": "^5.95.2", + "lucide-react": "^1.7.0" }, "devDependencies": { - "@tanstack/react-router-devtools": "^1.166.9", - "@tanstack/router-cli": "^1.154.3", - "@tanstack/router-plugin": "^1.166.13", - "@types/node": "^22.13.14", - "@types/react": "19.2.7", + "@tanstack/react-router-devtools": "^1.166.11", + "@tanstack/router-cli": "^1.166.23", + "@tanstack/router-plugin": "^1.167.9", + "@types/node": "^25.5.0", + "@types/react": "^19.2.14", "@types/react-dom": "19.2.3", - "@vitejs/plugin-react": "^4.3.4", + "@vitejs/plugin-react": "^6.0.1", "postcss": "^8.5.8", - "tailwindcss": "^4.2.1", - "vite": "^6.2.2", + "tailwindcss": "^4.2.2", + "vite": "^8.0.3", "typescript": "catalog:", "@snapshot-hono-bun-orpc/config": "workspace:*", - "@tanstack/react-query-devtools": "^5.91.3" + "@tanstack/react-query-devtools": "^5.95.2" } } " @@ -4454,17 +4453,17 @@ export default defineConfig({ "packages/*" ], "catalog": { - "dotenv": "^17.2.2", - "zod": "^4.1.13", - "typescript": "^5", - "@types/bun": "^1.3.10", - "hono": "^4.8.2", - "@orpc/server": "^1.13.7", - "@orpc/openapi": "^1.13.7", - "@orpc/zod": "^1.13.7", - "@libsql/client": "^0.17.0", - "libsql": "0.5.22", - "@orpc/client": "^1.13.7" + "dotenv": "^17.3.1", + "zod": "^4.3.6", + "typescript": "^6.0.2", + "@types/bun": "^1.3.11", + "hono": "^4.12.9", + "@orpc/server": "^1.13.13", + "@orpc/openapi": "^1.13.13", + "@orpc/zod": "^1.13.13", + "@libsql/client": "^0.17.2", + "libsql": "^0.5.29", + "@orpc/client": "^1.13.13" } }, "scripts": { @@ -4669,7 +4668,7 @@ export default defineConfig({ "dotenv": "catalog:", "zod": "catalog:", "@snapshot-hono-bun-orpc/env": "workspace:*", - "drizzle-orm": "^0.45.1", + "drizzle-orm": "^0.45.2", "@libsql/client": "catalog:", "libsql": "catalog:" } @@ -4728,7 +4727,7 @@ export const db = drizzle({ client, schema }); "dependencies": { "dotenv": "catalog:", "zod": "catalog:", - "@t3-oss/env-core": "^0.13.10" + "@t3-oss/env-core": "^0.13.11" }, "devDependencies": { "typescript": "catalog:", @@ -4813,7 +4812,7 @@ exports[`Template Snapshots Key File Content Snapshots key files: better-auth-fu }, "devDependencies": { "typescript": "catalog:", - "tsdown": "^0.16.5", + "tsdown": "^0.21.7", "@snapshot-better-auth-full/config": "workspace:*", "@types/bun": "catalog:" } @@ -4921,39 +4920,39 @@ export default app; "clsx": "^2.1.1", "next-themes": "^0.4.6", "sonner": "^2.0.7", - "tailwind-merge": "^3.3.1", - "@tailwindcss/vite": "^4.2.1", - "tw-animate-css": "^1.2.5", - "@tanstack/react-router": "^1.167.4", - "react": "^19.2.3", + "tailwind-merge": "^3.5.0", + "@tailwindcss/vite": "^4.2.2", + "tw-animate-css": "^1.4.0", + "@tanstack/react-router": "^1.168.8", + "react": "^19.2.4", "react-dom": "^19.2.3", "dotenv": "catalog:", "zod": "catalog:", "@snapshot-better-auth-full/env": "workspace:*", "@snapshot-better-auth-full/api": "workspace:*", "@snapshot-better-auth-full/auth": "workspace:*", - "@trpc/tanstack-react-query": "^11.13.4", + "@trpc/tanstack-react-query": "^11.16.0", "@trpc/client": "catalog:", "@trpc/server": "catalog:", - "@tanstack/react-query": "^5.90.21", + "@tanstack/react-query": "^5.95.2", "better-auth": "catalog:", - "@tanstack/react-form": "^1.28.5", - "lucide-react": "^0.577.0" + "@tanstack/react-form": "^1.28.6", + "lucide-react": "^1.7.0" }, "devDependencies": { - "@tanstack/react-router-devtools": "^1.166.9", - "@tanstack/router-cli": "^1.154.3", - "@tanstack/router-plugin": "^1.166.13", - "@types/node": "^22.13.14", - "@types/react": "19.2.7", + "@tanstack/react-router-devtools": "^1.166.11", + "@tanstack/router-cli": "^1.166.23", + "@tanstack/router-plugin": "^1.167.9", + "@types/node": "^25.5.0", + "@types/react": "^19.2.14", "@types/react-dom": "19.2.3", - "@vitejs/plugin-react": "^4.3.4", + "@vitejs/plugin-react": "^6.0.1", "postcss": "^8.5.8", - "tailwindcss": "^4.2.1", - "vite": "^6.2.2", + "tailwindcss": "^4.2.2", + "vite": "^8.0.3", "typescript": "catalog:", "@snapshot-better-auth-full/config": "workspace:*", - "@tanstack/react-query-devtools": "^5.91.3" + "@tanstack/react-query-devtools": "^5.95.2" } } " @@ -5254,14 +5253,14 @@ export default defineConfig({ "packages/*" ], "catalog": { - "dotenv": "^17.2.2", - "zod": "^4.1.13", - "typescript": "^5", - "@types/bun": "^1.3.10", - "hono": "^4.8.2", - "@trpc/server": "^11.13.4", - "better-auth": "^1.5.5", - "@trpc/client": "^11.13.4" + "dotenv": "^17.3.1", + "zod": "^4.3.6", + "typescript": "^6.0.2", + "@types/bun": "^1.3.11", + "hono": "^4.12.9", + "@trpc/server": "^11.16.0", + "better-auth": "^1.5.6", + "@trpc/client": "^11.16.0" } }, "scripts": { @@ -5423,7 +5422,7 @@ export type AppRouter = typeof appRouter; "@snapshot-better-auth-full/env": "workspace:*", "@snapshot-better-auth-full/db": "workspace:*", "better-auth": "catalog:", - "@better-auth/drizzle-adapter": "^1.5.5" + "@better-auth/drizzle-adapter": "^1.5.6" } } " @@ -5571,14 +5570,14 @@ export default defineConfig({ "typescript": "catalog:", "@snapshot-better-auth-full/config": "workspace:*", "drizzle-kit": "^0.31.10", - "@types/pg": "^8.18.0" + "@types/pg": "^8.20.0" }, "dependencies": { "dotenv": "catalog:", "zod": "catalog:", "@snapshot-better-auth-full/env": "workspace:*", - "drizzle-orm": "^0.45.1", - "pg": "^8.16.3" + "drizzle-orm": "^0.45.2", + "pg": "^8.20.0" } } " @@ -5733,7 +5732,7 @@ export {};" "dependencies": { "dotenv": "catalog:", "zod": "catalog:", - "@t3-oss/env-core": "^0.13.10" + "@t3-oss/env-core": "^0.13.11" }, "devDependencies": { "typescript": "catalog:", @@ -5815,11 +5814,11 @@ exports[`Template Snapshots Key File Content Snapshots key files: convex-clerk 1 "clsx": "^2.1.1", "next-themes": "^0.4.6", "sonner": "^2.0.7", - "tailwind-merge": "^3.3.1", - "@tailwindcss/vite": "^4.2.1", - "tw-animate-css": "^1.2.5", - "@tanstack/react-router": "^1.167.4", - "react": "^19.2.3", + "tailwind-merge": "^3.5.0", + "@tailwindcss/vite": "^4.2.2", + "tw-animate-css": "^1.4.0", + "@tanstack/react-router": "^1.168.8", + "react": "^19.2.4", "react-dom": "^19.2.3", "dotenv": "catalog:", "zod": "catalog:", @@ -5827,19 +5826,19 @@ exports[`Template Snapshots Key File Content Snapshots key files: convex-clerk 1 "@snapshot-convex-clerk/backend": "workspace:*", "convex": "catalog:", "@clerk/clerk-react": "^5.61.3", - "lucide-react": "^0.577.0" + "lucide-react": "^1.7.0" }, "devDependencies": { - "@tanstack/react-router-devtools": "^1.166.9", - "@tanstack/router-cli": "^1.154.3", - "@tanstack/router-plugin": "^1.166.13", - "@types/node": "^22.13.14", - "@types/react": "19.2.7", + "@tanstack/react-router-devtools": "^1.166.11", + "@tanstack/router-cli": "^1.166.23", + "@tanstack/router-plugin": "^1.167.9", + "@types/node": "catalog:", + "@types/react": "^19.2.14", "@types/react-dom": "19.2.3", - "@vitejs/plugin-react": "^4.3.4", + "@vitejs/plugin-react": "^6.0.1", "postcss": "^8.5.8", - "tailwindcss": "^4.2.1", - "vite": "^6.2.2", + "tailwindcss": "^4.2.2", + "vite": "^8.0.3", "typescript": "catalog:", "@snapshot-convex-clerk/config": "workspace:*" } @@ -6085,11 +6084,12 @@ export default defineConfig({ "packages/*" ], "catalog": { - "dotenv": "^17.2.2", - "zod": "^4.1.13", - "typescript": "^5", - "@types/bun": "^1.3.10", - "convex": "^1.31.2" + "dotenv": "^17.3.1", + "zod": "^4.3.6", + "typescript": "^6.0.2", + "@types/bun": "^1.3.11", + "convex": "^1.34.1", + "@types/node": "^25.5.0" } }, "scripts": { @@ -6191,7 +6191,7 @@ export default defineSchema({}); "license": "ISC", "description": "", "devDependencies": { - "@types/node": "^24.3.0", + "@types/node": "catalog:", "typescript": "catalog:", "@snapshot-convex-clerk/config": "workspace:*" }, @@ -6259,7 +6259,7 @@ export default defineSchema({}); "dependencies": { "dotenv": "catalog:", "zod": "catalog:", - "@t3-oss/env-core": "^0.13.10" + "@t3-oss/env-core": "^0.13.11" }, "devDependencies": { "typescript": "catalog:", @@ -6354,10 +6354,10 @@ export default nextConfig; "clsx": "^2.1.1", "next-themes": "^0.4.6", "sonner": "^2.0.7", - "tailwind-merge": "^3.3.1", - "tw-animate-css": "^1.3.4", + "tailwind-merge": "^3.5.0", + "tw-animate-css": "^1.4.0", "next": "catalog:", - "react": "^19.2.3", + "react": "^19.2.4", "react-dom": "^19.2.3", "babel-plugin-react-compiler": "^1.0.0", "dotenv": "catalog:", @@ -6368,20 +6368,20 @@ export default nextConfig; "libsql": "catalog:", "@trpc/server": "catalog:", "@trpc/client": "catalog:", - "@trpc/tanstack-react-query": "^11.13.4", - "@tanstack/react-query": "^5.90.21", - "@clerk/nextjs": "^6.39.0", - "lucide-react": "^0.577.0" + "@trpc/tanstack-react-query": "^11.16.0", + "@tanstack/react-query": "^5.95.2", + "@clerk/nextjs": "^7.0.7", + "lucide-react": "^1.7.0" }, "devDependencies": { - "@tailwindcss/postcss": "^4.2.1", - "tailwindcss": "^4.2.1", - "@types/node": "^20", - "@types/react": "^19.2.7", + "@tailwindcss/postcss": "^4.2.2", + "tailwindcss": "^4.2.2", + "@types/node": "^25.5.0", + "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", - "typescript": "catalog:", + "typescript": "^5", "@snapshot-self-next-clerk/config": "workspace:*", - "@tanstack/react-query-devtools": "^5.91.3" + "@tanstack/react-query-devtools": "^5.95.2" } } " @@ -6571,15 +6571,14 @@ export const trpc = createTRPCOptionsProxy({ "packages/*" ], "catalog": { - "dotenv": "^17.2.2", - "zod": "^4.1.13", - "typescript": "^5", - "@types/bun": "^1.3.10", - "next": "^16.1.1", - "@libsql/client": "^0.17.0", - "libsql": "0.5.22", - "@trpc/server": "^11.13.4", - "@trpc/client": "^11.13.4" + "dotenv": "^17.3.1", + "zod": "^4.3.6", + "@types/bun": "^1.3.11", + "next": "^16.2.1", + "@libsql/client": "^0.17.2", + "libsql": "^0.5.29", + "@trpc/server": "^11.16.0", + "@trpc/client": "^11.16.0" } }, "scripts": { @@ -6601,7 +6600,7 @@ export const trpc = createTRPCOptionsProxy({ "@snapshot-self-next-clerk/env": "workspace:*" }, "devDependencies": { - "typescript": "catalog:", + "typescript": "^6.0.2", "@types/bun": "catalog:", "@snapshot-self-next-clerk/config": "workspace:*" } @@ -6625,7 +6624,7 @@ export const trpc = createTRPCOptionsProxy({ "type": "module", "scripts": {}, "devDependencies": { - "typescript": "catalog:", + "typescript": "^6.0.2", "@snapshot-self-next-clerk/config": "workspace:*" }, "dependencies": { @@ -6776,7 +6775,7 @@ export default defineConfig({ "db:migrate": "drizzle-kit migrate" }, "devDependencies": { - "typescript": "catalog:", + "typescript": "^6.0.2", "@snapshot-self-next-clerk/config": "workspace:*", "drizzle-kit": "^0.31.10" }, @@ -6784,7 +6783,7 @@ export default defineConfig({ "dotenv": "catalog:", "zod": "catalog:", "@snapshot-self-next-clerk/env": "workspace:*", - "drizzle-orm": "^0.45.1", + "drizzle-orm": "^0.45.2", "@libsql/client": "catalog:", "libsql": "catalog:" } @@ -6843,11 +6842,11 @@ export const db = drizzle({ client, schema }); "dependencies": { "dotenv": "catalog:", "zod": "catalog:", - "@t3-oss/env-nextjs": "^0.13.10", - "@t3-oss/env-core": "^0.13.10" + "@t3-oss/env-nextjs": "^0.13.11", + "@t3-oss/env-core": "^0.13.11" }, "devDependencies": { - "typescript": "catalog:", + "typescript": "^6.0.2", "@types/bun": "catalog:", "@snapshot-self-next-clerk/config": "workspace:*" } @@ -6919,18 +6918,18 @@ exports[`Template Snapshots Key File Content Snapshots key files: self-tanstack- "clsx": "^2.1.1", "next-themes": "^0.4.6", "sonner": "^2.0.7", - "tailwind-merge": "^3.3.1", - "@tailwindcss/vite": "^4.2.1", - "tailwindcss": "^4.2.1", - "tw-animate-css": "^1.2.5", - "@tanstack/react-query": "^5.80.6", - "@tanstack/react-router": "^1.167.4", + "tailwind-merge": "^3.5.0", + "@tailwindcss/vite": "^4.2.2", + "tailwindcss": "^4.2.2", + "tw-animate-css": "^1.4.0", + "@tanstack/react-query": "^5.95.2", + "@tanstack/react-router": "^1.168.8", "@tanstack/react-router-with-query": "^1.130.17", - "@tanstack/react-start": "^1.166.15", - "@tanstack/router-plugin": "^1.166.13", - "react": "^19.2.3", + "@tanstack/react-start": "^1.167.13", + "@tanstack/router-plugin": "^1.167.9", + "react": "^19.2.4", "react-dom": "^19.2.3", - "vite-tsconfig-paths": "^5.1.4", + "vite-tsconfig-paths": "^6.1.1", "dotenv": "catalog:", "zod": "catalog:", "@snapshot-self-tanstack-start-clerk/env": "workspace:*", @@ -6941,24 +6940,24 @@ exports[`Template Snapshots Key File Content Snapshots key files: self-tanstack- "@orpc/client": "catalog:", "@orpc/openapi": "catalog:", "@orpc/zod": "catalog:", - "@orpc/tanstack-query": "^1.13.7", - "@clerk/tanstack-react-start": "^0.29.8", - "srvx": "0.8.15", - "lucide-react": "^0.577.0" + "@orpc/tanstack-query": "^1.13.13", + "@clerk/tanstack-react-start": "^1.0.7", + "srvx": "^0.11.13", + "lucide-react": "^1.7.0" }, "devDependencies": { - "@tanstack/react-router-devtools": "^1.166.9", - "@testing-library/dom": "^10.4.0", - "@testing-library/react": "^16.2.0", - "@types/react": "19.2.7", + "@tanstack/react-router-devtools": "^1.166.11", + "@testing-library/dom": "^10.4.1", + "@testing-library/react": "^16.3.2", + "@types/react": "^19.2.14", "@types/react-dom": "19.2.3", - "@vitejs/plugin-react": "^5.0.4", - "jsdom": "^26.0.0", - "vite": "^7.0.2", - "web-vitals": "^5.1.0", + "@vitejs/plugin-react": "^6.0.1", + "jsdom": "^29.0.1", + "vite": "^8.0.3", + "web-vitals": "^5.2.0", "typescript": "catalog:", "@snapshot-self-tanstack-start-clerk/config": "workspace:*", - "@tanstack/react-query-devtools": "^5.91.3" + "@tanstack/react-query-devtools": "^5.95.2" } } " @@ -7251,16 +7250,16 @@ export default defineConfig({ "packages/*" ], "catalog": { - "dotenv": "^17.2.2", - "zod": "^4.1.13", - "typescript": "^5", - "@types/bun": "^1.3.10", - "@libsql/client": "^0.17.0", - "libsql": "0.5.22", - "@orpc/server": "^1.13.7", - "@orpc/client": "^1.13.7", - "@orpc/openapi": "^1.13.7", - "@orpc/zod": "^1.13.7" + "dotenv": "^17.3.1", + "zod": "^4.3.6", + "typescript": "^6.0.2", + "@types/bun": "^1.3.11", + "@libsql/client": "^0.17.2", + "libsql": "^0.5.29", + "@orpc/server": "^1.13.13", + "@orpc/client": "^1.13.13", + "@orpc/openapi": "^1.13.13", + "@orpc/zod": "^1.13.13" } }, "scripts": { @@ -7463,7 +7462,7 @@ export default defineConfig({ "dotenv": "catalog:", "zod": "catalog:", "@snapshot-self-tanstack-start-clerk/env": "workspace:*", - "drizzle-orm": "^0.45.1", + "drizzle-orm": "^0.45.2", "@libsql/client": "catalog:", "libsql": "catalog:" } @@ -7522,7 +7521,7 @@ export const db = drizzle({ client, schema }); "dependencies": { "dotenv": "catalog:", "zod": "catalog:", - "@t3-oss/env-core": "^0.13.10" + "@t3-oss/env-core": "^0.13.11" }, "devDependencies": { "typescript": "catalog:", @@ -7605,7 +7604,7 @@ exports[`Template Snapshots Key File Content Snapshots key files: mongodb-mongoo }, "devDependencies": { "typescript": "catalog:", - "tsdown": "^0.16.5", + "tsdown": "^0.21.7", "@snapshot-mongodb-mongoose/config": "workspace:*", "@types/bun": "catalog:" } @@ -7709,36 +7708,36 @@ export default app; "clsx": "^2.1.1", "next-themes": "^0.4.6", "sonner": "^2.0.7", - "tailwind-merge": "^3.3.1", - "@tailwindcss/vite": "^4.2.1", - "tw-animate-css": "^1.2.5", - "@tanstack/react-router": "^1.167.4", - "react": "^19.2.3", + "tailwind-merge": "^3.5.0", + "@tailwindcss/vite": "^4.2.2", + "tw-animate-css": "^1.4.0", + "@tanstack/react-router": "^1.168.8", + "react": "^19.2.4", "react-dom": "^19.2.3", "dotenv": "catalog:", "zod": "catalog:", "@snapshot-mongodb-mongoose/env": "workspace:*", "@snapshot-mongodb-mongoose/api": "workspace:*", - "@trpc/tanstack-react-query": "^11.13.4", + "@trpc/tanstack-react-query": "^11.16.0", "@trpc/client": "catalog:", "@trpc/server": "catalog:", - "@tanstack/react-query": "^5.90.21", - "lucide-react": "^0.577.0" + "@tanstack/react-query": "^5.95.2", + "lucide-react": "^1.7.0" }, "devDependencies": { - "@tanstack/react-router-devtools": "^1.166.9", - "@tanstack/router-cli": "^1.154.3", - "@tanstack/router-plugin": "^1.166.13", - "@types/node": "^22.13.14", - "@types/react": "19.2.7", + "@tanstack/react-router-devtools": "^1.166.11", + "@tanstack/router-cli": "^1.166.23", + "@tanstack/router-plugin": "^1.167.9", + "@types/node": "^25.5.0", + "@types/react": "^19.2.14", "@types/react-dom": "19.2.3", - "@vitejs/plugin-react": "^4.3.4", + "@vitejs/plugin-react": "^6.0.1", "postcss": "^8.5.8", - "tailwindcss": "^4.2.1", - "vite": "^6.2.2", + "tailwindcss": "^4.2.2", + "vite": "^8.0.3", "typescript": "catalog:", "@snapshot-mongodb-mongoose/config": "workspace:*", - "@tanstack/react-query-devtools": "^5.91.3" + "@tanstack/react-query-devtools": "^5.95.2" } } " @@ -8009,13 +8008,13 @@ export default defineConfig({ "packages/*" ], "catalog": { - "dotenv": "^17.2.2", - "zod": "^4.1.13", - "typescript": "^5", - "@types/bun": "^1.3.10", - "hono": "^4.8.2", - "@trpc/server": "^11.13.4", - "@trpc/client": "^11.13.4" + "dotenv": "^17.3.1", + "zod": "^4.3.6", + "typescript": "^6.0.2", + "@types/bun": "^1.3.11", + "hono": "^4.12.9", + "@trpc/server": "^11.16.0", + "@trpc/client": "^11.16.0" } }, "scripts": { @@ -8188,7 +8187,7 @@ export type AppRouter = typeof appRouter; "dotenv": "catalog:", "zod": "catalog:", "@snapshot-mongodb-mongoose/env": "workspace:*", - "mongoose": "^8.14.0" + "mongoose": "^9.3.3" } } " @@ -8240,7 +8239,7 @@ export { client }; "dependencies": { "dotenv": "catalog:", "zod": "catalog:", - "@t3-oss/env-core": "^0.13.10" + "@t3-oss/env-core": "^0.13.11" }, "devDependencies": { "typescript": "catalog:", @@ -8323,7 +8322,7 @@ exports[`Template Snapshots Key File Content Snapshots key files: postgres-prism }, "devDependencies": { "typescript": "catalog:", - "tsdown": "^0.16.5", + "tsdown": "^0.21.7", "@snapshot-postgres-prisma/config": "workspace:*", "@types/bun": "catalog:" } @@ -8427,37 +8426,37 @@ export default app; "clsx": "^2.1.1", "next-themes": "^0.4.6", "sonner": "^2.0.7", - "tailwind-merge": "^3.3.1", - "@tailwindcss/vite": "^4.2.1", - "tw-animate-css": "^1.2.5", - "@tanstack/react-router": "^1.167.4", - "react": "^19.2.3", + "tailwind-merge": "^3.5.0", + "@tailwindcss/vite": "^4.2.2", + "tw-animate-css": "^1.4.0", + "@tanstack/react-router": "^1.168.8", + "react": "^19.2.4", "react-dom": "^19.2.3", "dotenv": "catalog:", "zod": "catalog:", "@snapshot-postgres-prisma/env": "workspace:*", "@snapshot-postgres-prisma/api": "workspace:*", "@prisma/client": "catalog:", - "@trpc/tanstack-react-query": "^11.13.4", + "@trpc/tanstack-react-query": "^11.16.0", "@trpc/client": "catalog:", "@trpc/server": "catalog:", - "@tanstack/react-query": "^5.90.21", - "lucide-react": "^0.577.0" + "@tanstack/react-query": "^5.95.2", + "lucide-react": "^1.7.0" }, "devDependencies": { - "@tanstack/react-router-devtools": "^1.166.9", - "@tanstack/router-cli": "^1.154.3", - "@tanstack/router-plugin": "^1.166.13", - "@types/node": "^22.13.14", - "@types/react": "19.2.7", + "@tanstack/react-router-devtools": "^1.166.11", + "@tanstack/router-cli": "^1.166.23", + "@tanstack/router-plugin": "^1.167.9", + "@types/node": "^25.5.0", + "@types/react": "^19.2.14", "@types/react-dom": "19.2.3", - "@vitejs/plugin-react": "^4.3.4", + "@vitejs/plugin-react": "^6.0.1", "postcss": "^8.5.8", - "tailwindcss": "^4.2.1", - "vite": "^6.2.2", + "tailwindcss": "^4.2.2", + "vite": "^8.0.3", "typescript": "catalog:", "@snapshot-postgres-prisma/config": "workspace:*", - "@tanstack/react-query-devtools": "^5.91.3" + "@tanstack/react-query-devtools": "^5.95.2" } } " @@ -8728,14 +8727,14 @@ export default defineConfig({ "packages/*" ], "catalog": { - "dotenv": "^17.2.2", - "zod": "^4.1.13", - "typescript": "^5", - "@types/bun": "^1.3.10", - "hono": "^4.8.2", - "@trpc/server": "^11.13.4", - "@prisma/client": "^7.5.0", - "@trpc/client": "^11.13.4" + "dotenv": "^17.3.1", + "zod": "^4.3.6", + "typescript": "^6.0.2", + "@types/bun": "^1.3.11", + "hono": "^4.12.9", + "@trpc/server": "^11.16.0", + "@prisma/client": "^7.6.0", + "@trpc/client": "^11.16.0" } }, "scripts": { @@ -8913,16 +8912,16 @@ export type AppRouter = typeof appRouter; "devDependencies": { "typescript": "catalog:", "@snapshot-postgres-prisma/config": "workspace:*", - "prisma": "^7.4.1", - "@types/pg": "^8.18.0" + "prisma": "^7.6.0", + "@types/pg": "^8.20.0" }, "dependencies": { "dotenv": "catalog:", "zod": "catalog:", "@snapshot-postgres-prisma/env": "workspace:*", "@prisma/client": "catalog:", - "@prisma/adapter-pg": "^7.5.0", - "pg": "^8.16.3" + "@prisma/adapter-pg": "^7.6.0", + "pg": "^8.20.0" } } " @@ -8981,7 +8980,7 @@ export default prisma; "dependencies": { "dotenv": "catalog:", "zod": "catalog:", - "@t3-oss/env-core": "^0.13.10" + "@t3-oss/env-core": "^0.13.11" }, "devDependencies": { "typescript": "catalog:", @@ -9063,28 +9062,28 @@ exports[`Template Snapshots Key File Content Snapshots key files: frontend-only- "clsx": "^2.1.1", "next-themes": "^0.4.6", "sonner": "^2.0.7", - "tailwind-merge": "^3.3.1", - "@tailwindcss/vite": "^4.2.1", - "tw-animate-css": "^1.2.5", - "@tanstack/react-router": "^1.167.4", - "react": "^19.2.3", + "tailwind-merge": "^3.5.0", + "@tailwindcss/vite": "^4.2.2", + "tw-animate-css": "^1.4.0", + "@tanstack/react-router": "^1.168.8", + "react": "^19.2.4", "react-dom": "^19.2.3", "dotenv": "catalog:", "zod": "catalog:", "@snapshot-frontend-only-no-backend/env": "workspace:*", - "lucide-react": "^0.577.0" + "lucide-react": "^1.7.0" }, "devDependencies": { - "@tanstack/react-router-devtools": "^1.166.9", - "@tanstack/router-cli": "^1.154.3", - "@tanstack/router-plugin": "^1.166.13", - "@types/node": "^22.13.14", - "@types/react": "19.2.7", + "@tanstack/react-router-devtools": "^1.166.11", + "@tanstack/router-cli": "^1.166.23", + "@tanstack/router-plugin": "^1.167.9", + "@types/node": "^25.5.0", + "@types/react": "^19.2.14", "@types/react-dom": "19.2.3", - "@vitejs/plugin-react": "^4.3.4", + "@vitejs/plugin-react": "^6.0.1", "postcss": "^8.5.8", - "tailwindcss": "^4.2.1", - "vite": "^6.2.2", + "tailwindcss": "^4.2.2", + "vite": "^8.0.3", "typescript": "catalog:", "@snapshot-frontend-only-no-backend/config": "workspace:*" } @@ -9295,10 +9294,10 @@ export default defineConfig({ "packages/*" ], "catalog": { - "dotenv": "^17.2.2", - "zod": "^4.1.13", - "typescript": "^5", - "@types/bun": "^1.3.10" + "dotenv": "^17.3.1", + "zod": "^4.3.6", + "typescript": "^6.0.2", + "@types/bun": "^1.3.11" } }, "scripts": { @@ -9378,7 +9377,7 @@ export default defineConfig({ "dependencies": { "dotenv": "catalog:", "zod": "catalog:", - "@t3-oss/env-core": "^0.13.10" + "@t3-oss/env-core": "^0.13.11" }, "devDependencies": { "typescript": "catalog:", @@ -9676,43 +9675,43 @@ fontWeight: "bold", }, "dependencies": { "@expo/vector-icons": "^15.1.1", - "@react-navigation/bottom-tabs": "^7.15.5", - "@react-navigation/drawer": "^7.9.4", - "@react-navigation/native": "^7.1.33", - "@tanstack/react-form": "^1.0.5", - "@tanstack/react-query": "^5.85.5", - "expo": "^54.0.1", - "expo-constants": "~18.0.8", - "expo-crypto": "~15.0.6", - "expo-linking": "~8.0.7", - "expo-navigation-bar": "~5.0.8", - "expo-network": "~8.0.7", - "expo-router": "~6.0.0", - "expo-secure-store": "~15.0.6", - "expo-splash-screen": "~31.0.8", - "expo-status-bar": "~3.0.7", - "expo-system-ui": "~6.0.7", - "expo-web-browser": "~15.0.6", - "react": "19.1.0", + "@react-navigation/bottom-tabs": "^7.15.9", + "@react-navigation/drawer": "^7.9.8", + "@react-navigation/native": "^7.2.2", + "@tanstack/react-form": "^1.28.6", + "@tanstack/react-query": "^5.95.2", + "expo": "^55.0.9", + "expo-constants": "^55.0.9", + "expo-crypto": "^55.0.10", + "expo-linking": "^55.0.9", + "expo-navigation-bar": "^55.0.9", + "expo-network": "^55.0.9", + "expo-router": "^55.0.8", + "expo-secure-store": "^55.0.9", + "expo-splash-screen": "^55.0.13", + "expo-status-bar": "^55.0.4", + "expo-system-ui": "^55.0.11", + "expo-web-browser": "^55.0.10", + "react": "^19.2.4", "react-dom": "^19.2.4", "react-native": "^0.84.1", - "react-native-gesture-handler": "^2.30.0", - "react-native-reanimated": "^4.2.2", + "react-native-gesture-handler": "^2.30.1", + "react-native-reanimated": "^4.3.0", "react-native-safe-area-context": "^5.7.0", "react-native-screens": "^4.24.0", "react-native-web": "^0.21.2", - "react-native-worklets": "^0.7.4", + "react-native-worklets": "^0.8.1", "dotenv": "catalog:", "zod": "catalog:", "@snapshot-native-react-native/env": "workspace:*", "@snapshot-native-react-native/api": "workspace:*", - "@trpc/tanstack-react-query": "^11.13.4", + "@trpc/tanstack-react-query": "^11.16.0", "@trpc/client": "catalog:", "@trpc/server": "catalog:" }, "devDependencies": { "@babel/core": "^7.29.0", - "@types/react": "~19.1.10", + "@types/react": "^19.2.14", "typescript": "catalog:", "@snapshot-native-react-native/config": "workspace:*" }, @@ -9794,7 +9793,7 @@ export const trpc = createTRPCOptionsProxy({ }, "devDependencies": { "typescript": "catalog:", - "tsdown": "^0.16.5", + "tsdown": "^0.21.7", "@snapshot-native-react-native/config": "workspace:*", "@types/bun": "catalog:" } @@ -9886,13 +9885,13 @@ export default app; "packages/*" ], "catalog": { - "dotenv": "^17.2.2", - "zod": "^4.1.13", - "typescript": "^5", - "@types/bun": "^1.3.10", - "hono": "^4.8.2", - "@trpc/server": "^11.13.4", - "@trpc/client": "^11.13.4" + "dotenv": "^17.3.1", + "zod": "^4.3.6", + "typescript": "^6.0.2", + "@types/bun": "^1.3.11", + "hono": "^4.12.9", + "@trpc/server": "^11.16.0", + "@trpc/client": "^11.16.0" } }, "scripts": { @@ -10098,9 +10097,9 @@ export default defineConfig({ "dotenv": "catalog:", "zod": "catalog:", "@snapshot-native-react-native/env": "workspace:*", - "drizzle-orm": "^0.45.1", - "@libsql/client": "^0.17.0", - "libsql": "0.5.22" + "drizzle-orm": "^0.45.2", + "@libsql/client": "^0.17.2", + "libsql": "^0.5.29" } } " @@ -10157,7 +10156,7 @@ export const db = drizzle({ client, schema }); "dependencies": { "dotenv": "catalog:", "zod": "catalog:", - "@t3-oss/env-core": "^0.13.10" + "@t3-oss/env-core": "^0.13.11" }, "devDependencies": { "typescript": "catalog:", diff --git a/packages/deps-report.md b/packages/deps-report.md index b3d830937..6e8f5789a 100644 --- a/packages/deps-report.md +++ b/packages/deps-report.md @@ -1,474 +1,11 @@ # Dependency Version Check Report -Generated: 2026-03-17T10:47:53.325Z +Generated: 2026-03-30T12:53:09.097Z ## Summary -- **Outdated**: 393 -- **Template-only** (not in version map): 88 -- **Downgrades detected**: 6 -- **Up to date**: 177 +- **Outdated**: 0 +- **Downgrades detected**: 0 +- **Up to date**: 573 - **Errors**: 0 -## Outdated Packages - -### Downgrades Detected (Manual Review Required) - -| Package | Current | Latest | Ecosystem | Source | -|---------|---------|--------|-----------|--------| -| next-auth | ^5.0.0-beta.28 | ^4.24.13 | - | map | -| @auth/core | ^0.39.1 | ^0.34.3 | - | map | -| @effect/ai-anthropic | ^0.33.2 | ^0.24.0 | effect | map | -| @builder.io/qwik-react | ^0.7.0 | ^0.5.8 | - | map | -| @uploadthing/expo | ^7.3.0 | ^7.2.6 | uploadthing | map | -| svelte-filepond | ^1.0.2 | ^0.2.2 | - | map | - -### Major Updates (Breaking Changes Possible) - -| Package | Current | Latest | Ecosystem | Source | -|---------|---------|--------|-----------|--------| -| @clerk/nextjs | ^6.39.0 | ^7.0.4 | clerk | map | -| @clerk/tanstack-react-start | ^0.29.8 | ^1.0.4 | clerk | map | -| mongoose | ^8.14.0 | ^9.3.0 | - | map | -| better-sqlite3 | ^11.9.1 | ^12.8.0 | - | map | -| @mikro-orm/core | ^6.6.8 | ^7.0.2 | mikro | map | -| @mikro-orm/sqlite | ^6.6.8 | ^7.0.2 | mikro | map | -| @mikro-orm/postgresql | ^6.6.8 | ^7.0.2 | mikro | map | -| @mikro-orm/mysql | ^6.6.8 | ^7.0.2 | mikro | map | -| sqlite3 | ^5.1.7 | ^6.0.1 | - | map | -| @types/node | ^22.13.14 | ^25.5.0 | - | map | -| @octokit/rest | ^21.0.2 | ^22.0.1 | - | map | -| @adonisjs/core | ^6.20.0 | ^7.0.1 | - | map | -| @adonisjs/cors | ^2.2.1 | ^3.0.0 | - | map | -| @adonisjs/tsconfig | ^1.4.1 | ^2.0.0 | - | map | -| h3 | ^1.15.3 | ^2.0.0 | - | map | -| streamdown | ^1.6.10 | ^2.4.0 | - | map | -| shiki | ^3.20.0 | ^4.0.2 | - | map | -| langchain | ^0.3.20 | ^1.2.33 | - | map | -| @tanstack/svelte-query | ^5.85.3 | ^6.1.0 | tanstack | map | -| @tanstack/svelte-query-devtools | ^5.85.3 | ^6.0.4 | tanstack | map | -| @tanstack/vue-query-devtools | ^5.90.2 | ^6.1.5 | tanstack | map | -| sst | ^3.6.11 | ^4.3.6 | - | map | -| resend | ^4.5.1 | ^6.9.4 | - | map | -| nodemailer | ^6.10.1 | ^8.0.2 | - | map | -| @types/nodemailer | ^6.4.17 | ^7.0.11 | - | map | -| mailgun.js | ^10.2.3 | ^12.7.1 | - | map | -| shadcn | ^3.6.2 | ^4.0.8 | - | map | -| @hugeicons/react | ^0.3.0 | ^1.1.6 | - | map | -| @hugeicons/core-free-icons | ^3.3.0 | ^4.0.0 | - | map | -| @angular/core | ^19.2.0 | ^21.2.4 | angular | map | -| @angular/common | ^19.2.0 | ^21.2.4 | angular | map | -| @angular/compiler | ^19.2.0 | ^21.2.4 | angular | map | -| @angular/platform-browser | ^19.2.0 | ^21.2.4 | angular | map | -| @angular/platform-browser-dynamic | ^19.2.0 | ^21.2.4 | angular | map | -| @angular/router | ^19.2.0 | ^21.2.4 | angular | map | -| @angular/forms | ^19.2.0 | ^21.2.4 | angular | map | -| @angular/animations | ^19.2.0 | ^21.2.4 | angular | map | -| @angular-devkit/build-angular | ^19.2.0 | ^21.2.2 | angular | map | -| @angular/cli | ^19.2.0 | ^21.2.2 | angular | map | -| @angular/compiler-cli | ^19.2.0 | ^21.2.4 | angular | map | -| nanostores | ^0.11.3 | ^1.2.0 | - | map | -| @nanostores/react | ^0.8.4 | ^1.1.0 | - | map | -| @xstate/react | ^5.0.4 | ^6.1.0 | - | map | -| typia | ^9.7.1 | ^12.0.1 | - | map | -| final-form | ^4.20.10 | ^5.0.0 | - | map | -| react-final-form | ^6.5.9 | ^7.0.0 | - | map | -| y-websocket | ^2.1.0 | ^3.0.0 | - | map | -| inngest | ^3.33.0 | ^4.0.0 | - | map | -| jest | ^29.7.0 | ^30.3.0 | testing | map | -| @types/jest | ^29.5.14 | ^30.0.0 | testing | map | -| @jest/globals | ^29.7.0 | ^30.3.0 | testing | map | -| jest-environment-jsdom | ^29.7.0 | ^30.3.0 | testing | map | -| cypress | ^14.3.3 | ^15.12.0 | testing | map | -| vitest | ^3.1.1 | ^4.1.0 | testing | map | -| @vitest/ui | ^3.1.1 | ^4.1.0 | testing | map | -| @vitest/coverage-v8 | ^3.1.1 | ^4.1.0 | testing | map | -| jsdom | ^26.0.0 | ^29.0.0 | - | map | -| happy-dom | ^18.0.1 | ^20.8.4 | - | map | -| storybook | ^8.6.0 | ^10.2.19 | storybook | map | -| @storybook/react | ^8.6.0 | ^10.2.19 | storybook | map | -| @storybook/react-vite | ^8.6.0 | ^10.2.19 | storybook | map | -| @storybook/vue3-vite | ^8.6.0 | ^10.2.19 | storybook | map | -| @storybook/svelte-vite | ^8.6.0 | ^10.2.19 | storybook | map | -| @storybook/nextjs | ^8.6.0 | ^10.2.19 | storybook | map | -| @react-spring/web | ^9.7.5 | ^10.0.3 | - | map | -| @react-spring/native | ^9.7.5 | ^10.0.3 | - | map | -| stripe | ^17.5.0 | ^20.4.1 | - | map | -| @stripe/stripe-js | ^5.5.0 | ^8.10.0 | - | map | -| @stripe/react-stripe-js | ^3.1.1 | ^5.6.1 | - | map | -| @paddle/paddle-node-sdk | ^1.8.0 | ^3.6.0 | - | map | -| @uppy/angular | ^0.8.0 | ^1.1.0 | uppy | map | -| pino | ^9.6.0 | ^10.3.1 | - | map | -| pino-http | ^10.4.0 | ^11.0.0 | - | map | -| @sentry/node | ^9.1.0 | ^10.43.0 | - | map | -| @sentry/profiling-node | ^9.1.0 | ^10.43.0 | - | map | -| sanity | ^3.82.0 | ^5.16.0 | - | map | -| next-sanity | ^9.11.2 | ^12.1.1 | - | map | -| @sanity/image-url | ^1.1.0 | ^2.0.3 | - | map | -| @sanity/vision | ^3.82.0 | ^5.16.0 | - | map | -| typesense | ^2.0.0 | ^3.0.3 | - | map | -| posthog-node | ^4.3.3 | ^5.28.2 | - | map | -| vue-router | ^4.5.1 | ^5.0.3 | - | template | -| @sveltejs/adapter-auto | ^6.1.0 | ^7.0.1 | - | template | -| @sveltejs/vite-plugin-svelte | ^6.1.2 | ^7.0.0 | - | template | -| vite | ^7.2.7 | ^8.0.0 | - | template | -| expo | ^54.0.23 | ^55.0.6 | - | template | -| expo-constants | ~18.0.10 | ^55.0.7 | - | template | -| expo-crypto | ~15.0.6 | ^55.0.9 | - | template | -| expo-linking | ~8.0.8 | ^55.0.7 | - | template | -| expo-navigation-bar | ~5.0.8 | ^55.0.8 | - | template | -| expo-network | ~8.0.7 | ^55.0.8 | - | template | -| expo-router | ~6.0.14 | ^55.0.5 | - | template | -| expo-secure-store | ~15.0.7 | ^55.0.8 | - | template | -| expo-splash-screen | ~31.0.8 | ^55.0.10 | - | template | -| expo-status-bar | ~3.0.8 | ^55.0.4 | - | template | -| expo-system-ui | ~6.0.7 | ^55.0.9 | - | template | -| expo-web-browser | ~15.0.6 | ^55.0.9 | - | template | -| expo-dev-client | ~6.0.11 | ^55.0.16 | - | template | -| @expo/metro-runtime | ~6.1.2 | ^55.0.6 | - | template | -| expo-font | ~14.0.9 | ^55.0.4 | - | template | -| expo-haptics | ^15.0.7 | ^55.0.8 | - | template | -| vite-tsconfig-paths | ^5.1.4 | ^6.1.1 | - | template | -| @vitejs/plugin-react | ^5.0.4 | ^6.0.1 | - | template | -| react-router-devtools | ^1.1.0 | ^6.2.0 | - | template | -| astro | ^5.7.10 | ^6.0.5 | - | template | -| @astrojs/react | ^4.2.1 | ^5.0.0 | - | template | -| @astrojs/vue | ^5.0.6 | ^6.0.1 | - | template | -| @astrojs/svelte | ^7.0.8 | ^8.0.1 | - | template | -| @astrojs/solid-js | ^5.0.6 | ^6.0.0 | - | template | -| @astrojs/node | ^9.1.3 | ^10.0.2 | - | template | -| @astrojs/cloudflare | ^12.3.1 | ^13.1.2 | - | template | - -### Minor Updates - -| Package | Current | Latest | Ecosystem | Source | -|---------|---------|--------|-----------|--------| -| typescript | ^5 | ^5.9.3 | - | map | -| @supabase/supabase-js | ^2.98.0 | ^2.99.2 | - | map | -| @supabase/ssr | ^0.8.0 | ^0.9.0 | - | map | -| pg | ^8.16.3 | ^8.20.0 | - | map | -| ws | ^8.18.3 | ^8.19.0 | - | map | -| mysql2 | ^3.14.0 | ^3.20.0 | - | map | -| @prisma/client | ^7.4.2 | ^7.5.0 | prisma | map | -| prisma | ^7.4.1 | ^7.5.0 | prisma | map | -| @prisma/adapter-d1 | ^7.4.2 | ^7.5.0 | prisma | map | -| @prisma/adapter-neon | ^7.4.2 | ^7.5.0 | prisma | map | -| @prisma/adapter-mariadb | ^7.4.2 | ^7.5.0 | prisma | map | -| @prisma/adapter-libsql | ^7.4.2 | ^7.5.0 | prisma | map | -| @prisma/adapter-better-sqlite3 | ^7.4.2 | ^7.5.0 | prisma | map | -| @prisma/adapter-pg | ^7.4.2 | ^7.5.0 | prisma | map | -| @prisma/adapter-planetscale | ^7.4.2 | ^7.5.0 | prisma | map | -| oxlint | ^1.34.0 | ^1.56.0 | - | map | -| oxfmt | ^0.19.0 | ^0.41.0 | - | map | -| lefthook | ^2.0.13 | ^2.1.4 | - | map | -| lint-staged | ^16.3.1 | ^16.4.0 | - | map | -| tsx | ^4.19.2 | ^4.21.0 | - | map | -| hono | ^4.8.2 | ^4.12.8 | - | map | -| @vercel/sandbox | ^1.7.1 | ^1.8.1 | - | map | -| express | ^5.1.0 | ^5.2.1 | - | map | -| fastify | ^5.3.3 | ^5.8.2 | - | map | -| encore.dev | ^1.54.2 | ^1.56.0 | - | map | -| nitropack | ^2.11.12 | ^2.13.1 | - | map | -| turbo | ^2.6.3 | ^2.8.17 | - | map | -| chat | ^4.14.0 | ^4.20.2 | - | map | -| @chat-adapter/slack | ^4.15.0 | ^4.20.2 | - | map | -| @chat-adapter/discord | ^4.15.0 | ^4.20.2 | - | map | -| @chat-adapter/github | ^4.15.0 | ^4.20.2 | - | map | -| @chat-adapter/state-memory | ^4.15.0 | ^4.20.2 | - | map | -| @chat-adapter/state-redis | ^4.15.0 | ^4.20.2 | - | map | -| @mastra/core | ^1.8.0 | ^1.13.2 | - | map | -| @openai/agents | ^0.5.3 | ^0.7.2 | - | map | -| @google/adk | ^0.4.0 | ^0.5.0 | - | map | -| llamaindex | ^0.9.5 | ^0.12.1 | - | map | -| graphql | ^16.11.0 | ^16.13.1 | - | map | -| gqty | ^3.5.0 | ^3.6.0 | - | map | -| @trpc/tanstack-react-query | ^11.11.0 | ^11.13.4 | trpc | map | -| @trpc/server | ^11.11.0 | ^11.13.4 | trpc | map | -| @trpc/client | ^11.11.0 | ^11.13.4 | trpc | map | -| convex | ^1.31.2 | ^1.33.1 | convex | map | -| @convex-dev/better-auth | ^0.10.13 | ^0.11.2 | convex | map | -| @tanstack/react-router-ssr-query | ^1.163.3 | ^1.166.9 | tanstack | map | -| @tanstack/router-cli | ^1.164.0 | ^1.166.12 | - | map | -| @tanstack/solid-router-devtools | ^1.163.3 | ^1.166.9 | tanstack | map | -| wrangler | ^4.54.0 | ^4.74.0 | cloudflare | map | -| @cloudflare/vite-plugin | ^1.25.6 | ^1.29.0 | cloudflare | map | -| @cloudflare/workers-types | ^4.20260302.0 | ^4.20260317.1 | cloudflare | map | -| alchemy | ^0.82.1 | ^0.89.0 | - | map | -| aws-cdk-lib | ^2.240.0 | ^2.243.0 | - | map | -| constructs | ^10.4.2 | ^10.5.1 | - | map | -| dotenv | ^17.2.2 | ^17.3.1 | - | map | -| tsdown | ^0.16.5 | ^0.21.4 | - | map | -| zod | ^4.1.13 | ^4.3.6 | - | map | -| srvx | 0.8.15 | ^0.11.12 | - | map | -| @polar-sh/sdk | ^0.45.2 | ^0.46.4 | - | map | -| @aws-sdk/client-ses | ^3.1000.0 | ^3.1010.0 | - | map | -| @aws-sdk/client-s3 | ^3.1000.0 | ^3.1010.0 | - | map | -| @aws-sdk/s3-request-presigner | ^3.1000.0 | ^3.1010.0 | - | map | -| effect | ^3.19.14 | ^3.20.0 | effect | map | -| @effect/platform | ^0.94.5 | ^0.95.0 | effect | map | -| @effect/platform-node | ^0.104.1 | ^0.105.0 | effect | map | -| @effect/platform-bun | ^0.87.1 | ^0.88.0 | effect | map | -| @effect/platform-browser | ^0.74.0 | ^0.75.0 | effect | map | -| @effect/sql | ^0.49.0 | ^0.50.0 | effect | map | -| @effect/sql-sqlite-node | ^0.50.1 | ^0.51.0 | effect | map | -| @effect/sql-sqlite-bun | ^0.50.2 | ^0.51.0 | effect | map | -| @effect/sql-pg | ^0.50.3 | ^0.51.0 | effect | map | -| @effect/sql-mysql2 | ^0.50.0 | ^0.51.0 | effect | map | -| @effect/sql-libsql | ^0.39.0 | ^0.40.0 | effect | map | -| @effect/sql-drizzle | ^0.48.1 | ^0.49.0 | effect | map | -| @effect/cli | ^0.73.2 | ^0.74.0 | effect | map | -| @effect/vitest | ^0.27.0 | ^0.28.0 | effect | map | -| @effect/opentelemetry | ^0.61.0 | ^0.62.0 | effect | map | -| @effect/rpc | ^0.73.2 | ^0.74.0 | effect | map | -| @effect/cluster | ^0.56.4 | ^0.57.0 | effect | map | -| @effect/workflow | ^0.16.0 | ^0.17.0 | effect | map | -| @effect/ai | ^0.33.2 | ^0.34.0 | effect | map | -| @effect/ai-openai | ^0.37.2 | ^0.38.0 | effect | map | -| sass | ^1.86.0 | ^1.98.0 | - | map | -| less | ^4.3.0 | ^4.6.4 | - | map | -| @chakra-ui/react | ^3.33.0 | ^3.34.0 | - | map | -| framer-motion | ^12.34.3 | ^12.38.0 | - | map | -| tailwind-merge | ^3.3.0 | ^3.5.0 | - | map | -| tw-animate-css | ^1.3.4 | ^1.4.0 | - | map | -| lucide-react | ^0.511.0 | ^0.577.0 | - | map | -| @tabler/icons-react | ^3.34.0 | ^3.40.0 | - | map | -| @remixicon/react | ^4.6.0 | ^4.9.0 | - | map | -| geist | ^1.3.1 | ^1.7.0 | - | map | -| react-aria-components | ^1.15.1 | ^1.16.0 | - | map | -| daisyui | ^5.0.0 | ^5.5.19 | - | map | -| @builder.io/qwik | ~1.18.0 | ^1.19.2 | - | map | -| @builder.io/qwik-city | ~1.18.0 | ^1.19.2 | - | map | -| jotai | ^2.12.5 | ^2.18.1 | - | map | -| mobx | ^6.13.5 | ^6.15.0 | - | map | -| xstate | ^5.19.4 | ^5.28.0 | - | map | -| valtio | ^2.1.2 | ^2.3.1 | - | map | -| valibot | ^1.1.0 | ^1.3.0 | - | map | -| arktype | ^2.1.29 | ^2.2.0 | - | map | -| yup | ^1.6.1 | ^1.7.1 | - | map | -| partysocket | ^1.0.2 | ^1.1.16 | - | map | -| ably | ^2.6.3 | ^2.20.0 | - | map | -| pusher | ^5.2.0 | ^5.3.2 | - | map | -| @liveblocks/client | ^3.14.1 | ^3.15.2 | liveblocks | map | -| @liveblocks/react | ^3.14.1 | ^3.15.2 | liveblocks | map | -| @liveblocks/node | ^3.14.1 | ^3.15.2 | liveblocks | map | -| bullmq | ^5.34.8 | ^5.71.0 | - | map | -| ioredis | ^5.4.2 | ^5.10.0 | - | map | -| playwright | ^1.52.0 | ^1.58.2 | testing | map | -| msw | ^2.7.0 | ^2.12.12 | - | map | -| motion | ^12.17.0 | ^12.38.0 | - | map | -| gsap | ^3.12.7 | ^3.14.2 | - | map | -| dodopayments | ^2.19.0 | ^2.23.2 | - | map | -| preact | ^10.25.4 | ^10.29.0 | - | map | -| @opentelemetry/sdk-node | ^0.212.0 | ^0.213.0 | opentelemetry | map | -| @opentelemetry/auto-instrumentations-node | ^0.70.1 | ^0.71.0 | opentelemetry | map | -| @opentelemetry/exporter-trace-otlp-http | ^0.212.0 | ^0.213.0 | opentelemetry | map | -| @opentelemetry/exporter-metrics-otlp-http | ^0.212.0 | ^0.213.0 | opentelemetry | map | -| @opentelemetry/resources | ^2.0.0 | ^2.6.0 | opentelemetry | map | -| @opentelemetry/sdk-metrics | ^2.2.0 | ^2.6.0 | - | map | -| payload | ^3.14.1 | ^3.79.1 | payload | map | -| @payloadcms/next | ^3.78.0 | ^3.79.1 | payload | map | -| @payloadcms/richtext-lexical | ^3.78.0 | ^3.79.1 | payload | map | -| @payloadcms/db-postgres | ^3.78.0 | ^3.79.1 | payload | map | -| @payloadcms/db-mongodb | ^3.78.0 | ^3.79.1 | payload | map | -| @payloadcms/db-sqlite | ^3.78.0 | ^3.79.1 | payload | map | -| @payloadcms/plugin-seo | ^3.78.0 | ^3.79.1 | payload | map | -| @payloadcms/storage-s3 | ^3.78.0 | ^3.79.1 | payload | map | -| qs | ^6.14.0 | ^6.15.0 | - | map | -| @upstash/redis | ^1.36.3 | ^1.37.0 | - | map | -| meilisearch | ^0.44.1 | ^0.56.0 | - | map | -| posthog-js | ^1.356.2 | ^1.360.2 | - | map | -| @nuxt/ui | 4.2.1 | ^4.5.1 | - | template | -| @nuxt/content | ^3.7.1 | ^3.12.0 | - | template | -| @nuxtjs/mdc | ^0.17.4 | ^0.20.2 | - | template | -| nuxt | ^4.1.2 | ^4.4.2 | - | template | -| tailwindcss | ^4.1.18 | ^4.2.1 | - | template | -| zone.js | ^0.15.0 | ^0.16.1 | - | template | -| @sveltejs/kit | ^2.31.1 | ^2.55.0 | - | template | -| @tailwindcss/vite | ^4.1.18 | ^4.2.1 | - | template | -| svelte | ^5.38.1 | ^5.53.12 | - | template | -| svelte-check | ^4.3.1 | ^4.4.5 | - | template | -| @tanstack/svelte-form | ^1.19.2 | ^1.28.5 | - | template | -| @tanstack/router-plugin | ^1.154.3 | ^1.166.13 | - | template | -| @tanstack/solid-router | ^1.154.3 | ^1.167.4 | - | template | -| lucide-solid | ^0.544.0 | ^0.577.0 | - | template | -| @expo/vector-icons | ^15.0.3 | ^15.1.1 | - | template | -| @react-navigation/bottom-tabs | ^7.3.10 | ^7.15.5 | - | template | -| @react-navigation/drawer | ^7.3.9 | ^7.9.4 | - | template | -| react-native | 0.81.5 | ^0.84.1 | - | template | -| react-native-gesture-handler | ~2.28.0 | ^2.30.0 | - | template | -| react-native-reanimated | ~4.1.1 | ^4.2.2 | - | template | -| react-native-safe-area-context | ~5.6.0 | ^5.7.0 | - | template | -| react-native-screens | ~4.16.0 | ^4.24.0 | - | template | -| react-native-worklets | ^0.5.1 | ^0.7.4 | - | template | -| @babel/core | ^7.28.0 | ^7.29.0 | - | template | -| react-native-edge-to-edge | ^1.7.0 | ^1.8.1 | - | template | -| react-native-nitro-modules | ^0.29.4 | ^0.35.2 | - | template | -| react-native-unistyles | ^3.0.12 | ^3.1.1 | - | template | -| ajv | ^8.17.1 | ^8.18.0 | - | template | -| @react-navigation/elements | ^2.8.1 | ^2.9.10 | - | template | -| react-native-keyboard-controller | 1.18.5 | ^1.21.0 | - | template | -| react-native-svg | 15.12.1 | ^15.15.3 | - | template | -| uniwind | ^1.2.2 | ^1.5.0 | - | template | -| @base-ui/react | ^1.0.0 | ^1.3.0 | - | template | -| react-router | ^7.10.1 | ^7.13.1 | - | template | -| @hookform/resolvers | ^5.1.1 | ^5.2.2 | - | template | -| @react-router/fs-routes | ^7.10.1 | ^7.13.1 | - | template | -| @react-router/node | ^7.10.1 | ^7.13.1 | - | template | -| @react-router/serve | ^7.10.1 | ^7.13.1 | - | template | -| @react-router/dev | ^7.10.1 | ^7.13.1 | - | template | -| @tanstack/react-router | ^1.154.3 | ^1.167.4 | - | template | -| @tanstack/react-router-devtools | ^1.154.3 | ^1.166.9 | - | template | -| @tanstack/react-start | ^1.154.3 | ^1.166.15 | - | template | -| web-vitals | ^5.0.3 | ^5.1.0 | - | template | -| @tailwindcss/postcss | ^4.1.10 | ^4.2.1 | - | template | -| @solidjs/start | ^1.1.0 | ^1.3.2 | - | template | - -### Patch Updates - -| Package | Current | Latest | Ecosystem | Source | -|---------|---------|--------|-----------|--------| -| better-auth | ^1.5.1 | ^1.5.5 | - | map | -| @better-auth/expo | ^1.5.1 | ^1.5.5 | - | map | -| @better-auth/drizzle-adapter | ^1.5.1 | ^1.5.5 | - | map | -| @better-auth/prisma-adapter | ^1.5.1 | ^1.5.5 | - | map | -| @better-auth/mongo-adapter | ^1.5.1 | ^1.5.5 | - | map | -| @clerk/clerk-expo | ^2.19.29 | ^2.19.31 | clerk | map | -| @stackframe/stack | ^2.8.71 | ^2.8.77 | - | map | -| drizzle-kit | ^0.31.9 | ^0.31.10 | drizzle | map | -| typeorm | ^0.3.23 | ^0.3.28 | - | map | -| kysely | ^0.28.3 | ^0.28.12 | - | map | -| @mikro-orm/better-sqlite | ^6.6.8 | ^6.6.9 | mikro | map | -| sequelize | ^6.37.5 | ^6.37.8 | - | map | -| @tauri-apps/cli | ^2.10.0 | ^2.10.1 | - | map | -| @biomejs/biome | ^2.4.4 | ^2.4.7 | - | map | -| @types/bun | ^1.3.9 | ^1.3.10 | - | map | -| elysia | ^1.4.21 | ^1.4.28 | - | map | -| @hono/node-server | ^1.19.9 | ^1.19.11 | - | map | -| cors | ^2.8.5 | ^2.8.6 | - | map | -| @nestjs/core | ^11.1.14 | ^11.1.17 | nestjs | map | -| @nestjs/common | ^11.1.14 | ^11.1.17 | nestjs | map | -| @nestjs/platform-express | ^11.1.14 | ^11.1.17 | nestjs | map | -| rxjs | ^7.8.1 | ^7.8.2 | - | map | -| @adonisjs/assembler | ^8.0.0 | ^8.0.1 | - | map | -| ai | ^6.0.3 | ^6.0.116 | - | map | -| @ai-sdk/anthropic | ^3.0.50 | ^3.0.58 | - | map | -| @ai-sdk/google | ^3.0.34 | ^3.0.43 | - | map | -| @ai-sdk/vue | ^3.0.105 | ^3.0.116 | - | map | -| @ai-sdk/svelte | ^4.0.105 | ^4.0.116 | - | map | -| @ai-sdk/react | ^3.0.107 | ^3.0.118 | - | map | -| mastra | ^1.3.1 | ^1.3.12 | - | map | -| @voltagent/core | ^2.6.2 | ^2.6.10 | - | map | -| @langchain/langgraph | ^1.2.0 | ^1.2.2 | - | map | -| @langchain/core | ^1.1.29 | ^1.1.33 | - | map | -| @langchain/google-genai | ^2.1.22 | ^2.1.26 | - | map | -| @orpc/server | ^1.13.6 | ^1.13.7 | orpc | map | -| @orpc/client | ^1.13.6 | ^1.13.7 | orpc | map | -| @orpc/openapi | ^1.13.6 | ^1.13.7 | orpc | map | -| @orpc/zod | ^1.13.6 | ^1.13.7 | orpc | map | -| @orpc/tanstack-query | ^1.13.6 | ^1.13.7 | orpc | map | -| graphql-yoga | ^5.18.0 | ^5.18.1 | - | map | -| next | ^16.1.1 | ^16.1.7 | - | map | -| @tanstack/solid-query | ^5.90.23 | ^5.90.26 | tanstack | map | -| @tanstack/angular-query-experimental | ^5.90.0 | ^5.90.25 | - | map | -| @tanstack/react-virtual | ^3.13.22 | ^3.13.23 | - | map | -| @tanstack/vue-virtual | ^3.13.22 | ^3.13.23 | - | map | -| @tanstack/svelte-virtual | ^3.13.22 | ^3.13.23 | - | map | -| @tanstack/solid-virtual | ^3.13.22 | ^3.13.23 | - | map | -| @tanstack/angular-virtual | ^4.0.10 | ^4.0.11 | - | map | -| @tanstack/ai | ^0.8.0 | ^0.8.1 | - | map | -| @tanstack/ai-react | ^0.7.1 | ^0.7.2 | - | map | -| @tanstack/ai-solid | ^0.6.6 | ^0.6.7 | - | map | -| @polar-sh/better-auth | ^1.8.1 | ^1.8.3 | - | map | -| react | ^19.2.3 | ^19.2.4 | - | map | -| @types/react | ^19.2.7 | ^19.2.14 | - | map | -| postmark | ^4.0.5 | ^4.0.7 | - | map | -| @heroui/react | ^2.8.9 | ^2.8.10 | - | map | -| @mantine/core | ^8.3.15 | ^8.3.17 | mantine | map | -| @mantine/hooks | ^8.3.15 | ^8.3.17 | mantine | map | -| radix-ui | ^1.4.1 | ^1.4.3 | - | map | -| @phosphor-icons/react | ^2.1.7 | ^2.1.10 | - | map | -| @fontsource-variable/inter | ^5.2.5 | ^5.2.8 | - | map | -| @fontsource-variable/figtree | ^5.2.2 | ^5.2.10 | - | map | -| @fontsource-variable/noto-sans | ^5.2.5 | ^5.2.10 | - | map | -| @fontsource-variable/nunito-sans | ^5.2.3 | ^5.2.7 | - | map | -| @fontsource-variable/raleway | ^5.2.5 | ^5.2.8 | - | map | -| @fontsource-variable/dm-sans | ^5.2.5 | ^5.2.8 | - | map | -| @fontsource-variable/outfit | ^5.2.5 | ^5.2.8 | - | map | -| @fontsource-variable/jetbrains-mono | ^5.2.5 | ^5.2.8 | - | map | -| @fontsource/roboto | ^5.2.5 | ^5.2.10 | - | map | -| @fontsource/public-sans | ^5.2.5 | ^5.2.7 | - | map | -| @ark-ui/react | ^5.34.0 | ^5.34.1 | ark | map | -| @ark-ui/vue | ^5.34.0 | ^5.34.1 | ark | map | -| @ark-ui/solid | ^5.34.0 | ^5.34.1 | ark | map | -| @ark-ui/svelte | ^5.19.0 | ^5.19.1 | ark | map | -| zustand | ^5.0.5 | ^5.0.12 | - | map | -| @tanstack/store | ^0.9.1 | ^0.9.2 | tanstack | map | -| @tanstack/react-store | ^0.9.1 | ^0.9.2 | tanstack | map | -| formik | ^2.4.6 | ^2.4.9 | - | map | -| @tanstack/react-form | ^1.28.3 | ^1.28.5 | - | map | -| @tanstack/solid-form | ^1.28.3 | ^1.28.5 | - | map | -| partykit | ^0.0.111 | ^0.0.115 | - | map | -| yjs | ^13.6.27 | ^13.6.30 | - | map | -| @trigger.dev/sdk | ^4.4.1 | ^4.4.3 | - | map | -| filepond | ^4.32.10 | ^4.32.12 | - | map | -| vue | ^3.5.21 | ^3.5.30 | - | template | -| @iconify-json/lucide | ^1.2.57 | ^1.2.98 | - | template | -| react-dom | 19.2.3 | ^19.2.4 | - | template | -| solid-js | ^1.9.9 | ^1.9.11 | - | template | -| vite-plugin-solid | ^2.11.8 | ^2.11.11 | - | template | -| @react-navigation/native | ^7.1.6 | ^7.1.33 | - | template | -| react-native-web | ^0.21.0 | ^0.21.2 | - | template | -| heroui-native | ^1.0.0-beta.9 | ^1.0.0-rc.4 | - | template | -| sonner | ^2.0.5 | ^2.0.7 | - | template | -| postcss | ^8.5.3 | ^8.5.8 | - | template | -| isbot | ^5.1.28 | ^5.1.36 | - | template | -| @solidjs/router | ^0.15.3 | ^0.15.4 | - | template | -| vinxi | ^0.5.3 | ^0.5.11 | - | template | - -## Version Mismatches (map vs template) - -| Package | Map Version | Template Version | Template File | -|---------|-------------|------------------|---------------| -| @types/node | ^22.13.14 | ^24.3.0 | backend/convex/packages/backend/package.json.hbs | -| @redwoodjs/core | ^8.9.0 | ^8.8.0 | frontend/redwood/package.json.hbs | -| @redwoodjs/api | ^8.9.0 | ^8.6.1 | frontend/redwood/api/package.json.hbs | -| @redwoodjs/graphql-server | ^8.9.0 | ^8.6.1 | frontend/redwood/api/package.json.hbs | -| @redwoodjs/forms | ^8.9.0 | ^8.6.1 | frontend/redwood/web/package.json.hbs | -| @redwoodjs/router | ^8.9.0 | ^8.6.1 | frontend/redwood/web/package.json.hbs | -| @redwoodjs/web | ^8.9.0 | ^8.6.1 | frontend/redwood/web/package.json.hbs | -| react | ^19.2.3 | ^19.1.0 | frontend/redwood/web/package.json.hbs | -| @redwoodjs/vite | ^8.9.0 | ^8.6.1 | frontend/redwood/web/package.json.hbs | -| @types/react | ^19.2.7 | ^19.1.6 | frontend/redwood/web/package.json.hbs | -| typescript | ^5 | ^5.7.3 | frontend/redwood/web/package.json.hbs | -| typescript | ^5 | ~5.7.0 | frontend/angular/package.json.hbs | -| @sveltejs/adapter-node | ^5.5.4 | ^5.2.12 | frontend/svelte/package.json.hbs | -| @tanstack/solid-form | ^1.28.3 | ^1.23.5 | frontend/solid/package.json.hbs | -| @tanstack/react-form | ^1.28.3 | ^1.0.5 | frontend/native/bare/package.json.hbs | -| @tanstack/react-query | ^5.90.21 | ^5.85.5 | frontend/native/bare/package.json.hbs | -| react | ^19.2.3 | 19.1.0 | frontend/native/bare/package.json.hbs | -| @types/react | ^19.2.7 | ~19.1.10 | frontend/native/bare/package.json.hbs | -| tailwind-merge | ^3.3.0 | ^3.4.0 | frontend/native/uniwind/package.json.hbs | -| @types/node | ^22.13.14 | ^24.10.0 | frontend/native/uniwind/package.json.hbs | -| @types/react | ^19.2.7 | ~19.1.0 | frontend/native/uniwind/package.json.hbs | -| react | ^19.2.3 | 19.2.3 | frontend/react/react-vite/package.json.hbs | -| tailwind-merge | ^3.3.0 | ^3.3.1 | frontend/react/react-vite/package.json.hbs | -| @tanstack/react-form | ^1.28.3 | ^1.12.3 | frontend/react/react-vite/package.json.hbs | -| tw-animate-css | ^1.3.4 | ^1.2.5 | frontend/react/react-vite/package.json.hbs | -| @tanstack/react-query | ^5.90.21 | ^5.90.5 | frontend/react/react-vite/package.json.hbs | -| @tanstack/react-query-devtools | ^5.91.3 | ^5.90.5 | frontend/react/react-vite/package.json.hbs | -| convex | ^1.31.2 | ^1.28.0 | frontend/react/react-vite/package.json.hbs | -| @mantine/core | ^8.3.15 | ^8.3.5 | frontend/react/react-vite/package.json.hbs | -| @mantine/hooks | ^8.3.15 | ^8.3.5 | frontend/react/react-vite/package.json.hbs | -| zod | ^4.1.13 | ^4.1.11 | frontend/react/react-vite/package.json.hbs | -| @types/react | ^19.2.7 | 19.2.7 | frontend/react/react-vite/package.json.hbs | -| typescript | ^5 | ^5.8.3 | frontend/react/react-vite/package.json.hbs | -| @tanstack/react-form | ^1.28.3 | ^1.27.3 | frontend/react/react-router/package.json.hbs | -| tw-animate-css | ^1.3.4 | ^1.3.2 | frontend/react/react-router/package.json.hbs | -| @types/node | ^22.13.14 | ^20 | frontend/react/react-router/package.json.hbs | -| @types/react | ^19.2.7 | ~19.2.7 | frontend/react/react-router/package.json.hbs | -| @tanstack/router-cli | ^1.164.0 | ^1.154.3 | frontend/react/tanstack-router/package.json.hbs | -| @tanstack/react-form | ^1.28.3 | ^1.23.5 | frontend/react/tanstack-start/package.json.hbs | -| @tanstack/react-query | ^5.90.21 | ^5.80.6 | frontend/react/tanstack-start/package.json.hbs | -| @testing-library/dom | ^10.4.1 | ^10.4.0 | frontend/react/tanstack-start/package.json.hbs | -| @testing-library/react | ^16.3.2 | ^16.2.0 | frontend/react/tanstack-start/package.json.hbs | - diff --git a/packages/template-generator/scripts/check-deps.ts b/packages/template-generator/scripts/check-deps.ts index 494fc3b6c..8a947ebe6 100644 --- a/packages/template-generator/scripts/check-deps.ts +++ b/packages/template-generator/scripts/check-deps.ts @@ -81,9 +81,16 @@ async function updateAddDepsFile(updates: VersionInfo[]): Promise { for (const update of updates) { const escapedName = update.name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); - const pattern = new RegExp(`(["']${escapedName}["']:\\s*["'])([^"']+)(["'])`, "g"); + const isIdentifierKey = /^[A-Za-z_$][\w$]*$/.test(update.name); + const quotedPattern = new RegExp(`((?:["'])${escapedName}(?:["'])\\s*:\\s*["'])([^"']+)(["'])`, "g"); + + let newContent = content.replace(quotedPattern, `$1${update.latest}$3`); + + if (isIdentifierKey) { + const unquotedPattern = new RegExp(`(^[\\t ]*${escapedName}\\s*:\\s*["'])([^"']+)(["'])`, "gm"); + newContent = newContent.replace(unquotedPattern, `$1${update.latest}$3`); + } - const newContent = content.replace(pattern, `$1${update.latest}$3`); if (newContent !== content) { content = newContent; updated = true; @@ -125,6 +132,44 @@ async function updateTemplateFiles( return anyUpdated; } +async function syncTemplateVersionMismatches( + templatesDir: string, + mismatches: Array<{ name: string; mapVersion: string; templateVersion: string; file: string }>, +): Promise { + if (mismatches.length === 0) return 0; + + const fileUpdates = new Map(); + + for (const mismatch of mismatches) { + const existing = fileUpdates.get(mismatch.file) ?? []; + existing.push(mismatch); + fileUpdates.set(mismatch.file, existing); + } + + let fixedCount = 0; + + for (const [file, updates] of fileUpdates) { + const fullPath = path.join(templatesDir, file); + let content = fs.readFileSync(fullPath, "utf-8"); + + for (const update of updates) { + const escapedPkg = update.name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + const escapedVersion = update.templateVersion.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + const pattern = new RegExp(`("${escapedPkg}"\\s*:\\s*)"${escapedVersion}"`, "g"); + + const newContent = content.replace(pattern, `$1"${update.mapVersion}"`); + if (newContent !== content) { + content = newContent; + fixedCount++; + } + } + + fs.writeFileSync(fullPath, content, "utf-8"); + } + + return fixedCount; +} + async function main() { if (options.help) { printHelp(); @@ -233,12 +278,22 @@ async function main() { } if (anySuccess) { + const postApplyScan = scanTemplateVersions(templatesDir); + const fixedMismatchCount = await syncTemplateVersionMismatches( + templatesDir, + postApplyScan.versionMismatches, + ); + console.log("Updates applied successfully!\n"); console.log("Updated packages:"); for (const update of toApply) { const src = update.source === "template" ? " (template)" : ""; console.log(` ${update.name}: ${update.current} -> ${update.latest}${src}`); } + + if (fixedMismatchCount > 0) { + console.log(`\nSynchronized ${fixedMismatchCount} template version mismatch(es) with dependencyVersionMap.`); + } } else { console.error("Failed to apply updates."); process.exit(1); diff --git a/packages/template-generator/scripts/sync-template-versions.ts b/packages/template-generator/scripts/sync-template-versions.ts index 6e61ebfd8..5b1660bd6 100644 --- a/packages/template-generator/scripts/sync-template-versions.ts +++ b/packages/template-generator/scripts/sync-template-versions.ts @@ -16,7 +16,7 @@ import path from "node:path"; import { fileURLToPath } from "node:url"; import { glob } from "tinyglobby"; -import { dependencyVersionMap } from "../src/utils/add-deps"; +import { scanTemplateVersions } from "../src/utils/dependency-checker"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); @@ -38,11 +38,6 @@ type Mismatch = { mapVersion: string; }; -type TemplatePackageJson = { - dependencies?: Record; - devDependencies?: Record; -}; - function printHelp() { console.log(` Template Version Sync @@ -63,87 +58,28 @@ Examples: `); } -function extractVersionsFromTemplate(content: string): Record { - const versions: Record = {}; - - // Parse the template as JSON (ignoring Handlebars syntax for now) - // This is a simplified approach that works for most cases - try { - // Remove Handlebars expressions temporarily for parsing - const cleanedContent = content.replace(/\{\{[^}]+\}\}/g, '""').replace(/,(\s*[}\]])/g, "$1"); // Remove trailing commas - - const parsed = JSON.parse(cleanedContent) as TemplatePackageJson; - - // Extract versions from dependencies and devDependencies - if (parsed.dependencies) { - for (const [pkg, version] of Object.entries(parsed.dependencies)) { - if (typeof version === "string" && !version.startsWith("{{")) { - versions[pkg] = version; - } - } - } - - if (parsed.devDependencies) { - for (const [pkg, version] of Object.entries(parsed.devDependencies)) { - if (typeof version === "string" && !version.startsWith("{{")) { - versions[pkg] = version; - } - } - } - } catch { - // If JSON parsing fails, try regex extraction - const versionPattern = /"([^"]+)":\s*"(\^?[\d.]+[^"]*)"/g; - let match; - while ((match = versionPattern.exec(content)) !== null) { - const [, pkg, version] = match; - if (!version.startsWith("{{") && !pkg.startsWith("{")) { - versions[pkg] = version; - } - } - } - - return versions; -} - async function checkTemplateVersions(): Promise { const files = await glob("**/package.json.hbs", { cwd: TEMPLATES_DIR, dot: true, onlyFiles: true, }); + const { templateOnly, versionMismatches } = scanTemplateVersions(TEMPLATES_DIR); console.log(`Scanning ${files.length} package.json.hbs files...\n`); - const mismatches: Mismatch[] = []; - - for (const file of files) { - const fullPath = path.join(TEMPLATES_DIR, file); - const content = fs.readFileSync(fullPath, "utf-8"); - - const templateVersions = extractVersionsFromTemplate(content); - - for (const [pkg, templateVersion] of Object.entries(templateVersions)) { - // Check if this package is in our version map - const mapVersion = dependencyVersionMap[pkg as keyof typeof dependencyVersionMap]; - - if (mapVersion) { - if (templateVersion !== mapVersion) { - mismatches.push({ - file, - package: pkg, - templateVersion, - mapVersion, - }); - } else if (options.verbose) { - console.log(` ${pkg}: ${templateVersion}`); - } - } else if (options.verbose) { - console.log(` ? ${pkg}: ${templateVersion} (not in version map)`); - } + if (options.verbose) { + for (const [pkg, version] of Object.entries(templateOnly)) { + console.log(` ? ${pkg}: ${version} (not in version map)`); } } - return mismatches; + return versionMismatches.map((m) => ({ + file: m.file, + package: m.name, + templateVersion: m.templateVersion, + mapVersion: m.mapVersion, + })); } async function fixMismatches(mismatches: Mismatch[]): Promise { diff --git a/packages/template-generator/src/utils/add-deps.ts b/packages/template-generator/src/utils/add-deps.ts index 74186ac4c..f968bd787 100644 --- a/packages/template-generator/src/utils/add-deps.ts +++ b/packages/template-generator/src/utils/add-deps.ts @@ -12,199 +12,199 @@ type PackageJson = { }; export const dependencyVersionMap = { - typescript: "^5", + typescript: "^6.0.2", - "better-auth": "^1.5.5", - "@better-auth/expo": "^1.5.5", - "@better-auth/drizzle-adapter": "^1.5.5", - "@better-auth/prisma-adapter": "^1.5.5", - "@better-auth/mongo-adapter": "^1.5.5", + "better-auth": "^1.5.6", + "@better-auth/expo": "^1.5.6", + "@better-auth/drizzle-adapter": "^1.5.6", + "@better-auth/prisma-adapter": "^1.5.6", + "@better-auth/mongo-adapter": "^1.5.6", - "@clerk/nextjs": "^6.39.0", + "@clerk/nextjs": "^7.0.7", "@clerk/clerk-react": "^5.61.3", - "@clerk/tanstack-react-start": "^0.29.8", + "@clerk/tanstack-react-start": "^1.0.7", "@clerk/clerk-expo": "^2.19.31", // Auth.js (NextAuth v5) - "next-auth": "^5.0.0-beta.28", - "@auth/core": "^0.39.1", + "next-auth": "^4.24.13", + "@auth/core": "^0.34.3", "@auth/drizzle-adapter": "^1.11.1", "@auth/prisma-adapter": "^2.11.1", // Stack Auth - "@stackframe/stack": "^2.8.77", + "@stackframe/stack": "^2.8.78", // Supabase Auth - "@supabase/supabase-js": "^2.99.2", + "@supabase/supabase-js": "^2.100.1", "@supabase/ssr": "^0.9.0", // Auth0 - "@auth0/nextjs-auth0": "^4.16.0", + "@auth0/nextjs-auth0": "^4.16.1", - "drizzle-orm": "^0.45.1", + "drizzle-orm": "^0.45.2", "drizzle-kit": "^0.31.10", - "@planetscale/database": "^1.19.0", + "@planetscale/database": "^1.20.1", - "@libsql/client": "^0.17.0", - libsql: "0.5.22", + "@libsql/client": "^0.17.2", + libsql: "^0.5.29", "@neondatabase/serverless": "^1.0.2", - pg: "^8.16.3", - "@types/pg": "^8.18.0", + pg: "^8.20.0", + "@types/pg": "^8.20.0", "@types/ws": "^8.18.1", - ws: "^8.18.3", + ws: "^8.20.0", - mysql2: "^3.14.0", + mysql2: "^3.20.0", - "@prisma/client": "^7.5.0", - prisma: "^7.4.1", - "@prisma/adapter-d1": "^7.5.0", - "@prisma/adapter-neon": "^7.5.0", - "@prisma/adapter-mariadb": "^7.5.0", - "@prisma/adapter-libsql": "^7.5.0", - "@prisma/adapter-better-sqlite3": "^7.5.0", - "@prisma/adapter-pg": "^7.5.0", - "@prisma/adapter-planetscale": "^7.5.0", + "@prisma/client": "^7.6.0", + prisma: "^7.6.0", + "@prisma/adapter-d1": "^7.6.0", + "@prisma/adapter-neon": "^7.6.0", + "@prisma/adapter-mariadb": "^7.6.0", + "@prisma/adapter-libsql": "^7.6.0", + "@prisma/adapter-better-sqlite3": "^7.6.0", + "@prisma/adapter-pg": "^7.6.0", + "@prisma/adapter-planetscale": "^7.6.0", - mongoose: "^8.14.0", + mongoose: "^9.3.3", // TypeORM - typeorm: "^0.3.23", - "better-sqlite3": "^11.9.1", + typeorm: "^0.3.28", + "better-sqlite3": "^12.8.0", "@types/better-sqlite3": "^7.6.13", // Kysely - kysely: "^0.28.3", + kysely: "^0.28.14", // MikroORM - "@mikro-orm/core": "^6.6.8", - "@mikro-orm/sqlite": "^6.6.8", - "@mikro-orm/postgresql": "^6.6.8", - "@mikro-orm/mysql": "^6.6.8", - "@mikro-orm/better-sqlite": "^6.6.9", + "@mikro-orm/core": "^7.0.6", + "@mikro-orm/sqlite": "^7.0.6", + "@mikro-orm/postgresql": "^7.0.6", + "@mikro-orm/mysql": "^7.0.6", + "@mikro-orm/better-sqlite": "^6.6.10", // Sequelize - sequelize: "^6.37.5", + sequelize: "^6.37.8", "sequelize-typescript": "^2.1.6", - sqlite3: "^5.1.7", + sqlite3: "^6.0.1", "vite-plugin-pwa": "^1.2.0", "@vite-pwa/assets-generator": "^1.0.2", "@tauri-apps/cli": "^2.10.1", - "@biomejs/biome": "^2.4.7", + "@biomejs/biome": "^2.4.9", - oxlint: "^1.34.0", - oxfmt: "^0.19.0", + oxlint: "^1.57.0", + oxfmt: "^0.42.0", husky: "^9.1.7", - lefthook: "^2.0.13", + lefthook: "^2.1.4", "lint-staged": "^16.4.0", - tsx: "^4.19.2", - "@types/node": "^22.13.14", + tsx: "^4.21.0", + "@types/node": "^25.5.0", - "@types/bun": "^1.3.10", + "@types/bun": "^1.3.11", "@elysiajs/node": "^1.4.5", "@elysiajs/cors": "^1.4.1", "@elysiajs/trpc": "^1.1.0", - elysia: "^1.4.21", + elysia: "^1.4.28", - "@hono/node-server": "^1.19.11", + "@hono/node-server": "^1.19.12", "@hono/trpc-server": "^0.4.2", - hono: "^4.8.2", - "@octokit/rest": "^21.0.2", - "@vercel/sandbox": "^1.8.1", + hono: "^4.12.9", + "@octokit/rest": "^22.0.1", + "@vercel/sandbox": "^1.9.0", "bash-tool": "^1.3.15", - cors: "^2.8.5", - express: "^5.1.0", + cors: "^2.8.6", + express: "^5.2.1", "@types/express": "^5.0.6", "@types/cors": "^2.8.19", - fastify: "^5.3.3", + fastify: "^5.8.4", "@fastify/cors": "^11.2.0", "@nestjs/core": "^11.1.17", "@nestjs/common": "^11.1.17", "@nestjs/platform-express": "^11.1.17", "reflect-metadata": "^0.2.2", - rxjs: "^7.8.1", + rxjs: "^7.8.2", // Encore.ts - "encore.dev": "^1.56.0", + "encore.dev": "^1.56.2", // AdonisJS - "@adonisjs/core": "^7.0.0", + "@adonisjs/core": "^7.3.0", "@adonisjs/cors": "^3.0.0", - "@adonisjs/assembler": "^8.0.1", - "@adonisjs/tsconfig": "^1.4.1", + "@adonisjs/assembler": "^8.4.0", + "@adonisjs/tsconfig": "^2.0.0", // Nitro - nitropack: "^2.11.12", - h3: "^1.15.3", + nitropack: "^2.13.2", + h3: "^2.0.0", // feTS - fets: "^0.8.5", + fets: "^0.8.6", - turbo: "^2.6.3", + turbo: "^2.8.21", // Chat SDK (Vercel) - chat: "^4.14.0", - "@chat-adapter/slack": "^4.20.2", - "@chat-adapter/discord": "^4.20.2", - "@chat-adapter/github": "^4.20.2", - "@chat-adapter/state-memory": "^4.20.2", - "@chat-adapter/state-redis": "^4.20.2", - - ai: "^6.0.3", - "@ai-sdk/anthropic": "^3.0.58", - "@ai-sdk/google": "^3.0.43", - "@ai-sdk/vue": "^3.0.116", - "@ai-sdk/svelte": "^4.0.116", - "@ai-sdk/react": "^3.0.118", + chat: "^4.23.0", + "@chat-adapter/slack": "^4.23.0", + "@chat-adapter/discord": "^4.23.0", + "@chat-adapter/github": "^4.23.0", + "@chat-adapter/state-memory": "^4.23.0", + "@chat-adapter/state-redis": "^4.23.0", + + ai: "^6.0.141", + "@ai-sdk/anthropic": "^3.0.64", + "@ai-sdk/google": "^3.0.53", + "@ai-sdk/vue": "^3.0.141", + "@ai-sdk/svelte": "^4.0.141", + "@ai-sdk/react": "^3.0.143", "@ai-sdk/devtools": "^0.0.15", - streamdown: "^1.6.10", - shiki: "^3.20.0", + streamdown: "^2.5.0", + shiki: "^4.0.2", // Mastra AI Framework - mastra: "^1.3.1", - "@mastra/core": "^1.13.2", + mastra: "^1.3.15", + "@mastra/core": "^1.17.0", // VoltAgent AI Framework - "@voltagent/core": "^2.6.10", - "@voltagent/server-hono": "^2.0.7", + "@voltagent/core": "^2.6.13", + "@voltagent/server-hono": "^2.0.8", "@voltagent/libsql": "^2.1.2", "@voltagent/logger": "^2.0.2", // LangGraph.js AI Framework - "@langchain/langgraph": "^1.2.2", - "@langchain/core": "^1.1.33", + "@langchain/langgraph": "^1.2.6", + "@langchain/core": "^1.1.36", "@langchain/google-genai": "^2.1.26", // OpenAI Agents SDK - "@openai/agents": "^0.7.2", + "@openai/agents": "^0.8.1", // Google ADK (Agent Development Kit) - "@google/adk": "^0.5.0", + "@google/adk": "^0.6.0", // ModelFusion AI Library modelfusion: "^0.137.0", // LangChain (standalone) - langchain: "^0.3.20", + langchain: "^1.2.37", // LlamaIndex - llamaindex: "^0.9.5", + llamaindex: "^0.12.1", - "@orpc/server": "^1.13.7", - "@orpc/client": "^1.13.7", - "@orpc/openapi": "^1.13.7", - "@orpc/zod": "^1.13.7", - "@orpc/tanstack-query": "^1.13.7", + "@orpc/server": "^1.13.13", + "@orpc/client": "^1.13.13", + "@orpc/openapi": "^1.13.13", + "@orpc/zod": "^1.13.13", + "@orpc/tanstack-query": "^1.13.13", // ts-rest "@ts-rest/core": "^3.52.1", @@ -215,40 +215,40 @@ export const dependencyVersionMap = { // Garph (GraphQL) garph: "^0.6.8", "graphql-yoga": "^5.18.1", - graphql: "^16.11.0", + graphql: "^16.13.2", "@garph/gqty": "^0.4.5", - gqty: "^3.5.0", + gqty: "^3.6.0", - "@trpc/tanstack-react-query": "^11.13.4", - "@trpc/server": "^11.13.4", - "@trpc/client": "^11.13.4", + "@trpc/tanstack-react-query": "^11.16.0", + "@trpc/server": "^11.16.0", + "@trpc/client": "^11.16.0", - next: "^16.1.1", + next: "^16.2.1", - convex: "^1.31.2", + convex: "^1.34.1", "@convex-dev/react-query": "^0.1.0", - "@convex-dev/agent": "^0.3.2", + "@convex-dev/agent": "^0.6.1", "convex-svelte": "^0.0.12", "convex-nuxt": "0.1.5", "convex-vue": "^0.1.5", - "@convex-dev/better-auth": "^0.11.2", + "@convex-dev/better-auth": "^0.11.4", - "@tanstack/svelte-query": "^5.85.3", - "@tanstack/svelte-query-devtools": "^5.85.3", + "@tanstack/svelte-query": "^6.1.10", + "@tanstack/svelte-query-devtools": "^6.1.10", - "@tanstack/vue-query-devtools": "^5.90.2", - "@tanstack/vue-query": "^5.92.9", + "@tanstack/vue-query-devtools": "^6.1.10", + "@tanstack/vue-query": "^5.95.2", - "@tanstack/react-query-devtools": "^5.91.3", - "@tanstack/react-query": "^5.90.21", - "@tanstack/react-router-ssr-query": "^1.166.9", - "@tanstack/router-cli": "^1.166.12", + "@tanstack/react-query-devtools": "^5.95.2", + "@tanstack/react-query": "^5.95.2", + "@tanstack/react-router-ssr-query": "^1.166.10", + "@tanstack/router-cli": "^1.166.23", - "@tanstack/solid-query": "^5.90.26", - "@tanstack/solid-query-devtools": "^5.91.3", - "@tanstack/solid-router-devtools": "^1.166.9", + "@tanstack/solid-query": "^5.95.2", + "@tanstack/solid-query-devtools": "^5.95.2", + "@tanstack/solid-router-devtools": "^1.166.11", - "@tanstack/angular-query-experimental": "^5.90.25", + "@tanstack/angular-query-experimental": "^5.95.2", // TanStack Table adapters "@tanstack/react-table": "^8.21.3", @@ -265,94 +265,94 @@ export const dependencyVersionMap = { "@tanstack/angular-virtual": "^4.0.11", // TanStack DB adapters (each adapter has its own versioning) - "@tanstack/db": "^0.5.33", - "@tanstack/react-db": "^0.1.77", - "@tanstack/vue-db": "~0.0.110", - "@tanstack/solid-db": "^0.2.13", - "@tanstack/svelte-db": "^0.1.76", + "@tanstack/db": "^0.6.1", + "@tanstack/react-db": "^0.1.79", + "@tanstack/vue-db": "^0.0.112", + "@tanstack/solid-db": "^0.2.15", + "@tanstack/svelte-db": "^0.1.78", // TanStack Pacer - "@tanstack/pacer": "^0.19.0", - "@tanstack/react-pacer": "^0.20.0", - "@tanstack/solid-pacer": "^0.19.0", + "@tanstack/pacer": "^0.20.1", + "@tanstack/react-pacer": "^0.21.1", + "@tanstack/solid-pacer": "^0.20.1", // TanStack AI - "@tanstack/ai": "^0.8.1", - "@tanstack/ai-react": "^0.7.2", - "@tanstack/ai-solid": "^0.6.7", + "@tanstack/ai": "^0.9.1", + "@tanstack/ai-react": "^0.7.5", + "@tanstack/ai-solid": "^0.6.9", - wrangler: "^4.54.0", - "@cloudflare/vite-plugin": "^1.29.0", - "@opennextjs/cloudflare": "^1.17.1", + wrangler: "^4.78.0", + "@cloudflare/vite-plugin": "^1.30.2", + "@opennextjs/cloudflare": "^1.18.0", "nitro-cloudflare-dev": "^0.2.2", "@sveltejs/adapter-cloudflare": "^7.2.8", "@sveltejs/adapter-node": "^5.5.4", - "@cloudflare/workers-types": "^4.20260317.1", + "@cloudflare/workers-types": "^4.20260329.1", - alchemy: "^0.82.1", + alchemy: "^0.90.1", // SST (Serverless Stack) - sst: "^3.6.11", - "aws-cdk-lib": "^2.243.0", - constructs: "^10.4.2", + sst: "^4.5.12", + "aws-cdk-lib": "^2.245.0", + constructs: "^10.6.0", "@opennextjs/aws": "^3.9.16", - dotenv: "^17.2.2", - tsdown: "^0.16.5", - zod: "^4.1.13", - "@t3-oss/env-core": "^0.13.10", - "@t3-oss/env-nextjs": "^0.13.10", - "@t3-oss/env-nuxt": "^0.13.10", - srvx: "0.8.15", + dotenv: "^17.3.1", + tsdown: "^0.21.7", + zod: "^4.3.6", + "@t3-oss/env-core": "^0.13.11", + "@t3-oss/env-nextjs": "^0.13.11", + "@t3-oss/env-nuxt": "^0.13.11", + srvx: "^0.11.13", "@polar-sh/better-auth": "^1.8.3", - "@polar-sh/sdk": "^0.46.4", + "@polar-sh/sdk": "^0.46.7", // Email - resend: "^4.5.1", - "@react-email/components": "^1.0.9", - "react-email": "^5.2.9", - react: "^19.2.3", + resend: "^6.9.4", + "@react-email/components": "^1.0.10", + "react-email": "^5.2.10", + react: "^19.2.4", "@types/react": "^19.2.14", - nodemailer: "^6.10.1", - "@types/nodemailer": "^6.4.17", - postmark: "^4.0.5", + nodemailer: "^8.0.4", + "@types/nodemailer": "^7.0.11", + postmark: "^4.0.7", "@sendgrid/mail": "^8.1.6", - "@aws-sdk/client-ses": "^3.1010.0", - "@aws-sdk/client-s3": "^3.1010.0", - "@aws-sdk/s3-request-presigner": "^3.1010.0", - "mailgun.js": "^10.2.3", + "@aws-sdk/client-ses": "^3.1019.0", + "@aws-sdk/client-s3": "^3.1019.0", + "@aws-sdk/s3-request-presigner": "^3.1019.0", + "mailgun.js": "^12.7.1", "form-data": "^4.0.5", "@plunk/node": "^3.0.3", // Effect ecosystem (updated 2026-01-21) - effect: "^3.19.14", + effect: "^3.21.0", "@effect/schema": "^0.75.5", - "@effect/platform": "^0.95.0", - "@effect/platform-node": "^0.105.0", - "@effect/platform-bun": "^0.88.0", - "@effect/platform-browser": "^0.75.0", - "@effect/sql": "^0.50.0", - "@effect/sql-sqlite-node": "^0.51.0", - "@effect/sql-sqlite-bun": "^0.51.0", - "@effect/sql-pg": "^0.51.0", - "@effect/sql-mysql2": "^0.51.0", - "@effect/sql-libsql": "^0.40.0", - "@effect/sql-drizzle": "^0.49.0", - "@effect/cli": "^0.74.0", - "@effect/vitest": "^0.28.0", - "@effect/opentelemetry": "^0.62.0", - "@effect/rpc": "^0.74.0", + "@effect/platform": "^0.96.0", + "@effect/platform-node": "^0.106.0", + "@effect/platform-bun": "^0.89.0", + "@effect/platform-browser": "^0.76.0", + "@effect/sql": "^0.51.0", + "@effect/sql-sqlite-node": "^0.52.0", + "@effect/sql-sqlite-bun": "^0.52.0", + "@effect/sql-pg": "^0.52.1", + "@effect/sql-mysql2": "^0.52.0", + "@effect/sql-libsql": "^0.41.0", + "@effect/sql-drizzle": "^0.50.0", + "@effect/cli": "^0.75.0", + "@effect/vitest": "^0.29.0", + "@effect/opentelemetry": "^0.63.0", + "@effect/rpc": "^0.75.0", "@effect/rpc-http": "^0.52.4", - "@effect/cluster": "^0.57.0", - "@effect/workflow": "^0.17.0", - "@effect/ai": "^0.34.0", - "@effect/ai-openai": "^0.38.0", - "@effect/ai-anthropic": "^0.33.2", + "@effect/cluster": "^0.58.0", + "@effect/workflow": "^0.18.0", + "@effect/ai": "^0.35.0", + "@effect/ai-openai": "^0.39.0", + "@effect/ai-anthropic": "^0.25.0", // CSS preprocessors - sass: "^1.86.0", - less: "^4.3.0", + sass: "^1.98.0", + less: "^4.6.4", // UI libraries "@radix-ui/react-dialog": "^1.1.15", @@ -374,27 +374,27 @@ export const dependencyVersionMap = { "@chakra-ui/react": "^3.34.0", "@emotion/react": "^11.14.0", - "@heroui/react": "^2.8.10", + "@heroui/react": "^3.0.1", "framer-motion": "^12.38.0", // Mantine - "@mantine/core": "^8.3.17", - "@mantine/hooks": "^8.3.17", + "@mantine/core": "^8.3.18", + "@mantine/hooks": "^8.3.18", // Base UI "@base-ui-components/react": "^1.0.0-rc.0", // shadcn/ui core and unified packages - shadcn: "^3.6.2", + shadcn: "^4.1.1", "radix-ui": "^1.4.3", "class-variance-authority": "^0.7.1", clsx: "^2.1.1", "tailwind-merge": "^3.5.0", "tw-animate-css": "^1.4.0", - "lucide-react": "^0.577.0", - "@tabler/icons-react": "^3.40.0", - "@hugeicons/react": "^0.3.0", - "@hugeicons/core-free-icons": "^3.3.0", + "lucide-react": "^1.7.0", + "@tabler/icons-react": "^3.41.1", + "@hugeicons/react": "^1.1.6", + "@hugeicons/core-free-icons": "^4.1.0", "@phosphor-icons/react": "^2.1.10", "@remixicon/react": "^4.9.0", @@ -409,119 +409,119 @@ export const dependencyVersionMap = { "@fontsource-variable/jetbrains-mono": "^5.2.8", "@fontsource/roboto": "^5.2.10", "@fontsource/public-sans": "^5.2.7", - geist: "^1.3.1", + geist: "^1.7.0", // Ark UI (headless components for React/Vue/Solid/Svelte) - "@ark-ui/react": "^5.34.1", - "@ark-ui/vue": "^5.34.1", - "@ark-ui/solid": "^5.34.1", - "@ark-ui/svelte": "^5.19.1", + "@ark-ui/react": "^5.35.0", + "@ark-ui/vue": "^5.35.0", + "@ark-ui/solid": "^5.35.0", + "@ark-ui/svelte": "^5.20.0", // React Aria (Adobe's accessible components for React) "react-aria-components": "^1.16.0", - daisyui: "^5.0.0", + daisyui: "^5.5.19", // Qwik "@builder.io/qwik": "^1.19.2", "@builder.io/qwik-city": "^1.19.2", - "@builder.io/qwik-react": "^0.7.0", + "@builder.io/qwik-react": "^0.5.8", // Angular - "@angular/core": "^19.2.0", - "@angular/common": "^19.2.0", - "@angular/compiler": "^19.2.0", - "@angular/platform-browser": "^19.2.0", - "@angular/platform-browser-dynamic": "^19.2.0", - "@angular/router": "^19.2.0", - "@angular/forms": "^19.2.0", - "@angular/animations": "^19.2.0", - "@angular-devkit/build-angular": "^19.2.0", - "@angular/cli": "^19.2.0", - "@angular/compiler-cli": "^19.2.0", + "@angular/core": "^21.2.6", + "@angular/common": "^21.2.6", + "@angular/compiler": "^21.2.6", + "@angular/platform-browser": "^21.2.6", + "@angular/platform-browser-dynamic": "^21.2.6", + "@angular/router": "^21.2.6", + "@angular/forms": "^21.2.6", + "@angular/animations": "^21.2.6", + "@angular-devkit/build-angular": "^21.2.5", + "@angular/cli": "^21.2.5", + "@angular/compiler-cli": "^21.2.6", // State management - zustand: "^5.0.5", - jotai: "^2.12.5", - nanostores: "^0.11.3", - "@nanostores/react": "^0.8.4", + zustand: "^5.0.12", + jotai: "^2.19.0", + nanostores: "^1.2.0", + "@nanostores/react": "^1.1.0", "@reduxjs/toolkit": "^2.11.2", "react-redux": "^9.2.0", - mobx: "^6.13.5", + mobx: "^6.15.0", "mobx-react-lite": "^4.1.1", - xstate: "^5.19.4", - "@xstate/react": "^5.0.4", - valtio: "^2.1.2", - "@tanstack/store": "^0.9.2", - "@tanstack/react-store": "^0.9.2", + xstate: "^5.30.0", + "@xstate/react": "^6.1.0", + valtio: "^2.3.1", + "@tanstack/store": "^0.9.3", + "@tanstack/react-store": "^0.9.3", "@legendapp/state": "^2.1.15", // Validation libraries - valibot: "^1.1.0", - arktype: "^2.1.29", - "@sinclair/typebox": "^0.34.48", - typia: "^9.7.1", + valibot: "^1.3.1", + arktype: "^2.2.0", + "@sinclair/typebox": "^0.34.49", + typia: "^12.0.1", runtypes: "^7.0.4", // Form libraries - formik: "^2.4.6", - yup: "^1.6.1", - "final-form": "^4.20.10", - "react-final-form": "^6.5.9", + formik: "^2.4.9", + yup: "^1.7.1", + "final-form": "^5.0.0", + "react-final-form": "^7.0.0", "@conform-to/react": "^1.17.1", "@conform-to/zod": "^1.17.1", "@modular-forms/solid": "^0.25.1", "@modular-forms/qwik": "^0.29.1", - "@tanstack/react-form": "^1.28.5", - "@tanstack/solid-form": "^1.28.5", + "@tanstack/react-form": "^1.28.6", + "@tanstack/solid-form": "^1.28.6", // Real-time/WebSocket "socket.io": "^4.8.3", "socket.io-client": "^4.8.3", - partykit: "^0.0.111", - partysocket: "^1.0.2", - ably: "^2.6.3", - pusher: "^5.2.0", - "pusher-js": "^8.4.0", - "@liveblocks/client": "^3.15.2", - "@liveblocks/react": "^3.15.2", - "@liveblocks/node": "^3.15.2", - yjs: "^13.6.27", - "y-websocket": "^2.1.0", + partykit: "^0.0.115", + partysocket: "^1.1.16", + ably: "^2.21.0", + pusher: "^5.3.3", + "pusher-js": "^8.4.3", + "@liveblocks/client": "^3.15.5", + "@liveblocks/react": "^3.15.5", + "@liveblocks/node": "^3.15.5", + yjs: "^13.6.30", + "y-websocket": "^3.0.0", "y-protocols": "^1.0.7", "@y-sweet/sdk": "^0.9.1", "@y-sweet/react": "^0.9.1", // Job Queues / Background Workers - bullmq: "^5.34.8", - ioredis: "^5.4.2", + bullmq: "^5.71.1", + ioredis: "^5.10.1", "@trigger.dev/sdk": "^4.4.3", - inngest: "^3.33.0", + inngest: "^4.1.0", "@temporalio/client": "^1.15.0", "@temporalio/worker": "^1.15.0", "@temporalio/workflow": "^1.15.0", "@temporalio/activity": "^1.15.0", // Testing - Jest - jest: "^29.7.0", - "@types/jest": "^29.5.14", + jest: "^30.3.0", + "@types/jest": "^30.0.0", "ts-jest": "^29.4.6", - "@jest/globals": "^29.7.0", - "jest-environment-jsdom": "^29.7.0", + "@jest/globals": "^30.3.0", + "jest-environment-jsdom": "^30.3.0", // Testing - Cypress - cypress: "^14.3.3", + cypress: "^15.13.0", // Testing - Vitest - vitest: "^3.1.1", - "@vitest/ui": "^3.1.1", - "@vitest/coverage-v8": "^3.1.1", - jsdom: "^26.0.0", - "happy-dom": "^18.0.1", + vitest: "^4.1.2", + "@vitest/ui": "^4.1.2", + "@vitest/coverage-v8": "^4.1.2", + jsdom: "^29.0.1", + "happy-dom": "^20.8.9", // Testing - Playwright "@playwright/test": "^1.58.2", - playwright: "^1.52.0", + playwright: "^1.58.2", // Testing Library "@testing-library/dom": "^10.4.1", @@ -532,42 +532,42 @@ export const dependencyVersionMap = { "@testing-library/user-event": "^14.6.1", // MSW (Mock Service Worker) - msw: "^2.7.0", + msw: "^2.12.14", // Storybook - storybook: "^8.6.0", - "@storybook/react": "^8.6.0", - "@storybook/react-vite": "^8.6.0", - "@storybook/vue3-vite": "^8.6.0", - "@storybook/svelte-vite": "^8.6.0", - "@storybook/nextjs": "^8.6.0", - "@storybook/addon-essentials": "^8.6.14", - "@storybook/addon-interactions": "^8.6.14", - "@storybook/test": "^8.6.15", + storybook: "^8.6.18", + "@storybook/react": "^8.6.18", + "@storybook/react-vite": "^8.6.18", + "@storybook/vue3-vite": "^8.6.18", + "@storybook/svelte-vite": "^8.6.18", + "@storybook/nextjs": "^8.6.18", + "@storybook/addon-essentials": "^8.6.18", + "@storybook/addon-interactions": "^8.6.18", + "@storybook/test": "^8.6.18", // Animation - motion: "^12.17.0", - gsap: "^3.12.7", - "@react-spring/web": "^9.7.5", - "@react-spring/native": "^9.7.5", + motion: "^12.38.0", + gsap: "^3.14.2", + "@react-spring/web": "^10.0.3", + "@react-spring/native": "^10.0.3", "@formkit/auto-animate": "^0.9.0", "lottie-react": "^2.4.1", "lottie-react-native": "^7.3.6", // Payments - Stripe - stripe: "^17.5.0", - "@stripe/stripe-js": "^5.5.0", - "@stripe/react-stripe-js": "^3.1.1", + stripe: "^21.0.1", + "@stripe/stripe-js": "^9.0.0", + "@stripe/react-stripe-js": "^6.0.0", // Payments - Lemon Squeezy "@lemonsqueezy/lemonsqueezy.js": "^4.0.0", // Payments - Paddle - "@paddle/paddle-node-sdk": "^1.8.0", + "@paddle/paddle-node-sdk": "^3.6.1", "@paddle/paddle-js": "^1.6.2", // Payments - Dodo Payments - dodopayments: "^2.19.0", + dodopayments: "^2.25.1", "dodopayments-checkout": "^1.8.0", // File Upload - UploadThing @@ -577,12 +577,12 @@ export const dependencyVersionMap = { "@uploadthing/vue": "^7.3.3", "@uploadthing/solid": "^7.3.3", "@uploadthing/nuxt": "^7.1.10", - "@uploadthing/expo": "^7.3.0", + "@uploadthing/expo": "^7.2.6", // File Upload - FilePond - filepond: "^4.32.10", + filepond: "^4.32.12", "react-filepond": "^7.1.3", - "svelte-filepond": "^1.0.2", + "svelte-filepond": "^0.2.2", "vue-filepond": "^7.0.4", "filepond-plugin-image-preview": "^4.6.12", "filepond-plugin-file-validate-type": "^1.2.9", @@ -593,12 +593,12 @@ export const dependencyVersionMap = { "@uppy/dashboard": "^5.1.1", "@uppy/drag-drop": "^5.1.0", "@uppy/progress-bar": "^4.3.2", - "@uppy/xhr-upload": "^5.1.1", + "@uppy/xhr-upload": "^5.2.0", "@uppy/tus": "^5.1.1", "@uppy/react": "^5.2.0", "@uppy/svelte": "^5.2.0", "@uppy/vue": "^3.2.0", - "@uppy/angular": "^0.8.0", + "@uppy/angular": "^1.1.0", // RedwoodJS "@redwoodjs/core": "^8.9.0", @@ -612,65 +612,65 @@ export const dependencyVersionMap = { // Fresh (Deno-native framework - uses JSR/deno.json, not npm) // These are reference versions for Fresh ecosystem - preact: "^10.25.4", - "preact-render-to-string": "^6.6.6", + preact: "^10.29.0", + "preact-render-to-string": "^6.6.7", // Logging - pino: "^9.6.0", + pino: "^10.3.1", "pino-pretty": "^13.1.3", - "pino-http": "^10.4.0", + "pino-http": "^11.0.0", winston: "^3.19.0", // OpenTelemetry - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/sdk-node": "^0.213.0", - "@opentelemetry/auto-instrumentations-node": "^0.71.0", - "@opentelemetry/exporter-trace-otlp-http": "^0.213.0", - "@opentelemetry/exporter-metrics-otlp-http": "^0.213.0", - "@opentelemetry/resources": "^2.6.0", - "@opentelemetry/sdk-metrics": "^2.6.0", + "@opentelemetry/api": "^1.9.1", + "@opentelemetry/sdk-node": "^0.214.0", + "@opentelemetry/auto-instrumentations-node": "^0.72.0", + "@opentelemetry/exporter-trace-otlp-http": "^0.214.0", + "@opentelemetry/exporter-metrics-otlp-http": "^0.214.0", + "@opentelemetry/resources": "^2.6.1", + "@opentelemetry/sdk-metrics": "^2.6.1", "@opentelemetry/semantic-conventions": "^1.40.0", // Sentry - "@sentry/node": "^9.1.0", - "@sentry/profiling-node": "^9.1.0", + "@sentry/node": "^10.46.0", + "@sentry/profiling-node": "^10.46.0", // Grafana (Prometheus metrics) "prom-client": "^15.1.3", // Headless CMS - Payload - payload: "^3.14.1", - "@payloadcms/next": "^3.79.1", - "@payloadcms/richtext-lexical": "^3.79.1", - "@payloadcms/db-postgres": "^3.79.1", - "@payloadcms/db-mongodb": "^3.79.1", - "@payloadcms/db-sqlite": "^3.79.1", - "@payloadcms/plugin-seo": "^3.79.1", - "@payloadcms/storage-s3": "^3.79.1", + payload: "^3.80.0", + "@payloadcms/next": "^3.80.0", + "@payloadcms/richtext-lexical": "^3.80.0", + "@payloadcms/db-postgres": "^3.80.0", + "@payloadcms/db-mongodb": "^3.80.0", + "@payloadcms/db-sqlite": "^3.80.0", + "@payloadcms/plugin-seo": "^3.80.0", + "@payloadcms/storage-s3": "^3.80.0", // Headless CMS - Sanity - sanity: "^3.82.0", - "next-sanity": "^9.11.2", - "@sanity/image-url": "^1.1.0", - "@sanity/vision": "^3.82.0", - "@sanity/client": "^7.3.0", + sanity: "^5.18.0", + "next-sanity": "^12.2.1", + "@sanity/image-url": "^2.1.0", + "@sanity/vision": "^5.18.0", + "@sanity/client": "^7.20.0", // Headless CMS - Strapi "@strapi/client": "^1.6.1", - qs: "^6.14.0", + qs: "^6.15.0", // Headless CMS - TinaCMS - tinacms: "^3.6.1", - "@tinacms/cli": "^2.1.9", + tinacms: "^3.7.1", + "@tinacms/cli": "^2.2.1", // Caching - Upstash Redis "@upstash/redis": "^1.37.0", // Search - Meilisearch - meilisearch: "^0.44.1", + meilisearch: "^0.56.0", // Search - Typesense - typesense: "^2.0.0", + typesense: "^3.0.4", // EdgeDB edgedb: "^2.0.1", @@ -681,8 +681,8 @@ export const dependencyVersionMap = { "@growthbook/growthbook-react": "^1.6.5", // Feature Flags + Analytics - PostHog - "posthog-js": "^1.360.2", - "posthog-node": "^4.3.3", + "posthog-js": "^1.364.1", + "posthog-node": "^5.28.8", // Analytics - Plausible "plausible-tracker": "^0.3.9", diff --git a/packages/template-generator/src/utils/dependency-checker.ts b/packages/template-generator/src/utils/dependency-checker.ts index 85dec9d36..35a6188d0 100644 --- a/packages/template-generator/src/utils/dependency-checker.ts +++ b/packages/template-generator/src/utils/dependency-checker.ts @@ -292,8 +292,9 @@ export function scanTemplateVersions(templatesDir: string): { if (pkg in dependencyVersionMap) { const mapVersion = dependencyVersionMap[pkg as keyof typeof dependencyVersionMap]; - if (mapVersion !== version && !seenMismatches.has(`${pkg}|${version}`)) { - seenMismatches.add(`${pkg}|${version}`); + const mismatchKey = `${relPath}|${pkg}|${version}`; + if (mapVersion !== version && !seenMismatches.has(mismatchKey)) { + seenMismatches.add(mismatchKey); versionMismatches.push({ name: pkg, mapVersion, templateVersion: version, file: relPath }); } } else { @@ -344,8 +345,11 @@ export function findTemplateFilesWithPackage( return results; } +const LOCKSTEP_ECOSYSTEMS = new Set(["storybook"]); + // Cache for npm registry responses -const versionCache = new Map(); +const versionCache = new Map(); +const lockstepVersionCache = new Map(); const CACHE_TTL_MS = 5 * 60 * 1000; // 5 minutes /** @@ -456,16 +460,10 @@ export function getUpdateType(current: string, latest: string): UpdateType { /** * Fetch the latest version of a package from npm registry */ -export async function fetchLatestVersion( - packageName: string, - options: { skipPrerelease?: boolean } = {}, -): Promise { - const { skipPrerelease = true } = options; - - // Check cache +async function fetchPackageInfo(packageName: string): Promise { const cached = versionCache.get(packageName); if (cached && Date.now() - cached.timestamp < CACHE_TTL_MS) { - return cached.latest; + return cached.info; } const encodedName = encodeURIComponent(packageName).replace("%40", "@"); @@ -479,22 +477,63 @@ export async function fetchLatestVersion( throw new Error(`Package ${packageName} not found (${response.status})`); } - const data = (await response.json()) as NpmPackageInfo; + const info = (await response.json()) as NpmPackageInfo; + + versionCache.set(packageName, { info, timestamp: Date.now() }); + return info; +} + +function getStableVersionsDescending(info: NpmPackageInfo): string[] { + return Object.keys(info.versions || {}) + .filter((version) => !/-(alpha|beta|rc|next|canary)/.test(version)) + .sort((a, b) => compareVersions(b, a)); +} + +async function fetchLatestCompatibleEcosystemVersion(ecosystem: string): Promise { + const cached = lockstepVersionCache.get(ecosystem); + if (cached && Date.now() - cached.timestamp < CACHE_TTL_MS) { + return cached.latest; + } + + const ecosystemPackages = ECOSYSTEM_GROUPS[ecosystem]?.filter((pkg) => !pkg.endsWith("/*")) ?? []; + if (ecosystemPackages.length === 0) return undefined; + + const packageInfos = await Promise.all(ecosystemPackages.map((pkg) => fetchPackageInfo(pkg))); + const [firstInfo, ...remainingInfos] = packageInfos; + if (!firstInfo) return undefined; + + const sharedVersions = getStableVersionsDescending(firstInfo); + + for (const info of remainingInfos) { + const stableVersions = new Set(getStableVersionsDescending(info)); + for (let i = sharedVersions.length - 1; i >= 0; i--) { + const version = sharedVersions[i]; + if (!version || !stableVersions.has(version)) { + sharedVersions.splice(i, 1); + } + } + } + + const latest = sharedVersions[0]; + if (latest) { + lockstepVersionCache.set(ecosystem, { latest, timestamp: Date.now() }); + } + return latest; +} + +export async function fetchLatestVersion( + packageName: string, + options: { skipPrerelease?: boolean } = {}, +): Promise { + const { skipPrerelease = true } = options; + const data = await fetchPackageInfo(packageName); let latest = data["dist-tags"]?.latest; // If the latest is a prerelease and we want to skip prereleases, // find the highest stable version if (skipPrerelease && latest && /-(alpha|beta|rc|next|canary)/.test(latest)) { - const versions = Object.keys(data.versions || {}) - .filter((v) => !/-(alpha|beta|rc|next|canary)/.test(v)) - .sort((a, b) => { - const pa = parseVersion(a); - const pb = parseVersion(b); - if (pa.major !== pb.major) return pb.major - pa.major; - if (pa.minor !== pb.minor) return pb.minor - pa.minor; - return pb.patch - pa.patch; - }); + const versions = getStableVersionsDescending(data); if (versions.length > 0 && versions[0]) { latest = versions[0]; } @@ -504,12 +543,20 @@ export async function fetchLatestVersion( throw new Error(`No versions found for ${packageName}`); } - // Update cache - versionCache.set(packageName, { latest, timestamp: Date.now() }); - return latest; } +async function resolveLatestVersion(packageName: string, ecosystem?: string): Promise { + if (ecosystem && LOCKSTEP_ECOSYSTEMS.has(ecosystem)) { + const compatibleVersion = await fetchLatestCompatibleEcosystemVersion(ecosystem); + if (compatibleVersion) { + return compatibleVersion; + } + } + + return fetchLatestVersion(packageName); +} + /** * Check if a specific version exists on npm */ @@ -673,9 +720,9 @@ export async function checkAllVersions(options: { batch.map(async (pkg) => { const entry = allPackages[pkg]!; try { - const latest = await fetchLatestVersion(pkg); - const updateType = getUpdateType(entry.version, latest); const ecosystem = getEcosystem(pkg); + const latest = await resolveLatestVersion(pkg, ecosystem); + const updateType = getUpdateType(entry.version, latest); return { name: pkg, diff --git a/packages/template-generator/templates/backend/convex/packages/backend/package.json.hbs b/packages/template-generator/templates/backend/convex/packages/backend/package.json.hbs index bf5ff9efe..cfbb5698c 100644 --- a/packages/template-generator/templates/backend/convex/packages/backend/package.json.hbs +++ b/packages/template-generator/templates/backend/convex/packages/backend/package.json.hbs @@ -9,7 +9,7 @@ "license": "ISC", "description": "", "devDependencies": { - "@types/node": "^24.3.0" + "@types/node": "^25.5.0" }, "dependencies": {} } diff --git a/packages/template-generator/templates/frontend/angular/package.json.hbs b/packages/template-generator/templates/frontend/angular/package.json.hbs index ae6310fb9..9176b81c1 100644 --- a/packages/template-generator/templates/frontend/angular/package.json.hbs +++ b/packages/template-generator/templates/frontend/angular/package.json.hbs @@ -10,22 +10,22 @@ "watch": "ng build --watch --configuration development" }, "dependencies": { - "@angular/animations": "^19.2.0", - "@angular/common": "^19.2.0", - "@angular/compiler": "^19.2.0", - "@angular/core": "^19.2.0", - "@angular/forms": "^19.2.0", - "@angular/platform-browser": "^19.2.0", - "@angular/platform-browser-dynamic": "^19.2.0", - "@angular/router": "^19.2.0", - "rxjs": "^7.8.1", + "@angular/animations": "^21.2.6", + "@angular/common": "^21.2.6", + "@angular/compiler": "^21.2.6", + "@angular/core": "^21.2.6", + "@angular/forms": "^21.2.6", + "@angular/platform-browser": "^21.2.6", + "@angular/platform-browser-dynamic": "^21.2.6", + "@angular/router": "^21.2.6", + "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "^0.16.1" }, "devDependencies": { - "@angular-devkit/build-angular": "^19.2.0", - "@angular/cli": "^19.2.0", - "@angular/compiler-cli": "^19.2.0", - "typescript": "~5.7.0" + "@angular-devkit/build-angular": "^21.2.5", + "@angular/cli": "^21.2.5", + "@angular/compiler-cli": "^21.2.6", + "typescript": "^5" } } diff --git a/packages/template-generator/templates/frontend/astro/package.json.hbs b/packages/template-generator/templates/frontend/astro/package.json.hbs index e06b6c6a1..dac782d51 100644 --- a/packages/template-generator/templates/frontend/astro/package.json.hbs +++ b/packages/template-generator/templates/frontend/astro/package.json.hbs @@ -10,41 +10,41 @@ "astro": "astro" }, "dependencies": { - "astro": "^5.7.10" + "astro": "^6.1.1" {{#if (eq astroIntegration "react")}} - ,"@astrojs/react": "^4.2.1" - ,"react": "^19.1.0" + ,"@astrojs/react": "^5.0.2" + ,"react": "^19.2.4" ,"react-dom": "^19.2.4" {{#if (eq uiLibrary "shadcn-ui")}} ,"clsx": "^2.1.1" - ,"tailwind-merge": "^3.3.1" + ,"tailwind-merge": "^3.5.0" ,"class-variance-authority": "^0.7.1" {{/if}} {{/if}} {{#if (eq astroIntegration "vue")}} - ,"@astrojs/vue": "^5.0.6" - ,"vue": "^3.5.30" + ,"@astrojs/vue": "^6.0.1" + ,"vue": "^3.5.31" {{/if}} {{#if (eq astroIntegration "svelte")}} - ,"@astrojs/svelte": "^7.0.8" - ,"svelte": "^5.53.12" + ,"@astrojs/svelte": "^8.0.4" + ,"svelte": "^5.55.1" {{/if}} {{#if (eq astroIntegration "solid")}} - ,"@astrojs/solid-js": "^5.0.6" - ,"solid-js": "^1.9.11" + ,"@astrojs/solid-js": "^6.0.1" + ,"solid-js": "^1.9.12" {{/if}} {{#if (eq backend "self")}} - ,"@astrojs/node": "^9.1.3" + ,"@astrojs/node": "^10.0.4" {{/if}} {{#if (eq runtime "workers")}} - ,"@astrojs/cloudflare": "^12.3.1" + ,"@astrojs/cloudflare": "^13.1.4" {{/if}} }, "devDependencies": { - "@tailwindcss/vite": "^4.2.1", - "tailwindcss": "^4.2.1" + "@tailwindcss/vite": "^4.2.2", + "tailwindcss": "^4.2.2" {{#if (eq astroIntegration "react")}} - ,"@types/react": "^19.1.6" + ,"@types/react": "^19.2.14" ,"@types/react-dom": "^19.1.5" {{/if}} } diff --git a/packages/template-generator/templates/frontend/native/bare/package.json.hbs b/packages/template-generator/templates/frontend/native/bare/package.json.hbs index 6f93e1a8e..c81eda389 100644 --- a/packages/template-generator/templates/frontend/native/bare/package.json.hbs +++ b/packages/template-generator/templates/frontend/native/bare/package.json.hbs @@ -11,40 +11,40 @@ }, "dependencies": { "@expo/vector-icons": "^15.1.1", - "@react-navigation/bottom-tabs": "^7.15.5", - "@react-navigation/drawer": "^7.9.4", - "@react-navigation/native": "^7.1.33", - "@tanstack/react-form": "^1.0.5", - "@tanstack/react-query": "^5.85.5", + "@react-navigation/bottom-tabs": "^7.15.9", + "@react-navigation/drawer": "^7.9.8", + "@react-navigation/native": "^7.2.2", + "@tanstack/react-form": "^1.28.6", + "@tanstack/react-query": "^5.95.2", {{#if (includes examples "ai")}} "@stardazed/streams-text-encoding": "^1.0.2", "@ungap/structured-clone": "^1.3.0", {{/if}} - "expo": "^54.0.1", - "expo-constants": "~18.0.8", - "expo-crypto": "~15.0.6", - "expo-linking": "~8.0.7", - "expo-navigation-bar": "~5.0.8", - "expo-network": "~8.0.7", - "expo-router": "~6.0.0", - "expo-secure-store": "~15.0.6", - "expo-splash-screen": "~31.0.8", - "expo-status-bar": "~3.0.7", - "expo-system-ui": "~6.0.7", - "expo-web-browser": "~15.0.6", - "react": "19.1.0", + "expo": "^55.0.9", + "expo-constants": "^55.0.9", + "expo-crypto": "^55.0.10", + "expo-linking": "^55.0.9", + "expo-navigation-bar": "^55.0.9", + "expo-network": "^55.0.9", + "expo-router": "^55.0.8", + "expo-secure-store": "^55.0.9", + "expo-splash-screen": "^55.0.13", + "expo-status-bar": "^55.0.4", + "expo-system-ui": "^55.0.11", + "expo-web-browser": "^55.0.10", + "react": "^19.2.4", "react-dom": "^19.2.4", "react-native": "^0.84.1", - "react-native-gesture-handler": "^2.30.0", - "react-native-reanimated": "^4.2.2", + "react-native-gesture-handler": "^2.30.1", + "react-native-reanimated": "^4.3.0", "react-native-safe-area-context": "^5.7.0", "react-native-screens": "^4.24.0", "react-native-web": "^0.21.2", - "react-native-worklets": "^0.7.4" + "react-native-worklets": "^0.8.1" }, "devDependencies": { "@babel/core": "^7.29.0", - "@types/react": "~19.1.10" + "@types/react": "^19.2.14" }, "private": true } diff --git a/packages/template-generator/templates/frontend/native/unistyles/package.json.hbs b/packages/template-generator/templates/frontend/native/unistyles/package.json.hbs index eb1058479..a4b7c7964 100644 --- a/packages/template-generator/templates/frontend/native/unistyles/package.json.hbs +++ b/packages/template-generator/templates/frontend/native/unistyles/package.json.hbs @@ -11,41 +11,41 @@ }, "dependencies": { "@expo/vector-icons": "^15.1.1", - "@react-navigation/bottom-tabs": "^7.15.5", - "@react-navigation/drawer": "^7.9.4", - "@react-navigation/native": "^7.1.33", + "@react-navigation/bottom-tabs": "^7.15.9", + "@react-navigation/drawer": "^7.9.8", + "@react-navigation/native": "^7.2.2", {{#if (includes examples "ai")}} "@stardazed/streams-text-encoding": "^1.0.2", "@ungap/structured-clone": "^1.3.0", {{/if}} - "@tanstack/react-form": "^1.0.5", - "expo": "^54.0.0", - "expo-constants": "~18.0.8", - "expo-crypto": "~15.0.6", - "expo-linking": "~8.0.7", - "expo-router": "~6.0.0", - "expo-secure-store": "~15.0.6", - "expo-splash-screen": "~31.0.8", - "expo-status-bar": "^3.0.7", - "expo-system-ui": "~6.0.7", - "expo-dev-client": "~6.0.11", - "expo-web-browser": "~15.0.6", - "react": "19.1.0", + "@tanstack/react-form": "^1.28.6", + "expo": "^55.0.9", + "expo-constants": "^55.0.9", + "expo-crypto": "^55.0.10", + "expo-linking": "^55.0.9", + "expo-router": "^55.0.8", + "expo-secure-store": "^55.0.9", + "expo-splash-screen": "^55.0.13", + "expo-status-bar": "^55.0.4", + "expo-system-ui": "^55.0.11", + "expo-dev-client": "^55.0.19", + "expo-web-browser": "^55.0.10", + "react": "^19.2.4", "react-dom": "^19.2.4", "react-native": "^0.84.1", "react-native-edge-to-edge": "^1.8.1", - "react-native-gesture-handler": "^2.30.0", + "react-native-gesture-handler": "^2.30.1", "react-native-nitro-modules": "^0.35.2", - "react-native-reanimated": "^4.2.2", + "react-native-reanimated": "^4.3.0", "react-native-safe-area-context": "^5.7.0", "react-native-screens": "^4.24.0", "react-native-unistyles": "^3.1.1", "react-native-web": "^0.21.2", - "react-native-worklets": "^0.7.4" + "react-native-worklets": "^0.8.1" }, "devDependencies": { "ajv": "^8.18.0", "@babel/core": "^7.29.0", - "@types/react": "~19.1.10" + "@types/react": "^19.2.14" } } diff --git a/packages/template-generator/templates/frontend/native/uniwind/package.json.hbs b/packages/template-generator/templates/frontend/native/uniwind/package.json.hbs index 64c06953d..229940e26 100644 --- a/packages/template-generator/templates/frontend/native/uniwind/package.json.hbs +++ b/packages/template-generator/templates/frontend/native/uniwind/package.json.hbs @@ -12,43 +12,43 @@ "web": "expo start --web" }, "dependencies": { - "@expo/metro-runtime": "~6.1.2", + "@expo/metro-runtime": "^55.0.7", "@expo/vector-icons": "^15.1.1", "@gorhom/bottom-sheet": "^5", - "@react-navigation/drawer": "^7.9.4", - "@react-navigation/elements": "^2.9.10", + "@react-navigation/drawer": "^7.9.8", + "@react-navigation/elements": "^2.9.14", {{#if (includes examples "ai")}} "@stardazed/streams-text-encoding": "^1.0.2", "@ungap/structured-clone": "^1.3.0", {{/if}} - "expo": "^54.0.23", - "expo-constants": "~18.0.10", - "expo-font": "~14.0.9", - "expo-haptics": "^15.0.7", - "expo-linking": "~8.0.8", - "expo-network": "~8.0.7", - "expo-router": "~6.0.14", - "expo-secure-store": "~15.0.7", - "expo-status-bar": "~3.0.8", - "heroui-native": "^1.0.0-rc.4", - "react": "19.1.0", + "expo": "^55.0.9", + "expo-constants": "^55.0.9", + "expo-font": "^55.0.4", + "expo-haptics": "^55.0.9", + "expo-linking": "^55.0.9", + "expo-network": "^55.0.9", + "expo-router": "^55.0.8", + "expo-secure-store": "^55.0.9", + "expo-status-bar": "^55.0.4", + "heroui-native": "^1.0.0", + "react": "^19.2.4", "react-dom": "^19.2.4", "react-native": "^0.84.1", - "react-native-gesture-handler": "^2.30.0", - "react-native-keyboard-controller": "^1.21.0", - "react-native-reanimated": "^4.2.2", + "react-native-gesture-handler": "^2.30.1", + "react-native-keyboard-controller": "^1.21.3", + "react-native-reanimated": "^4.3.0", "react-native-safe-area-context": "^5.7.0", "react-native-screens": "^4.24.0", - "react-native-svg": "^15.15.3", + "react-native-svg": "^15.15.4", "react-native-web": "^0.21.2", - "react-native-worklets": "^0.7.4", - "tailwind-merge": "^3.4.0", + "react-native-worklets": "^0.8.1", + "tailwind-merge": "^3.5.0", "tailwind-variants": "^3.2.2", - "tailwindcss": "^4.2.1", - "uniwind": "^1.5.0" + "tailwindcss": "^4.2.2", + "uniwind": "^1.6.1" }, "devDependencies": { - "@types/node": "^24.10.0", - "@types/react": "~19.1.0" + "@types/node": "^25.5.0", + "@types/react": "^19.2.14" } } \ No newline at end of file diff --git a/packages/template-generator/templates/frontend/nuxt/package.json.hbs b/packages/template-generator/templates/frontend/nuxt/package.json.hbs index 024764c73..578f7ccc8 100644 --- a/packages/template-generator/templates/frontend/nuxt/package.json.hbs +++ b/packages/template-generator/templates/frontend/nuxt/package.json.hbs @@ -10,15 +10,15 @@ "postinstall": "nuxt prepare" }, "dependencies": { - "@nuxt/ui": "^4.5.1", + "@nuxt/ui": "^4.6.0", "@nuxt/content": "^3.12.0", - "@nuxtjs/mdc": "^0.20.2", + "@nuxtjs/mdc": "^0.21.0", "nuxt": "^4.4.2", - "vue": "^3.5.30", - "vue-router": "^4.5.1" + "vue": "^3.5.31", + "vue-router": "^5.0.4" }, "devDependencies": { - "tailwindcss": "^4.2.1", - "@iconify-json/lucide": "^1.2.98" + "tailwindcss": "^4.2.2", + "@iconify-json/lucide": "^1.2.100" } } diff --git a/packages/template-generator/templates/frontend/qwik/package.json.hbs b/packages/template-generator/templates/frontend/qwik/package.json.hbs index aba2ac3a6..1c5c41ff0 100644 --- a/packages/template-generator/templates/frontend/qwik/package.json.hbs +++ b/packages/template-generator/templates/frontend/qwik/package.json.hbs @@ -14,13 +14,13 @@ "qwik": "qwik" }, "dependencies": { - "@builder.io/qwik": "~1.18.0", - "@builder.io/qwik-city": "~1.18.0" + "@builder.io/qwik": "^1.19.2", + "@builder.io/qwik-city": "^1.19.2" }, "devDependencies": { - "@types/node": "^22.13.14", - "typescript": "^5.7.3", - "vite": "^6.3.5", - "vite-tsconfig-paths": "^5.1.4" + "@types/node": "^25.5.0", + "typescript": "^5", + "vite": "^8.0.3", + "vite-tsconfig-paths": "^6.1.1" } } diff --git a/packages/template-generator/templates/frontend/react/next/package.json.hbs b/packages/template-generator/templates/frontend/react/next/package.json.hbs index 2bdd8c662..aa912f3ce 100644 --- a/packages/template-generator/templates/frontend/react/next/package.json.hbs +++ b/packages/template-generator/templates/frontend/react/next/package.json.hbs @@ -13,26 +13,26 @@ "clsx": "^2.1.1", "next-themes": "^0.4.6", "sonner": "^2.0.7", - "tailwind-merge": "^3.3.1", + "tailwind-merge": "^3.5.0", {{#if (eq uiLibrary "shadcn-ui")}} - "shadcn": "^3.6.2", - "@tanstack/react-form": "^1.27.3", + "shadcn": "^4.1.1", + "@tanstack/react-form": "^1.28.6", {{/if}} {{#if (eq cssFramework "tailwind")}} - "tw-animate-css": "^1.3.4", + "tw-animate-css": "^1.4.0", {{/if}} - "next": "^16.1.1", - "react": "^19.2.3", + "next": "^16.2.1", + "react": "^19.2.4", "react-dom": "^19.2.3", "babel-plugin-react-compiler": "^1.0.0" }, "devDependencies": { {{#if (eq cssFramework "tailwind")}} - "@tailwindcss/postcss": "^4.2.1", - "tailwindcss": "^4.2.1", + "@tailwindcss/postcss": "^4.2.2", + "tailwindcss": "^4.2.2", {{/if}} - "@types/node": "^20", - "@types/react": "^19.2.7", + "@types/node": "^25.5.0", + "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "typescript": "^5" } diff --git a/packages/template-generator/templates/frontend/react/react-router/package.json.hbs b/packages/template-generator/templates/frontend/react/react-router/package.json.hbs index 88bc4762d..29d046be4 100644 --- a/packages/template-generator/templates/frontend/react/react-router/package.json.hbs +++ b/packages/template-generator/templates/frontend/react/react-router/package.json.hbs @@ -14,34 +14,34 @@ "clsx": "^2.1.1", "next-themes": "^0.4.6", "sonner": "^2.0.7", - "tailwind-merge": "^3.3.0", + "tailwind-merge": "^3.5.0", {{#if (eq uiLibrary "shadcn-ui")}} - "shadcn": "^3.6.2", - "@tanstack/react-form": "^1.27.3", + "shadcn": "^4.1.1", + "@tanstack/react-form": "^1.28.6", {{/if}} {{#if (eq cssFramework "tailwind")}} - "tw-animate-css": "^1.3.2", + "tw-animate-css": "^1.4.0", {{/if}} - "@react-router/fs-routes": "^7.13.1", - "@react-router/node": "^7.13.1", - "@react-router/serve": "^7.13.1", + "@react-router/fs-routes": "^7.13.2", + "@react-router/node": "^7.13.2", + "@react-router/serve": "^7.13.2", "isbot": "^5.1.36", - "react": "^19.2.3", + "react": "^19.2.4", "react-dom": "^19.2.3", - "react-router": "^7.13.1" + "react-router": "^7.13.2" }, "devDependencies": { - "@react-router/dev": "^7.13.1", + "@react-router/dev": "^7.13.2", {{#if (eq cssFramework "tailwind")}} - "@tailwindcss/vite": "^4.2.1", - "tailwindcss": "^4.2.1", + "@tailwindcss/vite": "^4.2.2", + "tailwindcss": "^4.2.2", {{/if}} - "@types/node": "^20", - "@types/react": "~19.2.7", + "@types/node": "^25.5.0", + "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", - "react-router-devtools": "^1.1.0", - "typescript": "^5.8.3", - "vite": "^7.2.7", - "vite-tsconfig-paths": "^5.1.4" + "react-router-devtools": "^6.2.0", + "typescript": "^5", + "vite": "^8.0.3", + "vite-tsconfig-paths": "^6.1.1" } } diff --git a/packages/template-generator/templates/frontend/react/react-vite/package.json.hbs b/packages/template-generator/templates/frontend/react/react-vite/package.json.hbs index c8637466d..8cced0619 100644 --- a/packages/template-generator/templates/frontend/react/react-vite/package.json.hbs +++ b/packages/template-generator/templates/frontend/react/react-vite/package.json.hbs @@ -14,48 +14,48 @@ "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "next-themes": "^0.4.6", - "react": "^19.2.3", + "react": "^19.2.4", "react-dom": "^19.2.3", - "react-router": "^7.13.1", + "react-router": "^7.13.2", "sonner": "^2.0.7", - "tailwind-merge": "^3.3.1", + "tailwind-merge": "^3.5.0", {{#if (eq uiLibrary "shadcn-ui")}} "@hookform/resolvers": "^5.2.2", - "shadcn": "^3.6.2", - "@tanstack/react-form": "^1.12.3", + "shadcn": "^4.1.1", + "@tanstack/react-form": "^1.28.6", {{/if}} {{#if (eq cssFramework "tailwind")}} - "@tailwindcss/vite": "^4.2.1", - "tw-animate-css": "^1.2.5", + "@tailwindcss/vite": "^4.2.2", + "tw-animate-css": "^1.4.0", {{/if}} {{#if (or (eq api "orpc") (eq api "trpc") (eq api "ts-rest"))}} - "@tanstack/react-query": "^5.90.5", + "@tanstack/react-query": "^5.95.2", {{/if}} {{#if (or (eq api "orpc") (eq api "trpc"))}} - "@tanstack/react-query-devtools": "^5.90.5", + "@tanstack/react-query-devtools": "^5.95.2", {{/if}} {{#if (eq backend "convex")}} - "convex": "^1.28.0", + "convex": "^1.34.1", {{/if}} {{#if (eq api "ts-rest")}} "@ts-rest/react-query": "^3.52.1", {{/if}} {{#if (eq uiLibrary "mantine")}} - "@mantine/core": "^8.3.5", - "@mantine/hooks": "^8.3.5", + "@mantine/core": "^8.3.18", + "@mantine/hooks": "^8.3.18", {{/if}} - "zod": "^4.1.11" + "zod": "^4.3.6" }, "devDependencies": { - "@types/node": "^22.13.14", - "@types/react": "19.2.7", + "@types/node": "^25.5.0", + "@types/react": "^19.2.14", "@types/react-dom": "19.2.3", - "@vitejs/plugin-react": "^4.3.4", + "@vitejs/plugin-react": "^6.0.1", {{#if (eq cssFramework "tailwind")}} "postcss": "^8.5.8", - "tailwindcss": "^4.2.1", + "tailwindcss": "^4.2.2", {{/if}} - "typescript": "^5.8.3", - "vite": "^6.2.2" + "typescript": "^5", + "vite": "^8.0.3" } } diff --git a/packages/template-generator/templates/frontend/react/tanstack-router/package.json.hbs b/packages/template-generator/templates/frontend/react/tanstack-router/package.json.hbs index c9d229ec0..c86097319 100644 --- a/packages/template-generator/templates/frontend/react/tanstack-router/package.json.hbs +++ b/packages/template-generator/templates/frontend/react/tanstack-router/package.json.hbs @@ -16,32 +16,32 @@ "clsx": "^2.1.1", "next-themes": "^0.4.6", "sonner": "^2.0.7", - "tailwind-merge": "^3.3.1", + "tailwind-merge": "^3.5.0", {{#if (eq uiLibrary "shadcn-ui")}} "@hookform/resolvers": "^5.2.2", - "shadcn": "^3.6.2", - "@tanstack/react-form": "^1.12.3", + "shadcn": "^4.1.1", + "@tanstack/react-form": "^1.28.6", {{/if}} {{#if (eq cssFramework "tailwind")}} - "@tailwindcss/vite": "^4.2.1", - "tw-animate-css": "^1.2.5", + "@tailwindcss/vite": "^4.2.2", + "tw-animate-css": "^1.4.0", {{/if}} - "@tanstack/react-router": "^1.167.4", - "react": "^19.2.3", + "@tanstack/react-router": "^1.168.8", + "react": "^19.2.4", "react-dom": "^19.2.3" }, "devDependencies": { - "@tanstack/react-router-devtools": "^1.166.9", - "@tanstack/router-cli": "^1.154.3", - "@tanstack/router-plugin": "^1.166.13", - "@types/node": "^22.13.14", - "@types/react": "19.2.7", + "@tanstack/react-router-devtools": "^1.166.11", + "@tanstack/router-cli": "^1.166.23", + "@tanstack/router-plugin": "^1.167.9", + "@types/node": "^25.5.0", + "@types/react": "^19.2.14", "@types/react-dom": "19.2.3", - "@vitejs/plugin-react": "^4.3.4", + "@vitejs/plugin-react": "^6.0.1", {{#if (eq cssFramework "tailwind")}} "postcss": "^8.5.8", - "tailwindcss": "^4.2.1", + "tailwindcss": "^4.2.2", {{/if}} - "vite": "^6.2.2" + "vite": "^8.0.3" } } diff --git a/packages/template-generator/templates/frontend/react/tanstack-start/package.json.hbs b/packages/template-generator/templates/frontend/react/tanstack-start/package.json.hbs index 377c29f2f..b1a3b8908 100644 --- a/packages/template-generator/templates/frontend/react/tanstack-start/package.json.hbs +++ b/packages/template-generator/templates/frontend/react/tanstack-start/package.json.hbs @@ -13,34 +13,34 @@ "clsx": "^2.1.1", "next-themes": "^0.4.6", "sonner": "^2.0.7", - "tailwind-merge": "^3.3.1", + "tailwind-merge": "^3.5.0", {{#if (eq uiLibrary "shadcn-ui")}} - "shadcn": "^3.6.2", - "@tanstack/react-form": "^1.23.5", + "shadcn": "^4.1.1", + "@tanstack/react-form": "^1.28.6", {{/if}} {{#if (eq cssFramework "tailwind")}} - "@tailwindcss/vite": "^4.2.1", - "tailwindcss": "^4.2.1", - "tw-animate-css": "^1.2.5", + "@tailwindcss/vite": "^4.2.2", + "tailwindcss": "^4.2.2", + "tw-animate-css": "^1.4.0", {{/if}} - "@tanstack/react-query": "^5.80.6", - "@tanstack/react-router": "^1.167.4", + "@tanstack/react-query": "^5.95.2", + "@tanstack/react-router": "^1.168.8", "@tanstack/react-router-with-query": "^1.130.17", - "@tanstack/react-start": "^1.166.15", - "@tanstack/router-plugin": "^1.166.13", - "react": "^19.2.3", + "@tanstack/react-start": "^1.167.13", + "@tanstack/router-plugin": "^1.167.9", + "react": "^19.2.4", "react-dom": "^19.2.3", - "vite-tsconfig-paths": "^5.1.4" + "vite-tsconfig-paths": "^6.1.1" }, "devDependencies": { - "@tanstack/react-router-devtools": "^1.166.9", - "@testing-library/dom": "^10.4.0", - "@testing-library/react": "^16.2.0", - "@types/react": "19.2.7", + "@tanstack/react-router-devtools": "^1.166.11", + "@testing-library/dom": "^10.4.1", + "@testing-library/react": "^16.3.2", + "@types/react": "^19.2.14", "@types/react-dom": "19.2.3", - "@vitejs/plugin-react": "^5.0.4", - "jsdom": "^26.0.0", - "vite": "^7.0.2", - "web-vitals": "^5.1.0" + "@vitejs/plugin-react": "^6.0.1", + "jsdom": "^29.0.1", + "vite": "^8.0.3", + "web-vitals": "^5.2.0" } } diff --git a/packages/template-generator/templates/frontend/redwood/api/package.json.hbs b/packages/template-generator/templates/frontend/redwood/api/package.json.hbs index 931a82bff..587477ab1 100644 --- a/packages/template-generator/templates/frontend/redwood/api/package.json.hbs +++ b/packages/template-generator/templates/frontend/redwood/api/package.json.hbs @@ -3,7 +3,7 @@ "private": true, "type": "module", "dependencies": { - "@redwoodjs/api": "^8.6.1", - "@redwoodjs/graphql-server": "^8.6.1" + "@redwoodjs/api": "^8.9.0", + "@redwoodjs/graphql-server": "^8.9.0" } } diff --git a/packages/template-generator/templates/frontend/redwood/package.json.hbs b/packages/template-generator/templates/frontend/redwood/package.json.hbs index 0ef20893c..c496c8951 100644 --- a/packages/template-generator/templates/frontend/redwood/package.json.hbs +++ b/packages/template-generator/templates/frontend/redwood/package.json.hbs @@ -8,7 +8,7 @@ ] }, "devDependencies": { - "@redwoodjs/core": "^8.8.0" + "@redwoodjs/core": "^8.9.0" }, "eslintConfig": { "extends": "@redwoodjs/eslint-config", diff --git a/packages/template-generator/templates/frontend/redwood/web/package.json.hbs b/packages/template-generator/templates/frontend/redwood/web/package.json.hbs index d67d5a165..6f2706689 100644 --- a/packages/template-generator/templates/frontend/redwood/web/package.json.hbs +++ b/packages/template-generator/templates/frontend/redwood/web/package.json.hbs @@ -3,16 +3,16 @@ "private": true, "type": "module", "dependencies": { - "@redwoodjs/forms": "^8.6.1", - "@redwoodjs/router": "^8.6.1", - "@redwoodjs/web": "^8.6.1", - "react": "^19.1.0", + "@redwoodjs/forms": "^8.9.0", + "@redwoodjs/router": "^8.9.0", + "@redwoodjs/web": "^8.9.0", + "react": "^19.2.4", "react-dom": "^19.2.4" }, "devDependencies": { - "@redwoodjs/vite": "^8.6.1", - "@types/react": "^19.1.6", + "@redwoodjs/vite": "^8.9.0", + "@types/react": "^19.2.14", "@types/react-dom": "^19.1.5", - "typescript": "^5.7.3" + "typescript": "^5" } } diff --git a/packages/template-generator/templates/frontend/solid-start/package.json.hbs b/packages/template-generator/templates/frontend/solid-start/package.json.hbs index b8574a769..cb8688f70 100644 --- a/packages/template-generator/templates/frontend/solid-start/package.json.hbs +++ b/packages/template-generator/templates/frontend/solid-start/package.json.hbs @@ -10,15 +10,15 @@ }, "dependencies": { "@solidjs/meta": "^0.29.4", - "@solidjs/router": "^0.15.4", + "@solidjs/router": "^0.16.1", "@solidjs/start": "^1.3.2", - "solid-js": "^1.9.11", + "solid-js": "^1.9.12", "vinxi": "^0.5.11", - "@tailwindcss/vite": "^4.2.1", - "tailwindcss": "^4.2.1", - "lucide-solid": "^0.577.0" + "@tailwindcss/vite": "^4.2.2", + "tailwindcss": "^4.2.2", + "lucide-solid": "^1.7.0" }, "devDependencies": { - "vite": "^7.1.5" + "vite": "^8.0.3" } } diff --git a/packages/template-generator/templates/frontend/solid/package.json.hbs b/packages/template-generator/templates/frontend/solid/package.json.hbs index 1d65d4305..975df1a75 100644 --- a/packages/template-generator/templates/frontend/solid/package.json.hbs +++ b/packages/template-generator/templates/frontend/solid/package.json.hbs @@ -9,16 +9,16 @@ "test": "vitest run" }, "dependencies": { - "@tailwindcss/vite": "^4.2.1", - "@tanstack/router-plugin": "^1.166.13", - "@tanstack/solid-form": "^1.23.5", - "@tanstack/solid-router": "^1.167.4", - "lucide-solid": "^0.577.0", - "solid-js": "^1.9.11", - "tailwindcss": "^4.2.1" + "@tailwindcss/vite": "^4.2.2", + "@tanstack/router-plugin": "^1.167.9", + "@tanstack/solid-form": "^1.28.6", + "@tanstack/solid-router": "^1.168.7", + "lucide-solid": "^1.7.0", + "solid-js": "^1.9.12", + "tailwindcss": "^4.2.2" }, "devDependencies": { - "vite": "^7.1.5", + "vite": "^8.0.3", "vite-plugin-solid": "^2.11.11" } } diff --git a/packages/template-generator/templates/frontend/svelte/package.json.hbs b/packages/template-generator/templates/frontend/svelte/package.json.hbs index 7fdd895eb..d54553c05 100644 --- a/packages/template-generator/templates/frontend/svelte/package.json.hbs +++ b/packages/template-generator/templates/frontend/svelte/package.json.hbs @@ -14,19 +14,19 @@ }, "devDependencies": { {{#if (eq backend "self")}} - "@sveltejs/adapter-node": "^5.2.12", + "@sveltejs/adapter-node": "^5.5.4", {{else}} - "@sveltejs/adapter-auto": "^6.1.0", + "@sveltejs/adapter-auto": "^7.0.1", {{/if}} "@sveltejs/kit": "^2.55.0", - "@sveltejs/vite-plugin-svelte": "^6.1.2", - "@tailwindcss/vite": "^4.2.1", - "svelte": "^5.53.12", + "@sveltejs/vite-plugin-svelte": "^7.0.0", + "@tailwindcss/vite": "^4.2.2", + "svelte": "^5.55.1", "svelte-check": "^4.4.5", - "tailwindcss": "^4.2.1", - "vite": "^7.1.2" + "tailwindcss": "^4.2.2", + "vite": "^8.0.3" }, "dependencies": { - "@tanstack/svelte-form": "^1.28.5" + "@tanstack/svelte-form": "^1.28.6" } }