vite-plugin-react-server 1.1.12 → 1.1.13

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 (373) hide show
  1. package/dist/package.json +10 -8
  2. package/dist/plugin/components/css-collector-elements.d.ts +4 -2
  3. package/dist/plugin/components/css-collector-elements.d.ts.map +1 -1
  4. package/dist/plugin/components/css-collector-elements.js +21 -7
  5. package/dist/plugin/components/css-collector-elements.js.map +1 -1
  6. package/dist/plugin/components/css-collector.d.ts +4 -5
  7. package/dist/plugin/components/css-collector.d.ts.map +1 -1
  8. package/dist/plugin/components/css-collector.js +5 -9
  9. package/dist/plugin/components/css-collector.js.map +1 -1
  10. package/dist/plugin/components/html.d.ts +1 -1
  11. package/dist/plugin/components/html.d.ts.map +1 -1
  12. package/dist/plugin/components/html.js +14 -3
  13. package/dist/plugin/components/html.js.map +1 -1
  14. package/dist/plugin/config/autoDiscover/resolveAutoDiscover.d.ts +4 -4
  15. package/dist/plugin/config/autoDiscover/resolveAutoDiscover.d.ts.map +1 -1
  16. package/dist/plugin/config/autoDiscover/resolveAutoDiscover.js +14 -9
  17. package/dist/plugin/config/autoDiscover/resolveAutoDiscover.js.map +1 -1
  18. package/dist/plugin/config/defaults.d.ts +66 -12
  19. package/dist/plugin/config/defaults.d.ts.map +1 -1
  20. package/dist/plugin/config/defaults.js +69 -15
  21. package/dist/plugin/config/defaults.js.map +1 -1
  22. package/dist/plugin/config/resolveAutoDiscoverMatcher.d.ts +5 -0
  23. package/dist/plugin/config/resolveAutoDiscoverMatcher.d.ts.map +1 -0
  24. package/dist/plugin/config/resolveAutoDiscoverMatcher.js +25 -0
  25. package/dist/plugin/config/resolveAutoDiscoverMatcher.js.map +1 -0
  26. package/dist/plugin/config/resolveEnv.d.ts.map +1 -1
  27. package/dist/plugin/config/resolveEnv.js +16 -5
  28. package/dist/plugin/config/resolveEnv.js.map +1 -1
  29. package/dist/plugin/config/resolveOptions.d.ts +3 -3
  30. package/dist/plugin/config/resolveOptions.d.ts.map +1 -1
  31. package/dist/plugin/config/resolveOptions.js +59 -87
  32. package/dist/plugin/config/resolveOptions.js.map +1 -1
  33. package/dist/plugin/config/resolveUserConfig.d.ts +4 -4
  34. package/dist/plugin/config/resolveUserConfig.d.ts.map +1 -1
  35. package/dist/plugin/config/resolveUserConfig.js +8 -1
  36. package/dist/plugin/config/resolveUserConfig.js.map +1 -1
  37. package/dist/plugin/error/toError.d.ts +3 -0
  38. package/dist/plugin/error/toError.d.ts.map +1 -1
  39. package/dist/plugin/error/toError.js +33 -4
  40. package/dist/plugin/error/toError.js.map +1 -1
  41. package/dist/plugin/helpers/cleanObject.d.ts.map +1 -1
  42. package/dist/plugin/helpers/cleanObject.js +19 -5
  43. package/dist/plugin/helpers/cleanObject.js.map +1 -1
  44. package/dist/plugin/helpers/collectViteModuleGraphCss.d.ts +3 -3
  45. package/dist/plugin/helpers/collectViteModuleGraphCss.d.ts.map +1 -1
  46. package/dist/plugin/helpers/collectViteModuleGraphCss.js.map +1 -1
  47. package/dist/plugin/helpers/createCssProps.d.ts +4 -3
  48. package/dist/plugin/helpers/createCssProps.d.ts.map +1 -1
  49. package/dist/plugin/helpers/createCssProps.js +7 -2
  50. package/dist/plugin/helpers/createCssProps.js.map +1 -1
  51. package/dist/plugin/helpers/createHandler.d.ts +4 -3
  52. package/dist/plugin/helpers/createHandler.d.ts.map +1 -1
  53. package/dist/plugin/helpers/createHandler.js +1 -1
  54. package/dist/plugin/helpers/createHandler.js.map +1 -1
  55. package/dist/plugin/helpers/createRscStream.d.ts +2 -2
  56. package/dist/plugin/helpers/createRscStream.d.ts.map +1 -1
  57. package/dist/plugin/helpers/createRscStream.js +15 -5
  58. package/dist/plugin/helpers/createRscStream.js.map +1 -1
  59. package/dist/plugin/helpers/index.d.ts +2 -2
  60. package/dist/plugin/helpers/index.d.ts.map +1 -1
  61. package/dist/plugin/helpers/index.js +2 -2
  62. package/dist/plugin/helpers/inputNormalizer.d.ts.map +1 -1
  63. package/dist/plugin/helpers/inputNormalizer.js +4 -1
  64. package/dist/plugin/helpers/inputNormalizer.js.map +1 -1
  65. package/dist/plugin/helpers/moduleResolver.d.ts +3 -0
  66. package/dist/plugin/helpers/moduleResolver.d.ts.map +1 -0
  67. package/dist/plugin/helpers/moduleResolver.js +25 -0
  68. package/dist/plugin/helpers/requestInfo.d.ts +18 -3
  69. package/dist/plugin/helpers/requestInfo.d.ts.map +1 -1
  70. package/dist/plugin/helpers/requestInfo.js +75 -11
  71. package/dist/plugin/helpers/requestInfo.js.map +1 -1
  72. package/dist/plugin/helpers/resolvePage.d.ts.map +1 -1
  73. package/dist/plugin/helpers/resolvePage.js +2 -3
  74. package/dist/plugin/helpers/resolvePage.js.map +1 -1
  75. package/dist/plugin/helpers/resolvePageAndProps.d.ts +4 -3
  76. package/dist/plugin/helpers/resolvePageAndProps.d.ts.map +1 -1
  77. package/dist/plugin/helpers/resolvePageAndProps.js.map +1 -1
  78. package/dist/plugin/helpers/serializeUserOptions.d.ts +3 -2
  79. package/dist/plugin/helpers/serializeUserOptions.d.ts.map +1 -1
  80. package/dist/plugin/helpers/serializeUserOptions.js +13 -1
  81. package/dist/plugin/helpers/serializeUserOptions.js.map +1 -1
  82. package/dist/plugin/helpers/sourceMap.d.ts +8 -0
  83. package/dist/plugin/helpers/sourceMap.d.ts.map +1 -0
  84. package/dist/plugin/helpers/sourceMap.js +136 -0
  85. package/dist/plugin/helpers.js +1 -1
  86. package/dist/plugin/loader/createBuildLoader.d.ts +7 -22
  87. package/dist/plugin/loader/createBuildLoader.d.ts.map +1 -1
  88. package/dist/plugin/loader/createBuildLoader.js +79 -65
  89. package/dist/plugin/loader/createBuildLoader.js.map +1 -1
  90. package/dist/plugin/loader/createDefaultLoader.d.ts +13 -0
  91. package/dist/plugin/loader/createDefaultLoader.d.ts.map +1 -0
  92. package/dist/plugin/loader/createDefaultLoader.js +47 -0
  93. package/dist/plugin/loader/css-loader.development.d.ts +1 -0
  94. package/dist/plugin/loader/css-loader.development.d.ts.map +1 -1
  95. package/dist/plugin/loader/css-loader.development.js +1 -1
  96. package/dist/plugin/loader/css-loader.development.js.map +1 -1
  97. package/dist/plugin/loader/handleExports.d.ts +33 -0
  98. package/dist/plugin/loader/handleExports.d.ts.map +1 -0
  99. package/dist/plugin/loader/handleExports.js +174 -0
  100. package/dist/plugin/loader/handleExports.js.map +1 -0
  101. package/dist/plugin/loader/index.d.ts +1 -1
  102. package/dist/plugin/loader/index.d.ts.map +1 -1
  103. package/dist/plugin/loader/index.js +4 -1
  104. package/dist/plugin/loader/parse.d.ts +6 -0
  105. package/dist/plugin/loader/parse.d.ts.map +1 -0
  106. package/dist/plugin/loader/parse.js +23 -0
  107. package/dist/plugin/loader/parse.js.map +1 -0
  108. package/dist/plugin/loader/react-loader.client.d.ts +2 -0
  109. package/dist/plugin/loader/react-loader.client.d.ts.map +1 -0
  110. package/dist/plugin/loader/react-loader.client.js +2 -0
  111. package/dist/plugin/loader/react-loader.d.ts +1 -12
  112. package/dist/plugin/loader/react-loader.d.ts.map +1 -1
  113. package/dist/plugin/loader/react-loader.js +5 -687
  114. package/dist/plugin/loader/react-loader.js.map +1 -1
  115. package/dist/plugin/loader/react-loader.server.d.ts +21 -0
  116. package/dist/plugin/loader/react-loader.server.d.ts.map +1 -0
  117. package/dist/plugin/loader/react-loader.server.js +69 -0
  118. package/dist/plugin/loader/sourceMap.d.ts +35 -0
  119. package/dist/plugin/loader/sourceMap.d.ts.map +1 -0
  120. package/dist/plugin/loader/sourceMap.js +105 -0
  121. package/dist/plugin/loader/temporaryReferences.d.ts +1 -1
  122. package/dist/plugin/loader/temporaryReferences.d.ts.map +1 -1
  123. package/dist/plugin/loader/transformModuleIfNeeded.d.ts +2 -0
  124. package/dist/plugin/loader/transformModuleIfNeeded.d.ts.map +1 -0
  125. package/dist/plugin/loader/transformModuleIfNeeded.js +27 -0
  126. package/dist/plugin/loader/transformModuleIfNeeded.js.map +1 -0
  127. package/dist/plugin/loader/transformModuleWithPreservedFunctions.d.ts +27 -0
  128. package/dist/plugin/loader/transformModuleWithPreservedFunctions.d.ts.map +1 -0
  129. package/dist/plugin/loader/transformModuleWithPreservedFunctions.js +52 -0
  130. package/dist/plugin/loader/transformModuleWithPreservedFunctions.js.map +1 -0
  131. package/dist/plugin/loader/types.d.ts +8 -0
  132. package/dist/plugin/loader/types.d.ts.map +1 -0
  133. package/dist/plugin/loader/types.js +1 -0
  134. package/dist/plugin/plugin.client.d.ts +2 -2
  135. package/dist/plugin/plugin.client.d.ts.map +1 -1
  136. package/dist/plugin/plugin.client.js +2 -3
  137. package/dist/plugin/plugin.client.js.map +1 -1
  138. package/dist/plugin/plugin.server.d.ts +2 -2
  139. package/dist/plugin/plugin.server.d.ts.map +1 -1
  140. package/dist/plugin/plugin.server.js +2 -2
  141. package/dist/plugin/plugin.server.js.map +1 -1
  142. package/dist/plugin/preserver/plugin.d.ts +2 -2
  143. package/dist/plugin/preserver/plugin.d.ts.map +1 -1
  144. package/dist/plugin/preserver/plugin.js +6 -2
  145. package/dist/plugin/preserver/plugin.js.map +1 -1
  146. package/dist/plugin/react-client/{server.d.ts → configureWorkerRequestHandler.d.ts} +4 -4
  147. package/dist/plugin/react-client/configureWorkerRequestHandler.d.ts.map +1 -0
  148. package/dist/plugin/react-client/{server.js → configureWorkerRequestHandler.js} +11 -8
  149. package/dist/plugin/react-client/configureWorkerRequestHandler.js.map +1 -0
  150. package/dist/plugin/react-client/createMessageHandlers.d.ts +1 -1
  151. package/dist/plugin/react-client/createMessageHandlers.d.ts.map +1 -1
  152. package/dist/plugin/react-client/createMessageHandlers.js +18 -11
  153. package/dist/plugin/react-client/createMessageHandlers.js.map +1 -1
  154. package/dist/plugin/react-client/createWorkerStream.d.ts +5 -3
  155. package/dist/plugin/react-client/createWorkerStream.d.ts.map +1 -1
  156. package/dist/plugin/react-client/createWorkerStream.js +61 -27
  157. package/dist/plugin/react-client/createWorkerStream.js.map +1 -1
  158. package/dist/plugin/react-client/handleWorkerRscStream.d.ts +1 -1
  159. package/dist/plugin/react-client/handleWorkerRscStream.d.ts.map +1 -1
  160. package/dist/plugin/react-client/handleWorkerRscStream.js +14 -4
  161. package/dist/plugin/react-client/handleWorkerRscStream.js.map +1 -1
  162. package/dist/plugin/react-client/plugin.d.ts +2 -2
  163. package/dist/plugin/react-client/plugin.d.ts.map +1 -1
  164. package/dist/plugin/react-client/plugin.js +7 -8
  165. package/dist/plugin/react-client/plugin.js.map +1 -1
  166. package/dist/plugin/react-client/restartWorker.d.ts +1 -1
  167. package/dist/plugin/react-client/restartWorker.d.ts.map +1 -1
  168. package/dist/plugin/react-client/restartWorker.js +9 -3
  169. package/dist/plugin/react-client/restartWorker.js.map +1 -1
  170. package/dist/plugin/react-server/configureReactServer.d.ts +9 -0
  171. package/dist/plugin/react-server/configureReactServer.d.ts.map +1 -0
  172. package/dist/plugin/react-server/{server.js → configureReactServer.js} +26 -8
  173. package/dist/plugin/react-server/configureReactServer.js.map +1 -0
  174. package/dist/plugin/react-server/handleServerAction.d.ts +5 -0
  175. package/dist/plugin/react-server/handleServerAction.d.ts.map +1 -0
  176. package/dist/plugin/react-server/handleServerAction.js +145 -0
  177. package/dist/plugin/react-server/handleServerAction.js.map +1 -0
  178. package/dist/plugin/react-server/plugin.d.ts +2 -2
  179. package/dist/plugin/react-server/plugin.d.ts.map +1 -1
  180. package/dist/plugin/react-server/plugin.js +1 -1
  181. package/dist/plugin/react-server/plugin.js.map +1 -1
  182. package/dist/plugin/react-static/collectHtmlWorkerContent.d.ts +2 -2
  183. package/dist/plugin/react-static/collectHtmlWorkerContent.d.ts.map +1 -1
  184. package/dist/plugin/react-static/collectHtmlWorkerContent.js.map +1 -1
  185. package/dist/plugin/react-static/collectRscContent.d.ts +2 -2
  186. package/dist/plugin/react-static/collectRscContent.d.ts.map +1 -1
  187. package/dist/plugin/react-static/collectRscContent.js.map +1 -1
  188. package/dist/plugin/react-static/configurePreviewServer.d.ts +3 -3
  189. package/dist/plugin/react-static/configurePreviewServer.d.ts.map +1 -1
  190. package/dist/plugin/react-static/configurePreviewServer.js +18 -7
  191. package/dist/plugin/react-static/configurePreviewServer.js.map +1 -1
  192. package/dist/plugin/react-static/plugin.d.ts +2 -2
  193. package/dist/plugin/react-static/plugin.d.ts.map +1 -1
  194. package/dist/plugin/react-static/plugin.js +28 -12
  195. package/dist/plugin/react-static/plugin.js.map +1 -1
  196. package/dist/plugin/react-static/renderPage.d.ts +2 -2
  197. package/dist/plugin/react-static/renderPage.d.ts.map +1 -1
  198. package/dist/plugin/react-static/renderPage.js.map +1 -1
  199. package/dist/plugin/react-static/renderPages.d.ts +2 -2
  200. package/dist/plugin/react-static/renderPages.d.ts.map +1 -1
  201. package/dist/plugin/react-static/renderPages.js.map +1 -1
  202. package/dist/plugin/react-static/renderStreams.d.ts +2 -2
  203. package/dist/plugin/react-static/renderStreams.d.ts.map +1 -1
  204. package/dist/plugin/react-static/renderStreams.js +4 -4
  205. package/dist/plugin/react-static/renderStreams.js.map +1 -1
  206. package/dist/plugin/source-map/createMappingsSerializer.d.ts +2 -0
  207. package/dist/plugin/source-map/createMappingsSerializer.d.ts.map +1 -0
  208. package/dist/plugin/source-map/createMappingsSerializer.js +159 -0
  209. package/dist/plugin/source-map/readMappings.d.ts +2 -0
  210. package/dist/plugin/source-map/readMappings.d.ts.map +1 -0
  211. package/dist/plugin/source-map/readMappings.js +201 -0
  212. package/dist/plugin/transformer/index.d.ts +0 -1
  213. package/dist/plugin/transformer/index.d.ts.map +1 -1
  214. package/dist/plugin/transformer/index.js +0 -1
  215. package/dist/plugin/transformer/plugin.client.d.ts +1 -3
  216. package/dist/plugin/transformer/plugin.client.d.ts.map +1 -1
  217. package/dist/plugin/transformer/plugin.client.js +1 -84
  218. package/dist/plugin/transformer/plugin.server.d.ts +2 -2
  219. package/dist/plugin/transformer/plugin.server.d.ts.map +1 -1
  220. package/dist/plugin/transformer/plugin.server.js +52 -20
  221. package/dist/plugin/transformer/plugin.server.js.map +1 -1
  222. package/dist/plugin/types.d.ts +89 -119
  223. package/dist/plugin/types.d.ts.map +1 -1
  224. package/dist/plugin/utils/callServer.d.ts +1 -1
  225. package/dist/plugin/utils/callServer.d.ts.map +1 -1
  226. package/dist/plugin/utils/createCallServer.d.ts +1 -1
  227. package/dist/plugin/utils/createCallServer.d.ts.map +1 -1
  228. package/dist/plugin/utils/createCallServer.js +13 -4
  229. package/dist/plugin/utils/createCallServer.js.map +1 -1
  230. package/dist/plugin/utils/index.d.ts +1 -0
  231. package/dist/plugin/utils/index.d.ts.map +1 -1
  232. package/dist/plugin/utils/index.js +1 -0
  233. package/dist/plugin/utils.js +1 -0
  234. package/dist/plugin/utils.js.map +1 -1
  235. package/dist/plugin/vendor/vendor.client.d.ts +2 -1
  236. package/dist/plugin/vendor/vendor.client.d.ts.map +1 -1
  237. package/dist/plugin/vendor/vendor.client.js +2 -1
  238. package/dist/plugin/vendor/vendor.client.js.map +1 -1
  239. package/dist/plugin/vendor/vendor.server.d.ts.map +1 -1
  240. package/dist/plugin/vendor/vendor.server.js +1 -1
  241. package/dist/plugin/vendor/vendor.server.js.map +1 -1
  242. package/dist/plugin/worker/createWorker.d.ts.map +1 -1
  243. package/dist/plugin/worker/createWorker.js +17 -22
  244. package/dist/plugin/worker/createWorker.js.map +1 -1
  245. package/dist/plugin/worker/html/createHtmlWorkerRenderState.d.ts.map +1 -1
  246. package/dist/plugin/worker/html/createHtmlWorkerRenderState.js +25 -4
  247. package/dist/plugin/worker/html/createHtmlWorkerRenderState.js.map +1 -1
  248. package/dist/plugin/worker/html/html-worker.development.js +15 -13
  249. package/dist/plugin/worker/html/html-worker.development.js.map +1 -1
  250. package/dist/plugin/worker/html/html-worker.production.js +2 -12
  251. package/dist/plugin/worker/html/html-worker.production.js.map +1 -1
  252. package/dist/plugin/worker/html/messageHandler.d.ts.map +1 -1
  253. package/dist/plugin/worker/html/messageHandler.js +2 -2
  254. package/dist/plugin/worker/html/messageHandler.js.map +1 -1
  255. package/dist/plugin/worker/rsc/handleRender.d.ts +2 -1
  256. package/dist/plugin/worker/rsc/handleRender.d.ts.map +1 -1
  257. package/dist/plugin/worker/rsc/handleRender.js +8 -8
  258. package/dist/plugin/worker/rsc/handleRender.js.map +1 -1
  259. package/dist/plugin/worker/rsc/messageHandler.d.ts.map +1 -1
  260. package/dist/plugin/worker/rsc/messageHandler.js +166 -107
  261. package/dist/plugin/worker/rsc/messageHandler.js.map +1 -1
  262. package/dist/plugin/worker/rsc/rsc-worker.development.js +112 -52
  263. package/dist/plugin/worker/rsc/rsc-worker.development.js.map +1 -1
  264. package/dist/plugin/worker/rsc/rsc-worker.production.js +1 -1
  265. package/dist/plugin/worker/rsc/rsc-worker.production.js.map +1 -1
  266. package/dist/plugin/worker/rsc/state.d.ts +5 -64
  267. package/dist/plugin/worker/rsc/state.d.ts.map +1 -1
  268. package/dist/plugin/worker/rsc/state.js +5 -1
  269. package/dist/plugin/worker/rsc/state.js.map +1 -1
  270. package/dist/plugin/worker/sendMessage.d.ts +2 -0
  271. package/dist/plugin/worker/sendMessage.d.ts.map +1 -1
  272. package/dist/plugin/worker/sendMessage.js +2 -1
  273. package/dist/plugin/worker/sendMessage.js.map +1 -1
  274. package/dist/plugin/worker/types.d.ts +52 -53
  275. package/dist/plugin/worker/types.d.ts.map +1 -1
  276. package/dist/tsconfig.tsbuildinfo +1 -1
  277. package/package.json +10 -8
  278. package/plugin/components/css-collector-elements.tsx +30 -9
  279. package/plugin/components/css-collector.tsx +13 -22
  280. package/plugin/components/html.tsx +12 -5
  281. package/plugin/config/autoDiscover/resolveAutoDiscover.ts +31 -13
  282. package/plugin/config/defaults.tsx +72 -16
  283. package/plugin/config/resolveAutoDiscoverMatcher.ts +23 -0
  284. package/plugin/config/resolveEnv.ts +20 -12
  285. package/plugin/config/resolveOptions.ts +152 -155
  286. package/plugin/config/resolveUserConfig.ts +20 -5
  287. package/plugin/error/toError.ts +35 -1
  288. package/plugin/helpers/cleanObject.ts +79 -15
  289. package/plugin/helpers/collectViteModuleGraphCss.ts +4 -3
  290. package/plugin/helpers/createCssProps.tsx +26 -9
  291. package/plugin/helpers/createHandler.ts +7 -4
  292. package/plugin/helpers/createRscStream.tsx +20 -14
  293. package/plugin/helpers/index.ts +2 -2
  294. package/plugin/helpers/inputNormalizer.ts +4 -2
  295. package/plugin/helpers/moduleResolver.ts +36 -0
  296. package/plugin/helpers/requestInfo.ts +117 -23
  297. package/plugin/helpers/resolvePage.ts +2 -3
  298. package/plugin/helpers/resolvePageAndProps.ts +7 -6
  299. package/plugin/helpers/serializeUserOptions.ts +20 -2
  300. package/plugin/helpers/sourceMap.ts +182 -0
  301. package/plugin/loader/createBuildLoader.ts +124 -104
  302. package/plugin/loader/createDefaultLoader.ts +62 -0
  303. package/plugin/loader/css-loader.development.ts +3 -2
  304. package/plugin/loader/handleExports.ts +276 -0
  305. package/plugin/loader/index.ts +6 -1
  306. package/plugin/loader/parse.ts +22 -0
  307. package/plugin/loader/react-loader.client.ts +1 -0
  308. package/plugin/loader/react-loader.server.ts +107 -0
  309. package/plugin/loader/react-loader.ts +4 -1002
  310. package/plugin/loader/sourceMap.ts +118 -0
  311. package/plugin/loader/transformModuleIfNeeded.ts +33 -0
  312. package/plugin/loader/transformModuleWithPreservedFunctions.ts +119 -0
  313. package/plugin/loader/types.ts +10 -0
  314. package/plugin/plugin.client.ts +18 -11
  315. package/plugin/plugin.server.ts +6 -3
  316. package/plugin/preserver/plugin.ts +37 -17
  317. package/plugin/react-client/{server.ts → configureWorkerRequestHandler.ts} +22 -12
  318. package/plugin/react-client/createMessageHandlers.ts +21 -13
  319. package/plugin/react-client/createWorkerStream.ts +71 -33
  320. package/plugin/react-client/handleWorkerRscStream.ts +15 -5
  321. package/plugin/react-client/plugin.ts +18 -13
  322. package/plugin/react-client/restartWorker.ts +17 -5
  323. package/plugin/react-server/{server.ts → configureReactServer.ts} +40 -9
  324. package/plugin/react-server/handleServerAction.ts +177 -0
  325. package/plugin/react-server/plugin.ts +8 -3
  326. package/plugin/react-static/collectHtmlWorkerContent.ts +11 -3
  327. package/plugin/react-static/collectRscContent.ts +17 -9
  328. package/plugin/react-static/configurePreviewServer.ts +37 -17
  329. package/plugin/react-static/plugin.ts +45 -22
  330. package/plugin/react-static/renderPage.ts +12 -6
  331. package/plugin/react-static/renderPages.ts +15 -4
  332. package/plugin/react-static/renderStreams.ts +13 -12
  333. package/plugin/source-map/createMappingsSerializer.ts +182 -0
  334. package/plugin/source-map/readMappings.ts +195 -0
  335. package/plugin/transformer/README.md +295 -29
  336. package/plugin/transformer/index.ts +0 -1
  337. package/plugin/transformer/plugin.client.ts +0 -111
  338. package/plugin/transformer/plugin.server.ts +94 -25
  339. package/plugin/types/react-server-dom-esm.d.ts +183 -24
  340. package/plugin/types/sourceMap.d.ts +2 -0
  341. package/plugin/types/webpack-sources.d.ts +24 -0
  342. package/plugin/types.ts +169 -132
  343. package/plugin/utils/createCallServer.ts +21 -6
  344. package/plugin/utils/index.ts +2 -1
  345. package/plugin/vendor/vendor.client.ts +2 -1
  346. package/plugin/vendor/vendor.server.ts +1 -1
  347. package/plugin/worker/createWorker.ts +21 -24
  348. package/plugin/worker/html/createHtmlWorkerRenderState.tsx +31 -7
  349. package/plugin/worker/html/html-worker.development.tsx +16 -16
  350. package/plugin/worker/html/html-worker.production.tsx +3 -19
  351. package/plugin/worker/html/messageHandler.tsx +2 -4
  352. package/plugin/worker/rsc/handleRender.ts +15 -12
  353. package/plugin/worker/rsc/messageHandler.tsx +191 -120
  354. package/plugin/worker/rsc/rsc-worker.development.ts +148 -77
  355. package/plugin/worker/rsc/rsc-worker.production.ts +1 -1
  356. package/plugin/worker/rsc/state.ts +10 -0
  357. package/plugin/worker/sendMessage.ts +32 -14
  358. package/plugin/worker/types.ts +99 -64
  359. package/dist/plugin/react-client/server.d.ts.map +0 -1
  360. package/dist/plugin/react-client/server.js.map +0 -1
  361. package/dist/plugin/react-server/server.d.ts +0 -9
  362. package/dist/plugin/react-server/server.d.ts.map +0 -1
  363. package/dist/plugin/react-server/server.js.map +0 -1
  364. package/dist/plugin/transformer/plugin.client.js.map +0 -1
  365. package/dist/plugin/transformer/upgradeCssModuleCode.d.ts +0 -2
  366. package/dist/plugin/transformer/upgradeCssModuleCode.d.ts.map +0 -1
  367. package/dist/plugin/transformer/upgradeCssModuleCode.js +0 -40
  368. package/dist/plugin/worker/loader.d.ts +0 -5
  369. package/dist/plugin/worker/loader.d.ts.map +0 -1
  370. package/dist/plugin/worker/loader.js +0 -11
  371. package/dist/plugin/worker/loader.js.map +0 -1
  372. package/plugin/transformer/upgradeCssModuleCode.ts +0 -42
  373. package/plugin/worker/loader.ts +0 -7
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/preserver/plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAqCvD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO,MAAM,EAAE,MAAM,CAsHxF"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/preserver/plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAyCrB,wBAAgB,mBAAmB,CACjC,CAAC,SAAS,WAAW,GAAG,WAAW,EACnC,SAAS,SAAS,YAAY,GAAG,YAAY,EAC7C,OAAO,EAAE,mBAAmB,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,OAAO,MAAM,EAAE,MAAM,CAgInE"}
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import { DEFAULT_CONFIG } from '../config/defaults.js';
7
7
  import { basename } from 'path';
