vite-plugin-react-server 1.1.20 → 1.2.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (783) hide show
  1. package/README.md +102 -395
  2. package/dist/_virtual/dynamic-import-helper.js +1 -1
  3. package/dist/client.d.ts +1 -1
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/client.js +5 -2
  6. package/dist/index.js +1 -1
  7. package/dist/package.json +58 -25
  8. package/dist/plugin/components/{css-collector-elements.d.ts → css.d.ts} +2 -2
  9. package/dist/plugin/components/css.d.ts.map +1 -0
  10. package/dist/plugin/components/css.js +33 -0
  11. package/dist/plugin/components/html.d.ts +1 -1
  12. package/dist/plugin/components/html.d.ts.map +1 -1
  13. package/dist/plugin/components/html.js +5 -5
  14. package/dist/plugin/components/index.d.ts +3 -3
  15. package/dist/plugin/components/index.d.ts.map +1 -1
  16. package/dist/plugin/components/index.js +9 -3
  17. package/dist/plugin/components/root.d.ts +7 -0
  18. package/dist/plugin/components/root.d.ts.map +1 -0
  19. package/dist/plugin/components/root.js +18 -0
  20. package/dist/plugin/config/autoDiscover/createGlobAutoDiscover.js +1 -1
  21. package/dist/plugin/config/autoDiscover/customWorkerFiles.js +1 -1
  22. package/dist/plugin/config/autoDiscover/pageAndPropFiles.js +1 -1
  23. package/dist/plugin/config/autoDiscover/resolveAutoDiscover.d.ts +5 -4
  24. package/dist/plugin/config/autoDiscover/resolveAutoDiscover.d.ts.map +1 -1
  25. package/dist/plugin/config/autoDiscover/resolveAutoDiscover.js +26 -7
  26. package/dist/plugin/config/autoDiscover/resolveBuildPages.d.ts +25 -2
  27. package/dist/plugin/config/autoDiscover/resolveBuildPages.d.ts.map +1 -1
  28. package/dist/plugin/config/autoDiscover/resolveBuildPages.js +84 -5
  29. package/dist/plugin/config/createModuleID.d.ts +3 -6
  30. package/dist/plugin/config/createModuleID.d.ts.map +1 -1
  31. package/dist/plugin/config/createModuleID.js +42 -32
  32. package/dist/plugin/config/defaults.d.ts +199 -121
  33. package/dist/plugin/config/defaults.d.ts.map +1 -1
  34. package/dist/plugin/config/defaults.js +155 -89
  35. package/dist/plugin/config/extMap.d.ts +6 -2
  36. package/dist/plugin/config/extMap.d.ts.map +1 -1
  37. package/dist/plugin/config/extMap.js +38 -48
  38. package/dist/plugin/config/flightBindings.d.ts +4 -0
  39. package/dist/plugin/config/flightBindings.d.ts.map +1 -0
  40. package/dist/plugin/config/flightBindings.js +215 -0
  41. package/dist/plugin/config/getCondition.d.ts +2 -0
  42. package/dist/plugin/config/getCondition.d.ts.map +1 -1
  43. package/dist/plugin/config/getCondition.js +4 -2
  44. package/dist/plugin/config/getPaths.js +1 -1
  45. package/dist/plugin/config/index.d.ts +17 -4
  46. package/dist/plugin/config/index.d.ts.map +1 -1
  47. package/dist/plugin/config/index.js +29 -7
  48. package/dist/plugin/config/interpolatePattern.d.ts +13 -0
  49. package/dist/plugin/config/interpolatePattern.d.ts.map +1 -0
  50. package/dist/plugin/config/interpolatePattern.js +13 -0
  51. package/dist/plugin/config/mimeTypes.js +1 -1
  52. package/dist/plugin/config/parsePattern.d.ts +25 -0
  53. package/dist/plugin/config/parsePattern.d.ts.map +1 -0
  54. package/dist/plugin/config/parsePattern.js +30 -0
  55. package/dist/plugin/config/resolveAllowedDirectives.d.ts +26 -0
  56. package/dist/plugin/config/resolveAllowedDirectives.d.ts.map +1 -0
  57. package/dist/plugin/config/resolveAllowedDirectives.js +35 -0
  58. package/dist/plugin/config/resolveDirectiveMatcher.d.ts +25 -0
  59. package/dist/plugin/config/resolveDirectiveMatcher.d.ts.map +1 -0
  60. package/dist/plugin/config/resolveDirectiveMatcher.js +33 -0
  61. package/dist/plugin/config/resolveEnv.d.ts.map +1 -1
  62. package/dist/plugin/config/resolveEnv.js +14 -4
  63. package/dist/plugin/config/resolveOptions.d.ts +13 -3
  64. package/dist/plugin/config/resolveOptions.d.ts.map +1 -1
  65. package/dist/plugin/config/resolveOptions.js +228 -206
  66. package/dist/plugin/config/resolvePages.js +1 -1
  67. package/dist/plugin/config/resolvePatternWithValues.d.ts +39 -0
  68. package/dist/plugin/config/resolvePatternWithValues.d.ts.map +1 -0
  69. package/dist/plugin/config/resolvePatternWithValues.js +36 -0
  70. package/dist/plugin/config/resolveRegExp.d.ts +29 -0
  71. package/dist/plugin/config/resolveRegExp.d.ts.map +1 -0
  72. package/dist/plugin/config/resolveRegExp.js +39 -0
  73. package/dist/plugin/config/resolveUrlOption.d.ts +37 -6
  74. package/dist/plugin/config/resolveUrlOption.d.ts.map +1 -1
  75. package/dist/plugin/config/resolveUrlOption.js +42 -12
  76. package/dist/plugin/config/resolveUserConfig.d.ts +5 -4
  77. package/dist/plugin/config/resolveUserConfig.d.ts.map +1 -1
  78. package/dist/plugin/config/resolveUserConfig.js +86 -40
  79. package/dist/plugin/env/plugin.d.ts +6 -0
  80. package/dist/plugin/env/plugin.d.ts.map +1 -1
  81. package/dist/plugin/env/plugin.js +111 -93
  82. package/dist/plugin/error/directiveError.d.ts +13 -0
  83. package/dist/plugin/error/directiveError.d.ts.map +1 -0
  84. package/dist/plugin/error/directiveError.js +21 -0
  85. package/dist/plugin/error/enhanceError.d.ts +14 -0
  86. package/dist/plugin/error/enhanceError.d.ts.map +1 -0
  87. package/dist/plugin/error/enhanceError.js +24 -0
  88. package/dist/plugin/error/index.d.ts +4 -0
  89. package/dist/plugin/error/index.d.ts.map +1 -0
  90. package/dist/plugin/error/index.js +9 -0
  91. package/dist/plugin/error/logError.d.ts +3 -0
  92. package/dist/plugin/error/logError.d.ts.map +1 -0
  93. package/dist/plugin/error/logError.js +47 -0
  94. package/dist/plugin/error/serializeError.d.ts +7 -0
  95. package/dist/plugin/error/serializeError.d.ts.map +1 -0
  96. package/dist/plugin/error/serializeError.js +37 -0
  97. package/dist/plugin/error/toError.d.ts +1 -8
  98. package/dist/plugin/error/toError.d.ts.map +1 -1
  99. package/dist/plugin/error/toError.js +62 -34
  100. package/dist/plugin/file-preserver/plugin.js +93 -105
  101. package/dist/plugin/getNodeEnv.d.ts +11 -0
  102. package/dist/plugin/getNodeEnv.d.ts.map +1 -0
  103. package/dist/plugin/getNodeEnv.js +17 -0
  104. package/dist/plugin/helpers/cleanObject.d.ts.map +1 -1
  105. package/dist/plugin/helpers/cleanObject.js +2 -1
  106. package/dist/plugin/helpers/collectManifestCss.js +1 -1
  107. package/dist/plugin/helpers/collectViteModuleGraphCss.d.ts +6 -4
  108. package/dist/plugin/helpers/collectViteModuleGraphCss.d.ts.map +1 -1
  109. package/dist/plugin/helpers/collectViteModuleGraphCss.js +15 -9
  110. package/dist/plugin/helpers/createCssProps.d.ts +3 -4
  111. package/dist/plugin/helpers/createCssProps.d.ts.map +1 -1
  112. package/dist/plugin/helpers/createCssProps.js +16 -4
  113. package/dist/plugin/helpers/createEventHandler.d.ts +2 -2
  114. package/dist/plugin/helpers/createEventHandler.d.ts.map +1 -1
  115. package/dist/plugin/helpers/createEventHandler.js +1 -1
  116. package/dist/plugin/helpers/createHandler.d.ts +10 -8
  117. package/dist/plugin/helpers/createHandler.d.ts.map +1 -1
  118. package/dist/plugin/helpers/createHandler.js +11 -5
  119. package/dist/plugin/helpers/createRscStream.d.ts +18 -5
  120. package/dist/plugin/helpers/createRscStream.d.ts.map +1 -1
  121. package/dist/plugin/helpers/createRscStream.js +48 -14
  122. package/dist/plugin/helpers/formatMetrics.d.ts +1 -5
  123. package/dist/plugin/helpers/formatMetrics.d.ts.map +1 -1
  124. package/dist/plugin/helpers/formatMetrics.js +2 -39
  125. package/dist/plugin/helpers/getBundleManifest.d.ts.map +1 -1
  126. package/dist/plugin/helpers/getBundleManifest.js +9 -2
  127. package/dist/plugin/helpers/getRouteFiles.d.ts +30 -2
  128. package/dist/plugin/helpers/getRouteFiles.d.ts.map +1 -1
  129. package/dist/plugin/helpers/getRouteFiles.js +70 -7
  130. package/dist/plugin/helpers/handleServerAction.d.ts +8 -7
  131. package/dist/plugin/helpers/handleServerAction.d.ts.map +1 -1
  132. package/dist/plugin/helpers/handleServerAction.js +5 -2
  133. package/dist/plugin/helpers/hydrateUserOptions.d.ts +9 -0
  134. package/dist/plugin/helpers/hydrateUserOptions.d.ts.map +1 -0
  135. package/dist/plugin/helpers/hydrateUserOptions.js +22 -0
  136. package/dist/plugin/helpers/index.d.ts +2 -0
  137. package/dist/plugin/helpers/index.d.ts.map +1 -1
  138. package/dist/plugin/helpers/index.js +31 -31
  139. package/dist/plugin/helpers/inputNormalizer.d.ts +1 -1
  140. package/dist/plugin/helpers/inputNormalizer.d.ts.map +1 -1
  141. package/dist/plugin/helpers/inputNormalizer.js +33 -20
  142. package/dist/plugin/helpers/metrics.d.ts +4 -10
  143. package/dist/plugin/helpers/metrics.d.ts.map +1 -1
  144. package/dist/plugin/helpers/metrics.js +3 -59
  145. package/dist/plugin/helpers/moduleRefs.js +1 -1
  146. package/dist/plugin/helpers/moduleResolver.d.ts +24 -2
  147. package/dist/plugin/helpers/moduleResolver.d.ts.map +1 -1
  148. package/dist/plugin/helpers/moduleResolver.js +61 -22
  149. package/dist/plugin/helpers/requestInfo.d.ts +28 -1
  150. package/dist/plugin/helpers/requestInfo.d.ts.map +1 -1
  151. package/dist/plugin/helpers/requestInfo.js +43 -30
  152. package/dist/plugin/helpers/requestToRoute.d.ts +1 -1
  153. package/dist/plugin/helpers/requestToRoute.d.ts.map +1 -1
  154. package/dist/plugin/helpers/requestToRoute.js +17 -9
  155. package/dist/plugin/helpers/resolveComponent.d.ts +57 -0
  156. package/dist/plugin/helpers/resolveComponent.d.ts.map +1 -0
  157. package/dist/plugin/helpers/resolveComponent.js +71 -0
  158. package/dist/plugin/helpers/resolveComponents.d.ts +27 -0
  159. package/dist/plugin/helpers/resolveComponents.d.ts.map +1 -0
  160. package/dist/plugin/helpers/resolveComponents.js +137 -0
  161. package/dist/plugin/helpers/resolvePage.d.ts +15 -11
  162. package/dist/plugin/helpers/resolvePage.d.ts.map +1 -1
  163. package/dist/plugin/helpers/resolvePage.js +11 -7
  164. package/dist/plugin/helpers/resolvePageAndProps.d.ts +3 -10
  165. package/dist/plugin/helpers/resolvePageAndProps.d.ts.map +1 -1
  166. package/dist/plugin/helpers/resolvePageAndProps.js +28 -18
  167. package/dist/plugin/helpers/resolveProps.d.ts +13 -7
  168. package/dist/plugin/helpers/resolveProps.d.ts.map +1 -1
  169. package/dist/plugin/helpers/resolveProps.js +55 -25
  170. package/dist/plugin/helpers/resolveUserComponents.d.ts +33 -0
  171. package/dist/plugin/helpers/resolveUserComponents.d.ts.map +1 -0
  172. package/dist/plugin/helpers/resolveUserComponents.js +163 -0
  173. package/dist/plugin/helpers/serializeUserOptions.d.ts +7 -7
  174. package/dist/plugin/helpers/serializeUserOptions.d.ts.map +1 -1
  175. package/dist/plugin/helpers/serializeUserOptions.js +127 -42
  176. package/dist/plugin/helpers/stashReturnValue.d.ts +2 -1
  177. package/dist/plugin/helpers/stashReturnValue.d.ts.map +1 -1
  178. package/dist/plugin/helpers/stashReturnValue.js +6 -3
  179. package/dist/plugin/helpers/tryManifest.d.ts +1 -2
  180. package/dist/plugin/helpers/tryManifest.d.ts.map +1 -1
  181. package/dist/plugin/helpers/tryManifest.js +1 -1
  182. package/dist/plugin/loader/createDefaultLoader.d.ts +19 -8
  183. package/dist/plugin/loader/createDefaultLoader.d.ts.map +1 -1
  184. package/dist/plugin/loader/createDefaultLoader.js +69 -107
  185. package/dist/plugin/loader/createTransformer.d.ts +6 -0
  186. package/dist/plugin/loader/createTransformer.d.ts.map +1 -0
  187. package/dist/plugin/loader/createTransformer.js +97 -0
  188. package/dist/plugin/loader/{css-loader.development.d.ts → css-loader.d.ts} +6 -8
  189. package/dist/plugin/loader/css-loader.d.ts.map +1 -0
  190. package/dist/plugin/loader/css-loader.js +134 -0
  191. package/dist/plugin/loader/directives/addLocalExportedNames.d.ts +4 -0
  192. package/dist/plugin/loader/directives/addLocalExportedNames.d.ts.map +1 -0
  193. package/dist/plugin/loader/directives/addLocalExportedNames.js +57 -0
  194. package/dist/plugin/loader/directives/analyzeDirectives.d.ts +9 -0
  195. package/dist/plugin/loader/directives/analyzeDirectives.d.ts.map +1 -0
  196. package/dist/plugin/loader/directives/analyzeDirectives.js +221 -0
  197. package/dist/plugin/loader/directives/analyzeModule.d.ts +11 -0
  198. package/dist/plugin/loader/directives/analyzeModule.d.ts.map +1 -0
  199. package/dist/plugin/loader/directives/analyzeModule.js +34 -0
  200. package/dist/plugin/loader/directives/collectExports.d.ts +13 -0
  201. package/dist/plugin/loader/directives/collectExports.d.ts.map +1 -0
  202. package/dist/plugin/loader/directives/collectExports.js +116 -0
  203. package/dist/plugin/loader/directives/collectExportsFromModule.d.ts +6 -0
  204. package/dist/plugin/loader/directives/collectExportsFromModule.d.ts.map +1 -0
  205. package/dist/plugin/loader/directives/collectExportsFromModule.js +24 -0
  206. package/dist/plugin/loader/directives/findDirectiveMatches.d.ts +3 -0
  207. package/dist/plugin/loader/directives/findDirectiveMatches.d.ts.map +1 -0
  208. package/dist/plugin/loader/directives/findDirectiveMatches.js +46 -0
  209. package/dist/plugin/loader/directives/getExportedName.d.ts +3 -0
  210. package/dist/plugin/loader/directives/getExportedName.d.ts.map +1 -0
  211. package/dist/plugin/loader/directives/getExportedName.js +59 -0
  212. package/dist/plugin/loader/directives/getExports.d.ts +7 -0
  213. package/dist/plugin/loader/directives/getExports.d.ts.map +1 -0
  214. package/dist/plugin/loader/directives/getExports.js +28 -0
  215. package/dist/plugin/loader/directives/getFunctionBody.d.ts +3 -0
  216. package/dist/plugin/loader/directives/getFunctionBody.d.ts.map +1 -0
  217. package/dist/plugin/loader/directives/getFunctionBody.js +31 -0
  218. package/dist/plugin/loader/directives/getFunctionName.d.ts +10 -0
  219. package/dist/plugin/loader/directives/getFunctionName.d.ts.map +1 -0
  220. package/dist/plugin/loader/directives/getFunctionName.js +42 -0
  221. package/dist/plugin/loader/directives/getQualifiedName.d.ts +3 -0
  222. package/dist/plugin/loader/directives/getQualifiedName.d.ts.map +1 -0
  223. package/dist/plugin/loader/directives/getQualifiedName.js +65 -0
  224. package/dist/plugin/loader/directives/index.d.ts +14 -0
  225. package/dist/plugin/loader/directives/index.d.ts.map +1 -0
  226. package/dist/plugin/loader/directives/index.js +18 -0
  227. package/dist/plugin/loader/directives/processFunctionNode.d.ts +4 -0
  228. package/dist/plugin/loader/directives/processFunctionNode.d.ts.map +1 -0
  229. package/dist/plugin/loader/directives/processFunctionNode.js +86 -0
  230. package/dist/plugin/loader/directives/typeGuards.d.ts +37 -0
  231. package/dist/plugin/loader/directives/typeGuards.d.ts.map +1 -0
  232. package/dist/plugin/loader/directives/typeGuards.js +100 -0
  233. package/dist/plugin/loader/directives/types.d.ts +154 -0
  234. package/dist/plugin/loader/directives/types.d.ts.map +1 -0
  235. package/dist/plugin/loader/directives/utils.d.ts +14 -0
  236. package/dist/plugin/loader/directives/utils.d.ts.map +1 -0
  237. package/dist/plugin/loader/directives/utils.js +21 -0
  238. package/dist/plugin/loader/env-loader.d.ts +11 -0
  239. package/dist/plugin/loader/env-loader.d.ts.map +1 -0
  240. package/dist/plugin/loader/env-loader.js +65 -0
  241. package/dist/plugin/loader/index.d.ts +8 -1
  242. package/dist/plugin/loader/index.d.ts.map +1 -1
  243. package/dist/plugin/loader/index.js +13 -4
  244. package/dist/plugin/loader/parse.d.ts +11 -2
  245. package/dist/plugin/loader/parse.d.ts.map +1 -1
  246. package/dist/plugin/loader/parse.js +29 -6
  247. package/dist/plugin/loader/react-loader.d.ts +22 -1
  248. package/dist/plugin/loader/react-loader.d.ts.map +1 -1
  249. package/dist/plugin/loader/react-loader.js +169 -6
  250. package/dist/plugin/loader/removeDirectives.d.ts +5 -0
  251. package/dist/plugin/loader/removeDirectives.d.ts.map +1 -0
  252. package/dist/plugin/loader/removeDirectives.js +17 -0
  253. package/dist/plugin/loader/removeRanges.d.ts +5 -0
  254. package/dist/plugin/loader/removeRanges.d.ts.map +1 -0
  255. package/dist/plugin/loader/removeRanges.js +20 -0
  256. package/dist/plugin/loader/sourceMap.d.ts +16 -24
  257. package/dist/plugin/loader/sourceMap.d.ts.map +1 -1
  258. package/dist/plugin/loader/sourceMap.js +125 -97
  259. package/dist/plugin/loader/transformClientModule.d.ts +10 -0
  260. package/dist/plugin/loader/transformClientModule.d.ts.map +1 -0
  261. package/dist/plugin/loader/transformClientModule.js +46 -0
  262. package/dist/plugin/loader/transformModule.d.ts +6 -0
  263. package/dist/plugin/loader/transformModule.d.ts.map +1 -0
  264. package/dist/plugin/loader/transformModule.js +33 -0
  265. package/dist/plugin/loader/transformModuleIfNeeded.d.ts +12 -1
  266. package/dist/plugin/loader/transformModuleIfNeeded.d.ts.map +1 -1
  267. package/dist/plugin/loader/transformModuleIfNeeded.js +9 -20
  268. package/dist/plugin/loader/transformServerModule.d.ts +11 -0
  269. package/dist/plugin/loader/transformServerModule.d.ts.map +1 -0
  270. package/dist/plugin/loader/transformServerModule.js +84 -0
  271. package/dist/plugin/loader/transformWithAcornLoose.d.ts +12 -0
  272. package/dist/plugin/loader/transformWithAcornLoose.d.ts.map +1 -0
  273. package/dist/plugin/loader/transformWithAcornLoose.js +18 -0
  274. package/dist/plugin/loader/types.d.ts +59 -12
  275. package/dist/plugin/loader/types.d.ts.map +1 -1
  276. package/dist/plugin/metrics/collectStreamMetrics.d.ts +9 -0
  277. package/dist/plugin/metrics/collectStreamMetrics.d.ts.map +1 -0
  278. package/dist/plugin/metrics/collectStreamMetrics.js +35 -0
  279. package/dist/plugin/metrics/createRenderMetrics.d.ts +3 -0
  280. package/dist/plugin/metrics/createRenderMetrics.d.ts.map +1 -0
  281. package/dist/plugin/metrics/createRenderMetrics.js +24 -0
  282. package/dist/plugin/metrics/createStreamMetrics.d.ts +3 -0
  283. package/dist/plugin/metrics/createStreamMetrics.d.ts.map +1 -0
  284. package/dist/plugin/metrics/createStreamMetrics.js +19 -0
  285. package/dist/plugin/metrics/formatMetrics.d.ts +6 -3
  286. package/dist/plugin/metrics/formatMetrics.d.ts.map +1 -1
  287. package/dist/plugin/metrics/formatMetrics.js +5 -2
  288. package/dist/plugin/metrics/index.d.ts +3 -1
  289. package/dist/plugin/metrics/index.d.ts.map +1 -1
  290. package/dist/plugin/metrics/index.js +9 -1
  291. package/dist/plugin/metrics/types.d.ts +23 -0
  292. package/dist/plugin/metrics/types.d.ts.map +1 -0
  293. package/dist/plugin/metrics/types.js +1 -0
  294. package/dist/plugin/plugin.client.d.ts +23 -2
  295. package/dist/plugin/plugin.client.d.ts.map +1 -1
  296. package/dist/plugin/plugin.client.js +30 -17
  297. package/dist/plugin/plugin.server.d.ts +13 -2
  298. package/dist/plugin/plugin.server.d.ts.map +1 -1
  299. package/dist/plugin/plugin.server.js +7 -4
  300. package/dist/plugin/preserver/plugin.d.ts +2 -2
  301. package/dist/plugin/preserver/plugin.d.ts.map +1 -1
  302. package/dist/plugin/preserver/plugin.js +33 -29
  303. package/dist/plugin/react-client/cleanupWorkerServerAction.d.ts +11 -0
  304. package/dist/plugin/react-client/cleanupWorkerServerAction.d.ts.map +1 -0
  305. package/dist/plugin/react-client/cleanupWorkerServerAction.js +18 -0
  306. package/dist/plugin/react-client/configureWorkerRequestHandler.d.ts +9 -9
  307. package/dist/plugin/react-client/configureWorkerRequestHandler.d.ts.map +1 -1
  308. package/dist/plugin/react-client/configureWorkerRequestHandler.js +25 -14
  309. package/dist/plugin/react-client/createMessageHandlers.d.ts +1 -1
  310. package/dist/plugin/react-client/createMessageHandlers.d.ts.map +1 -1
  311. package/dist/plugin/react-client/createMessageHandlers.js +15 -3
  312. package/dist/plugin/react-client/createWorkerStream.d.ts +12 -10
  313. package/dist/plugin/react-client/createWorkerStream.d.ts.map +1 -1
  314. package/dist/plugin/react-client/createWorkerStream.js +27 -29
  315. package/dist/plugin/react-client/handleWorkerRscStream.d.ts +13 -8
  316. package/dist/plugin/react-client/handleWorkerRscStream.d.ts.map +1 -1
  317. package/dist/plugin/react-client/handleWorkerRscStream.js +59 -24
  318. package/dist/plugin/react-client/handleWorkerServerAction.d.ts +2 -1
  319. package/dist/plugin/react-client/handleWorkerServerAction.d.ts.map +1 -1
  320. package/dist/plugin/react-client/handleWorkerServerAction.js +43 -28
  321. package/dist/plugin/react-client/index.d.ts +4 -1
  322. package/dist/plugin/react-client/index.d.ts.map +1 -1
  323. package/dist/plugin/react-client/index.js +10 -1
  324. package/dist/plugin/react-client/plugin.d.ts +5 -3
  325. package/dist/plugin/react-client/plugin.d.ts.map +1 -1
  326. package/dist/plugin/react-client/plugin.js +9 -11
  327. package/dist/plugin/react-client/restartWorker.d.ts +5 -4
  328. package/dist/plugin/react-client/restartWorker.d.ts.map +1 -1
  329. package/dist/plugin/react-client/restartWorker.js +12 -10
  330. package/dist/plugin/react-server/configureReactServer.d.ts +5 -4
  331. package/dist/plugin/react-server/configureReactServer.d.ts.map +1 -1
  332. package/dist/plugin/react-server/configureReactServer.js +98 -43
  333. package/dist/plugin/react-server/handleServerAction.d.ts +3 -2
  334. package/dist/plugin/react-server/handleServerAction.d.ts.map +1 -1
  335. package/dist/plugin/react-server/handleServerAction.js +14 -20
  336. package/dist/plugin/react-server/plugin.d.ts +3 -4
  337. package/dist/plugin/react-server/plugin.d.ts.map +1 -1
  338. package/dist/plugin/react-server/plugin.js +14 -17
  339. package/dist/plugin/react-static/collectHtmlWorkerContent.d.ts +8 -6
  340. package/dist/plugin/react-static/collectHtmlWorkerContent.d.ts.map +1 -1
  341. package/dist/plugin/react-static/collectHtmlWorkerContent.js +4 -4
  342. package/dist/plugin/react-static/collectRscContent.d.ts +8 -6
  343. package/dist/plugin/react-static/collectRscContent.d.ts.map +1 -1
  344. package/dist/plugin/react-static/collectRscContent.js +4 -4
  345. package/dist/plugin/react-static/configurePreviewServer.d.ts +6 -4
  346. package/dist/plugin/react-static/configurePreviewServer.d.ts.map +1 -1
  347. package/dist/plugin/react-static/configurePreviewServer.js +38 -31
  348. package/dist/plugin/react-static/createBuildLoader.d.ts +5 -5
  349. package/dist/plugin/react-static/createBuildLoader.d.ts.map +1 -1
  350. package/dist/plugin/react-static/createBuildLoader.js +122 -30
  351. package/dist/plugin/react-static/fileWriter.js +1 -1
  352. package/dist/plugin/react-static/plugin.d.ts +3 -4
  353. package/dist/plugin/react-static/plugin.d.ts.map +1 -1
  354. package/dist/plugin/react-static/plugin.js +62 -47
  355. package/dist/plugin/react-static/renderPage.d.ts +4 -2
  356. package/dist/plugin/react-static/renderPage.d.ts.map +1 -1
  357. package/dist/plugin/react-static/renderPage.js +33 -17
  358. package/dist/plugin/react-static/renderPages.d.ts +4 -2
  359. package/dist/plugin/react-static/renderPages.d.ts.map +1 -1
  360. package/dist/plugin/react-static/renderPages.js +7 -6
  361. package/dist/plugin/react-static/renderStreams.d.ts +5 -22
  362. package/dist/plugin/react-static/renderStreams.d.ts.map +1 -1
  363. package/dist/plugin/react-static/renderStreams.js +6 -6
  364. package/dist/plugin/react-static/rscToHtmlStream.d.ts.map +1 -1
  365. package/dist/plugin/react-static/rscToHtmlStream.js +1 -1
  366. package/dist/plugin/react-static/temporaryReferences.js +1 -1
  367. package/dist/plugin/react-static/types.d.ts +0 -1
  368. package/dist/plugin/react-static/types.d.ts.map +1 -1
  369. package/dist/plugin/root.js +1 -1
  370. package/dist/plugin/transformer/plugin.js +1 -1
  371. package/dist/plugin/transformer/plugin.server.d.ts +5 -3
  372. package/dist/plugin/transformer/plugin.server.d.ts.map +1 -1
  373. package/dist/plugin/transformer/plugin.server.js +43 -44
  374. package/dist/plugin/types/css-tracking.d.ts +2 -2
  375. package/dist/plugin/types/css-tracking.d.ts.map +1 -1
  376. package/dist/plugin/types.d.ts +452 -192
  377. package/dist/plugin/types.d.ts.map +1 -1
  378. package/dist/plugin/types.js +2 -1
  379. package/dist/plugin/utils/callServer.js +1 -1
  380. package/dist/plugin/utils/createCallServer.d.ts +1 -1
  381. package/dist/plugin/utils/createCallServer.d.ts.map +1 -1
  382. package/dist/plugin/utils/createCallServer.js +1 -1
  383. package/dist/plugin/utils/createReactFetcher.d.ts +2 -3
  384. package/dist/plugin/utils/createReactFetcher.d.ts.map +1 -1
  385. package/dist/plugin/utils/createReactFetcher.js +1 -1
  386. package/dist/plugin/utils/env.js +1 -1
  387. package/dist/plugin/utils/envUrls.node.js +1 -1
  388. package/dist/plugin/utils/index.d.ts +1 -0
  389. package/dist/plugin/utils/index.d.ts.map +1 -1
  390. package/dist/plugin/utils/index.js +12 -5
  391. package/dist/plugin/utils/routeToURL.d.ts +12 -0
  392. package/dist/plugin/utils/routeToURL.d.ts.map +1 -0
  393. package/dist/plugin/utils/routeToURL.js +26 -0
  394. package/dist/plugin/utils/urls.d.ts.map +1 -1
  395. package/dist/plugin/utils/urls.js +5 -3
  396. package/dist/plugin/vendor/index.js +7 -1
  397. package/dist/plugin/vendor/vendor.client.js +1 -1
  398. package/dist/plugin/vendor/vendor.js +1 -1
  399. package/dist/plugin/vendor/vendor.server.js +1 -1
  400. package/dist/plugin/worker/createWorker.d.ts +31 -17
  401. package/dist/plugin/worker/createWorker.d.ts.map +1 -1
  402. package/dist/plugin/worker/createWorker.js +18 -12
  403. package/dist/plugin/worker/html/createHtmlWorkerRenderState.d.ts +2 -2
  404. package/dist/plugin/worker/html/createHtmlWorkerRenderState.d.ts.map +1 -1
  405. package/dist/plugin/worker/html/createHtmlWorkerRenderState.js +5 -2
  406. package/dist/plugin/worker/html/html-worker.development.js +3 -3
  407. package/dist/plugin/worker/html/html-worker.production.js +1 -1
  408. package/dist/plugin/worker/html/index.d.ts +1 -1
  409. package/dist/plugin/worker/html/index.d.ts.map +1 -1
  410. package/dist/plugin/worker/html/index.js +1 -1
  411. package/dist/plugin/worker/html/messageHandler.d.ts +1 -1
  412. package/dist/plugin/worker/html/messageHandler.d.ts.map +1 -1
  413. package/dist/plugin/worker/html/messageHandler.js +9 -11
  414. package/dist/plugin/worker/html/sendHtmlWorkerMessage.d.ts +3 -0
  415. package/dist/plugin/worker/html/sendHtmlWorkerMessage.d.ts.map +1 -0
  416. package/dist/plugin/worker/html/sendHtmlWorkerMessage.js +2 -0
  417. package/dist/plugin/worker/html/types.d.ts +20 -2
  418. package/dist/plugin/worker/html/types.d.ts.map +1 -1
  419. package/dist/plugin/worker/index.d.ts +3 -0
  420. package/dist/plugin/worker/index.d.ts.map +1 -0
  421. package/dist/plugin/worker/index.js +7 -0
  422. package/dist/plugin/worker/registerLoaders.js +2 -2
  423. package/dist/plugin/worker/rsc/handleRender.d.ts +4 -3
  424. package/dist/plugin/worker/rsc/handleRender.d.ts.map +1 -1
  425. package/dist/plugin/worker/rsc/handleRender.js +54 -32
  426. package/dist/plugin/worker/rsc/handlers.d.ts.map +1 -1
  427. package/dist/plugin/worker/rsc/handlers.js +19 -15
  428. package/dist/plugin/worker/rsc/index.d.ts +1 -1
  429. package/dist/plugin/worker/rsc/index.d.ts.map +1 -1
  430. package/dist/plugin/worker/rsc/index.js +1 -1
  431. package/dist/plugin/worker/rsc/messageHandler.d.ts +1 -1
  432. package/dist/plugin/worker/rsc/messageHandler.d.ts.map +1 -1
  433. package/dist/plugin/worker/rsc/messageHandler.js +16 -4
  434. package/dist/plugin/worker/rsc/rsc-worker.development.js +77 -11
  435. package/dist/plugin/worker/rsc/rsc-worker.production.js +1 -1
  436. package/dist/plugin/worker/rsc/sendRscWorkerMessage.d.ts +3 -0
  437. package/dist/plugin/worker/rsc/sendRscWorkerMessage.d.ts.map +1 -0
  438. package/dist/plugin/worker/rsc/sendRscWorkerMessage.js +11 -0
  439. package/dist/plugin/worker/rsc/state.js +1 -1
  440. package/dist/plugin/worker/rsc/types.d.ts +95 -0
  441. package/dist/plugin/worker/rsc/types.d.ts.map +1 -0
  442. package/dist/plugin/worker/rsc/types.js +1 -0
  443. package/dist/plugin/worker/rsc/userOptions.d.ts +1 -1
  444. package/dist/plugin/worker/rsc/userOptions.d.ts.map +1 -1
  445. package/dist/plugin/worker/rsc/userOptions.js +3 -4
  446. package/dist/plugin/worker/sendMessage.d.ts +3 -4
  447. package/dist/plugin/worker/sendMessage.d.ts.map +1 -1
  448. package/dist/plugin/worker/sendMessage.js +15 -5
  449. package/dist/plugin/worker/types.d.ts +109 -260
  450. package/dist/plugin/worker/types.d.ts.map +1 -1
  451. package/dist/server.js +1 -1
  452. package/dist/tsconfig.tsbuildinfo +1 -1
  453. package/package.json +58 -25
  454. package/plugin/components/{css-collector-elements.tsx → css.tsx} +3 -3
  455. package/plugin/components/html.tsx +4 -4
  456. package/plugin/components/index.ts +3 -3
  457. package/plugin/components/root.tsx +20 -0
  458. package/plugin/config/autoDiscover/resolveAutoDiscover.ts +173 -134
  459. package/plugin/config/autoDiscover/resolveBuildPages.ts +120 -7
  460. package/plugin/config/createModuleID.ts +60 -39
  461. package/plugin/config/defaults.tsx +184 -95
  462. package/plugin/config/extMap.ts +51 -56
  463. package/plugin/config/flightBindings.ts +221 -0
  464. package/plugin/config/getCondition.ts +6 -0
  465. package/plugin/config/index.ts +17 -4
  466. package/plugin/config/interpolatePattern.ts +19 -0
  467. package/plugin/config/parsePattern.ts +81 -0
  468. package/plugin/config/resolveAllowedDirectives.ts +59 -0
  469. package/plugin/config/resolveDirectiveMatcher.ts +57 -0
  470. package/plugin/config/resolveEnv.ts +5 -10
  471. package/plugin/config/resolveOptions.ts +415 -299
  472. package/plugin/config/resolvePatternWithValues.ts +70 -0
  473. package/plugin/config/resolveRegExp.ts +89 -0
  474. package/plugin/config/resolveUrlOption.ts +92 -20
  475. package/plugin/config/resolveUserConfig.ts +417 -351
  476. package/plugin/env/plugin.ts +71 -7
  477. package/plugin/error/directiveError.ts +29 -0
  478. package/plugin/error/enhanceError.ts +41 -0
  479. package/plugin/error/index.ts +3 -0
  480. package/plugin/error/logError.ts +45 -0
  481. package/plugin/error/serializeError.ts +34 -0
  482. package/plugin/error/toError.ts +75 -45
  483. package/plugin/file-preserver/plugin.ts +3 -3
  484. package/plugin/getNodeEnv.ts +24 -0
  485. package/plugin/helpers/cleanObject.ts +2 -1
  486. package/plugin/helpers/collectViteModuleGraphCss.ts +138 -118
  487. package/plugin/helpers/createCssProps.tsx +41 -20
  488. package/plugin/helpers/createEventHandler.ts +1 -1
  489. package/plugin/helpers/createHandler.ts +40 -12
  490. package/plugin/helpers/createRscStream.tsx +97 -35
  491. package/plugin/helpers/formatMetrics.ts +2 -37
  492. package/plugin/helpers/getBundleManifest.ts +10 -1
  493. package/plugin/helpers/getRouteFiles.ts +112 -8
  494. package/plugin/helpers/handleServerAction.ts +10 -6
  495. package/plugin/helpers/hydrateUserOptions.ts +23 -0
  496. package/plugin/helpers/index.ts +4 -0
  497. package/plugin/helpers/inputNormalizer.ts +44 -24
  498. package/plugin/helpers/metrics.ts +4 -64
  499. package/plugin/helpers/moduleResolver.ts +74 -19
  500. package/plugin/helpers/requestInfo.ts +72 -52
  501. package/plugin/helpers/requestToRoute.ts +38 -12
  502. package/plugin/helpers/resolveComponent.ts +173 -0
  503. package/plugin/helpers/resolveComponents.ts +185 -0
  504. package/plugin/helpers/resolvePage.ts +35 -29
  505. package/plugin/helpers/resolvePageAndProps.ts +82 -61
  506. package/plugin/helpers/resolveProps.ts +100 -37
  507. package/plugin/helpers/resolveUserComponents.ts +190 -0
  508. package/plugin/helpers/serializeUserOptions.ts +190 -69
  509. package/plugin/helpers/stashReturnValue.ts +7 -4
  510. package/plugin/helpers/tryManifest.ts +1 -1
  511. package/plugin/loader/createDefaultLoader.ts +119 -119
  512. package/plugin/loader/createTransformer.ts +118 -0
  513. package/plugin/loader/css-loader.ts +206 -0
  514. package/plugin/loader/directives/addLocalExportedNames.ts +78 -0
  515. package/plugin/loader/directives/analyzeDirectives.ts +298 -0
  516. package/plugin/loader/directives/analyzeModule.ts +39 -0
  517. package/plugin/loader/directives/collectExports.ts +181 -0
  518. package/plugin/loader/directives/collectExportsFromModule.ts +25 -0
  519. package/plugin/loader/directives/findDirectiveMatches.ts +58 -0
  520. package/plugin/loader/directives/getExportedName.ts +73 -0
  521. package/plugin/loader/directives/getExports.ts +27 -0
  522. package/plugin/loader/directives/getFunctionBody.ts +32 -0
  523. package/plugin/loader/directives/getFunctionName.ts +70 -0
  524. package/plugin/loader/directives/getQualifiedName.ts +76 -0
  525. package/plugin/loader/directives/index.ts +13 -0
  526. package/plugin/loader/directives/processFunctionNode.ts +97 -0
  527. package/plugin/loader/directives/typeGuards.ts +160 -0
  528. package/plugin/loader/directives/types.ts +174 -0
  529. package/plugin/loader/directives/utils.ts +35 -0
  530. package/plugin/loader/{env-loader.development.ts → env-loader.ts} +8 -22
  531. package/plugin/loader/index.ts +8 -6
  532. package/plugin/loader/parse.ts +42 -12
  533. package/plugin/loader/react-loader.ts +255 -4
  534. package/plugin/loader/removeDirectives.ts +14 -0
  535. package/plugin/loader/removeRanges.ts +21 -0
  536. package/plugin/loader/sourceMap.ts +174 -84
  537. package/plugin/loader/transformClientModule.ts +64 -0
  538. package/plugin/loader/transformModule.ts +54 -0
  539. package/plugin/loader/transformModuleIfNeeded.ts +40 -40
  540. package/plugin/loader/transformServerModule.ts +136 -0
  541. package/plugin/loader/transformWithAcornLoose.ts +27 -0
  542. package/plugin/loader/types.ts +65 -13
  543. package/plugin/metrics/collectStreamMetrics.ts +38 -0
  544. package/plugin/metrics/createRenderMetrics.ts +17 -0
  545. package/plugin/metrics/createStreamMetrics.ts +14 -0
  546. package/plugin/metrics/formatMetrics.ts +7 -3
  547. package/plugin/metrics/index.ts +3 -1
  548. package/plugin/metrics/types.ts +24 -0
  549. package/plugin/plugin.client.ts +39 -15
  550. package/plugin/plugin.server.ts +39 -18
  551. package/plugin/preserver/plugin.ts +42 -42
  552. package/plugin/react-client/cleanupWorkerServerAction.ts +33 -0
  553. package/plugin/react-client/configureWorkerRequestHandler.ts +212 -201
  554. package/plugin/react-client/createMessageHandlers.ts +17 -3
  555. package/plugin/react-client/createWorkerStream.ts +55 -51
  556. package/plugin/react-client/handleWorkerRscStream.ts +141 -61
  557. package/plugin/react-client/handleWorkerServerAction.ts +59 -37
  558. package/plugin/react-client/index.ts +4 -1
  559. package/plugin/react-client/plugin.ts +17 -18
  560. package/plugin/react-client/restartWorker.ts +75 -70
  561. package/plugin/react-server/configureReactServer.ts +200 -142
  562. package/plugin/react-server/handleServerAction.ts +156 -160
  563. package/plugin/react-server/plugin.ts +18 -25
  564. package/plugin/react-static/collectHtmlWorkerContent.ts +109 -102
  565. package/plugin/react-static/collectRscContent.ts +55 -51
  566. package/plugin/react-static/configurePreviewServer.ts +110 -100
  567. package/plugin/react-static/createBuildLoader.ts +157 -48
  568. package/plugin/react-static/plugin.ts +368 -357
  569. package/plugin/react-static/renderPage.ts +43 -24
  570. package/plugin/react-static/renderPages.ts +21 -14
  571. package/plugin/react-static/renderStreams.ts +13 -15
  572. package/plugin/react-static/rscToHtmlStream.ts +4 -6
  573. package/plugin/react-static/types.ts +0 -3
  574. package/plugin/transformer/README.md +82 -8
  575. package/plugin/transformer/plugin.server.ts +55 -82
  576. package/plugin/types/css-tracking.ts +1 -1
  577. package/plugin/types/global.d.ts +2 -2
  578. package/plugin/types/react-server-dom-esm.d.ts +12 -13
  579. package/plugin/types.ts +685 -309
  580. package/plugin/utils/createCallServer.ts +5 -5
  581. package/plugin/utils/createReactFetcher.ts +4 -6
  582. package/plugin/utils/index.ts +2 -1
  583. package/plugin/utils/routeToURL.ts +34 -0
  584. package/plugin/utils/urls.ts +9 -6
  585. package/plugin/worker/createWorker.ts +67 -34
  586. package/plugin/worker/html/README.md +10 -0
  587. package/plugin/worker/html/createHtmlWorkerRenderState.tsx +7 -4
  588. package/plugin/worker/html/html-worker.development.tsx +4 -3
  589. package/plugin/worker/html/index.ts +3 -1
  590. package/plugin/worker/html/messageHandler.tsx +10 -16
  591. package/plugin/worker/html/sendHtmlWorkerMessage.ts +8 -0
  592. package/plugin/worker/html/types.ts +67 -1
  593. package/plugin/worker/index.ts +2 -0
  594. package/plugin/worker/registerLoaders.ts +3 -3
  595. package/plugin/worker/rsc/README.md +203 -1
  596. package/plugin/worker/rsc/handleRender.ts +76 -39
  597. package/plugin/worker/rsc/handlers.ts +30 -22
  598. package/plugin/worker/rsc/index.ts +2 -0
  599. package/plugin/worker/rsc/messageHandler.tsx +17 -10
  600. package/plugin/worker/rsc/rsc-worker.development.ts +104 -17
  601. package/plugin/worker/rsc/sendRscWorkerMessage.ts +7 -0
  602. package/plugin/worker/rsc/state.ts +1 -1
  603. package/plugin/worker/rsc/types.ts +185 -0
  604. package/plugin/worker/rsc/userOptions.ts +2 -3
  605. package/plugin/worker/sendMessage.ts +23 -14
  606. package/plugin/worker/types.ts +131 -386
  607. package/scripts/check-react-version.mjs +3 -3
  608. package/scripts/fix-unused-imports.mjs +77 -0
  609. package/tsconfig.json +1 -1
  610. package/dist/_virtual/dynamic-import-helper.js.map +0 -1
  611. package/dist/client.js.map +0 -1
  612. package/dist/index.js.map +0 -1
  613. package/dist/plugin/components/css-collector-elements.d.ts.map +0 -1
  614. package/dist/plugin/components/css-collector-elements.js +0 -33
  615. package/dist/plugin/components/css-collector-elements.js.map +0 -1
  616. package/dist/plugin/components/css-collector.d.ts +0 -7
  617. package/dist/plugin/components/css-collector.d.ts.map +0 -1
  618. package/dist/plugin/components/css-collector.js +0 -18
  619. package/dist/plugin/components/css-collector.js.map +0 -1
  620. package/dist/plugin/components/html.js.map +0 -1
  621. package/dist/plugin/components.js +0 -9
  622. package/dist/plugin/components.js.map +0 -1
  623. package/dist/plugin/config/autoDiscover/createGlobAutoDiscover.js.map +0 -1
  624. package/dist/plugin/config/autoDiscover/customWorkerFiles.js.map +0 -1
  625. package/dist/plugin/config/autoDiscover/pageAndPropFiles.js.map +0 -1
  626. package/dist/plugin/config/autoDiscover/resolveAutoDiscover.js.map +0 -1
  627. package/dist/plugin/config/autoDiscover/resolveBuildPages.js.map +0 -1
  628. package/dist/plugin/config/defaults.js.map +0 -1
  629. package/dist/plugin/config/extMap.js.map +0 -1
  630. package/dist/plugin/config/getCondition.js.map +0 -1
  631. package/dist/plugin/config/getPaths.js.map +0 -1
  632. package/dist/plugin/config/mimeTypes.js.map +0 -1
  633. package/dist/plugin/config/resolveAutoDiscoverMatcher.d.ts +0 -5
  634. package/dist/plugin/config/resolveAutoDiscoverMatcher.d.ts.map +0 -1
  635. package/dist/plugin/config/resolveAutoDiscoverMatcher.js +0 -25
  636. package/dist/plugin/config/resolveAutoDiscoverMatcher.js.map +0 -1
  637. package/dist/plugin/config/resolveEnv.js.map +0 -1
  638. package/dist/plugin/config/resolveOptions.js.map +0 -1
  639. package/dist/plugin/config/resolvePages.js.map +0 -1
  640. package/dist/plugin/config/resolveUrlOption.js.map +0 -1
  641. package/dist/plugin/config/resolveUserConfig.js.map +0 -1
  642. package/dist/plugin/config.js +0 -17
  643. package/dist/plugin/config.js.map +0 -1
  644. package/dist/plugin/env.js +0 -79
  645. package/dist/plugin/env.js.map +0 -1
  646. package/dist/plugin/error/toError.js.map +0 -1
  647. package/dist/plugin/file-preserver.js +0 -96
  648. package/dist/plugin/file-preserver.js.map +0 -1
  649. package/dist/plugin/helpers/cleanObject.js.map +0 -1
  650. package/dist/plugin/helpers/collectManifestCss.js.map +0 -1
  651. package/dist/plugin/helpers/collectViteModuleGraphCss.js.map +0 -1
  652. package/dist/plugin/helpers/createCssProps.js.map +0 -1
  653. package/dist/plugin/helpers/createEventHandler.js.map +0 -1
  654. package/dist/plugin/helpers/createHandler.js.map +0 -1
  655. package/dist/plugin/helpers/createRscStream.js.map +0 -1
  656. package/dist/plugin/helpers/formatMetrics.js.map +0 -1
  657. package/dist/plugin/helpers/getBundleManifest.js.map +0 -1
  658. package/dist/plugin/helpers/getRouteFiles.js.map +0 -1
  659. package/dist/plugin/helpers/handleServerAction.js.map +0 -1
  660. package/dist/plugin/helpers/inputNormalizer.js.map +0 -1
  661. package/dist/plugin/helpers/metrics.js.map +0 -1
  662. package/dist/plugin/helpers/moduleRefs.js.map +0 -1
  663. package/dist/plugin/helpers/requestInfo.js.map +0 -1
  664. package/dist/plugin/helpers/requestToRoute.js.map +0 -1
  665. package/dist/plugin/helpers/resolvePage.js.map +0 -1
  666. package/dist/plugin/helpers/resolvePageAndProps.js.map +0 -1
  667. package/dist/plugin/helpers/resolveProps.js.map +0 -1
  668. package/dist/plugin/helpers/serializeUserOptions.js.map +0 -1
  669. package/dist/plugin/helpers/sourceMap.d.ts +0 -8
  670. package/dist/plugin/helpers/sourceMap.d.ts.map +0 -1
  671. package/dist/plugin/helpers/sourceMap.js +0 -136
  672. package/dist/plugin/helpers/stashReturnValue.js.map +0 -1
  673. package/dist/plugin/helpers/tryManifest.js.map +0 -1
  674. package/dist/plugin/helpers.js +0 -27
  675. package/dist/plugin/helpers.js.map +0 -1
  676. package/dist/plugin/loader/css-loader.development.d.ts.map +0 -1
  677. package/dist/plugin/loader/css-loader.development.js +0 -76
  678. package/dist/plugin/loader/css-loader.development.js.map +0 -1
  679. package/dist/plugin/loader/css-loader.production.d.ts +0 -31
  680. package/dist/plugin/loader/css-loader.production.d.ts.map +0 -1
  681. package/dist/plugin/loader/css-loader.production.js +0 -45
  682. package/dist/plugin/loader/css-loader.production.js.map +0 -1
  683. package/dist/plugin/loader/env-loader.development.d.ts +0 -13
  684. package/dist/plugin/loader/env-loader.development.d.ts.map +0 -1
  685. package/dist/plugin/loader/env-loader.development.js +0 -68
  686. package/dist/plugin/loader/handleExports.d.ts +0 -40
  687. package/dist/plugin/loader/handleExports.d.ts.map +0 -1
  688. package/dist/plugin/loader/handleExports.js +0 -209
  689. package/dist/plugin/loader/handleExports.js.map +0 -1
  690. package/dist/plugin/loader/parse.js.map +0 -1
  691. package/dist/plugin/loader/react-loader.client.d.ts +0 -2
  692. package/dist/plugin/loader/react-loader.client.d.ts.map +0 -1
  693. package/dist/plugin/loader/react-loader.client.js +0 -2
  694. package/dist/plugin/loader/react-loader.js.map +0 -1
  695. package/dist/plugin/loader/react-loader.server.d.ts +0 -21
  696. package/dist/plugin/loader/react-loader.server.d.ts.map +0 -1
  697. package/dist/plugin/loader/react-loader.server.js +0 -131
  698. package/dist/plugin/loader/transformModuleIfNeeded.js.map +0 -1
  699. package/dist/plugin/loader/transformModuleWithPreservedFunctions.d.ts +0 -48
  700. package/dist/plugin/loader/transformModuleWithPreservedFunctions.d.ts.map +0 -1
  701. package/dist/plugin/loader/transformModuleWithPreservedFunctions.js +0 -428
  702. package/dist/plugin/loader/transformModuleWithPreservedFunctions.js.map +0 -1
  703. package/dist/plugin/metrics/formatMetrics.js.map +0 -1
  704. package/dist/plugin/metrics.js +0 -7
  705. package/dist/plugin/metrics.js.map +0 -1
  706. package/dist/plugin/plugin.client.js.map +0 -1
  707. package/dist/plugin/plugin.server.js.map +0 -1
  708. package/dist/plugin/preserver/plugin.js.map +0 -1
  709. package/dist/plugin/react-client/configureWorkerRequestHandler.js.map +0 -1
  710. package/dist/plugin/react-client/createMessageHandlers.js.map +0 -1
  711. package/dist/plugin/react-client/createWorkerStream.js.map +0 -1
  712. package/dist/plugin/react-client/handleWorkerRscStream.js.map +0 -1
  713. package/dist/plugin/react-client/handleWorkerServerAction.js.map +0 -1
  714. package/dist/plugin/react-client/plugin.js.map +0 -1
  715. package/dist/plugin/react-client/restartWorker.js.map +0 -1
  716. package/dist/plugin/react-server/configureReactServer.js.map +0 -1
  717. package/dist/plugin/react-server/handleServerAction.js.map +0 -1
  718. package/dist/plugin/react-server/plugin.js.map +0 -1
  719. package/dist/plugin/react-static/collectHtmlWorkerContent.js.map +0 -1
  720. package/dist/plugin/react-static/collectRscContent.js.map +0 -1
  721. package/dist/plugin/react-static/configurePreviewServer.js.map +0 -1
  722. package/dist/plugin/react-static/createBuildLoader.js.map +0 -1
  723. package/dist/plugin/react-static/fileWriter.js.map +0 -1
  724. package/dist/plugin/react-static/plugin.js.map +0 -1
  725. package/dist/plugin/react-static/renderPage.js.map +0 -1
  726. package/dist/plugin/react-static/renderPages.js.map +0 -1
  727. package/dist/plugin/react-static/renderStreams.js.map +0 -1
  728. package/dist/plugin/react-static/rscToHtmlStream.js.map +0 -1
  729. package/dist/plugin/react-static/temporaryReferences.js.map +0 -1
  730. package/dist/plugin/root.js.map +0 -1
  731. package/dist/plugin/source-map/createMappingsSerializer.d.ts +0 -2
  732. package/dist/plugin/source-map/createMappingsSerializer.d.ts.map +0 -1
  733. package/dist/plugin/source-map/createMappingsSerializer.js +0 -129
  734. package/dist/plugin/source-map/createMappingsSerializer.js.map +0 -1
  735. package/dist/plugin/source-map/readMappings.d.ts +0 -2
  736. package/dist/plugin/source-map/readMappings.d.ts.map +0 -1
  737. package/dist/plugin/source-map/readMappings.js +0 -200
  738. package/dist/plugin/transformer/plugin.client.d.ts +0 -2
  739. package/dist/plugin/transformer/plugin.client.d.ts.map +0 -1
  740. package/dist/plugin/transformer/plugin.js.map +0 -1
  741. package/dist/plugin/transformer/plugin.server.js.map +0 -1
  742. package/dist/plugin/utils/callServer.js.map +0 -1
  743. package/dist/plugin/utils/createCallServer.js.map +0 -1
  744. package/dist/plugin/utils/createReactFetcher.js.map +0 -1
  745. package/dist/plugin/utils/env.js.map +0 -1
  746. package/dist/plugin/utils/envUrls.node.js.map +0 -1
  747. package/dist/plugin/utils/urls.js.map +0 -1
  748. package/dist/plugin/utils.js +0 -11
  749. package/dist/plugin/utils.js.map +0 -1
  750. package/dist/plugin/vendor/vendor.client.js.map +0 -1
  751. package/dist/plugin/vendor/vendor.js.map +0 -1
  752. package/dist/plugin/vendor/vendor.server.js.map +0 -1
  753. package/dist/plugin/vendor.js +0 -7
  754. package/dist/plugin/vendor.js.map +0 -1
  755. package/dist/plugin/worker/createWorker.js.map +0 -1
  756. package/dist/plugin/worker/html/createHtmlWorkerRenderState.js.map +0 -1
  757. package/dist/plugin/worker/html/html-worker.development.js.map +0 -1
  758. package/dist/plugin/worker/html/html-worker.production.js.map +0 -1
  759. package/dist/plugin/worker/html/index.js.map +0 -1
  760. package/dist/plugin/worker/html/messageHandler.js.map +0 -1
  761. package/dist/plugin/worker/rsc/handleRender.js.map +0 -1
  762. package/dist/plugin/worker/rsc/handlers.js.map +0 -1
  763. package/dist/plugin/worker/rsc/index.js.map +0 -1
  764. package/dist/plugin/worker/rsc/messageHandler.js.map +0 -1
  765. package/dist/plugin/worker/rsc/rsc-worker.development.js.map +0 -1
  766. package/dist/plugin/worker/rsc/rsc-worker.production.js.map +0 -1
  767. package/dist/plugin/worker/rsc/state.js.map +0 -1
  768. package/dist/plugin/worker/rsc/userOptions.js.map +0 -1
  769. package/dist/plugin/worker/sendMessage.js.map +0 -1
  770. package/dist/server.js.map +0 -1
  771. package/plugin/components/css-collector.tsx +0 -20
  772. package/plugin/config/resolveAutoDiscoverMatcher.ts +0 -23
  773. package/plugin/helpers/sourceMap.ts +0 -182
  774. package/plugin/loader/css-loader.development.ts +0 -135
  775. package/plugin/loader/css-loader.production.ts +0 -84
  776. package/plugin/loader/handleExports.ts +0 -309
  777. package/plugin/loader/react-loader.client.ts +0 -1
  778. package/plugin/loader/react-loader.server.ts +0 -185
  779. package/plugin/loader/transformModuleWithPreservedFunctions.ts +0 -593
  780. package/plugin/source-map/createMappingsSerializer.ts +0 -181
  781. package/plugin/source-map/readMappings.ts +0 -194
  782. package/plugin/transformer/plugin.client.ts +0 -0
  783. /package/dist/plugin/{transformer/plugin.client.js → loader/directives/types.js} +0 -0
