@modern-js/server-core 2.53.0 → 2.54.1

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,10 @@
1
+ import { loadServerEnv } from "./loadEnv";
2
+ import { loadServerPlugins } from "./loadPlugin";
3
+ import { loadServerConfig } from "./loadConfig";
4
+ import { loadCacheConfig } from "./loadCache";
5
+ export {
6
+ loadCacheConfig,
7
+ loadServerConfig,
8
+ loadServerEnv,
9
+ loadServerPlugins
10
+ };
@@ -0,0 +1,19 @@
1
+ import path from "path";
2
+ import { SERVER_DIR, requireExistModule } from "@modern-js/utils";
3
+ const CACHE_FILENAME = "cache";
4
+ function loadCacheConfig(pwd) {
5
+ const serverCacheFilepath = path.resolve(pwd, SERVER_DIR, CACHE_FILENAME);
6
+ const mod = requireExistModule(serverCacheFilepath, {
7
+ interop: false
8
+ });
9
+ if (mod === null || mod === void 0 ? void 0 : mod.cacheOption) {
10
+ return {
11
+ strategy: mod.cacheOption,
12
+ container: mod.customContainer
13
+ };
14
+ }
15
+ return void 0;
16
+ }
17
+ export {
18
+ loadCacheConfig
19
+ };
@@ -0,0 +1,31 @@
1
+ import path from "path";
2
+ import { compatRequire, fs, DEFAULT_SERVER_CONFIG, requireExistModule } from "@modern-js/utils";
3
+ const requireConfig = (serverConfigPath) => {
4
+ if (fs.pathExistsSync(serverConfigPath)) {
5
+ return compatRequire(serverConfigPath);
6
+ }
7
+ return void 0;
8
+ };
9
+ function loadServerConfigNew(serverConfigPath) {
10
+ const mod = requireExistModule(serverConfigPath);
11
+ if (mod) {
12
+ return mod;
13
+ }
14
+ return void 0;
15
+ }
16
+ function loadServerConfigOld(pwd, configFile) {
17
+ const serverConfigPath = path.join(pwd, `${configFile}.js`);
18
+ const serverConfig = requireConfig(serverConfigPath);
19
+ return serverConfig;
20
+ }
21
+ function loadServerConfig(pwd, oldServerFile = DEFAULT_SERVER_CONFIG, newServerConfigPath) {
22
+ const newServerConfig = newServerConfigPath && loadServerConfigNew(newServerConfigPath);
23
+ if (newServerConfig) {
24
+ return newServerConfig;
25
+ }
26
+ const oldServerConfig = loadServerConfigOld(pwd, oldServerFile);
27
+ return oldServerConfig;
28
+ }
29
+ export {
30
+ loadServerConfig
31
+ };
@@ -0,0 +1,15 @@
1
+ import { compatRequire, tryResolve } from "@modern-js/utils";
2
+ function resolveServerPlugin(plugin, appDirectory) {
3
+ const { name, options } = plugin;
4
+ const pluginPath = tryResolve(name, appDirectory);
5
+ const module = compatRequire(pluginPath);
6
+ const pluginInstance = module(options);
7
+ return pluginInstance;
8
+ }
9
+ function loadServerPlugins(serverPlugins, appDirectory) {
10
+ const instances = serverPlugins.map((plugin) => resolveServerPlugin(plugin, appDirectory));
11
+ return instances;
12
+ }
13
+ export {
14
+ loadServerPlugins
15
+ };
@@ -1,21 +1,21 @@
1
- import { loadServerEnv } from "./loadServer";
2
1
  import { httpCallBack2HonoMid, connectMid2HonoMid } from "./hono";
3
2
  import { createNodeServer, sendResponse, createWebRequest, writeReadableStreamToWritable } from "./node";
