@modern-js/runtime 2.69.7 → 3.0.0-alpha.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 (677) hide show
  1. package/dist/cjs/cache/index.js +55 -19
  2. package/dist/cjs/cli/alias.js +63 -57
  3. package/dist/cjs/cli/code.js +155 -163
  4. package/dist/cjs/cli/constants.js +65 -49
  5. package/dist/cjs/cli/entry.js +50 -41
  6. package/dist/cjs/cli/index.js +143 -178
  7. package/dist/cjs/cli/ssr/index.js +164 -142
  8. package/dist/cjs/cli/ssr/loadable-bundler-plugin.js +94 -102
  9. package/dist/cjs/cli/ssr/mode.js +48 -0
  10. package/dist/cjs/cli/template.js +110 -123
  11. package/dist/cjs/cli/template.server.js +55 -47
  12. package/dist/cjs/common.js +41 -31
  13. package/dist/cjs/core/browser/hydrate.js +82 -84
  14. package/dist/cjs/core/browser/index.js +133 -147
  15. package/dist/cjs/core/browser/withCallback.js +43 -37
  16. package/dist/cjs/core/compat/hooks.js +65 -70
  17. package/dist/cjs/core/compat/index.js +42 -38
  18. package/dist/cjs/core/compat/requestContext.js +53 -43
  19. package/dist/cjs/core/config.js +33 -38
  20. package/dist/cjs/core/constants.js +45 -36
  21. package/dist/cjs/core/context/index.js +100 -82
  22. package/dist/cjs/core/context/monitors/default.js +39 -33
  23. package/dist/cjs/core/context/monitors/index.js +34 -28
  24. package/dist/cjs/core/context/monitors/index.server.js +37 -29
  25. package/dist/cjs/core/context/request/index.js +33 -27
  26. package/dist/cjs/core/context/request/index.server.js +36 -28
  27. package/dist/cjs/core/context/response/index.js +46 -39
  28. package/dist/cjs/core/context/response/index.server.js +64 -55
  29. package/dist/cjs/core/context/runtime.js +58 -38
  30. package/dist/cjs/core/context/serverPayload/index.js +37 -31
  31. package/dist/cjs/core/context/serverPayload/index.server.js +42 -35
  32. package/dist/cjs/core/index.js +40 -41
  33. package/dist/cjs/core/plugin/index.js +55 -46
  34. package/dist/cjs/core/plugin/types.js +17 -15
  35. package/dist/cjs/core/react/index.js +45 -37
  36. package/dist/cjs/core/react/wrapper.js +49 -39
  37. package/dist/cjs/core/server/constants.js +45 -34
  38. package/dist/cjs/core/server/helmet.js +64 -63
  39. package/dist/cjs/core/server/index.js +47 -37
  40. package/dist/cjs/core/server/react/index.js +37 -31
  41. package/dist/cjs/core/server/react/no-ssr-cache/index.js +40 -33
  42. package/dist/cjs/core/server/react/nossr/index.js +50 -43
  43. package/dist/cjs/core/server/requestHandler.js +193 -211
  44. package/dist/cjs/core/server/server.js +41 -31
  45. package/dist/cjs/core/server/shared.js +33 -25
  46. package/dist/cjs/core/server/stream/afterTemplate.js +92 -92
  47. package/dist/cjs/core/server/stream/beforeTemplate.js +98 -110
  48. package/dist/cjs/core/server/stream/createReadableStream.js +164 -149
  49. package/dist/cjs/core/server/stream/createReadableStream.worker.js +145 -160
  50. package/dist/cjs/core/server/stream/deferredScript.js +92 -84
  51. package/dist/cjs/core/server/stream/index.js +35 -37
  52. package/dist/cjs/core/server/stream/shared.js +107 -102
  53. package/dist/cjs/core/server/stream/template.js +43 -35
  54. package/dist/cjs/core/server/string/index.js +131 -132
  55. package/dist/cjs/core/server/string/loadable.js +131 -173
  56. package/dist/cjs/core/server/string/ssrData.js +129 -89
  57. package/dist/cjs/core/server/string/types.js +17 -15
  58. package/dist/cjs/core/server/tracer.js +49 -42
  59. package/dist/cjs/core/server/utils.js +70 -68
  60. package/dist/cjs/core/types.js +17 -15
  61. package/dist/cjs/document/Body.js +49 -41
  62. package/dist/cjs/document/Comment.js +44 -35
  63. package/dist/cjs/document/DocumentContext.js +47 -39
  64. package/dist/cjs/document/DocumentStructureContext.js +50 -42
  65. package/dist/cjs/document/Head.js +59 -50
  66. package/dist/cjs/document/Html.js +96 -95
  67. package/dist/cjs/document/Links.js +38 -29
  68. package/dist/cjs/document/Root.js +59 -53
  69. package/dist/cjs/document/Script.js +50 -42
  70. package/dist/cjs/document/Scripts.js +38 -29
  71. package/dist/cjs/document/Style.js +45 -36
  72. package/dist/cjs/document/Title.js +37 -29
  73. package/dist/cjs/document/cli/index.js +361 -210
  74. package/dist/cjs/document/constants.js +125 -95
  75. package/dist/cjs/document/index.js +132 -41
  76. package/dist/cjs/exports/config-routes.js +38 -0
  77. package/dist/cjs/exports/head.js +63 -38
  78. package/dist/cjs/exports/loadable.js +63 -38
  79. package/dist/cjs/index.js +61 -53
  80. package/dist/cjs/internal.js +36 -0
  81. package/dist/cjs/react-server.js +47 -35
  82. package/dist/cjs/router/cli/code/getClientRoutes/getRoutes.js +147 -185
  83. package/dist/cjs/router/cli/code/getClientRoutes/index.js +33 -28
  84. package/dist/cjs/router/cli/code/getClientRoutes/utils.js +57 -54
  85. package/dist/cjs/router/cli/code/index.js +173 -150
  86. package/dist/cjs/router/cli/code/inspect.js +139 -0
  87. package/dist/cjs/router/cli/code/makeLegalIdentifier.js +38 -32
  88. package/dist/cjs/router/cli/code/nestedRoutes.js +225 -286
  89. package/dist/cjs/router/cli/code/templates.js +334 -405
  90. package/dist/cjs/router/cli/code/utils.js +131 -132
  91. package/dist/cjs/router/cli/config-routes/converter.js +129 -0
  92. package/dist/cjs/router/cli/config-routes/parseRouteConfig.js +155 -0
  93. package/dist/cjs/router/cli/constants.js +92 -82
  94. package/dist/cjs/router/cli/entry.js +67 -86
  95. package/dist/cjs/router/cli/handler.js +109 -96
  96. package/dist/cjs/router/cli/index.js +131 -142
  97. package/dist/cjs/router/index.js +55 -19
  98. package/dist/cjs/router/internal.js +61 -27
  99. package/dist/cjs/router/runtime/DefaultNotFound.js +44 -35
  100. package/dist/cjs/router/runtime/DeferredDataScripts.js +34 -24
  101. package/dist/cjs/router/runtime/DeferredDataScripts.node.js +148 -146
  102. package/dist/cjs/router/runtime/PrefetchLink.js +190 -210
  103. package/dist/cjs/router/runtime/constants.js +61 -46
  104. package/dist/cjs/router/runtime/hooks.js +38 -29
  105. package/dist/cjs/router/runtime/index.js +92 -46
  106. package/dist/cjs/router/runtime/internal.js +44 -33
  107. package/dist/cjs/router/runtime/plugin.js +206 -225
  108. package/dist/cjs/router/runtime/plugin.node.js +177 -203
  109. package/dist/cjs/router/runtime/routerHelper.js +55 -0
  110. package/dist/cjs/router/runtime/rsc-router.js +272 -305
  111. package/dist/cjs/router/runtime/rsc.js +58 -0
  112. package/dist/cjs/router/runtime/server.js +55 -19
  113. package/dist/cjs/router/runtime/types.js +17 -15
  114. package/dist/cjs/router/runtime/utils.js +202 -228
  115. package/dist/cjs/router/runtime/withRouter.js +45 -39
  116. package/dist/cjs/rsc/client.js +65 -30
  117. package/dist/cjs/rsc/server.js +55 -19
  118. package/dist/esm/cli/alias.mjs +24 -0
  119. package/dist/esm/cli/code.mjs +119 -0
  120. package/dist/esm/cli/constants.mjs +10 -0
  121. package/dist/esm/cli/entry.mjs +6 -0
  122. package/dist/esm/cli/index.mjs +89 -0
  123. package/dist/esm/cli/ssr/index.mjs +125 -0
  124. package/dist/esm/cli/ssr/loadable-bundler-plugin.mjs +75 -0
  125. package/dist/esm/cli/ssr/mode.mjs +14 -0
  126. package/dist/{esm-node/cli/template.js → esm/cli/template.mjs} +45 -82
  127. package/dist/esm/cli/template.server.mjs +147 -0
  128. package/dist/esm/common.mjs +4 -0
  129. package/dist/esm/core/browser/hydrate.mjs +53 -0
  130. package/dist/esm/core/browser/index.mjs +96 -0
  131. package/dist/esm/core/browser/withCallback.mjs +13 -0
  132. package/dist/esm/core/compat/hooks.mjs +35 -0
  133. package/dist/esm/core/compat/index.mjs +12 -0
  134. package/dist/esm/core/compat/requestContext.mjs +21 -0
  135. package/dist/esm/core/config.mjs +2 -0
  136. package/dist/esm/core/constants.mjs +8 -0
  137. package/dist/esm/core/context/index.mjs +45 -0
  138. package/dist/esm/core/context/monitors/default.mjs +10 -0
  139. package/dist/esm/core/context/monitors/index.mjs +3 -0
  140. package/dist/esm/core/context/monitors/index.server.mjs +7 -0
  141. package/dist/esm/core/context/request/index.mjs +2 -0
  142. package/dist/esm/core/context/request/index.server.mjs +6 -0
  143. package/dist/esm/core/context/response/index.mjs +7 -0
  144. package/dist/esm/core/context/response/index.server.mjs +28 -0
  145. package/dist/esm/core/context/runtime.mjs +15 -0
  146. package/dist/esm/core/context/serverPayload/index.mjs +3 -0
  147. package/dist/esm/core/context/serverPayload/index.server.mjs +10 -0
  148. package/dist/esm/core/index.mjs +3 -0
  149. package/dist/esm/core/plugin/index.mjs +25 -0
  150. package/dist/esm/core/react/index.mjs +16 -0
  151. package/dist/esm/core/react/wrapper.mjs +20 -0
  152. package/dist/esm/core/server/constants.mjs +5 -0
  153. package/dist/esm/core/server/helmet.mjs +38 -0
  154. package/dist/esm/core/server/index.mjs +7 -0
  155. package/dist/esm/core/server/react/index.mjs +3 -0
  156. package/dist/esm/core/server/react/no-ssr-cache/index.mjs +9 -0
  157. package/dist/esm/core/server/react/nossr/index.mjs +10 -0
  158. package/dist/esm/core/server/requestHandler.mjs +161 -0
  159. package/dist/{esm-node/core/server/server.js → esm/core/server/server.mjs} +1 -5
  160. package/dist/esm/core/server/shared.mjs +4 -0
  161. package/dist/esm/core/server/stream/afterTemplate.mjs +66 -0
  162. package/dist/esm/core/server/stream/beforeTemplate.mjs +63 -0
  163. package/dist/esm/core/server/stream/createReadableStream.mjs +128 -0
  164. package/dist/esm/core/server/stream/createReadableStream.worker.mjs +109 -0
  165. package/dist/esm/core/server/stream/deferredScript.mjs +62 -0
  166. package/dist/esm/core/server/stream/index.mjs +4 -0
  167. package/dist/esm/core/server/stream/shared.mjs +75 -0
  168. package/dist/esm/core/server/stream/template.mjs +13 -0
  169. package/dist/esm/core/server/string/index.mjs +101 -0
  170. package/dist/esm/core/server/string/loadable.mjs +112 -0
  171. package/dist/esm/core/server/string/ssrData.mjs +104 -0
  172. package/dist/esm/core/server/tracer.mjs +15 -0
  173. package/dist/esm/core/server/utils.mjs +39 -0
  174. package/dist/esm/document/Body.mjs +20 -0
  175. package/dist/esm/document/Comment.mjs +15 -0
  176. package/dist/esm/document/DocumentContext.mjs +7 -0
  177. package/dist/esm/document/DocumentStructureContext.mjs +10 -0
  178. package/dist/esm/document/Head.mjs +29 -0
  179. package/dist/esm/document/Html.mjs +74 -0
  180. package/dist/esm/document/Links.mjs +9 -0
  181. package/dist/esm/document/Root.mjs +29 -0
  182. package/dist/esm/document/Script.mjs +21 -0
  183. package/dist/esm/document/Scripts.mjs +9 -0
  184. package/dist/esm/document/Style.mjs +16 -0
  185. package/dist/esm/document/Title.mjs +8 -0
  186. package/dist/esm/document/cli/index.mjs +323 -0
  187. package/dist/esm/document/constants.mjs +34 -0
  188. package/dist/esm/exports/config-routes.mjs +4 -0
  189. package/dist/esm/exports/head.mjs +4 -0
  190. package/dist/esm/exports/loadable.mjs +4 -0
  191. package/dist/esm/index.mjs +6 -0
  192. package/dist/esm/internal.mjs +2 -0
  193. package/dist/esm/react-server.mjs +4 -0
  194. package/dist/esm/router/cli/code/getClientRoutes/getRoutes.mjs +115 -0
  195. package/dist/esm/router/cli/code/getClientRoutes/index.mjs +2 -0
  196. package/dist/esm/router/cli/code/getClientRoutes/utils.mjs +12 -0
  197. package/dist/esm/router/cli/code/index.mjs +132 -0
  198. package/dist/esm/router/cli/code/inspect.mjs +95 -0
  199. package/dist/esm/router/cli/code/makeLegalIdentifier.mjs +9 -0
  200. package/dist/esm/router/cli/code/nestedRoutes.mjs +193 -0
  201. package/dist/esm/router/cli/code/templates.mjs +365 -0
  202. package/dist/esm/router/cli/code/utils.mjs +73 -0
  203. package/dist/esm/router/cli/config-routes/converter.mjs +82 -0
  204. package/dist/esm/router/cli/config-routes/parseRouteConfig.mjs +105 -0
  205. package/dist/esm/router/cli/constants.mjs +32 -0
  206. package/dist/esm/router/cli/entry.mjs +22 -0
  207. package/dist/esm/router/cli/handler.mjs +66 -0
  208. package/dist/esm/router/cli/index.mjs +80 -0
  209. package/dist/{esm-node/router/internal.js → esm/router/internal.mjs} +2 -4
  210. package/dist/esm/router/runtime/DefaultNotFound.mjs +13 -0
  211. package/dist/esm/router/runtime/DeferredDataScripts.mjs +2 -0
  212. package/dist/esm/router/runtime/DeferredDataScripts.node.mjs +120 -0
  213. package/dist/esm/router/runtime/PrefetchLink.mjs +161 -0
  214. package/dist/{esm-node/router/runtime/constants.js → esm/router/runtime/constants.mjs} +7 -16
  215. package/dist/esm/router/runtime/hooks.mjs +4 -0
  216. package/dist/esm/router/runtime/index.mjs +9 -0
  217. package/dist/esm/router/runtime/internal.mjs +4 -0
  218. package/dist/esm/router/runtime/plugin.mjs +181 -0
  219. package/dist/esm/router/runtime/plugin.node.mjs +136 -0
  220. package/dist/esm/router/runtime/routerHelper.mjs +15 -0
  221. package/dist/esm/router/runtime/rsc-router.mjs +233 -0
  222. package/dist/esm/router/runtime/rsc.mjs +1 -0
  223. package/dist/esm/router/runtime/server.mjs +1 -0
  224. package/dist/esm/router/runtime/utils.mjs +165 -0
  225. package/dist/esm/router/runtime/withRouter.mjs +14 -0
  226. package/dist/esm/rsc/client.mjs +3 -0
  227. package/dist/esm-node/cli/alias.mjs +24 -0
  228. package/dist/esm-node/cli/code.mjs +119 -0
  229. package/dist/esm-node/cli/constants.mjs +10 -0
  230. package/dist/esm-node/cli/entry.mjs +6 -0
  231. package/dist/esm-node/cli/index.mjs +89 -0
  232. package/dist/esm-node/cli/ssr/index.mjs +125 -0
  233. package/dist/esm-node/cli/ssr/loadable-bundler-plugin.mjs +75 -0
  234. package/dist/esm-node/cli/ssr/mode.mjs +14 -0
  235. package/dist/esm-node/cli/template.mjs +168 -0
  236. package/dist/esm-node/cli/{template.server.js → template.server.mjs} +20 -24
  237. package/dist/esm-node/common.mjs +4 -0
  238. package/dist/esm-node/core/browser/hydrate.mjs +53 -0
  239. package/dist/esm-node/core/browser/index.mjs +96 -0
  240. package/dist/esm-node/core/browser/withCallback.mjs +13 -0
  241. package/dist/esm-node/core/compat/hooks.mjs +35 -0
  242. package/dist/esm-node/core/compat/index.mjs +12 -0
  243. package/dist/esm-node/core/compat/requestContext.mjs +21 -0
  244. package/dist/esm-node/core/config.mjs +2 -0
  245. package/dist/esm-node/core/constants.mjs +8 -0
  246. package/dist/esm-node/core/context/index.mjs +45 -0
  247. package/dist/esm-node/core/context/monitors/default.mjs +10 -0
  248. package/dist/esm-node/core/context/monitors/index.mjs +3 -0
  249. package/dist/esm-node/core/context/monitors/index.server.mjs +7 -0
  250. package/dist/esm-node/core/context/request/index.mjs +2 -0
  251. package/dist/esm-node/core/context/request/index.server.mjs +6 -0
  252. package/dist/esm-node/core/context/response/index.mjs +7 -0
  253. package/dist/esm-node/core/context/response/index.server.mjs +28 -0
  254. package/dist/esm-node/core/context/runtime.mjs +15 -0
  255. package/dist/esm-node/core/context/serverPayload/index.mjs +3 -0
  256. package/dist/esm-node/core/context/serverPayload/index.server.mjs +10 -0
  257. package/dist/esm-node/core/index.mjs +3 -0
  258. package/dist/esm-node/core/plugin/index.mjs +25 -0
  259. package/dist/esm-node/core/react/index.mjs +16 -0
  260. package/dist/esm-node/core/react/wrapper.mjs +20 -0
  261. package/dist/esm-node/core/server/constants.mjs +5 -0
  262. package/dist/esm-node/core/server/helmet.mjs +38 -0
  263. package/dist/esm-node/core/server/index.mjs +7 -0
  264. package/dist/esm-node/core/server/react/index.mjs +3 -0
  265. package/dist/esm-node/core/server/react/no-ssr-cache/index.mjs +9 -0
  266. package/dist/esm-node/core/server/react/nossr/index.mjs +10 -0
  267. package/dist/esm-node/core/server/requestHandler.mjs +161 -0
  268. package/dist/esm-node/core/server/server.mjs +4 -0
  269. package/dist/esm-node/core/server/shared.mjs +4 -0
  270. package/dist/esm-node/core/server/stream/afterTemplate.mjs +66 -0
  271. package/dist/esm-node/core/server/stream/beforeTemplate.mjs +63 -0
  272. package/dist/esm-node/core/server/stream/createReadableStream.mjs +128 -0
  273. package/dist/esm-node/core/server/stream/createReadableStream.worker.mjs +109 -0
  274. package/dist/esm-node/core/server/stream/deferredScript.mjs +62 -0
  275. package/dist/esm-node/core/server/stream/index.mjs +4 -0
  276. package/dist/esm-node/core/server/stream/shared.mjs +75 -0
  277. package/dist/esm-node/core/server/stream/template.mjs +13 -0
  278. package/dist/esm-node/core/server/string/index.mjs +101 -0
  279. package/dist/esm-node/core/server/string/loadable.mjs +112 -0
  280. package/dist/esm-node/core/server/string/ssrData.mjs +104 -0
  281. package/dist/esm-node/core/server/tracer.mjs +15 -0
  282. package/dist/esm-node/core/server/utils.mjs +39 -0
  283. package/dist/esm-node/document/Body.mjs +20 -0
  284. package/dist/esm-node/document/Comment.mjs +15 -0
  285. package/dist/esm-node/document/DocumentContext.mjs +7 -0
  286. package/dist/esm-node/document/DocumentStructureContext.mjs +10 -0
  287. package/dist/esm-node/document/Head.mjs +29 -0
  288. package/dist/esm-node/document/Html.mjs +74 -0
  289. package/dist/esm-node/document/Links.mjs +9 -0
  290. package/dist/esm-node/document/Root.mjs +29 -0
  291. package/dist/esm-node/document/Script.mjs +21 -0
  292. package/dist/esm-node/document/Scripts.mjs +9 -0
  293. package/dist/esm-node/document/Style.mjs +16 -0
  294. package/dist/esm-node/document/Title.mjs +8 -0
  295. package/dist/esm-node/document/cli/index.mjs +323 -0
  296. package/dist/esm-node/document/constants.mjs +34 -0
  297. package/dist/esm-node/document/index.mjs +12 -0
  298. package/dist/esm-node/exports/config-routes.mjs +4 -0
  299. package/dist/esm-node/exports/head.mjs +4 -0
  300. package/dist/esm-node/exports/loadable.mjs +4 -0
  301. package/dist/esm-node/index.mjs +6 -0
  302. package/dist/esm-node/internal.mjs +2 -0
  303. package/dist/esm-node/react-server.mjs +4 -0
  304. package/dist/esm-node/router/cli/code/getClientRoutes/getRoutes.mjs +115 -0
  305. package/dist/esm-node/router/cli/code/getClientRoutes/index.mjs +2 -0
  306. package/dist/esm-node/router/cli/code/getClientRoutes/utils.mjs +12 -0
  307. package/dist/esm-node/router/cli/code/index.mjs +132 -0
  308. package/dist/esm-node/router/cli/code/inspect.mjs +95 -0
  309. package/dist/esm-node/router/cli/code/{makeLegalIdentifier.js → makeLegalIdentifier.mjs} +7 -11
  310. package/dist/esm-node/router/cli/code/nestedRoutes.mjs +193 -0
  311. package/dist/esm-node/router/cli/code/templates.mjs +365 -0
  312. package/dist/esm-node/router/cli/code/utils.mjs +73 -0
  313. package/dist/esm-node/router/cli/config-routes/converter.mjs +82 -0
  314. package/dist/esm-node/router/cli/config-routes/parseRouteConfig.mjs +105 -0
  315. package/dist/esm-node/router/cli/constants.mjs +32 -0
  316. package/dist/esm-node/router/cli/entry.mjs +22 -0
  317. package/dist/esm-node/router/cli/handler.mjs +66 -0
  318. package/dist/esm-node/router/cli/index.mjs +80 -0
  319. package/dist/esm-node/router/index.mjs +1 -0
  320. package/dist/esm-node/router/internal.mjs +3 -0
  321. package/dist/esm-node/router/runtime/DefaultNotFound.mjs +13 -0
  322. package/dist/esm-node/router/runtime/DeferredDataScripts.mjs +2 -0
  323. package/dist/esm-node/router/runtime/DeferredDataScripts.node.mjs +120 -0
  324. package/dist/esm-node/router/runtime/PrefetchLink.mjs +161 -0
  325. package/dist/esm-node/router/runtime/constants.mjs +10 -0
  326. package/dist/esm-node/router/runtime/hooks.mjs +4 -0
  327. package/dist/esm-node/router/runtime/index.mjs +9 -0
  328. package/dist/esm-node/router/runtime/internal.mjs +4 -0
  329. package/dist/esm-node/router/runtime/plugin.mjs +181 -0
  330. package/dist/esm-node/router/runtime/plugin.node.mjs +136 -0
  331. package/dist/esm-node/router/runtime/routerHelper.mjs +15 -0
  332. package/dist/esm-node/router/runtime/rsc-router.mjs +233 -0
  333. package/dist/esm-node/router/runtime/rsc.mjs +1 -0
  334. package/dist/esm-node/router/runtime/server.mjs +1 -0
  335. package/dist/esm-node/router/runtime/utils.mjs +165 -0
  336. package/dist/esm-node/router/runtime/withRouter.mjs +14 -0
  337. package/dist/esm-node/rsc/client.mjs +3 -0
  338. package/dist/types/cli/code.d.ts +1 -1
  339. package/dist/types/cli/index.d.ts +3 -3
  340. package/dist/types/cli/ssr/index.d.ts +2 -2
  341. package/dist/types/cli/ssr/mode.d.ts +15 -0
  342. package/dist/types/cli/template.d.ts +3 -3
  343. package/dist/types/common.d.ts +2 -7
  344. package/dist/types/core/browser/hydrate.d.ts +2 -2
  345. package/dist/types/core/browser/index.d.ts +3 -1
  346. package/dist/types/core/compat/hooks.d.ts +2 -2
  347. package/dist/types/core/compat/index.d.ts +2 -2
  348. package/dist/types/core/compat/requestContext.d.ts +5 -24
  349. package/dist/types/core/config.d.ts +1 -8
  350. package/dist/types/core/constants.d.ts +0 -1
  351. package/dist/types/core/context/index.d.ts +9 -13
  352. package/dist/types/core/context/monitors/index.d.ts +1 -1
  353. package/dist/types/core/context/runtime.d.ts +26 -29
  354. package/dist/types/core/context/serverPayload/index.server.d.ts +1 -1
  355. package/dist/types/core/index.d.ts +4 -7
  356. package/dist/types/core/plugin/index.d.ts +13 -13
  357. package/dist/types/core/plugin/types.d.ts +9 -10
  358. package/dist/types/core/react/wrapper.d.ts +3 -3
  359. package/dist/types/core/server/index.d.ts +3 -3
  360. package/dist/types/core/server/react/index.d.ts +0 -1
  361. package/dist/types/core/server/requestHandler.d.ts +3 -3
  362. package/dist/types/core/server/stream/afterTemplate.d.ts +2 -2
  363. package/dist/types/core/server/stream/beforeTemplate.d.ts +2 -2
  364. package/dist/types/core/server/stream/shared.d.ts +2 -2
  365. package/dist/types/core/server/string/loadable.d.ts +2 -2
  366. package/dist/types/core/server/string/ssrData.d.ts +3 -2
  367. package/dist/types/core/server/tracer.d.ts +1 -3
  368. package/dist/types/core/server/utils.d.ts +2 -3
  369. package/dist/types/core/types.d.ts +4 -16
  370. package/dist/types/document/DocumentContext.d.ts +1 -1
  371. package/dist/types/document/cli/index.d.ts +3 -3
  372. package/dist/types/document/constants.d.ts +3 -1
  373. package/dist/types/exports/config-routes.d.ts +9 -0
  374. package/dist/types/index.d.ts +4 -5
  375. package/dist/types/internal.d.ts +2 -0
  376. package/dist/types/router/cli/code/getClientRoutes/index.d.ts +0 -1
  377. package/dist/types/router/cli/code/getClientRoutes/utils.d.ts +0 -1
  378. package/dist/types/router/cli/code/index.d.ts +7 -3
  379. package/dist/types/router/cli/code/inspect.d.ts +22 -0
  380. package/dist/types/router/cli/code/nestedRoutes.d.ts +10 -4
  381. package/dist/types/router/cli/code/templates.d.ts +3 -2
  382. package/dist/types/router/cli/config-routes/converter.d.ts +15 -0
  383. package/dist/types/router/cli/config-routes/parseRouteConfig.d.ts +32 -0
  384. package/dist/types/router/cli/constants.d.ts +0 -3
  385. package/dist/types/router/cli/entry.d.ts +1 -2
  386. package/dist/types/router/cli/handler.d.ts +4 -4
  387. package/dist/types/router/cli/index.d.ts +2 -4
  388. package/dist/types/router/runtime/DeferredDataScripts.node.d.ts +1 -1
  389. package/dist/types/router/runtime/hooks.d.ts +3 -3
  390. package/dist/types/router/runtime/index.d.ts +0 -1
  391. package/dist/types/router/runtime/plugin.d.ts +2 -2
  392. package/dist/types/router/runtime/plugin.node.d.ts +2 -2
  393. package/dist/types/router/runtime/{routeModule.d.ts → routerHelper.d.ts} +1 -1
  394. package/dist/types/router/runtime/rsc-router.d.ts +2 -2
  395. package/dist/types/router/runtime/rsc.d.ts +1 -0
  396. package/dist/types/router/runtime/server.d.ts +1 -1
  397. package/dist/types/router/runtime/types.d.ts +0 -1
  398. package/dist/types/router/runtime/utils.d.ts +5 -4
  399. package/package.json +90 -80
  400. package/rslib.config.mts +19 -0
  401. package/dist/cjs/cli/ssr/babel-plugin-ssr-loader-id.js +0 -133
  402. package/dist/cjs/config.js +0 -16
  403. package/dist/cjs/core/compatible.js +0 -192
  404. package/dist/cjs/core/loader/index.js +0 -38
  405. package/dist/cjs/core/loader/loaderManager.js +0 -186
  406. package/dist/cjs/core/loader/useLoader.js +0 -114
  407. package/dist/cjs/core/plugin/base.js +0 -16
  408. package/dist/cjs/core/server/react/prerender/index.js +0 -124
  409. package/dist/cjs/core/server/react/prerender/type.js +0 -16
  410. package/dist/cjs/core/server/react/prerender/util.js +0 -121
  411. package/dist/cjs/core/server/string/prefetch.js +0 -93
  412. package/dist/cjs/core/server/string/styledComponent.js +0 -53
  413. package/dist/cjs/exports/server.js +0 -28
  414. package/dist/cjs/exports/styled.js +0 -41
  415. package/dist/cjs/router/cli/code/getClientRoutes/getRoutesLegacy.js +0 -195
  416. package/dist/cjs/router/runtime/routeModule.js +0 -52
  417. package/dist/esm/cli/alias.js +0 -30
  418. package/dist/esm/cli/code.js +0 -265
  419. package/dist/esm/cli/constants.js +0 -20
  420. package/dist/esm/cli/entry.js +0 -15
  421. package/dist/esm/cli/index.js +0 -170
  422. package/dist/esm/cli/ssr/babel-plugin-ssr-loader-id.js +0 -118
  423. package/dist/esm/cli/ssr/index.js +0 -143
  424. package/dist/esm/cli/ssr/loadable-bundler-plugin.js +0 -102
  425. package/dist/esm/cli/template.js +0 -98
  426. package/dist/esm/cli/template.server.js +0 -34
  427. package/dist/esm/common.js +0 -10
  428. package/dist/esm/core/browser/hydrate.js +0 -75
  429. package/dist/esm/core/browser/index.js +0 -279
  430. package/dist/esm/core/browser/withCallback.js +0 -18
  431. package/dist/esm/core/compat/hooks.js +0 -88
  432. package/dist/esm/core/compat/index.js +0 -20
  433. package/dist/esm/core/compat/requestContext.js +0 -25
  434. package/dist/esm/core/compatible.js +0 -215
  435. package/dist/esm/core/config.js +0 -19
  436. package/dist/esm/core/constants.js +0 -13
  437. package/dist/esm/core/context/index.js +0 -67
  438. package/dist/esm/core/context/monitors/default.js +0 -20
  439. package/dist/esm/core/context/monitors/index.js +0 -7
  440. package/dist/esm/core/context/monitors/index.server.js +0 -9
  441. package/dist/esm/core/context/request/index.js +0 -6
  442. package/dist/esm/core/context/request/index.server.js +0 -8
  443. package/dist/esm/core/context/response/index.js +0 -16
  444. package/dist/esm/core/context/response/index.server.js +0 -41
  445. package/dist/esm/core/context/runtime.js +0 -18
  446. package/dist/esm/core/context/serverPayload/index.js +0 -9
  447. package/dist/esm/core/context/serverPayload/index.server.js +0 -15
  448. package/dist/esm/core/index.js +0 -12
  449. package/dist/esm/core/loader/index.js +0 -4
  450. package/dist/esm/core/loader/loaderManager.js +0 -234
  451. package/dist/esm/core/loader/useLoader.js +0 -89
  452. package/dist/esm/core/plugin/base.js +0 -0
  453. package/dist/esm/core/plugin/index.js +0 -33
  454. package/dist/esm/core/plugin/types.js +0 -0
  455. package/dist/esm/core/react/index.js +0 -18
  456. package/dist/esm/core/react/wrapper.js +0 -10
  457. package/dist/esm/core/server/constants.js +0 -10
  458. package/dist/esm/core/server/helmet.js +0 -53
  459. package/dist/esm/core/server/index.js +0 -17
  460. package/dist/esm/core/server/react/index.js +0 -8
  461. package/dist/esm/core/server/react/no-ssr-cache/index.js +0 -12
  462. package/dist/esm/core/server/react/nossr/index.js +0 -14
  463. package/dist/esm/core/server/react/prerender/index.js +0 -105
  464. package/dist/esm/core/server/react/prerender/type.js +0 -0
  465. package/dist/esm/core/server/react/prerender/util.js +0 -114
  466. package/dist/esm/core/server/requestHandler.js +0 -330
  467. package/dist/esm/core/server/server.js +0 -8
  468. package/dist/esm/core/server/shared.js +0 -10
  469. package/dist/esm/core/server/stream/afterTemplate.js +0 -107
  470. package/dist/esm/core/server/stream/beforeTemplate.js +0 -188
  471. package/dist/esm/core/server/stream/createReadableStream.js +0 -165
  472. package/dist/esm/core/server/stream/createReadableStream.worker.js +0 -239
  473. package/dist/esm/core/server/stream/deferredScript.js +0 -85
  474. package/dist/esm/core/server/stream/index.js +0 -10
  475. package/dist/esm/core/server/stream/shared.js +0 -113
  476. package/dist/esm/core/server/stream/template.js +0 -42
  477. package/dist/esm/core/server/string/index.js +0 -189
  478. package/dist/esm/core/server/string/loadable.js +0 -336
  479. package/dist/esm/core/server/string/prefetch.js +0 -105
  480. package/dist/esm/core/server/string/ssrData.js +0 -82
  481. package/dist/esm/core/server/string/styledComponent.js +0 -34
  482. package/dist/esm/core/server/string/types.js +0 -0
  483. package/dist/esm/core/server/tracer.js +0 -20
  484. package/dist/esm/core/server/utils.js +0 -80
  485. package/dist/esm/core/types.js +0 -0
  486. package/dist/esm/document/Body.js +0 -26
  487. package/dist/esm/document/Comment.js +0 -16
  488. package/dist/esm/document/DocumentContext.js +0 -9
  489. package/dist/esm/document/DocumentStructureContext.js +0 -12
  490. package/dist/esm/document/Head.js +0 -36
  491. package/dist/esm/document/Html.js +0 -108
  492. package/dist/esm/document/Links.js +0 -10
  493. package/dist/esm/document/Root.js +0 -41
  494. package/dist/esm/document/Script.js +0 -25
  495. package/dist/esm/document/Scripts.js +0 -10
  496. package/dist/esm/document/Style.js +0 -17
  497. package/dist/esm/document/Title.js +0 -10
  498. package/dist/esm/document/cli/index.js +0 -282
  499. package/dist/esm/document/constants.js +0 -56
  500. package/dist/esm/document/index.js +0 -12
  501. package/dist/esm/exports/head.js +0 -6
  502. package/dist/esm/exports/loadable.js +0 -6
  503. package/dist/esm/exports/server.js +0 -6
  504. package/dist/esm/exports/styled.js +0 -6
  505. package/dist/esm/index.js +0 -20
  506. package/dist/esm/react-server.js +0 -10
  507. package/dist/esm/router/cli/code/getClientRoutes/getRoutes.js +0 -185
  508. package/dist/esm/router/cli/code/getClientRoutes/getRoutesLegacy.js +0 -183
  509. package/dist/esm/router/cli/code/getClientRoutes/index.js +0 -6
  510. package/dist/esm/router/cli/code/getClientRoutes/utils.js +0 -28
  511. package/dist/esm/router/cli/code/index.js +0 -255
  512. package/dist/esm/router/cli/code/makeLegalIdentifier.js +0 -15
  513. package/dist/esm/router/cli/code/nestedRoutes.js +0 -397
  514. package/dist/esm/router/cli/code/templates.js +0 -554
  515. package/dist/esm/router/cli/code/utils.js +0 -212
  516. package/dist/esm/router/cli/constants.js +0 -51
  517. package/dist/esm/router/cli/entry.js +0 -61
  518. package/dist/esm/router/cli/handler.js +0 -191
  519. package/dist/esm/router/cli/index.js +0 -202
  520. package/dist/esm/router/index.js +0 -1
  521. package/dist/esm/router/internal.js +0 -5
  522. package/dist/esm/router/runtime/DefaultNotFound.js +0 -16
  523. package/dist/esm/router/runtime/DeferredDataScripts.js +0 -7
  524. package/dist/esm/router/runtime/DeferredDataScripts.node.js +0 -138
  525. package/dist/esm/router/runtime/PrefetchLink.js +0 -247
  526. package/dist/esm/router/runtime/constants.js +0 -19
  527. package/dist/esm/router/runtime/hooks.js +0 -7
  528. package/dist/esm/router/runtime/index.js +0 -17
  529. package/dist/esm/router/runtime/internal.js +0 -10
  530. package/dist/esm/router/runtime/plugin.js +0 -216
  531. package/dist/esm/router/runtime/plugin.node.js +0 -235
  532. package/dist/esm/router/runtime/routeModule.js +0 -26
  533. package/dist/esm/router/runtime/rsc-router.js +0 -437
  534. package/dist/esm/router/runtime/server.js +0 -1
  535. package/dist/esm/router/runtime/types.js +0 -0
  536. package/dist/esm/router/runtime/utils.js +0 -296
  537. package/dist/esm/router/runtime/withRouter.js +0 -19
  538. package/dist/esm/rsc/client.js +0 -7
  539. package/dist/esm-node/cli/alias.js +0 -28
  540. package/dist/esm-node/cli/code.js +0 -137
  541. package/dist/esm-node/cli/constants.js +0 -20
  542. package/dist/esm-node/cli/entry.js +0 -9
  543. package/dist/esm-node/cli/index.js +0 -145
  544. package/dist/esm-node/cli/ssr/babel-plugin-ssr-loader-id.js +0 -119
  545. package/dist/esm-node/cli/ssr/index.js +0 -116
  546. package/dist/esm-node/cli/ssr/loadable-bundler-plugin.js +0 -97
  547. package/dist/esm-node/common.js +0 -8
  548. package/dist/esm-node/core/browser/hydrate.js +0 -68
  549. package/dist/esm-node/core/browser/index.js +0 -128
  550. package/dist/esm-node/core/browser/withCallback.js +0 -17
  551. package/dist/esm-node/core/compat/hooks.js +0 -54
  552. package/dist/esm-node/core/compat/index.js +0 -18
  553. package/dist/esm-node/core/compat/requestContext.js +0 -23
  554. package/dist/esm-node/core/compatible.js +0 -156
  555. package/dist/esm-node/core/config.js +0 -15
  556. package/dist/esm-node/core/constants.js +0 -13
  557. package/dist/esm-node/core/context/index.js +0 -67
  558. package/dist/esm-node/core/context/monitors/default.js +0 -14
  559. package/dist/esm-node/core/context/monitors/index.js +0 -7
  560. package/dist/esm-node/core/context/monitors/index.server.js +0 -9
  561. package/dist/esm-node/core/context/request/index.js +0 -6
  562. package/dist/esm-node/core/context/request/index.server.js +0 -8
  563. package/dist/esm-node/core/context/response/index.js +0 -16
  564. package/dist/esm-node/core/context/response/index.server.js +0 -35
  565. package/dist/esm-node/core/context/runtime.js +0 -15
  566. package/dist/esm-node/core/context/serverPayload/index.js +0 -9
  567. package/dist/esm-node/core/context/serverPayload/index.server.js +0 -15
  568. package/dist/esm-node/core/index.js +0 -12
  569. package/dist/esm-node/core/loader/index.js +0 -4
  570. package/dist/esm-node/core/loader/loaderManager.js +0 -151
  571. package/dist/esm-node/core/loader/useLoader.js +0 -84
  572. package/dist/esm-node/core/plugin/index.js +0 -28
  573. package/dist/esm-node/core/react/index.js +0 -18
  574. package/dist/esm-node/core/react/wrapper.js +0 -10
  575. package/dist/esm-node/core/server/constants.js +0 -10
  576. package/dist/esm-node/core/server/helmet.js +0 -49
  577. package/dist/esm-node/core/server/index.js +0 -13
  578. package/dist/esm-node/core/server/react/index.js +0 -8
  579. package/dist/esm-node/core/server/react/no-ssr-cache/index.js +0 -12
  580. package/dist/esm-node/core/server/react/nossr/index.js +0 -13
  581. package/dist/esm-node/core/server/react/prerender/index.js +0 -90
  582. package/dist/esm-node/core/server/react/prerender/util.js +0 -93
  583. package/dist/esm-node/core/server/requestHandler.js +0 -199
  584. package/dist/esm-node/core/server/shared.js +0 -6
  585. package/dist/esm-node/core/server/stream/afterTemplate.js +0 -76
  586. package/dist/esm-node/core/server/stream/beforeTemplate.js +0 -85
  587. package/dist/esm-node/core/server/stream/createReadableStream.js +0 -123
  588. package/dist/esm-node/core/server/stream/createReadableStream.worker.js +0 -134
  589. package/dist/esm-node/core/server/stream/deferredScript.js +0 -76
  590. package/dist/esm-node/core/server/stream/index.js +0 -6
  591. package/dist/esm-node/core/server/stream/shared.js +0 -86
  592. package/dist/esm-node/core/server/stream/template.js +0 -15
  593. package/dist/esm-node/core/server/string/index.js +0 -113
  594. package/dist/esm-node/core/server/string/loadable.js +0 -154
  595. package/dist/esm-node/core/server/string/prefetch.js +0 -69
  596. package/dist/esm-node/core/server/string/ssrData.js +0 -74
  597. package/dist/esm-node/core/server/string/styledComponent.js +0 -29
  598. package/dist/esm-node/core/server/tracer.js +0 -20
  599. package/dist/esm-node/core/server/utils.js +0 -57
  600. package/dist/esm-node/document/Body.js +0 -22
  601. package/dist/esm-node/document/Comment.js +0 -16
  602. package/dist/esm-node/document/DocumentContext.js +0 -9
  603. package/dist/esm-node/document/DocumentStructureContext.js +0 -12
  604. package/dist/esm-node/document/Head.js +0 -32
  605. package/dist/esm-node/document/Html.js +0 -83
  606. package/dist/esm-node/document/Links.js +0 -10
  607. package/dist/esm-node/document/Root.js +0 -35
  608. package/dist/esm-node/document/Script.js +0 -23
  609. package/dist/esm-node/document/Scripts.js +0 -10
  610. package/dist/esm-node/document/Style.js +0 -17
  611. package/dist/esm-node/document/Title.js +0 -10
  612. package/dist/esm-node/document/cli/index.js +0 -188
  613. package/dist/esm-node/document/constants.js +0 -58
  614. package/dist/esm-node/exports/head.js +0 -6
  615. package/dist/esm-node/exports/loadable.js +0 -6
  616. package/dist/esm-node/exports/server.js +0 -4
  617. package/dist/esm-node/exports/styled.js +0 -6
  618. package/dist/esm-node/index.js +0 -20
  619. package/dist/esm-node/react-server.js +0 -10
  620. package/dist/esm-node/router/cli/code/getClientRoutes/getRoutes.js +0 -163
  621. package/dist/esm-node/router/cli/code/getClientRoutes/getRoutesLegacy.js +0 -161
  622. package/dist/esm-node/router/cli/code/getClientRoutes/index.js +0 -6
  623. package/dist/esm-node/router/cli/code/getClientRoutes/utils.js +0 -22
  624. package/dist/esm-node/router/cli/code/index.js +0 -126
  625. package/dist/esm-node/router/cli/code/nestedRoutes.js +0 -258
  626. package/dist/esm-node/router/cli/code/templates.js +0 -452
  627. package/dist/esm-node/router/cli/code/utils.js +0 -101
  628. package/dist/esm-node/router/cli/constants.js +0 -51
  629. package/dist/esm-node/router/cli/entry.js +0 -54
  630. package/dist/esm-node/router/cli/handler.js +0 -67
  631. package/dist/esm-node/router/cli/index.js +0 -110
  632. package/dist/esm-node/router/runtime/DefaultNotFound.js +0 -14
  633. package/dist/esm-node/router/runtime/DeferredDataScripts.js +0 -6
  634. package/dist/esm-node/router/runtime/DeferredDataScripts.node.js +0 -132
  635. package/dist/esm-node/router/runtime/PrefetchLink.js +0 -192
  636. package/dist/esm-node/router/runtime/hooks.js +0 -7
  637. package/dist/esm-node/router/runtime/index.js +0 -17
  638. package/dist/esm-node/router/runtime/internal.js +0 -10
  639. package/dist/esm-node/router/runtime/plugin.js +0 -206
  640. package/dist/esm-node/router/runtime/plugin.node.js +0 -174
  641. package/dist/esm-node/router/runtime/routeModule.js +0 -26
  642. package/dist/esm-node/router/runtime/rsc-router.js +0 -284
  643. package/dist/esm-node/router/runtime/server.js +0 -1
  644. package/dist/esm-node/router/runtime/utils.js +0 -218
  645. package/dist/esm-node/router/runtime/withRouter.js +0 -18
  646. package/dist/esm-node/rsc/client.js +0 -7
  647. package/dist/types/cli/ssr/babel-plugin-ssr-loader-id.d.ts +0 -1
  648. package/dist/types/config.d.ts +0 -6
  649. package/dist/types/core/compatible.d.ts +0 -24
  650. package/dist/types/core/loader/index.d.ts +0 -1
  651. package/dist/types/core/loader/loaderManager.d.ts +0 -56
  652. package/dist/types/core/loader/useLoader.d.ts +0 -36
  653. package/dist/types/core/plugin/base.d.ts +0 -15
  654. package/dist/types/core/server/react/prerender/index.d.ts +0 -5
  655. package/dist/types/core/server/react/prerender/type.d.ts +0 -29
  656. package/dist/types/core/server/react/prerender/util.d.ts +0 -6
  657. package/dist/types/core/server/string/prefetch.d.ts +0 -16
  658. package/dist/types/core/server/string/styledComponent.d.ts +0 -11
  659. package/dist/types/exports/server.d.ts +0 -14
  660. package/dist/types/exports/styled.d.ts +0 -3
  661. package/dist/types/router/cli/code/getClientRoutes/getRoutesLegacy.d.ts +0 -9
  662. package/types/index.d.ts +0 -7
  663. package/types/router.d.ts +0 -24
  664. /package/dist/esm/cache/{index.js → index.mjs} +0 -0
  665. /package/dist/{esm-node/core/server/string/types.js → esm/core/plugin/types.mjs} +0 -0
  666. /package/dist/{esm-node/core/types.js → esm/core/server/string/types.mjs} +0 -0
  667. /package/dist/{esm-node/router/runtime/types.js → esm/core/types.mjs} +0 -0
  668. /package/dist/{esm-node/document/index.js → esm/document/index.mjs} +0 -0
  669. /package/dist/{esm-node/router/index.js → esm/router/index.mjs} +0 -0
  670. /package/dist/esm/{config.js → router/runtime/types.mjs} +0 -0
  671. /package/dist/esm/rsc/{server.js → server.mjs} +0 -0
  672. /package/dist/esm-node/cache/{index.js → index.mjs} +0 -0
  673. /package/dist/esm-node/{config.js → core/plugin/types.mjs} +0 -0
  674. /package/dist/esm-node/core/{plugin/base.js → server/string/types.mjs} +0 -0
  675. /package/dist/esm-node/core/{plugin/types.js → types.mjs} +0 -0
  676. /package/dist/esm-node/{core/server/react/prerender/type.js → router/runtime/types.mjs} +0 -0
  677. /package/dist/esm-node/rsc/{server.js → server.mjs} +0 -0
