@bleedingdev/modern-js-runtime 3.2.0-ultramodern.99 → 3.4.0-ultramodern.1

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 (322) hide show
  1. package/dist/cjs/boundary-debugger/index.js +19 -11
  2. package/dist/cjs/cache/index.js +9 -5
  3. package/dist/cjs/cli/alias.js +9 -5
  4. package/dist/cjs/cli/code.js +9 -5
  5. package/dist/cjs/cli/constants.js +20 -16
  6. package/dist/cjs/cli/entry.js +9 -5
  7. package/dist/cjs/cli/index.js +20 -5
  8. package/dist/cjs/cli/ssr/index.js +9 -5
  9. package/dist/cjs/cli/ssr/loadable-bundler-plugin.js +9 -5
  10. package/dist/cjs/cli/ssr/mode.js +12 -8
  11. package/dist/cjs/cli/template.js +9 -5
  12. package/dist/cjs/cli/template.server.js +9 -5
  13. package/dist/cjs/common.js +14 -10
  14. package/dist/cjs/core/browser/hydrate.js +9 -5
  15. package/dist/cjs/core/browser/index.js +9 -5
  16. package/dist/cjs/core/browser/withCallback.js +9 -5
  17. package/dist/cjs/core/compat/hooks.js +14 -10
  18. package/dist/cjs/core/compat/index.js +9 -5
  19. package/dist/cjs/core/compat/requestContext.js +13 -9
  20. package/dist/cjs/core/config.js +12 -8
  21. package/dist/cjs/core/constants.js +15 -10
  22. package/dist/cjs/core/context/extensions.js +69 -0
  23. package/dist/cjs/core/context/helmetContext.js +54 -0
  24. package/dist/cjs/core/context/index.js +74 -5
  25. package/dist/cjs/core/context/monitors/default.js +12 -8
  26. package/dist/cjs/core/context/monitors/index.js +9 -5
  27. package/dist/cjs/core/context/monitors/index.server.js +9 -5
  28. package/dist/cjs/core/context/request/index.js +12 -8
  29. package/dist/cjs/core/context/request/index.server.js +9 -5
  30. package/dist/cjs/core/context/response/index.js +15 -11
  31. package/dist/cjs/core/context/response/index.server.js +9 -5
  32. package/dist/cjs/core/context/runtime.js +9 -5
  33. package/dist/cjs/core/context/serverPayload/index.js +13 -9
  34. package/dist/cjs/core/context/serverPayload/index.server.js +9 -5
  35. package/dist/cjs/core/index.js +9 -5
  36. package/dist/cjs/core/plugin/index.js +9 -5
  37. package/dist/cjs/core/react/index.js +9 -5
  38. package/dist/cjs/core/react/wrapper.js +15 -9
  39. package/dist/cjs/core/server/constants.js +15 -11
  40. package/dist/cjs/core/server/federatedCss.js +11 -7
  41. package/dist/cjs/core/server/helmet.js +11 -6
  42. package/dist/cjs/core/server/index.js +9 -5
  43. package/dist/cjs/core/server/react/index.js +9 -5
  44. package/dist/cjs/core/server/react/no-ssr-cache/index.js +9 -5
  45. package/dist/cjs/core/server/react/nossr/index.js +9 -5
  46. package/dist/cjs/core/server/requestHandler.js +51 -34
  47. package/dist/cjs/core/server/routerCleanup.js +110 -0
  48. package/dist/cjs/core/server/scriptOrder.js +84 -9
  49. package/dist/cjs/core/server/server.js +9 -5
  50. package/dist/cjs/core/server/shared.js +12 -8
  51. package/dist/cjs/core/server/stream/afterTemplate.js +15 -23
  52. package/dist/cjs/core/server/stream/beforeTemplate.js +11 -7
  53. package/dist/cjs/core/server/stream/beforeTemplate.worker.js +10 -6
  54. package/dist/cjs/core/server/stream/createReadableStream.js +16 -10
  55. package/dist/cjs/core/server/stream/createReadableStream.worker.js +15 -7
  56. package/dist/cjs/core/server/stream/deferredScript.js +13 -6
  57. package/dist/cjs/core/server/stream/index.js +9 -5
  58. package/dist/cjs/core/server/stream/shared.js +9 -5
  59. package/dist/cjs/core/server/stream/template.js +9 -5
  60. package/dist/cjs/core/server/string/index.js +10 -12
  61. package/dist/cjs/core/server/string/loadable.js +24 -54
  62. package/dist/cjs/core/server/string/ssrData.js +10 -6
  63. package/dist/cjs/core/server/tracer.js +13 -9
  64. package/dist/cjs/core/server/utils.js +63 -13
  65. package/dist/cjs/document/Body.js +9 -5
  66. package/dist/cjs/document/Comment.js +9 -5
  67. package/dist/cjs/document/DocumentContext.js +9 -5
  68. package/dist/cjs/document/DocumentStructureContext.js +9 -5
  69. package/dist/cjs/document/Head.js +9 -5
  70. package/dist/cjs/document/Html.js +9 -5
  71. package/dist/cjs/document/Links.js +9 -5
  72. package/dist/cjs/document/Root.js +9 -5
  73. package/dist/cjs/document/Script.js +9 -5
  74. package/dist/cjs/document/Scripts.js +9 -5
  75. package/dist/cjs/document/Style.js +9 -5
  76. package/dist/cjs/document/Title.js +9 -5
  77. package/dist/cjs/document/cli/index.js +14 -11
  78. package/dist/cjs/document/constants.js +9 -5
  79. package/dist/cjs/document/index.js +9 -5
  80. package/dist/cjs/exports/config-routes.js +12 -8
  81. package/dist/cjs/exports/head.js +153 -83
  82. package/dist/cjs/exports/loadable.js +27 -18
  83. package/dist/cjs/exports/tanstack-router.js +50 -58
  84. package/dist/cjs/index.js +9 -5
  85. package/dist/cjs/internal.js +9 -5
  86. package/dist/cjs/module-federation/index.js +178 -0
  87. package/dist/cjs/react-server.js +9 -5
  88. package/dist/cjs/router/cli/code/getClientRoutes/getRoutes.js +9 -5
  89. package/dist/cjs/router/cli/code/getClientRoutes/index.js +9 -5
  90. package/dist/cjs/router/cli/code/getClientRoutes/utils.js +9 -5
  91. package/dist/cjs/router/cli/code/index.js +16 -52
  92. package/dist/cjs/router/cli/code/inspect.js +9 -5
  93. package/dist/cjs/router/cli/code/makeLegalIdentifier.js +12 -8
  94. package/dist/cjs/router/cli/code/nestedRoutes.js +9 -5
  95. package/dist/cjs/router/cli/code/templates.js +10 -19
  96. package/dist/cjs/router/cli/code/utils.js +9 -5
  97. package/dist/cjs/router/cli/config-routes/converter.js +9 -5
  98. package/dist/cjs/router/cli/config-routes/parseRouteConfig.js +9 -5
  99. package/dist/cjs/router/cli/constants.js +23 -19
  100. package/dist/cjs/router/cli/entry.js +9 -5
  101. package/dist/cjs/router/cli/handler.js +10 -6
  102. package/dist/cjs/router/cli/index.js +11 -29
  103. package/dist/cjs/router/index.js +9 -5
  104. package/dist/cjs/router/internal.js +12 -8
  105. package/dist/cjs/router/runtime/CSSLinks.js +9 -5
  106. package/dist/cjs/router/runtime/DefaultNotFound.js +9 -5
  107. package/dist/cjs/router/runtime/DeferredDataScripts.js +12 -8
  108. package/dist/cjs/router/runtime/DeferredDataScripts.node.js +25 -9
  109. package/dist/cjs/router/runtime/PrefetchLink.js +161 -26
  110. package/dist/cjs/router/runtime/constants.js +9 -5
  111. package/dist/cjs/router/runtime/hooks.js +9 -5
  112. package/dist/cjs/router/runtime/index.js +15 -10
  113. package/dist/cjs/router/runtime/internal.js +29 -18
  114. package/dist/cjs/router/runtime/lifecycle.js +38 -19
  115. package/dist/cjs/router/runtime/plugin.js +11 -14
  116. package/dist/cjs/router/runtime/plugin.node.js +11 -12
  117. package/dist/cjs/router/runtime/provider.js +107 -0
  118. package/dist/cjs/router/runtime/routerHelper.js +9 -5
  119. package/dist/cjs/router/runtime/rsc-router.js +19 -9
  120. package/dist/cjs/router/runtime/rsc.js +9 -5
  121. package/dist/cjs/router/runtime/server.js +9 -5
  122. package/dist/cjs/router/runtime/utils.js +44 -15
  123. package/dist/cjs/router/runtime/withRouter.js +9 -5
  124. package/dist/cjs/rsc/client.js +12 -8
  125. package/dist/cjs/rsc/server.js +9 -5
  126. package/dist/cjs/rsc/server.worker.js +9 -5
  127. package/dist/esm/boundary-debugger/index.mjs +10 -6
  128. package/dist/esm/cli/index.mjs +4 -2
  129. package/dist/esm/core/context/extensions.mjs +28 -0
  130. package/dist/esm/core/context/helmetContext.mjs +13 -0
  131. package/dist/esm/core/context/index.mjs +5 -0
  132. package/dist/esm/core/react/wrapper.mjs +6 -4
  133. package/dist/esm/core/server/federatedCss.mjs +2 -2
  134. package/dist/esm/core/server/helmet.mjs +2 -1
  135. package/dist/esm/core/server/requestHandler.mjs +43 -30
  136. package/dist/esm/core/server/routerCleanup.mjs +66 -0
  137. package/dist/esm/core/server/scriptOrder.mjs +62 -3
  138. package/dist/esm/core/server/stream/afterTemplate.mjs +8 -20
  139. package/dist/esm/core/server/stream/beforeTemplate.mjs +3 -3
  140. package/dist/esm/core/server/stream/beforeTemplate.worker.mjs +1 -1
  141. package/dist/esm/core/server/stream/createReadableStream.mjs +7 -5
  142. package/dist/esm/core/server/stream/createReadableStream.worker.mjs +6 -2
  143. package/dist/esm/core/server/stream/deferredScript.mjs +4 -1
  144. package/dist/esm/core/server/string/index.mjs +3 -9
  145. package/dist/esm/core/server/string/loadable.mjs +14 -48
  146. package/dist/esm/core/server/string/ssrData.mjs +2 -2
  147. package/dist/esm/core/server/utils.mjs +52 -9
  148. package/dist/esm/document/cli/index.mjs +5 -6
  149. package/dist/esm/exports/head.mjs +144 -78
  150. package/dist/esm/exports/loadable.mjs +12 -6
  151. package/dist/esm/exports/tanstack-router.mjs +30 -3
  152. package/dist/esm/module-federation/index.mjs +109 -0
  153. package/dist/esm/router/cli/code/index.mjs +8 -48
  154. package/dist/esm/router/cli/code/templates.mjs +1 -14
  155. package/dist/esm/router/cli/handler.mjs +1 -1
  156. package/dist/esm/router/cli/index.mjs +3 -25
  157. package/dist/esm/router/runtime/DeferredDataScripts.node.mjs +16 -4
  158. package/dist/esm/router/runtime/PrefetchLink.mjs +152 -21
  159. package/dist/esm/router/runtime/internal.mjs +16 -15
  160. package/dist/esm/router/runtime/lifecycle.mjs +22 -13
  161. package/dist/esm/router/runtime/plugin.mjs +4 -11
  162. package/dist/esm/router/runtime/plugin.node.mjs +4 -9
  163. package/dist/esm/router/runtime/provider.mjs +57 -0
  164. package/dist/esm/router/runtime/rsc-router.mjs +10 -4
  165. package/dist/esm/router/runtime/utils.mjs +35 -10
  166. package/dist/esm-node/boundary-debugger/index.mjs +10 -6
  167. package/dist/esm-node/cli/index.mjs +4 -2
  168. package/dist/esm-node/core/context/extensions.mjs +29 -0
  169. package/dist/esm-node/core/context/helmetContext.mjs +14 -0
  170. package/dist/esm-node/core/context/index.mjs +5 -0
  171. package/dist/esm-node/core/react/wrapper.mjs +6 -4
  172. package/dist/esm-node/core/server/federatedCss.mjs +2 -2
  173. package/dist/esm-node/core/server/helmet.mjs +2 -1
  174. package/dist/esm-node/core/server/requestHandler.mjs +43 -30
  175. package/dist/esm-node/core/server/routerCleanup.mjs +67 -0
  176. package/dist/esm-node/core/server/scriptOrder.mjs +62 -3
  177. package/dist/esm-node/core/server/stream/afterTemplate.mjs +8 -20
  178. package/dist/esm-node/core/server/stream/beforeTemplate.mjs +3 -3
  179. package/dist/esm-node/core/server/stream/beforeTemplate.worker.mjs +1 -1
  180. package/dist/esm-node/core/server/stream/createReadableStream.mjs +7 -5
  181. package/dist/esm-node/core/server/stream/createReadableStream.worker.mjs +6 -2
  182. package/dist/esm-node/core/server/stream/deferredScript.mjs +4 -1
  183. package/dist/esm-node/core/server/string/index.mjs +3 -9
  184. package/dist/esm-node/core/server/string/loadable.mjs +14 -48
  185. package/dist/esm-node/core/server/string/ssrData.mjs +2 -2
  186. package/dist/esm-node/core/server/utils.mjs +52 -9
  187. package/dist/esm-node/document/cli/index.mjs +5 -6
  188. package/dist/esm-node/exports/head.mjs +144 -78
  189. package/dist/esm-node/exports/loadable.mjs +12 -6
  190. package/dist/esm-node/exports/tanstack-router.mjs +30 -3
  191. package/dist/esm-node/module-federation/index.mjs +110 -0
  192. package/dist/esm-node/router/cli/code/index.mjs +8 -48
  193. package/dist/esm-node/router/cli/code/templates.mjs +1 -14
  194. package/dist/esm-node/router/cli/handler.mjs +1 -1
  195. package/dist/esm-node/router/cli/index.mjs +3 -25
  196. package/dist/esm-node/router/runtime/DeferredDataScripts.node.mjs +16 -4
  197. package/dist/esm-node/router/runtime/PrefetchLink.mjs +152 -21
  198. package/dist/esm-node/router/runtime/internal.mjs +16 -15
  199. package/dist/esm-node/router/runtime/lifecycle.mjs +22 -13
  200. package/dist/esm-node/router/runtime/plugin.mjs +4 -11
  201. package/dist/esm-node/router/runtime/plugin.node.mjs +4 -9
  202. package/dist/esm-node/router/runtime/provider.mjs +58 -0
  203. package/dist/esm-node/router/runtime/rsc-router.mjs +10 -4
  204. package/dist/esm-node/router/runtime/utils.mjs +35 -10
  205. package/dist/types/cli/entry.d.ts +2 -2
  206. package/dist/types/cli/index.d.ts +3 -1
  207. package/dist/types/core/context/extensions.d.ts +37 -0
  208. package/dist/types/core/context/helmetContext.d.ts +10 -0
  209. package/dist/types/core/context/index.d.ts +6 -0
  210. package/dist/types/core/context/response/index.server.d.ts +4 -1
  211. package/dist/types/core/context/runtime.d.ts +1 -11
  212. package/dist/types/core/plugin/index.d.ts +1 -1
  213. package/dist/types/core/server/routerCleanup.d.ts +28 -0
  214. package/dist/types/core/server/scriptOrder.d.ts +24 -0
  215. package/dist/types/core/server/string/loadable.d.ts +1 -7
  216. package/dist/types/core/server/utils.d.ts +19 -1
  217. package/dist/types/document/constants.d.ts +3 -1
  218. package/dist/types/exports/head.d.ts +4 -4
  219. package/dist/types/exports/loadable.d.ts +1 -1
  220. package/dist/types/exports/tanstack-router.d.ts +88 -5
  221. package/dist/types/module-federation/index.d.ts +65 -0
  222. package/dist/types/router/cli/code/index.d.ts +1 -3
  223. package/dist/types/router/cli/code/utils.d.ts +1 -1
  224. package/dist/types/router/cli/entry.d.ts +1 -1
  225. package/dist/types/router/cli/handler.d.ts +0 -3
  226. package/dist/types/router/runtime/DeferredDataScripts.d.ts +1 -1
  227. package/dist/types/router/runtime/PrefetchLink.d.ts +5 -1
  228. package/dist/types/router/runtime/internal.d.ts +1 -0
  229. package/dist/types/router/runtime/lifecycle.d.ts +2 -0
  230. package/dist/types/router/runtime/plugin.d.ts +1 -1
  231. package/dist/types/router/runtime/plugin.node.d.ts +1 -1
  232. package/dist/types/router/runtime/provider.d.ts +61 -0
  233. package/package.json +34 -26
  234. package/rstest.config.mts +2 -4
  235. package/dist/cjs/router/cli/code/tanstackTypes.js +0 -443
  236. package/dist/cjs/router/runtime/tanstack/basepathRewrite.js +0 -62
  237. package/dist/cjs/router/runtime/tanstack/dataMutation.js +0 -345
  238. package/dist/cjs/router/runtime/tanstack/hydrationBoundary.js +0 -43
  239. package/dist/cjs/router/runtime/tanstack/plugin.js +0 -240
  240. package/dist/cjs/router/runtime/tanstack/plugin.node.js +0 -268
  241. package/dist/cjs/router/runtime/tanstack/prefetchLink.js +0 -55
  242. package/dist/cjs/router/runtime/tanstack/routeTree.js +0 -510
  243. package/dist/cjs/router/runtime/tanstack/rsc/ClientSlot.js +0 -53
  244. package/dist/cjs/router/runtime/tanstack/rsc/CompositeComponent.js +0 -75
  245. package/dist/cjs/router/runtime/tanstack/rsc/ReplayableStream.js +0 -141
  246. package/dist/cjs/router/runtime/tanstack/rsc/RscNodeRenderer.js +0 -65
  247. package/dist/cjs/router/runtime/tanstack/rsc/SlotContext.js +0 -54
  248. package/dist/cjs/router/runtime/tanstack/rsc/client.js +0 -93
  249. package/dist/cjs/router/runtime/tanstack/rsc/createRscProxy.js +0 -141
  250. package/dist/cjs/router/runtime/tanstack/rsc/index.js +0 -42
  251. package/dist/cjs/router/runtime/tanstack/rsc/server.js +0 -246
  252. package/dist/cjs/router/runtime/tanstack/rsc/slotUsageSanitizer.js +0 -65
  253. package/dist/cjs/router/runtime/tanstack/rsc/symbols.js +0 -72
  254. package/dist/cjs/ssr/index.node.js +0 -121
  255. package/dist/cjs/ssr/serverRender/renderToStream/buildTemplate.after.js +0 -84
  256. package/dist/cjs/ssr/serverRender/renderToString/entry.js +0 -196
  257. package/dist/cjs/ssr/serverRender/types.js +0 -36
  258. package/dist/esm/router/cli/code/tanstackTypes.mjs +0 -396
  259. package/dist/esm/router/runtime/tanstack/basepathRewrite.mjs +0 -28
  260. package/dist/esm/router/runtime/tanstack/dataMutation.mjs +0 -305
  261. package/dist/esm/router/runtime/tanstack/hydrationBoundary.mjs +0 -9
  262. package/dist/esm/router/runtime/tanstack/plugin.mjs +0 -206
  263. package/dist/esm/router/runtime/tanstack/plugin.node.mjs +0 -234
  264. package/dist/esm/router/runtime/tanstack/prefetchLink.mjs +0 -18
  265. package/dist/esm/router/runtime/tanstack/routeTree.mjs +0 -470
  266. package/dist/esm/router/runtime/tanstack/rsc/ClientSlot.mjs +0 -19
  267. package/dist/esm/router/runtime/tanstack/rsc/CompositeComponent.mjs +0 -41
  268. package/dist/esm/router/runtime/tanstack/rsc/ReplayableStream.mjs +0 -104
  269. package/dist/esm/router/runtime/tanstack/rsc/RscNodeRenderer.mjs +0 -31
  270. package/dist/esm/router/runtime/tanstack/rsc/SlotContext.mjs +0 -17
  271. package/dist/esm/router/runtime/tanstack/rsc/client.mjs +0 -53
  272. package/dist/esm/router/runtime/tanstack/rsc/createRscProxy.mjs +0 -107
  273. package/dist/esm/router/runtime/tanstack/rsc/index.mjs +0 -1
  274. package/dist/esm/router/runtime/tanstack/rsc/server.mjs +0 -200
  275. package/dist/esm/router/runtime/tanstack/rsc/slotUsageSanitizer.mjs +0 -31
  276. package/dist/esm/router/runtime/tanstack/rsc/symbols.mjs +0 -17
  277. package/dist/esm/ssr/index.node.mjs +0 -44
  278. package/dist/esm/ssr/serverRender/renderToStream/buildTemplate.after.mjs +0 -50
  279. package/dist/esm/ssr/serverRender/renderToString/entry.mjs +0 -151
  280. package/dist/esm/ssr/serverRender/types.mjs +0 -1
  281. package/dist/esm-node/router/cli/code/tanstackTypes.mjs +0 -397
  282. package/dist/esm-node/router/runtime/tanstack/basepathRewrite.mjs +0 -29
  283. package/dist/esm-node/router/runtime/tanstack/dataMutation.mjs +0 -306
  284. package/dist/esm-node/router/runtime/tanstack/hydrationBoundary.mjs +0 -10
  285. package/dist/esm-node/router/runtime/tanstack/plugin.mjs +0 -207
  286. package/dist/esm-node/router/runtime/tanstack/plugin.node.mjs +0 -235
  287. package/dist/esm-node/router/runtime/tanstack/prefetchLink.mjs +0 -19
  288. package/dist/esm-node/router/runtime/tanstack/routeTree.mjs +0 -471
  289. package/dist/esm-node/router/runtime/tanstack/rsc/ClientSlot.mjs +0 -20
  290. package/dist/esm-node/router/runtime/tanstack/rsc/CompositeComponent.mjs +0 -42
  291. package/dist/esm-node/router/runtime/tanstack/rsc/ReplayableStream.mjs +0 -105
  292. package/dist/esm-node/router/runtime/tanstack/rsc/RscNodeRenderer.mjs +0 -32
  293. package/dist/esm-node/router/runtime/tanstack/rsc/SlotContext.mjs +0 -18
  294. package/dist/esm-node/router/runtime/tanstack/rsc/client.mjs +0 -54
  295. package/dist/esm-node/router/runtime/tanstack/rsc/createRscProxy.mjs +0 -108
  296. package/dist/esm-node/router/runtime/tanstack/rsc/index.mjs +0 -2
  297. package/dist/esm-node/router/runtime/tanstack/rsc/server.mjs +0 -201
  298. package/dist/esm-node/router/runtime/tanstack/rsc/slotUsageSanitizer.mjs +0 -32
  299. package/dist/esm-node/router/runtime/tanstack/rsc/symbols.mjs +0 -18
  300. package/dist/esm-node/ssr/index.node.mjs +0 -45
  301. package/dist/esm-node/ssr/serverRender/renderToStream/buildTemplate.after.mjs +0 -51
  302. package/dist/esm-node/ssr/serverRender/renderToString/entry.mjs +0 -152
  303. package/dist/esm-node/ssr/serverRender/types.mjs +0 -2
  304. package/dist/types/router/cli/code/tanstackTypes.d.ts +0 -10
  305. package/dist/types/router/runtime/tanstack/basepathRewrite.d.ts +0 -8
  306. package/dist/types/router/runtime/tanstack/dataMutation.d.ts +0 -29
  307. package/dist/types/router/runtime/tanstack/hydrationBoundary.d.ts +0 -2
  308. package/dist/types/router/runtime/tanstack/plugin.d.ts +0 -6
  309. package/dist/types/router/runtime/tanstack/plugin.node.d.ts +0 -6
  310. package/dist/types/router/runtime/tanstack/prefetchLink.d.ts +0 -11
  311. package/dist/types/router/runtime/tanstack/routeTree.d.ts +0 -8
  312. package/dist/types/router/runtime/tanstack/rsc/ClientSlot.d.ts +0 -5
  313. package/dist/types/router/runtime/tanstack/rsc/CompositeComponent.d.ts +0 -3
  314. package/dist/types/router/runtime/tanstack/rsc/ReplayableStream.d.ts +0 -24
  315. package/dist/types/router/runtime/tanstack/rsc/RscNodeRenderer.d.ts +0 -5
  316. package/dist/types/router/runtime/tanstack/rsc/SlotContext.d.ts +0 -11
  317. package/dist/types/router/runtime/tanstack/rsc/client.d.ts +0 -11
  318. package/dist/types/router/runtime/tanstack/rsc/createRscProxy.d.ts +0 -7
  319. package/dist/types/router/runtime/tanstack/rsc/index.d.ts +0 -2
  320. package/dist/types/router/runtime/tanstack/rsc/server.d.ts +0 -14
  321. package/dist/types/router/runtime/tanstack/rsc/slotUsageSanitizer.d.ts +0 -2
  322. package/dist/types/router/runtime/tanstack/rsc/symbols.d.ts +0 -46