@@ -1,7 +1,17 @@
1
1
  import type { Logger } from "vite";
2
- import type { RscRenderMessage } from "../worker/types.js";
2
+ import type { RscRenderMessage } from "../worker/rsc/types.js";
3
3
  import type { Worker as NodeWorker } from "node:worker_threads";
4
4
  import type { StreamHandlers } from "../worker/types.js";
5
+ export type CreateWorkerStreamFn = (props: {
6
+ worker: NodeWorker;
7
+ message: Omit<RscRenderMessage, "type" | "id"> & Partial<Pick<RscRenderMessage, "id">> & {
8
+ type?: "RSC_RENDER";
9
+ };
10
+ logger: Logger;
11
+ handlers: Pick<StreamHandlers, "onHmrAccept" | "onHmrUpdate" | "onMetrics"> & Partial<Pick<StreamHandlers, "onError" | "onServerAction" | "onServerActionResponse" | "onCssFile">>;
12
+ verbose?: boolean;
13
+ rscTimeout?: number;
14
+ }) => AsyncGenerator<Uint8Array>;
5
15
  /**
6
16
  * Creates an async generator that yields RSC chunks from the worker.
7
17
  * Handles both module requests and RSC streaming.
@@ -12,13 +22,5 @@ import type { StreamHandlers } from "../worker/types.js";
12
22
  * @param rscWorkerLoaderPort - Optional loader port for module loading
13
23
  * @returns An async generator that yields RSC chunks
14
24
  */