4
- import { bindBFFHandler } from "./bff";
5
- import { createStaticMiddleware, registerMockHandlers, injectServerManifest, injectTemplates, getHtmlTemplates, getServerManifest } from "./middlewares";
3
+ import { serverStaticPlugin, injectResourcePlugin, getHtmlTemplates, getServerManifest, injectNodeSeverPlugin } from "./plugins";
4
+ import { loadServerPlugins, loadServerEnv, loadServerConfig, loadCacheConfig } from "./helper";
6
5
  export {
7
- bindBFFHandler,
8
6
  connectMid2HonoMid,
9
7
  createNodeServer,
10
- createStaticMiddleware,
11
8
  createWebRequest,
12
9
  getHtmlTemplates,
13
10
  getServerManifest,
14
11
  httpCallBack2HonoMid,
15
- injectServerManifest,
16
- injectTemplates,
12
+ injectNodeSeverPlugin,
13
+ injectResourcePlugin,
14
+ loadCacheConfig,
15
+ loadServerConfig,
17
16
  loadServerEnv,
18
- registerMockHandlers,
17
+ loadServerPlugins,
19
18
  sendResponse,
19
+ serverStaticPlugin,
20
20
  writeReadableStreamToWritable
21
21
  };
@@ -0,0 +1,3 @@
1
+ export * from "./static";
2
+ export * from "./resource";
3
+ export * from "./nodeServer";
@@ -0,0 +1,14 @@
1
+ const injectNodeSeverPlugin = ({ nodeServer }) => ({
2
+ name: "@modern-js/plugin-inject-node-server",
3
+ setup(api) {
4
+ const appContext = api.useAppContext();
5
+ api.setAppContext({
6
+ ...appContext,
7
+ nodeServer
8
+ });
9
+ return {};
10
+ }
11
+ });
12
+ export {
13
+ injectNodeSeverPlugin
14
+ };
@@ -1,5 +1,32 @@
1
1
  import path from "path";
2
+ import { fileReader } from "@modern-js/runtime-utils/fileReader";
2
3
  import { LOADABLE_STATS_FILE, MAIN_ENTRY_NAME, ROUTE_MANIFEST_FILE, SERVER_BUNDLE_DIRECTORY, fs } from "@modern-js/utils";