@@ -3,14 +3,20 @@ import "node:module";
3
3
  import react from "react";
4
4
  import { Helmet, HelmetData, HelmetProvider } from "react-helmet-async";
5
5
  import { InternalRuntimeContext } from "../core/context/index.mjs";
6
+ import { ensureHelmetContext } from "../core/context/helmetContext.mjs";
6
7
  const ATTRIBUTE_NAME_MAP = {
7
8
  charSet: 'charset',
8
9
  className: 'class',
9
10
  contentEditable: 'contenteditable',
10
11
  httpEquiv: 'http-equiv',
12
+ hrefLang: 'hreflang',
11
13
  itemProp: 'itemprop',
12
14
  tabIndex: 'tabindex'
13
15
  };
16
+ const CONTENT_PROPERTIES = new Set([
17
+ 'innerHTML',
18
+ 'cssText'
19
+ ]);
14
20
  const escapeHtml = (value)=>String(value).replaceAll('&', '&amp;').replaceAll('"', '&quot;').replaceAll('<', '&lt;').replaceAll('>', '&gt;');
15
21
  const toHtmlAttributeName = (name)=>ATTRIBUTE_NAME_MAP[name] ?? name;
16
22
  const attributesToString = (attributes, includeHelmetAttribute = false)=>{
@@ -18,6 +24,7 @@ const attributesToString = (attributes, includeHelmetAttribute = false)=>{
18
24
  if (includeHelmetAttribute) pairs.push('data-rh="true"');
19
25
  for (const [name, value] of Object.entries(attributes ?? {})){
20
26
  if (false === value || null == value) continue;
27
+ if (CONTENT_PROPERTIES.has(name)) continue;
21
28
  const htmlName = toHtmlAttributeName(name);
22
29
  if (true === value) pairs.push(htmlName);
23
30
  else pairs.push(`${htmlName}="${escapeHtml(value)}"`);
@@ -41,23 +48,15 @@ const createAttributeDatum = (attributes)=>({
41
48
  const createTitleDatum = (title, attributes)=>({
42
49
  toComponent: ()=>[],
43
50
  toString: ()=>{
44
- if (!title) return '';
51
+ if (void 0 === title || '' === title) return '';
45
52
  const attrs = attributesToString(attributes, true);
46
53
  return `<title ${attrs}>${escapeHtml(title)}</title>`;
47
54
  }
48
55
  });
49
- const createEmptyHelmetState = ()=>({
50
- base: createDatum('base', []),
51
- bodyAttributes: createAttributeDatum({}),
52
- htmlAttributes: createAttributeDatum({}),
53
- link: createDatum('link', []),
54
- meta: createDatum('meta', []),
55
- noscript: createDatum("noscript", []),
56
- priority: createDatum('meta', []),
57
- script: createDatum("script", []),
58
- style: createDatum('style', []),
59
- title: createTitleDatum(void 0, {})
60
- });
56
+ const normalizeHelmetTitle = (title)=>{
57
+ if ('string' == typeof title) return title;
58
+ if (Array.isArray(title)) return title.map((part)=>String(part)).join('');
59
+ };
61
60
  const mergeAttributes = (current, next)=>({
62
61
  ...current,
63
62
  ...next ?? {}
@@ -73,7 +72,14 @@ const collectChildren = (children, draft)=>{
73
72
  draft.titleAttributes = mergeAttributes(draft.titleAttributes, props);
74
73
  return;
75
74
  }
76
- if ('html' === child.type || 'body' === child.type) return;
75
+ if ('html' === child.type) {
76
+ draft.htmlAttributes = mergeAttributes(draft.htmlAttributes ?? {}, props);
77
+ return;
78
+ }
79
+ if ('body' === child.type) {
80
+ draft.bodyAttributes = mergeAttributes(draft.bodyAttributes ?? {}, props);
81
+ return;
82
+ }
77
83
  if ('base' === child.type || 'link' === child.type || 'meta' === child.type || "noscript" === child.type || "script" === child.type || 'style' === child.type) {
78
84
  const tag = {
79
85
  ...props
@@ -83,11 +89,10 @@ const collectChildren = (children, draft)=>{
83
89
  }
84
90
  });
85
91
  };
86
- const collectHelmetProps = (current, props)=>{
87
- const baseState = current ?? createEmptyHelmetState();
92
+ const createHelmetRecord = (props)=>{
88
93
  const draft = {
89
94
  base: [
90
- ...props.base ? [
95
+ ...void 0 !== props.base ? [
91
96
  props.base
92
97
  ] : []
93
98
  ],
@@ -108,75 +113,136 @@ const collectHelmetProps = (current, props)=>{
108
113
  style: [
109
114
  ...props.style ?? []
110
115
  ],
111
- title: 'string' == typeof props.title ? props.title : Array.isArray(props.title) ? props.title.join('') : void 0,
116
+ title: normalizeHelmetTitle(props.title),
112
117
  titleAttributes: props.titleAttributes ?? {}
113
118
  };
114
119
  collectChildren(props.children, draft);
115
- const title = draft.title && props.titleTemplate ? props.titleTemplate.replaceAll('%s', draft.title) : draft.title ?? props.defaultTitle;
116
120
  return {
117
- base: createDatum('base', [
118
- ...baseState.__baseTags ?? [],
119
- ...draft.base
120
- ]),
121
- bodyAttributes: createAttributeDatum(mergeAttributes(baseState.__bodyAttributes ?? {}, draft.bodyAttributes)),
122
- htmlAttributes: createAttributeDatum(mergeAttributes(baseState.__htmlAttributes ?? {}, draft.htmlAttributes)),
123
- link: createDatum('link', [
124
- ...baseState.__linkTags ?? [],
125
- ...draft.link
126
- ]),
127
- meta: createDatum('meta', [
128
- ...baseState.__metaTags ?? [],
129
- ...draft.meta
130
- ]),
131
- noscript: createDatum("noscript", [
132
- ...baseState.__noscriptTags ?? [],
133
- ...draft.noscript
134
- ]),
135
- priority: createDatum('meta', []),
136
- script: createDatum("script", [
137
- ...baseState.__scriptTags ?? [],
138
- ...draft.script
139
- ]),
140
- style: createDatum('style', [
141
- ...baseState.__styleTags ?? [],
142
- ...draft.style
143
- ]),
144
- title: createTitleDatum(title ?? baseState.__title, mergeAttributes(baseState.__titleAttributes ?? {}, draft.titleAttributes)),
145
- __baseTags: [
146
- ...baseState.__baseTags ?? [],
147
- ...draft.base
148
- ],
149
- __bodyAttributes: mergeAttributes(baseState.__bodyAttributes ?? {}, draft.bodyAttributes),
150
- __htmlAttributes: mergeAttributes(baseState.__htmlAttributes ?? {}, draft.htmlAttributes),
151
- __linkTags: [
152
- ...baseState.__linkTags ?? [],
153
- ...draft.link
154
- ],
155
- __metaTags: [
156
- ...baseState.__metaTags ?? [],
157
- ...draft.meta
158
- ],
159
- __noscriptTags: [
160
- ...baseState.__noscriptTags ?? [],
161
- ...draft.noscript
162
- ],
163
- __scriptTags: [
164
- ...baseState.__scriptTags ?? [],
165
- ...draft.script
166
- ],
167
- __styleTags: [
168
- ...baseState.__styleTags ?? [],
169
- ...draft.style
170
- ],
171
- __title: title ?? baseState.__title,
172
- __titleAttributes: mergeAttributes(baseState.__titleAttributes ?? {}, draft.titleAttributes)
121
+ ...draft,
122
+ titleTemplate: props.titleTemplate,
123
+ defaultTitle: props.defaultTitle
173
124
  };
174
125
  };
126
+ const getInnermostDefined = (records, pick)=>{
127
+ for(let i = records.length - 1; i >= 0; i -= 1){
128
+ const value = pick(records[i]);
129
+ if (void 0 !== value) return value;
130
+ }
131
+ };
132
+ const deriveTitle = (records)=>{
133
+ const innermostTitle = getInnermostDefined(records, (record)=>record.title);
134
+ const innermostTemplate = getInnermostDefined(records, (record)=>record.titleTemplate);
135
+ if (innermostTemplate && innermostTitle) return innermostTemplate.replaceAll('%s', innermostTitle);
136
+ return innermostTitle || getInnermostDefined(records, (record)=>record.defaultTitle);
137
+ };
138
+ const mergeRecordAttributes = (records, pick)=>records.reduce((merged, record)=>mergeAttributes(merged, pick(record)), {});
139
+ const deriveBaseTags = (records)=>{
140
+ for(let i = records.length - 1; i >= 0; i -= 1){
141
+ const tags = records[i].base;
142
+ for(let j = tags.length - 1; j >= 0; j -= 1)if (tags[j].href) return [
143
+ tags[j]
144
+ ];
145
+ }
146
+ return [];
147
+ };
148
+ const TAG_PRIMARY_ATTRIBUTES = {
149
+ link: [
150
+ 'rel',
151
+ 'href'
152
+ ],
153
+ meta: [
154
+ 'name',
155
+ 'charset',
156
+ 'http-equiv',
157
+ 'property',
158
+ 'itemprop'
159
+ ],
160
+ noscript: [
161
+ 'innerHTML'
162
+ ],
163
+ script: [
164
+ 'src',
165
+ 'innerHTML'
166
+ ],
167
+ style: [
168
+ 'cssText'
169
+ ]
170
+ };
171
+ const getPrimaryAttribute = (tagName, tag)=>{
172
+ const candidates = TAG_PRIMARY_ATTRIBUTES[tagName];
173
+ let selectedKey;
174
+ let selectedValue;
175
+ for (const [key, value] of Object.entries(tag)){
176
+ const normalizedKey = CONTENT_PROPERTIES.has(key) ? key : toHtmlAttributeName(key).toLowerCase();
177
+ if (candidates.includes(normalizedKey)) {
178
+ if ('rel' !== selectedKey || 'canonical' !== String(selectedValue).toLowerCase()) {
179
+ if ('rel' !== normalizedKey || 'stylesheet' !== String(value).toLowerCase()) {
180
+ selectedKey = normalizedKey;
181
+ selectedValue = value;
182
+ }
183
+ }
184
+ }
185
+ }
186
+ if (void 0 === selectedKey || !selectedValue) return;
187
+ return {
188
+ key: selectedKey,
189
+ value: String(selectedValue).toLowerCase()
190
+ };
191
+ };
192
+ const dedupeTags = (tagName, records)=>{
193
+ const approvedValues = new Map();
194
+ const approved = [];
195
+ for(let i = records.length - 1; i >= 0; i -= 1){
196
+ const instanceValues = new Map();
197
+ const kept = [];
198
+ for (const tag of records[i][tagName]){
199
+ const primary = getPrimaryAttribute(tagName, tag);
200
+ if (void 0 === primary) continue;
201
+ if (approvedValues.get(primary.key)?.has(primary.value)) continue;
202
+ let seen = instanceValues.get(primary.key);
203
+ if (void 0 === seen) {
204
+ seen = new Set();
205
+ instanceValues.set(primary.key, seen);
206
+ }
207
+ seen.add(primary.value);
208
+ kept.push(tag);
209
+ }
210
+ approved.unshift(...kept);
211
+ for (const [key, values] of instanceValues){
212
+ const target = approvedValues.get(key);
213
+ if (void 0 === target) approvedValues.set(key, values);
214
+ else for (const value of values)target.add(value);
215
+ }
216
+ }
217
+ return approved;
218
+ };
219
+ const deriveHelmetServerState = (records)=>({
220
+ base: createDatum('base', deriveBaseTags(records)),
221
+ bodyAttributes: createAttributeDatum(mergeRecordAttributes(records, (record)=>record.bodyAttributes)),
222
+ htmlAttributes: createAttributeDatum(mergeRecordAttributes(records, (record)=>record.htmlAttributes)),
223
+ link: createDatum('link', dedupeTags('link', records)),
224
+ meta: createDatum('meta', dedupeTags('meta', records)),
225
+ noscript: createDatum("noscript", dedupeTags("noscript", records)),
226
+ priority: createDatum('meta', []),
227
+ script: createDatum("script", dedupeTags("script", records)),
228
+ style: createDatum('style', dedupeTags('style', records)),
229
+ title: createTitleDatum(deriveTitle(records), mergeRecordAttributes(records, (record)=>record.titleAttributes))
230
+ });
231
+ const serverHelmetRecords = new WeakMap();
232
+ const collectServerHelmet = (runtimeContext, props)=>{
233
+ const helmetContext = ensureHelmetContext(runtimeContext);
234
+ let records = serverHelmetRecords.get(helmetContext);
235
+ if (void 0 === records) {
236
+ records = [];
237
+ serverHelmetRecords.set(helmetContext, records);
238
+ }
239
+ records.push(createHelmetRecord(props));
240
+ helmetContext.helmet = deriveHelmetServerState(records);
241
+ };
175
242
  const head_Helmet = (props)=>{
176
243
  const runtimeContext = react.useContext(InternalRuntimeContext);
177
- if (runtimeContext && !runtimeContext.isBrowser) {
178
- runtimeContext._helmetContext ??= {};
179
- runtimeContext._helmetContext.helmet = collectHelmetProps(runtimeContext._helmetContext.helmet ?? void 0, props);
244
+ if (null !== runtimeContext && false === runtimeContext.isBrowser) {
245
+ collectServerHelmet(runtimeContext, props);
180
246
  return null;
181
247
  }
182
248
  return react.createElement(Helmet, props);
@@ -1,22 +1,28 @@
1
1
  import "node:module";
2
2
  import * as __rspack_external__loadable_component_0aaae075 from "@loadable/component";
3
3
  export * from "@loadable/component";
4
+ function asLoadableNamespace(value) {
5
+ return 'object' == typeof value && null !== value ? value : {};
6
+ }
4
7
  function resolveLoadable(module) {
5
- const namespace = module;
6
- const defaultExport = namespace.default;
8
+ const namespace = asLoadableNamespace(module);
9
+ const defaultExport = asLoadableNamespace(namespace.default);
7
10
  const candidates = [
8
11
  module,
9
12
  namespace.default,
10
13
  defaultExport?.default
11
14
  ];
12
15
  const loadable = candidates.find((candidate)=>'function' == typeof candidate);
13
- if (!loadable) throw new TypeError('Modern.js runtime loadable export must resolve to a function');
16
+ if ('function' != typeof loadable) throw new TypeError('Modern.js runtime loadable export must resolve to a function');
14
17
  return loadable;
15
18
  }
16
19
  const loadable_loadable = resolveLoadable(__rspack_external__loadable_component_0aaae075);
17
- const lazy = __rspack_external__loadable_component_0aaae075.lazy ?? __rspack_external__loadable_component_0aaae075["default"]?.lazy ?? loadable_loadable.lazy;
18
- const loadableReady = __rspack_external__loadable_component_0aaae075.loadableReady ?? __rspack_external__loadable_component_0aaae075["default"]?.loadableReady ?? loadable_loadable.loadableReady;
19
- const __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = __rspack_external__loadable_component_0aaae075.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED ?? __rspack_external__loadable_component_0aaae075["default"]?.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED ?? loadable_loadable.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
20
+ const loadableNamespace = asLoadableNamespace(__rspack_external__loadable_component_0aaae075);
21
+ const loadableDefaultNamespace = asLoadableNamespace(loadableNamespace.default);
22
+ const callableLoadableNamespace = asLoadableNamespace(loadable_loadable);
23
+ const lazy = loadableNamespace.lazy ?? loadableDefaultNamespace.lazy ?? callableLoadableNamespace.lazy;
24
+ const loadableReady = loadableNamespace.loadableReady ?? loadableDefaultNamespace.loadableReady ?? callableLoadableNamespace.loadableReady;
25
+ const __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = loadableNamespace.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED ?? loadableDefaultNamespace.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED ?? callableLoadableNamespace.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
20
26
  const exports_loadable = loadable_loadable;
21
27
  export default exports_loadable;
22
28
  export { __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, lazy, loadableReady };
@@ -1,4 +1,31 @@
1
1
  import "node:module";
2
- export * from "@tanstack/react-router";
3
- export { Form, RouteActionResponseError, useFetcher } from "../router/runtime/tanstack/dataMutation.mjs";
4
- export { Link, NavLink } from "../router/runtime/tanstack/prefetchLink.mjs";
2
+ import { createElement } from "react";
3
+ const COMPAT_BINDINGS_SLOT = Symbol.for('@modern-js/plugin-tanstack:runtime-compat-bindings');
4
+ function readCompatBindings() {
5
+ return globalThis[COMPAT_BINDINGS_SLOT];
6
+ }
7
+ function resolveCompatBindings(exportName) {
8
+ const bindings = readCompatBindings();
9
+ if (void 0 === bindings) throw new Error(`[@modern-js/runtime] '${exportName}' from the deprecated '@modern-js/runtime/tanstack-router' alias is provided by @modern-js/plugin-tanstack. Install @modern-js/plugin-tanstack, add \`tanstackRouterPlugin()\` to the \`plugins\` array in modern.config.ts, and make sure '@modern-js/plugin-tanstack/runtime' is imported (e.g. in modern.runtime.ts) before '${exportName}' is used. Prefer importing '${exportName}' from '@modern-js/plugin-tanstack/runtime' directly.`);
10
+ return bindings;
11
+ }
12
+ const Link = (props)=>createElement(resolveCompatBindings('Link').Link, props);
13
+ const NavLink = (props)=>createElement(resolveCompatBindings('NavLink').NavLink, props);
14
+ const Outlet = ()=>createElement(resolveCompatBindings('Outlet').Outlet);
15
+ const Form = (props)=>createElement(resolveCompatBindings('Form').Form, props);
16
+ function useFetcher() {
17
+ return resolveCompatBindings('useFetcher').useFetcher();
18
+ }
19
+ function RouteActionResponseErrorPlaceholder() {}
20
+ const RouteActionResponseError = new Proxy(RouteActionResponseErrorPlaceholder, {
21
+ construct (_target, args) {
22
+ const RealError = resolveCompatBindings('RouteActionResponseError').RouteActionResponseError;
23
+ return new RealError(...args);
24
+ },
25
+ get (target, property, receiver) {
26
+ const RealError = readCompatBindings()?.RouteActionResponseError;
27
+ if (void 0 !== RealError) return Reflect.get(RealError, property);
28
+ return Reflect.get(target, property, receiver);
29
+ }
30
+ });
31
+ export { Form, Link, NavLink, Outlet, RouteActionResponseError, useFetcher };
@@ -0,0 +1,110 @@
1
+ import "node:module";
2
+ const MODULE_FEDERATION_FALLBACK_SIGNAL_EVENT = 'modernjs:mf-runtime-fallback';
3
+ const MODULE_FEDERATION_RECOVERY_SIGNAL_EVENT = 'modernjs:mf-runtime-recovery';
4
+ const DEFAULT_RUNTIME_FALLBACK_SIGNAL_ENDPOINT = '/_modern/contract-gates/runtime-fallback';
5
+ const DEFAULT_RUNTIME_FALLBACK_SIGNAL_AUTH_HEADER = 'x-modernjs-runtime-signal-token';
6
+ class ModuleFederationRemoteLoadTimeoutError extends Error {
7
+ constructor(remote, timeoutMs){
8
+ super(`Loading remote "${remote}" timed out after ${timeoutMs}ms`);
9
+ this.name = 'ModuleFederationRemoteLoadTimeoutError';
10
+ }
11
+ }
12
+ class ModuleFederationRemoteLoadError extends Error {
13
+ constructor(remote, attempts, causeError){
14
+ super(`Unable to load remote "${remote}" after ${attempts} attempt${attempts > 1 ? 's' : ''}: ${causeError.message}`);
15
+ this.name = 'ModuleFederationRemoteLoadError';
16
+ this.remote = remote;
17
+ this.attempts = attempts;
18
+ this.causeError = causeError;
19
+ }
20
+ }
21
+ class ModuleFederationRemoteComponentContractError extends Error {
22
+ constructor(remote, exportName){
23
+ super(`Remote "${remote}" export "${exportName}" is not a valid React component`);
24
+ this.name = 'ModuleFederationRemoteComponentContractError';
25
+ }
26
+ }
27
+ function toError(error) {
28
+ if (error instanceof Error) return error;
29
+ return new Error('string' == typeof error ? error : 'Unknown remote load error');
30
+ }
31
+ function classifyModuleFederationFallback(error) {
32
+ const normalizedError = toError(error);
33
+ if (normalizedError instanceof ModuleFederationRemoteLoadError) return classifyModuleFederationFallback(normalizedError.causeError);
34
+ if (normalizedError instanceof ModuleFederationRemoteLoadTimeoutError) return 'timeout';
35
+ if (normalizedError instanceof ModuleFederationRemoteComponentContractError) return 'contract';
36
+ const message = normalizedError.message;
37
+ if (/version|requiredVersion|singleton|share scope|shared module/i.test(message)) return 'version-skew';
38
+ if (/network|fetch|script|timeout|chunk|loading/i.test(message)) return 'network';
39
+ return 'remote-unavailable';
40
+ }
41
+ function createModuleFederationFallbackTelemetry(input) {
42
+ const error = void 0 !== input.error ? toError(input.error) : void 0;
43
+ const status = input.status ?? 'degraded';
44
+ const eventName = input.eventName ?? ('recovered' === status ? MODULE_FEDERATION_RECOVERY_SIGNAL_EVENT : MODULE_FEDERATION_FALLBACK_SIGNAL_EVENT);
45
+ const metadata = {
46
+ ...input.metadata ?? {},
47
+ classification: input.classification,
48
+ remote: input.remote,
49
+ status
50
+ };
51
+ if (void 0 !== input.exportName) metadata.exportName = input.exportName;
52
+ if (void 0 !== input.runtimeDigest) metadata.runtimeDigest = input.runtimeDigest;
53
+ if (void 0 !== error) {
54
+ metadata.errorName = error.name;
55
+ metadata.errorMessage = error.message;
56
+ }
57
+ const payload = {
58
+ appName: input.appName,
59
+ eventName,
60
+ metadata,
61
+ phase: input.phase,
62
+ reason: input.classification,
63
+ schemaVersion: 1
64
+ };
65
+ if (void 0 !== input.entry) payload.entry = input.entry;
66
+ if (void 0 !== input.runtimeDigest) payload.runtimeDigest = input.runtimeDigest;
67
+ return payload;
68
+ }
69
+ function toModuleFederationFallbackAttributes(payload) {
70
+ return {
71
+ 'data-mf-fallback-app': payload.appName,
72
+ 'data-mf-fallback-classification': payload.reason,
73
+ 'data-mf-fallback-phase': payload.phase,
74
+ 'data-mf-fallback-remote': String(payload.metadata.remote),
75
+ 'data-mf-fallback-status': String(payload.metadata.status),
76
+ 'data-mf-telemetry-event': payload.eventName
77
+ };
78
+ }
79
+ async function emitModuleFederationFallbackTelemetry(input, options = {}) {
80
+ const payload = createModuleFederationFallbackTelemetry(input);
81
+ if ("u" > typeof window && 'function' == typeof window.dispatchEvent && "u" > typeof CustomEvent) window.dispatchEvent(new CustomEvent(payload.eventName, {
82
+ detail: payload
83
+ }));
84
+ const shouldPost = true === options.postSignal || Boolean(options.endpoint);
85
+ if (!shouldPost) return {
86
+ dispatched: true,
87
+ posted: false
88
+ };
89
+ const fetchImpl = options.fetchImpl ?? globalThis.fetch;
90
+ if ('function' != typeof fetchImpl) return {
91
+ dispatched: true,
92
+ posted: false
93
+ };
94
+ const headers = new Headers({
95
+ 'content-type': 'application/json'
96
+ });
97
+ if (void 0 !== options.authToken && options.authToken.length > 0) headers.set(options.authHeaderName ?? DEFAULT_RUNTIME_FALLBACK_SIGNAL_AUTH_HEADER, options.authToken);
98
+ const response = await fetchImpl(options.endpoint ?? DEFAULT_RUNTIME_FALLBACK_SIGNAL_ENDPOINT, {
99
+ body: JSON.stringify(payload),
100
+ headers,
101
+ method: 'POST',
102
+ keepalive: true
103
+ });
104
+ return {
105
+ dispatched: true,
106
+ posted: true,
107
+ postStatus: response.status
108
+ };
109
+ }
110
+ export { DEFAULT_RUNTIME_FALLBACK_SIGNAL_AUTH_HEADER, DEFAULT_RUNTIME_FALLBACK_SIGNAL_ENDPOINT, MODULE_FEDERATION_FALLBACK_SIGNAL_EVENT, MODULE_FEDERATION_RECOVERY_SIGNAL_EVENT, ModuleFederationRemoteComponentContractError, ModuleFederationRemoteLoadError, ModuleFederationRemoteLoadTimeoutError, classifyModuleFederationFallback, createModuleFederationFallbackTelemetry, emitModuleFederationFallbackTelemetry, toModuleFederationFallbackAttributes };
@@ -1,12 +1,11 @@
1
1
  import "node:module";
2
- import { filterRoutesForServer, filterRoutesLoader, fs, getEntryOptions, isUseRsc, isUseSSRBundle, logger, markRoutes } from "@modern-js/utils";
2
+ import { collectRouteComponentFiles, filterRoutesForServer, filterRoutesLoader, fs, getEntryOptions, isUseRsc, isUseSSRBundle, logger, markRoutes } from "@modern-js/utils";
3
3
  import { cloneDeep } from "@modern-js/utils/lodash";
4
4
  import path from "path";
5
5
  import { ENTRY_POINT_RUNTIME_GLOBAL_CONTEXT_FILE_NAME } from "../../../cli/constants.mjs";
6
6
  import { resolveSSRMode } from "../../../cli/ssr/mode.mjs";
7
7
  import { FILE_SYSTEM_ROUTES_FILE_NAME } from "../constants.mjs";
8
8
  import { walk } from "./nestedRoutes.mjs";
9
- import { generateTanstackRouterTypesSourceForEntry, isTanstackRouterFrameworkEnabled } from "./tanstackTypes.mjs";
10
9
  import { getServerCombinedModuleFile, getServerLoadersFile } from "./utils.mjs";
11
10
  import * as __rspack_external__templates_mjs_4da4c6c8 from "./templates.mjs";
12
11
  async function generateRoutesForEntry(entrypoint, appContext) {
@@ -41,42 +40,15 @@ async function generateRoutesForEntry(entrypoint, appContext) {
41
40
  }
42
41
  return routes;
43
42
  }
44
- const generateCode = async (appContext, config, entrypoints, api, options)=>{
43
+ const generateCode = async (appContext, config, entrypoints, api)=>{
45
44
  const { internalDirectory, srcDirectory, internalSrcAlias, packageName } = appContext;
46
45
  const hooks = api.getHooks();
47
- const enableTanstackTypes = options?.enableTanstackTypes ?? await isTanstackRouterFrameworkEnabled(appContext);
48
46
  const generatedRoutesByEntry = {};
47
+ const eagerRouteComponentFilesByEntry = new Map();
49
48
  await Promise.all(entrypoints.map(generateEntryCode));
50
- if (enableTanstackTypes) {
51
- const allEntries = Array.from(new Set(entrypoints.map((e)=>e.entryName).filter(Boolean)));
52
- const mainEntry = entrypoints.find((e)=>e.isMainEntry)?.entryName;
53
- const registerEntries = allEntries.sort((a, b)=>{
54
- if (mainEntry && a === mainEntry) return -1;
55
- if (mainEntry && b === mainEntry) return 1;
56
- return a.localeCompare(b);
57
- });
58
- if (registerEntries.length > 0) {
59
- const registerDtsPath = path.join(srcDirectory, 'modern-tanstack', 'register.gen.d.ts');
60
- const importStatements = registerEntries.map((entryName, index)=>`import type { router as router${index} } from './${entryName}/router.gen';`).join('\n');
61
- const routerUnionType = registerEntries.map((_, index)=>`typeof router${index}`).join(' | ');
62
- const registerContent = `// This file is auto-generated by Modern.js. Do not edit manually.
63
-
64
- ${importStatements}
65
-
66
- declare module '@modern-js/runtime/tanstack-router' {
67
- interface Register {
68
- router: ${routerUnionType};
69
- }
70
- }
71
- `;
72
- try {
73
- const prev = await fs.pathExists(registerDtsPath) ? await fs.readFile(registerDtsPath, 'utf-8') : null;
74
- if (prev !== registerContent) await fs.outputFile(registerDtsPath, registerContent, 'utf-8');
75
- } catch {
76
- await fs.outputFile(registerDtsPath, registerContent, 'utf-8');
77
- }
78
- }
79
- }
49
+ api.updateAppContext({
50
+ eagerRouteComponentFilesByEntry
51
+ });
80
52
  async function generateEntryCode(entrypoint) {
81
53
  const { entryName, isMainEntry, isAutoMount, pageRoutesEntry, nestedRoutesEntry } = entrypoint;
82
54
  const { metaName } = api.getAppContext();
@@ -107,6 +79,8 @@ declare module '@modern-js/runtime/tanstack-router' {
107
79
  routes: markedRoutes
108
80
  });
109
81
  generatedRoutesByEntry[entryName] = routes;
82
+ const routeEagerFilesForEntry = collectRouteComponentFiles(routes, srcDirectory, internalSrcAlias);
83
+ eagerRouteComponentFilesByEntry.set(entryName, routeEagerFilesForEntry);
110
84
  if ('stream' === ssrMode) {
111
85
  const hasPageRoute = routes.some((route)=>'type' in route && 'page' === route.type);
112
86
  if (hasPageRoute) {
@@ -158,20 +132,6 @@ declare module '@modern-js/runtime/tanstack-router' {
158
132
  await fs.outputFile(serverLoaderFile, serverLoaderCombined);
159
133
  }
160
134
  await fs.outputFile(path.resolve(internalDirectory, `./${entryName}/${FILE_SYSTEM_ROUTES_FILE_NAME}`), code, 'utf8');
161
- if (enableTanstackTypes) {
162
- const { routerGenTs } = await generateTanstackRouterTypesSourceForEntry({
163
- appContext,
164
- entryName,
165
- routes: routes
166
- });
167
- const outPath = path.join(srcDirectory, 'modern-tanstack', entryName, 'router.gen.ts');
168
- try {
169
- const prev = await fs.pathExists(outPath) ? await fs.readFile(outPath, 'utf-8') : null;
170
- if (prev !== routerGenTs) await fs.outputFile(outPath, routerGenTs, 'utf-8');
171
- } catch {
172
- await fs.outputFile(outPath, routerGenTs, 'utf-8');
173
- }
174
- }
175
135
  }
176
136
  }
177
137
  }
@@ -102,20 +102,7 @@ const fileSystemRoutes = async ({ metaName, routes, ssrMode, nestedRoutesEntry,
102
102
  const loadersMapFile = path.join(internalDirectory, entryName, TEMP_LOADERS_DIR, 'map.json');
103
103
  const importLazyCode = `
104
104
  import { lazy } from "react";
105
- import * as loadableModule from "@${metaName}/runtime/loadable"
106
-
107
- const resolveLoadableExport = module => {
108
- const candidates = [module, module.default, module.default?.default];
109
- const loadable = candidates.find(candidate => typeof candidate === 'function');
110
-
111
- if (!loadable) {
112
- throw new TypeError('Modern.js runtime loadable export must resolve to a function');
113
- }
114
-
115
- return loadable;
116
- };
117
- const loadable = resolveLoadableExport(loadableModule);
118
- const loadableLazy = loadableModule.lazy || loadableModule.default?.lazy || loadable.lazy;
105
+ import loadable, { lazy as loadableLazy } from "@${metaName}/runtime/loadable"
119
106
  `;
120
107
  let rootLayoutCode = "";
121
108
  const getDataLoaderPath = ({ loaderId, clientData, action, inline, routeId, inValidSSRRoute })=>{
@@ -21,7 +21,7 @@ async function handleGeneratorEntryCode(api, entrypoints, options = {}) {
21
21
  const { generatorRegisterCode, generateCode, generatorServerRegisterCode } = await import("./code/index.mjs");
22
22
  originEntrypointsByKey.set(entrypointsKey, cloneDeep(entrypoints));
23
23
  const enableRsc = resolvedConfig?.server?.rsc;
24
- const routesByEntry = await generateCode(appContext, resolvedConfig, entrypoints, api, normalizedOptions.generateCodeOptions);
24
+ const routesByEntry = await generateCode(appContext, resolvedConfig, entrypoints, api);
25
25
  await Promise.all(entrypoints.map(async (entrypoint)=>{
26
26
  if (entrypoint.nestedRoutesEntry || entrypoint.pageRoutesEntry) {
27
27
  const route = appContext.serverRoutes.find((r)=>r.entryName === entrypoint.entryName);
@@ -1,32 +1,12 @@
1
1
  import "node:module";
2
2
  import node_path from "node:path";
3
- import { NESTED_ROUTE_SPEC_FILE, filterRoutesForServer, findExists, fs } from "@modern-js/utils";
3
+ import { NESTED_ROUTE_SPEC_FILE, filterRoutesForServer, fs } from "@modern-js/utils";
4
4
  import { NESTED_ROUTES_DIR } from "./constants.mjs";
5
5
  import { BUILT_IN_ROUTES_OWNER, getEntrypointRoutesDir, getEntrypointRoutesOwner, isRouteEntry } from "./entry.mjs";
6
6
  import { handleFileChange, handleGeneratorEntryCode, handleModifyEntrypoints } from "./handler.mjs";
7
7
  import { fileURLToPath as __rspack_fileURLToPath } from "node:url";
8
8
  import { dirname as __rspack_dirname } from "node:path";
9
9
  var cli_dirname = __rspack_dirname(__rspack_fileURLToPath(import.meta.url));
10
- const JS_OR_TS_EXTS = [
11
- '.js',
12
- '.jsx',
13
- '.ts',
14
- '.tsx',
15
- '.mjs',
16
- '.mts',
17
- '.cjs',
18
- '.cts'
19
- ];
20
- function hasRouterConfigInRuntimeFile(runtimeConfigBase) {
21
- const runtimeConfigFile = findExists(JS_OR_TS_EXTS.map((ext)=>`${runtimeConfigBase}${ext}`));
22
- if (!runtimeConfigFile) return false;
23
- try {
24
- const content = fs.readFileSync(runtimeConfigFile, 'utf-8');
25
- return /router\s*:/.test(content);
26
- } catch {
27
- return false;
28
- }
29
- }
30
10
  function isBuiltInRouteEntrypoint(entrypoint) {
31
11
  const entrypointRoutesOwner = getEntrypointRoutesOwner(entrypoint);
32
12
  if (entrypointRoutesOwner) return entrypointRoutesOwner === BUILT_IN_ROUTES_OWNER;
@@ -56,12 +36,11 @@ const routerPlugin = ()=>({
56
36
  });
57
37
  });
58
38
  api._internalRuntimePlugins(({ entrypoint, plugins })=>{
59
- const { serverRoutes, metaName, srcDirectory, runtimeConfigFile } = api.getAppContext();
39
+ const { serverRoutes, metaName } = api.getAppContext();
60
40
  const normalizedConfig = api.getNormalizedConfig();
61
41
  const hasUserRouterConfig = normalizedConfig.router && Object.keys(normalizedConfig.router).length > 0;
62
- const hasRuntimeRouterConfig = hasRouterConfigInRuntimeFile(node_path.join(srcDirectory, runtimeConfigFile));
63
42
  const serverBase = serverRoutes.filter((route)=>route.entryName === entrypoint.entryName).map((route)=>route.urlPath).sort((a, b)=>a.length - b.length > 0 ? -1 : 1);
64
- const shouldInstallBuiltInRouter = isBuiltInRouteEntrypoint(entrypoint) || !isPluginOwnedRouteEntrypoint(entrypoint) && (hasUserRouterConfig || hasRuntimeRouterConfig);
43
+ const shouldInstallBuiltInRouter = isBuiltInRouteEntrypoint(entrypoint) || !isPluginOwnedRouteEntrypoint(entrypoint) && hasUserRouterConfig;
65
44
  if (shouldInstallBuiltInRouter) plugins.push({
66
45
  name: 'router',
67
46
  path: `@${metaName}/runtime/router/internal`,
@@ -82,7 +61,6 @@ const routerPlugin = ()=>({
82
61
  source: {
83
62
  include: [
84
63
  /[\\/]node_modules[\\/]react-router[\\/]/,
85
- /[\\/]node_modules[\\/]react-router-dom[\\/]/,
86
64
  node_path.resolve(cli_dirname, '../runtime').replace('cjs', 'esm')
87
65
  ]
88
66
  }