@bleedingdev/modern-js-server-core 3.2.0-ultramodern.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +26 -0
  3. package/dist/cjs/adapters/node/helper/index.js +55 -0
  4. package/dist/cjs/adapters/node/helper/loadCache.js +58 -0
  5. package/dist/cjs/adapters/node/helper/loadConfig.js +78 -0
  6. package/dist/cjs/adapters/node/helper/loadEnv.js +66 -0
  7. package/dist/cjs/adapters/node/helper/loadPlugin.js +47 -0
  8. package/dist/cjs/adapters/node/helper/utils.js +39 -0
  9. package/dist/cjs/adapters/node/hono.js +95 -0
  10. package/dist/cjs/adapters/node/index.js +87 -0
  11. package/dist/cjs/adapters/node/node.js +180 -0
  12. package/dist/cjs/adapters/node/plugins/index.js +72 -0
  13. package/dist/cjs/adapters/node/plugins/nodeServer.js +43 -0
  14. package/dist/cjs/adapters/node/plugins/resource.js +206 -0
  15. package/dist/cjs/adapters/node/plugins/static.js +379 -0
  16. package/dist/cjs/constants.js +77 -0
  17. package/dist/cjs/context.js +41 -0
  18. package/dist/cjs/helper.js +45 -0
  19. package/dist/cjs/hono.js +46 -0
  20. package/dist/cjs/index.js +247 -0
  21. package/dist/cjs/plugins/compat/hooks.js +80 -0
  22. package/dist/cjs/plugins/compat/index.js +64 -0
  23. package/dist/cjs/plugins/contractGateAutopilot.js +158 -0
  24. package/dist/cjs/plugins/contractGateSnapshotStore.js +239 -0
  25. package/dist/cjs/plugins/default.js +61 -0
  26. package/dist/cjs/plugins/favicon.js +48 -0
  27. package/dist/cjs/plugins/index.js +157 -0
  28. package/dist/cjs/plugins/log.js +92 -0
  29. package/dist/cjs/plugins/mfCache.js +78 -0
  30. package/dist/cjs/plugins/middlewares.js +49 -0
  31. package/dist/cjs/plugins/monitors.js +192 -0
  32. package/dist/cjs/plugins/processedBy.js +50 -0
  33. package/dist/cjs/plugins/render/csrRscRender.js +74 -0
  34. package/dist/cjs/plugins/render/dataHandler.js +53 -0
  35. package/dist/cjs/plugins/render/index.js +158 -0
  36. package/dist/cjs/plugins/render/inject.js +92 -0
  37. package/dist/cjs/plugins/render/render.js +273 -0
  38. package/dist/cjs/plugins/render/renderRscHandler.js +72 -0
  39. package/dist/cjs/plugins/render/serverActionHandler.js +47 -0
  40. package/dist/cjs/plugins/render/ssrCache.js +198 -0
  41. package/dist/cjs/plugins/render/ssrRender.js +96 -0
  42. package/dist/cjs/plugins/render/utils.js +49 -0
  43. package/dist/cjs/plugins/route.js +68 -0
  44. package/dist/cjs/plugins/telemetry.js +1283 -0
  45. package/dist/cjs/serverBase.js +176 -0
  46. package/dist/cjs/types/config/bff.js +18 -0
  47. package/dist/cjs/types/config/dev.js +18 -0
  48. package/dist/cjs/types/config/html.js +18 -0
  49. package/dist/cjs/types/config/index.js +93 -0
  50. package/dist/cjs/types/config/output.js +18 -0
  51. package/dist/cjs/types/config/security.js +18 -0
  52. package/dist/cjs/types/config/server.js +18 -0
  53. package/dist/cjs/types/config/share.js +18 -0
  54. package/dist/cjs/types/config/source.js +18 -0
  55. package/dist/cjs/types/config/tools.js +18 -0
  56. package/dist/cjs/types/index.js +79 -0
  57. package/dist/cjs/types/plugins/base.js +18 -0
  58. package/dist/cjs/types/plugins/index.js +58 -0
  59. package/dist/cjs/types/plugins/plugin.js +18 -0
  60. package/dist/cjs/types/render.js +18 -0
  61. package/dist/cjs/types/requestHandler.js +18 -0
  62. package/dist/cjs/types/server.js +18 -0
  63. package/dist/cjs/utils/entry.js +40 -0
  64. package/dist/cjs/utils/env.js +51 -0
  65. package/dist/cjs/utils/error.js +93 -0
  66. package/dist/cjs/utils/index.js +114 -0
  67. package/dist/cjs/utils/middlewareCollector.js +63 -0
  68. package/dist/cjs/utils/publicDir.js +92 -0
  69. package/dist/cjs/utils/request.js +86 -0
  70. package/dist/cjs/utils/serverConfig.js +43 -0
  71. package/dist/cjs/utils/storage.js +69 -0
  72. package/dist/cjs/utils/transformStream.js +65 -0
  73. package/dist/cjs/utils/warmup.js +40 -0
  74. package/dist/esm/adapters/node/helper/index.mjs +5 -0
  75. package/dist/esm/adapters/node/helper/loadCache.mjs +14 -0
  76. package/dist/esm/adapters/node/helper/loadConfig.mjs +31 -0
  77. package/dist/esm/adapters/node/helper/loadEnv.mjs +22 -0
  78. package/dist/esm/adapters/node/helper/loadPlugin.mjs +13 -0
  79. package/dist/esm/adapters/node/helper/utils.mjs +5 -0
  80. package/dist/esm/adapters/node/hono.mjs +55 -0
  81. package/dist/esm/adapters/node/index.mjs +4 -0
  82. package/dist/esm/adapters/node/node.mjs +130 -0
  83. package/dist/esm/adapters/node/plugins/index.mjs +3 -0
  84. package/dist/esm/adapters/node/plugins/nodeServer.mjs +9 -0
  85. package/dist/esm/adapters/node/plugins/resource.mjs +138 -0
  86. package/dist/esm/adapters/node/plugins/static.mjs +329 -0
  87. package/dist/esm/constants.mjs +28 -0
  88. package/dist/esm/context.mjs +4 -0
  89. package/dist/esm/helper.mjs +11 -0
  90. package/dist/esm/hono.mjs +2 -0
  91. package/dist/esm/index.mjs +12 -0
  92. package/dist/esm/plugins/compat/hooks.mjs +40 -0
  93. package/dist/esm/plugins/compat/index.mjs +27 -0
  94. package/dist/esm/plugins/contractGateAutopilot.mjs +124 -0
  95. package/dist/esm/plugins/contractGateSnapshotStore.mjs +180 -0
  96. package/dist/esm/plugins/default.mjs +27 -0
  97. package/dist/esm/plugins/favicon.mjs +14 -0
  98. package/dist/esm/plugins/index.mjs +11 -0
  99. package/dist/esm/plugins/log.mjs +58 -0
  100. package/dist/esm/plugins/mfCache.mjs +35 -0
  101. package/dist/esm/plugins/middlewares.mjs +15 -0
  102. package/dist/esm/plugins/monitors.mjs +149 -0
  103. package/dist/esm/plugins/processedBy.mjs +16 -0
  104. package/dist/esm/plugins/render/csrRscRender.mjs +40 -0
  105. package/dist/esm/plugins/render/dataHandler.mjs +19 -0
  106. package/dist/esm/plugins/render/index.mjs +84 -0
  107. package/dist/esm/plugins/render/inject.mjs +55 -0
  108. package/dist/esm/plugins/render/render.mjs +230 -0
  109. package/dist/esm/plugins/render/renderRscHandler.mjs +38 -0
  110. package/dist/esm/plugins/render/serverActionHandler.mjs +13 -0
  111. package/dist/esm/plugins/render/ssrCache.mjs +158 -0
  112. package/dist/esm/plugins/render/ssrRender.mjs +62 -0
  113. package/dist/esm/plugins/render/utils.mjs +15 -0
  114. package/dist/esm/plugins/route.mjs +34 -0
  115. package/dist/esm/plugins/telemetry.mjs +1195 -0
  116. package/dist/esm/rslib-runtime.mjs +18 -0
  117. package/dist/esm/serverBase.mjs +139 -0
  118. package/dist/esm/types/config/bff.mjs +0 -0
  119. package/dist/esm/types/config/dev.mjs +0 -0
  120. package/dist/esm/types/config/html.mjs +0 -0
  121. package/dist/esm/types/config/index.mjs +6 -0
  122. package/dist/esm/types/config/output.mjs +0 -0
  123. package/dist/esm/types/config/security.mjs +0 -0
  124. package/dist/esm/types/config/server.mjs +0 -0
  125. package/dist/esm/types/config/share.mjs +0 -0
  126. package/dist/esm/types/config/source.mjs +0 -0
  127. package/dist/esm/types/config/tools.mjs +0 -0
  128. package/dist/esm/types/index.mjs +4 -0
  129. package/dist/esm/types/plugins/base.mjs +0 -0
  130. package/dist/esm/types/plugins/index.mjs +1 -0
  131. package/dist/esm/types/plugins/plugin.mjs +0 -0
  132. package/dist/esm/types/render.mjs +0 -0
  133. package/dist/esm/types/requestHandler.mjs +0 -0
  134. package/dist/esm/types/server.mjs +0 -0
  135. package/dist/esm/utils/entry.mjs +3 -0
  136. package/dist/esm/utils/env.mjs +14 -0
  137. package/dist/esm/utils/error.mjs +53 -0
  138. package/dist/esm/utils/index.mjs +9 -0
  139. package/dist/esm/utils/middlewareCollector.mjs +26 -0
  140. package/dist/esm/utils/publicDir.mjs +33 -0
  141. package/dist/esm/utils/request.mjs +40 -0
  142. package/dist/esm/utils/serverConfig.mjs +9 -0
  143. package/dist/esm/utils/storage.mjs +35 -0
  144. package/dist/esm/utils/transformStream.mjs +28 -0
  145. package/dist/esm/utils/warmup.mjs +6 -0
  146. package/dist/esm-node/adapters/node/helper/index.mjs +6 -0
  147. package/dist/esm-node/adapters/node/helper/loadCache.mjs +15 -0
  148. package/dist/esm-node/adapters/node/helper/loadConfig.mjs +32 -0
  149. package/dist/esm-node/adapters/node/helper/loadEnv.mjs +23 -0
  150. package/dist/esm-node/adapters/node/helper/loadPlugin.mjs +14 -0
  151. package/dist/esm-node/adapters/node/helper/utils.mjs +6 -0
  152. package/dist/esm-node/adapters/node/hono.mjs +56 -0
  153. package/dist/esm-node/adapters/node/index.mjs +5 -0
  154. package/dist/esm-node/adapters/node/node.mjs +131 -0
  155. package/dist/esm-node/adapters/node/plugins/index.mjs +4 -0
  156. package/dist/esm-node/adapters/node/plugins/nodeServer.mjs +10 -0
  157. package/dist/esm-node/adapters/node/plugins/resource.mjs +139 -0
  158. package/dist/esm-node/adapters/node/plugins/static.mjs +330 -0
  159. package/dist/esm-node/constants.mjs +29 -0
  160. package/dist/esm-node/context.mjs +5 -0
  161. package/dist/esm-node/helper.mjs +12 -0
  162. package/dist/esm-node/hono.mjs +3 -0
  163. package/dist/esm-node/index.mjs +13 -0
  164. package/dist/esm-node/plugins/compat/hooks.mjs +41 -0
  165. package/dist/esm-node/plugins/compat/index.mjs +28 -0
  166. package/dist/esm-node/plugins/contractGateAutopilot.mjs +125 -0
  167. package/dist/esm-node/plugins/contractGateSnapshotStore.mjs +182 -0
  168. package/dist/esm-node/plugins/default.mjs +28 -0
  169. package/dist/esm-node/plugins/favicon.mjs +15 -0
  170. package/dist/esm-node/plugins/index.mjs +12 -0
  171. package/dist/esm-node/plugins/log.mjs +59 -0
  172. package/dist/esm-node/plugins/mfCache.mjs +36 -0
  173. package/dist/esm-node/plugins/middlewares.mjs +16 -0
  174. package/dist/esm-node/plugins/monitors.mjs +150 -0
  175. package/dist/esm-node/plugins/processedBy.mjs +17 -0
  176. package/dist/esm-node/plugins/render/csrRscRender.mjs +41 -0
  177. package/dist/esm-node/plugins/render/dataHandler.mjs +20 -0
  178. package/dist/esm-node/plugins/render/index.mjs +85 -0
  179. package/dist/esm-node/plugins/render/inject.mjs +56 -0
  180. package/dist/esm-node/plugins/render/render.mjs +231 -0
  181. package/dist/esm-node/plugins/render/renderRscHandler.mjs +39 -0
  182. package/dist/esm-node/plugins/render/serverActionHandler.mjs +14 -0
  183. package/dist/esm-node/plugins/render/ssrCache.mjs +159 -0
  184. package/dist/esm-node/plugins/render/ssrRender.mjs +63 -0
  185. package/dist/esm-node/plugins/render/utils.mjs +16 -0
  186. package/dist/esm-node/plugins/route.mjs +35 -0
  187. package/dist/esm-node/plugins/telemetry.mjs +1196 -0
  188. package/dist/esm-node/rslib-runtime.mjs +19 -0
  189. package/dist/esm-node/serverBase.mjs +140 -0
  190. package/dist/esm-node/types/config/bff.mjs +1 -0
  191. package/dist/esm-node/types/config/dev.mjs +1 -0
  192. package/dist/esm-node/types/config/html.mjs +1 -0
  193. package/dist/esm-node/types/config/index.mjs +7 -0
  194. package/dist/esm-node/types/config/output.mjs +1 -0
  195. package/dist/esm-node/types/config/security.mjs +1 -0
  196. package/dist/esm-node/types/config/server.mjs +1 -0
  197. package/dist/esm-node/types/config/share.mjs +1 -0
  198. package/dist/esm-node/types/config/source.mjs +1 -0
  199. package/dist/esm-node/types/config/tools.mjs +1 -0
  200. package/dist/esm-node/types/index.mjs +5 -0
  201. package/dist/esm-node/types/plugins/base.mjs +1 -0
  202. package/dist/esm-node/types/plugins/index.mjs +2 -0
  203. package/dist/esm-node/types/plugins/plugin.mjs +1 -0
  204. package/dist/esm-node/types/render.mjs +1 -0
  205. package/dist/esm-node/types/requestHandler.mjs +1 -0
  206. package/dist/esm-node/types/server.mjs +1 -0
  207. package/dist/esm-node/utils/entry.mjs +4 -0
  208. package/dist/esm-node/utils/env.mjs +15 -0
  209. package/dist/esm-node/utils/error.mjs +54 -0
  210. package/dist/esm-node/utils/index.mjs +10 -0
  211. package/dist/esm-node/utils/middlewareCollector.mjs +27 -0
  212. package/dist/esm-node/utils/publicDir.mjs +34 -0
  213. package/dist/esm-node/utils/request.mjs +41 -0
  214. package/dist/esm-node/utils/serverConfig.mjs +10 -0
  215. package/dist/esm-node/utils/storage.mjs +36 -0
  216. package/dist/esm-node/utils/transformStream.mjs +29 -0
  217. package/dist/esm-node/utils/warmup.mjs +7 -0
  218. package/dist/types/adapters/node/helper/index.d.ts +6 -0
  219. package/dist/types/adapters/node/helper/loadCache.d.ts +2 -0
  220. package/dist/types/adapters/node/helper/loadConfig.d.ts +3 -0
  221. package/dist/types/adapters/node/helper/loadEnv.d.ts +3 -0
  222. package/dist/types/adapters/node/helper/loadPlugin.d.ts +3 -0
  223. package/dist/types/adapters/node/helper/utils.d.ts +21 -0
  224. package/dist/types/adapters/node/hono.d.ts +19 -0
  225. package/dist/types/adapters/node/index.d.ts +5 -0
  226. package/dist/types/adapters/node/node.d.ts +17 -0
  227. package/dist/types/adapters/node/plugins/index.d.ts +3 -0
  228. package/dist/types/adapters/node/plugins/nodeServer.d.ts +6 -0
  229. package/dist/types/adapters/node/plugins/resource.d.ts +11 -0
  230. package/dist/types/adapters/node/plugins/static.d.ts +25 -0
  231. package/dist/types/constants.d.ts +26 -0
  232. package/dist/types/context.d.ts +3 -0
  233. package/dist/types/helper.d.ts +10 -0
  234. package/dist/types/hono.d.ts +3 -0
  235. package/dist/types/index.d.ts +14 -0
  236. package/dist/types/plugins/compat/hooks.d.ts +8 -0
  237. package/dist/types/plugins/compat/index.d.ts +3 -0
  238. package/dist/types/plugins/contractGateAutopilot.d.ts +35 -0
  239. package/dist/types/plugins/contractGateSnapshotStore.d.ts +57 -0
  240. package/dist/types/plugins/default.d.ts +7 -0
  241. package/dist/types/plugins/favicon.d.ts +2 -0
  242. package/dist/types/plugins/index.d.ts +11 -0
  243. package/dist/types/plugins/log.d.ts +2 -0
  244. package/dist/types/plugins/mfCache.d.ts +12 -0
  245. package/dist/types/plugins/middlewares.d.ts +2 -0
  246. package/dist/types/plugins/monitors.d.ts +6 -0
  247. package/dist/types/plugins/processedBy.d.ts +2 -0
  248. package/dist/types/plugins/render/csrRscRender.d.ts +2 -0
  249. package/dist/types/plugins/render/dataHandler.d.ts +5 -0
  250. package/dist/types/plugins/render/index.d.ts +3 -0
  251. package/dist/types/plugins/render/inject.d.ts +7 -0
  252. package/dist/types/plugins/render/render.d.ts +16 -0
  253. package/dist/types/plugins/render/renderRscHandler.d.ts +2 -0
  254. package/dist/types/plugins/render/serverActionHandler.d.ts +2 -0
  255. package/dist/types/plugins/render/ssrCache.d.ts +18 -0
  256. package/dist/types/plugins/render/ssrRender.d.ts +26 -0
  257. package/dist/types/plugins/render/utils.d.ts +3 -0
  258. package/dist/types/plugins/route.d.ts +2 -0
  259. package/dist/types/plugins/telemetry.d.ts +309 -0
  260. package/dist/types/serverBase.d.ts +38 -0
  261. package/dist/types/types/config/bff.d.ts +142 -0
  262. package/dist/types/types/config/dev.d.ts +4 -0
  263. package/dist/types/types/config/html.d.ts +15 -0
  264. package/dist/types/types/config/index.d.ts +35 -0
  265. package/dist/types/types/config/output.d.ts +20 -0
  266. package/dist/types/types/config/security.d.ts +4 -0
  267. package/dist/types/types/config/server.d.ts +402 -0
  268. package/dist/types/types/config/share.d.ts +3 -0
  269. package/dist/types/types/config/source.d.ts +7 -0
  270. package/dist/types/types/config/tools.d.ts +2 -0
  271. package/dist/types/types/index.d.ts +4 -0
  272. package/dist/types/types/plugins/base.d.ts +57 -0
  273. package/dist/types/types/plugins/index.d.ts +2 -0
  274. package/dist/types/types/plugins/plugin.d.ts +31 -0
  275. package/dist/types/types/render.d.ts +24 -0
  276. package/dist/types/types/requestHandler.d.ts +48 -0
  277. package/dist/types/types/server.d.ts +67 -0
  278. package/dist/types/utils/entry.d.ts +3 -0
  279. package/dist/types/utils/env.d.ts +2 -0
  280. package/dist/types/utils/error.d.ts +8 -0
  281. package/dist/types/utils/index.d.ts +9 -0
  282. package/dist/types/utils/middlewareCollector.d.ts +12 -0
  283. package/dist/types/utils/publicDir.d.ts +40 -0
  284. package/dist/types/utils/request.d.ts +17 -0
  285. package/dist/types/utils/serverConfig.d.ts +8 -0
  286. package/dist/types/utils/storage.d.ts +5 -0
  287. package/dist/types/utils/transformStream.d.ts +5 -0
  288. package/dist/types/utils/warmup.d.ts +1 -0
  289. package/package.json +103 -0
  290. package/rslib.config.mts +4 -0
  291. package/rstest.config.mts +7 -0
