vite-plugin-react-server 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (490) hide show
  1. package/README.md +49 -76
  2. package/bin/patch.mjs +27 -20
  3. package/dist/_virtual/dynamic-import-helper.js +24 -0
  4. package/dist/_virtual/dynamic-import-helper.js.map +1 -0
  5. package/dist/client.d.ts +1 -1
  6. package/dist/client.d.ts.map +1 -1
  7. package/dist/client.js +1 -1
  8. package/dist/index.d.ts +2 -4
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +9 -26
  11. package/dist/index.js.map +1 -1
  12. package/dist/package.json +24 -14
  13. package/dist/plugin/components.d.ts +1 -1
  14. package/dist/plugin/components.d.ts.map +1 -1
  15. package/dist/plugin/components.js +1 -1
  16. package/dist/plugin/config/autoDiscover/createGlobAutoDiscover.d.ts +6 -0
  17. package/dist/plugin/config/autoDiscover/createGlobAutoDiscover.d.ts.map +1 -0
  18. package/dist/plugin/config/autoDiscover/createGlobAutoDiscover.js +30 -0
  19. package/dist/plugin/config/autoDiscover/createGlobAutoDiscover.js.map +1 -0
  20. package/dist/plugin/config/autoDiscover/customWorkerFiles.d.ts +13 -0
  21. package/dist/plugin/config/autoDiscover/customWorkerFiles.d.ts.map +1 -0
  22. package/dist/plugin/config/autoDiscover/customWorkerFiles.js +24 -0
  23. package/dist/plugin/config/autoDiscover/customWorkerFiles.js.map +1 -0
  24. package/dist/plugin/config/autoDiscover/pageAndPropFiles.d.ts +11 -0
  25. package/dist/plugin/config/autoDiscover/pageAndPropFiles.d.ts.map +1 -0
  26. package/dist/plugin/config/autoDiscover/pageAndPropFiles.js +29 -0
  27. package/dist/plugin/config/autoDiscover/pageAndPropFiles.js.map +1 -0
  28. package/dist/plugin/config/autoDiscover/resolveBuildPages.d.ts +6 -0
  29. package/dist/plugin/config/autoDiscover/resolveBuildPages.d.ts.map +1 -0
  30. package/dist/plugin/config/autoDiscover/resolveBuildPages.js +83 -0
  31. package/dist/plugin/config/autoDiscover/resolveBuildPages.js.map +1 -0
  32. package/dist/plugin/config/defaults.d.ts +18 -14
  33. package/dist/plugin/config/defaults.d.ts.map +1 -1
  34. package/dist/plugin/config/defaults.js +42 -21
  35. package/dist/plugin/config/defaults.js.map +1 -1
  36. package/dist/plugin/config/getCondition.d.ts +1 -1
  37. package/dist/plugin/config/getCondition.d.ts.map +1 -1
  38. package/dist/plugin/config/getCondition.js +2 -2
  39. package/dist/plugin/config/getCondition.js.map +1 -1
  40. package/dist/plugin/config/getPaths.d.ts +0 -1
  41. package/dist/plugin/config/getPaths.d.ts.map +1 -1
  42. package/dist/plugin/config/getPaths.js.map +1 -1
  43. package/dist/plugin/config/index.d.ts +0 -1
  44. package/dist/plugin/config/index.d.ts.map +1 -1
  45. package/dist/plugin/config/index.js +0 -1
  46. package/dist/plugin/config/resolveAutoDiscover.d.ts +20 -0
  47. package/dist/plugin/config/resolveAutoDiscover.d.ts.map +1 -0
  48. package/dist/plugin/config/resolveAutoDiscover.js +128 -0
  49. package/dist/plugin/config/resolveAutoDiscover.js.map +1 -0
  50. package/dist/plugin/config/resolveOptions.d.ts +1 -1
  51. package/dist/plugin/config/resolveOptions.d.ts.map +1 -1
  52. package/dist/plugin/config/resolveOptions.js +109 -77
  53. package/dist/plugin/config/resolveOptions.js.map +1 -1
  54. package/dist/plugin/config/resolvePages.d.ts +0 -1
  55. package/dist/plugin/config/resolvePages.d.ts.map +1 -1
  56. package/dist/plugin/config/resolvePages.js +6 -8
  57. package/dist/plugin/config/resolvePages.js.map +1 -1
  58. package/dist/plugin/config/resolveUrlOption.d.ts +16 -0
  59. package/dist/plugin/config/resolveUrlOption.d.ts.map +1 -0
  60. package/dist/plugin/config/resolveUrlOption.js +37 -0
  61. package/dist/plugin/config/resolveUrlOption.js.map +1 -0
  62. package/dist/plugin/config/resolveUserConfig.d.ts +4 -5
  63. package/dist/plugin/config/resolveUserConfig.d.ts.map +1 -1
  64. package/dist/plugin/config/resolveUserConfig.js +80 -132
  65. package/dist/plugin/config/resolveUserConfig.js.map +1 -1
  66. package/dist/plugin/copy.d.ts +7 -0
  67. package/dist/plugin/copy.d.ts.map +1 -0
  68. package/dist/plugin/copy.js +30 -0
  69. package/dist/plugin/css-collector-elements.d.ts +4 -0
  70. package/dist/plugin/css-collector-elements.d.ts.map +1 -0
  71. package/dist/plugin/css-collector-elements.js +19 -0
  72. package/dist/plugin/css-collector-elements.js.map +1 -0
  73. package/dist/plugin/css-collector.d.ts +2 -8
  74. package/dist/plugin/css-collector.d.ts.map +1 -1
  75. package/dist/plugin/css-collector.js +9 -36
  76. package/dist/plugin/css-collector.js.map +1 -1
  77. package/dist/plugin/helpers/cleanObject.d.ts +3 -0
  78. package/dist/plugin/helpers/cleanObject.d.ts.map +1 -0
  79. package/dist/plugin/helpers/cleanObject.js +47 -0
  80. package/dist/plugin/helpers/cleanObject.js.map +1 -0
  81. package/dist/plugin/helpers/collectBundleManifestCss.d.ts +8 -0
  82. package/dist/plugin/helpers/collectBundleManifestCss.d.ts.map +1 -0
  83. package/dist/plugin/helpers/collectBundleManifestCss.js +110 -0
  84. package/dist/plugin/helpers/collectManifestCss.d.ts +7 -0
  85. package/dist/plugin/helpers/collectManifestCss.d.ts.map +1 -0
  86. package/dist/plugin/helpers/collectManifestCss.js +44 -0
  87. package/dist/plugin/helpers/collectManifestCss.js.map +1 -0
  88. package/dist/plugin/helpers/collectViteModuleGraphCss.d.ts +31 -0
  89. package/dist/plugin/helpers/collectViteModuleGraphCss.d.ts.map +1 -0
  90. package/dist/plugin/helpers/collectViteModuleGraphCss.js +104 -0
  91. package/dist/plugin/helpers/collectViteModuleGraphCss.js.map +1 -0
  92. package/dist/plugin/helpers/createCssProps.d.ts +25 -0
  93. package/dist/plugin/helpers/createCssProps.d.ts.map +1 -0
  94. package/dist/plugin/helpers/createCssProps.js +57 -0
  95. package/dist/plugin/helpers/createCssProps.js.map +1 -0
  96. package/dist/plugin/helpers/createEventHandler.d.ts +22 -0
  97. package/dist/plugin/helpers/createEventHandler.d.ts.map +1 -0
  98. package/dist/plugin/helpers/createEventHandler.js +36 -0
  99. package/dist/plugin/helpers/createEventHandler.js.map +1 -0
  100. package/dist/plugin/helpers/createHandler.d.ts +7 -13
  101. package/dist/plugin/helpers/createHandler.d.ts.map +1 -1
  102. package/dist/plugin/helpers/createHandler.js +54 -96
  103. package/dist/plugin/helpers/createHandler.js.map +1 -1
  104. package/dist/plugin/helpers/createRscStream.d.ts +12 -26
  105. package/dist/plugin/helpers/createRscStream.d.ts.map +1 -1
  106. package/dist/plugin/helpers/createRscStream.js +105 -51
  107. package/dist/plugin/helpers/createRscStream.js.map +1 -1
  108. package/dist/plugin/helpers/defaultFileWriter.d.ts +2 -0
  109. package/dist/plugin/helpers/defaultFileWriter.d.ts.map +1 -0
  110. package/dist/plugin/helpers/defaultFileWriter.js +1 -0
  111. package/dist/plugin/helpers/getBundleManifest.d.ts +10 -16
  112. package/dist/plugin/helpers/getBundleManifest.d.ts.map +1 -1
  113. package/dist/plugin/helpers/getBundleManifest.js +30 -22
  114. package/dist/plugin/helpers/getBundleManifest.js.map +1 -1
  115. package/dist/plugin/helpers/getRouteFiles.d.ts +14 -0
  116. package/dist/plugin/helpers/getRouteFiles.d.ts.map +1 -0
  117. package/dist/plugin/helpers/getRouteFiles.js +36 -0
  118. package/dist/plugin/helpers/getRouteFiles.js.map +1 -0
  119. package/dist/plugin/helpers/inputNormalizer.d.ts.map +1 -1
  120. package/dist/plugin/helpers/inputNormalizer.js +38 -32
  121. package/dist/plugin/helpers/inputNormalizer.js.map +1 -1
  122. package/dist/plugin/helpers/metrics.d.ts +11 -0
  123. package/dist/plugin/helpers/metrics.d.ts.map +1 -0
  124. package/dist/plugin/helpers/metrics.js +35 -0
  125. package/dist/plugin/helpers/metrics.js.map +1 -0
  126. package/dist/plugin/helpers/resolvePageAndProps.d.ts +27 -0
  127. package/dist/plugin/helpers/resolvePageAndProps.d.ts.map +1 -0
  128. package/dist/plugin/helpers/resolvePageAndProps.js +51 -0
  129. package/dist/plugin/helpers/resolvePageAndProps.js.map +1 -0
  130. package/dist/plugin/helpers/serializeUserOptions.d.ts +8 -0
  131. package/dist/plugin/helpers/serializeUserOptions.d.ts.map +1 -0
  132. package/dist/plugin/helpers/serializeUserOptions.js +182 -0
  133. package/dist/plugin/helpers/serializeUserOptions.js.map +1 -0
  134. package/dist/plugin/helpers/stashReturnValue.d.ts +2 -0
  135. package/dist/plugin/helpers/stashReturnValue.d.ts.map +1 -0
  136. package/dist/plugin/helpers/stashReturnValue.js +14 -0
  137. package/dist/plugin/helpers/tryManifest.d.ts +5 -3
  138. package/dist/plugin/helpers/tryManifest.d.ts.map +1 -1
  139. package/dist/plugin/helpers/tryManifest.js +16 -7
  140. package/dist/plugin/helpers/tryManifest.js.map +1 -1
  141. package/dist/plugin/html.d.ts +2 -3
  142. package/dist/plugin/html.d.ts.map +1 -1
  143. package/dist/plugin/html.js +7 -1
  144. package/dist/plugin/html.js.map +1 -1
  145. package/dist/plugin/index.d.ts +1 -2
  146. package/dist/plugin/index.d.ts.map +1 -1
  147. package/dist/plugin/index.js +3 -1
  148. package/dist/plugin/loader/createBuildLoader.d.ts +26 -4
  149. package/dist/plugin/loader/createBuildLoader.d.ts.map +1 -1
  150. package/dist/plugin/loader/createBuildLoader.js +98 -33
  151. package/dist/plugin/loader/createBuildLoader.js.map +1 -1
  152. package/dist/plugin/loader/css-loader.development.d.ts +57 -0
  153. package/dist/plugin/loader/css-loader.development.d.ts.map +1 -0
  154. package/dist/plugin/loader/css-loader.development.js +81 -0
  155. package/dist/plugin/loader/css-loader.development.js.map +1 -0
  156. package/dist/plugin/loader/css-loader.production.d.ts +31 -0
  157. package/dist/plugin/loader/css-loader.production.d.ts.map +1 -0
  158. package/dist/plugin/loader/css-loader.production.js +45 -0
  159. package/dist/plugin/loader/css-loader.production.js.map +1 -0
  160. package/dist/plugin/loader/index.d.ts +2 -0
  161. package/dist/plugin/loader/index.d.ts.map +1 -0
  162. package/dist/plugin/loader/index.js +1 -0
  163. package/dist/plugin/loader/plugin.d.ts +22 -0
  164. package/dist/plugin/loader/plugin.d.ts.map +1 -0
  165. package/dist/plugin/loader/plugin.js +27 -0
  166. package/dist/plugin/loader/react-loader.d.ts +3 -7
  167. package/dist/plugin/loader/react-loader.d.ts.map +1 -1
  168. package/dist/plugin/loader/react-loader.js +85 -30
  169. package/dist/plugin/loader/react-loader.js.map +1 -1
  170. package/dist/plugin/loader/temporaryReferences.d.ts +2 -0
  171. package/dist/plugin/loader/temporaryReferences.d.ts.map +1 -0
  172. package/dist/plugin/loader/temporaryReferences.js +11 -0
  173. package/dist/plugin/loader/temporaryReferences.js.map +1 -0
  174. package/dist/plugin/moduleRefs.d.ts +7 -0
  175. package/dist/plugin/moduleRefs.d.ts.map +1 -0
  176. package/dist/plugin/moduleRefs.js +17 -0
  177. package/dist/plugin/moduleRefs.js.map +1 -0
  178. package/dist/plugin/plugin.client.d.ts +3 -0
  179. package/dist/plugin/plugin.client.d.ts.map +1 -0
  180. package/dist/plugin/plugin.client.js +19 -0
  181. package/dist/plugin/plugin.client.js.map +1 -0
  182. package/dist/plugin/plugin.d.ts +1 -5
  183. package/dist/plugin/plugin.d.ts.map +1 -1
  184. package/dist/plugin/plugin.js +3 -9
  185. package/dist/plugin/plugin.server.d.ts +3 -0
  186. package/dist/plugin/plugin.server.d.ts.map +1 -0
  187. package/dist/plugin/plugin.server.js +28 -0
  188. package/dist/plugin/plugin.server.js.map +1 -0
  189. package/dist/plugin/preserver/plugin.js +1 -1
  190. package/dist/plugin/preserver/plugin.js.map +1 -1
  191. package/dist/plugin/react-client/index.d.ts +1 -2
  192. package/dist/plugin/react-client/index.d.ts.map +1 -1
  193. package/dist/plugin/react-client/index.js +1 -19
  194. package/dist/plugin/react-client/plugin.d.ts.map +1 -1
  195. package/dist/plugin/react-client/plugin.js +60 -219
  196. package/dist/plugin/react-client/plugin.js.map +1 -1
  197. package/dist/plugin/react-client/server.d.ts +27 -0
  198. package/dist/plugin/react-client/server.d.ts.map +1 -0
  199. package/dist/plugin/react-client/server.js +197 -0
  200. package/dist/plugin/react-client/server.js.map +1 -0
  201. package/dist/plugin/react-server/index.d.ts +1 -2
  202. package/dist/plugin/react-server/index.d.ts.map +1 -1
  203. package/dist/plugin/react-server/index.js +1 -21
  204. package/dist/plugin/react-server/plugin.d.ts +0 -1
  205. package/dist/plugin/react-server/plugin.d.ts.map +1 -1
  206. package/dist/plugin/react-server/plugin.js +60 -186
  207. package/dist/plugin/react-server/plugin.js.map +1 -1
  208. package/dist/plugin/react-server/server.d.ts +9 -0
  209. package/dist/plugin/react-server/server.d.ts.map +1 -0
  210. package/dist/plugin/react-server/server.js +120 -0
  211. package/dist/plugin/react-server/server.js.map +1 -0
  212. package/dist/plugin/react-static/collectHtmlWorkerContent.d.ts +23 -0
  213. package/dist/plugin/react-static/collectHtmlWorkerContent.d.ts.map +1 -0
  214. package/dist/plugin/react-static/collectHtmlWorkerContent.js +85 -0
  215. package/dist/plugin/react-static/collectHtmlWorkerContent.js.map +1 -0
  216. package/dist/plugin/react-static/collectRscContent.d.ts +24 -0
  217. package/dist/plugin/react-static/collectRscContent.d.ts.map +1 -0
  218. package/dist/plugin/react-static/collectRscContent.js +49 -0
  219. package/dist/plugin/react-static/collectRscContent.js.map +1 -0
  220. package/dist/plugin/react-static/configurePreviewServer.d.ts +7 -0
  221. package/dist/plugin/react-static/configurePreviewServer.d.ts.map +1 -0
  222. package/dist/plugin/react-static/configurePreviewServer.js +67 -0
  223. package/dist/plugin/react-static/configurePreviewServer.js.map +1 -0
  224. package/dist/plugin/react-static/fileWriter.d.ts +23 -0
  225. package/dist/plugin/react-static/fileWriter.d.ts.map +1 -0
  226. package/dist/plugin/react-static/fileWriter.js +65 -0
  227. package/dist/plugin/react-static/fileWriter.js.map +1 -0
  228. package/dist/plugin/react-static/plugin.d.ts +15 -0
  229. package/dist/plugin/react-static/plugin.d.ts.map +1 -1
  230. package/dist/plugin/react-static/plugin.js +248 -149
  231. package/dist/plugin/react-static/plugin.js.map +1 -1
  232. package/dist/plugin/react-static/renderPage.d.ts +3 -0
  233. package/dist/plugin/react-static/renderPage.d.ts.map +1 -0
  234. package/dist/plugin/react-static/renderPage.js +116 -0
  235. package/dist/plugin/react-static/renderPage.js.map +1 -0
  236. package/dist/plugin/react-static/renderPages.d.ts +3 -0
  237. package/dist/plugin/react-static/renderPages.d.ts.map +1 -0
  238. package/dist/plugin/react-static/renderPages.js +125 -0
  239. package/dist/plugin/react-static/renderPages.js.map +1 -0
  240. package/dist/plugin/react-static/renderStreams.d.ts +26 -0
  241. package/dist/plugin/react-static/renderStreams.d.ts.map +1 -0
  242. package/dist/plugin/react-static/renderStreams.js +27 -0
  243. package/dist/plugin/react-static/renderStreams.js.map +1 -0
  244. package/dist/plugin/react-static/rscToHtmlStream.d.ts +22 -0
  245. package/dist/plugin/react-static/rscToHtmlStream.d.ts.map +1 -0
  246. package/dist/plugin/react-static/rscToHtmlStream.js +54 -0
  247. package/dist/plugin/react-static/rscToHtmlStream.js.map +1 -0
  248. package/dist/plugin/react-static/streamHandler.d.ts +2 -0
  249. package/dist/plugin/react-static/streamHandler.d.ts.map +1 -0
  250. package/dist/plugin/react-static/streamHandler.js +1 -0
  251. package/dist/plugin/react-static/types.d.ts +11 -0
  252. package/dist/plugin/react-static/types.d.ts.map +1 -1
  253. package/dist/plugin/resolvePage.d.ts +26 -9
  254. package/dist/plugin/resolvePage.d.ts.map +1 -1
  255. package/dist/plugin/resolvePage.js +41 -39
  256. package/dist/plugin/resolvePage.js.map +1 -1
  257. package/dist/plugin/resolveProps.d.ts +40 -7
  258. package/dist/plugin/resolveProps.d.ts.map +1 -1
  259. package/dist/plugin/resolveProps.js +100 -75
  260. package/dist/plugin/resolveProps.js.map +1 -1
  261. package/dist/plugin/root.d.ts +1 -0
  262. package/dist/plugin/root.d.ts.map +1 -1
  263. package/dist/plugin/root.js +1 -0
  264. package/dist/plugin/root.js.map +1 -1
  265. package/dist/plugin/transformer/index.d.ts +2 -1
  266. package/dist/plugin/transformer/index.d.ts.map +1 -1
  267. package/dist/plugin/transformer/index.js +2 -1
  268. package/dist/plugin/transformer/plugin.client.d.ts +4 -0
  269. package/dist/plugin/transformer/plugin.client.d.ts.map +1 -0
  270. package/dist/plugin/transformer/plugin.client.js +83 -0
  271. package/dist/plugin/transformer/plugin.client.js.map +1 -0
  272. package/dist/plugin/transformer/plugin.d.ts +1 -27
  273. package/dist/plugin/transformer/plugin.d.ts.map +1 -1
  274. package/dist/plugin/transformer/plugin.js +3 -87
  275. package/dist/plugin/transformer/plugin.js.map +1 -1
  276. package/dist/plugin/transformer/plugin.server.d.ts +4 -0
  277. package/dist/plugin/transformer/plugin.server.d.ts.map +1 -0
  278. package/dist/plugin/transformer/plugin.server.js +76 -0
  279. package/dist/plugin/transformer/plugin.server.js.map +1 -0
  280. package/dist/plugin/transformer/upgradeCssModuleCode.d.ts +11 -0
  281. package/dist/plugin/transformer/upgradeCssModuleCode.d.ts.map +1 -0
  282. package/dist/plugin/transformer/upgradeCssModuleCode.js +38 -0
  283. package/dist/plugin/types/css-tracking.d.ts +6 -0
  284. package/dist/plugin/types/css-tracking.d.ts.map +1 -0
  285. package/dist/plugin/types/css-tracking.js +1 -0
  286. package/dist/plugin/types.d.ts +372 -86
  287. package/dist/plugin/types.d.ts.map +1 -1
  288. package/dist/plugin/types.js +1 -1
  289. package/dist/plugin/vendor.client.d.ts +4 -0
  290. package/dist/plugin/vendor.client.d.ts.map +1 -0
  291. package/dist/plugin/vendor.client.js +16 -0
  292. package/dist/plugin/vendor.client.js.map +1 -0
  293. package/dist/plugin/vendor.server.d.ts +4 -0
  294. package/dist/plugin/vendor.server.d.ts.map +1 -0
  295. package/dist/plugin/vendor.server.js +16 -0
  296. package/dist/plugin/vendor.server.js.map +1 -0
  297. package/dist/plugin/worker/createWorker.d.ts +25 -7
  298. package/dist/plugin/worker/createWorker.d.ts.map +1 -1
  299. package/dist/plugin/worker/createWorker.js +108 -33
  300. package/dist/plugin/worker/createWorker.js.map +1 -1
  301. package/dist/plugin/worker/html/createHtmlWorkerRenderState.d.ts +12 -0
  302. package/dist/plugin/worker/html/createHtmlWorkerRenderState.d.ts.map +1 -0
  303. package/dist/plugin/worker/html/createHtmlWorkerRenderState.js +103 -0
  304. package/dist/plugin/worker/html/createHtmlWorkerRenderState.js.map +1 -0
  305. package/dist/plugin/worker/html/html-worker.development.d.ts +0 -30
  306. package/dist/plugin/worker/html/html-worker.development.d.ts.map +1 -1
  307. package/dist/plugin/worker/html/html-worker.development.js +3 -17
  308. package/dist/plugin/worker/html/html-worker.development.js.map +1 -1
  309. package/dist/plugin/worker/html/html-worker.production.js +12 -5
  310. package/dist/plugin/worker/html/html-worker.production.js.map +1 -1
  311. package/dist/plugin/worker/html/messageHandler.d.ts +2 -2
  312. package/dist/plugin/worker/html/messageHandler.d.ts.map +1 -1
  313. package/dist/plugin/worker/html/messageHandler.js +87 -84
  314. package/dist/plugin/worker/html/messageHandler.js.map +1 -1
  315. package/dist/plugin/worker/html/types.d.ts +18 -0
  316. package/dist/plugin/worker/html/types.d.ts.map +1 -0
  317. package/dist/plugin/worker/html/types.js +1 -0
  318. package/dist/plugin/worker/registerLoaders.d.ts +9 -0
  319. package/dist/plugin/worker/registerLoaders.d.ts.map +1 -0
  320. package/dist/plugin/worker/registerLoaders.js +45 -0
  321. package/dist/plugin/worker/rsc/handleRender.d.ts +4 -0
  322. package/dist/plugin/worker/rsc/handleRender.d.ts.map +1 -0
  323. package/dist/plugin/worker/rsc/handleRender.js +147 -0
  324. package/dist/plugin/worker/rsc/handleRender.js.map +1 -0
  325. package/dist/plugin/worker/rsc/messageHandler.d.ts +2 -2
  326. package/dist/plugin/worker/rsc/messageHandler.d.ts.map +1 -1
  327. package/dist/plugin/worker/rsc/messageHandler.js +47 -112
  328. package/dist/plugin/worker/rsc/messageHandler.js.map +1 -1
  329. package/dist/plugin/worker/rsc/rsc-worker.development.d.ts +0 -30
  330. package/dist/plugin/worker/rsc/rsc-worker.development.d.ts.map +1 -1
  331. package/dist/plugin/worker/rsc/rsc-worker.development.js +29 -4
  332. package/dist/plugin/worker/rsc/rsc-worker.development.js.map +1 -1
  333. package/dist/plugin/worker/rsc/rsc-worker.production.js +3 -3
  334. package/dist/plugin/worker/rsc/rsc-worker.production.js.map +1 -1
  335. package/dist/plugin/worker/rsc/state.d.ts +73 -2
  336. package/dist/plugin/worker/rsc/state.d.ts.map +1 -1
  337. package/dist/plugin/worker/rsc/state.js +40 -3
  338. package/dist/plugin/worker/rsc/state.js.map +1 -1
  339. package/dist/plugin/worker/sendMessage.d.ts +3 -0
  340. package/dist/plugin/worker/sendMessage.d.ts.map +1 -0
  341. package/dist/plugin/worker/sendMessage.js +48 -0
  342. package/dist/plugin/worker/types.d.ts +218 -76
  343. package/dist/plugin/worker/types.d.ts.map +1 -1
  344. package/dist/server.d.ts +1 -1
  345. package/dist/server.d.ts.map +1 -1
  346. package/dist/server.js +6 -1
  347. package/dist/server.js.map +1 -1
  348. package/dist/tsconfig.tsbuildinfo +1 -1
  349. package/package.json +24 -14
  350. package/plugin/components.ts +1 -1
  351. package/plugin/config/autoDiscover/createGlobAutoDiscover.ts +29 -0
  352. package/plugin/config/autoDiscover/customWorkerFiles.ts +27 -0
  353. package/plugin/config/autoDiscover/pageAndPropFiles.ts +36 -0
  354. package/plugin/config/autoDiscover/resolveBuildPages.ts +98 -0
  355. package/plugin/config/defaults.tsx +38 -29
  356. package/plugin/config/getCondition.ts +7 -3
  357. package/plugin/config/getPaths.ts +1 -7
  358. package/plugin/config/index.ts +0 -1
  359. package/plugin/config/resolveAutoDiscover.ts +177 -0
  360. package/plugin/config/resolveOptions.ts +220 -118
  361. package/plugin/config/resolvePages.ts +5 -7
  362. package/plugin/config/resolveUrlOption.ts +43 -0
  363. package/plugin/config/resolveUserConfig.ts +116 -166
  364. package/plugin/copy.ts +39 -0
  365. package/plugin/css-collector-elements.tsx +21 -0
  366. package/plugin/css-collector.tsx +20 -53
  367. package/plugin/helpers/cleanObject.ts +50 -0
  368. package/plugin/helpers/collectBundleManifestCss.ts +160 -0
  369. package/plugin/helpers/collectManifestCss.ts +61 -0
  370. package/plugin/helpers/collectViteModuleGraphCss.ts +158 -0
  371. package/plugin/helpers/createCssProps.tsx +85 -0
  372. package/plugin/helpers/createEventHandler.ts +44 -0
  373. package/plugin/helpers/createHandler.ts +57 -126
  374. package/plugin/helpers/createRscStream.tsx +156 -0
  375. package/plugin/helpers/defaultFileWriter.ts +0 -0
  376. package/plugin/helpers/getBundleManifest.ts +42 -37
  377. package/plugin/helpers/getRouteFiles.ts +47 -0
  378. package/plugin/helpers/inputNormalizer.ts +16 -10
  379. package/plugin/helpers/metrics.ts +64 -0
  380. package/plugin/helpers/resolvePageAndProps.ts +81 -0
  381. package/plugin/helpers/serializeUserOptions.ts +209 -0
  382. package/plugin/helpers/stashReturnValue.ts +16 -0
  383. package/plugin/helpers/tryManifest.ts +35 -18
  384. package/plugin/html.tsx +14 -3
  385. package/plugin/index.ts +5 -2
  386. package/plugin/loader/createBuildLoader.ts +152 -47
  387. package/plugin/loader/css-loader.development.ts +157 -0
  388. package/plugin/loader/css-loader.production.ts +86 -0
  389. package/plugin/loader/index.ts +1 -0
  390. package/plugin/loader/plugin.ts +33 -0
  391. package/plugin/loader/react-loader.ts +109 -41
  392. package/plugin/loader/temporaryReferences.ts +3 -0
  393. package/plugin/moduleRefs.ts +11 -0
  394. package/plugin/plugin.client.ts +12 -0
  395. package/plugin/plugin.server.ts +25 -0
  396. package/plugin/plugin.ts +5 -9
  397. package/plugin/preserver/plugin.ts +1 -1
  398. package/plugin/react-client/index.ts +1 -12
  399. package/plugin/react-client/plugin.ts +70 -259
  400. package/plugin/react-client/server.ts +276 -0
  401. package/plugin/react-server/index.ts +1 -14
  402. package/plugin/react-server/plugin.ts +69 -220
  403. package/plugin/react-server/server.ts +128 -0
  404. package/plugin/react-static/collectHtmlWorkerContent.ts +120 -0
  405. package/plugin/react-static/collectRscContent.ts +77 -0
  406. package/plugin/react-static/configurePreviewServer.ts +68 -0
  407. package/plugin/react-static/fileWriter.ts +103 -0
  408. package/plugin/react-static/plugin.ts +308 -181
  409. package/plugin/react-static/renderPage.ts +151 -0
  410. package/plugin/react-static/renderPages.ts +154 -0
  411. package/plugin/react-static/renderStreams.ts +48 -0
  412. package/plugin/react-static/rscToHtmlStream.ts +85 -0
  413. package/plugin/react-static/streamHandler.ts +0 -0
  414. package/plugin/react-static/types.ts +10 -0
  415. package/plugin/resolvePage.ts +67 -57
  416. package/plugin/resolveProps.ts +148 -104
  417. package/plugin/root.ts +1 -1
  418. package/plugin/transformer/index.ts +2 -1
  419. package/plugin/transformer/plugin.client.ts +109 -0
  420. package/plugin/transformer/plugin.server.ts +98 -0
  421. package/plugin/transformer/plugin.ts +2 -115
  422. package/plugin/transformer/upgradeCssModuleCode.ts +42 -0
  423. package/plugin/types/css-tracking.ts +5 -0
  424. package/plugin/types/react-server-dom-esm.d.ts +54 -0
  425. package/plugin/types.ts +508 -97
  426. package/plugin/vendor.client.ts +12 -0
  427. package/plugin/vendor.server.ts +12 -0
  428. package/plugin/worker/createWorker.ts +158 -53
  429. package/plugin/worker/html/createHtmlWorkerRenderState.tsx +112 -0
  430. package/plugin/worker/html/html-worker.development.tsx +5 -75
  431. package/plugin/worker/html/html-worker.production.tsx +18 -7
  432. package/plugin/worker/html/messageHandler.tsx +126 -0
  433. package/plugin/worker/html/types.ts +19 -0
  434. package/plugin/worker/registerLoaders.ts +54 -0
  435. package/plugin/worker/rsc/handleRender.ts +180 -0
  436. package/plugin/worker/rsc/messageHandler.tsx +58 -132
  437. package/plugin/worker/rsc/rsc-worker.development.ts +49 -63
  438. package/plugin/worker/rsc/rsc-worker.production.ts +5 -5
  439. package/plugin/worker/rsc/state.ts +79 -2
  440. package/plugin/worker/sendMessage.ts +49 -0
  441. package/plugin/worker/types.ts +299 -100
  442. package/scripts/check-react-version.mjs +60 -48
  443. package/scripts/react+0.0.0-experimental-0ca8420f-20250504.patch +57 -0
  444. package/scripts/react-dom+0.0.0-experimental-0ca8420f-20250504.patch +819 -0
  445. package/scripts/{react-server-dom-esm+0.0.0-experimental-eda36a1c-20250228.patch → react-server-dom-esm+0.0.0-experimental-0ca8420f-20250504.patch} +1702 -2820
  446. package/tsconfig.json +7 -2
  447. package/dist/plugin/assertServerCondition.d.ts +0 -6
  448. package/dist/plugin/assertServerCondition.d.ts.map +0 -1
  449. package/dist/plugin/assertServerCondition.js +0 -13
  450. package/dist/plugin/checkFilesExist.d.ts +0 -3
  451. package/dist/plugin/checkFilesExist.d.ts.map +0 -1
  452. package/dist/plugin/checkFilesExist.js +0 -67
  453. package/dist/plugin/checkFilesExist.js.map +0 -1
  454. package/dist/plugin/collect-manifest-client-files.d.ts +0 -23
  455. package/dist/plugin/collect-manifest-client-files.d.ts.map +0 -1
  456. package/dist/plugin/collect-manifest-client-files.js +0 -131
  457. package/dist/plugin/collect-manifest-client-files.js.map +0 -1
  458. package/dist/plugin/config/getWorkerPath.d.ts +0 -2
  459. package/dist/plugin/config/getWorkerPath.d.ts.map +0 -1
  460. package/dist/plugin/config/getWorkerPath.js +0 -4
  461. package/dist/plugin/copy-dir.d.ts +0 -4
  462. package/dist/plugin/copy-dir.d.ts.map +0 -1
  463. package/dist/plugin/copy-dir.js +0 -25
  464. package/dist/plugin/copy-dir.js.map +0 -1
  465. package/dist/plugin/css-collector-inline.d.ts +0 -10
  466. package/dist/plugin/css-collector-inline.d.ts.map +0 -1
  467. package/dist/plugin/css-collector-inline.js +0 -55
  468. package/dist/plugin/css-collector-inline.js.map +0 -1
  469. package/dist/plugin/loader/css-loader.d.ts +0 -16
  470. package/dist/plugin/loader/css-loader.d.ts.map +0 -1
  471. package/dist/plugin/loader/css-loader.js +0 -70
  472. package/dist/plugin/loader/css-loader.js.map +0 -1
  473. package/dist/plugin/react-client/index.js.map +0 -1
  474. package/dist/plugin/react-server/index.js.map +0 -1
  475. package/dist/plugin/worker/html/renderPages.d.ts +0 -26
  476. package/dist/plugin/worker/html/renderPages.d.ts.map +0 -1
  477. package/dist/plugin/worker/html/renderPages.js +0 -241
  478. package/dist/plugin/worker/html/renderPages.js.map +0 -1
  479. package/plugin/assertServerCondition.ts +0 -12
  480. package/plugin/checkFilesExist.ts +0 -66
  481. package/plugin/collect-manifest-client-files.ts +0 -167
  482. package/plugin/config/getWorkerPath.ts +0 -5
  483. package/plugin/copy-dir.ts +0 -27
  484. package/plugin/css-collector-inline.tsx +0 -60
  485. package/plugin/helpers/createRscStream.ts +0 -109
  486. package/plugin/loader/css-loader.ts +0 -94
  487. package/plugin/worker/html/messageHandler.ts +0 -130
  488. package/plugin/worker/html/renderPages.ts +0 -293
  489. package/scripts/react+0.0.0-experimental-eda36a1c-20250228.patch +0 -159
  490. package/scripts/react-dom+0.0.0-experimental-eda36a1c-20250228.patch +0 -12508