@@ -0,0 +1,73 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { JS_EXTENSIONS, fs as utils_fs, normalizeToPosixPath } from "@modern-js/utils";
4
+ import { parse } from "es-module-lexer";
5
+ import { transform } from "esbuild";
6
+ import { ACTION_EXPORT_NAME, LOADER_EXPORT_NAME } from "../constants";
7
+ const walkDirectory = (dir)=>fs.readdirSync(dir).reduce((previous, filename)=>{
8
+ const filePath = path.join(dir, filename);
9
+ if (fs.statSync(filePath).isDirectory()) return [
10
+ ...previous,
11
+ ...walkDirectory(filePath)
12
+ ];
13
+ return [
14
+ ...previous,
15
+ filePath
16
+ ];
17
+ }, []);
18
+ const isPageComponentFile = (filePath)=>{
19
+ if (/\.(d|test|spec|e2e)\.(js|jsx|ts|tsx)$/.test(filePath)) return false;
20
+ if ([
21
+ '.js',
22
+ '.jsx',
23
+ '.ts',
24
+ '.tsx'
25
+ ].includes(path.extname(filePath))) return true;
26
+ return false;
27
+ };
28
+ const replaceWithAlias = (base, filePath, alias)=>{
29
+ if (filePath.includes(base)) return normalizeToPosixPath(path.join(alias, path.relative(base, filePath)));
30
+ return filePath;
31
+ };
32
+ const parseModule = async ({ source, filename })=>{
33
+ let content = source;
34
+ if (JS_EXTENSIONS.some((ext)=>filename.endsWith(ext))) {
35
+ const result = await transform(content, {
36
+ loader: path.extname(filename).slice(1),
37
+ format: 'esm'
38
+ });
39
+ content = result.code;
40
+ }
41
+ return parse(content);
42
+ };
43
+ const hasLoader = async (filename, source)=>{
44
+ let content = source;
45
+ if (!source) content = (await utils_fs.readFile(filename, 'utf-8')).toString();
46
+ if (content) {
47
+ const [, moduleExports] = await parseModule({
48
+ source: content.toString(),
49
+ filename
50
+ });
51
+ return moduleExports.some((e)=>e.n === LOADER_EXPORT_NAME);
52
+ }
53
+ return false;
54
+ };
55
+ const hasAction = async (filename, source)=>{
56
+ let content = source;
57
+ if (!source) content = (await utils_fs.readFile(filename, 'utf-8')).toString();
58
+ if (content) {
59
+ const [, moduleExports] = await parseModule({
60
+ source: content.toString(),
61
+ filename
62
+ });
63
+ return moduleExports.some((e)=>e.n === ACTION_EXPORT_NAME);
64
+ }
65
+ return false;
66
+ };
67
+ const getServerLoadersFile = (internalDirectory, entryName)=>path.join(internalDirectory, entryName, 'route-server-loaders.js');
68
+ const getServerCombinedModueFile = (internalDirectory, entryName)=>path.join(internalDirectory, entryName, 'server-loader-combined.js');
69
+ const getPathWithoutExt = (filename)=>{
70
+ const extname = path.extname(filename);
71
+ return extname ? filename.slice(0, -extname.length) : filename;
72
+ };
73
+ export { getPathWithoutExt, getServerCombinedModueFile, getServerLoadersFile, hasAction, hasLoader, isPageComponentFile, parseModule, replaceWithAlias, walkDirectory };
@@ -0,0 +1,82 @@
1
+ import node_path from "node:path";
2
+ import { fs, normalizeToPosixPath } from "@modern-js/utils";
3
+ import { getRouteId } from "../code/nestedRoutes";
4
+ import { getPathWithoutExt, replaceWithAlias } from "../code/utils";
5
+ async function processConfigRoutes(configRoutes, entryName, isMainEntry, configRoutesDir, alias) {
6
+ return Promise.all(configRoutes.map((configRoute)=>processConfigRoute(configRoute, entryName, isMainEntry, configRoutesDir, alias)));
7
+ }
8
+ async function processConfigRoute(configRoute, entryName, isMainEntry, configRoutesDir, alias) {
9
+ if ('config' !== configRoute.origin) {
10
+ if (configRoute.children && configRoute.children.length > 0) {
11
+ const processedChildren = await Promise.all(configRoute.children.map((child)=>processConfigRoute(child, entryName, isMainEntry, configRoutesDir, alias)));
12
+ return {
13
+ ...configRoute,
14
+ children: processedChildren
15
+ };
16
+ }
17
+ return configRoute;
18
+ }
19
+ const componentPath = configRoute.component;
20
+ const absoluteComponentPath = componentPath ? node_path.isAbsolute(componentPath) ? componentPath : node_path.resolve(configRoutesDir, componentPath) : void 0;
21
+ const routeId = configRoute.id || getRouteId(componentPath, configRoutesDir, entryName, isMainEntry);
22
+ const processedRoute = {
23
+ ...configRoute,
24
+ id: routeId,
25
+ path: configRoute.path ?? '',
26
+ type: 'nested',
27
+ origin: 'config'
28
+ };
29
+ if (absoluteComponentPath) {
30
+ const componentPathWithAlias = alias ? getPathWithoutExt(replaceWithAlias(alias.basename, absoluteComponentPath, alias.name)) : getPathWithoutExt(absoluteComponentPath);
31
+ processedRoute._component = componentPathWithAlias;
32
+ }
33
+ if (configRoute.children && configRoute.children.length > 0) {
34
+ const processedChildren = await Promise.all(configRoute.children.map((child)=>processConfigRoute(child, entryName, isMainEntry, configRoutesDir, alias)));
35
+ processedRoute.children = processedChildren;
36
+ }
37
+ if ('page' === configRoute.routeType || !configRoute.routeType && !configRoute.children) {
38
+ const rawPath = configRoute.path;
39
+ const isIndexPath = '' === rawPath || '/' === rawPath || 'string' == typeof rawPath && '' === rawPath.replace(/^\/+/, '');
40
+ if (isIndexPath) {
41
+ processedRoute.index = true;
42
+ delete processedRoute.path;
43
+ }
44
+ }
45
+ if (absoluteComponentPath) await discoverRelatedFiles(processedRoute, absoluteComponentPath, alias);
46
+ return processedRoute;
47
+ }
48
+ async function discoverRelatedFiles(nestedRoute, componentPath, alias) {
49
+ if ('config' !== nestedRoute.origin) return;
50
+ const componentDir = node_path.dirname(componentPath);
51
+ const componentName = node_path.basename(componentPath, node_path.extname(componentPath));
52
+ const relatedFiles = {
53
+ data: `${componentName}.data.ts`,
54
+ clientData: `${componentName}.data.client.ts`,
55
+ error: `${componentName}.error.tsx`,
56
+ loading: `${componentName}.loading.tsx`,
57
+ config: `${componentName}.config.ts`
58
+ };
59
+ await Promise.all(Object.entries(relatedFiles).map(async ([key, filename])=>{
60
+ const filePath = node_path.resolve(componentDir, filename);
61
+ try {
62
+ if (await fs.promises.stat(filePath).then((stat)=>stat.isFile()).catch(()=>false)) {
63
+ const aliasedPath = alias ? replaceWithAlias(alias.basename, filePath, alias.name) : filePath;
64
+ nestedRoute[key] = normalizeToPosixPath(aliasedPath);
65
+ }
66
+ } catch (e) {}
67
+ }));
68
+ }
69
+ function normalizeRoutes(generatedRoutes) {
70
+ return generatedRoutes.map((route)=>normalizeRoute(route));
71
+ }
72
+ function normalizeRoute(route) {
73
+ const { component, ...rest } = route;
74
+ const processedRoute = {
75
+ ...rest,
76
+ ...route.children && route.children.length > 0 ? {
77
+ children: route.children.map((child)=>normalizeRoute(child))
78
+ } : {}
79
+ };
80
+ return processedRoute;
81
+ }
82
+ export { normalizeRoutes, processConfigRoutes };
@@ -0,0 +1,105 @@
1
+ import node_path from "node:path";
2
+ import { fs, getMeta, logger } from "@modern-js/utils";
3
+ function createRouteFunctions(basePath) {
4
+ const resolveComponentPath = (component)=>{
5
+ if (!component) return component;
6
+ if (node_path.isAbsolute(component)) return component;
7
+ if (component.startsWith('./') || component.startsWith('../') || !component.startsWith('@')) return node_path.resolve(basePath, component);
8
+ return component;
9
+ };
10
+ const createNestedRoute = (component, routePath, children = [], routeType, wildcard = false)=>{
11
+ if ('string' == typeof component && component.startsWith('@')) throw new Error('component path must be absolute or relative; alias is not allowed');
12
+ if (void 0 !== routePath && 'string' != typeof routePath) throw new Error('Route path must be a string');
13
+ const resolvedComponent = resolveComponentPath(component);
14
+ if ('page' === routeType || wildcard) {
15
+ if (!component || '' === component.trim()) throw new Error('page route must specify a non-empty component path');
16
+ if (!fs.pathExistsSync(resolvedComponent)) throw new Error(`page component not found: ${resolvedComponent}`);
17
+ }
18
+ if (wildcard) return {
19
+ path: routePath || '*',
20
+ component: resolvedComponent,
21
+ routeType: 'page',
22
+ origin: 'config',
23
+ type: 'nested',
24
+ children: children.length > 0 ? children : void 0
25
+ };
26
+ if (!routeType) throw new Error('createRouteConfig must specify route type');
27
+ return {
28
+ path: routePath,
29
+ component: resolvedComponent,
30
+ routeType,
31
+ origin: 'config',
32
+ type: 'nested',
33
+ children: children.length > 0 ? children : void 0
34
+ };
35
+ };
36
+ return {
37
+ route: (component, pathOrChildren, maybeChildren)=>{
38
+ const path = Array.isArray(pathOrChildren) ? void 0 : pathOrChildren;
39
+ const children = Array.isArray(pathOrChildren) ? pathOrChildren : maybeChildren ?? [];
40
+ const routeType = children.length > 0 ? 'layout' : 'page';
41
+ return createNestedRoute(component, path, children, routeType);
42
+ },
43
+ layout: (component, pathOrChildren, maybeChildren)=>{
44
+ const path = Array.isArray(pathOrChildren) ? void 0 : pathOrChildren;
45
+ const children = Array.isArray(pathOrChildren) ? pathOrChildren : maybeChildren ?? [];
46
+ if (0 === children.length) throw new Error('layout route must have children');
47
+ return createNestedRoute(component, path, children, 'layout');
48
+ },
49
+ page: (component, path)=>createNestedRoute(component, path, [], 'page'),
50
+ $: (component, path)=>createNestedRoute(component, path, [], void 0, true)
51
+ };
52
+ }
53
+ async function findConfigRoutesFile(entrypoint, appContext) {
54
+ const { absoluteEntryDir } = entrypoint;
55
+ if (!absoluteEntryDir) return null;
56
+ const { metaName } = appContext;
57
+ const meta = getMeta(metaName);
58
+ const possibleNames = [
59
+ `${meta}.routes.ts`,
60
+ `${meta}.routes.mts`,
61
+ `${meta}.routes.tsx`,
62
+ `${meta}.routes.js`,
63
+ `${meta}.routes.mjs`,
64
+ `${meta}.routes.jsx`
65
+ ];
66
+ for (const filename of possibleNames){
67
+ const filePath = node_path.resolve(absoluteEntryDir, filename);
68
+ if (await fs.pathExists(filePath)) {
69
+ const stats = await fs.stat(filePath);
70
+ if (stats.isFile()) {
71
+ logger.debug(`Found config routes file: ${filePath}`);
72
+ return filePath;
73
+ }
74
+ }
75
+ }
76
+ return null;
77
+ }
78
+ async function parseConfigRoutesFile(filePath, entrypoint, fileRoutes) {
79
+ const { loadTypeScriptFile } = await import("@modern-js/plugin/run");
80
+ const configModule = loadTypeScriptFile(filePath);
81
+ if (!configModule.default || 'function' != typeof configModule.default) throw new Error(`Config routes file must export a default function. Found: ${typeof configModule.default}`);
82
+ const routeFunctions = createRouteFunctions(entrypoint.absoluteEntryDir);
83
+ let routesConfig;
84
+ if (!fileRoutes) throw new Error("Routes function expects file routes parameter, but none provided");
85
+ routesConfig = configModule.default(routeFunctions, fileRoutes);
86
+ if (!Array.isArray(routesConfig)) throw new Error(`Config routes function must return an array of routes. Received: ${typeof routesConfig}`);
87
+ return {
88
+ entryName: entrypoint.entryName,
89
+ filePath,
90
+ routes: routesConfig,
91
+ isMainEntry: entrypoint.isMainEntry || false
92
+ };
93
+ }
94
+ async function discoverAndParseConfigRoutes(entrypoint, appContext, fileRoutes) {
95
+ const configFilePath = await findConfigRoutesFile(entrypoint, appContext);
96
+ if (!configFilePath) {
97
+ logger.debug(`No config routes file found for entry: ${entrypoint.entryName}`);
98
+ return null;
99
+ }
100
+ const configRouteFile = await parseConfigRoutesFile(configFilePath, entrypoint, fileRoutes);
101
+ logger.debug(`Successfully loaded config routes from: ${configFilePath}`);
102
+ logger.debug(`Found ${configRouteFile.routes.length} route(s) for entry: ${entrypoint.entryName}`);
103
+ return configRouteFile;
104
+ }
105
+ export { discoverAndParseConfigRoutes, findConfigRoutesFile, parseConfigRoutesFile };
@@ -0,0 +1,32 @@
1
+ const NESTED_ROUTES_DIR = 'routes';
2
+ const FILE_SYSTEM_ROUTES_FILE_NAME = 'routes.js';
3
+ const LOADER_EXPORT_NAME = 'loader';
4
+ const ACTION_EXPORT_NAME = 'action';
5
+ const TEMP_LOADERS_DIR = '__loaders__';
6
+ const FILE_SYSTEM_ROUTES_INDEX = 'index';
7
+ const FILE_SYSTEM_ROUTES_IGNORED_REGEX = /\.(d|test|spec|e2e)\.(js|jsx|ts|tsx)$/;
8
+ const FILE_SYSTEM_ROUTES_DYNAMIC_REGEXP = /^\[(\S+)\]([*+?]?)$/;
9
+ const FILE_SYSTEM_ROUTES_COMPONENTS_DIR = 'internal_components';
10
+ const APP_CONFIG_NAME = 'config';
11
+ const APP_INIT_EXPORTED = 'init';
12
+ const NESTED_ROUTE = {
13
+ LAYOUT_FILE: 'layout',
14
+ LAYOUT_CONFIG_FILE: 'layout.config',
15
+ LAYOUT_LOADER_FILE: 'layout.loader',
16
+ LAYOUT_DATA_FILE: 'layout.data',
17
+ LAYOUT_CLIENT_LOADER: 'layout.data.client',
18
+ PAGE_FILE: 'page',
19
+ PAGE_CONFIG_FILE: 'page.config',
20
+ PAGE_LOADER_FILE: 'page.loader',
21
+ PAGE_DATA_FILE: 'page.data',
22
+ PAGE_CLIENT_LOADER: 'page.data.client',
23
+ SPLATE_FILE: '$',
24
+ SPLATE_CONFIG_FILE: '$.config',
25
+ SPLATE_LOADER_FILE: '$.loader',
26
+ SPLATE_DATA_FILE: '$.data',
27
+ SPLATE_CLIENT_DATA: '$.data.client',
28
+ LOADING_FILE: 'loading',
29
+ ERROR_FILE: 'error',
30
+ LOADER_FILE: 'loader'
31
+ };
32
+ export { ACTION_EXPORT_NAME, APP_CONFIG_NAME, APP_INIT_EXPORTED, FILE_SYSTEM_ROUTES_COMPONENTS_DIR, FILE_SYSTEM_ROUTES_DYNAMIC_REGEXP, FILE_SYSTEM_ROUTES_FILE_NAME, FILE_SYSTEM_ROUTES_IGNORED_REGEX, FILE_SYSTEM_ROUTES_INDEX, LOADER_EXPORT_NAME, NESTED_ROUTE, NESTED_ROUTES_DIR, TEMP_LOADERS_DIR };
@@ -0,0 +1,22 @@
1
+ import path from "path";
2
+ import { fs } from "@modern-js/utils";
3
+ import { hasApp } from "../../cli/entry";
4
+ import { NESTED_ROUTES_DIR } from "./constants";
5
+ const hasNestedRoutes = (dir)=>fs.existsSync(path.join(dir, NESTED_ROUTES_DIR));
6
+ const isRouteEntry = (dir)=>{
7
+ if (hasNestedRoutes(dir)) return path.join(dir, NESTED_ROUTES_DIR);
8
+ return false;
9
+ };
10
+ const modifyEntrypoints = (entrypoints)=>entrypoints.map((entrypoint)=>{
11
+ if (!entrypoint.isAutoMount) return entrypoint;
12
+ if (entrypoint?.isCustomSourceEntry) {
13
+ if (entrypoint.fileSystemRoutes) entrypoint.nestedRoutesEntry = entrypoint.absoluteEntryDir || entrypoint.entry;
14
+ return entrypoint;
15
+ }
16
+ const isHasApp = hasApp(entrypoint.absoluteEntryDir);
17
+ if (isHasApp) return entrypoint;
18
+ const isHasNestedRoutes = hasNestedRoutes(entrypoint.absoluteEntryDir);
19
+ if (isHasNestedRoutes) entrypoint.nestedRoutesEntry = path.join(entrypoint.absoluteEntryDir, NESTED_ROUTES_DIR);
20
+ return entrypoint;
21
+ });
22
+ export { hasNestedRoutes, isRouteEntry, modifyEntrypoints };
@@ -0,0 +1,66 @@
1
+ import path from "path";
2
+ import { getMeta } from "@modern-js/utils";
3
+ import { cloneDeep } from "@modern-js/utils/lodash";
4
+ import { runtimeGlobalContext } from "./code/templates";
5
+ import { isPageComponentFile } from "./code/utils";
6
+ import { modifyEntrypoints } from "./entry";
7
+ let originEntrypoints = [];
8
+ async function handleModifyEntrypoints(entrypoints) {
9
+ return modifyEntrypoints(entrypoints);
10
+ }
11
+ async function handleGeneratorEntryCode(api, entrypoints) {
12
+ const appContext = api.getAppContext();
13
+ const { internalDirectory } = appContext;
14
+ const resolvedConfig = api.getNormalizedConfig();
15
+ const { generatorRegisterCode, generateCode, generatorServerRegisterCode } = await import("./code");
16
+ originEntrypoints = cloneDeep(entrypoints);
17
+ const enableRsc = resolvedConfig?.server?.rsc;
18
+ await generateCode(appContext, resolvedConfig, entrypoints, api);
19
+ await Promise.all(entrypoints.map(async (entrypoint)=>{
20
+ if (entrypoint.nestedRoutesEntry || entrypoint.pageRoutesEntry) {
21
+ const route = appContext.serverRoutes.find((r)=>r.entryName === entrypoint.entryName);
22
+ const basename = route?.urlPath || '/';
23
+ generatorRegisterCode(internalDirectory, entrypoint.entryName, await runtimeGlobalContext({
24
+ entryName: entrypoint.entryName,
25
+ metaName: appContext.metaName,
26
+ srcDirectory: appContext.srcDirectory,
27
+ nestedRoutesEntry: entrypoint.nestedRoutesEntry,
28
+ internalSrcAlias: appContext.internalSrcAlias,
29
+ globalApp: entrypoint.fileSystemRoutes?.globalApp,
30
+ rscType: enableRsc ? 'client' : void 0,
31
+ basename
32
+ }));
33
+ if (enableRsc) generatorServerRegisterCode(internalDirectory, entrypoint.entryName, await runtimeGlobalContext({
34
+ entryName: entrypoint.entryName,
35
+ metaName: appContext.metaName,
36
+ srcDirectory: appContext.srcDirectory,
37
+ nestedRoutesEntry: entrypoint.nestedRoutesEntry,
38
+ internalSrcAlias: appContext.internalSrcAlias,
39
+ globalApp: entrypoint.fileSystemRoutes?.globalApp,
40
+ rscType: 'server',
41
+ basename
42
+ }));
43
+ }
44
+ }));
45
+ return entrypoints;
46
+ }
47
+ async function handleFileChange(api, e) {
48
+ const appContext = api.getAppContext();
49
+ const { appDirectory, entrypoints } = appContext;
50
+ const { filename, eventType } = e;
51
+ const nestedRouteEntries = entrypoints.map((point)=>point.nestedRoutesEntry).filter(Boolean);
52
+ const pagesDir = entrypoints.map((point)=>point.entry).filter((entry)=>entry && !path.extname(entry)).concat(nestedRouteEntries);
53
+ const isPageFile = (name)=>pagesDir.some((pageDir)=>name.includes(pageDir));
54
+ const absoluteFilePath = path.resolve(appDirectory, filename);
55
+ const isRouteComponent = isPageFile(absoluteFilePath) && isPageComponentFile(absoluteFilePath);
56
+ const meta = getMeta(appContext.metaName);
57
+ const normalizedFilename = filename.replace(/\\/g, '/');
58
+ const isConfigRoutesFile = normalizedFilename.includes(`${meta}.routes.`) && /\.(js|ts|jsx|tsx|mjs|mts)$/i.test(path.extname(filename));
59
+ if (isRouteComponent && ('add' === eventType || 'unlink' === eventType) || isConfigRoutesFile && ('change' === eventType || 'add' === eventType || 'unlink' === eventType)) {
60
+ const resolvedConfig = api.getNormalizedConfig();
61
+ const { generateCode } = await import("./code");
62
+ const entrypoints = cloneDeep(originEntrypoints);
63
+ await generateCode(appContext, resolvedConfig, entrypoints, api);
64
+ }
65
+ }
66
+ export { handleFileChange, handleGeneratorEntryCode, handleModifyEntrypoints };
@@ -0,0 +1,80 @@
1
+ import node_path from "node:path";
2
+ import { NESTED_ROUTE_SPEC_FILE, filterRoutesForServer, fs } from "@modern-js/utils";
3
+ import { isRouteEntry } from "./entry";
4
+ import { handleFileChange, handleGeneratorEntryCode, handleModifyEntrypoints } from "./handler";
5
+ const routerPlugin = ()=>({
6
+ name: '@modern-js/plugin-router',
7
+ required: [
8
+ '@modern-js/runtime'
9
+ ],
10
+ setup: (api)=>{
11
+ const nestedRoutes = {};
12
+ const nestedRoutesForServer = {};
13
+ const { metaName } = api.getAppContext();
14
+ api.addCommand(({ program })=>{
15
+ program.command('routes').description('generate routes inspect report').action(async ()=>{
16
+ const { generateRoutesInspectReport } = await import("./code/inspect");
17
+ await generateRoutesInspectReport(api);
18
+ });
19
+ });
20
+ api._internalRuntimePlugins(({ entrypoint, plugins })=>{
21
+ const { nestedRoutesEntry } = entrypoint;
22
+ const { serverRoutes, metaName } = api.getAppContext();
23
+ const serverBase = serverRoutes.filter((route)=>route.entryName === entrypoint.entryName).map((route)=>route.urlPath).sort((a, b)=>a.length - b.length > 0 ? -1 : 1);
24
+ if (nestedRoutesEntry) plugins.push({
25
+ name: 'router',
26
+ path: `@${metaName}/runtime/router/internal`,
27
+ config: {
28
+ serverBase
29
+ }
30
+ });
31
+ return {
32
+ entrypoint,
33
+ plugins
34
+ };
35
+ });
36
+ api.checkEntryPoint(({ path, entry })=>({
37
+ path,
38
+ entry: entry || isRouteEntry(path)
39
+ }));
40
+ api.config(()=>({
41
+ source: {
42
+ include: [
43
+ /[\\/]node_modules[\\/]react-router[\\/]/,
44
+ /[\\/]node_modules[\\/]react-router-dom[\\/]/,
45
+ node_path.resolve(__dirname, '../runtime').replace('cjs', 'esm')
46
+ ]
47
+ }
48
+ }));
49
+ api.modifyEntrypoints(async ({ entrypoints })=>{
50
+ const newEntryPoints = await handleModifyEntrypoints(entrypoints);
51
+ return {
52
+ entrypoints: newEntryPoints
53
+ };
54
+ });
55
+ api.generateEntryCode(async ({ entrypoints })=>{
56
+ await handleGeneratorEntryCode(api, entrypoints);
57
+ });
58
+ api.onFileChanged(async (e)=>{
59
+ await handleFileChange(api, e);
60
+ });
61
+ api.modifyFileSystemRoutes(({ entrypoint, routes })=>{
62
+ nestedRoutes[entrypoint.entryName] = routes;
63
+ nestedRoutesForServer[entrypoint.entryName] = filterRoutesForServer(routes);
64
+ return {
65
+ entrypoint,
66
+ routes
67
+ };
68
+ });
69
+ api.onBeforeGenerateRoutes(async ({ entrypoint, code })=>{
70
+ const { distDirectory } = api.getAppContext();
71
+ await fs.outputJSON(node_path.resolve(distDirectory, NESTED_ROUTE_SPEC_FILE), nestedRoutesForServer);
72
+ return {
73
+ entrypoint,
74
+ code
75
+ };
76
+ });
77
+ }
78
+ });
79
+ const cli = routerPlugin;
80
+ export { cli as default, handleFileChange, handleModifyEntrypoints, isRouteEntry, routerPlugin };
@@ -1,5 +1,3 @@
1
- export * from "./runtime/internal";
2
1
  import { routerPlugin } from "./runtime/internal";
