@modern-js/runtime 2.54.6 → 2.56.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 (309) hide show
  1. package/dist/cjs/{ssr/serverRender/renderToString/index.js → cli/alias.js} +29 -18
  2. package/dist/cjs/cli/code.js +124 -0
  3. package/dist/cjs/cli/constants.js +23 -2
  4. package/dist/cjs/cli/index.js +91 -17
  5. package/dist/cjs/cli/ssr/index.js +137 -0
  6. package/dist/cjs/cli/template.js +101 -0
  7. package/dist/cjs/cli/template.server.js +71 -0
  8. package/dist/cjs/core/browser/hydrate.js +116 -0
  9. package/dist/cjs/core/browser/index.js +142 -0
  10. package/dist/cjs/core/compatible.js +39 -74
  11. package/dist/cjs/{ssr/serverRender/types.js → core/constants.js} +3 -3
  12. package/dist/cjs/core/context/index.js +39 -2
  13. package/dist/cjs/core/context/runtime.js +3 -3
  14. package/dist/cjs/core/loader/useLoader.js +2 -2
  15. package/dist/cjs/core/plugin/base.js +0 -4
  16. package/dist/cjs/core/plugin/index.js +6 -0
  17. package/dist/cjs/core/react/index.js +51 -0
  18. package/dist/cjs/{ssr/serverRender → core/server}/helmet.js +11 -2
  19. package/dist/cjs/core/server/index.js +38 -0
  20. package/dist/cjs/core/server/requestHandler.js +156 -0
  21. package/dist/cjs/core/server/server.js +34 -0
  22. package/dist/cjs/{ssr/serverRender/renderToStream/buildTemplate.share.js → core/server/shared.js} +7 -10
  23. package/dist/cjs/core/server/stream/afterTemplate.js +80 -0
  24. package/dist/cjs/{ssr/serverRender/renderToStream/bulidTemplate.before.js → core/server/stream/beforeTemplate.js} +11 -12
  25. package/dist/cjs/core/server/stream/createReadableStream.js +124 -0
  26. package/dist/cjs/core/server/stream/createReadableStream.worker.js +105 -0
  27. package/dist/cjs/core/server/stream/index.js +30 -0
  28. package/dist/cjs/core/server/stream/shared.js +112 -0
  29. package/dist/cjs/{ssr/serverRender/renderToStream → core/server/stream}/template.js +6 -10
  30. package/dist/cjs/core/server/string/index.js +152 -0
  31. package/dist/cjs/{ssr/serverRender/renderToString → core/server/string}/loadable.js +9 -12
  32. package/dist/cjs/core/server/string/prefetch.js +112 -0
  33. package/dist/cjs/core/server/string/ssrData.js +100 -0
  34. package/dist/cjs/core/server/string/styledComponent.js +53 -0
  35. package/dist/cjs/core/server/string/types.js +16 -0
  36. package/dist/cjs/core/server/tracer.js +60 -0
  37. package/dist/cjs/{ssr/serverRender → core/server}/utils.js +48 -2
  38. package/dist/cjs/{ssr/serverRender/renderToString/styledComponent.js → core/utils/merge.js} +28 -19
  39. package/dist/cjs/router/cli/code/index.js +12 -8
  40. package/dist/cjs/router/cli/code/templates.js +58 -3
  41. package/dist/cjs/router/cli/constants.js +6 -0
  42. package/dist/cjs/router/cli/entry.js +16 -17
  43. package/dist/cjs/router/cli/handler.js +22 -5
  44. package/dist/cjs/router/cli/index.js +29 -56
  45. package/dist/cjs/router/runtime/PrefetchLink.js +1 -1
  46. package/dist/cjs/router/runtime/index.js +2 -0
  47. package/dist/cjs/router/runtime/plugin.js +13 -40
  48. package/dist/cjs/router/runtime/plugin.node.js +24 -46
  49. package/dist/cjs/state/cli/index.js +7 -35
  50. package/dist/cjs/state/runtime/plugin.js +6 -15
  51. package/dist/esm/cli/alias.js +30 -0
  52. package/dist/esm/cli/code.js +131 -0
  53. package/dist/esm/cli/constants.js +15 -1
  54. package/dist/esm/cli/index.js +110 -18
  55. package/dist/esm/{ssr/cli → cli/ssr}/babel-plugin-ssr-loader-id.js +1 -1
  56. package/dist/esm/cli/ssr/index.js +127 -0
  57. package/dist/esm/{ssr/cli → cli/ssr}/loadable-bundler-plugin.js +1 -1
  58. package/dist/esm/cli/template.js +53 -0
  59. package/dist/esm/cli/template.server.js +26 -0
  60. package/dist/esm/core/browser/hydrate.js +88 -0
  61. package/dist/esm/core/browser/index.js +242 -0
  62. package/dist/esm/core/compatible.js +48 -90
  63. package/dist/esm/core/context/index.js +32 -1
  64. package/dist/esm/core/context/runtime.js +3 -2
  65. package/dist/esm/core/loader/useLoader.js +2 -2
  66. package/dist/esm/core/plugin/base.js +0 -4
  67. package/dist/esm/core/plugin/index.js +10 -0
  68. package/dist/esm/core/react/index.js +31 -0
  69. package/dist/esm/{ssr/serverRender → core/server}/helmet.js +10 -2
  70. package/dist/esm/core/server/index.js +16 -0
  71. package/dist/esm/core/server/react/prerender/type.js +0 -0
  72. package/dist/esm/core/server/requestHandler.js +181 -0
  73. package/dist/esm/core/server/server.js +8 -0
  74. package/dist/esm/core/server/shared.js +10 -0
  75. package/dist/esm/core/server/stream/afterTemplate.js +60 -0
  76. package/dist/esm/{ssr/serverRender/renderToStream/bulidTemplate.before.js → core/server/stream/beforeTemplate.js} +10 -11
  77. package/dist/esm/{ssr/serverRender/renderToStream/renderToPipe.js → core/server/stream/createReadableStream.js} +43 -38
  78. package/dist/esm/core/server/stream/createReadableStream.worker.js +142 -0
  79. package/dist/esm/core/server/stream/index.js +6 -0
  80. package/dist/esm/core/server/stream/shared.js +102 -0
  81. package/dist/esm/core/server/stream/template.js +42 -0
  82. package/dist/esm/core/server/string/index.js +219 -0
  83. package/dist/esm/{ssr/serverRender/renderToString → core/server/string}/loadable.js +10 -13
  84. package/dist/esm/{ssr → core/server/string}/prefetch.js +28 -22
  85. package/dist/esm/core/server/string/ssrData.js +83 -0
  86. package/dist/esm/core/server/string/styledComponent.js +34 -0
  87. package/dist/esm/core/server/string/types.js +0 -0
  88. package/dist/esm/core/server/tracer.js +34 -0
  89. package/dist/esm/core/server/utils.js +83 -0
  90. package/dist/esm/core/utils/merge.js +32 -0
  91. package/dist/esm/router/cli/code/index.js +13 -10
  92. package/dist/esm/router/cli/code/templates.js +100 -7
  93. package/dist/esm/router/cli/constants.js +4 -0
  94. package/dist/esm/router/cli/entry.js +19 -19
  95. package/dist/esm/router/cli/handler.js +70 -8
  96. package/dist/esm/router/cli/index.js +52 -65
  97. package/dist/esm/router/runtime/PrefetchLink.js +1 -1
  98. package/dist/esm/router/runtime/index.js +1 -0
  99. package/dist/esm/router/runtime/plugin.js +12 -20
  100. package/dist/esm/router/runtime/plugin.node.js +26 -82
  101. package/dist/esm/state/cli/index.js +9 -38
  102. package/dist/esm/state/runtime/plugin.js +5 -5
  103. package/dist/esm-node/cli/alias.js +28 -0
  104. package/dist/esm-node/cli/code.js +90 -0
  105. package/dist/esm-node/cli/constants.js +15 -1
  106. package/dist/esm-node/cli/index.js +83 -13
  107. package/dist/esm-node/{ssr/cli → cli/ssr}/babel-plugin-ssr-loader-id.js +1 -1
  108. package/dist/esm-node/cli/ssr/index.js +103 -0
  109. package/dist/esm-node/{ssr/cli → cli/ssr}/loadable-bundler-plugin.js +1 -1
  110. package/dist/esm-node/cli/template.js +64 -0
  111. package/dist/esm-node/cli/template.server.js +47 -0
  112. package/dist/esm-node/core/browser/hydrate.js +81 -0
  113. package/dist/esm-node/core/browser/index.js +108 -0
  114. package/dist/esm-node/core/compatible.js +39 -74
  115. package/dist/esm-node/core/context/index.js +32 -1
  116. package/dist/esm-node/core/context/runtime.js +3 -3
  117. package/dist/esm-node/core/loader/useLoader.js +2 -2
  118. package/dist/esm-node/core/plugin/base.js +0 -4
  119. package/dist/esm-node/core/plugin/index.js +5 -0
  120. package/dist/esm-node/core/react/index.js +27 -0
  121. package/dist/esm-node/{ssr/serverRender → core/server}/helmet.js +6 -2
  122. package/dist/esm-node/core/server/index.js +12 -0
  123. package/dist/esm-node/core/server/requestHandler.js +132 -0
  124. package/dist/esm-node/core/server/server.js +8 -0
  125. package/dist/esm-node/core/server/shared.js +6 -0
  126. package/dist/esm-node/core/server/stream/afterTemplate.js +56 -0
  127. package/dist/esm-node/{ssr/serverRender/renderToStream/bulidTemplate.before.js → core/server/stream/beforeTemplate.js} +8 -9
  128. package/dist/esm-node/{ssr/serverRender/renderToStream/renderToPipe.js → core/server/stream/createReadableStream.js} +41 -35
  129. package/dist/esm-node/core/server/stream/createReadableStream.worker.js +71 -0
  130. package/dist/esm-node/core/server/stream/index.js +6 -0
  131. package/dist/esm-node/core/server/stream/shared.js +75 -0
  132. package/dist/esm-node/core/server/stream/template.js +15 -0
  133. package/dist/esm-node/core/server/string/index.js +118 -0
  134. package/dist/esm-node/{ssr/serverRender/renderToString → core/server/string}/loadable.js +8 -11
  135. package/dist/esm-node/core/server/string/prefetch.js +78 -0
  136. package/dist/esm-node/core/server/string/ssrData.js +76 -0
  137. package/dist/esm-node/core/server/string/styledComponent.js +29 -0
  138. package/dist/esm-node/core/server/tracer.js +33 -0
  139. package/dist/esm-node/core/server/utils.js +60 -0
  140. package/dist/esm-node/core/utils/merge.js +29 -0
  141. package/dist/esm-node/router/cli/code/index.js +10 -7
  142. package/dist/esm-node/router/cli/code/templates.js +60 -6
  143. package/dist/esm-node/router/cli/constants.js +4 -0
  144. package/dist/esm-node/router/cli/entry.js +16 -17
  145. package/dist/esm-node/router/cli/handler.js +21 -5
  146. package/dist/esm-node/router/cli/index.js +31 -58
  147. package/dist/esm-node/router/runtime/PrefetchLink.js +1 -1
  148. package/dist/esm-node/router/runtime/index.js +1 -0
  149. package/dist/esm-node/router/runtime/plugin.js +13 -30
  150. package/dist/esm-node/router/runtime/plugin.node.js +25 -46
  151. package/dist/esm-node/state/cli/index.js +8 -36
  152. package/dist/esm-node/state/runtime/plugin.js +5 -5
  153. package/dist/types/cli/alias.d.ts +7 -0
  154. package/dist/types/cli/code.d.ts +10 -0
  155. package/dist/types/cli/constants.d.ts +7 -0
  156. package/dist/types/cli/index.d.ts +8 -1
  157. package/dist/types/cli/template.d.ts +27 -0
  158. package/dist/types/cli/template.server.d.ts +15 -0
  159. package/dist/types/common.d.ts +9 -0
  160. package/dist/types/core/browser/hydrate.d.ts +5 -0
  161. package/dist/types/core/browser/index.d.ts +3 -0
  162. package/dist/types/core/config.d.ts +5 -6
  163. package/dist/types/core/constants.d.ts +5 -0
  164. package/dist/types/core/context/index.d.ts +34 -1
  165. package/dist/types/core/context/runtime.d.ts +2 -2
  166. package/dist/types/core/plugin/base.d.ts +3 -33
  167. package/dist/types/core/plugin/index.d.ts +2 -11
  168. package/dist/types/core/plugin/runner.d.ts +1 -11
  169. package/dist/types/core/react/index.d.ts +6 -0
  170. package/dist/types/core/server/helmet.d.ts +3 -0
  171. package/dist/types/core/server/index.d.ts +4 -0
  172. package/dist/types/core/server/requestHandler.d.ts +11 -0
  173. package/dist/types/core/server/server.d.ts +4 -0
  174. package/dist/types/core/server/shared.d.ts +9 -0
  175. package/dist/types/core/server/stream/afterTemplate.d.ts +12 -0
  176. package/dist/types/core/server/stream/beforeTemplate.d.ts +8 -0
  177. package/dist/types/core/server/stream/createReadableStream.d.ts +2 -0
  178. package/dist/types/core/server/stream/createReadableStream.worker.d.ts +2 -0
  179. package/dist/types/core/server/stream/index.d.ts +1 -0
  180. package/dist/types/core/server/stream/shared.d.ts +22 -0
  181. package/dist/types/core/server/stream/template.d.ts +9 -0
  182. package/dist/types/core/server/string/index.d.ts +2 -0
  183. package/dist/types/core/server/string/loadable.d.ts +35 -0
  184. package/dist/types/core/server/string/prefetch.d.ts +16 -0
  185. package/dist/types/core/server/string/ssrData.d.ts +18 -0
  186. package/dist/types/core/server/string/styledComponent.d.ts +11 -0
  187. package/dist/types/core/server/string/types.d.ts +12 -0
  188. package/dist/types/core/server/tracer.d.ts +21 -0
  189. package/dist/types/core/server/utils.d.ts +19 -0
  190. package/dist/types/core/types.d.ts +35 -1
  191. package/dist/types/core/utils/merge.d.ts +6 -0
  192. package/dist/types/index.d.ts +1 -1
  193. package/dist/types/router/cli/code/index.d.ts +3 -4
  194. package/dist/types/router/cli/code/templates.d.ts +9 -1
  195. package/dist/types/router/cli/constants.d.ts +2 -0
  196. package/dist/types/router/cli/handler.d.ts +1 -0
  197. package/dist/types/router/runtime/index.d.ts +1 -0
  198. package/dist/types/router/runtime/plugin.d.ts +1 -1
  199. package/dist/types/router/runtime/plugin.node.d.ts +1 -3
  200. package/dist/types/router/runtime/types.d.ts +1 -2
  201. package/dist/types/state/runtime/plugin.d.ts +2 -2
  202. package/package.json +52 -45
  203. package/types/router.d.ts +7 -2
  204. package/dist/cjs/ssr/cli/index.js +0 -200
  205. package/dist/cjs/ssr/index.js +0 -183
  206. package/dist/cjs/ssr/index.node.js +0 -86
  207. package/dist/cjs/ssr/prefetch.js +0 -92
  208. package/dist/cjs/ssr/serverRender/index.js +0 -39
  209. package/dist/cjs/ssr/serverRender/renderToStream/buildTemplate.after.js +0 -74
  210. package/dist/cjs/ssr/serverRender/renderToStream/index.js +0 -74
  211. package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.js +0 -104
  212. package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.worker.js +0 -108
  213. package/dist/cjs/ssr/serverRender/renderToString/buildHtml.js +0 -52
  214. package/dist/cjs/ssr/serverRender/renderToString/entry.js +0 -179
  215. package/dist/cjs/ssr/serverRender/renderToString/render.js +0 -61
  216. package/dist/cjs/ssr/serverRender/tracker.js +0 -113
  217. package/dist/cjs/ssr/utils.js +0 -94
  218. package/dist/esm/ssr/cli/index.js +0 -194
  219. package/dist/esm/ssr/index.js +0 -169
  220. package/dist/esm/ssr/index.node.js +0 -78
  221. package/dist/esm/ssr/serverRender/index.js +0 -55
  222. package/dist/esm/ssr/serverRender/renderToStream/buildTemplate.after.js +0 -48
  223. package/dist/esm/ssr/serverRender/renderToStream/buildTemplate.share.js +0 -12
  224. package/dist/esm/ssr/serverRender/renderToStream/index.js +0 -49
  225. package/dist/esm/ssr/serverRender/renderToStream/renderToPipe.worker.js +0 -164
  226. package/dist/esm/ssr/serverRender/renderToStream/template.js +0 -46
  227. package/dist/esm/ssr/serverRender/renderToString/buildHtml.js +0 -34
  228. package/dist/esm/ssr/serverRender/renderToString/entry.js +0 -257
  229. package/dist/esm/ssr/serverRender/renderToString/index.js +0 -34
  230. package/dist/esm/ssr/serverRender/renderToString/render.js +0 -55
  231. package/dist/esm/ssr/serverRender/renderToString/styledComponent.js +0 -25
  232. package/dist/esm/ssr/serverRender/tracker.js +0 -82
  233. package/dist/esm/ssr/serverRender/utils.js +0 -21
  234. package/dist/esm/ssr/utils.js +0 -59
  235. package/dist/esm-node/ssr/cli/index.js +0 -166
  236. package/dist/esm-node/ssr/index.js +0 -147
  237. package/dist/esm-node/ssr/index.node.js +0 -50
  238. package/dist/esm-node/ssr/prefetch.js +0 -72
  239. package/dist/esm-node/ssr/serverRender/index.js +0 -19
  240. package/dist/esm-node/ssr/serverRender/renderToStream/buildTemplate.after.js +0 -50
  241. package/dist/esm-node/ssr/serverRender/renderToStream/buildTemplate.share.js +0 -8
  242. package/dist/esm-node/ssr/serverRender/renderToStream/index.js +0 -40
  243. package/dist/esm-node/ssr/serverRender/renderToStream/renderToPipe.worker.js +0 -88
  244. package/dist/esm-node/ssr/serverRender/renderToStream/template.js +0 -19
  245. package/dist/esm-node/ssr/serverRender/renderToString/buildHtml.js +0 -24
  246. package/dist/esm-node/ssr/serverRender/renderToString/entry.js +0 -149
  247. package/dist/esm-node/ssr/serverRender/renderToString/index.js +0 -17
  248. package/dist/esm-node/ssr/serverRender/renderToString/render.js +0 -27
  249. package/dist/esm-node/ssr/serverRender/renderToString/styledComponent.js +0 -20
  250. package/dist/esm-node/ssr/serverRender/tracker.js +0 -87
  251. package/dist/esm-node/ssr/serverRender/utils.js +0 -17
  252. package/dist/esm-node/ssr/utils.js +0 -57
  253. package/dist/types/ssr/index.d.ts +0 -11
  254. package/dist/types/ssr/index.node.d.ts +0 -5
  255. package/dist/types/ssr/prefetch.d.ts +0 -16
  256. package/dist/types/ssr/serverRender/helmet.d.ts +0 -2
  257. package/dist/types/ssr/serverRender/index.d.ts +0 -2
  258. package/dist/types/ssr/serverRender/renderToStream/buildTemplate.after.d.ts +0 -7
  259. package/dist/types/ssr/serverRender/renderToStream/buildTemplate.share.d.ts +0 -3
  260. package/dist/types/ssr/serverRender/renderToStream/bulidTemplate.before.d.ts +0 -2
  261. package/dist/types/ssr/serverRender/renderToStream/index.d.ts +0 -3
  262. package/dist/types/ssr/serverRender/renderToStream/renderToPipe.d.ts +0 -7
  263. package/dist/types/ssr/serverRender/renderToStream/renderToPipe.worker.d.ts +0 -12
  264. package/dist/types/ssr/serverRender/renderToStream/template.d.ts +0 -6
  265. package/dist/types/ssr/serverRender/renderToString/buildHtml.d.ts +0 -6
  266. package/dist/types/ssr/serverRender/renderToString/entry.d.ts +0 -24
  267. package/dist/types/ssr/serverRender/renderToString/index.d.ts +0 -2
  268. package/dist/types/ssr/serverRender/renderToString/loadable.d.ts +0 -26
  269. package/dist/types/ssr/serverRender/renderToString/render.d.ts +0 -16
  270. package/dist/types/ssr/serverRender/renderToString/styledComponent.d.ts +0 -15
  271. package/dist/types/ssr/serverRender/tracker.d.ts +0 -20
  272. package/dist/types/ssr/serverRender/types.d.ts +0 -49
  273. package/dist/types/ssr/serverRender/utils.d.ts +0 -9
  274. package/dist/types/ssr/utils.d.ts +0 -10
  275. /package/dist/cjs/{ssr/cli → cli/ssr}/babel-plugin-ssr-loader-id.js +0 -0
  276. /package/dist/cjs/{ssr/cli → cli/ssr}/loadable-bundler-plugin.js +0 -0
  277. /package/dist/cjs/{ssr/react/withCallback/index.js → core/browser/withCallback.js} +0 -0
  278. /package/dist/cjs/{ssr/serverRender → core/server}/constants.js +0 -0
  279. /package/dist/cjs/{ssr → core/server}/react/index.js +0 -0
  280. /package/dist/cjs/{ssr → core/server}/react/nossr/index.js +0 -0
  281. /package/dist/cjs/{ssr → core/server}/react/prerender/index.js +0 -0
  282. /package/dist/cjs/{ssr → core/server}/react/prerender/type.js +0 -0
  283. /package/dist/cjs/{ssr → core/server}/react/prerender/util.js +0 -0
  284. /package/dist/esm/{ssr/react/withCallback/index.js → core/browser/withCallback.js} +0 -0
  285. /package/dist/esm/{ssr/serverRender/types.js → core/constants.js} +0 -0
  286. /package/dist/esm/{ssr/serverRender → core/server}/constants.js +0 -0
  287. /package/dist/esm/{ssr → core/server}/react/index.js +0 -0
  288. /package/dist/esm/{ssr → core/server}/react/nossr/index.js +0 -0
  289. /package/dist/esm/{ssr → core/server}/react/prerender/index.js +0 -0
  290. /package/dist/esm/{ssr → core/server}/react/prerender/util.js +0 -0
  291. /package/dist/esm-node/{ssr/react/withCallback/index.js → core/browser/withCallback.js} +0 -0
  292. /package/dist/esm-node/{ssr/serverRender/types.js → core/constants.js} +0 -0
  293. /package/dist/esm-node/{ssr/serverRender → core/server}/constants.js +0 -0
  294. /package/dist/esm-node/{ssr → core/server}/react/index.js +0 -0
  295. /package/dist/esm-node/{ssr → core/server}/react/nossr/index.js +0 -0
  296. /package/dist/esm-node/{ssr → core/server}/react/prerender/index.js +0 -0
  297. /package/dist/esm-node/{ssr → core/server}/react/prerender/type.js +0 -0
  298. /package/dist/esm-node/{ssr → core/server}/react/prerender/util.js +0 -0
  299. /package/dist/{esm/ssr/react/prerender/type.js → esm-node/core/server/string/types.js} +0 -0
  300. /package/dist/types/{ssr/cli → cli/ssr}/babel-plugin-ssr-loader-id.d.ts +0 -0
  301. /package/dist/types/{ssr/cli → cli/ssr}/index.d.ts +0 -0
  302. /package/dist/types/{ssr/cli → cli/ssr}/loadable-bundler-plugin.d.ts +0 -0
  303. /package/dist/types/{ssr/react/withCallback/index.d.ts → core/browser/withCallback.d.ts} +0 -0
  304. /package/dist/types/{ssr/serverRender → core/server}/constants.d.ts +0 -0
  305. /package/dist/types/{ssr → core/server}/react/index.d.ts +0 -0
  306. /package/dist/types/{ssr → core/server}/react/nossr/index.d.ts +0 -0
  307. /package/dist/types/{ssr → core/server}/react/prerender/index.d.ts +0 -0
  308. /package/dist/types/{ssr → core/server}/react/prerender/type.d.ts +0 -0
  309. /package/dist/types/{ssr → core/server}/react/prerender/util.d.ts +0 -0
