@bleedingdev/modern-js-runtime 3.2.0-ultramodern.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 (574) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +32 -0
  3. package/dist/cjs/cache/index.js +58 -0
  4. package/dist/cjs/cli/alias.js +68 -0
  5. package/dist/cjs/cli/code.js +193 -0
  6. package/dist/cjs/cli/constants.js +68 -0
  7. package/dist/cjs/cli/entry.js +53 -0
  8. package/dist/cjs/cli/index.js +166 -0
  9. package/dist/cjs/cli/ssr/index.js +240 -0
  10. package/dist/cjs/cli/ssr/loadable-bundler-plugin.js +131 -0
  11. package/dist/cjs/cli/ssr/mode.js +48 -0
  12. package/dist/cjs/cli/template.js +276 -0
  13. package/dist/cjs/cli/template.server.js +163 -0
  14. package/dist/cjs/common.js +44 -0
  15. package/dist/cjs/core/browser/hydrate.js +91 -0
  16. package/dist/cjs/core/browser/index.js +150 -0
  17. package/dist/cjs/core/browser/withCallback.js +47 -0
  18. package/dist/cjs/core/compat/hooks.js +75 -0
  19. package/dist/cjs/core/compat/index.js +46 -0
  20. package/dist/cjs/core/compat/requestContext.js +59 -0
  21. package/dist/cjs/core/config.js +36 -0
  22. package/dist/cjs/core/constants.js +48 -0
  23. package/dist/cjs/core/context/index.js +124 -0
  24. package/dist/cjs/core/context/monitors/default.js +44 -0
  25. package/dist/cjs/core/context/monitors/index.js +37 -0
  26. package/dist/cjs/core/context/monitors/index.server.js +41 -0
  27. package/dist/cjs/core/context/request/index.js +36 -0
  28. package/dist/cjs/core/context/request/index.server.js +40 -0
  29. package/dist/cjs/core/context/response/index.js +50 -0
  30. package/dist/cjs/core/context/response/index.server.js +71 -0
  31. package/dist/cjs/core/context/runtime.js +65 -0
  32. package/dist/cjs/core/context/serverPayload/index.js +40 -0
  33. package/dist/cjs/core/context/serverPayload/index.server.js +47 -0
  34. package/dist/cjs/core/index.js +43 -0
  35. package/dist/cjs/core/plugin/index.js +62 -0
  36. package/dist/cjs/core/plugin/types.js +18 -0
  37. package/dist/cjs/core/react/index.js +50 -0
  38. package/dist/cjs/core/react/wrapper.js +55 -0
  39. package/dist/cjs/core/server/constants.js +48 -0
  40. package/dist/cjs/core/server/helmet.js +75 -0
  41. package/dist/cjs/core/server/index.js +50 -0
  42. package/dist/cjs/core/server/react/index.js +40 -0
  43. package/dist/cjs/core/server/react/no-ssr-cache/index.js +43 -0
  44. package/dist/cjs/core/server/react/nossr/index.js +54 -0
  45. package/dist/cjs/core/server/requestHandler.js +218 -0
  46. package/dist/cjs/core/server/server.js +44 -0
  47. package/dist/cjs/core/server/shared.js +38 -0
  48. package/dist/cjs/core/server/stream/afterTemplate.js +103 -0
  49. package/dist/cjs/core/server/stream/beforeTemplate.js +111 -0
  50. package/dist/cjs/core/server/stream/createReadableStream.js +161 -0
  51. package/dist/cjs/core/server/stream/createReadableStream.worker.js +141 -0
  52. package/dist/cjs/core/server/stream/deferredScript.js +114 -0
  53. package/dist/cjs/core/server/stream/index.js +38 -0
  54. package/dist/cjs/core/server/stream/shared.js +154 -0
  55. package/dist/cjs/core/server/stream/template.js +47 -0
  56. package/dist/cjs/core/server/string/index.js +149 -0
  57. package/dist/cjs/core/server/string/loadable.js +146 -0
  58. package/dist/cjs/core/server/string/ssrData.js +151 -0
  59. package/dist/cjs/core/server/string/types.js +18 -0
  60. package/dist/cjs/core/server/tracer.js +52 -0
  61. package/dist/cjs/core/server/utils.js +88 -0
  62. package/dist/cjs/core/types.js +18 -0
  63. package/dist/cjs/document/Body.js +54 -0
  64. package/dist/cjs/document/Comment.js +49 -0
  65. package/dist/cjs/document/DocumentContext.js +51 -0
  66. package/dist/cjs/document/DocumentStructureContext.js +54 -0
  67. package/dist/cjs/document/Head.js +66 -0
  68. package/dist/cjs/document/Html.js +120 -0
  69. package/dist/cjs/document/Links.js +43 -0
  70. package/dist/cjs/document/Root.js +66 -0
  71. package/dist/cjs/document/Script.js +55 -0
  72. package/dist/cjs/document/Scripts.js +43 -0
  73. package/dist/cjs/document/Style.js +50 -0
  74. package/dist/cjs/document/Title.js +42 -0
  75. package/dist/cjs/document/cli/index.js +401 -0
  76. package/dist/cjs/document/constants.js +134 -0
  77. package/dist/cjs/document/index.js +135 -0
  78. package/dist/cjs/exports/config-routes.js +38 -0
  79. package/dist/cjs/exports/head.js +51 -0
  80. package/dist/cjs/exports/loadable.js +66 -0
  81. package/dist/cjs/exports/tanstack-router.js +91 -0
  82. package/dist/cjs/index.js +64 -0
  83. package/dist/cjs/internal.js +36 -0
  84. package/dist/cjs/react-server.js +50 -0
  85. package/dist/cjs/router/cli/code/getClientRoutes/getRoutes.js +159 -0
  86. package/dist/cjs/router/cli/code/getClientRoutes/index.js +36 -0
  87. package/dist/cjs/router/cli/code/getClientRoutes/utils.js +62 -0
  88. package/dist/cjs/router/cli/code/index.js +238 -0
  89. package/dist/cjs/router/cli/code/inspect.js +139 -0
  90. package/dist/cjs/router/cli/code/makeLegalIdentifier.js +43 -0
  91. package/dist/cjs/router/cli/code/nestedRoutes.js +233 -0
  92. package/dist/cjs/router/cli/code/tanstackTypes.js +378 -0
  93. package/dist/cjs/router/cli/code/templates.js +446 -0
  94. package/dist/cjs/router/cli/code/utils.js +151 -0
  95. package/dist/cjs/router/cli/config-routes/converter.js +129 -0
  96. package/dist/cjs/router/cli/config-routes/parseRouteConfig.js +155 -0
  97. package/dist/cjs/router/cli/constants.js +99 -0
  98. package/dist/cjs/router/cli/entry.js +105 -0
  99. package/dist/cjs/router/cli/handler.js +131 -0
  100. package/dist/cjs/router/cli/index.js +194 -0
  101. package/dist/cjs/router/index.js +58 -0
  102. package/dist/cjs/router/internal.js +64 -0
  103. package/dist/cjs/router/runtime/CSSLinks.js +46 -0
  104. package/dist/cjs/router/runtime/DefaultNotFound.js +47 -0
  105. package/dist/cjs/router/runtime/DeferredDataScripts.js +36 -0
  106. package/dist/cjs/router/runtime/DeferredDataScripts.node.js +154 -0
  107. package/dist/cjs/router/runtime/PrefetchLink.js +201 -0
  108. package/dist/cjs/router/runtime/constants.js +65 -0
  109. package/dist/cjs/router/runtime/hooks.js +57 -0
  110. package/dist/cjs/router/runtime/index.js +95 -0
  111. package/dist/cjs/router/runtime/internal.js +67 -0
  112. package/dist/cjs/router/runtime/lifecycle.js +148 -0
  113. package/dist/cjs/router/runtime/plugin.js +262 -0
  114. package/dist/cjs/router/runtime/plugin.node.js +226 -0
  115. package/dist/cjs/router/runtime/routerHelper.js +55 -0
  116. package/dist/cjs/router/runtime/rsc-router.js +377 -0
  117. package/dist/cjs/router/runtime/rsc.js +58 -0
  118. package/dist/cjs/router/runtime/server.js +58 -0
  119. package/dist/cjs/router/runtime/tanstack/basepathRewrite.js +62 -0
  120. package/dist/cjs/router/runtime/tanstack/dataMutation.js +345 -0
  121. package/dist/cjs/router/runtime/tanstack/plugin.js +239 -0
  122. package/dist/cjs/router/runtime/tanstack/plugin.node.js +278 -0
  123. package/dist/cjs/router/runtime/tanstack/prefetchLink.js +55 -0
  124. package/dist/cjs/router/runtime/tanstack/routeTree.js +469 -0
  125. package/dist/cjs/router/runtime/tanstack/rsc/ClientSlot.js +53 -0
  126. package/dist/cjs/router/runtime/tanstack/rsc/CompositeComponent.js +75 -0
  127. package/dist/cjs/router/runtime/tanstack/rsc/ReplayableStream.js +141 -0
  128. package/dist/cjs/router/runtime/tanstack/rsc/RscNodeRenderer.js +65 -0
  129. package/dist/cjs/router/runtime/tanstack/rsc/SlotContext.js +54 -0
  130. package/dist/cjs/router/runtime/tanstack/rsc/client.js +93 -0
  131. package/dist/cjs/router/runtime/tanstack/rsc/createRscProxy.js +141 -0
  132. package/dist/cjs/router/runtime/tanstack/rsc/index.js +42 -0
  133. package/dist/cjs/router/runtime/tanstack/rsc/server.js +246 -0
  134. package/dist/cjs/router/runtime/tanstack/rsc/slotUsageSanitizer.js +65 -0
  135. package/dist/cjs/router/runtime/tanstack/rsc/symbols.js +72 -0
  136. package/dist/cjs/router/runtime/types.js +18 -0
  137. package/dist/cjs/router/runtime/utils.js +243 -0
  138. package/dist/cjs/router/runtime/withRouter.js +48 -0
  139. package/dist/cjs/rsc/client.js +68 -0
  140. package/dist/cjs/rsc/server.js +58 -0
  141. package/dist/cjs/ssr/index.node.js +121 -0
  142. package/dist/cjs/ssr/serverRender/renderToStream/buildTemplate.after.js +84 -0
  143. package/dist/cjs/ssr/serverRender/renderToString/entry.js +195 -0
  144. package/dist/cjs/ssr/serverRender/types.js +36 -0
  145. package/dist/esm/cache/index.mjs +1 -0
  146. package/dist/esm/cli/alias.mjs +24 -0
  147. package/dist/esm/cli/code.mjs +149 -0
  148. package/dist/esm/cli/constants.mjs +10 -0
  149. package/dist/esm/cli/entry.mjs +6 -0
  150. package/dist/esm/cli/index.mjs +93 -0
  151. package/dist/esm/cli/ssr/index.mjs +190 -0
  152. package/dist/esm/cli/ssr/loadable-bundler-plugin.mjs +87 -0
  153. package/dist/esm/cli/ssr/mode.mjs +14 -0
  154. package/dist/esm/cli/template.mjs +211 -0
  155. package/dist/esm/cli/template.server.mjs +126 -0
  156. package/dist/esm/common.mjs +4 -0
  157. package/dist/esm/core/browser/hydrate.mjs +53 -0
  158. package/dist/esm/core/browser/index.mjs +104 -0
  159. package/dist/esm/core/browser/withCallback.mjs +13 -0
  160. package/dist/esm/core/compat/hooks.mjs +35 -0
  161. package/dist/esm/core/compat/index.mjs +12 -0
  162. package/dist/esm/core/compat/requestContext.mjs +22 -0
  163. package/dist/esm/core/config.mjs +2 -0
  164. package/dist/esm/core/constants.mjs +8 -0
  165. package/dist/esm/core/context/index.mjs +45 -0
  166. package/dist/esm/core/context/monitors/default.mjs +10 -0
  167. package/dist/esm/core/context/monitors/index.mjs +3 -0
  168. package/dist/esm/core/context/monitors/index.server.mjs +7 -0
  169. package/dist/esm/core/context/request/index.mjs +2 -0
  170. package/dist/esm/core/context/request/index.server.mjs +6 -0
  171. package/dist/esm/core/context/response/index.mjs +7 -0
  172. package/dist/esm/core/context/response/index.server.mjs +28 -0
  173. package/dist/esm/core/context/runtime.mjs +19 -0
  174. package/dist/esm/core/context/serverPayload/index.mjs +3 -0
  175. package/dist/esm/core/context/serverPayload/index.server.mjs +10 -0
  176. package/dist/esm/core/index.mjs +2 -0
  177. package/dist/esm/core/plugin/index.mjs +25 -0
  178. package/dist/esm/core/plugin/types.mjs +0 -0
  179. package/dist/esm/core/react/index.mjs +16 -0
  180. package/dist/esm/core/react/wrapper.mjs +21 -0
  181. package/dist/esm/core/server/constants.mjs +5 -0
  182. package/dist/esm/core/server/helmet.mjs +38 -0
  183. package/dist/esm/core/server/index.mjs +8 -0
  184. package/dist/esm/core/server/react/index.mjs +2 -0
  185. package/dist/esm/core/server/react/no-ssr-cache/index.mjs +9 -0
  186. package/dist/esm/core/server/react/nossr/index.mjs +10 -0
  187. package/dist/esm/core/server/requestHandler.mjs +174 -0
  188. package/dist/esm/core/server/server.mjs +3 -0
  189. package/dist/esm/core/server/shared.mjs +4 -0
  190. package/dist/esm/core/server/stream/afterTemplate.mjs +69 -0
  191. package/dist/esm/core/server/stream/beforeTemplate.mjs +67 -0
  192. package/dist/esm/core/server/stream/createReadableStream.mjs +127 -0
  193. package/dist/esm/core/server/stream/createReadableStream.worker.mjs +107 -0
  194. package/dist/esm/core/server/stream/deferredScript.mjs +62 -0
  195. package/dist/esm/core/server/stream/index.mjs +4 -0
  196. package/dist/esm/core/server/stream/shared.mjs +108 -0
  197. package/dist/esm/core/server/stream/template.mjs +13 -0
  198. package/dist/esm/core/server/string/index.mjs +104 -0
  199. package/dist/esm/core/server/string/loadable.mjs +112 -0
  200. package/dist/esm/core/server/string/ssrData.mjs +117 -0
  201. package/dist/esm/core/server/string/types.mjs +0 -0
  202. package/dist/esm/core/server/tracer.mjs +15 -0
  203. package/dist/esm/core/server/utils.mjs +39 -0
  204. package/dist/esm/core/types.mjs +0 -0
  205. package/dist/esm/document/Body.mjs +20 -0
  206. package/dist/esm/document/Comment.mjs +15 -0
  207. package/dist/esm/document/DocumentContext.mjs +7 -0
  208. package/dist/esm/document/DocumentStructureContext.mjs +10 -0
  209. package/dist/esm/document/Head.mjs +29 -0
  210. package/dist/esm/document/Html.mjs +86 -0
  211. package/dist/esm/document/Links.mjs +9 -0
  212. package/dist/esm/document/Root.mjs +29 -0
  213. package/dist/esm/document/Script.mjs +21 -0
  214. package/dist/esm/document/Scripts.mjs +9 -0
  215. package/dist/esm/document/Style.mjs +16 -0
  216. package/dist/esm/document/Title.mjs +8 -0
  217. package/dist/esm/document/cli/index.mjs +351 -0
  218. package/dist/esm/document/constants.mjs +34 -0
  219. package/dist/esm/document/index.mjs +12 -0
  220. package/dist/esm/exports/config-routes.mjs +4 -0
  221. package/dist/esm/exports/head.mjs +5 -0
  222. package/dist/esm/exports/loadable.mjs +4 -0
  223. package/dist/esm/exports/tanstack-router.mjs +3 -0
  224. package/dist/esm/index.mjs +5 -0
  225. package/dist/esm/internal.mjs +1 -0
  226. package/dist/esm/react-server.mjs +3 -0
  227. package/dist/esm/router/cli/code/getClientRoutes/getRoutes.mjs +115 -0
  228. package/dist/esm/router/cli/code/getClientRoutes/index.mjs +1 -0
  229. package/dist/esm/router/cli/code/getClientRoutes/utils.mjs +12 -0
  230. package/dist/esm/router/cli/code/index.mjs +185 -0
  231. package/dist/esm/router/cli/code/inspect.mjs +95 -0
  232. package/dist/esm/router/cli/code/makeLegalIdentifier.mjs +9 -0
  233. package/dist/esm/router/cli/code/nestedRoutes.mjs +193 -0
  234. package/dist/esm/router/cli/code/tanstackTypes.mjs +331 -0
  235. package/dist/esm/router/cli/code/templates.mjs +393 -0
  236. package/dist/esm/router/cli/code/utils.mjs +82 -0
  237. package/dist/esm/router/cli/config-routes/converter.mjs +82 -0
  238. package/dist/esm/router/cli/config-routes/parseRouteConfig.mjs +105 -0
  239. package/dist/esm/router/cli/constants.mjs +32 -0
  240. package/dist/esm/router/cli/entry.mjs +40 -0
  241. package/dist/esm/router/cli/handler.mjs +81 -0
  242. package/dist/esm/router/cli/index.mjs +127 -0
  243. package/dist/esm/router/index.mjs +1 -0
  244. package/dist/esm/router/internal.mjs +2 -0
  245. package/dist/esm/router/runtime/CSSLinks.mjs +12 -0
  246. package/dist/esm/router/runtime/DefaultNotFound.mjs +13 -0
  247. package/dist/esm/router/runtime/DeferredDataScripts.mjs +2 -0
  248. package/dist/esm/router/runtime/DeferredDataScripts.node.mjs +120 -0
  249. package/dist/esm/router/runtime/PrefetchLink.mjs +154 -0
  250. package/dist/esm/router/runtime/constants.mjs +10 -0
  251. package/dist/esm/router/runtime/hooks.mjs +8 -0
  252. package/dist/esm/router/runtime/index.mjs +9 -0
  253. package/dist/esm/router/runtime/internal.mjs +25 -0
  254. package/dist/esm/router/runtime/lifecycle.mjs +96 -0
  255. package/dist/esm/router/runtime/plugin.mjs +219 -0
  256. package/dist/esm/router/runtime/plugin.node.mjs +179 -0
  257. package/dist/esm/router/runtime/routerHelper.mjs +15 -0
  258. package/dist/esm/router/runtime/rsc-router.mjs +321 -0
  259. package/dist/esm/router/runtime/rsc.mjs +1 -0
  260. package/dist/esm/router/runtime/server.mjs +1 -0
  261. package/dist/esm/router/runtime/tanstack/basepathRewrite.mjs +28 -0
  262. package/dist/esm/router/runtime/tanstack/dataMutation.mjs +305 -0
  263. package/dist/esm/router/runtime/tanstack/plugin.mjs +205 -0
  264. package/dist/esm/router/runtime/tanstack/plugin.node.mjs +244 -0
  265. package/dist/esm/router/runtime/tanstack/prefetchLink.mjs +18 -0
  266. package/dist/esm/router/runtime/tanstack/routeTree.mjs +429 -0
  267. package/dist/esm/router/runtime/tanstack/rsc/ClientSlot.mjs +19 -0
  268. package/dist/esm/router/runtime/tanstack/rsc/CompositeComponent.mjs +41 -0
  269. package/dist/esm/router/runtime/tanstack/rsc/ReplayableStream.mjs +104 -0
  270. package/dist/esm/router/runtime/tanstack/rsc/RscNodeRenderer.mjs +31 -0
  271. package/dist/esm/router/runtime/tanstack/rsc/SlotContext.mjs +17 -0
  272. package/dist/esm/router/runtime/tanstack/rsc/client.mjs +53 -0
  273. package/dist/esm/router/runtime/tanstack/rsc/createRscProxy.mjs +107 -0
  274. package/dist/esm/router/runtime/tanstack/rsc/index.mjs +1 -0
  275. package/dist/esm/router/runtime/tanstack/rsc/server.mjs +200 -0
  276. package/dist/esm/router/runtime/tanstack/rsc/slotUsageSanitizer.mjs +31 -0
  277. package/dist/esm/router/runtime/tanstack/rsc/symbols.mjs +17 -0
  278. package/dist/esm/router/runtime/types.mjs +0 -0
  279. package/dist/esm/router/runtime/utils.mjs +174 -0
  280. package/dist/esm/router/runtime/withRouter.mjs +14 -0
  281. package/dist/esm/rsc/client.mjs +3 -0
  282. package/dist/esm/rsc/server.mjs +1 -0
  283. package/dist/esm/ssr/index.node.mjs +44 -0
  284. package/dist/esm/ssr/serverRender/renderToStream/buildTemplate.after.mjs +50 -0
  285. package/dist/esm/ssr/serverRender/renderToString/entry.mjs +148 -0
  286. package/dist/esm/ssr/serverRender/types.mjs +1 -0
  287. package/dist/esm-node/cache/index.mjs +2 -0
  288. package/dist/esm-node/cli/alias.mjs +25 -0
  289. package/dist/esm-node/cli/code.mjs +150 -0
  290. package/dist/esm-node/cli/constants.mjs +11 -0
  291. package/dist/esm-node/cli/entry.mjs +7 -0
  292. package/dist/esm-node/cli/index.mjs +95 -0
  293. package/dist/esm-node/cli/ssr/index.mjs +192 -0
  294. package/dist/esm-node/cli/ssr/loadable-bundler-plugin.mjs +88 -0
  295. package/dist/esm-node/cli/ssr/mode.mjs +15 -0
  296. package/dist/esm-node/cli/template.mjs +212 -0
  297. package/dist/esm-node/cli/template.server.mjs +127 -0
  298. package/dist/esm-node/common.mjs +5 -0
  299. package/dist/esm-node/core/browser/hydrate.mjs +54 -0
  300. package/dist/esm-node/core/browser/index.mjs +105 -0
  301. package/dist/esm-node/core/browser/withCallback.mjs +14 -0
  302. package/dist/esm-node/core/compat/hooks.mjs +36 -0
  303. package/dist/esm-node/core/compat/index.mjs +13 -0
  304. package/dist/esm-node/core/compat/requestContext.mjs +23 -0
  305. package/dist/esm-node/core/config.mjs +3 -0
  306. package/dist/esm-node/core/constants.mjs +9 -0
  307. package/dist/esm-node/core/context/index.mjs +46 -0
  308. package/dist/esm-node/core/context/monitors/default.mjs +11 -0
  309. package/dist/esm-node/core/context/monitors/index.mjs +4 -0
  310. package/dist/esm-node/core/context/monitors/index.server.mjs +8 -0
  311. package/dist/esm-node/core/context/request/index.mjs +3 -0
  312. package/dist/esm-node/core/context/request/index.server.mjs +7 -0
  313. package/dist/esm-node/core/context/response/index.mjs +8 -0
  314. package/dist/esm-node/core/context/response/index.server.mjs +29 -0
  315. package/dist/esm-node/core/context/runtime.mjs +20 -0
  316. package/dist/esm-node/core/context/serverPayload/index.mjs +4 -0
  317. package/dist/esm-node/core/context/serverPayload/index.server.mjs +11 -0
  318. package/dist/esm-node/core/index.mjs +3 -0
  319. package/dist/esm-node/core/plugin/index.mjs +26 -0
  320. package/dist/esm-node/core/plugin/types.mjs +1 -0
  321. package/dist/esm-node/core/react/index.mjs +17 -0
  322. package/dist/esm-node/core/react/wrapper.mjs +22 -0
  323. package/dist/esm-node/core/server/constants.mjs +6 -0
  324. package/dist/esm-node/core/server/helmet.mjs +39 -0
  325. package/dist/esm-node/core/server/index.mjs +9 -0
  326. package/dist/esm-node/core/server/react/index.mjs +3 -0
  327. package/dist/esm-node/core/server/react/no-ssr-cache/index.mjs +10 -0
  328. package/dist/esm-node/core/server/react/nossr/index.mjs +11 -0
  329. package/dist/esm-node/core/server/requestHandler.mjs +175 -0
  330. package/dist/esm-node/core/server/server.mjs +4 -0
  331. package/dist/esm-node/core/server/shared.mjs +5 -0
  332. package/dist/esm-node/core/server/stream/afterTemplate.mjs +70 -0
  333. package/dist/esm-node/core/server/stream/beforeTemplate.mjs +71 -0
  334. package/dist/esm-node/core/server/stream/createReadableStream.mjs +128 -0
  335. package/dist/esm-node/core/server/stream/createReadableStream.worker.mjs +108 -0
  336. package/dist/esm-node/core/server/stream/deferredScript.mjs +63 -0
  337. package/dist/esm-node/core/server/stream/index.mjs +5 -0
  338. package/dist/esm-node/core/server/stream/shared.mjs +109 -0
  339. package/dist/esm-node/core/server/stream/template.mjs +14 -0
  340. package/dist/esm-node/core/server/string/index.mjs +105 -0
  341. package/dist/esm-node/core/server/string/loadable.mjs +116 -0
  342. package/dist/esm-node/core/server/string/ssrData.mjs +118 -0
  343. package/dist/esm-node/core/server/string/types.mjs +1 -0
  344. package/dist/esm-node/core/server/tracer.mjs +16 -0
  345. package/dist/esm-node/core/server/utils.mjs +40 -0
  346. package/dist/esm-node/core/types.mjs +1 -0
  347. package/dist/esm-node/document/Body.mjs +21 -0
  348. package/dist/esm-node/document/Comment.mjs +16 -0
  349. package/dist/esm-node/document/DocumentContext.mjs +8 -0
  350. package/dist/esm-node/document/DocumentStructureContext.mjs +11 -0
  351. package/dist/esm-node/document/Head.mjs +30 -0
  352. package/dist/esm-node/document/Html.mjs +87 -0
  353. package/dist/esm-node/document/Links.mjs +10 -0
  354. package/dist/esm-node/document/Root.mjs +30 -0
  355. package/dist/esm-node/document/Script.mjs +22 -0
  356. package/dist/esm-node/document/Scripts.mjs +10 -0
  357. package/dist/esm-node/document/Style.mjs +17 -0
  358. package/dist/esm-node/document/Title.mjs +9 -0
  359. package/dist/esm-node/document/cli/index.mjs +353 -0
  360. package/dist/esm-node/document/constants.mjs +35 -0
  361. package/dist/esm-node/document/index.mjs +13 -0
  362. package/dist/esm-node/exports/config-routes.mjs +5 -0
  363. package/dist/esm-node/exports/head.mjs +6 -0
  364. package/dist/esm-node/exports/loadable.mjs +5 -0
  365. package/dist/esm-node/exports/tanstack-router.mjs +4 -0
  366. package/dist/esm-node/index.mjs +6 -0
  367. package/dist/esm-node/internal.mjs +2 -0
  368. package/dist/esm-node/react-server.mjs +4 -0
  369. package/dist/esm-node/router/cli/code/getClientRoutes/getRoutes.mjs +116 -0
  370. package/dist/esm-node/router/cli/code/getClientRoutes/index.mjs +2 -0
  371. package/dist/esm-node/router/cli/code/getClientRoutes/utils.mjs +13 -0
  372. package/dist/esm-node/router/cli/code/index.mjs +186 -0
  373. package/dist/esm-node/router/cli/code/inspect.mjs +96 -0
  374. package/dist/esm-node/router/cli/code/makeLegalIdentifier.mjs +10 -0
  375. package/dist/esm-node/router/cli/code/nestedRoutes.mjs +194 -0
  376. package/dist/esm-node/router/cli/code/tanstackTypes.mjs +332 -0
  377. package/dist/esm-node/router/cli/code/templates.mjs +395 -0
  378. package/dist/esm-node/router/cli/code/utils.mjs +83 -0
  379. package/dist/esm-node/router/cli/config-routes/converter.mjs +83 -0
  380. package/dist/esm-node/router/cli/config-routes/parseRouteConfig.mjs +106 -0
  381. package/dist/esm-node/router/cli/constants.mjs +33 -0
  382. package/dist/esm-node/router/cli/entry.mjs +41 -0
  383. package/dist/esm-node/router/cli/handler.mjs +82 -0
  384. package/dist/esm-node/router/cli/index.mjs +131 -0
  385. package/dist/esm-node/router/index.mjs +2 -0
  386. package/dist/esm-node/router/internal.mjs +3 -0
  387. package/dist/esm-node/router/runtime/CSSLinks.mjs +13 -0
  388. package/dist/esm-node/router/runtime/DefaultNotFound.mjs +14 -0
  389. package/dist/esm-node/router/runtime/DeferredDataScripts.mjs +3 -0
  390. package/dist/esm-node/router/runtime/DeferredDataScripts.node.mjs +121 -0
  391. package/dist/esm-node/router/runtime/PrefetchLink.mjs +155 -0
  392. package/dist/esm-node/router/runtime/constants.mjs +11 -0
  393. package/dist/esm-node/router/runtime/hooks.mjs +9 -0
  394. package/dist/esm-node/router/runtime/index.mjs +10 -0
  395. package/dist/esm-node/router/runtime/internal.mjs +26 -0
  396. package/dist/esm-node/router/runtime/lifecycle.mjs +97 -0
  397. package/dist/esm-node/router/runtime/plugin.mjs +220 -0
  398. package/dist/esm-node/router/runtime/plugin.node.mjs +180 -0
  399. package/dist/esm-node/router/runtime/routerHelper.mjs +16 -0
  400. package/dist/esm-node/router/runtime/rsc-router.mjs +322 -0
  401. package/dist/esm-node/router/runtime/rsc.mjs +2 -0
  402. package/dist/esm-node/router/runtime/server.mjs +2 -0
  403. package/dist/esm-node/router/runtime/tanstack/basepathRewrite.mjs +29 -0
  404. package/dist/esm-node/router/runtime/tanstack/dataMutation.mjs +306 -0
  405. package/dist/esm-node/router/runtime/tanstack/plugin.mjs +206 -0
  406. package/dist/esm-node/router/runtime/tanstack/plugin.node.mjs +245 -0
  407. package/dist/esm-node/router/runtime/tanstack/prefetchLink.mjs +19 -0
  408. package/dist/esm-node/router/runtime/tanstack/routeTree.mjs +430 -0
  409. package/dist/esm-node/router/runtime/tanstack/rsc/ClientSlot.mjs +20 -0
  410. package/dist/esm-node/router/runtime/tanstack/rsc/CompositeComponent.mjs +42 -0
  411. package/dist/esm-node/router/runtime/tanstack/rsc/ReplayableStream.mjs +105 -0
  412. package/dist/esm-node/router/runtime/tanstack/rsc/RscNodeRenderer.mjs +32 -0
  413. package/dist/esm-node/router/runtime/tanstack/rsc/SlotContext.mjs +18 -0
  414. package/dist/esm-node/router/runtime/tanstack/rsc/client.mjs +54 -0
  415. package/dist/esm-node/router/runtime/tanstack/rsc/createRscProxy.mjs +108 -0
  416. package/dist/esm-node/router/runtime/tanstack/rsc/index.mjs +2 -0
  417. package/dist/esm-node/router/runtime/tanstack/rsc/server.mjs +201 -0
  418. package/dist/esm-node/router/runtime/tanstack/rsc/slotUsageSanitizer.mjs +32 -0
  419. package/dist/esm-node/router/runtime/tanstack/rsc/symbols.mjs +18 -0
  420. package/dist/esm-node/router/runtime/types.mjs +1 -0
  421. package/dist/esm-node/router/runtime/utils.mjs +175 -0
  422. package/dist/esm-node/router/runtime/withRouter.mjs +15 -0
  423. package/dist/esm-node/rsc/client.mjs +4 -0
  424. package/dist/esm-node/rsc/server.mjs +2 -0
  425. package/dist/esm-node/ssr/index.node.mjs +45 -0
  426. package/dist/esm-node/ssr/serverRender/renderToStream/buildTemplate.after.mjs +51 -0
  427. package/dist/esm-node/ssr/serverRender/renderToString/entry.mjs +149 -0
  428. package/dist/esm-node/ssr/serverRender/types.mjs +2 -0
  429. package/dist/types/cache/index.d.ts +1 -0
  430. package/dist/types/cli/alias.d.ts +7 -0
  431. package/dist/types/cli/code.d.ts +3 -0
  432. package/dist/types/cli/constants.d.ts +9 -0
  433. package/dist/types/cli/entry.d.ts +2 -0
  434. package/dist/types/cli/index.d.ts +11 -0
  435. package/dist/types/cli/ssr/index.d.ts +6 -0
  436. package/dist/types/cli/ssr/loadable-bundler-plugin.d.ts +31 -0
  437. package/dist/types/cli/ssr/mode.d.ts +15 -0
  438. package/dist/types/cli/template.d.ts +50 -0
  439. package/dist/types/cli/template.server.d.ts +20 -0
  440. package/dist/types/common.d.ts +8 -0
  441. package/dist/types/core/browser/hydrate.d.ts +5 -0
  442. package/dist/types/core/browser/index.d.ts +9 -0
  443. package/dist/types/core/browser/withCallback.d.ts +5 -0
  444. package/dist/types/core/compat/hooks.d.ts +4 -0
  445. package/dist/types/core/compat/index.d.ts +2 -0
  446. package/dist/types/core/compat/requestContext.d.ts +5 -0
  447. package/dist/types/core/config.d.ts +6 -0
  448. package/dist/types/core/constants.d.ts +6 -0
  449. package/dist/types/core/context/index.d.ts +50 -0
  450. package/dist/types/core/context/monitors/default.d.ts +2 -0
  451. package/dist/types/core/context/monitors/index.d.ts +1 -0
  452. package/dist/types/core/context/monitors/index.server.d.ts +2 -0
  453. package/dist/types/core/context/request/index.d.ts +1 -0
  454. package/dist/types/core/context/request/index.server.d.ts +1 -0
  455. package/dist/types/core/context/response/index.d.ts +4 -0
  456. package/dist/types/core/context/response/index.server.d.ts +7 -0
  457. package/dist/types/core/context/runtime.d.ts +42 -0
  458. package/dist/types/core/context/serverPayload/index.d.ts +4 -0
  459. package/dist/types/core/context/serverPayload/index.server.d.ts +31 -0
  460. package/dist/types/core/index.d.ts +5 -0
  461. package/dist/types/core/plugin/index.d.ts +4 -0
  462. package/dist/types/core/plugin/types.d.ts +10 -0
  463. package/dist/types/core/react/index.d.ts +2 -0
  464. package/dist/types/core/react/wrapper.d.ts +3 -0
  465. package/dist/types/core/server/constants.d.ts +4 -0
  466. package/dist/types/core/server/helmet.d.ts +3 -0
  467. package/dist/types/core/server/index.d.ts +4 -0
  468. package/dist/types/core/server/react/index.d.ts +2 -0
  469. package/dist/types/core/server/react/no-ssr-cache/index.d.ts +2 -0
  470. package/dist/types/core/server/react/nossr/index.d.ts +4 -0
  471. package/dist/types/core/server/requestHandler.d.ts +13 -0
  472. package/dist/types/core/server/server.d.ts +4 -0
  473. package/dist/types/core/server/shared.d.ts +8 -0
  474. package/dist/types/core/server/stream/afterTemplate.d.ts +13 -0
  475. package/dist/types/core/server/stream/beforeTemplate.d.ts +9 -0
  476. package/dist/types/core/server/stream/createReadableStream.d.ts +2 -0
  477. package/dist/types/core/server/stream/createReadableStream.worker.d.ts +2 -0
  478. package/dist/types/core/server/stream/deferredScript.d.ts +15 -0
  479. package/dist/types/core/server/stream/index.d.ts +1 -0
  480. package/dist/types/core/server/stream/shared.d.ts +33 -0
  481. package/dist/types/core/server/stream/template.d.ts +9 -0
  482. package/dist/types/core/server/string/index.d.ts +2 -0
  483. package/dist/types/core/server/string/loadable.d.ts +36 -0
  484. package/dist/types/core/server/string/ssrData.d.ts +20 -0
  485. package/dist/types/core/server/string/types.d.ts +12 -0
  486. package/dist/types/core/server/tracer.d.ts +17 -0
  487. package/dist/types/core/server/utils.d.ts +29 -0
  488. package/dist/types/core/types.d.ts +49 -0
  489. package/dist/types/document/Body.d.ts +2 -0
  490. package/dist/types/document/Comment.d.ts +5 -0
  491. package/dist/types/document/DocumentContext.d.ts +13 -0
  492. package/dist/types/document/DocumentStructureContext.d.ts +12 -0
  493. package/dist/types/document/Head.d.ts +5 -0
  494. package/dist/types/document/Html.d.ts +4 -0
  495. package/dist/types/document/Links.d.ts +2 -0
  496. package/dist/types/document/Root.d.ts +7 -0
  497. package/dist/types/document/Script.d.ts +4 -0
  498. package/dist/types/document/Scripts.d.ts +2 -0
  499. package/dist/types/document/Style.d.ts +5 -0
  500. package/dist/types/document/Title.d.ts +1 -0
  501. package/dist/types/document/cli/index.d.ts +5 -0
  502. package/dist/types/document/constants.d.ts +25 -0
  503. package/dist/types/document/index.d.ts +12 -0
  504. package/dist/types/exports/config-routes.d.ts +9 -0
  505. package/dist/types/exports/head.d.ts +4 -0
  506. package/dist/types/exports/loadable.d.ts +3 -0
  507. package/dist/types/exports/tanstack-router.d.ts +5 -0
  508. package/dist/types/index.d.ts +10 -0
  509. package/dist/types/internal.d.ts +2 -0
  510. package/dist/types/react-server.d.ts +3 -0
  511. package/dist/types/router/cli/code/getClientRoutes/getRoutes.d.ts +8 -0
  512. package/dist/types/router/cli/code/getClientRoutes/index.d.ts +1 -0
  513. package/dist/types/router/cli/code/getClientRoutes/utils.d.ts +4 -0
  514. package/dist/types/router/cli/code/index.d.ts +12 -0
  515. package/dist/types/router/cli/code/inspect.d.ts +22 -0
  516. package/dist/types/router/cli/code/makeLegalIdentifier.d.ts +1 -0
  517. package/dist/types/router/cli/code/nestedRoutes.d.ts +13 -0
  518. package/dist/types/router/cli/code/tanstackTypes.d.ts +10 -0
  519. package/dist/types/router/cli/code/templates.d.ts +28 -0
  520. package/dist/types/router/cli/code/utils.d.ts +12 -0
  521. package/dist/types/router/cli/config-routes/converter.d.ts +15 -0
  522. package/dist/types/router/cli/config-routes/parseRouteConfig.d.ts +32 -0
  523. package/dist/types/router/cli/constants.d.ts +31 -0
  524. package/dist/types/router/cli/entry.d.ts +18 -0
  525. package/dist/types/router/cli/handler.d.ts +28 -0
  526. package/dist/types/router/cli/index.d.ts +5 -0
  527. package/dist/types/router/index.d.ts +1 -0
  528. package/dist/types/router/internal.d.ts +2 -0
  529. package/dist/types/router/runtime/CSSLinks.d.ts +9 -0
  530. package/dist/types/router/runtime/DefaultNotFound.d.ts +2 -0
  531. package/dist/types/router/runtime/DeferredDataScripts.d.ts +2 -0
  532. package/dist/types/router/runtime/DeferredDataScripts.node.d.ts +11 -0
  533. package/dist/types/router/runtime/PrefetchLink.d.ts +27 -0
  534. package/dist/types/router/runtime/constants.d.ts +146 -0
  535. package/dist/types/router/runtime/hooks.d.ts +18 -0
  536. package/dist/types/router/runtime/index.d.ts +7 -0
  537. package/dist/types/router/runtime/internal.d.ts +11 -0
  538. package/dist/types/router/runtime/lifecycle.d.ts +25 -0
  539. package/dist/types/router/runtime/plugin.d.ts +9 -0
  540. package/dist/types/router/runtime/plugin.node.d.ts +7 -0
  541. package/dist/types/router/runtime/routerHelper.d.ts +5 -0
  542. package/dist/types/router/runtime/rsc-router.d.ts +20 -0
  543. package/dist/types/router/runtime/rsc.d.ts +1 -0
  544. package/dist/types/router/runtime/server.d.ts +1 -0
  545. package/dist/types/router/runtime/tanstack/basepathRewrite.d.ts +8 -0
  546. package/dist/types/router/runtime/tanstack/dataMutation.d.ts +29 -0
  547. package/dist/types/router/runtime/tanstack/plugin.d.ts +6 -0
  548. package/dist/types/router/runtime/tanstack/plugin.node.d.ts +6 -0
  549. package/dist/types/router/runtime/tanstack/prefetchLink.d.ts +11 -0
  550. package/dist/types/router/runtime/tanstack/routeTree.d.ts +8 -0
  551. package/dist/types/router/runtime/tanstack/rsc/ClientSlot.d.ts +5 -0
  552. package/dist/types/router/runtime/tanstack/rsc/CompositeComponent.d.ts +3 -0
  553. package/dist/types/router/runtime/tanstack/rsc/ReplayableStream.d.ts +24 -0
  554. package/dist/types/router/runtime/tanstack/rsc/RscNodeRenderer.d.ts +5 -0
  555. package/dist/types/router/runtime/tanstack/rsc/SlotContext.d.ts +11 -0
  556. package/dist/types/router/runtime/tanstack/rsc/client.d.ts +11 -0
  557. package/dist/types/router/runtime/tanstack/rsc/createRscProxy.d.ts +7 -0
  558. package/dist/types/router/runtime/tanstack/rsc/index.d.ts +2 -0
  559. package/dist/types/router/runtime/tanstack/rsc/server.d.ts +14 -0
  560. package/dist/types/router/runtime/tanstack/rsc/slotUsageSanitizer.d.ts +2 -0
  561. package/dist/types/router/runtime/tanstack/rsc/symbols.d.ts +46 -0
  562. package/dist/types/router/runtime/types.d.ts +119 -0
  563. package/dist/types/router/runtime/utils.d.ts +48 -0
  564. package/dist/types/router/runtime/withRouter.d.ts +10 -0
  565. package/dist/types/rsc/client.d.ts +2 -0
  566. package/dist/types/rsc/server.d.ts +1 -0
  567. package/package.json +268 -0
  568. package/rslib.config.mts +19 -0
  569. package/rstest.config.mts +88 -0
  570. package/scripts/gen-static.mts +29 -0
  571. package/static/modern-inline.js +1 -0
  572. package/static/modern-run-router-data-fn.js +1 -0
  573. package/static/modern-run-window-fn.js +1 -0
  574. package/tsconfig.tsgo.json +6 -0
