vite-plugin-react-server 0.3.11 → 0.3.14

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 (221) hide show
  1. package/dist/package.json +15 -11
  2. package/dist/plugin/checkFilesExist.d.ts +2 -2
  3. package/dist/plugin/checkFilesExist.d.ts.map +1 -1
  4. package/dist/plugin/checkFilesExist.js +39 -57
  5. package/dist/plugin/checkFilesExist.js.map +1 -1
  6. package/dist/plugin/collect-css-manifest.d.ts +1 -1
  7. package/dist/plugin/collect-css-manifest.d.ts.map +1 -1
  8. package/dist/plugin/collect-css-manifest.js +8 -3
  9. package/dist/plugin/collect-css-manifest.js.map +1 -1
  10. package/dist/plugin/components.js +10 -15
  11. package/dist/plugin/config/createModuleIdGenerator.js +1 -1
  12. package/dist/plugin/config/createModuleIdGenerator.js.map +1 -1
  13. package/dist/plugin/config/defaults.d.ts +5 -14
  14. package/dist/plugin/config/defaults.d.ts.map +1 -1
  15. package/dist/plugin/config/defaults.js +12 -12
  16. package/dist/plugin/config/defaults.js.map +1 -1
  17. package/dist/plugin/config/getPaths.js +1 -1
  18. package/dist/plugin/config/resolveOptions.d.ts.map +1 -1
  19. package/dist/plugin/config/resolveOptions.js +73 -52
  20. package/dist/plugin/config/resolveOptions.js.map +1 -1
  21. package/dist/plugin/config/resolveUserConfig.d.ts.map +1 -1
  22. package/dist/plugin/config/resolveUserConfig.js +53 -65
  23. package/dist/plugin/config/resolveUserConfig.js.map +1 -1
  24. package/dist/plugin/helpers/getBundleManifest.d.ts +6 -1
  25. package/dist/plugin/helpers/getBundleManifest.d.ts.map +1 -1
  26. package/dist/plugin/helpers/getBundleManifest.js +48 -19
  27. package/dist/plugin/helpers/getBundleManifest.js.map +1 -1
  28. package/dist/plugin/helpers/inputNormalizer.d.ts +1 -2
  29. package/dist/plugin/helpers/inputNormalizer.d.ts.map +1 -1
  30. package/dist/plugin/helpers/inputNormalizer.js +52 -46
  31. package/dist/plugin/helpers/inputNormalizer.js.map +1 -1
  32. package/dist/plugin/helpers/tryManifest.d.ts +1 -1
  33. package/dist/plugin/helpers/tryManifest.d.ts.map +1 -1
  34. package/dist/plugin/helpers/tryManifest.js.map +1 -1
  35. package/dist/plugin/loader/createBuildLoader.d.ts +1 -1
  36. package/dist/plugin/loader/createBuildLoader.d.ts.map +1 -1
  37. package/dist/plugin/loader/createBuildLoader.js +29 -26
  38. package/dist/plugin/loader/createBuildLoader.js.map +1 -1
  39. package/dist/plugin/loader/css-loader.d.ts +16 -0
  40. package/dist/plugin/loader/css-loader.d.ts.map +1 -0
  41. package/dist/plugin/loader/css-loader.js +70 -0
  42. package/dist/plugin/loader/css-loader.js.map +1 -0
  43. package/dist/plugin/loader/react-loader.d.ts +17 -0
  44. package/dist/plugin/loader/react-loader.d.ts.map +1 -0
  45. package/dist/plugin/loader/react-loader.js +647 -0
  46. package/dist/plugin/loader/react-loader.js.map +1 -0
  47. package/dist/plugin/loader/rsc/messageHandler.d.ts +2 -0
  48. package/dist/plugin/loader/rsc/messageHandler.d.ts.map +1 -0
  49. package/dist/plugin/loader/rsc/messageHandler.js +1 -0
  50. package/dist/plugin/loader/rsc/rsc-worker.development.d.ts +2 -0
  51. package/dist/plugin/loader/rsc/rsc-worker.development.d.ts.map +1 -0
  52. package/dist/plugin/loader/rsc/rsc-worker.development.js +1 -0
  53. package/dist/plugin/react-client/index.js +2 -2
  54. package/dist/plugin/react-client/index.js.map +1 -1
  55. package/dist/plugin/react-client/plugin.d.ts.map +1 -1
  56. package/dist/plugin/react-client/plugin.js +202 -25
  57. package/dist/plugin/react-client/plugin.js.map +1 -1
  58. package/dist/plugin/react-server/createHandler.d.ts.map +1 -1
  59. package/dist/plugin/react-server/createHandler.js +13 -7
  60. package/dist/plugin/react-server/createHandler.js.map +1 -1
  61. package/dist/plugin/react-server/createRscStream.d.ts +15 -3
  62. package/dist/plugin/react-server/createRscStream.d.ts.map +1 -1
  63. package/dist/plugin/react-server/createRscStream.js +52 -49
  64. package/dist/plugin/react-server/createRscStream.js.map +1 -1
  65. package/dist/plugin/react-server/plugin.d.ts.map +1 -1
  66. package/dist/plugin/react-server/plugin.js +76 -27
  67. package/dist/plugin/react-server/plugin.js.map +1 -1
  68. package/dist/plugin/transformer/plugin.d.ts.map +1 -1
  69. package/dist/plugin/transformer/plugin.js +65 -52
  70. package/dist/plugin/transformer/plugin.js.map +1 -1
  71. package/dist/plugin/types.d.ts +6 -1
  72. package/dist/plugin/types.d.ts.map +1 -1
  73. package/dist/plugin/utils/logger.d.ts +9 -0
  74. package/dist/plugin/utils/logger.d.ts.map +1 -0
  75. package/dist/plugin/utils/logger.js +68 -0
  76. package/dist/plugin/utils/logger.js.map +1 -0
  77. package/dist/plugin/worker/createWorker.d.ts +1 -0
  78. package/dist/plugin/worker/createWorker.d.ts.map +1 -1
  79. package/dist/plugin/worker/createWorker.js +23 -36
  80. package/dist/plugin/worker/createWorker.js.map +1 -1
  81. package/dist/plugin/worker/html/html-worker.production.js +5 -1
  82. package/dist/plugin/worker/html/html-worker.production.js.map +1 -1
  83. package/dist/plugin/worker/html/messageHandler.d.ts.map +1 -1
  84. package/dist/plugin/worker/html/messageHandler.js +10 -19
  85. package/dist/plugin/worker/html/messageHandler.js.map +1 -1
  86. package/dist/plugin/worker/html/renderPages.d.ts +3 -3
  87. package/dist/plugin/worker/html/renderPages.d.ts.map +1 -1
  88. package/dist/plugin/worker/html/renderPages.js +148 -131
  89. package/dist/plugin/worker/html/renderPages.js.map +1 -1
  90. package/dist/plugin/worker/rsc/index.d.ts +1 -3
  91. package/dist/plugin/worker/rsc/index.d.ts.map +1 -1
  92. package/dist/plugin/worker/rsc/index.js +1 -9
  93. package/dist/plugin/worker/rsc/index.js.map +1 -1
  94. package/dist/plugin/worker/rsc/messageHandler.d.ts +3 -0
  95. package/dist/plugin/worker/rsc/messageHandler.d.ts.map +1 -0
  96. package/dist/plugin/worker/rsc/messageHandler.js +107 -0
  97. package/dist/plugin/worker/rsc/messageHandler.js.map +1 -0
  98. package/dist/plugin/worker/rsc/plugin.d.ts.map +1 -1
  99. package/dist/plugin/worker/rsc/plugin.js +74 -80
  100. package/dist/plugin/worker/rsc/rsc-worker.development.d.ts +32 -0
  101. package/dist/plugin/worker/rsc/rsc-worker.development.d.ts.map +1 -0
  102. package/dist/plugin/worker/rsc/rsc-worker.development.js +43 -0
  103. package/dist/plugin/worker/rsc/rsc-worker.development.js.map +1 -0
  104. package/dist/plugin/worker/rsc/rsc-worker.js +4 -106
  105. package/dist/plugin/worker/rsc/rsc-worker.production.d.ts +2 -0
  106. package/dist/plugin/worker/rsc/rsc-worker.production.d.ts.map +1 -0
  107. package/dist/plugin/worker/rsc/rsc-worker.production.js +14 -0
  108. package/dist/plugin/worker/rsc/rsc-worker.production.js.map +1 -0
  109. package/dist/plugin/worker/rsc/state.d.ts +11 -0
  110. package/dist/plugin/worker/rsc/state.d.ts.map +1 -0
  111. package/dist/plugin/worker/rsc/state.js +12 -0
  112. package/dist/plugin/worker/rsc/state.js.map +1 -0
  113. package/dist/plugin/worker/types.d.ts +60 -46
  114. package/dist/plugin/worker/types.d.ts.map +1 -1
  115. package/dist/tsconfig.tsbuildinfo +1 -1
  116. package/package.json +15 -11
  117. package/plugin/checkFilesExist.ts +42 -62
  118. package/plugin/collect-css-manifest.ts +9 -4
  119. package/plugin/config/createModuleIdGenerator.ts +1 -1
  120. package/plugin/config/defaults.ts +13 -15
  121. package/plugin/config/resolveOptions.ts +134 -76
  122. package/plugin/config/resolveUserConfig.ts +75 -76
  123. package/plugin/helpers/getBundleManifest.ts +69 -31
  124. package/plugin/helpers/inputNormalizer.ts +82 -70
  125. package/plugin/helpers/tryManifest.ts +1 -1
  126. package/plugin/loader/createBuildLoader.ts +38 -41
  127. package/plugin/loader/css-loader.ts +96 -0
  128. package/plugin/loader/react-loader.ts +945 -0
  129. package/plugin/loader/rsc/messageHandler.tsx +1 -0
  130. package/plugin/loader/rsc/rsc-worker.development.ts +1 -0
  131. package/plugin/react-client/index.ts +1 -1
  132. package/plugin/react-client/plugin.ts +266 -41
  133. package/plugin/react-server/createHandler.ts +12 -8
  134. package/plugin/react-server/createRscStream.ts +75 -54
  135. package/plugin/react-server/plugin.ts +86 -35
  136. package/plugin/transformer/plugin.ts +67 -76
  137. package/plugin/types/global.d.ts +8 -0
  138. package/plugin/types.ts +3 -1
  139. package/plugin/utils/logger.ts +52 -0
  140. package/plugin/worker/createWorker.ts +43 -44
  141. package/plugin/worker/html/html-worker.production.tsx +7 -2
  142. package/plugin/worker/html/messageHandler.ts +13 -21
  143. package/plugin/worker/html/renderPages.ts +166 -181
  144. package/plugin/worker/rsc/index.ts +4 -13
  145. package/plugin/worker/rsc/messageHandler.tsx +143 -0
  146. package/plugin/worker/rsc/plugin.ts +38 -37
  147. package/plugin/worker/rsc/rsc-worker.development.ts +107 -0
  148. package/plugin/worker/rsc/rsc-worker.production.ts +13 -0
  149. package/plugin/worker/rsc/rsc-worker.tsx +5 -128
  150. package/plugin/worker/rsc/state.ts +37 -0
  151. package/plugin/worker/types.ts +79 -55
  152. package/scripts/check-react-version.mjs +17 -7
  153. package/scripts/react+0.0.0-experimental-b3a95caf-20250113.patch +143 -4170
  154. package/scripts/react-dom+0.0.0-experimental-b3a95caf-20250113.patch +14271 -90079
  155. package/dist/plugin/components.js.map +0 -1
  156. package/dist/plugin/helpers/createClientInputNormalizer.d.ts +0 -8
  157. package/dist/plugin/helpers/createClientInputNormalizer.d.ts.map +0 -1
  158. package/dist/plugin/helpers/createClientInputNormalizer.js +0 -35
  159. package/dist/plugin/helpers/createServerInputNormalizer.d.ts +0 -9
  160. package/dist/plugin/helpers/createServerInputNormalizer.d.ts.map +0 -1
  161. package/dist/plugin/helpers/createServerInputNormalizer.js +0 -37
  162. package/dist/plugin/helpers/createStaticInputNormalizer.d.ts +0 -7
  163. package/dist/plugin/helpers/createStaticInputNormalizer.d.ts.map +0 -1
  164. package/dist/plugin/helpers/createStaticInputNormalizer.js +0 -18
  165. package/dist/plugin/helpers/getModuleManifest.d.ts +0 -17
  166. package/dist/plugin/helpers/getModuleManifest.d.ts.map +0 -1
  167. package/dist/plugin/helpers/getModuleManifest.js +0 -23
  168. package/dist/plugin/helpers/inputNormalizerWorker.d.ts +0 -12
  169. package/dist/plugin/helpers/inputNormalizerWorker.d.ts.map +0 -1
  170. package/dist/plugin/helpers/inputNormalizerWorker.js +0 -33
  171. package/dist/plugin/helpers/normalizedRelativePath.d.ts +0 -11
  172. package/dist/plugin/helpers/normalizedRelativePath.d.ts.map +0 -1
  173. package/dist/plugin/helpers/normalizedRelativePath.js +0 -36
  174. package/dist/plugin/helpers/resolveFilePath.d.ts +0 -13
  175. package/dist/plugin/helpers/resolveFilePath.d.ts.map +0 -1
  176. package/dist/plugin/helpers/resolveFilePath.js +0 -74
  177. package/dist/plugin/helpers/resolveWorkerModule.d.ts +0 -6
  178. package/dist/plugin/helpers/resolveWorkerModule.d.ts.map +0 -1
  179. package/dist/plugin/helpers/resolveWorkerModule.js +0 -24
  180. package/dist/plugin/helpers/validateModuleBase.d.ts +0 -3
  181. package/dist/plugin/helpers/validateModuleBase.d.ts.map +0 -1
  182. package/dist/plugin/helpers/validateModuleBase.js +0 -16
  183. package/dist/plugin/helpers/validateResolvedConfig.d.ts +0 -3
  184. package/dist/plugin/helpers/validateResolvedConfig.d.ts.map +0 -1
  185. package/dist/plugin/helpers/validateResolvedConfig.js +0 -17
  186. package/dist/plugin/transformer/transformer-client-components.d.ts +0 -30
  187. package/dist/plugin/transformer/transformer-client-components.d.ts.map +0 -1
  188. package/dist/plugin/transformer/transformer-client-components.js +0 -122
  189. package/dist/plugin/transformer/transformer-client-components.js.map +0 -1
  190. package/dist/plugin/transformer/transformer-server-actions.d.ts +0 -29
  191. package/dist/plugin/transformer/transformer-server-actions.d.ts.map +0 -1
  192. package/dist/plugin/transformer/transformer-server-actions.js +0 -90
  193. package/dist/plugin/worker/rsc/createRscStream.d.ts +0 -5
  194. package/dist/plugin/worker/rsc/createRscStream.d.ts.map +0 -1
  195. package/dist/plugin/worker/rsc/createRscStream.js +0 -39
  196. package/dist/plugin/worker/rsc/createRscStream.js.map +0 -1
  197. package/dist/plugin/worker/rsc/development.d.ts +0 -5
  198. package/dist/plugin/worker/rsc/development.d.ts.map +0 -1
  199. package/dist/plugin/worker/rsc/development.js +0 -13
  200. package/dist/plugin/worker/rsc/development.js.map +0 -1
  201. package/dist/plugin/worker/rsc/plugin.js.map +0 -1
  202. package/dist/plugin/worker/rsc/production.d.ts +0 -5
  203. package/dist/plugin/worker/rsc/production.d.ts.map +0 -1
  204. package/dist/plugin/worker/rsc/production.js +0 -13
  205. package/dist/plugin/worker/rsc/production.js.map +0 -1
  206. package/plugin/helpers/createClientInputNormalizer.ts +0 -48
  207. package/plugin/helpers/createServerInputNormalizer.ts +0 -52
  208. package/plugin/helpers/createStaticInputNormalizer.ts +0 -26
  209. package/plugin/helpers/getModuleManifest.ts +0 -36
  210. package/plugin/helpers/inputNormalizerWorker.ts +0 -52
  211. package/plugin/helpers/normalizedRelativePath.ts +0 -59
  212. package/plugin/helpers/resolveFilePath.ts +0 -108
  213. package/plugin/helpers/resolveWorkerModule.ts +0 -41
  214. package/plugin/helpers/validateModuleBase.ts +0 -30
  215. package/plugin/helpers/validateResolvedConfig.ts +0 -21
  216. package/plugin/transformer/transformer-client-components.ts +0 -168
  217. package/plugin/transformer/transformer-server-actions.ts +0 -125
  218. package/plugin/worker/rsc/createRscStream.ts +0 -42
  219. package/plugin/worker/rsc/development.ts +0 -6
  220. package/plugin/worker/rsc/production.ts +0 -6
  221. package/scripts/react-server-dom-esm+0.0.1.patch +0 -24775