4
+ async function getHtmlTemplates(pwd, routes) {
5
+ const htmls = await Promise.all(routes.map(async (route) => {
6
+ let html;
7
+ try {
8
+ var _this;
9
+ const htmlPath = path.join(pwd, route.entryPath);
10
+ html = (_this = await fileReader.readFile(htmlPath, "utf-8")) === null || _this === void 0 ? void 0 : _this.toString();
11
+ } catch (e) {
12
+ }
13
+ return [
14
+ route.entryName,
15
+ html
16
+ ];
17
+ }) || []);
18
+ const templates = Object.fromEntries(htmls);
19
+ return templates;
20
+ }
21
+ function injectTemplates(pwd, routes) {
22
+ return async (c, next) => {
23
+ if (routes && !c.get("templates")) {
24
+ const templates = await getHtmlTemplates(pwd, routes);
25
+ c.set("templates", templates);
26
+ }
27
+ await next();
28
+ };
29
+ }
3
30
  const dynamicImport = (filePath) => {
4
31
  try {
5
32
  const module = require(filePath);
@@ -50,7 +77,28 @@ function injectServerManifest(pwd, routes) {
50
77
  await next();
51
78
  };
52
79
  }
80
+ const injectResourcePlugin = () => ({
81
+ name: "@modern-js/plugin-inject-resource",
82
+ setup(api) {
83
+ return {
84
+ async prepare() {
85
+ const { middlewares, routes, distDirectory: pwd } = api.useAppContext();
86
+ middlewares.push({
87
+ name: "inject-server-manifest",
88
+ handler: injectServerManifest(pwd, routes)
89
+ });
90
+ middlewares.push({
91
+ name: "inject-html",
92
+ handler: injectTemplates(pwd, routes)
93
+ });
94
+ }
95
+ };
96
+ }
97
+ });
53
98
  export {
99
+ getHtmlTemplates,
54
100
  getServerManifest,
55
- injectServerManifest
101
+ injectResourcePlugin,
102
+ injectServerManifest,
103
+ injectTemplates
56
104
  };
@@ -2,7 +2,57 @@ import path from "path";
2
2
  import { fs } from "@modern-js/utils";
3
3
  import { getMimeType } from "hono/utils/mime";
4
4
  import { fileReader } from "@modern-js/runtime-utils/fileReader";
5
- import { createPublicMiddleware } from "./serverPublic";
5
+ import { sortRoutes } from "../../../utils";
6
+ const serverStaticPlugin = () => ({
7
+ name: "@modern-js/plugin-server-static",
8
+ setup(api) {
9
+ return {
10
+ prepare() {
11
+ const { middlewares, distDirectory: pwd, routes } = api.useAppContext();
12
+ const config = api.useConfigContext();
13
+ const serverStaticMiddleware = createStaticMiddleware({
14
+ pwd,
15
+ routes,
16
+ output: config.output || {},
17
+ html: config.html || {}
18
+ });
19
+ middlewares.push({
20
+ name: "server-static",
21
+ handler: serverStaticMiddleware
22
+ });
23
+ }
24
+ };
25
+ }
26
+ });
27
+ function createPublicMiddleware({ pwd, routes }) {
28
+ return async (c, next) => {
29
+ const route = matchRoute(c.req, routes);
30
+ if (route) {
31
+ const { entryPath } = route;
32
+ const filename = path.join(pwd, entryPath);
33
+ const data = await fileReader.readFile(filename, "buffer");
34
+ const mimeType = getMimeType(filename);
35
+ if (data !== null) {
36
+ if (mimeType) {
37
+ c.header("Content-Type", mimeType);
38
+ }
39
+ Object.entries(route.responseHeaders || {}).forEach(([k, v]) => {
40
+ c.header(k, v);
41
+ });
42
+ return c.body(data, 200);
43
+ }
44
+ }
45
+ return await next();
46
+ };
47
+ }
48
+ function matchRoute(req, routes) {
49
+ for (const route of routes.sort(sortRoutes)) {
50
+ if (!route.isSSR && route.entryPath.startsWith("public") && req.path.startsWith(route.urlPath)) {
51
+ return route;
52
+ }
53
+ }
54
+ return void 0;
55
+ }
6
56
  function createStaticMiddleware(options) {
7
57
  const { pwd, routes } = options;
8
58
  const prefix = options.output.assetPrefix || "/";
@@ -70,5 +120,7 @@ const prepareFavicons = (favicon, faviconByEntries) => {
70
120
  return faviconNames;
71
121
  };
72
122
  export {
73
- createStaticMiddleware
123
+ createPublicMiddleware,
124
+ createStaticMiddleware,
125
+ serverStaticPlugin
74
126
  };
@@ -23,9 +23,11 @@ var ServerReportTimings;
23
23
  ServerReportTimings2["SERVER_HOOK_AFTER_MATCH"] = "server-hook-after-match";
24
24
  })(ServerReportTimings || (ServerReportTimings = {}));
25
25
  const X_RENDER_CACHE = "x-render-cache";
26
+ const X_MODERNJS_RENDER = "x-modernjs-render";
26
27
  export {
27
28
  AGGRED_DIR,
28
29
  REPLACE_REG,
29
30
  ServerReportTimings,
31
+ X_MODERNJS_RENDER,
30
32
  X_RENDER_CACHE
31
33
  };
@@ -1,5 +1,17 @@
1
- export * from "./core/plugin";
2
- export * from "./core/render";
1
+ import { createErrorHtml, onError, ErrorDigest } from "./utils";
2
+ import { AGGRED_DIR } from "./constants";
3
+ import { createServerBase } from "./serverBase";
4
+ import { PluginManager } from "./pluginManager";
5
+ export * from "./plugins";
6
+ export * from "./types/plugin";
7
+ export * from "./types/render";
3
8
  export * from "@modern-js/plugin";
