@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,95 @@
1
+ import path from "path";
2
+ import { fs } from "@modern-js/utils";
3
+ import { cloneDeep } from "@modern-js/utils/lodash";
4
+ import { modifyEntrypoints } from "../entry";
5
+ import { generateRoutesForEntry } from "./index";
6
+ function convertRouteToInspectFormat(route) {
7
+ const inspectRoute = {
8
+ path: route.path ?? void 0,
9
+ component: route._component || ''
10
+ };
11
+ if (route.path?.includes(':')) {
12
+ const params = route.path.match(/:[^\/]+/g)?.map((param)=>param.slice(1)) || [];
13
+ inspectRoute.params = params;
14
+ }
15
+ if (route.data) inspectRoute.data = route.data;
16
+ if (route.clientData) inspectRoute.clientData = route.clientData;
17
+ if (route.error) inspectRoute.error = route.error;
18
+ if (route.loading) inspectRoute.loading = route.loading;
19
+ if (route.config) inspectRoute.config = 'string' == typeof route.config ? route.config : String(route.config);
20
+ if ('children' in route && route.children && route.children.length > 0) inspectRoute.children = route.children.filter((child)=>{
21
+ const hasComponent = Boolean(child._component);
22
+ const hasChildren = 'children' in child && child.children && child.children.length > 0;
23
+ const hasPath = void 0 !== child.path;
24
+ return hasComponent || hasChildren || hasPath;
25
+ }).map((child)=>convertRouteToInspectFormat(child));
26
+ return inspectRoute;
27
+ }
28
+ async function generateInspectReportForEntry(entrypoint, appContext, config, api) {
29
+ const { entryName } = entrypoint;
30
+ console.log(`🔍 Analyzing routes for entry "${entryName}"...`);
31
+ const routes = await generateRoutesForEntry(entrypoint, appContext);
32
+ if (0 === routes.length) {
33
+ console.log(`⚠️ No routes found for entry "${entryName}"`);
34
+ return {
35
+ entryName,
36
+ routes: []
37
+ };
38
+ }
39
+ const hooks = api.getHooks();
40
+ const clonedRoutes = cloneDeep(routes);
41
+ const { routes: finalRoutes } = await hooks.modifyFileSystemRoutes.call({
42
+ entrypoint,
43
+ routes: clonedRoutes
44
+ });
45
+ const inspectRoutes = finalRoutes.filter((route)=>{
46
+ const hasComponent = Boolean(route._component);
47
+ const hasChildren = 'children' in route && route.children && route.children.length > 0;
48
+ const hasPath = void 0 !== route.path;
49
+ return hasComponent || hasChildren || hasPath;
50
+ }).map((route)=>convertRouteToInspectFormat(route));
51
+ console.log(`✅ Found ${inspectRoutes.length} routes for entry "${entryName}"`);
52
+ return {
53
+ entryName,
54
+ routes: inspectRoutes
55
+ };
56
+ }
57
+ async function generateRoutesInspectReport(api) {
58
+ try {
59
+ console.log('🚀 Start generating route inspection report...\n');
60
+ const appContext = api.getAppContext();
61
+ const config = api.getNormalizedConfig();
62
+ const { entrypoints, distDirectory } = appContext;
63
+ const modifiedEntrypoints = modifyEntrypoints(entrypoints);
64
+ const routesEntrypoints = modifiedEntrypoints.filter((entrypoint)=>entrypoint.isAutoMount);
65
+ if (0 === routesEntrypoints.length) return void console.log('⚠️ No entrypoints with routes (file-system or config-based) were found');
66
+ console.log(`📁 Found ${routesEntrypoints.length} entrypoints with routes`);
67
+ const reports = [];
68
+ for (const entrypoint of routesEntrypoints)if (entrypoint.nestedRoutesEntry) {
69
+ const report = await generateInspectReportForEntry(entrypoint, appContext, config, api);
70
+ reports.push(report);
71
+ }
72
+ let finalReport;
73
+ if (1 === reports.length) finalReport = {
74
+ routes: reports[0].routes
75
+ };
76
+ else {
77
+ finalReport = {};
78
+ for (const report of reports)finalReport[report.entryName] = {
79
+ routes: report.routes
80
+ };
81
+ }
82
+ await fs.ensureDir(distDirectory);
83
+ const reportPath = path.join(distDirectory, 'routes-inspect.json');
84
+ await fs.writeJSON(reportPath, finalReport, {
85
+ spaces: 2
86
+ });
87
+ console.log(`\n✨ Route inspection report has been generated: ${reportPath}`);
88
+ const totalRoutes = reports.reduce((sum, report)=>sum + report.routes.length, 0);
89
+ console.log(`📊 Found a total of ${totalRoutes} routes across ${reports.length} entrypoints`);
90
+ } catch (error) {
91
+ console.error('❌ Failed to generate route inspection report:', error);
92
+ process.exit(1);
93
+ }
94
+ }
95
+ export { generateRoutesInspectReport };
@@ -0,0 +1,9 @@
1
+ const reservedWords = 'break case class catch const continue debugger default delete do else export extends finally for function if import in instanceof let new return super switch this throw try typeof var void while with yield enum await implements package protected static interface private public';
2
+ const builtins = 'arguments Infinity NaN undefined null true false eval uneval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Symbol Error EvalError InternalError RangeError ReferenceError SyntaxError TypeError URIError Number Math Date String RegExp Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array Map Set WeakMap WeakSet SIMD ArrayBuffer DataView JSON Promise Generator GeneratorFunction Reflect Proxy Intl';
3
+ const forbidList = new Set(`${reservedWords} ${builtins}`.split(' '));
4
+ function makeLegalIdentifier(str) {
5
+ const identifier = str.replace(/-(\w)/g, (_, letter)=>letter.toUpperCase()).replace(/[^$_a-zA-Z0-9]/g, '_');
6
+ if (/\d/.test(identifier[0]) || forbidList.has(identifier)) return `_${identifier}`;
7
+ return identifier || '_';
8
+ }
9
+ export { makeLegalIdentifier };
@@ -0,0 +1,193 @@
1
+ import { extname as external_path_extname, join, relative, sep } from "path";
2
+ import { JS_EXTENSIONS, fs, normalizeToPosixPath } from "@modern-js/utils";
3
+ import { NESTED_ROUTE } from "../constants";
4
+ import { getPathWithoutExt, hasAction, replaceWithAlias } from "./utils";
5
+ const conventionNames = Object.values(NESTED_ROUTE);
6
+ const replaceDynamicPath = (routePath)=>routePath.replace(/\[(.*?)\]/g, ':$1');
7
+ const getRouteId = (componentPath, routesDir, entryName, isMainEntry)=>{
8
+ const relativePath = normalizeToPosixPath(relative(routesDir, componentPath));
9
+ const pathWithoutExt = getPathWithoutExt(relativePath);
10
+ let id = "";
11
+ id = isMainEntry ? pathWithoutExt : `${entryName}_${pathWithoutExt}`;
12
+ return id.replace(/\[(.*?)\]/g, '($1)');
13
+ };
14
+ const createIndexRoute = (routeInfo, rootDir, filename, entryName, isMainEntry)=>createRoute({
15
+ ...routeInfo,
16
+ index: true,
17
+ children: void 0,
18
+ routeType: 'page'
19
+ }, rootDir, filename, entryName, isMainEntry);
20
+ const createRoute = (routeInfo, rootDir, filename, entryName, isMainEntry)=>{
21
+ const id = getRouteId(filename, rootDir, entryName, isMainEntry);
22
+ const hasChildren = routeInfo.children && routeInfo.children.length > 0;
23
+ return {
24
+ ...routeInfo,
25
+ id,
26
+ type: 'nested',
27
+ routeType: hasChildren ? 'layout' : 'page',
28
+ origin: 'file-system',
29
+ component: routeInfo._component ? filename : void 0
30
+ };
31
+ };
32
+ const optimizeRoute = (routeTree)=>{
33
+ if (!routeTree.children || 0 === routeTree.children.length) return [
34
+ routeTree
35
+ ];
36
+ const { children } = routeTree;
37
+ if (routeTree._component || routeTree.error || routeTree.loading || routeTree.config || routeTree.clientData) {
38
+ const optimizedChildren = routeTree.children.flatMap(optimizeRoute);
39
+ return [
40
+ {
41
+ ...routeTree,
42
+ children: optimizedChildren
43
+ }
44
+ ];
45
+ }
46
+ {
47
+ const newRoutes = children.map((child)=>{
48
+ const routePath = routeTree.path ? `${routeTree.path}${child.path ? `/${child.path}` : ''}` : child.path || '';
49
+ const newRoute = {
50
+ ...child,
51
+ path: routePath.replace(/\/\//g, '/'),
52
+ component: child.component || void 0,
53
+ origin: 'file-system'
54
+ };
55
+ if (routePath.length > 0) delete newRoute.index;
56
+ else delete newRoute.path;
57
+ return newRoute;
58
+ });
59
+ return Array.from(new Set(newRoutes)).flatMap(optimizeRoute);
60
+ }
61
+ };
62
+ const walk = async (options)=>{
63
+ const { dirname, rootDir, alias, entryName, isMainEntry } = options;
64
+ if (!await fs.pathExists(dirname)) return null;
65
+ const isDirectory = (await fs.stat(dirname)).isDirectory();
66
+ if (!isDirectory) return null;
67
+ const relativeDir = relative(rootDir, dirname);
68
+ const pathSegments = relativeDir.split(sep);
69
+ const lastSegment = pathSegments[pathSegments.length - 1];
70
+ const isRoot = '' === lastSegment;
71
+ const isPathlessLayout = lastSegment.startsWith('__');
72
+ const isWithoutLayoutPath = lastSegment.includes('.');
73
+ let routePath = isRoot || isPathlessLayout ? '/' : `${lastSegment}`;
74
+ if (isWithoutLayoutPath) routePath = lastSegment.split('.').join('/');
75
+ routePath = replaceDynamicPath(routePath);
76
+ const route = {
77
+ path: routePath?.replace(/\$$/, '?'),
78
+ children: [],
79
+ isRoot,
80
+ origin: 'file-system'
81
+ };
82
+ let pageLoaderFile = '';
83
+ let pageRoute = null;
84
+ let pageConfigFile = '';
85
+ let pageClientData = '';
86
+ let pageData = '';
87
+ let pageAction = '';
88
+ let splatLoaderFile = '';
89
+ let splatRoute = null;
90
+ let splatConfigFile = '';
91
+ let splatClientData = '';
92
+ let splatData = '';
93
+ let splatAction = '';
94
+ const items = await fs.readdir(dirname);
95
+ for (const item of items){
96
+ const itemPath = join(dirname, item);
97
+ const itemPathWithAlias = alias ? getPathWithoutExt(replaceWithAlias(alias.basename, itemPath, alias.name)) : getPathWithoutExt(itemPath);
98
+ const extname = external_path_extname(item);
99
+ const itemWithoutExt = item.slice(0, -extname.length);
100
+ const isDirectory = (await fs.stat(itemPath)).isDirectory();
101
+ if (isDirectory) {
102
+ const childRoute = await walk({
103
+ dirname: itemPath,
104
+ rootDir,
105
+ alias,
106
+ entryName,
107
+ isMainEntry
108
+ });
109
+ if (childRoute && !Array.isArray(childRoute)) route.children?.push(childRoute);
110
+ }
111
+ if (!extname || JS_EXTENSIONS.includes(extname) && conventionNames.includes(itemWithoutExt)) {
112
+ if (itemWithoutExt === NESTED_ROUTE.LAYOUT_LOADER_FILE) {
113
+ if (!route.loader) route.loader = itemPathWithAlias;
114
+ }
115
+ if (itemWithoutExt === NESTED_ROUTE.LAYOUT_CLIENT_LOADER) route.clientData = itemPathWithAlias;
116
+ if (itemWithoutExt === NESTED_ROUTE.LAYOUT_DATA_FILE) {
117
+ route.data = itemPathWithAlias;
118
+ if (await hasAction(itemPath)) route.action = itemPathWithAlias;
119
+ }
120
+ if (itemWithoutExt === NESTED_ROUTE.LAYOUT_CONFIG_FILE) {
121
+ if (!route.config) route.config = itemPathWithAlias;
122
+ }
123
+ if (itemWithoutExt === NESTED_ROUTE.LAYOUT_FILE) route._component = itemPathWithAlias;
124
+ if (itemWithoutExt === NESTED_ROUTE.PAGE_LOADER_FILE) pageLoaderFile = itemPathWithAlias;
125
+ if (itemWithoutExt === NESTED_ROUTE.PAGE_CLIENT_LOADER) pageClientData = itemPathWithAlias;
126
+ if (itemWithoutExt === NESTED_ROUTE.PAGE_DATA_FILE) {
127
+ pageData = itemPathWithAlias;
128
+ if (await hasAction(itemPath)) pageAction = itemPathWithAlias;
129
+ }
130
+ if (itemWithoutExt === NESTED_ROUTE.PAGE_CONFIG_FILE) pageConfigFile = itemPathWithAlias;
131
+ if (itemWithoutExt === NESTED_ROUTE.PAGE_FILE) {
132
+ pageRoute = createIndexRoute({
133
+ _component: itemPathWithAlias
134
+ }, rootDir, itemPath, entryName, isMainEntry);
135
+ if (pageLoaderFile) pageRoute.loader = pageLoaderFile;
136
+ if (pageConfigFile) pageRoute.config = pageConfigFile;
137
+ if (pageData) pageRoute.data = pageData;
138
+ if (pageClientData) pageRoute.clientData = pageClientData;
139
+ if (pageAction) pageRoute.action = pageAction;
140
+ route.children?.unshift(pageRoute);
141
+ }
142
+ if (itemWithoutExt === NESTED_ROUTE.SPLATE_LOADER_FILE) splatLoaderFile = itemPathWithAlias;
143
+ if (itemWithoutExt === NESTED_ROUTE.SPLATE_CLIENT_DATA) splatClientData = itemPathWithAlias;
144
+ if (itemWithoutExt === NESTED_ROUTE.SPLATE_CONFIG_FILE) {
145
+ if (!route.config) splatConfigFile = alias ? replaceWithAlias(alias.basename, itemPath, alias.name) : getPathWithoutExt(itemPath);
146
+ }
147
+ if (itemWithoutExt === NESTED_ROUTE.SPLATE_DATA_FILE) {
148
+ splatData = itemPathWithAlias;
149
+ if (await hasAction(itemPath)) splatAction = itemPathWithAlias;
150
+ }
151
+ if (itemWithoutExt === NESTED_ROUTE.SPLATE_FILE) {
152
+ splatRoute = createRoute({
153
+ _component: itemPathWithAlias,
154
+ path: '*',
155
+ origin: 'file-system'
156
+ }, rootDir, itemPath, entryName, isMainEntry);
157
+ if (splatLoaderFile) splatRoute.loader = splatLoaderFile;
158
+ if (splatClientData) splatRoute.clientData = splatClientData;
159
+ if (splatData) splatRoute.data = splatData;
160
+ if (splatConfigFile) splatRoute.config = splatConfigFile;
161
+ if (splatAction) splatRoute.action = splatAction;
162
+ route.children?.push(splatRoute);
163
+ }
164
+ if (itemWithoutExt === NESTED_ROUTE.LOADING_FILE) route.loading = itemPathWithAlias;
165
+ if (itemWithoutExt === NESTED_ROUTE.ERROR_FILE) route.error = itemPathWithAlias;
166
+ }
167
+ }
168
+ let finalRoute = createRoute({
169
+ ...route,
170
+ origin: 'file-system'
171
+ }, rootDir, join(dirname, `${NESTED_ROUTE.LAYOUT_FILE}.ts`), entryName, isMainEntry);
172
+ if (isPathlessLayout) delete finalRoute.path;
173
+ const childRoutes = finalRoute.children = finalRoute.children?.filter((childRoute)=>childRoute);
174
+ if (childRoutes && 0 === childRoutes.length && !finalRoute.index && !finalRoute._component) return null;
175
+ if (childRoutes && 1 === childRoutes.length && !finalRoute._component) {
176
+ const childRoute = childRoutes[0];
177
+ if ('*' === childRoute.path) {
178
+ const path = `${finalRoute.path || ''}/${childRoute.path || ''}`;
179
+ finalRoute = {
180
+ ...childRoute,
181
+ path,
182
+ component: childRoute.component || void 0
183
+ };
184
+ }
185
+ }
186
+ if (isRoot && !finalRoute._component) throw new Error('The root layout component is required, make sure the routes/layout.tsx file exists.');
187
+ if (isRoot) {
188
+ const optimizedRoutes = optimizeRoute(finalRoute);
189
+ return optimizedRoutes;
190
+ }
191
+ return finalRoute;
192
+ };
193
+ export { getRouteId, optimizeRoute, walk };
@@ -0,0 +1,365 @@
1
+ import path from "path";
2
+ import { findExists, formatImportPath, fs, getEntryOptions, isSSGEntry, slash } from "@modern-js/utils";
3
+ import { ROUTE_MODULES } from "@modern-js/utils/universal/constants";
4
+ import { APP_INIT_EXPORTED, TEMP_LOADERS_DIR } from "../constants";
5
+ import { getPathWithoutExt, getServerLoadersFile, parseModule, replaceWithAlias } from "./utils";
6
+ const routesForServer = ({ routesForServerLoaderMatches })=>{
7
+ const loaders = [];
8
+ const actions = [];
9
+ const loadersMap = {};
10
+ const traverseRouteTree = (route)=>{
11
+ let children;
12
+ if ('children' in route && route.children) children = route?.children?.map(traverseRouteTree);
13
+ let loader;
14
+ let action;
15
+ if ('nested' === route.type) {
16
+ if (route.loader || route.data) {
17
+ loaders.push(route.loader);
18
+ const loaderId = loaders.length - 1;
19
+ loader = `loader_${loaderId}`;
20
+ const inline = Boolean(route.data);
21
+ loadersMap[loader] = {
22
+ loaderId,
23
+ routeId: route.id,
24
+ filePath: route.data || route.loader,
25
+ clientData: Boolean(route.clientData),
26
+ route,
27
+ inline
28
+ };
29
+ if (route.action) {
30
+ actions.push(route.action);
31
+ action = `action_${loaders.length - 1}`;
32
+ }
33
+ }
34
+ }
35
+ const finalRoute = {
36
+ ...route,
37
+ loader,
38
+ action,
39
+ children
40
+ };
41
+ return finalRoute;
42
+ };
43
+ let routesCode = `
44
+ export const routes = [
45
+ `;
46
+ for(let i = 0; i < routesForServerLoaderMatches.length; i++){
47
+ const route = routesForServerLoaderMatches[i];
48
+ if ('type' in route) {
49
+ const keywords = [
50
+ 'loader',
51
+ 'action'
52
+ ];
53
+ const regs = keywords.map(createMatchReg);
54
+ const newRoute = traverseRouteTree(route);
55
+ const routeStr = JSON.stringify(newRoute, null, 2);
56
+ routesCode += regs.reduce((acc, reg)=>acc.replace(reg, '$1$2'), routeStr).replace(/\\"/g, '"');
57
+ } else routesCode += `${JSON.stringify(route, null, 2)}`;
58
+ if (i < routesForServerLoaderMatches.length - 1) routesCode += ',';
59
+ }
60
+ routesCode += `\n];`;
61
+ let importLoadersCode = '';
62
+ for (const [key, loaderInfo] of Object.entries(loadersMap))if (loaderInfo.inline) {
63
+ const { route } = loaderInfo;
64
+ if (route.action) importLoadersCode += `import { loader as ${key}, action as action_${loaderInfo.loaderId} } from "${slash(loaderInfo.filePath)}";\n`;
65
+ else importLoadersCode += `import { loader as ${key} } from "${slash(loaderInfo.filePath)}";\n`;
66
+ } else importLoadersCode += `import ${key} from "${slash(loaderInfo.filePath)}";\n`;
67
+ return `
68
+ ${importLoadersCode}
69
+ ${routesCode}
70
+ `;
71
+ };
72
+ const createMatchReg = (keyword)=>new RegExp(`("${keyword}":\\s)"([^\n]+)"`, 'g');
73
+ const fileSystemRoutes = async ({ metaName, routes, ssrMode, nestedRoutesEntry, entryName, internalDirectory, splitRouteChunks = true, isRscClient = false })=>{
74
+ const components = [];
75
+ const loadings = [];
76
+ const errors = [];
77
+ const loaders = [];
78
+ const loadersMap = {};
79
+ const configs = [];
80
+ const configsMap = {};
81
+ const loadersMapFile = path.join(internalDirectory, entryName, TEMP_LOADERS_DIR, 'map.json');
82
+ const importLazyCode = `
83
+ import { lazy } from "react";
84
+ import loadable, { lazy as loadableLazy } from "@${metaName}/runtime/loadable"
85
+ `;
86
+ let rootLayoutCode = "";
87
+ const getDataLoaderPath = ({ loaderId, clientData, action, inline, routeId, inValidSSRRoute })=>{
88
+ if (!ssrMode) return '';
89
+ const clientDataStr = clientData ? `&clientData=${clientData}` : '';
90
+ const retain = inValidSSRRoute ?? false;
91
+ if (nestedRoutesEntry) return `?loaderId=${loaderId}${clientDataStr}&action=${action ? slash(action) : action}&inline=${inline}&routeId=${routeId}&retain=${retain}`;
92
+ return '';
93
+ };
94
+ const createLazyImport = ({ componentPath, routeId, webpackChunkName, eager })=>{
95
+ const importOptions = webpackChunkName ? `/* webpackChunkName: "${routeId}" */ ` : eager ? '/* webpackMode: "eager" */ ' : '';
96
+ return `() => import(${importOptions}'${componentPath}').then(routeModule => handleRouteModule(routeModule, "${routeId}")).catch(handleRouteModuleError)`;
97
+ };
98
+ const traverseRouteTree = (route, isRscClient)=>{
99
+ let children;
100
+ if ('children' in route && route.children) children = route?.children?.map((child)=>traverseRouteTree(child, isRscClient));
101
+ let loading;
102
+ let error;
103
+ let loader;
104
+ let action;
105
+ let config;
106
+ let component = '';
107
+ let lazyImport = null;
108
+ if ('nested' === route.type) {
109
+ if (route.loading) {
110
+ loadings.push(route.loading);
111
+ loading = `loading_${loadings.length - 1}`;
112
+ }
113
+ if (route.error) {
114
+ errors.push(route.error);
115
+ error = `error_${errors.length - 1}`;
116
+ }
117
+ if (route.loader || route.data) {
118
+ loaders.push(route.loader);
119
+ const loaderId = loaders.length - 1;
120
+ loader = `loader_${loaderId}`;
121
+ const inline = Boolean(route.data);
122
+ loadersMap[loader] = {
123
+ loaderId,
124
+ routeId: route.id,
125
+ inValidSSRRoute: route.inValidSSRRoute,
126
+ filePath: route.data || route.loader,
127
+ clientData: Boolean(route.clientData),
128
+ route,
129
+ inline
130
+ };
131
+ loader = `loader_${loaderId}`;
132
+ if (route.action) action = `action_${loaderId}`;
133
+ }
134
+ if ('string' == typeof route.config) {
135
+ configs.push(route.config);
136
+ const configId = configs.length - 1;
137
+ config = `config_${configId}`;
138
+ configsMap[config] = route.config;
139
+ }
140
+ if (route._component) if (route.isRoot) {
141
+ lazyImport = createLazyImport({
142
+ componentPath: route._component,
143
+ routeId: route.id
144
+ });
145
+ rootLayoutCode = `import RootLayout from '${route._component}'`;
146
+ component = 'RootLayout';
147
+ } else if (splitRouteChunks) {
148
+ lazyImport = createLazyImport({
149
+ componentPath: route._component,
150
+ routeId: route.id,
151
+ webpackChunkName: true
152
+ });
153
+ component = 'string' === ssrMode ? `loadable(${lazyImport})` : `lazy(${lazyImport})`;
154
+ } else if ('string' === ssrMode) {
155
+ components.push(route._component);
156
+ component = `component_${components.length - 1}`;
157
+ } else {
158
+ lazyImport = createLazyImport({
159
+ componentPath: route._component,
160
+ routeId: route.id,
161
+ eager: true
162
+ });
163
+ component = `lazy(${lazyImport})`;
164
+ }
165
+ } else if (route._component) if (splitRouteChunks) {
166
+ lazyImport = `() => import('${route._component}')`;
167
+ component = `loadable(${lazyImport})`;
168
+ } else {
169
+ components.push(route._component);
170
+ component = `component_${components.length - 1}`;
171
+ }
172
+ const finalRoute = {
173
+ ...route,
174
+ loading,
175
+ loader,
176
+ action,
177
+ config,
178
+ error,
179
+ children
180
+ };
181
+ if (!isRscClient) finalRoute.lazyImport = lazyImport;
182
+ if (route._component && !isRscClient) finalRoute.component = component;
183
+ if ('nested' === route.type && route._component && (route.loader || route.data)) finalRoute.shouldRevalidate = `createShouldRevalidate("${route.id}")`;
184
+ return finalRoute;
185
+ };
186
+ let routeComponentsCode = `
187
+ export const routes = [
188
+ `;
189
+ for (const route of routes)if ('type' in route) {
190
+ const newRoute = traverseRouteTree(route, isRscClient);
191
+ const routeStr = JSON.stringify(newRoute, null, 2);
192
+ const keywords = [
193
+ 'component',
194
+ 'lazyImport',
195
+ 'shouldRevalidate',
196
+ 'loader',
197
+ 'action',
198
+ 'loading',
199
+ 'error',
200
+ 'config'
201
+ ];
202
+ const regs = keywords.map(createMatchReg);
203
+ const newRouteStr = regs.reduce((acc, reg)=>acc.replace(reg, '$1$2'), routeStr).replace(/"(RootLayout)"/g, '$1').replace(/\\"/g, '"');
204
+ routeComponentsCode += `${newRouteStr},`;
205
+ } else {
206
+ const component = `loadable(() => import('${route._component}'))`;
207
+ const finalRoute = {
208
+ ...route,
209
+ component
210
+ };
211
+ const keywords = [
212
+ 'component',
213
+ 'lazyImport'
214
+ ];
215
+ const routeStr = JSON.stringify(finalRoute, null, 2);
216
+ const regs = keywords.map(createMatchReg);
217
+ const newRouteStr = regs.reduce((acc, reg)=>acc.replace(reg, '$1$2'), routeStr).replace(/\\"/g, '"');
218
+ routeComponentsCode += `${newRouteStr},`;
219
+ }
220
+ routeComponentsCode += `\n];`;
221
+ const importLoadingCode = loadings.map((loading, index)=>`import loading_${index} from '${loading}';\n`).join('');
222
+ const importComponentsCode = components.map((component, index)=>`import component_${index} from '${component}';\n`).join('');
223
+ const importErrorComponentsCode = errors.map((error, index)=>`import error_${index} from '${error}';\n`).join('');
224
+ let importLoadersCode = '';
225
+ for (const [key, loaderInfo] of Object.entries(loadersMap))if (loaderInfo.inline) {
226
+ const { route } = loaderInfo;
227
+ if (route.action) importLoadersCode += `import { loader as ${key}, action as action_${loaderInfo.loaderId} } from "${slash(loaderInfo.filePath)}${getDataLoaderPath({
228
+ loaderId: key,
229
+ clientData: loaderInfo.clientData,
230
+ action: route.action,
231
+ inline: loaderInfo.inline,
232
+ routeId: loaderInfo.routeId,
233
+ inValidSSRRoute: loaderInfo.inValidSSRRoute
234
+ })}";\n`;
235
+ else importLoadersCode += `import { loader as ${key} } from "${slash(loaderInfo.filePath)}${getDataLoaderPath({
236
+ loaderId: key,
237
+ clientData: loaderInfo.clientData,
238
+ action: false,
239
+ inline: loaderInfo.inline,
240
+ routeId: route.id,
241
+ inValidSSRRoute: loaderInfo.inValidSSRRoute
242
+ })}";\n`;
243
+ } else importLoadersCode += `import ${key} from "${slash(loaderInfo.filePath)}${getDataLoaderPath({
244
+ loaderId: key,
245
+ clientData: loaderInfo.clientData,
246
+ action: false,
247
+ inline: loaderInfo.inline,
248
+ routeId: loaderInfo.routeId,
249
+ inValidSSRRoute: loaderInfo.inValidSSRRoute
250
+ })}";\n`;
251
+ let importConfigsCode = '';
252
+ for (const [key, configPath] of Object.entries(configsMap))importConfigsCode += `import * as ${key} from "${slash(configPath)}";\n`;
253
+ await fs.ensureFile(loadersMapFile);
254
+ await fs.writeJSON(loadersMapFile, loadersMap);
255
+ const importRuntimeRouterCode = `
256
+ import { createShouldRevalidate, handleRouteModule, handleRouteModuleError} from '@${metaName}/runtime/routerHelper';
257
+ `;
258
+ const routeModulesCode = `
259
+ if(typeof document !== 'undefined'){
260
+ window.${ROUTE_MODULES} = {}
261
+ }
262
+ `;
263
+ return `
264
+ ${importLazyCode}
265
+ ${!isRscClient ? importComponentsCode : ''}
266
+ ${importRuntimeRouterCode}
267
+ ${!isRscClient ? rootLayoutCode : ''}
268
+ ${importLoadingCode}
269
+ ${importErrorComponentsCode}
270
+ ${importLoadersCode}
271
+ ${importConfigsCode}
272
+ ${routeModulesCode}
273
+ ${routeComponentsCode}
274
+ `;
275
+ };
276
+ function ssrLoaderCombinedModule(entrypoints, entrypoint, config, appContext) {
277
+ const { entryName, isMainEntry } = entrypoint;
278
+ const { packageName, internalDirectory } = appContext;
279
+ const ssr = getEntryOptions(entryName, isMainEntry, config.server.ssr, config.server.ssrByEntries, packageName);
280
+ const ssg = isSSGEntry(config, entryName, entrypoints);
281
+ if (entrypoint.nestedRoutesEntry && (ssr || ssg)) {
282
+ const serverLoaderRuntime = require.resolve('@modern-js/plugin-data-loader/runtime');
283
+ const serverLoadersFile = getServerLoadersFile(internalDirectory, entryName);
284
+ const combinedModule = `export * from "${slash(serverLoaderRuntime)}"; export * from "${slash(serverLoadersFile)}"`;
285
+ if (!config.source.enableAsyncEntry) return combinedModule;
286
+ return `
287
+ async function loadModules() {
288
+ const [moduleA, moduleB] = await Promise.all([
289
+ import("${slash(serverLoaderRuntime)}"),
290
+ import("${slash(serverLoadersFile)}")
291
+ ]);
292
+
293
+ return {
294
+ ...moduleA,
295
+ ...moduleB
296
+ };
297
+ }
298
+
299
+ export { loadModules };
300
+ `;
301
+ }
302
+ return null;
303
+ }
304
+ const runtimeGlobalContext = async ({ entryName, metaName, srcDirectory, nestedRoutesEntry, internalSrcAlias, globalApp, rscType = false, basename })=>{
305
+ const imports = [
306
+ `import { setGlobalContext } from '@${metaName}/runtime/context';`
307
+ ];
308
+ if (nestedRoutesEntry) {
309
+ const rootLayoutPath = path.join(nestedRoutesEntry, 'layout');
310
+ const rootLayoutFile = findExists([
311
+ '.js',
312
+ '.ts',
313
+ '.jsx',
314
+ '.tsx'
315
+ ].map((ext)=>`${rootLayoutPath}${ext}`));
316
+ if (rootLayoutFile) {
317
+ const rootLayoutBuffer = await fs.readFile(rootLayoutFile);
318
+ const rootLayout = rootLayoutBuffer.toString();
319
+ const [, moduleExports] = await parseModule({
320
+ source: rootLayout.toString(),
321
+ filename: rootLayoutFile
322
+ });
323
+ const hasAppInit = moduleExports.some((e)=>e.n === APP_INIT_EXPORTED);
324
+ const layoutPath = formatImportPath(getPathWithoutExt(replaceWithAlias(srcDirectory, rootLayoutFile, internalSrcAlias)));
325
+ if (hasAppInit) imports.push(`import { init as appInit } from '${layoutPath}';`);
326
+ else imports.push("let appInit;");
327
+ } else imports.push("let appInit;");
328
+ } else imports.push("let appInit;");
329
+ if (globalApp) imports.push(`import layoutApp from '${formatImportPath(globalApp.replace(srcDirectory, internalSrcAlias))}';`);
330
+ else imports.push("let layoutApp;");
331
+ const isClient = 'client' === rscType;
332
+ const enableRsc = Boolean(rscType);
333
+ if (isClient) return `${imports.join('\n')}
334
+
335
+ import { routes } from './routes';
336
+
337
+ const entryName = '${entryName}';
338
+ const basename = '${basename || '/'}';
339
+ setGlobalContext({
340
+ entryName,
341
+ layoutApp,
342
+ routes,
343
+ appInit,
344
+ basename,
345
+ isRscClient: true,
346
+ enableRsc: true,
347
+ });
348
+ `;
349
+ return `${imports.join('\n')}
350
+
351
+ import { routes } from './routes';
352
+
353
+ const entryName = '${entryName}';
354
+ const basename = '${basename || '/'}';
355
+ setGlobalContext({
356
+ entryName,
357
+ layoutApp,
358
+ routes,
359
+ appInit,
360
+ basename,
361
+ enableRsc: ${enableRsc},
362
+ });
363
+ `;
364
+ };
365
+ export { fileSystemRoutes, routesForServer, runtimeGlobalContext, ssrLoaderCombinedModule };