diff --git a/e2e/react-start/flamegraph-bench/package.json b/e2e/react-start/flamegraph-bench/package.json index 3064ced1347..b3392d5d762 100644 --- a/e2e/react-start/flamegraph-bench/package.json +++ b/e2e/react-start/flamegraph-bench/package.json @@ -4,15 +4,14 @@ "type": "module", "scripts": { "build": "NODE_ENV=production vite build --mode=production", - "start": "NODE_ENV=production node ./tests/server.js", - "start:prof": "NODE_ENV=production flame run --md-format=detailed ./tests/server.js", + "start": "NODE_ENV=production node ./.output/server/index.mjs", + "start:prof": "NODE_ENV=production flame run --md-format=detailed ./.output/server/index.mjs", "bench": "pnpm build && pnpm bench:run", "bench:run": "concurrently -k -s first \"pnpm start:prof\" \"sleep 3 && node ./tests/bench.js\"" }, "dependencies": { "@tanstack/react-router": "workspace:*", "@tanstack/react-start": "workspace:*", - "express": "^4.21.2", "react": "^19.0.0", "react-dom": "^19.0.0", "srvx": "^0.10.0" @@ -20,6 +19,7 @@ "devDependencies": { "@platformatic/flame": "latest", "@vitejs/plugin-react": "^4.3.4", + "nitro": "npm:nitro-nightly@latest", "autocannon": "^8.0.0", "concurrently": "9.2.1", "typescript": "^5.7.2", diff --git a/e2e/react-start/flamegraph-bench/tests/server.js b/e2e/react-start/flamegraph-bench/tests/server.js deleted file mode 100644 index 1c7a9436143..00000000000 --- a/e2e/react-start/flamegraph-bench/tests/server.js +++ /dev/null @@ -1,30 +0,0 @@ -import { toNodeHandler } from 'srvx/node' -import express from 'express' - -const port = process.env.PORT || 3000 - -async function createStartServer() { - const server = (await import('../dist/server/server.js')).default - const nodeHandler = toNodeHandler(server.fetch) - - const app = express() - - // Serve static client assets (matching basic example pattern) - app.use(express.static('../dist/client', { redirect: false })) - - app.use(async (req, res, next) => { - try { - await nodeHandler(req, res) - } catch (error) { - next(error) - } - }) - - return { app } -} - -createStartServer().then(async ({ app }) => - app.listen(port, () => { - console.log(`Flamegraph bench server: http://localhost:${port}`) - }), -) diff --git a/e2e/react-start/flamegraph-bench/vite.config.ts b/e2e/react-start/flamegraph-bench/vite.config.ts index 0590c197a5d..03e90c7d33b 100644 --- a/e2e/react-start/flamegraph-bench/vite.config.ts +++ b/e2e/react-start/flamegraph-bench/vite.config.ts @@ -1,10 +1,11 @@ import { defineConfig } from 'vite' import { tanstackStart } from '@tanstack/react-start/plugin/vite' import viteReact from '@vitejs/plugin-react' +import { nitro } from 'nitro/vite' export default defineConfig({ server: { port: 3000, }, - plugins: [tanstackStart(), viteReact()], + plugins: [tanstackStart(), viteReact(), nitro()], }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 85f9f93d727..8c73b75b6e3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1692,9 +1692,6 @@ importers: '@tanstack/react-start': specifier: workspace:* version: link:../../../packages/react-start - express: - specifier: ^4.21.2 - version: 4.21.2 react: specifier: ^19.2.3 version: 19.2.3 @@ -1717,6 +1714,9 @@ importers: concurrently: specifier: 9.2.1 version: 9.2.1 + nitro: + specifier: npm:nitro-nightly@latest + version: nitro-nightly@3.0.1-20260122-201913-dfdff9e9(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(@netlify/blobs@10.1.0)(chokidar@5.0.0)(ioredis@5.9.2)(lru-cache@11.2.2)(mysql2@3.15.3)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) typescript: specifier: ^5.7.2 version: 5.9.3 @@ -20572,9 +20572,6 @@ packages: resolution: {integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - h3@1.15.4: - resolution: {integrity: sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==} - h3@1.15.5: resolution: {integrity: sha512-xEyq3rSl+dhGX2Lm0+eFQIAzlDN6Fs0EcC4f7BNUmzaRX/PTzeuM+Tr2lHB8FoXggsQIeXLj8EDVgs5ywxyxmg==} @@ -21900,6 +21897,28 @@ packages: nf3@0.3.5: resolution: {integrity: sha512-1VozaVz0lVfGL3c2wZ4c6bmQCm340gDiIYUU3lcg8vVGL/WeuTdrd6OhJiUHZWofc7fFdquhS8Gm+13c3Tumcw==} + nf3@0.3.6: + resolution: {integrity: sha512-/XRUUILTAyuy1XunyVQuqGp8aEmZ2TfRTn8Rji+FA4xqv20qzL4jV7Reqbuey2XucKgPeRVcEYGScmJM0UnB6Q==} + + nitro-nightly@3.0.1-20260122-201913-dfdff9e9: + resolution: {integrity: sha512-s20CTdwzRl63TehtkAd5ip2hLCfjrhnYahFWNQpA2CdjWKKWRtvYXuNAHZxwouLi81VDvO6ckd+XY1pliM1plg==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + rolldown: '>=1.0.0-beta.0' + rollup: ^4 + vite: ^7.3.1 + xml2js: ^0.6.2 + peerDependenciesMeta: + rolldown: + optional: true + rollup: + optional: true + vite: + optional: true + xml2js: + optional: true + nitro@3.0.1-alpha.2: resolution: {integrity: sha512-YviDY5J/trS821qQ1fpJtpXWIdPYiOizC/meHavlm1Hfuhx//H+Egd1+4C5SegJRgtWMnRPW9n//6Woaw81cTQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -21975,9 +21994,6 @@ packages: node-machine-id@1.1.12: resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} - node-mock-http@1.0.3: - resolution: {integrity: sha512-jN8dK25fsfnMrVsEhluUTPkBFY+6ybu7jSB1n+ri/vOGjJxU8J9CZhpSGkHXSkFjtUhbmoncG/YG9ta5Ludqog==} - node-mock-http@1.0.4: resolution: {integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==} @@ -22077,9 +22093,6 @@ packages: obug@2.1.1: resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} - ofetch@1.4.1: - resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} - ofetch@1.5.1: resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} @@ -24075,68 +24088,6 @@ packages: unrs-resolver@1.11.1: resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} - unstorage@1.17.1: - resolution: {integrity: sha512-KKGwRTT0iVBCErKemkJCLs7JdxNVfqTPc/85ae1XES0+bsHbc/sFBfVi5kJp156cc51BHinIH2l3k0EZ24vOBQ==} - peerDependencies: - '@azure/app-configuration': ^1.8.0 - '@azure/cosmos': ^4.2.0 - '@azure/data-tables': ^13.3.0 - '@azure/identity': ^4.6.0 - '@azure/keyvault-secrets': ^4.9.0 - '@azure/storage-blob': ^12.26.0 - '@capacitor/preferences': ^6.0.3 || ^7.0.0 - '@deno/kv': '>=0.9.0' - '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0 - '@planetscale/database': ^1.19.0 - '@upstash/redis': ^1.34.3 - '@vercel/blob': '>=0.27.1' - '@vercel/functions': ^2.2.12 || ^3.0.0 - '@vercel/kv': ^1.0.1 - aws4fetch: ^1.0.20 - db0: '>=0.2.1' - idb-keyval: ^6.2.1 - ioredis: ^5.4.2 - uploadthing: ^7.4.4 - peerDependenciesMeta: - '@azure/app-configuration': - optional: true - '@azure/cosmos': - optional: true - '@azure/data-tables': - optional: true - '@azure/identity': - optional: true - '@azure/keyvault-secrets': - optional: true - '@azure/storage-blob': - optional: true - '@capacitor/preferences': - optional: true - '@deno/kv': - optional: true - '@netlify/blobs': - optional: true - '@planetscale/database': - optional: true - '@upstash/redis': - optional: true - '@vercel/blob': - optional: true - '@vercel/functions': - optional: true - '@vercel/kv': - optional: true - aws4fetch: - optional: true - db0: - optional: true - idb-keyval: - optional: true - ioredis: - optional: true - uploadthing: - optional: true - unstorage@1.17.4: resolution: {integrity: sha512-fHK0yNg38tBiJKp/Vgsq4j0JEsCmgqH58HAn707S7zGkArbZsVr/CwINoi+nh3h98BRCwKvx1K3Xg9u3VV83sw==} peerDependencies: @@ -34111,18 +34062,6 @@ snapshots: dependencies: duplexer: 0.1.2 - h3@1.15.4: - dependencies: - cookie-es: 1.2.2 - crossws: 0.3.5 - defu: 6.1.4 - destr: 2.0.5 - iron-webcrypto: 1.2.1 - node-mock-http: 1.0.3 - radix3: 1.1.2 - ufo: 1.6.1 - uncrypto: 0.1.3 - h3@1.15.5: dependencies: cookie-es: 1.2.2 @@ -34435,15 +34374,15 @@ snapshots: defu: 6.1.4 destr: 2.0.5 etag: 1.8.1 - h3: 1.15.4 + h3: 1.15.5 image-meta: 0.2.2 listhen: 1.9.0 - ofetch: 1.4.1 + ofetch: 1.5.1 pathe: 2.0.3 sharp: 0.34.4 svgo: 4.0.0 ufo: 1.6.1 - unstorage: 1.17.1(@netlify/blobs@10.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2) + unstorage: 1.17.4(@netlify/blobs@10.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2) xss: 1.0.15 transitivePeerDependencies: - '@azure/app-configuration' @@ -35512,6 +35451,56 @@ snapshots: nf3@0.3.5: {} + nf3@0.3.6: {} + + nitro-nightly@3.0.1-20260122-201913-dfdff9e9(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(@netlify/blobs@10.1.0)(chokidar@5.0.0)(ioredis@5.9.2)(lru-cache@11.2.2)(mysql2@3.15.3)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)): + dependencies: + consola: 3.4.2 + crossws: 0.4.3(srvx@0.10.1) + db0: 0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3) + h3: 2.0.1-rc.11(crossws@0.4.3(srvx@0.10.1)) + jiti: 2.6.1 + nf3: 0.3.6 + ofetch: 2.0.0-alpha.3 + ohash: 2.0.11 + oxc-minify: 0.110.0 + oxc-transform: 0.110.0 + srvx: 0.10.1 + undici: 7.18.2 + unenv: 2.0.0-rc.24 + unstorage: 2.0.0-alpha.5(@netlify/blobs@10.1.0)(chokidar@5.0.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(lru-cache@11.2.2)(ofetch@2.0.0-alpha.3) + optionalDependencies: + rollup: 4.55.3 + vite: 7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@electric-sql/pglite' + - '@libsql/client' + - '@netlify/blobs' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - better-sqlite3 + - chokidar + - drizzle-orm + - idb-keyval + - ioredis + - lru-cache + - mongodb + - mysql2 + - sqlite3 + - uploadthing + nitro@3.0.1-alpha.2(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(@netlify/blobs@10.1.0)(chokidar@5.0.0)(ioredis@5.9.2)(lru-cache@11.2.2)(mysql2@3.15.3)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)): dependencies: consola: 3.4.2 @@ -35698,8 +35687,6 @@ snapshots: node-machine-id@1.1.12: {} - node-mock-http@1.0.3: {} - node-mock-http@1.0.4: {} node-releases@2.0.19: {} @@ -35832,12 +35819,6 @@ snapshots: obug@2.1.1: {} - ofetch@1.4.1: - dependencies: - destr: 2.0.5 - node-fetch-native: 1.6.7 - ufo: 1.6.1 - ofetch@1.5.1: dependencies: destr: 2.0.5 @@ -38055,21 +38036,6 @@ snapshots: '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 - unstorage@1.17.1(@netlify/blobs@10.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2): - dependencies: - anymatch: 3.1.3 - chokidar: 4.0.3 - destr: 2.0.5 - h3: 1.15.4 - lru-cache: 10.4.3 - node-fetch-native: 1.6.7 - ofetch: 1.4.1 - ufo: 1.6.1 - optionalDependencies: - '@netlify/blobs': 10.1.0 - db0: 0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3) - ioredis: 5.9.2 - unstorage@1.17.4(@netlify/blobs@10.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2): dependencies: anymatch: 3.1.3