@modern-js/server-core 2.53.0 → 2.54.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 (264) hide show
  1. package/dist/cjs/adapters/node/helper/index.js +37 -0
  2. package/dist/cjs/{base/adapters/node/middlewares/templates.js → adapters/node/helper/loadCache.js} +19 -33
  3. package/dist/cjs/{base/utils/serverConfig.js → adapters/node/helper/loadConfig.js} +26 -31
  4. package/dist/cjs/{base/adapters/node/loadServer.js → adapters/node/helper/loadEnv.js} +3 -3
  5. package/dist/cjs/{base/utils/debug.js → adapters/node/helper/loadPlugin.js} +16 -6
  6. package/dist/cjs/{base/adapters → adapters}/node/index.js +17 -16
  7. package/dist/cjs/{core → adapters/node/plugins}/index.js +8 -4
  8. package/dist/cjs/{base/middlewares/frameworkHeader.js → adapters/node/plugins/nodeServer.js} +16 -9
  9. package/dist/cjs/{base/adapters/node/middlewares/serverManifest.js → adapters/node/plugins/resource.js} +56 -5
  10. package/dist/cjs/{base/adapters/node/middlewares/serverStatic.js → adapters/node/plugins/static.js} +61 -7
  11. package/dist/cjs/{base/constants.js → constants.js} +3 -0
  12. package/dist/cjs/index.js +28 -6
  13. package/dist/cjs/pluginManager.js +106 -0
  14. package/dist/cjs/{base/middlewares → plugins}/customServer/index.js +13 -11
  15. package/dist/cjs/plugins/favicon.js +44 -0
  16. package/dist/cjs/{base/middlewares → plugins}/index.js +21 -15
  17. package/dist/cjs/{base/middlewares/logger.js → plugins/log.js} +23 -5
  18. package/dist/cjs/{base/middlewares → plugins}/monitor.js +30 -33
  19. package/dist/cjs/plugins/processedBy.js +44 -0
  20. package/dist/cjs/plugins/render/index.js +136 -0
  21. package/dist/cjs/{base/middlewares/renderHandler → plugins/render}/render.js +20 -5
  22. package/dist/cjs/plugins/render/ssrCache.js +178 -0
  23. package/dist/cjs/{base/middlewares/renderHandler → plugins/render}/ssrRender.js +13 -13
  24. package/dist/cjs/serverBase.js +178 -0
  25. package/dist/cjs/{base/adapters/node/middlewares → types}/index.js +10 -10
  26. package/dist/cjs/types/plugin.js +16 -0
  27. package/dist/cjs/{base/utils → utils}/index.js +3 -1
  28. package/dist/cjs/{base/middlewares/faviconFallback.js → utils/serverConfig.js} +12 -11
  29. package/dist/esm/adapters/node/helper/index.js +10 -0
  30. package/dist/esm/adapters/node/helper/loadCache.js +19 -0
  31. package/dist/esm/adapters/node/helper/loadConfig.js +32 -0
  32. package/dist/esm/adapters/node/helper/loadPlugin.js +17 -0
  33. package/dist/{esm-node/base → esm}/adapters/node/index.js +8 -8
  34. package/dist/esm/adapters/node/plugins/index.js +3 -0
  35. package/dist/esm/adapters/node/plugins/nodeServer.js +18 -0
  36. package/dist/esm/{base/adapters/node/middlewares/serverManifest.js → adapters/node/plugins/resource.js} +139 -1
  37. package/dist/esm/{base/adapters/node/middlewares/serverStatic.js → adapters/node/plugins/static.js} +108 -2
  38. package/dist/esm/{base/constants.js → constants.js} +2 -0
  39. package/dist/esm/index.js +15 -3
  40. package/dist/esm/pluginManager.js +140 -0
  41. package/dist/esm/{base/middlewares → plugins}/customServer/index.js +12 -11
  42. package/dist/esm/plugins/favicon.js +34 -0
  43. package/dist/esm/plugins/index.js +15 -0
  44. package/dist/esm/{base/middlewares/logger.js → plugins/log.js} +33 -2
  45. package/dist/esm/plugins/monitor.js +120 -0
  46. package/dist/esm/plugins/processedBy.js +42 -0
  47. package/dist/esm/plugins/render/index.js +229 -0
  48. package/dist/esm/{base/middlewares/renderHandler → plugins/render}/render.js +20 -7
  49. package/dist/esm/plugins/render/ssrCache.js +266 -0
  50. package/dist/esm/{base/middlewares/renderHandler → plugins/render}/ssrRender.js +26 -45
  51. package/dist/esm/serverBase.js +250 -0
  52. package/dist/esm/types/index.js +4 -0
  53. package/dist/esm/types/render.js +0 -0
  54. package/dist/esm/types/server.js +0 -0
  55. package/dist/esm/{base/utils → utils}/index.js +1 -0
  56. package/dist/esm/utils/serverConfig.js +13 -0
  57. package/dist/esm-node/adapters/node/helper/index.js +10 -0
  58. package/dist/esm-node/adapters/node/helper/loadCache.js +19 -0
  59. package/dist/esm-node/adapters/node/helper/loadConfig.js +31 -0
  60. package/dist/esm-node/adapters/node/helper/loadPlugin.js +15 -0
  61. package/dist/{esm/base → esm-node}/adapters/node/index.js +8 -8
  62. package/dist/esm-node/adapters/node/plugins/index.js +3 -0
  63. package/dist/esm-node/adapters/node/plugins/nodeServer.js +14 -0
  64. package/dist/esm-node/{base/adapters/node/middlewares/serverManifest.js → adapters/node/plugins/resource.js} +49 -1
  65. package/dist/esm-node/{base/adapters/node/middlewares/serverStatic.js → adapters/node/plugins/static.js} +54 -2
  66. package/dist/esm-node/{base/constants.js → constants.js} +2 -0
  67. package/dist/esm-node/index.js +15 -3
  68. package/dist/esm-node/pluginManager.js +82 -0
  69. package/dist/esm-node/{base/middlewares → plugins}/customServer/index.js +11 -10
  70. package/dist/esm-node/plugins/favicon.js +20 -0
  71. package/dist/esm-node/plugins/index.js +15 -0
  72. package/dist/esm-node/{base/middlewares/logger.js → plugins/log.js} +19 -1
  73. package/dist/esm-node/plugins/monitor.js +62 -0
  74. package/dist/esm-node/plugins/processedBy.js +20 -0
  75. package/dist/esm-node/plugins/render/index.js +111 -0
  76. package/dist/esm-node/{base/middlewares/renderHandler → plugins/render}/render.js +20 -5
  77. package/dist/esm-node/plugins/render/ssrCache.js +143 -0
  78. package/dist/esm-node/{base/middlewares/renderHandler → plugins/render}/ssrRender.js +14 -14
  79. package/dist/esm-node/serverBase.js +153 -0
  80. package/dist/esm-node/types/index.js +4 -0
  81. package/dist/esm-node/{base/utils → utils}/index.js +1 -0
  82. package/dist/esm-node/utils/serverConfig.js +11 -0
  83. package/dist/types/adapters/node/helper/index.d.ts +4 -0
  84. package/dist/types/adapters/node/helper/loadCache.d.ts +2 -0
  85. package/dist/types/adapters/node/helper/loadConfig.d.ts +2 -0
  86. package/dist/types/{base/adapters/node/loadServer.d.ts → adapters/node/helper/loadEnv.d.ts} +1 -1
  87. package/dist/types/adapters/node/helper/loadPlugin.d.ts +3 -0
  88. package/dist/types/{base/adapters → adapters}/node/hono.d.ts +1 -2
  89. package/dist/types/{base/adapters → adapters}/node/index.d.ts +2 -3
  90. package/dist/types/{base/adapters → adapters}/node/node.d.ts +1 -2
  91. package/dist/types/adapters/node/plugins/index.d.ts +3 -0
  92. package/dist/types/adapters/node/plugins/nodeServer.d.ts +4 -0
  93. package/dist/types/adapters/node/plugins/resource.d.ts +7 -0
  94. package/dist/types/adapters/node/plugins/static.d.ts +15 -0
  95. package/dist/types/{base/constants.d.ts → constants.d.ts} +1 -0
  96. package/dist/types/index.d.ts +9 -3
  97. package/dist/types/pluginManager.d.ts +31 -0
  98. package/dist/types/{base/middlewares → plugins}/customServer/base.d.ts +1 -1
  99. package/dist/types/{base/middlewares → plugins}/customServer/context.d.ts +1 -1
  100. package/dist/types/{base/middlewares → plugins}/customServer/index.d.ts +3 -3
  101. package/dist/types/{base/middlewares → plugins}/customServer/loader.d.ts +1 -1
  102. package/dist/types/plugins/favicon.d.ts +2 -0
  103. package/dist/types/plugins/index.d.ts +6 -0
  104. package/dist/types/plugins/log.d.ts +2 -0
  105. package/dist/types/plugins/monitor.d.ts +9 -0
  106. package/dist/types/plugins/processedBy.d.ts +2 -0
  107. package/dist/types/plugins/render/index.d.ts +16 -0
  108. package/dist/types/{base/middlewares/renderHandler → plugins/render}/render.d.ts +5 -4
  109. package/dist/types/plugins/render/ssrCache.d.ts +19 -0
  110. package/dist/types/{base/middlewares/renderHandler → plugins/render}/ssrRender.d.ts +3 -2
  111. package/dist/types/{base/serverBase.d.ts → serverBase.d.ts} +13 -30
  112. package/dist/types/types/config/index.d.ts +1 -0
  113. package/dist/types/types/config/server.d.ts +1 -0
  114. package/dist/types/types/index.d.ts +4 -0
  115. package/dist/types/types/plugin.d.ts +134 -0
  116. package/dist/types/{base/utils → utils}/index.d.ts +1 -0
  117. package/dist/types/utils/serverConfig.d.ts +8 -0
  118. package/package.json +15 -31
  119. package/dist/cjs/base/adapters/node/bff.js +0 -70
  120. package/dist/cjs/base/adapters/node/middlewares/mock.js +0 -113
  121. package/dist/cjs/base/adapters/node/middlewares/serverPublic.js +0 -70
  122. package/dist/cjs/base/index.js +0 -55
  123. package/dist/cjs/base/middlewares/renderHandler/index.js +0 -129
  124. package/dist/cjs/base/middlewares/renderHandler/ssrCache.js +0 -207
  125. package/dist/cjs/base/serverBase.js +0 -203
  126. package/dist/cjs/core/loadPlugins.js +0 -50
  127. package/dist/cjs/core/plugin.js +0 -84
  128. package/dist/esm/base/adapters/node/bff.js +0 -128
  129. package/dist/esm/base/adapters/node/middlewares/index.js +0 -4
  130. package/dist/esm/base/adapters/node/middlewares/mock.js +0 -198
  131. package/dist/esm/base/adapters/node/middlewares/serverPublic.js +0 -90
  132. package/dist/esm/base/adapters/node/middlewares/templates.js +0 -114
  133. package/dist/esm/base/index.js +0 -19
  134. package/dist/esm/base/middlewares/faviconFallback.js +0 -28
  135. package/dist/esm/base/middlewares/frameworkHeader.js +0 -27
  136. package/dist/esm/base/middlewares/index.js +0 -9
  137. package/dist/esm/base/middlewares/monitor.js +0 -157
  138. package/dist/esm/base/middlewares/renderHandler/index.js +0 -246
  139. package/dist/esm/base/middlewares/renderHandler/ssrCache.js +0 -317
  140. package/dist/esm/base/serverBase.js +0 -383
  141. package/dist/esm/base/utils/debug.js +0 -5
  142. package/dist/esm/base/utils/serverConfig.js +0 -58
  143. package/dist/esm/core/index.js +0 -1
  144. package/dist/esm/core/loadPlugins.js +0 -26
  145. package/dist/esm/core/plugin.js +0 -61
  146. package/dist/esm-node/base/adapters/node/bff.js +0 -46
  147. package/dist/esm-node/base/adapters/node/middlewares/index.js +0 -4
  148. package/dist/esm-node/base/adapters/node/middlewares/mock.js +0 -79
  149. package/dist/esm-node/base/adapters/node/middlewares/serverPublic.js +0 -36
  150. package/dist/esm-node/base/adapters/node/middlewares/templates.js +0 -32
  151. package/dist/esm-node/base/index.js +0 -19
  152. package/dist/esm-node/base/middlewares/faviconFallback.js +0 -10
  153. package/dist/esm-node/base/middlewares/frameworkHeader.js +0 -7
  154. package/dist/esm-node/base/middlewares/index.js +0 -9
  155. package/dist/esm-node/base/middlewares/monitor.js +0 -63
  156. package/dist/esm-node/base/middlewares/renderHandler/index.js +0 -94
  157. package/dist/esm-node/base/middlewares/renderHandler/ssrCache.js +0 -172
  158. package/dist/esm-node/base/serverBase.js +0 -168
  159. package/dist/esm-node/base/utils/debug.js +0 -5
  160. package/dist/esm-node/base/utils/serverConfig.js +0 -34
  161. package/dist/esm-node/core/index.js +0 -1
  162. package/dist/esm-node/core/loadPlugins.js +0 -26
  163. package/dist/esm-node/core/plugin.js +0 -53
  164. package/dist/types/base/adapters/node/bff.d.ts +0 -3
  165. package/dist/types/base/adapters/node/middlewares/index.d.ts +0 -4
  166. package/dist/types/base/adapters/node/middlewares/mock.d.ts +0 -5
  167. package/dist/types/base/adapters/node/middlewares/serverManifest.d.ts +0 -4
  168. package/dist/types/base/adapters/node/middlewares/serverPublic.d.ts +0 -7
  169. package/dist/types/base/adapters/node/middlewares/serverStatic.d.ts +0 -11
  170. package/dist/types/base/adapters/node/middlewares/templates.d.ts +0 -4
  171. package/dist/types/base/index.d.ts +0 -7
  172. package/dist/types/base/middlewares/faviconFallback.d.ts +0 -2
  173. package/dist/types/base/middlewares/frameworkHeader.d.ts +0 -2
  174. package/dist/types/base/middlewares/index.d.ts +0 -6
  175. package/dist/types/base/middlewares/logger.d.ts +0 -2
  176. package/dist/types/base/middlewares/monitor.d.ts +0 -6
  177. package/dist/types/base/middlewares/renderHandler/index.d.ts +0 -9
  178. package/dist/types/base/middlewares/renderHandler/ssrCache.d.ts +0 -28
  179. package/dist/types/base/utils/debug.d.ts +0 -1
  180. package/dist/types/base/utils/serverConfig.d.ts +0 -14
  181. package/dist/types/core/index.d.ts +0 -1
  182. package/dist/types/core/loadPlugins.d.ts +0 -3
  183. package/dist/types/core/plugin.d.ts +0 -251
  184. package/dist/cjs/{base/adapters → adapters}/node/hono.js +0 -0
  185. package/dist/cjs/{base/adapters → adapters}/node/node.js +0 -0
  186. package/dist/cjs/{base/adapters → adapters}/node/polyfills/index.js +0 -0
  187. package/dist/cjs/{base/adapters → adapters}/node/polyfills/install.js +0 -0
  188. package/dist/cjs/{base/adapters → adapters}/node/polyfills/stream.js +0 -0
  189. package/dist/cjs/{base/middlewares → plugins}/customServer/base.js +0 -0
  190. package/dist/cjs/{base/middlewares → plugins}/customServer/context.js +0 -0
  191. package/dist/cjs/{base/middlewares → plugins}/customServer/loader.js +0 -0
  192. package/dist/cjs/{base/middlewares → plugins}/customServer/routerApi.js +0 -0
  193. package/dist/cjs/{base/middlewares → plugins}/customServer/template.js +0 -0
  194. package/dist/cjs/{base/middlewares/renderHandler → plugins/render}/dataHandler.js +0 -0
  195. package/dist/cjs/{base/middlewares/renderHandler → plugins/render}/serverTiming.js +0 -0
  196. package/dist/cjs/{core → types}/render.js +0 -0
  197. package/dist/cjs/{core → types}/server.js +0 -0
  198. package/dist/cjs/{base/utils → utils}/entry.js +0 -0
  199. package/dist/cjs/{base/utils → utils}/env.js +0 -0
  200. package/dist/cjs/{base/utils → utils}/error.js +0 -0
  201. package/dist/cjs/{base/utils → utils}/middlewareCollector.js +0 -0
  202. package/dist/cjs/{base/utils → utils}/request.js +0 -0
  203. package/dist/cjs/{base/utils → utils}/transformStream.js +0 -0
  204. package/dist/cjs/{base/utils → utils}/warmup.js +0 -0
  205. package/dist/esm/{base/adapters/node/loadServer.js → adapters/node/helper/loadEnv.js} +0 -0
  206. package/dist/esm/{base/adapters → adapters}/node/hono.js +0 -0
  207. package/dist/esm/{base/adapters → adapters}/node/node.js +0 -0
  208. package/dist/esm/{base/adapters → adapters}/node/polyfills/index.js +0 -0
  209. package/dist/esm/{base/adapters → adapters}/node/polyfills/install.js +0 -0
  210. package/dist/esm/{base/adapters → adapters}/node/polyfills/stream.js +0 -0
  211. package/dist/esm/{base/middlewares → plugins}/customServer/base.js +0 -0
  212. package/dist/esm/{base/middlewares → plugins}/customServer/context.js +0 -0
  213. package/dist/esm/{base/middlewares → plugins}/customServer/loader.js +0 -0
  214. package/dist/esm/{base/middlewares → plugins}/customServer/routerApi.js +0 -0
  215. package/dist/esm/{base/middlewares → plugins}/customServer/template.js +0 -0
  216. package/dist/esm/{base/middlewares/renderHandler → plugins/render}/dataHandler.js +0 -0
  217. package/dist/esm/{base/middlewares/renderHandler → plugins/render}/serverTiming.js +0 -0
  218. package/dist/esm/{core/server.js → types/plugin.js} +0 -0
  219. package/dist/esm/{base/utils → utils}/entry.js +0 -0
  220. package/dist/esm/{base/utils → utils}/env.js +0 -0
  221. package/dist/esm/{base/utils → utils}/error.js +0 -0
  222. package/dist/esm/{base/utils → utils}/middlewareCollector.js +0 -0
  223. package/dist/esm/{base/utils → utils}/request.js +0 -0
  224. package/dist/esm/{base/utils → utils}/transformStream.js +0 -0
  225. package/dist/esm/{base/utils → utils}/warmup.js +0 -0
  226. package/dist/esm-node/{base/adapters/node/loadServer.js → adapters/node/helper/loadEnv.js} +0 -0
  227. package/dist/esm-node/{base/adapters → adapters}/node/hono.js +0 -0
  228. package/dist/esm-node/{base/adapters → adapters}/node/node.js +0 -0
  229. package/dist/esm-node/{base/adapters → adapters}/node/polyfills/index.js +0 -0
  230. package/dist/esm-node/{base/adapters → adapters}/node/polyfills/install.js +0 -0
  231. package/dist/esm-node/{base/adapters → adapters}/node/polyfills/stream.js +0 -0
  232. package/dist/esm-node/{base/middlewares → plugins}/customServer/base.js +0 -0
  233. package/dist/esm-node/{base/middlewares → plugins}/customServer/context.js +0 -0
  234. package/dist/esm-node/{base/middlewares → plugins}/customServer/loader.js +0 -0
  235. package/dist/esm-node/{base/middlewares → plugins}/customServer/routerApi.js +0 -0
  236. package/dist/esm-node/{base/middlewares → plugins}/customServer/template.js +0 -0
  237. package/dist/esm-node/{base/middlewares/renderHandler → plugins/render}/dataHandler.js +0 -0
  238. package/dist/esm-node/{base/middlewares/renderHandler → plugins/render}/serverTiming.js +0 -0
  239. package/dist/esm-node/{core/render.js → types/plugin.js} +0 -0
  240. package/dist/{esm/core → esm-node/types}/render.js +0 -0
  241. package/dist/esm-node/{core → types}/server.js +0 -0
  242. package/dist/esm-node/{base/utils → utils}/entry.js +0 -0
  243. package/dist/esm-node/{base/utils → utils}/env.js +0 -0
  244. package/dist/esm-node/{base/utils → utils}/error.js +0 -0
  245. package/dist/esm-node/{base/utils → utils}/middlewareCollector.js +0 -0
  246. package/dist/esm-node/{base/utils → utils}/request.js +0 -0
  247. package/dist/esm-node/{base/utils → utils}/transformStream.js +0 -0
  248. package/dist/esm-node/{base/utils → utils}/warmup.js +0 -0
  249. package/dist/types/{base/adapters → adapters}/node/polyfills/index.d.ts +0 -0
  250. package/dist/types/{base/adapters → adapters}/node/polyfills/install.d.ts +0 -0
  251. package/dist/types/{base/adapters → adapters}/node/polyfills/stream.d.ts +0 -0
  252. package/dist/types/{base/middlewares → plugins}/customServer/routerApi.d.ts +0 -0
  253. package/dist/types/{base/middlewares → plugins}/customServer/template.d.ts +0 -0
  254. package/dist/types/{base/middlewares/renderHandler → plugins/render}/dataHandler.d.ts +0 -0
  255. package/dist/types/{base/middlewares/renderHandler → plugins/render}/serverTiming.d.ts +0 -0
  256. package/dist/types/{core → types}/render.d.ts +0 -0
  257. package/dist/types/{core → types}/server.d.ts +1 -1
  258. /package/dist/types/{base/utils → utils}/entry.d.ts +0 -0
  259. /package/dist/types/{base/utils → utils}/env.d.ts +0 -0
  260. /package/dist/types/{base/utils → utils}/error.d.ts +0 -0
  261. /package/dist/types/{base/utils → utils}/middlewareCollector.d.ts +0 -0
  262. /package/dist/types/{base/utils → utils}/request.d.ts +0 -0
  263. /package/dist/types/{base/utils → utils}/transformStream.d.ts +0 -0
  264. /package/dist/types/{base/utils → utils}/warmup.d.ts +0 -0
