@modern-js/runtime 2.54.6 → 2.55.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 (301) 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 +92 -17
  5. package/dist/cjs/{ssr/cli → cli/ssr}/index.js +7 -86
  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 +122 -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/{ssr/serverRender/renderToString → core/server/string}/styledComponent.js +20 -11
  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/router/cli/code/index.js +10 -6
  39. package/dist/cjs/router/cli/code/templates.js +58 -3
  40. package/dist/cjs/router/cli/constants.js +6 -0
  41. package/dist/cjs/router/cli/entry.js +2 -4
  42. package/dist/cjs/router/cli/handler.js +22 -5
  43. package/dist/cjs/router/cli/index.js +29 -56
  44. package/dist/cjs/router/runtime/index.js +2 -0
  45. package/dist/cjs/router/runtime/plugin.js +13 -40
  46. package/dist/cjs/router/runtime/plugin.node.js +17 -32
  47. package/dist/cjs/state/cli/index.js +7 -35
  48. package/dist/cjs/state/runtime/plugin.js +6 -15
  49. package/dist/esm/cli/alias.js +30 -0
  50. package/dist/esm/cli/code.js +131 -0
  51. package/dist/esm/cli/constants.js +15 -1
  52. package/dist/esm/cli/index.js +111 -18
  53. package/dist/esm/{ssr/cli → cli/ssr}/babel-plugin-ssr-loader-id.js +1 -1
  54. package/dist/esm/cli/ssr/index.js +110 -0
  55. package/dist/esm/{ssr/cli → cli/ssr}/loadable-bundler-plugin.js +1 -1
  56. package/dist/esm/cli/template.js +53 -0
  57. package/dist/esm/cli/template.server.js +26 -0
  58. package/dist/esm/core/browser/hydrate.js +88 -0
  59. package/dist/esm/core/browser/index.js +224 -0
  60. package/dist/esm/core/compatible.js +48 -90
  61. package/dist/esm/core/context/index.js +32 -1
  62. package/dist/esm/core/context/runtime.js +3 -2
  63. package/dist/esm/core/loader/useLoader.js +2 -2
  64. package/dist/esm/core/plugin/base.js +0 -4
  65. package/dist/esm/core/plugin/index.js +10 -0
  66. package/dist/esm/core/react/index.js +31 -0
  67. package/dist/esm/{ssr/serverRender → core/server}/helmet.js +10 -2
  68. package/dist/esm/core/server/index.js +16 -0
  69. package/dist/esm/core/server/react/prerender/type.js +0 -0
  70. package/dist/esm/core/server/requestHandler.js +181 -0
  71. package/dist/esm/core/server/server.js +8 -0
  72. package/dist/esm/core/server/shared.js +10 -0
  73. package/dist/esm/core/server/stream/afterTemplate.js +60 -0
  74. package/dist/esm/{ssr/serverRender/renderToStream/bulidTemplate.before.js → core/server/stream/beforeTemplate.js} +10 -11
  75. package/dist/esm/{ssr/serverRender/renderToStream/renderToPipe.js → core/server/stream/createReadableStream.js} +43 -38
  76. package/dist/esm/core/server/stream/createReadableStream.worker.js +142 -0
  77. package/dist/esm/core/server/stream/index.js +6 -0
  78. package/dist/esm/core/server/stream/shared.js +102 -0
  79. package/dist/esm/core/server/stream/template.js +42 -0
  80. package/dist/esm/core/server/string/index.js +219 -0
  81. package/dist/esm/{ssr/serverRender/renderToString → core/server/string}/loadable.js +10 -13
  82. package/dist/esm/{ssr → core/server/string}/prefetch.js +27 -21
  83. package/dist/esm/core/server/string/ssrData.js +83 -0
  84. package/dist/esm/core/server/string/styledComponent.js +34 -0
  85. package/dist/esm/core/server/string/types.js +0 -0
  86. package/dist/esm/core/server/tracer.js +34 -0
  87. package/dist/esm/core/server/utils.js +83 -0
  88. package/dist/esm/router/cli/code/index.js +11 -8
  89. package/dist/esm/router/cli/code/templates.js +100 -7
  90. package/dist/esm/router/cli/constants.js +4 -0
  91. package/dist/esm/router/cli/entry.js +2 -4
  92. package/dist/esm/router/cli/handler.js +70 -8
  93. package/dist/esm/router/cli/index.js +52 -65
  94. package/dist/esm/router/runtime/index.js +1 -0
  95. package/dist/esm/router/runtime/plugin.js +12 -20
  96. package/dist/esm/router/runtime/plugin.node.js +19 -34
  97. package/dist/esm/state/cli/index.js +9 -38
  98. package/dist/esm/state/runtime/plugin.js +5 -5
  99. package/dist/esm-node/cli/alias.js +28 -0
  100. package/dist/esm-node/cli/code.js +90 -0
  101. package/dist/esm-node/cli/constants.js +15 -1
  102. package/dist/esm-node/cli/index.js +84 -13
  103. package/dist/esm-node/{ssr/cli → cli/ssr}/babel-plugin-ssr-loader-id.js +1 -1
  104. package/dist/esm-node/cli/ssr/index.js +87 -0
  105. package/dist/esm-node/{ssr/cli → cli/ssr}/loadable-bundler-plugin.js +1 -1
  106. package/dist/esm-node/cli/template.js +64 -0
  107. package/dist/esm-node/cli/template.server.js +47 -0
  108. package/dist/esm-node/core/browser/hydrate.js +81 -0
  109. package/dist/esm-node/core/browser/index.js +88 -0
  110. package/dist/esm-node/core/compatible.js +39 -74
  111. package/dist/esm-node/core/context/index.js +32 -1
  112. package/dist/esm-node/core/context/runtime.js +3 -3
  113. package/dist/esm-node/core/loader/useLoader.js +2 -2
  114. package/dist/esm-node/core/plugin/base.js +0 -4
  115. package/dist/esm-node/core/plugin/index.js +5 -0
  116. package/dist/esm-node/core/react/index.js +27 -0
  117. package/dist/esm-node/{ssr/serverRender → core/server}/helmet.js +6 -2
  118. package/dist/esm-node/core/server/index.js +12 -0
  119. package/dist/esm-node/core/server/requestHandler.js +132 -0
  120. package/dist/esm-node/core/server/server.js +8 -0
  121. package/dist/esm-node/core/server/shared.js +6 -0
  122. package/dist/esm-node/core/server/stream/afterTemplate.js +56 -0
  123. package/dist/esm-node/{ssr/serverRender/renderToStream/bulidTemplate.before.js → core/server/stream/beforeTemplate.js} +8 -9
  124. package/dist/esm-node/{ssr/serverRender/renderToStream/renderToPipe.js → core/server/stream/createReadableStream.js} +41 -35
  125. package/dist/esm-node/core/server/stream/createReadableStream.worker.js +71 -0
  126. package/dist/esm-node/core/server/stream/index.js +6 -0
  127. package/dist/esm-node/core/server/stream/shared.js +75 -0
  128. package/dist/esm-node/core/server/stream/template.js +15 -0
  129. package/dist/esm-node/core/server/string/index.js +118 -0
  130. package/dist/esm-node/{ssr/serverRender/renderToString → core/server/string}/loadable.js +8 -11
  131. package/dist/esm-node/core/server/string/prefetch.js +78 -0
  132. package/dist/esm-node/core/server/string/ssrData.js +76 -0
  133. package/dist/esm-node/core/server/string/styledComponent.js +29 -0
  134. package/dist/esm-node/core/server/tracer.js +33 -0
  135. package/dist/esm-node/core/server/utils.js +60 -0
  136. package/dist/esm-node/router/cli/code/index.js +8 -5
  137. package/dist/esm-node/router/cli/code/templates.js +60 -6
  138. package/dist/esm-node/router/cli/constants.js +4 -0
  139. package/dist/esm-node/router/cli/entry.js +2 -4
  140. package/dist/esm-node/router/cli/handler.js +21 -5
  141. package/dist/esm-node/router/cli/index.js +31 -58
  142. package/dist/esm-node/router/runtime/index.js +1 -0
  143. package/dist/esm-node/router/runtime/plugin.js +13 -30
  144. package/dist/esm-node/router/runtime/plugin.node.js +18 -33
  145. package/dist/esm-node/state/cli/index.js +8 -36
  146. package/dist/esm-node/state/runtime/plugin.js +5 -5
  147. package/dist/types/cli/alias.d.ts +7 -0
  148. package/dist/types/cli/code.d.ts +10 -0
  149. package/dist/types/cli/constants.d.ts +7 -0
  150. package/dist/types/cli/index.d.ts +8 -1
  151. package/dist/types/cli/template.d.ts +27 -0
  152. package/dist/types/cli/template.server.d.ts +15 -0
  153. package/dist/types/common.d.ts +9 -0
  154. package/dist/types/core/browser/hydrate.d.ts +5 -0
  155. package/dist/types/core/browser/index.d.ts +2 -0
  156. package/dist/types/core/config.d.ts +5 -6
  157. package/dist/types/core/constants.d.ts +5 -0
  158. package/dist/types/core/context/index.d.ts +34 -1
  159. package/dist/types/core/context/runtime.d.ts +2 -2
  160. package/dist/types/core/plugin/base.d.ts +3 -33
  161. package/dist/types/core/plugin/index.d.ts +2 -11
  162. package/dist/types/core/plugin/runner.d.ts +1 -11
  163. package/dist/types/core/react/index.d.ts +6 -0
  164. package/dist/types/core/server/helmet.d.ts +3 -0
  165. package/dist/types/core/server/index.d.ts +4 -0
  166. package/dist/types/core/server/requestHandler.d.ts +11 -0
  167. package/dist/types/core/server/server.d.ts +4 -0
  168. package/dist/types/core/server/shared.d.ts +9 -0
  169. package/dist/types/core/server/stream/afterTemplate.d.ts +12 -0
  170. package/dist/types/core/server/stream/beforeTemplate.d.ts +8 -0
  171. package/dist/types/core/server/stream/createReadableStream.d.ts +2 -0
  172. package/dist/types/core/server/stream/createReadableStream.worker.d.ts +2 -0
  173. package/dist/types/core/server/stream/index.d.ts +1 -0
  174. package/dist/types/core/server/stream/shared.d.ts +22 -0
  175. package/dist/types/core/server/stream/template.d.ts +9 -0
  176. package/dist/types/core/server/string/index.d.ts +2 -0
  177. package/dist/types/core/server/string/loadable.d.ts +35 -0
  178. package/dist/types/core/server/string/prefetch.d.ts +15 -0
  179. package/dist/types/core/server/string/ssrData.d.ts +18 -0
  180. package/dist/types/core/server/string/styledComponent.d.ts +11 -0
  181. package/dist/types/core/server/string/types.d.ts +12 -0
  182. package/dist/types/core/server/tracer.d.ts +21 -0
  183. package/dist/types/core/server/utils.d.ts +19 -0
  184. package/dist/types/core/types.d.ts +35 -1
  185. package/dist/types/index.d.ts +1 -1
  186. package/dist/types/router/cli/code/index.d.ts +3 -4
  187. package/dist/types/router/cli/code/templates.d.ts +9 -1
  188. package/dist/types/router/cli/constants.d.ts +2 -0
  189. package/dist/types/router/cli/handler.d.ts +1 -0
  190. package/dist/types/router/runtime/index.d.ts +1 -0
  191. package/dist/types/router/runtime/plugin.d.ts +1 -1
  192. package/dist/types/router/runtime/plugin.node.d.ts +2 -2
  193. package/dist/types/router/runtime/types.d.ts +1 -2
  194. package/dist/types/state/runtime/plugin.d.ts +2 -2
  195. package/package.json +49 -42
  196. package/types/router.d.ts +7 -2
  197. package/dist/cjs/ssr/index.js +0 -183
  198. package/dist/cjs/ssr/index.node.js +0 -86
  199. package/dist/cjs/ssr/prefetch.js +0 -92
  200. package/dist/cjs/ssr/serverRender/index.js +0 -39
  201. package/dist/cjs/ssr/serverRender/renderToStream/buildTemplate.after.js +0 -74
  202. package/dist/cjs/ssr/serverRender/renderToStream/index.js +0 -74
  203. package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.js +0 -104
  204. package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.worker.js +0 -108
  205. package/dist/cjs/ssr/serverRender/renderToString/buildHtml.js +0 -52
  206. package/dist/cjs/ssr/serverRender/renderToString/entry.js +0 -179
  207. package/dist/cjs/ssr/serverRender/renderToString/render.js +0 -61
  208. package/dist/cjs/ssr/serverRender/tracker.js +0 -113
  209. package/dist/cjs/ssr/utils.js +0 -94
  210. package/dist/esm/ssr/cli/index.js +0 -194
  211. package/dist/esm/ssr/index.js +0 -169
  212. package/dist/esm/ssr/index.node.js +0 -78
  213. package/dist/esm/ssr/serverRender/index.js +0 -55
  214. package/dist/esm/ssr/serverRender/renderToStream/buildTemplate.after.js +0 -48
  215. package/dist/esm/ssr/serverRender/renderToStream/buildTemplate.share.js +0 -12
  216. package/dist/esm/ssr/serverRender/renderToStream/index.js +0 -49
  217. package/dist/esm/ssr/serverRender/renderToStream/renderToPipe.worker.js +0 -164
  218. package/dist/esm/ssr/serverRender/renderToStream/template.js +0 -46
  219. package/dist/esm/ssr/serverRender/renderToString/buildHtml.js +0 -34
  220. package/dist/esm/ssr/serverRender/renderToString/entry.js +0 -257
  221. package/dist/esm/ssr/serverRender/renderToString/index.js +0 -34
  222. package/dist/esm/ssr/serverRender/renderToString/render.js +0 -55
  223. package/dist/esm/ssr/serverRender/renderToString/styledComponent.js +0 -25
  224. package/dist/esm/ssr/serverRender/tracker.js +0 -82
  225. package/dist/esm/ssr/serverRender/utils.js +0 -21
  226. package/dist/esm/ssr/utils.js +0 -59
  227. package/dist/esm-node/ssr/cli/index.js +0 -166
  228. package/dist/esm-node/ssr/index.js +0 -147
  229. package/dist/esm-node/ssr/index.node.js +0 -50
  230. package/dist/esm-node/ssr/prefetch.js +0 -72
  231. package/dist/esm-node/ssr/serverRender/index.js +0 -19
  232. package/dist/esm-node/ssr/serverRender/renderToStream/buildTemplate.after.js +0 -50
  233. package/dist/esm-node/ssr/serverRender/renderToStream/buildTemplate.share.js +0 -8
  234. package/dist/esm-node/ssr/serverRender/renderToStream/index.js +0 -40
  235. package/dist/esm-node/ssr/serverRender/renderToStream/renderToPipe.worker.js +0 -88
  236. package/dist/esm-node/ssr/serverRender/renderToStream/template.js +0 -19
  237. package/dist/esm-node/ssr/serverRender/renderToString/buildHtml.js +0 -24
  238. package/dist/esm-node/ssr/serverRender/renderToString/entry.js +0 -149
  239. package/dist/esm-node/ssr/serverRender/renderToString/index.js +0 -17
  240. package/dist/esm-node/ssr/serverRender/renderToString/render.js +0 -27
  241. package/dist/esm-node/ssr/serverRender/renderToString/styledComponent.js +0 -20
  242. package/dist/esm-node/ssr/serverRender/tracker.js +0 -87
  243. package/dist/esm-node/ssr/serverRender/utils.js +0 -17
  244. package/dist/esm-node/ssr/utils.js +0 -57
  245. package/dist/types/ssr/index.d.ts +0 -11
  246. package/dist/types/ssr/index.node.d.ts +0 -5
  247. package/dist/types/ssr/prefetch.d.ts +0 -16
  248. package/dist/types/ssr/serverRender/helmet.d.ts +0 -2
  249. package/dist/types/ssr/serverRender/index.d.ts +0 -2
  250. package/dist/types/ssr/serverRender/renderToStream/buildTemplate.after.d.ts +0 -7
  251. package/dist/types/ssr/serverRender/renderToStream/buildTemplate.share.d.ts +0 -3
  252. package/dist/types/ssr/serverRender/renderToStream/bulidTemplate.before.d.ts +0 -2
  253. package/dist/types/ssr/serverRender/renderToStream/index.d.ts +0 -3
  254. package/dist/types/ssr/serverRender/renderToStream/renderToPipe.d.ts +0 -7
  255. package/dist/types/ssr/serverRender/renderToStream/renderToPipe.worker.d.ts +0 -12
  256. package/dist/types/ssr/serverRender/renderToStream/template.d.ts +0 -6
  257. package/dist/types/ssr/serverRender/renderToString/buildHtml.d.ts +0 -6
  258. package/dist/types/ssr/serverRender/renderToString/entry.d.ts +0 -24
  259. package/dist/types/ssr/serverRender/renderToString/index.d.ts +0 -2
  260. package/dist/types/ssr/serverRender/renderToString/loadable.d.ts +0 -26
  261. package/dist/types/ssr/serverRender/renderToString/render.d.ts +0 -16
  262. package/dist/types/ssr/serverRender/renderToString/styledComponent.d.ts +0 -15
  263. package/dist/types/ssr/serverRender/tracker.d.ts +0 -20
  264. package/dist/types/ssr/serverRender/types.d.ts +0 -49
  265. package/dist/types/ssr/serverRender/utils.d.ts +0 -9
  266. package/dist/types/ssr/utils.d.ts +0 -10
  267. /package/dist/cjs/{ssr/cli → cli/ssr}/babel-plugin-ssr-loader-id.js +0 -0
  268. /package/dist/cjs/{ssr/cli → cli/ssr}/loadable-bundler-plugin.js +0 -0
  269. /package/dist/cjs/{ssr/react/withCallback/index.js → core/browser/withCallback.js} +0 -0
  270. /package/dist/cjs/{ssr/serverRender → core/server}/constants.js +0 -0
  271. /package/dist/cjs/{ssr → core/server}/react/index.js +0 -0
  272. /package/dist/cjs/{ssr → core/server}/react/nossr/index.js +0 -0
  273. /package/dist/cjs/{ssr → core/server}/react/prerender/index.js +0 -0
  274. /package/dist/cjs/{ssr → core/server}/react/prerender/type.js +0 -0
  275. /package/dist/cjs/{ssr → core/server}/react/prerender/util.js +0 -0
  276. /package/dist/esm/{ssr/react/withCallback/index.js → core/browser/withCallback.js} +0 -0
  277. /package/dist/esm/{ssr/serverRender/types.js → core/constants.js} +0 -0
  278. /package/dist/esm/{ssr/serverRender → core/server}/constants.js +0 -0
  279. /package/dist/esm/{ssr → core/server}/react/index.js +0 -0
  280. /package/dist/esm/{ssr → core/server}/react/nossr/index.js +0 -0
  281. /package/dist/esm/{ssr → core/server}/react/prerender/index.js +0 -0
  282. /package/dist/esm/{ssr → core/server}/react/prerender/util.js +0 -0
  283. /package/dist/esm-node/{ssr/react/withCallback/index.js → core/browser/withCallback.js} +0 -0
  284. /package/dist/esm-node/{ssr/serverRender/types.js → core/constants.js} +0 -0
  285. /package/dist/esm-node/{ssr/serverRender → core/server}/constants.js +0 -0
  286. /package/dist/esm-node/{ssr → core/server}/react/index.js +0 -0
  287. /package/dist/esm-node/{ssr → core/server}/react/nossr/index.js +0 -0
  288. /package/dist/esm-node/{ssr → core/server}/react/prerender/index.js +0 -0
  289. /package/dist/esm-node/{ssr → core/server}/react/prerender/type.js +0 -0
  290. /package/dist/esm-node/{ssr → core/server}/react/prerender/util.js +0 -0
  291. /package/dist/{esm/ssr/react/prerender/type.js → esm-node/core/server/string/types.js} +0 -0
  292. /package/dist/types/{ssr/cli → cli/ssr}/babel-plugin-ssr-loader-id.d.ts +0 -0
  293. /package/dist/types/{ssr/cli → cli/ssr}/index.d.ts +0 -0
  294. /package/dist/types/{ssr/cli → cli/ssr}/loadable-bundler-plugin.d.ts +0 -0
  295. /package/dist/types/{ssr/react/withCallback/index.d.ts → core/browser/withCallback.d.ts} +0 -0
  296. /package/dist/types/{ssr/serverRender → core/server}/constants.d.ts +0 -0
  297. /package/dist/types/{ssr → core/server}/react/index.d.ts +0 -0
  298. /package/dist/types/{ssr → core/server}/react/nossr/index.d.ts +0 -0
  299. /package/dist/types/{ssr → core/server}/react/prerender/index.d.ts +0 -0
  300. /package/dist/types/{ssr → core/server}/react/prerender/type.d.ts +0 -0
  301. /package/dist/types/{ssr → core/server}/react/prerender/util.d.ts +0 -0