@@ -0,0 +1,60 @@
1
+ import { isRouteErrorResponse } from "@modern-js/runtime-utils/remix-router";
2
+ function attributesToString(attributes) {
3
+ return Object.entries(attributes).reduce((str, [key, value]) => {
4
+ return value === void 0 ? str : `${str} ${key}="${value}"`;
5
+ }, "");
6
+ }
7
+ function safeReplace(source, searchValue, replaceValue) {
8
+ return source.replace(searchValue, () => replaceValue);
9
+ }
10
+ function checkIsNode() {
11
+ var _process_release;
12
+ return typeof process !== "undefined" && ((_process_release = process.release) === null || _process_release === void 0 ? void 0 : _process_release.name) === "node";
13
+ }
14
+ function serializeErrors(errors) {
15
+ if (!errors) {
16
+ return null;
17
+ }
18
+ const entries = Object.entries(errors);
19
+ const serialized = {};
20
+ for (const [key, val] of entries) {
21
+ if (isRouteErrorResponse(val)) {
22
+ serialized[key] = {
23
+ ...val,
24
+ __type: "RouteErrorResponse"
25
+ };
26
+ } else if (val instanceof Error) {
27
+ serialized[key] = {
28
+ message: val.message,
29
+ stack: val.stack,
30
+ __type: "Error"
31
+ };
32
+ } else {
33
+ serialized[key] = val;
34
+ }
35
+ }
36
+ return serialized;
37
+ }
38
+ function getSSRConfigByEntry(entryName, ssr, ssrByEntries, staticGenerate) {
39
+ if (staticGenerate) {
40
+ return true;
41
+ }
42
+ if (ssrByEntries === null || ssrByEntries === void 0 ? void 0 : ssrByEntries[entryName]) {
43
+ return ssrByEntries[entryName];
44
+ }
45
+ return ssr;
46
+ }
47
+ function getSSRMode(ssrConfig) {
48
+ if (typeof ssrConfig === "boolean") {
49
+ return ssrConfig ? "string" : false;
50
+ }
51
+ return (ssrConfig === null || ssrConfig === void 0 ? void 0 : ssrConfig.mode) === "stream" ? "stream" : "string";
52
+ }
53
+ export {
54
+ attributesToString,
55
+ checkIsNode,
56
+ getSSRConfigByEntry,
57
+ getSSRMode,
58
+ safeReplace,
59
+ serializeErrors
60
+ };
@@ -0,0 +1,29 @@
1
+ function isObject(obj) {
2
+ return obj && typeof obj === "object" && !Array.isArray(obj);
3
+ }
4
+ function merge(target, ...sources) {
5
+ if (!sources.length) {
6
+ return target;
7
+ }
8
+ const source = sources.shift();
9
+ if (isObject(target) && isObject(source)) {
10
+ for (const key in source) {
11
+ if (isObject(source[key])) {
12
+ if (!target[key]) {
13
+ Object.assign(target, {
14
+ [key]: {}
15
+ });
16
+ }
17
+ merge(target[key], source[key]);
18
+ } else {
19
+ Object.assign(target, {
20
+ [key]: source[key]
21
+ });
22
+ }
23
+ }
24
+ }
25
+ return merge(target, ...sources);
26
+ }
27
+ export {
28
+ merge
29
+ };
@@ -1,6 +1,7 @@
1
1
  import path from "path";
