@modern-js/runtime 2.69.5 → 3.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (679) 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 +103 -98
  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 +179 -205
  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 +93 -57
  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 +71 -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 +138 -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/rsc/server.mjs +33 -0
  228. package/dist/esm-node/cli/alias.mjs +24 -0
  229. package/dist/esm-node/cli/code.mjs +119 -0
  230. package/dist/esm-node/cli/constants.mjs +10 -0
  231. package/dist/esm-node/cli/entry.mjs +6 -0
  232. package/dist/esm-node/cli/index.mjs +89 -0
  233. package/dist/esm-node/cli/ssr/index.mjs +125 -0
  234. package/dist/esm-node/cli/ssr/loadable-bundler-plugin.mjs +75 -0
  235. package/dist/esm-node/cli/ssr/mode.mjs +14 -0
  236. package/dist/esm-node/cli/template.mjs +168 -0
  237. package/dist/esm-node/cli/{template.server.js → template.server.mjs} +20 -24
  238. package/dist/esm-node/common.mjs +4 -0
  239. package/dist/esm-node/core/browser/hydrate.mjs +53 -0
  240. package/dist/esm-node/core/browser/index.mjs +96 -0
  241. package/dist/esm-node/core/browser/withCallback.mjs +13 -0
  242. package/dist/esm-node/core/compat/hooks.mjs +35 -0
  243. package/dist/esm-node/core/compat/index.mjs +12 -0
  244. package/dist/esm-node/core/compat/requestContext.mjs +21 -0
  245. package/dist/esm-node/core/config.mjs +2 -0
  246. package/dist/esm-node/core/constants.mjs +8 -0
  247. package/dist/esm-node/core/context/index.mjs +45 -0
  248. package/dist/esm-node/core/context/monitors/default.mjs +10 -0
  249. package/dist/esm-node/core/context/monitors/index.mjs +3 -0
  250. package/dist/esm-node/core/context/monitors/index.server.mjs +7 -0
  251. package/dist/esm-node/core/context/request/index.mjs +2 -0
  252. package/dist/esm-node/core/context/request/index.server.mjs +6 -0
  253. package/dist/esm-node/core/context/response/index.mjs +7 -0
  254. package/dist/esm-node/core/context/response/index.server.mjs +28 -0
  255. package/dist/esm-node/core/context/runtime.mjs +15 -0
  256. package/dist/esm-node/core/context/serverPayload/index.mjs +3 -0
  257. package/dist/esm-node/core/context/serverPayload/index.server.mjs +10 -0
  258. package/dist/esm-node/core/index.mjs +3 -0
  259. package/dist/esm-node/core/plugin/index.mjs +25 -0
  260. package/dist/esm-node/core/react/index.mjs +16 -0
  261. package/dist/esm-node/core/react/wrapper.mjs +20 -0
  262. package/dist/esm-node/core/server/constants.mjs +5 -0
  263. package/dist/esm-node/core/server/helmet.mjs +38 -0
  264. package/dist/esm-node/core/server/index.mjs +7 -0
  265. package/dist/esm-node/core/server/react/index.mjs +3 -0
  266. package/dist/esm-node/core/server/react/no-ssr-cache/index.mjs +9 -0
  267. package/dist/esm-node/core/server/react/nossr/index.mjs +10 -0
  268. package/dist/esm-node/core/server/requestHandler.mjs +161 -0
  269. package/dist/esm-node/core/server/server.mjs +4 -0
  270. package/dist/esm-node/core/server/shared.mjs +4 -0
  271. package/dist/esm-node/core/server/stream/afterTemplate.mjs +66 -0
  272. package/dist/esm-node/core/server/stream/beforeTemplate.mjs +63 -0
  273. package/dist/esm-node/core/server/stream/createReadableStream.mjs +128 -0
  274. package/dist/esm-node/core/server/stream/createReadableStream.worker.mjs +109 -0
  275. package/dist/esm-node/core/server/stream/deferredScript.mjs +62 -0
  276. package/dist/esm-node/core/server/stream/index.mjs +4 -0
  277. package/dist/esm-node/core/server/stream/shared.mjs +71 -0
  278. package/dist/esm-node/core/server/stream/template.mjs +13 -0
  279. package/dist/esm-node/core/server/string/index.mjs +101 -0
  280. package/dist/esm-node/core/server/string/loadable.mjs +112 -0
  281. package/dist/esm-node/core/server/string/ssrData.mjs +104 -0
  282. package/dist/esm-node/core/server/tracer.mjs +15 -0
  283. package/dist/esm-node/core/server/utils.mjs +39 -0
  284. package/dist/esm-node/document/Body.mjs +20 -0
  285. package/dist/esm-node/document/Comment.mjs +15 -0
  286. package/dist/esm-node/document/DocumentContext.mjs +7 -0
  287. package/dist/esm-node/document/DocumentStructureContext.mjs +10 -0
  288. package/dist/esm-node/document/Head.mjs +29 -0
  289. package/dist/esm-node/document/Html.mjs +74 -0
  290. package/dist/esm-node/document/Links.mjs +9 -0
  291. package/dist/esm-node/document/Root.mjs +29 -0
  292. package/dist/esm-node/document/Script.mjs +21 -0
  293. package/dist/esm-node/document/Scripts.mjs +9 -0
  294. package/dist/esm-node/document/Style.mjs +16 -0
  295. package/dist/esm-node/document/Title.mjs +8 -0
  296. package/dist/esm-node/document/cli/index.mjs +323 -0
  297. package/dist/esm-node/document/constants.mjs +34 -0
  298. package/dist/esm-node/document/index.mjs +12 -0
  299. package/dist/esm-node/exports/config-routes.mjs +4 -0
  300. package/dist/esm-node/exports/head.mjs +4 -0
  301. package/dist/esm-node/exports/loadable.mjs +4 -0
  302. package/dist/esm-node/index.mjs +6 -0
  303. package/dist/esm-node/internal.mjs +2 -0
  304. package/dist/esm-node/react-server.mjs +4 -0
  305. package/dist/esm-node/router/cli/code/getClientRoutes/getRoutes.mjs +115 -0
  306. package/dist/esm-node/router/cli/code/getClientRoutes/index.mjs +2 -0
  307. package/dist/esm-node/router/cli/code/getClientRoutes/utils.mjs +12 -0
  308. package/dist/esm-node/router/cli/code/index.mjs +132 -0
  309. package/dist/esm-node/router/cli/code/inspect.mjs +95 -0
  310. package/dist/esm-node/router/cli/code/{makeLegalIdentifier.js → makeLegalIdentifier.mjs} +7 -11
  311. package/dist/esm-node/router/cli/code/nestedRoutes.mjs +193 -0
  312. package/dist/esm-node/router/cli/code/templates.mjs +365 -0
  313. package/dist/esm-node/router/cli/code/utils.mjs +73 -0
  314. package/dist/esm-node/router/cli/config-routes/converter.mjs +82 -0
  315. package/dist/esm-node/router/cli/config-routes/parseRouteConfig.mjs +105 -0
  316. package/dist/esm-node/router/cli/constants.mjs +32 -0
  317. package/dist/esm-node/router/cli/entry.mjs +22 -0
  318. package/dist/esm-node/router/cli/handler.mjs +66 -0
  319. package/dist/esm-node/router/cli/index.mjs +80 -0
  320. package/dist/esm-node/router/index.mjs +1 -0
  321. package/dist/esm-node/router/internal.mjs +3 -0
  322. package/dist/esm-node/router/runtime/DefaultNotFound.mjs +13 -0
  323. package/dist/esm-node/router/runtime/DeferredDataScripts.mjs +2 -0
  324. package/dist/esm-node/router/runtime/DeferredDataScripts.node.mjs +120 -0
  325. package/dist/esm-node/router/runtime/PrefetchLink.mjs +161 -0
  326. package/dist/esm-node/router/runtime/constants.mjs +10 -0
  327. package/dist/esm-node/router/runtime/hooks.mjs +4 -0
  328. package/dist/esm-node/router/runtime/index.mjs +9 -0
  329. package/dist/esm-node/router/runtime/internal.mjs +4 -0
  330. package/dist/esm-node/router/runtime/plugin.mjs +181 -0
  331. package/dist/esm-node/router/runtime/plugin.node.mjs +138 -0
  332. package/dist/esm-node/router/runtime/routerHelper.mjs +15 -0
  333. package/dist/esm-node/router/runtime/rsc-router.mjs +233 -0
  334. package/dist/esm-node/router/runtime/rsc.mjs +1 -0
  335. package/dist/esm-node/router/runtime/server.mjs +1 -0
  336. package/dist/esm-node/router/runtime/utils.mjs +165 -0
  337. package/dist/esm-node/router/runtime/withRouter.mjs +14 -0
  338. package/dist/esm-node/rsc/client.mjs +3 -0
  339. package/dist/esm-node/rsc/server.mjs +33 -0
  340. package/dist/types/cli/code.d.ts +1 -1
  341. package/dist/types/cli/index.d.ts +3 -3
  342. package/dist/types/cli/ssr/index.d.ts +2 -2
  343. package/dist/types/cli/ssr/mode.d.ts +15 -0
  344. package/dist/types/cli/template.d.ts +3 -3
  345. package/dist/types/common.d.ts +2 -7
  346. package/dist/types/core/browser/hydrate.d.ts +2 -2
  347. package/dist/types/core/browser/index.d.ts +3 -1
  348. package/dist/types/core/compat/hooks.d.ts +2 -2
  349. package/dist/types/core/compat/index.d.ts +2 -2
  350. package/dist/types/core/compat/requestContext.d.ts +5 -24
  351. package/dist/types/core/config.d.ts +1 -8
  352. package/dist/types/core/constants.d.ts +0 -1
  353. package/dist/types/core/context/index.d.ts +9 -13
  354. package/dist/types/core/context/monitors/index.d.ts +1 -1
  355. package/dist/types/core/context/runtime.d.ts +26 -29
  356. package/dist/types/core/context/serverPayload/index.server.d.ts +1 -1
  357. package/dist/types/core/index.d.ts +4 -7
  358. package/dist/types/core/plugin/index.d.ts +13 -13
  359. package/dist/types/core/plugin/types.d.ts +9 -10
  360. package/dist/types/core/react/wrapper.d.ts +3 -3
  361. package/dist/types/core/server/index.d.ts +3 -3
  362. package/dist/types/core/server/react/index.d.ts +0 -1
  363. package/dist/types/core/server/requestHandler.d.ts +3 -3
  364. package/dist/types/core/server/stream/afterTemplate.d.ts +2 -2
  365. package/dist/types/core/server/stream/beforeTemplate.d.ts +2 -2
  366. package/dist/types/core/server/stream/shared.d.ts +2 -2
  367. package/dist/types/core/server/string/loadable.d.ts +2 -2
  368. package/dist/types/core/server/string/ssrData.d.ts +3 -2
  369. package/dist/types/core/server/tracer.d.ts +1 -3
  370. package/dist/types/core/server/utils.d.ts +2 -3
  371. package/dist/types/core/types.d.ts +4 -16
  372. package/dist/types/document/DocumentContext.d.ts +1 -1
  373. package/dist/types/document/cli/index.d.ts +3 -3
  374. package/dist/types/document/constants.d.ts +3 -1
  375. package/dist/types/exports/config-routes.d.ts +9 -0
  376. package/dist/types/index.d.ts +4 -5
  377. package/dist/types/internal.d.ts +2 -0
  378. package/dist/types/router/cli/code/getClientRoutes/index.d.ts +0 -1
  379. package/dist/types/router/cli/code/getClientRoutes/utils.d.ts +0 -1
  380. package/dist/types/router/cli/code/index.d.ts +7 -3
  381. package/dist/types/router/cli/code/inspect.d.ts +22 -0
  382. package/dist/types/router/cli/code/nestedRoutes.d.ts +10 -4
  383. package/dist/types/router/cli/code/templates.d.ts +3 -2
  384. package/dist/types/router/cli/config-routes/converter.d.ts +15 -0
  385. package/dist/types/router/cli/config-routes/parseRouteConfig.d.ts +32 -0
  386. package/dist/types/router/cli/constants.d.ts +0 -3
  387. package/dist/types/router/cli/entry.d.ts +1 -2
  388. package/dist/types/router/cli/handler.d.ts +4 -4
  389. package/dist/types/router/cli/index.d.ts +2 -4
  390. package/dist/types/router/runtime/DeferredDataScripts.node.d.ts +1 -1
  391. package/dist/types/router/runtime/hooks.d.ts +3 -3
  392. package/dist/types/router/runtime/index.d.ts +0 -1
  393. package/dist/types/router/runtime/plugin.d.ts +2 -2
  394. package/dist/types/router/runtime/plugin.node.d.ts +2 -2
  395. package/dist/types/router/runtime/{routeModule.d.ts → routerHelper.d.ts} +1 -1
  396. package/dist/types/router/runtime/rsc-router.d.ts +2 -2
  397. package/dist/types/router/runtime/rsc.d.ts +1 -0
  398. package/dist/types/router/runtime/server.d.ts +1 -1
  399. package/dist/types/router/runtime/types.d.ts +0 -1
  400. package/dist/types/router/runtime/utils.d.ts +5 -4
  401. package/package.json +91 -81
  402. package/rslib.config.mts +19 -0
  403. package/dist/cjs/cli/ssr/babel-plugin-ssr-loader-id.js +0 -133
  404. package/dist/cjs/config.js +0 -16
  405. package/dist/cjs/core/compatible.js +0 -192
  406. package/dist/cjs/core/loader/index.js +0 -38
  407. package/dist/cjs/core/loader/loaderManager.js +0 -186
  408. package/dist/cjs/core/loader/useLoader.js +0 -114
  409. package/dist/cjs/core/plugin/base.js +0 -16
  410. package/dist/cjs/core/server/react/prerender/index.js +0 -124
  411. package/dist/cjs/core/server/react/prerender/type.js +0 -16
  412. package/dist/cjs/core/server/react/prerender/util.js +0 -121
  413. package/dist/cjs/core/server/string/prefetch.js +0 -93
  414. package/dist/cjs/core/server/string/styledComponent.js +0 -53
  415. package/dist/cjs/exports/server.js +0 -28
  416. package/dist/cjs/exports/styled.js +0 -41
  417. package/dist/cjs/router/cli/code/getClientRoutes/getRoutesLegacy.js +0 -195
  418. package/dist/cjs/router/runtime/routeModule.js +0 -52
  419. package/dist/esm/cli/alias.js +0 -30
  420. package/dist/esm/cli/code.js +0 -265
  421. package/dist/esm/cli/constants.js +0 -20
  422. package/dist/esm/cli/entry.js +0 -15
  423. package/dist/esm/cli/index.js +0 -170
  424. package/dist/esm/cli/ssr/babel-plugin-ssr-loader-id.js +0 -118
  425. package/dist/esm/cli/ssr/index.js +0 -143
  426. package/dist/esm/cli/ssr/loadable-bundler-plugin.js +0 -102
  427. package/dist/esm/cli/template.js +0 -98
  428. package/dist/esm/cli/template.server.js +0 -34
  429. package/dist/esm/common.js +0 -10
  430. package/dist/esm/core/browser/hydrate.js +0 -75
  431. package/dist/esm/core/browser/index.js +0 -279
  432. package/dist/esm/core/browser/withCallback.js +0 -18
  433. package/dist/esm/core/compat/hooks.js +0 -88
  434. package/dist/esm/core/compat/index.js +0 -20
  435. package/dist/esm/core/compat/requestContext.js +0 -25
  436. package/dist/esm/core/compatible.js +0 -215
  437. package/dist/esm/core/config.js +0 -19
  438. package/dist/esm/core/constants.js +0 -13
  439. package/dist/esm/core/context/index.js +0 -67
  440. package/dist/esm/core/context/monitors/default.js +0 -20
  441. package/dist/esm/core/context/monitors/index.js +0 -7
  442. package/dist/esm/core/context/monitors/index.server.js +0 -9
  443. package/dist/esm/core/context/request/index.js +0 -6
  444. package/dist/esm/core/context/request/index.server.js +0 -8
  445. package/dist/esm/core/context/response/index.js +0 -16
  446. package/dist/esm/core/context/response/index.server.js +0 -41
  447. package/dist/esm/core/context/runtime.js +0 -18
  448. package/dist/esm/core/context/serverPayload/index.js +0 -9
  449. package/dist/esm/core/context/serverPayload/index.server.js +0 -15
  450. package/dist/esm/core/index.js +0 -12
  451. package/dist/esm/core/loader/index.js +0 -4
  452. package/dist/esm/core/loader/loaderManager.js +0 -234
  453. package/dist/esm/core/loader/useLoader.js +0 -89
  454. package/dist/esm/core/plugin/base.js +0 -0
  455. package/dist/esm/core/plugin/index.js +0 -33
  456. package/dist/esm/core/plugin/types.js +0 -0
  457. package/dist/esm/core/react/index.js +0 -18
  458. package/dist/esm/core/react/wrapper.js +0 -10
  459. package/dist/esm/core/server/constants.js +0 -10
  460. package/dist/esm/core/server/helmet.js +0 -53
  461. package/dist/esm/core/server/index.js +0 -17
  462. package/dist/esm/core/server/react/index.js +0 -8
  463. package/dist/esm/core/server/react/no-ssr-cache/index.js +0 -12
  464. package/dist/esm/core/server/react/nossr/index.js +0 -14
  465. package/dist/esm/core/server/react/prerender/index.js +0 -105
  466. package/dist/esm/core/server/react/prerender/type.js +0 -0
  467. package/dist/esm/core/server/react/prerender/util.js +0 -114
  468. package/dist/esm/core/server/requestHandler.js +0 -330
  469. package/dist/esm/core/server/server.js +0 -8
  470. package/dist/esm/core/server/shared.js +0 -10
  471. package/dist/esm/core/server/stream/afterTemplate.js +0 -107
  472. package/dist/esm/core/server/stream/beforeTemplate.js +0 -188
  473. package/dist/esm/core/server/stream/createReadableStream.js +0 -165
  474. package/dist/esm/core/server/stream/createReadableStream.worker.js +0 -239
  475. package/dist/esm/core/server/stream/deferredScript.js +0 -85
  476. package/dist/esm/core/server/stream/index.js +0 -10
  477. package/dist/esm/core/server/stream/shared.js +0 -109
  478. package/dist/esm/core/server/stream/template.js +0 -42
  479. package/dist/esm/core/server/string/index.js +0 -189
  480. package/dist/esm/core/server/string/loadable.js +0 -336
  481. package/dist/esm/core/server/string/prefetch.js +0 -105
  482. package/dist/esm/core/server/string/ssrData.js +0 -82
  483. package/dist/esm/core/server/string/styledComponent.js +0 -34
  484. package/dist/esm/core/server/string/types.js +0 -0
  485. package/dist/esm/core/server/tracer.js +0 -20
  486. package/dist/esm/core/server/utils.js +0 -80
  487. package/dist/esm/core/types.js +0 -0
  488. package/dist/esm/document/Body.js +0 -26
  489. package/dist/esm/document/Comment.js +0 -16
  490. package/dist/esm/document/DocumentContext.js +0 -9
  491. package/dist/esm/document/DocumentStructureContext.js +0 -12
  492. package/dist/esm/document/Head.js +0 -36
  493. package/dist/esm/document/Html.js +0 -108
  494. package/dist/esm/document/Links.js +0 -10
  495. package/dist/esm/document/Root.js +0 -41
  496. package/dist/esm/document/Script.js +0 -25
  497. package/dist/esm/document/Scripts.js +0 -10
  498. package/dist/esm/document/Style.js +0 -17
  499. package/dist/esm/document/Title.js +0 -10
  500. package/dist/esm/document/cli/index.js +0 -282
  501. package/dist/esm/document/constants.js +0 -56
  502. package/dist/esm/document/index.js +0 -12
  503. package/dist/esm/exports/head.js +0 -6
  504. package/dist/esm/exports/loadable.js +0 -6
  505. package/dist/esm/exports/server.js +0 -6
  506. package/dist/esm/exports/styled.js +0 -6
  507. package/dist/esm/index.js +0 -20
  508. package/dist/esm/react-server.js +0 -10
  509. package/dist/esm/router/cli/code/getClientRoutes/getRoutes.js +0 -185
  510. package/dist/esm/router/cli/code/getClientRoutes/getRoutesLegacy.js +0 -183
  511. package/dist/esm/router/cli/code/getClientRoutes/index.js +0 -6
  512. package/dist/esm/router/cli/code/getClientRoutes/utils.js +0 -28
  513. package/dist/esm/router/cli/code/index.js +0 -255
  514. package/dist/esm/router/cli/code/makeLegalIdentifier.js +0 -15
  515. package/dist/esm/router/cli/code/nestedRoutes.js +0 -397
  516. package/dist/esm/router/cli/code/templates.js +0 -554
  517. package/dist/esm/router/cli/code/utils.js +0 -212
  518. package/dist/esm/router/cli/constants.js +0 -51
  519. package/dist/esm/router/cli/entry.js +0 -61
  520. package/dist/esm/router/cli/handler.js +0 -191
  521. package/dist/esm/router/cli/index.js +0 -202
  522. package/dist/esm/router/index.js +0 -1
  523. package/dist/esm/router/internal.js +0 -5
  524. package/dist/esm/router/runtime/DefaultNotFound.js +0 -16
  525. package/dist/esm/router/runtime/DeferredDataScripts.js +0 -7
  526. package/dist/esm/router/runtime/DeferredDataScripts.node.js +0 -138
  527. package/dist/esm/router/runtime/PrefetchLink.js +0 -247
  528. package/dist/esm/router/runtime/constants.js +0 -19
  529. package/dist/esm/router/runtime/hooks.js +0 -7
  530. package/dist/esm/router/runtime/index.js +0 -17
  531. package/dist/esm/router/runtime/internal.js +0 -10
  532. package/dist/esm/router/runtime/plugin.js +0 -216
  533. package/dist/esm/router/runtime/plugin.node.js +0 -237
  534. package/dist/esm/router/runtime/routeModule.js +0 -26
  535. package/dist/esm/router/runtime/rsc-router.js +0 -437
  536. package/dist/esm/router/runtime/server.js +0 -1
  537. package/dist/esm/router/runtime/types.js +0 -0
  538. package/dist/esm/router/runtime/utils.js +0 -296
  539. package/dist/esm/router/runtime/withRouter.js +0 -19
  540. package/dist/esm/rsc/client.js +0 -7
  541. package/dist/esm/rsc/server.js +0 -87
  542. package/dist/esm-node/cli/alias.js +0 -28
  543. package/dist/esm-node/cli/code.js +0 -137
  544. package/dist/esm-node/cli/constants.js +0 -20
  545. package/dist/esm-node/cli/entry.js +0 -9
  546. package/dist/esm-node/cli/index.js +0 -145
  547. package/dist/esm-node/cli/ssr/babel-plugin-ssr-loader-id.js +0 -119
  548. package/dist/esm-node/cli/ssr/index.js +0 -116
  549. package/dist/esm-node/cli/ssr/loadable-bundler-plugin.js +0 -97
  550. package/dist/esm-node/common.js +0 -8
  551. package/dist/esm-node/core/browser/hydrate.js +0 -68
  552. package/dist/esm-node/core/browser/index.js +0 -128
  553. package/dist/esm-node/core/browser/withCallback.js +0 -17
  554. package/dist/esm-node/core/compat/hooks.js +0 -54
  555. package/dist/esm-node/core/compat/index.js +0 -18
  556. package/dist/esm-node/core/compat/requestContext.js +0 -23
  557. package/dist/esm-node/core/compatible.js +0 -156
  558. package/dist/esm-node/core/config.js +0 -15
  559. package/dist/esm-node/core/constants.js +0 -13
  560. package/dist/esm-node/core/context/index.js +0 -67
  561. package/dist/esm-node/core/context/monitors/default.js +0 -14
  562. package/dist/esm-node/core/context/monitors/index.js +0 -7
  563. package/dist/esm-node/core/context/monitors/index.server.js +0 -9
  564. package/dist/esm-node/core/context/request/index.js +0 -6
  565. package/dist/esm-node/core/context/request/index.server.js +0 -8
  566. package/dist/esm-node/core/context/response/index.js +0 -16
  567. package/dist/esm-node/core/context/response/index.server.js +0 -35
  568. package/dist/esm-node/core/context/runtime.js +0 -15
  569. package/dist/esm-node/core/context/serverPayload/index.js +0 -9
  570. package/dist/esm-node/core/context/serverPayload/index.server.js +0 -15
  571. package/dist/esm-node/core/index.js +0 -12
  572. package/dist/esm-node/core/loader/index.js +0 -4
  573. package/dist/esm-node/core/loader/loaderManager.js +0 -151
  574. package/dist/esm-node/core/loader/useLoader.js +0 -84
  575. package/dist/esm-node/core/plugin/index.js +0 -28
  576. package/dist/esm-node/core/react/index.js +0 -18
  577. package/dist/esm-node/core/react/wrapper.js +0 -10
  578. package/dist/esm-node/core/server/constants.js +0 -10
  579. package/dist/esm-node/core/server/helmet.js +0 -49
  580. package/dist/esm-node/core/server/index.js +0 -13
  581. package/dist/esm-node/core/server/react/index.js +0 -8
  582. package/dist/esm-node/core/server/react/no-ssr-cache/index.js +0 -12
  583. package/dist/esm-node/core/server/react/nossr/index.js +0 -13
  584. package/dist/esm-node/core/server/react/prerender/index.js +0 -90
  585. package/dist/esm-node/core/server/react/prerender/util.js +0 -93
  586. package/dist/esm-node/core/server/requestHandler.js +0 -199
  587. package/dist/esm-node/core/server/shared.js +0 -6
  588. package/dist/esm-node/core/server/stream/afterTemplate.js +0 -76
  589. package/dist/esm-node/core/server/stream/beforeTemplate.js +0 -85
  590. package/dist/esm-node/core/server/stream/createReadableStream.js +0 -123
  591. package/dist/esm-node/core/server/stream/createReadableStream.worker.js +0 -134
  592. package/dist/esm-node/core/server/stream/deferredScript.js +0 -76
  593. package/dist/esm-node/core/server/stream/index.js +0 -6
  594. package/dist/esm-node/core/server/stream/shared.js +0 -82
  595. package/dist/esm-node/core/server/stream/template.js +0 -15
  596. package/dist/esm-node/core/server/string/index.js +0 -113
  597. package/dist/esm-node/core/server/string/loadable.js +0 -154
  598. package/dist/esm-node/core/server/string/prefetch.js +0 -69
  599. package/dist/esm-node/core/server/string/ssrData.js +0 -74
  600. package/dist/esm-node/core/server/string/styledComponent.js +0 -29
  601. package/dist/esm-node/core/server/tracer.js +0 -20
  602. package/dist/esm-node/core/server/utils.js +0 -57
  603. package/dist/esm-node/document/Body.js +0 -22
  604. package/dist/esm-node/document/Comment.js +0 -16
  605. package/dist/esm-node/document/DocumentContext.js +0 -9
  606. package/dist/esm-node/document/DocumentStructureContext.js +0 -12
  607. package/dist/esm-node/document/Head.js +0 -32
  608. package/dist/esm-node/document/Html.js +0 -83
  609. package/dist/esm-node/document/Links.js +0 -10
  610. package/dist/esm-node/document/Root.js +0 -35
  611. package/dist/esm-node/document/Script.js +0 -23
  612. package/dist/esm-node/document/Scripts.js +0 -10
  613. package/dist/esm-node/document/Style.js +0 -17
  614. package/dist/esm-node/document/Title.js +0 -10
  615. package/dist/esm-node/document/cli/index.js +0 -188
  616. package/dist/esm-node/document/constants.js +0 -58
  617. package/dist/esm-node/exports/head.js +0 -6
  618. package/dist/esm-node/exports/loadable.js +0 -6
  619. package/dist/esm-node/exports/server.js +0 -4
  620. package/dist/esm-node/exports/styled.js +0 -6
  621. package/dist/esm-node/index.js +0 -20
  622. package/dist/esm-node/react-server.js +0 -10
  623. package/dist/esm-node/router/cli/code/getClientRoutes/getRoutes.js +0 -163
  624. package/dist/esm-node/router/cli/code/getClientRoutes/getRoutesLegacy.js +0 -161
  625. package/dist/esm-node/router/cli/code/getClientRoutes/index.js +0 -6
  626. package/dist/esm-node/router/cli/code/getClientRoutes/utils.js +0 -22
  627. package/dist/esm-node/router/cli/code/index.js +0 -126
  628. package/dist/esm-node/router/cli/code/nestedRoutes.js +0 -258
  629. package/dist/esm-node/router/cli/code/templates.js +0 -452
  630. package/dist/esm-node/router/cli/code/utils.js +0 -101
  631. package/dist/esm-node/router/cli/constants.js +0 -51
  632. package/dist/esm-node/router/cli/entry.js +0 -54
  633. package/dist/esm-node/router/cli/handler.js +0 -67
  634. package/dist/esm-node/router/cli/index.js +0 -110
  635. package/dist/esm-node/router/runtime/DefaultNotFound.js +0 -14
  636. package/dist/esm-node/router/runtime/DeferredDataScripts.js +0 -6
  637. package/dist/esm-node/router/runtime/DeferredDataScripts.node.js +0 -132
  638. package/dist/esm-node/router/runtime/PrefetchLink.js +0 -192
  639. package/dist/esm-node/router/runtime/hooks.js +0 -7
  640. package/dist/esm-node/router/runtime/index.js +0 -17
  641. package/dist/esm-node/router/runtime/internal.js +0 -10
  642. package/dist/esm-node/router/runtime/plugin.js +0 -206
  643. package/dist/esm-node/router/runtime/plugin.node.js +0 -176
  644. package/dist/esm-node/router/runtime/routeModule.js +0 -26
  645. package/dist/esm-node/router/runtime/rsc-router.js +0 -284
  646. package/dist/esm-node/router/runtime/server.js +0 -1
  647. package/dist/esm-node/router/runtime/utils.js +0 -218
  648. package/dist/esm-node/router/runtime/withRouter.js +0 -18
  649. package/dist/esm-node/rsc/client.js +0 -7
  650. package/dist/esm-node/rsc/server.js +0 -36
  651. package/dist/types/cli/ssr/babel-plugin-ssr-loader-id.d.ts +0 -1
  652. package/dist/types/config.d.ts +0 -6
  653. package/dist/types/core/compatible.d.ts +0 -24
  654. package/dist/types/core/loader/index.d.ts +0 -1
  655. package/dist/types/core/loader/loaderManager.d.ts +0 -56
  656. package/dist/types/core/loader/useLoader.d.ts +0 -36
  657. package/dist/types/core/plugin/base.d.ts +0 -15
  658. package/dist/types/core/server/react/prerender/index.d.ts +0 -5
  659. package/dist/types/core/server/react/prerender/type.d.ts +0 -29
  660. package/dist/types/core/server/react/prerender/util.d.ts +0 -6
  661. package/dist/types/core/server/string/prefetch.d.ts +0 -16
  662. package/dist/types/core/server/string/styledComponent.d.ts +0 -11
  663. package/dist/types/exports/server.d.ts +0 -14
  664. package/dist/types/exports/styled.d.ts +0 -3
  665. package/dist/types/router/cli/code/getClientRoutes/getRoutesLegacy.d.ts +0 -9
  666. package/types/index.d.ts +0 -7
  667. package/types/router.d.ts +0 -24
  668. /package/dist/esm/cache/{index.js → index.mjs} +0 -0
  669. /package/dist/{esm-node/core/server/string/types.js → esm/core/plugin/types.mjs} +0 -0
  670. /package/dist/{esm-node/core/types.js → esm/core/server/string/types.mjs} +0 -0
  671. /package/dist/{esm-node/router/runtime/types.js → esm/core/types.mjs} +0 -0
  672. /package/dist/{esm-node/document/index.js → esm/document/index.mjs} +0 -0
  673. /package/dist/{esm-node/router/index.js → esm/router/index.mjs} +0 -0
  674. /package/dist/esm/{config.js → router/runtime/types.mjs} +0 -0
  675. /package/dist/esm-node/cache/{index.js → index.mjs} +0 -0
  676. /package/dist/esm-node/{config.js → core/plugin/types.mjs} +0 -0
  677. /package/dist/esm-node/core/{plugin/base.js → server/string/types.mjs} +0 -0
  678. /package/dist/esm-node/core/{plugin/types.js → types.mjs} +0 -0
  679. /package/dist/esm-node/{core/server/react/prerender/type.js → router/runtime/types.mjs} +0 -0