@@ -4,8 +4,8 @@ import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
4
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
5
  import { useContext, useMemo } from "react";
6
6
  import { createBrowserRouter, createHashRouter, RouterProvider, createRoutesFromElements, useMatches, useLocation, useHref } from "@modern-js/runtime-utils/router";
7
- import hoistNonReactStatics from "hoist-non-react-statics";
8
7
  import { parsedJSONFromElement } from "@modern-js/runtime-utils/parsed";
8
+ import { getGlobalLayoutApp, getGlobalRoutes } from "../../core/context";
9
9
  import { RuntimeReactContext } from "../../core";
10
10
  import { modifyRoutes as modifyRoutesHook } from "./hooks";
11
11
  import { deserializeErrors, renderRoutes, urlJoin } from "./utils";
@@ -23,14 +23,17 @@ function modifyRoutes(modifyFunction) {
23
23
  }
24
24
  }
25
25
  var routerPlugin = function(param) {
26
- var _param_serverBase = param.serverBase, serverBase = _param_serverBase === void 0 ? [] : _param_serverBase, _param_supportHtml5History = param.supportHtml5History, supportHtml5History = _param_supportHtml5History === void 0 ? true : _param_supportHtml5History, _param_basename = param.basename, basename = _param_basename === void 0 ? "" : _param_basename, _param_originalBaseUrl = param.originalBaseUrl, originalBaseUrl = _param_originalBaseUrl === void 0 ? "" : _param_originalBaseUrl, routesConfig = param.routesConfig, createRoutes = param.createRoutes;
26
+ var _param_serverBase = param.serverBase, serverBase = _param_serverBase === void 0 ? [] : _param_serverBase, _param_supportHtml5History = param.supportHtml5History, supportHtml5History = _param_supportHtml5History === void 0 ? true : _param_supportHtml5History, _param_basename = param.basename, basename = _param_basename === void 0 ? "" : _param_basename, routesConfig = param.routesConfig, createRoutes = param.createRoutes;
27
27
  var select = function(pathname) {
28
28
  return serverBase.find(function(baseUrl) {
29
29
  return pathname.search(baseUrl) === 0;
30
30
  }) || "/";
31
31
  };
32
32
  var routes = [];
33
- finalRouteConfig = routesConfig;
33
+ finalRouteConfig = _object_spread({
34
+ routes: getGlobalRoutes(),
35
+ globalApp: getGlobalLayoutApp()
36
+ }, routesConfig);
34
37
  window._SERVER_DATA = parsedJSONFromElement("__MODERN_SERVER_DATA__");
35
38
  return {
36
39
  name: "@modern-js/plugin-router",
@@ -57,7 +60,7 @@ var routerPlugin = function(param) {
57
60
  },
58
61
  hoc: function(param2, next) {
59
62
  var App = param2.App, config = param2.config;
60
- if (!finalRouteConfig && !createRoutes) {
63
+ if (!finalRouteConfig.routes && !createRoutes) {
61
64
  return next({
62
65
  App,
63
66
  config
@@ -65,8 +68,8 @@ var routerPlugin = function(param) {
65
68
  }
66
69
  var getRouteApp = function() {
67
70
  var useCreateRouter = function(props) {
68
- var _window__SERVER_DATA;
69
- var baseUrl = originalBaseUrl || ((_window__SERVER_DATA = window._SERVER_DATA) === null || _window__SERVER_DATA === void 0 ? void 0 : _window__SERVER_DATA.router.baseUrl) || select(location.pathname);
71
+ var _config_router, _window__SERVER_DATA;
72
+ var 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(/^\/*/, "/");
70
73
  var _basename = baseUrl === "/" ? urlJoin(baseUrl, basename) : baseUrl;
71
74
  var hydrationData = window._ROUTER_DATA;
72
75
  var runtimeContext = useContext(RuntimeReactContext);
@@ -122,23 +125,12 @@ var routerPlugin = function(param) {
122
125
  return function(props) {
123
126
  beforeCreateRouter = false;
124
127
  var router = useCreateRouter(props);
125
- return /* @__PURE__ */ _jsx(App, _object_spread_props(_object_spread({}, props), {
126
- children: /* @__PURE__ */ _jsx(RouterProvider, {
127
- router
128
- })
129
- }));
128
+ return /* @__PURE__ */ _jsx(RouterProvider, {
129
+ router
130
+ });
130
131
  };
131
132
  };
132
133
  var RouteApp = getRouteApp();
133
- if (App) {
134
- RouteApp = hoistNonReactStatics(RouteApp, App);
135
- }
136
- if (routesConfig === null || routesConfig === void 0 ? void 0 : routesConfig.globalApp) {
137
- return next({
138
- App: hoistNonReactStatics(RouteApp, routesConfig.globalApp),
139
- config
140
- });
141
- }
142
134
  return next({
143
135
  App: RouteApp,
144
136
  config
@@ -4,31 +4,20 @@ import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
4
4
  import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
5
5
  import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
6
6
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
7
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
8
8
  import { useContext } from "react";
9
9
  import { createStaticHandler } from "@modern-js/runtime-utils/remix-router";
10
10
  import { createStaticRouter, StaticRouterProvider } from "@modern-js/runtime-utils/node/router";
11
- import hoistNonReactStatics from "hoist-non-react-statics";
12
11
  import { createRoutesFromElements } from "@modern-js/runtime-utils/router";
13
12
  import { reporterCtx, createRequestContext } from "@modern-js/runtime-utils/node";
14
13
  import { time } from "@modern-js/runtime-utils/time";
15
14
  import { LOADER_REPORTER_NAME } from "@modern-js/utils/universal/constants";
16
15
  import { JSX_SHELL_STREAM_END_MARK } from "../../common";
17
16
  import { RuntimeReactContext } from "../../core";
17
+ import { getGlobalLayoutApp, getGlobalRoutes } from "../../core/context";
18
18
  import { renderRoutes, urlJoin } from "./utils";
19
19
  import { modifyRoutes as modifyRoutesHook } from "./hooks";
20
20
  import DeferredDataScripts from "./DeferredDataScripts.node";
21
- function createFetchRequest(req) {
22
- var origin = "".concat(req.protocol, "://").concat(req.host);
23
- var url = new URL(req.originalUrl || req.url, origin);
24
- var controller = new AbortController();
25
- var init = {
26
- method: req.method,
27
- headers: createFetchHeaders(req.headers),
28
- signal: controller.signal
29
- };
30
- return new Request(url.href, init);
31
- }
32
21
  function createFetchHeaders(requestHeaders) {
33
22
  var headers = new Headers();
34
23
  var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
@@ -79,22 +68,26 @@ function createFetchHeaders(requestHeaders) {
79
68
  return headers;
80
69
  }
81
70
  var routerPlugin = function(param) {
82
- var _param_basename = param.basename, basename = _param_basename === void 0 ? "" : _param_basename, _param_originalBaseUrl = param.originalBaseUrl, originalBaseUrl = _param_originalBaseUrl === void 0 ? "" : _param_originalBaseUrl, routesConfig = param.routesConfig, createRoutes = param.createRoutes;
71
+ var _param_basename = param.basename, basename = _param_basename === void 0 ? "" : _param_basename, routesConfig = param.routesConfig, createRoutes = param.createRoutes;
83
72
  return {
84
73
  name: "@modern-js/plugin-router",
85
74
  registerHook: {
86
75
  modifyRoutes: modifyRoutesHook
87
76
  },
88
77
  setup: function(api) {
78
+ var finalRouteConfig = _object_spread({
79
+ routes: getGlobalRoutes(),
80
+ globalApp: getGlobalLayoutApp()
81
+ }, routesConfig);
89
82
  return {
90
83
  init: function init(param2, next) {
91
84
  var context = param2.context;
92
85
  return _async_to_generator(function() {
93
- var _context_ssrContext, _context_ssrContext1, request, ssrMode, nonce, _context_ssrContext_loaderFailureMode, loaderFailureMode, baseUrl, _basename, _context_ssrContext2, reporter, serverTiming, requestContext, routes, runner, query, remixRequest, end, routerContext, cost, router;
86
+ var _context_ssrContext, _context_ssrContext_onTiming, _context_ssrContext1, _context_ssrContext2, request, ssrMode, nonce, _context_ssrContext_loaderFailureMode, loaderFailureMode, baseUrl, _basename, reporter, requestContext, routes, runner, query, remixRequest, end, routerContext, cost, router;
94
87
  return _ts_generator(this, function(_state) {
95
88
  switch (_state.label) {
96
89
  case 0:
97
- if (!routesConfig && !createRoutes) {
90
+ if (!finalRouteConfig.routes && !createRoutes) {
98
91
  return [
99
92
  2,
100
93
  next({
@@ -102,14 +95,14 @@ var routerPlugin = function(param) {
102
95
  })
103
96
  ];
104
97
  }
105
- _context_ssrContext1 = context.ssrContext, request = _context_ssrContext1.request, ssrMode = _context_ssrContext1.mode, nonce = _context_ssrContext1.nonce, _context_ssrContext_loaderFailureMode = _context_ssrContext1.loaderFailureMode, loaderFailureMode = _context_ssrContext_loaderFailureMode === void 0 ? "errorBoundary" : _context_ssrContext_loaderFailureMode;
106
- baseUrl = originalBaseUrl || request.baseUrl;
98
+ _context_ssrContext2 = context.ssrContext, request = _context_ssrContext2.request, ssrMode = _context_ssrContext2.mode, nonce = _context_ssrContext2.nonce, _context_ssrContext_loaderFailureMode = _context_ssrContext2.loaderFailureMode, loaderFailureMode = _context_ssrContext_loaderFailureMode === void 0 ? "errorBoundary" : _context_ssrContext_loaderFailureMode;
99
+ baseUrl = request.baseUrl;
107
100
  _basename = baseUrl === "/" ? urlJoin(baseUrl, basename) : baseUrl;
108
- _context_ssrContext2 = context.ssrContext, reporter = _context_ssrContext2.reporter, serverTiming = _context_ssrContext2.serverTiming;
101
+ reporter = context.ssrContext.reporter;
109
102
  requestContext = createRequestContext((_context_ssrContext = context.ssrContext) === null || _context_ssrContext === void 0 ? void 0 : _context_ssrContext.loaderContext);
110
103
  requestContext.set(reporterCtx, reporter);
111
104
  routes = createRoutes ? createRoutes() : createRoutesFromElements(renderRoutes({
112
- routesConfig,
105
+ routesConfig: finalRouteConfig,
113
106
  ssrMode,
114
107
  props: {
115
108
  nonce
@@ -121,7 +114,7 @@ var routerPlugin = function(param) {
121
114
  query = createStaticHandler(routes, {
122
115
  basename: _basename
123
116
  }).query;
124
- remixRequest = createFetchRequest(request);
117
+ remixRequest = context.ssrContext.request.raw;
125
118
  end = time();
126
119
  return [
127
120
  4,
@@ -132,8 +125,7 @@ var routerPlugin = function(param) {
132
125
  case 1:
133
126
  routerContext = _state.sent();
134
127
  cost = end();
135
- reporter === null || reporter === void 0 ? void 0 : reporter.reportTiming(LOADER_REPORTER_NAME, cost);
136
- serverTiming.addServeTiming(LOADER_REPORTER_NAME, cost);
128
+ (_context_ssrContext1 = context.ssrContext) === null || _context_ssrContext1 === void 0 ? void 0 : (_context_ssrContext_onTiming = _context_ssrContext1.onTiming) === null || _context_ssrContext_onTiming === void 0 ? void 0 : _context_ssrContext_onTiming.call(_context_ssrContext1, LOADER_REPORTER_NAME, cost);
137
129
  if (_instanceof(routerContext, Response)) {
138
130
  return [
139
131
  2,
@@ -148,7 +140,6 @@ var routerPlugin = function(param) {
148
140
  context.remixRouter = router;
149
141
  context.routerContext = routerContext;
150
142
  context.routes = routes;
151
- context.routeManifest = context.ssrContext.routeManifest;
152
143
  return [
153
144
  2,
154
145
  next({
@@ -161,17 +152,17 @@ var routerPlugin = function(param) {
161
152
  },
162
153
  hoc: function(param2, next) {
163
154
  var App = param2.App, config = param2.config;
164
- if (!routesConfig) {
155
+ if (!finalRouteConfig) {
165
156
  return next({
166
157
  App,
167
158
  config
168
159
  });
169
160
  }
170
161
  var getRouteApp = function() {
171
- return function(props) {
162
+ return function() {
172
163
  var _useContext = useContext(RuntimeReactContext), remixRouter = _useContext.remixRouter, routerContext = _useContext.routerContext, ssrContext = _useContext.ssrContext;
173
164
  var nonce = ssrContext.nonce, mode = ssrContext.mode;
174
- return /* @__PURE__ */ _jsxs(App, _object_spread_props(_object_spread({}, props), {
165
+ return /* @__PURE__ */ _jsxs(_Fragment, {
175
166
  children: [
176
167
  /* @__PURE__ */ _jsx(StaticRouterProvider, {
177
168
  router: remixRouter,
@@ -184,16 +175,10 @@ var routerPlugin = function(param) {
184
175
  }),
185
176
  mode === "stream" && JSX_SHELL_STREAM_END_MARK
186
177
  ]
187
- }));
178
+ });
188
179
  };
189
180
  };
190
181
  var RouteApp = getRouteApp();
191
- if (routesConfig === null || routesConfig === void 0 ? void 0 : routesConfig.globalApp) {
192
- return next({
193
- App: hoistNonReactStatics(RouteApp, routesConfig.globalApp),
194
- config
195
- });
196
- }
197
182
  return next({
198
183
  App: RouteApp,
199
184
  config
@@ -1,4 +1,4 @@
1
- import { getEntryOptions, createRuntimeExportsUtils } from "@modern-js/utils";
1
+ import { createRuntimeExportsUtils, getEntryOptions } from "@modern-js/utils";
2
2
  var PLUGIN_IDENTIFIER = "state";
3
3
  var statePlugin = function() {
4
4
  return {
@@ -7,50 +7,19 @@ var statePlugin = function() {
7
7
  "@modern-js/runtime"
8
8
  ],
9
9
  setup: function(api) {
10
- var stateConfigMap = /* @__PURE__ */ new Map();
11
- var pluginsExportsUtils;
12
10
  return {
13
- config: function config() {
14
- var appContext = api.useAppContext();
15
- pluginsExportsUtils = createRuntimeExportsUtils(appContext.internalDirectory, "plugins");
16
- return {
17
- source: {
18
- alias: {
19
- "@modern-js/runtime/plugins": pluginsExportsUtils.getPath()
20
- }
21
- }
22
- };
23
- },
24
- modifyEntryImports: function modifyEntryImports(param) {
25
- var entrypoint = param.entrypoint, imports = param.imports;
11
+ _internalRuntimePlugins: function _internalRuntimePlugins(param) {
12
+ var entrypoint = param.entrypoint, plugins = param.plugins;
26
13
  var _getEntryOptions;
27
14
  var entryName = entrypoint.entryName, isMainEntry = entrypoint.isMainEntry;
28
15
  var userConfig = api.useResolvedConfigContext();
29
- var packageName = api.useAppContext().packageName;
16
+ var _api_useAppContext = api.useAppContext(), packageName = _api_useAppContext.packageName, metaName = _api_useAppContext.metaName;
30
17
  var stateConfig = (_getEntryOptions = getEntryOptions(entryName, isMainEntry, userConfig.runtime, userConfig.runtimeByEntries, packageName)) === null || _getEntryOptions === void 0 ? void 0 : _getEntryOptions.state;
31
- stateConfigMap.set(entryName, stateConfig);
32
18
  if (stateConfig) {
33
- imports.push({
34
- value: "@modern-js/runtime/plugins",
35
- specifiers: [
36
- {
37
- imported: PLUGIN_IDENTIFIER
38
- }
39
- ]
40
- });
41
- }
42
- return {
43
- entrypoint,
44
- imports
45
- };
46
- },
47
- modifyEntryRuntimePlugins: function modifyEntryRuntimePlugins(param) {
48
- var entrypoint = param.entrypoint, plugins = param.plugins;
49
- var stateOptions = stateConfigMap.get(entrypoint.entryName);
50
- if (stateOptions) {
51
19
  plugins.push({
52
20
  name: PLUGIN_IDENTIFIER,
53
- options: "".concat(JSON.stringify(stateConfigMap.get(entrypoint.entryName)))
21
+ path: "@".concat(metaName, "/runtime/model"),
22
+ config: typeof stateConfig === "boolean" ? {} : stateConfig
54
23
  });
55
24
  }
56
25
  return {
@@ -59,7 +28,9 @@ var statePlugin = function() {
59
28
  };
60
29
  },
61
30
  addRuntimeExports: function addRuntimeExports() {
62
- pluginsExportsUtils.addExport("export { default as state } from '@modern-js/runtime/model'");
31
+ var _api_useAppContext = api.useAppContext(), internalDirectory = _api_useAppContext.internalDirectory, metaName = _api_useAppContext.metaName;
32
+ var pluginsExportsUtils = createRuntimeExportsUtils(internalDirectory, "plugins");
33
+ pluginsExportsUtils.addExport("export { default as state } from '@".concat(metaName, "/runtime/model'"));
63
34
  }
64
35
  };
65
36
  }
@@ -5,7 +5,6 @@ import { jsx as _jsx } from "react/jsx-runtime";
5
5
  import { useContext } from "react";
6
6
  import { createStore } from "@modern-js-reduck/store";
7
7
  import { Provider } from "@modern-js-reduck/react";
8
- import hoistNonReactStatics from "hoist-non-react-statics";
9
8
  import { immer, effects, autoActions, devtools } from "../plugins";
10
9
  import { RuntimeReactContext } from "../../core";
11
10
  import { isBrowser } from "../../common";
@@ -54,7 +53,7 @@ var getStoreConfig = function(config) {
54
53
  storeConfig.plugins = plugins;
55
54
  return storeConfig;
56
55
  };
57
- var state = function(config) {
56
+ var statePlugin = function(config) {
58
57
  return {
59
58
  name: "@modern-js/plugin-state",
60
59
  setup: function() {
@@ -71,7 +70,7 @@ var state = function(config) {
71
70
  });
72
71
  };
73
72
  return next({
74
- App: hoistNonReactStatics(getStateApp, App),
73
+ App: getStateApp,
75
74
  config: _$config
76
75
  });
77
76
  },
@@ -99,8 +98,9 @@ var state = function(config) {
99
98
  }
100
99
  };
101
100
  };
102
- var plugin_default = state;
101
+ var plugin_default = statePlugin;
103
102
  export * from "../plugins";
104
103
  export {
105
- plugin_default as default
104
+ plugin_default as default,
105
+ statePlugin
106
106
  };
@@ -0,0 +1,28 @@
1
+ import path from "path";
2
+ import { ENTRY_POINT_REGISTER_FILE_NAME } from "./constants";
3
+ const builderPluginAlias = ({ entrypoints, internalDirectory, metaName }) => ({
4
+ name: "runtime:alias",
5
+ setup(api) {
6
+ api.modifyRsbuildConfig((userConfig, { mergeRsbuildConfig }) => {
7
+ const entrypointsAlias = {};
8
+ const mainEntrypointsAlias = {};
9
+ entrypoints.forEach((entrypoint) => {
10
+ entrypointsAlias[`@${metaName}/runtime/registry/${entrypoint.entryName}`] = path.join(internalDirectory, entrypoint.entryName, ENTRY_POINT_REGISTER_FILE_NAME);
11
+ if (entrypoint.isMainEntry) {
12
+ mainEntrypointsAlias[`@${metaName}/runtime/registry`] = path.join(internalDirectory, entrypoint.entryName, ENTRY_POINT_REGISTER_FILE_NAME);
13
+ }
14
+ });
15
+ return mergeRsbuildConfig(userConfig, {
16
+ source: {
17
+ alias: {
18
+ ...entrypointsAlias,
19
+ ...mainEntrypointsAlias
20
+ }
21
+ }
22
+ });
23
+ });
24
+ }
25
+ });
26
+ export {
27
+ builderPluginAlias
28
+ };
@@ -0,0 +1,90 @@
1
+ import path from "path";
2
+ import { MAIN_ENTRY_NAME, fs } from "@modern-js/utils";
3
+ import { INDEX_FILE_NAME, ENTRY_BOOTSTRAP_FILE_NAME, ENTRY_POINT_FILE_NAME, ENTRY_POINT_REGISTER_FILE_NAME, ENTRY_POINT_RUNTIME_GLOBAL_CONTEXT_FILE_NAME, ENTRY_POINT_RUNTIME_REGISTER_FILE_NAME, SERVER_ENTRY_POINT_FILE_NAME } from "./constants";
4
+ import * as template from "./template";
5
+ import * as serverTemplate from "./template.server";
6
+ function getSSRMode(entry = MAIN_ENTRY_NAME, config) {
7
+ const { ssr, ssrByEntries } = config.server;
8
+ if (config.output.ssg) {
9
+ return "string";
10
+ }
11
+ return checkSSRMode((ssrByEntries === null || ssrByEntries === void 0 ? void 0 : ssrByEntries[entry]) || ssr);
12
+ function checkSSRMode(ssr2) {
13
+ if (!ssr2) {
14
+ return false;
15
+ }
16
+ if (typeof ssr2 === "boolean") {
17
+ return ssr2 ? "string" : false;
18
+ }
19
+ return ssr2.mode === "stream" ? "stream" : "string";
20
+ }
21
+ }
22
+ const generateCode = async (entrypoints, appContext, config, onCollectRuntimePlugins) => {
23
+ const { mountId } = config.html;
24
+ const { enableAsyncEntry } = config.source;
25
+ const { runtimeConfigFile, internalDirectory, internalSrcAlias, metaName, srcDirectory } = appContext;
26
+ await Promise.all(entrypoints.map(async (entrypoint) => {
27
+ const { entryName, isAutoMount, entry, customEntry, customBootstrap, customServerEntry } = entrypoint;
28
+ const { plugins: runtimePlugins } = await onCollectRuntimePlugins({
29
+ entrypoint,
30
+ plugins: []
31
+ });
32
+ if (isAutoMount) {
33
+ const indexCode = template.index({
34
+ srcDirectory,
35
+ internalSrcAlias,
36
+ metaName,
37
+ entry,
38
+ entryName,
39
+ customEntry,
40
+ customBootstrap,
41
+ mountId
42
+ });
43
+ const indexFile = path.resolve(internalDirectory, `./${entryName}/${ENTRY_POINT_FILE_NAME}`);
44
+ fs.outputFileSync(indexFile, indexCode, "utf8");
45
+ if (enableAsyncEntry) {
46
+ const bootstrapFile = path.resolve(internalDirectory, `./${entryName}/${ENTRY_BOOTSTRAP_FILE_NAME}`);
47
+ fs.outputFileSync(bootstrapFile, `import('./${INDEX_FILE_NAME}');`, "utf8");
48
+ }
49
+ const ssrMode = getSSRMode(entryName, config);
50
+ if (ssrMode) {
51
+ const indexServerCode = serverTemplate.serverIndex({
52
+ entry,
53
+ entryName,
54
+ internalSrcAlias,
55
+ metaName,
56
+ mode: ssrMode,
57
+ customServerEntry,
58
+ srcDirectory
59
+ });
60
+ const indexServerFile = path.resolve(internalDirectory, `./${entryName}/${SERVER_ENTRY_POINT_FILE_NAME}`);
61
+ fs.outputFileSync(indexServerFile, indexServerCode, "utf8");
62
+ }
63
+ const registerCode = template.register();
64
+ const registerFile = path.resolve(internalDirectory, `./${entryName}/${ENTRY_POINT_REGISTER_FILE_NAME}`);
65
+ fs.outputFileSync(registerFile, registerCode, "utf8");
66
+ const registerRuntimeCode = template.runtimeRegister({
67
+ entryName,
68
+ srcDirectory,
69
+ internalSrcAlias,
70
+ metaName,
71
+ runtimeConfigFile,
72
+ runtimePlugins
73
+ });
74
+ const registerRuntimeFile = path.resolve(internalDirectory, `./${entryName}/${ENTRY_POINT_RUNTIME_REGISTER_FILE_NAME}`);
75
+ fs.outputFileSync(registerRuntimeFile, registerRuntimeCode, "utf8");
76
+ const contextCode = template.runtimeGlobalContext({
77
+ srcDirectory,
78
+ internalSrcAlias,
79
+ metaName,
80
+ entry,
81
+ customEntry
82
+ });
83
+ const contextFile = path.resolve(internalDirectory, `./${entryName}/${ENTRY_POINT_RUNTIME_GLOBAL_CONTEXT_FILE_NAME}`);
84
+ fs.outputFileSync(contextFile, contextCode, "utf8");
85
+ }
86
+ }));
87
+ };
88
+ export {
89
+ generateCode
90
+ };
@@ -1,4 +1,18 @@
1
1
  const APP_FILE_NAME = "App";
2
+ const ENTRY_POINT_FILE_NAME = "index.jsx";
3
+ const SERVER_ENTRY_POINT_FILE_NAME = "index.server.jsx";
4
+ const INDEX_FILE_NAME = "index";
5
+ const ENTRY_BOOTSTRAP_FILE_NAME = "bootstrap.jsx";
6
+ const ENTRY_POINT_RUNTIME_REGISTER_FILE_NAME = "runtime-register.js";
7
+ const ENTRY_POINT_RUNTIME_GLOBAL_CONTEXT_FILE_NAME = "runtime-global-context.js";
8
+ const ENTRY_POINT_REGISTER_FILE_NAME = "register.js";
2
9
  export {
3
- APP_FILE_NAME
10
+ APP_FILE_NAME,
11
+ ENTRY_BOOTSTRAP_FILE_NAME,
12
+ ENTRY_POINT_FILE_NAME,
13
+ ENTRY_POINT_REGISTER_FILE_NAME,
14
+ ENTRY_POINT_RUNTIME_GLOBAL_CONTEXT_FILE_NAME,
15
+ ENTRY_POINT_RUNTIME_REGISTER_FILE_NAME,
16
+ INDEX_FILE_NAME,
17
+ SERVER_ENTRY_POINT_FILE_NAME
4
18
  };
@@ -1,11 +1,16 @@
1
- import { isReact18, cleanRequireCache } from "@modern-js/utils";
1
+ import path from "path";
2
+ import { isReact18 as checkIsReact18, cleanRequireCache, createRuntimeExportsUtils } from "@modern-js/utils";
3
+ import { rspack } from "@rsbuild/core";
2
4
  import { statePlugin } from "../state/cli";
3
- import { ssrPlugin } from "../ssr/cli";
4
5
  import { routerPlugin } from "../router/cli";
5
6
  import { documentPlugin } from "../document/cli";
7
+ import { ssrPlugin } from "./ssr";
6
8
  import { isRuntimeEntry } from "./entry";
9
+ import { ENTRY_BOOTSTRAP_FILE_NAME, ENTRY_POINT_FILE_NAME } from "./constants";
10
+ import { generateCode } from "./code";
11
+ import { builderPluginAlias } from "./alias";
7
12
  import { isRuntimeEntry as isRuntimeEntry2 } from "./entry";
8
- const runtimePlugin = () => ({
13
+ const runtimePlugin = (params) => ({
9
14
  name: "@modern-js/runtime",
10
15
  post: [
11
16
  "@modern-js/plugin-ssr",
@@ -15,23 +20,58 @@ const runtimePlugin = () => ({
15
20
  "@modern-js/plugin-design-token"
16
21
  ],
17
22
  // the order of runtime plugins is affected by runtime hooks, mainly `init` and `hoc` hooks
18
- usePlugins: [
23
+ usePlugins: (params === null || params === void 0 ? void 0 : params.plugins) || [
19
24
  ssrPlugin(),
20
- statePlugin(),
21
25
  routerPlugin(),
26
+ statePlugin(),
22
27
  documentPlugin()
23
28
  ],
24
29
  setup: (api) => {
25
30
  return {
26
- checkEntryPoint({ path, entry }) {
31
+ checkEntryPoint({ path: path2, entry }) {
27
32
  return {
28
- path,
29
- entry: entry || isRuntimeEntry(path)
33
+ path: path2,
34
+ entry: entry || isRuntimeEntry(path2)
30
35
  };
31
36
  },
37
+ modifyEntrypoints({ entrypoints }) {
38
+ const { internalDirectory } = api.useAppContext();
39
+ const { source: { enableAsyncEntry } } = api.useResolvedConfigContext();
40
+ const newEntryPoints = entrypoints.map((entrypoint) => {
41
+ if (entrypoint.isAutoMount) {
42
+ entrypoint.internalEntry = path.resolve(internalDirectory, `./${entrypoint.entryName}/${enableAsyncEntry ? ENTRY_BOOTSTRAP_FILE_NAME : ENTRY_POINT_FILE_NAME}`);
43
+ }
44
+ return entrypoint;
45
+ });
46
+ return {
47
+ entrypoints: newEntryPoints
48
+ };
49
+ },
50
+ async generateEntryCode({ entrypoints }) {
51
+ const appContext = api.useAppContext();
52
+ const resolvedConfig = api.useResolvedConfigContext();
53
+ const runners = api.useHookRunners();
54
+ await generateCode(entrypoints, appContext, resolvedConfig, runners._internalRuntimePlugins);
55
+ },
56
+ /* Note that the execution time of the config hook is before prepare.
57
+ /* This means that the entry information cannot be obtained in the config hook.
58
+ /* Therefore, aliases cannot be set directly in the config.
59
+ */
60
+ prepare() {
61
+ const { builder, entrypoints, internalDirectory, metaName } = api.useAppContext();
62
+ builder === null || builder === void 0 ? void 0 : builder.addPlugins([
63
+ builderPluginAlias({
64
+ entrypoints,
65
+ internalDirectory,
66
+ metaName
67
+ })
68
+ ]);
69
+ },
32
70
  config() {
33
- const appDir = api.useAppContext().appDirectory;
34
- process.env.IS_REACT18 = isReact18(appDir).toString();
71
+ const { appDirectory, metaName, internalDirectory } = api.useAppContext();
72
+ const isReact18 = checkIsReact18(appDirectory);
73
+ process.env.IS_REACT18 = isReact18.toString();
74
+ const pluginsExportsUtils = createRuntimeExportsUtils(internalDirectory, "plugins");
35
75
  return {
36
76
  runtime: {},
37
77
  runtimeByEntries: {},
@@ -42,7 +82,11 @@ const runtimePlugin = () => ({
42
82
  * But it will not be installed under the user project.
43
83
  * So need to add alias
44
84
  */
45
- "styled-components": require.resolve("styled-components")
85
+ "styled-components": require.resolve("styled-components"),
86
+ /**
87
+ * Compatible with the reference path of the old version of the plugin.
88
+ */
89
+ [`@${metaName}/runtime/plugins`]: pluginsExportsUtils.getPath()
46
90
  },
47
91
  globalVars: {
48
92
  "process.env.IS_REACT18": process.env.IS_REACT18
@@ -54,6 +98,29 @@ const runtimePlugin = () => ({
54
98
  topLevelImportPaths: [
55
99
  "@modern-js/runtime/styled"
56
100
  ]
101
+ },
102
+ /**
103
+ * Add IgnorePlugin to fix react-dom/client import error when use react17
104
+ */
105
+ webpackChain: (chain, { webpack }) => {
106
+ if (!isReact18) {
107
+ chain.plugin("ignore-plugin").use(webpack.IgnorePlugin, [
108
+ {
109
+ resourceRegExp: /^react-dom\/client$/,
110
+ contextRegExp: /./
111
+ }
112
+ ]);
113
+ }
114
+ },
115
+ rspack: (_config, { appendPlugins }) => {
116
+ if (!isReact18) {
117
+ appendPlugins([
118
+ new rspack.IgnorePlugin({
119
+ resourceRegExp: /^react-dom\/client$/,
120
+ contextRegExp: /./
121
+ })
122
+ ]);
123
+ }
57
124
  }
58
125
  }
59
126
  };
@@ -62,7 +129,7 @@ const runtimePlugin = () => ({
62
129
  cleanRequireCache([
63
130
  require.resolve("../state/cli"),
64
131
  require.resolve("../router/cli"),
65
- require.resolve("../ssr/cli")
132
+ require.resolve("./ssr")
66
133
  ]);
67
134
  }
68
135
  };
@@ -71,6 +138,10 @@ const runtimePlugin = () => ({
71
138
  var cli_default = runtimePlugin;
72
139
  export {
73
140
  cli_default as default,
141
+ documentPlugin,
74
142
  isRuntimeEntry2 as isRuntimeEntry,
75
- runtimePlugin
143
+ routerPlugin,
144
+ runtimePlugin,
145
+ ssrPlugin,
146
+ statePlugin
76
147
  };
@@ -7,7 +7,7 @@ import { Buffer as Buffer2 } from "buffer";
7
7
  import * as t from "@babel/types";
8
8
  import { get } from "@modern-js/utils/lodash";
9
9
  var require_babel_plugin_ssr_loader_id = __commonJS({
10
- "src/ssr/cli/babel-plugin-ssr-loader-id.ts"(exports, module) {
10
+ "src/cli/ssr/babel-plugin-ssr-loader-id.ts"(exports, module) {
11
11
  const RUNTIME_PACKAGE_NAMES = [
12
12
  "@modern-js/runtime"
13
13
  ];