3
- export {
4
- routerPlugin as default
5
- };
2
+ export * from "./runtime/internal";
3
+ export { routerPlugin as default };
@@ -0,0 +1,13 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import "react";
3
+ const DefaultNotFound = ()=>/*#__PURE__*/ jsx("div", {
4
+ style: {
5
+ margin: '150px auto',
6
+ textAlign: 'center',
7
+ display: 'flex',
8
+ alignItems: 'center',
9
+ justifyContent: 'center'
10
+ },
11
+ children: "404"
12
+ });
13
+ export { DefaultNotFound };
@@ -0,0 +1,2 @@
1
+ const DeferredDataScripts = ()=>null;
2
+ export { DeferredDataScripts as default };
@@ -0,0 +1,120 @@
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import { serializeJson, storage } from "@modern-js/runtime-utils/node";
3
+ import { useEffect, useMemo, useRef } from "react";
4
+ import { ROUTER_DATA_JSON_ID } from "../../core/constants";
5
+ import { modernInline, runWindowFnStr } from "./constants";
6
+ import { serializeErrors } from "./utils";
7
+ const DeferredDataScripts = (props)=>{
8
+ const staticContext = props?.context;
9
+ const useJsonScript = props?.useJsonScript;
10
+ const hydratedRef = useRef(false);
11
+ useEffect(()=>{
12
+ hydratedRef.current = true;
13
+ }, []);
14
+ const deferredScripts = useMemo(()=>{
15
+ if (!staticContext) return null;
16
+ const activeDeferreds = storage.useContext().activeDeferreds;
17
+ const _ROUTER_DATA = {
18
+ loaderData: staticContext.loaderData,
19
+ errors: serializeErrors(staticContext.errors)
20
+ };
21
+ const initialScript0 = useJsonScript ? `${serializeJson(_ROUTER_DATA)}` : '';
22
+ const initialScript1 = useJsonScript ? modernInline : [
23
+ `_ROUTER_DATA = ${serializeJson(_ROUTER_DATA)};`,
24
+ modernInline
25
+ ].join('\n');
26
+ const deferredDataScripts = [];
27
+ const initialScripts = Array.from(activeDeferreds.entries()).map(([routeId, deferredData])=>{
28
+ const pendingKeys = new Set(deferredData.pendingKeys);
29
+ const { deferredKeys } = deferredData;
30
+ const deferredKeyPromiseManifests = deferredKeys.map((key)=>{
31
+ if (pendingKeys.has(key)) return {
32
+ key,
33
+ routerDataFnName: 's',
34
+ routerDataFnArgs: [
35
+ serializeJson(routeId),
36
+ serializeJson(key)
37
+ ]
38
+ };
39
+ {
40
+ const trackedPromise = deferredData.data[key];
41
+ if (void 0 !== trackedPromise._error) {
42
+ const error = {
43
+ message: trackedPromise._error.message,
44
+ stack: 'production' !== process.env.NODE_ENV ? trackedPromise._error.stack : void 0
45
+ };
46
+ return {
47
+ key,
48
+ routerDataFnName: 'p',
49
+ routerDataFnArgs: [
50
+ serializeJson(void 0),
51
+ serializeJson(error)
52
+ ]
53
+ };
54
+ }
55
+ if (void 0 === trackedPromise._data) throw new Error(`The deferred data for ${key} was not resolved, did you forget to return data from a deferred promise`);
56
+ return {
57
+ key,
58
+ routerDataFnName: 'p',
59
+ routerDataFnArgs: [
60
+ serializeJson(trackedPromise._data)
61
+ ]
62
+ };
63
+ }
64
+ });
65
+ return {
66
+ fnName: "mergeLoaderData",
67
+ fnRun: runWindowFnStr,
68
+ fnArgs: [
69
+ routeId,
70
+ deferredKeyPromiseManifests
71
+ ],
72
+ fnScriptSrc: 'modern-run-window-fn'
73
+ };
74
+ });
75
+ return [
76
+ initialScript0,
77
+ initialScript1,
78
+ initialScripts,
79
+ deferredDataScripts
80
+ ];
81
+ }, []);
82
+ if (!deferredScripts) return null;
83
+ return /*#__PURE__*/ jsx(Fragment, {
84
+ children: !hydratedRef.current && /*#__PURE__*/ jsxs(Fragment, {
85
+ children: [
86
+ 0 !== deferredScripts[0].length && /*#__PURE__*/ jsx("script", {
87
+ type: "application/json",
88
+ id: ROUTER_DATA_JSON_ID,
89
+ nonce: props?.nonce,
90
+ suppressHydrationWarning: true,
91
+ dangerouslySetInnerHTML: {
92
+ __html: deferredScripts[0]
93
+ }
94
+ }),
95
+ /*#__PURE__*/ jsx("script", {
96
+ async: true,
97
+ nonce: props?.nonce,
98
+ "data-script-src": "modern-inline",
99
+ suppressHydrationWarning: true,
100
+ dangerouslySetInnerHTML: {
101
+ __html: deferredScripts[1]
102
+ }
103
+ }),
104
+ deferredScripts[2].map(({ fnName, fnArgs, fnRun, fnScriptSrc })=>/*#__PURE__*/ jsx("script", {
105
+ async: true,
106
+ "data-script-src": fnScriptSrc,
107
+ "data-fn-name": fnName,
108
+ "data-fn-args": JSON.stringify(fnArgs),
109
+ nonce: props?.nonce,
110
+ suppressHydrationWarning: true,
111
+ dangerouslySetInnerHTML: {
112
+ __html: fnRun
113
+ }
114
+ }, fnName))
115
+ ]
116
+ })
117
+ });
118
+ };
119
+ const DeferredDataScripts_node = DeferredDataScripts;
120
+ export { DeferredDataScripts_node as default };