@@ -1 +1 @@
1
- {"version":3,"file":"createHandler.js","sources":["../../../plugin/react-server/createHandler.ts"],"sourcesContent":["import type { PipeableStream } from \"react-dom/server\";\nimport { createLogger } from \"vite\";\nimport {\n collectManifestCss,\n collectModuleGraphCss,\n} from \"../collect-css-manifest.js\";\nimport { DEFAULT_CONFIG } from \"../config/defaults.js\";\nimport { resolvePage } from \"../resolvePage.js\";\nimport { resolveProps } from \"../resolveProps.js\";\nimport type { CreateHandlerOptions, ResolvedUserOptions } from \"../types.js\";\nimport { createRscStream } from \"./createRscStream.js\";\n\ntype CreateHandlerResult = \n | { type: \"success\"; controller: AbortController; stream: PipeableStream; assets: any; clientPath: string }\n | { type: \"error\"; error: Error }\n | { type: \"skip\" };\n\ninterface HandlerAssets {\n css: Set<string>;\n clientPath: string;\n}\n\nexport async function createHandler<T>(\n url: string,\n pluginOptions: ResolvedUserOptions,\n streamOptions: CreateHandlerOptions<T>\n): Promise<CreateHandlerResult> {\n const root = pluginOptions.projectRoot ?? process.cwd();\n\n const Html = pluginOptions.Html ?? DEFAULT_CONFIG.HTML;\n const pageExportName =\n pluginOptions.pageExportName ?? DEFAULT_CONFIG.PAGE_EXPORT;\n const propsExportName =\n pluginOptions.propsExportName ?? DEFAULT_CONFIG.PROPS_EXPORT;\n const controller = new AbortController();\n\n const cssFiles = streamOptions.cssFiles;\n const propsPath =\n typeof pluginOptions.props === \"function\"\n ? pluginOptions.props(url)\n : pluginOptions.props;\n const pagePath =\n typeof pluginOptions.Page === \"function\"\n ? pluginOptions.Page(url)\n : pluginOptions.Page;\n\n const cssModules = new Set<string>();\n\n if (!(streamOptions.serverManifest || streamOptions.moduleGraph))\n throw new Error(\"Missing server manifest or moduleGraph, pass it to options.\");\n\n const getCss = streamOptions.serverManifest\n ? (id: string) =>\n collectManifestCss(\n streamOptions.serverManifest!,\n root,\n id,\n streamOptions.onCssFile\n )\n : (id: string) => collectModuleGraphCss(streamOptions.moduleGraph!, id);\n\n const loadWithCss = async (id: string) => {\n try {\n const mod = await streamOptions.loader(id);\n const pageCss = await Promise.resolve(getCss(id));\n Array.from(pageCss.keys()).forEach((css) => cssModules.add(css));\n return mod as Record<string, any>;\n } catch (e: any) {\n if (e.message?.includes(\"module runner has been closed\")) {\n return { type: \"skip\" } as Record<string, any>;\n } else {\n return { type: \"error\", error: e } as Record<string, any>;\n }\n }\n };\n\n const PropsModule = await resolveProps({\n propsModule: await loadWithCss(propsPath ?? pagePath),\n path: String(propsPath ?? pagePath),\n exportName: propsExportName,\n url,\n });\n if (PropsModule.type === \"error\")\n return { type: PropsModule.type, error: PropsModule?.error };\n if (PropsModule.type === \"skip\") return { type: PropsModule.type };\n const props = PropsModule[propsExportName as keyof typeof PropsModule] as any;\n if (props?.type === \"error\") return { type: props.type, error: props.error };\n if (props?.type === \"skip\") return { type: props.type };\n\n const PageModule = await resolvePage({\n pageModule: await loadWithCss(pagePath),\n path: pagePath,\n exportName: pageExportName,\n url,\n });\n if (PageModule.type === \"error\")\n return { type: PageModule.type, error: PageModule.error };\n if (PageModule.type === \"skip\") return { type: PageModule.type };\n const Page = PageModule[pageExportName as keyof typeof PageModule] as any;\n if (Page?.type === \"error\") return { type: Page.type, error: Page.error };\n if (Page?.type === \"skip\") return { type: Page.type };\n if (!(typeof Page === \"function\")) {\n return {\n type: \"error\",\n error: new Error(\"Invalid Page component: \" + pagePath, {\n cause: Page,\n }),\n };\n }\n if (!(typeof props === \"object\")) {\n return {\n type: \"error\",\n error: new Error(\"Invalid props: \" + propsPath, {\n cause: props,\n }),\n } \n }\n\n // Add any additional CSS files\n if (streamOptions.cssFiles) {\n streamOptions.cssFiles.forEach((css) => cssModules.add(css));\n }\n\n const stream = createRscStream({\n Html: Html,\n Page: Page,\n props: props,\n moduleBasePath: '',\n logger: streamOptions.logger ?? createLogger(),\n cssFiles: Array.from(cssModules),\n route: url,\n url,\n pipableStreamOptions: streamOptions.pipableStreamOptions,\n htmlProps: {\n pageProps: props,\n route: url,\n url: url,\n },\n });\n\n if (!stream) {\n console.log(\"[createHandler] No stream created for route:\", url);\n return { type: \"skip\" as const };\n }\n\n const assets: HandlerAssets = {\n css: new Set(cssFiles ?? []),\n clientPath: pagePath ?? ''\n };\n\n return {\n type: \"success\",\n controller,\n stream,\n assets,\n clientPath: assets.clientPath,\n };\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAsBsB,eAAA,aAAA,CACpB,GACA,EAAA,aAAA,EACA,aAC8B,EAAA;AAC9B,EAAA,MAAM,IAAO,GAAA,aAAA,CAAc,WAAe,IAAA,OAAA,CAAQ,GAAI,EAAA;AAEtD,EAAM,MAAA,IAAA,GAAO,aAAc,CAAA,IAAA,IAAQ,cAAe,CAAA,IAAA;AAClD,EAAM,MAAA,cAAA,GACJ,aAAc,CAAA,cAAA,IAAkB,cAAe,CAAA,WAAA;AACjD,EAAM,MAAA,eAAA,GACJ,aAAc,CAAA,eAAA,IAAmB,cAAe,CAAA,YAAA;AAClD,EAAM,MAAA,UAAA,GAAa,IAAI,eAAgB,EAAA;AAEvC,EAAA,MAAM,WAAW,aAAc,CAAA,QAAA;AAC/B,EAAM,MAAA,SAAA,GACJ,OAAO,aAAc,CAAA,KAAA,KAAU,aAC3B,aAAc,CAAA,KAAA,CAAM,GAAG,CAAA,GACvB,aAAc,CAAA,KAAA;AACpB,EAAM,MAAA,QAAA,GACJ,OAAO,aAAc,CAAA,IAAA,KAAS,aAC1B,aAAc,CAAA,IAAA,CAAK,GAAG,CAAA,GACtB,aAAc,CAAA,IAAA;AAEpB,EAAM,MAAA,UAAA,uBAAiB,GAAY,EAAA;AAEnC,EAAI,IAAA,EAAE,aAAc,CAAA,cAAA,IAAkB,aAAc,CAAA,WAAA,CAAA;AAClD,IAAM,MAAA,IAAI,MAAM,6DAA6D,CAAA;AAE/E,EAAA,MAAM,MAAS,GAAA,aAAA,CAAc,cACzB,GAAA,CAAC,EACC,KAAA,kBAAA;AAAA,IACE,aAAc,CAAA,cAAA;AAAA,IACd,IAAA;AAAA,IACA,EAAA;AAAA,IACA,aAAc,CAAA;AAAA,MAElB,CAAC,EAAA,KAAe,qBAAsB,CAAA,aAAA,CAAc,aAAc,EAAE,CAAA;AAExE,EAAM,MAAA,WAAA,GAAc,OAAO,EAAe,KAAA;AACxC,IAAI,IAAA;AACF,MAAA,MAAM,GAAM,GAAA,MAAM,aAAc,CAAA,MAAA,CAAO,EAAE,CAAA;AACzC,MAAA,MAAM,UAAU,MAAM,OAAA,CAAQ,OAAQ,CAAA,MAAA,CAAO,EAAE,CAAC,CAAA;AAChD,MAAM,KAAA,CAAA,IAAA,CAAK,OAAQ,CAAA,IAAA,EAAM,CAAA,CAAE,OAAQ,CAAA,CAAC,GAAQ,KAAA,UAAA,CAAW,GAAI,CAAA,GAAG,CAAC,CAAA;AAC/D,MAAO,OAAA,GAAA;AAAA,aACA,CAAQ,EAAA;AACf,MAAA,IAAI,CAAE,CAAA,OAAA,EAAS,QAAS,CAAA,+BAA+B,CAAG,EAAA;AACxD,QAAO,OAAA,EAAE,MAAM,MAAO,EAAA;AAAA,OACjB,MAAA;AACL,QAAA,OAAO,EAAE,IAAA,EAAM,OAAS,EAAA,KAAA,EAAO,CAAE,EAAA;AAAA;AACnC;AACF,GACF;AAEA,EAAM,MAAA,WAAA,GAAc,MAAM,YAAa,CAAA;AAAA,IACrC,WAAa,EAAA,MAAM,WAAY,CAAA,SAAA,IAAa,QAAQ,CAAA;AAAA,IACpD,IAAA,EAAM,MAAO,CAAA,SAAA,IAAa,QAAQ,CAAA;AAAA,IAClC,UAAY,EAAA,eAAA;AAAA,IACZ;AAAA,GACD,CAAA;AACD,EAAA,IAAI,YAAY,IAAS,KAAA,OAAA;AACvB,IAAA,OAAO,EAAE,IAAM,EAAA,WAAA,CAAY,IAAM,EAAA,KAAA,EAAO,aAAa,KAAM,EAAA;AAC7D,EAAA,IAAI,YAAY,IAAS,KAAA,MAAA,SAAe,EAAE,IAAA,EAAM,YAAY,IAAK,EAAA;AACjE,EAAM,MAAA,KAAA,GAAQ,YAAY,eAA2C,CAAA;AACrE,EAAI,IAAA,KAAA,EAAO,IAAS,KAAA,OAAA,EAAgB,OAAA,EAAE,MAAM,KAAM,CAAA,IAAA,EAAM,KAAO,EAAA,KAAA,CAAM,KAAM,EAAA;AAC3E,EAAA,IAAI,OAAO,IAAS,KAAA,MAAA,SAAe,EAAE,IAAA,EAAM,MAAM,IAAK,EAAA;AAEtD,EAAM,MAAA,UAAA,GAAa,MAAM,WAAY,CAAA;AAAA,IACnC,UAAA,EAAY,MAAM,WAAA,CAAY,QAAQ,CAAA;AAAA,IACtC,IAAM,EAAA,QAAA;AAAA,IACN,UAAY,EAAA,cAAA;AAAA,IACZ;AAAA,GACD,CAAA;AACD,EAAA,IAAI,WAAW,IAAS,KAAA,OAAA;AACtB,IAAA,OAAO,EAAE,IAAM,EAAA,UAAA,CAAW,IAAM,EAAA,KAAA,EAAO,WAAW,KAAM,EAAA;AAC1D,EAAA,IAAI,WAAW,IAAS,KAAA,MAAA,SAAe,EAAE,IAAA,EAAM,WAAW,IAAK,EAAA;AAC/D,EAAM,MAAA,IAAA,GAAO,WAAW,cAAyC,CAAA;AACjE,EAAI,IAAA,IAAA,EAAM,IAAS,KAAA,OAAA,EAAgB,OAAA,EAAE,MAAM,IAAK,CAAA,IAAA,EAAM,KAAO,EAAA,IAAA,CAAK,KAAM,EAAA;AACxE,EAAA,IAAI,MAAM,IAAS,KAAA,MAAA,SAAe,EAAE,IAAA,EAAM,KAAK,IAAK,EAAA;AACpD,EAAI,IAAA,EAAE,OAAO,IAAA,KAAS,UAAa,CAAA,EAAA;AACjC,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,OAAA;AAAA,MACN,KAAO,EAAA,IAAI,KAAM,CAAA,0BAAA,GAA6B,QAAU,EAAA;AAAA,QACtD,KAAO,EAAA;AAAA,OACR;AAAA,KACH;AAAA;AAEF,EAAI,IAAA,EAAE,OAAO,KAAA,KAAU,QAAW,CAAA,EAAA;AAChC,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,OAAA;AAAA,MACN,KAAO,EAAA,IAAI,KAAM,CAAA,iBAAA,GAAoB,SAAW,EAAA;AAAA,QAC9C,KAAO,EAAA;AAAA,OACR;AAAA,KACH;AAAA;AAIF,EAAA,IAAI,cAAc,QAAU,EAAA;AAC1B,IAAA,aAAA,CAAc,SAAS,OAAQ,CAAA,CAAC,QAAQ,UAAW,CAAA,GAAA,CAAI,GAAG,CAAC,CAAA;AAAA;AAG7D,EAAA,MAAM,SAAS,eAAgB,CAAA;AAAA,IAC7B,IAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,cAAgB,EAAA,EAAA;AAAA,IAChB,MAAA,EAAQ,aAAc,CAAA,MAAA,IAAU,YAAa,EAAA;AAAA,IAC7C,QAAA,EAAU,KAAM,CAAA,IAAA,CAAK,UAAU,CAAA;AAAA,IAG/B,sBAAsB,aAAc,CAAA,oBAAA;AAAA,IACpC,SAAW,EAAA;AAAA,MACT,SAAW,EAAA,KAAA;AAAA,MACX,KAAO,EAAA,GAAA;AAAA,MACP;AAAA;AACF,GACD,CAAA;AAED,EAAA,IAAI,CAAC,MAAQ,EAAA;AACX,IAAQ,OAAA,CAAA,GAAA,CAAI,gDAAgD,GAAG,CAAA;AAC/D,IAAO,OAAA,EAAE,MAAM,MAAgB,EAAA;AAAA;AAGjC,EAAA,MAAM,MAAwB,GAAA;AAAA,IAC5B,GAAK,EAAA,IAAI,GAAI,CAAA,QAAA,IAAY,EAAE,CAAA;AAAA,IAC3B,YAAY,QAAY,IAAA;AAAA,GAC1B;AAEA,EAAO,OAAA;AAAA,IACL,IAAM,EAAA,SAAA;AAAA,IACN,UAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,YAAY,MAAO,CAAA;AAAA,GACrB;AACF;;;;"}
1
+ {"version":3,"file":"createHandler.js","sources":["../../../plugin/react-server/createHandler.ts"],"sourcesContent":["import type { PipeableStream } from \"react-dom/server\";\nimport { createLogger } from \"vite\";\nimport {\n collectManifestCss,\n collectModuleGraphCss,\n} from \"../collect-css-manifest.js\";\nimport { DEFAULT_CONFIG } from \"../config/defaults.js\";\nimport { resolvePage } from \"../resolvePage.js\";\nimport { resolveProps } from \"../resolveProps.js\";\nimport type { CreateHandlerOptions, ResolvedUserOptions } from \"../types.js\";\nimport { createRscStream } from \"./createRscStream.js\";\n\ntype CreateHandlerResult = \n | { type: \"success\"; controller: AbortController; stream: PipeableStream; assets: any; clientPath: string }\n | { type: \"error\"; error: Error }\n | { type: \"skip\" };\n\ninterface HandlerAssets {\n css: Set<string>;\n clientPath: string;\n}\n\nexport async function createHandler<T>(\n url: string,\n pluginOptions: ResolvedUserOptions,\n streamOptions: CreateHandlerOptions<T>\n): Promise<CreateHandlerResult> {\n const root = pluginOptions.projectRoot ?? process.cwd();\n\n const Html = pluginOptions.Html ?? DEFAULT_CONFIG.HTML;\n const pageExportName =\n pluginOptions.pageExportName ?? DEFAULT_CONFIG.PAGE_EXPORT_NAME;\n const propsExportName =\n pluginOptions.propsExportName ?? DEFAULT_CONFIG.PROPS_EXPORT_NAME;\n const controller = new AbortController();\n\n const cssFiles = streamOptions.cssFiles;\n const propsPath =\n typeof pluginOptions.props === \"function\"\n ? pluginOptions.props(url)\n : pluginOptions.props;\n const pagePath =\n typeof pluginOptions.Page === \"function\"\n ? pluginOptions.Page(url)\n : pluginOptions.Page;\n\n const cssModules = new Set<string>();\n\n if (!(streamOptions.serverManifest || streamOptions.moduleGraph))\n throw new Error(\"Missing server manifest or moduleGraph, pass it to options.\");\n\n const getCss = streamOptions.serverManifest\n ? (id: string) =>\n collectManifestCss(\n streamOptions.serverManifest!,\n root,\n id,\n streamOptions.onCssFile\n )\n : (id: string) => collectModuleGraphCss(streamOptions.moduleGraph!, id);\n\n const loadWithCss = async (id: string, parentUrl: string) => {\n try {\n const mod = await streamOptions.loader(id);\n const pageCss = await Promise.resolve(getCss(id));\n Array.from(pageCss.keys()).forEach((css) => {\n cssModules.add(css);\n // Notify about new CSS file if callback exists\n if (streamOptions.onCssFile) {\n streamOptions.onCssFile(css, parentUrl);\n }\n });\n return mod as Record<string, any>;\n } catch (e: any) {\n if (e.message?.includes(\"module runner has been closed\")) {\n return { type: \"skip\" } as Record<string, any>;\n } else {\n return { type: \"error\", error: e } as Record<string, any>;\n }\n }\n };\n\n const PropsModule = await resolveProps({\n propsModule: await loadWithCss(propsPath ?? pagePath, url),\n path: String(propsPath ?? pagePath),\n exportName: propsExportName,\n url,\n });\n if (PropsModule.type === \"error\")\n return { type: PropsModule.type, error: PropsModule?.error };\n if (PropsModule.type === \"skip\") return { type: PropsModule.type };\n const props = PropsModule[propsExportName as keyof typeof PropsModule] as any;\n if (props?.type === \"error\") return { type: props.type, error: props.error };\n if (props?.type === \"skip\") return { type: props.type };\n\n const PageModule = await resolvePage({\n pageModule: await loadWithCss(pagePath, url),\n path: pagePath,\n exportName: pageExportName,\n url,\n });\n if (PageModule.type === \"error\")\n return { type: PageModule.type, error: PageModule.error };\n if (PageModule.type === \"skip\") return { type: PageModule.type };\n const Page = PageModule[pageExportName as keyof typeof PageModule] as any;\n if (Page?.type === \"error\") return { type: Page.type, error: Page.error };\n if (Page?.type === \"skip\") return { type: Page.type };\n if (!(typeof Page === \"function\")) {\n return {\n type: \"error\",\n error: new Error(\"Invalid Page component: \" + pagePath, {\n cause: Page,\n }),\n };\n }\n if (!(typeof props === \"object\")) {\n return {\n type: \"error\",\n error: new Error(\"Invalid props: \" + propsPath, {\n cause: props,\n }),\n } \n }\n\n // Add any additional CSS files\n if (streamOptions.cssFiles) {\n streamOptions.cssFiles.forEach((css) => cssModules.add(css));\n }\n const stream = createRscStream({\n Html: Html,\n Page: Page,\n props: props,\n moduleBasePath: '',\n logger: streamOptions.logger ?? createLogger(),\n cssFiles: Array.from(cssModules),\n route: url,\n url,\n pipableStreamOptions: streamOptions.pipableStreamOptions,\n htmlProps: {\n pageProps: props,\n route: url,\n url: url,\n },\n });\n\n if (!stream) {\n return { type: \"skip\" as const };\n }\n\n const assets: HandlerAssets = {\n css: new Set(cssFiles ?? []),\n clientPath: pagePath ?? ''\n };\n\n return {\n type: \"success\",\n controller,\n stream,\n assets,\n clientPath: assets.clientPath,\n };\n}\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,16 @@
1
- import type { PipeableStream } from "react-dom/server";
2
- import type { RscStreamOptions } from "../types.js";
3
- export declare function createRscStream(streamOptions: RscStreamOptions): PipeableStream;
1
+ import * as React from "react";
2
+ import type { PipeableStreamOptions } from "../worker/types.js";
3
+ import type { Logger } from "vite";
4
+ export declare function createRscStream({ Html, Page, props, moduleBasePath, logger, cssFiles, route, url, pipableStreamOptions, htmlProps, }: {
5
+ Html: React.ComponentType<any>;
6
+ Page: React.ComponentType<any>;
7
+ props: any;
8
+ moduleBasePath: string;
9
+ logger: Logger;
10
+ cssFiles?: string[];
11
+ route: string;
12
+ url: string;
13
+ pipableStreamOptions?: PipeableStreamOptions;
14
+ htmlProps?: any;
15
+ }): any;
4
16
  //# sourceMappingURL=createRscStream.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createRscStream.d.ts","sourceRoot":"","sources":["../../../plugin/react-server/createRscStream.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,wBAAgB,eAAe,CAC7B,aAAa,EAAE,gBAAgB,GAC9B,cAAc,CAmDhB"}
1
+ {"version":3,"file":"createRscStream.d.ts","sourceRoot":"","sources":["../../../plugin/react-server/createRscStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AA0BnC,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,cAAc,EACd,MAAM,EACN,QAAa,EACb,KAAK,EACL,GAAG,EACH,oBAAoB,EACpB,SAAS,GACV,EAAE;IACD,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/B,KAAK,EAAE,GAAG,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,oBAAoB,CAAC,EAAE,qBAAqB,CAAC;IAC7C,SAAS,CAAC,EAAE,GAAG,CAAC;CACjB,OA6BA"}
@@ -5,58 +5,61 @@
5
5
  */
6
6
  import * as React from 'react';
7
7
  import { renderToPipeableStream } from 'react-server-dom-esm/server.node';
8
- import { CssCollector } from '../components.js';
9
8
 
10
- function createRscStream(streamOptions) {
11
- const {
12
- Html,
13
- Page,
14
- props,
15
- logger,
16
- cssFiles,
17
- moduleBasePath,
18
- pipableStreamOptions,
19
- htmlProps
20
- } = streamOptions;
21
- const css = Array.isArray(cssFiles) ? cssFiles.map(
22
- (css2, index) => React.createElement(CssCollector, {
23
- key: `css-${index}`,
24
- url: css2.startsWith("/") ? css2 : `/${css2}`,
25
- moduleBasePath
26
- })
27
- ) : [];
9
+ function CssCollector({
10
+ children,
11
+ cssFiles
12
+ }) {
13
+ return React.createElement(
14
+ React.Fragment,
15
+ null,
16
+ ...cssFiles.map((css) => {
17
+ const url = css.startsWith("/") || css.startsWith("http") || css.startsWith("./") ? css : "/" + css;
18
+ return React.createElement("link", {
19
+ key: css,
20
+ rel: "stylesheet",
21
+ href: url
22
+ });
23
+ }),
24
+ children
25
+ );
26
+ }
27
+ function createRscStream({
28
+ Html,
29
+ Page,
30
+ props,
31
+ moduleBasePath,
32
+ logger,
33
+ cssFiles = [],
34
+ route,
35
+ url,
36
+ pipableStreamOptions,
37
+ htmlProps
38
+ }) {
28
39
  const htmlIsFragment = Html == React.Fragment;
29
- console.log("[vite:plugin-react-server] Creating RSC stream with options:", {
30
- moduleBasePath,
31
- importMap: pipableStreamOptions?.importMap,
32
- moduleRootPath: moduleBasePath
33
- // Make sure this matches client component paths
34
- });
35
- return renderToPipeableStream(
36
- React.createElement(
37
- Html,
38
- {
39
- key: "html",
40
- ...htmlIsFragment ? {} : htmlProps
41
- },
42
- React.createElement(Page, { key: "page", ...props }),
43
- ...css
44
- ),
45
- moduleBasePath,
46
- {
47
- onError: logger?.error ?? console.error,
48
- onPostpone: logger?.info ?? console.info,
49
- environmentName: "Server",
50
- importMap: {
51
- imports: {
52
- ...pipableStreamOptions?.importMap?.imports,
53
- // Make sure paths are absolute and match module resolution
54
- "/": moduleBasePath
55
- }
56
- },
57
- ...pipableStreamOptions
58
- }
40
+ const withCss = React.createElement(
41
+ CssCollector,
42
+ { cssFiles },
43
+ React.createElement(Page, props)
59
44
  );
45
+ const content = htmlIsFragment ? withCss : React.createElement(Html, htmlProps, withCss);
46
+ try {
47
+ return renderToPipeableStream(
48
+ content,
49
+ moduleBasePath,
50
+ {
51
+ onError: (error) => {
52
+ logger.error(`Stream error at ${route}.`, { error });
53
+ },
54
+ onPostpone: logger.info ?? console.info,
55
+ environmentName: "Server",
56
+ ...pipableStreamOptions
57
+ }
58
+ );
59
+ } catch (error) {
60
+ logger.error(`Failed to create stream for ${route}.`, { error });
61
+ return null;
62
+ }
60
63
  }
61
64
 
62
65
  export { createRscStream };
@@ -1 +1 @@
1
- {"version":3,"file":"createRscStream.js","sources":["../../../plugin/react-server/createRscStream.ts"],"sourcesContent":["import * as React from \"react\";\nimport type { PipeableStream } from \"react-dom/server\";\n// @ts-ignore\nimport { renderToPipeableStream } from \"react-server-dom-esm/server.node\";\nimport { CssCollector } from \"../components.js\";\nimport type { RscStreamOptions } from \"../types.js\";\n\nexport function createRscStream(\n streamOptions: RscStreamOptions\n): PipeableStream {\n const {\n Html,\n Page,\n props,\n logger,\n cssFiles,\n moduleBasePath,\n pipableStreamOptions,\n htmlProps,\n } = streamOptions;\n const css = Array.isArray(cssFiles)\n ? cssFiles.map((css, index) =>\n React.createElement(CssCollector, {\n key: `css-${index}`,\n url: css.startsWith(\"/\") ? css : `/${css}`,\n moduleBasePath,\n })\n )\n : [];\n const htmlIsFragment = Html == React.Fragment;\n console.log(\"[vite:plugin-react-server] Creating RSC stream with options:\", {\n moduleBasePath,\n importMap: pipableStreamOptions?.importMap,\n moduleRootPath: moduleBasePath // Make sure this matches client component paths\n });\n return renderToPipeableStream(\n React.createElement(\n Html,\n {\n key: \"html\",\n ...(htmlIsFragment ? {} : htmlProps)\n },\n React.createElement(Page, { key: \"page\", ...props }),\n ...css\n ),\n moduleBasePath,\n {\n onError: logger?.error ?? console.error,\n onPostpone: logger?.info ?? console.info,\n environmentName: \"Server\",\n importMap: {\n imports: {\n ...pipableStreamOptions?.importMap?.imports,\n // Make sure paths are absolute and match module resolution\n '/': moduleBasePath\n }\n },\n ...pipableStreamOptions\n }\n );\n}\n"],"names":["css"],"mappings":";;;;;;;;;AAOO,SAAS,gBACd,aACgB,EAAA;AAChB,EAAM,MAAA;AAAA,IACJ,IAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA;AAAA,GACE,GAAA,aAAA;AACJ,EAAA,MAAM,GAAM,GAAA,KAAA,CAAM,OAAQ,CAAA,QAAQ,IAC9B,QAAS,CAAA,GAAA;AAAA,IAAI,CAACA,IAAAA,EAAK,KACjB,KAAA,KAAA,CAAM,cAAc,YAAc,EAAA;AAAA,MAChC,GAAA,EAAK,OAAO,KAAK,CAAA,CAAA;AAAA,MACjB,KAAKA,IAAI,CAAA,UAAA,CAAW,GAAG,CAAIA,GAAAA,IAAAA,GAAM,IAAIA,IAAG,CAAA,CAAA;AAAA,MACxC;AAAA,KACD;AAAA,MAEH,EAAC;AACL,EAAM,MAAA,cAAA,GAAiB,QAAQ,KAAM,CAAA,QAAA;AACrC,EAAA,OAAA,CAAQ,IAAI,8DAAgE,EAAA;AAAA,IAC1E,cAAA;AAAA,IACA,WAAW,oBAAsB,EAAA,SAAA;AAAA,IACjC,cAAgB,EAAA;AAAA;AAAA,GACjB,CAAA;AACD,EAAO,OAAA,sBAAA;AAAA,IACL,KAAM,CAAA,aAAA;AAAA,MACJ,IAAA;AAAA,MACA;AAAA,QACE,GAAK,EAAA,MAAA;AAAA,QACL,GAAI,cAAiB,GAAA,EAAK,GAAA;AAAA,OAC5B;AAAA,MACA,KAAA,CAAM,cAAc,IAAM,EAAA,EAAE,KAAK,MAAQ,EAAA,GAAG,OAAO,CAAA;AAAA,MACnD,GAAG;AAAA,KACL;AAAA,IACA,cAAA;AAAA,IACA;AAAA,MACE,OAAA,EAAS,MAAQ,EAAA,KAAA,IAAS,OAAQ,CAAA,KAAA;AAAA,MAClC,UAAA,EAAY,MAAQ,EAAA,IAAA,IAAQ,OAAQ,CAAA,IAAA;AAAA,MACpC,eAAiB,EAAA,QAAA;AAAA,MACjB,SAAW,EAAA;AAAA,QACT,OAAS,EAAA;AAAA,UACP,GAAG,sBAAsB,SAAW,EAAA,OAAA;AAAA;AAAA,UAEpC,GAAK,EAAA;AAAA;AACP,OACF;AAAA,MACA,GAAG;AAAA;AACL,GACF;AACF;;;;"}
1
+ {"version":3,"file":"createRscStream.js","sources":["../../../plugin/react-server/createRscStream.ts"],"sourcesContent":["import * as React from \"react\";\n// @ts-ignore\nimport { renderToPipeableStream } from \"react-server-dom-esm/server.node\";\nimport type { PipeableStreamOptions } from \"../worker/types.js\";\nimport type { Logger } from \"vite\";\n\n\n// CSS collector component\nfunction CssCollector({\n children,\n cssFiles,\n}: {\n children?: React.ReactNode;\n cssFiles: string[];\n}) {\n return React.createElement(\n React.Fragment,\n null,\n ...cssFiles.map((css) => {\n const url = css.startsWith('/') || css.startsWith('http') || css.startsWith('./') ? css : '/'+css\n return React.createElement('link', {\n key: css,\n rel: 'stylesheet',\n href: url\n })\n }),\n children\n );\n}\n\nexport function createRscStream({\n Html,\n Page,\n props,\n moduleBasePath,\n logger,\n cssFiles = [],\n route,\n url,\n pipableStreamOptions,\n htmlProps,\n}: {\n Html: React.ComponentType<any>;\n Page: React.ComponentType<any>;\n props: any;\n moduleBasePath: string;\n logger: Logger;\n cssFiles?: string[];\n route: string;\n url: string;\n pipableStreamOptions?: PipeableStreamOptions;\n htmlProps?: any;\n}) {\n \n const htmlIsFragment = Html == React.Fragment;\n const withCss = React.createElement(\n CssCollector,\n { cssFiles },\n React.createElement(Page, props)\n )\n // Otherwise wrap with Html component\n const content = htmlIsFragment \n ? withCss\n : React.createElement(Html, htmlProps, withCss);\n try {\n return renderToPipeableStream(\n content,\n moduleBasePath,\n {\n onError: (error: Error) => {\n logger.error(`Stream error at ${route}.`, {error});\n },\n onPostpone: logger.info ?? console.info, \n environmentName: \"Server\",\n ...pipableStreamOptions,\n }\n );\n } catch (error) {\n logger.error(`Failed to create stream for ${route}.`, {error: error as Error});\n return null;\n }\n}\n"],"names":[],"mappings":";;;;;;;;AAQA,SAAS,YAAa,CAAA;AAAA,EACpB,QAAA;AAAA,EACA;AACF,CAGG,EAAA;AACD,EAAA,OAAO,KAAM,CAAA,aAAA;AAAA,IACX,KAAM,CAAA,QAAA;AAAA,IACN,IAAA;AAAA,IACA,GAAG,QAAA,CAAS,GAAI,CAAA,CAAC,GAAQ,KAAA;AACvB,MAAA,MAAM,GAAM,GAAA,GAAA,CAAI,UAAW,CAAA,GAAG,KAAK,GAAI,CAAA,UAAA,CAAW,MAAM,CAAA,IAAK,GAAI,CAAA,UAAA,CAAW,IAAI,CAAA,GAAI,MAAM,GAAI,GAAA,GAAA;AAC9F,MAAO,OAAA,KAAA,CAAM,cAAc,MAAQ,EAAA;AAAA,QACjC,GAAK,EAAA,GAAA;AAAA,QACL,GAAK,EAAA,YAAA;AAAA,QACL,IAAM,EAAA;AAAA,OACP,CAAA;AAAA,KACF,CAAA;AAAA,IACD;AAAA,GACF;AACF;AAEO,SAAS,eAAgB,CAAA;AAAA,EAC9B,IAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,cAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAW,EAAC;AAAA,EACZ,KAAA;AAAA,EACA,GAAA;AAAA,EACA,oBAAA;AAAA,EACA;AACF,CAWG,EAAA;AAED,EAAM,MAAA,cAAA,GAAiB,QAAQ,KAAM,CAAA,QAAA;AACrC,EAAA,MAAM,UAAU,KAAM,CAAA,aAAA;AAAA,IACpB,YAAA;AAAA,IACA,EAAE,QAAS,EAAA;AAAA,IACX,KAAA,CAAM,aAAc,CAAA,IAAA,EAAM,KAAK;AAAA,GACjC;AAEA,EAAA,MAAM,UAAU,cACZ,GAAA,OAAA,GACA,MAAM,aAAc,CAAA,IAAA,EAAM,WAAW,OAAO,CAAA;AAChD,EAAI,IAAA;AACF,IAAO,OAAA,sBAAA;AAAA,MACL,OAAA;AAAA,MACA,cAAA;AAAA,MACA;AAAA,QACE,OAAA,EAAS,CAAC,KAAiB,KAAA;AACzB,UAAA,MAAA,CAAO,MAAM,CAAmB,gBAAA,EAAA,KAAK,CAAK,CAAA,CAAA,EAAA,EAAC,OAAM,CAAA;AAAA,SACnD;AAAA,QACA,UAAA,EAAY,MAAO,CAAA,IAAA,IAAQ,OAAQ,CAAA,IAAA;AAAA,QACnC,eAAiB,EAAA,QAAA;AAAA,QACjB,GAAG;AAAA;AACL,KACF;AAAA,WACO,KAAO,EAAA;AACd,IAAA,MAAA,CAAO,MAAM,CAA+B,4BAAA,EAAA,KAAK,CAAK,CAAA,CAAA,EAAA,EAAC,OAAsB,CAAA;AAC7E,IAAO,OAAA,IAAA;AAAA;AAEX;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/react-server/plugin.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAGV,qBAAqB,EAGtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAcvD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,GAC3B,OAAO,MAAM,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,qBAAqB,CAAC;IAC5B,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC,CAAC,CA4aD"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/react-server/plugin.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAGV,qBAAqB,EAGtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAgBvD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,GAC3B,OAAO,MAAM,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,qBAAqB,CAAC;IAC5B,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC,CAAC,CA6dD"}
@@ -3,7 +3,7 @@
3
3
  * Copyright (c) Nico Brinkkemper
4
4
  * MIT License
5
5
  */
6
- import { resolve, join, dirname } from 'node:path';
6
+ import { join, dirname } from 'node:path';
7
7
  import { performance } from 'node:perf_hooks';
8
8
  import 'node:worker_threads';
9
9
  import React__default from 'react';
@@ -19,19 +19,19 @@ import { createBuildLoader } from '../loader/createBuildLoader.js';
19
19
  import { createWorker } from '../worker/createWorker.js';
20
20
  import { renderPages } from '../worker/html/renderPages.js';
21
21
  import { createHandler } from './createHandler.js';
22
- import { mkdir, writeFile } from 'node:fs/promises';
22
+ import { mkdir, writeFile, readFile } from 'node:fs/promises';
23
23
  import { getBundleManifest } from '../helpers/getBundleManifest.js';
24
24
 
25
25
  let resolvedConfig = null;
26
26
  let serverManifestPath = null;
27
27
  let outpuptBundle;
28
28
  let loader = null;
29
+ let worker;
29
30
  function reactServerPlugin(options) {
30
31
  const timing = {
31
32
  start: performance.now()
32
33
  };
33
34
  let files;
34
- let worker;
35
35
  let cssModules = /* @__PURE__ */ new Set();
36
36
  let buildCssFiles = /* @__PURE__ */ new Set();
37
37
  let root = process.cwd();
@@ -133,7 +133,7 @@ function reactServerPlugin(options) {
133
133
  projectRoot: root
134
134
  },
135
135
  {
136
- cssFiles: Array.from(cssModules),
136
+ cssFiles: [],
137
137
  logger: createLogger(),
138
138
  loader,
139
139
  moduleGraph: server.moduleGraph
@@ -211,14 +211,31 @@ function reactServerPlugin(options) {
211
211
  });
212
212
  if (typeof loader !== "function") {
213
213
  if (!Object.keys(serverManifest).length) {
214
- serverManifest = getBundleManifest(this, outpuptBundle, void 0);
214
+ console.warn(
215
+ "[vite-plugin-react-server] No server manifest found, the plugin will try to use the plugin context - it may differ from vite's manifest."
216
+ );
217
+ serverManifest = getBundleManifest({
218
+ pluginContext: this,
219
+ bundle: outpuptBundle,
220
+ moduleBase: userOptions.moduleBase,
221
+ preserveModulesRoot: userOptions.build.preserveModulesRoot
222
+ });
215
223
  if (!Object.keys(serverManifest).length) {
224
+ console.warn(
225
+ "[vite-plugin-react-server] That didn't work, retrying to read manifest."
226
+ );
216
227
  const resolvedServerManifest = tryManifest({
217
228
  root,
218
- outDir: join(userOptions.build.outDir, userOptions.build.server),
229
+ outDir: join(
230
+ userOptions.build.outDir,
231
+ userOptions.build.server
232
+ ),
219
233
  ssrManifest: false
220
234
  });
221
235
  if (resolvedServerManifest.type === "error") {
236
+ console.error(
237
+ "[vite-plugin-react-server] Failed to read manifest, aborting build."
238
+ );
222
239
  return;
223
240
  }
224
241
  serverManifest = resolvedServerManifest.manifest;
@@ -237,26 +254,65 @@ function reactServerPlugin(options) {
237
254
  if (resolvedPages.type === "error") {
238
255
  throw resolvedPages.error;
239
256
  }
257
+ const onCssFile = async (path, parentUrl) => {
258
+ if (buildCssFiles && path.endsWith(".css")) {
259
+ buildCssFiles.add(path);
260
+ if (parentUrl.endsWith(userOptions.build.client)) {
261
+ const serverPath = join(
262
+ userOptions.build.outDir,
263
+ userOptions.build.server,
264
+ path
265
+ );
266
+ await writeFile(
267
+ serverPath,
268
+ await readFile(
269
+ join(
270
+ root,
271
+ userOptions.build.outDir,
272
+ userOptions.build.client,
273
+ path
274
+ )
275
+ )
276
+ );
277
+ } else {
278
+ const clientPath = join(
279
+ userOptions.build.outDir,
280
+ userOptions.build.client,
281
+ path
282
+ );
283
+ await mkdir(dirname(clientPath), { recursive: true });
284
+ await writeFile(
285
+ clientPath,
286
+ await readFile(
287
+ join(
288
+ root,
289
+ userOptions.build.outDir,
290
+ userOptions.build.server,
291
+ path
292
+ )
293
+ )
294
+ );
295
+ }
296
+ }
297
+ };
240
298
  const { failedRoutes, completedRoutes } = await renderPages(
241
299
  this,
242
300
  resolvedPages.pages,
301
+ files,
243
302
  {
244
- pipableStreamOptions: {},
303
+ pipableStreamOptions: {
304
+ bootstrapModules: clientManifest["index.html"]?.file ? [clientManifest["index.html"].file] : []
305
+ },
245
306
  moduleBasePath: "",
246
307
  moduleBaseURL: "",
247
- clientCss: Object.values(clientManifest).flatMap((entry) => entry.css).filter((css) => typeof css === "string").map((css) => "/" + css) ?? [],
308
+ clientCss: clientManifest["index.html"]?.css ? clientManifest["index.html"].css : [],
248
309
  userConfig,
249
310
  pluginOptions: userOptions,
250
311
  worker,
251
312
  clientManifest,
252
313
  serverManifest,
253
314
  loader,
254
- onCssFile: (path) => {
255
- console.log("[vite-plugin-react-server] onCssFile", path);
256
- if (buildCssFiles && path.endsWith(".css")) {
257
- buildCssFiles.add(path);
258
- }
259
- }
315
+ onCssFile
260
316
  }
261
317
  );
262
318
  if (failedRoutes.size) {
@@ -306,7 +362,6 @@ function reactServerPlugin(options) {
306
362
  console.log(` Total: ${formatDuration(stats.timing.total)}`);
307
363
  console.log("─".repeat(50));
308
364
  if (worker) {
309
- console.log("[vite-plugin-react-server] Terminating worker...");
310
365
  await worker.terminate();
311
366
  worker = null;
312
367
  }
@@ -333,8 +388,12 @@ function reactServerPlugin(options) {
333
388
  throw new Error("Resolved config not found");
334
389
  }
335
390
  outpuptBundle = bundle;
336
- serverManifest = getBundleManifest(this, bundle);
337
- console.log("[vite:plugin-react-server] Server manifest", serverManifest);
391
+ serverManifest = getBundleManifest({
392
+ pluginContext: this,
393
+ bundle,
394
+ moduleBase: userOptions.moduleBase,
395
+ preserveModulesRoot: userOptions.build.preserveModulesRoot
396
+ });
338
397
  if (serverManifestPath) {
339
398
  await mkdir(dirname(serverManifestPath), { recursive: true });
340
399
  await writeFile(
@@ -342,16 +401,6 @@ function reactServerPlugin(options) {
342
401
  JSON.stringify(serverManifest, null, 2)
343
402
  );
344
403
  }
345
- },
346
- async renderChunk(code, chunk, options2) {
347
- if (chunk.fileName.includes("html-worker")) {
348
- const workerPath = resolve(root, chunk.fileName);
349
- worker = await createWorker({
350
- projectRoot: userOptions.projectRoot,
351
- workerPath
352
- });
353
- }
354
- return null;
355
404
  }
356
405
  };
357
406
  }
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sources":["../../../plugin/react-server/plugin.ts"],"sourcesContent":["import { join, resolve, dirname } 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 type Manifest,\n build,\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 { 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\";\nimport { mkdir, writeFile } from \"node:fs/promises\";\nimport { getBundleManifest } from \"../helpers/getBundleManifest.js\";\nimport type { ServerResponse } from \"node:http\";\n\nlet resolvedConfig: ResolvedConfig | null = null;\nlet serverManifestPath: string | null = null;\nlet clientManifestPath: string | null = null;\nlet outpuptBundle: any;\nlet outputOptions: any;\nlet loader: ((id: string) => Promise<Record<string, any>>) | null = null;\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 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 let serverManifest: Manifest = {};\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 if (\n userOptions.projectRoot != root &&\n typeof userOptions.projectRoot === \"string\" &&\n userOptions.projectRoot !== process.cwd() &&\n userOptions.projectRoot !== \"\"\n ) {\n root = userOptions.projectRoot;\n console.log(\n \"[vite:plugin-react-server] Root dir changed in plugin\",\n userOptions.projectRoot,\n root\n );\n }\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 resolvedConfig = _resolvedConfig;\n\n serverManifestPath = join(\n userOptions.build.outDir,\n userOptions.build.server,\n \".vite/manifest.json\"\n );\n clientManifestPath = join(\n resolvedConfig.build.outDir,\n userOptions.build.client,\n \".vite/manifest.json\"\n );\n timing.configResolved = performance.now();\n\n // Verify transformer runs first, preserver runs last\n const plugins = resolvedConfig.plugins;\n const transformerIndex = plugins.findIndex(\n (p) => p.name === \"vite:react-transform\"\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 configurePreviewServer(server) {\n \n },\n async configureServer(server: ViteDevServer) {\n if (typeof loader !== \"function\") {\n loader = server.ssrLoadModule;\n }\n if (\n server.config.root !== root &&\n typeof server.config.root === \"string\" &&\n server.config.root !== process.cwd() &&\n server.config.root !== \"\"\n ) {\n console.log(\n \"[vite:plugin-react-server] Root dir changed in configureServer hook\",\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 if (typeof loader !== \"function\") {\n loader = server.ssrLoadModule;\n }\n try {\n const handler = await createHandler(\n req.url ?? \"\",\n {\n ...userOptions,\n // we'll leave the Html generation for later\n Html: React.Fragment,\n projectRoot: root,\n },\n {\n cssFiles: Array.from(cssModules),\n logger: createLogger(),\n loader,\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 activeStreams.delete(res);\n });\n }\n });\n },\n async config(config, configEnv): Promise<UserConfig> {\n if (\n typeof config.root === \"string\" &&\n config.root !== root &&\n config.root !== process.cwd() &&\n config.root !== \"\"\n ) {\n console.log(\n \"[vite:plugin-react-server] Root dir changed in config hook\",\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 isClient: false,\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 || resolvedConfig?.command !== \"build\") return;\n try {\n timing.renderStart = performance.now();\n\n // Get the client manifest\n const clientManifestResult = tryManifest({\n root: root,\n outDir: join(userOptions.build.outDir, userOptions.build.client),\n ssrManifest: false,\n });\n\n if (clientManifestResult.type === \"error\") {\n throw clientManifestResult.error;\n }\n\n const clientManifest = clientManifestResult.manifest;\n\n // Initialize worker\n const htmlWorkerPath = join(\n getPluginRoot(),\n DEFAULT_CONFIG.HTML_WORKER_PATH\n );\n\n worker = await createWorker({\n projectRoot: root,\n workerPath: htmlWorkerPath,\n condition: \"react-server\",\n reverseCondition: true,\n mode: (resolvedConfig?.mode ?? \"production\") as\n | \"production\"\n | \"development\",\n nodeOptions: \"--conditions=react-client\",\n });\n\n // Use both manifests directly\n if (typeof loader !== \"function\") {\n if (!Object.keys(serverManifest).length) {\n serverManifest = getBundleManifest(this, outpuptBundle, undefined);\n if (!Object.keys(serverManifest).length) {\n const resolvedServerManifest = tryManifest({\n root: root,\n outDir: join(userOptions.build.outDir, userOptions.build.server),\n ssrManifest: false,\n });\n if (resolvedServerManifest.type === \"error\") {\n // dont build the static files without a server manifest\n return;\n }\n serverManifest = resolvedServerManifest.manifest;\n }\n }\n loader = createBuildLoader({\n root: root,\n userConfig,\n userOptions,\n pluginContext: this,\n serverManifest,\n clientManifest,\n });\n }\n const resolvedPages = await resolvePages(userOptions.build.pages);\n if (resolvedPages.type === \"error\") {\n throw resolvedPages.error;\n }\n const { failedRoutes, completedRoutes } = await renderPages(\n this,\n resolvedPages.pages,\n {\n pipableStreamOptions: {},\n moduleBasePath: \"\",\n moduleBaseURL: \"\",\n clientCss:\n Object.values(clientManifest)\n .flatMap((entry) => entry.css)\n .filter((css) => typeof css === \"string\")\n .map((css) => \"/\" + css) ?? [],\n userConfig,\n pluginOptions: userOptions,\n worker: worker,\n clientManifest: clientManifest,\n serverManifest: serverManifest,\n loader,\n onCssFile: (path: string) => {\n console.log(\"[vite-plugin-react-server] onCssFile\", path);\n if (buildCssFiles && path.endsWith(\".css\")) {\n buildCssFiles.add(path);\n }\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 // Update stats to include CSS and client components\n const stats: BuildStats = {\n htmlFiles: userOptions.build.pages.length,\n clientComponents: Object.keys(clientManifest).filter(\n userOptions.autoDiscover.clientComponents\n ).length,\n cssFiles: Object.keys(clientManifest)\n .flatMap(userOptions.autoDiscover.cssPattern)\n .filter(Boolean).length,\n totalRoutes: userOptions.build.pages.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 worker = null as any;\n throw error;\n }\n },\n async buildEnd(error) {\n if (error) {\n console.error(\"[vite-plugin-react-server] Build error:\", error);\n return;\n }\n },\n handleHotUpdate({ file }) {\n if (file.endsWith(\".css\")) {\n cssModules.add(file);\n }\n },\n async generateBundle(options, bundle) {\n if (!resolvedConfig) {\n throw new Error(\"Resolved config not found\");\n }\n outpuptBundle = bundle;\n outputOptions = options;\n // Create manifest entries for each chunk\n serverManifest = getBundleManifest(this, bundle, undefined);\n console.log(\"[vite:plugin-react-server] Server manifest\", serverManifest);\n if (serverManifestPath) {\n await mkdir(dirname(serverManifestPath), { recursive: true });\n await writeFile(\n serverManifestPath,\n JSON.stringify(serverManifest, null, 2)\n );\n }\n },\n async renderChunk(code: string, chunk, options) {\n if (chunk.fileName.includes(\"html-worker\")) {\n const workerPath = resolve(root, chunk.fileName);\n worker = await createWorker({\n projectRoot: userOptions.projectRoot,\n workerPath,\n });\n }\n return null;\n },\n };\n}\n"],"names":["React","resolvedConfig","options"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sources":["../../../plugin/react-server/plugin.ts"],"sourcesContent":["import { join, resolve, dirname } 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 type Manifest,\n build,\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 { 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\";\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { getBundleManifest } from \"../helpers/getBundleManifest.js\";\nimport type { ServerResponse } from \"node:http\";\nimport { collectManifestCss } from \"../collect-css-manifest.js\";\n\nlet resolvedConfig: ResolvedConfig | null = null;\nlet serverManifestPath: string | null = null;\nlet clientManifestPath: string | null = null;\nlet outpuptBundle: any;\nlet outputOptions: any;\nlet loader: ((id: string) => Promise<Record<string, any>>) | null = null;\nlet worker: Worker;\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 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 let serverManifest: Manifest = {};\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 if (\n userOptions.projectRoot != root &&\n typeof userOptions.projectRoot === \"string\" &&\n userOptions.projectRoot !== process.cwd() &&\n userOptions.projectRoot !== \"\"\n ) {\n root = userOptions.projectRoot;\n console.log(\n \"[vite:plugin-react-server] Root dir changed in plugin\",\n userOptions.projectRoot,\n root\n );\n }\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 resolvedConfig = _resolvedConfig;\n\n serverManifestPath = join(\n userOptions.build.outDir,\n userOptions.build.server,\n \".vite/manifest.json\"\n );\n clientManifestPath = join(\n resolvedConfig.build.outDir,\n userOptions.build.client,\n \".vite/manifest.json\"\n );\n timing.configResolved = performance.now();\n\n // Verify transformer runs first, preserver runs last\n const plugins = resolvedConfig.plugins;\n const transformerIndex = plugins.findIndex(\n (p) => p.name === \"vite:react-transform\"\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 configurePreviewServer(server) {},\n async configureServer(server: ViteDevServer) {\n if (typeof loader !== \"function\") {\n loader = server.ssrLoadModule;\n }\n if (\n server.config.root !== root &&\n typeof server.config.root === \"string\" &&\n server.config.root !== process.cwd() &&\n server.config.root !== \"\"\n ) {\n console.log(\n \"[vite:plugin-react-server] Root dir changed in configureServer hook\",\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 if (typeof loader !== \"function\") {\n loader = server.ssrLoadModule;\n }\n try {\n const handler = await createHandler(\n req.url ?? \"\",\n {\n ...userOptions,\n // we'll leave the Html generation for later\n Html: React.Fragment,\n projectRoot: root,\n },\n {\n cssFiles: [],\n logger: createLogger(),\n loader,\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 activeStreams.delete(res);\n });\n }\n });\n },\n async config(config, configEnv): Promise<UserConfig> {\n if (\n typeof config.root === \"string\" &&\n config.root !== root &&\n config.root !== process.cwd() &&\n config.root !== \"\"\n ) {\n console.log(\n \"[vite:plugin-react-server] Root dir changed in config hook\",\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 isClient: false,\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 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 || resolvedConfig?.command !== \"build\") return;\n try {\n timing.renderStart = performance.now();\n\n // Get the client manifest\n const clientManifestResult = tryManifest({\n root: root,\n outDir: join(userOptions.build.outDir, userOptions.build.client),\n ssrManifest: false,\n });\n\n if (clientManifestResult.type === \"error\") {\n throw clientManifestResult.error;\n }\n\n const clientManifest = clientManifestResult.manifest;\n\n // Initialize worker\n const htmlWorkerPath = join(\n getPluginRoot(),\n DEFAULT_CONFIG.HTML_WORKER_PATH\n );\n\n worker = await createWorker({\n projectRoot: root,\n workerPath: htmlWorkerPath,\n condition: \"react-server\",\n reverseCondition: true,\n mode: (resolvedConfig?.mode ?? \"production\") as\n | \"production\"\n | \"development\",\n nodeOptions: \"--conditions=react-client\",\n });\n\n // Create the loader\n if (typeof loader !== \"function\") {\n if (!Object.keys(serverManifest).length) {\n console.warn(\n \"[vite-plugin-react-server] No server manifest found, the plugin will try to use the plugin context - it may differ from vite's manifest.\"\n );\n serverManifest = getBundleManifest({\n pluginContext: this,\n bundle: outpuptBundle,\n moduleBase: userOptions.moduleBase,\n preserveModulesRoot: userOptions.build.preserveModulesRoot,\n });\n if (!Object.keys(serverManifest).length) {\n console.warn(\n \"[vite-plugin-react-server] That didn't work, retrying to read manifest.\"\n );\n const resolvedServerManifest = tryManifest({\n root: root,\n outDir: join(\n userOptions.build.outDir,\n userOptions.build.server\n ),\n ssrManifest: false,\n });\n if (resolvedServerManifest.type === \"error\") {\n // dont build the static files without a server manifest\n console.error(\n \"[vite-plugin-react-server] Failed to read manifest, aborting build.\"\n );\n return;\n }\n serverManifest = resolvedServerManifest.manifest;\n }\n }\n loader = createBuildLoader({\n root: root,\n userConfig,\n userOptions,\n pluginContext: this,\n serverManifest,\n clientManifest,\n });\n }\n const resolvedPages = await resolvePages(userOptions.build.pages);\n if (resolvedPages.type === \"error\") {\n throw resolvedPages.error;\n }\n\n const onCssFile = async (path: string, parentUrl: string) => {\n if (buildCssFiles && path.endsWith(\".css\")) {\n buildCssFiles.add(path);\n if (parentUrl.endsWith(userOptions.build.client)) {\n // copy the file to the client build dir\n const serverPath = join(\n userOptions.build.outDir,\n userOptions.build.server,\n path\n );\n await writeFile(\n serverPath,\n await readFile(\n join(\n root,\n userOptions.build.outDir,\n userOptions.build.client,\n path\n )\n )\n );\n } else {\n // copy the file to the client build dir, assume it's in server build dir\n const clientPath = join(\n userOptions.build.outDir,\n userOptions.build.client,\n path\n );\n await mkdir(dirname(clientPath), { recursive: true });\n await writeFile(\n clientPath,\n await readFile(\n join(\n root,\n userOptions.build.outDir,\n userOptions.build.server,\n path\n )\n )\n );\n }\n }\n };\n\n const { failedRoutes, completedRoutes } = await renderPages(\n this,\n resolvedPages.pages,\n files,\n {\n pipableStreamOptions: {\n bootstrapModules: clientManifest[\"index.html\"]?.file\n ? [clientManifest[\"index.html\"].file]\n : [],\n },\n moduleBasePath: \"\",\n moduleBaseURL: \"\",\n clientCss: clientManifest[\"index.html\"]?.css\n ? clientManifest[\"index.html\"].css\n : [],\n userConfig,\n pluginOptions: userOptions,\n worker: worker,\n clientManifest: clientManifest,\n serverManifest: serverManifest,\n loader,\n onCssFile: onCssFile,\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 // Update stats to include CSS and client components\n const stats: BuildStats = {\n htmlFiles: userOptions.build.pages.length,\n clientComponents: Object.keys(clientManifest).filter(\n userOptions.autoDiscover.clientComponents\n ).length,\n cssFiles: Object.keys(clientManifest)\n .flatMap(userOptions.autoDiscover.cssPattern)\n .filter(Boolean).length,\n totalRoutes: userOptions.build.pages.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 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 worker = null as any;\n throw error;\n }\n },\n async buildEnd(error) {\n if (error) {\n console.error(\"[vite-plugin-react-server] Build error:\", error);\n return;\n }\n },\n handleHotUpdate({ file }) {\n if (file.endsWith(\".css\")) {\n cssModules.add(file);\n }\n },\n async generateBundle(options, bundle) {\n if (!resolvedConfig) {\n throw new Error(\"Resolved config not found\");\n }\n outpuptBundle = bundle;\n outputOptions = options;\n // Create manifest entries for each chunk\n serverManifest = getBundleManifest({\n pluginContext: this,\n bundle,\n moduleBase: userOptions.moduleBase,\n preserveModulesRoot: userOptions.build.preserveModulesRoot,\n });\n if (serverManifestPath) {\n await mkdir(dirname(serverManifestPath), { recursive: true });\n await writeFile(\n serverManifestPath,\n JSON.stringify(serverManifest, null, 2)\n );\n }\n },\n };\n}\n"],"names":["React","resolvedConfig","options"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/transformer/plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAkB,KAAK,MAAM,EAAuB,MAAM,MAAM,CAAC;AASxE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAyEzE"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/transformer/plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,MAAM,CAAC;AAMnC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAyEzE"}