vite-plugin-react-server 1.1.10 → 1.1.11

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 (361) hide show
  1. package/README.md +208 -27
  2. package/dist/package.json +34 -14
  3. package/dist/plugin/{css-collector-elements.d.ts → components/css-collector-elements.d.ts} +1 -1
  4. package/dist/plugin/components/css-collector-elements.d.ts.map +1 -0
  5. package/dist/plugin/components/css-collector-elements.js.map +1 -0
  6. package/dist/plugin/{css-collector.d.ts → components/css-collector.d.ts} +1 -1
  7. package/dist/plugin/components/css-collector.d.ts.map +1 -0
  8. package/dist/plugin/components/css-collector.js.map +1 -0
  9. package/dist/plugin/components/html.d.ts +4 -0
  10. package/dist/plugin/components/html.d.ts.map +1 -0
  11. package/dist/plugin/components/html.js +17 -0
  12. package/dist/plugin/components/html.js.map +1 -0
  13. package/dist/plugin/components/index.d.ts +5 -0
  14. package/dist/plugin/components/index.d.ts.map +1 -0
  15. package/dist/plugin/components.js +9 -3
  16. package/dist/plugin/components.js.map +1 -0
  17. package/dist/plugin/config/autoDiscover/index.d.ts +6 -0
  18. package/dist/plugin/config/autoDiscover/index.d.ts.map +1 -0
  19. package/dist/plugin/config/autoDiscover/index.js +8 -0
  20. package/dist/plugin/config/{resolveAutoDiscover.d.ts → autoDiscover/resolveAutoDiscover.d.ts} +1 -1
  21. package/dist/plugin/config/autoDiscover/resolveAutoDiscover.d.ts.map +1 -0
  22. package/dist/plugin/config/{resolveAutoDiscover.js → autoDiscover/resolveAutoDiscover.js} +10 -9
  23. package/dist/plugin/config/autoDiscover/resolveAutoDiscover.js.map +1 -0
  24. package/dist/plugin/config/autoDiscover/resolveBuildPages.d.ts.map +1 -1
  25. package/dist/plugin/config/autoDiscover/resolveBuildPages.js +10 -10
  26. package/dist/plugin/config/autoDiscover/resolveBuildPages.js.map +1 -1
  27. package/dist/plugin/config/defaults.d.ts +4 -3
  28. package/dist/plugin/config/defaults.d.ts.map +1 -1
  29. package/dist/plugin/config/defaults.js +5 -3
  30. package/dist/plugin/config/defaults.js.map +1 -1
  31. package/dist/plugin/config/index.d.ts +1 -0
  32. package/dist/plugin/config/index.d.ts.map +1 -1
  33. package/dist/plugin/config/index.js +1 -0
  34. package/dist/plugin/config/resolveEnv.d.ts +11 -1
  35. package/dist/plugin/config/resolveEnv.d.ts.map +1 -1
  36. package/dist/plugin/config/resolveEnv.js +104 -5
  37. package/dist/plugin/config/resolveEnv.js.map +1 -1
  38. package/dist/plugin/config/resolveOptions.d.ts.map +1 -1
  39. package/dist/plugin/config/resolveOptions.js +11 -4
  40. package/dist/plugin/config/resolveOptions.js.map +1 -1
  41. package/dist/plugin/config/resolveUrlOption.d.ts +1 -1
  42. package/dist/plugin/config/resolveUrlOption.d.ts.map +1 -1
  43. package/dist/plugin/config/resolveUrlOption.js +1 -2
  44. package/dist/plugin/config/resolveUrlOption.js.map +1 -1
  45. package/dist/plugin/config/resolveUserConfig.d.ts.map +1 -1
  46. package/dist/plugin/config/resolveUserConfig.js +43 -18
  47. package/dist/plugin/config/resolveUserConfig.js.map +1 -1
  48. package/dist/plugin/config.js +17 -0
  49. package/dist/plugin/config.js.map +1 -0
  50. package/dist/plugin/env/index.d.ts +2 -0
  51. package/dist/plugin/env/index.d.ts.map +1 -0
  52. package/dist/plugin/env/index.js +1 -0
  53. package/dist/plugin/env/plugin.d.ts +30 -0
  54. package/dist/plugin/env/plugin.d.ts.map +1 -0
  55. package/dist/plugin/env/plugin.js +64 -0
  56. package/dist/plugin/env.js +45 -0
  57. package/dist/plugin/env.js.map +1 -0
  58. package/dist/plugin/error/toError.d.ts +6 -0
  59. package/dist/plugin/error/toError.d.ts.map +1 -0
  60. package/dist/plugin/error/toError.js +19 -0
  61. package/dist/plugin/error/toError.js.map +1 -0
  62. package/dist/plugin/file-preserver/plugin.d.ts +19 -0
  63. package/dist/plugin/file-preserver/plugin.d.ts.map +1 -0
  64. package/dist/plugin/file-preserver/plugin.js +108 -0
  65. package/dist/plugin/file-preserver.js +96 -0
  66. package/dist/plugin/file-preserver.js.map +1 -0
  67. package/dist/plugin/helpers/createEventHandler.d.ts +1 -1
  68. package/dist/plugin/helpers/createRscStream.js +1 -1
  69. package/dist/plugin/helpers/createRscStream.js.map +1 -1
  70. package/dist/plugin/helpers/formatMetrics.d.ts +3 -1
  71. package/dist/plugin/helpers/formatMetrics.d.ts.map +1 -1
  72. package/dist/plugin/helpers/formatMetrics.js +22 -7
  73. package/dist/plugin/helpers/formatMetrics.js.map +1 -0
  74. package/dist/plugin/helpers/getRouteFiles.d.ts +1 -1
  75. package/dist/plugin/helpers/getRouteFiles.d.ts.map +1 -1
  76. package/dist/plugin/helpers/getRouteFiles.js +37 -18
  77. package/dist/plugin/helpers/getRouteFiles.js.map +1 -0
  78. package/dist/plugin/helpers/index.d.ts +24 -0
  79. package/dist/plugin/helpers/index.d.ts.map +1 -0
  80. package/dist/plugin/helpers/index.js +31 -0
  81. package/dist/plugin/helpers/metrics.js +26 -2
  82. package/dist/plugin/helpers/metrics.js.map +1 -1
  83. package/dist/plugin/helpers/moduleRefs.d.ts.map +1 -0
  84. package/dist/plugin/helpers/moduleRefs.js.map +1 -0
  85. package/dist/plugin/helpers/requestInfo.d.ts +10 -0
  86. package/dist/plugin/helpers/requestInfo.d.ts.map +1 -1
  87. package/dist/plugin/helpers/requestInfo.js.map +1 -1
  88. package/dist/plugin/helpers/requestToRoute.js +22 -14
  89. package/dist/plugin/helpers/requestToRoute.js.map +1 -0
  90. package/dist/plugin/helpers/resolvePage.d.ts.map +1 -0
  91. package/dist/plugin/{resolvePage.js → helpers/resolvePage.js} +19 -3
  92. package/dist/plugin/helpers/resolvePage.js.map +1 -0
  93. package/dist/plugin/helpers/resolvePageAndProps.d.ts.map +1 -1
  94. package/dist/plugin/helpers/resolvePageAndProps.js +7 -4
  95. package/dist/plugin/helpers/resolvePageAndProps.js.map +1 -1
  96. package/dist/plugin/helpers/resolveProps.d.ts.map +1 -0
  97. package/dist/plugin/{resolveProps.js → helpers/resolveProps.js} +9 -6
  98. package/dist/plugin/helpers/resolveProps.js.map +1 -0
  99. package/dist/plugin/helpers/serializeUserOptions.js +1 -1
  100. package/dist/plugin/helpers/serializeUserOptions.js.map +1 -1
  101. package/dist/plugin/helpers/stashReturnValue.js +19 -13
  102. package/dist/plugin/helpers/stashReturnValue.js.map +1 -0
  103. package/dist/plugin/helpers/tryManifest.d.ts.map +1 -1
  104. package/dist/plugin/helpers/tryManifest.js +0 -1
  105. package/dist/plugin/helpers/tryManifest.js.map +1 -1
  106. package/dist/plugin/helpers.js +27 -0
  107. package/dist/plugin/helpers.js.map +1 -0
  108. package/dist/plugin/loader/createBuildLoader.js +1 -1
  109. package/dist/plugin/loader/createBuildLoader.js.map +1 -1
  110. package/dist/plugin/loader/env-loader.development.d.ts +12 -0
  111. package/dist/plugin/loader/env-loader.development.d.ts.map +1 -0
  112. package/dist/plugin/loader/env-loader.development.js +60 -0
  113. package/dist/plugin/plugin.client.d.ts.map +1 -1
  114. package/dist/plugin/plugin.client.js +2 -0
  115. package/dist/plugin/plugin.client.js.map +1 -1
  116. package/dist/plugin/plugin.d.ts.map +1 -1
  117. package/dist/plugin/plugin.js +1 -2
  118. package/dist/plugin/plugin.server.d.ts.map +1 -1
  119. package/dist/plugin/plugin.server.js +3 -0
  120. package/dist/plugin/plugin.server.js.map +1 -1
  121. package/dist/plugin/process-env.d.ts +14 -0
  122. package/dist/plugin/process-env.d.ts.map +1 -0
  123. package/dist/plugin/react-client/createMessageHandlers.d.ts +2 -1
  124. package/dist/plugin/react-client/createMessageHandlers.d.ts.map +1 -1
  125. package/dist/plugin/react-client/createMessageHandlers.js +13 -2
  126. package/dist/plugin/react-client/createMessageHandlers.js.map +1 -1
  127. package/dist/plugin/react-client/createWorkerStream.d.ts +8 -2
  128. package/dist/plugin/react-client/createWorkerStream.d.ts.map +1 -1
  129. package/dist/plugin/react-client/createWorkerStream.js +49 -8
  130. package/dist/plugin/react-client/createWorkerStream.js.map +1 -1
  131. package/dist/plugin/react-client/handleWorkerRscStream.d.ts +19 -0
  132. package/dist/plugin/react-client/handleWorkerRscStream.d.ts.map +1 -0
  133. package/dist/plugin/react-client/handleWorkerRscStream.js +47 -0
  134. package/dist/plugin/react-client/handleWorkerRscStream.js.map +1 -0
  135. package/dist/plugin/react-client/plugin.d.ts.map +1 -1
  136. package/dist/plugin/react-client/plugin.js +18 -2
  137. package/dist/plugin/react-client/plugin.js.map +1 -1
  138. package/dist/plugin/react-client/restartWorker.d.ts +6 -1
  139. package/dist/plugin/react-client/restartWorker.d.ts.map +1 -1
  140. package/dist/plugin/react-client/restartWorker.js +13 -5
  141. package/dist/plugin/react-client/restartWorker.js.map +1 -1
  142. package/dist/plugin/react-client/server.d.ts +2 -13
  143. package/dist/plugin/react-client/server.d.ts.map +1 -1
  144. package/dist/plugin/react-client/server.js +112 -99
  145. package/dist/plugin/react-client/server.js.map +1 -1
  146. package/dist/plugin/react-server/plugin.d.ts.map +1 -1
  147. package/dist/plugin/react-server/plugin.js +18 -8
  148. package/dist/plugin/react-server/plugin.js.map +1 -1
  149. package/dist/plugin/react-server/server.d.ts.map +1 -1
  150. package/dist/plugin/react-server/server.js +28 -12
  151. package/dist/plugin/react-server/server.js.map +1 -1
  152. package/dist/plugin/react-static/collectHtmlWorkerContent.d.ts.map +1 -1
  153. package/dist/plugin/react-static/collectHtmlWorkerContent.js +9 -0
  154. package/dist/plugin/react-static/collectHtmlWorkerContent.js.map +1 -1
  155. package/dist/plugin/react-static/fileWriter.d.ts +1 -1
  156. package/dist/plugin/react-static/fileWriter.d.ts.map +1 -1
  157. package/dist/plugin/react-static/fileWriter.js.map +1 -1
  158. package/dist/plugin/react-static/plugin.d.ts.map +1 -1
  159. package/dist/plugin/react-static/plugin.js +19 -27
  160. package/dist/plugin/react-static/plugin.js.map +1 -1
  161. package/dist/plugin/root.d.ts +1 -0
  162. package/dist/plugin/root.d.ts.map +1 -1
  163. package/dist/plugin/root.js +3 -2
  164. package/dist/plugin/root.js.map +1 -1
  165. package/dist/plugin/transformer/upgradeCssModuleCode.d.ts +1 -10
  166. package/dist/plugin/transformer/upgradeCssModuleCode.d.ts.map +1 -1
  167. package/dist/plugin/transformer/upgradeCssModuleCode.js +40 -38
  168. package/dist/plugin/types.d.ts +57 -15
  169. package/dist/plugin/types.d.ts.map +1 -1
  170. package/dist/plugin/types.js +1 -1
  171. package/dist/plugin/utils/callServer.d.ts +1 -1
  172. package/dist/plugin/utils/callServer.d.ts.map +1 -1
  173. package/dist/plugin/utils/callServer.js +2 -16
  174. package/dist/plugin/utils/callServer.js.map +1 -1
  175. package/dist/plugin/utils/createCallServer.d.ts +2 -0
  176. package/dist/plugin/utils/createCallServer.d.ts.map +1 -0
  177. package/dist/plugin/utils/createCallServer.js +28 -0
  178. package/dist/plugin/utils/createCallServer.js.map +1 -0
  179. package/dist/plugin/utils/createReactFetcher.d.ts +3 -1
  180. package/dist/plugin/utils/createReactFetcher.d.ts.map +1 -1
  181. package/dist/plugin/utils/createReactFetcher.js +7 -5
  182. package/dist/plugin/utils/createReactFetcher.js.map +1 -1
  183. package/dist/plugin/utils/env.js.map +1 -1
  184. package/dist/plugin/utils/envUrls.d.ts +9 -0
  185. package/dist/plugin/utils/envUrls.d.ts.map +1 -0
  186. package/dist/plugin/utils/envUrls.js +7 -0
  187. package/dist/plugin/utils/envUrls.node.d.ts +7 -0
  188. package/dist/plugin/utils/envUrls.node.d.ts.map +1 -0
  189. package/dist/plugin/utils/envUrls.node.js +11 -0
  190. package/dist/plugin/utils/envUrls.node.js.map +1 -0
  191. package/dist/plugin/utils/index.d.ts +1 -1
  192. package/dist/plugin/utils/index.d.ts.map +1 -1
  193. package/dist/plugin/utils/index.js +1 -1
  194. package/dist/plugin/utils/moduleBaseURL.d.ts +3 -0
  195. package/dist/plugin/utils/moduleBaseURL.d.ts.map +1 -0
  196. package/dist/plugin/utils/moduleBaseURL.js +4 -0
  197. package/dist/plugin/utils/urls.d.ts +130 -0
  198. package/dist/plugin/utils/urls.d.ts.map +1 -0
  199. package/dist/plugin/utils/urls.js +87 -0
  200. package/dist/plugin/utils/urls.js.map +1 -0
  201. package/dist/plugin/utils.js +1 -1
  202. package/dist/plugin/vendor/index.d.ts +2 -0
  203. package/dist/plugin/vendor/index.d.ts.map +1 -0
  204. package/dist/plugin/vendor/index.js +1 -0
  205. package/dist/plugin/vendor/vendor.client.d.ts.map +1 -0
  206. package/dist/plugin/vendor/vendor.client.js.map +1 -0
  207. package/dist/plugin/vendor/vendor.d.ts +2 -0
  208. package/dist/plugin/vendor/vendor.d.ts.map +1 -0
  209. package/dist/plugin/vendor/vendor.js +15 -0
  210. package/dist/plugin/vendor/vendor.js.map +1 -0
  211. package/dist/plugin/vendor/vendor.server.d.ts.map +1 -0
  212. package/dist/plugin/vendor/vendor.server.js.map +1 -0
  213. package/dist/plugin/vendor.js +7 -0
  214. package/dist/plugin/vendor.js.map +1 -0
  215. package/dist/plugin/worker/createWorker.d.ts +3 -0
  216. package/dist/plugin/worker/createWorker.d.ts.map +1 -1
  217. package/dist/plugin/worker/createWorker.js +33 -20
  218. package/dist/plugin/worker/createWorker.js.map +1 -1
  219. package/dist/plugin/worker/html/createHtmlWorkerRenderState.js +1 -1
  220. package/dist/plugin/worker/html/createHtmlWorkerRenderState.js.map +1 -1
  221. package/dist/plugin/worker/html/html-worker.development.js.map +1 -1
  222. package/dist/plugin/worker/html/html-worker.production.js.map +1 -1
  223. package/dist/plugin/worker/rsc/handleRender.d.ts.map +1 -1
  224. package/dist/plugin/worker/rsc/handleRender.js +4 -4
  225. package/dist/plugin/worker/rsc/handleRender.js.map +1 -1
  226. package/dist/plugin/worker/rsc/messageHandler.d.ts +2 -1
  227. package/dist/plugin/worker/rsc/messageHandler.d.ts.map +1 -1
  228. package/dist/plugin/worker/rsc/messageHandler.js +41 -15
  229. package/dist/plugin/worker/rsc/messageHandler.js.map +1 -1
  230. package/dist/plugin/worker/rsc/rsc-worker.development.js +16 -5
  231. package/dist/plugin/worker/rsc/rsc-worker.development.js.map +1 -1
  232. package/dist/plugin/worker/rsc/rsc-worker.production.js +16 -5
  233. package/dist/plugin/worker/rsc/rsc-worker.production.js.map +1 -1
  234. package/dist/plugin/worker/rsc/state.d.ts.map +1 -1
  235. package/dist/plugin/worker/sendMessage.js +45 -43
  236. package/dist/plugin/worker/sendMessage.js.map +1 -0
  237. package/dist/plugin/worker/types.d.ts +26 -4
  238. package/dist/plugin/worker/types.d.ts.map +1 -1
  239. package/dist/server.js +1 -1
  240. package/dist/server.js.map +1 -1
  241. package/dist/tsconfig.tsbuildinfo +1 -1
  242. package/package.json +34 -14
  243. package/plugin/{css-collector-elements.tsx → components/css-collector-elements.tsx} +1 -1
  244. package/plugin/{css-collector.tsx → components/css-collector.tsx} +1 -1
  245. package/plugin/{html.tsx → components/html.tsx} +1 -3
  246. package/{dist/plugin/components.d.ts → plugin/components/index.ts} +1 -1
  247. package/plugin/config/autoDiscover/index.ts +10 -0
  248. package/plugin/config/{resolveAutoDiscover.ts → autoDiscover/resolveAutoDiscover.ts} +16 -12
  249. package/plugin/config/autoDiscover/resolveBuildPages.ts +10 -11
  250. package/plugin/config/defaults.tsx +4 -3
  251. package/plugin/config/index.ts +1 -1
  252. package/plugin/config/resolveEnv.ts +156 -6
  253. package/plugin/config/resolveOptions.ts +13 -5
  254. package/plugin/config/resolveUrlOption.ts +2 -7
  255. package/plugin/config/resolveUserConfig.ts +87 -36
  256. package/plugin/env/index.ts +1 -0
  257. package/plugin/env/plugin.ts +78 -0
  258. package/plugin/error/toError.ts +19 -0
  259. package/plugin/file-preserver/plugin.ts +117 -0
  260. package/plugin/helpers/createRscStream.tsx +1 -1
  261. package/plugin/helpers/formatMetrics.ts +2 -2
  262. package/plugin/helpers/getRouteFiles.ts +3 -1
  263. package/plugin/helpers/index.ts +38 -0
  264. package/plugin/helpers/requestInfo.ts +10 -0
  265. package/plugin/{resolvePage.ts → helpers/resolvePage.ts} +19 -4
  266. package/plugin/helpers/resolvePageAndProps.ts +7 -4
  267. package/plugin/{resolveProps.ts → helpers/resolveProps.ts} +8 -6
  268. package/plugin/helpers/serializeUserOptions.ts +1 -1
  269. package/plugin/helpers/tryManifest.ts +0 -1
  270. package/plugin/loader/createBuildLoader.ts +1 -1
  271. package/plugin/loader/env-loader.development.ts +84 -0
  272. package/plugin/plugin.client.ts +2 -0
  273. package/plugin/plugin.server.ts +3 -0
  274. package/plugin/plugin.ts +1 -3
  275. package/plugin/process-env.ts +13 -0
  276. package/plugin/react-client/createMessageHandlers.ts +13 -1
  277. package/plugin/react-client/createWorkerStream.ts +69 -15
  278. package/plugin/react-client/handleWorkerRscStream.ts +57 -0
  279. package/plugin/react-client/plugin.ts +29 -13
  280. package/plugin/react-client/restartWorker.ts +15 -7
  281. package/plugin/react-client/server.ts +115 -124
  282. package/plugin/react-server/plugin.ts +26 -13
  283. package/plugin/react-server/server.ts +33 -15
  284. package/plugin/react-static/collectHtmlWorkerContent.ts +13 -1
  285. package/plugin/react-static/fileWriter.ts +1 -1
  286. package/plugin/react-static/plugin.ts +21 -34
  287. package/plugin/root.ts +7 -1
  288. package/plugin/transformer/upgradeCssModuleCode.ts +39 -39
  289. package/plugin/types/env.d.ts +7 -0
  290. package/plugin/types.ts +68 -20
  291. package/plugin/utils/callServer.ts +2 -24
  292. package/plugin/utils/createCallServer.ts +26 -0
  293. package/plugin/utils/createReactFetcher.ts +10 -6
  294. package/plugin/utils/envUrls.node.ts +19 -0
  295. package/plugin/utils/envUrls.ts +8 -0
  296. package/plugin/utils/index.ts +1 -1
  297. package/plugin/utils/moduleBaseURL.ts +7 -0
  298. package/plugin/utils/urls.ts +217 -0
  299. package/plugin/vendor/index.ts +1 -0
  300. package/plugin/vendor/vendor.ts +6 -0
  301. package/plugin/worker/createWorker.ts +38 -22
  302. package/plugin/worker/html/createHtmlWorkerRenderState.tsx +1 -1
  303. package/plugin/worker/html/html-worker.development.tsx +2 -1
  304. package/plugin/worker/html/html-worker.production.tsx +2 -1
  305. package/plugin/worker/rsc/handleRender.ts +4 -5
  306. package/plugin/worker/rsc/messageHandler.tsx +53 -17
  307. package/plugin/worker/rsc/rsc-worker.development.ts +22 -8
  308. package/plugin/worker/rsc/rsc-worker.production.ts +23 -7
  309. package/plugin/worker/types.ts +28 -4
  310. package/dist/plugin/components.d.ts.map +0 -1
  311. package/dist/plugin/config/resolveAutoDiscover.d.ts.map +0 -1
  312. package/dist/plugin/config/resolveAutoDiscover.js.map +0 -1
  313. package/dist/plugin/copy.d.ts +0 -7
  314. package/dist/plugin/copy.d.ts.map +0 -1
  315. package/dist/plugin/copy.js +0 -30
  316. package/dist/plugin/css-collector-elements.d.ts.map +0 -1
  317. package/dist/plugin/css-collector-elements.js.map +0 -1
  318. package/dist/plugin/css-collector.d.ts.map +0 -1
  319. package/dist/plugin/css-collector.js.map +0 -1
  320. package/dist/plugin/getCondition.d.ts +0 -2
  321. package/dist/plugin/getCondition.d.ts.map +0 -1
  322. package/dist/plugin/html.d.ts +0 -4
  323. package/dist/plugin/html.d.ts.map +0 -1
  324. package/dist/plugin/html.js +0 -18
  325. package/dist/plugin/html.js.map +0 -1
  326. package/dist/plugin/manifest.d.ts +0 -6
  327. package/dist/plugin/manifest.d.ts.map +0 -1
  328. package/dist/plugin/manifest.js +0 -13
  329. package/dist/plugin/moduleRefs.d.ts.map +0 -1
  330. package/dist/plugin/moduleRefs.js.map +0 -1
  331. package/dist/plugin/resolvePage.d.ts.map +0 -1
  332. package/dist/plugin/resolvePage.js.map +0 -1
  333. package/dist/plugin/resolveProps.d.ts.map +0 -1
  334. package/dist/plugin/resolveProps.js.map +0 -1
  335. package/dist/plugin/utils/pageURL.d.ts +0 -5
  336. package/dist/plugin/utils/pageURL.d.ts.map +0 -1
  337. package/dist/plugin/utils/pageURL.js +0 -33
  338. package/dist/plugin/utils/pageURL.js.map +0 -1
  339. package/dist/plugin/vendor.client.d.ts.map +0 -1
  340. package/dist/plugin/vendor.client.js.map +0 -1
  341. package/dist/plugin/vendor.server.d.ts.map +0 -1
  342. package/dist/plugin/vendor.server.js.map +0 -1
  343. package/plugin/copy.ts +0 -39
  344. package/plugin/getCondition.ts +0 -0
  345. package/plugin/manifest.ts +0 -24
  346. package/plugin/utils/pageURL.ts +0 -33
  347. /package/dist/plugin/{css-collector-elements.js → components/css-collector-elements.js} +0 -0
  348. /package/dist/plugin/{css-collector.js → components/css-collector.js} +0 -0
  349. /package/{plugin/components.ts → dist/plugin/components/index.js} +0 -0
  350. /package/dist/plugin/{moduleRefs.d.ts → helpers/moduleRefs.d.ts} +0 -0
  351. /package/dist/plugin/{moduleRefs.js → helpers/moduleRefs.js} +0 -0
  352. /package/dist/plugin/{resolvePage.d.ts → helpers/resolvePage.d.ts} +0 -0
  353. /package/dist/plugin/{resolveProps.d.ts → helpers/resolveProps.d.ts} +0 -0
  354. /package/dist/plugin/{getCondition.js → process-env.js} +0 -0
  355. /package/dist/plugin/{vendor.client.d.ts → vendor/vendor.client.d.ts} +0 -0
  356. /package/dist/plugin/{vendor.client.js → vendor/vendor.client.js} +0 -0
  357. /package/dist/plugin/{vendor.server.d.ts → vendor/vendor.server.d.ts} +0 -0
  358. /package/dist/plugin/{vendor.server.js → vendor/vendor.server.js} +0 -0
  359. /package/plugin/{moduleRefs.ts → helpers/moduleRefs.ts} +0 -0
  360. /package/plugin/{vendor.client.ts → vendor/vendor.client.ts} +0 -0
  361. /package/plugin/{vendor.server.ts → vendor/vendor.server.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vendor.client.js","sources":["../../../plugin/vendor/vendor.client.ts"],"sourcesContent":["import { workerData } from \"node:worker_threads\";\nimport { createRequire } from \"node:module\";\nimport { join } from \"node:path\";\n\nconst projectRoot = workerData?.projectRoot || process.cwd();\nconst nodeRequire = createRequire(join(projectRoot, \"package.json\"));\n\n// Import ReactDOM from the project's node_modules\nconst ReactDOMServer = nodeRequire(\"react-dom/server\");\nconst React = nodeRequire(\"react\");\n\nexport { ReactDOMServer, React };\n"],"names":[],"mappings":";;;;;;;;;AAIA,MAAM,WAAc,GAAA,UAAA,EAAY,WAAe,IAAA,OAAA,CAAQ,GAAI,EAAA;AAC3D,MAAM,WAAc,GAAA,aAAA,CAAc,IAAK,CAAA,WAAA,EAAa,cAAc,CAAC,CAAA;AAG7D,MAAA,cAAA,GAAiB,YAAY,kBAAkB;AACvC,YAAY,OAAO;;;;"}
