vite-plugin-react-server 0.3.7 → 0.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/package.json +1 -1
  2. package/dist/plugin/components.d.ts +2 -1
  3. package/dist/plugin/components.d.ts.map +1 -1
  4. package/dist/plugin/components.js +2 -2
  5. package/dist/plugin/components.js.map +1 -1
  6. package/dist/plugin/config/defaults.d.ts +4 -4
  7. package/dist/plugin/config/defaults.js +4 -4
  8. package/dist/plugin/config/defaults.js.map +1 -1
  9. package/dist/plugin/config/resolveOptions.d.ts.map +1 -1
  10. package/dist/plugin/config/resolveOptions.js +6 -3
  11. package/dist/plugin/config/resolveOptions.js.map +1 -1
  12. package/dist/plugin/config/resolveUserConfig.d.ts.map +1 -1
  13. package/dist/plugin/config/resolveUserConfig.js +0 -1
  14. package/dist/plugin/config/resolveUserConfig.js.map +1 -1
  15. package/dist/plugin/helpers/inputNormalizer.d.ts.map +1 -1
  16. package/dist/plugin/helpers/inputNormalizer.js +2 -4
  17. package/dist/plugin/helpers/inputNormalizer.js.map +1 -1
  18. package/dist/plugin/loader/createBuildLoader.d.ts +1 -1
  19. package/dist/plugin/loader/createBuildLoader.d.ts.map +1 -1
  20. package/dist/plugin/loader/createBuildLoader.js +5 -20
  21. package/dist/plugin/loader/createBuildLoader.js.map +1 -1
  22. package/dist/plugin/react-server/createHandler.d.ts +1 -1
  23. package/dist/plugin/react-server/createHandler.d.ts.map +1 -1
  24. package/dist/plugin/react-server/createHandler.js +1 -2
  25. package/dist/plugin/react-server/createHandler.js.map +1 -1
  26. package/dist/plugin/react-server/createRscStream.d.ts +1 -1
  27. package/dist/plugin/react-server/createRscStream.d.ts.map +1 -1
  28. package/dist/plugin/react-server/createRscStream.js +2 -1
  29. package/dist/plugin/react-server/createRscStream.js.map +1 -1
  30. package/dist/plugin/react-server/plugin.d.ts.map +1 -1
  31. package/dist/plugin/react-server/plugin.js +11 -34
  32. package/dist/plugin/react-server/plugin.js.map +1 -1
  33. package/dist/plugin/resolveProps.d.ts.map +1 -1
  34. package/dist/plugin/resolveProps.js +0 -1
  35. package/dist/plugin/resolveProps.js.map +1 -1
  36. package/dist/plugin/worker/createWorker.js +2 -1
  37. package/dist/plugin/worker/createWorker.js.map +1 -1
  38. package/dist/plugin/worker/html/renderPages.d.ts.map +1 -1
  39. package/dist/plugin/worker/html/renderPages.js +3 -9
  40. package/dist/plugin/worker/html/renderPages.js.map +1 -1
  41. package/dist/tsconfig.tsbuildinfo +1 -1
  42. package/package.json +1 -1
  43. package/plugin/components.tsx +2 -2
  44. package/plugin/config/defaults.ts +4 -4
  45. package/plugin/config/resolveOptions.ts +35 -12
  46. package/plugin/config/resolveUserConfig.ts +0 -1
  47. package/plugin/helpers/inputNormalizer.ts +4 -6
  48. package/plugin/loader/createBuildLoader.ts +6 -27
  49. package/plugin/react-server/createHandler.ts +2 -3
  50. package/plugin/react-server/createRscStream.ts +3 -2
  51. package/plugin/react-server/plugin.ts +18 -39
  52. package/plugin/resolveProps.ts +0 -1
  53. package/plugin/worker/createWorker.ts +2 -2
  54. package/plugin/worker/html/renderPages.ts +4 -10
  55. package/scripts/check-react-version.mjs +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sources":["../../../plugin/react-server/plugin.ts"],"sourcesContent":["import { readdirSync } from \"fs\";\nimport type { ServerResponse } from \"node:http\";\nimport { join, resolve } from \"node:path\";\nimport { performance } from \"node:perf_hooks\";\nimport { Worker } from \"node:worker_threads\";\nimport React from \"react\";\nimport {\n createLogger,\n type ResolvedConfig,\n type UserConfig,\n type ViteDevServer,\n} from \"vite\";\nimport { checkFilesExist } from \"../checkFilesExist.js\";\nimport { DEFAULT_CONFIG } from \"../config/defaults.js\";\nimport { getPluginRoot } from \"../config/getPaths.js\";\nimport { resolveOptions } from \"../config/resolveOptions.js\";\nimport { resolvePages } from \"../config/resolvePages.js\";\nimport { resolveUserConfig } from \"../config/resolveUserConfig.js\";\nimport { getModuleManifest } from \"../helpers/getModuleManifest.js\";\nimport { tryManifest } from \"../helpers/tryManifest.js\";\nimport { createBuildLoader } from '../loader/createBuildLoader.js';\nimport type {\n BuildTiming,\n CheckFilesExistReturn,\n ReactStreamPluginMeta,\n ResolvedUserConfig,\n ResolvedUserOptions,\n} from \"../types.js\";\nimport { type StreamPluginOptions } from \"../types.js\";\nimport { createWorker } from \"../worker/createWorker.js\";\nimport { renderPages } from \"../worker/html/renderPages.js\";\nimport { createHandler } from \"./createHandler.js\";\n\nexport function reactServerPlugin(\n options: StreamPluginOptions\n): import(\"vite\").Plugin<{ meta: ReactStreamPluginMeta, addCssFile: (path: string) => void } > {\n const timing: BuildTiming = {\n start: performance.now(),\n };\n\n let files: CheckFilesExistReturn;\n // let env: Awaited<ReturnType<typeof getEnv>>;\n let worker: Worker;\n let finalConfig: ResolvedConfig;\n let cssModules = new Set<string>();\n let clientComponents = new Map<string, string>();\n // let define: Record<string, string>;\n let buildCssFiles = new Set<string>();\n let root: string = process.cwd();\n let userConfig: ResolvedUserConfig;\n let userOptions: ResolvedUserOptions;\n let moduleGraph: Record<\n string,\n {\n file: string;\n src: string;\n name: string;\n isEntry: boolean;\n imports: string[];\n dynamicImports: string[];\n }\n > = {};\n\n interface BuildStats {\n htmlFiles: number;\n clientComponents: number;\n cssFiles: number;\n totalRoutes: number;\n timing: {\n config: number;\n build: number;\n render: number;\n total: number;\n };\n }\n\n const resolvedOptions = resolveOptions(options);\n if (resolvedOptions.type === \"error\") {\n throw resolvedOptions.error;\n }\n userOptions = resolvedOptions.userOptions;\n root = userOptions.projectRoot;\n return {\n name: \"vite:react-stream-server\",\n enforce: \"post\",\n api: {\n meta: { timing },\n addCssFile(path: string) {\n buildCssFiles.add(path);\n },\n },\n configResolved(resolvedConfig) {\n finalConfig = resolvedConfig;\n timing.configResolved = performance.now();\n if (finalConfig.command === \"build\") {\n finalConfig = {\n ...finalConfig,\n mode: \"production\",\n };\n }\n\n // Verify transformer runs first, preserver runs last\n const plugins = finalConfig.plugins;\n const transformerIndex = plugins.findIndex(\n (p) => p.name === \"vite:react-stream-transformer\"\n );\n const preserverIndex = plugins.findIndex(\n (p) => p.name === \"vite-plugin-react-server:preserve-directives\"\n );\n\n if (transformerIndex === -1) {\n throw new Error(\"Transformer plugin not installed\");\n }\n if (preserverIndex < transformerIndex) {\n throw new Error(\n \"Transformer plugin isn't installed or isn't running before preserver\"\n );\n }\n },\n async configureServer(server: ViteDevServer) {\n if (server.config.root !== root) {\n console.log(\n \"[vite-plugin-react-server] Root dir changed\",\n server.config.root,\n root\n );\n root = server.config.root;\n }\n\n const activeStreams = new Set<ServerResponse>();\n\n // Handle Vite server restarts\n server.ws.on(\"restart\", (path) => {\n console.log(\n \"[vite-plugin-react-server] 🔧 Plugin changed, preparing for restart:\",\n path\n );\n\n // Close streams with restart message\n for (const res of activeStreams) {\n res.writeHead(503, {\n \"Content-Type\": \"text/x-component\",\n \"Retry-After\": \"1\",\n });\n res.end('{\"error\":\"Server restarting...\"}');\n }\n activeStreams.clear();\n });\n\n server.ws.on(\"connection\", (_socket, _req) => {\n console.log(\"[vite-plugin-react-server] hooking up ws connection\");\n });\n\n server.ws.on(\"listening\", () => {\n console.log(\"[vite-plugin-react-server] hooking up ws listening\");\n });\n\n server.middlewares.use(async (req, res, next) => {\n if (req.headers.accept !== \"text/x-component\") return next();\n console.log(\"[vite-plugin-react-server] middleware called\");\n try {\n const handler = await createHandler(\n req.url ?? \"\",\n {\n Page: userOptions.Page,\n props: userOptions.props,\n build: userOptions.build,\n Html: React.Fragment,\n pageExportName: userOptions.pageExportName,\n propsExportName: userOptions.propsExportName,\n moduleBase: userOptions.moduleBase,\n moduleBasePath: userOptions.moduleBasePath,\n projectRoot: root,\n },\n {\n cssFiles: Array.from(cssModules),\n logger: createLogger(),\n loader: server.ssrLoadModule,\n moduleGraph: server.moduleGraph,\n }\n );\n if (handler.type === \"success\") {\n handler.stream?.pipe(res);\n }\n activeStreams.add(res);\n } finally {\n res.on(\"close\", () => {\n console.log(\n \"[vite-plugin-react-server] ➖ Stream closed for:\",\n req.url\n );\n activeStreams.delete(res);\n });\n }\n });\n },\n async config(config, configEnv): Promise<UserConfig> {\n if (typeof config.root === \"string\" && config.root !== root) {\n console.log(\n \"[vite-plugin-react-server] Root dir changed\",\n config.root,\n root\n );\n root = config.root;\n }\n const resolvedPages = await resolvePages(userOptions.build.pages);\n if (resolvedPages.type === \"error\") {\n throw resolvedPages.error;\n }\n\n files = await checkFilesExist(resolvedPages.pages, userOptions, root);\n\n const resolvedConfig = resolveUserConfig({\n condition: \"react-server\",\n config,\n configEnv,\n userOptions,\n files,\n });\n\n if (resolvedConfig.type === \"error\") {\n throw resolvedConfig.error;\n }\n\n userConfig = resolvedConfig.userConfig;\n\n return resolvedConfig.userConfig;\n },\n async buildStart() {\n if (!timing.buildStart) {\n timing.buildStart = performance.now();\n } else {\n console.log(\"Build already started\");\n }\n },\n async closeBundle() {\n if (!userConfig || finalConfig.command !== \"build\") return;\n try {\n timing.renderStart = performance.now();\n\n const resolvedServerManifest = tryManifest({\n root,\n outDir: userOptions.build.server,\n ssrManifest: false,\n });\n\n const serverManifest =\n resolvedServerManifest.type === \"error\"\n ? getModuleManifest.bind(this)()\n : resolvedServerManifest.manifest;\n // Get worker path from manifest\n // Look for the html-worker entry directly\n let htmlWorkerPath = serverManifest[\"html-worker\"]?.file;\n\n if (options.htmlWorkerPath) {\n htmlWorkerPath = join(root, options.htmlWorkerPath);\n } else {\n htmlWorkerPath = join(\n getPluginRoot(),\n DEFAULT_CONFIG.HTML_WORKER_PATH\n );\n }\n\n // Initialize worker with path from server directory\n const workerPath = resolve(\n root,\n userOptions.build.server,\n htmlWorkerPath\n );\n\n worker = await createWorker({\n projectRoot: userOptions.projectRoot,\n workerPath,\n condition: \"react-server\",\n reverseCondition: true,\n mode: finalConfig.mode as \"production\" | \"development\",\n nodeOptions: \"--conditions=react-client\",\n });\n\n // Get routes directly from pages\n const resolvedPages = await resolvePages(userOptions.build.pages);\n if (resolvedPages.type === \"error\") {\n throw resolvedPages.error;\n }\n const routes = resolvedPages.pages;\n console.log(\"[plugin] Routes to render:\", routes);\n\n const entries = Object.values(serverManifest).filter(\n (entry) => entry.isEntry\n );\n const css = entries.flatMap((entry) => entry.css);\n const loader = createBuildLoader({\n root,\n userConfig,\n pluginContext: this,\n });\n\n const { failedRoutes, completedRoutes } = await renderPages(routes, {\n pipableStreamOptions: {\n bootstrapModules: entries.map((entry) => \"/\" + entry.file),\n },\n moduleBasePath: userOptions.moduleBasePath,\n moduleBaseURL: userOptions.moduleBaseURL,\n clientCss: css?.map((css) => \"/\" + css) ?? [],\n userConfig,\n pluginOptions: userOptions,\n worker: worker,\n manifest: serverManifest,\n loader,\n onCssFile: (path: string) => {\n if (buildCssFiles && path.endsWith(\".css\")) {\n buildCssFiles.add(path);\n }\n },\n });\n\n // Debug render results\n console.log(\"[vite-plugin-react-server] Render results:\", {\n failedRoutes,\n completedRoutes,\n });\n\n if (failedRoutes.size) {\n console.error(\n \"[vite-plugin-react-server] Failed to render routes:\",\n failedRoutes\n );\n }\n console.log(\"[vite-plugin-react-server] Render complete\");\n console.log(\"[vite-plugin-react-server] Terminating worker\");\n if (worker) await worker.terminate();\n\n timing.renderEnd = performance.now();\n timing.total = (timing.renderEnd - timing.start) / 1000;\n\n // Collect stats\n const stats: BuildStats = {\n htmlFiles: routes.length,\n clientComponents: clientComponents.size,\n cssFiles: cssModules.size,\n totalRoutes: routes.length,\n timing: {\n config: ((timing.configResolved ?? 0) - timing.start) / 1000,\n build:\n ((timing.buildStart ?? 0) - (timing.configResolved ?? 0)) / 1000,\n render:\n ((timing.renderEnd ?? 0) - (timing.renderStart ?? 0)) / 1000,\n total: (timing.renderEnd ?? 0 - timing.start) / 1000,\n },\n };\n\n // Format duration helper\n const formatDuration = (seconds: number) => {\n if (seconds < 0.001) {\n return `${(seconds * 1000000).toFixed(0)}μs`;\n }\n if (seconds < 1) {\n return `${(seconds * 1000).toFixed(0)}ms`;\n }\n return `${seconds.toFixed(2)}s`;\n };\n\n console.log(\"\\n[vite-plugin-react-server] Build Summary:\");\n console.log(\"─\".repeat(50));\n console.log(`�� Generated ${stats.htmlFiles} HTML files`);\n console.log(`🎯 Processed ${stats.clientComponents} client components`);\n console.log(`🎨 Included ${stats.cssFiles} CSS files`);\n console.log(`🛣️ Total routes: ${stats.totalRoutes}`);\n console.log(\"─\".repeat(50));\n console.log(\"⏱️ Timing:\");\n console.log(` Config: ${formatDuration(stats.timing.config)}`);\n console.log(` Build: ${formatDuration(stats.timing.build)}`);\n console.log(` Render: ${formatDuration(stats.timing.render)}`);\n console.log(\" \".repeat(12));\n console.log(` Total: ${formatDuration(stats.timing.total)}`);\n console.log(\"─\".repeat(50));\n\n // Ensure worker is terminated\n if (worker) {\n console.log(\"[vite-plugin-react-server] Terminating worker...\");\n await worker.terminate();\n worker = null as any;\n }\n } catch (error) {\n console.error(\"[vite-plugin-react-server] Build failed:\", error);\n // Make sure to terminate worker even on error\n if (worker) await worker.terminate();\n throw error;\n }\n },\n async buildEnd(error) {\n if (error) {\n console.error(\"[vite-plugin-react-server] Build error:\", error);\n }\n if (worker) await worker.terminate();\n },\n handleHotUpdate({ file }) {\n if (file.endsWith(\".css\")) {\n cssModules.add(file);\n }\n },\n async renderChunk(_code: string, chunk: any, _options: any) {\n const moduleIds = this.getModuleIds();\n const fallbackManifestEntries = Object.fromEntries(\n Array.from(moduleIds)\n .map((module) => {\n const moduleInfo = this.getModuleInfo(module);\n if (!moduleInfo) return [module, null];\n const {\n code,\n id,\n isEntry,\n importedIds,\n dynamicallyImportedIds,\n ...rest\n } = moduleInfo;\n return [\n chunk.name ?? id,\n {\n file: chunk.fileName,\n src: module,\n name: chunk.name ?? id,\n isEntry: chunk.isEntry ?? isEntry,\n imports: chunk.imports ?? importedIds,\n dynamicImports: chunk.dynamicImports ?? dynamicallyImportedIds,\n directive: rest.meta[\"directive\"],\n css: chunk.viteMetadata?.importedCss ?? [],\n assets: chunk.viteMetadata?.importedAssets ?? [],\n },\n ];\n })\n .filter(Boolean)\n );\n\n moduleGraph = {\n ...moduleGraph,\n ...fallbackManifestEntries,\n };\n\n if (chunk.fileName.includes(\"html-worker\")) {\n const workerPath = resolve(\n root,\n userOptions.build.server,\n chunk.fileName\n );\n console.log(\"Files in output dir:\", {\n files: readdirSync(resolve(root, userOptions.build.server)),\n workerPath,\n });\n\n // Don't initialize worker during build phase\n if (finalConfig.command === \"build\") {\n return null;\n }\n\n worker = await createWorker({\n projectRoot: userOptions.projectRoot,\n workerPath,\n });\n }\n return null;\n },\n };\n}\n"],"names":["React","css"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAiCO,SAAS,kBACd,OAC8F,EAAA;AAC9F,EAAA,MAAM,MAAsB,GAAA;AAAA,IAC1B,KAAA,EAAO,YAAY,GAAI;AAAA,GACzB;AAEA,EAAI,IAAA,KAAA;AAEJ,EAAI,IAAA,MAAA;AACJ,EAAI,IAAA,WAAA;AACJ,EAAI,IAAA,UAAA,uBAAiB,GAAY,EAAA;AACjC,EAAI,IAAA,gBAAA,uBAAuB,GAAoB,EAAA;AAE/C,EAAI,IAAA,aAAA,uBAAoB,GAAY,EAAA;AACpC,EAAI,IAAA,IAAA,GAAe,QAAQ,GAAI,EAAA;AAC/B,EAAI,IAAA,UAAA;AACJ,EAAI,IAAA,WAAA;AACJ,EAAA,IAAI,cAUA,EAAC;AAeL,EAAM,MAAA,eAAA,GAAkB,eAAe,OAAO,CAAA;AAC9C,EAAI,IAAA,eAAA,CAAgB,SAAS,OAAS,EAAA;AACpC,IAAA,MAAM,eAAgB,CAAA,KAAA;AAAA;AAExB,EAAA,WAAA,GAAc,eAAgB,CAAA,WAAA;AAC9B,EAAA,IAAA,GAAO,WAAY,CAAA,WAAA;AACnB,EAAO,OAAA;AAAA,IACL,IAAM,EAAA,0BAAA;AAAA,IACN,OAAS,EAAA,MAAA;AAAA,IACT,GAAK,EAAA;AAAA,MACH,IAAA,EAAM,EAAE,MAAO,EAAA;AAAA,MACf,WAAW,IAAc,EAAA;AACvB,QAAA,aAAA,CAAc,IAAI,IAAI,CAAA;AAAA;AACxB,KACF;AAAA,IACA,eAAe,cAAgB,EAAA;AAC7B,MAAc,WAAA,GAAA,cAAA;AACd,MAAO,MAAA,CAAA,cAAA,GAAiB,YAAY,GAAI,EAAA;AACxC,MAAI,IAAA,WAAA,CAAY,YAAY,OAAS,EAAA;AACnC,QAAc,WAAA,GAAA;AAAA,UACZ,GAAG,WAAA;AAAA,UACH,IAAM,EAAA;AAAA,SACR;AAAA;AAIF,MAAA,MAAM,UAAU,WAAY,CAAA,OAAA;AAC5B,MAAA,MAAM,mBAAmB,OAAQ,CAAA,SAAA;AAAA,QAC/B,CAAC,CAAM,KAAA,CAAA,CAAE,IAAS,KAAA;AAAA,OACpB;AACA,MAAA,MAAM,iBAAiB,OAAQ,CAAA,SAAA;AAAA,QAC7B,CAAC,CAAM,KAAA,CAAA,CAAE,IAAS,KAAA;AAAA,OACpB;AAEA,MAAA,IAAI,qBAAqB,EAAI,EAAA;AAC3B,QAAM,MAAA,IAAI,MAAM,kCAAkC,CAAA;AAAA;AAEpD,MAAA,IAAI,iBAAiB,gBAAkB,EAAA;AACrC,QAAA,MAAM,IAAI,KAAA;AAAA,UACR;AAAA,SACF;AAAA;AACF,KACF;AAAA,IACA,MAAM,gBAAgB,MAAuB,EAAA;AAC3C,MAAI,IAAA,MAAA,CAAO,MAAO,CAAA,IAAA,KAAS,IAAM,EAAA;AAC/B,QAAQ,OAAA,CAAA,GAAA;AAAA,UACN,6CAAA;AAAA,UACA,OAAO,MAAO,CAAA,IAAA;AAAA,UACd;AAAA,SACF;AACA,QAAA,IAAA,GAAO,OAAO,MAAO,CAAA,IAAA;AAAA;AAGvB,MAAM,MAAA,aAAA,uBAAoB,GAAoB,EAAA;AAG9C,MAAA,MAAA,CAAO,EAAG,CAAA,EAAA,CAAG,SAAW,EAAA,CAAC,IAAS,KAAA;AAChC,QAAQ,OAAA,CAAA,GAAA;AAAA,UACN,sEAAA;AAAA,UACA;AAAA,SACF;AAGA,QAAA,KAAA,MAAW,OAAO,aAAe,EAAA;AAC/B,UAAA,GAAA,CAAI,UAAU,GAAK,EAAA;AAAA,YACjB,cAAgB,EAAA,kBAAA;AAAA,YAChB,aAAe,EAAA;AAAA,WAChB,CAAA;AACD,UAAA,GAAA,CAAI,IAAI,kCAAkC,CAAA;AAAA;AAE5C,QAAA,aAAA,CAAc,KAAM,EAAA;AAAA,OACrB,CAAA;AAED,MAAA,MAAA,CAAO,EAAG,CAAA,EAAA,CAAG,YAAc,EAAA,CAAC,SAAS,IAAS,KAAA;AAC5C,QAAA,OAAA,CAAQ,IAAI,qDAAqD,CAAA;AAAA,OAClE,CAAA;AAED,MAAO,MAAA,CAAA,EAAA,CAAG,EAAG,CAAA,WAAA,EAAa,MAAM;AAC9B,QAAA,OAAA,CAAQ,IAAI,oDAAoD,CAAA;AAAA,OACjE,CAAA;AAED,MAAA,MAAA,CAAO,WAAY,CAAA,GAAA,CAAI,OAAO,GAAA,EAAK,KAAK,IAAS,KAAA;AAC/C,QAAA,IAAI,GAAI,CAAA,OAAA,CAAQ,MAAW,KAAA,kBAAA,SAA2B,IAAK,EAAA;AAC3D,QAAA,OAAA,CAAQ,IAAI,8CAA8C,CAAA;AAC1D,QAAI,IAAA;AACF,UAAA,MAAM,UAAU,MAAM,aAAA;AAAA,YACpB,IAAI,GAAO,IAAA,EAAA;AAAA,YACX;AAAA,cACE,MAAM,WAAY,CAAA,IAAA;AAAA,cAClB,OAAO,WAAY,CAAA,KAAA;AAAA,cACnB,OAAO,WAAY,CAAA,KAAA;AAAA,cACnB,MAAMA,cAAM,CAAA,QAAA;AAAA,cACZ,gBAAgB,WAAY,CAAA,cAAA;AAAA,cAC5B,iBAAiB,WAAY,CAAA,eAAA;AAAA,cAC7B,YAAY,WAAY,CAAA,UAAA;AAAA,cACxB,gBAAgB,WAAY,CAAA,cAAA;AAAA,cAC5B,WAAa,EAAA;AAAA,aACf;AAAA,YACA;AAAA,cACE,QAAA,EAAU,KAAM,CAAA,IAAA,CAAK,UAAU,CAAA;AAAA,cAC/B,QAAQ,YAAa,EAAA;AAAA,cACrB,QAAQ,MAAO,CAAA,aAAA;AAAA,cACf,aAAa,MAAO,CAAA;AAAA;AACtB,WACF;AACA,UAAI,IAAA,OAAA,CAAQ,SAAS,SAAW,EAAA;AAC9B,YAAQ,OAAA,CAAA,MAAA,EAAQ,KAAK,GAAG,CAAA;AAAA;AAE1B,UAAA,aAAA,CAAc,IAAI,GAAG,CAAA;AAAA,SACrB,SAAA;AACA,UAAI,GAAA,CAAA,EAAA,CAAG,SAAS,MAAM;AACpB,YAAQ,OAAA,CAAA,GAAA;AAAA,cACN,iDAAA;AAAA,cACA,GAAI,CAAA;AAAA,aACN;AACA,YAAA,aAAA,CAAc,OAAO,GAAG,CAAA;AAAA,WACzB,CAAA;AAAA;AACH,OACD,CAAA;AAAA,KACH;AAAA,IACA,MAAM,MAAO,CAAA,MAAA,EAAQ,SAAgC,EAAA;AACnD,MAAA,IAAI,OAAO,MAAO,CAAA,IAAA,KAAS,QAAY,IAAA,MAAA,CAAO,SAAS,IAAM,EAAA;AAC3D,QAAQ,OAAA,CAAA,GAAA;AAAA,UACN,6CAAA;AAAA,UACA,MAAO,CAAA,IAAA;AAAA,UACP;AAAA,SACF;AACA,QAAA,IAAA,GAAO,MAAO,CAAA,IAAA;AAAA;AAEhB,MAAA,MAAM,aAAgB,GAAA,MAAM,YAAa,CAAA,WAAA,CAAY,MAAM,KAAK,CAAA;AAChE,MAAI,IAAA,aAAA,CAAc,SAAS,OAAS,EAAA;AAClC,QAAA,MAAM,aAAc,CAAA,KAAA;AAAA;AAGtB,MAAA,KAAA,GAAQ,MAAM,eAAA,CAAgB,aAAc,CAAA,KAAA,EAAO,aAAa,IAAI,CAAA;AAEpE,MAAA,MAAM,iBAAiB,iBAAkB,CAAA;AAAA,QACvC,SAAW,EAAA,cAAA;AAAA,QACX,MAAA;AAAA,QACA,SAAA;AAAA,QACA,WAAA;AAAA,QACA;AAAA,OACD,CAAA;AAED,MAAI,IAAA,cAAA,CAAe,SAAS,OAAS,EAAA;AACnC,QAAA,MAAM,cAAe,CAAA,KAAA;AAAA;AAGvB,MAAA,UAAA,GAAa,cAAe,CAAA,UAAA;AAE5B,MAAA,OAAO,cAAe,CAAA,UAAA;AAAA,KACxB;AAAA,IACA,MAAM,UAAa,GAAA;AACjB,MAAI,IAAA,CAAC,OAAO,UAAY,EAAA;AACtB,QAAO,MAAA,CAAA,UAAA,GAAa,YAAY,GAAI,EAAA;AAAA,OAC/B,MAAA;AACL,QAAA,OAAA,CAAQ,IAAI,uBAAuB,CAAA;AAAA;AACrC,KACF;AAAA,IACA,MAAM,WAAc,GAAA;AAClB,MAAA,IAAI,CAAC,UAAA,IAAc,WAAY,CAAA,OAAA,KAAY,OAAS,EAAA;AACpD,MAAI,IAAA;AACF,QAAO,MAAA,CAAA,WAAA,GAAc,YAAY,GAAI,EAAA;AAErC,QAAA,MAAM,yBAAyB,WAAY,CAAA;AAAA,UACzC,IAAA;AAAA,UACA,MAAA,EAAQ,YAAY,KAAM,CAAA,MAAA;AAAA,UAC1B,WAAa,EAAA;AAAA,SACd,CAAA;AAED,QAAM,MAAA,cAAA,GACJ,uBAAuB,IAAS,KAAA,OAAA,GAC5B,kBAAkB,IAAK,CAAA,IAAI,CAAE,EAAA,GAC7B,sBAAuB,CAAA,QAAA;AAG7B,QAAI,IAAA,cAAA,GAAiB,cAAe,CAAA,aAAa,CAAG,EAAA,IAAA;AAEpD,QAAA,IAAI,QAAQ,cAAgB,EAAA;AAC1B,UAAiB,cAAA,GAAA,IAAA,CAAK,IAAM,EAAA,OAAA,CAAQ,cAAc,CAAA;AAAA,SAC7C,MAAA;AACL,UAAiB,cAAA,GAAA,IAAA;AAAA,YACf,aAAc,EAAA;AAAA,YACd,cAAe,CAAA;AAAA,WACjB;AAAA;AAIF,QAAA,MAAM,UAAa,GAAA,OAAA;AAAA,UACjB,IAAA;AAAA,UACA,YAAY,KAAM,CAAA,MAAA;AAAA,UAClB;AAAA,SACF;AAEA,QAAA,MAAA,GAAS,MAAM,YAAa,CAAA;AAAA,UAC1B,aAAa,WAAY,CAAA,WAAA;AAAA,UACzB,UAAA;AAAA,UACA,SAAW,EAAA,cAAA;AAAA,UACX,gBAAkB,EAAA,IAAA;AAAA,UAClB,MAAM,WAAY,CAAA,IAAA;AAAA,UAClB,WAAa,EAAA;AAAA,SACd,CAAA;AAGD,QAAA,MAAM,aAAgB,GAAA,MAAM,YAAa,CAAA,WAAA,CAAY,MAAM,KAAK,CAAA;AAChE,QAAI,IAAA,aAAA,CAAc,SAAS,OAAS,EAAA;AAClC,UAAA,MAAM,aAAc,CAAA,KAAA;AAAA;AAEtB,QAAA,MAAM,SAAS,aAAc,CAAA,KAAA;AAC7B,QAAQ,OAAA,CAAA,GAAA,CAAI,8BAA8B,MAAM,CAAA;AAEhD,QAAA,MAAM,OAAU,GAAA,MAAA,CAAO,MAAO,CAAA,cAAc,CAAE,CAAA,MAAA;AAAA,UAC5C,CAAC,UAAU,KAAM,CAAA;AAAA,SACnB;AACA,QAAA,MAAM,MAAM,OAAQ,CAAA,OAAA,CAAQ,CAAC,KAAA,KAAU,MAAM,GAAG,CAAA;AAChD,QAAA,MAAM,SAAS,iBAAkB,CAAA;AAAA,UAC/B,IAAA;AAAA,UACA,UAAA;AAAA,UACA,aAAe,EAAA;AAAA,SAChB,CAAA;AAED,QAAA,MAAM,EAAE,YAAc,EAAA,eAAA,EAAoB,GAAA,MAAM,YAAY,MAAQ,EAAA;AAAA,UAClE,oBAAsB,EAAA;AAAA,YACpB,kBAAkB,OAAQ,CAAA,GAAA,CAAI,CAAC,KAAU,KAAA,GAAA,GAAM,MAAM,IAAI;AAAA,WAC3D;AAAA,UACA,gBAAgB,WAAY,CAAA,cAAA;AAAA,UAC5B,eAAe,WAAY,CAAA,aAAA;AAAA,UAC3B,SAAA,EAAW,KAAK,GAAI,CAAA,CAACC,SAAQ,GAAMA,GAAAA,IAAG,KAAK,EAAC;AAAA,UAC5C,UAAA;AAAA,UACA,aAAe,EAAA,WAAA;AAAA,UACf,MAAA;AAAA,UACA,QAAU,EAAA,cAAA;AAAA,UACV,MAAA;AAAA,UACA,SAAA,EAAW,CAAC,IAAiB,KAAA;AAC3B,YAAA,IAAI,aAAiB,IAAA,IAAA,CAAK,QAAS,CAAA,MAAM,CAAG,EAAA;AAC1C,cAAA,aAAA,CAAc,IAAI,IAAI,CAAA;AAAA;AACxB;AACF,SACD,CAAA;AAGD,QAAA,OAAA,CAAQ,IAAI,4CAA8C,EAAA;AAAA,UACxD,YAAA;AAAA,UACA;AAAA,SACD,CAAA;AAED,QAAA,IAAI,aAAa,IAAM,EAAA;AACrB,UAAQ,OAAA,CAAA,KAAA;AAAA,YACN,qDAAA;AAAA,YACA;AAAA,WACF;AAAA;AAEF,QAAA,OAAA,CAAQ,IAAI,4CAA4C,CAAA;AACxD,QAAA,OAAA,CAAQ,IAAI,+CAA+C,CAAA;AAC3D,QAAI,IAAA,MAAA,EAAc,MAAA,MAAA,CAAO,SAAU,EAAA;AAEnC,QAAO,MAAA,CAAA,SAAA,GAAY,YAAY,GAAI,EAAA;AACnC,QAAA,MAAA,CAAO,KAAS,GAAA,CAAA,MAAA,CAAO,SAAY,GAAA,MAAA,CAAO,KAAS,IAAA,GAAA;AAGnD,QAAA,MAAM,KAAoB,GAAA;AAAA,UACxB,WAAW,MAAO,CAAA,MAAA;AAAA,UAClB,kBAAkB,gBAAiB,CAAA,IAAA;AAAA,UACnC,UAAU,UAAW,CAAA,IAAA;AAAA,UACrB,aAAa,MAAO,CAAA,MAAA;AAAA,UACpB,MAAQ,EAAA;AAAA,YACN,MAAU,EAAA,CAAA,CAAA,MAAA,CAAO,cAAkB,IAAA,CAAA,IAAK,OAAO,KAAS,IAAA,GAAA;AAAA,YACxD,SACI,MAAO,CAAA,UAAA,IAAc,CAAM,KAAA,MAAA,CAAO,kBAAkB,CAAM,CAAA,IAAA,GAAA;AAAA,YAC9D,UACI,MAAO,CAAA,SAAA,IAAa,CAAM,KAAA,MAAA,CAAO,eAAe,CAAM,CAAA,IAAA,GAAA;AAAA,YAC1D,KAAQ,EAAA,CAAA,MAAA,CAAO,SAAa,IAAA,CAAA,GAAI,OAAO,KAAS,IAAA;AAAA;AAClD,SACF;AAGA,QAAM,MAAA,cAAA,GAAiB,CAAC,OAAoB,KAAA;AAC1C,UAAA,IAAI,UAAU,IAAO,EAAA;AACnB,YAAA,OAAO,CAAI,EAAA,CAAA,OAAA,GAAU,GAAS,EAAA,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA,CAAA;AAAA;AAE1C,UAAA,IAAI,UAAU,CAAG,EAAA;AACf,YAAA,OAAO,CAAI,EAAA,CAAA,OAAA,GAAU,GAAM,EAAA,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA,CAAA;AAAA;AAEvC,UAAA,OAAO,CAAG,EAAA,OAAA,CAAQ,OAAQ,CAAA,CAAC,CAAC,CAAA,CAAA,CAAA;AAAA,SAC9B;AAEA,QAAA,OAAA,CAAQ,IAAI,6CAA6C,CAAA;AACzD,QAAA,OAAA,CAAQ,GAAI,CAAA,GAAA,CAAI,MAAO,CAAA,EAAE,CAAC,CAAA;AAC1B,QAAA,OAAA,CAAQ,GAAI,CAAA,CAAA,aAAA,EAAgB,KAAM,CAAA,SAAS,CAAa,WAAA,CAAA,CAAA;AACxD,QAAA,OAAA,CAAQ,GAAI,CAAA,CAAA,aAAA,EAAgB,KAAM,CAAA,gBAAgB,CAAoB,kBAAA,CAAA,CAAA;AACtE,QAAA,OAAA,CAAQ,GAAI,CAAA,CAAA,YAAA,EAAe,KAAM,CAAA,QAAQ,CAAY,UAAA,CAAA,CAAA;AACrD,QAAA,OAAA,CAAQ,GAAI,CAAA,CAAA,mBAAA,EAAsB,KAAM,CAAA,WAAW,CAAE,CAAA,CAAA;AACrD,QAAA,OAAA,CAAQ,GAAI,CAAA,GAAA,CAAI,MAAO,CAAA,EAAE,CAAC,CAAA;AAC1B,QAAA,OAAA,CAAQ,IAAI,aAAa,CAAA;AACzB,QAAA,OAAA,CAAQ,IAAI,CAAc,WAAA,EAAA,cAAA,CAAe,MAAM,MAAO,CAAA,MAAM,CAAC,CAAE,CAAA,CAAA;AAC/D,QAAA,OAAA,CAAQ,IAAI,CAAc,WAAA,EAAA,cAAA,CAAe,MAAM,MAAO,CAAA,KAAK,CAAC,CAAE,CAAA,CAAA;AAC9D,QAAA,OAAA,CAAQ,IAAI,CAAc,WAAA,EAAA,cAAA,CAAe,MAAM,MAAO,CAAA,MAAM,CAAC,CAAE,CAAA,CAAA;AAC/D,QAAA,OAAA,CAAQ,GAAI,CAAA,IAAA,CAAK,MAAO,CAAA,EAAE,CAAC,CAAA;AAC3B,QAAA,OAAA,CAAQ,IAAI,CAAc,WAAA,EAAA,cAAA,CAAe,MAAM,MAAO,CAAA,KAAK,CAAC,CAAE,CAAA,CAAA;AAC9D,QAAA,OAAA,CAAQ,GAAI,CAAA,GAAA,CAAI,MAAO,CAAA,EAAE,CAAC,CAAA;AAG1B,QAAA,IAAI,MAAQ,EAAA;AACV,UAAA,OAAA,CAAQ,IAAI,kDAAkD,CAAA;AAC9D,UAAA,MAAM,OAAO,SAAU,EAAA;AACvB,UAAS,MAAA,GAAA,IAAA;AAAA;AACX,eACO,KAAO,EAAA;AACd,QAAQ,OAAA,CAAA,KAAA,CAAM,4CAA4C,KAAK,CAAA;AAE/D,QAAI,IAAA,MAAA,EAAc,MAAA,MAAA,CAAO,SAAU,EAAA;AACnC,QAAM,MAAA,KAAA;AAAA;AACR,KACF;AAAA,IACA,MAAM,SAAS,KAAO,EAAA;AACpB,MAAA,IAAI,KAAO,EAAA;AACT,QAAQ,OAAA,CAAA,KAAA,CAAM,2CAA2C,KAAK,CAAA;AAAA;AAEhE,MAAI,IAAA,MAAA,EAAc,MAAA,MAAA,CAAO,SAAU,EAAA;AAAA,KACrC;AAAA,IACA,eAAA,CAAgB,EAAE,IAAA,EAAQ,EAAA;AACxB,MAAI,IAAA,IAAA,CAAK,QAAS,CAAA,MAAM,CAAG,EAAA;AACzB,QAAA,UAAA,CAAW,IAAI,IAAI,CAAA;AAAA;AACrB,KACF;AAAA,IACA,MAAM,WAAA,CAAY,KAAe,EAAA,KAAA,EAAY,QAAe,EAAA;AAC1D,MAAM,MAAA,SAAA,GAAY,KAAK,YAAa,EAAA;AACpC,MAAA,MAAM,0BAA0B,MAAO,CAAA,WAAA;AAAA,QACrC,MAAM,IAAK,CAAA,SAAS,CACjB,CAAA,GAAA,CAAI,CAAC,MAAW,KAAA;AACf,UAAM,MAAA,UAAA,GAAa,IAAK,CAAA,aAAA,CAAc,MAAM,CAAA;AAC5C,UAAA,IAAI,CAAC,UAAA,EAAmB,OAAA,CAAC,QAAQ,IAAI,CAAA;AACrC,UAAM,MAAA;AAAA,YACJ,IAAA;AAAA,YACA,EAAA;AAAA,YACA,OAAA;AAAA,YACA,WAAA;AAAA,YACA,sBAAA;AAAA,YACA,GAAG;AAAA,WACD,GAAA,UAAA;AACJ,UAAO,OAAA;AAAA,YACL,MAAM,IAAQ,IAAA,EAAA;AAAA,YACd;AAAA,cACE,MAAM,KAAM,CAAA,QAAA;AAAA,cACZ,GAAK,EAAA,MAAA;AAAA,cACL,IAAA,EAAM,MAAM,IAAQ,IAAA,EAAA;AAAA,cACpB,OAAA,EAAS,MAAM,OAAW,IAAA,OAAA;AAAA,cAC1B,OAAA,EAAS,MAAM,OAAW,IAAA,WAAA;AAAA,cAC1B,cAAA,EAAgB,MAAM,cAAkB,IAAA,sBAAA;AAAA,cACxC,SAAA,EAAW,IAAK,CAAA,IAAA,CAAK,WAAW,CAAA;AAAA,cAChC,GAAK,EAAA,KAAA,CAAM,YAAc,EAAA,WAAA,IAAe,EAAC;AAAA,cACzC,MAAQ,EAAA,KAAA,CAAM,YAAc,EAAA,cAAA,IAAkB;AAAC;AACjD,WACF;AAAA,SACD,CACA,CAAA,MAAA,CAAO,OAAO;AAAA,OACnB;AAEA,MAAc,WAAA,GAAA;AAAA,QACZ,GAAG,WAAA;AAAA,QACH,GAAG;AAAA,OACL;AAEA,MAAA,IAAI,KAAM,CAAA,QAAA,CAAS,QAAS,CAAA,aAAa,CAAG,EAAA;AAC1C,QAAA,MAAM,UAAa,GAAA,OAAA;AAAA,UACjB,IAAA;AAAA,UACA,YAAY,KAAM,CAAA,MAAA;AAAA,UAClB,KAAM,CAAA;AAAA,SACR;AACA,QAAA,OAAA,CAAQ,IAAI,sBAAwB,EAAA;AAAA,UAClC,OAAO,WAAY,CAAA,OAAA,CAAQ,MAAM,WAAY,CAAA,KAAA,CAAM,MAAM,CAAC,CAAA;AAAA,UAC1D;AAAA,SACD,CAAA;AAGD,QAAI,IAAA,WAAA,CAAY,YAAY,OAAS,EAAA;AACnC,UAAO,OAAA,IAAA;AAAA;AAGT,QAAA,MAAA,GAAS,MAAM,YAAa,CAAA;AAAA,UAC1B,aAAa,WAAY,CAAA,WAAA;AAAA,UACzB;AAAA,SACD,CAAA;AAAA;AAEH,MAAO,OAAA,IAAA;AAAA;AACT,GACF;AACF;;;;"}
1
+ {"version":3,"file":"plugin.js","sources":["../../../plugin/react-server/plugin.ts"],"sourcesContent":["import { readdirSync } from \"fs\";\nimport type { ServerResponse } from \"node:http\";\nimport { join, resolve } from \"node:path\";\nimport { performance } from \"node:perf_hooks\";\nimport { Worker } from \"node:worker_threads\";\nimport React from \"react\";\nimport {\n createLogger,\n type ResolvedConfig,\n type UserConfig,\n type ViteDevServer,\n} from \"vite\";\nimport { checkFilesExist } from \"../checkFilesExist.js\";\nimport { DEFAULT_CONFIG } from \"../config/defaults.js\";\nimport { getPluginRoot } from \"../config/getPaths.js\";\nimport { resolveOptions } from \"../config/resolveOptions.js\";\nimport { resolvePages } from \"../config/resolvePages.js\";\nimport { resolveUserConfig } from \"../config/resolveUserConfig.js\";\nimport { getModuleManifest } from \"../helpers/getModuleManifest.js\";\nimport { tryManifest } from \"../helpers/tryManifest.js\";\nimport { createBuildLoader } from \"../loader/createBuildLoader.js\";\nimport type {\n BuildTiming,\n CheckFilesExistReturn,\n ReactStreamPluginMeta,\n ResolvedUserConfig,\n ResolvedUserOptions,\n} from \"../types.js\";\nimport { type StreamPluginOptions } from \"../types.js\";\nimport { createWorker } from \"../worker/createWorker.js\";\nimport { renderPages } from \"../worker/html/renderPages.js\";\nimport { createHandler } from \"./createHandler.js\";\n\nexport function reactServerPlugin(\n options: StreamPluginOptions\n): import(\"vite\").Plugin<{\n meta: ReactStreamPluginMeta;\n addCssFile: (path: string) => void;\n}> {\n const timing: BuildTiming = {\n start: performance.now(),\n };\n\n let files: CheckFilesExistReturn;\n // let env: Awaited<ReturnType<typeof getEnv>>;\n let worker: Worker;\n let finalConfig: ResolvedConfig;\n let cssModules = new Set<string>();\n let clientComponents = new Map<string, string>();\n // let define: Record<string, string>;\n let buildCssFiles = new Set<string>();\n let root: string = process.cwd();\n let userConfig: ResolvedUserConfig;\n let userOptions: ResolvedUserOptions;\n let moduleGraph: Record<\n string,\n {\n file: string;\n src: string;\n name: string;\n isEntry: boolean;\n imports: string[];\n dynamicImports: string[];\n }\n > = {};\n\n interface BuildStats {\n htmlFiles: number;\n clientComponents: number;\n cssFiles: number;\n totalRoutes: number;\n timing: {\n config: number;\n build: number;\n render: number;\n total: number;\n };\n }\n\n const resolvedOptions = resolveOptions(options);\n if (resolvedOptions.type === \"error\") {\n throw resolvedOptions.error;\n }\n userOptions = resolvedOptions.userOptions;\n root = userOptions.projectRoot;\n return {\n name: \"vite:react-stream-server\",\n enforce: \"post\",\n api: {\n meta: { timing },\n addCssFile(path: string) {\n buildCssFiles.add(path);\n },\n },\n configResolved(resolvedConfig) {\n finalConfig = resolvedConfig;\n timing.configResolved = performance.now();\n if (finalConfig.command === \"build\") {\n finalConfig = {\n ...finalConfig,\n mode: \"production\",\n };\n }\n\n // Verify transformer runs first, preserver runs last\n const plugins = finalConfig.plugins;\n const transformerIndex = plugins.findIndex(\n (p) => p.name === \"vite:react-stream-transformer\"\n );\n const preserverIndex = plugins.findIndex(\n (p) => p.name === \"vite-plugin-react-server:preserve-directives\"\n );\n\n if (transformerIndex === -1) {\n throw new Error(\"Transformer plugin not installed\");\n }\n if (preserverIndex < transformerIndex) {\n throw new Error(\n \"Transformer plugin isn't installed or isn't running before preserver\"\n );\n }\n },\n async configureServer(server: ViteDevServer) {\n if (server.config.root !== root) {\n console.log(\n \"[vite-plugin-react-server] Root dir changed\",\n server.config.root,\n root\n );\n root = server.config.root;\n }\n\n const activeStreams = new Set<ServerResponse>();\n\n // Handle Vite server restarts\n server.ws.on(\"restart\", (path) => {\n console.log(\n \"[vite-plugin-react-server] 🔧 Plugin changed, preparing for restart:\",\n path\n );\n\n // Close streams with restart message\n for (const res of activeStreams) {\n res.writeHead(503, {\n \"Content-Type\": \"text/x-component\",\n \"Retry-After\": \"1\",\n });\n res.end('{\"error\":\"Server restarting...\"}');\n }\n activeStreams.clear();\n });\n\n server.ws.on(\"connection\", (_socket, _req) => {\n console.log(\"[vite-plugin-react-server] hooking up ws connection\");\n });\n\n server.ws.on(\"listening\", () => {\n console.log(\"[vite-plugin-react-server] hooking up ws listening\");\n });\n\n server.middlewares.use(async (req, res, next) => {\n if (req.headers.accept !== \"text/x-component\") return next();\n console.log(\"[vite-plugin-react-server] middleware called\");\n try {\n const handler = await createHandler(\n req.url ?? \"\",\n {\n Page: userOptions.Page,\n props: userOptions.props,\n build: userOptions.build,\n Html: React.Fragment,\n pageExportName: userOptions.pageExportName,\n propsExportName: userOptions.propsExportName,\n moduleBase: userOptions.moduleBase,\n moduleBasePath: userOptions.moduleBasePath,\n projectRoot: root,\n },\n {\n cssFiles: Array.from(cssModules),\n logger: createLogger(),\n loader: server.ssrLoadModule,\n moduleGraph: server.moduleGraph,\n }\n );\n if (handler.type === \"success\") {\n handler.stream?.pipe(res);\n }\n activeStreams.add(res);\n } finally {\n res.on(\"close\", () => {\n console.log(\n \"[vite-plugin-react-server] ➖ Stream closed for:\",\n req.url\n );\n activeStreams.delete(res);\n });\n }\n });\n },\n async config(config, configEnv): Promise<UserConfig> {\n if (typeof config.root === \"string\" && config.root !== root && config.root !== process.cwd() && config.root !== \"\") {\n root = config.root;\n }\n const resolvedPages = await resolvePages(userOptions.build.pages);\n if (resolvedPages.type === \"error\") {\n throw resolvedPages.error;\n }\n\n files = await checkFilesExist(resolvedPages.pages, userOptions, root);\n\n const resolvedConfig = resolveUserConfig({\n condition: \"react-server\",\n config,\n configEnv,\n userOptions,\n files,\n });\n\n if (resolvedConfig.type === \"error\") {\n throw resolvedConfig.error;\n }\n\n userConfig = resolvedConfig.userConfig;\n\n return resolvedConfig.userConfig;\n },\n async buildStart() {\n if (!timing.buildStart) {\n timing.buildStart = performance.now();\n } else {\n console.log(\"Build already started\");\n }\n },\n async closeBundle() {\n if (!userConfig || finalConfig.command !== \"build\") return;\n try {\n timing.renderStart = performance.now();\n\n const resolvedServerManifest = tryManifest({\n root,\n outDir: userOptions.build.server,\n ssrManifest: false,\n });\n\n const serverManifest =\n resolvedServerManifest.type === \"error\"\n ? getModuleManifest.bind(this)()\n : resolvedServerManifest.manifest;\n // Get worker path from manifest\n // Look for the html-worker entry directly\n let htmlWorkerPath = serverManifest[\"html-worker\"]?.file;\n\n if (options.htmlWorkerPath) {\n htmlWorkerPath = options.htmlWorkerPath;\n } else {\n htmlWorkerPath = join(\n getPluginRoot(),\n DEFAULT_CONFIG.HTML_WORKER_PATH\n );\n }\n\n worker = await createWorker({\n projectRoot: root,\n workerPath: htmlWorkerPath,\n condition: \"react-server\",\n reverseCondition: true,\n mode: finalConfig.mode as \"production\" | \"development\",\n nodeOptions: \"--conditions=react-client\",\n });\n\n // Get routes directly from pages\n const resolvedPages = await resolvePages(userOptions.build.pages);\n if (resolvedPages.type === \"error\") {\n throw resolvedPages.error;\n }\n const routes = resolvedPages.pages;\n\n const entries = Object.values(serverManifest).filter(\n (entry) => entry.isEntry\n );\n const css = entries.flatMap((entry) => entry.css);\n const loader = createBuildLoader({\n root,\n userConfig,\n pluginContext: this,\n });\n\n const { failedRoutes, completedRoutes } = await renderPages(routes, {\n pipableStreamOptions: {\n bootstrapModules: entries\n .filter((entry) =>\n userOptions.autoDiscover.clientComponents.test(entry.file)\n )\n .filter((t)=> typeof t === \"object\" && t != null && \"file\" in t)\n .map((entry) => \"/\" + entry.file.replace(userOptions.moduleBasePath, \"\")),\n },\n moduleBasePath: userOptions.moduleBasePath,\n moduleBaseURL: userOptions.moduleBaseURL,\n clientCss: css?.filter((css) => typeof css === \"string\").map((css) => \"/\" + css.replace(userOptions.moduleBasePath, \"\")) ?? [],\n userConfig,\n pluginOptions: userOptions,\n worker: worker,\n manifest: serverManifest,\n loader,\n onCssFile: (path: string) => {\n if (buildCssFiles && path.endsWith(\".css\")) {\n buildCssFiles.add(path.replace(userOptions.moduleBasePath, \"\"));\n }\n },\n });\n\n if (failedRoutes.size) {\n console.error(\n \"[vite-plugin-react-server] Failed to render routes:\",\n failedRoutes\n );\n }\n if (worker) await worker.terminate();\n\n timing.renderEnd = performance.now();\n timing.total = (timing.renderEnd - timing.start) / 1000;\n\n // Collect stats\n const stats: BuildStats = {\n htmlFiles: routes.length,\n clientComponents: clientComponents.size,\n cssFiles: cssModules.size,\n totalRoutes: routes.length,\n timing: {\n config: ((timing.configResolved ?? 0) - timing.start) / 1000,\n build:\n ((timing.buildStart ?? 0) - (timing.configResolved ?? 0)) / 1000,\n render:\n ((timing.renderEnd ?? 0) - (timing.renderStart ?? 0)) / 1000,\n total: (timing.renderEnd ?? 0 - timing.start) / 1000,\n },\n };\n\n // Format duration helper\n const formatDuration = (seconds: number) => {\n if (seconds < 0.001) {\n return `${(seconds * 1000000).toFixed(0)}μs`;\n }\n if (seconds < 1) {\n return `${(seconds * 1000).toFixed(0)}ms`;\n }\n return `${seconds.toFixed(2)}s`;\n };\n\n console.log(\"\\n[vite-plugin-react-server] Build Summary:\");\n console.log(\"─\".repeat(50));\n console.log(`�� Generated ${stats.htmlFiles} HTML files`);\n console.log(`🎯 Processed ${stats.clientComponents} client components`);\n console.log(`🎨 Included ${stats.cssFiles} CSS files`);\n console.log(`🛣️ Total routes: ${stats.totalRoutes}`);\n console.log(\"─\".repeat(50));\n console.log(\"⏱️ Timing:\");\n console.log(` Config: ${formatDuration(stats.timing.config)}`);\n console.log(` Build: ${formatDuration(stats.timing.build)}`);\n console.log(` Render: ${formatDuration(stats.timing.render)}`);\n console.log(\" \".repeat(12));\n console.log(` Total: ${formatDuration(stats.timing.total)}`);\n console.log(\"─\".repeat(50));\n\n // Ensure worker is terminated\n if (worker) {\n console.log(\"[vite-plugin-react-server] Terminating worker...\");\n await worker.terminate();\n worker = null as any;\n }\n } catch (error) {\n console.error(\"[vite-plugin-react-server] Build failed:\", error);\n // Make sure to terminate worker even on error\n if (worker) await worker.terminate();\n throw error;\n }\n },\n async buildEnd(error) {\n if (error) {\n console.error(\"[vite-plugin-react-server] Build error:\", error);\n }\n if (worker) await worker.terminate();\n },\n handleHotUpdate({ file }) {\n if (file.endsWith(\".css\")) {\n cssModules.add(file);\n }\n },\n async renderChunk(_code: string, chunk: any, _options: any) {\n const moduleIds = this.getModuleIds();\n const fallbackManifestEntries = Object.fromEntries(\n Array.from(moduleIds)\n .map((module) => {\n const moduleInfo = this.getModuleInfo(module);\n if (!moduleInfo) return [module, null];\n const {\n code,\n id,\n isEntry,\n importedIds,\n dynamicallyImportedIds,\n ...rest\n } = moduleInfo;\n return [\n chunk.name ?? id,\n {\n file: chunk.fileName,\n src: module,\n name: chunk.name ?? id,\n isEntry: chunk.isEntry ?? isEntry,\n imports: chunk.imports ?? importedIds,\n dynamicImports: chunk.dynamicImports ?? dynamicallyImportedIds,\n directive: rest.meta[\"directive\"],\n css: chunk.viteMetadata?.importedCss ?? [],\n assets: chunk.viteMetadata?.importedAssets ?? [],\n },\n ];\n })\n .filter(Boolean)\n );\n\n moduleGraph = {\n ...moduleGraph,\n ...fallbackManifestEntries,\n };\n\n if (chunk.fileName.includes(\"html-worker\")) {\n const workerPath = resolve(root, chunk.fileName);\n\n // Don't initialize worker during build phase\n if (finalConfig.command === \"build\") {\n return null;\n }\n\n worker = await createWorker({\n projectRoot: userOptions.projectRoot,\n workerPath,\n });\n }\n return null;\n },\n };\n}\n"],"names":["React","css"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolveProps.d.ts","sourceRoot":"","sources":["../../plugin/resolveProps.ts"],"names":[],"mappings":"AAAA,KAAK,mBAAmB,GAAG;IACzB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,KAAK,kBAAkB,GACnB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,GAAG,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAMrB,wBAAsB,YAAY,CAAC,EACjC,WAAW,EACX,IAAI,EACJ,UAAU,EACV,GAAG,GACJ,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA6GnD"}
1
+ {"version":3,"file":"resolveProps.d.ts","sourceRoot":"","sources":["../../plugin/resolveProps.ts"],"names":[],"mappings":"AAAA,KAAK,mBAAmB,GAAG;IACzB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,KAAK,kBAAkB,GACnB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,GAAG,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAMrB,wBAAsB,YAAY,CAAC,EACjC,WAAW,EACX,IAAI,EACJ,UAAU,EACV,GAAG,GACJ,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA4GnD"}
@@ -34,7 +34,6 @@ async function resolveProps({
34
34
  if (found) {
35
35
  let value = propsModule[found];
36
36
  try {
37
- console.log("[resolveProps] Found:", found, value);
38
37
  if (isFunction(value)) {
39
38
  const props = await value(url);
40
39
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"resolveProps.js","sources":["../../plugin/resolveProps.ts"],"sourcesContent":["type ResolvePropsOptions = {\n propsModule: Record<string, any>;\n path: string;\n exportName: string;\n url: string;\n};\n\ntype ResolvePropsResult =\n | { type: \"success\"; key: string; props: any }\n | { type: \"error\"; error: Error }\n | { type: \"skip\" };\n\nfunction isFunction(value: any) {\n return typeof value === \"function\";\n}\n\nexport async function resolveProps({\n propsModule,\n path,\n exportName,\n url,\n}: ResolvePropsOptions): Promise<ResolvePropsResult> {\n if (!propsModule) {\n return {\n type: \"error\",\n error: new Error(`propsModule is ${typeof propsModule}`),\n };\n }\n\n if (typeof propsModule !== \"object\") {\n return {\n type: \"error\",\n error: new Error(\n `propsModule must be an object, got ${typeof propsModule}`\n ),\n };\n }\n\n const keys = Object.keys(propsModule);\n let found = keys.find((v) => v === exportName || v === url || v === path);\n if(exportName in propsModule) {\n found = exportName;\n }\n if (found) {\n let value = propsModule[found];\n try {\n console.log(\"[resolveProps] Found:\", found, value);\n // If it's a function, call it with the URL\n if (isFunction(value)) {\n const props = await value(url);\n return {\n type: \"success\",\n key: found,\n props,\n };\n }\n\n // If it's a promise, await it\n if (value && typeof value.then === \"function\") {\n const props = await value;\n return {\n type: \"success\",\n key: found,\n props,\n };\n }\n\n // If it's a plain object, use it directly\n if (typeof value === \"object\" && value !== null) {\n return {\n type: \"success\",\n key: found,\n props: value,\n };\n }\n\n \n return {\n type: \"error\",\n error: new Error(\n `Expected props export \"${exportName}\" in \"${path}\" to be a function, promise, or object that resolves to props, instead got typeof ${typeof value}.`\n ),\n };\n } catch (error) {\n console.warn(found, \"error in resolveProps\", propsModule, url, path);\n return {\n type: \"error\",\n error: error as Error,\n };\n }\n }\n const commonjs = keys.find((v) => v === \"exports\");\n\n if (!!commonjs) {\n const exportKeys = (commonjs as unknown as { exports: any })[\"exports\"]\n ? Object.keys((commonjs as unknown as { exports: any })[\"exports\"])\n : [];\n const foundCommonJS = exportKeys.find(\n (v) => v === exportName || v === url || v === path\n );\n return {\n type: \"error\",\n error: new Error(\n `Expected props export \"${exportName}\" in \"${path}\", but instead got \"exports\" with ${\n !!foundCommonJS\n ? foundCommonJS.toString()\n : exportKeys.length\n ? exportKeys.join(\", \")\n : \"no keys\"\n }, this will not work. Make sure to set esModule: true in rollupOptions.output. ${JSON.stringify(propsModule)}`\n ),\n };\n }\n if (Object.keys(propsModule).includes(\"error\")) {\n return {\n type: \"error\",\n error: propsModule[\"error\"],\n };\n }\n\n return {\n type: \"error\",\n error: new Error(\n `Could not find props export \"${exportName}\" in \"${path}\". ${\n keys.length\n ? \"Available exports: \" + keys.join(\", \")\n : \"The object was defined but has no properties. \\\"\" + JSON.stringify(propsModule) + \"\\\"\"\n }`\n ),\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolveProps.js","sources":["../../plugin/resolveProps.ts"],"sourcesContent":["type ResolvePropsOptions = {\n propsModule: Record<string, any>;\n path: string;\n exportName: string;\n url: string;\n};\n\ntype ResolvePropsResult =\n | { type: \"success\"; key: string; props: any }\n | { type: \"error\"; error: Error }\n | { type: \"skip\" };\n\nfunction isFunction(value: any) {\n return typeof value === \"function\";\n}\n\nexport async function resolveProps({\n propsModule,\n path,\n exportName,\n url,\n}: ResolvePropsOptions): Promise<ResolvePropsResult> {\n if (!propsModule) {\n return {\n type: \"error\",\n error: new Error(`propsModule is ${typeof propsModule}`),\n };\n }\n\n if (typeof propsModule !== \"object\") {\n return {\n type: \"error\",\n error: new Error(\n `propsModule must be an object, got ${typeof propsModule}`\n ),\n };\n }\n\n const keys = Object.keys(propsModule);\n let found = keys.find((v) => v === exportName || v === url || v === path);\n if(exportName in propsModule) {\n found = exportName;\n }\n if (found) {\n let value = propsModule[found];\n try {\n // If it's a function, call it with the URL\n if (isFunction(value)) {\n const props = await value(url);\n return {\n type: \"success\",\n key: found,\n props,\n };\n }\n\n // If it's a promise, await it\n if (value && typeof value.then === \"function\") {\n const props = await value;\n return {\n type: \"success\",\n key: found,\n props,\n };\n }\n\n // If it's a plain object, use it directly\n if (typeof value === \"object\" && value !== null) {\n return {\n type: \"success\",\n key: found,\n props: value,\n };\n }\n\n \n return {\n type: \"error\",\n error: new Error(\n `Expected props export \"${exportName}\" in \"${path}\" to be a function, promise, or object that resolves to props, instead got typeof ${typeof value}.`\n ),\n };\n } catch (error) {\n console.warn(found, \"error in resolveProps\", propsModule, url, path);\n return {\n type: \"error\",\n error: error as Error,\n };\n }\n }\n const commonjs = keys.find((v) => v === \"exports\");\n\n if (!!commonjs) {\n const exportKeys = (commonjs as unknown as { exports: any })[\"exports\"]\n ? Object.keys((commonjs as unknown as { exports: any })[\"exports\"])\n : [];\n const foundCommonJS = exportKeys.find(\n (v) => v === exportName || v === url || v === path\n );\n return {\n type: \"error\",\n error: new Error(\n `Expected props export \"${exportName}\" in \"${path}\", but instead got \"exports\" with ${\n !!foundCommonJS\n ? foundCommonJS.toString()\n : exportKeys.length\n ? exportKeys.join(\", \")\n : \"no keys\"\n }, this will not work. Make sure to set esModule: true in rollupOptions.output. ${JSON.stringify(propsModule)}`\n ),\n };\n }\n if (Object.keys(propsModule).includes(\"error\")) {\n return {\n type: \"error\",\n error: propsModule[\"error\"],\n };\n }\n\n return {\n type: \"error\",\n error: new Error(\n `Could not find props export \"${exportName}\" in \"${path}\". ${\n keys.length\n ? \"Available exports: \" + keys.join(\", \")\n : \"The object was defined but has no properties. \\\"\" + JSON.stringify(propsModule) + \"\\\"\"\n }`\n ),\n };\n}\n"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@
6
6
  import { Worker } from 'node:worker_threads';
7
7
  import { getNodePath, getMode } from '../config/getPaths.js';
8
8
  import { getCondition } from '../config/getCondition.js';
9
+ import { join } from 'node:path';
9
10
 
10
11
  async function createWorker(options) {
11
12
  const {
@@ -33,7 +34,7 @@ async function createWorker(options) {
33
34
  const maxRetries = 3;
34
35
  for (let tries = 0; tries < maxRetries; tries++) {
35
36
  try {
36
- const worker = new Worker(workerPath, {
37
+ const worker = new Worker(workerPath.startsWith("/") ? workerPath : join(projectRoot, workerPath), {
37
38
  env,
38
39
  // Increase resource limits for stream handling
39
40
  resourceLimits
@@ -1 +1 @@
1
- {"version":3,"file":"createWorker.js","sources":["../../../plugin/worker/createWorker.ts"],"sourcesContent":["import { Worker, type ResourceLimits } from \"node:worker_threads\";\nimport { getMode, getNodePath } from \"../config/getPaths.js\";\nimport { getCondition } from \"../config/getCondition.js\";\n\ntype CreateWorkerOptions = {\n projectRoot?: string;\n condition?: \"react-server\" | \"react-client\";\n nodePath?: string;\n nodeOptions?: string;\n mode?: \"production\" | \"development\";\n reverseCondition?: boolean;\n maxListeners?: number;\n workerPath: string;\n resourceLimits?: ResourceLimits;\n};\n\nexport async function createWorker(options: CreateWorkerOptions) {\n const {\n projectRoot = process.cwd(),\n nodePath = getNodePath(projectRoot),\n condition = getCondition(),\n reverseCondition = true,\n maxListeners = 100,\n mode = getMode(),\n workerPath,\n resourceLimits = {\n maxOldGenerationSizeMb: 512,\n maxYoungGenerationSizeMb: 128,\n }\n } = options;\n\n // Ensure consistent NODE_ENV between main thread and worker\n const isTestEnv = process.env['VITEST'] || process.env['NODE_ENV'] === 'test';\n const nodeEnv = isTestEnv ? 'development' : mode;\n\n const env = {\n ...process.env,\n NODE_ENV: nodeEnv,\n NODE_PATH: nodePath,\n // Clear any inherited conditions for worker\n NODE_OPTIONS: reverseCondition ? \n (condition === 'react-server' ? '--conditions=react-client' : '--conditions=react-server') \n : process.env['NODE_OPTIONS']\n };\n const maxRetries = 3;\n for (let tries = 0; tries < maxRetries; tries++) {\n try {\n const worker = new Worker(workerPath, {\n env,\n // Increase resource limits for stream handling\n resourceLimits: resourceLimits\n });\n\n worker.setMaxListeners(maxListeners);\n\n // Wait for worker to be ready and verify environment\n const ready = await Promise.race([\n new Promise((_, reject) => {\n setTimeout(() => reject(new Error(`Worker startup timeout: ${workerPath}`)), 5000);\n }),\n new Promise((resolve, reject) => {\n worker.once('message', (msg) => {\n if (msg.type === 'READY') {\n if(msg.env === nodeEnv) {\n resolve(true);\n } else {\n reject(new Error(`Worker environment mismatch: expected ${nodeEnv}, got ${msg.env}`));\n }\n } else if (msg.type === 'ERROR') {\n reject(new Error(msg.error));\n }\n });\n worker.once('error', reject);\n })\n ]);\n \n if (ready) return worker;\n } catch (error) {\n console.warn(`Worker startup attempt ${tries + 1} failed:`, error);\n if (tries === maxRetries - 1) throw error;\n }\n }\n throw new Error('Failed to start worker after retries');\n}\n"],"names":[],"mappings":";;;;;;;;;AAgBA,eAAsB,aAAa,OAA8B,EAAA;AAC/D,EAAM,MAAA;AAAA,IACJ,WAAA,GAAc,QAAQ,GAAI,EAAA;AAAA,IAC1B,QAAA,GAAW,YAAY,WAAW,CAAA;AAAA,IAClC,YAAY,YAAa,EAAA;AAAA,IACzB,gBAAmB,GAAA,IAAA;AAAA,IACnB,YAAe,GAAA,GAAA;AAAA,IACf,OAAO,OAAQ,EAAA;AAAA,IACf,UAAA;AAAA,IACA,cAAiB,GAAA;AAAA,MACf,sBAAwB,EAAA,GAAA;AAAA,MACxB,wBAA0B,EAAA;AAAA;AAC5B,GACE,GAAA,OAAA;AAGJ,EAAM,MAAA,SAAA,GAAY,QAAQ,GAAI,CAAA,QAAQ,KAAK,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAM,KAAA,MAAA;AACvE,EAAM,MAAA,OAAA,GAAU,YAAY,aAAgB,GAAA,IAAA;AAE5C,EAAA,MAAM,GAAM,GAAA;AAAA,IACV,GAAG,OAAQ,CAAA,GAAA;AAAA,IACX,QAAU,EAAA,OAAA;AAAA,IACV,SAAW,EAAA,QAAA;AAAA;AAAA,IAEX,YAAA,EAAc,mBACX,SAAc,KAAA,cAAA,GAAiB,8BAA8B,2BAC5D,GAAA,OAAA,CAAQ,IAAI,cAAc;AAAA,GAChC;AACA,EAAA,MAAM,UAAa,GAAA,CAAA;AACnB,EAAA,KAAA,IAAS,KAAQ,GAAA,CAAA,EAAG,KAAQ,GAAA,UAAA,EAAY,KAAS,EAAA,EAAA;AAC/C,IAAI,IAAA;AACF,MAAM,MAAA,MAAA,GAAS,IAAI,MAAA,CAAO,UAAY,EAAA;AAAA,QACpC,GAAA;AAAA;AAAA,QAEA;AAAA,OACD,CAAA;AAED,MAAA,MAAA,CAAO,gBAAgB,YAAY,CAAA;AAGnC,MAAM,MAAA,KAAA,GAAQ,MAAM,OAAA,CAAQ,IAAK,CAAA;AAAA,QAC/B,IAAI,OAAA,CAAQ,CAAC,CAAA,EAAG,MAAW,KAAA;AACzB,UAAW,UAAA,CAAA,MAAM,OAAO,IAAI,KAAA,CAAM,2BAA2B,UAAU,CAAA,CAAE,CAAC,CAAA,EAAG,GAAI,CAAA;AAAA,SAClF,CAAA;AAAA,QACD,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AAC/B,UAAO,MAAA,CAAA,IAAA,CAAK,SAAW,EAAA,CAAC,GAAQ,KAAA;AAC9B,YAAI,IAAA,GAAA,CAAI,SAAS,OAAS,EAAA;AACxB,cAAG,IAAA,GAAA,CAAI,QAAQ,OAAS,EAAA;AACtB,gBAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,eACP,MAAA;AACL,gBAAO,MAAA,CAAA,IAAI,MAAM,CAAyC,sCAAA,EAAA,OAAO,SAAS,GAAI,CAAA,GAAG,EAAE,CAAC,CAAA;AAAA;AACtF,aACF,MAAA,IAAW,GAAI,CAAA,IAAA,KAAS,OAAS,EAAA;AAC/B,cAAA,MAAA,CAAO,IAAI,KAAA,CAAM,GAAI,CAAA,KAAK,CAAC,CAAA;AAAA;AAC7B,WACD,CAAA;AACD,UAAO,MAAA,CAAA,IAAA,CAAK,SAAS,MAAM,CAAA;AAAA,SAC5B;AAAA,OACF,CAAA;AAED,MAAA,IAAI,OAAc,OAAA,MAAA;AAAA,aACX,KAAO,EAAA;AACd,MAAA,OAAA,CAAQ,IAAK,CAAA,CAAA,uBAAA,EAA0B,KAAQ,GAAA,CAAC,YAAY,KAAK,CAAA;AACjE,MAAI,IAAA,KAAA,KAAU,UAAa,GAAA,CAAA,EAAS,MAAA,KAAA;AAAA;AACtC;AAEF,EAAM,MAAA,IAAI,MAAM,sCAAsC,CAAA;AACxD;;;;"}
1
+ {"version":3,"file":"createWorker.js","sources":["../../../plugin/worker/createWorker.ts"],"sourcesContent":["import { Worker, type ResourceLimits } from \"node:worker_threads\";\nimport { getMode, getNodePath } from \"../config/getPaths.js\";\nimport { getCondition } from \"../config/getCondition.js\";\nimport { join } from \"node:path\";\ntype CreateWorkerOptions = {\n projectRoot?: string;\n condition?: \"react-server\" | \"react-client\";\n nodePath?: string;\n nodeOptions?: string;\n mode?: \"production\" | \"development\";\n reverseCondition?: boolean;\n maxListeners?: number;\n workerPath: string;\n resourceLimits?: ResourceLimits;\n};\n\nexport async function createWorker(options: CreateWorkerOptions) {\n const {\n projectRoot = process.cwd(),\n nodePath = getNodePath(projectRoot),\n condition = getCondition(),\n reverseCondition = true,\n maxListeners = 100,\n mode = getMode(),\n workerPath,\n resourceLimits = {\n maxOldGenerationSizeMb: 512,\n maxYoungGenerationSizeMb: 128,\n }\n } = options;\n\n // Ensure consistent NODE_ENV between main thread and worker\n const isTestEnv = process.env['VITEST'] || process.env['NODE_ENV'] === 'test';\n const nodeEnv = isTestEnv ? 'development' : mode;\n\n const env = {\n ...process.env,\n NODE_ENV: nodeEnv,\n NODE_PATH: nodePath,\n // Clear any inherited conditions for worker\n NODE_OPTIONS: reverseCondition ? \n (condition === 'react-server' ? '--conditions=react-client' : '--conditions=react-server') \n : process.env['NODE_OPTIONS']\n };\n const maxRetries = 3;\n for (let tries = 0; tries < maxRetries; tries++) {\n try {\n const worker = new Worker(workerPath.startsWith('/') ? workerPath : join(projectRoot, workerPath), {\n env,\n // Increase resource limits for stream handling\n resourceLimits: resourceLimits\n });\n\n worker.setMaxListeners(maxListeners);\n\n // Wait for worker to be ready and verify environment\n const ready = await Promise.race([\n new Promise((_, reject) => {\n setTimeout(() => reject(new Error(`Worker startup timeout: ${workerPath}`)), 5000);\n }),\n new Promise((resolve, reject) => {\n worker.once('message', (msg) => {\n if (msg.type === 'READY') {\n if(msg.env === nodeEnv) {\n resolve(true);\n } else {\n reject(new Error(`Worker environment mismatch: expected ${nodeEnv}, got ${msg.env}`));\n }\n } else if (msg.type === 'ERROR') {\n reject(new Error(msg.error));\n }\n });\n worker.once('error', reject);\n })\n ]);\n \n if (ready) return worker;\n } catch (error) {\n console.warn(`Worker startup attempt ${tries + 1} failed:`, error);\n if (tries === maxRetries - 1) throw error;\n }\n }\n throw new Error('Failed to start worker after retries');\n}\n"],"names":[],"mappings":";;;;;;;;;;AAgBA,eAAsB,aAAa,OAA8B,EAAA;AAC/D,EAAM,MAAA;AAAA,IACJ,WAAA,GAAc,QAAQ,GAAI,EAAA;AAAA,IAC1B,QAAA,GAAW,YAAY,WAAW,CAAA;AAAA,IAClC,YAAY,YAAa,EAAA;AAAA,IACzB,gBAAmB,GAAA,IAAA;AAAA,IACnB,YAAe,GAAA,GAAA;AAAA,IACf,OAAO,OAAQ,EAAA;AAAA,IACf,UAAA;AAAA,IACA,cAAiB,GAAA;AAAA,MACf,sBAAwB,EAAA,GAAA;AAAA,MACxB,wBAA0B,EAAA;AAAA;AAC5B,GACE,GAAA,OAAA;AAGJ,EAAM,MAAA,SAAA,GAAY,QAAQ,GAAI,CAAA,QAAQ,KAAK,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAM,KAAA,MAAA;AACvE,EAAM,MAAA,OAAA,GAAU,YAAY,aAAgB,GAAA,IAAA;AAE5C,EAAA,MAAM,GAAM,GAAA;AAAA,IACV,GAAG,OAAQ,CAAA,GAAA;AAAA,IACX,QAAU,EAAA,OAAA;AAAA,IACV,SAAW,EAAA,QAAA;AAAA;AAAA,IAEX,YAAA,EAAc,mBACX,SAAc,KAAA,cAAA,GAAiB,8BAA8B,2BAC5D,GAAA,OAAA,CAAQ,IAAI,cAAc;AAAA,GAChC;AACA,EAAA,MAAM,UAAa,GAAA,CAAA;AACnB,EAAA,KAAA,IAAS,KAAQ,GAAA,CAAA,EAAG,KAAQ,GAAA,UAAA,EAAY,KAAS,EAAA,EAAA;AAC/C,IAAI,IAAA;AACF,MAAM,MAAA,MAAA,GAAS,IAAI,MAAA,CAAO,UAAW,CAAA,UAAA,CAAW,GAAG,CAAA,GAAI,UAAa,GAAA,IAAA,CAAK,WAAa,EAAA,UAAU,CAAG,EAAA;AAAA,QACjG,GAAA;AAAA;AAAA,QAEA;AAAA,OACD,CAAA;AAED,MAAA,MAAA,CAAO,gBAAgB,YAAY,CAAA;AAGnC,MAAM,MAAA,KAAA,GAAQ,MAAM,OAAA,CAAQ,IAAK,CAAA;AAAA,QAC/B,IAAI,OAAA,CAAQ,CAAC,CAAA,EAAG,MAAW,KAAA;AACzB,UAAW,UAAA,CAAA,MAAM,OAAO,IAAI,KAAA,CAAM,2BAA2B,UAAU,CAAA,CAAE,CAAC,CAAA,EAAG,GAAI,CAAA;AAAA,SAClF,CAAA;AAAA,QACD,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AAC/B,UAAO,MAAA,CAAA,IAAA,CAAK,SAAW,EAAA,CAAC,GAAQ,KAAA;AAC9B,YAAI,IAAA,GAAA,CAAI,SAAS,OAAS,EAAA;AACxB,cAAG,IAAA,GAAA,CAAI,QAAQ,OAAS,EAAA;AACtB,gBAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,eACP,MAAA;AACL,gBAAO,MAAA,CAAA,IAAI,MAAM,CAAyC,sCAAA,EAAA,OAAO,SAAS,GAAI,CAAA,GAAG,EAAE,CAAC,CAAA;AAAA;AACtF,aACF,MAAA,IAAW,GAAI,CAAA,IAAA,KAAS,OAAS,EAAA;AAC/B,cAAA,MAAA,CAAO,IAAI,KAAA,CAAM,GAAI,CAAA,KAAK,CAAC,CAAA;AAAA;AAC7B,WACD,CAAA;AACD,UAAO,MAAA,CAAA,IAAA,CAAK,SAAS,MAAM,CAAA;AAAA,SAC5B;AAAA,OACF,CAAA;AAED,MAAA,IAAI,OAAc,OAAA,MAAA;AAAA,aACX,KAAO,EAAA;AACd,MAAA,OAAA,CAAQ,IAAK,CAAA,CAAA,uBAAA,EAA0B,KAAQ,GAAA,CAAC,YAAY,KAAK,CAAA;AACjE,MAAI,IAAA,KAAA,KAAU,UAAa,GAAA,CAAA,EAAS,MAAA,KAAA;AAAA;AACtC;AAEF,EAAM,MAAA,IAAI,MAAM,sCAAsC,CAAA;AACxD;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"renderPages.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/html/renderPages.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAI9E,UAAU,qBAAqB;IAC7B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE;QACV,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,CAAC;CACH;AAED,KAAK,kBAAkB,GAAG;IACxB,aAAa,EAAE,QAAQ,CACrB,IAAI,CACF,mBAAmB,EACnB,YAAY,GAAG,gBAAgB,GAAG,eAAe,GAAG,aAAa,CAClE,CACF,GACC,IAAI,CACF,mBAAmB,EACnB,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,gBAAgB,GAAG,iBAAiB,CAC3E,CAAC;IACJ,UAAU,EAAE,kBAAkB,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB,CAAC,EAAE,qBAAqB,CAAC;IAC7C,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IACrD,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,kBAAkB;;;GA0I5B"}
1
+ {"version":3,"file":"renderPages.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/html/renderPages.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE9E,UAAU,qBAAqB;IAC7B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE;QACV,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,CAAC;CACH;AAED,KAAK,kBAAkB,GAAG;IACxB,aAAa,EAAE,QAAQ,CACrB,IAAI,CACF,mBAAmB,EACnB,YAAY,GAAG,gBAAgB,GAAG,eAAe,GAAG,aAAa,CAClE,CACF,GACC,IAAI,CACF,mBAAmB,EACnB,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,gBAAgB,GAAG,iBAAiB,CAC3E,CAAC;IACJ,UAAU,EAAE,kBAAkB,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB,CAAC,EAAE,qBAAqB,CAAC;IAC7C,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IACrD,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,kBAAkB;;;GAoI5B"}
@@ -3,11 +3,11 @@
3
3
  * Copyright (c) Nico Brinkkemper
4
4
  * MIT License
5
5
  */
6
+ import { mkdirSync } from 'node:fs';
7
+ import { writeFile, mkdir } from 'node:fs/promises';
6
8
  import { resolve, join, dirname } from 'node:path';
7
9
  import { Transform } from 'node:stream';
8
10
  import { createHandler } from '../../react-server/createHandler.js';
9
- import { writeFile, mkdir } from 'node:fs/promises';
10
- import { mkdirSync } from 'node:fs';
11
11
 
12
12
  async function renderPages(routes, options) {
13
13
  console.log("[renderPages] Starting render for routes:", routes);
@@ -17,17 +17,13 @@ async function renderPages(routes, options) {
17
17
  const moduleBaseURL = options.moduleBaseURL;
18
18
  const htmlRoot = join(
19
19
  options.userConfig.root,
20
- options.pluginOptions.build?.client ?? options.userConfig.build.outDir.replace("server", "client")
20
+ options.userConfig.build.outDir
21
21
  );
22
- console.log("[renderPages] HTML root:", htmlRoot);
23
22
  const streamStarted = /* @__PURE__ */ new Set();
24
23
  const completedRoutes = /* @__PURE__ */ new Set();
25
24
  const htmlContent = /* @__PURE__ */ new Map();
26
25
  const writePromises = /* @__PURE__ */ new Map();
27
26
  const allRoutesComplete = new Promise((resolve, reject) => {
28
- const timeout = setTimeout(() => {
29
- reject(new Error(`Render timeout - Started: ${streamStarted.size}, Completed: ${completedRoutes.size}`));
30
- }, 5e3);
31
27
  options.worker.on("message", function messageHandler(msg) {
32
28
  switch (msg.type) {
33
29
  case "SHELL_READY": {
@@ -42,7 +38,6 @@ async function renderPages(routes, options) {
42
38
  completedRoutes.add(msg.id);
43
39
  if (completedRoutes.size === routes.length) {
44
40
  options.worker.removeListener("message", messageHandler);
45
- clearTimeout(timeout);
46
41
  for (const [route, html] of htmlContent) {
47
42
  const outputPath = route === "/" ? join(htmlRoot, "index.html") : join(htmlRoot, route, "index.html");
48
43
  mkdirSync(dirname(outputPath), { recursive: true });
@@ -68,7 +63,6 @@ async function renderPages(routes, options) {
68
63
  try {
69
64
  await mkdir(htmlRoot, { recursive: true });
70
65
  const renderPromises = routes.map(async (route) => {
71
- console.log("[renderPages] Processing route:", route);
72
66
  try {
73
67
  const result = await createHandler(route, options.pluginOptions, {
74
68
  loader: options.loader,
@@ -1 +1 @@
1
- {"version":3,"file":"renderPages.js","sources":["../../../../plugin/worker/html/renderPages.ts"],"sourcesContent":["import { dirname, join, resolve as resolvePath } from \"node:path\";\nimport { Transform } from \"node:stream\";\nimport type { Worker } from \"node:worker_threads\";\nimport { createHandler } from \"../../react-server/createHandler.js\";\nimport type { ResolvedUserConfig, StreamPluginOptions } from \"../../types.js\";\nimport { mkdir, writeFile } from \"node:fs/promises\";\nimport { mkdirSync } from \"node:fs\";\n\ninterface PipeableStreamOptions {\n bootstrapModules?: string[];\n bootstrapScripts?: string[];\n bootstrapScriptContent?: string;\n signal?: AbortSignal;\n identifierPrefix?: string;\n namespaceURI?: string;\n nonce?: string;\n progressiveChunkSize?: number;\n onShellReady?: () => void;\n onAllReady?: () => void;\n onError?: (error: unknown) => void;\n importMap?: {\n imports?: Record<string, string>;\n };\n}\n\ntype RenderPagesOptions = {\n pluginOptions: Required<\n Pick<\n StreamPluginOptions,\n \"moduleBase\" | \"moduleBasePath\" | \"moduleBaseURL\" | \"projectRoot\"\n >\n > &\n Pick<\n StreamPluginOptions,\n \"Page\" | \"props\" | \"build\" | \"Html\" | \"pageExportName\" | \"propsExportName\"\n >;\n userConfig: ResolvedUserConfig;\n manifest: Record<string, { file: string }>;\n worker: Worker;\n pipableStreamOptions?: PipeableStreamOptions;\n loader: (id: string) => Promise<Record<string, any>>;\n onCssFile?: (path: string) => void;\n clientCss?: string[];\n moduleBasePath: string;\n moduleBaseURL: string;\n};\n\nexport async function renderPages(\n routes: string[],\n options: RenderPagesOptions\n) {\n console.log(\"[renderPages] Starting render for routes:\", routes);\n\n const destinationRoot = resolvePath(options.userConfig.root, options.userConfig.build.outDir);\n const failedRoutes = new Map<string, Error>();\n const moduleRootPath = join(destinationRoot, options.moduleBasePath);\n const moduleBaseURL = options.moduleBaseURL;\n const htmlRoot = join(\n options.userConfig.root,\n options.pluginOptions.build?.client ?? options.userConfig.build.outDir.replace('server', 'client')\n );\n console.log(\"[renderPages] HTML root:\", htmlRoot);\n\n const streamStarted = new Set<string>();\n const completedRoutes = new Set<string>();\n const htmlContent = new Map<string, string>();\n const writePromises = new Map<string, Promise<void>>();\n\n // Create a promise that resolves when all routes are complete\n const allRoutesComplete = new Promise<void>((resolve, reject) => {\n const timeout = setTimeout(() => {\n reject(new Error(`Render timeout - Started: ${streamStarted.size}, Completed: ${completedRoutes.size}`));\n }, 5000);\n\n options.worker.on(\"message\", function messageHandler(msg: any) {\n switch (msg.type) {\n case \"SHELL_READY\": {\n streamStarted.add(msg.id);\n break;\n }\n case \"HTML_READY\": {\n htmlContent.set(msg.id, msg.html);\n break;\n }\n case \"ALL_READY\": {\n completedRoutes.add(msg.id);\n \n if (completedRoutes.size === routes.length) {\n options.worker.removeListener(\"message\", messageHandler);\n clearTimeout(timeout);\n \n // Write all HTML files\n for (const [route, html] of htmlContent) {\n const outputPath = route === '/' \n ? join(htmlRoot, 'index.html')\n : join(htmlRoot, route, 'index.html');\n mkdirSync(dirname(outputPath), { recursive: true });\n const writePromise = writeFile(outputPath, html)\n .catch(error => {\n failedRoutes.set(route, error as Error);\n });\n writePromises.set(route, writePromise);\n }\n\n // Wait for all files to be written\n Promise.all(writePromises.values())\n .then(() => resolve())\n .catch(reject);\n }\n break;\n }\n case \"ERROR\": {\n console.error(\"[renderPages] Worker error:\", msg.error);\n if (msg.id) {\n failedRoutes.set(msg.id, new Error(msg.error));\n }\n break;\n }\n }\n });\n });\n\n try {\n await mkdir(htmlRoot, { recursive: true });\n\n const renderPromises = routes.map(async (route) => {\n console.log(\"[renderPages] Processing route:\", route);\n \n try {\n const result = await createHandler(route, options.pluginOptions, {\n loader: options.loader,\n manifest: options.manifest,\n });\n\n if (result.type !== \"success\") {\n console.log(\"[renderPages] Handler failed:\", result);\n return;\n }\n\n const htmlOutputPath = route === '/' \n ? resolvePath(htmlRoot, 'index.html')\n : resolvePath(htmlRoot, route, 'index.html');\n\n const transform = new Transform({\n transform(chunk, _encoding, callback) {\n options.worker.postMessage({\n type: \"RSC_CHUNK\",\n id: route,\n chunk: chunk,\n moduleRootPath: moduleRootPath,\n moduleBaseURL: moduleBaseURL,\n htmlOutputPath,\n outDir: options.userConfig.build.outDir,\n pipableStreamOptions: options.pipableStreamOptions ?? {},\n });\n callback(null, chunk);\n },\n flush(callback) {\n options.worker.postMessage({\n type: \"RSC_END\",\n id: route,\n });\n callback();\n }\n });\n \n result.stream.pipe(transform);\n\n } catch (error) {\n failedRoutes.set(route, error as Error);\n }\n });\n\n // Wait for both the render promises and all routes to complete\n await Promise.all([\n Promise.all(renderPromises),\n allRoutesComplete\n ]);\n\n } finally {\n await options.worker.terminate();\n }\n\n return {\n failedRoutes,\n completedRoutes\n };\n}\n"],"names":["resolvePath"],"mappings":"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"}
1
+ {"version":3,"file":"renderPages.js","sources":["../../../../plugin/worker/html/renderPages.ts"],"sourcesContent":["import { mkdirSync } from \"node:fs\";\nimport { mkdir, writeFile } from \"node:fs/promises\";\nimport { dirname, join, resolve as resolvePath } from \"node:path\";\nimport { Transform } from \"node:stream\";\nimport type { Worker } from \"node:worker_threads\";\nimport { createHandler } from \"../../react-server/createHandler.js\";\nimport type { ResolvedUserConfig, StreamPluginOptions } from \"../../types.js\";\n\ninterface PipeableStreamOptions {\n bootstrapModules?: string[];\n bootstrapScripts?: string[];\n bootstrapScriptContent?: string;\n signal?: AbortSignal;\n identifierPrefix?: string;\n namespaceURI?: string;\n nonce?: string;\n progressiveChunkSize?: number;\n onShellReady?: () => void;\n onAllReady?: () => void;\n onError?: (error: unknown) => void;\n importMap?: {\n imports?: Record<string, string>;\n };\n}\n\ntype RenderPagesOptions = {\n pluginOptions: Required<\n Pick<\n StreamPluginOptions,\n \"moduleBase\" | \"moduleBasePath\" | \"moduleBaseURL\" | \"projectRoot\"\n >\n > &\n Pick<\n StreamPluginOptions,\n \"Page\" | \"props\" | \"build\" | \"Html\" | \"pageExportName\" | \"propsExportName\"\n >;\n userConfig: ResolvedUserConfig;\n manifest: Record<string, { file: string }>;\n worker: Worker;\n pipableStreamOptions?: PipeableStreamOptions;\n loader: (id: string) => Promise<Record<string, any>>;\n onCssFile?: (path: string) => void;\n clientCss?: string[];\n moduleBasePath: string;\n moduleBaseURL: string;\n};\n\nexport async function renderPages(\n routes: string[],\n options: RenderPagesOptions\n) {\n console.log(\"[renderPages] Starting render for routes:\", routes);\n\n const destinationRoot = resolvePath(options.userConfig.root, options.userConfig.build.outDir);\n const failedRoutes = new Map<string, Error>();\n const moduleRootPath = join(destinationRoot, options.moduleBasePath);\n const moduleBaseURL = options.moduleBaseURL;\n const htmlRoot = join(\n options.userConfig.root,\n options.userConfig.build.outDir\n );\n const streamStarted = new Set<string>();\n const completedRoutes = new Set<string>();\n const htmlContent = new Map<string, string>();\n const writePromises = new Map<string, Promise<void>>();\n\n // Create a promise that resolves when all routes are complete\n const allRoutesComplete = new Promise<void>((resolve, reject) => {\n\n\n options.worker.on(\"message\", function messageHandler(msg: any) {\n switch (msg.type) {\n case \"SHELL_READY\": {\n streamStarted.add(msg.id);\n break;\n }\n case \"HTML_READY\": {\n htmlContent.set(msg.id, msg.html);\n break;\n }\n case \"ALL_READY\": {\n completedRoutes.add(msg.id);\n \n if (completedRoutes.size === routes.length) {\n options.worker.removeListener(\"message\", messageHandler);\n \n // Write all HTML files\n for (const [route, html] of htmlContent) {\n const outputPath = route === '/' \n ? join(htmlRoot, 'index.html')\n : join(htmlRoot, route, 'index.html');\n mkdirSync(dirname(outputPath), { recursive: true });\n const writePromise = writeFile(outputPath, html)\n .catch(error => {\n failedRoutes.set(route, error as Error);\n });\n writePromises.set(route, writePromise);\n }\n\n // Wait for all files to be written\n Promise.all(writePromises.values())\n .then(() => resolve())\n .catch(reject);\n }\n break;\n }\n case \"ERROR\": {\n console.error(\"[renderPages] Worker error:\", msg.error);\n if (msg.id) {\n failedRoutes.set(msg.id, new Error(msg.error));\n }\n break;\n }\n }\n });\n });\n\n try {\n await mkdir(htmlRoot, { recursive: true });\n\n const renderPromises = routes.map(async (route) => {\n \n try {\n const result = await createHandler(route, options.pluginOptions, {\n loader: options.loader,\n manifest: options.manifest,\n });\n\n if (result.type !== \"success\") {\n console.log(\"[renderPages] Handler failed:\", result);\n return;\n }\n\n const htmlOutputPath = route === '/' \n ? resolvePath(htmlRoot, 'index.html')\n : resolvePath(htmlRoot, route, 'index.html');\n\n const transform = new Transform({\n transform(chunk, _encoding, callback) {\n options.worker.postMessage({\n type: \"RSC_CHUNK\",\n id: route,\n chunk: chunk,\n moduleRootPath: moduleRootPath,\n moduleBaseURL: moduleBaseURL,\n htmlOutputPath,\n outDir: options.userConfig.build.outDir,\n pipableStreamOptions: options.pipableStreamOptions ?? {},\n });\n callback(null, chunk);\n },\n flush(callback) {\n options.worker.postMessage({\n type: \"RSC_END\",\n id: route,\n });\n callback();\n }\n });\n \n result.stream.pipe(transform);\n\n } catch (error) {\n failedRoutes.set(route, error as Error);\n }\n });\n\n // Wait for both the render promises and all routes to complete\n await Promise.all([\n Promise.all(renderPromises),\n allRoutesComplete\n ]);\n\n } finally {\n await options.worker.terminate();\n }\n\n return {\n failedRoutes,\n completedRoutes\n };\n}\n"],"names":["resolvePath"],"mappings":"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"}