8
+ import { resolveAutoDiscoverMatcher } from '../config/resolveAutoDiscoverMatcher.js';
8
9
 
9
10
  const REACT_DIRECTIVES = /* @__PURE__ */ new Set(["use client", "use server"]);
10
11
  function createSourceMap(id, code, mappings) {
@@ -33,8 +34,11 @@ function countLines(str) {
33
34
  }
34
35
  return count;
35
36
  }
36
- function reactPreservePlugin(_options) {
37
+ function reactPreservePlugin(options) {
37
38
  const meta = {};
39
+ const moduleExtension = resolveAutoDiscoverMatcher(options.autoDiscover?.moduleExtension, DEFAULT_CONFIG.AUTO_DISCOVER.moduleExtension);
40
+ const vendorPattern = resolveAutoDiscoverMatcher(options.autoDiscover?.vendorPattern, DEFAULT_CONFIG.AUTO_DISCOVER.vendorPattern);
41
+ const virtualPattern = resolveAutoDiscoverMatcher(options.autoDiscover?.virtualPattern, DEFAULT_CONFIG.AUTO_DISCOVER.virtualPattern);
38
42
  return {
39
43
  name: "vite-plugin-react-server:preserve-directives",
40
44
  enforce: "post",
@@ -42,7 +46,7 @@ function reactPreservePlugin(_options) {
42
46
  order: "post",
43
47
  // Ensure this runs last in transform phase
44
48
  handler(code, id) {
45
- if (id.includes("node_modules") || id.includes("vite/dist") || !id.match(DEFAULT_CONFIG.MODULE_EXTENSION)) {
49
+ if (vendorPattern(id) || virtualPattern(id) || !moduleExtension(id)) {
46
50
  return null;
47
51
  }
48
52
  let ast;
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sources":["../../../plugin/preserver/plugin.ts"],"sourcesContent":["import type { Node } from \"estree\";\nimport type { StreamPluginOptions } from \"../types.js\";\nimport { DEFAULT_CONFIG } from \"../config/defaults.js\";\nimport { basename } from \"path\";\n\nconst REACT_DIRECTIVES = new Set([\"use client\", \"use server\"]);\n\nfunction createSourceMap(id: string, code: string, mappings: string) {\n return {\n version: 3,\n file: basename(id),\n sources: [id],\n sourcesContent: [code],\n names: [],\n mappings,\n sourceRoot: \"\",\n };\n}\n\nfunction removeRanges(code: string, ranges: Array<{ start: number; end: number }>) {\n // Sort ranges in reverse order to not affect positions\n ranges.sort((a, b) => b.start - a.start);\n \n let result = code;\n for (const range of ranges) {\n result = result.slice(0, range.start) + result.slice(range.end);\n }\n return result;\n}\n\nfunction countLines(str: string): number {\n let count = 1;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\n') count++;\n }\n return count;\n}\n\nexport function reactPreservePlugin(_options: StreamPluginOptions): import(\"vite\").Plugin {\n const meta: Record<string, Set<string>> = {};\n\n return {\n name: \"vite-plugin-react-server:preserve-directives\",\n enforce: \"post\",\n\n transform: {\n order: \"post\", // Ensure this runs last in transform phase\n handler(code: string, id: string) {\n // Skip node_modules and vite files\n if (id.includes(\"node_modules\") || id.includes(\"vite/dist\") || !id.match(DEFAULT_CONFIG.MODULE_EXTENSION)) {\n return null;\n }\n\n let ast: Node;\n try {\n ast = this.parse(code, {\n allowReturnOutsideFunction: true,\n jsx: true,\n }) as Node;\n } catch (e) {\n console.warn(`[PreservePlugin] Failed to parse ${id}`, e);\n return null;\n }\n\n if (ast.type !== \"Program\") {\n return null;\n }\n\n const rangesToRemove: Array<{ start: number; end: number }> = [];\n let hasChanged = false;\n let lineCount = 1;\n let mappings = \"AAAA\"; // Initial mapping for first line\n\n // Only look at top-level directives\n for (const node of ast.body) {\n if (node.type !== \"ExpressionStatement\") {\n break;\n }\n\n let directive: string | null = null;\n if (\"directive\" in node) {\n directive = node.directive;\n } else if (\n node.expression.type === \"Literal\" &&\n typeof node.expression.value === \"string\" &&\n REACT_DIRECTIVES.has(node.expression.value)\n ) {\n directive = node.expression.value;\n }\n\n if (directive && \"start\" in node && \"end\" in node) {\n meta[id] ||= new Set<string>();\n meta[id].add(directive);\n rangesToRemove.push({ \n start: node.start as number, \n end: node.end as number \n });\n hasChanged = true;\n \n // Add mapping for each line removed\n const removedLines = code.slice(node.start as number, node.end as number).split('\\n').length - 1;\n for (let i = 0; i < removedLines; i++) {\n mappings += \";AACA\";\n lineCount++;\n }\n }\n }\n\n if (!hasChanged) {\n return null;\n }\n\n const newCode = removeRanges(code, rangesToRemove);\n const sourceMap = createSourceMap(id, code, mappings);\n\n return {\n code: newCode,\n map: sourceMap,\n meta: {\n directives: Array.from(meta[id] || []),\n },\n };\n },\n },\n\n renderChunk(code, chunk) {\n const chunkDirectives = new Set<string>();\n\n // Collect directives from all modules in chunk\n for (const id of chunk.moduleIds) {\n if (meta[id]) {\n meta[id].forEach((d) => chunkDirectives.add(d));\n }\n }\n\n if (chunkDirectives.size) {\n const directivesCode = Array.from(chunkDirectives)\n .map((d) => `\"${d}\";`)\n .join(\"\\n\") + \"\\n\";\n \n const newCode = directivesCode + code;\n\n // Create source map for the prepended directives\n const lineCount = countLines(directivesCode);\n const mappings = \"AAAA\" + \";AACA\".repeat(lineCount - 1);\n const sourceMap = createSourceMap(chunk.fileName, code, mappings);\n\n return {\n code: newCode,\n map: sourceMap,\n };\n }\n\n return null;\n },\n };\n}\n\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sources":["../../../plugin/preserver/plugin.ts"],"sourcesContent":["import type { Node } from \"estree\";\nimport type {\n InlineCssOpt,\n PagePropOpt,\n StreamPluginOptions,\n} from \"../types.js\";\nimport { DEFAULT_CONFIG } from \"../config/defaults.js\";\nimport { basename } from \"path\";\nimport { resolveAutoDiscoverMatcher } from \"../config/resolveAutoDiscoverMatcher.js\";\n\nconst REACT_DIRECTIVES = new Set([\"use client\", \"use server\"]);\n\nfunction createSourceMap(id: string, code: string, mappings: string) {\n return {\n version: 3,\n file: basename(id),\n sources: [id],\n sourcesContent: [code],\n names: [],\n mappings,\n sourceRoot: \"\",\n };\n}\n\nfunction removeRanges(\n code: string,\n ranges: Array<{ start: number; end: number }>\n) {\n // Sort ranges in reverse order to not affect positions\n ranges.sort((a, b) => b.start - a.start);\n\n let result = code;\n for (const range of ranges) {\n result = result.slice(0, range.start) + result.slice(range.end);\n }\n return result;\n}\n\nfunction countLines(str: string): number {\n let count = 1;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === \"\\n\") count++;\n }\n return count;\n}\n\nexport function reactPreservePlugin<\n T extends PagePropOpt = PagePropOpt,\n InlineCSS extends InlineCssOpt = InlineCssOpt\n>(options: StreamPluginOptions<T, InlineCSS>): import(\"vite\").Plugin {\n const meta: Record<string, Set<string>> = {};\n // saves us from transforming all the options\n const moduleExtension = resolveAutoDiscoverMatcher(options.autoDiscover?.moduleExtension, DEFAULT_CONFIG.AUTO_DISCOVER.moduleExtension);\n const vendorPattern = resolveAutoDiscoverMatcher(options.autoDiscover?.vendorPattern, DEFAULT_CONFIG.AUTO_DISCOVER.vendorPattern);\n const virtualPattern = resolveAutoDiscoverMatcher(options.autoDiscover?.virtualPattern, DEFAULT_CONFIG.AUTO_DISCOVER.virtualPattern);\n return {\n name: \"vite-plugin-react-server:preserve-directives\",\n enforce: \"post\",\n\n transform: {\n order: \"post\", // Ensure this runs last in transform phase\n handler(code: string, id: string) {\n // Skip node_modules and vite files\n if (\n vendorPattern(id) ||\n virtualPattern(id) ||\n !moduleExtension(id)\n ) {\n return null;\n }\n\n let ast: Node;\n try {\n ast = this.parse(code, {\n allowReturnOutsideFunction: true,\n jsx: true,\n }) as Node;\n } catch (e) {\n console.warn(`[PreservePlugin] Failed to parse ${id}`, e);\n return null;\n }\n\n if (ast.type !== \"Program\") {\n return null;\n }\n\n const rangesToRemove: Array<{ start: number; end: number }> = [];\n let hasChanged = false;\n let lineCount = 1;\n let mappings = \"AAAA\"; // Initial mapping for first line\n\n // Only look at top-level directives\n for (const node of ast.body) {\n if (node.type !== \"ExpressionStatement\") {\n break;\n }\n\n let directive: string | null = null;\n if (\"directive\" in node) {\n directive = node.directive;\n } else if (\n node.expression.type === \"Literal\" &&\n typeof node.expression.value === \"string\" &&\n REACT_DIRECTIVES.has(node.expression.value)\n ) {\n directive = node.expression.value;\n }\n\n if (directive && \"start\" in node && \"end\" in node) {\n meta[id] ||= new Set<string>();\n meta[id].add(directive);\n rangesToRemove.push({\n start: node.start as number,\n end: node.end as number,\n });\n hasChanged = true;\n\n // Add mapping for each line removed\n const removedLines =\n code.slice(node.start as number, node.end as number).split(\"\\n\")\n .length - 1;\n for (let i = 0; i < removedLines; i++) {\n mappings += \";AACA\";\n lineCount++;\n }\n }\n }\n\n if (!hasChanged) {\n return null;\n }\n\n const newCode = removeRanges(code, rangesToRemove);\n const sourceMap = createSourceMap(id, code, mappings);\n\n return {\n code: newCode,\n map: sourceMap,\n meta: {\n directives: Array.from(meta[id] || []),\n },\n };\n },\n },\n\n renderChunk(code, chunk) {\n const chunkDirectives = new Set<string>();\n\n // Collect directives from all modules in chunk\n for (const id of chunk.moduleIds) {\n if (meta[id]) {\n meta[id].forEach((d) => chunkDirectives.add(d));\n }\n }\n\n if (chunkDirectives.size) {\n const directivesCode =\n Array.from(chunkDirectives)\n .map((d) => `\"${d}\";`)\n .join(\"\\n\") + \"\\n\";\n\n const newCode = directivesCode + code;\n\n // Create source map for the prepended directives\n const lineCount = countLines(directivesCode);\n const mappings = \"AAAA\" + \";AACA\".repeat(lineCount - 1);\n const sourceMap = createSourceMap(chunk.fileName, code, mappings);\n\n return {\n code: newCode,\n map: sourceMap,\n };\n }\n\n return null;\n },\n };\n}\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { ViteDevServer } from "vite";
2
- import type { AutoDiscoveredFiles, RenderMetrics, ResolvedUserOptions } from "../types.js";
2
+ import type { AutoDiscoveredFiles, InlineCssOpt, PagePropOpt, RenderMetrics, ResolvedUserOptions } from "../types.js";
3
3
  import { MessageChannel } from "node:worker_threads";
4
4
  /**
5
5
  * Configures the worker request handler.
@@ -7,11 +7,11 @@ import { MessageChannel } from "node:worker_threads";
7
7
  * @param autoDiscoveredFiles - The auto discovered files
8
8
  * @param userOptions - The user options
9
9
  */
10
- export declare function configureWorkerRequestHandler({ server, autoDiscoveredFiles, userOptions: _userOptions, hmrChannel, onMetrics, }: {
10
+ export declare function configureWorkerRequestHandler<T extends PagePropOpt = PagePropOpt, InlineCSS extends InlineCssOpt = InlineCssOpt>({ server, autoDiscoveredFiles, userOptions: _userOptions, hmrChannel, onMetrics, }: {
11
11
  server: ViteDevServer;
12
12
  autoDiscoveredFiles: AutoDiscoveredFiles;
13
- userOptions: ResolvedUserOptions;
13
+ userOptions: ResolvedUserOptions<T, InlineCSS>;
14
14
  hmrChannel: MessageChannel;
15
15
  onMetrics?: (metrics: RenderMetrics) => void;
16
16
  }): Promise<void>;
17
- //# sourceMappingURL=server.d.ts.map
17
+ //# sourceMappingURL=configureWorkerRequestHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configureWorkerRequestHandler.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/configureWorkerRequestHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,aAAa,EAEb,mBAAmB,EAEpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAe,MAAM,qBAAqB,CAAC;AAWlE;;;;;GAKG;AACH,wBAAsB,6BAA6B,CACjD,CAAC,SAAS,WAAW,GAAG,WAAW,EACnC,SAAS,SAAS,YAAY,GAAG,YAAY,EAC7C,EACA,MAAM,EACN,mBAAmB,EACnB,WAAW,EAAE,YAAY,EACzB,UAAU,EACV,SAAS,GACV,EAAE;IACD,MAAM,EAAE,aAAa,CAAC;IACtB,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,WAAW,EAAE,mBAAmB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAC/C,UAAU,EAAE,cAAc,CAAC;IAC3B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;CAC9C,iBAqLA"}
@@ -11,7 +11,6 @@ import { restartWorker } from './restartWorker.js';
11
11
  import { handleWorkerRscStream } from './handleWorkerRscStream.js';
12
12
  import { getRouteFiles } from '../helpers/getRouteFiles.js';
13
13
  import { Readable } from 'node:stream';
14
- import 'node:stream/web';
15
14
 
16
15
  async function configureWorkerRequestHandler({
17
16
  server,
@@ -55,11 +54,10 @@ async function configureWorkerRequestHandler({
55
54
  });
56
55
  const handler = async (req, res, next) => {
57
56
  if (!req.url) return next();
58
- if (handlerOptions.verbose) logger.info(`Received request: ${req.url}`);
59
- const info = requestInfo(req, handlerOptions, "");
60
- if (!info.isRscRequest) return next();
61
- if (handlerOptions.verbose)
62
- logger.info(`Request info: ${JSON.stringify(info)}`);
57
+ const info = requestInfo(req, handlerOptions, "", server.config.logger);
58
+ if (!info.isRscRequest) {
59
+ return next();
60
+ }
63
61
  const routeFiles = await getRouteFiles(
64
62
  info.route,
65
63
  autoDiscoveredFiles,
@@ -112,6 +110,8 @@ async function configureWorkerRequestHandler({
112
110
  worker: currentWorker,
113
111
  message: {
114
112
  ...serializedUserOptions,
113
+ id: info.route,
114
+ type: "RSC_RENDER",
115
115
  // we make the worker stream aware of the route, pagePath, propsPath
116
116
  route: info.route,
117
117
  pagePath,
@@ -125,7 +125,10 @@ async function configureWorkerRequestHandler({
125
125
  },
126
126
  logger,
127
127
  handlers: {
128
- onMetrics: userOnMetrics,
128
+ onMetrics: (id, metrics) => {
129
+ metrics.route = id;
130
+ userOnMetrics(metrics);
131
+ },
129
132
  onHmrAccept: () => {
130
133
  },
131
134
  onHmrUpdate: () => {
@@ -177,4 +180,4 @@ async function configureWorkerRequestHandler({
177
180
  }
178
181
 
179
182
  export { configureWorkerRequestHandler };
180
- //# sourceMappingURL=server.js.map
183
+ //# sourceMappingURL=configureWorkerRequestHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configureWorkerRequestHandler.js","sources":["../../../plugin/react-client/configureWorkerRequestHandler.ts"],"sourcesContent":["import type { ViteDevServer } from \"vite\";\nimport type {\n AutoDiscoveredFiles,\n InlineCssOpt,\n PagePropOpt,\n RenderMetrics,\n RequestHandler,\n ResolvedUserOptions,\n StreamMetrics,\n} from \"../types.js\";\nimport { MessageChannel, type Worker } from \"node:worker_threads\";\nimport { serializedOptions } from \"../helpers/serializeUserOptions.js\";\nimport { requestInfo } from \"../helpers/requestInfo.js\";\nimport { performance } from \"node:perf_hooks\";\nimport { restartWorker } from \"./restartWorker.js\";\nimport { handleWorkerRscStream } from \"./handleWorkerRscStream.js\";\nimport { getRouteFiles } from \"../helpers/getRouteFiles.js\";\nimport type { RscWorkerInputMessage } from \"../worker/types.js\";\nimport { Readable } from \"node:stream\";\nimport type { ReadableStream } from \"node:stream/web\";\n\n/**\n * Configures the worker request handler.\n * @param server - The Vite dev server\n * @param autoDiscoveredFiles - The auto discovered files\n * @param userOptions - The user options\n */\nexport async function configureWorkerRequestHandler<\n T extends PagePropOpt = PagePropOpt,\n InlineCSS extends InlineCssOpt = InlineCssOpt\n>({\n server,\n autoDiscoveredFiles,\n userOptions: _userOptions,\n hmrChannel,\n onMetrics,\n}: {\n server: ViteDevServer;\n autoDiscoveredFiles: AutoDiscoveredFiles;\n userOptions: ResolvedUserOptions<T, InlineCSS>;\n hmrChannel: MessageChannel;\n onMetrics?: (metrics: RenderMetrics) => void;\n}) {\n let {\n // remove these\n projectRoot: _projectRoot,\n moduleBaseURL: _moduleBaseURL,\n ...handlerUserOptions\n } = _userOptions;\n const handlerOptions = Object.assign({}, handlerUserOptions, {\n moduleBaseURL: server.config.base,\n moduleBasePath: server.config.base,\n projectRoot: server.config.root,\n });\n\n // Start the worker\n let currentWorker: Worker | null = null;\n const logger = server.config.logger;\n\n // Handle server restarts\n server.ws.on(\"restart\", async () => {\n logger.info(\"[react-client] Server restarting, shutting down worker...\");\n if (currentWorker) {\n currentWorker.postMessage({\n type: \"SHUTDOWN\",\n id: \"*\",\n } satisfies RscWorkerInputMessage);\n await new Promise((resolve, reject) => {\n currentWorker?.on(\"message\", (message) => {\n if (message.type === \"SHUTDOWN_COMPLETE\") {\n resolve(true);\n } else {\n reject(\"Did not receive SHUTDOWN_COMPLETE\");\n }\n });\n });\n currentWorker.removeAllListeners();\n currentWorker = null;\n }\n });\n\n // Create the request handler\n const handler: RequestHandler = async (req, res, next) => {\n if (!req.url) return next();\n\n const info = requestInfo(req, handlerOptions, \"\", server.config.logger);\n\n if (!info.isRscRequest) {\n return next();\n }\n\n const routeFiles = await getRouteFiles(\n info.route,\n autoDiscoveredFiles,\n handlerOptions\n );\n if (routeFiles.type === \"error\") {\n logger.error(routeFiles.error.message);\n return next();\n }\n const pagePath = routeFiles.page;\n const propsPath = routeFiles.props;\n try {\n // Set up response headers for streaming\n res.setHeader(\"Content-Type\", info.contentType);\n res.setHeader(\"Transfer-Encoding\", \"chunked\");\n res.setHeader(\"Connection\", \"keep-alive\");\n\n const serializedUserOptions = serializedOptions<T, InlineCSS>(\n handlerOptions,\n autoDiscoveredFiles\n );\n const userOnMetrics =\n typeof onMetrics === \"function\"\n ? (metrics: StreamMetrics) => {\n const elapsedTime = performance.now() - startTime;\n const formattedMetrics = {\n route: info.route,\n htmlSize: 0,\n rscSize: metrics.bytes,\n processingTime: elapsedTime,\n chunks: metrics.chunks,\n chunkRate: metrics.chunks / (elapsedTime / 1000),\n memoryUsage: process.memoryUsage(),\n streamMetrics: {\n ...metrics,\n duration: elapsedTime,\n },\n htmlSizes: new Map(),\n rscSizes: new Map([[info.route, metrics.bytes]]),\n } satisfies RenderMetrics;\n onMetrics(formattedMetrics);\n }\n : () => {};\n const startTime = performance.now();\n if (!currentWorker) {\n currentWorker = await restartWorker({\n server,\n autoDiscoveredFiles,\n userOptions: serializedUserOptions,\n hmrChannel,\n });\n }\n const stream = handleWorkerRscStream({\n worker: currentWorker!,\n message: {\n ...serializedUserOptions,\n id: info.route,\n type: \"RSC_RENDER\",\n // we make the worker stream aware of the route, pagePath, propsPath\n route: info.route,\n pagePath: pagePath,\n propsPath: propsPath,\n // override these at all times to ensure the settings will work for the dev server\n projectRoot: server.config.root,\n build: serializedUserOptions.build,\n manifest: autoDiscoveredFiles.staticManifest,\n cssFiles: new Map(),\n globalCss: new Map(),\n },\n logger,\n handlers: {\n onMetrics: (id, metrics) => {\n metrics.route = id;\n userOnMetrics(metrics);\n },\n onHmrAccept: () => {\n // TODO: implement\n // console.log(\"onHmrAccept\", routes);\n },\n onHmrUpdate: () => {\n // TODO: implement\n // console.log(\"onHmrUpdate\", routes);\n },\n },\n verbose: handlerOptions.verbose,\n });\n\n // Pipe the stream to the response\n if (res.writable) {\n Readable.fromWeb(stream as unknown as ReadableStream).pipe(res);\n }\n // wait for timeout\n } catch (error) {\n if (error instanceof Error) {\n server.config.logger.error(error.message + (error.stack ?? \"\"), {\n error,\n });\n }\n }\n let timeout: NodeJS.Timeout;\n try {\n await new Promise((reject) => {\n timeout = setTimeout(() => {\n clearTimeout(timeout);\n reject(new Error(\"RSC Render timeout\"));\n }, 5000);\n });\n } catch {\n if (currentWorker) {\n currentWorker.postMessage({\n type: \"SHUTDOWN\",\n id: \"*\",\n } satisfies RscWorkerInputMessage);\n await new Promise((resolve, reject) => {\n currentWorker?.on(\"message\", (message) => {\n if (message.type === \"SHUTDOWN_COMPLETE\") {\n resolve(true);\n } else {\n reject(\"Dit not receive SHUTDOWN_COMPLETE\");\n }\n });\n });\n currentWorker.removeAllListeners();\n }\n server.config.logger.error(\"RSC render timeout.\");\n clearTimeout(timeout!);\n res.end();\n }\n };\n // attach handler to the server\n server.middlewares.use(handler);\n // done\n}\n"],"names":[],"mappings":"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"}
@@ -6,6 +6,6 @@ type MessageHandlerContext = {
6
6
  logger: Logger;
7
7
  verbose?: boolean;
8
8
  };
9
- export declare function createMessageHandler({ handlers, logger, verbose }: MessageHandlerContext): (message: RscWorkerOutputMessage | undefined) => void;
9
+ export declare function createMessageHandler({ handlers, logger, verbose, }: MessageHandlerContext): (message: RscWorkerOutputMessage | undefined) => void;
10
10
  export {};
11
11
  //# sourceMappingURL=createMessageHandlers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createMessageHandlers.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/createMessageHandlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,MAAM,EACN,OAAe,EAChB,EAAE,qBAAqB,aACL,sBAAsB,GAAG,SAAS,UAiCpD"}
1
+ {"version":3,"file":"createMessageHandlers.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/createMessageHandlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,MAAM,EACN,OAAe,GAChB,EAAE,qBAAqB,aACL,sBAAsB,GAAG,SAAS,UAyCpD"}
@@ -10,35 +10,42 @@ function createMessageHandler({
10
10
  }) {
11
11
  return (message) => {
12
12
  if (!message) {
13
- logger.warn("[react-client] Received undefined message from worker");
13
+ logger.warn("Received undefined message");
14
14
  return;
15
15
  }
16
- if (verbose) logger.info("new message " + message.type);
17
16
  switch (message.type) {
18
17
  case "READY":
19
18
  if (verbose) logger.info("[react-client] Worker is ready");
20
19
  break;
20
+ case "ERROR":
21
+ handlers.onError(message.id, message.error, message.errorInfo);
22
+ break;
21
23
  case "RSC_CHUNK":
22
- handlers.onData(message.chunk);
24
+ handlers.onData(message.id, message.chunk);
23
25
  break;
24
26
  case "RSC_END":
25
- handlers.onEnd();
26
- break;
27
- case "ERROR":
28
- handlers.onError(message.error, message.errorInfo);
27
+ handlers.onEnd(message.id);
29
28
  break;
30
29
  case "RSC_METRICS":
31
- handlers.onMetrics(message.metrics);
30
+ handlers.onMetrics(message.id, message.metrics);
32
31
  break;
33
32
  case "HMR_ACCEPT":
34
- handlers.onHmrAccept(message.routes ?? []);
33
+ handlers.onHmrAccept(message.id, message.routes);
35
34
  break;
36
35
  case "HMR_UPDATE":
37
- handlers.onHmrUpdate(message.routes ?? []);
36
+ handlers.onHmrUpdate(message.id, message.routes);
37
+ break;
38
+ case "SERVER_ACTION":
39
+ handlers.onServerAction?.(message.id, message.args);
40
+ break;
41
+ case "SERVER_ACTION_RESPONSE":
42
+ handlers.onServerActionResponse?.(message.id, message.result, message.error);
43
+ break;
44
+ case "SERVER_MODULE":
45
+ handlers.onServerModule?.(message.id, message.url, message.source);
38
46
  break;
39
47
  default:
40
48
  logger.warn(`Unknown worker output message type: ${message.type}`);
41
- break;
42
49
  }
43
50
  };
44
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"createMessageHandlers.js","sources":["../../../plugin/react-client/createMessageHandlers.ts"],"sourcesContent":["import type { RscWorkerOutputMessage } from \"../worker/types.js\";\nimport type { Logger } from \"vite\";\nimport type { StreamHandlers } from \"../worker/types.js\";\n\ntype MessageHandlerContext = {\n handlers: StreamHandlers;\n logger: Logger;\n verbose?: boolean;\n};\n\nexport function createMessageHandler({\n handlers,\n logger,\n verbose = false\n}: MessageHandlerContext) {\n return (message: RscWorkerOutputMessage | undefined) => {\n if (!message) {\n logger.warn(\"[react-client] Received undefined message from worker\");\n return;\n }\n if(verbose) logger.info('new message '+message.type)\n switch (message.type) {\n case \"READY\":\n if(verbose) logger.info(\"[react-client] Worker is ready\");\n break;\n case \"RSC_CHUNK\":\n handlers.onData(message.chunk);\n break;\n case \"RSC_END\":\n handlers.onEnd();\n break;\n case \"ERROR\":\n handlers.onError(message.error, message.errorInfo);\n break;\n case \"RSC_METRICS\":\n handlers.onMetrics(message.metrics);\n break;\n case \"HMR_ACCEPT\":\n handlers.onHmrAccept(message.routes ?? []);\n break;\n case \"HMR_UPDATE\":\n handlers.onHmrUpdate(message.routes ?? []);\n break;\n default:\n logger.warn(`Unknown worker output message type: ${message.type}`);\n break;\n }\n };\n}\n"],"names":[],"mappings":";;;;;AAUO,SAAS,oBAAqB,CAAA;AAAA,EACnC,QAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAU,GAAA;AACZ,CAA0B,EAAA;AACxB,EAAA,OAAO,CAAC,OAAgD,KAAA;AACtD,IAAA,IAAI,CAAC,OAAS,EAAA;AACZ,MAAA,MAAA,CAAO,KAAK,uDAAuD,CAAA;AACnE,MAAA;AAAA;AAEF,IAAA,IAAG,OAAS,EAAA,MAAA,CAAO,IAAK,CAAA,cAAA,GAAe,QAAQ,IAAI,CAAA;AACnD,IAAA,QAAQ,QAAQ,IAAM;AAAA,MACpB,KAAK,OAAA;AACH,QAAG,IAAA,OAAA,EAAgB,MAAA,CAAA,IAAA,CAAK,gCAAgC,CAAA;AACxD,QAAA;AAAA,MACF,KAAK,WAAA;AACH,QAAS,QAAA,CAAA,MAAA,CAAO,QAAQ,KAAK,CAAA;AAC7B,QAAA;AAAA,MACF,KAAK,SAAA;AACH,QAAA,QAAA,CAAS,KAAM,EAAA;AACf,QAAA;AAAA,MACF,KAAK,OAAA;AACH,QAAA,QAAA,CAAS,OAAQ,CAAA,OAAA,CAAQ,KAAO,EAAA,OAAA,CAAQ,SAAS,CAAA;AACjD,QAAA;AAAA,MACF,KAAK,aAAA;AACH,QAAS,QAAA,CAAA,SAAA,CAAU,QAAQ,OAAO,CAAA;AAClC,QAAA;AAAA,MACF,KAAK,YAAA;AACH,QAAA,QAAA,CAAS,WAAY,CAAA,OAAA,CAAQ,MAAU,IAAA,EAAE,CAAA;AACzC,QAAA;AAAA,MACF,KAAK,YAAA;AACH,QAAA,QAAA,CAAS,WAAY,CAAA,OAAA,CAAQ,MAAU,IAAA,EAAE,CAAA;AACzC,QAAA;AAAA,MACF;AACE,QAAA,MAAA,CAAO,IAAK,CAAA,CAAA,oCAAA,EAAuC,OAAQ,CAAA,IAAI,CAAE,CAAA,CAAA;AACjE,QAAA;AAAA;AACJ,GACF;AACF;;;;"}
1
+ {"version":3,"file":"createMessageHandlers.js","sources":["../../../plugin/react-client/createMessageHandlers.ts"],"sourcesContent":["import type { RscWorkerOutputMessage } from \"../worker/types.js\";\nimport type { Logger } from \"vite\";\nimport type { StreamHandlers } from \"../worker/types.js\";\n\ntype MessageHandlerContext = {\n handlers: StreamHandlers;\n logger: Logger;\n verbose?: boolean;\n};\n\nexport function createMessageHandler({\n handlers,\n logger,\n verbose = false,\n}: MessageHandlerContext) {\n return (message: RscWorkerOutputMessage | undefined) => {\n if (!message) {\n logger.warn(\"Received undefined message\");\n return;\n }\n\n switch (message.type) {\n case \"READY\":\n if(verbose) logger.info(\"[react-client] Worker is ready\");\n break;\n case \"ERROR\":\n handlers.onError(message.id, message.error, message.errorInfo);\n break;\n case \"RSC_CHUNK\":\n handlers.onData(message.id, message.chunk);\n break;\n case \"RSC_END\":\n handlers.onEnd(message.id);\n break;\n case \"RSC_METRICS\":\n handlers.onMetrics(message.id, message.metrics);\n break;\n case \"HMR_ACCEPT\":\n handlers.onHmrAccept(message.id, message.routes);\n break;\n case \"HMR_UPDATE\":\n handlers.onHmrUpdate(message.id, message.routes);\n break;\n case \"SERVER_ACTION\":\n handlers.onServerAction?.(message.id, message.args);\n break;\n case \"SERVER_ACTION_RESPONSE\":\n handlers.onServerActionResponse?.(message.id, message.result, message.error);\n break;\n case \"SERVER_MODULE\":\n handlers.onServerModule?.(message.id, message.url, message.source);\n break;\n default:\n logger.warn(`Unknown worker output message type: ${(message as { type: string }).type}`);\n }\n };\n}\n"],"names":[],"mappings":";;;;;AAUO,SAAS,oBAAqB,CAAA;AAAA,EACnC,QAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAU,GAAA;AACZ,CAA0B,EAAA;AACxB,EAAA,OAAO,CAAC,OAAgD,KAAA;AACtD,IAAA,IAAI,CAAC,OAAS,EAAA;AACZ,MAAA,MAAA,CAAO,KAAK,4BAA4B,CAAA;AACxC,MAAA;AAAA;AAGF,IAAA,QAAQ,QAAQ,IAAM;AAAA,MACpB,KAAK,OAAA;AACH,QAAG,IAAA,OAAA,EAAgB,MAAA,CAAA,IAAA,CAAK,gCAAgC,CAAA;AACxD,QAAA;AAAA,MACF,KAAK,OAAA;AACH,QAAA,QAAA,CAAS,QAAQ,OAAQ,CAAA,EAAA,EAAI,OAAQ,CAAA,KAAA,EAAO,QAAQ,SAAS,CAAA;AAC7D,QAAA;AAAA,MACF,KAAK,WAAA;AACH,QAAA,QAAA,CAAS,MAAO,CAAA,OAAA,CAAQ,EAAI,EAAA,OAAA,CAAQ,KAAK,CAAA;AACzC,QAAA;AAAA,MACF,KAAK,SAAA;AACH,QAAS,QAAA,CAAA,KAAA,CAAM,QAAQ,EAAE,CAAA;AACzB,QAAA;AAAA,MACF,KAAK,aAAA;AACH,QAAA,QAAA,CAAS,SAAU,CAAA,OAAA,CAAQ,EAAI,EAAA,OAAA,CAAQ,OAAO,CAAA;AAC9C,QAAA;AAAA,MACF,KAAK,YAAA;AACH,QAAA,QAAA,CAAS,WAAY,CAAA,OAAA,CAAQ,EAAI,EAAA,OAAA,CAAQ,MAAM,CAAA;AAC/C,QAAA;AAAA,MACF,KAAK,YAAA;AACH,QAAA,QAAA,CAAS,WAAY,CAAA,OAAA,CAAQ,EAAI,EAAA,OAAA,CAAQ,MAAM,CAAA;AAC/C,QAAA;AAAA,MACF,KAAK,eAAA;AACH,QAAA,QAAA,CAAS,cAAiB,GAAA,OAAA,CAAQ,EAAI,EAAA,OAAA,CAAQ,IAAI,CAAA;AAClD,QAAA;AAAA,MACF,KAAK,wBAAA;AACH,QAAA,QAAA,CAAS,yBAAyB,OAAQ,CAAA,EAAA,EAAI,OAAQ,CAAA,MAAA,EAAQ,QAAQ,KAAK,CAAA;AAC3E,QAAA;AAAA,MACF,KAAK,eAAA;AACH,QAAA,QAAA,CAAS,iBAAiB,OAAQ,CAAA,EAAA,EAAI,OAAQ,CAAA,GAAA,EAAK,QAAQ,MAAM,CAAA;AACjE,QAAA;AAAA,MACF;AACE,QAAA,MAAA,CAAO,IAAK,CAAA,CAAA,oCAAA,EAAwC,OAA6B,CAAA,IAAI,CAAE,CAAA,CAAA;AAAA;AAC3F,GACF;AACF;;;;"}
@@ -12,11 +12,13 @@ import type { StreamHandlers } from "../worker/types.js";
12
12
  * @param rscWorkerLoaderPort - Optional loader port for module loading
13
13
  * @returns An async generator that yields RSC chunks
14
14
  */
15
- export declare function createWorkerStream({ worker, message, logger, handlers: { onHmrAccept, onHmrUpdate, onMetrics, onError, onData, onEnd }, verbose, }: {
15
+ export declare function createWorkerStream({ worker, message, logger, handlers: { onHmrAccept, onHmrUpdate, onMetrics, onError, onData, onEnd, onServerAction, onServerActionResponse, }, verbose, }: {
16
16
  worker: NodeWorker;
17
- message: Omit<RscRenderMessage, "type" | "id">;
17
+ message: Omit<RscRenderMessage, "type" | "id"> & Partial<Pick<RscRenderMessage, "id">> & {
18
+ type?: "RSC_RENDER";
19
+ };
18
20
  logger: Logger;
19
- handlers: Pick<StreamHandlers, "onHmrAccept" | "onHmrUpdate" | "onMetrics"> & Partial<Pick<StreamHandlers, "onError" | "onData" | "onEnd">>;
21
+ handlers: Pick<StreamHandlers, "onHmrAccept" | "onHmrUpdate" | "onMetrics"> & Partial<Pick<StreamHandlers, "onError" | "onData" | "onEnd" | "onServerAction" | "onServerActionResponse">>;
20
22
  verbose?: boolean;
21
23
  }): AsyncGenerator<Uint8Array>;
22
24
  //# sourceMappingURL=createWorkerStream.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createWorkerStream.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/createWorkerStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD;;;;;;;;;GASG;AACH,wBAAuB,kBAAkB,CAAC,EACxC,MAAM,EACN,OAAO,EACP,MAAM,EACN,QAAQ,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,EACzE,OAAe,GAChB,EAAE;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,aAAa,GAAG,aAAa,GAAG,WAAW,CAAC,GACzE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,cAAc,CAAC,UAAU,CAAC,CAwH7B"}
1
+ {"version":3,"file":"createWorkerStream.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/createWorkerStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIzD;;;;;;;;;GASG;AACH,wBAAuB,kBAAkB,CAAC,EACxC,MAAM,EACN,OAAO,EACP,MAAM,EACN,QAAQ,EAAE,EACR,WAAW,EACX,WAAW,EACX,SAAS,EACT,OAAO,EACP,MAAM,EACN,KAAK,EACL,cAAc,EACd,sBAAsB,GACvB,EACD,OAAe,GAChB,EAAE;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC,GAC5C,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,YAAY,CAAA;KAAE,CAAC;IAClE,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,aAAa,GAAG,aAAa,GAAG,WAAW,CAAC,GACzE,OAAO,CACL,IAAI,CACF,cAAc,EACZ,SAAS,GACT,QAAQ,GACR,OAAO,GACP,gBAAgB,GAChB,wBAAwB,CAC3B,CACF,CAAC;IACJ,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,cAAc,CAAC,UAAU,CAAC,CA0I7B"}
@@ -4,60 +4,94 @@
4
4
  * MIT License
5
5
  */
6
6
  import { createMessageHandler } from './createMessageHandlers.js';
7
+ import { logError } from '../error/toError.js';
7
8
 
8
9
  async function* createWorkerStream({
9
10
  worker,
10
11
  message,
11
12
  logger,
12
- handlers: { onHmrAccept, onHmrUpdate, onMetrics, onError, onData, onEnd },
13
+ handlers: {
14
+ onHmrAccept,
15
+ onHmrUpdate,
16
+ onMetrics,
17
+ onError,
18
+ onData,
19
+ onEnd,
20
+ onServerAction,
21
+ onServerActionResponse
22
+ },
13
23
  verbose = false
14
24
  }) {
25
+ if (!worker) {
26
+ throw new Error("Worker is not running");
27
+ }
15
28
  let messageHandler = null;
16
29
  let currentResolve = null;
17
30
  const handlers = {
18
- onError: (error, errorInfo) => {
19
- logger.error(
20
- "[react-client] " + (error.stack ?? error.stack.includes(error.message) ? "" : error.message + "\n") + error.stack,
21
- {
22
- error
23
- }
24
- );
31
+ onError: (id, error, errorInfo) => {
32
+ logError(error, logger);
25
33
  if (errorInfo) {
26
- logger.error(errorInfo.componentStack);
34
+ logError(errorInfo.componentStack, logger);
27
35
  }
28
36
  if (typeof onError === "function") {
29
- onError(error, errorInfo);
37
+ onError(id, error, errorInfo);
30
38
  }
31
39
  },
32
- onData: (chunk) => {
40
+ onData: (id, chunk) => {
33
41
  currentResolve?.(chunk);
34
- if (verbose) logger.info(`received chunk ${chunk.length} bytes`);
42
+ if (verbose) {
43
+ logger.info(
44
+ `[react-client] received chunk ${id} ${Buffer.from(chunk).byteLength} bytes`
45
+ );
46
+ }
35
47
  if (typeof onData === "function") {
36
- onData(chunk);
48
+ onData(id, chunk);
37
49
  }
38
50
  },
39
- onEnd: () => {
51
+ onEnd: (id) => {
40
52
  currentResolve?.(new Uint8Array());
41
- if (verbose) logger.info(`received end`);
53
+ if (verbose) logger.info(`[react-client] received end`);
42
54
  if (messageHandler) {
43
55
  worker.removeListener("message", messageHandler);
44
56
  messageHandler = null;
45
57
  }
46
58
  if (typeof onEnd === "function") {
47
- onEnd();
59
+ onEnd(id);
48
60
  }
49
61
  },
50
- onMetrics: (metrics) => {
51
- if (verbose) logger.info(`received chunks ${metrics.chunks}`);
62
+ onMetrics: (id, metrics) => {
63
+ if (verbose)
64
+ logger.info(`[react-client] received chunks ${metrics.chunks}`);
52
65
  if (typeof onMetrics === "function") {
53
- onMetrics(metrics);
66
+ onMetrics(id, metrics);
54
67
  }
55
68
  },
56
- onHmrAccept: (routes) => {
57
- if (verbose) logger.info(`received hmr accept ${routes.join(", ")}`);
69
+ onHmrAccept: (id, routes) => {
70
+ if (verbose)
71
+ logger.info(`[react-client] received hmr accept ${routes?.join(", ")}`);
72
+ if (typeof onHmrAccept === "function") {
73
+ onHmrAccept(id, routes);
74
+ }
58
75
  },
59
- onHmrUpdate: (routes) => {
60
- if (verbose) logger.info(`received hmr update ${routes.join(", ")}`);
76
+ onHmrUpdate: (id, routes) => {
77
+ if (verbose)
78
+ logger.info(`[react-client] received hmr update ${routes?.join(", ")}`);
79
+ if (typeof onHmrUpdate === "function") {
80
+ onHmrUpdate(id, routes);
81
+ }
82
+ },
83
+ onServerAction: (id, args) => {
84
+ if (verbose) logger.info(`[react-client] received server action ${id}`);
85
+ if (typeof onServerAction === "function") {
86
+ onServerAction(id, args);
87
+ }
88
+ },
89
+ onServerActionResponse: (id, result, error) => {
90
+ if (verbose)
91
+ logger.info(`[react-client] received server action response ${id}`);
92
+ if (typeof onServerActionResponse === "function") {
93
+ onServerActionResponse(id, result, error);
94
+ }
61
95
  }
62
96
  };
63
97
  try {
@@ -65,13 +99,13 @@ async function* createWorkerStream({
65
99
  worker.removeListener("message", messageHandler);
66
100
  messageHandler = null;
67
101
  }
68
- if (verbose) logger.info(`sending message RSC_RENDER`);
102
+ if (verbose) logger.info(`[react-client] sending message RSC_RENDER`);
69
103
  worker.postMessage({
70
104
  ...message,
71
105
  type: "RSC_RENDER",
72
- id: Math.random().toString(36).slice(2)
106
+ id: message?.id ?? message.route
73
107
  });
74
- if (verbose) logger.info(`waiting for message handler`);
108
+ if (verbose) logger.info(`[react-client] waiting for message handler`);
75
109
  let workerTimeout = null;
76
110
  yield await new Promise((resolve) => {
77
111
  workerTimeout = setTimeout(() => {
@@ -89,7 +123,7 @@ async function* createWorkerStream({
89
123
  if (workerTimeout) {
90
124
  clearTimeout(workerTimeout);
91
125
  }
92
- if (verbose) logger.info(`received message handler`);
126
+ if (verbose) logger.info(`[react-client] received message handler`);
93
127
  while (true) {
94
128
  const chunk = await new Promise((resolve) => {
95
129
  currentResolve = resolve;
@@ -1 +1 @@
1
- {"version":3,"file":"createWorkerStream.js","sources":["../../../plugin/react-client/createWorkerStream.ts"],"sourcesContent":["import type { Logger } from \"vite\";\nimport type {\n RscWorkerOutputMessage,\n RscRenderMessage,\n} from \"../worker/types.js\";\nimport type { StreamMetrics } from \"../types.js\";\nimport type { Worker as NodeWorker } from \"node:worker_threads\";\nimport type { StreamHandlers } from \"../worker/types.js\";\nimport { createMessageHandler } from \"./createMessageHandlers.js\";\n\n/**\n * Creates an async generator that yields RSC chunks from the worker.\n * Handles both module requests and RSC streaming.\n *\n * @param worker - The worker thread\n * @param server - The Vite dev server\n * @param message - The RSC render message\n * @param rscWorkerLoaderPort - Optional loader port for module loading\n * @returns An async generator that yields RSC chunks\n */\nexport async function* createWorkerStream({\n worker,\n message,\n logger,\n handlers: { onHmrAccept, onHmrUpdate, onMetrics, onError, onData, onEnd },\n verbose = false,\n}: {\n worker: NodeWorker;\n message: Omit<RscRenderMessage, \"type\" | \"id\">;\n logger: Logger;\n handlers: Pick<StreamHandlers, \"onHmrAccept\" | \"onHmrUpdate\" | \"onMetrics\"> &\n Partial<Pick<StreamHandlers, \"onError\" | \"onData\" | \"onEnd\">>;\n verbose?: boolean;\n}): AsyncGenerator<Uint8Array> {\n let messageHandler:\n | ((message: RscWorkerOutputMessage | undefined) => void)\n | null = null;\n let currentResolve: ((chunk: Uint8Array) => void) | null = null;\n const handlers: StreamHandlers = {\n onError: (error: any, errorInfo?: any) => {\n logger.error(\n \"[react-client] \" +\n (error.stack ?? error.stack.includes(error.message) ? \"\" : error.message + \"\\n\") +\n error.stack,\n {\n error,\n }\n );\n if (errorInfo) {\n logger.error(errorInfo.componentStack);\n }\n if (typeof onError === \"function\") {\n onError(error, errorInfo);\n }\n },\n onData: (chunk: Uint8Array) => {\n currentResolve?.(chunk);\n if (verbose) logger.info(`received chunk ${chunk.length} bytes`);\n if (typeof onData === \"function\") {\n onData(chunk);\n }\n },\n onEnd: () => {\n currentResolve?.(new Uint8Array());\n if (verbose) logger.info(`received end`);\n if (messageHandler) {\n worker.removeListener(\"message\", messageHandler);\n messageHandler = null;\n }\n if (typeof onEnd === \"function\") {\n onEnd();\n }\n },\n onMetrics: (metrics: StreamMetrics) => {\n if (verbose) logger.info(`received chunks ${metrics.chunks}`);\n if (typeof onMetrics === \"function\") {\n onMetrics(metrics);\n }\n },\n onHmrAccept: (routes: string[]) => {\n if (verbose) logger.info(`received hmr accept ${routes.join(\", \")}`);\n if (typeof onHmrAccept === \"function\") {\n onHmrAccept(routes);\n }\n },\n onHmrUpdate: (routes: string[]) => {\n if (verbose) logger.info(`received hmr update ${routes.join(\", \")}`);\n if (typeof onHmrUpdate === \"function\") {\n onHmrUpdate(routes);\n }\n },\n };\n\n try {\n // Remove any existing message handler before starting\n if (messageHandler) {\n worker.removeListener(\"message\", messageHandler);\n messageHandler = null;\n }\n if (verbose) logger.info(`sending message RSC_RENDER`);\n worker.postMessage({\n ...message,\n type: \"RSC_RENDER\",\n id: Math.random().toString(36).slice(2),\n });\n\n if (verbose) logger.info(`waiting for message handler`);\n let workerTimeout: NodeJS.Timeout | null = null;\n yield await new Promise<Uint8Array>((resolve) => {\n workerTimeout = setTimeout(() => {\n if (verbose) logger.info(`worker timeout`);\n worker.terminate();\n }, 5000);\n currentResolve = resolve;\n messageHandler = createMessageHandler({\n handlers,\n logger,\n verbose,\n });\n worker.on(\"message\", messageHandler);\n });\n if (workerTimeout) {\n clearTimeout(workerTimeout);\n }\n if (verbose) logger.info(`received message handler`);\n while (true) {\n const chunk = await new Promise<Uint8Array>((resolve) => {\n currentResolve = resolve;\n // Create new message handler for each iteration\n if (messageHandler) {\n worker.removeListener(\"message\", messageHandler);\n }\n messageHandler = createMessageHandler({\n handlers,\n logger,\n verbose,\n });\n worker.on(\"message\", messageHandler);\n });\n\n if (chunk.length === 0) {\n break;\n }\n\n yield chunk;\n }\n } finally {\n // Clean up message handler in finally block\n if (messageHandler) {\n worker.removeListener(\"message\", messageHandler);\n messageHandler = null;\n }\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createWorkerStream.js","sources":["../../../plugin/react-client/createWorkerStream.ts"],"sourcesContent":["import type { Logger } from \"vite\";\nimport type {\n RscWorkerOutputMessage,\n RscRenderMessage,\n} from \"../worker/types.js\";\nimport type { StreamMetrics } from \"../types.js\";\nimport type { Worker as NodeWorker } from \"node:worker_threads\";\nimport type { StreamHandlers } from \"../worker/types.js\";\nimport { createMessageHandler } from \"./createMessageHandlers.js\";\nimport { logError } from \"../error/toError.js\";\n\n/**\n * Creates an async generator that yields RSC chunks from the worker.\n * Handles both module requests and RSC streaming.\n *\n * @param worker - The worker thread\n * @param server - The Vite dev server\n * @param message - The RSC render message\n * @param rscWorkerLoaderPort - Optional loader port for module loading\n * @returns An async generator that yields RSC chunks\n */\nexport async function* createWorkerStream({\n worker,\n message,\n logger,\n handlers: {\n onHmrAccept,\n onHmrUpdate,\n onMetrics,\n onError,\n onData,\n onEnd,\n onServerAction,\n onServerActionResponse,\n },\n verbose = false,\n}: {\n worker: NodeWorker;\n message: Omit<RscRenderMessage, \"type\" | \"id\"> &\n Partial<Pick<RscRenderMessage, \"id\">> & { type?: \"RSC_RENDER\" };\n logger: Logger;\n handlers: Pick<StreamHandlers, \"onHmrAccept\" | \"onHmrUpdate\" | \"onMetrics\"> &\n Partial<\n Pick<\n StreamHandlers,\n | \"onError\"\n | \"onData\"\n | \"onEnd\"\n | \"onServerAction\"\n | \"onServerActionResponse\"\n >\n >;\n verbose?: boolean;\n}): AsyncGenerator<Uint8Array> {\n if (!worker) {\n throw new Error(\"Worker is not running\");\n }\n let messageHandler:\n | ((message: RscWorkerOutputMessage | undefined) => void)\n | null = null;\n let currentResolve: ((chunk: Uint8Array) => void) | null = null;\n const handlers: StreamHandlers = {\n onError: (id, error, errorInfo) => {\n logError(error, logger);\n if (errorInfo) {\n logError(errorInfo.componentStack, logger);\n }\n if (typeof onError === \"function\") {\n onError(id, error, errorInfo);\n }\n },\n onData: (id: string, chunk: Uint8Array) => {\n currentResolve?.(chunk);\n if (verbose) {\n logger.info(\n `[react-client] received chunk ${id} ${\n Buffer.from(chunk).byteLength\n } bytes`\n );\n }\n if (typeof onData === \"function\") {\n onData(id, chunk);\n }\n },\n onEnd: (id: string) => {\n currentResolve?.(new Uint8Array());\n if (verbose) logger.info(`[react-client] received end`);\n if (messageHandler) {\n worker.removeListener(\"message\", messageHandler);\n messageHandler = null;\n }\n if (typeof onEnd === \"function\") {\n onEnd(id);\n }\n },\n onMetrics: (id: string, metrics: StreamMetrics) => {\n if (verbose)\n logger.info(`[react-client] received chunks ${metrics.chunks}`);\n if (typeof onMetrics === \"function\") {\n onMetrics(id, metrics);\n }\n },\n onHmrAccept: (id: string, routes?: string[]) => {\n if (verbose)\n logger.info(`[react-client] received hmr accept ${routes?.join(\", \")}`);\n if (typeof onHmrAccept === \"function\") {\n onHmrAccept(id, routes);\n }\n },\n onHmrUpdate: (id: string, routes?: string[]) => {\n if (verbose)\n logger.info(`[react-client] received hmr update ${routes?.join(\", \")}`);\n if (typeof onHmrUpdate === \"function\") {\n onHmrUpdate(id, routes);\n }\n },\n onServerAction: (id: string, args: unknown[]) => {\n if (verbose) logger.info(`[react-client] received server action ${id}`);\n if (typeof onServerAction === \"function\") {\n onServerAction(id, args);\n }\n },\n onServerActionResponse: (id: string, result?: unknown, error?: string) => {\n if (verbose)\n logger.info(`[react-client] received server action response ${id}`);\n if (typeof onServerActionResponse === \"function\") {\n onServerActionResponse(id, result, error);\n }\n },\n };\n\n try {\n // Remove any existing message handler before starting\n if (messageHandler) {\n worker.removeListener(\"message\", messageHandler);\n messageHandler = null;\n }\n if (verbose) logger.info(`[react-client] sending message RSC_RENDER`);\n worker.postMessage({\n ...message,\n type: \"RSC_RENDER\",\n id: message?.id ?? message.route,\n });\n\n if (verbose) logger.info(`[react-client] waiting for message handler`);\n let workerTimeout: NodeJS.Timeout | null = null;\n yield await new Promise<Uint8Array>((resolve) => {\n workerTimeout = setTimeout(() => {\n if (verbose) logger.info(`worker timeout`);\n worker.terminate();\n }, 5000);\n currentResolve = resolve;\n messageHandler = createMessageHandler({\n handlers,\n logger,\n verbose,\n });\n worker.on(\"message\", messageHandler);\n });\n if (workerTimeout) {\n clearTimeout(workerTimeout);\n }\n if (verbose) logger.info(`[react-client] received message handler`);\n while (true) {\n const chunk = await new Promise<Uint8Array>((resolve) => {\n currentResolve = resolve;\n // Create new message handler for each iteration\n if (messageHandler) {\n worker.removeListener(\"message\", messageHandler);\n }\n messageHandler = createMessageHandler({\n handlers,\n logger,\n verbose,\n });\n worker.on(\"message\", messageHandler);\n });\n\n if (chunk.length === 0) {\n break;\n }\n\n yield chunk;\n }\n } finally {\n // Clean up message handler in finally block\n if (messageHandler) {\n worker.removeListener(\"message\", messageHandler);\n messageHandler = null;\n }\n }\n}\n"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ export declare function handleWorkerRscStream({ worker, message, logger, handler
13
13
  worker: NodeWorker;
14
14
  message: Omit<RscRenderMessage, "type" | "id">;
15
15
  logger: Logger;
16
- handlers: Pick<StreamHandlers, "onMetrics" | "onHmrAccept" | "onHmrUpdate"> & Partial<Pick<StreamHandlers, "onError" | "onData" | "onEnd">>;
16
+ handlers: Pick<StreamHandlers, "onMetrics" | "onHmrAccept" | "onHmrUpdate"> & Partial<Pick<StreamHandlers, "onError" | "onData" | "onEnd" | "onServerAction" | "onServerActionResponse">>;
17
17
  verbose?: boolean;
18
18
  }): ReadableStream<Uint8Array>;
19
19
  //# sourceMappingURL=handleWorkerRscStream.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handleWorkerRscStream.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/handleWorkerRscStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAChE;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,OAAO,EACP,MAAM,EACN,QAAQ,EACR,OAAe,EAChB,EAAE;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,aAAa,GAAG,aAAa,CAAC,GACzE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,GAAG,cAAc,CAAC,UAAU,CAAC,CA+B7B"}
1
+ {"version":3,"file":"handleWorkerRscStream.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/handleWorkerRscStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAChE;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,OAAO,EACP,MAAM,EACN,QAAQ,EACR,OAAe,EAChB,EAAE;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,aAAa,GAAG,aAAa,CAAC,GACzE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,gBAAgB,GAAG,wBAAwB,CAAC,CAAC,CAAC;IAC9G,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,GAAG,cAAc,CAAC,UAAU,CAAC,CAyC7B"}
@@ -16,17 +16,27 @@ function handleWorkerRscStream({
16
16
  return new ReadableStream({
17
17
  async start(controller) {
18
18
  try {
19
- if (verbose) logger.info("Starting stream");
19
+ if (verbose) logger.info("[react-client] Starting stream");
20
20
  for await (const chunk of createWorkerStream({
21
21
  worker,
22
22
  message,
23
23
  logger,
24
- handlers,
24
+ handlers: {
25
+ ...handlers,
26
+ onServerAction: (id, args) => {
27
+ if (verbose) logger.info(`[react-client] Received server action ${id}`);
28
+ handlers.onServerAction?.(id, args);
29
+ },
30
+ onServerActionResponse: (id, result, error) => {
31
+ if (verbose) logger.info(`[react-client] Received server action response ${id}`);
32
+ handlers.onServerActionResponse?.(id, result, error);
33
+ }
34
+ },
25
35
  verbose
26
36
  })) {
27
37
  if (!isFlowing) {
28
38
  isFlowing = true;
29
- if (verbose) logger.info("Stream is flowing");
39
+ if (verbose) logger.info("[react-client] Stream is flowing");
30
40
  }
31
41
  controller.enqueue(chunk);
32
42
  }
@@ -35,7 +45,7 @@ function handleWorkerRscStream({
35
45
  } finally {
36
46
  if (isFlowing) {
37
47
  isFlowing = false;
38
- if (verbose) logger.info("Stream closing");
48
+ if (verbose) logger.info("[react-client] Stream closing");
39
49
  }
40
50
  controller.close();
41
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"handleWorkerRscStream.js","sources":["../../../plugin/react-client/handleWorkerRscStream.ts"],"sourcesContent":["import type { Logger } from \"vite\";\nimport type { RscRenderMessage, StreamHandlers } from \"../worker/types.js\";\nimport { createWorkerStream } from \"./createWorkerStream.js\";\nimport type { Worker as NodeWorker } from \"node:worker_threads\";\n/**\n * Handles the RSC stream from the worker.\n * Creates a ReadableStream that pipes RSC chunks to the response.\n *\n * @param worker - The worker thread\n * @param message - The RSC render message\n * @returns A ReadableStream that yields RSC chunks\n */\nexport function handleWorkerRscStream({\n worker,\n message,\n logger,\n handlers,\n verbose = false\n}: {\n worker: NodeWorker,\n message: Omit<RscRenderMessage, \"type\" | \"id\">,\n logger: Logger,\n handlers: Pick<StreamHandlers, \"onMetrics\" | \"onHmrAccept\" | \"onHmrUpdate\"> &\n Partial<Pick<StreamHandlers, \"onError\" | \"onData\" | \"onEnd\">>,\n verbose?: boolean\n}): ReadableStream<Uint8Array> {\n // Create a ReadableStream from the async generator\n let isFlowing = false;\n return new ReadableStream<Uint8Array>({\n async start(controller) {\n try {\n if(verbose) logger.info(\"Starting stream\");\n for await (const chunk of createWorkerStream({\n worker,\n message,\n logger,\n handlers,\n verbose\n })) {\n if (!isFlowing) {\n isFlowing = true;\n if(verbose) logger.info(\"Stream is flowing\");\n }\n controller.enqueue(chunk);\n }\n } catch (error) {\n controller.error(error);\n } finally {\n if (isFlowing) {\n isFlowing = false;\n if(verbose) logger.info(\"Stream closing\");\n }\n controller.close();\n }\n },\n });\n}\n"],"names":[],"mappings":";;;;;;;AAYO,SAAS,qBAAsB,CAAA;AAAA,EACpC,MAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAU,GAAA;AACZ,CAO+B,EAAA;AAE7B,EAAA,IAAI,SAAY,GAAA,KAAA;AAChB,EAAA,OAAO,IAAI,cAA2B,CAAA;AAAA,IACpC,MAAM,MAAM,UAAY,EAAA;AACtB,MAAI,IAAA;AACF,QAAG,IAAA,OAAA,EAAgB,MAAA,CAAA,IAAA,CAAK,iBAAiB,CAAA;AACzC,QAAA,WAAA,MAAiB,SAAS,kBAAmB,CAAA;AAAA,UAC3C,MAAA;AAAA,UACA,OAAA;AAAA,UACA,MAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA,SACD,CAAG,EAAA;AACF,UAAA,IAAI,CAAC,SAAW,EAAA;AACd,YAAY,SAAA,GAAA,IAAA;AACZ,YAAG,IAAA,OAAA,EAAgB,MAAA,CAAA,IAAA,CAAK,mBAAmB,CAAA;AAAA;AAE7C,UAAA,UAAA,CAAW,QAAQ,KAAK,CAAA;AAAA;AAC1B,eACO,KAAO,EAAA;AACd,QAAA,UAAA,CAAW,MAAM,KAAK,CAAA;AAAA,OACtB,SAAA;AACA,QAAA,IAAI,SAAW,EAAA;AACb,UAAY,SAAA,GAAA,KAAA;AACZ,UAAG,IAAA,OAAA,EAAgB,MAAA,CAAA,IAAA,CAAK,gBAAgB,CAAA;AAAA;AAE1C,QAAA,UAAA,CAAW,KAAM,EAAA;AAAA;AACnB;AACF,GACD,CAAA;AACH;;;;"}
1
+ {"version":3,"file":"handleWorkerRscStream.js","sources":["../../../plugin/react-client/handleWorkerRscStream.ts"],"sourcesContent":["import type { Logger } from \"vite\";\nimport type { RscRenderMessage, StreamHandlers } from \"../worker/types.js\";\nimport { createWorkerStream } from \"./createWorkerStream.js\";\nimport type { Worker as NodeWorker } from \"node:worker_threads\";\n/**\n * Handles the RSC stream from the worker.\n * Creates a ReadableStream that pipes RSC chunks to the response.\n *\n * @param worker - The worker thread\n * @param message - The RSC render message\n * @returns A ReadableStream that yields RSC chunks\n */\nexport function handleWorkerRscStream({\n worker,\n message,\n logger,\n handlers,\n verbose = false\n}: {\n worker: NodeWorker,\n message: Omit<RscRenderMessage, \"type\" | \"id\">,\n logger: Logger,\n handlers: Pick<StreamHandlers, \"onMetrics\" | \"onHmrAccept\" | \"onHmrUpdate\"> &\n Partial<Pick<StreamHandlers, \"onError\" | \"onData\" | \"onEnd\" | \"onServerAction\" | \"onServerActionResponse\">>,\n verbose?: boolean\n}): ReadableStream<Uint8Array> {\n // Create a ReadableStream from the async generator\n let isFlowing = false;\n return new ReadableStream<Uint8Array>({\n async start(controller) {\n try {\n if(verbose) logger.info(\"[react-client] Starting stream\");\n for await (const chunk of createWorkerStream({\n worker,\n message,\n logger,\n handlers: {\n ...handlers,\n onServerAction: (id: string, args: unknown[]) => {\n if (verbose) logger.info(`[react-client] Received server action ${id}`);\n handlers.onServerAction?.(id, args);\n },\n onServerActionResponse: (id: string, result?: unknown, error?: string) => {\n if (verbose) logger.info(`[react-client] Received server action response ${id}`);\n handlers.onServerActionResponse?.(id, result, error);\n }\n },\n verbose\n })) {\n if (!isFlowing) {\n isFlowing = true;\n if(verbose) logger.info(\"[react-client] Stream is flowing\");\n }\n controller.enqueue(chunk);\n }\n } catch (error) {\n controller.error(error);\n } finally {\n if (isFlowing) {\n isFlowing = false;\n if(verbose) logger.info(\"[react-client] Stream closing\");\n }\n controller.close();\n }\n },\n });\n}\n"],"names":[],"mappings":";;;;;;;AAYO,SAAS,qBAAsB,CAAA;AAAA,EACpC,MAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAU,GAAA;AACZ,CAO+B,EAAA;AAE7B,EAAA,IAAI,SAAY,GAAA,KAAA;AAChB,EAAA,OAAO,IAAI,cAA2B,CAAA;AAAA,IACpC,MAAM,MAAM,UAAY,EAAA;AACtB,MAAI,IAAA;AACF,QAAG,IAAA,OAAA,EAAgB,MAAA,CAAA,IAAA,CAAK,gCAAgC,CAAA;AACxD,QAAA,WAAA,MAAiB,SAAS,kBAAmB,CAAA;AAAA,UAC3C,MAAA;AAAA,UACA,OAAA;AAAA,UACA,MAAA;AAAA,UACA,QAAU,EAAA;AAAA,YACR,GAAG,QAAA;AAAA,YACH,cAAA,EAAgB,CAAC,EAAA,EAAY,IAAoB,KAAA;AAC/C,cAAA,IAAI,OAAS,EAAA,MAAA,CAAO,IAAK,CAAA,CAAA,sCAAA,EAAyC,EAAE,CAAE,CAAA,CAAA;AACtE,cAAS,QAAA,CAAA,cAAA,GAAiB,IAAI,IAAI,CAAA;AAAA,aACpC;AAAA,YACA,sBAAwB,EAAA,CAAC,EAAY,EAAA,MAAA,EAAkB,KAAmB,KAAA;AACxE,cAAA,IAAI,OAAS,EAAA,MAAA,CAAO,IAAK,CAAA,CAAA,+CAAA,EAAkD,EAAE,CAAE,CAAA,CAAA;AAC/E,cAAS,QAAA,CAAA,sBAAA,GAAyB,EAAI,EAAA,MAAA,EAAQ,KAAK,CAAA;AAAA;AACrD,WACF;AAAA,UACA;AAAA,SACD,CAAG,EAAA;AACF,UAAA,IAAI,CAAC,SAAW,EAAA;AACd,YAAY,SAAA,GAAA,IAAA;AACZ,YAAG,IAAA,OAAA,EAAgB,MAAA,CAAA,IAAA,CAAK,kCAAkC,CAAA;AAAA;AAE5D,UAAA,UAAA,CAAW,QAAQ,KAAK,CAAA;AAAA;AAC1B,eACO,KAAO,EAAA;AACd,QAAA,UAAA,CAAW,MAAM,KAAK,CAAA;AAAA,OACtB,SAAA;AACA,QAAA,IAAI,SAAW,EAAA;AACb,UAAY,SAAA,GAAA,KAAA;AACZ,UAAG,IAAA,OAAA,EAAgB,MAAA,CAAA,IAAA,CAAK,+BAA+B,CAAA;AAAA;AAEzD,QAAA,UAAA,CAAW,KAAM,EAAA;AAAA;AACnB;AACF,GACD,CAAA;AACH;;;;"}
@@ -1,4 +1,4 @@
1
1
  import { type Plugin } from "vite";
2
- import type { StreamPluginOptions } from "../types.js";
3
- export declare function reactClientPlugin(options: StreamPluginOptions): Plugin;
2
+ import type { InlineCssOpt, PagePropOpt, StreamPluginOptions } from "../types.js";
3
+ export declare function reactClientPlugin<T extends PagePropOpt = PagePropOpt, InlineCSS extends InlineCssOpt = InlineCssOpt>(options: StreamPluginOptions<T, InlineCSS>): Plugin;
4
4
  //# sourceMappingURL=plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,MAAM,EAAE,MAAM,MAAM,CAAC;AACnD,OAAO,KAAK,EAIV,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAerB,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CA8HtE"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,MAAM,EAAE,MAAM,MAAM,CAAC;AACnD,OAAO,KAAK,EAEV,YAAY,EACZ,WAAW,EAGX,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAQrB,wBAAgB,iBAAiB,CAC/B,CAAC,SAAS,WAAW,GAAG,WAAW,EACnC,SAAS,SAAS,YAAY,GAAG,YAAY,EAC7C,OAAO,EAAE,mBAAmB,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,MAAM,CAqIpD"}