@@ -0,0 +1,116 @@
1
+ import "node:module";
2
+ import { fs } from "@modern-js/utils";
3
+ import path from "path";
4
+ import { FILE_SYSTEM_ROUTES_COMPONENTS_DIR, FILE_SYSTEM_ROUTES_DYNAMIC_REGEXP, FILE_SYSTEM_ROUTES_INDEX } from "../../constants.mjs";
5
+ import { makeLegalIdentifier } from "../makeLegalIdentifier.mjs";
6
+ import { replaceWithAlias } from "../utils.mjs";
7
+ import { debug, getRouteWeight, shouldSkip } from "./utils.mjs";
8
+ const compName = (srcDirectory, filePath)=>{
9
+ const legalCompName = makeLegalIdentifier(path.relative(srcDirectory, filePath));
10
+ return `Comp_${legalCompName}`;
11
+ };
12
+ const layoutNameAbbr = (filePath)=>{
13
+ const prefix = 'L_';
14
+ const dirName = path.dirname(filePath).split('/').pop() || '';
15
+ return `${prefix}${makeLegalIdentifier(dirName)}`;
16
+ };
17
+ const parents = [];
18
+ const recursiveReadDir = ({ dir, routes, basePath = '/', srcDirectory, srcAlias })=>{
19
+ let hasDynamicRoute = false;
20
+ const resetParent = false;
21
+ const parent = parents[parents.length - 1];
22
+ for (const relative of fs.readdirSync(dir)){
23
+ const filePath = path.join(dir, relative);
24
+ if (!shouldSkip(filePath)) {
25
+ const filename = path.basename(filePath, path.extname(filePath));
26
+ const alias = replaceWithAlias(srcDirectory, filePath, srcAlias);
27
+ const componentName = compName(srcDirectory, filePath);
28
+ const dynamicRouteMatched = FILE_SYSTEM_ROUTES_DYNAMIC_REGEXP.exec(filename);
29
+ if (dynamicRouteMatched) if (hasDynamicRoute) throw new Error(`Can't set two dynamic route in one directory: ${dir}`);
30
+ else hasDynamicRoute = true;
31
+ const route = {
32
+ path: `${basePath}${dynamicRouteMatched ? `:${dynamicRouteMatched[1].replace(/\$$/, '?')}${dynamicRouteMatched[2]}` : filename}`,
33
+ _component: alias,
34
+ component: componentName,
35
+ parent,
36
+ type: 'page'
37
+ };
38
+ if (fs.statSync(filePath).isDirectory()) {
39
+ recursiveReadDir({
40
+ dir: filePath,
41
+ routes,
42
+ basePath: `${route.path}/`,
43
+ srcDirectory,
44
+ srcAlias
45
+ });
46
+ continue;
47
+ }
48
+ if (filename === FILE_SYSTEM_ROUTES_INDEX) route.path = '/' === basePath ? basePath : `${basePath.substring(0, basePath.length - 1)}`;
49
+ if ('404' === filename && '/' === basePath) route.path = '*';
50
+ routes.push(route);
51
+ }
52
+ }
53
+ if (resetParent) parents.pop();
54
+ };
55
+ const normalizeNestedRoutes = (nested, internalComponentsDir, internalDirectory, internalDirAlias)=>{
56
+ const flat = (routes)=>routes.reduce((memo, route)=>memo.concat(Array.isArray(route.children) ? flat(route.children) : [
57
+ route
58
+ ]), []);
59
+ const generate = (route)=>{
60
+ const codes = [];
61
+ let lastComponent = route.component;
62
+ const imports = [
63
+ "import React from 'react';",
64
+ `import ${lastComponent} from '${route._component}'`
65
+ ];
66
+ while(route = route.parent){
67
+ const layoutComponent = route.component;
68
+ const layoutComponentAbbr = layoutNameAbbr(route._component);
69
+ imports.push(`import ${layoutComponent} from '${route._component}';`);
70
+ const currentComponent = `${layoutComponentAbbr}_${lastComponent}`;
71
+ codes.push(`const ${currentComponent} = props => <${layoutComponent} Component={${lastComponent}} {...props} />;`);
72
+ lastComponent = currentComponent;
73
+ }
74
+ const file = path.resolve(internalComponentsDir, `${lastComponent}.jsx`);
75
+ fs.outputFileSync(file, `${imports.join('\n')}\n${codes.join('\n')}\nexport default ${lastComponent}`);
76
+ return {
77
+ component: lastComponent,
78
+ _component: replaceWithAlias(internalDirectory, file, internalDirAlias)
79
+ };
80
+ };
81
+ const normalized = flat(nested).map((route)=>route.parent ? {
82
+ ...route,
83
+ ...generate(route),
84
+ parent: void 0
85
+ } : {
86
+ ...route,
87
+ parent: void 0
88
+ });
89
+ return normalized;
90
+ };
91
+ const getClientRoutes = ({ entrypoint, srcDirectory, srcAlias, internalDirectory, internalDirAlias })=>{
92
+ const { entryName, pageRoutesEntry } = entrypoint;
93
+ if (!pageRoutesEntry) return [];
94
+ if (!fs.existsSync(pageRoutesEntry)) throw new Error(`generate file system routes error, ${pageRoutesEntry} directory not found.`);
95
+ if (!(fs.existsSync(pageRoutesEntry) && fs.statSync(pageRoutesEntry).isDirectory())) throw new Error(`generate file system routes error, ${pageRoutesEntry} should be directory.`);
96
+ let routes = [];
97
+ recursiveReadDir({
98
+ dir: pageRoutesEntry,
99
+ routes,
100
+ basePath: '/',
101
+ srcDirectory,
102
+ srcAlias
103
+ });
104
+ const internalComponentsDir = path.resolve(internalDirectory, `${entryName}/${FILE_SYSTEM_ROUTES_COMPONENTS_DIR}`);
105
+ fs.emptyDirSync(internalComponentsDir);
106
+ routes = normalizeNestedRoutes(routes, internalComponentsDir, internalDirectory, internalDirAlias);
107
+ parents.length = 0;
108
+ routes.sort((a, b)=>{
109
+ const delta = getRouteWeight(a.path) - getRouteWeight(b.path);
110
+ if (0 === delta) return a.path.length - b.path.length;
111
+ return delta;
112
+ });
113
+ debug("fileSystem routes: %o", routes);
114
+ return routes;
115
+ };
116
+ export { getClientRoutes };
@@ -0,0 +1,2 @@
1
+ import "node:module";
2
+ export { getClientRoutes } from "./getRoutes.mjs";
@@ -0,0 +1,13 @@
1
+ import "node:module";
2
+ import { JS_EXTENSIONS, createDebugger, fs } from "@modern-js/utils";
3
+ import path from "path";
4
+ import { FILE_SYSTEM_ROUTES_IGNORED_REGEX } from "../../constants.mjs";
5
+ const debug = createDebugger('get-client-routes');
6
+ const getRouteWeight = (route)=>'*' === route ? 999 : route.split(':').length - 1;
7
+ const shouldSkip = (file)=>{
8
+ if (fs.statSync(file).isDirectory()) return false;
9
+ const ext = path.extname(file);
10
+ if (FILE_SYSTEM_ROUTES_IGNORED_REGEX.test(file) || !JS_EXTENSIONS.includes(ext)) return true;
11
+ return false;
12
+ };
13
+ export { debug, getRouteWeight, shouldSkip };
@@ -0,0 +1,186 @@
1
+ import "node:module";
2
+ import { filterRoutesForServer, filterRoutesLoader, fs, getEntryOptions, isUseRsc, isUseSSRBundle, logger, markRoutes } from "@modern-js/utils";
3
+ import { cloneDeep } from "@modern-js/utils/lodash";
4
+ import path from "path";
5
+ import { ENTRY_POINT_RUNTIME_GLOBAL_CONTEXT_FILE_NAME } from "../../../cli/constants.mjs";
6
+ import { resolveSSRMode } from "../../../cli/ssr/mode.mjs";
7
+ import { FILE_SYSTEM_ROUTES_FILE_NAME } from "../constants.mjs";
8
+ import { walk } from "./nestedRoutes.mjs";
9
+ import { generateTanstackRouterTypesSourceForEntry, isTanstackRouterFrameworkEnabled } from "./tanstackTypes.mjs";
10
+ import { getServerCombinedModuleFile, getServerLoadersFile } from "./utils.mjs";
11
+ import * as __rspack_external__templates_mjs_4da4c6c8 from "./templates.mjs";
12
+ async function generateRoutesForEntry(entrypoint, appContext) {
13
+ const routes = [];
14
+ if (entrypoint.nestedRoutesEntry) {
15
+ const nestedRoutes = await walk({
16
+ dirname: entrypoint.nestedRoutesEntry,
17
+ rootDir: entrypoint.nestedRoutesEntry,
18
+ alias: {
19
+ name: appContext.internalSrcAlias,
20
+ basename: appContext.srcDirectory
21
+ },
22
+ entryName: entrypoint.entryName,
23
+ isMainEntry: entrypoint.isMainEntry
24
+ });
25
+ if (nestedRoutes) if (Array.isArray(nestedRoutes)) routes.push(...nestedRoutes);
26
+ else routes.push(nestedRoutes);
27
+ }
28
+ const fileRoutes = routes.length > 0 ? Array.isArray(routes) ? routes : [
29
+ routes
30
+ ] : [];
31
+ const { discoverAndParseConfigRoutes } = await import("../config-routes/parseRouteConfig.mjs");
32
+ const configRoutesData = await discoverAndParseConfigRoutes(entrypoint, appContext, fileRoutes);
33
+ if (configRoutesData) {
34
+ const { processConfigRoutes } = await import("../config-routes/converter.mjs");
35
+ const processedConfigRoutes = await processConfigRoutes(configRoutesData.routes, entrypoint.entryName, entrypoint.isMainEntry || false, path.dirname(configRoutesData.filePath), {
36
+ name: appContext.internalSrcAlias,
37
+ basename: appContext.srcDirectory
38
+ });
39
+ routes.length = 0;
40
+ routes.push(...processedConfigRoutes);
41
+ }
42
+ return routes;
43
+ }
44
+ const generateCode = async (appContext, config, entrypoints, api, options)=>{
45
+ const { internalDirectory, srcDirectory, internalSrcAlias, packageName } = appContext;
46
+ const hooks = api.getHooks();
47
+ const enableTanstackTypes = options?.enableTanstackTypes ?? await isTanstackRouterFrameworkEnabled(appContext);
48
+ const generatedRoutesByEntry = {};
49
+ await Promise.all(entrypoints.map(generateEntryCode));
50
+ if (enableTanstackTypes) {
51
+ const allEntries = Array.from(new Set(entrypoints.map((e)=>e.entryName).filter(Boolean)));
52
+ const mainEntry = entrypoints.find((e)=>e.isMainEntry)?.entryName;
53
+ const registerEntries = allEntries.sort((a, b)=>{
54
+ if (mainEntry && a === mainEntry) return -1;
55
+ if (mainEntry && b === mainEntry) return 1;
56
+ return a.localeCompare(b);
57
+ });
58
+ if (registerEntries.length > 0) {
59
+ const registerDtsPath = path.join(srcDirectory, 'modern-tanstack', 'register.gen.d.ts');
60
+ const importStatements = registerEntries.map((entryName, index)=>`import type { router as router${index} } from './${entryName}/router.gen';`).join('\n');
61
+ const routerUnionType = registerEntries.map((_, index)=>`typeof router${index}`).join(' | ');
62
+ const registerContent = `// This file is auto-generated by Modern.js. Do not edit manually.
63
+
64
+ ${importStatements}
65
+
66
+ declare module '@modern-js/runtime/tanstack-router' {
67
+ interface Register {
68
+ router: ${routerUnionType};
69
+ }
70
+ }
71
+ `;
72
+ try {
73
+ const prev = await fs.pathExists(registerDtsPath) ? await fs.readFile(registerDtsPath, 'utf-8') : null;
74
+ if (prev !== registerContent) await fs.outputFile(registerDtsPath, registerContent, 'utf-8');
75
+ } catch {
76
+ await fs.outputFile(registerDtsPath, registerContent, 'utf-8');
77
+ }
78
+ }
79
+ }
80
+ async function generateEntryCode(entrypoint) {
81
+ const { entryName, isMainEntry, isAutoMount, pageRoutesEntry, nestedRoutesEntry } = entrypoint;
82
+ const { metaName } = api.getAppContext();
83
+ if (isAutoMount) {
84
+ const config = api.getNormalizedConfig();
85
+ getEntryOptions(entryName, isMainEntry, config.server.ssr, config.server.ssrByEntries, packageName);
86
+ const ssrMode = resolveSSRMode({
87
+ entry: entrypoint.entryName,
88
+ config,
89
+ appDirectory: appContext.appDirectory,
90
+ nestedRoutesEntry: entrypoint.nestedRoutesEntry
91
+ });
92
+ if (!nestedRoutesEntry && ssrMode && 'string' !== ssrMode && !isUseRsc(config)) {
93
+ 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.');
94
+ process.exit(1);
95
+ }
96
+ if (pageRoutesEntry || nestedRoutesEntry) {
97
+ const initialRoutes = [];
98
+ const generatedRoutes = await generateRoutesForEntry(entrypoint, appContext);
99
+ const { normalizeRoutes: removeComponentFields } = await import("../config-routes/converter.mjs");
100
+ const normalizedRoutes = removeComponentFields(generatedRoutes);
101
+ for (const route of normalizedRoutes)initialRoutes.unshift(route);
102
+ const ssrByRouteIds = config.server.ssrByRouteIds || [];
103
+ const clonedRoutes = cloneDeep(initialRoutes);
104
+ const markedRoutes = ssrByRouteIds.length > 0 ? markRoutes(clonedRoutes, ssrByRouteIds) : initialRoutes;
105
+ const { routes } = await hooks.modifyFileSystemRoutes.call({
106
+ entrypoint,
107
+ routes: markedRoutes
108
+ });
109
+ generatedRoutesByEntry[entryName] = routes;
110
+ if ('stream' === ssrMode) {
111
+ const hasPageRoute = routes.some((route)=>'type' in route && 'page' === route.type);
112
+ if (hasPageRoute) {
113
+ logger.error('Streaming ssr is not supported when pages dir exists');
114
+ process.exit(1);
115
+ }
116
+ }
117
+ const { code } = await hooks.onBeforeGenerateRoutes.call({
118
+ entrypoint,
119
+ code: await __rspack_external__templates_mjs_4da4c6c8.fileSystemRoutes({
120
+ metaName,
121
+ routes: routes,
122
+ ssrMode: isUseRsc(config) ? 'stream' : ssrMode,
123
+ nestedRoutesEntry: entrypoint.nestedRoutesEntry,
124
+ entryName: entrypoint.entryName,
125
+ internalDirectory,
126
+ splitRouteChunks: config?.output?.splitRouteChunks,
127
+ isRscClientBundle: isUseRsc(config),
128
+ srcDirectory,
129
+ internalSrcAlias: appContext.internalSrcAlias
130
+ })
131
+ });
132
+ if (entrypoint.nestedRoutesEntry && (isUseSSRBundle(config) || isUseRsc(config))) {
133
+ const routesServerFile = getServerLoadersFile(internalDirectory, entryName);
134
+ const filtedRoutesForServer = filterRoutesForServer(routes);
135
+ const routesForServerLoaderMatches = filterRoutesLoader(routes);
136
+ const code = __rspack_external__templates_mjs_4da4c6c8.routesForServer({
137
+ routesForServerLoaderMatches
138
+ });
139
+ await fs.ensureFile(routesServerFile);
140
+ await fs.writeFile(routesServerFile, code);
141
+ const serverRoutesCode = await __rspack_external__templates_mjs_4da4c6c8.fileSystemRoutes({
142
+ metaName,
143
+ routes: filtedRoutesForServer,
144
+ ssrMode,
145
+ nestedRoutesEntry: entrypoint.nestedRoutesEntry,
146
+ entryName: entrypoint.entryName,
147
+ internalDirectory,
148
+ splitRouteChunks: config?.output?.splitRouteChunks,
149
+ isRscClientBundle: false,
150
+ srcDirectory,
151
+ internalSrcAlias: appContext.internalSrcAlias
152
+ });
153
+ await fs.outputFile(path.resolve(internalDirectory, `./${entryName}/routes.server.js`), serverRoutesCode, 'utf8');
154
+ }
155
+ const serverLoaderCombined = __rspack_external__templates_mjs_4da4c6c8.ssrLoaderCombinedModule(entrypoints, entrypoint, config, appContext);
156
+ if (serverLoaderCombined) {
157
+ const serverLoaderFile = getServerCombinedModuleFile(internalDirectory, entryName);
158
+ await fs.outputFile(serverLoaderFile, serverLoaderCombined);
159
+ }
160
+ await fs.outputFile(path.resolve(internalDirectory, `./${entryName}/${FILE_SYSTEM_ROUTES_FILE_NAME}`), code, 'utf8');
161
+ if (enableTanstackTypes) {
162
+ const { routerGenTs } = await generateTanstackRouterTypesSourceForEntry({
163
+ appContext,
164
+ entryName,
165
+ routes: routes
166
+ });
167
+ const outPath = path.join(srcDirectory, 'modern-tanstack', entryName, 'router.gen.ts');
168
+ try {
169
+ const prev = await fs.pathExists(outPath) ? await fs.readFile(outPath, 'utf-8') : null;
170
+ if (prev !== routerGenTs) await fs.outputFile(outPath, routerGenTs, 'utf-8');
171
+ } catch {
172
+ await fs.outputFile(outPath, routerGenTs, 'utf-8');
173
+ }
174
+ }
175
+ }
176
+ }
177
+ }
178
+ return generatedRoutesByEntry;
179
+ };
180
+ function generatorRegisterCode(internalDirectory, entryName, code) {
181
+ fs.outputFileSync(path.resolve(internalDirectory, `./${entryName}/${ENTRY_POINT_RUNTIME_GLOBAL_CONTEXT_FILE_NAME}.js`), code, 'utf8');
182
+ }
183
+ function generatorServerRegisterCode(internalDirectory, entryName, code) {
184
+ fs.outputFileSync(path.resolve(internalDirectory, `./${entryName}/${ENTRY_POINT_RUNTIME_GLOBAL_CONTEXT_FILE_NAME}.server.js`), code, 'utf8');
185
+ }
186
+ export { generateCode, generateRoutesForEntry, generatorRegisterCode, generatorServerRegisterCode };
@@ -0,0 +1,96 @@
1
+ import "node:module";
2
+ import { fs } from "@modern-js/utils";
3
+ import { cloneDeep } from "@modern-js/utils/lodash";
4
+ import path from "path";
5
+ import { modifyEntrypoints } from "../entry.mjs";
6
+ import { generateRoutesForEntry } from "./index.mjs";
7
+ function convertRouteToInspectFormat(route) {
8
+ const inspectRoute = {
9
+ path: route.path ?? void 0,
10
+ component: route._component || ''
11
+ };
12
+ if (route.path?.includes(':')) {
13
+ const params = route.path.match(/:[^/]+/g)?.map((param)=>param.slice(1)) || [];
14
+ inspectRoute.params = params;
15
+ }
16
+ if (route.data) inspectRoute.data = route.data;
17
+ if (route.clientData) inspectRoute.clientData = route.clientData;
18
+ if (route.error) inspectRoute.error = route.error;
19
+ if (route.loading) inspectRoute.loading = route.loading;
20
+ if (route.config) inspectRoute.config = 'string' == typeof route.config ? route.config : String(route.config);
21
+ if ('children' in route && route.children && route.children.length > 0) inspectRoute.children = route.children.filter((child)=>{
22
+ const hasComponent = Boolean(child._component);
23
+ const hasChildren = 'children' in child && child.children && child.children.length > 0;
24
+ const hasPath = void 0 !== child.path;
25
+ return hasComponent || hasChildren || hasPath;
26
+ }).map((child)=>convertRouteToInspectFormat(child));
27
+ return inspectRoute;
28
+ }
29
+ async function generateInspectReportForEntry(entrypoint, appContext, config, api) {
30
+ const { entryName } = entrypoint;
31
+ console.log(`🔍 Analyzing routes for entry "${entryName}"...`);
32
+ const routes = await generateRoutesForEntry(entrypoint, appContext);
33
+ if (0 === routes.length) {
34
+ console.log(`⚠️ No routes found for entry "${entryName}"`);
35
+ return {
36
+ entryName,
37
+ routes: []
38
+ };
39
+ }
40
+ const hooks = api.getHooks();
41
+ const clonedRoutes = cloneDeep(routes);
42
+ const { routes: finalRoutes } = await hooks.modifyFileSystemRoutes.call({
43
+ entrypoint,
44
+ routes: clonedRoutes
45
+ });
46
+ const inspectRoutes = finalRoutes.filter((route)=>{
47
+ const hasComponent = Boolean(route._component);
48
+ const hasChildren = 'children' in route && route.children && route.children.length > 0;
49
+ const hasPath = void 0 !== route.path;
50
+ return hasComponent || hasChildren || hasPath;
51
+ }).map((route)=>convertRouteToInspectFormat(route));
52
+ console.log(`✅ Found ${inspectRoutes.length} routes for entry "${entryName}"`);
53
+ return {
54
+ entryName,
55
+ routes: inspectRoutes
56
+ };
57
+ }
58
+ async function generateRoutesInspectReport(api) {
59
+ try {
60
+ console.log('🚀 Start generating route inspection report...\n');
61
+ const appContext = api.getAppContext();
62
+ const config = api.getNormalizedConfig();
63
+ const { entrypoints, distDirectory } = appContext;
64
+ const modifiedEntrypoints = modifyEntrypoints(entrypoints);
65
+ const routesEntrypoints = modifiedEntrypoints.filter((entrypoint)=>entrypoint.isAutoMount);
66
+ if (0 === routesEntrypoints.length) return void console.log('⚠️ No entrypoints with routes (file-system or config-based) were found');
67
+ console.log(`📁 Found ${routesEntrypoints.length} entrypoints with routes`);
68
+ const reports = [];
69
+ for (const entrypoint of routesEntrypoints)if (entrypoint.nestedRoutesEntry) {
70
+ const report = await generateInspectReportForEntry(entrypoint, appContext, config, api);
71
+ reports.push(report);
72
+ }
73
+ let finalReport;
74
+ if (1 === reports.length) finalReport = {
75
+ routes: reports[0].routes
76
+ };
77
+ else {
78
+ finalReport = {};
79
+ for (const report of reports)finalReport[report.entryName] = {
80
+ routes: report.routes
81
+ };
82
+ }
83
+ await fs.ensureDir(distDirectory);
84
+ const reportPath = path.join(distDirectory, 'routes-inspect.json');
85
+ await fs.writeJSON(reportPath, finalReport, {
86
+ spaces: 2
87
+ });
88
+ console.log(`\n✨ Route inspection report has been generated: ${reportPath}`);
89
+ const totalRoutes = reports.reduce((sum, report)=>sum + report.routes.length, 0);
90
+ console.log(`📊 Found a total of ${totalRoutes} routes across ${reports.length} entrypoints`);
91
+ } catch (error) {
92
+ console.error('❌ Failed to generate route inspection report:', error);
93
+ process.exit(1);
94
+ }
95
+ }
96
+ export { generateRoutesInspectReport };
@@ -0,0 +1,10 @@
1
+ import "node:module";
2
+ 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';
3
+ 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';
4
+ const forbidList = new Set(`${reservedWords} ${builtins}`.split(' '));
5
+ function makeLegalIdentifier(str) {
6
+ const identifier = str.replace(/-(\w)/g, (_, letter)=>letter.toUpperCase()).replace(/[^$_a-zA-Z0-9]/g, '_');
7
+ if (/\d/.test(identifier[0]) || forbidList.has(identifier)) return `_${identifier}`;
8
+ return identifier || '_';
9
+ }
10
+ export { makeLegalIdentifier };
@@ -0,0 +1,194 @@
1
+ import "node:module";
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
+ import * as __rspack_external_path from "path";
6
+ const conventionNames = Object.values(NESTED_ROUTE);
7
+ const replaceDynamicPath = (routePath)=>routePath.replace(/\[(.*?)\]/g, ':$1');
8
+ const getRouteId = (componentPath, routesDir, entryName, isMainEntry)=>{
9
+ const relativePath = normalizeToPosixPath(__rspack_external_path.relative(routesDir, componentPath));
10
+ const pathWithoutExt = getPathWithoutExt(relativePath);
11
+ let id = "";
12
+ id = isMainEntry ? pathWithoutExt : `${entryName}_${pathWithoutExt}`;
13
+ return id.replace(/\[(.*?)\]/g, '($1)');
14
+ };
15
+ const createIndexRoute = (routeInfo, rootDir, filename, entryName, isMainEntry)=>createRoute({
16
+ ...routeInfo,
17
+ index: true,
18
+ children: void 0,
19
+ routeType: 'page'
20
+ }, rootDir, filename, entryName, isMainEntry);
21
+ const createRoute = (routeInfo, rootDir, filename, entryName, isMainEntry)=>{
22
+ const id = getRouteId(filename, rootDir, entryName, isMainEntry);
23
+ const hasChildren = routeInfo.children && routeInfo.children.length > 0;
24
+ return {
25
+ ...routeInfo,
26
+ id,
27
+ type: 'nested',
28
+ routeType: hasChildren ? 'layout' : 'page',
29
+ origin: 'file-system',
30
+ component: routeInfo._component ? filename : void 0
31
+ };
32
+ };
33
+ const optimizeRoute = (routeTree)=>{
34
+ if (!routeTree.children || 0 === routeTree.children.length) return [
35
+ routeTree
36
+ ];
37
+ const { children } = routeTree;
38
+ if (routeTree._component || routeTree.error || routeTree.loading || routeTree.config || routeTree.clientData) {
39
+ const optimizedChildren = routeTree.children.flatMap(optimizeRoute);
40
+ return [
41
+ {
42
+ ...routeTree,
43
+ children: optimizedChildren
44
+ }
45
+ ];
46
+ }
47
+ {
48
+ const newRoutes = children.map((child)=>{
49
+ const routePath = routeTree.path ? `${routeTree.path}${child.path ? `/${child.path}` : ''}` : child.path || '';
50
+ const newRoute = {
51
+ ...child,
52
+ path: routePath.replace(/\/\//g, '/'),
53
+ component: child.component || void 0,
54
+ origin: 'file-system'
55
+ };
56
+ if (routePath.length > 0) delete newRoute.index;
57
+ else delete newRoute.path;
58
+ return newRoute;
59
+ });
60
+ return Array.from(new Set(newRoutes)).flatMap(optimizeRoute);
61
+ }
62
+ };
63
+ const walk = async (options)=>{
64
+ const { dirname, rootDir, alias, entryName, isMainEntry } = options;
65
+ if (!await fs.pathExists(dirname)) return null;
66
+ const isDirectory = (await fs.stat(dirname)).isDirectory();
67
+ if (!isDirectory) return null;
68
+ const relativeDir = __rspack_external_path.relative(rootDir, dirname);
69
+ const pathSegments = relativeDir.split(__rspack_external_path.sep);
70
+ const lastSegment = pathSegments[pathSegments.length - 1];
71
+ const isRoot = '' === lastSegment;
72
+ const isPathlessLayout = lastSegment.startsWith('__');
73
+ const isWithoutLayoutPath = lastSegment.includes('.');
74
+ let routePath = isRoot || isPathlessLayout ? '/' : `${lastSegment}`;
75
+ if (isWithoutLayoutPath) routePath = lastSegment.split('.').join('/');
76
+ routePath = replaceDynamicPath(routePath);
77
+ const route = {
78
+ path: routePath?.replace(/\$$/, '?'),
79
+ children: [],
80
+ isRoot,
81
+ origin: 'file-system'
82
+ };
83
+ let pageLoaderFile = '';
84
+ let pageRoute = null;
85
+ let pageConfigFile = '';
86
+ let pageClientData = '';
87
+ let pageData = '';
88
+ let pageAction = '';
89
+ let splatLoaderFile = '';
90
+ let splatRoute = null;
91
+ let splatConfigFile = '';
92
+ let splatClientData = '';
93
+ let splatData = '';
94
+ let splatAction = '';
95
+ const items = await fs.readdir(dirname);
96
+ for (const item of items){
97
+ const itemPath = __rspack_external_path.join(dirname, item);
98
+ const itemPathWithAlias = alias ? getPathWithoutExt(replaceWithAlias(alias.basename, itemPath, alias.name)) : getPathWithoutExt(itemPath);
99
+ const extname = __rspack_external_path.extname(item);
100
+ const itemWithoutExt = item.slice(0, -extname.length);
101
+ const isDirectory = (await fs.stat(itemPath)).isDirectory();
102
+ if (isDirectory) {
103
+ const childRoute = await walk({
104
+ dirname: itemPath,
105
+ rootDir,
106
+ alias,
107
+ entryName,
108
+ isMainEntry
109
+ });
110
+ if (childRoute && !Array.isArray(childRoute)) route.children?.push(childRoute);
111
+ }
112
+ if (!extname || JS_EXTENSIONS.includes(extname) && conventionNames.includes(itemWithoutExt)) {
113
+ if (itemWithoutExt === NESTED_ROUTE.LAYOUT_LOADER_FILE) {
114
+ if (!route.loader) route.loader = itemPathWithAlias;
115
+ }
116
+ if (itemWithoutExt === NESTED_ROUTE.LAYOUT_CLIENT_LOADER) route.clientData = itemPathWithAlias;
117
+ if (itemWithoutExt === NESTED_ROUTE.LAYOUT_DATA_FILE) {
118
+ route.data = itemPathWithAlias;
119
+ if (await hasAction(itemPath)) route.action = itemPathWithAlias;
120
+ }
121
+ if (itemWithoutExt === NESTED_ROUTE.LAYOUT_CONFIG_FILE) {
122
+ if (!route.config) route.config = itemPathWithAlias;
123
+ }
124
+ if (itemWithoutExt === NESTED_ROUTE.LAYOUT_FILE) route._component = itemPathWithAlias;
125
+ if (itemWithoutExt === NESTED_ROUTE.PAGE_LOADER_FILE) pageLoaderFile = itemPathWithAlias;
126
+ if (itemWithoutExt === NESTED_ROUTE.PAGE_CLIENT_LOADER) pageClientData = itemPathWithAlias;
127
+ if (itemWithoutExt === NESTED_ROUTE.PAGE_DATA_FILE) {
128
+ pageData = itemPathWithAlias;
129
+ if (await hasAction(itemPath)) pageAction = itemPathWithAlias;
130
+ }
131
+ if (itemWithoutExt === NESTED_ROUTE.PAGE_CONFIG_FILE) pageConfigFile = itemPathWithAlias;
132
+ if (itemWithoutExt === NESTED_ROUTE.PAGE_FILE) {
133
+ pageRoute = createIndexRoute({
134
+ _component: itemPathWithAlias
135
+ }, rootDir, itemPath, entryName, isMainEntry);
136
+ if (pageLoaderFile) pageRoute.loader = pageLoaderFile;
137
+ if (pageConfigFile) pageRoute.config = pageConfigFile;
138
+ if (pageData) pageRoute.data = pageData;
139
+ if (pageClientData) pageRoute.clientData = pageClientData;
140
+ if (pageAction) pageRoute.action = pageAction;
141
+ route.children?.unshift(pageRoute);
142
+ }
143
+ if (itemWithoutExt === NESTED_ROUTE.SPLATE_LOADER_FILE) splatLoaderFile = itemPathWithAlias;
144
+ if (itemWithoutExt === NESTED_ROUTE.SPLATE_CLIENT_DATA) splatClientData = itemPathWithAlias;
145
+ if (itemWithoutExt === NESTED_ROUTE.SPLATE_CONFIG_FILE) {
146
+ if (!route.config) splatConfigFile = alias ? replaceWithAlias(alias.basename, itemPath, alias.name) : getPathWithoutExt(itemPath);
147
+ }
148
+ if (itemWithoutExt === NESTED_ROUTE.SPLATE_DATA_FILE) {
149
+ splatData = itemPathWithAlias;
150
+ if (await hasAction(itemPath)) splatAction = itemPathWithAlias;
151
+ }
152
+ if (itemWithoutExt === NESTED_ROUTE.SPLATE_FILE) {
153
+ splatRoute = createRoute({
154
+ _component: itemPathWithAlias,
155
+ path: '*',
156
+ origin: 'file-system'
157
+ }, rootDir, itemPath, entryName, isMainEntry);
158
+ if (splatLoaderFile) splatRoute.loader = splatLoaderFile;
159
+ if (splatClientData) splatRoute.clientData = splatClientData;
160
+ if (splatData) splatRoute.data = splatData;
161
+ if (splatConfigFile) splatRoute.config = splatConfigFile;
162
+ if (splatAction) splatRoute.action = splatAction;
163
+ route.children?.push(splatRoute);
164
+ }
165
+ if (itemWithoutExt === NESTED_ROUTE.LOADING_FILE) route.loading = itemPathWithAlias;
166
+ if (itemWithoutExt === NESTED_ROUTE.ERROR_FILE) route.error = itemPathWithAlias;
167
+ }
168
+ }
169
+ let finalRoute = createRoute({
170
+ ...route,
171
+ origin: 'file-system'
172
+ }, rootDir, __rspack_external_path.join(dirname, `${NESTED_ROUTE.LAYOUT_FILE}.ts`), entryName, isMainEntry);
173
+ if (isPathlessLayout) delete finalRoute.path;
174
+ const childRoutes = finalRoute.children = finalRoute.children?.filter((childRoute)=>childRoute);
175
+ if (childRoutes && 0 === childRoutes.length && !finalRoute.index && !finalRoute._component) return null;
176
+ if (childRoutes && 1 === childRoutes.length && !finalRoute._component) {
177
+ const childRoute = childRoutes[0];
178
+ if ('*' === childRoute.path) {
179
+ const path = `${finalRoute.path || ''}/${childRoute.path || ''}`;
180
+ finalRoute = {
181
+ ...childRoute,
182
+ path,
183
+ component: childRoute.component || void 0
184
+ };
185
+ }
186
+ }
187
+ if (isRoot && !finalRoute._component) throw new Error('The root layout component is required, make sure the routes/layout.tsx file exists.');
188
+ if (isRoot) {
189
+ const optimizedRoutes = optimizeRoute(finalRoute);
190
+ return optimizedRoutes;
191
+ }
192
+ return finalRoute;
193
+ };
194
+ export { getRouteId, optimizeRoute, walk };