15
- export declare function createWorkerStream({ worker, message, logger, handlers: { onHmrAccept, onHmrUpdate, onMetrics, onError, onData, onEnd, onServerAction, onServerActionResponse, onCssFile, }, verbose, }: {
16
- worker: NodeWorker;
17
- message: Omit<RscRenderMessage, "type" | "id"> & Partial<Pick<RscRenderMessage, "id">> & {
18
- type?: "RSC_RENDER";
19
- };
20
- logger: Logger;
21
- handlers: Pick<StreamHandlers, "onHmrAccept" | "onHmrUpdate" | "onMetrics"> & Partial<Pick<StreamHandlers, "onError" | "onData" | "onEnd" | "onServerAction" | "onServerActionResponse" | "onCssFile">>;
22
- verbose?: boolean;
23
- }): AsyncGenerator<Uint8Array>;
25
+ export declare const createWorkerStream: CreateWorkerStreamFn;
24
26
  //# sourceMappingURL=createWorkerStream.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createWorkerStream.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/createWorkerStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIzD;;;;;;;;;GASG;AACH,wBAAuB,kBAAkB,CAAC,EACxC,MAAM,EACN,OAAO,EACP,MAAM,EACN,QAAQ,EAAE,EACR,WAAW,EACX,WAAW,EACX,SAAS,EACT,OAAO,EACP,MAAM,EACN,KAAK,EACL,cAAc,EACd,sBAAsB,EACtB,SAAS,GACV,EACD,OAAe,GAChB,EAAE;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC,GAC5C,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,YAAY,CAAA;KAAE,CAAC;IAClE,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,aAAa,GAAG,aAAa,GAAG,WAAW,CAAC,GACzE,OAAO,CACL,IAAI,CACF,cAAc,EACZ,SAAS,GACT,QAAQ,GACR,OAAO,GACP,gBAAgB,GAChB,wBAAwB,GACxB,WAAW,CACd,CACF,CAAC;IACJ,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,cAAc,CAAC,UAAU,CAAC,CAsJ7B"}