@@ -0,0 +1,111 @@
1
+ import { MAIN_ENTRY_NAME } from "@modern-js/utils/universal/constants";
2
+ import { initReporter } from "../monitor";
3
+ import { sortRoutes } from "../../utils";
4
+ import { getLoaderCtx, CustomServer, getServerMidFromUnstableMid } from "../customServer";
5
+ import { createRender } from "./render";
6
+ const renderPlugin = (options = {}) => ({
7
+ name: "@modern-js/plugin-render",
8
+ setup(api) {
9
+ const { staticGenerate, cacheConfig } = options;
10
+ return {
11
+ async prepare() {
12
+ var _config_render, _config_render1;
13
+ const { middlewares, routes, metaName, distDirectory: pwd, serverBase } = api.useAppContext();
14
+ const runner = api.useHookRunners();
15
+ const config = api.useConfigContext();
16
+ if (!routes) {
17
+ return;
18
+ }
19
+ const customServer = new CustomServer(runner, serverBase, pwd);
20
+ const serverMiddleware = ((_config_render = config.render) === null || _config_render === void 0 ? void 0 : _config_render.middleware) && getServerMidFromUnstableMid(config.render.middleware);
21
+ const pageRoutes = getPageRoutes(routes);
22
+ const render = await getRenderHandler({
23
+ pwd,
24
+ routes,
25
+ config,
26
+ metaName,
27
+ cacheConfig: ((_config_render1 = config.render) === null || _config_render1 === void 0 ? void 0 : _config_render1.cache) || cacheConfig,
28
+ staticGenerate
29
+ });
30
+ for (const route of pageRoutes) {
31
+ const { urlPath: originUrlPath, entryName } = route;
32
+ const urlPath = originUrlPath.endsWith("/") ? `${originUrlPath}*` : `${originUrlPath}/*`;
33
+ middlewares.push({
34
+ name: "init-reporter",
35
+ handler: initReporter(entryName || MAIN_ENTRY_NAME)
36
+ });
37
+ const customServerHookMiddleware = customServer.getHookMiddleware(entryName || "main", routes);
38
+ middlewares.push({
39
+ name: "custom-server-hook",
40
+ path: urlPath,
41
+ handler: customServerHookMiddleware
42
+ });
43
+ const customServerMiddleware = serverMiddleware || await customServer.getServerMiddleware();
44
+ customServerMiddleware && middlewares.push({
45
+ name: "custom-server-middleware",
46
+ path: urlPath,
47
+ handler: customServerMiddleware
48
+ });
49
+ middlewares.push({
50
+ name: `render`,
51
+ path: urlPath,
52
+ handler: createRenderHandler(render)
53
+ });
54
+ }
55
+ }
56
+ };
57
+ }
58
+ });
59
+ function getPageRoutes(routes) {
60
+ return routes.filter((route) => !route.isApi).sort(sortRoutes);
61
+ }
62
+ function createRenderHandler(render) {
63
+ return async (c, _) => {
64
+ var _c_env_node;
65
+ const logger = c.get("logger");
66
+ const reporter = c.get("reporter");
67
+ const templates = c.get("templates") || {};
68
+ const serverManifest = c.get("serverManifest") || {};
69
+ const locals = c.get("locals");
70
+ const metrics = c.get("metrics");
71
+ const loaderContext = getLoaderCtx(c);
72
+ const request = c.req.raw;
73
+ const nodeReq = (_c_env_node = c.env.node) === null || _c_env_node === void 0 ? void 0 : _c_env_node.req;
74
+ const res = await render(request, {
75
+ logger,
76
+ nodeReq,
77
+ reporter,
78
+ templates,
79
+ metrics,
80
+ serverManifest,
81
+ loaderContext,
82
+ locals
83
+ });
84
+ const { body, status, headers } = res;
85
+ const headersData = {};
86
+ headers.forEach((v, k) => {
87
+ headersData[k] = v;
88
+ });
89
+ return c.body(body, status, headersData);
90
+ };
91
+ }
92
+ async function getRenderHandler({ pwd, routes, config, cacheConfig, metaName, staticGenerate }) {
93
+ var _config_server, _config_security;
94
+ const ssrConfig = (_config_server = config.server) === null || _config_server === void 0 ? void 0 : _config_server.ssr;
95
+ const forceCSR = typeof ssrConfig === "object" ? ssrConfig.forceCSR : false;
96
+ const render = createRender({
97
+ routes,
98
+ pwd,
99
+ // TODO: need static Genrate
100
+ staticGenerate,
101
+ cacheConfig,
102
+ forceCSR,
103
+ nonce: (_config_security = config.security) === null || _config_security === void 0 ? void 0 : _config_security.nonce,
104
+ metaName: metaName || "modern-js"
105
+ });
106
+ return render;
107
+ }
108
+ export {
109
+ getRenderHandler,
110
+ renderPlugin
111
+ };
@@ -1,13 +1,26 @@
1
1
  import { cutNameByHyphen } from "@modern-js/utils/universal";