2
2
  import { fs, getEntryOptions, isRouterV5, isSSGEntry, isUseSSRBundle, logger } from "@modern-js/utils";
3
3
  import { FILE_SYSTEM_ROUTES_FILE_NAME } from "../constants";
4
+ import { ENTRY_POINT_RUNTIME_GLOBAL_CONTEXT_FILE_NAME } from "../../../cli/constants";
4
5
  import * as templates from "./templates";
5
6
  import { getClientRoutes, getClientRoutesLegacy } from "./getClientRoutes";
6
7
  import { getServerLoadersFile, getServerCombinedModueFile } from "./utils";
@@ -10,16 +11,13 @@ const generateCode = async (appContext, config, entrypoints, api) => {
10
11
  const hookRunners = api.useHookRunners();
11
12
  const isV5 = isRouterV5(config);
12
13
  const getRoutes = isV5 ? getClientRoutesLegacy : getClientRoutes;
13
- const importsStatemets = /* @__PURE__ */ new Map();
14
14
  const oldVersion = typeof (config === null || config === void 0 ? void 0 : config.runtime.router) === "object" ? Boolean((config === null || config === void 0 ? void 0 : config.runtime.router).oldVersion) : false;
15
15
  await Promise.all(entrypoints.map(generateEntryCode));
16
- return {
17
- importsStatemets
18
- };
19
16
  async function generateEntryCode(entrypoint) {
20
- const { entryName, isMainEntry, isAutoMount, fileSystemRoutes } = entrypoint;
17
+ const { entryName, isMainEntry, isAutoMount, pageRoutesEntry, nestedRoutesEntry } = entrypoint;
18
+ const { metaName } = api.useAppContext();
21
19
  if (isAutoMount) {
22
- if (fileSystemRoutes) {
20
+ if (pageRoutesEntry || nestedRoutesEntry) {
23
21
  var _config_output;
24
22
  let initialRoutes = [];
25
23
  let nestedRoutes = null;
@@ -69,6 +67,7 @@ const generateCode = async (appContext, config, entrypoints, api) => {
69
67
  const { code } = await hookRunners.beforeGenerateRoutes({
70
68
  entrypoint,
71
69
  code: await templates.fileSystemRoutes({
70
+ metaName,
72
71
  routes,
73
72
  ssrMode: useSSG ? "string" : mode,
74
73
  nestedRoutesEntry: entrypoint.nestedRoutesEntry,
@@ -95,6 +94,10 @@ const generateCode = async (appContext, config, entrypoints, api) => {
95
94
  }
96
95
  }
97
96
  };
97
+ function generatorRegisterCode(internalDirectory, entryName, code) {
98
+ fs.outputFileSync(path.resolve(internalDirectory, `./${entryName}/${ENTRY_POINT_RUNTIME_GLOBAL_CONTEXT_FILE_NAME}`), code, "utf8");
99
+ }
98
100
  export {
99
- generateCode
101
+ generateCode,
102
+ generatorRegisterCode
100
103
  };
@@ -1,8 +1,8 @@
1
1
  import path from "path";
2
- import { fs, getEntryOptions, isSSGEntry, slash } from "@modern-js/utils";
2
+ import { findExists, formatImportPath, fs, getEntryOptions, isSSGEntry, slash } from "@modern-js/utils";
3
3
  import { ROUTE_MODULES } from "@modern-js/utils/universal/constants";
4
- import { TEMP_LOADERS_DIR } from "../constants";
5
- import { getServerLoadersFile } from "./utils";
4
+ import { APP_CONFIG_NAME, APP_INIT_EXPORTED, TEMP_LOADERS_DIR } from "../constants";
5
+ import { getPathWithoutExt, getServerLoadersFile, parseModule, replaceWithAlias } from "./utils";
6
6
  const routesForServer = ({ routes }) => {
7
7
  const loaders = [];
8
8
  const actions = [];
@@ -85,7 +85,7 @@ const routesForServer = ({ routes }) => {
85
85
  };
86
86
  const createMatchReg = (keyword) => new RegExp(`("${keyword}":\\s)"([^
87
87
  ]+)"`, "g");
88
- const fileSystemRoutes = async ({ routes, ssrMode, nestedRoutesEntry, entryName, internalDirectory, splitRouteChunks = true }) => {
88
+ const fileSystemRoutes = async ({ metaName, routes, ssrMode, nestedRoutesEntry, entryName, internalDirectory, splitRouteChunks = true }) => {
89
89
  const components = [];
90
90
  const loadings = [];
91
91
  const errors = [];
@@ -96,7 +96,7 @@ const fileSystemRoutes = async ({ routes, ssrMode, nestedRoutesEntry, entryName,
96
96
  const loadersMapFile = path.join(internalDirectory, entryName, TEMP_LOADERS_DIR, "map.json");
97
97
  const importLazyCode = `
98
98
  import { lazy } from "react";
99
- import loadable, { lazy as loadableLazy } from "@modern-js/runtime/loadable"
99
+ import loadable, { lazy as loadableLazy } from "@${metaName}/runtime/loadable"
100
100
  `;
101
101
  let rootLayoutCode = ``;
102
102
  const getDataLoaderPath = ({ loaderId, clientData, action, inline, routeId }) => {
@@ -295,7 +295,7 @@ const fileSystemRoutes = async ({ routes, ssrMode, nestedRoutesEntry, entryName,
295
295
  await fs.ensureFile(loadersMapFile);
296
296
  await fs.writeJSON(loadersMapFile, loadersMap);
297
297
  const importRuntimeRouterCode = `
298
- import { createShouldRevalidate, handleRouteModule, handleRouteModuleError} from '@modern-js/runtime/router';
298
+ import { createShouldRevalidate, handleRouteModule, handleRouteModuleError} from '@${metaName}/runtime/router';
299
299
  `;
300
300
  const routeModulesCode = `
301
301
  if(typeof document !== 'undefined'){
@@ -328,8 +328,62 @@ function ssrLoaderCombinedModule(entrypoints, entrypoint, config, appContext) {
328
328
  }
329
329
  return null;
330
330
  }
331
+ const runtimeGlobalContext = async ({ metaName, srcDirectory, nestedRoutesEntry, internalSrcAlias, globalApp }) => {
332
+ const imports = [
333
+ `import { setGlobalContext } from '@${metaName}/runtime/context';`
334
+ ];
335
+ if (nestedRoutesEntry) {
336
+ const rootLayoutPath = path.join(nestedRoutesEntry, "layout");
337
+ const rootLayoutFile = findExists([
338
+ ".js",
339
+ ".ts",
340
+ ".jsx",
341
+ ".tsx"
342
+ ].map((ext) => `${rootLayoutPath}${ext}`));
343
+ if (rootLayoutFile) {
344
+ const rootLayoutBuffer = await fs.readFile(rootLayoutFile);
345
+ const rootLayout = rootLayoutBuffer.toString();
346
+ const [, moduleExports] = await parseModule({
347
+ source: rootLayout.toString(),
348
+ filename: rootLayoutFile
349
+ });
350
+ const hasAppConfig = moduleExports.some((e) => e.n === APP_CONFIG_NAME);
351
+ const hasAppInit = moduleExports.some((e) => e.n === APP_INIT_EXPORTED);
352
+ const layoutPath = formatImportPath(getPathWithoutExt(replaceWithAlias(srcDirectory, rootLayoutFile, internalSrcAlias)));
353
+ if (hasAppConfig) {
354
+ imports.push(`import { config as appConfig } from '${layoutPath}';`);
355
+ } else {
356
+ imports.push(`let appConfig;`);
357
+ }
358
+ if (hasAppInit) {
359
+ imports.push(`import { init as appInit } from '${layoutPath}';`);
360
+ } else {
361
+ imports.push(`let appInit;`);
362
+ }
363
+ }
364
+ } else {
365
+ imports.push(`let appConfig;`);
366
+ imports.push(`let appInit;`);
367
+ }
368
+ if (globalApp) {
369
+ imports.push(`import layoutApp from '${formatImportPath(globalApp.replace(srcDirectory, internalSrcAlias))}';`);
370
+ } else {
371
+ imports.push(`let layoutApp;`);
372
+ }
373
+ return `${imports.join("\n")}
374
+
375
+ import { routes } from './routes.js';
376
+
377
+ setGlobalContext({
378
+ layoutApp,
379
+ routes,
380
+ appInit,
381
+ appConfig,
382
+ });`;
383
+ };
331
384
  export {
332
385
  fileSystemRoutes,
333
386
  routesForServer,
387
+ runtimeGlobalContext,
334
388
  ssrLoaderCombinedModule
335
389
  };
@@ -10,6 +10,8 @@ const FILE_SYSTEM_ROUTES_INDEX = "index";
10
10
  const FILE_SYSTEM_ROUTES_IGNORED_REGEX = /\.(d|test|spec|e2e)\.(js|jsx|ts|tsx)$/;
11
11
  const FILE_SYSTEM_ROUTES_DYNAMIC_REGEXP = /^\[(\S+)\]([*+?]?)$/;
12
12
  const FILE_SYSTEM_ROUTES_COMPONENTS_DIR = "internal_components";
13
+ const APP_CONFIG_NAME = "config";
14
+ const APP_INIT_EXPORTED = "init";
13
15
  const NESTED_ROUTE = {
14
16
  LAYOUT_FILE: "layout",
15
17
  LAYOUT_CONFIG_FILE: "layout.config",
@@ -32,6 +34,8 @@ const NESTED_ROUTE = {
32
34
  };
33
35
  export {
34
36
  ACTION_EXPORT_NAME,
37
+ APP_CONFIG_NAME,
38
+ APP_INIT_EXPORTED,
35
39
  FILE_SYSTEM_ROUTES_COMPONENTS_DIR,
36
40
  FILE_SYSTEM_ROUTES_DYNAMIC_REGEXP,
37
41
  FILE_SYSTEM_ROUTES_FILE_NAME,
@@ -18,31 +18,30 @@ const modifyEntrypoints = (entrypoints, config = {}) => {
18
18
  if (!entrypoint.isAutoMount) {
19
19
  return entrypoint;
20
20
  }
21
+ if (entrypoint === null || entrypoint === void 0 ? void 0 : entrypoint.isCustomSourceEntry) {
22
+ if (entrypoint.fileSystemRoutes) {
23
+ if (isRouterV5(config)) {
24
+ throw Error("Custom entries with conventional routing not support use react router v5!");
25
+ }
26
+ entrypoint.nestedRoutesEntry = entrypoint.entry;
27
+ }
28
+ return entrypoint;
29
+ }
21
30
  const isHasApp = hasApp(entrypoint.absoluteEntryDir);
22
31
  if (isHasApp) {
23
32
  return entrypoint;
24
33
  }
25
- const isHasNestedRoutes = hasNestedRoutes(entrypoint.absoluteEntryDir);
26
34
  const isHasPages = hasPages(entrypoint.absoluteEntryDir);
27
- if (!isHasNestedRoutes && !isHasPages && !entrypoint.fileSystemRoutes) {
28
- return entrypoint;
29
- }
30
- if (entrypoint.fileSystemRoutes && !isRouterV5(config)) {
31
- entrypoint.nestedRoutesEntry = entrypoint.entry;
32
- } else if (!entrypoint.fileSystemRoutes) {
35
+ if (isHasPages) {
36
+ entrypoint.pageRoutesEntry = path.join(entrypoint.absoluteEntryDir, PAGES_DIR_NAME);
33
37
  entrypoint.fileSystemRoutes = {
38
+ ...entrypoint.fileSystemRoutes,
34
39
  globalApp: findExists(JS_EXTENSIONS.map((ext) => path.resolve(entrypoint.absoluteEntryDir, `./${PAGES_DIR_NAME}/${FILE_SYSTEM_ROUTES_GLOBAL_LAYOUT}${ext}`)))
35
40
  };
36
- if (isHasPages) {
37
- entrypoint.entry = path.join(entrypoint.absoluteEntryDir, PAGES_DIR_NAME);
38
- entrypoint.pageRoutesEntry = entrypoint.entry;
39
- }
40
- if (isHasNestedRoutes) {
41
- entrypoint.entry = path.join(entrypoint.absoluteEntryDir, NESTED_ROUTES_DIR);
42
- entrypoint.nestedRoutesEntry = entrypoint.entry;
43
- }
44
- } else {
45
- throw Error("Custom entries with conventional routing not support use react router v5!");
41
+ }
42
+ const isHasNestedRoutes = hasNestedRoutes(entrypoint.absoluteEntryDir);
43
+ if (isHasNestedRoutes) {
44
+ entrypoint.nestedRoutesEntry = path.join(entrypoint.absoluteEntryDir, NESTED_ROUTES_DIR);
46
45
  }
47
46
  return entrypoint;
48
47
  });
@@ -2,17 +2,32 @@ import path from "path";
2
2
  import { cloneDeep } from "@modern-js/utils/lodash";
3
3
  import { modifyEntrypoints } from "./entry";
4
4
  import { isPageComponentFile } from "./code/utils";
5
+ import * as templates from "./code/templates";
5
6
  let originEntrypoints = [];
6
7
  async function handleModifyEntrypoints(api, entrypoints) {
7
8
  const config = api.useResolvedConfigContext();
8
- const newEntryPoints = modifyEntrypoints(entrypoints, config);
9
+ return modifyEntrypoints(entrypoints, config);
10
+ }
11
+ async function handleGeneratorEntryCode(api, entrypoints) {
9
12
  const appContext = api.useAppContext();
13
+ const { internalDirectory } = api.useAppContext();
10
14
  const resolvedConfig = api.useResolvedConfigContext();
11
- appContext.entrypoints = newEntryPoints;
12
- originEntrypoints = cloneDeep(newEntryPoints);
13
- const { generateCode } = await import("./code");
15
+ const { generatorRegisterCode, generateCode } = await import("./code");
16
+ originEntrypoints = cloneDeep(entrypoints);
14
17
  await generateCode(appContext, resolvedConfig, entrypoints, api);
15
- return newEntryPoints;
18
+ await Promise.all(entrypoints.map(async (entrypoint) => {
19
+ if (entrypoint.nestedRoutesEntry || entrypoint.pageRoutesEntry) {
20
+ var _entrypoint_fileSystemRoutes;
21
+ generatorRegisterCode(internalDirectory, entrypoint.entryName, await templates.runtimeGlobalContext({
22
+ metaName: appContext.metaName,
23
+ srcDirectory: appContext.srcDirectory,
24
+ nestedRoutesEntry: entrypoint.nestedRoutesEntry,
25
+ internalSrcAlias: appContext.internalSrcAlias,
26
+ globalApp: (_entrypoint_fileSystemRoutes = entrypoint.fileSystemRoutes) === null || _entrypoint_fileSystemRoutes === void 0 ? void 0 : _entrypoint_fileSystemRoutes.globalApp
27
+ }));
28
+ }
29
+ }));
30
+ return entrypoints;
16
31
  }
17
32
  async function handleFileChange(api, e) {
18
33
  const appContext = api.useAppContext();
@@ -32,5 +47,6 @@ async function handleFileChange(api, e) {
32
47
  }
33
48
  export {
34
49
  handleFileChange,
50
+ handleGeneratorEntryCode,
35
51
  handleModifyEntrypoints
36
52
  };
@@ -1,19 +1,38 @@
1
- import { getEntryOptions, createRuntimeExportsUtils, isRouterV5 as isV5 } from "@modern-js/utils";
1
+ import { createRuntimeExportsUtils, getEntryOptions, isRouterV5 as isV5 } from "@modern-js/utils";
2
2
  import { isRouteEntry } from "./entry";
3
- import { handleFileChange, handleModifyEntrypoints } from "./handler";
3
+ import { handleFileChange, handleGeneratorEntryCode, handleModifyEntrypoints } from "./handler";
4
4
  import { isRouteEntry as isRouteEntry2 } from "./entry";
5
5
  import { handleFileChange as handleFileChange2, handleModifyEntrypoints as handleModifyEntrypoints2 } from "./handler";
6
- const PLUGIN_IDENTIFIER = "router";
7
- const ROUTES_IDENTIFIER = "routes";
8
6
  const routerPlugin = () => ({
9
7
  name: "@modern-js/plugin-router",
10
8
  required: [
11
9
  "@modern-js/runtime"
12
10
  ],
13
11
  setup: (api) => {
14
- const runtimeConfigMap = /* @__PURE__ */ new Map();
15
- let pluginsExportsUtils;
16
12
  return {
13
+ _internalRuntimePlugins({ entrypoint, plugins }) {
14
+ var _getEntryOptions;
15
+ const { packageName, serverRoutes, metaName } = api.useAppContext();
16
+ const serverBase = serverRoutes.filter((route) => route.entryName === entrypoint.entryName).map((route) => route.urlPath).sort((a, b) => a.length - b.length > 0 ? -1 : 1);
17
+ const userConfig = api.useResolvedConfigContext();
18
+ const routerConfig = (_getEntryOptions = getEntryOptions(entrypoint.entryName, entrypoint.isMainEntry, userConfig.runtime, userConfig.runtimeByEntries, packageName)) === null || _getEntryOptions === void 0 ? void 0 : _getEntryOptions.router;
19
+ if (routerConfig && !isV5(userConfig)) {
20
+ plugins.push({
21
+ name: "router",
22
+ path: `@${metaName}/runtime/router`,
23
+ config: typeof routerConfig === "boolean" ? {
24
+ serverBase
25
+ } : {
26
+ ...routerConfig,
27
+ serverBase
28
+ }
29
+ });
30
+ }
31
+ return {
32
+ entrypoint,
33
+ plugins
34
+ };
35
+ },
17
36
  checkEntryPoint({ path, entry }) {
18
37
  return {
19
38
  path,
@@ -21,8 +40,6 @@ const routerPlugin = () => ({
21
40
  };
22
41
  },
23
42
  config() {
24
- const appContext = api.useAppContext();
25
- pluginsExportsUtils = createRuntimeExportsUtils(appContext.internalDirectory, "plugins");
26
43
  return {
27
44
  source: {
28
45
  include: [
@@ -32,10 +49,7 @@ const routerPlugin = () => ({
32
49
  /node_modules\/react-router/,
33
50
  /node_modules\/react-router-dom/,
34
51
  /node_modules\/@remix-run\/router/
35
- ],
36
- alias: {
37
- "@modern-js/runtime/plugins": pluginsExportsUtils.getPath()
38
- }
52
+ ]
39
53
  }
40
54
  };
41
55
  },
@@ -45,56 +59,15 @@ const routerPlugin = () => ({
45
59
  entrypoints: newEntryPoints
46
60
  };
47
61
  },
48
- modifyEntryImports({ entrypoint, imports }) {
49
- const { entryName, isMainEntry, fileSystemRoutes } = entrypoint;
50
- const userConfig = api.useResolvedConfigContext();
51
- const { packageName } = api.useAppContext();
52
- const runtimeConfig = getEntryOptions(entryName, isMainEntry, userConfig.runtime, userConfig.runtimeByEntries, packageName);
53
- runtimeConfigMap.set(entryName, runtimeConfig);
54
- if (runtimeConfig === null || runtimeConfig === void 0 ? void 0 : runtimeConfig.router) {
55
- if (!isV5(userConfig)) {
56
- imports.push({
57
- value: "@modern-js/runtime/plugins",
58
- specifiers: [
59
- {
60
- imported: PLUGIN_IDENTIFIER
61
- }
62
- ]
63
- });
64
- }
65
- } else if (fileSystemRoutes) {
66
- throw new Error(`should enable runtime.router for entry ${entryName}`);
67
- }
68
- return {
69
- entrypoint,
70
- imports
71
- };
72
- },
73
- modifyEntryRuntimePlugins({ entrypoint, plugins }) {
74
- const { entryName, fileSystemRoutes } = entrypoint;
75
- const { serverRoutes } = api.useAppContext();
76
- const userConfig = api.useResolvedConfigContext();
77
- const runtimeConfig = runtimeConfigMap.get(entryName);
78
- if (runtimeConfig.router && !isV5(userConfig)) {
79
- const serverBase = serverRoutes.filter((route) => route.entryName === entryName).map((route) => route.urlPath).sort((a, b) => a.length - b.length > 0 ? -1 : 1);
80
- plugins.push({
81
- name: PLUGIN_IDENTIFIER,
82
- options: JSON.stringify({
83
- serverBase,
84
- ...runtimeConfig.router,
85
- routesConfig: fileSystemRoutes ? `{ ${ROUTES_IDENTIFIER}, globalApp: App }` : void 0
86
- }).replace(/"routesConfig"\s*:\s*"((\S|\s)+)"/g, '"routesConfig": $1,')
87
- });
88
- }
89
- return {
90
- entrypoint,
91
- plugins
92
- };
62
+ async generateEntryCode({ entrypoints }) {
63
+ await handleGeneratorEntryCode(api, entrypoints);
93
64
  },
94
65
  addRuntimeExports() {
95
66
  const userConfig = api.useResolvedConfigContext();
67
+ const { internalDirectory, metaName } = api.useAppContext();
68
+ const pluginsExportsUtils = createRuntimeExportsUtils(internalDirectory, "plugins");
96
69
  if (!isV5(userConfig)) {
97
- pluginsExportsUtils.addExport(`export { default as router } from '@modern-js/runtime/router'`);
70
+ pluginsExportsUtils.addExport(`export { default as router } from '@${metaName}/runtime/router'`);
98
71
  }
99
72
  },
100
73
  async fileChange(e) {
@@ -70,7 +70,7 @@ async function loadRouteModule(route, routeAssets) {
70
70
  }
71
71
  try {
72
72
  await Promise.all(chunkIds.map((chunkId) => {
73
- return __webpack_chunk_load__ === null || __webpack_chunk_load__ === void 0 ? void 0 : __webpack_chunk_load__(String(chunkId));
73
+ return __webpack_chunk_load__ === null || __webpack_chunk_load__ === void 0 ? void 0 : __webpack_chunk_load__(chunkId);
74
74
  }));
75
75
  } catch (error) {
76
76
  console.error(error);
@@ -20,5 +20,6 @@ export {
20
20
  handleRouteModuleError,
21
21
  modifyRoutes,
22
22
  renderRoutes,
23
+ routerPlugin,
23
24
  useRouteLoaderData
24
25
  };
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useContext, useMemo } from "react";
3
3
  import { createBrowserRouter, createHashRouter, RouterProvider, createRoutesFromElements, useMatches, useLocation, useHref } from "@modern-js/runtime-utils/router";
4
- import hoistNonReactStatics from "hoist-non-react-statics";
5
4
  import { parsedJSONFromElement } from "@modern-js/runtime-utils/parsed";
5
+ import { getGlobalLayoutApp, getGlobalRoutes } from "../../core/context";
6
6
  import { RuntimeReactContext } from "../../core";
7
7
  import { modifyRoutes as modifyRoutesHook } from "./hooks";
8
8
  import { deserializeErrors, renderRoutes, urlJoin } from "./utils";
@@ -19,19 +19,14 @@ function modifyRoutes(modifyFunction) {
19
19
  console.error("It is not allowed to modify routes config after create router.");
20
20
  }
21
21
  }
22
- const routerPlugin = ({
23
- serverBase = [],
24
- supportHtml5History = true,
25
- basename = "",
26
- // when the current child app has multiple entries, there is a problem,
27
- // so we have added a new parameter, the parameter will replace basename and baseUrl after the major version.
28
- originalBaseUrl = "",
29
- routesConfig,
30
- createRoutes
31
- }) => {
22
+ const routerPlugin = ({ serverBase = [], supportHtml5History = true, basename = "", routesConfig, createRoutes }) => {
32
23
  const select = (pathname) => serverBase.find((baseUrl) => pathname.search(baseUrl) === 0) || "/";
33
24
  let routes = [];
34
- finalRouteConfig = routesConfig;
25
+ finalRouteConfig = {
26
+ routes: getGlobalRoutes(),
27
+ globalApp: getGlobalLayoutApp(),
28
+ ...routesConfig
29
+ };
35
30
  window._SERVER_DATA = parsedJSONFromElement("__MODERN_SERVER_DATA__");
36
31
  return {
37
32
  name: "@modern-js/plugin-router",
@@ -56,7 +51,7 @@ const routerPlugin = ({
56
51
  });
57
52
  },
58
53
  hoc: ({ App, config }, next) => {
59
- if (!finalRouteConfig && !createRoutes) {
54
+ if (!finalRouteConfig.routes && !createRoutes) {
60
55
  return next({
61
56
  App,
62
57
  config
@@ -64,8 +59,8 @@ const routerPlugin = ({
64
59
  }
65
60
  const getRouteApp = () => {
66
61
  const useCreateRouter = (props) => {
67
- var _window__SERVER_DATA;
68
- const baseUrl = originalBaseUrl || ((_window__SERVER_DATA = window._SERVER_DATA) === null || _window__SERVER_DATA === void 0 ? void 0 : _window__SERVER_DATA.router.baseUrl) || select(location.pathname);
62
+ var _config_router, _window__SERVER_DATA;
63
+ const baseUrl = ((config === null || config === void 0 ? void 0 : (_config_router = config.router) === null || _config_router === void 0 ? void 0 : _config_router.basename) || ((_window__SERVER_DATA = window._SERVER_DATA) === null || _window__SERVER_DATA === void 0 ? void 0 : _window__SERVER_DATA.router.baseUrl) || select(location.pathname)).replace(/^\/*/, "/");
69
64
  const _basename = baseUrl === "/" ? urlJoin(baseUrl, basename) : baseUrl;
70
65
  let hydrationData = window._ROUTER_DATA;
71
66
  const runtimeContext = useContext(RuntimeReactContext);
@@ -119,24 +114,12 @@ const routerPlugin = ({
119
114
  return (props) => {
120
115
  beforeCreateRouter = false;
121
116
  const router = useCreateRouter(props);
122
- return /* @__PURE__ */ _jsx(App, {
123
- ...props,
124
- children: /* @__PURE__ */ _jsx(RouterProvider, {
125
- router
126
- })
117
+ return /* @__PURE__ */ _jsx(RouterProvider, {
118
+ router
127
119
  });
128
120
  };
129
121
  };
130
- let RouteApp = getRouteApp();
131
- if (App) {
132
- RouteApp = hoistNonReactStatics(RouteApp, App);
133
- }
134
- if (routesConfig === null || routesConfig === void 0 ? void 0 : routesConfig.globalApp) {
135
- return next({
136
- App: hoistNonReactStatics(RouteApp, routesConfig.globalApp),
137
- config
138
- });
139
- }
122
+ const RouteApp = getRouteApp();
140
123
  return next({
141
124
  App: RouteApp,
142
125
  config