vite-plugin-react-server 1.0.2 → 1.1.0

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 (490) hide show
  1. package/README.md +49 -76
  2. package/bin/patch.mjs +27 -20
  3. package/dist/_virtual/dynamic-import-helper.js +24 -0
  4. package/dist/_virtual/dynamic-import-helper.js.map +1 -0
  5. package/dist/client.d.ts +1 -1
  6. package/dist/client.d.ts.map +1 -1
  7. package/dist/client.js +1 -1
  8. package/dist/index.d.ts +2 -4
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +9 -26
  11. package/dist/index.js.map +1 -1
  12. package/dist/package.json +24 -14
  13. package/dist/plugin/components.d.ts +1 -1
  14. package/dist/plugin/components.d.ts.map +1 -1
  15. package/dist/plugin/components.js +1 -1
  16. package/dist/plugin/config/autoDiscover/createGlobAutoDiscover.d.ts +6 -0
  17. package/dist/plugin/config/autoDiscover/createGlobAutoDiscover.d.ts.map +1 -0
  18. package/dist/plugin/config/autoDiscover/createGlobAutoDiscover.js +30 -0
  19. package/dist/plugin/config/autoDiscover/createGlobAutoDiscover.js.map +1 -0
  20. package/dist/plugin/config/autoDiscover/customWorkerFiles.d.ts +13 -0
  21. package/dist/plugin/config/autoDiscover/customWorkerFiles.d.ts.map +1 -0
  22. package/dist/plugin/config/autoDiscover/customWorkerFiles.js +24 -0
  23. package/dist/plugin/config/autoDiscover/customWorkerFiles.js.map +1 -0
  24. package/dist/plugin/config/autoDiscover/pageAndPropFiles.d.ts +11 -0
  25. package/dist/plugin/config/autoDiscover/pageAndPropFiles.d.ts.map +1 -0
  26. package/dist/plugin/config/autoDiscover/pageAndPropFiles.js +29 -0
  27. package/dist/plugin/config/autoDiscover/pageAndPropFiles.js.map +1 -0
  28. package/dist/plugin/config/autoDiscover/resolveBuildPages.d.ts +6 -0
  29. package/dist/plugin/config/autoDiscover/resolveBuildPages.d.ts.map +1 -0
  30. package/dist/plugin/config/autoDiscover/resolveBuildPages.js +83 -0
  31. package/dist/plugin/config/autoDiscover/resolveBuildPages.js.map +1 -0
  32. package/dist/plugin/config/defaults.d.ts +18 -14
  33. package/dist/plugin/config/defaults.d.ts.map +1 -1
  34. package/dist/plugin/config/defaults.js +42 -21
  35. package/dist/plugin/config/defaults.js.map +1 -1
  36. package/dist/plugin/config/getCondition.d.ts +1 -1
  37. package/dist/plugin/config/getCondition.d.ts.map +1 -1
  38. package/dist/plugin/config/getCondition.js +2 -2
  39. package/dist/plugin/config/getCondition.js.map +1 -1
  40. package/dist/plugin/config/getPaths.d.ts +0 -1
  41. package/dist/plugin/config/getPaths.d.ts.map +1 -1
  42. package/dist/plugin/config/getPaths.js.map +1 -1
  43. package/dist/plugin/config/index.d.ts +0 -1
  44. package/dist/plugin/config/index.d.ts.map +1 -1
  45. package/dist/plugin/config/index.js +0 -1
  46. package/dist/plugin/config/resolveAutoDiscover.d.ts +20 -0
  47. package/dist/plugin/config/resolveAutoDiscover.d.ts.map +1 -0
  48. package/dist/plugin/config/resolveAutoDiscover.js +128 -0
  49. package/dist/plugin/config/resolveAutoDiscover.js.map +1 -0
  50. package/dist/plugin/config/resolveOptions.d.ts +1 -1
  51. package/dist/plugin/config/resolveOptions.d.ts.map +1 -1
  52. package/dist/plugin/config/resolveOptions.js +109 -77
  53. package/dist/plugin/config/resolveOptions.js.map +1 -1
  54. package/dist/plugin/config/resolvePages.d.ts +0 -1
  55. package/dist/plugin/config/resolvePages.d.ts.map +1 -1
  56. package/dist/plugin/config/resolvePages.js +6 -8
  57. package/dist/plugin/config/resolvePages.js.map +1 -1
  58. package/dist/plugin/config/resolveUrlOption.d.ts +16 -0
  59. package/dist/plugin/config/resolveUrlOption.d.ts.map +1 -0
  60. package/dist/plugin/config/resolveUrlOption.js +37 -0
  61. package/dist/plugin/config/resolveUrlOption.js.map +1 -0
  62. package/dist/plugin/config/resolveUserConfig.d.ts +4 -5
  63. package/dist/plugin/config/resolveUserConfig.d.ts.map +1 -1
  64. package/dist/plugin/config/resolveUserConfig.js +80 -132
  65. package/dist/plugin/config/resolveUserConfig.js.map +1 -1
  66. package/dist/plugin/copy.d.ts +7 -0
  67. package/dist/plugin/copy.d.ts.map +1 -0
  68. package/dist/plugin/copy.js +30 -0
  69. package/dist/plugin/css-collector-elements.d.ts +4 -0
  70. package/dist/plugin/css-collector-elements.d.ts.map +1 -0
  71. package/dist/plugin/css-collector-elements.js +19 -0
  72. package/dist/plugin/css-collector-elements.js.map +1 -0
  73. package/dist/plugin/css-collector.d.ts +2 -8
  74. package/dist/plugin/css-collector.d.ts.map +1 -1
  75. package/dist/plugin/css-collector.js +9 -36
  76. package/dist/plugin/css-collector.js.map +1 -1
  77. package/dist/plugin/helpers/cleanObject.d.ts +3 -0
  78. package/dist/plugin/helpers/cleanObject.d.ts.map +1 -0
  79. package/dist/plugin/helpers/cleanObject.js +47 -0
  80. package/dist/plugin/helpers/cleanObject.js.map +1 -0
  81. package/dist/plugin/helpers/collectBundleManifestCss.d.ts +8 -0
  82. package/dist/plugin/helpers/collectBundleManifestCss.d.ts.map +1 -0
  83. package/dist/plugin/helpers/collectBundleManifestCss.js +110 -0
  84. package/dist/plugin/helpers/collectManifestCss.d.ts +7 -0
  85. package/dist/plugin/helpers/collectManifestCss.d.ts.map +1 -0
  86. package/dist/plugin/helpers/collectManifestCss.js +44 -0
  87. package/dist/plugin/helpers/collectManifestCss.js.map +1 -0
  88. package/dist/plugin/helpers/collectViteModuleGraphCss.d.ts +31 -0
  89. package/dist/plugin/helpers/collectViteModuleGraphCss.d.ts.map +1 -0
  90. package/dist/plugin/helpers/collectViteModuleGraphCss.js +104 -0
  91. package/dist/plugin/helpers/collectViteModuleGraphCss.js.map +1 -0
  92. package/dist/plugin/helpers/createCssProps.d.ts +25 -0
  93. package/dist/plugin/helpers/createCssProps.d.ts.map +1 -0
  94. package/dist/plugin/helpers/createCssProps.js +57 -0
  95. package/dist/plugin/helpers/createCssProps.js.map +1 -0
  96. package/dist/plugin/helpers/createEventHandler.d.ts +22 -0
  97. package/dist/plugin/helpers/createEventHandler.d.ts.map +1 -0
  98. package/dist/plugin/helpers/createEventHandler.js +36 -0
  99. package/dist/plugin/helpers/createEventHandler.js.map +1 -0
  100. package/dist/plugin/helpers/createHandler.d.ts +7 -13
  101. package/dist/plugin/helpers/createHandler.d.ts.map +1 -1
  102. package/dist/plugin/helpers/createHandler.js +54 -96
  103. package/dist/plugin/helpers/createHandler.js.map +1 -1
  104. package/dist/plugin/helpers/createRscStream.d.ts +12 -26
  105. package/dist/plugin/helpers/createRscStream.d.ts.map +1 -1
  106. package/dist/plugin/helpers/createRscStream.js +105 -51
  107. package/dist/plugin/helpers/createRscStream.js.map +1 -1
  108. package/dist/plugin/helpers/defaultFileWriter.d.ts +2 -0
  109. package/dist/plugin/helpers/defaultFileWriter.d.ts.map +1 -0
  110. package/dist/plugin/helpers/defaultFileWriter.js +1 -0
  111. package/dist/plugin/helpers/getBundleManifest.d.ts +10 -16
  112. package/dist/plugin/helpers/getBundleManifest.d.ts.map +1 -1
  113. package/dist/plugin/helpers/getBundleManifest.js +30 -22
  114. package/dist/plugin/helpers/getBundleManifest.js.map +1 -1
  115. package/dist/plugin/helpers/getRouteFiles.d.ts +14 -0
  116. package/dist/plugin/helpers/getRouteFiles.d.ts.map +1 -0
  117. package/dist/plugin/helpers/getRouteFiles.js +36 -0
  118. package/dist/plugin/helpers/getRouteFiles.js.map +1 -0
  119. package/dist/plugin/helpers/inputNormalizer.d.ts.map +1 -1
  120. package/dist/plugin/helpers/inputNormalizer.js +38 -32
  121. package/dist/plugin/helpers/inputNormalizer.js.map +1 -1
  122. package/dist/plugin/helpers/metrics.d.ts +11 -0
  123. package/dist/plugin/helpers/metrics.d.ts.map +1 -0
  124. package/dist/plugin/helpers/metrics.js +35 -0
  125. package/dist/plugin/helpers/metrics.js.map +1 -0
  126. package/dist/plugin/helpers/resolvePageAndProps.d.ts +27 -0
  127. package/dist/plugin/helpers/resolvePageAndProps.d.ts.map +1 -0
  128. package/dist/plugin/helpers/resolvePageAndProps.js +51 -0
  129. package/dist/plugin/helpers/resolvePageAndProps.js.map +1 -0
  130. package/dist/plugin/helpers/serializeUserOptions.d.ts +8 -0
  131. package/dist/plugin/helpers/serializeUserOptions.d.ts.map +1 -0
  132. package/dist/plugin/helpers/serializeUserOptions.js +182 -0
  133. package/dist/plugin/helpers/serializeUserOptions.js.map +1 -0
  134. package/dist/plugin/helpers/stashReturnValue.d.ts +2 -0
  135. package/dist/plugin/helpers/stashReturnValue.d.ts.map +1 -0
  136. package/dist/plugin/helpers/stashReturnValue.js +14 -0
  137. package/dist/plugin/helpers/tryManifest.d.ts +5 -3
  138. package/dist/plugin/helpers/tryManifest.d.ts.map +1 -1
  139. package/dist/plugin/helpers/tryManifest.js +16 -7
  140. package/dist/plugin/helpers/tryManifest.js.map +1 -1
  141. package/dist/plugin/html.d.ts +2 -3
  142. package/dist/plugin/html.d.ts.map +1 -1
  143. package/dist/plugin/html.js +7 -1
  144. package/dist/plugin/html.js.map +1 -1
  145. package/dist/plugin/index.d.ts +1 -2
  146. package/dist/plugin/index.d.ts.map +1 -1
  147. package/dist/plugin/index.js +3 -1
  148. package/dist/plugin/loader/createBuildLoader.d.ts +26 -4
  149. package/dist/plugin/loader/createBuildLoader.d.ts.map +1 -1
  150. package/dist/plugin/loader/createBuildLoader.js +98 -33
  151. package/dist/plugin/loader/createBuildLoader.js.map +1 -1
  152. package/dist/plugin/loader/css-loader.development.d.ts +57 -0
  153. package/dist/plugin/loader/css-loader.development.d.ts.map +1 -0
  154. package/dist/plugin/loader/css-loader.development.js +81 -0
  155. package/dist/plugin/loader/css-loader.development.js.map +1 -0
  156. package/dist/plugin/loader/css-loader.production.d.ts +31 -0
  157. package/dist/plugin/loader/css-loader.production.d.ts.map +1 -0
  158. package/dist/plugin/loader/css-loader.production.js +45 -0
  159. package/dist/plugin/loader/css-loader.production.js.map +1 -0
  160. package/dist/plugin/loader/index.d.ts +2 -0
  161. package/dist/plugin/loader/index.d.ts.map +1 -0
  162. package/dist/plugin/loader/index.js +1 -0
  163. package/dist/plugin/loader/plugin.d.ts +22 -0
  164. package/dist/plugin/loader/plugin.d.ts.map +1 -0
  165. package/dist/plugin/loader/plugin.js +27 -0
  166. package/dist/plugin/loader/react-loader.d.ts +3 -7
  167. package/dist/plugin/loader/react-loader.d.ts.map +1 -1
  168. package/dist/plugin/loader/react-loader.js +85 -30
  169. package/dist/plugin/loader/react-loader.js.map +1 -1
  170. package/dist/plugin/loader/temporaryReferences.d.ts +2 -0
  171. package/dist/plugin/loader/temporaryReferences.d.ts.map +1 -0
  172. package/dist/plugin/loader/temporaryReferences.js +11 -0
  173. package/dist/plugin/loader/temporaryReferences.js.map +1 -0
  174. package/dist/plugin/moduleRefs.d.ts +7 -0
  175. package/dist/plugin/moduleRefs.d.ts.map +1 -0
  176. package/dist/plugin/moduleRefs.js +17 -0
  177. package/dist/plugin/moduleRefs.js.map +1 -0
  178. package/dist/plugin/plugin.client.d.ts +3 -0
  179. package/dist/plugin/plugin.client.d.ts.map +1 -0
  180. package/dist/plugin/plugin.client.js +19 -0
  181. package/dist/plugin/plugin.client.js.map +1 -0
  182. package/dist/plugin/plugin.d.ts +1 -5
  183. package/dist/plugin/plugin.d.ts.map +1 -1
  184. package/dist/plugin/plugin.js +3 -9
  185. package/dist/plugin/plugin.server.d.ts +3 -0
  186. package/dist/plugin/plugin.server.d.ts.map +1 -0
  187. package/dist/plugin/plugin.server.js +28 -0
  188. package/dist/plugin/plugin.server.js.map +1 -0
  189. package/dist/plugin/preserver/plugin.js +1 -1
  190. package/dist/plugin/preserver/plugin.js.map +1 -1
  191. package/dist/plugin/react-client/index.d.ts +1 -2
  192. package/dist/plugin/react-client/index.d.ts.map +1 -1
  193. package/dist/plugin/react-client/index.js +1 -19
  194. package/dist/plugin/react-client/plugin.d.ts.map +1 -1
  195. package/dist/plugin/react-client/plugin.js +60 -219
  196. package/dist/plugin/react-client/plugin.js.map +1 -1
  197. package/dist/plugin/react-client/server.d.ts +27 -0
  198. package/dist/plugin/react-client/server.d.ts.map +1 -0
  199. package/dist/plugin/react-client/server.js +197 -0
  200. package/dist/plugin/react-client/server.js.map +1 -0
  201. package/dist/plugin/react-server/index.d.ts +1 -2
  202. package/dist/plugin/react-server/index.d.ts.map +1 -1
  203. package/dist/plugin/react-server/index.js +1 -21
  204. package/dist/plugin/react-server/plugin.d.ts +0 -1
  205. package/dist/plugin/react-server/plugin.d.ts.map +1 -1
  206. package/dist/plugin/react-server/plugin.js +60 -186
  207. package/dist/plugin/react-server/plugin.js.map +1 -1
  208. package/dist/plugin/react-server/server.d.ts +9 -0
  209. package/dist/plugin/react-server/server.d.ts.map +1 -0
  210. package/dist/plugin/react-server/server.js +120 -0
  211. package/dist/plugin/react-server/server.js.map +1 -0
  212. package/dist/plugin/react-static/collectHtmlWorkerContent.d.ts +23 -0
  213. package/dist/plugin/react-static/collectHtmlWorkerContent.d.ts.map +1 -0
  214. package/dist/plugin/react-static/collectHtmlWorkerContent.js +85 -0
  215. package/dist/plugin/react-static/collectHtmlWorkerContent.js.map +1 -0
  216. package/dist/plugin/react-static/collectRscContent.d.ts +24 -0
  217. package/dist/plugin/react-static/collectRscContent.d.ts.map +1 -0
  218. package/dist/plugin/react-static/collectRscContent.js +49 -0
  219. package/dist/plugin/react-static/collectRscContent.js.map +1 -0
  220. package/dist/plugin/react-static/configurePreviewServer.d.ts +7 -0
  221. package/dist/plugin/react-static/configurePreviewServer.d.ts.map +1 -0
  222. package/dist/plugin/react-static/configurePreviewServer.js +67 -0
  223. package/dist/plugin/react-static/configurePreviewServer.js.map +1 -0
  224. package/dist/plugin/react-static/fileWriter.d.ts +23 -0
  225. package/dist/plugin/react-static/fileWriter.d.ts.map +1 -0
  226. package/dist/plugin/react-static/fileWriter.js +65 -0
  227. package/dist/plugin/react-static/fileWriter.js.map +1 -0
  228. package/dist/plugin/react-static/plugin.d.ts +15 -0
  229. package/dist/plugin/react-static/plugin.d.ts.map +1 -1
  230. package/dist/plugin/react-static/plugin.js +248 -149
  231. package/dist/plugin/react-static/plugin.js.map +1 -1
  232. package/dist/plugin/react-static/renderPage.d.ts +3 -0
  233. package/dist/plugin/react-static/renderPage.d.ts.map +1 -0
  234. package/dist/plugin/react-static/renderPage.js +116 -0
  235. package/dist/plugin/react-static/renderPage.js.map +1 -0
  236. package/dist/plugin/react-static/renderPages.d.ts +3 -0
  237. package/dist/plugin/react-static/renderPages.d.ts.map +1 -0
  238. package/dist/plugin/react-static/renderPages.js +125 -0
  239. package/dist/plugin/react-static/renderPages.js.map +1 -0
  240. package/dist/plugin/react-static/renderStreams.d.ts +26 -0
  241. package/dist/plugin/react-static/renderStreams.d.ts.map +1 -0
  242. package/dist/plugin/react-static/renderStreams.js +27 -0
  243. package/dist/plugin/react-static/renderStreams.js.map +1 -0
  244. package/dist/plugin/react-static/rscToHtmlStream.d.ts +22 -0
  245. package/dist/plugin/react-static/rscToHtmlStream.d.ts.map +1 -0
  246. package/dist/plugin/react-static/rscToHtmlStream.js +54 -0
  247. package/dist/plugin/react-static/rscToHtmlStream.js.map +1 -0
  248. package/dist/plugin/react-static/streamHandler.d.ts +2 -0
  249. package/dist/plugin/react-static/streamHandler.d.ts.map +1 -0
  250. package/dist/plugin/react-static/streamHandler.js +1 -0
  251. package/dist/plugin/react-static/types.d.ts +11 -0
  252. package/dist/plugin/react-static/types.d.ts.map +1 -1
  253. package/dist/plugin/resolvePage.d.ts +26 -9
  254. package/dist/plugin/resolvePage.d.ts.map +1 -1
  255. package/dist/plugin/resolvePage.js +41 -39
  256. package/dist/plugin/resolvePage.js.map +1 -1
  257. package/dist/plugin/resolveProps.d.ts +40 -7
  258. package/dist/plugin/resolveProps.d.ts.map +1 -1
  259. package/dist/plugin/resolveProps.js +100 -75
  260. package/dist/plugin/resolveProps.js.map +1 -1
  261. package/dist/plugin/root.d.ts +1 -0
  262. package/dist/plugin/root.d.ts.map +1 -1
  263. package/dist/plugin/root.js +1 -0
  264. package/dist/plugin/root.js.map +1 -1
  265. package/dist/plugin/transformer/index.d.ts +2 -1
  266. package/dist/plugin/transformer/index.d.ts.map +1 -1
  267. package/dist/plugin/transformer/index.js +2 -1
  268. package/dist/plugin/transformer/plugin.client.d.ts +4 -0
  269. package/dist/plugin/transformer/plugin.client.d.ts.map +1 -0
  270. package/dist/plugin/transformer/plugin.client.js +83 -0
  271. package/dist/plugin/transformer/plugin.client.js.map +1 -0
  272. package/dist/plugin/transformer/plugin.d.ts +1 -27
  273. package/dist/plugin/transformer/plugin.d.ts.map +1 -1
  274. package/dist/plugin/transformer/plugin.js +3 -87
  275. package/dist/plugin/transformer/plugin.js.map +1 -1
  276. package/dist/plugin/transformer/plugin.server.d.ts +4 -0
  277. package/dist/plugin/transformer/plugin.server.d.ts.map +1 -0
  278. package/dist/plugin/transformer/plugin.server.js +76 -0
  279. package/dist/plugin/transformer/plugin.server.js.map +1 -0
  280. package/dist/plugin/transformer/upgradeCssModuleCode.d.ts +11 -0
  281. package/dist/plugin/transformer/upgradeCssModuleCode.d.ts.map +1 -0
  282. package/dist/plugin/transformer/upgradeCssModuleCode.js +38 -0
  283. package/dist/plugin/types/css-tracking.d.ts +6 -0
  284. package/dist/plugin/types/css-tracking.d.ts.map +1 -0
  285. package/dist/plugin/types/css-tracking.js +1 -0
  286. package/dist/plugin/types.d.ts +372 -86
  287. package/dist/plugin/types.d.ts.map +1 -1
  288. package/dist/plugin/types.js +1 -1
  289. package/dist/plugin/vendor.client.d.ts +4 -0
  290. package/dist/plugin/vendor.client.d.ts.map +1 -0
  291. package/dist/plugin/vendor.client.js +16 -0
  292. package/dist/plugin/vendor.client.js.map +1 -0
  293. package/dist/plugin/vendor.server.d.ts +4 -0
  294. package/dist/plugin/vendor.server.d.ts.map +1 -0
  295. package/dist/plugin/vendor.server.js +16 -0
  296. package/dist/plugin/vendor.server.js.map +1 -0
  297. package/dist/plugin/worker/createWorker.d.ts +25 -7
  298. package/dist/plugin/worker/createWorker.d.ts.map +1 -1
  299. package/dist/plugin/worker/createWorker.js +108 -33
  300. package/dist/plugin/worker/createWorker.js.map +1 -1
  301. package/dist/plugin/worker/html/createHtmlWorkerRenderState.d.ts +12 -0
  302. package/dist/plugin/worker/html/createHtmlWorkerRenderState.d.ts.map +1 -0
  303. package/dist/plugin/worker/html/createHtmlWorkerRenderState.js +103 -0
  304. package/dist/plugin/worker/html/createHtmlWorkerRenderState.js.map +1 -0
  305. package/dist/plugin/worker/html/html-worker.development.d.ts +0 -30
  306. package/dist/plugin/worker/html/html-worker.development.d.ts.map +1 -1
  307. package/dist/plugin/worker/html/html-worker.development.js +3 -17
  308. package/dist/plugin/worker/html/html-worker.development.js.map +1 -1
  309. package/dist/plugin/worker/html/html-worker.production.js +12 -5
  310. package/dist/plugin/worker/html/html-worker.production.js.map +1 -1
  311. package/dist/plugin/worker/html/messageHandler.d.ts +2 -2
  312. package/dist/plugin/worker/html/messageHandler.d.ts.map +1 -1
  313. package/dist/plugin/worker/html/messageHandler.js +87 -84
  314. package/dist/plugin/worker/html/messageHandler.js.map +1 -1
  315. package/dist/plugin/worker/html/types.d.ts +18 -0
  316. package/dist/plugin/worker/html/types.d.ts.map +1 -0
  317. package/dist/plugin/worker/html/types.js +1 -0
  318. package/dist/plugin/worker/registerLoaders.d.ts +9 -0
  319. package/dist/plugin/worker/registerLoaders.d.ts.map +1 -0
  320. package/dist/plugin/worker/registerLoaders.js +45 -0
  321. package/dist/plugin/worker/rsc/handleRender.d.ts +4 -0
  322. package/dist/plugin/worker/rsc/handleRender.d.ts.map +1 -0
  323. package/dist/plugin/worker/rsc/handleRender.js +147 -0
  324. package/dist/plugin/worker/rsc/handleRender.js.map +1 -0
  325. package/dist/plugin/worker/rsc/messageHandler.d.ts +2 -2
  326. package/dist/plugin/worker/rsc/messageHandler.d.ts.map +1 -1
  327. package/dist/plugin/worker/rsc/messageHandler.js +47 -112
  328. package/dist/plugin/worker/rsc/messageHandler.js.map +1 -1
  329. package/dist/plugin/worker/rsc/rsc-worker.development.d.ts +0 -30
  330. package/dist/plugin/worker/rsc/rsc-worker.development.d.ts.map +1 -1
  331. package/dist/plugin/worker/rsc/rsc-worker.development.js +29 -4
  332. package/dist/plugin/worker/rsc/rsc-worker.development.js.map +1 -1
  333. package/dist/plugin/worker/rsc/rsc-worker.production.js +3 -3
  334. package/dist/plugin/worker/rsc/rsc-worker.production.js.map +1 -1
  335. package/dist/plugin/worker/rsc/state.d.ts +73 -2
  336. package/dist/plugin/worker/rsc/state.d.ts.map +1 -1
  337. package/dist/plugin/worker/rsc/state.js +40 -3
  338. package/dist/plugin/worker/rsc/state.js.map +1 -1
  339. package/dist/plugin/worker/sendMessage.d.ts +3 -0
  340. package/dist/plugin/worker/sendMessage.d.ts.map +1 -0
  341. package/dist/plugin/worker/sendMessage.js +48 -0
  342. package/dist/plugin/worker/types.d.ts +218 -76
  343. package/dist/plugin/worker/types.d.ts.map +1 -1
  344. package/dist/server.d.ts +1 -1
  345. package/dist/server.d.ts.map +1 -1
  346. package/dist/server.js +6 -1
  347. package/dist/server.js.map +1 -1
  348. package/dist/tsconfig.tsbuildinfo +1 -1
  349. package/package.json +24 -14
  350. package/plugin/components.ts +1 -1
  351. package/plugin/config/autoDiscover/createGlobAutoDiscover.ts +29 -0
  352. package/plugin/config/autoDiscover/customWorkerFiles.ts +27 -0
  353. package/plugin/config/autoDiscover/pageAndPropFiles.ts +36 -0
  354. package/plugin/config/autoDiscover/resolveBuildPages.ts +98 -0
  355. package/plugin/config/defaults.tsx +38 -29
  356. package/plugin/config/getCondition.ts +7 -3
  357. package/plugin/config/getPaths.ts +1 -7
  358. package/plugin/config/index.ts +0 -1
  359. package/plugin/config/resolveAutoDiscover.ts +177 -0
  360. package/plugin/config/resolveOptions.ts +220 -118
  361. package/plugin/config/resolvePages.ts +5 -7
  362. package/plugin/config/resolveUrlOption.ts +43 -0
  363. package/plugin/config/resolveUserConfig.ts +116 -166
  364. package/plugin/copy.ts +39 -0
  365. package/plugin/css-collector-elements.tsx +21 -0
  366. package/plugin/css-collector.tsx +20 -53
  367. package/plugin/helpers/cleanObject.ts +50 -0
  368. package/plugin/helpers/collectBundleManifestCss.ts +160 -0
  369. package/plugin/helpers/collectManifestCss.ts +61 -0
  370. package/plugin/helpers/collectViteModuleGraphCss.ts +158 -0
  371. package/plugin/helpers/createCssProps.tsx +85 -0
  372. package/plugin/helpers/createEventHandler.ts +44 -0
  373. package/plugin/helpers/createHandler.ts +57 -126
  374. package/plugin/helpers/createRscStream.tsx +156 -0
  375. package/plugin/helpers/defaultFileWriter.ts +0 -0
  376. package/plugin/helpers/getBundleManifest.ts +42 -37
  377. package/plugin/helpers/getRouteFiles.ts +47 -0
  378. package/plugin/helpers/inputNormalizer.ts +16 -10
  379. package/plugin/helpers/metrics.ts +64 -0
  380. package/plugin/helpers/resolvePageAndProps.ts +81 -0
  381. package/plugin/helpers/serializeUserOptions.ts +209 -0
  382. package/plugin/helpers/stashReturnValue.ts +16 -0
  383. package/plugin/helpers/tryManifest.ts +35 -18
  384. package/plugin/html.tsx +14 -3
  385. package/plugin/index.ts +5 -2
  386. package/plugin/loader/createBuildLoader.ts +152 -47
  387. package/plugin/loader/css-loader.development.ts +157 -0
  388. package/plugin/loader/css-loader.production.ts +86 -0
  389. package/plugin/loader/index.ts +1 -0
  390. package/plugin/loader/plugin.ts +33 -0
  391. package/plugin/loader/react-loader.ts +109 -41
  392. package/plugin/loader/temporaryReferences.ts +3 -0
  393. package/plugin/moduleRefs.ts +11 -0
  394. package/plugin/plugin.client.ts +12 -0
  395. package/plugin/plugin.server.ts +25 -0
  396. package/plugin/plugin.ts +5 -9
  397. package/plugin/preserver/plugin.ts +1 -1
  398. package/plugin/react-client/index.ts +1 -12
  399. package/plugin/react-client/plugin.ts +70 -259
  400. package/plugin/react-client/server.ts +276 -0
  401. package/plugin/react-server/index.ts +1 -14
  402. package/plugin/react-server/plugin.ts +69 -220
  403. package/plugin/react-server/server.ts +128 -0
  404. package/plugin/react-static/collectHtmlWorkerContent.ts +120 -0
  405. package/plugin/react-static/collectRscContent.ts +77 -0
  406. package/plugin/react-static/configurePreviewServer.ts +68 -0
  407. package/plugin/react-static/fileWriter.ts +103 -0
  408. package/plugin/react-static/plugin.ts +308 -181
  409. package/plugin/react-static/renderPage.ts +151 -0
  410. package/plugin/react-static/renderPages.ts +154 -0
  411. package/plugin/react-static/renderStreams.ts +48 -0
  412. package/plugin/react-static/rscToHtmlStream.ts +85 -0
  413. package/plugin/react-static/streamHandler.ts +0 -0
  414. package/plugin/react-static/types.ts +10 -0
  415. package/plugin/resolvePage.ts +67 -57
  416. package/plugin/resolveProps.ts +148 -104
  417. package/plugin/root.ts +1 -1
  418. package/plugin/transformer/index.ts +2 -1
  419. package/plugin/transformer/plugin.client.ts +109 -0
  420. package/plugin/transformer/plugin.server.ts +98 -0
  421. package/plugin/transformer/plugin.ts +2 -115
  422. package/plugin/transformer/upgradeCssModuleCode.ts +42 -0
  423. package/plugin/types/css-tracking.ts +5 -0
  424. package/plugin/types/react-server-dom-esm.d.ts +54 -0
  425. package/plugin/types.ts +508 -97
  426. package/plugin/vendor.client.ts +12 -0
  427. package/plugin/vendor.server.ts +12 -0
  428. package/plugin/worker/createWorker.ts +158 -53
  429. package/plugin/worker/html/createHtmlWorkerRenderState.tsx +112 -0
  430. package/plugin/worker/html/html-worker.development.tsx +5 -75
  431. package/plugin/worker/html/html-worker.production.tsx +18 -7
  432. package/plugin/worker/html/messageHandler.tsx +126 -0
  433. package/plugin/worker/html/types.ts +19 -0
  434. package/plugin/worker/registerLoaders.ts +54 -0
  435. package/plugin/worker/rsc/handleRender.ts +180 -0
  436. package/plugin/worker/rsc/messageHandler.tsx +58 -132
  437. package/plugin/worker/rsc/rsc-worker.development.ts +49 -63
  438. package/plugin/worker/rsc/rsc-worker.production.ts +5 -5
  439. package/plugin/worker/rsc/state.ts +79 -2
  440. package/plugin/worker/sendMessage.ts +49 -0
  441. package/plugin/worker/types.ts +299 -100
  442. package/scripts/check-react-version.mjs +60 -48
  443. package/scripts/react+0.0.0-experimental-0ca8420f-20250504.patch +57 -0
  444. package/scripts/react-dom+0.0.0-experimental-0ca8420f-20250504.patch +819 -0
  445. package/scripts/{react-server-dom-esm+0.0.0-experimental-eda36a1c-20250228.patch → react-server-dom-esm+0.0.0-experimental-0ca8420f-20250504.patch} +1702 -2820
  446. package/tsconfig.json +7 -2
  447. package/dist/plugin/assertServerCondition.d.ts +0 -6
  448. package/dist/plugin/assertServerCondition.d.ts.map +0 -1
  449. package/dist/plugin/assertServerCondition.js +0 -13
  450. package/dist/plugin/checkFilesExist.d.ts +0 -3
  451. package/dist/plugin/checkFilesExist.d.ts.map +0 -1
  452. package/dist/plugin/checkFilesExist.js +0 -67
  453. package/dist/plugin/checkFilesExist.js.map +0 -1
  454. package/dist/plugin/collect-manifest-client-files.d.ts +0 -23
  455. package/dist/plugin/collect-manifest-client-files.d.ts.map +0 -1
  456. package/dist/plugin/collect-manifest-client-files.js +0 -131
  457. package/dist/plugin/collect-manifest-client-files.js.map +0 -1
  458. package/dist/plugin/config/getWorkerPath.d.ts +0 -2
  459. package/dist/plugin/config/getWorkerPath.d.ts.map +0 -1
  460. package/dist/plugin/config/getWorkerPath.js +0 -4
  461. package/dist/plugin/copy-dir.d.ts +0 -4
  462. package/dist/plugin/copy-dir.d.ts.map +0 -1
  463. package/dist/plugin/copy-dir.js +0 -25
  464. package/dist/plugin/copy-dir.js.map +0 -1
  465. package/dist/plugin/css-collector-inline.d.ts +0 -10
  466. package/dist/plugin/css-collector-inline.d.ts.map +0 -1
  467. package/dist/plugin/css-collector-inline.js +0 -55
  468. package/dist/plugin/css-collector-inline.js.map +0 -1
  469. package/dist/plugin/loader/css-loader.d.ts +0 -16
  470. package/dist/plugin/loader/css-loader.d.ts.map +0 -1
  471. package/dist/plugin/loader/css-loader.js +0 -70
  472. package/dist/plugin/loader/css-loader.js.map +0 -1
  473. package/dist/plugin/react-client/index.js.map +0 -1
  474. package/dist/plugin/react-server/index.js.map +0 -1
  475. package/dist/plugin/worker/html/renderPages.d.ts +0 -26
  476. package/dist/plugin/worker/html/renderPages.d.ts.map +0 -1
  477. package/dist/plugin/worker/html/renderPages.js +0 -241
  478. package/dist/plugin/worker/html/renderPages.js.map +0 -1
  479. package/plugin/assertServerCondition.ts +0 -12
  480. package/plugin/checkFilesExist.ts +0 -66
  481. package/plugin/collect-manifest-client-files.ts +0 -167
  482. package/plugin/config/getWorkerPath.ts +0 -5
  483. package/plugin/copy-dir.ts +0 -27
  484. package/plugin/css-collector-inline.tsx +0 -60
  485. package/plugin/helpers/createRscStream.ts +0 -109
  486. package/plugin/loader/css-loader.ts +0 -94
  487. package/plugin/worker/html/messageHandler.ts +0 -130
  488. package/plugin/worker/html/renderPages.ts +0 -293
  489. package/scripts/react+0.0.0-experimental-eda36a1c-20250228.patch +0 -159
  490. package/scripts/react-dom+0.0.0-experimental-eda36a1c-20250228.patch +0 -12508
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderPage.js","sources":["../../../plugin/react-static/renderPage.ts"],"sourcesContent":["import { createRenderMetrics } from \"../helpers/metrics.js\";\nimport { resolvePageAndProps } from \"../helpers/resolvePageAndProps.js\";\nimport type { CreateHandlerOptions, RenderPageResult } from \"../types.js\";\nimport { renderStreams } from \"./renderStreams.js\";\nimport { collectHtmlWorkerContent } from \"./collectHtmlWorkerContent.js\";\nimport { collectRscContent } from \"./collectRscContent.js\";\n\nexport async function* renderPage(\n handlerOptions: CreateHandlerOptions<unknown, React.ComponentType<unknown>>\n): AsyncGenerator<RenderPageResult, void, unknown> {\n if (!handlerOptions.pagePath) {\n yield {\n type: \"skip\",\n };\n return;\n }\n\n try {\n const metrics = createRenderMetrics(handlerOptions.route);\n\n const pageAndPropsResult = await resolvePageAndProps(handlerOptions);\n\n if (pageAndPropsResult.type === \"error\") {\n yield {\n type: \"error\",\n error: pageAndPropsResult.error,\n };\n return;\n }\n\n if (pageAndPropsResult.type === \"skip\") {\n yield {\n type: \"skip\",\n };\n return;\n }\n\n const { PageComponent, pageProps } = pageAndPropsResult;\n\n const newHandlerOptions = {\n ...handlerOptions,\n PageComponent: PageComponent,\n pageProps: pageProps,\n } satisfies CreateHandlerOptions;\n // Create streams with CSS files\n const [rscFull, rscHeadless] = await renderStreams(newHandlerOptions);\n\n // Handle stream creation errors\n if (rscFull.type !== \"success\") {\n yield {\n type: \"error\",\n error: new Error(\n rscFull.type === \"error\"\n ? `Failed to create RSC full stream: ${\n rscFull.error instanceof Error\n ? rscFull.error.message\n : String(rscFull.error)\n }`\n : \"RSC full stream creation was skipped\"\n ),\n };\n return;\n }\n\n if (!rscFull.stream) {\n yield {\n type: \"error\",\n error: new Error(\"RSC full stream is undefined\"),\n };\n return;\n }\n\n if (rscHeadless.type !== \"success\") {\n yield {\n type: \"error\",\n error: new Error(\n rscHeadless.type === \"error\"\n ? `Failed to create RSC headless stream: ${\n rscHeadless.error instanceof Error\n ? rscHeadless.error.message\n : String(rscHeadless.error)\n }`\n : \"RSC headless stream creation was skipped\"\n ),\n };\n return;\n }\n\n if (!rscHeadless.stream) {\n yield {\n type: \"error\",\n error: new Error(\"RSC headless stream is undefined\"),\n };\n return;\n }\n\n // Collect HTML and RSC content\n const [\n { stream: rscStream, metrics: rscMetrics },\n { stream: htmlStream, metrics: htmlMetrics },\n ] = await Promise.all([\n collectRscContent(rscHeadless.stream, handlerOptions),\n collectHtmlWorkerContent(rscFull.stream, handlerOptions),\n ]);\n\n // Update metrics\n metrics.htmlSizes.set(handlerOptions.route, htmlMetrics.bytes);\n metrics.rscSizes.set(handlerOptions.route, rscMetrics.bytes);\n metrics.htmlSize = htmlMetrics.bytes;\n metrics.rscSize = rscMetrics.bytes;\n\n // Combine metrics from both streams\n metrics.streamMetrics = {\n ...htmlMetrics,\n chunks: Math.max(htmlMetrics.chunks, rscMetrics.chunks),\n bytes: Math.max(htmlMetrics.bytes, rscMetrics.bytes),\n duration: Math.max(htmlMetrics.duration, rscMetrics.duration),\n startTime: Math.min(htmlMetrics.startTime, rscMetrics.startTime),\n };\n\n metrics.processingTime = metrics.streamMetrics.duration;\n metrics.chunks = metrics.streamMetrics.chunks;\n metrics.chunkRate =\n metrics.streamMetrics.chunks / (metrics.processingTime / 1000);\n\n // Emit metrics via callback\n if (handlerOptions.onMetrics) {\n handlerOptions.onMetrics(metrics);\n }\n\n yield {\n type: \"success\",\n html: htmlStream,\n rsc: rscStream,\n metrics: {\n rscFull: htmlMetrics,\n rscHeadless: rscMetrics,\n },\n } as const;\n } catch (err) {\n yield {\n type: \"error\",\n error:\n err instanceof Error\n ? err\n : typeof err === \"string\"\n ? new Error(err)\n : (err as Error),\n };\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { RenderPagesResult, AutoDiscoveredFiles, CssContent, MultiPageHandlerOptions } from "../types.js";
2
+ export declare function renderPages(autoDiscoveredFiles: AutoDiscoveredFiles, handlerOptions: MultiPageHandlerOptions, cssFilesByPage: Map<string, Map<string, CssContent>>): AsyncGenerator<RenderPagesResult, RenderPagesResult, unknown>;
3
+ //# sourceMappingURL=renderPages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderPages.d.ts","sourceRoot":"","sources":["../../../plugin/react-static/renderPages.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAiB,iBAAiB,EAAE,mBAAmB,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAE9H,wBAAuB,WAAW,CAChC,mBAAmB,EAAE,mBAAmB,EACxC,cAAc,EAAE,uBAAuB,EACvC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,GACnD,cAAc,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAqI/D"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * vite-plugin-react-server
3
+ * Copyright (c) Nico Brinkkemper
4
+ * MIT License
5
+ */
6
+ import { createRenderMetrics } from '../helpers/metrics.js';
7
+ import { renderPage } from './renderPage.js';
8
+ import 'node:stream';
9
+
10
+ async function* renderPages(autoDiscoveredFiles, handlerOptions, cssFilesByPage) {
11
+ const routes = Array.from(autoDiscoveredFiles.urlMap.keys());
12
+ const completedRoutes = /* @__PURE__ */ new Set();
13
+ const failedRoutes = /* @__PURE__ */ new Set();
14
+ const baseMetrics = createRenderMetrics(routes[0]);
15
+ const results = /* @__PURE__ */ new Map();
16
+ const errors = [];
17
+ if (!autoDiscoveredFiles.urlMap) {
18
+ throw new Error("No urlMap provided to renderPages");
19
+ }
20
+ for (const route of routes) {
21
+ const { page, props } = autoDiscoveredFiles.urlMap.get(route) || {};
22
+ if (!page) continue;
23
+ try {
24
+ const pageRenderer = renderPage({
25
+ ...handlerOptions,
26
+ route,
27
+ pagePath: page,
28
+ propsPath: props,
29
+ cssFiles: cssFilesByPage.get(route) ?? /* @__PURE__ */ new Map()
30
+ });
31
+ for await (const result of pageRenderer) {
32
+ if (result.type === "skip") continue;
33
+ if (result.type === "error") {
34
+ failedRoutes.add(route);
35
+ errors.push(result.error);
36
+ yield {
37
+ type: "error",
38
+ error: result.error,
39
+ failedRoutes,
40
+ completedRoutes,
41
+ htmlSizes: baseMetrics.htmlSizes,
42
+ rscSizes: baseMetrics.rscSizes,
43
+ streamMetrics: baseMetrics.streamMetrics,
44
+ results
45
+ };
46
+ continue;
47
+ }
48
+ if (result.type === "success") {
49
+ completedRoutes.add(route);
50
+ results.set(route, {
51
+ html: result.html,
52
+ rsc: result.rsc,
53
+ metrics: result.metrics
54
+ });
55
+ baseMetrics.htmlSizes.set(route, result.metrics.rscFull.bytes);
56
+ baseMetrics.rscSizes.set(route, result.metrics.rscHeadless.bytes);
57
+ baseMetrics.streamMetrics = {
58
+ ...baseMetrics.streamMetrics,
59
+ chunks: Math.max(
60
+ baseMetrics.streamMetrics.chunks,
61
+ result.metrics.rscFull.chunks
62
+ ),
63
+ bytes: Math.max(
64
+ baseMetrics.streamMetrics.bytes,
65
+ result.metrics.rscFull.bytes
66
+ ),
67
+ duration: Math.max(
68
+ baseMetrics.streamMetrics.duration,
69
+ result.metrics.rscFull.duration
70
+ ),
71
+ startTime: Math.min(
72
+ baseMetrics.streamMetrics.startTime,
73
+ result.metrics.rscFull.startTime
74
+ )
75
+ };
76
+ yield {
77
+ type: "success",
78
+ completedRoutes,
79
+ htmlSizes: baseMetrics.htmlSizes,
80
+ rscSizes: baseMetrics.rscSizes,
81
+ streamMetrics: baseMetrics.streamMetrics,
82
+ results
83
+ };
84
+ }
85
+ }
86
+ } catch (err) {
87
+ failedRoutes.add(route);
88
+ errors.push(err instanceof Error ? err : new Error(String(err)));
89
+ yield {
90
+ type: "error",
91
+ error: err instanceof Error ? err : new Error(String(err)),
92
+ failedRoutes,
93
+ completedRoutes,
94
+ htmlSizes: baseMetrics.htmlSizes,
95
+ rscSizes: baseMetrics.rscSizes,
96
+ streamMetrics: baseMetrics.streamMetrics,
97
+ results
98
+ };
99
+ }
100
+ }
101
+ if (failedRoutes.size > 0) {
102
+ return {
103
+ type: "error",
104
+ error: errors[0],
105
+ failedRoutes,
106
+ completedRoutes,
107
+ htmlSizes: baseMetrics.htmlSizes,
108
+ rscSizes: baseMetrics.rscSizes,
109
+ streamMetrics: baseMetrics.streamMetrics,
110
+ results
111
+ };
112
+ }
113
+ return {
114
+ type: "success",
115
+ completedRoutes,
116
+ failedRoutes: undefined,
117
+ htmlSizes: baseMetrics.htmlSizes,
118
+ rscSizes: baseMetrics.rscSizes,
119
+ streamMetrics: baseMetrics.streamMetrics,
120
+ results
121
+ };
122
+ }
123
+
124
+ export { renderPages };
125
+ //# sourceMappingURL=renderPages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderPages.js","sources":["../../../plugin/react-static/renderPages.ts"],"sourcesContent":["/**\n * renderPages.ts\n *\n * PURPOSE: Processes React Server Components (RSC) streams and writes output files\n *\n * This module:\n * 1. Creates RSC and HTML streams for each route\n * 2. Pipes RSC stream directly to .rsc files\n * 3. Transforms RSC to HTML via worker and pipes to .html files\n * 4. Collects metrics and handles errors\n */\nimport { createRenderMetrics } from \"../helpers/metrics.js\";\nimport { renderPage } from \"./renderPage.js\";\nimport { PassThrough } from \"node:stream\";\nimport type { StreamMetrics, RenderPagesResult, AutoDiscoveredFiles, CssContent, MultiPageHandlerOptions } from \"../types.js\";\n\nexport async function* renderPages(\n autoDiscoveredFiles: AutoDiscoveredFiles,\n handlerOptions: MultiPageHandlerOptions,\n cssFilesByPage: Map<string, Map<string, CssContent>>,\n): AsyncGenerator<RenderPagesResult, RenderPagesResult, unknown> {\n const routes = Array.from(autoDiscoveredFiles.urlMap.keys());\n const completedRoutes = new Set<string>();\n const failedRoutes = new Set<string>();\n const baseMetrics = createRenderMetrics(routes[0]);\n const results = new Map<\n string,\n {\n html: PassThrough;\n rsc: PassThrough;\n metrics: {\n rscFull: StreamMetrics;\n rscHeadless: StreamMetrics;\n };\n }\n >();\n const errors: Error[] = [];\n\n if (!autoDiscoveredFiles.urlMap) {\n throw new Error(\"No urlMap provided to renderPages\");\n }\n\n for (const route of routes) {\n const { page, props } = autoDiscoveredFiles.urlMap.get(route) || {};\n if (!page) continue;\n\n try {\n const pageRenderer = renderPage({\n ...handlerOptions,\n route,\n pagePath: page,\n propsPath: props,\n cssFiles: cssFilesByPage.get(route) ?? new Map(),\n });\n\n for await (const result of pageRenderer) {\n if (result.type === \"skip\") continue;\n\n if (result.type === \"error\") {\n failedRoutes.add(route);\n errors.push(result.error);\n yield {\n type: \"error\",\n error: result.error,\n failedRoutes,\n completedRoutes,\n htmlSizes: baseMetrics.htmlSizes,\n rscSizes: baseMetrics.rscSizes,\n streamMetrics: baseMetrics.streamMetrics,\n results,\n } as const;\n continue;\n }\n\n if (result.type === \"success\") {\n completedRoutes.add(route);\n results.set(route, {\n html: result.html,\n rsc: result.rsc,\n metrics: result.metrics,\n });\n\n // Update metrics\n baseMetrics.htmlSizes.set(route, result.metrics.rscFull.bytes);\n baseMetrics.rscSizes.set(route, result.metrics.rscHeadless.bytes);\n baseMetrics.streamMetrics = {\n ...baseMetrics.streamMetrics,\n chunks: Math.max(\n baseMetrics.streamMetrics.chunks,\n result.metrics.rscFull.chunks\n ),\n bytes: Math.max(\n baseMetrics.streamMetrics.bytes,\n result.metrics.rscFull.bytes\n ),\n duration: Math.max(\n baseMetrics.streamMetrics.duration,\n result.metrics.rscFull.duration\n ),\n startTime: Math.min(\n baseMetrics.streamMetrics.startTime,\n result.metrics.rscFull.startTime\n ),\n };\n\n yield {\n type: \"success\",\n completedRoutes,\n htmlSizes: baseMetrics.htmlSizes,\n rscSizes: baseMetrics.rscSizes,\n streamMetrics: baseMetrics.streamMetrics,\n results,\n } as const;\n }\n }\n } catch (err) {\n failedRoutes.add(route);\n errors.push(err instanceof Error ? err : new Error(String(err)));\n yield {\n type: \"error\",\n error: err instanceof Error ? err : new Error(String(err)),\n failedRoutes,\n completedRoutes,\n htmlSizes: baseMetrics.htmlSizes,\n rscSizes: baseMetrics.rscSizes,\n streamMetrics: baseMetrics.streamMetrics,\n results,\n } as const;\n }\n }\n\n if (failedRoutes.size > 0) {\n return {\n type: \"error\",\n error: errors[0],\n failedRoutes,\n completedRoutes,\n htmlSizes: baseMetrics.htmlSizes,\n rscSizes: baseMetrics.rscSizes,\n streamMetrics: baseMetrics.streamMetrics,\n results,\n } as const;\n }\n\n return {\n type: \"success\",\n completedRoutes,\n failedRoutes: undefined,\n htmlSizes: baseMetrics.htmlSizes,\n rscSizes: baseMetrics.rscSizes,\n streamMetrics: baseMetrics.streamMetrics,\n results,\n } as const;\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { CreateHandlerOptions } from "../types.js";
2
+ /**
3
+ * Creates handlers for both document and RSC streams
4
+ *
5
+ * @param handler The handler options for creating streams
6
+ * @param options The render options
7
+ * @returns A tuple containing the document worker result and RSC direct result
8
+ */
9
+ export declare function renderStreams(handler: CreateHandlerOptions): Promise<[{
10
+ type: string;
11
+ stream: any;
12
+ error?: undefined;
13
+ } | {
14
+ type: string;
15
+ error: Error;
16
+ stream?: undefined;
17
+ }, {
18
+ type: string;
19
+ stream: any;
20
+ error?: undefined;
21
+ } | {
22
+ type: string;
23
+ error: Error;
24
+ stream?: undefined;
25
+ }]>;
26
+ //# sourceMappingURL=renderStreams.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderStreams.d.ts","sourceRoot":"","sources":["../../../plugin/react-static/renderStreams.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACV,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAGrB;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,oBAAoB;;;;;;;;;;;;;;;;IAiB9B"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * vite-plugin-react-server
3
+ * Copyright (c) Nico Brinkkemper
4
+ * MIT License
5
+ */
6
+ import { createHandler } from '../helpers/createHandler.js';
7
+ import React__default from 'react';
8
+
9
+ function renderStreams(handler) {
10
+ return Promise.all([
11
+ /**
12
+ * This stream goes to the document worker for client side rendering with full HTML structure,
13
+ * links are already bubbled up in the static document which required us
14
+ * to include the head in the stream as well
15
+ */
16
+ createHandler(handler),
17
+ /**
18
+ * This stream is saved to index.rsc file (if configured) and can be used
19
+ * for navigating to pages (without the Html wrapper, but does contain
20
+ * css/head information that can bubble up to the browser's dom)
21
+ */
22
+ createHandler({ ...handler, Html: React__default.Fragment })
23
+ ]);
24
+ }
25
+
26
+ export { renderStreams };
27
+ //# sourceMappingURL=renderStreams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderStreams.js","sources":["../../../plugin/react-static/renderStreams.ts"],"sourcesContent":["/**\n * renderStreams.ts\n * \n * PURPOSE: Creates specialized streams for React Server Components (RSC) rendering\n * \n * This module:\n * 1. Creates RSC stream (React.Fragment wrapper) for client-side navigation\n * - This stream is saved to .rsc files and used when navigating between pages\n * - The Fragment wrapper allows the browser to update only the necessary parts of the DOM\n * - This is more efficient than reloading the entire HTML document\n * 2. Creates Document stream (Html wrapper) for initial page loads\n * - This stream includes the full HTML document structure\n * - Used for the initial page load when the browser needs the complete HTML\n * 3. Sets up stream handlers with proper wrappers and options\n * 4. Returns streams for renderPages to process\n */\nimport { createHandler } from \"../helpers/createHandler.js\";\nimport type {\n CreateHandlerOptions,\n} from \"../types.js\";\nimport React from \"react\";\n\n/**\n * Creates handlers for both document and RSC streams\n * \n * @param handler The handler options for creating streams\n * @param options The render options\n * @returns A tuple containing the document worker result and RSC direct result\n */\nexport function renderStreams(\n handler: CreateHandlerOptions,\n) {\n return Promise.all([\n /**\n * This stream goes to the document worker for client side rendering with full HTML structure, \n * links are already bubbled up in the static document which required us \n * to include the head in the stream as well\n */\n createHandler(handler),\n \n /**\n * This stream is saved to index.rsc file (if configured) and can be used \n * for navigating to pages (without the Html wrapper, but does contain \n * css/head information that can bubble up to the browser's dom)\n */\n createHandler({...handler, Html: React.Fragment}),\n ]);\n}\n"],"names":["React"],"mappings":";;;;;;;;AA6BO,SAAS,cACd,OACA,EAAA;AACA,EAAA,OAAO,QAAQ,GAAI,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMjB,cAAc,OAAO,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOrB,cAAc,EAAC,GAAG,SAAS,IAAM,EAAAA,cAAA,CAAM,UAAS;AAAA,GACjD,CAAA;AACH;;;;"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * rscToHtmlStream.ts
3
+ *
4
+ * PURPOSE: Transforms RSC stream to HTML stream via worker communication
5
+ *
6
+ * This module:
7
+ * 1. Takes RSC stream as input
8
+ * 2. Communicates with worker to transform RSC to HTML
9
+ * 3. Returns a writeable stream of HTML content
10
+ * 4. Handles worker message processing and error cases
11
+ */
12
+ import { Transform } from "node:stream";
13
+ import type { CreateHandlerOptions } from "../types.js";
14
+ export type RscToHtmlOptions = Pick<CreateHandlerOptions, "worker" | "route" | "moduleRootPath" | "moduleBaseURL" | "pipeableStreamOptions" | "build" | "cssFiles" | "projectRoot">;
15
+ /**
16
+ * Creates a transform stream that converts RSC content to HTML via worker
17
+ *
18
+ * @param options The options for RSC to HTML transformation
19
+ * @returns A transform stream that outputs HTML content
20
+ */
21
+ export declare function createRscToHtmlStream(options: RscToHtmlOptions): Transform;
22
+ //# sourceMappingURL=rscToHtmlStream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rscToHtmlStream.d.ts","sourceRoot":"","sources":["../../../plugin/react-static/rscToHtmlStream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIxC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAIxD,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,oBAAoB,EAClB,QAAQ,GACR,OAAO,GACP,gBAAgB,GAChB,eAAe,GACf,uBAAuB,GACvB,OAAO,GACP,UAAU,GACV,aAAa,CAChB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CA8C1E"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * vite-plugin-react-server
3
+ * Copyright (c) Nico Brinkkemper
4
+ * MIT License
5
+ */
6
+ import { Transform } from 'node:stream';
7
+
8
+ function createRscToHtmlStream(options) {
9
+ const worker = options.worker;
10
+ if (!("postMessage" in worker)) {
11
+ throw new Error("Worker is not a valid worker");
12
+ }
13
+ let sequence = 0;
14
+ const stream = new Transform({
15
+ transform(chunk, _encoding, callback) {
16
+ try {
17
+ worker.postMessage({
18
+ type: "RSC_CHUNK",
19
+ id: options.route,
20
+ chunk,
21
+ sequence: sequence++
22
+ });
23
+ callback();
24
+ } catch (error) {
25
+ callback(error);
26
+ }
27
+ },
28
+ flush(callback) {
29
+ try {
30
+ worker.postMessage({
31
+ type: "RSC_END",
32
+ id: options.route
33
+ });
34
+ callback();
35
+ } catch (error) {
36
+ callback(error);
37
+ }
38
+ }
39
+ });
40
+ worker.postMessage({
41
+ type: "ROUTE_READY",
42
+ id: options.route,
43
+ // replace server with client
44
+ moduleRootPath: options.moduleRootPath,
45
+ moduleBaseURL: options.moduleBaseURL,
46
+ cssFiles: options.cssFiles,
47
+ pipeableStreamOptions: options.pipeableStreamOptions,
48
+ projectRoot: options.projectRoot
49
+ });
50
+ return stream;
51
+ }
52
+
53
+ export { createRscToHtmlStream };
54
+ //# sourceMappingURL=rscToHtmlStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rscToHtmlStream.js","sources":["../../../plugin/react-static/rscToHtmlStream.ts"],"sourcesContent":["/**\n * rscToHtmlStream.ts\n *\n * PURPOSE: Transforms RSC stream to HTML stream via worker communication\n *\n * This module:\n * 1. Takes RSC stream as input\n * 2. Communicates with worker to transform RSC to HTML\n * 3. Returns a writeable stream of HTML content\n * 4. Handles worker message processing and error cases\n */\n\nimport { Transform } from \"node:stream\";\nimport type {\n HtmlWorkerInputMessage,\n} from \"../worker/types.js\";\nimport type { CreateHandlerOptions } from \"../types.js\";\nimport type { Worker } from \"node:worker_threads\";\nimport type { ViteDevServer } from \"vite\";\n\nexport type RscToHtmlOptions = Pick<\n CreateHandlerOptions,\n | \"worker\"\n | \"route\"\n | \"moduleRootPath\"\n | \"moduleBaseURL\"\n | \"pipeableStreamOptions\"\n | \"build\"\n | \"cssFiles\"\n | \"projectRoot\"\n>;\n\n/**\n * Creates a transform stream that converts RSC content to HTML via worker\n *\n * @param options The options for RSC to HTML transformation\n * @returns A transform stream that outputs HTML content\n */\nexport function createRscToHtmlStream(options: RscToHtmlOptions): Transform {\n const worker = options.worker as Worker | ViteDevServer;\n if (!(\"postMessage\" in worker)) {\n throw new Error(\"Worker is not a valid worker\");\n }\n let sequence = 0;\n const stream = new Transform({\n transform(chunk, _encoding, callback) {\n try {\n worker.postMessage({\n type: \"RSC_CHUNK\",\n id: options.route,\n chunk,\n sequence: sequence++,\n } satisfies HtmlWorkerInputMessage);\n callback();\n } catch (error) {\n callback(error as Error);\n }\n },\n flush(callback) {\n try {\n worker.postMessage({\n type: \"RSC_END\",\n id: options.route,\n } satisfies HtmlWorkerInputMessage);\n callback();\n } catch (error) {\n callback(error as Error);\n }\n },\n });\n\n // Signal ready to receive HTML\n worker.postMessage({\n type: \"ROUTE_READY\",\n id: options.route,\n // replace server with client\n moduleRootPath: options.moduleRootPath,\n moduleBaseURL: options.moduleBaseURL,\n cssFiles: options.cssFiles,\n pipeableStreamOptions: options.pipeableStreamOptions,\n projectRoot: options.projectRoot,\n } satisfies HtmlWorkerInputMessage);\n\n return stream;\n}\n"],"names":[],"mappings":";;;;;;;AAsCO,SAAS,sBAAsB,OAAsC,EAAA;AAC1E,EAAA,MAAM,SAAS,OAAQ,CAAA,MAAA;AACvB,EAAI,IAAA,EAAE,iBAAiB,MAAS,CAAA,EAAA;AAC9B,IAAM,MAAA,IAAI,MAAM,8BAA8B,CAAA;AAAA;AAEhD,EAAA,IAAI,QAAW,GAAA,CAAA;AACf,EAAM,MAAA,MAAA,GAAS,IAAI,SAAU,CAAA;AAAA,IAC3B,SAAA,CAAU,KAAO,EAAA,SAAA,EAAW,QAAU,EAAA;AACpC,MAAI,IAAA;AACF,QAAA,MAAA,CAAO,WAAY,CAAA;AAAA,UACjB,IAAM,EAAA,WAAA;AAAA,UACN,IAAI,OAAQ,CAAA,KAAA;AAAA,UACZ,KAAA;AAAA,UACA,QAAU,EAAA,QAAA;AAAA,SACsB,CAAA;AAClC,QAAS,QAAA,EAAA;AAAA,eACF,KAAO,EAAA;AACd,QAAA,QAAA,CAAS,KAAc,CAAA;AAAA;AACzB,KACF;AAAA,IACA,MAAM,QAAU,EAAA;AACd,MAAI,IAAA;AACF,QAAA,MAAA,CAAO,WAAY,CAAA;AAAA,UACjB,IAAM,EAAA,SAAA;AAAA,UACN,IAAI,OAAQ,CAAA;AAAA,SACoB,CAAA;AAClC,QAAS,QAAA,EAAA;AAAA,eACF,KAAO,EAAA;AACd,QAAA,QAAA,CAAS,KAAc,CAAA;AAAA;AACzB;AACF,GACD,CAAA;AAGD,EAAA,MAAA,CAAO,WAAY,CAAA;AAAA,IACjB,IAAM,EAAA,aAAA;AAAA,IACN,IAAI,OAAQ,CAAA,KAAA;AAAA;AAAA,IAEZ,gBAAgB,OAAQ,CAAA,cAAA;AAAA,IACxB,eAAe,OAAQ,CAAA,aAAA;AAAA,IACvB,UAAU,OAAQ,CAAA,QAAA;AAAA,IAClB,uBAAuB,OAAQ,CAAA,qBAAA;AAAA,IAC/B,aAAa,OAAQ,CAAA;AAAA,GACW,CAAA;AAElC,EAAO,OAAA,MAAA;AACT;;;;"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=streamHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamHandler.d.ts","sourceRoot":"","sources":["../../../plugin/react-static/streamHandler.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export {};
@@ -1,2 +1,13 @@
1
+ import type { FileWriteEvent } from "../types.js";
1
2
  export type ReactStaticPluginOptions = {};