2
2
  import { TrieRouter } from "hono/router/trie-router";
3
3
  import { parseQuery, getPathname, createErrorHtml, sortRoutes, transformResponse, onError as onErrorFn, ErrorDigest } from "../../utils";
4
- import { REPLACE_REG } from "../../../base/constants";
4
+ import { REPLACE_REG, X_MODERNJS_RENDER } from "../../constants";
5
5
  import { dataHandler } from "./dataHandler";
6
6
  import { ssrRender } from "./ssrRender";
7
+ const DYNAMIC_ROUTE_REG = /\/:./;
7
8
  function getRouter(routes) {
8
- const sorted = routes.sort(sortRoutes);
9
+ const dynamicRoutes = [];
10
+ const normalRoutes = [];
11
+ routes.forEach((route) => {
12
+ if (DYNAMIC_ROUTE_REG.test(route.urlPath)) {
13
+ dynamicRoutes.push(route);
14
+ } else {
15
+ normalRoutes.push(route);
16
+ }
17
+ });
18
+ const finalRoutes = [
19
+ ...normalRoutes.sort(sortRoutes),
20
+ ...dynamicRoutes.sort(sortRoutes)
21
+ ];
9
22
  const router = new TrieRouter();
10
- for (const route of sorted) {
23
+ for (const route of finalRoutes) {
11
24
  const { urlPath: originUrlPath } = route;
12
25
  const urlPath = originUrlPath.endsWith("/") ? `${originUrlPath}*` : `${originUrlPath}/*`;
13
26
  router.add("*", urlPath, route);
@@ -20,7 +33,7 @@ function matchRoute(router, request) {
20
33
  const result = matched[0][0];
21
34
  return result || [];
22
35
  }
23
- async function createRender({ routes, pwd, metaName, staticGenerate, forceCSR, nonce, onFallback: onFallbackFn }) {
36
+ async function createRender({ routes, pwd, metaName, staticGenerate, cacheConfig, forceCSR, nonce, onFallback: onFallbackFn }) {
24
37
  const router = getRouter(routes);
25
38
  return async (req, { logger, nodeReq, reporter, templates, serverManifest, locals, metrics, loaderContext }) => {
26
39
  const [routeInfo, params] = matchRoute(router, req);
@@ -62,6 +75,7 @@ async function createRender({ routes, pwd, metaName, staticGenerate, forceCSR, n
62
75
  nonce,
63
76
  logger,
64
77
  nodeReq,
78
+ cacheConfig,
65
79
  reporter,
66
80
  serverRoutes: routes,
67
81
  params,
@@ -137,7 +151,8 @@ function csrRender(html) {
137
151
  return new Response(html, {
138
152
  status: 200,
139
153
  headers: new Headers({
140
- "content-type": "text/html; charset=UTF-8"
154
+ "content-type": "text/html; charset=UTF-8",
155
+ [X_MODERNJS_RENDER]: "client"
141
156
  })
142
157
  });
143
158
  }
@@ -0,0 +1,143 @@
1
+ import { createMemoryStorage } from "@modern-js/runtime-utils/storer";
2
+ import { createTransformStream, getPathname, getRuntimeEnv } from "../../utils";
3
+ async function processCache(key, render, ssrContext, ttl, container, status) {
4
+ const renderResult = await render(ssrContext);
5
+ if (!renderResult) {
6
+ return {
7
+ data: ""
8
+ };
9
+ } else if (typeof renderResult === "string") {
10
+ const current = Date.now();
11
+ const cache = {
12
+ val: renderResult,
13
+ cursor: current
14
+ };
15
+ await container.set(key, JSON.stringify(cache), {
16
+ ttl
17
+ });
18
+ return {
19
+ data: renderResult,
20
+ status
21
+ };
22
+ } else {
23
+ const { Readable } = await import("stream").catch((_) => ({
24
+ Readable: void 0
25
+ }));
26
+ const runtimeEnv = getRuntimeEnv();
27
+ const streamModule = "../../adapters/node/polyfills/stream";
28
+ const { createReadableStreamFromReadable } = runtimeEnv === "node" ? await import(streamModule).catch((_) => ({
29
+ createReadableStreamFromReadable: void 0
30
+ })) : {
31
+ createReadableStreamFromReadable: void 0
32
+ };
33
+ const body = (
34
+ // TODO: remove node:stream, move it to ssr entry.
35
+ Readable && renderResult instanceof Readable ? createReadableStreamFromReadable === null || createReadableStreamFromReadable === void 0 ? void 0 : createReadableStreamFromReadable(renderResult) : renderResult
36
+ );
37
+ let html = "";
38
+ const stream = createTransformStream((chunk) => {
39
+ html += chunk;
40
+ return chunk;
41
+ });
42
+ const reader = body.getReader();
43
+ const writer = stream.writable.getWriter();
44
+ const push = () => {
45
+ reader.read().then(({ done, value }) => {
46
+ if (done) {
47
+ const current = Date.now();
48
+ const cache = {
49
+ val: html,
50
+ cursor: current
51
+ };
52
+ container.set(key, JSON.stringify(cache), {
53
+ ttl
54
+ });
55
+ writer.close();
56
+ return;
57
+ }
58
+ writer.write(value);
59
+ push();
60
+ });
61
+ };
62
+ push();
63
+ return {
64
+ data: stream.readable,
65
+ status
66
+ };
67
+ }
68
+ }
69
+ const CACHE_NAMESPACE = "__ssr__cache";
70
+ const storage = createMemoryStorage(CACHE_NAMESPACE);
71
+ function computedKey(req, cacheControl) {
72
+ const pathname = getPathname(req);
73
+ const { customKey } = cacheControl;
74
+ const defaultKey = pathname.replace(/.+\/+$/, "");
75
+ if (customKey) {
76
+ if (typeof customKey === "string") {
77
+ return customKey;
78
+ } else {
79
+ return customKey(defaultKey);
80
+ }
81
+ } else {
82
+ return defaultKey;
83
+ }
84
+ }
85
+ function matchCacheControl(cacheOption, req) {
86
+ if (!cacheOption || !req) {
87
+ return void 0;
88
+ } else if (isCacheControl(cacheOption)) {
89
+ return cacheOption;
90
+ } else if (isCacheOptionProvider(cacheOption)) {
91
+ return cacheOption(req);
92
+ } else {
93
+ const url = req.url;
94
+ const options = Object.entries(cacheOption);
95
+ for (const [key, option] of options) {
96
+ if (key === "*" || new RegExp(key).test(url)) {
97
+ if (typeof option === "function") {
98
+ return option(req);
99
+ } else {
100
+ return option;
101
+ }
102
+ }
103
+ }
104
+ return void 0;
105
+ }
106
+ function isCacheOptionProvider(option) {
107
+ return typeof option === "function";
108
+ }
109
+ function isCacheControl(option) {
110
+ return typeof option === "object" && option !== null && "maxAge" in option;
111
+ }
112
+ }
113
+ async function getCacheResult(request, options) {
114
+ const { cacheControl, render, ssrContext, container = storage } = options;
115
+ const key = computedKey(request, cacheControl);
116
+ const value = await container.get(key);
117
+ const { maxAge, staleWhileRevalidate } = cacheControl;
118
+ const ttl = maxAge + staleWhileRevalidate;
119
+ if (value) {
120
+ const cache = JSON.parse(value);
121
+ const interval = Date.now() - cache.cursor;
122
+ if (interval <= maxAge) {
123
+ return {
124
+ data: cache.val,
125
+ status: "hit"
126
+ };
127
+ } else if (interval <= staleWhileRevalidate + maxAge) {
128
+ processCache(key, render, ssrContext, ttl, container);
129
+ return {
130
+ data: cache.val,
131
+ status: "stale"
132
+ };
133
+ } else {
134
+ return processCache(key, render, ssrContext, ttl, container, "expired");
135
+ }
136
+ } else {
137
+ return processCache(key, render, ssrContext, ttl, container, "miss");
138
+ }
139
+ }
140
+ export {
141
+ getCacheResult,
142
+ matchCacheControl
143
+ };
@@ -1,8 +1,9 @@
1
1
  import { SERVER_RENDER_FUNCTION_NAME, MAIN_ENTRY_NAME } from "@modern-js/utils/universal/constants";
2
2
  import * as isbot from "isbot";
3
3
  import { getRuntimeEnv, parseHeaders, parseQuery, getHost, getPathname } from "../../utils";
4
- import { X_RENDER_CACHE } from "../../constants";
4
+ import { X_MODERNJS_RENDER, X_RENDER_CACHE } from "../../constants";
5
5
  import { ServerTiming } from "./serverTiming";
6
+ import { matchCacheControl, getCacheResult } from "./ssrCache";
6
7
  const defaultReporter = {
7
8
  init() {
8
9
  },
@@ -15,7 +16,7 @@ const defaultReporter = {
15
16
  reportWarn() {
16
17
  }
17
18
  };
18
- async function ssrRender(request, { routeInfo, html, staticGenerate, nonce, metaName, reporter, logger, nodeReq, serverManifest, locals, params, metrics, loaderContext }) {
19
+ async function ssrRender(request, { routeInfo, html, staticGenerate, nonce, metaName, reporter, logger, nodeReq, serverManifest, locals, params, metrics, loaderContext, cacheConfig }) {
19
20
  var _serverManifest_renderBundles;
20
21
  const { entryName } = routeInfo;
21
22
  const loadableStats = serverManifest.loadableStats || {};
@@ -77,18 +78,16 @@ async function ssrRender(request, { routeInfo, html, staticGenerate, nonce, meta
77
78
  let ssrResult;
78
79
  let cacheStatus;
79
80
  const render = renderBundle[SERVER_RENDER_FUNCTION_NAME];
80
- if (runtimeEnv === "node") {
81
- const cacheModuleName = "./ssrCache";
82
- const { ssrCache } = await import(cacheModuleName);
83
- const incomingMessage = nodeReq ? nodeReq : new IncomingMessgeProxy(request);
84
- const cacheControl = await ssrCache.matchCacheControl(incomingMessage);
85
- if (cacheControl) {
86
- const { data: data2, status } = await ssrCache.getCache(request, cacheControl, render, ssrContext);
87
- ssrResult = data2;
88
- cacheStatus = status;
89
- } else {
90
- ssrResult = await render(ssrContext);
91
- }
81
+ const cacheControl = await matchCacheControl(cacheConfig === null || cacheConfig === void 0 ? void 0 : cacheConfig.strategy, nodeReq || new IncomingMessgeProxy(request));
82
+ if (cacheControl) {
83
+ const { data: data2, status } = await getCacheResult(request, {
84
+ cacheControl,
85
+ container: cacheConfig === null || cacheConfig === void 0 ? void 0 : cacheConfig.container,
86
+ render,
87
+ ssrContext
88
+ });
89
+ ssrResult = data2;
90
+ cacheStatus = status;
92
91
  } else {
93
92
  ssrResult = await render(ssrContext);
94
93
  }
@@ -96,6 +95,7 @@ async function ssrRender(request, { routeInfo, html, staticGenerate, nonce, meta
96
95
  if (cacheStatus) {
97
96
  responseProxy.headers.set(X_RENDER_CACHE, cacheStatus);
98
97
  }
98
+ responseProxy.headers.set(X_MODERNJS_RENDER, "server");
99
99
  if (redirection.url) {
100
100
  const { headers: headers2 } = responseProxy;
101
101
  headers2.set("Location", redirection.url);
@@ -0,0 +1,153 @@
1
+ import { _ as _class_private_method_get } from "@swc/helpers/_/_class_private_method_get";
2
+ import { _ as _class_private_method_init } from "@swc/helpers/_/_class_private_method_init";
3
+ import { Hono } from "hono";
4
+ import { createContext } from "@modern-js/plugin";
5
+ import { PluginManager } from "./pluginManager";
6
+ var _getAppContext = /* @__PURE__ */ new WeakSet(), _applyMiddlewares = /* @__PURE__ */ new WeakSet();
7
+ class ServerBase {
8
+ /**
9
+ * 初始化顺序
10
+ * - 初始化 pluginManager;
11
+ * - 执行 runner.prepare;
12
+ * - 应用 middlewares
13
+ */
14
+ async init() {
15
+ const runner = await this.pluginManager.init();
16
+ this.runner = runner;
17
+ await runner.prepare();
18
+ _class_private_method_get(this, _applyMiddlewares, applyMiddlewares).call(this);
19
+ return this;
20
+ }
21
+ addPlugins(plugins) {
22
+ this.pluginManager.addPlugins(plugins);
23
+ }
24
+ get all() {
25
+ return this.app.all.bind(this.app);
26
+ }
27
+ get use() {
28
+ return this.app.use.bind(this.app);
29
+ }
30
+ get get() {
31
+ return this.app.get.bind(this.app);
32
+ }
33
+ get post() {
34
+ return this.app.post.bind(this.app);
35
+ }
36
+ get put() {
37
+ return this.app.put.bind(this.app);
38
+ }
39
+ get delete() {
40
+ return this.app.delete.bind(this.app);
41
+ }
42
+ get patch() {
43
+ return this.app.patch.bind(this.app);
44
+ }
45
+ get handle() {
46
+ return this.app.fetch.bind(this.app);
47
+ }
48
+ get request() {
49
+ return this.app.request.bind(this.app);
50
+ }
51
+ get notFound() {
52
+ return this.app.notFound.bind(this.app);
53
+ }
54
+ get onError() {
55
+ return this.app.onError.bind(this.app);
56
+ }
57
+ constructor(options) {
58
+ _class_private_method_init(this, _getAppContext);
59
+ _class_private_method_init(this, _applyMiddlewares);
60
+ this.options = options;
61
+ const { config, serverConfig } = options;
62
+ const appContext = _class_private_method_get(this, _getAppContext, getAppContext).call(this);
63
+ this.appContext = appContext;
64
+ this.pluginManager = new PluginManager({
65
+ cliConfig: config,
66
+ appContext,
67
+ serverConfig
68
+ });
69
+ this.app = new Hono();
70
+ }
71
+ }
72
+ function getAppContext() {
73
+ const { appContext: context, pwd, routes, metaName } = this.options;
74
+ const appContext = {
75
+ routes,
76
+ middlewares: [],
77
+ appDirectory: (context === null || context === void 0 ? void 0 : context.appDirectory) || "",
78
+ apiDirectory: context === null || context === void 0 ? void 0 : context.apiDirectory,
79
+ lambdaDirectory: context === null || context === void 0 ? void 0 : context.lambdaDirectory,
80
+ sharedDirectory: (context === null || context === void 0 ? void 0 : context.sharedDirectory) || "",
81
+ distDirectory: pwd,
82
+ plugins: [],
83
+ metaName: metaName || "modern-js",
84
+ serverBase: this
85
+ };
86
+ return createContext(appContext);
87
+ }
88
+ function applyMiddlewares() {
89
+ const { middlewares } = this.appContext.get();
90
+ const preMiddlewares = [];
91
+ const defaultMiddlewares = [];
92
+ const postMiddlewares = [];
93
+ for (const middleware of middlewares) {
94
+ switch (middleware.order) {
95
+ case "pre":
96
+ preMiddlewares.push(middleware);
97
+ break;
98
+ case "post":
99
+ postMiddlewares.push(middleware);
100
+ break;
101
+ default:
102
+ defaultMiddlewares.push(middleware);
103
+ }
104
+ }
105
+ const finalMiddlewares = [];
106
+ const insertMiddleware = (middleware) => {
107
+ if (middleware.before) {
108
+ const targetIndex = finalMiddlewares.findIndex((item) => {
109
+ var _middleware_before;
110
+ if ((_middleware_before = middleware.before) === null || _middleware_before === void 0 ? void 0 : _middleware_before.includes(item.name)) {
111
+ return true;
112
+ } else {
113
+ return false;
114
+ }
115
+ });
116
+ if (targetIndex !== -1) {
117
+ finalMiddlewares.splice(targetIndex, 0, middleware);
118
+ } else {
119
+ finalMiddlewares.push(middleware);
120
+ }
121
+ } else {
122
+ finalMiddlewares.push(middleware);
123
+ }
124
+ };
125
+ preMiddlewares.forEach(insertMiddleware);
126
+ defaultMiddlewares.forEach(insertMiddleware);
127
+ postMiddlewares.forEach(insertMiddleware);
128
+ for (const middleware of finalMiddlewares) {
129
+ const { path = "*", method = "all", handler } = middleware;
130
+ const handlers = handler2Handlers(handler);
131
+ this.app[method](path, ...handlers);
132
+ }
133
+ function handler2Handlers(handler) {
134
+ if (Array.isArray(handler)) {
135
+ return handler;
136
+ } else {
137
+ return [
138
+ handler
139
+ ];
140
+ }
141
+ }
142
+ }
143
+ function createServerBase(options) {
144
+ if (options == null) {
145
+ throw new Error("can not start server without options");
146
+ }
147
+ const server = new ServerBase(options);
148
+ return server;
149
+ }
150
+ export {
151
+ ServerBase,
152
+ createServerBase
153
+ };
@@ -0,0 +1,4 @@
1
+ export * from "./config";
2
+ export * from "./plugin";
3
+ export * from "./render";
4
+ export * from "./server";
@@ -5,3 +5,4 @@ export * from "./error";
5
5
  export * from "./warmup";
6
6
  export * from "./entry";
7
7
  export * from "./request";
8
+ export * from "./serverConfig";
@@ -0,0 +1,11 @@
1
+ import { deepmerge } from "deepmerge-ts";
2
+ const loadConfig = ({ cliConfig, serverConfig }) => {
3
+ const config = deepmerge({
4
+ ...cliConfig,
5
+ plugins: []
6
+ }, serverConfig);
7
+ return config;
8
+ };
9
+ export {
10
+ loadConfig
11
+ };
@@ -0,0 +1,4 @@
1
+ export { loadServerEnv } from './loadEnv';
2
+ export { loadServerPlugins } from './loadPlugin';
3
+ export { loadServerConfig } from './loadConfig';
4
+ export { loadCacheConfig } from './loadCache';
@@ -0,0 +1,2 @@
1
+ import { CacheConfig } from '../../../types';
2
+ export declare function loadCacheConfig(pwd: string): CacheConfig | undefined;
@@ -0,0 +1,2 @@
1
+ import { ServerConfig } from '../../../types';
2
+ export declare function loadServerConfig(pwd: string, oldServerFile?: string, newServerConfigPath?: string): ServerConfig | undefined;
@@ -1,3 +1,3 @@
1
- import type { ServerBaseOptions } from '../../serverBase';
1
+ import type { ServerBaseOptions } from '../../../serverBase';
2
2
  /** 读取 .env.{process.env.MODERN_ENV} 文件,加载环境变量 */
3
3
  export declare function loadServerEnv(options: ServerBaseOptions): Promise<void>;
@@ -0,0 +1,3 @@
1
+ import { ServerPlugin } from '@modern-js/types';
2
+ import { ServerPlugin as ServerPluginInstance } from '../../../types';
3
+ export declare function loadServerPlugins(serverPlugins: ServerPlugin[], appDirectory: string): ServerPluginInstance[];
@@ -1,5 +1,4 @@
1
- import { NodeRequest, NodeResponse } from '../../../core/plugin';
2
- import { Context, HonoRequest, ServerEnv, Middleware, Next, ServerManifest } from '../../../core/server';
1
+ import { NodeRequest, NodeResponse, Context, HonoRequest, ServerEnv, Middleware, Next, ServerManifest } from '../../types';
3
2
  type NodeBindings = {
4
3
  node: {
5
4
  req: NodeRequest & {
@@ -1,6 +1,5 @@
1
- export { loadServerEnv } from './loadServer';
2
1
  export { httpCallBack2HonoMid, connectMid2HonoMid } from './hono';
3
2
  export type { ServerNodeContext, ServerNodeMiddleware } from './hono';
4
3
  export { createNodeServer, sendResponse, createWebRequest, writeReadableStreamToWritable, } from './node';
5
- export { bindBFFHandler } from './bff';
6
- export { createStaticMiddleware, registerMockHandlers, injectServerManifest, injectTemplates, getHtmlTemplates, getServerManifest, } from './middlewares';
4
+ export { serverStaticPlugin, injectResourcePlugin, getHtmlTemplates, getServerManifest, injectNodeSeverPlugin, } from './plugins';
5
+ export { loadServerPlugins, loadServerEnv, loadServerConfig, loadCacheConfig, } from './helper';
@@ -2,8 +2,7 @@
2
2
  /// <reference types="node" />
3
3
  import { Server as NodeServer } from 'node:http';
4
4
  import type { Server as NodeHttpsServer } from 'node:https';
5
- import { NodeRequest, NodeResponse } from '../../../core/plugin';
6
- import { RequestHandler } from '../../../core/server';
5
+ import { NodeRequest, NodeResponse, RequestHandler } from '../../types';
7
6
  export { writeReadableStreamToWritable } from './polyfills';
8
7
  export declare const createWebRequest: (req: NodeRequest, res: NodeResponse, body?: BodyInit) => Request;
9
8
  export declare const sendResponse: (response: Response, res: NodeResponse) => Promise<void>;
@@ -0,0 +1,3 @@
1
+ export * from './static';
2
+ export * from './resource';
3
+ export * from './nodeServer';
@@ -0,0 +1,4 @@
1
+ import { ServerPlugin, NodeServer } from '../../../types';
2
+ export declare const injectNodeSeverPlugin: ({ nodeServer, }: {
3
+ nodeServer: NodeServer;
4
+ }) => ServerPlugin;
@@ -0,0 +1,7 @@
1
+ import type { Logger, ServerRoute } from '@modern-js/types';
2
+ import { Middleware, ServerEnv, ServerManifest, ServerPlugin } from '../../../types';
3
+ export declare function getHtmlTemplates(pwd: string, routes: ServerRoute[]): Promise<Record<string, string>>;
4
+ export declare function injectTemplates(pwd: string, routes?: ServerRoute[]): Middleware<ServerEnv>;
5
+ export declare function getServerManifest(pwd: string, routes: ServerRoute[], logger: Logger): Promise<ServerManifest>;
6
+ export declare function injectServerManifest(pwd: string, routes?: ServerRoute[]): Middleware<ServerEnv>;
7
+ export declare const injectResourcePlugin: () => ServerPlugin;
@@ -0,0 +1,15 @@
1
+ import { ServerRoute } from '@modern-js/types';
2
+ import type { OutputNormalizedConfig, HtmlNormalizedConfig, Middleware, ServerPlugin } from '../../../types';
3
+ export declare const serverStaticPlugin: () => ServerPlugin;
4
+ export type PublicMiddlwareOptions = {
5
+ pwd: string;
6
+ routes: ServerRoute[];
7
+ };
8
+ export declare function createPublicMiddleware({ pwd, routes, }: PublicMiddlwareOptions): Middleware;
9
+ export interface ServerStaticOptions {
10
+ pwd: string;
11
+ output: OutputNormalizedConfig;
12
+ html: HtmlNormalizedConfig;
13
+ routes?: ServerRoute[];
14
+ }
15
+ export declare function createStaticMiddleware(options: ServerStaticOptions): Middleware;
@@ -22,3 +22,4 @@ export declare enum ServerReportTimings {
22
22
  SERVER_HOOK_AFTER_MATCH = "server-hook-after-match"
23
23
  }
24
24
  export declare const X_RENDER_CACHE = "x-render-cache";
25
+ export declare const X_MODERNJS_RENDER = "x-modernjs-render";
@@ -1,5 +1,11 @@
1
- export * from './core/plugin';
2
- export * from './core/render';
1
+ export { createErrorHtml, onError, ErrorDigest } from './utils';
2
+ export { AGGRED_DIR } from './constants';
3
+ export type { ServerBase, ServerBaseOptions } from './serverBase';
4
+ export { createServerBase } from './serverBase';
5
+ export { PluginManager, type PluginManagerOptions } from './pluginManager';
6
+ export type { Middleware, Context, Next, HonoRequest as InternalRequest, ServerEnv, ServerManifest, } from './types';
7
+ export * from './plugins';
8
+ export * from './types/plugin';
9
+ export * from './types/render';
3
10
  export * from '@modern-js/plugin';
4
- export * from './core/loadPlugins';
5
11
  export * from './types/config';