@@ -0,0 +1,115 @@
1
+ import path from "path";
2
+ import { fs } from "@modern-js/utils";
3
+ import { FILE_SYSTEM_ROUTES_COMPONENTS_DIR, FILE_SYSTEM_ROUTES_DYNAMIC_REGEXP, FILE_SYSTEM_ROUTES_INDEX } from "../../constants.mjs";
4
+ import { makeLegalIdentifier } from "../makeLegalIdentifier.mjs";
5
+ import { replaceWithAlias } from "../utils.mjs";
6
+ import { debug, getRouteWeight, shouldSkip } from "./utils.mjs";
7
+ const compName = (srcDirectory, filePath)=>{
8
+ const legalCompName = makeLegalIdentifier(path.relative(srcDirectory, filePath));
9
+ return `Comp_${legalCompName}`;
10
+ };
11
+ const layoutNameAbbr = (filePath)=>{
12
+ const prefix = 'L_';
13
+ const dirName = path.dirname(filePath).split('/').pop() || '';
14
+ return `${prefix}${makeLegalIdentifier(dirName)}`;
15
+ };
16
+ const parents = [];
17
+ const recursiveReadDir = ({ dir, routes, basePath = '/', srcDirectory, srcAlias })=>{
18
+ let hasDynamicRoute = false;
19
+ const resetParent = false;
20
+ const parent = parents[parents.length - 1];
21
+ for (const relative of fs.readdirSync(dir)){
22
+ const filePath = path.join(dir, relative);
23
+ if (!shouldSkip(filePath)) {
24
+ const filename = path.basename(filePath, path.extname(filePath));
25
+ const alias = replaceWithAlias(srcDirectory, filePath, srcAlias);
26
+ const componentName = compName(srcDirectory, filePath);
27
+ const dynamicRouteMatched = FILE_SYSTEM_ROUTES_DYNAMIC_REGEXP.exec(filename);
28
+ if (dynamicRouteMatched) if (hasDynamicRoute) throw new Error(`Can't set two dynamic route in one directory: ${dir}`);
29
+ else hasDynamicRoute = true;
30
+ const route = {
31
+ path: `${basePath}${dynamicRouteMatched ? `:${dynamicRouteMatched[1].replace(/\$$/, '?')}${dynamicRouteMatched[2]}` : filename}`,
32
+ _component: alias,
33
+ component: componentName,
34
+ parent,
35
+ type: 'page'
36
+ };
37
+ if (fs.statSync(filePath).isDirectory()) {
38
+ recursiveReadDir({
39
+ dir: filePath,
40
+ routes,
41
+ basePath: `${route.path}/`,
42
+ srcDirectory,
43
+ srcAlias
44
+ });
45
+ continue;
46
+ }
47
+ if (filename === FILE_SYSTEM_ROUTES_INDEX) route.path = '/' === basePath ? basePath : `${basePath.substring(0, basePath.length - 1)}`;
48
+ if ('404' === filename && '/' === basePath) route.path = '*';
49
+ routes.push(route);
50
+ }
51
+ }
52
+ if (resetParent) parents.pop();
53
+ };
54
+ const normalizeNestedRoutes = (nested, internalComponentsDir, internalDirectory, internalDirAlias)=>{
55
+ const flat = (routes)=>routes.reduce((memo, route)=>memo.concat(Array.isArray(route.children) ? flat(route.children) : [
56
+ route
57
+ ]), []);
58
+ const generate = (route)=>{
59
+ const codes = [];
60
+ let lastComponent = route.component;
61
+ const imports = [
62
+ "import React from 'react';",
63
+ `import ${lastComponent} from '${route._component}'`
64
+ ];
65
+ while(route = route.parent){
66
+ const layoutComponent = route.component;
67
+ const layoutComponentAbbr = layoutNameAbbr(route._component);
68
+ imports.push(`import ${layoutComponent} from '${route._component}';`);
69
+ const currentComponent = `${layoutComponentAbbr}_${lastComponent}`;
70
+ codes.push(`const ${currentComponent} = props => <${layoutComponent} Component={${lastComponent}} {...props} />;`);
71
+ lastComponent = currentComponent;
72
+ }
73
+ const file = path.resolve(internalComponentsDir, `${lastComponent}.jsx`);
74
+ fs.outputFileSync(file, `${imports.join('\n')}\n${codes.join('\n')}\nexport default ${lastComponent}`);
75
+ return {
76
+ component: lastComponent,
77
+ _component: replaceWithAlias(internalDirectory, file, internalDirAlias)
78
+ };
79
+ };
80
+ const normalized = flat(nested).map((route)=>route.parent ? {
81
+ ...route,
82
+ ...generate(route),
83
+ parent: void 0
84
+ } : {
85
+ ...route,
86
+ parent: void 0
87
+ });
88
+ return normalized;
89
+ };
90
+ const getClientRoutes = ({ entrypoint, srcDirectory, srcAlias, internalDirectory, internalDirAlias })=>{
91
+ const { entryName, pageRoutesEntry } = entrypoint;
92
+ if (!pageRoutesEntry) return [];
93
+ if (!fs.existsSync(pageRoutesEntry)) throw new Error(`generate file system routes error, ${pageRoutesEntry} directory not found.`);
94
+ if (!(fs.existsSync(pageRoutesEntry) && fs.statSync(pageRoutesEntry).isDirectory())) throw new Error(`generate file system routes error, ${pageRoutesEntry} should be directory.`);
95
+ let routes = [];
96
+ recursiveReadDir({
97
+ dir: pageRoutesEntry,
98
+ routes,
99
+ basePath: '/',
100
+ srcDirectory,
101
+ srcAlias
102
+ });
103
+ const internalComponentsDir = path.resolve(internalDirectory, `${entryName}/${FILE_SYSTEM_ROUTES_COMPONENTS_DIR}`);
104
+ fs.emptyDirSync(internalComponentsDir);
105
+ routes = normalizeNestedRoutes(routes, internalComponentsDir, internalDirectory, internalDirAlias);
106
+ parents.length = 0;
107
+ routes.sort((a, b)=>{
108
+ const delta = getRouteWeight(a.path) - getRouteWeight(b.path);
109
+ if (0 === delta) return a.path.length - b.path.length;
110
+ return delta;
111
+ });
112
+ debug("fileSystem routes: %o", routes);
113
+ return routes;
114
+ };
115
+ export { getClientRoutes };
@@ -0,0 +1,2 @@
1
+ import { getClientRoutes } from "./getRoutes.mjs";
2
+ export { getClientRoutes };
@@ -0,0 +1,12 @@
1
+ import path from "path";
2
+ import { JS_EXTENSIONS, createDebugger, fs } from "@modern-js/utils";
3
+ import { FILE_SYSTEM_ROUTES_IGNORED_REGEX } from "../../constants.mjs";
4
+ const debug = createDebugger('get-client-routes');
5
+ const getRouteWeight = (route)=>'*' === route ? 999 : route.split(':').length - 1;
6
+ const shouldSkip = (file)=>{
7
+ if (fs.statSync(file).isDirectory()) return false;
8
+ const ext = path.extname(file);
9
+ if (FILE_SYSTEM_ROUTES_IGNORED_REGEX.test(file) || !JS_EXTENSIONS.includes(ext)) return true;
10
+ return false;
11
+ };
12
+ export { debug, getRouteWeight, shouldSkip };
@@ -0,0 +1,132 @@
1
+ import path from "path";
2
+ import { filterRoutesForServer, filterRoutesLoader, fs, getEntryOptions, isUseRsc, isUseSSRBundle, logger, markRoutes } from "@modern-js/utils";
3
+ import { cloneDeep } from "@modern-js/utils/lodash";
4
+ import { ENTRY_POINT_RUNTIME_GLOBAL_CONTEXT_FILE_NAME } from "../../../cli/constants.mjs";
5
+ import { resolveSSRMode } from "../../../cli/ssr/mode.mjs";
6
+ import { FILE_SYSTEM_ROUTES_FILE_NAME } from "../constants.mjs";
7
+ import { walk } from "./nestedRoutes.mjs";
8
+ import { fileSystemRoutes, routesForServer, ssrLoaderCombinedModule } from "./templates.mjs";
9
+ import { getServerCombinedModueFile, getServerLoadersFile } from "./utils.mjs";
10
+ async function generateRoutesForEntry(entrypoint, appContext) {
11
+ const routes = [];
12
+ if (entrypoint.nestedRoutesEntry) {
13
+ const nestedRoutes = await walk({
14
+ dirname: entrypoint.nestedRoutesEntry,
15
+ rootDir: entrypoint.nestedRoutesEntry,
16
+ alias: {
17
+ name: appContext.internalSrcAlias,
18
+ basename: appContext.srcDirectory
19
+ },
20
+ entryName: entrypoint.entryName,
21
+ isMainEntry: entrypoint.isMainEntry
22
+ });
23
+ if (nestedRoutes) if (Array.isArray(nestedRoutes)) routes.push(...nestedRoutes);
24
+ else routes.push(nestedRoutes);
25
+ }
26
+ const fileRoutes = routes.length > 0 ? Array.isArray(routes) ? routes : [
27
+ routes
28
+ ] : [];
29
+ const { discoverAndParseConfigRoutes } = await import("../config-routes/parseRouteConfig.mjs");
30
+ const configRoutesData = await discoverAndParseConfigRoutes(entrypoint, appContext, fileRoutes);
31
+ if (configRoutesData) {
32
+ const { processConfigRoutes } = await import("../config-routes/converter.mjs");
33
+ const processedConfigRoutes = await processConfigRoutes(configRoutesData.routes, entrypoint.entryName, entrypoint.isMainEntry || false, path.dirname(configRoutesData.filePath), {
34
+ name: appContext.internalSrcAlias,
35
+ basename: appContext.srcDirectory
36
+ });
37
+ routes.length = 0;
38
+ routes.push(...processedConfigRoutes);
39
+ }
40
+ return routes;
41
+ }
42
+ const generateCode = async (appContext, config, entrypoints, api)=>{
43
+ const { internalDirectory, srcDirectory, internalSrcAlias, packageName } = appContext;
44
+ const hooks = api.getHooks();
45
+ await Promise.all(entrypoints.map(generateEntryCode));
46
+ async function generateEntryCode(entrypoint) {
47
+ const { entryName, isMainEntry, isAutoMount, pageRoutesEntry, nestedRoutesEntry } = entrypoint;
48
+ const { metaName } = api.getAppContext();
49
+ if (isAutoMount) {
50
+ const config = api.getNormalizedConfig();
51
+ getEntryOptions(entryName, isMainEntry, config.server.ssr, config.server.ssrByEntries, packageName);
52
+ const ssrMode = resolveSSRMode({
53
+ entry: entrypoint.entryName,
54
+ config,
55
+ appDirectory: appContext.appDirectory,
56
+ nestedRoutesEntry: entrypoint.nestedRoutesEntry
57
+ });
58
+ if (!nestedRoutesEntry && ssrMode && 'string' !== ssrMode && !isUseRsc(config)) {
59
+ logger.error('Streaming SSR is only supported for convention-based routing (nested routes). Please set `server.ssr.mode` to `"string"` for non-convention-based routing projects.');
60
+ process.exit(1);
61
+ }
62
+ if (pageRoutesEntry || nestedRoutesEntry) {
63
+ const initialRoutes = [];
64
+ const generatedRoutes = await generateRoutesForEntry(entrypoint, appContext);
65
+ const { normalizeRoutes: removeComponentFields } = await import("../config-routes/converter.mjs");
66
+ const normalizedRoutes = removeComponentFields(generatedRoutes);
67
+ for (const route of normalizedRoutes)initialRoutes.unshift(route);
68
+ const ssrByRouteIds = config.server.ssrByRouteIds || [];
69
+ const clonedRoutes = cloneDeep(initialRoutes);
70
+ const markedRoutes = ssrByRouteIds.length > 0 ? markRoutes(clonedRoutes, ssrByRouteIds) : initialRoutes;
71
+ const { routes } = await hooks.modifyFileSystemRoutes.call({
72
+ entrypoint,
73
+ routes: markedRoutes
74
+ });
75
+ if ('stream' === ssrMode) {
76
+ const hasPageRoute = routes.some((route)=>'type' in route && 'page' === route.type);
77
+ if (hasPageRoute) {
78
+ logger.error('Streaming ssr is not supported when pages dir exists');
79
+ process.exit(1);
80
+ }
81
+ }
82
+ const { code } = await hooks.onBeforeGenerateRoutes.call({
83
+ entrypoint,
84
+ code: await fileSystemRoutes({
85
+ metaName,
86
+ routes: routes,
87
+ ssrMode: isUseRsc(config) ? 'stream' : ssrMode,
88
+ nestedRoutesEntry: entrypoint.nestedRoutesEntry,
89
+ entryName: entrypoint.entryName,
90
+ internalDirectory,
91
+ splitRouteChunks: config?.output?.splitRouteChunks,
92
+ isRscClient: isUseRsc(config)
93
+ })
94
+ });
95
+ if (entrypoint.nestedRoutesEntry && (isUseSSRBundle(config) || isUseRsc(config))) {
96
+ const routesServerFile = getServerLoadersFile(internalDirectory, entryName);
97
+ const filtedRoutesForServer = filterRoutesForServer(routes);
98
+ const routesForServerLoaderMatches = filterRoutesLoader(routes);
99
+ const code = routesForServer({
100
+ routesForServerLoaderMatches
101
+ });
102
+ await fs.ensureFile(routesServerFile);
103
+ await fs.writeFile(routesServerFile, code);
104
+ const serverRoutesCode = await fileSystemRoutes({
105
+ metaName,
106
+ routes: filtedRoutesForServer,
107
+ ssrMode,
108
+ nestedRoutesEntry: entrypoint.nestedRoutesEntry,
109
+ entryName: entrypoint.entryName,
110
+ internalDirectory,
111
+ splitRouteChunks: config?.output?.splitRouteChunks,
112
+ isRscClient: false
113
+ });
114
+ await fs.outputFile(path.resolve(internalDirectory, `./${entryName}/routes.server.js`), serverRoutesCode, 'utf8');
115
+ }
116
+ const serverLoaderCombined = ssrLoaderCombinedModule(entrypoints, entrypoint, config, appContext);
117
+ if (serverLoaderCombined) {
118
+ const serverLoaderFile = getServerCombinedModueFile(internalDirectory, entryName);
119
+ await fs.outputFile(serverLoaderFile, serverLoaderCombined);
120
+ }
121
+ await fs.outputFile(path.resolve(internalDirectory, `./${entryName}/${FILE_SYSTEM_ROUTES_FILE_NAME}`), code, 'utf8');
122
+ }
123
+ }
124
+ }
125
+ };
126
+ function generatorRegisterCode(internalDirectory, entryName, code) {
127
+ fs.outputFileSync(path.resolve(internalDirectory, `./${entryName}/${ENTRY_POINT_RUNTIME_GLOBAL_CONTEXT_FILE_NAME}.js`), code, 'utf8');
128
+ }
129
+ function generatorServerRegisterCode(internalDirectory, entryName, code) {
130
+ fs.outputFileSync(path.resolve(internalDirectory, `./${entryName}/${ENTRY_POINT_RUNTIME_GLOBAL_CONTEXT_FILE_NAME}.server.js`), code, 'utf8');
131
+ }
132
+ export { generateCode, generateRoutesForEntry, generatorRegisterCode, generatorServerRegisterCode };
@@ -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.mjs";
5
+ import { generateRoutesForEntry } from "./index.mjs";
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 };
@@ -1,13 +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(" "));
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
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)) {
7
- return `_${identifier}`;
8
- }
9
- return identifier || "_";
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 || '_';
10
8
  }
11
- export {
12
- makeLegalIdentifier
13
- };
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.mjs";
4
+ import { getPathWithoutExt, hasAction, replaceWithAlias } from "./utils.mjs";
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 };