From 0489c380f76f7fdaf07f7106261ceea698ef54d8 Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Fri, 2 Jan 2026 16:44:15 -0500 Subject: [PATCH 1/6] Initial work on @fastify/create-vite-app --- packages/create-vite-app/README.md | 64 +++++++ packages/create-vite-app/package.json | 44 +++++ packages/create-vite-app/src/index.ts | 46 +++++ packages/create-vite-app/tsconfig.json | 14 ++ pnpm-lock.yaml | 237 +++++++++++++++++-------- pnpm-workspace.yaml | 1 + 6 files changed, 331 insertions(+), 75 deletions(-) create mode 100644 packages/create-vite-app/README.md create mode 100644 packages/create-vite-app/package.json create mode 100644 packages/create-vite-app/src/index.ts create mode 100644 packages/create-vite-app/tsconfig.json diff --git a/packages/create-vite-app/README.md b/packages/create-vite-app/README.md new file mode 100644 index 00000000..bbd6a430 --- /dev/null +++ b/packages/create-vite-app/README.md @@ -0,0 +1,64 @@ +# @fastify/create-vite-app + +The official scaffolding tool for **Fastify + Vite** applications. + +## Quick Start + +You do not need to install this package globally. You can run it directly using your package manager of choice. + +### npm +```bash +npm create @fastify/vite-app@latest +# or with a specific project name +npm create @fastify/vite-app@latest my-app +``` + +### pnpm +```bash +pnpm create @fastify/vite-app@latest +``` + +### yarn +```bash +yarn create @fastify/vite-app +``` + +If you don't provide a project name, the CLI will use `fastify-vite-app` by default. + +```bash +# Creates a folder named "my-new-project" +npm create @fastify/vite-app my-new-project +``` + +Once created: + +```bash +cd my-new-project +npm install +npm run dev +``` + +## Contributing + +This package is part of the `fastify-vite` monorepo. + +### Local Development + +1. Navigate to the package directory: + +```bash +cd packages/create-vite-app +``` + +2. Build the project (requires TypeScript): + +```bash +npm run build +``` + +3. Test it locally without publishing: + +```bash +# Run the built output directly +node dist/index.js my-test-app +``` diff --git a/packages/create-vite-app/package.json b/packages/create-vite-app/package.json new file mode 100644 index 00000000..0b127624 --- /dev/null +++ b/packages/create-vite-app/package.json @@ -0,0 +1,44 @@ +{ + "name": "@fastify/create-vite-app", + "version": "0.0.0", + "description": "Scaffolding tool for Fastify + Vite applications", + "type": "module", + "bin": { + "create-vite-app": "./dist/index.js", + "fastify-create-vite-app": "./dist/index.js" + }, + "files": [ + "dist", + "templates" + ], + "scripts": { + "dev": "node src/index.ts", + "build": "tsc", + "prepublishOnly": "pnpm build", + "test": "node --test" + }, + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/fastify/fastify-vite.git", + "directory": "packages/create-vite-app" + }, + "keywords": [ + "fastify", + "vite", + "create-fastify-app", + "scaffold", + "cli" + ], + "author": "Fastify Team", + "license": "MIT", + "engines": { + "node": ">=22.18.0" + }, + "devDependencies": { + "typescript": "catalog:", + "@types/node": "catalog:" + } +} diff --git a/packages/create-vite-app/src/index.ts b/packages/create-vite-app/src/index.ts new file mode 100644 index 00000000..712f9aeb --- /dev/null +++ b/packages/create-vite-app/src/index.ts @@ -0,0 +1,46 @@ +#!/usr/bin/env node + +import { mkdirSync, writeFileSync } from 'node:fs' +import { join } from 'node:path' + +// 1. Get project name from args (default to 'fastify-vite-app' if missing) +const projectName = process.argv[2] || 'fastify-vite-app' +const root = join(process.cwd(), projectName) + +console.log(`Creating ${projectName}...`) + +// 2. Create the project folder +mkdirSync(root, { recursive: true }) + +// 3. define the barebones package.json +const pkgJson = { + name: projectName, + type: 'module', + scripts: { + dev: 'fastify start -w server.js', + }, + dependencies: { + fastify: '^5.0.0', + '@fastify/vite': '^8.0.0', + }, +} + +// 4. Write package.json +writeFileSync(join(root, 'package.json'), JSON.stringify(pkgJson, null, 2)) + +// 5. Write a minimal server.js +const serverCode = ` +import Fastify from 'fastify'; +const fastify = Fastify({ logger: true }); + +fastify.get('/', async () => { + return { hello: 'world' } +}); + +await fastify.listen({ port: 3000 }); +` + +writeFileSync(join(root, 'server.js'), serverCode.trim()) + +// 6. Done +console.log(`\nDone! Now run:\n cd ${projectName}\n npm install\n npm run dev`) diff --git a/packages/create-vite-app/tsconfig.json b/packages/create-vite-app/tsconfig.json new file mode 100644 index 00000000..ae82305d --- /dev/null +++ b/packages/create-vite-app/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "module": "NodeNext", + "moduleResolution": "NodeNext", + "outDir": "./dist", + "rewriteRelativeImportExtensions": true, + "rootDir": "./src", + "allowImportingTsExtensions": true, + "noEmit": false + }, + "include": [ + "src/**/*" + ] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 48127095..07946734 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,6 +6,9 @@ settings: catalogs: default: + '@types/node': + specifier: ^24.10.4 + version: 24.10.4 devalue: specifier: ^5.6.1 version: 5.6.1 @@ -76,7 +79,7 @@ importers: devDependencies: '@changesets/cli': specifier: ^2.29.8 - version: 2.29.8(@types/node@22.19.3) + version: 2.29.8(@types/node@24.10.4) oxfmt: specifier: ^0.21.0 version: 0.21.0 @@ -85,10 +88,10 @@ importers: version: 1.36.0 vite: specifier: 'catalog:' - version: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) vitest: specifier: 'catalog:' - version: 4.0.16(@types/node@22.19.3)(@vitest/ui@4.0.16)(jiti@2.4.2)(jsdom@23.2.0)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jiti@2.4.2)(jsdom@23.2.0)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) zx: specifier: ^8.8.5 version: 8.8.5 @@ -115,10 +118,10 @@ importers: version: 11.12.2 vitepress: specifier: 1.6.4 - version: 1.6.4(@algolia/client-search@5.46.2)(@types/node@22.19.3)(lightningcss@1.29.3)(markdown-it-mathjax3@4.3.2)(postcss@8.5.6)(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.3) + version: 1.6.4(@algolia/client-search@5.46.2)(@types/node@24.10.4)(lightningcss@1.29.3)(markdown-it-mathjax3@4.3.2)(postcss@8.5.6)(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.3) vitepress-plugin-mermaid: specifier: ^2.0.17 - version: 2.0.17(mermaid@11.12.2)(vitepress@1.6.4(@algolia/client-search@5.46.2)(@types/node@22.19.3)(lightningcss@1.29.3)(markdown-it-mathjax3@4.3.2)(postcss@8.5.6)(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.3)) + version: 2.0.17(mermaid@11.12.2)(vitepress@1.6.4(@algolia/client-search@5.46.2)(@types/node@24.10.4)(lightningcss@1.29.3)(markdown-it-mathjax3@4.3.2)(postcss@8.5.6)(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.3)) examples/react-hydration: dependencies: @@ -146,10 +149,10 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: catalog:react - version: 5.1.2(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) vite: specifier: 'catalog:' - version: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) examples/react-next-mini: dependencies: @@ -186,10 +189,10 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: catalog:react - version: 5.1.2(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) vite: specifier: 'catalog:' - version: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) examples/react-streaming: dependencies: @@ -217,10 +220,10 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: catalog:react - version: 5.1.2(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) vite: specifier: 'catalog:' - version: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) examples/react-vanilla: dependencies: @@ -239,10 +242,10 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: catalog:react - version: 5.1.2(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) vite: specifier: 'catalog:' - version: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) examples/react-vanilla-spa: dependencies: @@ -261,10 +264,10 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: catalog:react - version: 5.1.2(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) vite: specifier: 'catalog:' - version: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) examples/react-vanilla-spa-ts: dependencies: @@ -366,7 +369,7 @@ importers: version: 9.39.2 '@vitejs/plugin-vue': specifier: catalog:vue - version: 5.2.4(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3)) + version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3)) eslint: specifier: catalog:eslint version: 9.39.2(jiti@2.4.2) @@ -378,7 +381,7 @@ importers: version: 16.5.0 vite: specifier: 'catalog:' - version: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) examples/vue-next-mini: dependencies: @@ -412,7 +415,7 @@ importers: version: 9.39.2 '@vitejs/plugin-vue': specifier: catalog:vue - version: 5.2.4(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3)) + version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3)) eslint: specifier: catalog:eslint version: 9.39.2(jiti@2.4.2) @@ -424,7 +427,7 @@ importers: version: 16.5.0 vite: specifier: 'catalog:' - version: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) examples/vue-streaming: dependencies: @@ -449,7 +452,7 @@ importers: version: 9.39.2 '@vitejs/plugin-vue': specifier: catalog:vue - version: 5.2.4(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3)) + version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3)) eslint: specifier: catalog:eslint version: 9.39.2(jiti@2.4.2) @@ -461,7 +464,7 @@ importers: version: 16.5.0 vite: specifier: 'catalog:' - version: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) examples/vue-vanilla: dependencies: @@ -480,7 +483,7 @@ importers: version: 9.39.2 '@vitejs/plugin-vue': specifier: catalog:vue - version: 5.2.4(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3)) + version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3)) eslint: specifier: catalog:eslint version: 9.39.2(jiti@2.4.2) @@ -492,7 +495,7 @@ importers: version: 16.5.0 vite: specifier: 'catalog:' - version: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) examples/vue-vanilla-spa: dependencies: @@ -511,7 +514,7 @@ importers: version: 9.39.2 '@vitejs/plugin-vue': specifier: catalog:vue - version: 5.2.4(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3)) + version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3)) eslint: specifier: catalog:eslint version: 9.39.2(jiti@2.4.2) @@ -523,7 +526,7 @@ importers: version: 16.5.0 vite: specifier: 'catalog:' - version: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) examples/vue-vanilla-ts: dependencies: @@ -571,6 +574,15 @@ importers: specifier: ^2.2.8 version: 2.2.10(typescript@5.9.3) + packages/create-vite-app: + devDependencies: + '@types/node': + specifier: 'catalog:' + version: 24.10.4 + typescript: + specifier: 'catalog:' + version: 5.9.3 + packages/create-vite-app/templates/react-spa: dependencies: '@fastify/vite': @@ -588,10 +600,10 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: catalog:react - version: 5.1.2(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) vite: specifier: 'catalog:' - version: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) packages/fastify-htmx: dependencies: @@ -749,11 +761,11 @@ importers: devDependencies: '@vitejs/plugin-vue': specifier: catalog:vue - version: 5.2.4(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3)) + version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3)) optionalDependencies: vite: specifier: 'catalog:' - version: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) starters/react-base: dependencies: @@ -762,10 +774,10 @@ importers: version: 2.0.2 '@fastify/react': specifier: ^1.1.2 - version: 1.1.2(@types/react@19.1.2)(fastify@5.6.2)(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 1.1.2(@types/react@19.1.2)(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) '@fastify/vite': specifier: ^8.2.2 - version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) '@unhead/react': specifier: ^2.0.8 version: 2.0.8(react@19.2.3) @@ -796,7 +808,7 @@ importers: version: 4.1.2 '@vitejs/plugin-react': specifier: ^5.1.2 - version: 5.1.2(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) postcss: specifier: ^8.5.3 version: 8.5.3 @@ -808,7 +820,7 @@ importers: version: 4.1.2 vite: specifier: ^7.3.0 - version: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) starters/react-kitchensink: dependencies: @@ -820,10 +832,10 @@ importers: version: 2.0.2 '@fastify/react': specifier: ^1.1.2 - version: 1.1.2(@types/react@19.1.2)(fastify@5.6.2)(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 1.1.2(@types/react@19.1.2)(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) '@fastify/vite': specifier: ^8.2.2 - version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) '@unhead/react': specifier: ^2.0.8 version: 2.0.8(react@19.2.3) @@ -854,7 +866,7 @@ importers: version: 4.1.2 '@vitejs/plugin-react': specifier: ^5.1.2 - version: 5.1.2(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) postcss: specifier: ^8.5.3 version: 8.5.3 @@ -866,7 +878,7 @@ importers: version: 4.1.2 vite: specifier: ^7.3.0 - version: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) starters/react-typescript: dependencies: @@ -948,10 +960,10 @@ importers: version: 2.0.2 '@fastify/vite': specifier: ^8.2.2 - version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) '@fastify/vue': specifier: ^1.1.3 - version: 1.1.3(@types/node@22.19.3)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.7.1) + version: 1.1.3(@types/node@24.10.4)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.7.1) '@unhead/vue': specifier: ^2.0.5 version: 2.0.8(vue@3.5.13(typescript@5.9.3)) @@ -970,10 +982,10 @@ importers: version: 4.1.2 '@tailwindcss/vite': specifier: ^4.1.1 - version: 4.1.2(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 4.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) '@vitejs/plugin-vue': specifier: ^5.2.3 - version: 5.2.3(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.13(typescript@5.9.3)) + version: 5.2.3(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.13(typescript@5.9.3)) postcss: specifier: ^8.5.3 version: 8.5.3 @@ -985,7 +997,7 @@ importers: version: 4.1.2 vite: specifier: ^7.3.0 - version: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) starters/vue-kitchensink: dependencies: @@ -997,10 +1009,10 @@ importers: version: 2.0.2 '@fastify/vite': specifier: ^8.2.2 - version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) '@fastify/vue': specifier: ^1.1.3 - version: 1.1.3(@types/node@22.19.3)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.7.1) + version: 1.1.3(@types/node@24.10.4)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.7.1) '@unhead/vue': specifier: ^2.0.5 version: 2.0.8(vue@3.5.13(typescript@5.9.3)) @@ -1019,7 +1031,7 @@ importers: version: 4.1.2 '@vitejs/plugin-vue': specifier: ^5.2.3 - version: 5.2.3(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.13(typescript@5.9.3)) + version: 5.2.3(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.13(typescript@5.9.3)) postcss: specifier: ^8.5.3 version: 8.5.3 @@ -1031,7 +1043,7 @@ importers: version: 4.1.2 vite: specifier: ^7.3.0 - version: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) starters/vue-typescript: dependencies: @@ -2766,6 +2778,9 @@ packages: '@types/node@22.19.3': resolution: {integrity: sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==} + '@types/node@24.10.4': + resolution: {integrity: sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg==} + '@types/react-dom@19.1.2': resolution: {integrity: sha512-XGJkWF41Qq305SKWEILa1O8vzhb3aOo3ogBlSmiqNko/WmRb6QIaweuZCXjKygVDXpzXb5wyxKTSOsmkuqj+Qw==} peerDependencies: @@ -5284,6 +5299,9 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + undici@7.7.0: resolution: {integrity: sha512-tZ6+5NBq4KH35rr46XJ2JPFKxfcBlYNaqLF/wyWIO9RMHqqU/gx/CLB1Y2qMcgB8lWw/bKHa7qzspqCN7mUHvA==} engines: {node: '>=20.18.1'} @@ -5956,7 +5974,7 @@ snapshots: dependencies: '@changesets/types': 6.1.0 - '@changesets/cli@2.29.8(@types/node@22.19.3)': + '@changesets/cli@2.29.8(@types/node@24.10.4)': dependencies: '@changesets/apply-release-plan': 7.0.14 '@changesets/assemble-release-plan': 6.0.9 @@ -5972,7 +5990,7 @@ snapshots: '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@changesets/write': 0.4.0 - '@inquirer/external-editor': 1.0.3(@types/node@22.19.3) + '@inquirer/external-editor': 1.0.3(@types/node@24.10.4) '@manypkg/get-packages': 1.1.3 ansi-colors: 4.1.3 ci-info: 3.9.0 @@ -6726,9 +6744,9 @@ snapshots: - fastify - vite - '@fastify/react@1.1.2(@types/react@19.1.2)(fastify@5.6.2)(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))': + '@fastify/react@1.1.2(@types/react@19.1.2)(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))': dependencies: - '@fastify/vite': 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + '@fastify/vite': 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) '@unhead/react': 2.0.8(react@19.2.3) acorn: 8.15.0 acorn-strip-function: 1.2.0 @@ -6778,7 +6796,7 @@ snapshots: package-directory: 8.1.0 vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1) - '@fastify/vite@8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))': + '@fastify/vite@8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))': dependencies: '@fastify/deepmerge': 3.1.0 '@fastify/middie': 9.0.3 @@ -6789,7 +6807,7 @@ snapshots: html-rewriter-wasm: 0.4.1 klaw: 4.1.0 package-directory: 8.1.0 - vite: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) '@fastify/vue@1.1.3(@types/node@22.14.0)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.7.1)': dependencies: @@ -6820,9 +6838,9 @@ snapshots: - typescript - yaml - '@fastify/vue@1.1.3(@types/node@22.19.3)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.7.1)': + '@fastify/vue@1.1.3(@types/node@24.10.4)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.7.1)': dependencies: - '@fastify/vite': 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + '@fastify/vite': 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) '@unhead/vue': 2.0.8(vue@3.5.26(typescript@5.9.3)) acorn: 8.15.0 acorn-walk: 8.3.4 @@ -6833,7 +6851,7 @@ snapshots: vue-router: 4.6.4(vue@3.5.26(typescript@5.9.3)) youch: 3.3.4 optionalDependencies: - vite: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) transitivePeerDependencies: - '@types/node' - fastify @@ -6872,12 +6890,12 @@ snapshots: '@iconify/types': 2.0.0 mlly: 1.8.0 - '@inquirer/external-editor@1.0.3(@types/node@22.19.3)': + '@inquirer/external-editor@1.0.3(@types/node@24.10.4)': dependencies: chardet: 2.1.1 iconv-lite: 0.7.1 optionalDependencies: - '@types/node': 22.19.3 + '@types/node': 24.10.4 '@isaacs/balanced-match@4.0.1': {} @@ -7195,12 +7213,12 @@ snapshots: postcss: 8.5.3 tailwindcss: 4.1.2 - '@tailwindcss/vite@4.1.2(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))': + '@tailwindcss/vite@4.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))': dependencies: '@tailwindcss/node': 4.1.2 '@tailwindcss/oxide': 4.1.2 tailwindcss: 4.1.2 - vite: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) '@types/babel__core@7.20.5': dependencies: @@ -7381,6 +7399,10 @@ snapshots: dependencies: undici-types: 6.21.0 + '@types/node@24.10.4': + dependencies: + undici-types: 7.16.0 + '@types/react-dom@19.1.2(@types/react@19.1.2)': dependencies: '@types/react': 19.1.2 @@ -7530,7 +7552,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@5.1.2(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))': + '@vitejs/plugin-react@5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) @@ -7538,7 +7560,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.53 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) transitivePeerDependencies: - supports-color @@ -7547,14 +7569,14 @@ snapshots: vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1) vue: 3.5.13(typescript@5.9.3) - '@vitejs/plugin-vue@5.2.3(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.13(typescript@5.9.3))': + '@vitejs/plugin-vue@5.2.3(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.13(typescript@5.9.3))': dependencies: - vite: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) vue: 3.5.13(typescript@5.9.3) - '@vitejs/plugin-vue@5.2.4(vite@5.4.21(@types/node@22.19.3)(lightningcss@1.29.3))(vue@3.5.26(typescript@5.9.3))': + '@vitejs/plugin-vue@5.2.4(vite@5.4.21(@types/node@24.10.4)(lightningcss@1.29.3))(vue@3.5.26(typescript@5.9.3))': dependencies: - vite: 5.4.21(@types/node@22.19.3)(lightningcss@1.29.3) + vite: 5.4.21(@types/node@24.10.4)(lightningcss@1.29.3) vue: 3.5.26(typescript@5.9.3) '@vitejs/plugin-vue@5.2.4(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3))': @@ -7562,9 +7584,9 @@ snapshots: vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) vue: 3.5.26(typescript@5.9.3) - '@vitejs/plugin-vue@5.2.4(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3))': + '@vitejs/plugin-vue@5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3))': dependencies: - vite: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) vue: 3.5.26(typescript@5.9.3) '@vitest/expect@4.0.16': @@ -7584,6 +7606,14 @@ snapshots: optionalDependencies: vite: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + '@vitest/mocker@4.0.16(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))': + dependencies: + '@vitest/spy': 4.0.16 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + '@vitest/pretty-format@4.0.16': dependencies: tinyrainbow: 3.0.3 @@ -7610,7 +7640,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vitest: 4.0.16(@types/node@22.19.3)(@vitest/ui@4.0.16)(jiti@2.4.2)(jsdom@23.2.0)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + vitest: 4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jiti@2.4.2)(jsdom@23.2.0)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) '@vitest/utils@4.0.16': dependencies: @@ -10234,6 +10264,8 @@ snapshots: undici-types@6.21.0: {} + undici-types@7.16.0: {} + undici@7.7.0: {} unhead@2.0.8: @@ -10317,13 +10349,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite@5.4.21(@types/node@22.19.3)(lightningcss@1.29.3): + vite@5.4.21(@types/node@24.10.4)(lightningcss@1.29.3): dependencies: esbuild: 0.21.5 postcss: 8.5.6 rollup: 4.54.0 optionalDependencies: - '@types/node': 22.19.3 + '@types/node': 24.10.4 fsevents: 2.3.3 lightningcss: 1.29.3 @@ -10375,14 +10407,30 @@ snapshots: tsx: 4.21.0 yaml: 2.7.1 - vitepress-plugin-mermaid@2.0.17(mermaid@11.12.2)(vitepress@1.6.4(@algolia/client-search@5.46.2)(@types/node@22.19.3)(lightningcss@1.29.3)(markdown-it-mathjax3@4.3.2)(postcss@8.5.6)(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.3)): + vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1): + dependencies: + esbuild: 0.27.2 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.54.0 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.10.4 + fsevents: 2.3.3 + jiti: 2.4.2 + lightningcss: 1.29.3 + tsx: 4.21.0 + yaml: 2.7.1 + + vitepress-plugin-mermaid@2.0.17(mermaid@11.12.2)(vitepress@1.6.4(@algolia/client-search@5.46.2)(@types/node@24.10.4)(lightningcss@1.29.3)(markdown-it-mathjax3@4.3.2)(postcss@8.5.6)(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.3)): dependencies: mermaid: 11.12.2 - vitepress: 1.6.4(@algolia/client-search@5.46.2)(@types/node@22.19.3)(lightningcss@1.29.3)(markdown-it-mathjax3@4.3.2)(postcss@8.5.6)(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.3) + vitepress: 1.6.4(@algolia/client-search@5.46.2)(@types/node@24.10.4)(lightningcss@1.29.3)(markdown-it-mathjax3@4.3.2)(postcss@8.5.6)(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.3) optionalDependencies: '@mermaid-js/mermaid-mindmap': 9.3.0 - vitepress@1.6.4(@algolia/client-search@5.46.2)(@types/node@22.19.3)(lightningcss@1.29.3)(markdown-it-mathjax3@4.3.2)(postcss@8.5.6)(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.3): + vitepress@1.6.4(@algolia/client-search@5.46.2)(@types/node@24.10.4)(lightningcss@1.29.3)(markdown-it-mathjax3@4.3.2)(postcss@8.5.6)(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.3): dependencies: '@docsearch/css': 3.8.2 '@docsearch/js': 3.8.2(@algolia/client-search@5.46.2)(react@18.3.1)(search-insights@2.17.3) @@ -10391,7 +10439,7 @@ snapshots: '@shikijs/transformers': 2.5.0 '@shikijs/types': 2.5.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.4(vite@5.4.21(@types/node@22.19.3)(lightningcss@1.29.3))(vue@3.5.26(typescript@5.9.3)) + '@vitejs/plugin-vue': 5.2.4(vite@5.4.21(@types/node@24.10.4)(lightningcss@1.29.3))(vue@3.5.26(typescript@5.9.3)) '@vue/devtools-api': 7.7.9 '@vue/shared': 3.5.26 '@vueuse/core': 12.8.2(typescript@5.9.3) @@ -10400,7 +10448,7 @@ snapshots: mark.js: 8.11.1 minisearch: 7.2.0 shiki: 2.5.0 - vite: 5.4.21(@types/node@22.19.3)(lightningcss@1.29.3) + vite: 5.4.21(@types/node@24.10.4)(lightningcss@1.29.3) vue: 3.5.26(typescript@5.9.3) optionalDependencies: markdown-it-mathjax3: 4.3.2 @@ -10471,6 +10519,45 @@ snapshots: - tsx - yaml + vitest@4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jiti@2.4.2)(jsdom@23.2.0)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1): + dependencies: + '@vitest/expect': 4.0.16 + '@vitest/mocker': 4.0.16(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + '@vitest/pretty-format': 4.0.16 + '@vitest/runner': 4.0.16 + '@vitest/snapshot': 4.0.16 + '@vitest/spy': 4.0.16 + '@vitest/utils': 4.0.16 + es-module-lexer: 1.7.0 + expect-type: 1.2.2 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.3 + std-env: 3.10.0 + tinybench: 2.9.0 + tinyexec: 1.0.2 + tinyglobby: 0.2.15 + tinyrainbow: 3.0.3 + vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 24.10.4 + '@vitest/ui': 4.0.16(vitest@4.0.16) + jsdom: 23.2.0 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - terser + - tsx + - yaml + vscode-jsonrpc@8.2.0: {} vscode-languageserver-protocol@3.17.5: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 648cdf64..7238d7c5 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -5,6 +5,7 @@ packages: - starters/* catalog: + '@types/node': ^24.10.4 devalue: ^5.6.1 fastify: ^5.6.2 html-rewriter-wasm: ^0.4.1 From 2f44edd82ee8535bd4787f0273623813b4e12145 Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Fri, 2 Jan 2026 18:10:05 -0500 Subject: [PATCH 2/6] Make PLAN.md --- packages/create-vite-app/PLAN.md | 128 +++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 packages/create-vite-app/PLAN.md diff --git a/packages/create-vite-app/PLAN.md b/packages/create-vite-app/PLAN.md new file mode 100644 index 00000000..b3d33cdf --- /dev/null +++ b/packages/create-vite-app/PLAN.md @@ -0,0 +1,128 @@ +# Implementation Plan: @fastify/create-vite-app CLI + +## Overview +Build a CLI scaffolding tool that copies the `examples/react-vanilla-spa/` template and resolves pnpm catalog versions at build time. + +## Requirements Summary +- **Template source**: `examples/react-vanilla-spa/` (no dedicated templates folder) +- **Prompts**: Project name only (using @clack/prompts) +- **Versions**: Baked in at build time from `pnpm-workspace.yaml` +- **Post-scaffold**: Auto-detect package manager and install dependencies +- **Skip**: test files, node_modules, dist folders + +--- + +## Implementation Steps + +### Step 1: Add dependencies +**File**: `packages/create-vite-app/package.json` + +Add: +- `@clack/prompts` - interactive CLI prompts +- `yaml` (devDependency) - parse pnpm-workspace.yaml at build time + +### Step 2: Create build script to generate versions +**New file**: `packages/create-vite-app/scripts/generate-versions.ts` + +This script will: +1. Read `../../pnpm-workspace.yaml` for catalog versions +2. Read `../fastify-vite/package.json` for @fastify/vite version (workspace:^ reference) +3. Parse catalog and catalogs sections +4. Write `src/versions.ts` with resolved versions: +```ts +export const versions = { + '@fastify/vite': '^8.2.3', + 'fastify': '^5.6.2', + 'vite': '^7.3.0', + 'react': '^19.2.3', + 'react-dom': '^19.2.3', + '@vitejs/plugin-react': '^5.1.2', +} +``` + +### Step 3: Update build script in package.json +**File**: `packages/create-vite-app/package.json` + +Change build to: +```json +"build": "node scripts/generate-versions.ts && tsc" +``` + +(Uses Node 22.18+ native TypeScript support - no tsx needed) + +### Step 4: Rewrite src/index.ts +**File**: `packages/create-vite-app/src/index.ts` + +Structure: +```ts +#!/usr/bin/env node +import * as p from '@clack/prompts' +import { versions } from './versions.js' +// ... fs utilities + +async function main() { + p.intro('Create Fastify + Vite App') + + // 1. Get project name (with CLI arg fallback) + const projectName = await p.text({...}) + + // 2. Copy template files from examples/react-vanilla-spa + // - Skip: node_modules, dist, *.test.js + // - Transform package.json with resolved versions + + // 3. Detect package manager (npm/pnpm/yarn/bun) + // 4. Run install with spinner + + p.outro('Done! Run: cd && npm run dev') +} +``` + +### Step 5: Add template copying logic +**File**: `packages/create-vite-app/src/index.ts` + +Key functions: +- `copyTemplate(source, dest)` - recursively copy, skip ignored files +- `transformPackageJson(content, projectName, versions)` - replace workspace:/catalog: refs +- `detectPackageManager()` - check lockfiles or npm_config_user_agent +- `installDependencies(pm, cwd)` - spawn install process + +--- + +## Files to Modify/Create + +| File | Action | +|------|--------| +| `packages/create-vite-app/package.json` | Modify - add deps, update build script | +| `packages/create-vite-app/scripts/generate-versions.ts` | Create | +| `packages/create-vite-app/src/versions.ts` | Generated (gitignored) | +| `packages/create-vite-app/src/index.ts` | Rewrite | +| `packages/create-vite-app/.gitignore` | Create - ignore src/versions.ts | + +--- + +## Template Files Copied (from examples/react-vanilla-spa/) + +``` +project-name/ +├── client/ +│ ├── base.css +│ ├── base.jsx +│ ├── index.html +│ └── mount.js +├── package.json (transformed) +├── server.js +└── vite.config.js +``` + +--- + +## Version Mapping + +| Source Reference | Package | Resolved | +|-----------------|---------|----------| +| `workspace:^` | @fastify/vite | ^8.2.3 | +| `catalog:` | fastify | ^5.6.2 | +| `catalog:` | vite | ^7.3.0 | +| `catalog:react` | react | ^19.2.3 | +| `catalog:react` | react-dom | ^19.2.3 | +| `catalog:react` | @vitejs/plugin-react | ^5.1.2 | From 67e937769126b2dc83e4b22e56e889305a2b003f Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Fri, 2 Jan 2026 22:05:14 -0500 Subject: [PATCH 3/6] Switch to src/versions.json over versions.ts --- packages/create-vite-app/.gitignore | 3 + packages/create-vite-app/PLAN.md | 97 +++---- packages/create-vite-app/package.json | 8 +- .../scripts/generate-versions.ts | 70 +++++ packages/create-vite-app/src/index.ts | 182 ++++++++++--- pnpm-lock.yaml | 250 ++++++++++-------- 6 files changed, 399 insertions(+), 211 deletions(-) create mode 100644 packages/create-vite-app/.gitignore create mode 100644 packages/create-vite-app/scripts/generate-versions.ts diff --git a/packages/create-vite-app/.gitignore b/packages/create-vite-app/.gitignore new file mode 100644 index 00000000..9b79d39f --- /dev/null +++ b/packages/create-vite-app/.gitignore @@ -0,0 +1,3 @@ +# Generated at build time +src/versions.json +templates/ diff --git a/packages/create-vite-app/PLAN.md b/packages/create-vite-app/PLAN.md index b3d33cdf..f9c1d1fd 100644 --- a/packages/create-vite-app/PLAN.md +++ b/packages/create-vite-app/PLAN.md @@ -4,7 +4,7 @@ Build a CLI scaffolding tool that copies the `examples/react-vanilla-spa/` template and resolves pnpm catalog versions at build time. ## Requirements Summary -- **Template source**: `examples/react-vanilla-spa/` (no dedicated templates folder) +- **Template source**: `examples/react-vanilla-spa/` (bundled at build time) - **Prompts**: Project name only (using @clack/prompts) - **Versions**: Baked in at build time from `pnpm-workspace.yaml` - **Post-scaffold**: Auto-detect package manager and install dependencies @@ -12,38 +12,27 @@ Build a CLI scaffolding tool that copies the `examples/react-vanilla-spa/` templ --- -## Implementation Steps +## Implementation (Completed) ### Step 1: Add dependencies **File**: `packages/create-vite-app/package.json` -Add: -- `@clack/prompts` - interactive CLI prompts -- `yaml` (devDependency) - parse pnpm-workspace.yaml at build time - -### Step 2: Create build script to generate versions -**New file**: `packages/create-vite-app/scripts/generate-versions.ts` - -This script will: -1. Read `../../pnpm-workspace.yaml` for catalog versions -2. Read `../fastify-vite/package.json` for @fastify/vite version (workspace:^ reference) -3. Parse catalog and catalogs sections -4. Write `src/versions.ts` with resolved versions: -```ts -export const versions = { - '@fastify/vite': '^8.2.3', - 'fastify': '^5.6.2', - 'vite': '^7.3.0', - 'react': '^19.2.3', - 'react-dom': '^19.2.3', - '@vitejs/plugin-react': '^5.1.2', -} -``` +Added: +- `@clack/prompts` ^0.11.0 - interactive CLI prompts +- `yaml` ^2.8.2 (devDependency) - parse pnpm-workspace.yaml at build time + +### Step 2: Create build script +**File**: `packages/create-vite-app/scripts/generate-versions.ts` + +This script: +1. Reads `pnpm-workspace.yaml` for catalog versions +2. Reads `packages/fastify-vite/package.json` for @fastify/vite version +3. Writes `src/versions.json` with resolved versions +4. Copies template files from `examples/react-vanilla-spa` to `templates/react-spa` ### Step 3: Update build script in package.json **File**: `packages/create-vite-app/package.json` -Change build to: ```json "build": "node scripts/generate-versions.ts && tsc" ``` @@ -53,54 +42,36 @@ Change build to: ### Step 4: Rewrite src/index.ts **File**: `packages/create-vite-app/src/index.ts` -Structure: -```ts -#!/usr/bin/env node -import * as p from '@clack/prompts' -import { versions } from './versions.js' -// ... fs utilities - -async function main() { - p.intro('Create Fastify + Vite App') - - // 1. Get project name (with CLI arg fallback) - const projectName = await p.text({...}) +Features: +- Interactive project name prompt using @clack/prompts +- Copies template files from bundled `templates/react-spa` +- Transforms package.json (resolves versions, updates name) +- Auto-detects package manager and installs dependencies +- Shows spinner during operations - // 2. Copy template files from examples/react-vanilla-spa - // - Skip: node_modules, dist, *.test.js - // - Transform package.json with resolved versions - - // 3. Detect package manager (npm/pnpm/yarn/bun) - // 4. Run install with spinner - - p.outro('Done! Run: cd && npm run dev') -} -``` - -### Step 5: Add template copying logic -**File**: `packages/create-vite-app/src/index.ts` +### Step 5: Create .gitignore +**File**: `packages/create-vite-app/.gitignore` -Key functions: -- `copyTemplate(source, dest)` - recursively copy, skip ignored files -- `transformPackageJson(content, projectName, versions)` - replace workspace:/catalog: refs -- `detectPackageManager()` - check lockfiles or npm_config_user_agent -- `installDependencies(pm, cwd)` - spawn install process +Ignores build-time generated files: +- `src/versions.json` +- `templates/` --- -## Files to Modify/Create +## Files Modified/Created | File | Action | |------|--------| -| `packages/create-vite-app/package.json` | Modify - add deps, update build script | -| `packages/create-vite-app/scripts/generate-versions.ts` | Create | -| `packages/create-vite-app/src/versions.ts` | Generated (gitignored) | -| `packages/create-vite-app/src/index.ts` | Rewrite | -| `packages/create-vite-app/.gitignore` | Create - ignore src/versions.ts | +| `packages/create-vite-app/package.json` | Modified - added deps, updated build script | +| `packages/create-vite-app/scripts/generate-versions.ts` | Created | +| `packages/create-vite-app/src/versions.json` | Generated (gitignored) | +| `packages/create-vite-app/src/index.ts` | Rewritten | +| `packages/create-vite-app/.gitignore` | Created | +| `packages/create-vite-app/templates/` | Generated (gitignored) | --- -## Template Files Copied (from examples/react-vanilla-spa/) +## Generated Project Structure ``` project-name/ @@ -109,7 +80,7 @@ project-name/ │ ├── base.jsx │ ├── index.html │ └── mount.js -├── package.json (transformed) +├── package.json (transformed with resolved versions) ├── server.js └── vite.config.js ``` diff --git a/packages/create-vite-app/package.json b/packages/create-vite-app/package.json index 0b127624..f4dab985 100644 --- a/packages/create-vite-app/package.json +++ b/packages/create-vite-app/package.json @@ -13,7 +13,7 @@ ], "scripts": { "dev": "node src/index.ts", - "build": "tsc", + "build": "node scripts/generate-versions.ts && tsc", "prepublishOnly": "pnpm build", "test": "node --test" }, @@ -37,8 +37,12 @@ "engines": { "node": ">=22.18.0" }, + "dependencies": { + "@clack/prompts": "^0.11.0" + }, "devDependencies": { "typescript": "catalog:", - "@types/node": "catalog:" + "@types/node": "catalog:", + "yaml": "^2.8.2" } } diff --git a/packages/create-vite-app/scripts/generate-versions.ts b/packages/create-vite-app/scripts/generate-versions.ts new file mode 100644 index 00000000..722dd3fa --- /dev/null +++ b/packages/create-vite-app/scripts/generate-versions.ts @@ -0,0 +1,70 @@ +import { cpSync, existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from 'node:fs' +import { join } from 'node:path' +import { parse } from 'yaml' + +const rootDir = join(import.meta.dirname, '..', '..', '..') +const pkgDir = join(import.meta.dirname, '..') + +// Read pnpm-workspace.yaml +const workspaceYaml = readFileSync(join(rootDir, 'pnpm-workspace.yaml'), 'utf-8') +const workspace = parse(workspaceYaml) as { + catalog: Record + catalogs: Record> +} + +// Read @fastify/vite version from its package.json +const fastifyVitePkg = JSON.parse( + readFileSync(join(rootDir, 'packages', 'fastify-vite', 'package.json'), 'utf-8') +) + +// Build the versions object +const versions: Record = { + '@fastify/vite': `^${fastifyVitePkg.version}`, + fastify: workspace.catalog.fastify, + vite: workspace.catalog.vite, + react: workspace.catalogs.react.react, + 'react-dom': workspace.catalogs.react['react-dom'], + '@vitejs/plugin-react': workspace.catalogs.react['@vitejs/plugin-react'], +} + +// Generate the versions.json file +const versionsPath = join(pkgDir, 'src', 'versions.json') +writeFileSync(versionsPath, JSON.stringify(versions, null, 2) + '\n') +console.log('Generated src/versions.json with versions:', versions) + +// Copy template files from examples/react-vanilla-spa to templates/react-spa +const SKIP_PATTERNS = ['node_modules', 'dist', '.test.js', '.test.ts'] + +function shouldSkip(name: string): boolean { + return SKIP_PATTERNS.some((pattern) => name.includes(pattern)) +} + +function copyTemplate(src: string, dest: string): void { + const entries = readdirSync(src, { withFileTypes: true }) + + for (const entry of entries) { + if (shouldSkip(entry.name)) continue + + const srcPath = join(src, entry.name) + const destPath = join(dest, entry.name) + + if (entry.isDirectory()) { + mkdirSync(destPath, { recursive: true }) + copyTemplate(srcPath, destPath) + } else { + cpSync(srcPath, destPath) + } + } +} + +const templateSrc = join(rootDir, 'examples', 'react-vanilla-spa') +const templateDest = join(pkgDir, 'templates', 'react-spa') + +// Clean and recreate templates directory +if (existsSync(join(pkgDir, 'templates'))) { + rmSync(join(pkgDir, 'templates'), { recursive: true }) +} +mkdirSync(templateDest, { recursive: true }) + +copyTemplate(templateSrc, templateDest) +console.log('Copied template files to templates/react-spa') diff --git a/packages/create-vite-app/src/index.ts b/packages/create-vite-app/src/index.ts index 712f9aeb..6900f4c5 100644 --- a/packages/create-vite-app/src/index.ts +++ b/packages/create-vite-app/src/index.ts @@ -1,46 +1,158 @@ #!/usr/bin/env node -import { mkdirSync, writeFileSync } from 'node:fs' +import { cpSync, existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from 'node:fs' import { join } from 'node:path' +import { spawn } from 'node:child_process' +import * as p from '@clack/prompts' +import versions from './versions.json' with { type: 'json' } -// 1. Get project name from args (default to 'fastify-vite-app' if missing) -const projectName = process.argv[2] || 'fastify-vite-app' -const root = join(process.cwd(), projectName) - -console.log(`Creating ${projectName}...`) - -// 2. Create the project folder -mkdirSync(root, { recursive: true }) - -// 3. define the barebones package.json -const pkgJson = { - name: projectName, - type: 'module', - scripts: { - dev: 'fastify start -w server.js', - }, - dependencies: { - fastify: '^5.0.0', - '@fastify/vite': '^8.0.0', - }, +const TEMPLATE_DIR = join(import.meta.dirname, '..', 'templates', 'react-spa') + +const SKIP_PATTERNS = ['node_modules', 'dist', '.test.js', '.test.ts'] + +function shouldSkip(name: string): boolean { + return SKIP_PATTERNS.some((pattern) => name.includes(pattern)) +} + +function copyTemplate(src: string, dest: string): void { + const entries = readdirSync(src, { withFileTypes: true }) + + for (const entry of entries) { + if (shouldSkip(entry.name)) continue + + const srcPath = join(src, entry.name) + const destPath = join(dest, entry.name) + + if (entry.isDirectory()) { + mkdirSync(destPath, { recursive: true }) + copyTemplate(srcPath, destPath) + } else { + cpSync(srcPath, destPath) + } + } +} + +function transformPackageJson(projectName: string, destDir: string): void { + const pkgPath = join(destDir, 'package.json') + const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8')) + + // Update name + pkg.name = projectName + + // Replace workspace: and catalog: references with actual versions + for (const depType of ['dependencies', 'devDependencies'] as const) { + if (!pkg[depType]) continue + for (const [name, version] of Object.entries(pkg[depType])) { + if ( + typeof version === 'string' && + (version.startsWith('workspace:') || version.startsWith('catalog:')) + ) { + const resolved = versions[name as keyof typeof versions] + if (resolved) { + pkg[depType][name] = resolved + } + } + } + } + + // Remove private flag for user projects + delete pkg.private + + writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n') } -// 4. Write package.json -writeFileSync(join(root, 'package.json'), JSON.stringify(pkgJson, null, 2)) +function detectPackageManager(): 'pnpm' | 'yarn' | 'bun' | 'npm' { + // Check npm_config_user_agent (set when running via package manager) + const userAgent = process.env.npm_config_user_agent + if (userAgent) { + if (userAgent.includes('pnpm')) return 'pnpm' + if (userAgent.includes('yarn')) return 'yarn' + if (userAgent.includes('bun')) return 'bun' + } + return 'npm' +} + +async function installDependencies(pm: string, cwd: string): Promise { + return new Promise((resolve, reject) => { + const child = spawn(pm, ['install'], { + cwd, + stdio: 'inherit', + shell: process.platform === 'win32', + }) + child.on('close', (code) => { + if (code === 0) resolve() + else reject(new Error(`${pm} install failed with code ${code}`)) + }) + child.on('error', reject) + }) +} + +async function main(): Promise { + p.intro('Create Fastify + Vite App') + + // Get project name from CLI arg or prompt + let projectName = process.argv[2] + + if (!projectName) { + const result = await p.text({ + message: 'Project name:', + placeholder: 'my-fastify-app', + defaultValue: 'my-fastify-app', + validate: (value) => { + if (!value) return 'Project name is required' + if (existsSync(value)) return `Directory "${value}" already exists` + }, + }) + + if (p.isCancel(result)) { + p.cancel('Operation cancelled') + process.exit(0) + } -// 5. Write a minimal server.js -const serverCode = ` -import Fastify from 'fastify'; -const fastify = Fastify({ logger: true }); + projectName = result + } -fastify.get('/', async () => { - return { hello: 'world' } -}); + const destDir = join(process.cwd(), projectName) -await fastify.listen({ port: 3000 }); -` + // Check if directory already exists + if (existsSync(destDir)) { + p.cancel(`Directory "${projectName}" already exists`) + process.exit(1) + } -writeFileSync(join(root, 'server.js'), serverCode.trim()) + // Copy template + const copySpinner = p.spinner() + copySpinner.start('Copying template files...') + + try { + mkdirSync(destDir, { recursive: true }) + copyTemplate(TEMPLATE_DIR, destDir) + transformPackageJson(projectName, destDir) + copySpinner.stop('Template files copied') + } catch (error) { + copySpinner.stop('Failed to copy template') + throw error + } + + // Install dependencies + const pm = detectPackageManager() + const installSpinner = p.spinner() + installSpinner.start(`Installing dependencies with ${pm}...`) + + try { + await installDependencies(pm, destDir) + installSpinner.stop('Dependencies installed') + } catch { + installSpinner.stop(`Failed to install dependencies. Run "${pm} install" manually.`) + } + + p.outro(`Done! To get started: + + cd ${projectName} + ${pm} run dev`) +} -// 6. Done -console.log(`\nDone! Now run:\n cd ${projectName}\n npm install\n npm run dev`) +main().catch((error) => { + console.error(error) + process.exit(1) +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 07946734..1e47c03f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -88,10 +88,10 @@ importers: version: 1.36.0 vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: 'catalog:' - version: 4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jiti@2.4.2)(jsdom@23.2.0)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jiti@2.4.2)(jsdom@23.2.0)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) zx: specifier: ^8.8.5 version: 8.8.5 @@ -149,10 +149,10 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: catalog:react - version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) examples/react-next-mini: dependencies: @@ -189,10 +189,10 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: catalog:react - version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) examples/react-streaming: dependencies: @@ -220,10 +220,10 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: catalog:react - version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) examples/react-vanilla: dependencies: @@ -242,10 +242,10 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: catalog:react - version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) examples/react-vanilla-spa: dependencies: @@ -264,10 +264,10 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: catalog:react - version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) examples/react-vanilla-spa-ts: dependencies: @@ -295,7 +295,7 @@ importers: version: 19.1.2(@types/react@19.1.2) '@vitejs/plugin-react': specifier: catalog:react - version: 5.1.2(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 5.1.2(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) tsx: specifier: 'catalog:' version: 4.21.0 @@ -304,7 +304,7 @@ importers: version: 5.9.3 vite: specifier: 'catalog:' - version: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) examples/react-vanilla-ts: dependencies: @@ -332,7 +332,7 @@ importers: version: 19.1.2(@types/react@19.1.2) '@vitejs/plugin-react': specifier: catalog:react - version: 5.1.2(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 5.1.2(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) tsx: specifier: 'catalog:' version: 4.21.0 @@ -341,7 +341,7 @@ importers: version: 5.9.3 vite: specifier: 'catalog:' - version: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) examples/vue-hydration: dependencies: @@ -369,7 +369,7 @@ importers: version: 9.39.2 '@vitejs/plugin-vue': specifier: catalog:vue - version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3)) + version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) eslint: specifier: catalog:eslint version: 9.39.2(jiti@2.4.2) @@ -381,7 +381,7 @@ importers: version: 16.5.0 vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) examples/vue-next-mini: dependencies: @@ -415,7 +415,7 @@ importers: version: 9.39.2 '@vitejs/plugin-vue': specifier: catalog:vue - version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3)) + version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) eslint: specifier: catalog:eslint version: 9.39.2(jiti@2.4.2) @@ -427,7 +427,7 @@ importers: version: 16.5.0 vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) examples/vue-streaming: dependencies: @@ -452,7 +452,7 @@ importers: version: 9.39.2 '@vitejs/plugin-vue': specifier: catalog:vue - version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3)) + version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) eslint: specifier: catalog:eslint version: 9.39.2(jiti@2.4.2) @@ -464,7 +464,7 @@ importers: version: 16.5.0 vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) examples/vue-vanilla: dependencies: @@ -483,7 +483,7 @@ importers: version: 9.39.2 '@vitejs/plugin-vue': specifier: catalog:vue - version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3)) + version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) eslint: specifier: catalog:eslint version: 9.39.2(jiti@2.4.2) @@ -495,7 +495,7 @@ importers: version: 16.5.0 vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) examples/vue-vanilla-spa: dependencies: @@ -514,7 +514,7 @@ importers: version: 9.39.2 '@vitejs/plugin-vue': specifier: catalog:vue - version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3)) + version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) eslint: specifier: catalog:eslint version: 9.39.2(jiti@2.4.2) @@ -526,7 +526,7 @@ importers: version: 16.5.0 vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) examples/vue-vanilla-ts: dependencies: @@ -548,7 +548,7 @@ importers: version: 22.14.0 '@vitejs/plugin-vue': specifier: catalog:vue - version: 5.2.4(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3)) + version: 5.2.4(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) eslint: specifier: catalog:eslint version: 9.39.2(jiti@2.4.2) @@ -566,7 +566,7 @@ importers: version: 8.51.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) vite: specifier: 'catalog:' - version: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) vue-eslint-parser: specifier: catalog:eslint version: 10.2.0(eslint@9.39.2(jiti@2.4.2)) @@ -575,6 +575,10 @@ importers: version: 2.2.10(typescript@5.9.3) packages/create-vite-app: + dependencies: + '@clack/prompts': + specifier: ^0.11.0 + version: 0.11.0 devDependencies: '@types/node': specifier: 'catalog:' @@ -582,6 +586,9 @@ importers: typescript: specifier: 'catalog:' version: 5.9.3 + yaml: + specifier: ^2.8.2 + version: 2.8.2 packages/create-vite-app/templates/react-spa: dependencies: @@ -696,7 +703,7 @@ importers: version: 8.1.0 vite: specifier: '>=6' - version: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) devDependencies: '@types/node': specifier: ^22.19.3 @@ -712,7 +719,7 @@ importers: version: 5.9.3 vitest: specifier: 'catalog:' - version: 4.0.16(@types/node@22.19.3)(@vitest/ui@4.0.16)(jiti@2.4.2)(jsdom@23.2.0)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 4.0.16(@types/node@22.19.3)(@vitest/ui@4.0.16)(jiti@2.4.2)(jsdom@23.2.0)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) packages/fastify-vite/fixtures/cjs: dependencies: @@ -761,11 +768,11 @@ importers: devDependencies: '@vitejs/plugin-vue': specifier: catalog:vue - version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3)) + version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) optionalDependencies: vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) starters/react-base: dependencies: @@ -774,10 +781,10 @@ importers: version: 2.0.2 '@fastify/react': specifier: ^1.1.2 - version: 1.1.2(@types/react@19.1.2)(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 1.1.2(@types/react@19.1.2)(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) '@fastify/vite': specifier: ^8.2.2 - version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) '@unhead/react': specifier: ^2.0.8 version: 2.0.8(react@19.2.3) @@ -808,7 +815,7 @@ importers: version: 4.1.2 '@vitejs/plugin-react': specifier: ^5.1.2 - version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) postcss: specifier: ^8.5.3 version: 8.5.3 @@ -820,7 +827,7 @@ importers: version: 4.1.2 vite: specifier: ^7.3.0 - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) starters/react-kitchensink: dependencies: @@ -832,10 +839,10 @@ importers: version: 2.0.2 '@fastify/react': specifier: ^1.1.2 - version: 1.1.2(@types/react@19.1.2)(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 1.1.2(@types/react@19.1.2)(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) '@fastify/vite': specifier: ^8.2.2 - version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) '@unhead/react': specifier: ^2.0.8 version: 2.0.8(react@19.2.3) @@ -866,7 +873,7 @@ importers: version: 4.1.2 '@vitejs/plugin-react': specifier: ^5.1.2 - version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) postcss: specifier: ^8.5.3 version: 8.5.3 @@ -878,7 +885,7 @@ importers: version: 4.1.2 vite: specifier: ^7.3.0 - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) starters/react-typescript: dependencies: @@ -890,10 +897,10 @@ importers: version: 2.0.2 '@fastify/react': specifier: ^1.1.2 - version: 1.1.2(@types/react@19.1.2)(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1)) + version: 1.1.2(@types/react@19.1.2)(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2)) '@fastify/vite': specifier: ^8.2.2 - version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1)) + version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2)) '@unhead/react': specifier: ^2.0.8 version: 2.0.8(react@19.2.3) @@ -933,7 +940,7 @@ importers: version: 19.1.2(@types/react@19.1.2) '@vitejs/plugin-react': specifier: ^5.1.2 - version: 5.1.2(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1)) + version: 5.1.2(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2)) postcss: specifier: ^8.5.3 version: 8.5.3 @@ -951,7 +958,7 @@ importers: version: 5.9.3 vite: specifier: ^7.3.0 - version: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1) + version: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2) starters/vue-base: dependencies: @@ -960,10 +967,10 @@ importers: version: 2.0.2 '@fastify/vite': specifier: ^8.2.2 - version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) '@fastify/vue': specifier: ^1.1.3 - version: 1.1.3(@types/node@24.10.4)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.7.1) + version: 1.1.3(@types/node@24.10.4)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) '@unhead/vue': specifier: ^2.0.5 version: 2.0.8(vue@3.5.13(typescript@5.9.3)) @@ -982,10 +989,10 @@ importers: version: 4.1.2 '@tailwindcss/vite': specifier: ^4.1.1 - version: 4.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 4.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) '@vitejs/plugin-vue': specifier: ^5.2.3 - version: 5.2.3(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.13(typescript@5.9.3)) + version: 5.2.3(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.13(typescript@5.9.3)) postcss: specifier: ^8.5.3 version: 8.5.3 @@ -997,7 +1004,7 @@ importers: version: 4.1.2 vite: specifier: ^7.3.0 - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) starters/vue-kitchensink: dependencies: @@ -1009,10 +1016,10 @@ importers: version: 2.0.2 '@fastify/vite': specifier: ^8.2.2 - version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) '@fastify/vue': specifier: ^1.1.3 - version: 1.1.3(@types/node@24.10.4)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.7.1) + version: 1.1.3(@types/node@24.10.4)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) '@unhead/vue': specifier: ^2.0.5 version: 2.0.8(vue@3.5.13(typescript@5.9.3)) @@ -1031,7 +1038,7 @@ importers: version: 4.1.2 '@vitejs/plugin-vue': specifier: ^5.2.3 - version: 5.2.3(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.13(typescript@5.9.3)) + version: 5.2.3(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.13(typescript@5.9.3)) postcss: specifier: ^8.5.3 version: 8.5.3 @@ -1043,7 +1050,7 @@ importers: version: 4.1.2 vite: specifier: ^7.3.0 - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) starters/vue-typescript: dependencies: @@ -1055,10 +1062,10 @@ importers: version: 2.0.2 '@fastify/vite': specifier: ^8.2.2 - version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1)) + version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2)) '@fastify/vue': specifier: ^1.1.3 - version: 1.1.3(@types/node@22.14.0)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.7.1) + version: 1.1.3(@types/node@22.14.0)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.8.2) '@unhead/vue': specifier: ^2.0.5 version: 2.0.8(vue@3.5.13(typescript@5.9.3)) @@ -1080,7 +1087,7 @@ importers: version: 22.14.0 '@vitejs/plugin-vue': specifier: ^5.2.3 - version: 5.2.3(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1))(vue@3.5.13(typescript@5.9.3)) + version: 5.2.3(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2))(vue@3.5.13(typescript@5.9.3)) postcss: specifier: ^8.5.3 version: 8.5.3 @@ -1098,7 +1105,7 @@ importers: version: 5.9.3 vite: specifier: ^7.3.0 - version: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1) + version: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2) packages: @@ -1371,6 +1378,12 @@ packages: '@chevrotain/utils@11.0.3': resolution: {integrity: sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==} + '@clack/core@0.5.0': + resolution: {integrity: sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow==} + + '@clack/prompts@0.11.0': + resolution: {integrity: sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==} + '@csstools/cascade-layer-name-parser@2.0.4': resolution: {integrity: sha512-7DFHlPuIxviKYZrOiwVU/PiHLm3lLUR23OMuEEtfEOQTOp9hzQ2JjdY6X5H18RVuUPJqSCI+qNnD5iOLMVE0bA==} engines: {node: '>=18'} @@ -5097,6 +5110,9 @@ packages: resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} engines: {node: '>=18'} + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -5654,9 +5670,9 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yaml@2.7.1: - resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} - engines: {node: '>= 14'} + yaml@2.8.2: + resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} + engines: {node: '>= 14.6'} hasBin: true yocto-queue@0.1.0: @@ -6106,6 +6122,17 @@ snapshots: '@chevrotain/utils@11.0.3': {} + '@clack/core@0.5.0': + dependencies: + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@clack/prompts@0.11.0': + dependencies: + '@clack/core': 0.5.0 + picocolors: 1.1.1 + sisteransi: 1.0.5 + '@csstools/cascade-layer-name-parser@2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': dependencies: '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) @@ -6722,9 +6749,9 @@ snapshots: '@fastify/forwarded': 3.0.1 ipaddr.js: 2.3.0 - '@fastify/react@1.1.2(@types/react@19.1.2)(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1))': + '@fastify/react@1.1.2(@types/react@19.1.2)(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2))': dependencies: - '@fastify/vite': 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1)) + '@fastify/vite': 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2)) '@unhead/react': 2.0.8(react@19.2.3) acorn: 8.15.0 acorn-strip-function: 1.2.0 @@ -6744,9 +6771,9 @@ snapshots: - fastify - vite - '@fastify/react@1.1.2(@types/react@19.1.2)(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))': + '@fastify/react@1.1.2(@types/react@19.1.2)(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@fastify/vite': 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + '@fastify/vite': 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) '@unhead/react': 2.0.8(react@19.2.3) acorn: 8.15.0 acorn-strip-function: 1.2.0 @@ -6783,7 +6810,7 @@ snapshots: fastq: 1.20.1 glob: 13.0.0 - '@fastify/vite@8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1))': + '@fastify/vite@8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2))': dependencies: '@fastify/deepmerge': 3.1.0 '@fastify/middie': 9.0.3 @@ -6794,9 +6821,9 @@ snapshots: html-rewriter-wasm: 0.4.1 klaw: 4.1.0 package-directory: 8.1.0 - vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1) + vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2) - '@fastify/vite@8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))': + '@fastify/vite@8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@fastify/deepmerge': 3.1.0 '@fastify/middie': 9.0.3 @@ -6807,11 +6834,11 @@ snapshots: html-rewriter-wasm: 0.4.1 klaw: 4.1.0 package-directory: 8.1.0 - vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) - '@fastify/vue@1.1.3(@types/node@22.14.0)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.7.1)': + '@fastify/vue@1.1.3(@types/node@22.14.0)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.8.2)': dependencies: - '@fastify/vite': 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1)) + '@fastify/vite': 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2)) '@unhead/vue': 2.0.8(vue@3.5.26(typescript@5.9.3)) acorn: 8.15.0 acorn-walk: 8.3.4 @@ -6822,7 +6849,7 @@ snapshots: vue-router: 4.6.4(vue@3.5.26(typescript@5.9.3)) youch: 3.3.4 optionalDependencies: - vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1) + vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2) transitivePeerDependencies: - '@types/node' - fastify @@ -6838,9 +6865,9 @@ snapshots: - typescript - yaml - '@fastify/vue@1.1.3(@types/node@24.10.4)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.7.1)': + '@fastify/vue@1.1.3(@types/node@24.10.4)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)': dependencies: - '@fastify/vite': 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + '@fastify/vite': 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) '@unhead/vue': 2.0.8(vue@3.5.26(typescript@5.9.3)) acorn: 8.15.0 acorn-walk: 8.3.4 @@ -6851,7 +6878,7 @@ snapshots: vue-router: 4.6.4(vue@3.5.26(typescript@5.9.3)) youch: 3.3.4 optionalDependencies: - vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - '@types/node' - fastify @@ -7213,12 +7240,12 @@ snapshots: postcss: 8.5.3 tailwindcss: 4.1.2 - '@tailwindcss/vite@4.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))': + '@tailwindcss/vite@4.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@tailwindcss/node': 4.1.2 '@tailwindcss/oxide': 4.1.2 tailwindcss: 4.1.2 - vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) '@types/babel__core@7.20.5': dependencies: @@ -7528,7 +7555,7 @@ snapshots: unhead: 2.0.8 vue: 3.5.26(typescript@5.9.3) - '@vitejs/plugin-react@5.1.2(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1))': + '@vitejs/plugin-react@5.1.2(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) @@ -7536,11 +7563,11 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.53 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1) + vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@5.1.2(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))': + '@vitejs/plugin-react@5.1.2(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) @@ -7548,11 +7575,11 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.53 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))': + '@vitejs/plugin-react@5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) @@ -7560,18 +7587,18 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.53 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.2.3(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1))(vue@3.5.13(typescript@5.9.3))': + '@vitejs/plugin-vue@5.2.3(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2))(vue@3.5.13(typescript@5.9.3))': dependencies: - vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1) + vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2) vue: 3.5.13(typescript@5.9.3) - '@vitejs/plugin-vue@5.2.3(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.13(typescript@5.9.3))': + '@vitejs/plugin-vue@5.2.3(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.13(typescript@5.9.3))': dependencies: - vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) vue: 3.5.13(typescript@5.9.3) '@vitejs/plugin-vue@5.2.4(vite@5.4.21(@types/node@24.10.4)(lightningcss@1.29.3))(vue@3.5.26(typescript@5.9.3))': @@ -7579,14 +7606,14 @@ snapshots: vite: 5.4.21(@types/node@24.10.4)(lightningcss@1.29.3) vue: 3.5.26(typescript@5.9.3) - '@vitejs/plugin-vue@5.2.4(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3))': + '@vitejs/plugin-vue@5.2.4(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3))': dependencies: - vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) vue: 3.5.26(typescript@5.9.3) - '@vitejs/plugin-vue@5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3))': + '@vitejs/plugin-vue@5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3))': dependencies: - vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) vue: 3.5.26(typescript@5.9.3) '@vitest/expect@4.0.16': @@ -7598,21 +7625,21 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.16(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))': + '@vitest/mocker@4.0.16(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.0.16 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + vite: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/mocker@4.0.16(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))': + '@vitest/mocker@4.0.16(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.0.16 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) '@vitest/pretty-format@4.0.16': dependencies: @@ -7640,7 +7667,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vitest: 4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jiti@2.4.2)(jsdom@23.2.0)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + vitest: 4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jiti@2.4.2)(jsdom@23.2.0)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) '@vitest/utils@4.0.16': dependencies: @@ -10091,6 +10118,8 @@ snapshots: mrmime: 2.0.1 totalist: 3.0.1 + sisteransi@1.0.5: {} + slash@3.0.0: {} slick@1.12.2: @@ -10359,7 +10388,7 @@ snapshots: fsevents: 2.3.3 lightningcss: 1.29.3 - vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1): + vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -10373,9 +10402,9 @@ snapshots: jiti: 2.4.2 lightningcss: 1.29.3 tsx: 4.20.3 - yaml: 2.7.1 + yaml: 2.8.2 - vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1): + vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -10389,9 +10418,9 @@ snapshots: jiti: 2.4.2 lightningcss: 1.29.3 tsx: 4.21.0 - yaml: 2.7.1 + yaml: 2.8.2 - vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1): + vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -10405,9 +10434,9 @@ snapshots: jiti: 2.4.2 lightningcss: 1.29.3 tsx: 4.21.0 - yaml: 2.7.1 + yaml: 2.8.2 - vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1): + vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -10421,7 +10450,7 @@ snapshots: jiti: 2.4.2 lightningcss: 1.29.3 tsx: 4.21.0 - yaml: 2.7.1 + yaml: 2.8.2 vitepress-plugin-mermaid@2.0.17(mermaid@11.12.2)(vitepress@1.6.4(@algolia/client-search@5.46.2)(@types/node@24.10.4)(lightningcss@1.29.3)(markdown-it-mathjax3@4.3.2)(postcss@8.5.6)(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.3)): dependencies: @@ -10480,10 +10509,10 @@ snapshots: - typescript - universal-cookie - vitest@4.0.16(@types/node@22.19.3)(@vitest/ui@4.0.16)(jiti@2.4.2)(jsdom@23.2.0)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1): + vitest@4.0.16(@types/node@22.19.3)(@vitest/ui@4.0.16)(jiti@2.4.2)(jsdom@23.2.0)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@vitest/expect': 4.0.16 - '@vitest/mocker': 4.0.16(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + '@vitest/mocker': 4.0.16(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/pretty-format': 4.0.16 '@vitest/runner': 4.0.16 '@vitest/snapshot': 4.0.16 @@ -10500,7 +10529,7 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + vite: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.19.3 @@ -10519,10 +10548,10 @@ snapshots: - tsx - yaml - vitest@4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jiti@2.4.2)(jsdom@23.2.0)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1): + vitest@4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jiti@2.4.2)(jsdom@23.2.0)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@vitest/expect': 4.0.16 - '@vitest/mocker': 4.0.16(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) + '@vitest/mocker': 4.0.16(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/pretty-format': 4.0.16 '@vitest/runner': 4.0.16 '@vitest/snapshot': 4.0.16 @@ -10539,7 +10568,7 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.10.4 @@ -10699,8 +10728,7 @@ snapshots: yallist@3.1.1: {} - yaml@2.7.1: - optional: true + yaml@2.8.2: {} yocto-queue@0.1.0: {} From 53b8d811723c492747ac5a31347142464f018aeb Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Fri, 2 Jan 2026 22:11:02 -0500 Subject: [PATCH 4/6] Split into two scripts --- packages/create-vite-app/PLAN.md | 43 ++++++++++------ packages/create-vite-app/README.md | 3 ++ packages/create-vite-app/package.json | 49 ++++++++++--------- .../create-vite-app/scripts/copy-examples.ts | 41 ++++++++++++++++ .../scripts/generate-versions.ts | 41 +--------------- packages/create-vite-app/tsconfig.json | 4 +- 6 files changed, 99 insertions(+), 82 deletions(-) create mode 100644 packages/create-vite-app/scripts/copy-examples.ts diff --git a/packages/create-vite-app/PLAN.md b/packages/create-vite-app/PLAN.md index f9c1d1fd..7ed2497e 100644 --- a/packages/create-vite-app/PLAN.md +++ b/packages/create-vite-app/PLAN.md @@ -1,9 +1,11 @@ # Implementation Plan: @fastify/create-vite-app CLI ## Overview + Build a CLI scaffolding tool that copies the `examples/react-vanilla-spa/` template and resolves pnpm catalog versions at build time. ## Requirements Summary + - **Template source**: `examples/react-vanilla-spa/` (bundled at build time) - **Prompts**: Project name only (using @clack/prompts) - **Versions**: Baked in at build time from `pnpm-workspace.yaml` @@ -15,22 +17,27 @@ Build a CLI scaffolding tool that copies the `examples/react-vanilla-spa/` templ ## Implementation (Completed) ### Step 1: Add dependencies + **File**: `packages/create-vite-app/package.json` Added: + - `@clack/prompts` ^0.11.0 - interactive CLI prompts - `yaml` ^2.8.2 (devDependency) - parse pnpm-workspace.yaml at build time ### Step 2: Create build script + **File**: `packages/create-vite-app/scripts/generate-versions.ts` This script: + 1. Reads `pnpm-workspace.yaml` for catalog versions 2. Reads `packages/fastify-vite/package.json` for @fastify/vite version 3. Writes `src/versions.json` with resolved versions 4. Copies template files from `examples/react-vanilla-spa` to `templates/react-spa` ### Step 3: Update build script in package.json + **File**: `packages/create-vite-app/package.json` ```json @@ -40,9 +47,11 @@ This script: (Uses Node 22.18+ native TypeScript support - no tsx needed) ### Step 4: Rewrite src/index.ts + **File**: `packages/create-vite-app/src/index.ts` Features: + - Interactive project name prompt using @clack/prompts - Copies template files from bundled `templates/react-spa` - Transforms package.json (resolves versions, updates name) @@ -50,9 +59,11 @@ Features: - Shows spinner during operations ### Step 5: Create .gitignore + **File**: `packages/create-vite-app/.gitignore` Ignores build-time generated files: + - `src/versions.json` - `templates/` @@ -60,14 +71,14 @@ Ignores build-time generated files: ## Files Modified/Created -| File | Action | -|------|--------| -| `packages/create-vite-app/package.json` | Modified - added deps, updated build script | -| `packages/create-vite-app/scripts/generate-versions.ts` | Created | -| `packages/create-vite-app/src/versions.json` | Generated (gitignored) | -| `packages/create-vite-app/src/index.ts` | Rewritten | -| `packages/create-vite-app/.gitignore` | Created | -| `packages/create-vite-app/templates/` | Generated (gitignored) | +| File | Action | +| ------------------------------------------------------- | ------------------------------------------- | +| `packages/create-vite-app/package.json` | Modified - added deps, updated build script | +| `packages/create-vite-app/scripts/generate-versions.ts` | Created | +| `packages/create-vite-app/src/versions.json` | Generated (gitignored) | +| `packages/create-vite-app/src/index.ts` | Rewritten | +| `packages/create-vite-app/.gitignore` | Created | +| `packages/create-vite-app/templates/` | Generated (gitignored) | --- @@ -89,11 +100,11 @@ project-name/ ## Version Mapping -| Source Reference | Package | Resolved | -|-----------------|---------|----------| -| `workspace:^` | @fastify/vite | ^8.2.3 | -| `catalog:` | fastify | ^5.6.2 | -| `catalog:` | vite | ^7.3.0 | -| `catalog:react` | react | ^19.2.3 | -| `catalog:react` | react-dom | ^19.2.3 | -| `catalog:react` | @vitejs/plugin-react | ^5.1.2 | +| Source Reference | Package | Resolved | +| ---------------- | -------------------- | -------- | +| `workspace:^` | @fastify/vite | ^8.2.3 | +| `catalog:` | fastify | ^5.6.2 | +| `catalog:` | vite | ^7.3.0 | +| `catalog:react` | react | ^19.2.3 | +| `catalog:react` | react-dom | ^19.2.3 | +| `catalog:react` | @vitejs/plugin-react | ^5.1.2 | diff --git a/packages/create-vite-app/README.md b/packages/create-vite-app/README.md index bbd6a430..d225d9e3 100644 --- a/packages/create-vite-app/README.md +++ b/packages/create-vite-app/README.md @@ -7,6 +7,7 @@ The official scaffolding tool for **Fastify + Vite** applications. You do not need to install this package globally. You can run it directly using your package manager of choice. ### npm + ```bash npm create @fastify/vite-app@latest # or with a specific project name @@ -14,11 +15,13 @@ npm create @fastify/vite-app@latest my-app ``` ### pnpm + ```bash pnpm create @fastify/vite-app@latest ``` ### yarn + ```bash yarn create @fastify/vite-app ``` diff --git a/packages/create-vite-app/package.json b/packages/create-vite-app/package.json index f4dab985..4ff56b6e 100644 --- a/packages/create-vite-app/package.json +++ b/packages/create-vite-app/package.json @@ -2,7 +2,20 @@ "name": "@fastify/create-vite-app", "version": "0.0.0", "description": "Scaffolding tool for Fastify + Vite applications", - "type": "module", + "keywords": [ + "cli", + "create-fastify-app", + "fastify", + "scaffold", + "vite" + ], + "license": "MIT", + "author": "Fastify Team", + "repository": { + "type": "git", + "url": "git+https://github.com/fastify/fastify-vite.git", + "directory": "packages/create-vite-app" + }, "bin": { "create-vite-app": "./dist/index.js", "fastify-create-vite-app": "./dist/index.js" @@ -11,38 +24,26 @@ "dist", "templates" ], - "scripts": { - "dev": "node src/index.ts", - "build": "node scripts/generate-versions.ts && tsc", - "prepublishOnly": "pnpm build", - "test": "node --test" - }, + "type": "module", "publishConfig": { "access": "public" }, - "repository": { - "type": "git", - "url": "git+https://github.com/fastify/fastify-vite.git", - "directory": "packages/create-vite-app" - }, - "keywords": [ - "fastify", - "vite", - "create-fastify-app", - "scaffold", - "cli" - ], - "author": "Fastify Team", - "license": "MIT", - "engines": { - "node": ">=22.18.0" + "scripts": { + "build": "pnpm generate-versions && pnpm copy-examples && tsc", + "copy-examples": "node scripts/copy-examples.ts", + "generate-versions": "node scripts/generate-versions.ts", + "prepublishOnly": "pnpm build", + "test": "node --test" }, "dependencies": { "@clack/prompts": "^0.11.0" }, "devDependencies": { - "typescript": "catalog:", "@types/node": "catalog:", + "typescript": "catalog:", "yaml": "^2.8.2" + }, + "engines": { + "node": ">=22.18.0" } } diff --git a/packages/create-vite-app/scripts/copy-examples.ts b/packages/create-vite-app/scripts/copy-examples.ts new file mode 100644 index 00000000..893dd0d6 --- /dev/null +++ b/packages/create-vite-app/scripts/copy-examples.ts @@ -0,0 +1,41 @@ +import { cpSync, existsSync, mkdirSync, readdirSync, rmSync } from 'node:fs' +import { join } from 'node:path' + +const rootDir = join(import.meta.dirname, '..', '..', '..') +const pkgDir = join(import.meta.dirname, '..') + +const SKIP_PATTERNS = ['node_modules', 'dist', '.test.js', '.test.ts'] + +function shouldSkip(name: string): boolean { + return SKIP_PATTERNS.some((pattern) => name.includes(pattern)) +} + +function copyTemplate(src: string, dest: string): void { + const entries = readdirSync(src, { withFileTypes: true }) + + for (const entry of entries) { + if (shouldSkip(entry.name)) continue + + const srcPath = join(src, entry.name) + const destPath = join(dest, entry.name) + + if (entry.isDirectory()) { + mkdirSync(destPath, { recursive: true }) + copyTemplate(srcPath, destPath) + } else { + cpSync(srcPath, destPath) + } + } +} + +const templateSrc = join(rootDir, 'examples', 'react-vanilla-spa') +const templateDest = join(pkgDir, 'templates', 'react-spa') + +// Clean and recreate templates directory +if (existsSync(join(pkgDir, 'templates'))) { + rmSync(join(pkgDir, 'templates'), { recursive: true }) +} +mkdirSync(templateDest, { recursive: true }) + +copyTemplate(templateSrc, templateDest) +console.log('Copied template files to templates/react-spa') diff --git a/packages/create-vite-app/scripts/generate-versions.ts b/packages/create-vite-app/scripts/generate-versions.ts index 722dd3fa..c3c8f489 100644 --- a/packages/create-vite-app/scripts/generate-versions.ts +++ b/packages/create-vite-app/scripts/generate-versions.ts @@ -1,4 +1,4 @@ -import { cpSync, existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from 'node:fs' +import { readFileSync, writeFileSync } from 'node:fs' import { join } from 'node:path' import { parse } from 'yaml' @@ -14,7 +14,7 @@ const workspace = parse(workspaceYaml) as { // Read @fastify/vite version from its package.json const fastifyVitePkg = JSON.parse( - readFileSync(join(rootDir, 'packages', 'fastify-vite', 'package.json'), 'utf-8') + readFileSync(join(rootDir, 'packages', 'fastify-vite', 'package.json'), 'utf-8'), ) // Build the versions object @@ -31,40 +31,3 @@ const versions: Record = { const versionsPath = join(pkgDir, 'src', 'versions.json') writeFileSync(versionsPath, JSON.stringify(versions, null, 2) + '\n') console.log('Generated src/versions.json with versions:', versions) - -// Copy template files from examples/react-vanilla-spa to templates/react-spa -const SKIP_PATTERNS = ['node_modules', 'dist', '.test.js', '.test.ts'] - -function shouldSkip(name: string): boolean { - return SKIP_PATTERNS.some((pattern) => name.includes(pattern)) -} - -function copyTemplate(src: string, dest: string): void { - const entries = readdirSync(src, { withFileTypes: true }) - - for (const entry of entries) { - if (shouldSkip(entry.name)) continue - - const srcPath = join(src, entry.name) - const destPath = join(dest, entry.name) - - if (entry.isDirectory()) { - mkdirSync(destPath, { recursive: true }) - copyTemplate(srcPath, destPath) - } else { - cpSync(srcPath, destPath) - } - } -} - -const templateSrc = join(rootDir, 'examples', 'react-vanilla-spa') -const templateDest = join(pkgDir, 'templates', 'react-spa') - -// Clean and recreate templates directory -if (existsSync(join(pkgDir, 'templates'))) { - rmSync(join(pkgDir, 'templates'), { recursive: true }) -} -mkdirSync(templateDest, { recursive: true }) - -copyTemplate(templateSrc, templateDest) -console.log('Copied template files to templates/react-spa') diff --git a/packages/create-vite-app/tsconfig.json b/packages/create-vite-app/tsconfig.json index ae82305d..012f673d 100644 --- a/packages/create-vite-app/tsconfig.json +++ b/packages/create-vite-app/tsconfig.json @@ -8,7 +8,5 @@ "allowImportingTsExtensions": true, "noEmit": false }, - "include": [ - "src/**/*" - ] + "include": ["src/**/*"] } From ec9bb5c0bbea0b1d2178639e0f0fab5061b6555e Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Fri, 2 Jan 2026 22:29:05 -0500 Subject: [PATCH 5/6] Use zx --- package.json | 2 +- packages/create-vite-app/package.json | 7 +- .../create-vite-app/scripts/copy-examples.ts | 37 ++-------- .../scripts/generate-versions.ts | 17 ++--- packages/create-vite-app/src/index.ts | 67 +++---------------- pnpm-lock.yaml | 52 ++++++++++++-- pnpm-workspace.yaml | 1 + 7 files changed, 75 insertions(+), 108 deletions(-) diff --git a/package.json b/package.json index e55d23dd..14e02c9a 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "oxlint": "^1.36.0", "vite": "catalog:", "vitest": "catalog:", - "zx": "^8.8.5" + "zx": "catalog:" }, "packageManager": "pnpm@10.26.2+sha512.0e308ff2005fc7410366f154f625f6631ab2b16b1d2e70238444dd6ae9d630a8482d92a451144debc492416896ed16f7b114a86ec68b8404b2443869e68ffda6", "pnpm": { diff --git a/packages/create-vite-app/package.json b/packages/create-vite-app/package.json index 4ff56b6e..702a2b10 100644 --- a/packages/create-vite-app/package.json +++ b/packages/create-vite-app/package.json @@ -36,12 +36,13 @@ "test": "node --test" }, "dependencies": { - "@clack/prompts": "^0.11.0" + "@clack/prompts": "^0.11.0", + "zx": "catalog:" }, "devDependencies": { + "@types/fs-extra": "^11.0.4", "@types/node": "catalog:", - "typescript": "catalog:", - "yaml": "^2.8.2" + "typescript": "catalog:" }, "engines": { "node": ">=22.18.0" diff --git a/packages/create-vite-app/scripts/copy-examples.ts b/packages/create-vite-app/scripts/copy-examples.ts index 893dd0d6..5fb72a0d 100644 --- a/packages/create-vite-app/scripts/copy-examples.ts +++ b/packages/create-vite-app/scripts/copy-examples.ts @@ -1,41 +1,14 @@ -import { cpSync, existsSync, mkdirSync, readdirSync, rmSync } from 'node:fs' import { join } from 'node:path' +import { fs } from 'zx' const rootDir = join(import.meta.dirname, '..', '..', '..') const pkgDir = join(import.meta.dirname, '..') -const SKIP_PATTERNS = ['node_modules', 'dist', '.test.js', '.test.ts'] - -function shouldSkip(name: string): boolean { - return SKIP_PATTERNS.some((pattern) => name.includes(pattern)) -} - -function copyTemplate(src: string, dest: string): void { - const entries = readdirSync(src, { withFileTypes: true }) - - for (const entry of entries) { - if (shouldSkip(entry.name)) continue - - const srcPath = join(src, entry.name) - const destPath = join(dest, entry.name) - - if (entry.isDirectory()) { - mkdirSync(destPath, { recursive: true }) - copyTemplate(srcPath, destPath) - } else { - cpSync(srcPath, destPath) - } - } -} - const templateSrc = join(rootDir, 'examples', 'react-vanilla-spa') const templateDest = join(pkgDir, 'templates', 'react-spa') -// Clean and recreate templates directory -if (existsSync(join(pkgDir, 'templates'))) { - rmSync(join(pkgDir, 'templates'), { recursive: true }) -} -mkdirSync(templateDest, { recursive: true }) - -copyTemplate(templateSrc, templateDest) +fs.removeSync(join(pkgDir, 'templates')) +fs.copySync(templateSrc, templateDest, { + filter: (src) => !src.includes('node_modules') && !src.includes('.test.'), +}) console.log('Copied template files to templates/react-spa') diff --git a/packages/create-vite-app/scripts/generate-versions.ts b/packages/create-vite-app/scripts/generate-versions.ts index c3c8f489..255813b8 100644 --- a/packages/create-vite-app/scripts/generate-versions.ts +++ b/packages/create-vite-app/scripts/generate-versions.ts @@ -1,23 +1,17 @@ -import { readFileSync, writeFileSync } from 'node:fs' import { join } from 'node:path' -import { parse } from 'yaml' +import { fs, YAML } from 'zx' const rootDir = join(import.meta.dirname, '..', '..', '..') const pkgDir = join(import.meta.dirname, '..') -// Read pnpm-workspace.yaml -const workspaceYaml = readFileSync(join(rootDir, 'pnpm-workspace.yaml'), 'utf-8') -const workspace = parse(workspaceYaml) as { +const workspaceYaml = fs.readFileSync(join(rootDir, 'pnpm-workspace.yaml'), 'utf-8') +const workspace = YAML.parse(workspaceYaml) as { catalog: Record catalogs: Record> } -// Read @fastify/vite version from its package.json -const fastifyVitePkg = JSON.parse( - readFileSync(join(rootDir, 'packages', 'fastify-vite', 'package.json'), 'utf-8'), -) +const fastifyVitePkg = fs.readJsonSync(join(rootDir, 'packages', 'fastify-vite', 'package.json')) -// Build the versions object const versions: Record = { '@fastify/vite': `^${fastifyVitePkg.version}`, fastify: workspace.catalog.fastify, @@ -27,7 +21,6 @@ const versions: Record = { '@vitejs/plugin-react': workspace.catalogs.react['@vitejs/plugin-react'], } -// Generate the versions.json file const versionsPath = join(pkgDir, 'src', 'versions.json') -writeFileSync(versionsPath, JSON.stringify(versions, null, 2) + '\n') +fs.writeJsonSync(versionsPath, versions, { spaces: 2 }) console.log('Generated src/versions.json with versions:', versions) diff --git a/packages/create-vite-app/src/index.ts b/packages/create-vite-app/src/index.ts index 6900f4c5..a5472a16 100644 --- a/packages/create-vite-app/src/index.ts +++ b/packages/create-vite-app/src/index.ts @@ -1,45 +1,18 @@ #!/usr/bin/env node -import { cpSync, existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from 'node:fs' import { join } from 'node:path' -import { spawn } from 'node:child_process' import * as p from '@clack/prompts' +import { $, fs } from 'zx' import versions from './versions.json' with { type: 'json' } const TEMPLATE_DIR = join(import.meta.dirname, '..', 'templates', 'react-spa') -const SKIP_PATTERNS = ['node_modules', 'dist', '.test.js', '.test.ts'] - -function shouldSkip(name: string): boolean { - return SKIP_PATTERNS.some((pattern) => name.includes(pattern)) -} - -function copyTemplate(src: string, dest: string): void { - const entries = readdirSync(src, { withFileTypes: true }) - - for (const entry of entries) { - if (shouldSkip(entry.name)) continue - - const srcPath = join(src, entry.name) - const destPath = join(dest, entry.name) - - if (entry.isDirectory()) { - mkdirSync(destPath, { recursive: true }) - copyTemplate(srcPath, destPath) - } else { - cpSync(srcPath, destPath) - } - } -} - function transformPackageJson(projectName: string, destDir: string): void { const pkgPath = join(destDir, 'package.json') - const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8')) + const pkg = fs.readJsonSync(pkgPath) - // Update name pkg.name = projectName - // Replace workspace: and catalog: references with actual versions for (const depType of ['dependencies', 'devDependencies'] as const) { if (!pkg[depType]) continue for (const [name, version] of Object.entries(pkg[depType])) { @@ -55,14 +28,12 @@ function transformPackageJson(projectName: string, destDir: string): void { } } - // Remove private flag for user projects delete pkg.private - writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n') + fs.writeJsonSync(pkgPath, pkg, { spaces: 2 }) } function detectPackageManager(): 'pnpm' | 'yarn' | 'bun' | 'npm' { - // Check npm_config_user_agent (set when running via package manager) const userAgent = process.env.npm_config_user_agent if (userAgent) { if (userAgent.includes('pnpm')) return 'pnpm' @@ -72,25 +43,9 @@ function detectPackageManager(): 'pnpm' | 'yarn' | 'bun' | 'npm' { return 'npm' } -async function installDependencies(pm: string, cwd: string): Promise { - return new Promise((resolve, reject) => { - const child = spawn(pm, ['install'], { - cwd, - stdio: 'inherit', - shell: process.platform === 'win32', - }) - child.on('close', (code) => { - if (code === 0) resolve() - else reject(new Error(`${pm} install failed with code ${code}`)) - }) - child.on('error', reject) - }) -} - async function main(): Promise { p.intro('Create Fastify + Vite App') - // Get project name from CLI arg or prompt let projectName = process.argv[2] if (!projectName) { @@ -100,7 +55,7 @@ async function main(): Promise { defaultValue: 'my-fastify-app', validate: (value) => { if (!value) return 'Project name is required' - if (existsSync(value)) return `Directory "${value}" already exists` + if (fs.existsSync(value)) return `Directory "${value}" already exists` }, }) @@ -114,19 +69,18 @@ async function main(): Promise { const destDir = join(process.cwd(), projectName) - // Check if directory already exists - if (existsSync(destDir)) { + if (fs.existsSync(destDir)) { p.cancel(`Directory "${projectName}" already exists`) process.exit(1) } - // Copy template const copySpinner = p.spinner() copySpinner.start('Copying template files...') try { - mkdirSync(destDir, { recursive: true }) - copyTemplate(TEMPLATE_DIR, destDir) + await fs.copy(TEMPLATE_DIR, destDir, { + filter: (src) => !src.includes('node_modules') && !src.includes('.test.'), + }) transformPackageJson(projectName, destDir) copySpinner.stop('Template files copied') } catch (error) { @@ -134,13 +88,14 @@ async function main(): Promise { throw error } - // Install dependencies const pm = detectPackageManager() const installSpinner = p.spinner() installSpinner.start(`Installing dependencies with ${pm}...`) try { - await installDependencies(pm, destDir) + $.cwd = destDir + $.quiet = true + await $`${pm} install` installSpinner.stop('Dependencies installed') } catch { installSpinner.stop(`Failed to install dependencies. Run "${pm} install" manually.`) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1e47c03f..06505a3d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,6 +30,9 @@ catalogs: vitest: specifier: ^4.0.16 version: 4.0.16 + zx: + specifier: ^8.8.5 + version: 8.8.5 eslint: '@eslint/js': specifier: ^9.39.2 @@ -579,16 +582,41 @@ importers: '@clack/prompts': specifier: ^0.11.0 version: 0.11.0 + zx: + specifier: 'catalog:' + version: 8.8.5 devDependencies: + '@types/fs-extra': + specifier: ^11.0.4 + version: 11.0.4 '@types/node': specifier: 'catalog:' version: 24.10.4 typescript: specifier: 'catalog:' version: 5.9.3 - yaml: - specifier: ^2.8.2 - version: 2.8.2 + + packages/create-vite-app/templates/react-spa: + dependencies: + '@fastify/vite': + specifier: workspace:^ + version: link:../../../fastify-vite + fastify: + specifier: 'catalog:' + version: 5.6.2 + react: + specifier: catalog:react + version: 19.2.3 + react-dom: + specifier: catalog:react + version: 19.2.3(react@19.2.3) + devDependencies: + '@vitejs/plugin-react': + specifier: catalog:react + version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) + vite: + specifier: 'catalog:' + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) packages/create-vite-app/templates/react-spa: dependencies: @@ -2761,6 +2789,9 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/fs-extra@11.0.4': + resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} + '@types/geojson@7946.0.16': resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} @@ -2770,6 +2801,9 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/jsonfile@6.1.4': + resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} + '@types/linkify-it@5.0.0': resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} @@ -7395,6 +7429,11 @@ snapshots: '@types/estree@1.0.8': {} + '@types/fs-extra@11.0.4': + dependencies: + '@types/jsonfile': 6.1.4 + '@types/node': 22.19.3 + '@types/geojson@7946.0.16': {} '@types/hast@3.0.4': @@ -7403,6 +7442,10 @@ snapshots: '@types/json-schema@7.0.15': {} + '@types/jsonfile@6.1.4': + dependencies: + '@types/node': 22.19.3 + '@types/linkify-it@5.0.0': {} '@types/markdown-it@14.1.2': @@ -10728,7 +10771,8 @@ snapshots: yallist@3.1.1: {} - yaml@2.8.2: {} + yaml@2.8.2: + optional: true yocto-queue@0.1.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 7238d7c5..4ecc09d3 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -13,6 +13,7 @@ catalog: typescript: ^5.9.3 vite: ^7.3.0 vitest: ^4.0.16 + zx: ^8.8.5 catalogs: eslint: From 945c99edf0aa75dec90ea08f25f67d8af41eff53 Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Fri, 2 Jan 2026 22:34:13 -0500 Subject: [PATCH 6/6] Repair lockfile and update pnpm to 10.27.0 --- package.json | 2 +- pnpm-lock.yaml | 244 ++++++++++++++++++++++--------------------------- 2 files changed, 112 insertions(+), 134 deletions(-) diff --git a/package.json b/package.json index 14e02c9a..0b61b4ec 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "vitest": "catalog:", "zx": "catalog:" }, - "packageManager": "pnpm@10.26.2+sha512.0e308ff2005fc7410366f154f625f6631ab2b16b1d2e70238444dd6ae9d630a8482d92a451144debc492416896ed16f7b114a86ec68b8404b2443869e68ffda6", + "packageManager": "pnpm@10.27.0+sha512.72d699da16b1179c14ba9e64dc71c9a40988cbdc65c264cb0e489db7de917f20dcf4d64d8723625f2969ba52d4b7e2a1170682d9ac2a5dcaeaab732b7e16f04a", "pnpm": { "peerDependencyRules": { "ignoreMissing": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 06505a3d..11730117 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -91,12 +91,12 @@ importers: version: 1.36.0 vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) vitest: specifier: 'catalog:' - version: 4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jiti@2.4.2)(jsdom@23.2.0)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jiti@2.4.2)(jsdom@23.2.0)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) zx: - specifier: ^8.8.5 + specifier: 'catalog:' version: 8.8.5 docs: @@ -152,10 +152,10 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: catalog:react - version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) examples/react-next-mini: dependencies: @@ -192,10 +192,10 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: catalog:react - version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) examples/react-streaming: dependencies: @@ -223,10 +223,10 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: catalog:react - version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) examples/react-vanilla: dependencies: @@ -245,10 +245,10 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: catalog:react - version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) examples/react-vanilla-spa: dependencies: @@ -267,10 +267,10 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: catalog:react - version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) examples/react-vanilla-spa-ts: dependencies: @@ -298,7 +298,7 @@ importers: version: 19.1.2(@types/react@19.1.2) '@vitejs/plugin-react': specifier: catalog:react - version: 5.1.2(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 5.1.2(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) tsx: specifier: 'catalog:' version: 4.21.0 @@ -307,7 +307,7 @@ importers: version: 5.9.3 vite: specifier: 'catalog:' - version: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) examples/react-vanilla-ts: dependencies: @@ -335,7 +335,7 @@ importers: version: 19.1.2(@types/react@19.1.2) '@vitejs/plugin-react': specifier: catalog:react - version: 5.1.2(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 5.1.2(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) tsx: specifier: 'catalog:' version: 4.21.0 @@ -344,7 +344,7 @@ importers: version: 5.9.3 vite: specifier: 'catalog:' - version: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) examples/vue-hydration: dependencies: @@ -372,7 +372,7 @@ importers: version: 9.39.2 '@vitejs/plugin-vue': specifier: catalog:vue - version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) + version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3)) eslint: specifier: catalog:eslint version: 9.39.2(jiti@2.4.2) @@ -384,7 +384,7 @@ importers: version: 16.5.0 vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) examples/vue-next-mini: dependencies: @@ -418,7 +418,7 @@ importers: version: 9.39.2 '@vitejs/plugin-vue': specifier: catalog:vue - version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) + version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3)) eslint: specifier: catalog:eslint version: 9.39.2(jiti@2.4.2) @@ -430,7 +430,7 @@ importers: version: 16.5.0 vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) examples/vue-streaming: dependencies: @@ -455,7 +455,7 @@ importers: version: 9.39.2 '@vitejs/plugin-vue': specifier: catalog:vue - version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) + version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3)) eslint: specifier: catalog:eslint version: 9.39.2(jiti@2.4.2) @@ -467,7 +467,7 @@ importers: version: 16.5.0 vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) examples/vue-vanilla: dependencies: @@ -486,7 +486,7 @@ importers: version: 9.39.2 '@vitejs/plugin-vue': specifier: catalog:vue - version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) + version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3)) eslint: specifier: catalog:eslint version: 9.39.2(jiti@2.4.2) @@ -498,7 +498,7 @@ importers: version: 16.5.0 vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) examples/vue-vanilla-spa: dependencies: @@ -517,7 +517,7 @@ importers: version: 9.39.2 '@vitejs/plugin-vue': specifier: catalog:vue - version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) + version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3)) eslint: specifier: catalog:eslint version: 9.39.2(jiti@2.4.2) @@ -529,7 +529,7 @@ importers: version: 16.5.0 vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) examples/vue-vanilla-ts: dependencies: @@ -551,7 +551,7 @@ importers: version: 22.14.0 '@vitejs/plugin-vue': specifier: catalog:vue - version: 5.2.4(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) + version: 5.2.4(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3)) eslint: specifier: catalog:eslint version: 9.39.2(jiti@2.4.2) @@ -569,7 +569,7 @@ importers: version: 8.51.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) vite: specifier: 'catalog:' - version: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) vue-eslint-parser: specifier: catalog:eslint version: 10.2.0(eslint@9.39.2(jiti@2.4.2)) @@ -596,28 +596,6 @@ importers: specifier: 'catalog:' version: 5.9.3 - packages/create-vite-app/templates/react-spa: - dependencies: - '@fastify/vite': - specifier: workspace:^ - version: link:../../../fastify-vite - fastify: - specifier: 'catalog:' - version: 5.6.2 - react: - specifier: catalog:react - version: 19.2.3 - react-dom: - specifier: catalog:react - version: 19.2.3(react@19.2.3) - devDependencies: - '@vitejs/plugin-react': - specifier: catalog:react - version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) - vite: - specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) - packages/create-vite-app/templates/react-spa: dependencies: '@fastify/vite': @@ -731,7 +709,7 @@ importers: version: 8.1.0 vite: specifier: '>=6' - version: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) devDependencies: '@types/node': specifier: ^22.19.3 @@ -747,7 +725,7 @@ importers: version: 5.9.3 vitest: specifier: 'catalog:' - version: 4.0.16(@types/node@22.19.3)(@vitest/ui@4.0.16)(jiti@2.4.2)(jsdom@23.2.0)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.16(@types/node@22.19.3)(@vitest/ui@4.0.16)(jiti@2.4.2)(jsdom@23.2.0)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) packages/fastify-vite/fixtures/cjs: dependencies: @@ -796,11 +774,11 @@ importers: devDependencies: '@vitejs/plugin-vue': specifier: catalog:vue - version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) + version: 5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3)) optionalDependencies: vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) starters/react-base: dependencies: @@ -809,10 +787,10 @@ importers: version: 2.0.2 '@fastify/react': specifier: ^1.1.2 - version: 1.1.2(@types/react@19.1.2)(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 1.1.2(@types/react@19.1.2)(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) '@fastify/vite': specifier: ^8.2.2 - version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) '@unhead/react': specifier: ^2.0.8 version: 2.0.8(react@19.2.3) @@ -843,7 +821,7 @@ importers: version: 4.1.2 '@vitejs/plugin-react': specifier: ^5.1.2 - version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) postcss: specifier: ^8.5.3 version: 8.5.3 @@ -855,7 +833,7 @@ importers: version: 4.1.2 vite: specifier: ^7.3.0 - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) starters/react-kitchensink: dependencies: @@ -867,10 +845,10 @@ importers: version: 2.0.2 '@fastify/react': specifier: ^1.1.2 - version: 1.1.2(@types/react@19.1.2)(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 1.1.2(@types/react@19.1.2)(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) '@fastify/vite': specifier: ^8.2.2 - version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) '@unhead/react': specifier: ^2.0.8 version: 2.0.8(react@19.2.3) @@ -901,7 +879,7 @@ importers: version: 4.1.2 '@vitejs/plugin-react': specifier: ^5.1.2 - version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) postcss: specifier: ^8.5.3 version: 8.5.3 @@ -913,7 +891,7 @@ importers: version: 4.1.2 vite: specifier: ^7.3.0 - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) starters/react-typescript: dependencies: @@ -925,10 +903,10 @@ importers: version: 2.0.2 '@fastify/react': specifier: ^1.1.2 - version: 1.1.2(@types/react@19.1.2)(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2)) + version: 1.1.2(@types/react@19.1.2)(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1)) '@fastify/vite': specifier: ^8.2.2 - version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2)) + version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1)) '@unhead/react': specifier: ^2.0.8 version: 2.0.8(react@19.2.3) @@ -968,7 +946,7 @@ importers: version: 19.1.2(@types/react@19.1.2) '@vitejs/plugin-react': specifier: ^5.1.2 - version: 5.1.2(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2)) + version: 5.1.2(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1)) postcss: specifier: ^8.5.3 version: 8.5.3 @@ -986,7 +964,7 @@ importers: version: 5.9.3 vite: specifier: ^7.3.0 - version: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2) + version: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1) starters/vue-base: dependencies: @@ -995,10 +973,10 @@ importers: version: 2.0.2 '@fastify/vite': specifier: ^8.2.2 - version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) '@fastify/vue': specifier: ^1.1.3 - version: 1.1.3(@types/node@24.10.4)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) + version: 1.1.3(@types/node@24.10.4)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.7.1) '@unhead/vue': specifier: ^2.0.5 version: 2.0.8(vue@3.5.13(typescript@5.9.3)) @@ -1017,10 +995,10 @@ importers: version: 4.1.2 '@tailwindcss/vite': specifier: ^4.1.1 - version: 4.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) '@vitejs/plugin-vue': specifier: ^5.2.3 - version: 5.2.3(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.13(typescript@5.9.3)) + version: 5.2.3(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.13(typescript@5.9.3)) postcss: specifier: ^8.5.3 version: 8.5.3 @@ -1032,7 +1010,7 @@ importers: version: 4.1.2 vite: specifier: ^7.3.0 - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) starters/vue-kitchensink: dependencies: @@ -1044,10 +1022,10 @@ importers: version: 2.0.2 '@fastify/vite': specifier: ^8.2.2 - version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) '@fastify/vue': specifier: ^1.1.3 - version: 1.1.3(@types/node@24.10.4)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) + version: 1.1.3(@types/node@24.10.4)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.7.1) '@unhead/vue': specifier: ^2.0.5 version: 2.0.8(vue@3.5.13(typescript@5.9.3)) @@ -1066,7 +1044,7 @@ importers: version: 4.1.2 '@vitejs/plugin-vue': specifier: ^5.2.3 - version: 5.2.3(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.13(typescript@5.9.3)) + version: 5.2.3(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.13(typescript@5.9.3)) postcss: specifier: ^8.5.3 version: 8.5.3 @@ -1078,7 +1056,7 @@ importers: version: 4.1.2 vite: specifier: ^7.3.0 - version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) starters/vue-typescript: dependencies: @@ -1090,10 +1068,10 @@ importers: version: 2.0.2 '@fastify/vite': specifier: ^8.2.2 - version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2)) + version: 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1)) '@fastify/vue': specifier: ^1.1.3 - version: 1.1.3(@types/node@22.14.0)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.8.2) + version: 1.1.3(@types/node@22.14.0)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.7.1) '@unhead/vue': specifier: ^2.0.5 version: 2.0.8(vue@3.5.13(typescript@5.9.3)) @@ -1115,7 +1093,7 @@ importers: version: 22.14.0 '@vitejs/plugin-vue': specifier: ^5.2.3 - version: 5.2.3(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2))(vue@3.5.13(typescript@5.9.3)) + version: 5.2.3(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1))(vue@3.5.13(typescript@5.9.3)) postcss: specifier: ^8.5.3 version: 8.5.3 @@ -1133,7 +1111,7 @@ importers: version: 5.9.3 vite: specifier: ^7.3.0 - version: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2) + version: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1) packages: @@ -5704,9 +5682,9 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yaml@2.8.2: - resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} - engines: {node: '>= 14.6'} + yaml@2.7.1: + resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} + engines: {node: '>= 14'} hasBin: true yocto-queue@0.1.0: @@ -6783,9 +6761,9 @@ snapshots: '@fastify/forwarded': 3.0.1 ipaddr.js: 2.3.0 - '@fastify/react@1.1.2(@types/react@19.1.2)(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2))': + '@fastify/react@1.1.2(@types/react@19.1.2)(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1))': dependencies: - '@fastify/vite': 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2)) + '@fastify/vite': 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1)) '@unhead/react': 2.0.8(react@19.2.3) acorn: 8.15.0 acorn-strip-function: 1.2.0 @@ -6805,9 +6783,9 @@ snapshots: - fastify - vite - '@fastify/react@1.1.2(@types/react@19.1.2)(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))': + '@fastify/react@1.1.2(@types/react@19.1.2)(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))': dependencies: - '@fastify/vite': 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) + '@fastify/vite': 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) '@unhead/react': 2.0.8(react@19.2.3) acorn: 8.15.0 acorn-strip-function: 1.2.0 @@ -6844,7 +6822,7 @@ snapshots: fastq: 1.20.1 glob: 13.0.0 - '@fastify/vite@8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2))': + '@fastify/vite@8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1))': dependencies: '@fastify/deepmerge': 3.1.0 '@fastify/middie': 9.0.3 @@ -6855,9 +6833,9 @@ snapshots: html-rewriter-wasm: 0.4.1 klaw: 4.1.0 package-directory: 8.1.0 - vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2) + vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1) - '@fastify/vite@8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))': + '@fastify/vite@8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))': dependencies: '@fastify/deepmerge': 3.1.0 '@fastify/middie': 9.0.3 @@ -6868,11 +6846,11 @@ snapshots: html-rewriter-wasm: 0.4.1 klaw: 4.1.0 package-directory: 8.1.0 - vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) - '@fastify/vue@1.1.3(@types/node@22.14.0)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.8.2)': + '@fastify/vue@1.1.3(@types/node@22.14.0)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(typescript@5.9.3)(yaml@2.7.1)': dependencies: - '@fastify/vite': 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2)) + '@fastify/vite': 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1)) '@unhead/vue': 2.0.8(vue@3.5.26(typescript@5.9.3)) acorn: 8.15.0 acorn-walk: 8.3.4 @@ -6883,7 +6861,7 @@ snapshots: vue-router: 4.6.4(vue@3.5.26(typescript@5.9.3)) youch: 3.3.4 optionalDependencies: - vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2) + vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1) transitivePeerDependencies: - '@types/node' - fastify @@ -6899,9 +6877,9 @@ snapshots: - typescript - yaml - '@fastify/vue@1.1.3(@types/node@24.10.4)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)': + '@fastify/vue@1.1.3(@types/node@24.10.4)(fastify@5.6.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.7.1)': dependencies: - '@fastify/vite': 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) + '@fastify/vite': 8.2.2(fastify@5.6.2)(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) '@unhead/vue': 2.0.8(vue@3.5.26(typescript@5.9.3)) acorn: 8.15.0 acorn-walk: 8.3.4 @@ -6912,7 +6890,7 @@ snapshots: vue-router: 4.6.4(vue@3.5.26(typescript@5.9.3)) youch: 3.3.4 optionalDependencies: - vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) transitivePeerDependencies: - '@types/node' - fastify @@ -7274,12 +7252,12 @@ snapshots: postcss: 8.5.3 tailwindcss: 4.1.2 - '@tailwindcss/vite@4.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))': + '@tailwindcss/vite@4.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))': dependencies: '@tailwindcss/node': 4.1.2 '@tailwindcss/oxide': 4.1.2 tailwindcss: 4.1.2 - vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) '@types/babel__core@7.20.5': dependencies: @@ -7598,7 +7576,7 @@ snapshots: unhead: 2.0.8 vue: 3.5.26(typescript@5.9.3) - '@vitejs/plugin-react@5.1.2(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2))': + '@vitejs/plugin-react@5.1.2(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) @@ -7606,11 +7584,11 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.53 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2) + vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@5.1.2(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-react@5.1.2(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) @@ -7618,11 +7596,11 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.53 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-react@5.1.2(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) @@ -7630,18 +7608,18 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.53 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.2.3(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2))(vue@3.5.13(typescript@5.9.3))': + '@vitejs/plugin-vue@5.2.3(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1))(vue@3.5.13(typescript@5.9.3))': dependencies: - vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2) + vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1) vue: 3.5.13(typescript@5.9.3) - '@vitejs/plugin-vue@5.2.3(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.13(typescript@5.9.3))': + '@vitejs/plugin-vue@5.2.3(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.13(typescript@5.9.3))': dependencies: - vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) vue: 3.5.13(typescript@5.9.3) '@vitejs/plugin-vue@5.2.4(vite@5.4.21(@types/node@24.10.4)(lightningcss@1.29.3))(vue@3.5.26(typescript@5.9.3))': @@ -7649,14 +7627,14 @@ snapshots: vite: 5.4.21(@types/node@24.10.4)(lightningcss@1.29.3) vue: 3.5.26(typescript@5.9.3) - '@vitejs/plugin-vue@5.2.4(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3))': + '@vitejs/plugin-vue@5.2.4(vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3))': dependencies: - vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) vue: 3.5.26(typescript@5.9.3) - '@vitejs/plugin-vue@5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3))': + '@vitejs/plugin-vue@5.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))(vue@3.5.26(typescript@5.9.3))': dependencies: - vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) vue: 3.5.26(typescript@5.9.3) '@vitest/expect@4.0.16': @@ -7668,21 +7646,21 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.16(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.16(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))': dependencies: '@vitest/spy': 4.0.16 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) - '@vitest/mocker@4.0.16(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.16(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1))': dependencies: '@vitest/spy': 4.0.16 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) '@vitest/pretty-format@4.0.16': dependencies: @@ -7710,7 +7688,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vitest: 4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jiti@2.4.2)(jsdom@23.2.0)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jiti@2.4.2)(jsdom@23.2.0)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) '@vitest/utils@4.0.16': dependencies: @@ -10431,7 +10409,7 @@ snapshots: fsevents: 2.3.3 lightningcss: 1.29.3 - vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.8.2): + vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.20.3)(yaml@2.7.1): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -10445,9 +10423,9 @@ snapshots: jiti: 2.4.2 lightningcss: 1.29.3 tsx: 4.20.3 - yaml: 2.8.2 + yaml: 2.7.1 - vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2): + vite@7.3.0(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -10461,9 +10439,9 @@ snapshots: jiti: 2.4.2 lightningcss: 1.29.3 tsx: 4.21.0 - yaml: 2.8.2 + yaml: 2.7.1 - vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2): + vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -10477,9 +10455,9 @@ snapshots: jiti: 2.4.2 lightningcss: 1.29.3 tsx: 4.21.0 - yaml: 2.8.2 + yaml: 2.7.1 - vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2): + vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -10493,7 +10471,7 @@ snapshots: jiti: 2.4.2 lightningcss: 1.29.3 tsx: 4.21.0 - yaml: 2.8.2 + yaml: 2.7.1 vitepress-plugin-mermaid@2.0.17(mermaid@11.12.2)(vitepress@1.6.4(@algolia/client-search@5.46.2)(@types/node@24.10.4)(lightningcss@1.29.3)(markdown-it-mathjax3@4.3.2)(postcss@8.5.6)(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.3)): dependencies: @@ -10552,10 +10530,10 @@ snapshots: - typescript - universal-cookie - vitest@4.0.16(@types/node@22.19.3)(@vitest/ui@4.0.16)(jiti@2.4.2)(jsdom@23.2.0)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.0.16(@types/node@22.19.3)(@vitest/ui@4.0.16)(jiti@2.4.2)(jsdom@23.2.0)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1): dependencies: '@vitest/expect': 4.0.16 - '@vitest/mocker': 4.0.16(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.0.16(vite@7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) '@vitest/pretty-format': 4.0.16 '@vitest/runner': 4.0.16 '@vitest/snapshot': 4.0.16 @@ -10572,7 +10550,7 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.0(@types/node@22.19.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.19.3 @@ -10591,10 +10569,10 @@ snapshots: - tsx - yaml - vitest@4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jiti@2.4.2)(jsdom@23.2.0)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jiti@2.4.2)(jsdom@23.2.0)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1): dependencies: '@vitest/expect': 4.0.16 - '@vitest/mocker': 4.0.16(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.0.16(vite@7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1)) '@vitest/pretty-format': 4.0.16 '@vitest/runner': 4.0.16 '@vitest/snapshot': 4.0.16 @@ -10611,7 +10589,7 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.21.0)(yaml@2.7.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.10.4 @@ -10771,7 +10749,7 @@ snapshots: yallist@3.1.1: {} - yaml@2.8.2: + yaml@2.7.1: optional: true yocto-queue@0.1.0: {}