@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,351 @@
1
+ import { createDebugger, findExists, fs, logger } from "@modern-js/utils";
2
+ import { decodeHTML } from "entities";
3
+ import module_0, { builtinModules } from "module";
4
+ import path from "path";
5
+ import { BODY_PARTICALS_SEPARATOR, DOCUMENT_CHUNKSMAP_PLACEHOLDER, DOCUMENT_COMMENT_PLACEHOLDER_END, DOCUMENT_COMMENT_PLACEHOLDER_START, DOCUMENT_FILE_NAME, DOCUMENT_LINKS_PLACEHOLDER, DOCUMENT_META_PLACEHOLDER, DOCUMENT_SCRIPTS_PLACEHOLDER, DOCUMENT_SCRIPT_ATTRIBUTES_END, DOCUMENT_SCRIPT_ATTRIBUTES_START, DOCUMENT_SCRIPT_PLACEHOLDER_END, DOCUMENT_SCRIPT_PLACEHOLDER_START, DOCUMENT_SSRDATASCRIPT_PLACEHOLDER, DOCUMENT_SSR_PLACEHOLDER, DOCUMENT_STYLE_PLACEHOLDER_END, DOCUMENT_STYLE_PLACEHOLDER_START, DOCUMENT_TITLE_PLACEHOLDER, DOC_EXT, HEAD_PARTICALS_SEPARATOR, HTML_SEPARATOR, PLACEHOLDER_REPLACER_MAP, TOP_PARTICALS_SEPARATOR } from "../constants.mjs";
6
+ const debug = createDebugger('document');
7
+ const entryName2DocCode = new Map();
8
+ const CONSTANTS = {
9
+ GLOBAL_DOC_RENDERERS: '__MODERN_DOC_RENDERERS__',
10
+ DOCUMENT_OUTPUT_DIR: 'document',
11
+ TEMP_ENTRY_PREFIX: '_entry_',
12
+ HTML_OUTPUT_PREFIX: '_',
13
+ HTML_OUTPUT_SUFFIX: '.html.js',
14
+ CHILD_COMPILER_PREFIX: 'modernjs-document-',
15
+ COMMONJS_EXTERNAL_PREFIX: 'commonjs ',
16
+ NODE_PREFIX: 'node:'
17
+ };
18
+ const EXTERNAL_MAPPINGS = {
19
+ react: 'react',
20
+ 'react/jsx-runtime': 'react/jsx-runtime',
21
+ 'react/jsx-dev-runtime': 'react/jsx-dev-runtime',
22
+ 'react-dom/server': 'react-dom/server'
23
+ };
24
+ const getGlobalDocRenderers = ()=>{
25
+ const g = globalThis;
26
+ g[CONSTANTS.GLOBAL_DOC_RENDERERS] = g[CONSTANTS.GLOBAL_DOC_RENDERERS] || {};
27
+ return g[CONSTANTS.GLOBAL_DOC_RENDERERS];
28
+ };
29
+ const clearGlobalDocRenderer = (entryName)=>{
30
+ const renderers = getGlobalDocRenderers();
31
+ if (renderers[entryName]) delete renderers[entryName];
32
+ };
33
+ const decodeHtmlEntities = (input)=>decodeHTML(input);
34
+ const isWindowsAbs = (req)=>/^[a-zA-Z]:[\\/]/.test(req);
35
+ const isRelativeOrAbs = (req)=>req.startsWith('.') || req.startsWith('/') || isWindowsAbs(req);
36
+ const isAsset = (req)=>/\.(css|less|scss|sass|styl|png|jpe?g|gif|svg|ico|woff2?|ttf|eot)(?:[?#].*)?$/.test(req);
37
+ const processScriptPlaceholders = (html, nonce)=>{
38
+ if (!html.includes(DOCUMENT_SCRIPT_PLACEHOLDER_START) || !html.includes(DOCUMENT_SCRIPT_PLACEHOLDER_END)) return html;
39
+ const nonceAttr = nonce ? `nonce="${nonce}"` : '';
40
+ return html.replace(new RegExp(`${DOCUMENT_SCRIPT_PLACEHOLDER_START}${DOCUMENT_SCRIPT_ATTRIBUTES_START}([\\s\\S]*?)${DOCUMENT_SCRIPT_ATTRIBUTES_END}([\\s\\S]*?)${DOCUMENT_SCRIPT_PLACEHOLDER_END}`, 'g'), (_scriptStr, $1, $2)=>`<script ${decodeURIComponent($1)} ${nonceAttr}>${decodeHtmlEntities(decodeURIComponent($2))}</script>`);
41
+ };
42
+ const processStylePlaceholders = (html)=>{
43
+ if (!html.includes(DOCUMENT_STYLE_PLACEHOLDER_START) || !html.includes(DOCUMENT_STYLE_PLACEHOLDER_END)) return html;
44
+ return html.replace(new RegExp(`${DOCUMENT_STYLE_PLACEHOLDER_START}([\\s\\S]*?)${DOCUMENT_STYLE_PLACEHOLDER_END}`, 'g'), (_styleStr, $1)=>`<style>${decodeHtmlEntities(decodeURIComponent($1))}</style>`);
45
+ };
46
+ const processCommentPlaceholders = (html)=>{
47
+ if (!html.includes(DOCUMENT_COMMENT_PLACEHOLDER_START) || !html.includes(DOCUMENT_COMMENT_PLACEHOLDER_END)) return html;
48
+ return html.replace(new RegExp(`${DOCUMENT_COMMENT_PLACEHOLDER_START}([\\s\\S]*?)${DOCUMENT_COMMENT_PLACEHOLDER_END}`, 'g'), (_scriptStr, $1)=>`${decodeHtmlEntities(decodeURIComponent($1))}`);
49
+ };
50
+ const requireFromString = (code, filename)=>{
51
+ const m = new module_0.Module(filename, module.parent);
52
+ m.filename = filename;
53
+ m.paths = module_0.Module._nodeModulePaths(path.dirname(filename));
54
+ m._compile(code, filename);
55
+ return m.exports;
56
+ };
57
+ const getDocumentByEntryName = function(entrypoints, entryName, fallbackDir) {
58
+ const entryDir = entrypoints.find((item)=>item.entryName === entryName)?.absoluteEntryDir;
59
+ const entryDirs = DOC_EXT.map((item)=>`${entryDir}${path.sep}${DOCUMENT_FILE_NAME}.${item}`);
60
+ const fallbackDirs = fallbackDir ? DOC_EXT.map((item)=>[
61
+ fallbackDir,
62
+ 'src',
63
+ `${DOCUMENT_FILE_NAME}.${item}`
64
+ ].join(path.sep)) : [];
65
+ const docFile = findExists([
66
+ ...entryDirs,
67
+ ...fallbackDirs
68
+ ]);
69
+ return docFile || void 0;
70
+ };
71
+ const createExternalHandler = ()=>({ request })=>{
72
+ const req = request || '';
73
+ if (isAsset(req)) return;
74
+ if (req.startsWith(CONSTANTS.NODE_PREFIX)) return `${CONSTANTS.COMMONJS_EXTERNAL_PREFIX}${req}`;
75
+ if (builtinModules.includes(req)) return `${CONSTANTS.COMMONJS_EXTERNAL_PREFIX}${req}`;
76
+ isRelativeOrAbs(req);
77
+ };
78
+ const configureChildCompiler = (child, compiler, appDirectory)=>{
79
+ child.options.mode = compiler.options.mode;
80
+ child.options.target = 'node';
81
+ child.options.context = compiler.options.context || appDirectory;
82
+ child.options.resolve = {
83
+ ...compiler.options.resolve,
84
+ fallback: {}
85
+ };
86
+ child.options.module = compiler.options.module;
87
+ child.options.externalsPresets = {
88
+ node: true
89
+ };
90
+ child.options.devtool = false;
91
+ if (child.options.optimization && 'object' == typeof child.options.optimization) child.options.optimization.minimize = false;
92
+ else child.options.optimization = {
93
+ minimize: false
94
+ };
95
+ };
96
+ const applyExternalsPlugin = (child, compiler)=>{
97
+ const ExternalsPlugin = compiler.rspack?.ExternalsPlugin;
98
+ if (ExternalsPlugin) new ExternalsPlugin('commonjs', [
99
+ createExternalHandler(),
100
+ EXTERNAL_MAPPINGS
101
+ ]).apply(child);
102
+ };
103
+ const generateEntryCode = (docPath, _entryName)=>{
104
+ const runtimeAPI = require.resolve('../');
105
+ const esmRuntimeAPI = runtimeAPI.replace("cjs", "esm").replace(/.js$/, '.mjs');
106
+ return `import React from 'react';
107
+ import ReactDomServer from 'react-dom/server';
108
+ import Document from ${JSON.stringify(docPath)};
109
+ import { DocumentContext } from ${JSON.stringify(esmRuntimeAPI)};
110
+
111
+ // expose to global for host to consume
112
+ var g = (typeof globalThis !== 'undefined' ? globalThis : global);
113
+ g.__MODERN_DOC_RENDERERS__ = g.__MODERN_DOC_RENDERERS__ || {};
114
+
115
+ function render(documentParams) {
116
+ var HTMLElement = React.createElement(
117
+ DocumentContext.Provider,
118
+ { value: documentParams },
119
+ React.createElement(Document, null)
120
+ );
121
+ return ReactDomServer.renderToStaticMarkup(HTMLElement);
122
+ }
123
+
124
+ g.__MODERN_DOC_RENDERERS__[${JSON.stringify(_entryName)}] = render;
125
+
126
+ export default { render: render };`;
127
+ };
128
+ const processChildCompilation = async (entryName, docPath, compilation, compiler, appDirectory, internalDirectory)=>new Promise((resolve, reject)=>{
129
+ const outFile = path.posix.join(CONSTANTS.DOCUMENT_OUTPUT_DIR, `${CONSTANTS.HTML_OUTPUT_PREFIX}${entryName}${CONSTANTS.HTML_OUTPUT_SUFFIX}`);
130
+ const child = compilation.createChildCompiler(`${CONSTANTS.CHILD_COMPILER_PREFIX}${entryName}`, {
131
+ filename: outFile,
132
+ library: {
133
+ type: 'commonjs2'
134
+ }
135
+ }, []);
136
+ configureChildCompiler(child, compiler, appDirectory);
137
+ applyExternalsPlugin(child, compiler);
138
+ const entryDir = path.join(internalDirectory, CONSTANTS.DOCUMENT_OUTPUT_DIR);
139
+ const tempEntry = path.join(entryDir, `${CONSTANTS.TEMP_ENTRY_PREFIX}${entryName}.js`);
140
+ const finalize = ()=>{
141
+ try {
142
+ const EntryPlugin = compiler.rspack?.EntryPlugin;
143
+ if (!EntryPlugin) throw new Error('EntryPlugin not available');
144
+ new EntryPlugin(compiler.context, tempEntry, {
145
+ name: `${CONSTANTS.CHILD_COMPILER_PREFIX}${entryName}`
146
+ }).apply(child);
147
+ child.runAsChild((err, _entries, childCompilation)=>{
148
+ if (err) {
149
+ logger.error(`Document child compiler failed for entry "${entryName}": ${err.message}`);
150
+ return reject(err);
151
+ }
152
+ try {
153
+ if (!childCompilation) throw new Error('Child compilation is undefined');
154
+ const asset = childCompilation.assets[outFile] || childCompilation.getAsset?.(outFile)?.source;
155
+ const code = 'function' == typeof asset?.source ? asset.source().toString() : 'string' == typeof asset ? asset : asset?.buffer?.().toString?.() || '';
156
+ if (!code) {
157
+ const errorMsg = `Document child compiler produced empty output for entry "${entryName}". Please check your Document component for syntax errors.`;
158
+ logger.error(errorMsg);
159
+ reject(new Error(errorMsg));
160
+ return;
161
+ }
162
+ entryName2DocCode.set(entryName, code);
163
+ debug('Document child compiler: cached injected bundle for %s', entryName);
164
+ resolve();
165
+ } catch (e) {
166
+ const err = e;
167
+ logger.error(`Document child compiler failed to process output for entry "${entryName}": ${err.message}`);
168
+ reject(err);
169
+ }
170
+ });
171
+ } catch (e) {
172
+ const err = e;
173
+ logger.error(`Document child compiler failed to initialize for entry "${entryName}": ${err.message}`);
174
+ reject(err);
175
+ }
176
+ };
177
+ try {
178
+ fs.ensureFile(tempEntry).then(()=>{
179
+ const entryCode = generateEntryCode(docPath, entryName);
180
+ return fs.writeFile(tempEntry, entryCode);
181
+ }).then(finalize).catch((e)=>{
182
+ const err = e;
183
+ logger.error(`Document child compiler failed to prepare entry file for "${entryName}": ${err.message}`);
184
+ reject(err);
185
+ });
186
+ } catch (e) {
187
+ const err = e;
188
+ logger.error(`Document child compiler failed to create entry directory for "${entryName}": ${err.message}`);
189
+ reject(err);
190
+ }
191
+ });
192
+ const documentPlugin = ()=>({
193
+ name: '@modern-js/plugin-document',
194
+ pre: [
195
+ '@modern-js/plugin-analyze'
196
+ ],
197
+ setup: async (api)=>{
198
+ class ModernJsDocumentChildCompilerPlugin {
199
+ apply(compiler) {
200
+ compiler.hooks.make.tapPromise(this.name, async (compilation)=>{
201
+ try {
202
+ const { entrypoints, appDirectory, internalDirectory } = api.getAppContext();
203
+ const tasks = [];
204
+ for (const ep of entrypoints || []){
205
+ const entryName = ep.entryName;
206
+ const docPath = getDocumentByEntryName(entrypoints, entryName, appDirectory);
207
+ if (docPath) {
208
+ compilation.fileDependencies?.add?.(docPath);
209
+ clearGlobalDocRenderer(entryName);
210
+ tasks.push(processChildCompilation(entryName, docPath, compilation, compiler, appDirectory, internalDirectory));
211
+ }
212
+ }
213
+ await Promise.all(tasks);
214
+ } catch (e) {
215
+ const err = e;
216
+ logger.error(`Document child compiler failed: ${err.message}`);
217
+ debug('Document child compiler make hook failed: %o', e);
218
+ throw err;
219
+ }
220
+ });
221
+ }
222
+ constructor(){
223
+ this.name = 'ModernJsDocumentChildCompilerPlugin';
224
+ }
225
+ }
226
+ api.config(()=>({
227
+ tools: {
228
+ bundlerChain: (chain)=>{
229
+ chain.plugin('modernjs-document-child-compiler').use(ModernJsDocumentChildCompilerPlugin, []);
230
+ }
231
+ }
232
+ }));
233
+ const getDocParams = (params)=>{
234
+ const { config, templateParameters, entryName } = params;
235
+ return {
236
+ processEnv: process.env,
237
+ config: {
238
+ output: config.output
239
+ },
240
+ entryName,
241
+ templateParams: templateParameters
242
+ };
243
+ };
244
+ const loadRender = async (entryName, internalDirectory)=>{
245
+ const renderers = getGlobalDocRenderers();
246
+ const globalRenderer = renderers[entryName];
247
+ if (globalRenderer) return {
248
+ renderer: globalRenderer
249
+ };
250
+ const cached = entryName2DocCode.get(entryName);
251
+ if (!cached) throw new Error(`Document bundle not found for entry "${entryName}". The Document component compilation may have failed.`);
252
+ const filename = path.join(internalDirectory, `./${CONSTANTS.DOCUMENT_OUTPUT_DIR}/${CONSTANTS.HTML_OUTPUT_PREFIX}${entryName}${CONSTANTS.HTML_OUTPUT_SUFFIX}`);
253
+ requireFromString(cached, filename);
254
+ const renderer = renderers[entryName];
255
+ if (!renderer) throw new Error(`Document renderer not found for entry "${entryName}". Please ensure your Document component exports a valid default component.`);
256
+ return {
257
+ renderer
258
+ };
259
+ };
260
+ const processPartials = (html, entryName, partialsByEntrypoint)=>{
261
+ const partialsContent = {
262
+ partialsTop: '',
263
+ partialsHead: '',
264
+ partialsBody: ''
265
+ };
266
+ if (partialsByEntrypoint?.[entryName]) {
267
+ partialsContent.partialsTop = partialsByEntrypoint[entryName].top.join('\n');
268
+ partialsContent.partialsHead = partialsByEntrypoint[entryName].head.join('\n');
269
+ partialsContent.partialsBody = partialsByEntrypoint[entryName].body.join('\n');
270
+ }
271
+ return html.replace(TOP_PARTICALS_SEPARATOR, ()=>partialsContent.partialsTop).replace(HEAD_PARTICALS_SEPARATOR, ()=>partialsContent.partialsHead).replace(BODY_PARTICALS_SEPARATOR, ()=>partialsContent.partialsBody);
272
+ };
273
+ const extractHtmlTags = (htmlPlugin, templateParameters)=>{
274
+ const scripts = [
275
+ htmlPlugin.tags.headTags.filter((item)=>"script" === item.tagName).join(''),
276
+ htmlPlugin.tags.bodyTags.toString()
277
+ ].join('');
278
+ const links = htmlPlugin.tags.headTags.filter((item)=>'link' === item.tagName).join('');
279
+ const metas = [
280
+ templateParameters.meta,
281
+ htmlPlugin.tags.headTags.filter((item)=>"script" !== item.tagName && 'link' !== item.tagName && 'title' !== item.tagName).join('')
282
+ ].join('');
283
+ const titles = htmlPlugin.tags.headTags.filter((item)=>'title' === item.tagName).join('').replace('<title>', '').replace('</title>', '');
284
+ return {
285
+ scripts,
286
+ links,
287
+ metas,
288
+ titles
289
+ };
290
+ };
291
+ const processPlaceholders = (html, config, scripts, links, metas, titles)=>{
292
+ const { nonce } = config.security || {};
293
+ let processedHtml = processScriptPlaceholders(html, nonce);
294
+ processedHtml = processStylePlaceholders(processedHtml);
295
+ processedHtml = processCommentPlaceholders(processedHtml);
296
+ return `<!DOCTYPE html>${processedHtml}`.replace(DOCUMENT_META_PLACEHOLDER, ()=>metas).replace(DOCUMENT_SSR_PLACEHOLDER, ()=>HTML_SEPARATOR).replace(DOCUMENT_SCRIPTS_PLACEHOLDER, ()=>scripts).replace(DOCUMENT_LINKS_PLACEHOLDER, ()=>links).replace(DOCUMENT_CHUNKSMAP_PLACEHOLDER, ()=>PLACEHOLDER_REPLACER_MAP[DOCUMENT_CHUNKSMAP_PLACEHOLDER]).replace(DOCUMENT_SSRDATASCRIPT_PLACEHOLDER, ()=>PLACEHOLDER_REPLACER_MAP[DOCUMENT_SSRDATASCRIPT_PLACEHOLDER]).replace(DOCUMENT_TITLE_PLACEHOLDER, ()=>titles);
297
+ };
298
+ const documentEntry = (entryName, templateParameters)=>{
299
+ const { entrypoints, internalDirectory, appDirectory } = api.getAppContext();
300
+ const documentFilePath = getDocumentByEntryName(entrypoints, entryName, appDirectory);
301
+ if (!documentFilePath) return null;
302
+ return async ({ htmlPlugin })=>{
303
+ const config = api.getNormalizedConfig();
304
+ const documentParams = getDocParams({
305
+ config: config,
306
+ entryName,
307
+ templateParameters
308
+ });
309
+ let html;
310
+ try {
311
+ const { renderer } = await loadRender(entryName, internalDirectory);
312
+ html = renderer(documentParams);
313
+ } catch (error) {
314
+ const err = error;
315
+ logger.error(`Failed to render Document for entry "${entryName}": ${err.message}`);
316
+ throw err;
317
+ }
318
+ debug("entry %s's document jsx rendered html: %o", entryName, html);
319
+ const { partialsByEntrypoint } = api.getAppContext();
320
+ html = processPartials(html, entryName, partialsByEntrypoint || {});
321
+ const { scripts, links, metas, titles } = extractHtmlTags(htmlPlugin, templateParameters);
322
+ return processPlaceholders(html, config, scripts, links, metas, titles);
323
+ };
324
+ };
325
+ api.config(()=>{
326
+ const userConfig = api.getConfig();
327
+ if (userConfig.tools?.htmlPlugin === false) return {};
328
+ return {
329
+ tools: {
330
+ htmlPlugin: (options, entry)=>{
331
+ const hackParameters = 'function' == typeof options?.templateParameters ? options?.templateParameters({}, {}, {}, {}) : {
332
+ ...options?.templateParameters
333
+ };
334
+ const templateContent = documentEntry(entry.entryName, hackParameters);
335
+ const documentHtmlOptions = templateContent ? {
336
+ templateContent,
337
+ inject: false
338
+ } : {};
339
+ return {
340
+ ...options,
341
+ ...documentHtmlOptions
342
+ };
343
+ }
344
+ }
345
+ };
346
+ });
347
+ }
348
+ });
349
+ const cli = documentPlugin;
350
+ export default cli;
351
+ export { documentPlugin, getDocumentByEntryName };
@@ -0,0 +1,34 @@
1
+ import { HTML_CHUNKSMAP_SEPARATOR } from "@modern-js/utils/universal/constants";
2
+ const DOC_EXT = [
3
+ 'jsx',
4
+ 'tsx',
5
+ 'ts',
6
+ 'js'
7
+ ];
8
+ const DOCUMENT_META_PLACEHOLDER = encodeURIComponent('<%= meta %>');
9
+ const DOCUMENT_TITLE_PLACEHOLDER = encodeURIComponent('<%= title %>');
10
+ const HTML_SEPARATOR = '<!--<?- html ?>-->';
11
+ const HEAD_PARTICALS_SEPARATOR = encodeURIComponent('<!--<?- partials.head ?>-->');
12
+ const BODY_PARTICALS_SEPARATOR = encodeURIComponent('<!--<?- partials.body ?>-->');
13
+ const TOP_PARTICALS_SEPARATOR = encodeURIComponent('<!--<?- partials.top ?>-->');
14
+ const HTML_SSRDATASCRIPT_SEPARATOR = '<!--<?- SSRDataScript ?>-->';
15
+ const DOCUMENT_SSR_PLACEHOLDER = encodeURIComponent(HTML_SEPARATOR);
16
+ const DOCUMENT_CHUNKSMAP_PLACEHOLDER = encodeURIComponent(HTML_CHUNKSMAP_SEPARATOR);
17
+ const DOCUMENT_SSRDATASCRIPT_PLACEHOLDER = encodeURIComponent(HTML_SSRDATASCRIPT_SEPARATOR);
18
+ const DOCUMENT_FILE_NAME = 'Document';
19
+ const DOCUMENT_SCRIPTS_PLACEHOLDER = encodeURIComponent("\x3c!-- chunk scripts placeholder --\x3e");
20
+ const DOCUMENT_LINKS_PLACEHOLDER = encodeURIComponent('<!-- chunk links placeholder -->');
21
+ const DOCUMENT_SCRIPT_PLACEHOLDER_START = encodeURIComponent("\x3c!-- script-start --\x3e");
22
+ const DOCUMENT_SCRIPT_PLACEHOLDER_END = encodeURIComponent("\x3c!-- script-end --\x3e");
23
+ const DOCUMENT_SCRIPT_ATTRIBUTES_START = encodeURIComponent("\x3c!-- script-scriptpProperties-start --\x3e");
24
+ const DOCUMENT_SCRIPT_ATTRIBUTES_END = encodeURIComponent("\x3c!-- script-scriptpProperties-end --\x3e");
25
+ const DOCUMENT_STYLE_PLACEHOLDER_START = encodeURIComponent('<!-- style-start -->');
26
+ const DOCUMENT_STYLE_PLACEHOLDER_END = encodeURIComponent('<!-- style-end -->');
27
+ const DOCUMENT_COMMENT_PLACEHOLDER_START = encodeURIComponent('<!-- comment-start -->');
28
+ const DOCUMENT_COMMENT_PLACEHOLDER_END = encodeURIComponent('<!-- comment-end -->');
29
+ const PLACEHOLDER_REPLACER_MAP = {
30
+ [DOCUMENT_SSR_PLACEHOLDER]: HTML_SEPARATOR,
31
+ [DOCUMENT_CHUNKSMAP_PLACEHOLDER]: HTML_CHUNKSMAP_SEPARATOR,
32
+ [DOCUMENT_SSRDATASCRIPT_PLACEHOLDER]: HTML_SSRDATASCRIPT_SEPARATOR
33
+ };
34
+ export { BODY_PARTICALS_SEPARATOR, DOCUMENT_CHUNKSMAP_PLACEHOLDER, DOCUMENT_COMMENT_PLACEHOLDER_END, DOCUMENT_COMMENT_PLACEHOLDER_START, DOCUMENT_FILE_NAME, DOCUMENT_LINKS_PLACEHOLDER, DOCUMENT_META_PLACEHOLDER, DOCUMENT_SCRIPTS_PLACEHOLDER, DOCUMENT_SCRIPT_ATTRIBUTES_END, DOCUMENT_SCRIPT_ATTRIBUTES_START, DOCUMENT_SCRIPT_PLACEHOLDER_END, DOCUMENT_SCRIPT_PLACEHOLDER_START, DOCUMENT_SSRDATASCRIPT_PLACEHOLDER, DOCUMENT_SSR_PLACEHOLDER, DOCUMENT_STYLE_PLACEHOLDER_END, DOCUMENT_STYLE_PLACEHOLDER_START, DOCUMENT_TITLE_PLACEHOLDER, DOC_EXT, HEAD_PARTICALS_SEPARATOR, HTML_SEPARATOR, HTML_SSRDATASCRIPT_SEPARATOR, PLACEHOLDER_REPLACER_MAP, TOP_PARTICALS_SEPARATOR };
@@ -0,0 +1,12 @@
1
+ export * from "./Body.mjs";
2
+ export * from "./Comment.mjs";
3
+ export * from "./constants.mjs";
4
+ export * from "./DocumentContext.mjs";
5
+ export * from "./DocumentStructureContext.mjs";
6
+ export * from "./Head.mjs";
7
+ export * from "./Html.mjs";
8
+ export * from "./Links.mjs";
9
+ export * from "./Root.mjs";
10
+ export * from "./Script.mjs";
11
+ export * from "./Scripts.mjs";
12
+ export * from "./Style.mjs";
@@ -0,0 +1,4 @@
1
+ function defineRoutes(routesCallback) {
2
+ return routesCallback;
3
+ }
4
+ export { defineRoutes };
@@ -0,0 +1,5 @@
1
+ "use client";
2
+ import react_helmet, { Helmet } from "react-helmet";
3
+ const head = react_helmet;
4
+ export default head;
5
+ export { Helmet };
@@ -0,0 +1,4 @@
1
+ import component from "@loadable/component";
2
+ export * from "@loadable/component";
3
+ const loadable = component;
4
+ export default loadable;
@@ -0,0 +1,3 @@
1
+ export * from "@tanstack/react-router";
2
+ export { Form, RouteActionResponseError, useFetcher } from "../router/runtime/tanstack/dataMutation.mjs";
3
+ export { Link, NavLink } from "../router/runtime/tanstack/prefetchLink.mjs";
@@ -0,0 +1,5 @@
1
+ export { isBrowser } from "./common.mjs";
2
+ export { RuntimeContext, defineRuntimeConfig, useRuntimeContext } from "./core/index.mjs";
3
+ export { getMonitors } from "./core/context/monitors/index.mjs";
4
+ export { getRequest } from "./core/context/request/index.mjs";
5
+ export { redirect, setHeaders, setStatus } from "./core/context/response/index.mjs";
@@ -0,0 +1 @@
1
+ export { InternalRuntimeContext } from "./core/context/runtime.mjs";
@@ -0,0 +1,3 @@
1
+ export { getMonitors } from "./core/context/monitors/index.mjs";
2
+ export { getRequest } from "./core/context/request/index.mjs";
3
+ export { redirect, setHeaders, setStatus } from "./core/context/response/index.mjs";
@@ -0,0 +1,115 @@
1
+ import { fs } from "@modern-js/utils";
2
+ import path from "path";
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 @@
1
+ export { getClientRoutes } from "./getRoutes.mjs";
@@ -0,0 +1,12 @@
1
+ import { JS_EXTENSIONS, createDebugger, fs } from "@modern-js/utils";
2
+ import path from "path";
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 };