@@ -0,0 +1,273 @@
1
+ "use strict";
2
+ var __webpack_modules__ = {
3
+ "@modern-js/runtime-utils/router" (module) {
4
+ module.exports = require("@modern-js/runtime-utils/router");
5
+ }
6
+ };
7
+ var __webpack_module_cache__ = {};
8
+ function __webpack_require__(moduleId) {
9
+ var cachedModule = __webpack_module_cache__[moduleId];
10
+ if (void 0 !== cachedModule) return cachedModule.exports;
11
+ var module = __webpack_module_cache__[moduleId] = {
12
+ exports: {}
13
+ };
14
+ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
15
+ return module.exports;
16
+ }
17
+ (()=>{
18
+ __webpack_require__.d = (exports1, definition)=>{
19
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
20
+ enumerable: true,
21
+ get: definition[key]
22
+ });
23
+ };
24
+ })();
25
+ (()=>{
26
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
27
+ })();
28
+ (()=>{
29
+ __webpack_require__.r = (exports1)=>{
30
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
31
+ value: 'Module'
32
+ });
33
+ Object.defineProperty(exports1, '__esModule', {
34
+ value: true
35
+ });
36
+ };
37
+ })();
38
+ var __webpack_exports__ = {};
39
+ (()=>{
40
+ __webpack_require__.r(__webpack_exports__);
41
+ __webpack_require__.d(__webpack_exports__, {
42
+ createRender: ()=>createRender
43
+ });
44
+ const universal_namespaceObject = require("@modern-js/utils/universal");
45
+ const trie_router_namespaceObject = require("hono/router/trie-router");
46
+ const external_constants_js_namespaceObject = require("../../constants.js");
47
+ const index_js_namespaceObject = require("../../utils/index.js");
48
+ const external_csrRscRender_js_namespaceObject = require("./csrRscRender.js");
49
+ const external_dataHandler_js_namespaceObject = require("./dataHandler.js");
50
+ const external_renderRscHandler_js_namespaceObject = require("./renderRscHandler.js");
51
+ const external_serverActionHandler_js_namespaceObject = require("./serverActionHandler.js");
52
+ const external_ssrRender_js_namespaceObject = require("./ssrRender.js");
53
+ const DYNAMIC_ROUTE_REG = /\/:./;
54
+ function getRouter(routes) {
55
+ const dynamicRoutes = [];
56
+ const normalRoutes = [];
57
+ routes.forEach((route)=>{
58
+ if (DYNAMIC_ROUTE_REG.test(route.urlPath)) dynamicRoutes.push(route);
59
+ else normalRoutes.push(route);
60
+ });
61
+ const finalRoutes = [
62
+ ...normalRoutes.sort(index_js_namespaceObject.sortRoutes),
63
+ ...dynamicRoutes.sort(index_js_namespaceObject.sortRoutes)
64
+ ];
65
+ const router = new trie_router_namespaceObject.TrieRouter();
66
+ for (const route of finalRoutes){
67
+ const { urlPath: originUrlPath } = route;
68
+ const urlPath = originUrlPath.endsWith('/') ? `${originUrlPath}*` : `${originUrlPath}/*`;
69
+ router.add('*', urlPath, route);
70
+ }
71
+ return router;
72
+ }
73
+ function matchRoute(router, pathname, entryName) {
74
+ const matched = router.match('*', pathname);
75
+ const matchedRoutes = matched[0];
76
+ if (entryName && matchedRoutes.length > 1) {
77
+ for (const [route, params] of matchedRoutes)if (route.entryName === entryName) return [
78
+ route,
79
+ params
80
+ ];
81
+ return [
82
+ void 0,
83
+ {}
84
+ ];
85
+ }
86
+ {
87
+ const result = matchedRoutes[0];
88
+ if (!result) return [
89
+ void 0,
90
+ {}
91
+ ];
92
+ return [
93
+ result[0],
94
+ result[1]
95
+ ];
96
+ }
97
+ }
98
+ function getHeadersWithoutCookie(headers) {
99
+ const _headers = {
100
+ ...headers,
101
+ cookie: void 0
102
+ };
103
+ delete _headers.cookie;
104
+ return _headers;
105
+ }
106
+ async function createRender({ routes, pwd, metaName, staticGenerate, cacheConfig, forceCSR, forceCSRMap, config, onFallback }) {
107
+ const router = getRouter(routes);
108
+ return async (req, { monitors, nodeReq, templates, serverManifest, rscClientManifest, rscSSRManifest, rscServerManifest, locals, matchEntryName, matchPathname, loaderContext, contextForceCSR, reporter })=>{
109
+ const forMatchpathname = matchPathname ?? (0, index_js_namespaceObject.getPathname)(req);
110
+ const [routeInfo, params] = matchRoute(router, forMatchpathname, matchEntryName);
111
+ const framework = (0, universal_namespaceObject.cutNameByHyphen)(metaName || 'modern-js');
112
+ const fallbackHeader = `x-${framework}-ssr-fallback`;
113
+ let fallbackReason = null;
114
+ const fallbackWrapper = async (reason, error)=>{
115
+ fallbackReason = reason;
116
+ return onFallback?.(reason, error);
117
+ };
118
+ if (!routeInfo) return new Response((0, index_js_namespaceObject.createErrorHtml)(404), {
119
+ status: 404,
120
+ headers: {
121
+ 'content-type': 'text/html; charset=UTF-8'
122
+ }
123
+ });
124
+ const html = templates[(0, index_js_namespaceObject.uniqueKeyByRoute)(routeInfo)];
125
+ if (!html) return new Response((0, index_js_namespaceObject.createErrorHtml)(404), {
126
+ status: 404,
127
+ headers: {
128
+ 'content-type': 'text/html; charset=UTF-8'
129
+ }
130
+ });
131
+ const finalForceCSR = routeInfo.entryName ? forceCSRMap?.get(routeInfo.entryName) ?? forceCSR : forceCSR;
132
+ const renderMode = await getRenderMode(req, fallbackHeader, routeInfo.isSSR, finalForceCSR, nodeReq, fallbackWrapper, contextForceCSR);
133
+ const headerData = (0, index_js_namespaceObject.parseHeaders)(req);
134
+ const onError = (e, key)=>{
135
+ monitors?.error(`SSR Error - ${key || (e instanceof Error ? e.name : e)}, error = %s, req.url = %s, req.headers = %o`, e instanceof Error ? e.stack || e.message : e, forMatchpathname, getHeadersWithoutCookie(headerData));
136
+ };
137
+ const onTiming = (name, dur)=>{
138
+ monitors?.timing(name, dur, 'SSR');
139
+ };
140
+ const renderOptions = {
141
+ pwd,
142
+ html,
143
+ routeInfo,
144
+ staticGenerate: staticGenerate || false,
145
+ config,
146
+ nodeReq,
147
+ cacheConfig,
148
+ serverRoutes: routes,
149
+ params,
150
+ monitors,
151
+ locals,
152
+ rscClientManifest,
153
+ rscSSRManifest,
154
+ rscServerManifest,
155
+ serverManifest,
156
+ loaderContext: loaderContext || new Map(),
157
+ onError,
158
+ onTiming,
159
+ reporter
160
+ };
161
+ if (fallbackReason) renderOptions.html = injectFallbackReasonToHtml({
162
+ html: renderOptions.html,
163
+ reason: fallbackReason,
164
+ framework
165
+ });
166
+ let response;
167
+ switch(renderMode){
168
+ case 'data':
169
+ response = await (0, external_dataHandler_js_namespaceObject.dataHandler)(req, renderOptions) || await renderHandler(req, renderOptions, 'ssr', fallbackWrapper, framework);
170
+ break;
171
+ case 'rsc-tree':
172
+ response = await (0, external_renderRscHandler_js_namespaceObject.renderRscHandler)(req, renderOptions);
173
+ break;
174
+ case 'rsc-action':
175
+ response = await (0, external_serverActionHandler_js_namespaceObject.serverActionHandler)(req, renderOptions);
176
+ break;
177
+ case 'ssr':
178
+ case 'csr':
179
+ response = await renderHandler(req, renderOptions, renderMode, fallbackWrapper, framework);
180
+ break;
181
+ default:
182
+ throw new Error(`Unknown render mode: ${renderMode}`);
183
+ }
184
+ if (fallbackReason) response.headers.set(fallbackHeader, `1;reason=${fallbackReason}`);
185
+ return response;
186
+ };
187
+ }
188
+ async function renderHandler(request, options, mode, fallbackWrapper, framework) {
189
+ let response = null;
190
+ const { serverManifest } = options;
191
+ const ssrByRouteIds = options.config.server?.ssrByRouteIds;
192
+ const runtimeEnv = (0, index_js_namespaceObject.getRuntimeEnv)();
193
+ if (serverManifest.nestedRoutesJson && ssrByRouteIds && ssrByRouteIds?.length > 0 && 'node' === runtimeEnv) {
194
+ const { nestedRoutesJson } = serverManifest;
195
+ const routes = nestedRoutesJson?.[options.routeInfo.entryName];
196
+ if (routes) {
197
+ const { matchRoutes } = __webpack_require__("@modern-js/runtime-utils/router");
198
+ const url = new URL(request.url);
199
+ const matchedRoutes = matchRoutes(routes, url.pathname, options.routeInfo.urlPath);
200
+ if (matchedRoutes) {
201
+ const lastMatch = matchedRoutes[matchedRoutes.length - 1];
202
+ if (!lastMatch?.route?.id || !ssrByRouteIds.includes(lastMatch.route.id)) response = await csrRender(request, options);
203
+ } else response = await csrRender(request, options);
204
+ }
205
+ }
206
+ if ('ssr' !== mode || response) response = await csrRender(request, options);
207
+ else try {
208
+ response = await (0, external_ssrRender_js_namespaceObject.ssrRender)(request, options);
209
+ } catch (e) {
210
+ options.onError(e, index_js_namespaceObject.ErrorDigest.ERENDER);
211
+ await fallbackWrapper('error', e);
212
+ response = await csrRender(request, {
213
+ ...options,
214
+ html: injectFallbackReasonToHtml({
215
+ html: options.html,
216
+ reason: 'error',
217
+ framework
218
+ })
219
+ });
220
+ }
221
+ const { routeInfo } = options;
222
+ applyExtendHeaders(response, routeInfo);
223
+ return response;
224
+ function applyExtendHeaders(r, route) {
225
+ Object.entries(route.responseHeaders || {}).forEach(([k, v])=>{
226
+ r.headers.set(k, v);
227
+ });
228
+ }
229
+ }
230
+ async function getRenderMode(req, fallbackHeader, isSSR, forceCSR, nodeReq, onFallback, contextForceCSR) {
231
+ const query = (0, index_js_namespaceObject.parseQuery)(req);
232
+ if (req.headers.get('x-rsc-action')) return 'rsc-action';
233
+ if (req.headers.get('x-rsc-tree')) return 'rsc-tree';
234
+ if (!isSSR) return 'csr';
235
+ {
236
+ if (query.__loader) return 'data';
237
+ const fallbackHeaderValue = req.headers.get(fallbackHeader) || nodeReq?.headers[fallbackHeader];
238
+ if (forceCSR && (query.csr || fallbackHeaderValue || contextForceCSR)) {
239
+ if (query.csr) await onFallback?.('query');
240
+ else {
241
+ const reason = fallbackHeaderValue?.split(';')[1]?.split('=')[1];
242
+ await onFallback?.(reason ? `header,${reason}` : 'header');
243
+ }
244
+ return 'csr';
245
+ }
246
+ return 'ssr';
247
+ }
248
+ }
249
+ function injectFallbackReasonToHtml({ html, reason, framework }) {
250
+ const tag = `<script id="__${framework}_ssr_fallback_reason__" type="application/json">${JSON.stringify({
251
+ reason
252
+ })}</script>`;
253
+ return html.replace(/<\/head>/, `${tag}</head>`);
254
+ }
255
+ async function csrRender(request, options) {
256
+ const { html } = options;
257
+ if (process.env.MODERN_DISABLE_INJECT_RSC_DATA || !options.routeInfo.isRSC) return new Response(html, {
258
+ status: 200,
259
+ headers: new Headers({
260
+ 'content-type': 'text/html; charset=UTF-8',
261
+ [external_constants_js_namespaceObject.X_MODERNJS_RENDER]: 'client'
262
+ })
263
+ });
264
+ return (0, external_csrRscRender_js_namespaceObject.csrRscRender)(request, options);
265
+ }
266
+ })();
267
+ exports.createRender = __webpack_exports__.createRender;
268
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
269
+ "createRender"
270
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
271
+ Object.defineProperty(exports, '__esModule', {
272
+ value: true
273
+ });
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ renderRscHandler: ()=>renderRscHandler
28
+ });
29
+ const constants_namespaceObject = require("@modern-js/utils/universal/constants");
30
+ const external_utils_js_namespaceObject = require("./utils.js");
31
+ const renderRscHandler = async (req, options)=>{
32
+ const { routeInfo, serverManifest, rscSSRManifest, rscClientManifest, rscServerManifest, locals, params, loaderContext, monitors, onError, onTiming, staticGenerate } = options;
33
+ const serverBundle = serverManifest?.renderBundles?.[routeInfo.entryName || constants_namespaceObject.MAIN_ENTRY_NAME];
34
+ const loadableStats = serverManifest.loadableStats || {};
35
+ const routeManifest = serverManifest.routeManifest || {};
36
+ const config = (0, external_utils_js_namespaceObject.createRequestHandlerConfig)(options.config);
37
+ const requestHandlerOptions = {
38
+ resource: {
39
+ route: routeInfo,
40
+ loadableStats,
41
+ routeManifest,
42
+ entryName: routeInfo.entryName || constants_namespaceObject.MAIN_ENTRY_NAME
43
+ },
44
+ config,
45
+ params,
46
+ loaderContext,
47
+ rscSSRManifest,
48
+ rscClientManifest,
49
+ rscServerManifest,
50
+ locals,
51
+ staticGenerate,
52
+ monitors,
53
+ onError,
54
+ onTiming,
55
+ reporter: options.reporter
56
+ };
57
+ if (!serverBundle) return new Response('Cannot find server bundle for RSC', {
58
+ status: 500
59
+ });
60
+ const rscPayloadHandler = await serverBundle.rscPayloadHandler;
61
+ if (!rscPayloadHandler) return new Response('Cannot find request handler for RSC', {
62
+ status: 500
63
+ });
64
+ return rscPayloadHandler(req, requestHandlerOptions);
65
+ };
66
+ exports.renderRscHandler = __webpack_exports__.renderRscHandler;
67
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
68
+ "renderRscHandler"
69
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
70
+ Object.defineProperty(exports, '__esModule', {
71
+ value: true
72
+ });
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ serverActionHandler: ()=>serverActionHandler
28
+ });
29
+ const constants_namespaceObject = require("@modern-js/utils/universal/constants");
30
+ const serverActionHandler = async (req, { serverManifest, routeInfo, rscClientManifest })=>{
31
+ const serverBundle = serverManifest?.renderBundles?.[routeInfo.entryName || constants_namespaceObject.MAIN_ENTRY_NAME];
32
+ if (!serverBundle) return new Response('Cannot find server bundle for server action', {
33
+ status: 500
34
+ });
35
+ const { handleAction } = serverBundle;
36
+ if (!handleAction) return new Response('Cannot find server action handler', {
37
+ status: 500
38
+ });
39
+ return handleAction(req);
40
+ };
41
+ exports.serverActionHandler = __webpack_exports__.serverActionHandler;
42
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
43
+ "serverActionHandler"
44
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
45
+ Object.defineProperty(exports, '__esModule', {
46
+ value: true
47
+ });
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ getCacheResult: ()=>getCacheResult,
28
+ matchCacheControl: ()=>matchCacheControl,
29
+ shouldUseCache: ()=>shouldUseCache
30
+ });
31
+ const storer_namespaceObject = require("@modern-js/runtime-utils/storer");
32
+ const external_constants_js_namespaceObject = require("../../constants.js");
33
+ const index_js_namespaceObject = require("../../utils/index.js");
34
+ const removeTailSlash = (s)=>s.replace(/\/+$/, '');
35
+ const ZERO_RENDER_LEVEL = /"renderLevel":0/;
36
+ const NO_SSR_CACHE = /<meta\s+[^>]*name=["']no-ssr-cache["'][^>]*>/i;
37
+ async function processCache({ request, key, requestHandler, requestHandlerOptions, ttl, container, cacheStatus }) {
38
+ const response = await requestHandler(request, requestHandlerOptions);
39
+ const { onError } = requestHandlerOptions;
40
+ const nonCacheableStatusCodes = [
41
+ 204,
42
+ 305,
43
+ 404,
44
+ 405,
45
+ 500,
46
+ 501,
47
+ 502,
48
+ 503,
49
+ 504
50
+ ];
51
+ if (nonCacheableStatusCodes.includes(response.status)) return response;
52
+ const decoder = new TextDecoder();
53
+ if (response.body) {
54
+ const stream = (0, index_js_namespaceObject.createTransformStream)();
55
+ const reader = response.body.getReader();
56
+ const writer = stream.writable.getWriter();
57
+ let html = '';
58
+ const push = ()=>reader.read().then(({ done, value })=>{
59
+ if (done) {
60
+ const match = ZERO_RENDER_LEVEL.test(html) || NO_SSR_CACHE.test(html);
61
+ if (match) return void writer.close();
62
+ const current = Date.now();
63
+ const cache = {
64
+ val: html,
65
+ cursor: current
66
+ };
67
+ container.set(key, JSON.stringify(cache), {
68
+ ttl
69
+ }).catch(()=>{
70
+ if (onError) onError(`[render-cache] set cache failed, key: ${key}, value: ${JSON.stringify(cache)}`);
71
+ else console.error(`[render-cache] set cache failed, key: ${key}, value: ${JSON.stringify(cache)}`);
72
+ });
73
+ writer.close();
74
+ return;
75
+ }
76
+ const content = decoder.decode(value);
77
+ html += content;
78
+ writer.write(value);
79
+ push();
80
+ });
81
+ push();
82
+ cacheStatus && response.headers.set(external_constants_js_namespaceObject.X_RENDER_CACHE, cacheStatus);
83
+ return new Response(stream.readable, {
84
+ status: response.status,
85
+ headers: response.headers
86
+ });
87
+ }
88
+ return response;
89
+ }
90
+ const CACHE_NAMESPACE = '__ssr__cache';
91
+ const storage = (0, storer_namespaceObject.createMemoryStorage)(CACHE_NAMESPACE);
92
+ function computedKey(req, cacheControl) {
93
+ const pathname = (0, index_js_namespaceObject.getPathname)(req);
94
+ const { customKey } = cacheControl;
95
+ const defaultKey = '/' === pathname ? pathname : removeTailSlash(pathname);
96
+ if (!customKey) return defaultKey;
97
+ if ('string' == typeof customKey) return customKey;
98
+ return customKey(defaultKey);
99
+ }
100
+ function shouldUseCache(request) {
101
+ const url = new URL(request.url);
102
+ const hasRSCAction = request.headers.has('x-rsc-action');
103
+ const hasRSCTree = request.headers.has('x-rsc-tree');
104
+ const hasLoaderQuery = url.searchParams.has('__loader');
105
+ return !(hasRSCAction || hasRSCTree || hasLoaderQuery);
106
+ }
107
+ function matchCacheControl(cacheOption, req) {
108
+ if (!cacheOption || !req) return;
109
+ {
110
+ if (isCacheControl(cacheOption)) return cacheOption;
111
+ if (isCacheOptionProvider(cacheOption)) return cacheOption(req);
112
+ const url = req.url;
113
+ const options = Object.entries(cacheOption);
114
+ for (const [key, option] of options)if ('*' === key || new RegExp(key).test(url)) if ('function' == typeof option) return option(req);
115
+ else return option;
116
+ return;
117
+ }
118
+ function isCacheOptionProvider(option) {
119
+ return 'function' == typeof option;
120
+ }
121
+ function isCacheControl(option) {
122
+ return 'object' == typeof option && null !== option && 'maxAge' in option;
123
+ }
124
+ }
125
+ async function getCacheResult(request, options) {
126
+ const { cacheControl, container = storage, requestHandler, requestHandlerOptions } = options;
127
+ const { onError } = requestHandlerOptions;
128
+ const key = computedKey(request, cacheControl);
129
+ let value;
130
+ try {
131
+ value = await container.get(key);
132
+ } catch (_) {
133
+ if (onError) onError(`[render-cache] get cache failed, key: ${key}`);
134
+ else console.error(`[render-cache] get cache failed, key: ${key}`);
135
+ value = void 0;
136
+ }
137
+ const { maxAge, staleWhileRevalidate } = cacheControl;
138
+ const ttl = maxAge + staleWhileRevalidate;
139
+ if (!value) return processCache({
140
+ key,
141
+ request,
142
+ requestHandler,
143
+ requestHandlerOptions,
144
+ ttl,
145
+ container,
146
+ cacheStatus: 'miss'
147
+ });
148
+ {
149
+ const cache = JSON.parse(value);
150
+ const interval = Date.now() - cache.cursor;
151
+ if (interval <= maxAge) {
152
+ const cacheStatus = 'hit';
153
+ return new Response(cache.val, {
154
+ headers: {
155
+ [external_constants_js_namespaceObject.X_RENDER_CACHE]: cacheStatus
156
+ }
157
+ });
158
+ }
159
+ if (!(interval <= staleWhileRevalidate + maxAge)) return processCache({
160
+ key,
161
+ request,
162
+ requestHandler,
163
+ requestHandlerOptions,
164
+ ttl,
165
+ container,
166
+ cacheStatus: 'expired'
167
+ });
168
+ {
169
+ processCache({
170
+ key,
171
+ request,
172
+ requestHandler,
173
+ requestHandlerOptions,
174
+ ttl,
175
+ container
176
+ }).then(async (response)=>{
177
+ await response.text();
178
+ });
179
+ const cacheStatus = 'stale';
180
+ return new Response(cache.val, {
181
+ headers: {
182
+ [external_constants_js_namespaceObject.X_RENDER_CACHE]: cacheStatus
183
+ }
184
+ });
185
+ }
186
+ }
187
+ }
188
+ exports.getCacheResult = __webpack_exports__.getCacheResult;
189
+ exports.matchCacheControl = __webpack_exports__.matchCacheControl;
190
+ exports.shouldUseCache = __webpack_exports__.shouldUseCache;
191
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
192
+ "getCacheResult",
193
+ "matchCacheControl",
194
+ "shouldUseCache"
195
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
196
+ Object.defineProperty(exports, '__esModule', {
197
+ value: true
198
+ });
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ ssrRender: ()=>ssrRender
28
+ });
29
+ const constants_namespaceObject = require("@modern-js/utils/universal/constants");
30
+ const external_constants_js_namespaceObject = require("../../constants.js");
31
+ const index_js_namespaceObject = require("../../utils/index.js");
32
+ const external_ssrCache_js_namespaceObject = require("./ssrCache.js");
33
+ const external_utils_js_namespaceObject = require("./utils.js");
34
+ const SERVER_RUNTIME_ENTRY = 'requestHandler';
35
+ async function ssrRender(request, { routeInfo, html, config: userConfig, staticGenerate, nodeReq, serverManifest, rscSSRManifest, rscClientManifest, rscServerManifest, locals, params, loaderContext, monitors, cacheConfig, onError, onTiming, reporter }) {
36
+ const { entryName } = routeInfo;
37
+ const loadableStats = serverManifest.loadableStats || {};
38
+ const routeManifest = serverManifest.routeManifest || {};
39
+ const headers = (0, index_js_namespaceObject.parseHeaders)(request);
40
+ if (nodeReq) {
41
+ for(const key in nodeReq.headers)if (!headers[key]) headers[key] = nodeReq.headers[key];
42
+ }
43
+ const renderBundle = serverManifest.renderBundles?.[entryName || constants_namespaceObject.MAIN_ENTRY_NAME];
44
+ if (!renderBundle) throw new Error(`Can't find renderBundle ${entryName || constants_namespaceObject.MAIN_ENTRY_NAME}`);
45
+ const requestHandler = await renderBundle[SERVER_RUNTIME_ENTRY];
46
+ const config = (0, external_utils_js_namespaceObject.createRequestHandlerConfig)(userConfig);
47
+ const requestHandlerOptions = {
48
+ resource: {
49
+ route: routeInfo,
50
+ loadableStats,
51
+ routeManifest,
52
+ htmlTemplate: html,
53
+ entryName: entryName || constants_namespaceObject.MAIN_ENTRY_NAME
54
+ },
55
+ params,
56
+ loaderContext,
57
+ config,
58
+ rscSSRManifest,
59
+ rscClientManifest,
60
+ rscServerManifest,
61
+ locals,
62
+ staticGenerate,
63
+ monitors,
64
+ onError,
65
+ onTiming,
66
+ reporter
67
+ };
68
+ const cacheControl = await (0, external_ssrCache_js_namespaceObject.matchCacheControl)(cacheConfig?.strategy, nodeReq || new IncomingMessgeProxy(request));
69
+ let response;
70
+ response = cacheControl && (0, external_ssrCache_js_namespaceObject.shouldUseCache)(request) ? await (0, external_ssrCache_js_namespaceObject.getCacheResult)(request, {
71
+ cacheControl,
72
+ container: cacheConfig?.container,
73
+ requestHandler: requestHandler,
74
+ requestHandlerOptions
75
+ }) : await requestHandler(request, requestHandlerOptions);
76
+ response.headers.set(external_constants_js_namespaceObject.X_MODERNJS_RENDER, 'server');
77
+ response.headers.set('content-type', 'text/html; charset=UTF-8');
78
+ return response;
79
+ }
80
+ class IncomingMessgeProxy {
81
+ constructor(req){
82
+ this.headers = {};
83
+ req.headers.forEach((value, key)=>{
84
+ this.headers[key] = value;
85
+ });
86
+ this.method = req.method;
87
+ this.url = (0, index_js_namespaceObject.getPathname)(req);
88
+ }
89
+ }
90
+ exports.ssrRender = __webpack_exports__.ssrRender;
91
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
92
+ "ssrRender"
93
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
94
+ Object.defineProperty(exports, '__esModule', {
95
+ value: true
96
+ });