@better-t-stack/template-generator 3.35.2 → 3.35.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -385,27 +385,27 @@ function updatePackageJsonsWithCatalogs(vfs, packagesInfo, catalog) {
385
385
  //#region src/utils/add-deps.ts
386
386
  const dependencyVersionMap = {
387
387
  typescript: "^6",
388
- "better-auth": "1.6.22",
389
- "@better-auth/expo": "1.6.22",
390
- "@clerk/backend": "^3.2.1",
391
- "@clerk/express": "^2.0.5",
392
- "@clerk/fastify": "^3.1.3",
393
- "@clerk/nextjs": "^7.0.5",
394
- "@clerk/react": "^6.1.1",
395
- "@clerk/react-router": "^3.0.5",
396
- "@clerk/tanstack-react-start": "^1.1.3",
397
- "@clerk/expo": "^3.1.3",
398
- "drizzle-orm": "^0.45.1",
399
- "drizzle-kit": "^0.31.8",
400
- "@planetscale/database": "^1.19.0",
401
- "@libsql/client": "0.15.15",
402
- libsql: "0.5.22",
403
- "@neondatabase/serverless": "^1.0.2",
404
- pg: "^8.17.1",
405
- "@types/pg": "^8.16.0",
388
+ "better-auth": "1.6.23",
389
+ "@better-auth/expo": "1.6.23",
390
+ "@clerk/backend": "^3.10.0",
391
+ "@clerk/express": "^2.1.35",
392
+ "@clerk/fastify": "^3.1.45",
393
+ "@clerk/nextjs": "^7.5.12",
394
+ "@clerk/react": "^6.11.3",
395
+ "@clerk/react-router": "^3.5.4",
396
+ "@clerk/tanstack-react-start": "^1.4.12",
397
+ "@clerk/expo": "^3.6.5",
398
+ "drizzle-orm": "^0.45.2",
399
+ "drizzle-kit": "^0.31.10",
400
+ "@planetscale/database": "^1.20.1",
401
+ "@libsql/client": "0.17.4",
402
+ libsql: "0.5.29",
403
+ "@neondatabase/serverless": "^1.1.0",
404
+ pg: "^8.22.0",
405
+ "@types/pg": "^8.20.0",
406
406
  "@types/ws": "^8.18.1",
407
- ws: "^8.18.3",
408
- mysql2: "^3.14.0",
407
+ ws: "^8.21.0",
408
+ mysql2: "^3.22.5",
409
409
  "@prisma/client": "^7.8.0",
410
410
  prisma: "^7.8.0",
411
411
  "@prisma/adapter-d1": "^7.8.0",
@@ -415,57 +415,57 @@ const dependencyVersionMap = {
415
415
  "@prisma/adapter-better-sqlite3": "^7.8.0",
416
416
  "@prisma/adapter-pg": "^7.8.0",
417
417
  "@prisma/adapter-planetscale": "^7.8.0",
418
- mongoose: "^9.6.2",
419
- mongodb: "^7.2.0",
418
+ mongoose: "^9.7.3",
419
+ mongodb: "^7.4.0",
420
420
  "vite-plugin-pwa": "^1.3.0",
421
421
  "@vite-pwa/assets-generator": "^1.0.2",
422
- "@tauri-apps/cli": "^2.11.2",
423
- "@biomejs/biome": "^2.4.16",
424
- oxlint: "^1.68.0",
425
- oxfmt: "^0.53.0",
422
+ "@tauri-apps/cli": "^2.11.4",
423
+ "@biomejs/biome": "^2.5.2",
424
+ oxlint: "^1.72.0",
425
+ oxfmt: "^0.57.0",
426
426
  husky: "^9.1.7",
427
427
  lefthook: "^2.1.9",
428
428
  "lint-staged": "^17.0.7",
429
- tsx: "^4.19.2",
429
+ tsx: "^4.22.5",
430
430
  "@types/node": "^22.13.14",
431
- "@types/bun": "^1.3.4",
431
+ "@types/bun": "^1.3.14",
432
432
  "@elysiajs/node": "^1.4.5",
433
- "@elysiajs/cors": "^1.4.1",
433
+ "@elysiajs/cors": "^1.4.2",
434
434
  "@elysiajs/trpc": "^1.1.0",
435
- elysia: "^1.4.28",
435
+ elysia: "^1.4.29",
436
436
  "@sinclair/typebox": "^0.34.49",
437
- "@hono/node-server": "^1.14.4",
438
- "@hono/trpc-server": "^0.4.0",
439
- hono: "^4.8.2",
440
- cors: "^2.8.5",
441
- express: "^5.1.0",
442
- "@types/express": "^5.0.1",
443
- "@types/cors": "^2.8.17",
444
- fastify: "^5.3.3",
445
- "@fastify/cors": "^11.0.1",
437
+ "@hono/node-server": "^2.0.8",
438
+ "@hono/trpc-server": "^0.4.2",
439
+ hono: "^4.12.27",
440
+ cors: "^2.8.6",
441
+ express: "^5.2.1",
442
+ "@types/express": "^5.0.6",
443
+ "@types/cors": "^2.8.19",
444
+ fastify: "^5.9.0",
445
+ "@fastify/cors": "^11.2.0",
446
446
  turbo: "^2.10.2",
447
- nx: "^22.7.5",
448
- "vite-plus": "0.1.24",
449
- rolldown: "1.1.0",
450
- ai: "^7.0.3",
451
- "@ai-sdk/google": "^4.0.1",
452
- "@ai-sdk/vue": "^4.0.3",
453
- "@ai-sdk/svelte": "^5.0.3",
454
- "@ai-sdk/react": "^4.0.4",
455
- "@ai-sdk/devtools": "^1.0.0",
447
+ nx: "^23.0.1",
448
+ "vite-plus": "0.2.2",
449
+ rolldown: "1.1.4",
450
+ ai: "^7.0.13",
451
+ "@ai-sdk/google": "^4.0.7",
452
+ "@ai-sdk/vue": "^4.0.13",
453
+ "@ai-sdk/svelte": "^5.0.13",
454
+ "@ai-sdk/react": "^4.0.14",
455
+ "@ai-sdk/devtools": "^1.0.1",
456
456
  streamdown: "^2.5.0",
457
- shiki: "^3.20.0",
457
+ shiki: "^4.3.0",
458
458
  "@orpc/server": "^1.14.6",
459
459
  "@orpc/client": "^1.14.6",
460
460
  "@orpc/openapi": "^1.14.6",
461
461
  "@orpc/zod": "^1.14.6",
462
462
  "@orpc/tanstack-query": "^1.14.6",
463
- "@trpc/tanstack-react-query": "^11.16.0",
464
- "@trpc/server": "^11.16.0",
465
- "@trpc/client": "^11.16.0",
463
+ "@trpc/tanstack-react-query": "^11.18.0",
464
+ "@trpc/server": "^11.18.0",
465
+ "@trpc/client": "^11.18.0",
466
466
  next: "^16.2.0",
467
- nitro: "^3.0.260429-beta",
468
- convex: "^1.42.0",
467
+ nitro: "^3.0.260610-beta",
468
+ convex: "^1.42.1",
469
469
  "@convex-dev/react-query": "^0.1.0",
470
470
  "@convex-dev/agent": "^0.6.4",
471
471
  "@convex-dev/polar": "^0.9.2",
@@ -473,40 +473,40 @@ const dependencyVersionMap = {
473
473
  "convex-nuxt": "0.1.5",
474
474
  "convex-vue": "^0.1.5",
475
475
  "@convex-dev/better-auth": "^0.12.5",
476
- "@tanstack/svelte-query": "^5.85.3",
477
- "@tanstack/svelte-query-devtools": "^5.85.3",
478
- "@tanstack/vue-query-devtools": "^6.1.5",
479
- "@tanstack/vue-query": "^5.92.9",
480
- "@tanstack/react-query-devtools": "^5.91.1",
481
- "@tanstack/react-query": "^5.90.12",
482
- "@tanstack/react-form": "^1.28.0",
483
- "@tanstack/react-router-ssr-query": "^1.166.11",
484
- "@tanstack/solid-form": "^1.28.0",
485
- "@tanstack/svelte-form": "^1.28.0",
486
- "@tanstack/solid-query": "^5.99.1",
487
- "@tanstack/solid-query-devtools": "^5.99.1",
488
- "@tanstack/solid-router-devtools": "^1.166.13",
489
- wrangler: "^4.103.0",
490
- "@cloudflare/vite-plugin": "^1.17.1",
491
- "@opennextjs/cloudflare": "^1.17.3",
476
+ "@tanstack/svelte-query": "^6.1.36",
477
+ "@tanstack/svelte-query-devtools": "^6.1.36",
478
+ "@tanstack/vue-query-devtools": "^6.1.36",
479
+ "@tanstack/vue-query": "^5.101.2",
480
+ "@tanstack/react-query-devtools": "^5.101.2",
481
+ "@tanstack/react-query": "^5.101.2",
482
+ "@tanstack/react-form": "^1.33.0",
483
+ "@tanstack/react-router-ssr-query": "^1.167.1",
484
+ "@tanstack/solid-form": "^1.33.0",
485
+ "@tanstack/svelte-form": "^1.33.0",
486
+ "@tanstack/solid-query": "^5.101.2",
487
+ "@tanstack/solid-query-devtools": "^5.101.2",
488
+ "@tanstack/solid-router-devtools": "^1.167.0",
489
+ wrangler: "^4.107.0",
490
+ "@cloudflare/vite-plugin": "^1.43.0",
491
+ "@opennextjs/cloudflare": "^1.20.1",
492
492
  "nitro-cloudflare-dev": "^0.2.2",
493
- "@sveltejs/adapter-cloudflare": "^7.2.8",
494
- "@sveltejs/adapter-node": "^5.5.4",
495
- "@cloudflare/workers-types": "^4.20260621.1",
496
- "@astrojs/cloudflare": "^14.0.1",
497
- "@astrojs/node": "^11.0.0",
498
- alchemy: "^0.91.2",
499
- dotenv: "^17.2.2",
500
- tsdown: "^0.21.9",
501
- zod: "^4.1.13",
502
- "@t3-oss/env-core": "^0.13.1",
503
- "@t3-oss/env-nextjs": "^0.13.1",
504
- "@t3-oss/env-nuxt": "^0.13.1",
493
+ "@sveltejs/adapter-cloudflare": "^7.2.9",
494
+ "@sveltejs/adapter-node": "^5.5.7",
495
+ "@cloudflare/workers-types": "^4.20260702.1",
496
+ "@astrojs/cloudflare": "^14.1.0",
497
+ "@astrojs/node": "^11.0.1",
498
+ alchemy: "^0.93.12",
499
+ dotenv: "^17.4.2",
500
+ tsdown: "^0.22.3",
501
+ zod: "^4.4.3",
502
+ "@t3-oss/env-core": "^0.13.11",
503
+ "@t3-oss/env-nextjs": "^0.13.11",
504
+ "@t3-oss/env-nuxt": "^0.13.11",
505
505
  "@polar-sh/better-auth": "^1.8.4",
506
- "@polar-sh/checkout": "^0.2.1",
506
+ "@polar-sh/checkout": "^0.4.0",
507
507
  "@polar-sh/sdk": "^0.47.1",
508
- "@stripe/react-stripe-js": "^4.0.2",
509
- "@stripe/stripe-js": "^7.9.0",
508
+ "@stripe/react-stripe-js": "^5.6.1",
509
+ "@stripe/stripe-js": "^8.11.0",
510
510
  evlog: "^2.19.2"
511
511
  };
512
512
  /**
@@ -676,8 +676,7 @@ function updateRootPackageJson(vfs, config) {
676
676
  };
677
677
  if (hasVitePlus) pkgJson.overrides = {
678
678
  ...pkgJson.overrides,
679
- vite: `npm:@voidzero-dev/vite-plus-core@${VITE_PLUS_VERSION}`,
680
- vitest: `npm:@voidzero-dev/vite-plus-test@${VITE_PLUS_VERSION}`
679
+ vite: `npm:@voidzero-dev/vite-plus-core@${VITE_PLUS_VERSION}`
681
680
  };
682
681
  if (backend === "convex") {
683
682
  if (!workspaces.includes("packages/*")) workspaces.push("packages/*");
@@ -2519,10 +2518,25 @@ function processEnvVariables(vfs, config) {
2519
2518
  const hasSvelte = frontend.includes("svelte");
2520
2519
  const hasSolid = frontend.includes("solid");
2521
2520
  const hasAstro = frontend.includes("astro");
2522
- if (hasReactRouter || hasTanStackRouter || hasTanStackStart || hasNextJs || hasNuxt || hasSolid || hasSvelte || hasAstro) {
2521
+ const hasWebFrontend = hasReactRouter || hasTanStackRouter || hasTanStackStart || hasNextJs || hasNuxt || hasSolid || hasSvelte || hasAstro;
2522
+ if (hasWebFrontend) {
2523
2523
  const clientDir = "apps/web";
2524
2524
  if (vfs.directoryExists(clientDir)) writeEnvFile(vfs, `${clientDir}/.env`, buildClientVars(frontend, backend, auth));
2525
2525
  }
2526
+ if (webDeploy === "docker" && hasWebFrontend) {
2527
+ const rootComposeVars = [{
2528
+ key: hasNextJs ? "NEXT_PUBLIC_CONVEX_URL" : hasSvelte || hasAstro ? "PUBLIC_CONVEX_URL" : "VITE_CONVEX_URL",
2529
+ value: CONVEX_URL_PLACEHOLDER,
2530
+ condition: backend === "convex" && !hasNuxt,
2531
+ comment: "Baked into the web image at docker compose build time"
2532
+ }, {
2533
+ key: hasNextJs ? "NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY" : "VITE_CLERK_PUBLISHABLE_KEY",
2534
+ value: "",
2535
+ condition: auth === "clerk" && (hasNextJs || hasReactRouter || hasTanStackRouter || hasTanStackStart),
2536
+ comment: "Baked into the web image at docker compose build time"
2537
+ }];
2538
+ if (rootComposeVars.some((v) => v.condition)) writeEnvFile(vfs, ".env", rootComposeVars);
2539
+ }
2526
2540
  if (frontend.includes("native-bare") || frontend.includes("native-uniwind") || frontend.includes("native-unistyles")) {
2527
2541
  const nativeDir = "apps/native";
2528
2542
  if (vfs.directoryExists(nativeDir)) writeEnvFile(vfs, `${nativeDir}/.env`, buildNativeVars(frontend, backend, auth));
@@ -4502,7 +4516,6 @@ export default {
4502
4516
  },
4503
4517
  "devDependencies": {
4504
4518
  "@types/bun": "^1.3.14",
4505
- "@types/three": "^0.165.0",
4506
4519
  "concurrently": "^10.0.3",
4507
4520
  "typescript": "^6"
4508
4521
  }
@@ -16646,7 +16659,7 @@ export const authClient = createAuthClient({
16646
16659
  const sessionQuery = authClient.useSession();
16647
16660
 
16648
16661
  {{#if (eq api "orpc")}}
16649
- const privateDataQuery = createQuery(orpc.privateData.queryOptions());
16662
+ const privateDataQuery = createQuery(() => orpc.privateData.queryOptions());
16650
16663
  {{/if}}
16651
16664
 
16652
16665
  $effect(() => {
@@ -16675,7 +16688,7 @@ export const authClient = createAuthClient({
16675
16688
  <h1>Dashboard</h1>
16676
16689
  <p>Welcome {$sessionQuery.data.user.name}</p>
16677
16690
  {{#if (eq api "orpc")}}
16678
- <p>API: {$privateDataQuery.data?.message}</p>
16691
+ <p>API: {privateDataQuery.data?.message}</p>
16679
16692
  {{/if}}
16680
16693
  {{#if (eq payments "polar")}}
16681
16694
  <p>Plan: {customerState?.activeSubscriptions?.length > 0 ? "Pro" : "Free"}</p>
@@ -19426,7 +19439,7 @@ temp
19426
19439
 
19427
19440
  services:
19428
19441
  mongodb:
19429
- image: mongo
19442
+ image: mongo:8
19430
19443
  container_name: {{projectName}}-mongodb
19431
19444
  environment:
19432
19445
  MONGO_INITDB_ROOT_USERNAME: root
@@ -19449,7 +19462,7 @@ volumes:
19449
19462
 
19450
19463
  services:
19451
19464
  mysql:
19452
- image: mysql
19465
+ image: mysql:8.4
19453
19466
  container_name: {{projectName}}-mysql
19454
19467
  environment:
19455
19468
  MYSQL_ROOT_PASSWORD: password
@@ -19473,7 +19486,7 @@ volumes:
19473
19486
 
19474
19487
  services:
19475
19488
  postgres:
19476
- image: postgres
19489
+ image: postgres:18
19477
19490
  container_name: {{projectName}}-postgres
19478
19491
  environment:
19479
19492
  POSTGRES_DB: {{projectName}}
@@ -20257,10 +20270,10 @@ services:
20257
20270
  {{#if (includes frontend "next")}}NEXT_PUBLIC_SERVER_URL{{else if (or (includes frontend "svelte") (includes frontend "astro"))}}PUBLIC_SERVER_URL{{else}}VITE_SERVER_URL{{/if}}: http://localhost:3000
20258
20271
  {{/if}}
20259
20272
  {{#if (eq backend "convex")}}
20260
- {{#if (includes frontend "next")}}NEXT_PUBLIC_CONVEX_URL{{else if (or (includes frontend "svelte") (includes frontend "astro"))}}PUBLIC_CONVEX_URL{{else}}VITE_CONVEX_URL{{/if}}: \${CONVEX_URL:-}
20273
+ {{#if (includes frontend "next")}}NEXT_PUBLIC_CONVEX_URL: \${NEXT_PUBLIC_CONVEX_URL:-}{{else if (or (includes frontend "svelte") (includes frontend "astro"))}}PUBLIC_CONVEX_URL: \${PUBLIC_CONVEX_URL:-}{{else}}VITE_CONVEX_URL: \${VITE_CONVEX_URL:-}{{/if}}
20261
20274
  {{/if}}
20262
20275
  {{#if (and (eq auth "clerk") (or (includes frontend "next") (includes frontend "react-router") (includes frontend "tanstack-router") (includes frontend "tanstack-start")))}}
20263
- {{#if (includes frontend "next")}}NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY{{else}}VITE_CLERK_PUBLISHABLE_KEY{{/if}}: \${CLERK_PUBLISHABLE_KEY:-}
20276
+ {{#if (includes frontend "next")}}NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: \${NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY:-}{{else}}VITE_CLERK_PUBLISHABLE_KEY: \${VITE_CLERK_PUBLISHABLE_KEY:-}{{/if}}
20264
20277
  {{/if}}
20265
20278
  {{/if}}
20266
20279
  init: true
@@ -20311,6 +20324,22 @@ services:
20311
20324
  condition: service_healthy
20312
20325
  {{/if}}
20313
20326
  {{/if}}
20327
+ healthcheck:
20328
+ {{#if (or (includes frontend "tanstack-router") (includes frontend "react-router") (includes frontend "solid"))}}
20329
+ test: ["CMD", "wget", "-q", "--spider", "http://localhost:80/"]
20330
+ {{else}}
20331
+ test:
20332
+ [
20333
+ "CMD",
20334
+ "node",
20335
+ "-e",
20336
+ "fetch('http://localhost:3001/').then((r) => process.exit(r.ok ? 0 : 1)).catch(() => process.exit(1))",
20337
+ ]
20338
+ {{/if}}
20339
+ interval: 10s
20340
+ timeout: 5s
20341
+ retries: 5
20342
+ start_period: 10s
20314
20343
  restart: unless-stopped
20315
20344
 
20316
20345
  {{/if}}
@@ -20363,7 +20392,7 @@ services:
20363
20392
  {{#if (eq dbSetup "docker")}}
20364
20393
  {{#if (eq database "postgres")}}
20365
20394
  postgres:
20366
- image: postgres
20395
+ image: postgres:18
20367
20396
  container_name: {{projectName}}-postgres
20368
20397
  environment:
20369
20398
  POSTGRES_DB: {{projectName}}
@@ -20382,7 +20411,7 @@ services:
20382
20411
  {{/if}}
20383
20412
  {{#if (eq database "mysql")}}
20384
20413
  mysql:
20385
- image: mysql
20414
+ image: mysql:8.4
20386
20415
  container_name: {{projectName}}-mysql
20387
20416
  environment:
20388
20417
  MYSQL_ROOT_PASSWORD: \${MYSQL_ROOT_PASSWORD:-password}
@@ -20402,7 +20431,7 @@ services:
20402
20431
  {{/if}}
20403
20432
  {{#if (eq database "mongodb")}}
20404
20433
  mongodb:
20405
- image: mongo
20434
+ image: mongo:8
20406
20435
  container_name: {{projectName}}-mongodb
20407
20436
  environment:
20408
20437
  MONGO_INITDB_ROOT_USERNAME: root
@@ -20429,7 +20458,7 @@ volumes:
20429
20458
  COPY --from=oven/bun:1 /usr/local/bin/bun /usr/local/bin/bun
20430
20459
  {{/if}}
20431
20460
  {{#if (eq packageManager "pnpm")}}
20432
- RUN npm install -g pnpm
20461
+ RUN npm install -g pnpm@11
20433
20462
  {{/if}}
20434
20463
  WORKDIR /app
20435
20464
  ENV SKIP_ENV_VALIDATION=1
@@ -20468,7 +20497,7 @@ CMD ["node", "dist/index.mjs"]
20468
20497
  COPY --from=oven/bun:1 /usr/local/bin/bun /usr/local/bin/bun
20469
20498
  {{/if}}
20470
20499
  {{#if (eq packageManager "pnpm")}}
20471
- RUN npm install -g pnpm
20500
+ RUN npm install -g pnpm@11
20472
20501
  {{/if}}
20473
20502
  WORKDIR /app
20474
20503
  ENV SKIP_ENV_VALIDATION=1
@@ -20520,7 +20549,7 @@ CMD ["node", "dist/server/entry.mjs"]
20520
20549
  COPY --from=oven/bun:1 /usr/local/bin/bun /usr/local/bin/bun
20521
20550
  {{/if}}
20522
20551
  {{#if (eq packageManager "pnpm")}}
20523
- RUN npm install -g pnpm
20552
+ RUN npm install -g pnpm@11
20524
20553
  {{/if}}
20525
20554
  WORKDIR /app
20526
20555
  ENV SKIP_ENV_VALIDATION=1
@@ -20562,7 +20591,7 @@ CMD ["node", "server/index.mjs"]
20562
20591
  COPY --from=oven/bun:1 /usr/local/bin/bun /usr/local/bin/bun
20563
20592
  {{/if}}
20564
20593
  {{#if (eq packageManager "pnpm")}}
20565
- RUN npm install -g pnpm
20594
+ RUN npm install -g pnpm@11
20566
20595
  {{/if}}
20567
20596
  WORKDIR /app
20568
20597
  ENV SKIP_ENV_VALIDATION=1
@@ -20598,6 +20627,8 @@ ENV NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=\${NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY}
20598
20627
  {{/if}}
20599
20628
  ENV NODE_ENV=production
20600
20629
  RUN cd apps/web && {{packageManager}} run build
20630
+ # standalone output excludes public/; ensure it exists so the runner copy never fails
20631
+ RUN mkdir -p apps/web/public
20601
20632
 
20602
20633
  FROM node:24-slim AS runner
20603
20634
  WORKDIR /app
@@ -20605,6 +20636,7 @@ ENV NODE_ENV=production
20605
20636
 
20606
20637
  COPY --from=builder /app/apps/web/.next/standalone ./
20607
20638
  COPY --from=builder /app/apps/web/.next/static ./apps/web/.next/static
20639
+ COPY --from=builder /app/apps/web/public ./apps/web/public
20608
20640
 
20609
20641
  ENV HOSTNAME=0.0.0.0
20610
20642
  ENV PORT=3001
@@ -20617,7 +20649,7 @@ CMD ["node", "apps/web/server.js"]
20617
20649
  COPY --from=oven/bun:1 /usr/local/bin/bun /usr/local/bin/bun
20618
20650
  {{/if}}
20619
20651
  {{#if (eq packageManager "pnpm")}}
20620
- RUN npm install -g pnpm
20652
+ RUN npm install -g pnpm@11
20621
20653
  {{/if}}
20622
20654
  WORKDIR /app
20623
20655
  ENV SKIP_ENV_VALIDATION=1
@@ -20684,7 +20716,7 @@ CMD ["nginx", "-g", "daemon off;"]
20684
20716
  COPY --from=oven/bun:1 /usr/local/bin/bun /usr/local/bin/bun
20685
20717
  {{/if}}
20686
20718
  {{#if (eq packageManager "pnpm")}}
20687
- RUN npm install -g pnpm
20719
+ RUN npm install -g pnpm@11
20688
20720
  {{/if}}
20689
20721
  WORKDIR /app
20690
20722
  ENV SKIP_ENV_VALIDATION=1
@@ -20751,7 +20783,7 @@ CMD ["nginx", "-g", "daemon off;"]
20751
20783
  COPY --from=oven/bun:1 /usr/local/bin/bun /usr/local/bin/bun
20752
20784
  {{/if}}
20753
20785
  {{#if (eq packageManager "pnpm")}}
20754
- RUN npm install -g pnpm
20786
+ RUN npm install -g pnpm@11
20755
20787
  {{/if}}
20756
20788
  WORKDIR /app
20757
20789
  ENV SKIP_ENV_VALIDATION=1
@@ -20808,7 +20840,7 @@ CMD ["node", ".output/server/index.mjs"]
20808
20840
  COPY --from=oven/bun:1 /usr/local/bin/bun /usr/local/bin/bun
20809
20841
  {{/if}}
20810
20842
  {{#if (eq packageManager "pnpm")}}
20811
- RUN npm install -g pnpm
20843
+ RUN npm install -g pnpm@11
20812
20844
  {{/if}}
20813
20845
  WORKDIR /app
20814
20846
  ENV SKIP_ENV_VALIDATION=1
@@ -20871,7 +20903,7 @@ CMD ["nginx", "-g", "daemon off;"]
20871
20903
  COPY --from=oven/bun:1 /usr/local/bin/bun /usr/local/bin/bun
20872
20904
  {{/if}}
20873
20905
  {{#if (eq packageManager "pnpm")}}
20874
- RUN npm install -g pnpm
20906
+ RUN npm install -g pnpm@11
20875
20907
  {{/if}}
20876
20908
  WORKDIR /app
20877
20909
  ENV SKIP_ENV_VALIDATION=1
@@ -29460,12 +29492,12 @@ function TodosRoute() {
29460
29492
  let newTodoText = $state('');
29461
29493
 
29462
29494
  {{#if (eq api "orpc")}}
29463
- const todosQuery = createQuery(orpc.todo.getAll.queryOptions());
29495
+ const todosQuery = createQuery(() => orpc.todo.getAll.queryOptions());
29464
29496
 
29465
- const addMutation = createMutation(
29497
+ const addMutation = createMutation(() =>
29466
29498
  orpc.todo.create.mutationOptions({
29467
29499
  onSuccess: () => {
29468
- $todosQuery.refetch();
29500
+ todosQuery.refetch();
29469
29501
  newTodoText = '';
29470
29502
  },
29471
29503
  onError: (error) => {
@@ -29474,10 +29506,10 @@ function TodosRoute() {
29474
29506
  })
29475
29507
  );
29476
29508
 
29477
- const toggleMutation = createMutation(
29509
+ const toggleMutation = createMutation(() =>
29478
29510
  orpc.todo.toggle.mutationOptions({
29479
29511
  onSuccess: () => {
29480
- $todosQuery.refetch();
29512
+ todosQuery.refetch();
29481
29513
  },
29482
29514
  onError: (error) => {
29483
29515
  console.error('Failed to toggle todo:', error?.message ?? error);
@@ -29485,10 +29517,10 @@ function TodosRoute() {
29485
29517
  })
29486
29518
  );
29487
29519
 
29488
- const deleteMutation = createMutation(
29520
+ const deleteMutation = createMutation(() =>
29489
29521
  orpc.todo.delete.mutationOptions({
29490
29522
  onSuccess: () => {
29491
- $todosQuery.refetch();
29523
+ todosQuery.refetch();
29492
29524
  },
29493
29525
  onError: (error) => {
29494
29526
  console.error('Failed to delete todo:', error?.message ?? error);
@@ -29501,22 +29533,22 @@ function TodosRoute() {
29501
29533
  event.preventDefault();
29502
29534
  const text = newTodoText.trim();
29503
29535
  if (text) {
29504
- $addMutation.mutate({ text });
29536
+ addMutation.mutate({ text });
29505
29537
  }
29506
29538
  }
29507
29539
 
29508
29540
  function handleToggleTodo(id: number, completed: boolean) {
29509
- $toggleMutation.mutate({ id, completed: !completed });
29541
+ toggleMutation.mutate({ id, completed: !completed });
29510
29542
  }
29511
29543
 
29512
29544
  function handleDeleteTodo(id: number) {
29513
- $deleteMutation.mutate({ id });
29545
+ deleteMutation.mutate({ id });
29514
29546
  }
29515
29547
 
29516
- const isAdding = $derived($addMutation.isPending);
29548
+ const isAdding = $derived(addMutation.isPending);
29517
29549
  const canAdd = $derived(!isAdding && newTodoText.trim().length > 0);
29518
- const isLoadingTodos = $derived($todosQuery.isLoading);
29519
- const todos = $derived($todosQuery.data ?? []);
29550
+ const isLoadingTodos = $derived(todosQuery.isLoading);
29551
+ const todos = $derived(todosQuery.data ?? []);
29520
29552
  const hasTodos = $derived(todos.length > 0);
29521
29553
 
29522
29554
  <\/script>
@@ -29548,8 +29580,8 @@ function TodosRoute() {
29548
29580
  {:else}
29549
29581
  <ul class="space-y-1">
29550
29582
  {#each todos as todo (todo.id)}
29551
- {@const isToggling = $toggleMutation.isPending && $toggleMutation.variables?.id === todo.id}
29552
- {@const isDeleting = $deleteMutation.isPending && $deleteMutation.variables?.id === todo.id}
29583
+ {@const isToggling = toggleMutation.isPending && toggleMutation.variables?.id === todo.id}
29584
+ {@const isDeleting = deleteMutation.isPending && deleteMutation.variables?.id === todo.id}
29553
29585
  {@const isDisabled = isToggling || isDeleting}
29554
29586
  <li
29555
29587
  class="flex items-center justify-between p-2 "
@@ -29584,24 +29616,24 @@ function TodosRoute() {
29584
29616
  </ul>
29585
29617
  {/if}
29586
29618
 
29587
- {#if $todosQuery.isError}
29619
+ {#if todosQuery.isError}
29588
29620
  <p class="mt-4 text-red-500">
29589
- Error loading: {$todosQuery.error?.message ?? 'Unknown error'}
29621
+ Error loading: {todosQuery.error?.message ?? 'Unknown error'}
29590
29622
  </p>
29591
29623
  {/if}
29592
- {#if $addMutation.isError}
29624
+ {#if addMutation.isError}
29593
29625
  <p class="mt-4 text-red-500">
29594
- Error adding: {$addMutation.error?.message ?? 'Unknown error'}
29626
+ Error adding: {addMutation.error?.message ?? 'Unknown error'}
29595
29627
  </p>
29596
29628
  {/if}
29597
- {#if $toggleMutation.isError}
29629
+ {#if toggleMutation.isError}
29598
29630
  <p class="mt-4 text-red-500">
29599
- Error updating: {$toggleMutation.error?.message ?? 'Unknown error'}
29631
+ Error updating: {toggleMutation.error?.message ?? 'Unknown error'}
29600
29632
  </p>
29601
29633
  {/if}
29602
- {#if $deleteMutation.isError}
29634
+ {#if deleteMutation.isError}
29603
29635
  <p class="mt-4 text-red-500">
29604
- Error deleting: {$deleteMutation.error?.message ?? 'Unknown error'}
29636
+ Error deleting: {deleteMutation.error?.message ?? 'Unknown error'}
29605
29637
  </p>
29606
29638
  {/if}
29607
29639
  </div>
@@ -29745,11 +29777,11 @@ export default defineConfig({
29745
29777
  "astro": "astro"
29746
29778
  },
29747
29779
  "dependencies": {
29748
- "astro": "^7.0.3"
29780
+ "astro": "^7.0.5"
29749
29781
  },
29750
29782
  "devDependencies": {
29751
- "@tailwindcss/vite": "^4.3.1",
29752
- "tailwindcss": "^4.3.1"
29783
+ "@tailwindcss/vite": "^4.3.2",
29784
+ "tailwindcss": "^4.3.2"
29753
29785
  }
29754
29786
  }
29755
29787
  `],
@@ -33582,7 +33614,7 @@ module.exports = uniwindConfig;
33582
33614
  "expo-secure-store": "~57.0.0",
33583
33615
  "expo-status-bar": "~57.0.0",
33584
33616
  "expo-web-browser": "~57.0.0",
33585
- "heroui-native": "^1.0.4",
33617
+ "heroui-native": "^1.0.5",
33586
33618
  "react": "19.2.3",
33587
33619
  "react-dom": "19.2.3",
33588
33620
  "react-native": "0.86.0",
@@ -33597,7 +33629,7 @@ module.exports = uniwindConfig;
33597
33629
  "tailwind-merge": "^3.6.0",
33598
33630
  "tailwind-variants": "^3.2.2",
33599
33631
  "tailwindcss": "^4.3.2",
33600
- "uniwind": "^1.9.0"
33632
+ "uniwind": "^1.10.0"
33601
33633
  },
33602
33634
  "devDependencies": {
33603
33635
  "@types/node": "^26.0.1",
@@ -33887,13 +33919,13 @@ export default defineNuxtConfig({
33887
33919
  "postinstall": "nuxt prepare"
33888
33920
  },
33889
33921
  "dependencies": {
33890
- "@nuxt/ui": "^4.5.1",
33891
- "nuxt": "^4.4.4",
33892
- "vue": "^3.5.38"
33922
+ "@nuxt/ui": "^4.9.0",
33923
+ "nuxt": "^4.4.8",
33924
+ "vue": "^3.5.39"
33893
33925
  },
33894
33926
  "devDependencies": {
33895
- "tailwindcss": "^4.3.1",
33896
- "@iconify-json/lucide": "^1.2.96"
33927
+ "tailwindcss": "^4.3.2",
33928
+ "@iconify-json/lucide": "^1.2.115"
33897
33929
  }
33898
33930
  }
33899
33931
  `],
@@ -33970,7 +34002,7 @@ initOpenNextCloudflareForDev();
33970
34002
  "dependencies": {
33971
34003
  "@{{projectName}}/ui": "{{#if (eq packageManager "npm")}}*{{else}}workspace:*{{/if}}",
33972
34004
  "@swc/helpers": "^0.5.23",
33973
- "lucide-react": "^1.21.0",
34005
+ "lucide-react": "^1.23.0",
33974
34006
  "next": "^16.2.0",
33975
34007
  "next-themes": "^0.4.6",
33976
34008
  "react": "^19.2.7",
@@ -33979,11 +34011,11 @@ initOpenNextCloudflareForDev();
33979
34011
  "babel-plugin-react-compiler": "^1.0.0"
33980
34012
  },
33981
34013
  "devDependencies": {
33982
- "@tailwindcss/postcss": "^4.3.1",
34014
+ "@tailwindcss/postcss": "^4.3.2",
33983
34015
  "@types/node": "^20",
33984
34016
  "@types/react": "^19.2.17",
33985
34017
  "@types/react-dom": "^19.2.3",
33986
- "tailwindcss": "^4.3.1"
34018
+ "tailwindcss": "^4.3.2"
33987
34019
  }
33988
34020
  }
33989
34021
  `],
@@ -34372,26 +34404,26 @@ export function ThemeProvider({
34372
34404
  },
34373
34405
  "dependencies": {
34374
34406
  "@{{projectName}}/ui": "{{#if (eq packageManager "npm")}}*{{else}}workspace:*{{/if}}",
34375
- "@react-router/fs-routes": "^7.14.1",
34376
- "@react-router/node": "^7.14.1",
34377
- "@react-router/serve": "^7.14.1",
34378
- "isbot": "^5.1.39",
34379
- "lucide-react": "^1.21.0",
34407
+ "@react-router/fs-routes": "^8.1.0",
34408
+ "@react-router/node": "^8.1.0",
34409
+ "@react-router/serve": "^8.1.0",
34410
+ "isbot": "^5.1.44",
34411
+ "lucide-react": "^1.23.0",
34380
34412
  "next-themes": "^0.4.6",
34381
34413
  "react": "^19.2.7",
34382
34414
  "react-dom": "^19.2.7",
34383
- "react-router": "^7.14.1",
34415
+ "react-router": "^8.1.0",
34384
34416
  "sonner": "^2.0.7"
34385
34417
  },
34386
34418
  "devDependencies": {
34387
- "@react-router/dev": "^7.14.1",
34388
- "@tailwindcss/vite": "^4.3.1",
34389
- "@types/node": "^20",
34419
+ "@react-router/dev": "^8.1.0",
34420
+ "@tailwindcss/vite": "^4.3.2",
34421
+ "@types/node": "^22.13.14",
34390
34422
  "@types/react": "^19.2.17",
34391
34423
  "@types/react-dom": "^19.2.3",
34392
- "react-router-devtools": "^1.1.0",
34393
- "tailwindcss": "^4.3.1",
34394
- "vite": "^8.0.8",
34424
+ "react-router-devtools": "^6.2.1",
34425
+ "tailwindcss": "^4.3.2",
34426
+ "vite": "^7.3.6",
34395
34427
  "vite-tsconfig-paths": "^6.1.1"
34396
34428
  }
34397
34429
  }
@@ -34402,9 +34434,6 @@ export function ThemeProvider({
34402
34434
  export default {
34403
34435
  ssr: false,
34404
34436
  appDirectory: "src",
34405
- future: {
34406
- v8_middleware: true,
34407
- },
34408
34437
  } satisfies Config;
34409
34438
  `],
34410
34439
  ["frontend/react/react-router/src/components/mode-toggle.tsx.hbs", `import { Moon, Sun } from "lucide-react";
@@ -34910,26 +34939,26 @@ export default defineConfig({
34910
34939
  "check-types": "vite build && tsc --noEmit"
34911
34940
  },
34912
34941
  "dependencies": {
34913
- "@hookform/resolvers": "^5.2.2",
34942
+ "@hookform/resolvers": "^5.4.0",
34914
34943
  "@{{projectName}}/ui": "{{#if (eq packageManager "npm")}}*{{else}}workspace:*{{/if}}",
34915
- "@tailwindcss/vite": "^4.3.1",
34916
- "@tanstack/react-router": "^1.168.22",
34917
- "lucide-react": "^1.21.0",
34944
+ "@tailwindcss/vite": "^4.3.2",
34945
+ "@tanstack/react-router": "^1.170.17",
34946
+ "lucide-react": "^1.23.0",
34918
34947
  "next-themes": "^0.4.6",
34919
34948
  "react": "^19.2.7",
34920
34949
  "react-dom": "^19.2.7",
34921
34950
  "sonner": "^2.0.7"
34922
34951
  },
34923
34952
  "devDependencies": {
34924
- "@tanstack/react-router-devtools": "^1.166.13",
34925
- "@tanstack/router-plugin": "^1.167.22",
34953
+ "@tanstack/react-router-devtools": "^1.167.0",
34954
+ "@tanstack/router-plugin": "^1.168.19",
34926
34955
  "@types/node": "^22.13.14",
34927
34956
  "@types/react": "^19.2.17",
34928
34957
  "@types/react-dom": "^19.2.3",
34929
- "@vitejs/plugin-react": "^6.0.1",
34930
- "postcss": "^8.5.10",
34931
- "tailwindcss": "^4.3.1",
34932
- "vite": "^8.0.8"
34958
+ "@vitejs/plugin-react": "^6.0.3",
34959
+ "postcss": "^8.5.16",
34960
+ "tailwindcss": "^4.3.2",
34961
+ "vite": "^8.1.3"
34933
34962
  }
34934
34963
  }
34935
34964
  `],
@@ -35355,27 +35384,27 @@ export default defineConfig({
35355
35384
  },
35356
35385
  "dependencies": {
35357
35386
  "@{{projectName}}/ui": "{{#if (eq packageManager "npm")}}*{{else}}workspace:*{{/if}}",
35358
- "@tailwindcss/vite": "^4.3.1",
35359
- "@tanstack/react-query": "^5.99.0",
35360
- "@tanstack/react-router": "^1.168.22",
35361
- "@tanstack/react-start": "^1.167.41",
35362
- "lucide-react": "^1.21.0",
35387
+ "@tailwindcss/vite": "^4.3.2",
35388
+ "@tanstack/react-query": "^5.101.2",
35389
+ "@tanstack/react-router": "^1.170.17",
35390
+ "@tanstack/react-start": "^1.168.27",
35391
+ "lucide-react": "^1.23.0",
35363
35392
  "next-themes": "^0.4.6",
35364
35393
  "react": "^19.2.7",
35365
35394
  "react-dom": "^19.2.7",
35366
35395
  "sonner": "^2.0.7",
35367
- "tailwindcss": "^4.3.1"
35396
+ "tailwindcss": "^4.3.2"
35368
35397
  },
35369
35398
  "devDependencies": {
35370
- "@tanstack/react-router-devtools": "^1.166.13",
35399
+ "@tanstack/react-router-devtools": "^1.167.0",
35371
35400
  "@testing-library/dom": "^10.4.1",
35372
35401
  "@testing-library/react": "^16.3.2",
35373
35402
  "@types/react": "^19.2.17",
35374
35403
  "@types/react-dom": "^19.2.3",
35375
- "@vitejs/plugin-react": "^6.0.1",
35376
- "jsdom": "^29.0.2",
35377
- "vite": "^8.0.8",
35378
- "web-vitals": "^5.2.0"
35404
+ "@vitejs/plugin-react": "^6.0.3",
35405
+ "jsdom": "^29.1.1",
35406
+ "vite": "^8.1.3",
35407
+ "web-vitals": "^5.3.0"
35379
35408
  }
35380
35409
  }
35381
35410
  `],
@@ -36165,16 +36194,16 @@ dist-ssr
36165
36194
  "test": "vitest run"
36166
36195
  },
36167
36196
  "dependencies": {
36168
- "@tailwindcss/vite": "^4.3.1",
36169
- "@tanstack/router-plugin": "^1.167.22",
36170
- "@tanstack/solid-router": "^1.168.20",
36171
- "lucide-solid": "^1.8.0",
36172
- "solid-js": "^1.9.12",
36173
- "tailwindcss": "^4.3.1"
36197
+ "@tailwindcss/vite": "^4.3.2",
36198
+ "@tanstack/router-plugin": "^1.168.19",
36199
+ "@tanstack/solid-router": "^1.170.17",
36200
+ "lucide-solid": "^1.23.0",
36201
+ "solid-js": "^1.9.14",
36202
+ "tailwindcss": "^4.3.2"
36174
36203
  },
36175
36204
  "devDependencies": {
36176
- "@tanstack/solid-router-devtools": "^1.166.13",
36177
- "vite": "^8.0.8",
36205
+ "@tanstack/solid-router-devtools": "^1.167.0",
36206
+ "vite": "^8.1.3",
36178
36207
  "vite-plugin-solid": "^2.11.12"
36179
36208
  }
36180
36209
  }
@@ -36485,13 +36514,13 @@ vite.config.ts.timestamp-*
36485
36514
  {{else}}
36486
36515
  "@sveltejs/adapter-auto": "^7.0.1",
36487
36516
  {{/if}}
36488
- "@sveltejs/kit": "^2.58.0",
36489
- "@sveltejs/vite-plugin-svelte": "^7.0.0",
36490
- "@tailwindcss/vite": "^4.3.1",
36491
- "svelte": "^5.55.5",
36492
- "svelte-check": "^4.4.6",
36493
- "tailwindcss": "^4.3.1",
36494
- "vite": "^8.0.10"
36517
+ "@sveltejs/kit": "^2.69.0",
36518
+ "@sveltejs/vite-plugin-svelte": "^7.1.2",
36519
+ "@tailwindcss/vite": "^4.3.2",
36520
+ "svelte": "^5.56.4",
36521
+ "svelte-check": "^4.7.1",
36522
+ "tailwindcss": "^4.3.2",
36523
+ "vite": "^8.1.3"
36495
36524
  },
36496
36525
  "dependencies": {}
36497
36526
  }
@@ -36687,7 +36716,7 @@ const TITLE_TEXT = \`
36687
36716
  {{#if (eq api "orpc")}}
36688
36717
  import { orpc } from "$lib/orpc";
36689
36718
  import { createQuery } from "@tanstack/svelte-query";
36690
- const healthCheck = createQuery(orpc.healthCheck.queryOptions());
36719
+ const healthCheck = createQuery(() => orpc.healthCheck.queryOptions());
36691
36720
  {{/if}}
36692
36721
 
36693
36722
  const TITLE_TEXT = \`
@@ -36715,12 +36744,12 @@ const TITLE_TEXT = \`
36715
36744
  <h2 class="mb-2 font-medium">API Status</h2>
36716
36745
  <div class="flex items-center gap-2">
36717
36746
  <div
36718
- class={\`h-2 w-2 rounded-full \${$healthCheck.data ? "bg-green-500" : "bg-red-500"}\`}
36747
+ class={\`h-2 w-2 rounded-full \${healthCheck.data ? "bg-green-500" : "bg-red-500"}\`}
36719
36748
  ></div>
36720
36749
  <span class="text-muted-foreground text-sm">
36721
- {$healthCheck.isLoading
36750
+ {healthCheck.isLoading
36722
36751
  ? "Checking..."
36723
- : $healthCheck.data
36752
+ : healthCheck.data
36724
36753
  ? "Connected"
36725
36754
  : "Disconnected"}
36726
36755
  </span>
@@ -37646,11 +37675,11 @@ await app.finalize();
37646
37675
  },
37647
37676
  "dependencies": {
37648
37677
  "@base-ui/react": "^1.6.0",
37649
- "@shadcn/react": "^0.1.0",
37678
+ "@shadcn/react": "^0.2.0",
37650
37679
  "shadcn": "^4.12.0",
37651
37680
  "class-variance-authority": "^0.7.1",
37652
37681
  "clsx": "^2.1.1",
37653
- "lucide-react": "^1.21.0",
37682
+ "lucide-react": "^1.23.0",
37654
37683
  "next-themes": "^0.4.6",
37655
37684
  "react": "^19.2.7",
37656
37685
  "react-dom": "^19.2.7",
@@ -37659,10 +37688,10 @@ await app.finalize();
37659
37688
  "tw-animate-css": "^1.4.0"
37660
37689
  },
37661
37690
  "devDependencies": {
37662
- "@tailwindcss/postcss": "^4.3.1",
37691
+ "@tailwindcss/postcss": "^4.3.2",
37663
37692
  "@types/react": "^19.2.17",
37664
37693
  "@types/react-dom": "^19.2.3",
37665
- "tailwindcss": "^4.3.1"
37694
+ "tailwindcss": "^4.3.2"
37666
37695
  },
37667
37696
  "scripts": {
37668
37697
  "check-types": "tsc --noEmit"