4
- export * from "./core/loadPlugins";
5
9
  export * from "./types/config";
10
+ export {
11
+ AGGRED_DIR,
12
+ ErrorDigest,
13
+ PluginManager,
14
+ createErrorHtml,
15
+ createServerBase,
16
+ onError
17
+ };
@@ -0,0 +1,82 @@
1
+ import { _ as _class_private_field_get } from "@swc/helpers/_/_class_private_field_get";
2
+ import { _ as _class_private_field_init } from "@swc/helpers/_/_class_private_field_init";
3
+ import { _ as _class_private_field_set } from "@swc/helpers/_/_class_private_field_set";
4
+ import { _ as _class_private_method_get } from "@swc/helpers/_/_class_private_method_get";
5
+ import { _ as _class_private_method_init } from "@swc/helpers/_/_class_private_method_init";
6
+ import { createAsyncManager, createAsyncPipeline, createAsyncWaterfall, createContext, createParallelWorkflow } from "@modern-js/plugin";
7
+ import { loadConfig } from "./utils";
8
+ var _appContext = /* @__PURE__ */ new WeakMap(), _plugins = /* @__PURE__ */ new WeakMap(), _options = /* @__PURE__ */ new WeakMap(), _configContext = /* @__PURE__ */ new WeakMap(), _createCoreManager = /* @__PURE__ */ new WeakSet(), _initConfigContext = /* @__PURE__ */ new WeakSet();
9
+ class PluginManager {
10
+ async init() {
11
+ const coreManager = _class_private_method_get(this, _createCoreManager, createCoreManager).call(this);
12
+ const runner = await coreManager.init();
13
+ await _class_private_method_get(this, _initConfigContext, initConfigContext).call(this, runner);
14
+ return runner;
15
+ }
16
+ addPlugins(plugins) {
17
+ _class_private_field_get(this, _plugins).push(...plugins);
18
+ }
19
+ constructor(options) {
20
+ _class_private_method_init(this, _createCoreManager);
21
+ _class_private_method_init(this, _initConfigContext);
22
+ _class_private_field_init(this, _appContext, {
23
+ writable: true,
24
+ value: void 0
25
+ });
26
+ _class_private_field_init(this, _plugins, {
27
+ writable: true,
28
+ value: void 0
29
+ });
30
+ _class_private_field_init(this, _options, {
31
+ writable: true,
32
+ value: void 0
33
+ });
34
+ _class_private_field_init(this, _configContext, {
35
+ writable: true,
36
+ value: void 0
37
+ });
38
+ _class_private_field_set(this, _plugins, []);
39
+ _class_private_field_set(this, _configContext, createContext({}));
40
+ _class_private_field_set(this, _appContext, options.appContext);
41
+ _class_private_field_set(this, _configContext, createContext(options.serverConfig || {}));
42
+ _class_private_field_set(this, _options, options);
43
+ }
44
+ }
45
+ function createCoreManager() {
46
+ var _class_private_field_get_serverConfig;
47
+ const hooks = {
48
+ config: createAsyncWaterfall(),
49
+ prepare: createAsyncWaterfall(),
50
+ reset: createParallelWorkflow(),
51
+ prepareWebServer: createAsyncPipeline(),
52
+ fallback: createParallelWorkflow(),
53
+ prepareApiServer: createAsyncPipeline(),
54
+ afterMatch: createAsyncPipeline(),
55
+ afterRender: createAsyncPipeline(),
56
+ afterStreamingRender: createAsyncPipeline()
57
+ };
58
+ const pluginApi = {
59
+ useConfigContext: () => _class_private_field_get(this, _configContext).use().value,
60
+ useAppContext: () => _class_private_field_get(this, _appContext).use().value,
61
+ setAppContext: (c) => _class_private_field_get(this, _appContext).set(c)
62
+ };
63
+ const coreManager = createAsyncManager(hooks, pluginApi);
64
+ this.addPlugins(((_class_private_field_get_serverConfig = _class_private_field_get(this, _options).serverConfig) === null || _class_private_field_get_serverConfig === void 0 ? void 0 : _class_private_field_get_serverConfig.plugins) || []);
65
+ _class_private_field_get(this, _plugins).forEach((p) => {
66
+ const plugin = coreManager.createPlugin(p.setup, p);
67
+ coreManager.usePlugin(plugin);
68
+ });
69
+ return coreManager;
70
+ }
71
+ async function initConfigContext(runner) {
72
+ const { serverConfig, cliConfig } = _class_private_field_get(this, _options);
73
+ const mergedConfig = loadConfig({
74
+ cliConfig,
75
+ serverConfig: serverConfig || {}
76
+ });
77
+ const finalServerConfig = await runner.config(mergedConfig);
78
+ _class_private_field_get(this, _configContext).set(finalServerConfig);
79
+ }
80
+ export {
81
+ PluginManager
82
+ };
@@ -78,7 +78,7 @@ class CustomServer {
78
78
  return;
79
79
  }