@@ -3,108 +3,66 @@
3
3
  * Copyright (c) Nico Brinkkemper
4
4
  * MIT License
5
5
  */
6
- import { resolvePage } from '../resolvePage.js';
7
- import { resolveProps } from '../resolveProps.js';
8
6
  import { createRscStream } from './createRscStream.js';
9
7
 
10
- async function createHandler({
11
- getCss,
12
- root,
13
- cssFiles = [],
14
- cssModules = /* @__PURE__ */ new Map(),
15
- onCssFile,
16
- logger,
17
- loader,
18
- Html,
19
- CssCollector,
20
- pagePath,
21
- propsPath,
22
- pageExportName,
23
- propsExportName,
24
- inlineCss,
25
- moduleBase,
26
- preserveModulesRoot: _preserveModulesRoot,
27
- moduleBasePath,
28
- moduleRootPath,
29
- moduleBaseURL,
30
- route,
31
- pipableStreamOptions
32
- }) {
33
- const controller = new AbortController();
34
- const loadWithCss = async (id) => {
35
- try {
36
- const mod = await loader(id);
37
- const pageCss = await Promise.resolve(getCss(id));
38
- Array.from(pageCss.entries()).forEach(([css, linkOrContent]) => {
39
- cssModules.set(css, linkOrContent);
40
- if (typeof onCssFile === "function") {
41
- onCssFile(css, id);
8
+ async function createHandler(handlerOptions) {
9
+ if (!handlerOptions.PageComponent) {
10
+ throw new Error("PageComponent is required");
11
+ }
12
+ try {
13
+ const adaptedOnEvent = (event, data) => {
14
+ if (event === "error") {
15
+ handlerOptions.onEvent?.({
16
+ type: "route.error",
17
+ data: {
18
+ route: handlerOptions.route,
19
+ ...data
20
+ }
21
+ });
22
+ } else if (event === "postpone") {
23
+ handlerOptions.onEvent?.({
24
+ type: "route.postpone",
25
+ data: {
26
+ route: handlerOptions.route,
27
+ ...data
28
+ }
29
+ });
30
+ }
31
+ };
32
+ const streamResult = createRscStream({
33
+ ...handlerOptions,
34
+ onEvent: adaptedOnEvent,
35
+ cssFiles: handlerOptions.cssFiles,
36
+ PageComponent: handlerOptions.PageComponent,
37
+ pageProps: handlerOptions.pageProps
38
+ });
39
+ if (streamResult.type === "error") {
40
+ handlerOptions.onEvent?.({
41
+ type: "route.error",
42
+ data: {
43
+ route: handlerOptions.route,
44
+ error: streamResult.error
42
45
  }
43
46
  });
44
- return mod;
45
- } catch (e) {
46
- if (e.message?.includes("module runner has been closed")) {
47
- return { type: "skip" };
48
- } else {
49
- return { type: "error", error: e };
50
- }
47
+ throw streamResult.error;
51
48
  }
52
- };
53
- const PropsModule = await resolveProps({
54
- propsModule: propsPath ? await loadWithCss(propsPath) : { [propsExportName]: (url2) => ({ url: url2 }) },
55
- path: String(propsPath),
56
- exportName: propsExportName,
57
- url: route
58
- });
59
- if (PropsModule.type !== "success") {
60
- return PropsModule;
61
- }
62
- const PageModule = await resolvePage({
63
- pageModule: pagePath ? await loadWithCss(pagePath) : { [pageExportName]: () => null },
64
- path: String(pagePath),
65
- exportName: pageExportName,
66
- url: route
67
- });
68
- if (PageModule.type !== "success") {
69
- return PageModule;
70
- }
71
- if (cssFiles) {
72
- cssFiles.forEach((css) => cssModules.set(typeof css === "string" ? css : css.path, css));
73
- cssFiles = Array.from(cssModules.values());
74
- }
75
- const url = typeof moduleBaseURL === "string" && moduleBaseURL !== "" ? new URL(route, moduleBaseURL).href : route;
76
- const stream = createRscStream({
77
- Html,
78
- CssCollector,
79
- Page: PageModule[pageExportName],
80
- props: PropsModule[propsExportName],
81
- moduleRootPath,
82
- moduleBasePath,
83
- moduleBaseURL,
84
- logger,
85
- cssFiles: Array.from(cssModules.values()),
86
- route,
87
- url,
88
- pipableStreamOptions,
89
- htmlProps: {},
90
- root,
91
- loader,
92
- inlineCss
93
- });
94
- if (!stream) {
95
- return { type: "skip" };
49
+ return {
50
+ type: "success",
51
+ stream: streamResult.stream
52
+ };
53
+ } catch (error) {
54
+ handlerOptions.onEvent?.({
55
+ type: "route.error",
56
+ data: {
57
+ route: handlerOptions.route,
58
+ error
59
+ }
60
+ });
61
+ return {
62
+ type: "error",
63
+ error
64
+ };
96
65
  }
97
- const assets = {
98
- css: cssFiles,
99
- bootstrapModules: pipableStreamOptions?.bootstrapModules ?? []
100
- };
101
- return {
102
- type: "success",
103
- controller,
104
- stream,
105
- assets,
106
- route
107
- };
108
66
  }
109
67
 
110
68
  export { createHandler };
@@ -1 +1 @@
1
- {"version":3,"file":"createHandler.js","sources":["../../../plugin/helpers/createHandler.ts"],"sourcesContent":["import type { PipeableStream } from \"react-dom/server\";\nimport { resolvePage } from \"../resolvePage.js\";\nimport { resolveProps } from \"../resolveProps.js\";\nimport type { CreateHandlerOptions, CssContent } from \"../types.js\";\nimport { createRscStream } from \"./createRscStream.js\";\ntype CreateHandlerResult =\n | {\n type: \"success\";\n controller: AbortController;\n stream: PipeableStream;\n assets: any;\n route: string;\n }\n | { type: \"error\"; error: Error }\n | { type: \"skip\" };\n\ninterface HandlerAssets {\n css: (string | CssContent)[];\n bootstrapModules: string[];\n}\n\nexport async function createHandler<T>({\n getCss,\n root,\n cssFiles = [],\n cssModules = new Map<string, string | CssContent>(),\n onCssFile,\n logger,\n loader,\n Html,\n CssCollector,\n pagePath,\n propsPath,\n pageExportName,\n propsExportName,\n inlineCss,\n moduleBase,\n preserveModulesRoot: _preserveModulesRoot,\n moduleBasePath,\n moduleRootPath,\n moduleBaseURL,\n route,\n pipableStreamOptions,\n}: CreateHandlerOptions<T>): Promise<CreateHandlerResult> {\n const controller = new AbortController();\n\n const loadWithCss = async (id: string) => {\n try {\n const mod = await loader(id);\n const pageCss = await Promise.resolve(getCss(id));\n Array.from(pageCss.entries()).forEach(([css, linkOrContent]) => {\n cssModules.set(css, linkOrContent);\n // Notify about new CSS file if callback exists\n if (typeof onCssFile === \"function\") {\n onCssFile(css, id);\n }\n });\n return mod as Record<string, any>;\n } catch (e: any) {\n if (e.message?.includes(\"module runner has been closed\")) {\n return { type: \"skip\" } as Record<string, any>;\n } else {\n return { type: \"error\", error: e } as Record<string, any>;\n }\n }\n };\n\n const PropsModule = await resolveProps({\n propsModule: propsPath\n ? await loadWithCss(propsPath)\n : { [propsExportName]: (url: string) => ({url}) },\n path: String(propsPath),\n exportName: propsExportName,\n url: route,\n });\n if (PropsModule.type !== \"success\") {\n return PropsModule;\n }\n const PageModule = await resolvePage({\n pageModule: pagePath\n ? await loadWithCss(pagePath)\n : { [pageExportName]: () => null },\n path: String(pagePath),\n exportName: pageExportName,\n url: route,\n });\n if (PageModule.type !== \"success\") {\n return PageModule;\n }\n\n // Add any additional CSS files\n if (cssFiles) {\n cssFiles.forEach((css) => cssModules.set(typeof css === \"string\" ? css : css.path, css));\n cssFiles = Array.from(cssModules.values());\n }\n const url =\n typeof moduleBaseURL === \"string\" && moduleBaseURL !== \"\"\n ? new URL(route, moduleBaseURL).href\n : route;\n const stream = createRscStream({\n Html: Html,\n CssCollector: CssCollector,\n Page: PageModule[pageExportName as keyof typeof PageModule],\n props: PropsModule[propsExportName as keyof typeof PropsModule],\n moduleBase: moduleBase,\n moduleRootPath: moduleRootPath,\n moduleBasePath: moduleBasePath,\n moduleBaseURL: moduleBaseURL,\n logger: logger,\n cssFiles: Array.from(cssModules.values()),\n route,\n url,\n pipableStreamOptions: pipableStreamOptions,\n htmlProps: {},\n root: root,\n loader: loader,\n inlineCss: inlineCss,\n });\n\n if (!stream) {\n return { type: \"skip\" as const };\n }\n\n const assets: HandlerAssets = {\n css: cssFiles,\n bootstrapModules: pipableStreamOptions?.bootstrapModules ?? [],\n };\n return {\n type: \"success\",\n controller,\n stream,\n assets,\n route: route,\n };\n}\n"],"names":["url"],"mappings":"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"}
1
+ {"version":3,"file":"createHandler.js","sources":["../../../plugin/helpers/createHandler.ts"],"sourcesContent":["import type { CreateHandlerOptions } from \"../types.js\";\nimport { createRscStream } from \"./createRscStream.js\";\n\n\nexport async function createHandler(handlerOptions: CreateHandlerOptions) {\n if(!handlerOptions.PageComponent) {\n throw new Error(\"PageComponent is required\");\n }\n try {\n const adaptedOnEvent = (event: \"error\" | \"postpone\", data: any) => {\n if (event === \"error\") {\n handlerOptions.onEvent?.({\n type: \"route.error\",\n data: {\n route: handlerOptions.route,\n ...data,\n },\n });\n } else if (event === \"postpone\") {\n handlerOptions.onEvent?.({\n type: \"route.postpone\",\n data: {\n route: handlerOptions.route,\n ...data,\n },\n });\n }\n };\n\n const streamResult = createRscStream({\n ...handlerOptions,\n onEvent: adaptedOnEvent,\n cssFiles: handlerOptions.cssFiles,\n PageComponent: handlerOptions.PageComponent as any,\n pageProps: handlerOptions.pageProps,\n });\n\n if (streamResult.type === \"error\") {\n handlerOptions.onEvent?.({\n type: \"route.error\",\n data: {\n route: handlerOptions.route,\n error: streamResult.error,\n },\n });\n throw streamResult.error;\n }\n\n return {\n type: \"success\",\n stream: streamResult.stream,\n };\n } catch (error) {\n handlerOptions.onEvent?.({\n type: \"route.error\",\n data: {\n route: handlerOptions.route,\n error,\n },\n });\n return {\n type: \"error\",\n error: error as Error,\n };\n }\n}\n"],"names":[],"mappings":";;;;;;;AAIA,eAAsB,cAAc,cAAsC,EAAA;AACxE,EAAG,IAAA,CAAC,eAAe,aAAe,EAAA;AAChC,IAAM,MAAA,IAAI,MAAM,2BAA2B,CAAA;AAAA;AAE7C,EAAI,IAAA;AACF,IAAM,MAAA,cAAA,GAAiB,CAAC,KAAA,EAA6B,IAAc,KAAA;AACjE,MAAA,IAAI,UAAU,OAAS,EAAA;AACrB,QAAA,cAAA,CAAe,OAAU,GAAA;AAAA,UACvB,IAAM,EAAA,aAAA;AAAA,UACN,IAAM,EAAA;AAAA,YACJ,OAAO,cAAe,CAAA,KAAA;AAAA,YACtB,GAAG;AAAA;AACL,SACD,CAAA;AAAA,OACH,MAAA,IAAW,UAAU,UAAY,EAAA;AAC/B,QAAA,cAAA,CAAe,OAAU,GAAA;AAAA,UACvB,IAAM,EAAA,gBAAA;AAAA,UACN,IAAM,EAAA;AAAA,YACJ,OAAO,cAAe,CAAA,KAAA;AAAA,YACtB,GAAG;AAAA;AACL,SACD,CAAA;AAAA;AACH,KACF;AAEA,IAAA,MAAM,eAAe,eAAgB,CAAA;AAAA,MACnC,GAAG,cAAA;AAAA,MACH,OAAS,EAAA,cAAA;AAAA,MACT,UAAU,cAAe,CAAA,QAAA;AAAA,MACzB,eAAe,cAAe,CAAA,aAAA;AAAA,MAC9B,WAAW,cAAe,CAAA;AAAA,KAC3B,CAAA;AAED,IAAI,IAAA,YAAA,CAAa,SAAS,OAAS,EAAA;AACjC,MAAA,cAAA,CAAe,OAAU,GAAA;AAAA,QACvB,IAAM,EAAA,aAAA;AAAA,QACN,IAAM,EAAA;AAAA,UACJ,OAAO,cAAe,CAAA,KAAA;AAAA,UACtB,OAAO,YAAa,CAAA;AAAA;AACtB,OACD,CAAA;AACD,MAAA,MAAM,YAAa,CAAA,KAAA;AAAA;AAGrB,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,SAAA;AAAA,MACN,QAAQ,YAAa,CAAA;AAAA,KACvB;AAAA,WACO,KAAO,EAAA;AACd,IAAA,cAAA,CAAe,OAAU,GAAA;AAAA,MACvB,IAAM,EAAA,aAAA;AAAA,MACN,IAAM,EAAA;AAAA,QACJ,OAAO,cAAe,CAAA,KAAA;AAAA,QACtB;AAAA;AACF,KACD,CAAA;AACD,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,OAAA;AAAA,MACN;AAAA,KACF;AAAA;AAEJ;;;;"}
@@ -1,27 +1,13 @@
1
- import * as React from "react";
2
- import type { PipeableStreamOptions } from "../worker/types.js";
3
- import type { Logger } from "vite";
4
- import type { CreateHandlerOptions, CssCollectorProps, CssContent, InlineCssCollectorProps } from "../types.js";
5
- export declare function createRscStream<InlineCSS extends boolean = true>({ Html, Page, props, loader, moduleRootPath, moduleBasePath, moduleBaseURL, logger, cssFiles, route, url, pipableStreamOptions, htmlProps, inlineCss, CssCollector, root, }: {
6
- Html: CreateHandlerOptions["Html"];
7
- Page: React.ComponentType<any>;
8
- loader: (id: string) => Promise<any>;
9
- props: any;
10
- moduleBase: string;
11
- moduleRootPath: string;
12
- moduleBasePath: string;
13
- moduleBaseURL: string;
14
- logger: Logger;
15
- route: string;
16
- url: string;
17
- pipableStreamOptions?: PipeableStreamOptions;
18
- htmlProps?: any;
19
- root: string;
20
- inlineCss?: InlineCSS;
21
- cssFiles?: (string | CssContent)[];
22
- } & (InlineCSS extends true ? {
23
- CssCollector: React.FC<InlineCssCollectorProps>;
24
- } : {
25
- CssCollector: React.FC<CssCollectorProps>;
26
- })): any;
1
+ import type { CreateHandlerOptions, StreamMetrics } from "../types.js";
2
+ export declare function createRscStream<T, C extends React.ComponentType<T>, InlineCSS extends boolean = true>({ Html, PageComponent, pageProps, moduleBase, moduleRootPath, moduleBasePath, moduleBaseURL, cssFiles, globalCss, route, pipeableStreamOptions, CssCollector, manifest, onEvent, projectRoot, }: Pick<CreateHandlerOptions<T, C, InlineCSS>, "Html" | "PageComponent" | "pageProps" | "moduleBase" | "moduleRootPath" | "moduleBasePath" | "moduleBaseURL" | "cssFiles" | "route" | "pipeableStreamOptions" | "CssCollector" | "globalCss" | "manifest" | "projectRoot"> & {
3
+ onEvent?: (event: "error" | "postpone", data: any) => void;
4
+ }): {
5
+ type: "success";
6
+ stream: any;
7
+ metrics: StreamMetrics;
8
+ } | {
9
+ type: "error";
10
+ error: Error;
11
+ metrics: StreamMetrics;
12
+ };
27
13
  //# sourceMappingURL=createRscStream.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createRscStream.d.ts","sourceRoot":"","sources":["../../../plugin/helpers/createRscStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EACV,oBAAoB,EACpB,iBAAiB,EACjB,UAAU,EACV,uBAAuB,EACxB,MAAM,aAAa,CAAC;AAErB,wBAAgB,eAAe,CAAC,SAAS,SAAS,OAAO,GAAG,IAAI,EAAE,EAChE,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,MAAkD,EAClD,cAAc,EACd,cAAc,EACd,aAAa,EACb,MAAM,EACN,QAAa,EACb,KAAK,EACL,GAAG,EACH,oBAAoB,EACpB,SAAS,EACT,SAA6B,EAC7B,YAAY,EACZ,IAAI,GACL,EAAE;IACD,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,KAAK,EAAE,GAAG,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,oBAAoB,CAAC,EAAE,qBAAqB,CAAC;IAC7C,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC;CACpC,GAAG,CAAC,SAAS,SAAS,IAAI,GACvB;IACE,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC;CACjD,GACD;IACE,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC;CAC3C,CAAC,OAwDL"}
1
+ {"version":3,"file":"createRscStream.d.ts","sourceRoot":"","sources":["../../../plugin/helpers/createRscStream.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEvE,wBAAgB,eAAe,CAC7B,CAAC,EACD,CAAC,SAAS,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAChC,SAAS,SAAS,OAAO,GAAG,IAAI,EAChC,EACA,IAAqB,EACrB,aAAa,EACb,SAAS,EACT,UAAU,EACV,cAAc,EACd,cAAc,EACd,aAAa,EACb,QAAoB,EACpB,SAAqB,EACrB,KAAK,EACL,qBAAqB,EACrB,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,WAAW,GACZ,EAAE,IAAI,CACL,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,EACnC,MAAM,GACN,eAAe,GACf,WAAW,GACX,YAAY,GACZ,gBAAgB,GAChB,gBAAgB,GAChB,eAAe,GACf,UAAU,GACV,OAAO,GACP,uBAAuB,GACvB,cAAc,GACd,WAAW,GACX,UAAU,GACV,aAAa,CAChB,GAAG;IACF,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CAC5D,GACG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAAE,CAgH1D"}
@@ -3,76 +3,130 @@
3
3
  * Copyright (c) Nico Brinkkemper
4
4
  * MIT License
5
5
  */
6
- import * as React from 'react';
7
- import { renderToPipeableStream } from 'react-server-dom-esm/server.node';
6
+ import { React, ReactDOMServer } from '../vendor.server.js';
8
7
 
9
8
  function createRscStream({
10
- Html,
11
- Page,
12
- props,
13
- loader = (id) => import(id).then((m) => m.default),
9
+ Html = React.Fragment,
10
+ PageComponent,
11
+ pageProps,
12
+ moduleBase,
14
13
  moduleRootPath,
15
14
  moduleBasePath,
16
15
  moduleBaseURL,
17
- logger,
18
- cssFiles = [],
16
+ cssFiles = /* @__PURE__ */ new Map(),
17
+ globalCss = /* @__PURE__ */ new Map(),
19
18
  route,
20
- url,
21
- pipableStreamOptions,
22
- htmlProps,
23
- inlineCss = true,
19
+ pipeableStreamOptions,
24
20
  CssCollector,
25
- root
21
+ manifest,
22
+ onEvent,
23
+ projectRoot
26
24
  }) {
25
+ const startTime = performance.now();
27
26
  const htmlIsFragment = Html == React.Fragment;
28
- if (!htmlIsFragment) {
29
- if (!htmlProps) {
30
- htmlProps = {};
31
- }
32
- if (!("moduleBaseURL" in htmlProps)) {
33
- htmlProps["moduleBaseURL"] = moduleBaseURL;
34
- }
35
- if (!("moduleBasePath" in htmlProps)) {
36
- htmlProps["moduleBasePath"] = moduleBasePath;
37
- }
38
- if (!("moduleRootPath" in htmlProps)) {
39
- htmlProps["moduleRootPath"] = moduleRootPath;
40
- }
41
- if (!("url" in htmlProps)) {
42
- htmlProps["url"] = url;
43
- }
44
- if (!("route" in htmlProps)) {
45
- htmlProps["route"] = route;
46
- }
47
- if (!("pageProps" in htmlProps)) {
48
- htmlProps["pageProps"] = props;
49
- }
27
+ const url = moduleBaseURL !== "" ? new URL(route, moduleBaseURL).toString() : route;
28
+ let errorCount = 0;
29
+ let streamError = null;
30
+ if (!PageComponent) {
31
+ return {
32
+ type: "error",
33
+ error: new Error("PageComponent is required"),
34
+ metrics: {
35
+ chunks: 0,
36
+ bytes: 0,
37
+ backpressureCount: 0,
38
+ drainCount: 0,
39
+ errorCount: 0,
40
+ duration: 0,
41
+ startTime: 0
42
+ }
43
+ };
50
44
  }
51
- const withCss = React.createElement(
45
+ const elements = htmlIsFragment ? /* @__PURE__ */ React.createElement(
52
46
  CssCollector,
53
- inlineCss === true ? {
54
- cssFiles,
55
- route,
47
+ {
48
+ cssFiles
49
+ },
50
+ /* @__PURE__ */ React.createElement(PageComponent, { ...pageProps })
51
+ ) : /* @__PURE__ */ React.createElement(
52
+ Html,
53
+ {
54
+ moduleBase,
56
55
  moduleBaseURL,
57
56
  moduleBasePath,
58
57
  moduleRootPath,
59
- root,
60
- loader
61
- } : { cssFiles, route, moduleBaseURL },
62
- React.createElement(Page, props)
58
+ projectRoot,
59
+ url,
60
+ route,
61
+ pageProps,
62
+ cssFiles,
63
+ globalCss,
64
+ CssCollector,
65
+ manifest
66
+ },
67
+ /* @__PURE__ */ React.createElement(PageComponent, { ...pageProps })
63
68
  );
64
- const content = htmlIsFragment ? withCss : React.createElement(Html, htmlProps, withCss);
65
69
  try {
66
- return renderToPipeableStream(
67
- content,
70
+ const stream = ReactDOMServer.renderToPipeableStream(
71
+ elements,
68
72
  moduleBasePath,
69
- pipableStreamOptions
73
+ {
74
+ ...pipeableStreamOptions,
75
+ onError(error, errorInfo) {
76
+ const err = error instanceof Error ? error : new Error(String(error));
77
+ streamError = err;
78
+ onEvent?.("error", { route, error: err, errorInfo });
79
+ errorCount++;
80
+ },
81
+ onPostpone(reason) {
82
+ onEvent?.("postpone", { route, reason });
83
+ }
84
+ }
70
85
  );
86
+ if (streamError) {
87
+ return {
88
+ type: "error",
89
+ error: streamError,
90
+ metrics: {
91
+ chunks: 0,
92
+ bytes: 0,
93
+ backpressureCount: 0,
94
+ drainCount: 0,
95
+ errorCount,
96
+ duration: Date.now() - startTime,
97
+ startTime
98
+ }
99
+ };
100
+ }
101
+ return {
102
+ type: "success",
103
+ stream,
104
+ metrics: {
105
+ chunks: 0,
106
+ bytes: 0,
107
+ backpressureCount: 0,
108
+ drainCount: 0,
109
+ errorCount,
110
+ duration: Date.now() - startTime,
111
+ startTime
112
+ }
113
+ };
71
114
  } catch (error) {
72
- logger.error(`Failed to create stream for ${route}.`, {
73
- error
74
- });
75
- return null;
115
+ const err = error instanceof Error ? error : new Error(String(error));
116
+ onEvent?.("error", { route, error: err });
117
+ return {
118
+ type: "error",
119
+ error: err,
120
+ metrics: {
121
+ chunks: 0,
122
+ bytes: 0,
123
+ backpressureCount: 0,
124
+ drainCount: 0,
125
+ errorCount: errorCount + 1,
126
+ duration: Date.now() - startTime,
127
+ startTime
128
+ }
129
+ };
76
130
  }
77
131
  }
78
132
 
@@ -1 +1 @@
1
- {"version":3,"file":"createRscStream.js","sources":["../../../plugin/helpers/createRscStream.ts"],"sourcesContent":["import * as React from \"react\";\n// @ts-ignore\nimport { renderToPipeableStream } from \"react-server-dom-esm/server.node\";\nimport type { PipeableStreamOptions } from \"../worker/types.js\";\nimport type { Logger } from \"vite\";\nimport type {\n CreateHandlerOptions,\n CssCollectorProps,\n CssContent,\n InlineCssCollectorProps,\n} from \"../types.js\";\n\nexport function createRscStream<InlineCSS extends boolean = true>({\n Html,\n Page,\n props,\n loader = (id) => import(id).then((m) => m.default),\n moduleRootPath,\n moduleBasePath,\n moduleBaseURL,\n logger,\n cssFiles = [],\n route,\n url,\n pipableStreamOptions,\n htmlProps,\n inlineCss = true as InlineCSS,\n CssCollector,\n root,\n}: {\n Html: CreateHandlerOptions[\"Html\"];\n Page: React.ComponentType<any>;\n loader: (id: string) => Promise<any>;\n props: any;\n moduleBase: string;\n moduleRootPath: string;\n moduleBasePath: string;\n moduleBaseURL: string;\n logger: Logger;\n route: string;\n url: string;\n pipableStreamOptions?: PipeableStreamOptions;\n htmlProps?: any;\n root: string;\n inlineCss?: InlineCSS;\n cssFiles?: (string | CssContent)[];\n} & (InlineCSS extends true\n ? {\n CssCollector: React.FC<InlineCssCollectorProps>;\n }\n : {\n CssCollector: React.FC<CssCollectorProps>;\n })) {\n const htmlIsFragment = Html == React.Fragment;\n if (!htmlIsFragment) {\n if (!htmlProps) {\n htmlProps = {};\n }\n if (!(\"moduleBaseURL\" in htmlProps)) {\n htmlProps[\"moduleBaseURL\"] = moduleBaseURL;\n }\n if (!(\"moduleBasePath\" in htmlProps)) {\n htmlProps[\"moduleBasePath\"] = moduleBasePath;\n }\n if (!(\"moduleRootPath\" in htmlProps)) {\n htmlProps[\"moduleRootPath\"] = moduleRootPath;\n }\n if (!(\"url\" in htmlProps)) {\n htmlProps[\"url\"] = url;\n }\n if (!(\"route\" in htmlProps)) {\n htmlProps[\"route\"] = route;\n }\n if (!(\"pageProps\" in htmlProps)) {\n htmlProps[\"pageProps\"] = props;\n }\n }\n const withCss = React.createElement(\n CssCollector as any,\n (inlineCss === true\n ? {\n cssFiles: cssFiles,\n route,\n moduleBaseURL,\n moduleBasePath,\n moduleRootPath,\n root,\n loader,\n }\n : { cssFiles: cssFiles, route, moduleBaseURL }) as any,\n React.createElement(Page, props)\n );\n // Otherwise wrap with Html component\n const content = htmlIsFragment\n ? withCss\n : React.createElement(Html, htmlProps, withCss);\n try {\n return renderToPipeableStream(\n content,\n moduleBasePath,\n pipableStreamOptions\n );\n } catch (error) {\n logger.error(`Failed to create stream for ${route}.`, {\n error: error as Error,\n });\n return null;\n }\n}\n"],"names":[],"mappings":";;;;;;;;AAYO,SAAS,eAAkD,CAAA;AAAA,EAChE,IAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA,GAAS,CAAC,EAAO,KAAA,OAAO,IAAI,IAAK,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,OAAO,CAAA;AAAA,EACjD,cAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAW,EAAC;AAAA,EACZ,KAAA;AAAA,EACA,GAAA;AAAA,EACA,oBAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAY,GAAA,IAAA;AAAA,EACZ,YAAA;AAAA,EACA;AACF,CAuBQ,EAAA;AACN,EAAM,MAAA,cAAA,GAAiB,QAAQ,KAAM,CAAA,QAAA;AACrC,EAAA,IAAI,CAAC,cAAgB,EAAA;AACnB,IAAA,IAAI,CAAC,SAAW,EAAA;AACd,MAAA,SAAA,GAAY,EAAC;AAAA;AAEf,IAAI,IAAA,EAAE,mBAAmB,SAAY,CAAA,EAAA;AACnC,MAAA,SAAA,CAAU,eAAe,CAAI,GAAA,aAAA;AAAA;AAE/B,IAAI,IAAA,EAAE,oBAAoB,SAAY,CAAA,EAAA;AACpC,MAAA,SAAA,CAAU,gBAAgB,CAAI,GAAA,cAAA;AAAA;AAEhC,IAAI,IAAA,EAAE,oBAAoB,SAAY,CAAA,EAAA;AACpC,MAAA,SAAA,CAAU,gBAAgB,CAAI,GAAA,cAAA;AAAA;AAEhC,IAAI,IAAA,EAAE,SAAS,SAAY,CAAA,EAAA;AACzB,MAAA,SAAA,CAAU,KAAK,CAAI,GAAA,GAAA;AAAA;AAErB,IAAI,IAAA,EAAE,WAAW,SAAY,CAAA,EAAA;AAC3B,MAAA,SAAA,CAAU,OAAO,CAAI,GAAA,KAAA;AAAA;AAEvB,IAAI,IAAA,EAAE,eAAe,SAAY,CAAA,EAAA;AAC/B,MAAA,SAAA,CAAU,WAAW,CAAI,GAAA,KAAA;AAAA;AAC3B;AAEF,EAAA,MAAM,UAAU,KAAM,CAAA,aAAA;AAAA,IACpB,YAAA;AAAA,IACC,cAAc,IACX,GAAA;AAAA,MACE,QAAA;AAAA,MACA,KAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,KAEF,GAAA,EAAE,QAAoB,EAAA,KAAA,EAAO,aAAc,EAAA;AAAA,IAC/C,KAAA,CAAM,aAAc,CAAA,IAAA,EAAM,KAAK;AAAA,GACjC;AAEA,EAAA,MAAM,UAAU,cACZ,GAAA,OAAA,GACA,MAAM,aAAc,CAAA,IAAA,EAAM,WAAW,OAAO,CAAA;AAChD,EAAI,IAAA;AACF,IAAO,OAAA,sBAAA;AAAA,MACL,OAAA;AAAA,MACA,cAAA;AAAA,MACA;AAAA,KACF;AAAA,WACO,KAAO,EAAA;AACd,IAAO,MAAA,CAAA,KAAA,CAAM,CAA+B,4BAAA,EAAA,KAAK,CAAK,CAAA,CAAA,EAAA;AAAA,MACpD;AAAA,KACD,CAAA;AACD,IAAO,OAAA,IAAA;AAAA;AAEX;;;;"}
1
+ {"version":3,"file":"createRscStream.js","sources":["../../../plugin/helpers/createRscStream.tsx"],"sourcesContent":["import { React, ReactDOMServer } from \"../vendor.server.js\";\nimport type { CreateHandlerOptions, StreamMetrics } from \"../types.js\";\n\nexport function createRscStream<\n T,\n C extends React.ComponentType<T>,\n InlineCSS extends boolean = true\n>({\n Html = React.Fragment,\n PageComponent,\n pageProps,\n moduleBase,\n moduleRootPath,\n moduleBasePath,\n moduleBaseURL,\n cssFiles = new Map(),\n globalCss = new Map(),\n route,\n pipeableStreamOptions,\n CssCollector,\n manifest,\n onEvent,\n projectRoot,\n}: Pick<\n CreateHandlerOptions<T, C, InlineCSS>,\n | \"Html\"\n | \"PageComponent\"\n | \"pageProps\"\n | \"moduleBase\"\n | \"moduleRootPath\"\n | \"moduleBasePath\"\n | \"moduleBaseURL\"\n | \"cssFiles\"\n | \"route\"\n | \"pipeableStreamOptions\"\n | \"CssCollector\"\n | \"globalCss\"\n | \"manifest\"\n | \"projectRoot\"\n> & {\n onEvent?: (event: \"error\" | \"postpone\", data: any) => void;\n}):\n | { type: \"success\"; stream: any; metrics: StreamMetrics }\n | { type: \"error\"; error: Error; metrics: StreamMetrics } {\n const startTime = performance.now()\n const htmlIsFragment = Html == React.Fragment;\n const url =\n moduleBaseURL !== \"\" ? new URL(route, moduleBaseURL).toString() : route;\n let errorCount = 0;\n let streamError: Error | null = null;\n\n if (!PageComponent) {\n return {\n type: \"error\",\n error: new Error(\"PageComponent is required\"),\n metrics: {\n chunks: 0,\n bytes: 0,\n backpressureCount: 0,\n drainCount: 0,\n errorCount: 0,\n duration: 0,\n startTime: 0,\n },\n };\n }\n const elements = htmlIsFragment ? (\n <CssCollector\n cssFiles={cssFiles}\n >\n <PageComponent {...(pageProps as any)} />\n </CssCollector>\n ) : (\n <Html\n moduleBase={moduleBase}\n moduleBaseURL={moduleBaseURL}\n moduleBasePath={moduleBasePath}\n moduleRootPath={moduleRootPath}\n projectRoot={projectRoot}\n url={url}\n route={route}\n pageProps={pageProps}\n cssFiles={cssFiles}\n globalCss={globalCss}\n CssCollector={CssCollector}\n manifest={manifest}\n >\n <PageComponent {...(pageProps as any)} />\n </Html>\n );\n try {\n const stream = ReactDOMServer.renderToPipeableStream(\n elements,\n moduleBasePath,\n {\n ...pipeableStreamOptions,\n onError(error: Error, errorInfo: any) {\n const err = error instanceof Error ? error : new Error(String(error));\n streamError = err;\n onEvent?.(\"error\", { route, error: err, errorInfo });\n errorCount++;\n },\n onPostpone(reason: string) {\n onEvent?.(\"postpone\", { route, reason });\n },\n }\n );\n\n // If we have a stream error, return it immediately\n if (streamError) {\n return {\n type: \"error\",\n error: streamError,\n metrics: {\n chunks: 0,\n bytes: 0,\n backpressureCount: 0,\n drainCount: 0,\n errorCount,\n duration: Date.now() - startTime,\n startTime: startTime,\n },\n };\n }\n\n return {\n type: \"success\",\n stream,\n metrics: {\n chunks: 0,\n bytes: 0,\n backpressureCount: 0,\n drainCount: 0,\n errorCount,\n duration: Date.now() - startTime,\n startTime: startTime,\n },\n };\n } catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n onEvent?.(\"error\", { route, error: err });\n return {\n type: \"error\",\n error: err,\n metrics: {\n chunks: 0,\n bytes: 0,\n backpressureCount: 0,\n drainCount: 0,\n errorCount: errorCount + 1,\n duration: Date.now() - startTime,\n startTime: startTime,\n },\n };\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=defaultFileWriter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultFileWriter.d.ts","sourceRoot":"","sources":["../../../plugin/helpers/defaultFileWriter.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export {};
@@ -1,13 +1,6 @@
1
- import type { OutputBundle, PluginContext } from "rollup";
2
- interface BundleManifestEntry {
3
- file: string;
4
- name: string;
5
- src?: string;
6
- isEntry?: boolean;
7
- imports?: string[];
8
- dynamicImports?: string[];
9
- css?: string[];
10
- }
1
+ import type { OutputBundle } from "rollup";
2
+ import type { ManifestChunk } from "vite";
3
+ import type { InputNormalizer } from "../types.js";
11
4
  /**
12
5
  * Get the bundle manifest from the plugin context. Will only work during production build
13
6
  * @param pluginContext - The plugin context
@@ -15,11 +8,12 @@ interface BundleManifestEntry {
15
8
  * @param preserveModulesRoot - The preserve modules root
16
9
  * @returns The bundle manifest
17
10
  */
18
- export declare function getBundleManifest({ pluginContext, bundle, moduleBase, preserveModulesRoot, }: {
19
- pluginContext: PluginContext;
11
+ export declare function getBundleManifest<SSR extends boolean>({ bundle, normalizer, }: {
20
12
  bundle: OutputBundle;
21
- moduleBase?: string;
22
- preserveModulesRoot?: boolean;
23
- }): Record<string, BundleManifestEntry>;
24
- export {};
13
+ normalizer: InputNormalizer;
14
+ }): SSR extends true ? Record<string, string[]> : {
15
+ [key: string]: ManifestChunk & {
16
+ source: string;
17
+ };
18
+ };
25
19
  //# sourceMappingURL=getBundleManifest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getBundleManifest.d.ts","sourceRoot":"","sources":["../../../plugin/helpers/getBundleManifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EAEd,MAAM,QAAQ,CAAC;AAIhB,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,aAAa,EACb,MAAM,EACN,UAAU,EACV,mBAAmB,GACpB,EAAE;IACD,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAsFtC"}
1
+ {"version":3,"file":"getBundleManifest.d.ts","sourceRoot":"","sources":["../../../plugin/helpers/getBundleManifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAEb,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EAAG,aAAa,EAAE,MAAM,MAAM,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,SAAS,OAAO,EAAE,EACrD,MAAM,EACN,UAAU,GACX,EAAE;IACD,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,eAAe,CAAC;CAC7B,GAAG,GAAG,SAAS,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG;IAChD,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG;QAC7B,MAAM,EAAE,MAAM,CAAC;KAChB,CAAA;CACF,CAqGA"}
@@ -3,27 +3,37 @@
3
3
  * Copyright (c) Nico Brinkkemper
4
4
  * MIT License
5
5
  */
6
- import { createInputNormalizer } from './inputNormalizer.js';
7
- import { DEFAULT_CONFIG } from '../config/defaults.js';
8
-
9
6
  function getBundleManifest({
10
- pluginContext,
11
7
  bundle,
12
- moduleBase,
13
- preserveModulesRoot
8
+ normalizer
14
9
  }) {
15
- const normalizer = createInputNormalizer({
16
- root: pluginContext.environment.config.root,
17
- removeExtension: DEFAULT_CONFIG.FILE_REGEX,
18
- preserveModulesRoot: preserveModulesRoot === true ? moduleBase : undefined
19
- });
20
10
  if (!bundle) return {};
21
11
  const virtualModules = /* @__PURE__ */ new Map();
22
12
  const bundleManifest = Object.fromEntries(
23
- Object.entries(bundle).map(([fileName, chunk]) => {
24
- if (chunk.type !== "chunk") return null;
13
+ Object.entries(bundle).map(([originalFileName, chunk]) => {
14
+ if (!originalFileName && "file" in chunk) {
15
+ return [
16
+ chunk.file,
17
+ {
18
+ file: chunk.file,
19
+ source: "source" in chunk ? chunk.source : undefined
20
+ }
21
+ ];
22
+ }
23
+ if (chunk.type === "asset") {
24
+ return [
25
+ originalFileName,
26
+ {
27
+ file: chunk.fileName,
28
+ name: chunk.names[0],
29
+ src: originalFileName,
30
+ source: chunk.source,
31
+ isEntry: chunk.needsCodeReference
32
+ }
33
+ ];
34
+ }
25
35
  const chunkWithFacade = chunk;
26
- const moduleId = chunkWithFacade.facadeModuleId || chunkWithFacade.moduleIds[0] || fileName;
36
+ const moduleId = chunkWithFacade.facadeModuleId || chunkWithFacade.moduleIds[0] || originalFileName;
27
37
  if (moduleId.includes("commonjsHelpers")) {
28
38
  return [
29
39
  moduleId,
@@ -36,13 +46,13 @@ function getBundleManifest({
36
46
  ];
37
47
  }
38
48
  let [normalizedId, sourcePath] = normalizer(moduleId);
39
- let finalFileName = fileName;
49
+ let finalFileName = originalFileName;
40
50
  if (moduleId.includes("?")) {
41
51
  const [basePath, query] = moduleId.split("?");
42
52
  const virtualPath = basePath.includes("node_modules") ? basePath.split("node_modules/")[1] : basePath;
43
53
  const virtualKey = `${virtualPath}?${query}`;
44
54
  if (!virtualModules.has(virtualKey)) {
45
- const virtualFileName = `${virtualPath.replace(/\.js$/, "")}.${query}.js`;
55
+ const virtualFileName = query === "inline" ? virtualPath : `${virtualPath}.${query}.js`;
46
56
  virtualModules.set(virtualKey, virtualFileName);
47
57
  }
48
58
  finalFileName = virtualModules.get(virtualKey);
@@ -53,9 +63,9 @@ function getBundleManifest({
53
63
  if (sourcePath.startsWith("/")) {
54
64
  sourcePath = sourcePath.slice(1);
55
65
  }
56
- if (moduleBase && preserveModulesRoot && normalizedId?.startsWith(moduleBase + "/")) {
57
- normalizedId = normalizedId.slice(moduleBase.length + 1);
58
- }
66
+ const withCss = chunk.viteMetadata?.importedCss?.size ? {
67
+ css: Array.from(chunk.viteMetadata.importedCss)
68
+ } : {};
59
69
  const bundleManifestEntry = [
60
70
  sourcePath,
61
71
  {
@@ -65,9 +75,7 @@ function getBundleManifest({
65
75
  isEntry: chunk.isEntry,
66
76
  ...chunk.imports?.length > 0 ? { imports: chunk.imports } : {},
67
77
  ...chunk.dynamicImports?.length > 0 ? { dynamicImports: chunk.dynamicImports } : {},
68
- ...chunk.viteMetadata?.importedCss?.size ? {
69
- css: Array.from(chunk.viteMetadata.importedCss)
70
- } : {}
78
+ ...withCss
71
79
  }
72
80
  ];
73
81
  return bundleManifestEntry;