3
+ export type ReactStaticEvent = FileWriteEvent | {
4
+ type: 'build.start';
5
+ data: {
6
+ pages: string[];
7
+ files: Array<[string, {
8
+ page: string;
9
+ props?: string;
10
+ }]>;
11
+ };
12
+ };
2
13
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../plugin/react-static/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,wBAAwB,GAAG,EAEtC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../plugin/react-static/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,MAAM,wBAAwB,GAAG,EAEtC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG;IAC9C,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC,CAAC;KAC1D,CAAC;CACH,CAAC"}
@@ -1,19 +1,36 @@
1
- type ResolvePageOptions = {
2
- pageModule: Record<string, any>;
3
- path: string;
4
- url: string;
5
- exportName: string;
1
+ type ResolvePageOptions<N extends string> = {
2
+ id: string;
3
+ exportName: N;
4
+ loader: (id: string) => Promise<any>;
6
5
  };
7
- type ResolvePageResult = {
6
+ type ResolvePageResult<T, N extends string> = {
8
7
  type: "success";
9
- key: string;
10
- Page: any;
8
+ Page: T;
9
+ module: {
10
+ [key in N]: T;
11
+ };
11
12
  } | {
12
13
  type: "error";
13
14
  error: Error;
14
15
  } | {
15
16
  type: "skip";
16
17
  };
17
- export declare function resolvePage({ pageModule, path, url, exportName, }: ResolvePageOptions): Promise<ResolvePageResult>;
18
+ /**
19
+ * Resolves a page component from a module.
20
+ *
21
+ * During development (ssrLoadModule):
22
+ * - Real modules have exports available directly on the module object
23
+ * - Virtual modules have exports stored in temporaryReferences
24
+ *
25
+ * @param options.id - The module ID to resolve
26
+ * @param options.exportName - The name of the export to resolve (e.g. 'Page')
27
+ * @param options.loader - The loader function to use for loading the module
28
+ *
29
+ * @returns A result object containing:
30
+ * - type: "success" | "error" | "skip"
31
+ * - Page: The resolved page component if successful
32
+ * - error: Error message if failed
33
+ */
34
+ export declare const resolvePage: <T, N extends string>({ id, exportName, loader, }: ResolvePageOptions<N>) => Promise<ResolvePageResult<T, N>>;
18
35
  export {};
19
36
  //# sourceMappingURL=resolvePage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolvePage.d.ts","sourceRoot":"","sources":["../../plugin/resolvePage.ts"],"names":[],"mappings":"AAEA,KAAK,kBAAkB,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,iBAAiB,GAClB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,GAAG,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErB,wBAAsB,WAAW,CAAC,EAChC,UAAU,EACV,IAAI,EACJ,GAAG,EACH,UAAU,GACX,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAsDjD"}
1
+ {"version":3,"file":"resolvePage.d.ts","sourceRoot":"","sources":["../../plugin/resolvePage.ts"],"names":[],"mappings":"AACA,KAAK,kBAAkB,CAAC,CAAC,SAAS,MAAM,IAAI;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,CAAC,CAAC;IACd,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CACtC,CAAC;AAEF,KAAK,iBAAiB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,IACtC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE;SAAG,GAAG,IAAI,CAAC,GAAG,CAAC;KAAE,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErB;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,WAAW,GAAU,CAAC,EAAE,CAAC,SAAS,MAAM,+BAIlD,kBAAkB,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAmDzD,CAAC"}
@@ -3,55 +3,57 @@
3
3
  * Copyright (c) Nico Brinkkemper
4
4
  * MIT License
5
5
  */
6
- import { stashedPages } from './config/resolvePages.js';
7
-
8
- async function resolvePage({
9
- pageModule,
10
- path,
11
- url,
12
- exportName
13
- }) {
14
- if (stashedPages.length > 0 && stashedPages.includes(path)) {
15
- return {
16
- type: "success",
17
- key: path,
18
- Page: pageModule
19
- };
20
- }
21
- if (!pageModule) {
22
- return {
23
- type: "error",
24
- error: new Error(`pageModule is ${typeof pageModule}`)
25
- };
26
- }
27
- const keys = typeof pageModule === "object" && pageModule != null ? Object.keys(pageModule) : [];
28
- const found = keys.find((v) => v === exportName || v === url || v === path);
29
- if (found) {
30
- if (typeof pageModule[found] === "function") {
6
+ const resolvePage = async ({
7
+ id,
8
+ exportName,
9
+ loader
10
+ }) => {
11
+ const pageLoadResult = await (async () => {
12
+ try {
31
13
  return {
32
14
  type: "success",
33
- key: found,
34
- Page: pageModule[found]
15
+ key: id,
16
+ module: await loader(id)
35
17
  };
36
- } else {
37
- if (typeof pageModule === "object" && pageModule != null && Object.keys(pageModule).includes("type"))
38
- return pageModule;
18
+ } catch (error) {
39
19
  return {
40
20
  type: "error",
41
- [exportName]: () => found,
42
- error: pageModule[found]["error"]
21
+ error: error instanceof Error ? error : new Error(String(error))
43
22
  };
44
23
  }
24
+ })();
25
+ if (pageLoadResult.type !== "success") {
26
+ return pageLoadResult;
27
+ }
28
+ const { module } = pageLoadResult;
29
+ const Page = module[exportName];
30
+ if (module instanceof Error) {
31
+ return {
32
+ type: "error",
33
+ error: module
34
+ };
35
+ } else if (!(exportName in module)) {
36
+ return {
37
+ type: "error",
38
+ error: new Error(`Export ${exportName} not found in module ${id}`)
39
+ };
40
+ } else if (!Page) {
41
+ return {
42
+ type: "error",
43
+ error: new Error(`Export ${exportName} is null or undefined in module ${id}`)
44
+ };
45
+ } else if (Page instanceof Error) {
46
+ return {
47
+ type: "error",
48
+ error: Page
49
+ };
45
50
  }
46
- if (keys.includes("type")) return pageModule;
47
51
  return {
48
- type: "error",
49
- error: new Error(
50
- `Could not find Page export "${exportName}" in "${path}". ${typeof pageModule === "object" && pageModule != null ? keys.length ? "Available exports: " + keys.join(", ") : 'The object was defined but has no properties. "' + JSON.stringify(pageModule) + '"' : "typeof pageModule =" + typeof pageModule}`,
51
- { cause: pageModule }
52
- )
52
+ type: "success",
53
+ Page,
54
+ module
53
55
  };
54
- }
56
+ };
55
57
 
56
58
  export { resolvePage };
57
59
  //# sourceMappingURL=resolvePage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolvePage.js","sources":["../../plugin/resolvePage.ts"],"sourcesContent":["import { stashedPages } from \"./config/resolvePages.js\";\n\ntype ResolvePageOptions = {\n pageModule: Record<string, any>;\n path: string;\n url: string;\n exportName: string;\n};\n\ntype ResolvePageResult =\n | { type: \"success\"; key: string; Page: any }\n | { type: \"error\"; error: Error }\n | { type: \"skip\" };\n\nexport async function resolvePage({\n pageModule,\n path,\n url,\n exportName,\n}: ResolvePageOptions): Promise<ResolvePageResult> {\n if(stashedPages.length > 0 && stashedPages.includes(path)){\n return {\n type: \"success\",\n key: path,\n Page: pageModule,\n }\n }\n if (!pageModule) {\n return {\n type: \"error\",\n error: new Error(`pageModule is ${typeof pageModule}`),\n };\n }\n const keys =\n typeof pageModule === \"object\" && pageModule != null\n ? Object.keys(pageModule)\n : [];\n const found = keys.find((v) => v === exportName || v === url || v === path);\n if (found) {\n if (typeof pageModule[found] === \"function\") {\n return {\n type: \"success\",\n key: found,\n Page: pageModule[found],\n };\n } else {\n if (\n typeof pageModule === \"object\" &&\n pageModule != null &&\n Object.keys(pageModule).includes(\"type\")\n )\n return pageModule as ResolvePageResult;\n return {\n type: \"error\",\n [exportName]: () => found,\n error: pageModule[found][\"error\"],\n };\n }\n }\n if (keys.includes(\"type\")) return pageModule as ResolvePageResult;\n return {\n type: \"error\",\n error: new Error(\n `Could not find Page export \"${exportName}\" in \"${path}\". ${\n typeof pageModule === \"object\" && pageModule != null\n ? keys.length\n ? \"Available exports: \" + keys.join(\", \")\n : \"The object was defined but has no properties. \\\"\" + JSON.stringify(pageModule) + \"\\\"\"\n : \"typeof pageModule =\" + typeof pageModule\n }`,\n { cause: pageModule }\n ),\n };\n}\n"],"names":[],"mappings":";;;;;;;AAcA,eAAsB,WAAY,CAAA;AAAA,EAChC,UAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAA;AAAA,EACA;AACF,CAAmD,EAAA;AACjD,EAAA,IAAG,aAAa,MAAS,GAAA,CAAA,IAAK,YAAa,CAAA,QAAA,CAAS,IAAI,CAAE,EAAA;AACxD,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,SAAA;AAAA,MACN,GAAK,EAAA,IAAA;AAAA,MACL,IAAM,EAAA;AAAA,KACR;AAAA;AAEF,EAAA,IAAI,CAAC,UAAY,EAAA;AACf,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,OAAA;AAAA,MACN,OAAO,IAAI,KAAA,CAAM,CAAiB,cAAA,EAAA,OAAO,UAAU,CAAE,CAAA;AAAA,KACvD;AAAA;AAEF,EAAM,MAAA,IAAA,GACJ,OAAO,UAAA,KAAe,QAAY,IAAA,UAAA,IAAc,OAC5C,MAAO,CAAA,IAAA,CAAK,UAAU,CAAA,GACtB,EAAC;AACP,EAAM,MAAA,KAAA,GAAQ,IAAK,CAAA,IAAA,CAAK,CAAC,CAAA,KAAM,MAAM,UAAc,IAAA,CAAA,KAAM,GAAO,IAAA,CAAA,KAAM,IAAI,CAAA;AAC1E,EAAA,IAAI,KAAO,EAAA;AACT,IAAA,IAAI,OAAO,UAAA,CAAW,KAAK,CAAA,KAAM,UAAY,EAAA;AAC3C,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,SAAA;AAAA,QACN,GAAK,EAAA,KAAA;AAAA,QACL,IAAA,EAAM,WAAW,KAAK;AAAA,OACxB;AAAA,KACK,MAAA;AACL,MACE,IAAA,OAAO,UAAe,KAAA,QAAA,IACtB,UAAc,IAAA,IAAA,IACd,OAAO,IAAK,CAAA,UAAU,CAAE,CAAA,QAAA,CAAS,MAAM,CAAA;AAEvC,QAAO,OAAA,UAAA;AACT,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,OAAA;AAAA,QACN,CAAC,UAAU,GAAG,MAAM,KAAA;AAAA,QACpB,KAAO,EAAA,UAAA,CAAW,KAAK,CAAA,CAAE,OAAO;AAAA,OAClC;AAAA;AACF;AAEF,EAAA,IAAI,IAAK,CAAA,QAAA,CAAS,MAAM,CAAA,EAAU,OAAA,UAAA;AAClC,EAAO,OAAA;AAAA,IACL,IAAM,EAAA,OAAA;AAAA,IACN,OAAO,IAAI,KAAA;AAAA,MACT,CAAA,4BAAA,EAA+B,UAAU,CAAA,MAAA,EAAS,IAAI,CAAA,GAAA,EACpD,OAAO,UAAe,KAAA,QAAA,IAAY,UAAc,IAAA,IAAA,GAC5C,IAAK,CAAA,MAAA,GACH,wBAAwB,IAAK,CAAA,IAAA,CAAK,IAAI,CAAA,GACtC,iDAAqD,GAAA,IAAA,CAAK,SAAU,CAAA,UAAU,CAAI,GAAA,GAAA,GACpF,qBAAwB,GAAA,OAAO,UACrC,CAAA,CAAA;AAAA,MACA,EAAE,OAAO,UAAW;AAAA;AACtB,GACF;AACF;;;;"}
1
+ {"version":3,"file":"resolvePage.js","sources":["../../plugin/resolvePage.ts"],"sourcesContent":["\ntype ResolvePageOptions<N extends string> = {\n id: string;\n exportName: N;\n loader: (id: string) => Promise<any>;\n};\n\ntype ResolvePageResult<T, N extends string> =\n | { type: \"success\"; Page: T; module: { [key in N]: T } }\n | { type: \"error\"; error: Error }\n | { type: \"skip\" };\n\n/**\n * Resolves a page component from a module.\n *\n * During development (ssrLoadModule):\n * - Real modules have exports available directly on the module object\n * - Virtual modules have exports stored in temporaryReferences\n * \n * @param options.id - The module ID to resolve\n * @param options.exportName - The name of the export to resolve (e.g. 'Page')\n * @param options.loader - The loader function to use for loading the module\n *\n * @returns A result object containing:\n * - type: \"success\" | \"error\" | \"skip\"\n * - Page: The resolved page component if successful\n * - error: Error message if failed\n */\nexport const resolvePage = async <T, N extends string>({\n id,\n exportName,\n loader,\n}: ResolvePageOptions<N>): Promise<ResolvePageResult<T, N>> => {\n // Check if this is a stashed page that needs special handling\n const pageLoadResult = await (async (): Promise<\n | { type: \"success\"; key: string; module: { [key in N]: T } }\n | { type: \"error\"; error: Error; module?: never }\n > => {\n try {\n return {\n type: \"success\",\n key: id,\n module: await loader(id),\n };\n } catch (error) {\n return {\n type: \"error\",\n error: error instanceof Error ? error : new Error(String(error)),\n };\n }\n })();\n\n if (pageLoadResult.type !== \"success\") {\n return pageLoadResult;\n }\n const { module } = pageLoadResult;\n const Page = module[exportName as N];\n if (module instanceof Error) {\n return {\n type: \"error\",\n error: module,\n };\n } else if (!(exportName in module)) {\n return {\n type: \"error\",\n error: new Error(`Export ${exportName} not found in module ${id}`),\n };\n } else if (!Page) {\n return {\n type: \"error\",\n error: new Error(`Export ${exportName} is null or undefined in module ${id}`),\n };\n } else if (Page instanceof Error) {\n return {\n type: \"error\",\n error: Page,\n };\n }\n return {\n type: \"success\",\n Page,\n module: module as { [key in N]: T },\n };\n};\n"],"names":[],"mappings":";;;;;AA4BO,MAAM,cAAc,OAA4B;AAAA,EACrD,EAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAA+D,KAAA;AAE7D,EAAM,MAAA,cAAA,GAAiB,OAAO,YAGzB;AACH,IAAI,IAAA;AACF,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,SAAA;AAAA,QACN,GAAK,EAAA,EAAA;AAAA,QACL,MAAA,EAAQ,MAAM,MAAA,CAAO,EAAE;AAAA,OACzB;AAAA,aACO,KAAO,EAAA;AACd,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,OAAA;AAAA,QACN,KAAA,EAAO,iBAAiB,KAAQ,GAAA,KAAA,GAAQ,IAAI,KAAM,CAAA,MAAA,CAAO,KAAK,CAAC;AAAA,OACjE;AAAA;AACF,GACC,GAAA;AAEH,EAAI,IAAA,cAAA,CAAe,SAAS,SAAW,EAAA;AACrC,IAAO,OAAA,cAAA;AAAA;AAET,EAAM,MAAA,EAAE,QAAW,GAAA,cAAA;AACnB,EAAM,MAAA,IAAA,GAAO,OAAO,UAAe,CAAA;AACnC,EAAA,IAAI,kBAAkB,KAAO,EAAA;AAC3B,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,OAAA;AAAA,MACN,KAAO,EAAA;AAAA,KACT;AAAA,GACF,MAAA,IAAW,EAAE,UAAA,IAAc,MAAS,CAAA,EAAA;AAClC,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,OAAA;AAAA,MACN,OAAO,IAAI,KAAA,CAAM,UAAU,UAAU,CAAA,qBAAA,EAAwB,EAAE,CAAE,CAAA;AAAA,KACnE;AAAA,GACF,MAAA,IAAW,CAAC,IAAM,EAAA;AAChB,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,OAAA;AAAA,MACN,OAAO,IAAI,KAAA,CAAM,UAAU,UAAU,CAAA,gCAAA,EAAmC,EAAE,CAAE,CAAA;AAAA,KAC9E;AAAA,GACF,MAAA,IAAW,gBAAgB,KAAO,EAAA;AAChC,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,OAAA;AAAA,MACN,KAAO,EAAA;AAAA,KACT;AAAA;AAEF,EAAO,OAAA;AAAA,IACL,IAAM,EAAA,SAAA;AAAA,IACN,IAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
@@ -1,19 +1,52 @@
1
- type ResolvePropsOptions = {
2
- propsModule: Record<string, any>;
3
- path: string;
4
- exportName: string;
1
+ type ResolvePropsOptions<N extends string> = {
2
+ id: string;
5
3
  url: string;
4
+ exportName: N;
5
+ loader: (id: string) => Promise<any>;
6
6
  };
7
- type ResolvePropsResult = {
7
+ type ResolvePropsResult<T, N extends string> = {
8
8
  type: "success";
9
9
  key: string;
10
- props: any;
10
+ props: T;
11
+ module?: {
12
+ [key in N]: T;
13
+ };
11
14
  } | {
12
15
  type: "error";
13
16
  error: Error;
14
17
  } | {
15
18
  type: "skip";
16
19
  };
17
- export declare function resolveProps({ propsModule, path, exportName, url, }: ResolvePropsOptions): Promise<ResolvePropsResult>;
20
+ /**
21
+ * Resolves props from a module, handling both real and virtual modules.
22
+ *
23
+ * During development (ssrLoadModule):
24
+ * - Real modules have exports available directly on the module object
25
+ * - Virtual modules have exports stored in temporaryReferences
26
+ *
27
+ * During build (createBuildLoader):
28
+ * - Transformed modules (with ast/code) have exports as direct properties
29
+ * - The exports array contains just the names of those exports
30
+ * - We store the module in temporaryReferences for later use
31
+ * - We access exports directly from the module object
32
+ *
33
+ * Props can be:
34
+ * 1. A function that takes a URL and returns props
35
+ * 2. A direct object of props
36
+ * 3. A renamed export (where the actual export name differs from the expected name)
37
+ *
38
+ * @param options.propsModule - The module object from ssrLoadModule or createBuildLoader
39
+ * @param options.path - The normalized path to the module
40
+ * @param options.url - The URL route this page handles
41
+ * @param options.exportName - The name of the export to resolve (e.g. 'props')
42
+ * @param options.temporaryReferences - WeakMap used to store and retrieve virtual module references
43
+ *
44
+ * @returns A result object containing:
45
+ * - type: "success" | "error" | "skip"
46
+ * - key: The export name if successful
47
+ * - props: The resolved props if successful
48
+ * - error: Error message if failed
49
+ */
50
+ export declare const resolveProps: <T, N extends string>({ id, url, exportName, loader, }: ResolvePropsOptions<N>) => Promise<ResolvePropsResult<T, N>>;
18
51
  export {};
19
52
  //# sourceMappingURL=resolveProps.d.ts.map
@@ -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":"AACA,KAAK,mBAAmB,CAAC,CAAC,SAAS,MAAM,IAAI;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,CAAC,CAAC;IACd,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CACtC,CAAC;AAEF,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,IACvC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC;IAAC,MAAM,CAAC,EAAG;SAAG,GAAG,IAAI,CAAC,GAAG,CAAC;KAAE,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,YAAY,GAAU,CAAC,EAAE,CAAC,SAAS,MAAM,oCAKnD,mBAAmB,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CA8H3D,CAAC"}