@@ -0,0 +1,2 @@
1
+ export declare const React: any, ReactDOMServer: any;
2
+ //# sourceMappingURL=vendor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vendor.d.ts","sourceRoot":"","sources":["../../../plugin/vendor/vendor.ts"],"names":[],"mappings":"AAEA,eAAO,MACH,KAAK,OACL,cAAc,KACiC,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * vite-plugin-react-server
3
+ * Copyright (c) Nico Brinkkemper
4
+ * MIT License
5
+ */
6
+ import __variableDynamicImportRuntimeHelper from '../../_virtual/dynamic-import-helper.js';
7
+ import { getCondition } from '../config/getCondition.js';
8
+
9
+ const {
10
+ React,
11
+ ReactDOMServer
12
+ } = await __variableDynamicImportRuntimeHelper((/* #__PURE__ */ Object.assign({})), `./vendor.${getCondition("")}.js`, 2);
13
+
14
+ export { React, ReactDOMServer };
15
+ //# sourceMappingURL=vendor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vendor.js","sources":["../../../plugin/vendor/vendor.ts"],"sourcesContent":["import { getCondition } from '../config/getCondition.js';\n\nexport const {\n React,\n ReactDOMServer,\n} = await import(`./vendor.${getCondition('')}.js`);"],"names":[],"mappings":";;;;;;;;AAEa,MAAA;AAAA,EACT,KAAA;AAAA,EACA;AACJ,CAAA,GAAI,MAAM,oCAAmC,kBAAA,MAAA,CAAA,MAAA,CAAA,EAAA,CAAA,GAAA,CAAA,SAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAAA,GAAA,CAAA,EAAA,CAAA;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vendor.server.d.ts","sourceRoot":"","sources":["../../../plugin/vendor/vendor.server.ts"],"names":[],"mappings":"AAQA,QAAA,MAAM,cAAc,KAA6C,CAAC;AAClE,QAAA,MAAM,KAAK,KAAuB,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vendor.server.js","sources":["../../../plugin/vendor/vendor.server.ts"],"sourcesContent":["import { workerData } from \"node:worker_threads\";\nimport { createRequire } from \"node:module\";\nimport { join } from \"node:path\";\n\nconst projectRoot = workerData?.projectRoot || process.env[\"npm_config_local_prefix\"] || process.cwd();\nconst nodeRequire = createRequire(join(projectRoot, \"package.json\"));\n\n// Import ReactDOM from the project's node_modules\nconst ReactDOMServer = nodeRequire(\"react-server-dom-esm/server\");\nconst React = nodeRequire(\"react\");\n\nexport { ReactDOMServer, React };\n"],"names":[],"mappings":";;;;;;;;;AAIA,MAAM,WAAA,GAAc,YAAY,WAAe,IAAA,OAAA,CAAQ,IAAI,yBAAyB,CAAA,IAAK,QAAQ,GAAI,EAAA;AACrG,MAAM,WAAc,GAAA,aAAA,CAAc,IAAK,CAAA,WAAA,EAAa,cAAc,CAAC,CAAA;AAG7D,MAAA,cAAA,GAAiB,YAAY,6BAA6B;AAC1D,MAAA,KAAA,GAAQ,YAAY,OAAO;;;;"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * vite-plugin-react-server
3
+ * Copyright (c) Nico Brinkkemper
4
+ * MIT License
5
+ */
6
+ export { React, ReactDOMServer } from './vendor/vendor.js';
7
+ //# sourceMappingURL=vendor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vendor.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -1,4 +1,5 @@
1
1
  import { Worker, type ResourceLimits, type TransferListItem } from "node:worker_threads";