1
+ {"version":3,"file":"createWorkerStream.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/createWorkerStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE;IACzC,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC,GAC5C,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,GAAG;QACtC,IAAI,CAAC,EAAE,YAAY,CAAC;KACrB,CAAC;IACJ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,aAAa,GAAG,aAAa,GAAG,WAAW,CAAC,GACzE,OAAO,CACL,IAAI,CACF,cAAc,EACZ,SAAS,GACT,gBAAgB,GAChB,wBAAwB,GACxB,WAAW,CACd,CACF,CAAC;IACJ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,KAAK,cAAc,CAAC,UAAU,CAAC,CAAC;AAEjC;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,EAAE,oBAwKhC,CAAA"}
@@ -4,9 +4,8 @@
4
4
  * MIT License
5
5
  */
6
6
  import { createMessageHandler } from './createMessageHandlers.js';
7
- import { logError } from '../error/toError.js';
8
7
 
9
- async function* createWorkerStream({
8
+ const createWorkerStream = async function* _createWorkerStream({
10
9
  worker,
11
10
  message,
12
11
  logger,
@@ -15,50 +14,48 @@ async function* createWorkerStream({
15
14
  onHmrUpdate,
16
15
  onMetrics,
17
16
  onError,
18
- onData,
19
- onEnd,
20
17
  onServerAction,
21
18
  onServerActionResponse,
22
19
  onCssFile
23
20
  },
24
- verbose = false
21
+ verbose = false,
22
+ rscTimeout = 5e3
25
23
  }) {
26
24
  if (!worker) {
27
25
  throw new Error("Worker is not running");
28
26
  }
29
27
  let messageHandler = null;
30
28
  let currentResolve = null;
29
+ let isStreamClosed = false;
31
30
  const handlers = {
32
31
  onError: (id, error, errorInfo) => {
33
- logError(error, logger);
34
- if (errorInfo) {
35
- logError(errorInfo.componentStack, logger);
36
- }
32
+ isStreamClosed = true;
37
33
  if (typeof onError === "function") {
38
34
  onError(id, error, errorInfo);
39
35
  }
40
36
  },
41
37
  onData: (id, chunk) => {
42
- currentResolve?.(chunk);
38
+ if (currentResolve && !isStreamClosed) {
39
+ currentResolve(chunk);
40
+ currentResolve = null;
41
+ }
43
42
  if (verbose) {
44
43
  logger.info(
45
44
  `[react-client] received chunk ${id} ${Buffer.from(chunk).byteLength} bytes`
46
45
  );
47
46
  }
48
- if (typeof onData === "function") {
49
- onData(id, chunk);
50
- }
51
47
  },
52
- onEnd: (id) => {
53
- currentResolve?.(new Uint8Array());
48
+ onEnd: () => {
49
+ if (currentResolve) {
50
+ currentResolve(null);
51
+ currentResolve = null;
52
+ }
53
+ isStreamClosed = true;
54
54
  if (verbose) logger.info(`[react-client] received end`);
55
55
  if (messageHandler) {
56
56
  worker.removeListener("message", messageHandler);
57
57
  messageHandler = null;
58
58
  }
59
- if (typeof onEnd === "function") {
60
- onEnd(id);
61
- }
62
59
  },
63
60
  onMetrics: (id, metrics) => {
64
61
  if (verbose)
@@ -97,11 +94,7 @@ async function* createWorkerStream({
97
94
  if (verbose)
98
95
  logger.info(`[react-client] received server action response ${id}`);
99
96
  if (typeof onServerActionResponse === "function") {
100
- const response = {
101
- type: "server-action-response",
102
- returnValue: error ? { success: false, error } : result
103
- };
104
- onServerActionResponse(id, response);
97
+ onServerActionResponse(id, result, error);
105
98
  }
106
99
  }
107
100
  };
@@ -118,12 +111,14 @@ async function* createWorkerStream({
118
111
  });
119
112
  if (verbose) logger.info(`[react-client] waiting for message handler`);
120
113
  let workerTimeout = null;
121
- yield await new Promise((resolve) => {
114
+ const initialChunk = await new Promise((resolve) => {
122
115
  workerTimeout = setTimeout(() => {
123
116
  if (verbose) logger.info(`worker timeout`);
124
117
  worker.terminate();
125
- }, 5e3);
126
- currentResolve = resolve;
118
+ }, rscTimeout);
119
+ currentResolve = (chunk) => {
120
+ resolve(chunk);
121
+ };
127
122
  messageHandler = createMessageHandler({
128
123
  handlers,
129
124
  logger,
@@ -135,6 +130,9 @@ async function* createWorkerStream({
135
130
  clearTimeout(workerTimeout);
136
131
  }
137
132
  if (verbose) logger.info(`[react-client] received message handler`);
133
+ if (initialChunk !== null) {
134
+ yield initialChunk;
135
+ }
138
136
  while (true) {
139
137
  const chunk = await new Promise((resolve) => {
140
138
  currentResolve = resolve;
@@ -148,7 +146,7 @@ async function* createWorkerStream({
148
146
  });
149
147
  worker.on("message", messageHandler);
150
148
  });
151
- if (chunk.length === 0) {
149
+ if (chunk === null) {
152
150
  break;
153
151
  }
154
152
  yield chunk;
@@ -159,7 +157,7 @@ async function* createWorkerStream({
159
157
  messageHandler = null;
160
158
  }
161
159
  }
162
- }
160
+ };
163
161
 
164
162
  export { createWorkerStream };
165
- //# sourceMappingURL=createWorkerStream.js.map
163
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlV29ya2VyU3RyZWFtLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wbHVnaW4vcmVhY3QtY2xpZW50L2NyZWF0ZVdvcmtlclN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExvZ2dlciB9IGZyb20gXCJ2aXRlXCI7XG5pbXBvcnQgdHlwZSB7XG4gIFJzY1dvcmtlck91dHB1dE1lc3NhZ2UsXG4gIFJzY1JlbmRlck1lc3NhZ2UsXG59IGZyb20gXCIuLi93b3JrZXIvcnNjL3R5cGVzLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFN0cmVhbU1ldHJpY3MgfSBmcm9tIFwiLi4vdHlwZXMuanNcIjtcbmltcG9ydCB0eXBlIHsgV29ya2VyIGFzIE5vZGVXb3JrZXIgfSBmcm9tIFwibm9kZTp3b3JrZXJfdGhyZWFkc1wiO1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1IYW5kbGVycyB9IGZyb20gXCIuLi93b3JrZXIvdHlwZXMuanNcIjtcbmltcG9ydCB7IGNyZWF0ZU1lc3NhZ2VIYW5kbGVyIH0gZnJvbSBcIi4vY3JlYXRlTWVzc2FnZUhhbmRsZXJzLmpzXCI7XG5cbmV4cG9ydCB0eXBlIENyZWF0ZVdvcmtlclN0cmVhbUZuID0gKHByb3BzOiB7XG4gIHdvcmtlcjogTm9kZVdvcmtlcjtcbiAgbWVzc2FnZTogT21pdDxSc2NSZW5kZXJNZXNzYWdlLCBcInR5cGVcIiB8IFwiaWRcIj4gJlxuICAgIFBhcnRpYWw8UGljazxSc2NSZW5kZXJNZXNzYWdlLCBcImlkXCI+PiAmIHtcbiAgICAgIHR5cGU/OiBcIlJTQ19SRU5ERVJcIjtcbiAgICB9O1xuICBsb2dnZXI6IExvZ2dlcjtcbiAgaGFuZGxlcnM6IFBpY2s8U3RyZWFtSGFuZGxlcnMsIFwib25IbXJBY2NlcHRcIiB8IFwib25IbXJVcGRhdGVcIiB8IFwib25NZXRyaWNzXCI+ICYgXG4gICAgUGFydGlhbDxcbiAgICAgIFBpY2s8XG4gICAgICAgIFN0cmVhbUhhbmRsZXJzLFxuICAgICAgICB8IFwib25FcnJvclwiXG4gICAgICAgIHwgXCJvblNlcnZlckFjdGlvblwiXG4gICAgICAgIHwgXCJvblNlcnZlckFjdGlvblJlc3BvbnNlXCJcbiAgICAgICAgfCBcIm9uQ3NzRmlsZVwiXG4gICAgICA+XG4gICAgPjtcbiAgdmVyYm9zZT86IGJvb2xlYW47XG4gIHJzY1RpbWVvdXQ/OiBudW1iZXI7XG59KSA9PiBBc3luY0dlbmVyYXRvcjxVaW50OEFycmF5PjtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFzeW5jIGdlbmVyYXRvciB0aGF0IHlpZWxkcyBSU0MgY2h1bmtzIGZyb20gdGhlIHdvcmtlci5cbiAqIEhhbmRsZXMgYm90aCBtb2R1bGUgcmVxdWVzdHMgYW5kIFJTQyBzdHJlYW1pbmcuXG4gKlxuICogQHBhcmFtIHdvcmtlciAtIFRoZSB3b3JrZXIgdGhyZWFkXG4gKiBAcGFyYW0gc2VydmVyIC0gVGhlIFZpdGUgZGV2IHNlcnZlclxuICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgUlNDIHJlbmRlciBtZXNzYWdlXG4gKiBAcGFyYW0gcnNjV29ya2VyTG9hZGVyUG9ydCAtIE9wdGlvbmFsIGxvYWRlciBwb3J0IGZvciBtb2R1bGUgbG9hZGluZ1xuICogQHJldHVybnMgQW4gYXN5bmMgZ2VuZXJhdG9yIHRoYXQgeWllbGRzIFJTQyBjaHVua3NcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZVdvcmtlclN0cmVhbTogQ3JlYXRlV29ya2VyU3RyZWFtRm4gPSBhc3luYyBmdW5jdGlvbiogX2NyZWF0ZVdvcmtlclN0cmVhbSh7XG4gIHdvcmtlcixcbiAgbWVzc2FnZSxcbiAgbG9nZ2VyLFxuICBoYW5kbGVyczoge1xuICAgIG9uSG1yQWNjZXB0LFxuICAgIG9uSG1yVXBkYXRlLFxuICAgIG9uTWV0cmljcyxcbiAgICBvbkVycm9yLFxuICAgIG9uU2VydmVyQWN0aW9uLFxuICAgIG9uU2VydmVyQWN0aW9uUmVzcG9uc2UsXG4gICAgb25Dc3NGaWxlLFxuICB9LFxuICB2ZXJib3NlID0gZmFsc2UsXG4gIHJzY1RpbWVvdXQgPSA1MDAwLFxufSkge1xuICBpZiAoIXdvcmtlcikge1xuICAgIHRocm93IG5ldyBFcnJvcihcIldvcmtlciBpcyBub3QgcnVubmluZ1wiKTtcbiAgfVxuICBsZXQgbWVzc2FnZUhhbmRsZXI6XG4gICAgfCAoKG1lc3NhZ2U6IFJzY1dvcmtlck91dHB1dE1lc3NhZ2UgfCB1bmRlZmluZWQpID0+IHZvaWQpXG4gICAgfCBudWxsID0gbnVsbDtcbiAgbGV0IGN1cnJlbnRSZXNvbHZlOiAoKGNodW5rOiBVaW50OEFycmF5IHwgbnVsbCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcbiAgbGV0IGlzU3RyZWFtQ2xvc2VkID0gZmFsc2U7XG4gIGNvbnN0IGhhbmRsZXJzOiBTdHJlYW1IYW5kbGVycyA9IHtcbiAgICBvbkVycm9yOiAoaWQsIGVycm9yLCBlcnJvckluZm8pID0+IHtcbiAgICAgIGlzU3RyZWFtQ2xvc2VkID0gdHJ1ZTtcbiAgICAgIGlmICh0eXBlb2Ygb25FcnJvciA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIG9uRXJyb3IoaWQsIGVycm9yLCBlcnJvckluZm8pO1xuICAgICAgfVxuICAgIH0sXG4gICAgb25EYXRhOiAoaWQ6IHN0cmluZywgY2h1bms6IFVpbnQ4QXJyYXkpID0+IHtcbiAgICAgIC8vIEhhbmRsZSBnZW5lcmF0b3IgZmxvdyAtIHJlc29sdmUgdGhlIGN1cnJlbnQgcHJvbWlzZSB3aXRoIHRoZSBjaHVua1xuICAgICAgaWYgKGN1cnJlbnRSZXNvbHZlICYmICFpc1N0cmVhbUNsb3NlZCkge1xuICAgICAgICBjdXJyZW50UmVzb2x2ZShjaHVuayk7XG4gICAgICAgIGN1cnJlbnRSZXNvbHZlID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICAgIGxvZ2dlci5pbmZvKFxuICAgICAgICAgIGBbcmVhY3QtY2xpZW50XSByZWNlaXZlZCBjaHVuayAke2lkfSAke1xuICAgICAgICAgICAgQnVmZmVyLmZyb20oY2h1bmspLmJ5dGVMZW5ndGhcbiAgICAgICAgICB9IGJ5dGVzYFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG4gICAgb25FbmQ6ICgpID0+IHtcbiAgICAgIC8vIEhhbmRsZSBnZW5lcmF0b3IgZmxvdyAtIHJlc29sdmUgd2l0aCBudWxsIHRvIHNpZ25hbCBlbmRcbiAgICAgIGlmIChjdXJyZW50UmVzb2x2ZSkge1xuICAgICAgICBjdXJyZW50UmVzb2x2ZShudWxsKTtcbiAgICAgICAgY3VycmVudFJlc29sdmUgPSBudWxsO1xuICAgICAgfVxuICAgICAgaXNTdHJlYW1DbG9zZWQgPSB0cnVlO1xuICAgICAgaWYgKHZlcmJvc2UpIGxvZ2dlci5pbmZvKGBbcmVhY3QtY2xpZW50XSByZWNlaXZlZCBlbmRgKTtcbiAgICAgIGlmIChtZXNzYWdlSGFuZGxlcikge1xuICAgICAgICB3b3JrZXIucmVtb3ZlTGlzdGVuZXIoXCJtZXNzYWdlXCIsIG1lc3NhZ2VIYW5kbGVyKTtcbiAgICAgICAgbWVzc2FnZUhhbmRsZXIgPSBudWxsO1xuICAgICAgfVxuICAgIH0sXG4gICAgb25NZXRyaWNzOiAoaWQ6IHN0cmluZywgbWV0cmljczogU3RyZWFtTWV0cmljcykgPT4ge1xuICAgICAgaWYgKHZlcmJvc2UpXG4gICAgICAgIGxvZ2dlci5pbmZvKGBbcmVhY3QtY2xpZW50XSByZWNlaXZlZCBjaHVua3MgJHttZXRyaWNzLmNodW5rc31gKTtcbiAgICAgIGlmICh0eXBlb2Ygb25NZXRyaWNzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgb25NZXRyaWNzKGlkLCBtZXRyaWNzKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9uSG1yQWNjZXB0OiAoaWQ6IHN0cmluZywgcm91dGVzPzogc3RyaW5nW10pID0+IHtcbiAgICAgIGlmICh2ZXJib3NlKVxuICAgICAgICBsb2dnZXIuaW5mbyhgW3JlYWN0LWNsaWVudF0gcmVjZWl2ZWQgaG1yIGFjY2VwdCAke3JvdXRlcz8uam9pbihcIiwgXCIpfWApO1xuICAgICAgaWYgKHR5cGVvZiBvbkhtckFjY2VwdCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIG9uSG1yQWNjZXB0KGlkLCByb3V0ZXMpO1xuICAgICAgfVxuICAgIH0sXG4gICAgb25IbXJVcGRhdGU6IChpZDogc3RyaW5nLCByb3V0ZXM/OiBzdHJpbmdbXSkgPT4ge1xuICAgICAgaWYgKHZlcmJvc2UpXG4gICAgICAgIGxvZ2dlci5pbmZvKGBbcmVhY3QtY2xpZW50XSByZWNlaXZlZCBobXIgdXBkYXRlICR7cm91dGVzPy5qb2luKFwiLCBcIil9YCk7XG4gICAgICBpZiAodHlwZW9mIG9uSG1yVXBkYXRlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgb25IbXJVcGRhdGUoaWQsIHJvdXRlcyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBvbkNzc0ZpbGU6IChpZDogc3RyaW5nLCBjb2RlOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICh2ZXJib3NlKSBsb2dnZXIuaW5mbyhgW3JlYWN0LWNsaWVudF0gcmVjZWl2ZWQgY3NzIGZpbGUgJHtpZH1gKTtcbiAgICAgIGlmICh0eXBlb2Ygb25Dc3NGaWxlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgb25Dc3NGaWxlKGlkLCBjb2RlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9uU2VydmVyQWN0aW9uOiAoaWQ6IHN0cmluZywgYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgICBpZiAodmVyYm9zZSkgbG9nZ2VyLmluZm8oYFtyZWFjdC1jbGllbnRdIHJlY2VpdmVkIHNlcnZlciBhY3Rpb24gJHtpZH1gKTtcbiAgICAgIGlmICh0eXBlb2Ygb25TZXJ2ZXJBY3Rpb24gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBvblNlcnZlckFjdGlvbihpZCwgYXJncyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBvblNlcnZlckFjdGlvblJlc3BvbnNlOiAoaWQ6IHN0cmluZywgcmVzdWx0PzogdW5rbm93biwgZXJyb3I/OiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICh2ZXJib3NlKVxuICAgICAgICBsb2dnZXIuaW5mbyhgW3JlYWN0LWNsaWVudF0gcmVjZWl2ZWQgc2VydmVyIGFjdGlvbiByZXNwb25zZSAke2lkfWApO1xuICAgICAgaWYgKHR5cGVvZiBvblNlcnZlckFjdGlvblJlc3BvbnNlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgb25TZXJ2ZXJBY3Rpb25SZXNwb25zZShpZCwgcmVzdWx0LCBlcnJvcik7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcblxuICB0cnkge1xuICAgIC8vIFJlbW92ZSBhbnkgZXhpc3RpbmcgbWVzc2FnZSBoYW5kbGVyIGJlZm9yZSBzdGFydGluZ1xuICAgIGlmIChtZXNzYWdlSGFuZGxlcikge1xuICAgICAgd29ya2VyLnJlbW92ZUxpc3RlbmVyKFwibWVzc2FnZVwiLCBtZXNzYWdlSGFuZGxlcik7XG4gICAgICBtZXNzYWdlSGFuZGxlciA9IG51bGw7XG4gICAgfVxuICAgIGlmICh2ZXJib3NlKSBsb2dnZXIuaW5mbyhgW3JlYWN0LWNsaWVudF0gc2VuZGluZyBtZXNzYWdlIFJTQ19SRU5ERVJgKTtcbiAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe1xuICAgICAgLi4ubWVzc2FnZSxcbiAgICAgIHR5cGU6IFwiUlNDX1JFTkRFUlwiLFxuICAgICAgaWQ6IG1lc3NhZ2U/LmlkID8/IG1lc3NhZ2Uucm91dGUsXG4gICAgfSk7XG5cbiAgICBpZiAodmVyYm9zZSkgbG9nZ2VyLmluZm8oYFtyZWFjdC1jbGllbnRdIHdhaXRpbmcgZm9yIG1lc3NhZ2UgaGFuZGxlcmApO1xuICAgIGxldCB3b3JrZXJUaW1lb3V0OiBOb2RlSlMuVGltZW91dCB8IG51bGwgPSBudWxsO1xuICAgIGNvbnN0IGluaXRpYWxDaHVuayA9IGF3YWl0IG5ldyBQcm9taXNlPFVpbnQ4QXJyYXkgfCBudWxsPigocmVzb2x2ZSkgPT4ge1xuICAgICAgd29ya2VyVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodmVyYm9zZSkgbG9nZ2VyLmluZm8oYHdvcmtlciB0aW1lb3V0YCk7XG4gICAgICAgIHdvcmtlci50ZXJtaW5hdGUoKTtcbiAgICAgIH0sIHJzY1RpbWVvdXQpO1xuICAgICAgY3VycmVudFJlc29sdmUgPSAoY2h1bms6IFVpbnQ4QXJyYXkgfCBudWxsKSA9PiB7XG4gICAgICAgIHJlc29sdmUoY2h1bmspO1xuICAgICAgfTtcbiAgICAgIG1lc3NhZ2VIYW5kbGVyID0gY3JlYXRlTWVzc2FnZUhhbmRsZXIoe1xuICAgICAgICBoYW5kbGVycyxcbiAgICAgICAgbG9nZ2VyLFxuICAgICAgICB2ZXJib3NlLFxuICAgICAgfSk7XG4gICAgICB3b3JrZXIub24oXCJtZXNzYWdlXCIsIG1lc3NhZ2VIYW5kbGVyKTtcbiAgICB9KTtcbiAgICBpZiAod29ya2VyVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHdvcmtlclRpbWVvdXQpO1xuICAgIH1cbiAgICBpZiAodmVyYm9zZSkgbG9nZ2VyLmluZm8oYFtyZWFjdC1jbGllbnRdIHJlY2VpdmVkIG1lc3NhZ2UgaGFuZGxlcmApO1xuICAgIFxuICAgIC8vIE9ubHkgeWllbGQgdGhlIGluaXRpYWwgY2h1bmsgaWYgaXQncyBub3QgbnVsbFxuICAgIGlmIChpbml0aWFsQ2h1bmsgIT09IG51bGwpIHtcbiAgICAgIHlpZWxkIGluaXRpYWxDaHVuaztcbiAgICB9XG4gICAgXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGNvbnN0IGNodW5rID0gYXdhaXQgbmV3IFByb21pc2U8VWludDhBcnJheSB8IG51bGw+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgIGN1cnJlbnRSZXNvbHZlID0gcmVzb2x2ZTtcbiAgICAgICAgLy8gQ3JlYXRlIG5ldyBtZXNzYWdlIGhhbmRsZXIgZm9yIGVhY2ggaXRlcmF0aW9uXG4gICAgICAgIGlmIChtZXNzYWdlSGFuZGxlcikge1xuICAgICAgICAgIHdvcmtlci5yZW1vdmVMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgbWVzc2FnZUhhbmRsZXIpO1xuICAgICAgICB9XG4gICAgICAgIG1lc3NhZ2VIYW5kbGVyID0gY3JlYXRlTWVzc2FnZUhhbmRsZXIoe1xuICAgICAgICAgIGhhbmRsZXJzLFxuICAgICAgICAgIGxvZ2dlcixcbiAgICAgICAgICB2ZXJib3NlLFxuICAgICAgICB9KTtcbiAgICAgICAgd29ya2VyLm9uKFwibWVzc2FnZVwiLCBtZXNzYWdlSGFuZGxlcik7XG4gICAgICB9KTtcblxuICAgICAgaWYgKGNodW5rID09PSBudWxsKSB7XG4gICAgICAgIGJyZWFrOyAvLyBFbmQgb2Ygc3RyZWFtXG4gICAgICB9XG5cbiAgICAgIHlpZWxkIGNodW5rO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBDbGVhbiB1cCBtZXNzYWdlIGhhbmRsZXIgaW4gZmluYWxseSBibG9ja1xuICAgIGlmIChtZXNzYWdlSGFuZGxlcikge1xuICAgICAgd29ya2VyLnJlbW92ZUxpc3RlbmVyKFwibWVzc2FnZVwiLCBtZXNzYWdlSGFuZGxlcik7XG4gICAgICBtZXNzYWdlSGFuZGxlciA9IG51bGw7XG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQXlDYSxNQUFBLGtCQUFBLEdBQTJDLGdCQUFnQixtQkFBb0IsQ0FBQTtBQUFBLEVBQzFGLE1BQUE7QUFBQSxFQUNBLE9BQUE7QUFBQSxFQUNBLE1BQUE7QUFBQSxFQUNBLFFBQVUsRUFBQTtBQUFBLElBQ1IsV0FBQTtBQUFBLElBQ0EsV0FBQTtBQUFBLElBQ0EsU0FBQTtBQUFBLElBQ0EsT0FBQTtBQUFBLElBQ0EsY0FBQTtBQUFBLElBQ0Esc0JBQUE7QUFBQSxJQUNBO0FBQUEsR0FDRjtBQUFBLEVBQ0EsT0FBVSxHQUFBLEtBQUE7QUFBQSxFQUNWLFVBQWEsR0FBQTtBQUNmLENBQUcsRUFBQTtBQUNELEVBQUEsSUFBSSxDQUFDLE1BQVEsRUFBQTtBQUNYLElBQU0sTUFBQSxJQUFJLE1BQU0sdUJBQXVCLENBQUE7QUFBQTtBQUV6QyxFQUFBLElBQUksY0FFTyxHQUFBLElBQUE7QUFDWCxF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
@@ -1,6 +1,17 @@
1
1
  import type { Logger } from "vite";
2
- import type { RscRenderMessage, StreamHandlers } from "../worker/types.js";
2
+ import type { RscRenderMessage } from "../worker/rsc/types.js";
3
+ import type { StreamHandlers } from "../worker/types.js";
3
4
  import type { Worker as NodeWorker } from "node:worker_threads";
5
+ export type HandleWorkerRscStreamFn = (props: {
6
+ worker: NodeWorker;
7
+ message: Omit<RscRenderMessage, "type" | "id"> & Partial<Pick<RscRenderMessage, "id">> & {
8
+ type?: "RSC_RENDER";
9
+ };
10
+ logger: Logger;
11
+ handlers: Pick<StreamHandlers, "onMetrics" | "onHmrAccept" | "onHmrUpdate"> & Partial<Pick<StreamHandlers, "onError" | "onData" | "onEnd" | "onServerAction" | "onServerActionResponse" | "onCssFile">>;
12
+ verbose?: boolean;
13
+ rscTimeout?: number;
14
+ }) => ReadableStream<Uint8Array>;
4
15
  /**
5
16
  * Handles the RSC stream from the worker.
6
17
  * Creates a ReadableStream that pipes RSC chunks to the response.
@@ -9,11 +20,5 @@ import type { Worker as NodeWorker } from "node:worker_threads";
9
20
  * @param message - The RSC render message
10
21
  * @returns A ReadableStream that yields RSC chunks
11
22
  */
12
- export declare function handleWorkerRscStream({ worker, message, logger, handlers, verbose }: {
13
- worker: NodeWorker;
14
- message: Omit<RscRenderMessage, "type" | "id">;
15
- logger: Logger;
16
- handlers: Pick<StreamHandlers, "onMetrics" | "onHmrAccept" | "onHmrUpdate"> & Partial<Pick<StreamHandlers, "onError" | "onData" | "onEnd" | "onServerAction" | "onServerActionResponse">>;
17
- verbose?: boolean;
18
- }): ReadableStream<Uint8Array>;
23
+ export declare const handleWorkerRscStream: HandleWorkerRscStreamFn;
19
24
  //# sourceMappingURL=handleWorkerRscStream.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handleWorkerRscStream.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/handleWorkerRscStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAChE;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,OAAO,EACP,MAAM,EACN,QAAQ,EACR,OAAe,EAChB,EAAE;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,aAAa,GAAG,aAAa,CAAC,GACzE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,gBAAgB,GAAG,wBAAwB,CAAC,CAAC,CAAC;IAC9G,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,GAAG,cAAc,CAAC,UAAU,CAAC,CAkD7B"}
1
+ {"version":3,"file":"handleWorkerRscStream.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/handleWorkerRscStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGhE,MAAM,MAAM,uBAAuB,GAAG,CAAC,KAAK,EAAE;IAC5C,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC,GAC5C,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,GAAG;QACtC,IAAI,CAAC,EAAE,YAAY,CAAC;KACrB,CAAC;IACJ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,aAAa,GAAG,aAAa,CAAC,GACzE,OAAO,CACL,IAAI,CACF,cAAc,EACZ,SAAS,GACT,QAAQ,GACR,OAAO,GACP,gBAAgB,GAChB,wBAAwB,GACxB,WAAW,CACd,CACF,CAAC;IACJ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,KAAK,cAAc,CAAC,UAAU,CAAC,CAAC;AAEjC;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,EAAE,uBAqHjC,CAAC"}
@@ -4,17 +4,44 @@
4
4
  * MIT License
5
5
  */
6
6
  import { createWorkerStream } from './createWorkerStream.js';
7
+ import { toError } from '../error/toError.js';
7
8
 
8
- function handleWorkerRscStream({
9
+ const handleWorkerRscStream = function _handleWorkerRscStream({
9
10
  worker,
10
11
  message,
11
12
  logger,
12
13
  handlers,
13
- verbose = false
14
+ verbose = false,
15
+ rscTimeout
14
16
  }) {
15
17
  let isFlowing = false;
18
+ let isClosed = false;
19
+ let hasError = false;
16
20
  return new ReadableStream({
17
21
  async start(controller) {
22
+ const handleError = (error, errorInfo) => {
23
+ if (hasError) return;
24
+ hasError = true;
25
+ const errorToThrow = toError(error);
26
+ const messageToLog = typeof errorToThrow.message === "string" ? errorToThrow.message : void 0;
27
+ const stackToLog = errorToThrow.stack ? errorToThrow.stack : void 0;
28
+ if (messageToLog && !stackToLog) {
29
+ logger.error(`[rsc-worker-error] ${messageToLog}`, { error: errorToThrow });
30
+ }
31
+ if (stackToLog) {
32
+ logger.error(`[rsc-worker-stack] ${stackToLog}`, { error: errorToThrow });
33
+ }
34
+ if (errorInfo != null && typeof errorInfo === "object" && "reason" in errorInfo && typeof errorInfo["reason"] === "string") {
35
+ logger.error(errorInfo["reason"]);
36
+ }
37
+ if (!isClosed) {
38
+ isClosed = true;
39
+ try {
40
+ controller.close();
41
+ } catch {
42
+ }
43
+ }
44
+ };
18
45
  try {
19
46
  if (verbose) logger.info("[react-client] Starting stream");
20
47
  for await (const chunk of createWorkerStream({
@@ -22,43 +49,51 @@ function handleWorkerRscStream({
22
49
  message,
23
50
  logger,
24
51
  handlers: {
25
- ...handlers,
26
- onServerAction: (id, args) => {
27
- if (verbose) logger.info(`[react-client] Forwarding server action ${id} to worker`);
28
- handlers.onServerAction?.(id, args);
29
- },
30
- onServerActionResponse: (id, result, error) => {
31
- if (verbose) logger.info(`[react-client] Forwarding server action response ${id} from worker`);
32
- if (typeof handlers.onServerActionResponse === "function") {
33
- const response = {
34
- type: "server-action-response",
35
- returnValue: error ? { success: false, error } : result
36
- // Direct result, no success/data wrapper
37
- };
38
- handlers.onServerActionResponse(id, response);
52
+ // Only keep non-data handlers for side effects
53
+ onMetrics: handlers.onMetrics,
54
+ onHmrAccept: handlers.onHmrAccept,
55
+ onHmrUpdate: handlers.onHmrUpdate,
56
+ onServerAction: handlers.onServerAction,
57
+ onServerActionResponse: handlers.onServerActionResponse,
58
+ onCssFile: handlers.onCssFile,
59
+ onError: (id, error, errorInfo) => {
60
+ handleError(error, errorInfo);
61
+ if (handlers.onError) {
62
+ handlers.onError(id, error, errorInfo);
39
63
  }
40
64
  }
41
65
  },
42
- verbose
66
+ verbose,
67
+ rscTimeout
43
68
  })) {
44
69
  if (!isFlowing) {
45
70
  isFlowing = true;
46
71
  if (verbose) logger.info("[react-client] Stream is flowing");
47
72
  }
48
- controller.enqueue(chunk);
73
+ if (!isClosed && !hasError) {
74
+ controller.enqueue(chunk);
75
+ }
76
+ if (handlers.onData) {
77
+ handlers.onData(message?.id ?? message.route, chunk);
78
+ }
49
79
  }
50
- } catch (error) {
51
- controller.error(error);
52
- } finally {
53
80
  if (isFlowing) {
54
81
  isFlowing = false;
55
82
  if (verbose) logger.info("[react-client] Stream closing");
56
83
  }
57
- controller.close();
84
+ if (!isClosed && !hasError) {
85
+ isClosed = true;
86
+ controller.close();
87
+ }
88
+ if (handlers.onEnd) {
89
+ handlers.onEnd(message?.id ?? message.route);
90
+ }
91
+ } catch (error) {
92
+ handleError(error);
58
93
  }
59
94
  }
60
95
  });
61
- }
96
+ };
62
97
 
63
98
  export { handleWorkerRscStream };
64
- //# sourceMappingURL=handleWorkerRscStream.js.map
99
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlV29ya2VyUnNjU3RyZWFtLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wbHVnaW4vcmVhY3QtY2xpZW50L2hhbmRsZVdvcmtlclJzY1N0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExvZ2dlciB9IGZyb20gXCJ2aXRlXCI7XG5pbXBvcnQgdHlwZSB7IFJzY1JlbmRlck1lc3NhZ2UgfSBmcm9tIFwiLi4vd29ya2VyL3JzYy90eXBlcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1IYW5kbGVycyB9IGZyb20gXCIuLi93b3JrZXIvdHlwZXMuanNcIjtcbmltcG9ydCB7IGNyZWF0ZVdvcmtlclN0cmVhbSB9IGZyb20gXCIuL2NyZWF0ZVdvcmtlclN0cmVhbS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBXb3JrZXIgYXMgTm9kZVdvcmtlciB9IGZyb20gXCJub2RlOndvcmtlcl90aHJlYWRzXCI7XG5pbXBvcnQgeyB0b0Vycm9yIH0gZnJvbSBcIi4uL2Vycm9yL3RvRXJyb3IuanNcIjtcblxuZXhwb3J0IHR5cGUgSGFuZGxlV29ya2VyUnNjU3RyZWFtRm4gPSAocHJvcHM6IHtcbiAgd29ya2VyOiBOb2RlV29ya2VyO1xuICBtZXNzYWdlOiBPbWl0PFJzY1JlbmRlck1lc3NhZ2UsIFwidHlwZVwiIHwgXCJpZFwiPiAmXG4gICAgUGFydGlhbDxQaWNrPFJzY1JlbmRlck1lc3NhZ2UsIFwiaWRcIj4+ICYge1xuICAgICAgdHlwZT86IFwiUlNDX1JFTkRFUlwiO1xuICAgIH07XG4gIGxvZ2dlcjogTG9nZ2VyO1xuICBoYW5kbGVyczogUGljazxTdHJlYW1IYW5kbGVycywgXCJvbk1ldHJpY3NcIiB8IFwib25IbXJBY2NlcHRcIiB8IFwib25IbXJVcGRhdGVcIj4gJlxuICAgIFBhcnRpYWw8XG4gICAgICBQaWNrPFxuICAgICAgICBTdHJlYW1IYW5kbGVycyxcbiAgICAgICAgfCBcIm9uRXJyb3JcIlxuICAgICAgICB8IFwib25EYXRhXCJcbiAgICAgICAgfCBcIm9uRW5kXCJcbiAgICAgICAgfCBcIm9uU2VydmVyQWN0aW9uXCJcbiAgICAgICAgfCBcIm9uU2VydmVyQWN0aW9uUmVzcG9uc2VcIlxuICAgICAgICB8IFwib25Dc3NGaWxlXCJcbiAgICAgID5cbiAgICA+O1xuICB2ZXJib3NlPzogYm9vbGVhbjtcbiAgcnNjVGltZW91dD86IG51bWJlcjtcbn0pID0+IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+O1xuXG4vKipcbiAqIEhhbmRsZXMgdGhlIFJTQyBzdHJlYW0gZnJvbSB0aGUgd29ya2VyLlxuICogQ3JlYXRlcyBhIFJlYWRhYmxlU3RyZWFtIHRoYXQgcGlwZXMgUlNDIGNodW5rcyB0byB0aGUgcmVzcG9uc2UuXG4gKlxuICogQHBhcmFtIHdvcmtlciAtIFRoZSB3b3JrZXIgdGhyZWFkXG4gKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBSU0MgcmVuZGVyIG1lc3NhZ2VcbiAqIEByZXR1cm5zIEEgUmVhZGFibGVTdHJlYW0gdGhhdCB5aWVsZHMgUlNDIGNodW5rc1xuICovXG5leHBvcnQgY29uc3QgaGFuZGxlV29ya2VyUnNjU3RyZWFtOiBIYW5kbGVXb3JrZXJSc2NTdHJlYW1GbiA9XG4gIGZ1bmN0aW9uIF9oYW5kbGVXb3JrZXJSc2NTdHJlYW0oe1xuICAgIHdvcmtlcixcbiAgICBtZXNzYWdlLFxuICAgIGxvZ2dlcixcbiAgICBoYW5kbGVycyxcbiAgICB2ZXJib3NlID0gZmFsc2UsXG4gICAgcnNjVGltZW91dCxcbiAgfSkge1xuICAgIC8vIENyZWF0ZSBhIFJlYWRhYmxlU3RyZWFtIGZyb20gdGhlIGFzeW5jIGdlbmVyYXRvclxuICAgIGxldCBpc0Zsb3dpbmcgPSBmYWxzZTtcbiAgICBsZXQgaXNDbG9zZWQgPSBmYWxzZTtcbiAgICBsZXQgaGFzRXJyb3IgPSBmYWxzZTtcblxuICAgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW08VWludDhBcnJheT4oe1xuICAgICAgYXN5bmMgc3RhcnQoY29udHJvbGxlcikge1xuICAgICAgICBjb25zdCBoYW5kbGVFcnJvciA9IChcbiAgICAgICAgICBlcnJvcjogdW5rbm93bixcbiAgICAgICAgICBlcnJvckluZm8/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgICApID0+IHtcbiAgICAgICAgICBpZiAoaGFzRXJyb3IpIHJldHVybjsgLy8gUHJldmVudCBkb3VibGUgZXJyb3IgaGFuZGxpbmdcbiAgICAgICAgICBoYXNFcnJvciA9IHRydWU7XG4gICAgICAgICAgY29uc3QgZXJyb3JUb1Rocm93ID0gdG9FcnJvcihlcnJvcik7XG5cbiAgICAgICAgICAvLyBFbnN1cmUgd2UgbG9nIHRoZSBlcnJvciBtZXNzYWdlIHByb3Blcmx5LCBldmVuIGlmIGl0J3Mgc29tZWhvdyBhbiBvYmplY3RcbiAgICAgICAgICBjb25zdCBtZXNzYWdlVG9Mb2cgPVxuICAgICAgICAgICAgdHlwZW9mIGVycm9yVG9UaHJvdy5tZXNzYWdlID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgICAgID8gZXJyb3JUb1Rocm93Lm1lc3NhZ2VcbiAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICBjb25zdCBzdGFja1RvTG9nID0gZXJyb3JUb1Rocm93LnN0YWNrXG4gICAgICAgICAgICA/IGVycm9yVG9UaHJvdy5zdGFja1xuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKG1lc3NhZ2VUb0xvZyAmJiAhc3RhY2tUb0xvZykge1xuICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGBbcnNjLXdvcmtlci1lcnJvcl0gJHttZXNzYWdlVG9Mb2d9YCwge2Vycm9yOiBlcnJvclRvVGhyb3d9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHN0YWNrVG9Mb2cpIHtcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcihgW3JzYy13b3JrZXItc3RhY2tdICR7c3RhY2tUb0xvZ31gLCB7ZXJyb3I6IGVycm9yVG9UaHJvd30pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZXJyb3JJbmZvICE9IG51bGwgJiYgdHlwZW9mIGVycm9ySW5mbyA9PT0gXCJvYmplY3RcIiAmJiAncmVhc29uJyBpbiBlcnJvckluZm8gJiYgdHlwZW9mIGVycm9ySW5mb1tcInJlYXNvblwiXSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGVycm9ySW5mb1tcInJlYXNvblwiXSk7ICBcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFpc0Nsb3NlZCkge1xuICAgICAgICAgICAgaXNDbG9zZWQgPSB0cnVlO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29udHJvbGxlci5jbG9zZSgpO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgIC8vIElnbm9yZSBlcnJvcnMgZnJvbSB0cnlpbmcgdG8gY2xvc2UgYW4gYWxyZWFkeSBjbG9zZWQgY29udHJvbGxlclxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmICh2ZXJib3NlKSBsb2dnZXIuaW5mbyhcIltyZWFjdC1jbGllbnRdIFN0YXJ0aW5nIHN0cmVhbVwiKTtcblxuICAgICAgICAgIC8vIFB1cmUgZ2VuZXJhdG9yIGFwcHJvYWNoIC0gcHJvY2VzcyBjaHVua3MgZGlyZWN0bHlcbiAgICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIGNyZWF0ZVdvcmtlclN0cmVhbSh7XG4gICAgICAgICAgICB3b3JrZXIsXG4gICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgbG9nZ2VyLFxuICAgICAgICAgICAgaGFuZGxlcnM6IHtcbiAgICAgICAgICAgICAgLy8gT25seSBrZWVwIG5vbi1kYXRhIGhhbmRsZXJzIGZvciBzaWRlIGVmZmVjdHNcbiAgICAgICAgICAgICAgb25NZXRyaWNzOiBoYW5kbGVycy5vbk1ldHJpY3MsXG4gICAgICAgICAgICAgIG9uSG1yQWNjZXB0OiBoYW5kbGVycy5vbkhtckFjY2VwdCxcbiAgICAgICAgICAgICAgb25IbXJVcGRhdGU6IGhhbmRsZXJzLm9uSG1yVXBkYXRlLFxuICAgICAgICAgICAgICBvblNlcnZlckFjdGlvbjogaGFuZGxlcnMub25TZXJ2ZXJBY3Rpb24sXG4gICAgICAgICAgICAgIG9uU2VydmVyQWN0aW9uUmVzcG9uc2U6IGhhbmRsZXJzLm9uU2VydmVyQWN0aW9uUmVzcG9uc2UsXG4gICAgICAgICAgICAgIG9uQ3NzRmlsZTogaGFuZGxlcnMub25Dc3NGaWxlLFxuICAgICAgICAgICAgICBvbkVycm9yOiAoXG4gICAgICAgICAgICAgICAgaWQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICBlcnJvcjogdW5rbm93bixcbiAgICAgICAgICAgICAgICBlcnJvckluZm8/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgZXJyb3JJbmZvKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFuZGxlcnMub25FcnJvcikge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlcnMub25FcnJvcihpZCwgZXJyb3IsIGVycm9ySW5mbyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZlcmJvc2UsXG4gICAgICAgICAgICByc2NUaW1lb3V0LFxuICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICAvLyBQcm9jZXNzIGNodW5rcyBkaXJlY3RseSBmcm9tIGdlbmVyYXRvclxuICAgICAgICAgICAgaWYgKCFpc0Zsb3dpbmcpIHtcbiAgICAgICAgICAgICAgaXNGbG93aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIGxvZ2dlci5pbmZvKFwiW3JlYWN0LWNsaWVudF0gU3RyZWFtIGlzIGZsb3dpbmdcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaXNDbG9zZWQgJiYgIWhhc0Vycm9yKSB7XG4gICAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIENhbGwgb25EYXRhIGhhbmRsZXIgaWYgcHJvdmlkZWRcbiAgICAgICAgICAgIGlmIChoYW5kbGVycy5vbkRhdGEpIHtcbiAgICAgICAgICAgICAgaGFuZGxlcnMub25EYXRhKG1lc3NhZ2U/LmlkID8/IG1lc3NhZ2Uucm91dGUsIGNodW5rKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBTdHJlYW0gZW5kZWQgbmF0dXJhbGx5XG4gICAgICAgICAgaWYgKGlzRmxvd2luZykge1xuICAgICAgICAgICAgaXNGbG93aW5nID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAodmVyYm9zZSkgbG9nZ2VyLmluZm8oXCJbcmVhY3QtY2xpZW50XSBTdHJlYW0gY2xvc2luZ1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFpc0Nsb3NlZCAmJiAhaGFzRXJyb3IpIHtcbiAgICAgICAgICAgIGlzQ2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBDYWxsIG9uRW5kIGhhbmRsZXIgaWYgcHJvdmlkZWRcbiAgICAgICAgICBpZiAoaGFuZGxlcnMub25FbmQpIHtcbiAgICAgICAgICAgIGhhbmRsZXJzLm9uRW5kKG1lc3NhZ2U/LmlkID8/IG1lc3NhZ2Uucm91dGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBoYW5kbGVFcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG4gIH07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFzQ2EsTUFBQSxxQkFBQSxHQUNYLFNBQVMsc0JBQXVCLENBQUE7QUFBQSxFQUM5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
@@ -1,5 +1,6 @@
1
1
  import type { ViteDevServer } from "vite";
2
2
  import type { Worker } from "node:worker_threads";
3
+ import type { IncomingMessage, ServerResponse } from "node:http";
3
4
  /**
4
5
  * Handles server action requests in the worker scenario.
5
6
  *
@@ -8,5 +9,5 @@ import type { Worker } from "node:worker_threads";
8
9
  * @param worker - The worker thread
9
10
  * @param logger - The Vite logger
10
11
  */
11
- export declare function handleWorkerServerAction(req: any, res: any, worker: Worker, logger: ViteDevServer["config"]["logger"]): Promise<void>;
12
+ export declare function handleWorkerServerAction(req: IncomingMessage, res: ServerResponse, worker: Worker, logger: ViteDevServer["config"]["logger"]): Promise<void>;
12
13
  //# sourceMappingURL=handleWorkerServerAction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handleWorkerServerAction.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/handleWorkerServerAction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAUlD;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,iBAkD1C"}
1
+ {"version":3,"file":"handleWorkerServerAction.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/handleWorkerServerAction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAUlD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGjE;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,iBAqE1C"}
@@ -3,45 +3,60 @@
3
3
  * Copyright (c) Nico Brinkkemper
4
4
  * MIT License
5
5
  */
6
- import { logError } from '../error/toError.js';
7
- import { parseServerActionRequest, setupServerActionHeaders, createServerActionStream, handleServerActionError } from '../helpers/handleServerAction.js';
6
+ import { createServerActionStream, parseServerActionRequest, setupServerActionHeaders, handleServerActionError } from '../helpers/handleServerAction.js';
7
+ import { cleanupWorkerServerAction } from './cleanupWorkerServerAction.js';
8
8
 
9
9
  async function handleWorkerServerAction(req, res, worker, logger) {
10
+ let messageHandler = null;
11
+ const passThrough = createServerActionStream(res);
10
12
  try {
11
13
  const chunks = [];
12
14
  for await (const chunk of req) {
13
15
  chunks.push(chunk);
14
16
  }
15
17
  const body = Buffer.concat(chunks).toString();
16
- const { id, args } = parseServerActionRequest(body, req.url);
17
- setupServerActionHeaders(res);
18
- worker.postMessage({
19
- type: "SERVER_ACTION",
20
- id,
21
- args
22
- });
23
- const passThrough = createServerActionStream(res);
24
- const messageHandler = (message) => {
25
- if (message.type === "RSC_CHUNK") {
26
- passThrough.write(message.chunk);
27
- } else if (message.type === "RSC_END") {
28
- passThrough.end();
29
- worker.removeListener("message", messageHandler);
30
- } else if (message.type === "ERROR") {
31
- passThrough.end();
32
- worker.removeListener("message", messageHandler);
33
- logError(message.error, logger);
18
+ try {
19
+ const { id, args } = parseServerActionRequest(body, req.url);
20
+ setupServerActionHeaders(res);
21
+ worker.postMessage({
22
+ type: "SERVER_ACTION",
23
+ id,
24
+ args
25
+ });
26
+ messageHandler = (message) => {
27
+ if (message.type === "RSC_CHUNK") {
28
+ passThrough.write(message.chunk);
29
+ } else if (message.type === "RSC_END") {
30
+ if (messageHandler) {
31
+ cleanupWorkerServerAction(passThrough, worker, messageHandler, res);
32
+ }
33
+ } else if (message.type === "ERROR") {
34
+ if (messageHandler) {
35
+ cleanupWorkerServerAction(passThrough, worker, messageHandler, res, message.error, logger);
36
+ }
37
+ }
38
+ };
39
+ worker.on("message", messageHandler);
40
+ passThrough.on("error", (error) => {
41
+ if (messageHandler) {
42
+ cleanupWorkerServerAction(passThrough, worker, messageHandler, res, error, logger);
43
+ }
44
+ });
45
+ } catch (parseError) {
46
+ if (passThrough && messageHandler) {
47
+ cleanupWorkerServerAction(passThrough, worker, messageHandler, res, parseError, logger);
48
+ } else {
49
+ handleServerActionError(parseError, res, logger);
34
50
  }
35
- };
36
- worker.on("message", messageHandler);
37
- passThrough.on("error", (error) => {
38
- logError(error, logger);
39
- res.end();
40
- });
51
+ }
41
52
  } catch (error) {
42
- handleServerActionError(error, res, logger);
53
+ if (passThrough && messageHandler) {
54
+ cleanupWorkerServerAction(passThrough, worker, messageHandler, res, error, logger);
55
+ } else {
56
+ handleServerActionError(error, res, logger);
57
+ }
43
58
  }
44
59
  }
45
60
 
46
61
  export { handleWorkerServerAction };
47
- //# sourceMappingURL=handleWorkerServerAction.js.map
62
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlV29ya2VyU2VydmVyQWN0aW9uLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wbHVnaW4vcmVhY3QtY2xpZW50L2hhbmRsZVdvcmtlclNlcnZlckFjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFZpdGVEZXZTZXJ2ZXIgfSBmcm9tIFwidml0ZVwiO1xuaW1wb3J0IHR5cGUgeyBXb3JrZXIgfSBmcm9tIFwibm9kZTp3b3JrZXJfdGhyZWFkc1wiO1xuaW1wb3J0IHR5cGUgeyBSc2NDaHVua091dHB1dE1lc3NhZ2UsIFJzY1dvcmtlcklucHV0TWVzc2FnZSwgUnNjV29ya2VyT3V0cHV0TWVzc2FnZSB9IGZyb20gXCIuLi93b3JrZXIvcnNjL3R5cGVzLmpzXCI7XG5pbXBvcnQge1xuICBwYXJzZVNlcnZlckFjdGlvblJlcXVlc3QsXG4gIHNldHVwU2VydmVyQWN0aW9uSGVhZGVycyxcbiAgY3JlYXRlU2VydmVyQWN0aW9uU3RyZWFtLFxuICBoYW5kbGVTZXJ2ZXJBY3Rpb25FcnJvclxufSBmcm9tIFwiLi4vaGVscGVycy9oYW5kbGVTZXJ2ZXJBY3Rpb24uanNcIjtcbmltcG9ydCB0eXBlIHsgTWVzc2FnZUhhbmRsZXIgfSBmcm9tIFwiLi4vdHlwZXMuanNcIjtcbmltcG9ydCB7IGNsZWFudXBXb3JrZXJTZXJ2ZXJBY3Rpb24gfSBmcm9tIFwiLi9jbGVhbnVwV29ya2VyU2VydmVyQWN0aW9uLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEluY29taW5nTWVzc2FnZSwgU2VydmVyUmVzcG9uc2UgfSBmcm9tIFwibm9kZTpodHRwXCI7XG5cblxuLyoqXG4gKiBIYW5kbGVzIHNlcnZlciBhY3Rpb24gcmVxdWVzdHMgaW4gdGhlIHdvcmtlciBzY2VuYXJpby5cbiAqIFxuICogQHBhcmFtIHJlcSAtIFRoZSBpbmNvbWluZyByZXF1ZXN0XG4gKiBAcGFyYW0gcmVzIC0gVGhlIHJlc3BvbnNlIG9iamVjdFxuICogQHBhcmFtIHdvcmtlciAtIFRoZSB3b3JrZXIgdGhyZWFkXG4gKiBAcGFyYW0gbG9nZ2VyIC0gVGhlIFZpdGUgbG9nZ2VyXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVXb3JrZXJTZXJ2ZXJBY3Rpb24oXG4gIHJlcTogSW5jb21pbmdNZXNzYWdlLFxuICByZXM6IFNlcnZlclJlc3BvbnNlLFxuICB3b3JrZXI6IFdvcmtlcixcbiAgbG9nZ2VyOiBWaXRlRGV2U2VydmVyW1wiY29uZmlnXCJdW1wibG9nZ2VyXCJdXG4pIHtcbiAgbGV0IG1lc3NhZ2VIYW5kbGVyOiBNZXNzYWdlSGFuZGxlcjxSc2NDaHVua091dHB1dE1lc3NhZ2U+IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3QgcGFzc1Rocm91Z2ggPSBjcmVhdGVTZXJ2ZXJBY3Rpb25TdHJlYW0ocmVzKTtcbiAgdHJ5IHtcbiAgICAvLyBSZWFkIHJlcXVlc3QgYm9keVxuICAgIGNvbnN0IGNodW5rczogQnVmZmVyW10gPSBbXTtcbiAgICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIHJlcSkge1xuICAgICAgY2h1bmtzLnB1c2goY2h1bmspO1xuICAgIH1cbiAgICBjb25zdCBib2R5ID0gQnVmZmVyLmNvbmNhdChjaHVua3MpLnRvU3RyaW5nKCk7XG5cbiAgICB0cnkge1xuICAgICAgLy8gUGFyc2UgdGhlIHNlcnZlciBhY3Rpb24gcmVxdWVzdFxuICAgICAgY29uc3QgeyBpZCwgYXJncyB9ID0gcGFyc2VTZXJ2ZXJBY3Rpb25SZXF1ZXN0KGJvZHksIHJlcS51cmwpO1xuXG4gICAgICAvLyBTZXQgdXAgcmVzcG9uc2UgaGVhZGVyc1xuICAgICAgc2V0dXBTZXJ2ZXJBY3Rpb25IZWFkZXJzKHJlcyk7XG5cbiAgICAgIC8vIFNlbmQgc2VydmVyIGFjdGlvbiByZXF1ZXN0IHRvIHdvcmtlclxuICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgdHlwZTogXCJTRVJWRVJfQUNUSU9OXCIsXG4gICAgICAgIGlkLFxuICAgICAgICBhcmdzLFxuICAgICAgfSBzYXRpc2ZpZXMgUnNjV29ya2VySW5wdXRNZXNzYWdlKTtcblxuICAgICAgLy8gQ3JlYXRlIGEgcGFzcy10aHJvdWdoIHN0cmVhbSBmb3IgdGhlIHJlc3BvbnNlXG5cbiAgICAgIC8vIEhhbmRsZSB3b3JrZXIgbWVzc2FnZXNcbiAgICAgIG1lc3NhZ2VIYW5kbGVyID0gKG1lc3NhZ2U6IFJzY1dvcmtlck91dHB1dE1lc3NhZ2UpID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gXCJSU0NfQ0hVTktcIikge1xuICAgICAgICAgIHBhc3NUaHJvdWdoLndyaXRlKG1lc3NhZ2UuY2h1bmspO1xuICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UudHlwZSA9PT0gXCJSU0NfRU5EXCIpIHtcbiAgICAgICAgICBpZiAobWVzc2FnZUhhbmRsZXIpIHtcbiAgICAgICAgICAgIGNsZWFudXBXb3JrZXJTZXJ2ZXJBY3Rpb24ocGFzc1Rocm91Z2gsIHdvcmtlciwgbWVzc2FnZUhhbmRsZXIsIHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UudHlwZSA9PT0gXCJFUlJPUlwiKSB7XG4gICAgICAgICAgaWYgKG1lc3NhZ2VIYW5kbGVyKSB7XG4gICAgICAgICAgICBjbGVhbnVwV29ya2VyU2VydmVyQWN0aW9uKHBhc3NUaHJvdWdoLCB3b3JrZXIsIG1lc3NhZ2VIYW5kbGVyLCByZXMsIG1lc3NhZ2UuZXJyb3IsIGxvZ2dlcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICB3b3JrZXIub24oXCJtZXNzYWdlXCIsIG1lc3NhZ2VIYW5kbGVyKTtcblxuICAgICAgLy8gSGFuZGxlIGVycm9yc1xuICAgICAgcGFzc1Rocm91Z2gub24oXCJlcnJvclwiLCAoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2VIYW5kbGVyKSB7XG4gICAgICAgICAgY2xlYW51cFdvcmtlclNlcnZlckFjdGlvbihwYXNzVGhyb3VnaCwgd29ya2VyLCBtZXNzYWdlSGFuZGxlciwgcmVzLCBlcnJvciwgbG9nZ2VyKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAocGFyc2VFcnJvcikge1xuICAgICAgLy8gSGFuZGxlIHBhcnNpbmcgZXJyb3JzXG4gICAgICBpZiAocGFzc1Rocm91Z2ggJiYgbWVzc2FnZUhhbmRsZXIpIHtcbiAgICAgICAgY2xlYW51cFdvcmtlclNlcnZlckFjdGlvbihwYXNzVGhyb3VnaCwgd29ya2VyLCBtZXNzYWdlSGFuZGxlciwgcmVzLCBwYXJzZUVycm9yLCBsb2dnZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaGFuZGxlU2VydmVyQWN0aW9uRXJyb3IocGFyc2VFcnJvciwgcmVzLCBsb2dnZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAvLyBJZiB3ZSBoYXZlIGEgcGFzcy10aHJvdWdoIHN0cmVhbSwgY2xlYW4gaXQgdXBcbiAgICBpZiAocGFzc1Rocm91Z2ggJiYgbWVzc2FnZUhhbmRsZXIpIHtcbiAgICAgIGNsZWFudXBXb3JrZXJTZXJ2ZXJBY3Rpb24ocGFzc1Rocm91Z2gsIHdvcmtlciwgbWVzc2FnZUhhbmRsZXIsIHJlcywgZXJyb3IsIGxvZ2dlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIHdlIGhhdmVuJ3Qgc2V0IHVwIHRoZSBzdHJlYW0geWV0LCB1c2UgdGhlIHN0YW5kYXJkIGVycm9yIGhhbmRsZXJcbiAgICAgIGhhbmRsZVNlcnZlckFjdGlvbkVycm9yKGVycm9yLCByZXMsIGxvZ2dlcik7XG4gICAgfVxuICB9XG59ICJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQXNCQSxlQUFzQix3QkFDcEIsQ0FBQSxHQUFBLEVBQ0EsR0FDQSxFQUFBLE1BQUEsRUFDQSxNQUNBLEVBQUE7QUFDQSxFQUFBLElBQUksY0FBK0QsR0FBQSxJQUFBO0FBRW5FLEVBQU0sTUFBQSxXQUFBLEdBQWMseUJBQXlCLEdBQUcsQ0FB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
@@ -1,2 +1,5 @@
1
- export { reactClientPlugin } from "./plugin.js";
1
+ export * from "./createWorkerStream.js";
2
+ export * from "./handleWorkerRscStream.js";
3
+ export * from "./handleWorkerServerAction.js";
4
+ export { reactClientPlugin as vitePluginReactClient } from "./plugin.js";
2
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,iBAAiB,IAAI,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
@@ -1 +1,10 @@
1
- export { reactClientPlugin } from "./plugin.js";
1
+ /**
2
+ * vite-plugin-react-server
3
+ * Copyright (c) Nico Brinkkemper
4
+ * MIT License
5
+ */
6
+ export { createWorkerStream } from './createWorkerStream.js';
7
+ export { handleWorkerRscStream } from './handleWorkerRscStream.js';
8
+ export { handleWorkerServerAction } from './handleWorkerServerAction.js';
9
+ export { reactClientPlugin as vitePluginReactClient } from './plugin.js';
10
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OzsifQ==
@@ -1,4 +1,6 @@
1
- import { type Plugin } from "vite";
2
- import type { InlineCssOpt, PagePropOpt, StreamPluginOptions } from "../types.js";
3
- export declare function reactClientPlugin<T extends PagePropOpt = PagePropOpt, InlineCSS extends InlineCssOpt = InlineCssOpt>(options: StreamPluginOptions<T, InlineCSS>): Plugin;
1
+ import type { ReactStreamPluginFn, ReactStreamPluginMeta } from "../types.js";
2
+ export type ReactClientPluginFn = ReactStreamPluginFn<{
3
+ meta: ReactStreamPluginMeta;
4
+ }>;
5
+ export declare const reactClientPlugin: ReactClientPluginFn;
4
6
  //# sourceMappingURL=plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,MAAM,EAAE,MAAM,MAAM,CAAC;AACnD,OAAO,KAAK,EAEV,YAAY,EACZ,WAAW,EAGX,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAQrB,wBAAgB,iBAAiB,CAC/B,CAAC,SAAS,WAAW,GAAG,WAAW,EACnC,SAAS,SAAS,YAAY,GAAG,YAAY,EAC7C,OAAO,EAAE,mBAAmB,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,MAAM,CAqIpD"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,mBAAmB,EACnB,qBAAqB,EAEtB,MAAM,aAAa,CAAC;AAQrB,MAAM,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;IACpD,IAAI,EAAE,qBAAqB,CAAC;CAC7B,CAAC,CAAC;AAEH,eAAO,MAAM,iBAAiB,EAAE,mBAqI/B,CAAA"}
@@ -11,8 +11,7 @@ import { configureWorkerRequestHandler } from './configureWorkerRequestHandler.j
11
11
  import { configurePreviewServer } from '../react-static/configurePreviewServer.js';
12
12
  import { MessageChannel } from 'node:worker_threads';
13
13
 
14
- function reactClientPlugin(options) {
15
- let userOptions;
14
+ const reactClientPlugin = function _reactClientPlugin(options) {
16
15
  let userConfig;
17
16
  let configEnv;
18
17
  let root;
@@ -22,7 +21,7 @@ function reactClientPlugin(options) {
22
21
  if (resolvedOptions.type === "error") {
23
22
  throw resolvedOptions.error;
24
23
  }
25
- userOptions = resolvedOptions.userOptions;
24
+ const userOptions = resolvedOptions.userOptions;
26
25
  root = userOptions.projectRoot;
27
26
  return {
28
27
  name: "vite:react-client",
@@ -74,19 +73,18 @@ function reactClientPlugin(options) {
74
73
  }
75
74
  },
76
75
  // setup dev server
77
- async configureServer(server) {
76
+ configureServer(server) {
78
77
  hmrChannel = new MessageChannel();
79
- await configureWorkerRequestHandler({
78
+ configureWorkerRequestHandler({
80
79
  server,
81
80
  autoDiscoveredFiles,
82
81
  userOptions,
83
- hmrChannel,
84
- onMetrics: userOptions.onMetrics
82
+ hmrChannel
85
83
  });
86
84
  },
87
- async handleHotUpdate({ file, server, read, timestamp, ...ctx }) {
85
+ async handleHotUpdate({ file, server, timestamp, ...ctx }) {
88
86
  try {
89
- const isPageFile = userOptions.autoDiscover.modulePattern(file);
87
+ const isPageFile = userOptions.autoDiscover.modulePattern.test(file);
90
88
  if (!isPageFile) return;
91
89
  const [, value] = userOptions.normalizer(file);
92
90
  const affectedRoutes = autoDiscoveredFiles.routeMap.get(value) || [];
@@ -117,7 +115,7 @@ function reactClientPlugin(options) {
117
115
  }
118
116
  }
119
117
  };
120
- }
118
+ };
121
119
 
122
120
  export { reactClientPlugin };
123
- //# sourceMappingURL=plugin.js.map
121
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wbHVnaW4vcmVhY3QtY2xpZW50L3BsdWdpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIENvbmZpZ0VudiB9IGZyb20gXCJ2aXRlXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEF1dG9EaXNjb3ZlcmVkRmlsZXMsXG4gIFJlYWN0U3RyZWFtUGx1Z2luRm4sXG4gIFJlYWN0U3RyZWFtUGx1Z2luTWV0YSxcbiAgUmVzb2x2ZWRVc2VyQ29uZmlnLFxufSBmcm9tIFwiLi4vdHlwZXMuanNcIjtcbmltcG9ydCB7IHJlc29sdmVPcHRpb25zIH0gZnJvbSBcIi4uL2NvbmZpZy9yZXNvbHZlT3B0aW9ucy5qc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZVVzZXJDb25maWcgfSBmcm9tIFwiLi4vY29uZmlnL3Jlc29sdmVVc2VyQ29uZmlnLmpzXCI7XG5pbXBvcnQgeyByZXNvbHZlQXV0b0Rpc2NvdmVyIH0gZnJvbSBcIi4uL2NvbmZpZy9hdXRvRGlzY292ZXIvcmVzb2x2ZUF1dG9EaXNjb3Zlci5qc1wiO1xuaW1wb3J0IHsgY29uZmlndXJlV29ya2VyUmVxdWVzdEhhbmRsZXIgfSBmcm9tIFwiLi9jb25maWd1cmVXb3JrZXJSZXF1ZXN0SGFuZGxlci5qc1wiO1xuaW1wb3J0IHsgY29uZmlndXJlUHJldmlld1NlcnZlciB9IGZyb20gXCIuLi9yZWFjdC1zdGF0aWMvY29uZmlndXJlUHJldmlld1NlcnZlci5qc1wiO1xuaW1wb3J0IHsgTWVzc2FnZUNoYW5uZWwgfSBmcm9tIFwibm9kZTp3b3JrZXJfdGhyZWFkc1wiO1xuXG5leHBvcnQgdHlwZSBSZWFjdENsaWVudFBsdWdpbkZuID0gUmVhY3RTdHJlYW1QbHVnaW5Gbjx7XG4gIG1ldGE6IFJlYWN0U3RyZWFtUGx1Z2luTWV0YTtcbn0+O1xuXG5leHBvcnQgY29uc3QgcmVhY3RDbGllbnRQbHVnaW46IFJlYWN0Q2xpZW50UGx1Z2luRm4gPSBmdW5jdGlvbiBfcmVhY3RDbGllbnRQbHVnaW4oXG4gIG9wdGlvbnNcbikge1xuICBsZXQgdXNlckNvbmZpZzogUmVzb2x2ZWRVc2VyQ29uZmlnO1xuICBsZXQgY29uZmlnRW52OiBDb25maWdFbnY7XG4gIGxldCByb290OiBzdHJpbmc7XG4gIGxldCBhdXRvRGlzY292ZXJlZEZpbGVzOiBBdXRvRGlzY292ZXJlZEZpbGVzO1xuICBsZXQgaG1yQ2hhbm5lbDogTWVzc2FnZUNoYW5uZWwgfCBudWxsID0gbnVsbDtcblxuICBjb25zdCByZXNvbHZlZE9wdGlvbnMgPSByZXNvbHZlT3B0aW9ucyhvcHRpb25zKTtcbiAgaWYgKHJlc29sdmVkT3B0aW9ucy50eXBlID09PSBcImVycm9yXCIpIHtcbiAgICB0aHJvdyByZXNvbHZlZE9wdGlvbnMuZXJyb3I7XG4gIH1cbiAgY29uc3QgdXNlck9wdGlvbnMgPSByZXNvbHZlZE9wdGlvbnMudXNlck9wdGlvbnM7XG4gIHJvb3QgPSB1c2VyT3B0aW9ucy5wcm9qZWN0Um9vdDtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IFwidml0ZTpyZWFjdC1jbGllbnRcIixcblxuICAgIGFzeW5jIGNvbmZpZyhjb25maWcsIHZpdGVDb25maWdFbnYpIHtcbiAgICAgIGNvbmZpZ0VudiA9IHZpdGVDb25maWdFbnY7XG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBjb25maWcucm9vdCA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICBjb25maWcucm9vdCAhPT0gcm9vdCAmJlxuICAgICAgICBjb25maWcucm9vdCAhPT0gcHJvY2Vzcy5jd2QoKSAmJlxuICAgICAgICBjb25maWcucm9vdCAhPT0gXCJcIlxuICAgICAgKSB7XG4gICAgICAgIHJvb3QgPSBjb25maWcucm9vdDtcbiAgICAgICAgdXNlck9wdGlvbnMucHJvamVjdFJvb3QgPSByb290O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhdXRvRGlzY292ZXJSZXN1bHQgPSBhd2FpdCByZXNvbHZlQXV0b0Rpc2NvdmVyKHtcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBjb25maWdFbnYsXG4gICAgICAgIHVzZXJPcHRpb25zLFxuICAgICAgICBjb25kaXRpb246IFwicmVhY3QtY2xpZW50XCIsXG4gICAgICB9KTtcbiAgICAgIGlmIChhdXRvRGlzY292ZXJSZXN1bHQudHlwZSA9PT0gXCJlcnJvclwiKSB7XG4gICAgICAgIHRocm93IGF1dG9EaXNjb3ZlclJlc3VsdC5lcnJvcjtcbiAgICAgIH1cbiAgICAgIGF1dG9EaXNjb3ZlcmVkRmlsZXMgPSBhdXRvRGlzY292ZXJSZXN1bHQuYXV0b0Rpc2NvdmVyZWRGaWxlcztcblxuICAgICAgY29uc3QgcmVzb2x2ZWRDb25maWcgPSByZXNvbHZlVXNlckNvbmZpZyh7XG4gICAgICAgIGNvbmRpdGlvbjogXCJyZWFjdC1jbGllbnRcIixcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBjb25maWdFbnYsXG4gICAgICAgIHVzZXJPcHRpb25zLFxuICAgICAgICBhdXRvRGlzY292ZXJlZEZpbGVzLFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChyZXNvbHZlZENvbmZpZy50eXBlID09PSBcImVycm9yXCIpIHtcbiAgICAgICAgdGhyb3cgcmVzb2x2ZWRDb25maWcuZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHVzZXJDb25maWcgPSByZXNvbHZlZENvbmZpZy51c2VyQ29uZmlnO1xuICAgICAgcmV0dXJuIHVzZXJDb25maWc7XG4gICAgfSxcbiAgICBhc3luYyBjb25maWd1cmVQcmV2aWV3U2VydmVyKHNlcnZlcikge1xuICAgICAgYXdhaXQgY29uZmlndXJlUHJldmlld1NlcnZlcih7XG4gICAgICAgIHNlcnZlcixcbiAgICAgICAgdXNlck9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIGFzeW5jIHdyaXRlQnVuZGxlKG9wdGlvbnMsIGJ1bmRsZSkge1xuICAgICAgaWYgKHVzZXJPcHRpb25zLm9uRXZlbnQpIHtcbiAgICAgICAgdXNlck9wdGlvbnMub25FdmVudCh7XG4gICAgICAgICAgdHlwZTogYGJ1aWxkLndyaXRlQnVuZGxlLiR7XG4gICAgICAgICAgICB1c2VyQ29uZmlnLmJ1aWxkLnNzciA/IFwiY2xpZW50XCIgOiBcInN0YXRpYy1jbGllbnRcIlxuICAgICAgICAgIH1gLFxuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHBhZ2VzOiBbLi4uYXV0b0Rpc2NvdmVyZWRGaWxlcy5yb3V0ZU1hcC5rZXlzKCldLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIGJ1bmRsZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIHNldHVwIGRldiBzZXJ2ZXJcbiAgICBjb25maWd1cmVTZXJ2ZXIoc2VydmVyKSB7XG4gICAgICAvLyBDcmVhdGUgSE1SIG1lc3NhZ2UgY2hhbm5lbFxuICAgICAgaG1yQ2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xuICAgICAgY29uZmlndXJlV29ya2VyUmVxdWVzdEhhbmRsZXIoe1xuICAgICAgICBzZXJ2ZXIsXG4gICAgICAgIGF1dG9EaXNjb3ZlcmVkRmlsZXMsXG4gICAgICAgIHVzZXJPcHRpb25zLFxuICAgICAgICBobXJDaGFubmVsLFxuICAgICAgfSk7XG4gICAgfSxcblxuICAgIGFzeW5jIGhhbmRsZUhvdFVwZGF0ZSh7IGZpbGUsIHNlcnZlciwgdGltZXN0YW1wLCAuLi5jdHggfSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGZpbGUgaXMgYSBwYWdlIG9yIHByb3BzIGZpbGVcbiAgICAgICAgY29uc3QgaXNQYWdlRmlsZSA9IHVzZXJPcHRpb25zLmF1dG9EaXNjb3Zlci5tb2R1bGVQYXR0ZXJuLnRlc3QoZmlsZSk7XG4gICAgICAgIGlmICghaXNQYWdlRmlsZSkgcmV0dXJuO1xuXG4gICAgICAgIC8vIEdldCB0aGUgcm91dGUgZm9yIHRoaXMgZmlsZVxuICAgICAgICBjb25zdCBbLCB2YWx1ZV0gPSB1c2VyT3B0aW9ucy5ub3JtYWxpemVyKGZpbGUpO1xuXG4gICAgICAgIC8vIEZpbmQgYWxsIHJvdXRlcyBhZmZlY3RlZCBieSB0aGlzIGZpbGUgY2hhbmdlXG4gICAgICAgIGNvbnN0IGFmZmVjdGVkUm91dGVzID0gYXV0b0Rpc2NvdmVyZWRGaWxlcy5yb3V0ZU1hcC5nZXQodmFsdWUpIHx8IFtdO1xuXG4gICAgICAgIC8vIFNlbmQgSE1SIHVwZGF0ZSBkaXJlY3RseSB0byB3b3JrZXIgdGhyb3VnaCBNZXNzYWdlQ2hhbm5lbFxuICAgICAgICBpZiAoaG1yQ2hhbm5lbD8ucG9ydDEpIHtcbiAgICAgICAgICBobXJDaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgIHR5cGU6IFwiSE1SX1VQREFURVwiLFxuICAgICAgICAgICAgcGF0aDogZmlsZSxcbiAgICAgICAgICAgIHRpbWVzdGFtcCxcbiAgICAgICAgICAgIHJvdXRlczogYWZmZWN0ZWRSb3V0ZXMsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICAvLyBUcmlnZ2VyIGEgZnVsbCBwYWdlIHJlZnJlc2ggZm9yIGFmZmVjdGVkIHJvdXRlc1xuICAgICAgICAgIGZvciAoY29uc3Qgcm91dGUgb2YgYWZmZWN0ZWRSb3V0ZXMpIHtcbiAgICAgICAgICAgIHNlcnZlci53cy5zZW5kKHtcbiAgICAgICAgICAgICAgdHlwZTogXCJmdWxsLXJlbG9hZFwiLFxuICAgICAgICAgICAgICBwYXRoOiByb3V0ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIExldCBWaXRlIGhhbmRsZSB0aGUgSE1SIHVwZGF0ZVxuICAgICAgICByZXR1cm4gY3R4Lm1vZHVsZXM7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoaG1yQ2hhbm5lbD8ucG9ydDEpIHtcbiAgICAgICAgICBobXJDaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgIHR5cGU6IFwiSE1SX0VSUk9SXCIsXG4gICAgICAgICAgICBwYXRoOiBmaWxlLFxuICAgICAgICAgICAgZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3R4Lm1vZHVsZXM7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cbiJdLCJuYW1lcyI6WyJvcHRpb25zIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBa0JhLE1BQUEsaUJBQUEsR0FBeUMsU0FBUyxrQkFBQSxDQUM3RCxPQUNBLEVBQUE7QUFDQSxFQUFJLElBQUEsVUFBQTtBQUNKLEVBQUksSUFBQSxTQUFBO0FBQ0osRUFBSSxJQUFBLElBQUE7QUFDSixFQUFJLElBQUEsbUJBQUE7QUFDSixFQUFBLElBQUksVUFBb0MsR0FBQSxJQUFBO0FBRXhDLEVBQU0sTUFBQSxlQUFBLEdBQWtCLGVBQWUsT0FBTyxDQUFBO0FBQzlDLEVBQUksSUFBQSxlQUFBLENBQWdCLFNBQVMsT0FBUyxFQUFBO0FBQ3BDLElBQUEsTUFBTSxlQUFnQixDQUFBLEtBQUE7QUFBQTtBQUV4QixFQUFBLE1BQU0sY0FBYyxlQUFnQixDQUFBLFdBQUE7QUFDcEMsRUFBQSxJQUFBLEdBQU8sV0FBWSxDQUFBLFdBQUE7QUFFbkIsRUFBTyxPQUFBO0FBQUEsSUFDTCxJQUFNLEVBQUEsbUJBQUE7QUFBQSxJQUVOLE1BQU0sTUFBTyxDQUFBLE1BQUEsRUFBUSxhQUFlLEVBQUE7QUFDbEMsTUFBWSxTQUFBLEdBQUEsYUFBQTtBQUNaLE1BQUEsSUFDRSxPQUFPLE1BQUEsQ0FBTyxJQUFTLEtBQUEsUUFBQSxJQUN2QixPQUFPLElBQVMsS0FBQSxJQUFBLElBQ2hCLE1BQU8sQ0FBQSxJQUFBLEtBQVMsT0FBUSxDQUFBLEdBQUEsRUFDeEIsSUFBQSxNQUFBLENBQU8sU0FBUyxFQUNoQixFQUFBO0FBQ0EsUUFBQSxJQUFBLEdBQU8sTUFBTyxDQUFBLElBQUE7QUFDZCxRQUFBLFdBQUEsQ0FBWSxXQUFjLEdBQUEs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