80
80
  if (Array.isArray(serverMiddleware)) {
81
- return getUnstableMiddlewares(serverMiddleware);
81
+ return getServerMidFromUnstableMid(serverMiddleware);
82
82
  }
83
83
  return async (c, next) => {
84
84
  var _c_env_node_res, _c_env_node, _c_env;
@@ -118,6 +118,14 @@ class CustomServer {
118
118
  });
119
119
  }
120
120
  }
121
+ function getServerMidFromUnstableMid(serverMiddleware) {
122
+ return serverMiddleware.map((middleware) => {
123
+ return async (c, next) => {
124
+ const context = createMiddlewareContextFromHono(c);
125
+ return middleware(context, next);
126
+ };
127
+ });
128
+ }
121
129
  function isRedirect(headers, code) {
122
130
  return [
123
131
  301,
@@ -126,14 +134,6 @@ function isRedirect(headers, code) {
126
134
  308
127
135
  ].includes(code || 0) || headers.get("Location");
128
136
  }
129
- function getUnstableMiddlewares(serverMiddleware) {
130
- return serverMiddleware.map((middleware) => {
131
- return async (c, next) => {
132
- const context = createMiddlewareContextFromHono(c);
133
- return middleware(context, next);
134
- };
135
- });
136
- }
137
137
  function createMiddlewareContextFromHono(c) {
138
138
  const loaderContext = getLoaderCtx(c);
139
139
  return {
@@ -161,5 +161,6 @@ function createMiddlewareContextFromHono(c) {
161
161
  }
162
162
  export {
163
163
  CustomServer,
164
- getLoaderCtx2 as getLoaderCtx
164
+ getLoaderCtx2 as getLoaderCtx,
165
+ getServerMidFromUnstableMid
165
166
  };
@@ -0,0 +1,20 @@
1
+ const faviconPlugin = () => ({
2
+ name: "@modern-js/plugin-favicon",
3
+ setup(api) {
4
+ return {
5
+ prepare() {
6
+ const { middlewares } = api.useAppContext();
7
+ middlewares.push({
8
+ name: "favicon-fallback",
9
+ path: "/favicon.ico",
10
+ handler: async (c, _next) => {
11
+ return c.body(null, 204);
12
+ }
13
+ });
14
+ }
15
+ };
16
+ }
17
+ });
18
+ export {
19
+ faviconPlugin
20
+ };
@@ -0,0 +1,15 @@
1
+ import { renderPlugin, getRenderHandler } from "./render";
2
+ import { faviconPlugin } from "./favicon";
3
+ import { processedByPlugin } from "./processedBy";
4
+ import { getLoaderCtx } from "./customServer";
5
+ import { logPlugin } from "./log";
6
+ import { monitorPlugin } from "./monitor";
7
+ export {
8
+ faviconPlugin,
9
+ getLoaderCtx,
10
+ getRenderHandler,
11
+ logPlugin,
12
+ monitorPlugin,
13
+ processedByPlugin,
14
+ renderPlugin
15
+ };
@@ -40,6 +40,10 @@ function logHandler() {
40
40
  return async function logger(c, next) {
41
41
  const { method } = c.req;
42
42
  const logger2 = c.get("logger");
43
+ if (!logger2) {
44
+ await next();
45
+ return;
46
+ }
43
47
  const path = getPathname(c.req.raw);
44
48
  const logFn = logger2.debug;
45
49
  log(logFn, "<--", method, path);
@@ -48,6 +52,20 @@ function logHandler() {
48
52
  log(logFn, "-->", method, path, c.res.status, time(start));
49
53
  };
50
54
  }
55
+ const logPlugin = () => ({
56
+ name: "@modern-js/plugin-log",
57
+ setup(api) {
58
+ return {
59
+ prepare() {
60
+ const { middlewares } = api.useAppContext();
61
+ middlewares.push({
62
+ name: "print_log",
63
+ handler: logHandler()
64
+ });
65
+ }
66
+ };
67
+ }
68
+ });
51
69
  export {
52
- logHandler
70
+ logPlugin
53
71
  };
@@ -0,0 +1,62 @@
1
+ import { time } from "@modern-js/runtime-utils/time";
2
+ import { ServerReportTimings } from "../constants";
3
+ const defaultReporter = {
4
+ init() {
5
+ },
6
+ reportError() {
7
+ },
8
+ reportTiming() {
9
+ },
10
+ reportInfo() {
11
+ },
12
+ reportWarn() {
13
+ }
14
+ };
15
+ function initReporter(entryName) {
16
+ return async (c, next) => {
17
+ const reporter = c.get("reporter");
18
+ if (!reporter) {
19
+ await next();
20
+ return;
21
+ }
22
+ await reporter.init({
23
+ entryName
24
+ });
25
+ const getCost = time();
26
+ await next();
27
+ const cost = getCost();
28
+ reporter.reportTiming(ServerReportTimings.SERVER_HANDLE_REQUEST, cost);
29
+ };
30
+ }
31
+ const monitorPlugin = (options) => ({
32
+ name: "@modern-js/plugin-monitor",
33
+ setup(api) {
34
+ return {
35
+ prepare() {
36
+ const { middlewares } = api.useAppContext();
37
+ middlewares.push({
38
+ name: "monitor",
39
+ handler: async (c, next) => {
40
+ const logger = c.get("logger");
41
+ if (!logger && options.logger) {
42
+ c.set("logger", options.logger);
43
+ }
44
+ const metrics = c.get("metrics");
45
+ if (!metrics && options.metrics) {
46
+ c.set("metrics", metrics);
47
+ }
48
+ const reporter = c.get("reporter");
49
+ if (!reporter) {
50
+ c.set("reporter", reporter || defaultReporter);
51
+ }
52
+ await next();
53
+ }
54
+ });
55
+ }
56
+ };
57
+ }
58
+ });
59
+ export {
60
+ initReporter,
61
+ monitorPlugin
62
+ };
@@ -0,0 +1,20 @@
1
+ const processedByPlugin = () => ({
2
+ name: "@modern-js/plugin-processed",
3
+ setup(api) {
4
+ return {
5
+ prepare() {
6
+ const { middlewares } = api.useAppContext();
7
+ middlewares.push({
8
+ name: "processed-by",
9
+ handler: async (c, next) => {
10
+ await next();
11
+ c.header("X-Processed-By", "Modern.js");
12
+ }
13
+ });
14
+ }
15
+ };
16
+ }
17
+ });
18
+ export {
19
+ processedByPlugin
20
+ };