2
+ import { type Logger } from "vite";
2
3
  export type CreateWorkerOptions = {
3
4
  projectRoot?: string;
4
5
  currentCondition?: "react-server" | "react-client";
@@ -14,6 +15,8 @@ export type CreateWorkerOptions = {
14
15
  htmlChunkSize?: number;
15
16
  workerData?: any;
16
17
  transferList?: TransferListItem[];
18
+ logger?: Logger;
19
+ verbose?: boolean;
17
20
  };
18
21
  type CreateWorkerSuccess = {
19
22
  type: "success";
@@ -1 +1 @@
1
- {"version":3,"file":"createWorker.d.ts","sourceRoot":"","sources":["../../../plugin/worker/createWorker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAQ7B,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,cAAc,GAAG,cAAc,CAAC;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,YAAY,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACnC,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAsB,YAAY,CAChC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,mBAAmB,GAAG,iBAAiB,GAAG,gBAAgB,CAAC,CAmIrE"}
1
+ {"version":3,"file":"createWorker.d.ts","sourceRoot":"","sources":["../../../plugin/worker/createWorker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,MAAM,CAAC;AAIjD,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,cAAc,GAAG,cAAc,CAAC;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,YAAY,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAsB,YAAY,CAChC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,mBAAmB,GAAG,iBAAiB,GAAG,gBAAgB,CAAC,CA8IrE"}
@@ -10,6 +10,7 @@ import { join } from 'node:path';
10
10
  import { pluginRoot } from '../root.js';
11
11
  import * as React from 'react';
12
12
  import { DEFAULT_CONFIG } from '../config/defaults.js';
13
+ import { createLogger } from 'vite';
13
14
 
14
15
  async function createWorker(options) {
15
16
  const {
@@ -26,7 +27,9 @@ async function createWorker(options) {
26
27
  maxYoungGenerationSizeMb: 64
27
28
  },
28
29
  htmlChunkSize = 8 * 1024,
29
- transferList = []
30
+ transferList = [],
31
+ logger = createLogger(),
32
+ verbose = false
30
33
  } = options;
31
34
  let workerPathWithDefault = typeof workerPath === "string" ? workerPath : undefined;
32
35
  if (!workerPathWithDefault) {
@@ -73,10 +76,35 @@ async function createWorker(options) {
73
76
  const timeout = setTimeout(() => {
74
77
  reject({ type: "error", error: new Error("Worker ready timeout") });
75
78
  }, 5e3);
76
- worker.once("message", (msg) => {
79
+ const exitHandler = (code) => {
80
+ clearTimeout(timeout);
81
+ worker.removeListener("message", messageHandler);
82
+ worker.removeListener("exit", exitHandler);
83
+ if (code === 0) {
84
+ resolve({
85
+ type: "skip",
86
+ reason: "Worker exited with code 0",
87
+ workerPath: workerPathWithDefault
88
+ });
89
+ } else {
90
+ const error = new Error(`Worker exited with code ${code}`);
91
+ logger.error(`worker exited with code ${code}`, { error });
92
+ reject({
93
+ type: "error",
94
+ error,
95
+ workerPath: workerPathWithDefault
96
+ });
97
+ }
98
+ };
99
+ const messageHandler = (msg) => {
100
+ if (verbose) logger.info(`Initial worker message ${msg.type}`);
77
101
  if (msg.type === "READY") {
102
+ if (verbose) logger.info(`Worker running for ${msg.env}`);
78
103
  clearTimeout(timeout);
104
+ worker.removeListener("message", messageHandler);
105
+ worker.removeListener("exit", exitHandler);
79
106
  if (msg.env !== nodeEnv) {
107
+ if (verbose) logger.info(`Worker environment mismatch.`);
80
108
  reject({
81
109
  type: "error",
82
110
  error: new Error(
@@ -91,24 +119,9 @@ async function createWorker(options) {
91
119
  workerPath: workerPathWithDefault
92
120
  });
93
121
  }
94
- });
95
- worker.once("exit", (code) => {
96
- clearTimeout(timeout);
97
- worker.removeAllListeners();
98
- if (code === 0) {
99
- resolve({
100
- type: "skip",
101
- reason: "Worker exited with code 0",
102
- workerPath: workerPathWithDefault
103
- });
104
- } else {
105
- reject({
106
- type: "error",
107
- error: new Error(`Worker exited with code ${code}`),
108
- workerPath: workerPathWithDefault
109
- });
110
- }
111
- });
122
+ };
123
+ worker.once("message", messageHandler);
124
+ worker.once("exit", exitHandler);
112
125
  }
113
126
  );
114
127
  } catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"createWorker.js","sources":["../../../plugin/worker/createWorker.ts"],"sourcesContent":["import {\n Worker,\n type ResourceLimits,\n type TransferListItem,\n} from \"node:worker_threads\";\nimport { getMode, getNodePath } from \"../config/getPaths.js\";\nimport { getCondition } from \"../config/getCondition.js\";\nimport { join } from \"node:path\";\nimport { pluginRoot } from \"../root.js\";\nimport * as React from \"react\";\nimport { DEFAULT_CONFIG } from \"../config/defaults.js\";\n\nexport type CreateWorkerOptions = {\n projectRoot?: string;\n currentCondition?: \"react-server\" | \"react-client\";\n nodePath?: string;\n nodeOptions?: string[];\n envPrefix?: string;\n mode?: \"production\" | \"development\";\n reverseCondition?: string;\n maxListeners?: number;\n workerPath?: string;\n resourceLimits?: ResourceLimits;\n typescript?: boolean;\n htmlChunkSize?: number; // Size of HTML chunks in bytes\n workerData?: any;\n transferList?: TransferListItem[];\n};\n\ntype CreateWorkerSuccess = {\n type: \"success\";\n workerPath: string;\n worker: Worker;\n};\n\ntype CreateWorkerError = {\n type: \"error\";\n workerPath: string;\n error: Error;\n};\n\ntype CreateWorkerSkip = {\n type: \"skip\";\n reason: string;\n workerPath: string;\n};\n\nexport async function createWorker(\n options: CreateWorkerOptions\n): Promise<CreateWorkerSuccess | CreateWorkerError | CreateWorkerSkip> {\n const {\n projectRoot = process.cwd(),\n nodePath = getNodePath(projectRoot),\n currentCondition = getCondition(),\n envPrefix = DEFAULT_CONFIG.ENV_PREFIX,\n reverseCondition = currentCondition === \"react-server\"\n ? \"react-client\"\n : \"react-server\",\n maxListeners = 100,\n mode = getMode(),\n workerPath,\n resourceLimits = {\n maxOldGenerationSizeMb: 128,\n maxYoungGenerationSizeMb: 64,\n },\n htmlChunkSize = 8 * 1024,\n transferList = [],\n } = options;\n let workerPathWithDefault =\n typeof workerPath === \"string\" ? workerPath : undefined;\n if (!workerPathWithDefault) {\n if (currentCondition === \"react-server\") {\n workerPathWithDefault = join(pluginRoot, `worker/rsc`);\n } else {\n workerPathWithDefault = join(pluginRoot, `worker/html`);\n }\n }\n if (!workerPathWithDefault.startsWith(\"/\")) {\n workerPathWithDefault = join(\"./\", workerPathWithDefault);\n }\n // Ensure worker uses the same React version\n const workerData = {\n ...options.workerData,\n reactVersion: React.version,\n };\n\n try {\n // Ensure consistent NODE_ENV between main thread and worker\n const isTestEnv =\n process.env[\"VITEST\"] || process.env[\"NODE_ENV\"] === \"test\";\n const nodeEnv = isTestEnv ? \"test\" : mode;\n\n const env = {\n [envPrefix + \"DEV\"]: mode === \"development\" ? \"1\" : \"0\",\n [envPrefix + \"MODE\"]: mode,\n [envPrefix + \"PROD\"]: mode === \"production\" ? \"1\" : \"0\",\n [envPrefix + \"SSR\"]: \"true\",\n [envPrefix + \"BASE_URL\"]: options.workerData.userOptions.moduleBaseURL,\n [envPrefix + \"PUBLIC_ORIGIN\"]: options.workerData.userOptions.publicOrigin,\n NODE_ENV: nodeEnv,\n NODE_PATH: nodePath,\n NODE_OPTIONS: process.env[\"NODE_OPTIONS\"]?.includes(reverseCondition)\n ? process.env[\"NODE_OPTIONS\"]\n : process.env[\"NODE_OPTIONS\"]?.includes(currentCondition)\n ? process.env[\"NODE_OPTIONS\"]?.replace(\n currentCondition,\n reverseCondition\n )\n : `${\n process.env[\"NODE_OPTIONS\"] ?? \"\"\n } --conditions ${reverseCondition}`,\n HTML_CHUNK_SIZE: htmlChunkSize.toString(),\n };\n\n // Create worker with proper environment and loaders\n const worker = new Worker(workerPathWithDefault, {\n env,\n resourceLimits,\n workerData,\n transferList,\n });\n\n worker.setMaxListeners(maxListeners);\n\n // Wait for worker to be ready\n return await new Promise<CreateWorkerSuccess | CreateWorkerSkip>(\n (resolve, reject) => {\n const timeout = setTimeout(() => {\n reject({ type: \"error\", error: new Error(\"Worker ready timeout\") });\n }, 5000);\n\n worker.once(\"message\", (msg) => {\n if (msg.type === \"READY\") {\n clearTimeout(timeout);\n if (msg.env !== nodeEnv) {\n reject({\n type: \"error\",\n error: new Error(\n `Worker environment mismatch: ${msg.env} !== ${nodeEnv}`\n ),\n workerPath: workerPathWithDefault,\n } satisfies CreateWorkerError);\n }\n resolve({\n type: \"success\",\n worker,\n workerPath: workerPathWithDefault,\n } satisfies CreateWorkerSuccess);\n }\n });\n\n worker.once(\"exit\", (code) => {\n clearTimeout(timeout);\n worker.removeAllListeners();\n if (code === 0) {\n resolve({\n type: \"skip\",\n reason: \"Worker exited with code 0\",\n workerPath: workerPathWithDefault,\n } satisfies CreateWorkerSkip);\n } else {\n reject({\n type: \"error\",\n error: new Error(`Worker exited with code ${code}`),\n workerPath: workerPathWithDefault,\n } satisfies CreateWorkerError);\n }\n });\n }\n );\n } catch (error) {\n if (error instanceof Error) {\n return {\n type: \"error\",\n workerPath: workerPathWithDefault,\n error: error,\n } satisfies CreateWorkerError;\n }\n return error as CreateWorkerError;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;AA+CA,eAAsB,aACpB,OACqE,EAAA;AACrE,EAAM,MAAA;AAAA,IACJ,WAAA,GAAc,QAAQ,GAAI,EAAA;AAAA,IAC1B,QAAA,GAAW,YAAY,WAAW,CAAA;AAAA,IAClC,mBAAmB,YAAa,EAAA;AAAA,IAChC,YAAY,cAAe,CAAA,UAAA;AAAA,IAC3B,gBAAA,GAAmB,gBAAqB,KAAA,cAAA,GACpC,cACA,GAAA,cAAA;AAAA,IACJ,YAAe,GAAA,GAAA;AAAA,IACf,OAAO,OAAQ,EAAA;AAAA,IACf,UAAA;AAAA,IACA,cAAiB,GAAA;AAAA,MACf,sBAAwB,EAAA,GAAA;AAAA,MACxB,wBAA0B,EAAA;AAAA,KAC5B;AAAA,IACA,gBAAgB,CAAI,GAAA,IAAA;AAAA,IACpB,eAAe;AAAC,GACd,GAAA,OAAA;AACJ,EAAA,IAAI,qBACF,GAAA,OAAO,UAAe,KAAA,QAAA,GAAW,UAAa,GAAA,SAAA;AAChD,EAAA,IAAI,CAAC,qBAAuB,EAAA;AAC1B,IAAA,IAAI,qBAAqB,cAAgB,EAAA;AACvC,MAAwB,qBAAA,GAAA,IAAA,CAAK,YAAY,CAAY,UAAA,CAAA,CAAA;AAAA,KAChD,MAAA;AACL,MAAwB,qBAAA,GAAA,IAAA,CAAK,YAAY,CAAa,WAAA,CAAA,CAAA;AAAA;AACxD;AAEF,EAAA,IAAI,CAAC,qBAAA,CAAsB,UAAW,CAAA,GAAG,CAAG,EAAA;AAC1C,IAAwB,qBAAA,GAAA,IAAA,CAAK,MAAM,qBAAqB,CAAA;AAAA;AAG1D,EAAA,MAAM,UAAa,GAAA;AAAA,IACjB,GAAG,OAAQ,CAAA,UAAA;AAAA,IACX,cAAc,KAAM,CAAA;AAAA,GACtB;AAEA,EAAI,IAAA;AAEF,IAAM,MAAA,SAAA,GACJ,QAAQ,GAAI,CAAA,QAAQ,KAAK,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAM,KAAA,MAAA;AACvD,IAAM,MAAA,OAAA,GAAU,YAAY,MAAS,GAAA,IAAA;AAErC,IAAA,MAAM,GAAM,GAAA;AAAA,MACV,CAAC,SAAY,GAAA,KAAK,GAAG,IAAA,KAAS,gBAAgB,GAAM,GAAA,GAAA;AAAA,MACpD,CAAC,SAAY,GAAA,MAAM,GAAG,IAAA;AAAA,MACtB,CAAC,SAAY,GAAA,MAAM,GAAG,IAAA,KAAS,eAAe,GAAM,GAAA,GAAA;AAAA,MACpD,CAAC,SAAY,GAAA,KAAK,GAAG,MAAA;AAAA,MACrB,CAAC,SAAY,GAAA,UAAU,GAAG,OAAA,CAAQ,WAAW,WAAY,CAAA,aAAA;AAAA,MACzD,CAAC,SAAY,GAAA,eAAe,GAAG,OAAA,CAAQ,WAAW,WAAY,CAAA,YAAA;AAAA,MAC9D,QAAU,EAAA,OAAA;AAAA,MACV,SAAW,EAAA,QAAA;AAAA,MACX,YAAA,EAAc,QAAQ,GAAI,CAAA,cAAc,GAAG,QAAS,CAAA,gBAAgB,CAChE,GAAA,OAAA,CAAQ,GAAI,CAAA,cAAc,IAC1B,OAAQ,CAAA,GAAA,CAAI,cAAc,CAAG,EAAA,QAAA,CAAS,gBAAgB,CACtD,GAAA,OAAA,CAAQ,GAAI,CAAA,cAAc,CAAG,EAAA,OAAA;AAAA,QAC3B,gBAAA;AAAA,QACA;AAAA,OACF,GACA,GACE,OAAQ,CAAA,GAAA,CAAI,cAAc,CAAK,IAAA,EACjC,iBAAiB,gBAAgB,CAAA,CAAA;AAAA,MACrC,eAAA,EAAiB,cAAc,QAAS;AAAA,KAC1C;AAGA,IAAM,MAAA,MAAA,GAAS,IAAI,MAAA,CAAO,qBAAuB,EAAA;AAAA,MAC/C,GAAA;AAAA,MACA,cAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,MAAA,CAAO,gBAAgB,YAAY,CAAA;AAGnC,IAAA,OAAO,MAAM,IAAI,OAAA;AAAA,MACf,CAAC,SAAS,MAAW,KAAA;AACnB,QAAM,MAAA,OAAA,GAAU,WAAW,MAAM;AAC/B,UAAO,MAAA,CAAA,EAAE,MAAM,OAAS,EAAA,KAAA,EAAO,IAAI,KAAM,CAAA,sBAAsB,GAAG,CAAA;AAAA,WACjE,GAAI,CAAA;AAEP,QAAO,MAAA,CAAA,IAAA,CAAK,SAAW,EAAA,CAAC,GAAQ,KAAA;AAC9B,UAAI,IAAA,GAAA,CAAI,SAAS,OAAS,EAAA;AACxB,YAAA,YAAA,CAAa,OAAO,CAAA;AACpB,YAAI,IAAA,GAAA,CAAI,QAAQ,OAAS,EAAA;AACvB,cAAO,MAAA,CAAA;AAAA,gBACL,IAAM,EAAA,OAAA;AAAA,gBACN,OAAO,IAAI,KAAA;AAAA,kBACT,CAAgC,6BAAA,EAAA,GAAA,CAAI,GAAG,CAAA,KAAA,EAAQ,OAAO,CAAA;AAAA,iBACxD;AAAA,gBACA,UAAY,EAAA;AAAA,eACe,CAAA;AAAA;AAE/B,YAAQ,OAAA,CAAA;AAAA,cACN,IAAM,EAAA,SAAA;AAAA,cACN,MAAA;AAAA,cACA,UAAY,EAAA;AAAA,aACiB,CAAA;AAAA;AACjC,SACD,CAAA;AAED,QAAO,MAAA,CAAA,IAAA,CAAK,MAAQ,EAAA,CAAC,IAAS,KAAA;AAC5B,UAAA,YAAA,CAAa,OAAO,CAAA;AACpB,UAAA,MAAA,CAAO,kBAAmB,EAAA;AAC1B,UAAA,IAAI,SAAS,CAAG,EAAA;AACd,YAAQ,OAAA,CAAA;AAAA,cACN,IAAM,EAAA,MAAA;AAAA,cACN,MAAQ,EAAA,2BAAA;AAAA,cACR,UAAY,EAAA;AAAA,aACc,CAAA;AAAA,WACvB,MAAA;AACL,YAAO,MAAA,CAAA;AAAA,cACL,IAAM,EAAA,OAAA;AAAA,cACN,KAAO,EAAA,IAAI,KAAM,CAAA,CAAA,wBAAA,EAA2B,IAAI,CAAE,CAAA,CAAA;AAAA,cAClD,UAAY,EAAA;AAAA,aACe,CAAA;AAAA;AAC/B,SACD,CAAA;AAAA;AACH,KACF;AAAA,WACO,KAAO,EAAA;AACd,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC1B,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,OAAA;AAAA,QACN,UAAY,EAAA,qBAAA;AAAA,QACZ;AAAA,OACF;AAAA;AAEF,IAAO,OAAA,KAAA;AAAA;AAEX;;;;"}
1
+ {"version":3,"file":"createWorker.js","sources":["../../../plugin/worker/createWorker.ts"],"sourcesContent":["import {\n Worker,\n type ResourceLimits,\n type TransferListItem,\n} from \"node:worker_threads\";\nimport { getMode, getNodePath } from \"../config/getPaths.js\";\nimport { getCondition } from \"../config/getCondition.js\";\nimport { join } from \"node:path\";\nimport { pluginRoot } from \"../root.js\";\nimport * as React from \"react\";\nimport { DEFAULT_CONFIG } from \"../config/defaults.js\";\nimport { createLogger, type Logger } from \"vite\";\nimport type { HtmlWorkerOutputMessage } from \"./types.js\";\nimport type { RscWorkerOutputMessage } from \"./types.js\";\n\nexport type CreateWorkerOptions = {\n projectRoot?: string;\n currentCondition?: \"react-server\" | \"react-client\";\n nodePath?: string;\n nodeOptions?: string[];\n envPrefix?: string;\n mode?: \"production\" | \"development\";\n reverseCondition?: string;\n maxListeners?: number;\n workerPath?: string;\n resourceLimits?: ResourceLimits;\n typescript?: boolean;\n htmlChunkSize?: number; // Size of HTML chunks in bytes\n workerData?: any;\n transferList?: TransferListItem[];\n logger?: Logger;\n verbose?: boolean;\n};\n\ntype CreateWorkerSuccess = {\n type: \"success\";\n workerPath: string;\n worker: Worker;\n};\n\ntype CreateWorkerError = {\n type: \"error\";\n workerPath: string;\n error: Error;\n};\n\ntype CreateWorkerSkip = {\n type: \"skip\";\n reason: string;\n workerPath: string;\n};\n\nexport async function createWorker(\n options: CreateWorkerOptions\n): Promise<CreateWorkerSuccess | CreateWorkerError | CreateWorkerSkip> {\n const {\n projectRoot = process.cwd(),\n nodePath = getNodePath(projectRoot),\n currentCondition = getCondition(),\n envPrefix = DEFAULT_CONFIG.ENV_PREFIX,\n reverseCondition = currentCondition === \"react-server\"\n ? \"react-client\"\n : \"react-server\",\n maxListeners = 100,\n mode = getMode(),\n workerPath,\n resourceLimits = {\n maxOldGenerationSizeMb: 128,\n maxYoungGenerationSizeMb: 64,\n },\n htmlChunkSize = 8 * 1024,\n transferList = [],\n logger = createLogger(),\n verbose = false,\n } = options;\n let workerPathWithDefault =\n typeof workerPath === \"string\" ? workerPath : undefined;\n if (!workerPathWithDefault) {\n if (currentCondition === \"react-server\") {\n workerPathWithDefault = join(pluginRoot, `worker/rsc`);\n } else {\n workerPathWithDefault = join(pluginRoot, `worker/html`);\n }\n }\n if (!workerPathWithDefault.startsWith(\"/\")) {\n workerPathWithDefault = join(\"./\", workerPathWithDefault);\n }\n // Ensure worker uses the same React version\n const workerData = {\n ...options.workerData,\n reactVersion: React.version,\n };\n\n try {\n // Ensure consistent NODE_ENV between main thread and worker\n const isTestEnv =\n process.env[\"VITEST\"] || process.env[\"NODE_ENV\"] === \"test\";\n const nodeEnv = isTestEnv ? \"test\" : mode;\n\n const env = {\n [envPrefix + \"DEV\"]: mode === \"development\" ? \"1\" : \"0\",\n [envPrefix + \"MODE\"]: mode,\n [envPrefix + \"PROD\"]: mode === \"production\" ? \"1\" : \"0\",\n [envPrefix + \"SSR\"]: \"true\",\n [envPrefix + \"BASE_URL\"]: options.workerData.userOptions.moduleBaseURL,\n [envPrefix + \"PUBLIC_ORIGIN\"]:\n options.workerData.userOptions.publicOrigin,\n NODE_ENV: nodeEnv,\n NODE_PATH: nodePath,\n NODE_OPTIONS: process.env[\"NODE_OPTIONS\"]?.includes(reverseCondition)\n ? process.env[\"NODE_OPTIONS\"]\n : process.env[\"NODE_OPTIONS\"]?.includes(currentCondition)\n ? process.env[\"NODE_OPTIONS\"]?.replace(\n currentCondition,\n reverseCondition\n )\n : `${\n process.env[\"NODE_OPTIONS\"] ?? \"\"\n } --conditions ${reverseCondition}`,\n HTML_CHUNK_SIZE: htmlChunkSize.toString(),\n };\n\n // Create worker with proper environment and loaders\n const worker = new Worker(workerPathWithDefault, {\n env,\n resourceLimits,\n workerData,\n transferList,\n });\n\n worker.setMaxListeners(maxListeners);\n\n // Wait for worker to be ready\n return await new Promise<CreateWorkerSuccess | CreateWorkerSkip>(\n (resolve, reject) => {\n const timeout = setTimeout(() => {\n reject({ type: \"error\", error: new Error(\"Worker ready timeout\") });\n }, 5000);\n const exitHandler = (code: number) => {\n clearTimeout(timeout);\n worker.removeListener(\"message\", messageHandler);\n worker.removeListener(\"exit\", exitHandler);\n if (code === 0) {\n resolve({\n type: \"skip\",\n reason: \"Worker exited with code 0\",\n workerPath: workerPathWithDefault,\n } satisfies CreateWorkerSkip);\n } else {\n const error = new Error(`Worker exited with code ${code}`);\n logger.error(`worker exited with code ${code}`, { error });\n reject({\n type: \"error\",\n error,\n workerPath: workerPathWithDefault,\n } satisfies CreateWorkerError);\n }\n };\n const messageHandler = (msg: HtmlWorkerOutputMessage | RscWorkerOutputMessage) => {\n if (verbose) logger.info(`Initial worker message ${msg.type}`);\n if (msg.type === \"READY\") {\n if (verbose) logger.info(`Worker running for ${msg.env}`);\n clearTimeout(timeout);\n worker.removeListener(\"message\", messageHandler);\n worker.removeListener(\"exit\", exitHandler);\n if (msg.env !== nodeEnv) {\n if (verbose) logger.info(`Worker environment mismatch.`);\n reject({\n type: \"error\",\n error: new Error(\n `Worker environment mismatch: ${msg.env} !== ${nodeEnv}`\n ),\n workerPath: workerPathWithDefault,\n } satisfies CreateWorkerError);\n }\n resolve({\n type: \"success\",\n worker,\n workerPath: workerPathWithDefault,\n } satisfies CreateWorkerSuccess);\n }\n }\n worker.once(\"message\", messageHandler);\n worker.once(\"exit\", exitHandler);\n }\n );\n } catch (error) {\n if (error instanceof Error) {\n return {\n type: \"error\",\n workerPath: workerPathWithDefault,\n error: error,\n } satisfies CreateWorkerError;\n }\n return error as CreateWorkerError;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ import 'react';
9
9
  import { createFromNodeStream } from 'react-server-dom-esm/client.node';
10
10
  import { Transform } from 'node:stream';
11
11
  import { join } from 'node:path';
12
- import { ReactDOMServer } from '../../vendor.client.js';
12
+ import { ReactDOMServer } from '../../vendor/vendor.client.js';
13
13
 
14
14
  const createMetrics = () => {
15
15
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"createHtmlWorkerRenderState.js","sources":["../../../../plugin/worker/html/createHtmlWorkerRenderState.tsx"],"sourcesContent":["import type { HtmlWorkerRenderState } from \"./types.js\";\nimport { PassThrough } from \"stream\";\nimport { workerData } from \"node:worker_threads\";\nimport type { AllReadyMessage, SerializeableRenderToPipeableStreamOptions } from \"../types.js\";\nimport { type ErrorInfo } from \"react\";\nimport { createFromNodeStream } from \"react-server-dom-esm/client.node\";\nimport { Transform } from \"node:stream\";\nimport type { HtmlWorkerOutputMessage } from \"../types.js\";\nimport { join } from \"node:path\";\nimport type { StreamMetrics } from \"../../types.js\";\nimport { ReactDOMServer } from \"../../vendor.client.js\";\n\n\nconst createMetrics = (): StreamMetrics => {\n return {\n chunks: 0,\n bytes: 0,\n backpressureCount: 0,\n drainCount: 0,\n errorCount: 0,\n duration: 0,\n startTime: 0,\n };\n};\nexport function createHtmlWorkerRenderState(\n {\n projectRoot = workerData.userOptions.projectRoot,\n moduleRootPath = workerData.userOptions.moduleRootPath,\n moduleBaseURL = workerData.userOptions.moduleBaseURL,\n pipeableStreamOptions = workerData.userOptions.pipeableStreamOptions,\n id = workerData.id,\n }: {\n projectRoot?: string;\n moduleRootPath?: string;\n moduleBaseURL?: string;\n pipeableStreamOptions?: SerializeableRenderToPipeableStreamOptions;\n id?: string;\n },\n sendMessage: (msg: HtmlWorkerOutputMessage) => void,\n rscStream = new PassThrough()\n): HtmlWorkerRenderState {\n if (typeof moduleRootPath !== \"string\") {\n throw new Error(\"moduleRootPath is required\");\n } else if (!moduleRootPath.startsWith(projectRoot)) {\n moduleRootPath = join(projectRoot, moduleRootPath);\n }\n if(!moduleRootPath.endsWith('/')) {\n moduleRootPath = moduleRootPath + '/';\n }\n const elements = createFromNodeStream(rscStream, moduleRootPath, moduleBaseURL);\n const metrics = createMetrics();\n const htmlTransform = new Transform({\n transform(chunk, encoding, callback) {\n metrics.chunks++;\n metrics.bytes += chunk.length;\n\n // Send HTML chunks\n sendMessage({\n type: \"HTML_CHUNK\",\n id: id,\n chunk: chunk,\n encoding,\n } satisfies HtmlWorkerOutputMessage);\n callback();\n },\n flush(callback) {\n sendMessage({\n type: \"HTML_COMPLETE\",\n id,\n success: true,\n metrics: metrics,\n });\n callback();\n },\n })\n const stream = ReactDOMServer.renderToPipeableStream(elements, {\n ...pipeableStreamOptions,\n onAllReady: () => {\n rscStream.end();\n sendMessage({\n type: \"ALL_READY\",\n id,\n } satisfies AllReadyMessage);\n },\n onError: (error: unknown, errorInfo: ErrorInfo) => {\n sendMessage({\n type: \"ERROR\",\n id,\n error: error instanceof Error ? error : new Error(String(error)),\n errorInfo: errorInfo,\n });\n },\n onShellReady: () => {\n sendMessage({\n type: \"SHELL_READY\",\n id,\n });\n },\n onShellError: (error: unknown) => {\n sendMessage({\n type: \"SHELL_ERROR\",\n id,\n error: error instanceof Error ? error : new Error(String(error)),\n });\n },\n });\n stream.pipe(htmlTransform);\n return {\n rscStream: rscStream,\n metrics,\n isReady: false,\n htmlTransform: htmlTransform,\n stream: stream,\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createHtmlWorkerRenderState.js","sources":["../../../../plugin/worker/html/createHtmlWorkerRenderState.tsx"],"sourcesContent":["import type { HtmlWorkerRenderState } from \"./types.js\";\nimport { PassThrough } from \"stream\";\nimport { workerData } from \"node:worker_threads\";\nimport type { AllReadyMessage, SerializeableRenderToPipeableStreamOptions } from \"../types.js\";\nimport { type ErrorInfo } from \"react\";\nimport { createFromNodeStream } from \"react-server-dom-esm/client.node\";\nimport { Transform } from \"node:stream\";\nimport type { HtmlWorkerOutputMessage } from \"../types.js\";\nimport { join } from \"node:path\";\nimport type { StreamMetrics } from \"../../types.js\";\nimport { ReactDOMServer } from \"../../vendor/vendor.client.js\";\n\n\nconst createMetrics = (): StreamMetrics => {\n return {\n chunks: 0,\n bytes: 0,\n backpressureCount: 0,\n drainCount: 0,\n errorCount: 0,\n duration: 0,\n startTime: 0,\n };\n};\nexport function createHtmlWorkerRenderState(\n {\n projectRoot = workerData.userOptions.projectRoot,\n moduleRootPath = workerData.userOptions.moduleRootPath,\n moduleBaseURL = workerData.userOptions.moduleBaseURL,\n pipeableStreamOptions = workerData.userOptions.pipeableStreamOptions,\n id = workerData.id,\n }: {\n projectRoot?: string;\n moduleRootPath?: string;\n moduleBaseURL?: string;\n pipeableStreamOptions?: SerializeableRenderToPipeableStreamOptions;\n id?: string;\n },\n sendMessage: (msg: HtmlWorkerOutputMessage) => void,\n rscStream = new PassThrough()\n): HtmlWorkerRenderState {\n if (typeof moduleRootPath !== \"string\") {\n throw new Error(\"moduleRootPath is required\");\n } else if (!moduleRootPath.startsWith(projectRoot)) {\n moduleRootPath = join(projectRoot, moduleRootPath);\n }\n if(!moduleRootPath.endsWith('/')) {\n moduleRootPath = moduleRootPath + '/';\n }\n const elements = createFromNodeStream(rscStream, moduleRootPath, moduleBaseURL);\n const metrics = createMetrics();\n const htmlTransform = new Transform({\n transform(chunk, encoding, callback) {\n metrics.chunks++;\n metrics.bytes += chunk.length;\n\n // Send HTML chunks\n sendMessage({\n type: \"HTML_CHUNK\",\n id: id,\n chunk: chunk,\n encoding,\n } satisfies HtmlWorkerOutputMessage);\n callback();\n },\n flush(callback) {\n sendMessage({\n type: \"HTML_COMPLETE\",\n id,\n success: true,\n metrics: metrics,\n });\n callback();\n },\n })\n const stream = ReactDOMServer.renderToPipeableStream(elements, {\n ...pipeableStreamOptions,\n onAllReady: () => {\n rscStream.end();\n sendMessage({\n type: \"ALL_READY\",\n id,\n } satisfies AllReadyMessage);\n },\n onError: (error: unknown, errorInfo: ErrorInfo) => {\n sendMessage({\n type: \"ERROR\",\n id,\n error: error instanceof Error ? error : new Error(String(error)),\n errorInfo: errorInfo,\n });\n },\n onShellReady: () => {\n sendMessage({\n type: \"SHELL_READY\",\n id,\n });\n },\n onShellError: (error: unknown) => {\n sendMessage({\n type: \"SHELL_ERROR\",\n id,\n error: error instanceof Error ? error : new Error(String(error)),\n });\n },\n });\n stream.pipe(htmlTransform);\n return {\n rscStream: rscStream,\n metrics,\n isReady: false,\n htmlTransform: htmlTransform,\n stream: stream,\n };\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;AAaA,MAAM,gBAAgB,MAAqB;AACzC,EAAO,OAAA;AAAA,IACL,MAAQ,EAAA,CAAA;AAAA,IACR,KAAO,EAAA,CAAA;AAAA,IACP,iBAAmB,EAAA,CAAA;AAAA,IACnB,UAAY,EAAA,CAAA;AAAA,IACZ,UAAY,EAAA,CAAA;AAAA,IACZ,QAAU,EAAA,CAAA;AAAA,IACV,SAAW,EAAA;AAAA,GACb;AACF,CAAA;AACO,SAAS,2BACd,CAAA;AAAA,EACE,WAAA,GAAc,WAAW,WAAY,CAAA,WAAA;AAAA,EACrC,cAAA,GAAiB,WAAW,WAAY,CAAA,cAAA;AAAA,EACxC,aAAA,GAAgB,WAAW,WAAY,CAAA,aAAA;AAAA,EACvC,qBAAA,GAAwB,WAAW,WAAY,CAAA,qBAAA;AAAA,EAC/C,KAAK,UAAW,CAAA;AAClB,CAAA,EAOA,WACA,EAAA,SAAA,GAAY,IAAI,WAAA,EACO,EAAA;AACvB,EAAI,IAAA,OAAO,mBAAmB,QAAU,EAAA;AACtC,IAAM,MAAA,IAAI,MAAM,4BAA4B,CAAA;AAAA,GACnC,MAAA,IAAA,CAAC,cAAe,CAAA,UAAA,CAAW,WAAW,CAAG,EAAA;AAClD,IAAiB,cAAA,GAAA,IAAA,CAAK,aAAa,cAAc,CAAA;AAAA;AAEnD,EAAA,IAAG,CAAC,cAAA,CAAe,QAAS,CAAA,GAAG,CAAG,EAAA;AAChC,IAAA,cAAA,GAAiB,cAAiB,GAAA,GAAA;AAAA;AAEpC,EAAA,MAAM,QAAW,GAAA,oBAAA,CAAqB,SAAW,EAAA,cAAA,EAAgB,aAAa,CAAA;AAC9E,EAAA,MAAM,UAAU,aAAc,EAAA;AAC9B,EAAM,MAAA,aAAA,GAAgB,IAAI,SAAU,CAAA;AAAA,IAClC,SAAA,CAAU,KAAO,EAAA,QAAA,EAAU,QAAU,EAAA;AACnC,MAAQ,OAAA,CAAA,MAAA,EAAA;AACR,MAAA,OAAA,CAAQ,SAAS,KAAM,CAAA,MAAA;AAGvB,MAAY,WAAA,CAAA;AAAA,QACV,IAAM,EAAA,YAAA;AAAA,QACN,EAAA;AAAA,QACA,KAAA;AAAA,QACA;AAAA,OACiC,CAAA;AACnC,MAAS,QAAA,EAAA;AAAA,KACX;AAAA,IACA,MAAM,QAAU,EAAA;AACd,MAAY,WAAA,CAAA;AAAA,QACV,IAAM,EAAA,eAAA;AAAA,QACN,EAAA;AAAA,QACA,OAAS,EAAA,IAAA;AAAA,QACT;AAAA,OACD,CAAA;AACD,MAAS,QAAA,EAAA;AAAA;AACX,GACD,CAAA;AACD,EAAM,MAAA,MAAA,GAAS,cAAe,CAAA,sBAAA,CAAuB,QAAU,EAAA;AAAA,IAC7D,GAAG,qBAAA;AAAA,IACH,YAAY,MAAM;AAChB,MAAA,SAAA,CAAU,GAAI,EAAA;AACd,MAAY,WAAA,CAAA;AAAA,QACV,IAAM,EAAA,WAAA;AAAA,QACN;AAAA,OACyB,CAAA;AAAA,KAC7B;AAAA,IACA,OAAA,EAAS,CAAC,KAAA,EAAgB,SAAyB,KAAA;AACjD,MAAY,WAAA,CAAA;AAAA,QACV,IAAM,EAAA,OAAA;AAAA,QACN,EAAA;AAAA,QACA,KAAA,EAAO,iBAAiB,KAAQ,GAAA,KAAA,GAAQ,IAAI,KAAM,CAAA,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,QAC/D;AAAA,OACD,CAAA;AAAA,KACH;AAAA,IACA,cAAc,MAAM;AAClB,MAAY,WAAA,CAAA;AAAA,QACV,IAAM,EAAA,aAAA;AAAA,QACN;AAAA,OACD,CAAA;AAAA,KACH;AAAA,IACA,YAAA,EAAc,CAAC,KAAmB,KAAA;AAChC,MAAY,WAAA,CAAA;AAAA,QACV,IAAM,EAAA,aAAA;AAAA,QACN,EAAA;AAAA,QACA,KAAA,EAAO,iBAAiB,KAAQ,GAAA,KAAA,GAAQ,IAAI,KAAM,CAAA,MAAA,CAAO,KAAK,CAAC;AAAA,OAChE,CAAA;AAAA;AACH,GACD,CAAA;AACD,EAAA,MAAA,CAAO,KAAK,aAAa,CAAA;AACzB,EAAO,OAAA;AAAA,IACL,SAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAS,EAAA,KAAA;AAAA,IACT,aAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"html-worker.development.js","sources":["../../../../plugin/worker/html/html-worker.development.tsx"],"sourcesContent":["import { join } from \"node:path\";\nimport { messageHandler } from \"./messageHandler.js\";\nimport { MessageChannel, parentPort } from \"node:worker_threads\";\nimport { pluginRoot } from \"../../root.js\";\nimport { register } from \"node:module\";\n\n// Create channels for each loader\nconst cssLoaderChannel = new MessageChannel();\ncssLoaderChannel.port2.on(\"message\", messageHandler);\n\nconst cssLoaderPath = \"file://\" + join(pluginRoot, \"loader/css-loader.development.js\");\nregister(cssLoaderPath, {\n parentURL: pluginRoot,\n data: { port: cssLoaderChannel.port1 },\n transferList: [cssLoaderChannel.port1],\n});\n\n\n// Signal ready with environment\nparentPort?.on(\"message\", messageHandler);\nparentPort?.postMessage({\n type: \"READY\",\n env: process.env[\"NODE_ENV\"],\n pid: process.pid,\n});"],"names":[],"mappings":";;;;;;;;;;;AAOA,MAAM,gBAAA,GAAmB,IAAI,cAAe,EAAA;AAC5C,gBAAiB,CAAA,KAAA,CAAM,EAAG,CAAA,SAAA,EAAW,cAAc,CAAA;AAEnD,MAAM,aAAgB,GAAA,SAAA,GAAY,IAAK,CAAA,UAAA,EAAY,kCAAkC,CAAA;AACrF,QAAA,CAAS,aAAe,EAAA;AAAA,EACtB,SAAW,EAAA,UAAA;AAAA,EACX,IAAM,EAAA,EAAE,IAAM,EAAA,gBAAA,CAAiB,KAAM,EAAA;AAAA,EACrC,YAAA,EAAc,CAAC,gBAAA,CAAiB,KAAK;AACvC,CAAC,CAAA;AAID,UAAY,EAAA,EAAA,CAAG,WAAW,cAAc,CAAA;AACxC,UAAA,EAAY,WAAY,CAAA;AAAA,EACtB,IAAM,EAAA,OAAA;AAAA,EACN,GAAA,EAAK,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAA;AAAA,EAC3B,KAAK,OAAQ,CAAA;AACf,CAAC,CAAA"}
1
+ {"version":3,"file":"html-worker.development.js","sources":["../../../../plugin/worker/html/html-worker.development.tsx"],"sourcesContent":["import { join } from \"node:path\";\nimport { messageHandler } from \"./messageHandler.js\";\nimport { MessageChannel, parentPort } from \"node:worker_threads\";\nimport { pluginRoot } from \"../../root.js\";\nimport { register } from \"node:module\";\nimport type { ReadyMessage } from \"../types.js\";\n\n// Create channels for each loader\nconst cssLoaderChannel = new MessageChannel();\ncssLoaderChannel.port2.on(\"message\", messageHandler);\n\nconst cssLoaderPath = \"file://\" + join(pluginRoot, \"loader/css-loader.development.js\");\nregister(cssLoaderPath, {\n parentURL: pluginRoot,\n data: { port: cssLoaderChannel.port1 },\n transferList: [cssLoaderChannel.port1],\n});\n\n\n// Signal ready with environment\nparentPort?.on(\"message\", messageHandler);\nparentPort?.postMessage({\n type: \"READY\",\n env: process.env[\"NODE_ENV\"],\n pid: process.pid,\n} satisfies ReadyMessage);"],"names":[],"mappings":";;;;;;;;;;;AAQA,MAAM,gBAAA,GAAmB,IAAI,cAAe,EAAA;AAC5C,gBAAiB,CAAA,KAAA,CAAM,EAAG,CAAA,SAAA,EAAW,cAAc,CAAA;AAEnD,MAAM,aAAgB,GAAA,SAAA,GAAY,IAAK,CAAA,UAAA,EAAY,kCAAkC,CAAA;AACrF,QAAA,CAAS,aAAe,EAAA;AAAA,EACtB,SAAW,EAAA,UAAA;AAAA,EACX,IAAM,EAAA,EAAE,IAAM,EAAA,gBAAA,CAAiB,KAAM,EAAA;AAAA,EACrC,YAAA,EAAc,CAAC,gBAAA,CAAiB,KAAK;AACvC,CAAC,CAAA;AAID,UAAY,EAAA,EAAA,CAAG,WAAW,cAAc,CAAA;AACxC,UAAA,EAAY,WAAY,CAAA;AAAA,EACtB,IAAM,EAAA,OAAA;AAAA,EACN,GAAA,EAAK,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAA;AAAA,EAC3B,KAAK,OAAQ,CAAA;AACf,CAAwB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"html-worker.production.js","sources":["../../../../plugin/worker/html/html-worker.production.tsx"],"sourcesContent":["import { join } from \"node:path\";\nimport { messageHandler } from \"./messageHandler.js\";\nimport { MessageChannel, parentPort } from \"node:worker_threads\";\nimport { pluginRoot } from \"../../root.js\";\nimport { register } from \"node:module\";\n\n// Create channels for each loader\nconst cssLoaderChannel = new MessageChannel();\n\ncssLoaderChannel.port2.on(\"message\", messageHandler);\n\nconst cssLoaderPath = \"file://\" + join(pluginRoot, \"loader/css-loader.production.js\");\n\nregister(cssLoaderPath, {\n parentURL: pluginRoot,\n data: { port: cssLoaderChannel.port1 },\n transferList: [cssLoaderChannel.port1],\n});\n\n\n// Signal ready with environment\nparentPort?.on(\"message\", messageHandler);\nparentPort?.postMessage({\n type: \"READY\",\n env: process.env[\"NODE_ENV\"],\n pid: process.pid,\n});"],"names":[],"mappings":";;;;;;;;;;;AAOA,MAAM,gBAAA,GAAmB,IAAI,cAAe,EAAA;AAE5C,gBAAiB,CAAA,KAAA,CAAM,EAAG,CAAA,SAAA,EAAW,cAAc,CAAA;AAEnD,MAAM,aAAgB,GAAA,SAAA,GAAY,IAAK,CAAA,UAAA,EAAY,iCAAiC,CAAA;AAEpF,QAAA,CAAS,aAAe,EAAA;AAAA,EACtB,SAAW,EAAA,UAAA;AAAA,EACX,IAAM,EAAA,EAAE,IAAM,EAAA,gBAAA,CAAiB,KAAM,EAAA;AAAA,EACrC,YAAA,EAAc,CAAC,gBAAA,CAAiB,KAAK;AACvC,CAAC,CAAA;AAID,UAAY,EAAA,EAAA,CAAG,WAAW,cAAc,CAAA;AACxC,UAAA,EAAY,WAAY,CAAA;AAAA,EACtB,IAAM,EAAA,OAAA;AAAA,EACN,GAAA,EAAK,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAA;AAAA,EAC3B,KAAK,OAAQ,CAAA;AACf,CAAC,CAAA"}
1
+ {"version":3,"file":"html-worker.production.js","sources":["../../../../plugin/worker/html/html-worker.production.tsx"],"sourcesContent":["import { join } from \"node:path\";\nimport { messageHandler } from \"./messageHandler.js\";\nimport { MessageChannel, parentPort } from \"node:worker_threads\";\nimport { pluginRoot } from \"../../root.js\";\nimport { register } from \"node:module\";\nimport type { ReadyMessage } from \"../types.js\";\n\n// Create channels for each loader\nconst cssLoaderChannel = new MessageChannel();\n\ncssLoaderChannel.port2.on(\"message\", messageHandler);\n\nconst cssLoaderPath = \"file://\" + join(pluginRoot, \"loader/css-loader.production.js\");\n\nregister(cssLoaderPath, {\n parentURL: pluginRoot,\n data: { port: cssLoaderChannel.port1 },\n transferList: [cssLoaderChannel.port1],\n});\n\n\n// Signal ready with environment\nparentPort?.on(\"message\", messageHandler);\nparentPort?.postMessage({\n type: \"READY\",\n env: process.env[\"NODE_ENV\"],\n pid: process.pid,\n} satisfies ReadyMessage);"],"names":[],"mappings":";;;;;;;;;;;AAQA,MAAM,gBAAA,GAAmB,IAAI,cAAe,EAAA;AAE5C,gBAAiB,CAAA,KAAA,CAAM,EAAG,CAAA,SAAA,EAAW,cAAc,CAAA;AAEnD,MAAM,aAAgB,GAAA,SAAA,GAAY,IAAK,CAAA,UAAA,EAAY,iCAAiC,CAAA;AAEpF,QAAA,CAAS,aAAe,EAAA;AAAA,EACtB,SAAW,EAAA,UAAA;AAAA,EACX,IAAM,EAAA,EAAE,IAAM,EAAA,gBAAA,CAAiB,KAAM,EAAA;AAAA,EACrC,YAAA,EAAc,CAAC,gBAAA,CAAiB,KAAK;AACvC,CAAC,CAAA;AAID,UAAY,EAAA,EAAA,CAAG,WAAW,cAAc,CAAA;AACxC,UAAA,EAAY,WAAY,CAAA;AAAA,EACtB,IAAM,EAAA,OAAA;AAAA,EACN,GAAA,EAAK,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAA;AAAA,EAC3B,KAAK,OAAQ,CAAA;AACf,CAAwB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"handleRender.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/rsc/handleRender.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAWpE,wBAAsB,YAAY,CAChC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,cAAc,iBA0HzB"}
1
+ {"version":3,"file":"handleRender.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/rsc/handleRender.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAWpE,wBAAsB,YAAY,CAChC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,cAAc,iBAyHzB"}
@@ -6,11 +6,11 @@
6
6
  import { resolvePageAndProps } from '../../helpers/resolvePageAndProps.js';
7
7
  import { hmrState, cssFiles, activeStreams } from './state.js';
8
8
  import { createRscStream } from '../../helpers/createRscStream.js';
9
- import { CssCollector } from '../../css-collector.js';
9
+ import { CssCollector } from '../../components/css-collector.js';
10
10
  import { PassThrough } from 'node:stream';
11
11
  import { join } from 'node:path';
12
12
  import { workerData } from 'node:worker_threads';
13
- import { React } from '../../vendor.server.js';
13
+ import { React } from '../../vendor/vendor.server.js';
14
14
  import { performance } from 'node:perf_hooks';
15
15
 
16
16
  async function handleRender(msg, handlers) {
@@ -23,8 +23,8 @@ async function handleRender(msg, handlers) {
23
23
  propsExportName = workerData.userOptions.propsExportName,
24
24
  projectRoot = workerData.userOptions.projectRoot,
25
25
  moduleRootPath = workerData.userOptions.moduleRootPath,
26
- moduleBaseURL = workerData.userOptions.moduleBaseURL,
27
- moduleBasePath = workerData.userOptions.moduleBasePath,
26
+ moduleBaseURL = workerData.userOptions.moduleBaseURL ?? "/",
27
+ moduleBasePath = workerData.userOptions.moduleBasePath ?? "/",
28
28
  moduleBase = workerData.userOptions.moduleBase,
29
29
  pipeableStreamOptions = workerData.userOptions.pipeableStreamOptions,
30
30
  cssFiles: messageCssFiles,
@@ -1 +1 @@
1
- {"version":3,"file":"handleRender.js","sources":["../../../../plugin/worker/rsc/handleRender.ts"],"sourcesContent":["import { resolvePageAndProps } from \"../../helpers/resolvePageAndProps.js\";\nimport type { RscRenderMessage, StreamHandlers } from \"../types.js\";\nimport { activeStreams, cssFiles } from \"./state.js\";\nimport { createRscStream } from \"../../helpers/createRscStream.js\";\nimport { CssCollector } from \"../../css-collector.js\";\nimport { PassThrough } from \"node:stream\";\nimport { join } from \"node:path\";\nimport { workerData } from \"node:worker_threads\";\nimport { React } from \"../../vendor.server.js\";\nimport { hmrState } from \"./state.js\";\nimport { performance } from \"node:perf_hooks\";\n\nexport async function handleRender(\n msg: RscRenderMessage,\n handlers: StreamHandlers\n) {\n let {\n id = workerData.id,\n route = workerData.route,\n pagePath = workerData.pagePath,\n propsPath = workerData.propsPath,\n pageExportName = workerData.userOptions.pageExportName,\n propsExportName = workerData.userOptions.propsExportName,\n projectRoot = workerData.userOptions.projectRoot,\n moduleRootPath = workerData.userOptions.moduleRootPath,\n moduleBaseURL = workerData.userOptions.moduleBaseURL,\n moduleBasePath = workerData.userOptions.moduleBasePath,\n moduleBase = workerData.userOptions.moduleBase,\n pipeableStreamOptions = workerData.userOptions.pipeableStreamOptions,\n cssFiles: messageCssFiles,\n globalCss = workerData.globalCss,\n } = msg;\n\n try {\n // Load modules\n const pageAndPropsResult = await resolvePageAndProps({\n pagePath,\n propsPath,\n pageExportName,\n propsExportName,\n route,\n loader: (id: string) => {\n try {\n if (hmrState.get(id)?.invalidated) {\n // Clear the HMR state for this module\n hmrState.delete(id);\n // Force a reload by using a unique query parameter\n return import(join(projectRoot, id) + `?t=${Date.now()}`);\n }\n return import(join(projectRoot, id));\n } catch (error) {\n return Promise.reject(error);\n }\n },\n });\n if (pageAndPropsResult.type !== \"success\") {\n const { error, ...rest } = pageAndPropsResult;\n return handlers.onError(error, rest);\n }\n\n const { PageComponent, pageProps } = pageAndPropsResult;\n\n const adaptedOnEvent = (event: \"error\" | \"postpone\", data: any) => {\n if (event === \"error\") {\n handlers.onError(data.error, data.errorInfo);\n }\n };\n\n if (messageCssFiles && messageCssFiles.size > 0) {\n // if any css is added to the message, add it to the cssFiles map\n for (const [id, cssContent] of messageCssFiles.entries()) {\n cssFiles.set(id, cssContent);\n }\n }\n\n // Create stream\n const streamResult = createRscStream({\n projectRoot: projectRoot,\n Html: React.Fragment,\n PageComponent: PageComponent,\n CssCollector: CssCollector,\n pageProps,\n moduleBase,\n moduleRootPath,\n moduleBasePath,\n moduleBaseURL,\n manifest: {},\n route,\n // this is a stateful object, which at this point we assume contains all the css files\n cssFiles,\n globalCss,\n onEvent: adaptedOnEvent,\n pipeableStreamOptions: pipeableStreamOptions,\n });\n\n if (streamResult.type !== \"success\") {\n handlers.onError(streamResult.error);\n return;\n }\n\n const { stream, metrics } = streamResult;\n\n // Create pass-through stream\n const passThrough = new PassThrough();\n activeStreams.set(id, passThrough);\n\n // Pipe stream to pass-through\n stream.pipe(passThrough);\n\n // Handle data chunks\n passThrough.on(\"data\", (chunk) => {\n metrics.chunks++;\n metrics.bytes += chunk.length;\n metrics.duration = performance.now() - metrics.startTime;\n handlers.onData(chunk);\n });\n\n // Handle stream end\n passThrough.on(\"end\", () => {\n metrics.duration = performance.now() - metrics.startTime;\n handlers.onEnd();\n if (activeStreams.has(id)) {\n handlers.onMetrics(metrics);\n activeStreams.delete(id);\n }\n });\n\n // Handle errors\n passThrough.on(\"error\", (error) => {\n handlers.onError(error as Error, { reason: `${id} stream error` });\n activeStreams.delete(id);\n });\n } catch (error) {\n handlers.onError(error as Error, { reason: `${id} render error` });\n return Promise.reject(error);\n }\n}\n"],"names":["id"],"mappings":"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"}
1
+ {"version":3,"file":"handleRender.js","sources":["../../../../plugin/worker/rsc/handleRender.ts"],"sourcesContent":["import { resolvePageAndProps } from \"../../helpers/resolvePageAndProps.js\";\nimport type { RscRenderMessage, StreamHandlers } from \"../types.js\";\nimport { activeStreams, cssFiles } from \"./state.js\";\nimport { createRscStream } from \"../../helpers/createRscStream.js\";\nimport { CssCollector } from \"../../components/css-collector.js\";\nimport { PassThrough } from \"node:stream\";\nimport { join } from \"node:path\";\nimport { workerData } from \"node:worker_threads\";\nimport { React } from \"../../vendor/vendor.server.js\";\nimport { hmrState } from \"./state.js\";\nimport { performance } from \"node:perf_hooks\";\n\nexport async function handleRender(\n msg: RscRenderMessage,\n handlers: StreamHandlers\n) {\n let {\n id = workerData.id,\n route = workerData.route,\n pagePath = workerData.pagePath,\n propsPath = workerData.propsPath,\n pageExportName = workerData.userOptions.pageExportName,\n propsExportName = workerData.userOptions.propsExportName,\n projectRoot = workerData.userOptions.projectRoot,\n moduleRootPath = workerData.userOptions.moduleRootPath,\n moduleBaseURL = workerData.userOptions.moduleBaseURL ?? \"/\",\n moduleBasePath = workerData.userOptions.moduleBasePath ?? \"/\",\n moduleBase = workerData.userOptions.moduleBase,\n pipeableStreamOptions = workerData.userOptions.pipeableStreamOptions,\n cssFiles: messageCssFiles,\n globalCss = workerData.globalCss,\n } = msg;\n try {\n // Load modules\n const pageAndPropsResult = await resolvePageAndProps({\n pagePath,\n propsPath,\n pageExportName,\n propsExportName,\n route,\n loader: (id: string) => {\n try {\n if (hmrState.get(id)?.invalidated) {\n // Clear the HMR state for this module\n hmrState.delete(id);\n // Force a reload by using a unique query parameter\n return import(join(projectRoot, id) + `?t=${Date.now()}`);\n }\n return import(join(projectRoot, id));\n } catch (error) {\n return Promise.reject(error);\n }\n },\n });\n if (pageAndPropsResult.type !== \"success\") {\n const { error, ...rest } = pageAndPropsResult;\n return handlers.onError(error, rest);\n }\n\n const { PageComponent, pageProps } = pageAndPropsResult;\n\n const adaptedOnEvent = (event: \"error\" | \"postpone\", data: any) => {\n if (event === \"error\") {\n handlers.onError(data.error, data.errorInfo);\n }\n };\n\n if (messageCssFiles && messageCssFiles.size > 0) {\n // if any css is added to the message, add it to the cssFiles map\n for (const [id, cssContent] of messageCssFiles.entries()) {\n cssFiles.set(id, cssContent);\n }\n }\n\n // Create stream\n const streamResult = createRscStream({\n projectRoot: projectRoot,\n Html: React.Fragment,\n PageComponent: PageComponent,\n CssCollector: CssCollector,\n pageProps,\n moduleBase,\n moduleRootPath,\n moduleBasePath,\n moduleBaseURL,\n manifest: {},\n route,\n // this is a stateful object, which at this point we assume contains all the css files\n cssFiles,\n globalCss,\n onEvent: adaptedOnEvent,\n pipeableStreamOptions: pipeableStreamOptions,\n });\n\n if (streamResult.type !== \"success\") {\n handlers.onError(streamResult.error);\n return;\n }\n\n const { stream, metrics } = streamResult;\n\n // Create pass-through stream\n const passThrough = new PassThrough();\n activeStreams.set(id, passThrough);\n\n // Pipe stream to pass-through\n stream.pipe(passThrough);\n\n // Handle data chunks\n passThrough.on(\"data\", (chunk) => {\n metrics.chunks++;\n metrics.bytes += chunk.length;\n metrics.duration = performance.now() - metrics.startTime;\n handlers.onData(chunk);\n });\n\n // Handle stream end\n passThrough.on(\"end\", () => {\n metrics.duration = performance.now() - metrics.startTime;\n handlers.onEnd();\n if (activeStreams.has(id)) {\n handlers.onMetrics(metrics);\n activeStreams.delete(id);\n }\n });\n\n // Handle errors\n passThrough.on(\"error\", (error) => {\n handlers.onError(error as Error, { reason: `${id} stream error` });\n activeStreams.delete(id);\n });\n } catch (error) {\n handlers.onError(error as Error, { reason: `${id} render error` });\n return Promise.reject(error);\n }\n}\n"],"names":["id"],"mappings":"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"}
@@ -1,2 +1,3 @@
1
- export declare function messageHandler(msg: any, port?: import("worker_threads").MessagePort | null): Promise<void>;
1
+ import type { RscWorkerInputMessage } from "../types.js";
2
+ export declare function messageHandler(msg: RscWorkerInputMessage, port?: import("worker_threads").MessagePort | null): Promise<void>;
2
3
  //# sourceMappingURL=messageHandler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"messageHandler.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/rsc/messageHandler.tsx"],"names":[],"mappings":"AAKA,wBAAsB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,8CAAa,iBAgG/D"}
1
+ {"version":3,"file":"messageHandler.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/rsc/messageHandler.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,qBAAqB,EAGtB,MAAM,aAAa,CAAC;AAGrB,wBAAsB,cAAc,CAClC,GAAG,EAAE,qBAAqB,EAC1B,IAAI,8CAAa,iBA4HlB"}
@@ -4,8 +4,9 @@
4
4
  * MIT License
5
5
  */
6
6
  import { parentPort, workerData } from 'node:worker_threads';
7
- import { addCssFileContent, hmrState } from './state.js';
7
+ import { activeStreams, addCssFileContent, hmrState } from './state.js';
8
8
  import { handleRender } from './handleRender.js';
9
+ import { sendMessage } from '../sendMessage.js';
9
10
 
10
11
  async function messageHandler(msg, port = parentPort) {
11
12
  if (!port) {
@@ -51,6 +52,20 @@ async function messageHandler(msg, port = parentPort) {
51
52
  id: msg.id,
52
53
  metrics
53
54
  });
55
+ },
56
+ onHmrAccept: (routes) => {
57
+ port.postMessage({
58
+ type: "HMR_ACCEPT",
59
+ id: msg.id,
60
+ routes
61
+ });
62
+ },
63
+ onHmrUpdate: (routes) => {
64
+ port.postMessage({
65
+ type: "HMR_UPDATE",
66
+ id: msg.id,
67
+ routes
68
+ });
54
69
  }
55
70
  };
56
71
  switch (msg.type) {
@@ -60,24 +75,19 @@ async function messageHandler(msg, port = parentPort) {
60
75
  return;
61
76
  case "INITIALIZED_CSS_LOADER":
62
77
  return;
78
+ case "INITIALIZED_ENV_LOADER":
79
+ return;
63
80
  case "HMR_UPDATE":
64
- hmrState.set(msg.path, {
81
+ hmrState.set(msg.id, {
65
82
  timestamp: msg.timestamp || Date.now(),
66
83
  invalidated: true,
67
84
  routes: msg.routes || []
68
85
  });
69
- port.postMessage({
70
- type: "HMR_ACCEPT",
71
- path: msg.path,
72
- routes: msg.routes
73
- });
86
+ handlers.onHmrUpdate(msg.routes || []);
74
87
  return;
75
88
  case "HMR_CLEANUP":
76
- hmrState.delete(msg.path);
77
- port.postMessage({
78
- type: "HMR_ACCEPT",
79
- path: msg.path
80
- });
89
+ hmrState.delete(msg.id);
90
+ handlers.onHmrAccept(msg.routes || []);
81
91
  return;
82
92
  case "CSS_FILE":
83
93
  if (msg.id) {
@@ -86,13 +96,29 @@ async function messageHandler(msg, port = parentPort) {
86
96
  };
87
97
  addCssFileContent(msg.id, msg.content, {
88
98
  projectRoot: workerData.userOptions.projectRoot || process.cwd(),
89
- moduleBaseURL: workerData.userOptions.moduleBaseURL || "",
90
- moduleBasePath: workerData.userOptions.moduleBasePath || "",
91
- moduleRootPath: workerData.userOptions.moduleRootPath || "",
99
+ moduleBaseURL: workerData.userOptions.moduleBaseURL || "/",
100
+ moduleBasePath: workerData.userOptions.moduleBasePath || "/",
101
+ moduleRootPath: workerData.userOptions.moduleRootPath,
92
102
  css: cssOptions
93
103
  });
94
104
  }
95
105
  return;
106
+ case "SHUTDOWN": {
107
+ if (msg.id === "*") {
108
+ activeStreams.forEach((stream, renderId) => {
109
+ stream.end();
110
+ activeStreams.delete(renderId);
111
+ });
112
+ parentPort?.removeAllListeners();
113
+ } else {
114
+ activeStreams.delete(msg.id);
115
+ }
116
+ sendMessage({
117
+ type: "SHUTDOWN_COMPLETE",
118
+ id: msg.id
119
+ });
120
+ return;
121
+ }
96
122
  default: {
97
123
  console.log("Unknown message", msg);
98
124
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"messageHandler.js","sources":["../../../../plugin/worker/rsc/messageHandler.tsx"],"sourcesContent":["import { parentPort, workerData } from \"node:worker_threads\";\nimport { addCssFileContent, hmrState } from \"./state.js\";\nimport { handleRender } from \"./handleRender.js\";\nimport type { RscWorkerOutputMessage, StreamHandlers } from \"../types.js\";\n\nexport async function messageHandler(msg: any, port = parentPort) {\n if (!port) {\n throw new Error(\"No port found\");\n }\n const handlers: StreamHandlers = {\n onError: (error: any, errorInfo?: any) => {\n if (!(error instanceof Error)) {\n error = new Error(String(error));\n }\n port.postMessage({\n type: \"ERROR\",\n id: msg.id,\n errorInfo,\n error: {\n message: error.message,\n stack: error.stack,\n name: error.name,\n cause: error.cause,\n },\n } satisfies RscWorkerOutputMessage);\n port.postMessage({\n type: \"RSC_END\",\n id: msg.id,\n } satisfies RscWorkerOutputMessage);\n },\n onData: (data: any) => {\n port.postMessage({\n type: \"RSC_CHUNK\",\n id: msg.id,\n chunk: data,\n } satisfies RscWorkerOutputMessage);\n },\n onEnd: () => {\n port.postMessage({\n type: \"RSC_END\",\n id: msg.id,\n } satisfies RscWorkerOutputMessage);\n },\n onMetrics: (metrics: any) => {\n port.postMessage({\n type: \"RSC_METRICS\",\n id: msg.id,\n metrics,\n } satisfies RscWorkerOutputMessage);\n },\n };\n switch (msg.type) {\n case \"RSC_RENDER\":\n return await handleRender(msg, handlers);\n case \"INITIALIZED_REACT_LOADER\":\n return;\n case \"INITIALIZED_CSS_LOADER\":\n return;\n case \"HMR_UPDATE\":\n // Mark the module as invalidated\n hmrState.set(msg.path, {\n timestamp: msg.timestamp || Date.now(),\n invalidated: true,\n routes: msg.routes || [],\n });\n // Notify the main thread that we've processed the update\n port.postMessage({\n type: \"HMR_ACCEPT\",\n path: msg.path,\n routes: msg.routes,\n });\n return;\n case \"HMR_CLEANUP\":\n // Clear the invalidation state\n hmrState.delete(msg.path);\n // Notify the main thread that we've processed the cleanup\n port.postMessage({\n type: \"HMR_ACCEPT\",\n path: msg.path,\n });\n return;\n case \"CSS_FILE\":\n if (msg.id) {\n const cssOptions = workerData.userOptions.css || {\n inlineThreshold: 1000,\n };\n\n addCssFileContent(msg.id, msg.content, {\n projectRoot: workerData.userOptions.projectRoot || process.cwd(),\n moduleBaseURL: workerData.userOptions.moduleBaseURL || \"\",\n moduleBasePath: workerData.userOptions.moduleBasePath || \"\",\n moduleRootPath: workerData.userOptions.moduleRootPath || \"\",\n css: cssOptions,\n });\n }\n return;\n default: {\n console.log(\"Unknown message\", msg);\n return;\n }\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messageHandler.js","sources":["../../../../plugin/worker/rsc/messageHandler.tsx"],"sourcesContent":["import { parentPort, workerData } from \"node:worker_threads\";\nimport { activeStreams, addCssFileContent, hmrState } from \"./state.js\";\nimport { handleRender } from \"./handleRender.js\";\nimport type {\n HmrAcceptMessage,\n RscWorkerInputMessage,\n RscWorkerOutputMessage,\n StreamHandlers,\n} from \"../types.js\";\nimport { sendMessage } from \"../sendMessage.js\";\n\nexport async function messageHandler(\n msg: RscWorkerInputMessage,\n port = parentPort\n) {\n if (!port) {\n throw new Error(\"No port found\");\n }\n const handlers: StreamHandlers = {\n onError: (error: any, errorInfo?: any) => {\n if (!(error instanceof Error)) {\n error = new Error(String(error));\n }\n port.postMessage({\n type: \"ERROR\",\n id: msg.id,\n errorInfo,\n error: {\n message: error.message,\n stack: error.stack,\n name: error.name,\n cause: error.cause,\n },\n } satisfies RscWorkerOutputMessage);\n port.postMessage({\n type: \"RSC_END\",\n id: msg.id,\n } satisfies RscWorkerOutputMessage);\n },\n onData: (data: any) => {\n port.postMessage({\n type: \"RSC_CHUNK\",\n id: msg.id,\n chunk: data,\n } satisfies RscWorkerOutputMessage);\n },\n onEnd: () => {\n port.postMessage({\n type: \"RSC_END\",\n id: msg.id,\n } satisfies RscWorkerOutputMessage);\n },\n onMetrics: (metrics: any) => {\n port.postMessage({\n type: \"RSC_METRICS\",\n id: msg.id,\n metrics,\n } satisfies RscWorkerOutputMessage);\n },\n onHmrAccept: (routes: string[]) => {\n port.postMessage({\n type: \"HMR_ACCEPT\",\n id: (msg as HmrAcceptMessage).id,\n routes: routes,\n });\n },\n onHmrUpdate: (routes: string[]) => {\n port.postMessage({\n type: \"HMR_UPDATE\",\n id: msg.id,\n routes: routes,\n });\n },\n };\n switch (msg.type) {\n case \"RSC_RENDER\":\n return await handleRender(msg, handlers);\n case \"INITIALIZED_REACT_LOADER\":\n return;\n case \"INITIALIZED_CSS_LOADER\":\n return;\n case \"INITIALIZED_ENV_LOADER\":\n return;\n case \"HMR_UPDATE\":\n // Mark the module as invalidated\n hmrState.set(msg.id, {\n timestamp: msg.timestamp || Date.now(),\n invalidated: true,\n routes: msg.routes || [],\n });\n // Notify the main thread that we've processed the update\n handlers.onHmrUpdate(msg.routes || []);\n return;\n case \"HMR_CLEANUP\":\n // Clear the invalidation state\n hmrState.delete(msg.id);\n // Notify the main thread that we've processed the cleanup\n handlers.onHmrAccept(msg.routes || []);\n return;\n case \"CSS_FILE\":\n if (msg.id) {\n const cssOptions = workerData.userOptions.css || {\n inlineThreshold: 1000,\n };\n\n addCssFileContent(msg.id, msg.content, {\n projectRoot: workerData.userOptions.projectRoot || process.cwd(),\n moduleBaseURL: workerData.userOptions.moduleBaseURL || \"/\",\n moduleBasePath: workerData.userOptions.moduleBasePath || \"/\",\n moduleRootPath: workerData.userOptions.moduleRootPath,\n css: cssOptions,\n });\n }\n return;\n case \"SHUTDOWN\": {\n // If id is \"*\", clean up all render states\n if (msg.id === \"*\") {\n activeStreams.forEach((stream, renderId) => {\n stream.end();\n activeStreams.delete(renderId);\n });\n parentPort?.removeAllListeners();\n } else {\n activeStreams.delete(msg.id);\n }\n // Send SHUTDOWN_COMPLETE message to signal that shutdown is complete\n sendMessage({\n type: \"SHUTDOWN_COMPLETE\",\n id: msg.id,\n } satisfies RscWorkerOutputMessage);\n return;\n }\n default: {\n console.log(\"Unknown message\", msg);\n return;\n }\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;AAWA,eAAsB,cAAA,CACpB,GACA,EAAA,IAAA,GAAO,UACP,EAAA;AACA,EAAA,IAAI,CAAC,IAAM,EAAA;AACT,IAAM,MAAA,IAAI,MAAM,eAAe,CAAA;AAAA;AAEjC,EAAA,MAAM,QAA2B,GAAA;AAAA,IAC/B,OAAA,EAAS,CAAC,KAAA,EAAY,SAAoB,KAAA;AACxC,MAAI,IAAA,EAAE,iBAAiB,KAAQ,CAAA,EAAA;AAC7B,QAAA,KAAA,GAAQ,IAAI,KAAA,CAAM,MAAO,CAAA,KAAK,CAAC,CAAA;AAAA;AAEjC,MAAA,IAAA,CAAK,WAAY,CAAA;AAAA,QACf,IAAM,EAAA,OAAA;AAAA,QACN,IAAI,GAAI,CAAA,EAAA;AAAA,QACR,SAAA;AAAA,QACA,KAAO,EAAA;AAAA,UACL,SAAS,KAAM,CAAA,OAAA;AAAA,UACf,OAAO,KAAM,CAAA,KAAA;AAAA,UACb,MAAM,KAAM,CAAA,IAAA;AAAA,UACZ,OAAO,KAAM,CAAA;AAAA;AACf,OACgC,CAAA;AAClC,MAAA,IAAA,CAAK,WAAY,CAAA;AAAA,QACf,IAAM,EAAA,SAAA;AAAA,QACN,IAAI,GAAI,CAAA;AAAA,OACwB,CAAA;AAAA,KACpC;AAAA,IACA,MAAA,EAAQ,CAAC,IAAc,KAAA;AACrB,MAAA,IAAA,CAAK,WAAY,CAAA;AAAA,QACf,IAAM,EAAA,WAAA;AAAA,QACN,IAAI,GAAI,CAAA,EAAA;AAAA,QACR,KAAO,EAAA;AAAA,OACyB,CAAA;AAAA,KACpC;AAAA,IACA,OAAO,MAAM;AACX,MAAA,IAAA,CAAK,WAAY,CAAA;AAAA,QACf,IAAM,EAAA,SAAA;AAAA,QACN,IAAI,GAAI,CAAA;AAAA,OACwB,CAAA;AAAA,KACpC;AAAA,IACA,SAAA,EAAW,CAAC,OAAiB,KAAA;AAC3B,MAAA,IAAA,CAAK,WAAY,CAAA;AAAA,QACf,IAAM,EAAA,aAAA;AAAA,QACN,IAAI,GAAI,CAAA,EAAA;AAAA,QACR;AAAA,OACgC,CAAA;AAAA,KACpC;AAAA,IACA,WAAA,EAAa,CAAC,MAAqB,KAAA;AACjC,MAAA,IAAA,CAAK,WAAY,CAAA;AAAA,QACf,IAAM,EAAA,YAAA;AAAA,QACN,IAAK,GAAyB,CAAA,EAAA;AAAA,QAC9B;AAAA,OACD,CAAA;AAAA,KACH;AAAA,IACA,WAAA,EAAa,CAAC,MAAqB,KAAA;AACjC,MAAA,IAAA,CAAK,WAAY,CAAA;AAAA,QACf,IAAM,EAAA,YAAA;AAAA,QACN,IAAI,GAAI,CAAA,EAAA;AAAA,QACR;AAAA,OACD,CAAA;AAAA;AACH,GACF;AACA,EAAA,QAAQ,IAAI,IAAM;AAAA,IAChB,KAAK,YAAA;AACH,MAAO,OAAA,MAAM,YAAa,CAAA,GAAA,EAAK,QAAQ,CAAA;AAAA,IACzC,KAAK,0BAAA;AACH,MAAA;AAAA,IACF,KAAK,wBAAA;AACH,MAAA;AAAA,IACF,KAAK,wBAAA;AACH,MAAA;AAAA,IACF,KAAK,YAAA;AAEH,MAAS,QAAA,CAAA,GAAA,CAAI,IAAI,EAAI,EAAA;AAAA,QACnB,SAAW,EAAA,GAAA,CAAI,SAAa,IAAA,IAAA,CAAK,GAAI,EAAA;AAAA,QACrC,WAAa,EAAA,IAAA;AAAA,QACb,MAAA,EAAQ,GAAI,CAAA,MAAA,IAAU;AAAC,OACxB,CAAA;AAED,MAAA,QAAA,CAAS,WAAY,CAAA,GAAA,CAAI,MAAU,IAAA,EAAE,CAAA;AACrC,MAAA;AAAA,IACF,KAAK,aAAA;AAEH,MAAS,QAAA,CAAA,MAAA,CAAO,IAAI,EAAE,CAAA;AAEtB,MAAA,QAAA,CAAS,WAAY,CAAA,GAAA,CAAI,MAAU,IAAA,EAAE,CAAA;AACrC,MAAA;AAAA,IACF,KAAK,UAAA;AACH,MAAA,IAAI,IAAI,EAAI,EAAA;AACV,QAAM,MAAA,UAAA,GAAa,UAAW,CAAA,WAAA,CAAY,GAAO,IAAA;AAAA,UAC/C,eAAiB,EAAA;AAAA,SACnB;AAEA,QAAkB,iBAAA,CAAA,GAAA,CAAI,EAAI,EAAA,GAAA,CAAI,OAAS,EAAA;AAAA,UACrC,WAAa,EAAA,UAAA,CAAW,WAAY,CAAA,WAAA,IAAe,QAAQ,GAAI,EAAA;AAAA,UAC/D,aAAA,EAAe,UAAW,CAAA,WAAA,CAAY,aAAiB,IAAA,GAAA;AAAA,UACvD,cAAA,EAAgB,UAAW,CAAA,WAAA,CAAY,cAAkB,IAAA,GAAA;AAAA,UACzD,cAAA,EAAgB,WAAW,WAAY,CAAA,cAAA;AAAA,UACvC,GAAK,EAAA;AAAA,SACN,CAAA;AAAA;AAEH,MAAA;AAAA,IACF,KAAK,UAAY,EAAA;AAEf,MAAI,IAAA,GAAA,CAAI,OAAO,GAAK,EAAA;AAClB,QAAc,aAAA,CAAA,OAAA,CAAQ,CAAC,MAAA,EAAQ,QAAa,KAAA;AAC1C,UAAA,MAAA,CAAO,GAAI,EAAA;AACX,UAAA,aAAA,CAAc,OAAO,QAAQ,CAAA;AAAA,SAC9B,CAAA;AACD,QAAA,UAAA,EAAY,kBAAmB,EAAA;AAAA,OAC1B,MAAA;AACL,QAAc,aAAA,CAAA,MAAA,CAAO,IAAI,EAAE,CAAA;AAAA;AAG7B,MAAY,WAAA,CAAA;AAAA,QACV,IAAM,EAAA,mBAAA;AAAA,QACN,IAAI,GAAI,CAAA;AAAA,OACwB,CAAA;AAClC,MAAA;AAAA;AACF,IACA,SAAS;AACP,MAAQ,OAAA,CAAA,GAAA,CAAI,mBAAmB,GAAG,CAAA;AAClC,MAAA;AAAA;AACF;AAEJ;;;;"}
@@ -19,10 +19,13 @@ if (workerData) {
19
19
  }
20
20
  const reactLoaderChannel = new MessageChannel();
21
21
  const cssLoaderChannel = new MessageChannel();
22
+ const envLoaderChannel = new MessageChannel();
22
23
  reactLoaderChannel.port2.on("message", messageHandler);
23
24
  cssLoaderChannel.port2.on("message", messageHandler);
25
+ envLoaderChannel.port2.on("message", messageHandler);
24
26
  const loaderPath = "file://" + join(pluginRoot, "loader/react-loader.js");
25
27
  const cssLoaderPath = "file://" + join(pluginRoot, "loader/css-loader.development.js");
28
+ const envLoaderPath = "file://" + join(pluginRoot, "loader/env-loader.development.js");
26
29
  register(loaderPath, {
27
30
  parentURL: pluginRoot,
28
31
  data: { port: reactLoaderChannel.port1 },
@@ -34,6 +37,11 @@ register(cssLoaderPath, {
34
37
  transferList: [cssLoaderChannel.port1]
35
38
  });
36
39
  register$1();
40
+ register(envLoaderPath, {
41
+ parentURL: pluginRoot,
42
+ data: { port: envLoaderChannel.port1, resolvedConfig: workerData.resolvedConfig },
43
+ transferList: [envLoaderChannel.port1]
44
+ });
37
45
  parentPort.on("message", messageHandler);
38
46
  const { hmrPort } = workerData;
39
47
  if (hmrPort) {
@@ -42,22 +50,25 @@ if (hmrPort) {
42
50
  if (message.type === "HMR_UPDATE") {
43
51
  parentPort.postMessage({
44
52
  type: "HMR_UPDATE",
45
- path: message.path
53
+ id: message.id,
54
+ routes: message.routes
46
55
  });
47
56
  }
48
57
  });
49
58
  hmrPort.on("message", (message) => {
50
59
  parentPort.postMessage({
51
60
  type: "HMR_ACCEPT",
52
- path: message.path
61
+ id: message.id,
62
+ routes: message.routes
53
63
  });
54
64
  });
55
65
  }
56
66
  parentPort.postMessage({
57
67
  type: "READY",
58
- env: process.env["NODE_ENV"]
68
+ env: process.env["NODE_ENV"],
69
+ pid: process.pid
59
70
  });
60
- if (process.env["NODE_ENV"] !== "development") {
61
- throw new Error("This module must be run in development mode");
71
+ if (process.env["NODE_ENV"] === "production") {
72
+ throw new Error("This module should not run in production mode.");
62
73
  }
63
74
  //# sourceMappingURL=rsc-worker.development.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rsc-worker.development.js","sources":["../../../../plugin/worker/rsc/rsc-worker.development.ts"],"sourcesContent":["import { parentPort, MessageChannel, workerData } from \"node:worker_threads\";\nimport { messageHandler } from \"./messageHandler.js\";\nimport { register } from \"node:module\";\nimport { register as registerTsx } from \"tsx/esm/api\";\nimport { join } from \"node:path\";\nimport { pluginRoot } from \"../../root.js\";\nimport { deserializeRegExp } from \"../../helpers/serializeUserOptions.js\";\n\n// Initialize worker\nif (!parentPort) {\n throw new Error(\"This module must be run as a worker\");\n}\n\n// Deserialize workerData to restore RegExp objects\nif (workerData) {\n workerData.userOptions = deserializeRegExp(workerData.userOptions);\n}\n\n// Create channels for each loader\nconst reactLoaderChannel = new MessageChannel();\nconst cssLoaderChannel = new MessageChannel();\n\n// Listen for messages from loaders\nreactLoaderChannel.port2.on(\"message\", messageHandler);\ncssLoaderChannel.port2.on(\"message\", messageHandler);\n\nconst loaderPath = \"file://\" + join(pluginRoot, \"loader/react-loader.js\");\nconst cssLoaderPath =\n \"file://\" + join(pluginRoot, \"loader/css-loader.development.js\");\n\n// Register react-loader\nregister(loaderPath, {\n parentURL: pluginRoot,\n data: { port: reactLoaderChannel.port1},\n transferList: [reactLoaderChannel.port1],\n});\nregister(cssLoaderPath, {\n parentURL: pluginRoot,\n data: { port: cssLoaderChannel.port1, resolvedConfig: workerData.resolvedConfig },\n transferList: [cssLoaderChannel.port1],\n});\n\n// Register loaders\nregisterTsx();\n\n// Set up message handling\nparentPort!.on(\"message\", messageHandler);\n\nconst { hmrPort } = workerData;\nif (hmrPort) {\n // Start the message port\n hmrPort.start();\n\n // Listen for file changes\n hmrPort.on(\"message\", (message: any) => {\n if (message.type === \"HMR_UPDATE\") {\n // Invalidate the module in the worker\n parentPort!.postMessage({\n type: \"HMR_UPDATE\",\n path: message.path,\n });\n }\n });\n\n // Listen for HMR updates\n hmrPort.on(\"message\", (message: any) => {\n // Handle the update\n parentPort!.postMessage({\n type: \"HMR_ACCEPT\",\n path: message.path,\n });\n });\n}\n\n// Notify parent that we're ready\nparentPort!.postMessage({\n type: \"READY\",\n env: process.env[\"NODE_ENV\"],\n});\n\nif (process.env[\"NODE_ENV\"] !== \"development\") {\n throw new Error(\"This module must be run in development mode\");\n}\n"],"names":["registerTsx"],"mappings":";;;;;;;;;;;;;AASA,IAAI,CAAC,UAAY,EAAA;AACf,EAAM,MAAA,IAAI,MAAM,qCAAqC,CAAA;AACvD;AAGA,IAAI,UAAY,EAAA;AACd,EAAW,UAAA,CAAA,WAAA,GAAc,iBAAkB,CAAA,UAAA,CAAW,WAAW,CAAA;AACnE;AAGA,MAAM,kBAAA,GAAqB,IAAI,cAAe,EAAA;AAC9C,MAAM,gBAAA,GAAmB,IAAI,cAAe,EAAA;AAG5C,kBAAmB,CAAA,KAAA,CAAM,EAAG,CAAA,SAAA,EAAW,cAAc,CAAA;AACrD,gBAAiB,CAAA,KAAA,CAAM,EAAG,CAAA,SAAA,EAAW,cAAc,CAAA;AAEnD,MAAM,UAAa,GAAA,SAAA,GAAY,IAAK,CAAA,UAAA,EAAY,wBAAwB,CAAA;AACxE,MAAM,aACJ,GAAA,SAAA,GAAY,IAAK,CAAA,UAAA,EAAY,kCAAkC,CAAA;AAGjE,QAAA,CAAS,UAAY,EAAA;AAAA,EACnB,SAAW,EAAA,UAAA;AAAA,EACX,IAAM,EAAA,EAAE,IAAM,EAAA,kBAAA,CAAmB,KAAK,EAAA;AAAA,EACtC,YAAA,EAAc,CAAC,kBAAA,CAAmB,KAAK;AACzC,CAAC,CAAA;AACD,QAAA,CAAS,aAAe,EAAA;AAAA,EACtB,SAAW,EAAA,UAAA;AAAA,EACX,MAAM,EAAE,IAAA,EAAM,iBAAiB,KAAO,EAAA,cAAA,EAAgB,WAAW,cAAe,EAAA;AAAA,EAChF,YAAA,EAAc,CAAC,gBAAA,CAAiB,KAAK;AACvC,CAAC,CAAA;AAGDA,UAAY,EAAA;AAGZ,UAAY,CAAA,EAAA,CAAG,WAAW,cAAc,CAAA;AAExC,MAAM,EAAE,SAAY,GAAA,UAAA;AACpB,IAAI,OAAS,EAAA;AAEX,EAAA,OAAA,CAAQ,KAAM,EAAA;AAGd,EAAQ,OAAA,CAAA,EAAA,CAAG,SAAW,EAAA,CAAC,OAAiB,KAAA;AACtC,IAAI,IAAA,OAAA,CAAQ,SAAS,YAAc,EAAA;AAEjC,MAAA,UAAA,CAAY,WAAY,CAAA;AAAA,QACtB,IAAM,EAAA,YAAA;AAAA,QACN,MAAM,OAAQ,CAAA;AAAA,OACf,CAAA;AAAA;AACH,GACD,CAAA;AAGD,EAAQ,OAAA,CAAA,EAAA,CAAG,SAAW,EAAA,CAAC,OAAiB,KAAA;AAEtC,IAAA,UAAA,CAAY,WAAY,CAAA;AAAA,MACtB,IAAM,EAAA,YAAA;AAAA,MACN,MAAM,OAAQ,CAAA;AAAA,KACf,CAAA;AAAA,GACF,CAAA;AACH;AAGA,UAAA,CAAY,WAAY,CAAA;AAAA,EACtB,IAAM,EAAA,OAAA;AAAA,EACN,GAAA,EAAK,OAAQ,CAAA,GAAA,CAAI,UAAU;AAC7B,CAAC,CAAA;AAED,IAAI,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAA,KAAM,aAAe,EAAA;AAC7C,EAAM,MAAA,IAAI,MAAM,6CAA6C,CAAA;AAC/D"}
1
+ {"version":3,"file":"rsc-worker.development.js","sources":["../../../../plugin/worker/rsc/rsc-worker.development.ts"],"sourcesContent":["import { parentPort, MessageChannel, workerData } from \"node:worker_threads\";\nimport { messageHandler } from \"./messageHandler.js\";\nimport { register } from \"node:module\";\nimport { register as registerTsx } from \"tsx/esm/api\";\nimport { join } from \"node:path\";\nimport { pluginRoot } from \"../../root.js\";\nimport { deserializeRegExp } from \"../../helpers/serializeUserOptions.js\";\nimport type { HmrAcceptMessage, HmrUpdateMessage, ReadyMessage } from \"../types.js\";\n\n// Initialize worker\nif (!parentPort) {\n throw new Error(\"This module must be run as a worker\");\n}\n\n// Deserialize workerData to restore RegExp objects\nif (workerData) {\n workerData.userOptions = deserializeRegExp(workerData.userOptions);\n}\n\n// Create channels for each loader\nconst reactLoaderChannel = new MessageChannel();\nconst cssLoaderChannel = new MessageChannel();\nconst envLoaderChannel = new MessageChannel();\n\n\n// Listen for messages from loaders\nreactLoaderChannel.port2.on(\"message\", messageHandler);\ncssLoaderChannel.port2.on(\"message\", messageHandler);\nenvLoaderChannel.port2.on(\"message\", messageHandler);\n\nconst loaderPath = \"file://\" + join(pluginRoot, \"loader/react-loader.js\");\nconst cssLoaderPath =\n \"file://\" + join(pluginRoot, \"loader/css-loader.development.js\");\nconst envLoaderPath =\n \"file://\" + join(pluginRoot, \"loader/env-loader.development.js\");\n\nregister(loaderPath, {\n parentURL: pluginRoot,\n data: { port: reactLoaderChannel.port1},\n transferList: [reactLoaderChannel.port1],\n});\nregister(cssLoaderPath, {\n parentURL: pluginRoot,\n data: { port: cssLoaderChannel.port1, resolvedConfig: workerData.resolvedConfig },\n transferList: [cssLoaderChannel.port1],\n});\n\n// Register loaders\nregisterTsx();\n\n// Register env-loader (ensure this the last)\nregister(envLoaderPath, {\n parentURL: pluginRoot,\n data: { port: envLoaderChannel.port1, resolvedConfig: workerData.resolvedConfig },\n transferList: [envLoaderChannel.port1],\n});\n// Set up message handling\nparentPort!.on(\"message\", messageHandler);\n\nconst { hmrPort } = workerData;\nif (hmrPort) {\n // Start the message port\n hmrPort.start();\n\n // Listen for file changes\n hmrPort.on(\"message\", (message: any) => {\n if (message.type === \"HMR_UPDATE\") {\n // Invalidate the module in the worker\n parentPort!.postMessage({\n type: \"HMR_UPDATE\",\n id: message.id,\n routes: message.routes,\n } satisfies HmrUpdateMessage);\n }\n });\n\n // Listen for HMR updates\n hmrPort.on(\"message\", (message: any) => {\n // Handle the update\n parentPort!.postMessage({\n type: \"HMR_ACCEPT\",\n id: message.id,\n routes: message.routes,\n } satisfies HmrAcceptMessage);\n });\n}\n\n// Notify parent that we're ready\nparentPort!.postMessage({\n type: \"READY\",\n env: process.env[\"NODE_ENV\"],\n pid: process.pid,\n} satisfies ReadyMessage);\n\nif (process.env[\"NODE_ENV\"] === \"production\") {\n throw new Error(\"This module should not run in production mode.\");\n}\n"],"names":["registerTsx"],"mappings":"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"}
@@ -3,15 +3,26 @@
3
3
  * Copyright (c) Nico Brinkkemper
4
4
  * MIT License
5
5
  */
6
- import { parentPort } from 'node:worker_threads';
6
+ import { parentPort, MessageChannel } from 'node:worker_threads';
7
7
  import { messageHandler } from './messageHandler.js';
8
+ import { register } from 'node:module';
9
+ import { join } from 'node:path';
10
+ import { pluginRoot } from '../../root.js';
8
11
 
9
- if (process.env["NODE_ENV"] !== "production") {
10
- process.exit(1);
11
- }
12
12
  if (!parentPort) {
13
13
  throw new Error("This module must be run as a worker");
14
14
  }
15
+ const reactLoaderChannel = new MessageChannel();
16
+ const cssLoaderChannel = new MessageChannel();
17
+ const envLoaderChannel = new MessageChannel();
18
+ register(join(pluginRoot, "worker/env-loader.js"), {
19
+ parentURL: import.meta.url,
20
+ data: { port: envLoaderChannel.port2 },
21
+ transferList: [envLoaderChannel.port2]
22
+ });
23
+ reactLoaderChannel.port2.on("message", messageHandler);
24
+ cssLoaderChannel.port2.on("message", messageHandler);
25
+ envLoaderChannel.port2.on("message", messageHandler);
15
26
  parentPort.on("message", messageHandler);
16
- parentPort.postMessage({ type: "READY", env: process.env["NODE_ENV"] });
27
+ parentPort.postMessage({ type: "READY", env: process.env["NODE_ENV"], pid: process.pid });
17
28
  //# sourceMappingURL=rsc-worker.production.js.map