@modern-js/server-core 2.69.4 → 3.0.0-alpha.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 (358) hide show
  1. package/dist/cjs/adapters/node/helper/index.js +52 -39
  2. package/dist/cjs/adapters/node/helper/loadCache.js +52 -47
  3. package/dist/cjs/adapters/node/helper/loadConfig.js +69 -85
  4. package/dist/cjs/adapters/node/helper/loadEnv.js +60 -50
  5. package/dist/cjs/adapters/node/helper/loadPlugin.js +40 -32
  6. package/dist/cjs/adapters/node/helper/utils.js +33 -28
  7. package/dist/cjs/adapters/node/hono.js +87 -99
  8. package/dist/cjs/adapters/node/index.js +84 -60
  9. package/dist/cjs/adapters/node/node.js +164 -190
  10. package/dist/cjs/adapters/node/plugins/index.js +69 -23
  11. package/dist/cjs/adapters/node/plugins/nodeServer.js +39 -34
  12. package/dist/cjs/adapters/node/plugins/resource.js +186 -181
  13. package/dist/cjs/adapters/node/plugins/static.js +152 -164
  14. package/dist/cjs/constants.js +70 -57
  15. package/dist/cjs/context.js +37 -28
  16. package/dist/cjs/helper.js +40 -33
  17. package/dist/cjs/hono.js +46 -0
  18. package/dist/cjs/index.js +236 -57
  19. package/dist/cjs/plugins/compat/hooks.js +71 -83
  20. package/dist/cjs/plugins/compat/index.js +59 -60
  21. package/dist/cjs/plugins/default.js +52 -47
  22. package/dist/cjs/plugins/favicon.js +43 -39
  23. package/dist/cjs/plugins/index.js +73 -54
  24. package/dist/cjs/plugins/log.js +82 -87
  25. package/dist/cjs/plugins/middlewares.js +43 -37
  26. package/dist/cjs/plugins/monitors.js +178 -187
  27. package/dist/cjs/plugins/processedBy.js +45 -39
  28. package/dist/cjs/plugins/render/csrRscRender.js +70 -71
  29. package/dist/cjs/plugins/render/dataHandler.js +49 -45
  30. package/dist/cjs/plugins/render/index.js +152 -126
  31. package/dist/cjs/plugins/render/inject.js +84 -86
  32. package/dist/cjs/plugins/render/render.js +244 -271
  33. package/dist/cjs/plugins/render/renderRscHandler.js +68 -69
  34. package/dist/cjs/plugins/render/serverActionHandler.js +45 -44
  35. package/dist/cjs/plugins/render/ssrCache.js +173 -191
  36. package/dist/cjs/plugins/render/ssrRender.js +89 -94
  37. package/dist/cjs/plugins/render/utils.js +44 -36
  38. package/dist/cjs/plugins/route.js +60 -57
  39. package/dist/cjs/serverBase.js +164 -162
  40. package/dist/cjs/types/config/bff.js +17 -15
  41. package/dist/cjs/types/config/dev.js +17 -15
  42. package/dist/cjs/types/config/html.js +17 -15
  43. package/dist/cjs/types/config/index.js +90 -29
  44. package/dist/cjs/types/config/output.js +17 -15
  45. package/dist/cjs/types/config/security.js +17 -15
  46. package/dist/cjs/types/config/server.js +17 -15
  47. package/dist/cjs/types/config/share.js +17 -15
  48. package/dist/cjs/types/config/source.js +17 -15
  49. package/dist/cjs/types/config/tools.js +17 -15
  50. package/dist/cjs/types/index.js +76 -25
  51. package/dist/cjs/types/plugins/base.js +17 -15
  52. package/dist/cjs/types/plugins/index.js +55 -21
  53. package/dist/cjs/types/plugins/plugin.js +18 -0
  54. package/dist/cjs/types/render.js +17 -15
  55. package/dist/cjs/types/requestHandler.js +17 -15
  56. package/dist/cjs/types/server.js +17 -15
  57. package/dist/cjs/utils/entry.js +37 -32
  58. package/dist/cjs/utils/env.js +46 -40
  59. package/dist/cjs/utils/error.js +56 -50
  60. package/dist/cjs/utils/index.js +111 -33
  61. package/dist/cjs/utils/middlewareCollector.js +58 -49
  62. package/dist/cjs/utils/publicDir.js +92 -0
  63. package/dist/cjs/utils/request.js +73 -65
  64. package/dist/cjs/utils/serverConfig.js +39 -31
  65. package/dist/cjs/utils/storage.js +58 -68
  66. package/dist/cjs/utils/transformStream.js +57 -53
  67. package/dist/cjs/utils/warmup.js +34 -27
  68. package/dist/esm/adapters/node/helper/index.mjs +6 -0
  69. package/dist/esm/adapters/node/helper/loadCache.mjs +14 -0
  70. package/dist/esm/adapters/node/helper/loadConfig.mjs +31 -0
  71. package/dist/esm/adapters/node/helper/loadEnv.mjs +22 -0
  72. package/dist/esm/adapters/node/helper/loadPlugin.mjs +13 -0
  73. package/dist/esm/adapters/node/helper/utils.mjs +2 -0
  74. package/dist/esm/adapters/node/hono.mjs +53 -0
  75. package/dist/esm/adapters/node/index.mjs +5 -0
  76. package/dist/esm/adapters/node/node.mjs +129 -0
  77. package/dist/esm/adapters/node/plugins/nodeServer.mjs +9 -0
  78. package/dist/esm/adapters/node/plugins/resource.mjs +138 -0
  79. package/dist/esm/adapters/node/plugins/static.mjs +118 -0
  80. package/dist/esm/constants.mjs +28 -0
  81. package/dist/{esm-node/context.js → esm/context.mjs} +1 -4
  82. package/dist/esm/helper.mjs +11 -0
  83. package/dist/esm/hono.mjs +3 -0
  84. package/dist/esm/index.mjs +13 -0
  85. package/dist/esm/plugins/compat/hooks.mjs +40 -0
  86. package/dist/esm/plugins/compat/index.mjs +27 -0
  87. package/dist/esm/plugins/default.mjs +25 -0
  88. package/dist/esm/plugins/favicon.mjs +14 -0
  89. package/dist/{esm-node/plugins/index.js → esm/plugins/index.mjs} +2 -15
  90. package/dist/esm/plugins/log.mjs +58 -0
  91. package/dist/esm/plugins/middlewares.mjs +15 -0
  92. package/dist/esm/plugins/monitors.mjs +149 -0
  93. package/dist/esm/plugins/processedBy.mjs +16 -0
  94. package/dist/esm/plugins/render/csrRscRender.mjs +43 -0
  95. package/dist/esm/plugins/render/dataHandler.mjs +19 -0
  96. package/dist/esm/plugins/render/index.mjs +84 -0
  97. package/dist/esm/plugins/render/inject.mjs +55 -0
  98. package/dist/esm/plugins/render/render.mjs +226 -0
  99. package/dist/esm/plugins/render/renderRscHandler.mjs +41 -0
  100. package/dist/esm/plugins/render/serverActionHandler.mjs +18 -0
  101. package/dist/esm/plugins/render/ssrCache.mjs +158 -0
  102. package/dist/esm/plugins/render/ssrRender.mjs +62 -0
  103. package/dist/esm/plugins/render/utils.mjs +15 -0
  104. package/dist/esm/plugins/route.mjs +34 -0
  105. package/dist/esm/serverBase.mjs +136 -0
  106. package/dist/esm/types/plugins/index.mjs +1 -0
  107. package/dist/esm/utils/entry.mjs +3 -0
  108. package/dist/esm/utils/env.mjs +14 -0
  109. package/dist/esm/utils/error.mjs +53 -0
  110. package/dist/{esm-node/utils/index.js → esm/utils/index.mjs} +1 -0
  111. package/dist/esm/utils/middlewareCollector.mjs +26 -0
  112. package/dist/esm/utils/publicDir.mjs +33 -0
  113. package/dist/esm/utils/request.mjs +40 -0
  114. package/dist/esm/utils/serverConfig.mjs +9 -0
  115. package/dist/esm/utils/storage.mjs +30 -0
  116. package/dist/esm/utils/transformStream.mjs +28 -0
  117. package/dist/esm/utils/warmup.mjs +6 -0
  118. package/dist/esm-node/adapters/node/helper/index.mjs +6 -0
  119. package/dist/esm-node/adapters/node/helper/loadCache.mjs +14 -0
  120. package/dist/esm-node/adapters/node/helper/loadConfig.mjs +31 -0
  121. package/dist/esm-node/adapters/node/helper/loadEnv.mjs +22 -0
  122. package/dist/esm-node/adapters/node/helper/loadPlugin.mjs +13 -0
  123. package/dist/esm-node/adapters/node/helper/utils.mjs +2 -0
  124. package/dist/esm-node/adapters/node/hono.mjs +53 -0
  125. package/dist/esm-node/adapters/node/index.mjs +5 -0
  126. package/dist/esm-node/adapters/node/node.mjs +129 -0
  127. package/dist/esm-node/adapters/node/plugins/index.mjs +3 -0
  128. package/dist/esm-node/adapters/node/plugins/nodeServer.mjs +9 -0
  129. package/dist/esm-node/adapters/node/plugins/resource.mjs +138 -0
  130. package/dist/esm-node/adapters/node/plugins/static.mjs +118 -0
  131. package/dist/esm-node/constants.mjs +28 -0
  132. package/dist/esm-node/context.mjs +3 -0
  133. package/dist/esm-node/helper.mjs +11 -0
  134. package/dist/esm-node/hono.mjs +3 -0
  135. package/dist/esm-node/index.mjs +13 -0
  136. package/dist/esm-node/plugins/compat/hooks.mjs +40 -0
  137. package/dist/esm-node/plugins/compat/index.mjs +27 -0
  138. package/dist/esm-node/plugins/default.mjs +25 -0
  139. package/dist/esm-node/plugins/favicon.mjs +14 -0
  140. package/dist/esm-node/plugins/index.mjs +9 -0
  141. package/dist/esm-node/plugins/log.mjs +58 -0
  142. package/dist/esm-node/plugins/middlewares.mjs +15 -0
  143. package/dist/esm-node/plugins/monitors.mjs +149 -0
  144. package/dist/esm-node/plugins/processedBy.mjs +16 -0
  145. package/dist/esm-node/plugins/render/csrRscRender.mjs +43 -0
  146. package/dist/esm-node/plugins/render/dataHandler.mjs +19 -0
  147. package/dist/esm-node/plugins/render/index.mjs +84 -0
  148. package/dist/esm-node/plugins/render/inject.mjs +55 -0
  149. package/dist/esm-node/plugins/render/render.mjs +226 -0
  150. package/dist/esm-node/plugins/render/renderRscHandler.mjs +41 -0
  151. package/dist/esm-node/plugins/render/serverActionHandler.mjs +18 -0
  152. package/dist/esm-node/plugins/render/ssrCache.mjs +158 -0
  153. package/dist/esm-node/plugins/render/ssrRender.mjs +62 -0
  154. package/dist/esm-node/plugins/render/utils.mjs +15 -0
  155. package/dist/esm-node/plugins/route.mjs +34 -0
  156. package/dist/esm-node/serverBase.mjs +136 -0
  157. package/dist/esm-node/types/config/index.mjs +6 -0
  158. package/dist/esm-node/types/index.mjs +4 -0
  159. package/dist/esm-node/types/plugins/index.mjs +1 -0
  160. package/dist/esm-node/utils/entry.mjs +3 -0
  161. package/dist/esm-node/utils/env.mjs +14 -0
  162. package/dist/esm-node/utils/error.mjs +53 -0
  163. package/dist/esm-node/utils/index.mjs +9 -0
  164. package/dist/esm-node/utils/middlewareCollector.mjs +26 -0
  165. package/dist/esm-node/utils/publicDir.mjs +33 -0
  166. package/dist/esm-node/utils/request.mjs +40 -0
  167. package/dist/esm-node/utils/serverConfig.mjs +9 -0
  168. package/dist/esm-node/utils/storage.mjs +30 -0
  169. package/dist/esm-node/utils/transformStream.mjs +28 -0
  170. package/dist/esm-node/utils/warmup.mjs +6 -0
  171. package/dist/types/adapters/node/helper/loadConfig.d.ts +1 -1
  172. package/dist/types/adapters/node/plugins/nodeServer.d.ts +2 -2
  173. package/dist/types/adapters/node/plugins/resource.d.ts +3 -3
  174. package/dist/types/adapters/node/plugins/static.d.ts +3 -2
  175. package/dist/types/hono.d.ts +3 -0
  176. package/dist/types/index.d.ts +1 -1
  177. package/dist/types/plugins/compat/hooks.d.ts +1 -1
  178. package/dist/types/plugins/default.d.ts +2 -2
  179. package/dist/types/plugins/favicon.d.ts +2 -2
  180. package/dist/types/plugins/log.d.ts +2 -2
  181. package/dist/types/plugins/middlewares.d.ts +2 -2
  182. package/dist/types/plugins/monitors.d.ts +4 -4
  183. package/dist/types/plugins/processedBy.d.ts +2 -2
  184. package/dist/types/plugins/render/dataHandler.d.ts +1 -1
  185. package/dist/types/plugins/render/index.d.ts +2 -2
  186. package/dist/types/plugins/render/inject.d.ts +2 -2
  187. package/dist/types/plugins/render/ssrRender.d.ts +3 -5
  188. package/dist/types/plugins/route.d.ts +2 -2
  189. package/dist/types/serverBase.d.ts +14 -20
  190. package/dist/types/types/config/bff.d.ts +0 -2
  191. package/dist/types/types/config/html.d.ts +0 -1
  192. package/dist/types/types/config/index.d.ts +0 -6
  193. package/dist/types/types/config/output.d.ts +2 -8
  194. package/dist/types/types/config/server.d.ts +1 -1
  195. package/dist/types/types/plugins/base.d.ts +5 -26
  196. package/dist/types/types/plugins/index.d.ts +1 -2
  197. package/dist/types/types/plugins/{new.d.ts → plugin.d.ts} +6 -4
  198. package/dist/types/types/render.d.ts +2 -5
  199. package/dist/types/types/requestHandler.d.ts +3 -7
  200. package/dist/types/types/server.d.ts +2 -1
  201. package/dist/types/utils/index.d.ts +1 -0
  202. package/dist/types/utils/publicDir.d.ts +40 -0
  203. package/dist/types/utils/transformStream.d.ts +1 -1
  204. package/package.json +25 -29
  205. package/rslib.config.mts +4 -0
  206. package/rstest.config.ts +7 -0
  207. package/dist/cjs/plugins/customServer/base.js +0 -186
  208. package/dist/cjs/plugins/customServer/context.js +0 -70
  209. package/dist/cjs/plugins/customServer/index.js +0 -210
  210. package/dist/cjs/plugins/customServer/routerApi.js +0 -44
  211. package/dist/cjs/plugins/customServer/template.js +0 -58
  212. package/dist/cjs/types/plugins/new.js +0 -16
  213. package/dist/cjs/types/plugins/old.js +0 -16
  214. package/dist/esm/adapters/node/helper/index.js +0 -13
  215. package/dist/esm/adapters/node/helper/loadCache.js +0 -44
  216. package/dist/esm/adapters/node/helper/loadConfig.js +0 -157
  217. package/dist/esm/adapters/node/helper/loadEnv.js +0 -73
  218. package/dist/esm/adapters/node/helper/loadPlugin.js +0 -59
  219. package/dist/esm/adapters/node/helper/utils.js +0 -7
  220. package/dist/esm/adapters/node/hono.js +0 -148
  221. package/dist/esm/adapters/node/index.js +0 -23
  222. package/dist/esm/adapters/node/node.js +0 -357
  223. package/dist/esm/adapters/node/plugins/index.js +0 -3
  224. package/dist/esm/adapters/node/plugins/nodeServer.js +0 -18
  225. package/dist/esm/adapters/node/plugins/resource.js +0 -543
  226. package/dist/esm/adapters/node/plugins/static.js +0 -245
  227. package/dist/esm/constants.js +0 -35
  228. package/dist/esm/context.js +0 -6
  229. package/dist/esm/helper.js +0 -14
  230. package/dist/esm/index.js +0 -22
  231. package/dist/esm/plugins/compat/hooks.js +0 -70
  232. package/dist/esm/plugins/compat/index.js +0 -45
  233. package/dist/esm/plugins/customServer/base.js +0 -218
  234. package/dist/esm/plugins/customServer/context.js +0 -66
  235. package/dist/esm/plugins/customServer/index.js +0 -369
  236. package/dist/esm/plugins/customServer/routerApi.js +0 -26
  237. package/dist/esm/plugins/customServer/template.js +0 -47
  238. package/dist/esm/plugins/default.js +0 -31
  239. package/dist/esm/plugins/favicon.js +0 -34
  240. package/dist/esm/plugins/index.js +0 -22
  241. package/dist/esm/plugins/log.js +0 -106
  242. package/dist/esm/plugins/middlewares.js +0 -22
  243. package/dist/esm/plugins/monitors.js +0 -287
  244. package/dist/esm/plugins/processedBy.js +0 -42
  245. package/dist/esm/plugins/render/csrRscRender.js +0 -88
  246. package/dist/esm/plugins/render/dataHandler.js +0 -48
  247. package/dist/esm/plugins/render/index.js +0 -215
  248. package/dist/esm/plugins/render/inject.js +0 -126
  249. package/dist/esm/plugins/render/render.js +0 -572
  250. package/dist/esm/plugins/render/renderRscHandler.js +0 -81
  251. package/dist/esm/plugins/render/serverActionHandler.js +0 -49
  252. package/dist/esm/plugins/render/ssrCache.js +0 -305
  253. package/dist/esm/plugins/render/ssrRender.js +0 -124
  254. package/dist/esm/plugins/render/utils.js +0 -17
  255. package/dist/esm/plugins/route.js +0 -92
  256. package/dist/esm/serverBase.js +0 -248
  257. package/dist/esm/types/config/index.js +0 -6
  258. package/dist/esm/types/index.js +0 -4
  259. package/dist/esm/types/plugins/index.js +0 -2
  260. package/dist/esm/types/requestHandler.js +0 -0
  261. package/dist/esm/types/server.js +0 -0
  262. package/dist/esm/utils/entry.js +0 -10
  263. package/dist/esm/utils/env.js +0 -20
  264. package/dist/esm/utils/error.js +0 -33
  265. package/dist/esm/utils/index.js +0 -8
  266. package/dist/esm/utils/middlewareCollector.js +0 -31
  267. package/dist/esm/utils/request.js +0 -51
  268. package/dist/esm/utils/serverConfig.js +0 -13
  269. package/dist/esm/utils/storage.js +0 -38
  270. package/dist/esm/utils/transformStream.js +0 -104
  271. package/dist/esm/utils/warmup.js +0 -9
  272. package/dist/esm-node/adapters/node/helper/index.js +0 -13
  273. package/dist/esm-node/adapters/node/helper/loadCache.js +0 -19
  274. package/dist/esm-node/adapters/node/helper/loadConfig.js +0 -59
  275. package/dist/esm-node/adapters/node/helper/loadEnv.js +0 -22
  276. package/dist/esm-node/adapters/node/helper/loadPlugin.js +0 -15
  277. package/dist/esm-node/adapters/node/helper/utils.js +0 -7
  278. package/dist/esm-node/adapters/node/hono.js +0 -79
  279. package/dist/esm-node/adapters/node/index.js +0 -23
  280. package/dist/esm-node/adapters/node/node.js +0 -169
  281. package/dist/esm-node/adapters/node/plugins/nodeServer.js +0 -14
  282. package/dist/esm-node/adapters/node/plugins/resource.js +0 -159
  283. package/dist/esm-node/adapters/node/plugins/static.js +0 -144
  284. package/dist/esm-node/constants.js +0 -35
  285. package/dist/esm-node/helper.js +0 -14
  286. package/dist/esm-node/index.js +0 -22
  287. package/dist/esm-node/plugins/compat/hooks.js +0 -66
  288. package/dist/esm-node/plugins/compat/index.js +0 -40
  289. package/dist/esm-node/plugins/customServer/base.js +0 -162
  290. package/dist/esm-node/plugins/customServer/context.js +0 -43
  291. package/dist/esm-node/plugins/customServer/index.js +0 -185
  292. package/dist/esm-node/plugins/customServer/routerApi.js +0 -20
  293. package/dist/esm-node/plugins/customServer/template.js +0 -34
  294. package/dist/esm-node/plugins/default.js +0 -30
  295. package/dist/esm-node/plugins/favicon.js +0 -20
  296. package/dist/esm-node/plugins/log.js +0 -73
  297. package/dist/esm-node/plugins/middlewares.js +0 -19
  298. package/dist/esm-node/plugins/monitors.js +0 -174
  299. package/dist/esm-node/plugins/processedBy.js +0 -20
  300. package/dist/esm-node/plugins/render/csrRscRender.js +0 -54
  301. package/dist/esm-node/plugins/render/dataHandler.js +0 -25
  302. package/dist/esm-node/plugins/render/index.js +0 -106
  303. package/dist/esm-node/plugins/render/inject.js +0 -69
  304. package/dist/esm-node/plugins/render/render.js +0 -253
  305. package/dist/esm-node/plugins/render/renderRscHandler.js +0 -52
  306. package/dist/esm-node/plugins/render/serverActionHandler.js +0 -27
  307. package/dist/esm-node/plugins/render/ssrCache.js +0 -190
  308. package/dist/esm-node/plugins/render/ssrRender.js +0 -77
  309. package/dist/esm-node/plugins/render/utils.js +0 -17
  310. package/dist/esm-node/plugins/route.js +0 -41
  311. package/dist/esm-node/serverBase.js +0 -146
  312. package/dist/esm-node/types/plugins/index.js +0 -2
  313. package/dist/esm-node/utils/entry.js +0 -10
  314. package/dist/esm-node/utils/env.js +0 -20
  315. package/dist/esm-node/utils/error.js +0 -61
  316. package/dist/esm-node/utils/middlewareCollector.js +0 -29
  317. package/dist/esm-node/utils/request.js +0 -50
  318. package/dist/esm-node/utils/serverConfig.js +0 -11
  319. package/dist/esm-node/utils/storage.js +0 -40
  320. package/dist/esm-node/utils/transformStream.js +0 -36
  321. package/dist/esm-node/utils/warmup.js +0 -9
  322. package/dist/types/plugins/customServer/base.d.ts +0 -7
  323. package/dist/types/plugins/customServer/context.d.ts +0 -8
  324. package/dist/types/plugins/customServer/index.d.ts +0 -11
  325. package/dist/types/plugins/customServer/routerApi.d.ts +0 -9
  326. package/dist/types/plugins/customServer/template.d.ts +0 -11
  327. package/dist/types/types/plugins/old.d.ts +0 -56
  328. /package/dist/{esm-node/adapters/node/plugins/index.js → esm/adapters/node/plugins/index.mjs} +0 -0
  329. /package/dist/{esm-node/types/server.js → esm/types/config/bff.mjs} +0 -0
  330. /package/dist/esm/types/config/{bff.js → dev.mjs} +0 -0
  331. /package/dist/esm/types/config/{dev.js → html.mjs} +0 -0
  332. /package/dist/{esm-node/types/config/index.js → esm/types/config/index.mjs} +0 -0
  333. /package/dist/esm/types/config/{html.js → output.mjs} +0 -0
  334. /package/dist/esm/types/config/{output.js → security.mjs} +0 -0
  335. /package/dist/esm/types/config/{security.js → server.mjs} +0 -0
  336. /package/dist/esm/types/config/{server.js → share.mjs} +0 -0
  337. /package/dist/esm/types/config/{share.js → source.mjs} +0 -0
  338. /package/dist/esm/types/config/{source.js → tools.mjs} +0 -0
  339. /package/dist/{esm-node/types/index.js → esm/types/index.mjs} +0 -0
  340. /package/dist/esm/types/{config/tools.js → plugins/base.mjs} +0 -0
  341. /package/dist/esm/types/plugins/{base.js → plugin.mjs} +0 -0
  342. /package/dist/esm/types/{plugins/new.js → render.mjs} +0 -0
  343. /package/dist/esm/types/{plugins/old.js → requestHandler.mjs} +0 -0
  344. /package/dist/esm/types/{render.js → server.mjs} +0 -0
  345. /package/dist/esm-node/types/config/{bff.js → bff.mjs} +0 -0
  346. /package/dist/esm-node/types/config/{dev.js → dev.mjs} +0 -0
  347. /package/dist/esm-node/types/config/{html.js → html.mjs} +0 -0
  348. /package/dist/esm-node/types/config/{output.js → output.mjs} +0 -0
  349. /package/dist/esm-node/types/config/{security.js → security.mjs} +0 -0
  350. /package/dist/esm-node/types/config/{server.js → server.mjs} +0 -0
  351. /package/dist/esm-node/types/config/{share.js → share.mjs} +0 -0
  352. /package/dist/esm-node/types/config/{source.js → source.mjs} +0 -0
  353. /package/dist/esm-node/types/config/{tools.js → tools.mjs} +0 -0
  354. /package/dist/esm-node/types/plugins/{base.js → base.mjs} +0 -0
  355. /package/dist/esm-node/types/plugins/{new.js → plugin.mjs} +0 -0
  356. /package/dist/esm-node/types/{plugins/old.js → render.mjs} +0 -0
  357. /package/dist/esm-node/types/{render.js → requestHandler.mjs} +0 -0
  358. /package/dist/esm-node/types/{requestHandler.js → server.mjs} +0 -0
@@ -0,0 +1,2 @@
1
+ const isResFinalized = (res)=>res.headersSent || res._modernBodyPiped || res.writableEnded || res.finished || !res.socket?.writable;
2
+ export { isResFinalized };
@@ -0,0 +1,53 @@
1
+ import { isResFinalized } from "./helper";
2
+ const httpCallBack2HonoMid = (handler)=>async (context, next)=>{
3
+ const { req, res } = context.env.node;
4
+ const onPipe = ()=>{
5
+ res._modernBodyPiped = true;
6
+ };
7
+ res.once('pipe', onPipe);
8
+ req.__honoRequest = context.req;
9
+ req.__templates = context.get('templates') || {};
10
+ req.__serverManifest = context.get('serverManifest') || {};
11
+ req.__rscServerManifest = context.get('rscServerManifest');
12
+ req.__rscClientManifest = context.get('rscClientManifest');
13
+ req.__rscSSRManifest = context.get('rscSSRManifest');
14
+ try {
15
+ await handler(req, res);
16
+ } finally{
17
+ delete req.__honoRequest;
18
+ delete req.__templates;
19
+ delete req.__serverManifest;
20
+ delete req.__rscServerManifest;
21
+ delete req.__rscClientManifest;
22
+ delete req.__rscSSRManifest;
23
+ res.removeListener('pipe', onPipe);
24
+ }
25
+ if (isResFinalized(res)) {
26
+ context.res;
27
+ context.finalized = true;
28
+ } else await next();
29
+ };
30
+ const noop = ()=>{};
31
+ const connectMid2HonoMid = (handler)=>async (context, next)=>new Promise((resolve, reject)=>{
32
+ const { req, res } = context.env.node;
33
+ if (handler.length < 3) resolve(handler(req, res, noop));
34
+ else handler(req, res, (err)=>{
35
+ if (err) reject(err);
36
+ else resolve(next());
37
+ });
38
+ });
39
+ const connectMockMid2HonoMid = (handler)=>async (context, next)=>new Promise((resolve, reject)=>{
40
+ const { req, res } = context.env.node;
41
+ if (handler.length < 3) {
42
+ res.once('finish', ()=>{
43
+ context.res;
44
+ context.finalized = true;
45
+ resolve();
46
+ });
47
+ handler(req, res, noop);
48
+ } else handler(req, res, (err)=>{
49
+ if (err) reject(err);
50
+ else resolve(next());
51
+ });
52
+ });
53
+ export { connectMid2HonoMid, connectMockMid2HonoMid, httpCallBack2HonoMid };
@@ -0,0 +1,5 @@
1
+ import { connectMid2HonoMid, connectMockMid2HonoMid, httpCallBack2HonoMid } from "./hono";
2
+ import { createNodeServer, createWebRequest, sendResponse } from "./node";
3
+ import { getHtmlTemplates, getServerManifest, injectNodeSeverPlugin, injectResourcePlugin, injectRscManifestPlugin, serverStaticPlugin } from "./plugins";
4
+ import { loadCacheConfig, loadServerCliConfig, loadServerEnv, loadServerPlugins, loadServerRuntimeConfig } from "./helper";
5
+ export { connectMid2HonoMid, connectMockMid2HonoMid, createNodeServer, createWebRequest, getHtmlTemplates, getServerManifest, httpCallBack2HonoMid, injectNodeSeverPlugin, injectResourcePlugin, injectRscManifestPlugin, loadCacheConfig, loadServerCliConfig, loadServerEnv, loadServerPlugins, loadServerRuntimeConfig, sendResponse, serverStaticPlugin };
@@ -0,0 +1,129 @@
1
+ import { ServerResponse } from "node:http";
2
+ import { Readable, Writable } from "node:stream";
3
+ import cloneable_readable from "cloneable-readable";
4
+ import { isResFinalized } from "./helper";
5
+ const createWebRequest = (req, res, body)=>{
6
+ const headerRecord = [];
7
+ for (const [key, value] of Object.entries(req.headers))if (!key.startsWith(':')) {
8
+ if (Array.isArray(value)) {
9
+ for (const item of value)if (void 0 !== item) headerRecord.push([
10
+ key,
11
+ item
12
+ ]);
13
+ } else if (void 0 !== value) {
14
+ if ('string' == typeof value) headerRecord.push([
15
+ key,
16
+ value
17
+ ]);
18
+ }
19
+ }
20
+ const { method } = req;
21
+ const controller = new AbortController();
22
+ const init = {
23
+ method,
24
+ headers: headerRecord,
25
+ signal: controller.signal
26
+ };
27
+ res.on('close', ()=>controller.abort('res closed'));
28
+ const url = `http://${req.headers.host}${req.url}`;
29
+ const needsRequestBody = body || !('GET' === method || 'HEAD' === method);
30
+ const cloneableReq = needsRequestBody ? cloneable_readable(req) : null;
31
+ if (needsRequestBody) {
32
+ if (body) init.body = body;
33
+ else {
34
+ const stream = cloneableReq.clone();
35
+ init.body = Readable.toWeb(stream);
36
+ }
37
+ init.duplex = 'half';
38
+ }
39
+ const originalRequest = new Request(url, init);
40
+ if (needsRequestBody) {
41
+ const interceptedMethods = [
42
+ 'json',
43
+ 'text',
44
+ 'blob',
45
+ 'arrayBuffer',
46
+ 'formData'
47
+ ];
48
+ return new Proxy(originalRequest, {
49
+ get (target, prop) {
50
+ if (interceptedMethods.includes(prop)) return (...args)=>{
51
+ cloneableReq.resume();
52
+ return target[prop].call(target, ...args);
53
+ };
54
+ const value = target[prop];
55
+ if ('body' === prop) {
56
+ cloneableReq.resume();
57
+ return value;
58
+ }
59
+ if ('function' == typeof value) return (...args)=>value.apply(target, args);
60
+ return value;
61
+ }
62
+ });
63
+ }
64
+ return originalRequest;
65
+ };
66
+ const sendResponse = async (response, res)=>{
67
+ res.statusMessage = response.statusText;
68
+ res.statusCode = response.status;
69
+ const cookies = [];
70
+ for (const [key, value] of response.headers.entries())if ('set-cookie' === key) cookies.push(value);
71
+ else res.setHeader(key, value);
72
+ if (cookies.length > 0) res.setHeader('set-cookie', cookies);
73
+ if (response.headers.get('Content-Type')?.match(/text\/event-stream/i) && res instanceof ServerResponse) res.flushHeaders();
74
+ if (response.body) {
75
+ const writable = Writable.toWeb(res);
76
+ await response.body.pipeTo(writable);
77
+ } else res.end();
78
+ };
79
+ const handleResponseError = (e, res)=>{
80
+ const err = e instanceof Error ? e : new Error('unknown error', {
81
+ cause: e
82
+ });
83
+ if ('ABORT_ERR' === err.code || 'ERR_STREAM_PREMATURE_CLOSE' === err.code) console.info('The user aborted a request.');
84
+ else {
85
+ console.error(e);
86
+ if (!res.headersSent) res.writeHead(500, {
87
+ 'Content-Type': 'text/plain'
88
+ });
89
+ res.end(`Error: ${err.message}`);
90
+ res.destroy(err);
91
+ }
92
+ };
93
+ const getRequestListener = (handler)=>async (req, res)=>{
94
+ try {
95
+ const request = createWebRequest(req, res);
96
+ const response = await handler(request, {
97
+ node: {
98
+ req,
99
+ res
100
+ }
101
+ });
102
+ if (!response.res && !isResFinalized(res)) await sendResponse(response, res);
103
+ } catch (error) {
104
+ return handleResponseError(error, res);
105
+ }
106
+ };
107
+ const createNodeServer = async (requestHandler, httpsOptions, http2)=>{
108
+ const requestListener = getRequestListener(requestHandler);
109
+ let nodeServer;
110
+ if (httpsOptions) if (http2) {
111
+ const { createSecureServer } = await import("node:http2");
112
+ nodeServer = createSecureServer({
113
+ allowHTTP1: true,
114
+ maxSessionMemory: 1024,
115
+ ...httpsOptions
116
+ }, (req, res)=>requestListener(req, res));
117
+ } else {
118
+ const { createServer } = await import("node:https");
119
+ nodeServer = createServer(httpsOptions, requestListener);
120
+ }
121
+ else {
122
+ const { createServer } = await import("node:http");
123
+ nodeServer = createServer(requestListener);
124
+ }
125
+ nodeServer.getRequestListener = ()=>requestListener;
126
+ nodeServer.getRequestHandler = ()=>requestHandler;
127
+ return nodeServer;
128
+ };
129
+ export { createNodeServer, createWebRequest, sendResponse };
@@ -0,0 +1,9 @@
1
+ const injectNodeSeverPlugin = ({ nodeServer })=>({
2
+ name: '@modern-js/plugin-inject-node-server',
3
+ setup (api) {
4
+ api.updateServerContext({
5
+ nodeServer
6
+ });
7
+ }
8
+ });
9
+ export { injectNodeSeverPlugin };
@@ -0,0 +1,138 @@
1
+ import path from "path";
2
+ import { fileReader } from "@modern-js/runtime-utils/fileReader";
3
+ import { LOADABLE_STATS_FILE, MAIN_ENTRY_NAME, NESTED_ROUTE_SPEC_FILE, ROUTE_MANIFEST_FILE, SERVER_BUNDLE_DIRECTORY, compatibleRequire, fs, isProd } from "@modern-js/utils";
4
+ import { uniqueKeyByRoute } from "../../../utils";
5
+ async function getHtmlTemplates(pwd, routes) {
6
+ const htmlRoutes = routes.filter((route)=>route.entryName);
7
+ const htmls = await Promise.all(htmlRoutes.map(async (route)=>{
8
+ let html;
9
+ try {
10
+ const htmlPath = path.join(pwd, route.entryPath);
11
+ html = (await fileReader.readFile(htmlPath, 'utf-8'))?.toString();
12
+ } catch (e) {}
13
+ return [
14
+ uniqueKeyByRoute(route),
15
+ html
16
+ ];
17
+ }) || []);
18
+ const templates = Object.fromEntries(htmls);
19
+ return templates;
20
+ }
21
+ function injectTemplates(pwd, routes, htmlTemplatePromise) {
22
+ return async (c, next)=>{
23
+ if (routes && !c.get('templates')) {
24
+ const templates = await (htmlTemplatePromise || getHtmlTemplates(pwd, routes));
25
+ c.set('templates', templates);
26
+ }
27
+ await next();
28
+ };
29
+ }
30
+ const loadBundle = async (filepath, logger)=>{
31
+ if (!await fs.pathExists(filepath)) return;
32
+ try {
33
+ const module = await compatibleRequire(filepath, false);
34
+ return module;
35
+ } catch (e) {
36
+ logger.error(`Load ${filepath} bundle failed, error = %s`, e instanceof Error ? e.stack || e.message : e);
37
+ return;
38
+ }
39
+ };
40
+ async function getServerManifest(pwd, routes, logger) {
41
+ const loaderBundles = {};
42
+ const renderBundles = {};
43
+ await Promise.all(routes.filter((route)=>Boolean(route.bundle)).map(async (route)=>{
44
+ const entryName = route.entryName || MAIN_ENTRY_NAME;
45
+ const renderBundlePath = path.join(pwd, route.bundle || '');
46
+ const loaderBundlePath = path.join(pwd, SERVER_BUNDLE_DIRECTORY, `${entryName}-server-loaders.js`);
47
+ const renderBundle = await loadBundle(renderBundlePath, logger);
48
+ const loaderBundle = await loadBundle(loaderBundlePath, logger);
49
+ renderBundle && (renderBundles[entryName] = renderBundle);
50
+ loaderBundle && (loaderBundles[entryName] = loaderBundle?.loadModules ? await loaderBundle?.loadModules() : loaderBundle);
51
+ }));
52
+ const loadableUri = path.join(pwd, LOADABLE_STATS_FILE);
53
+ const loadableStats = await compatibleRequire(loadableUri).catch((_)=>({}));
54
+ const routesManifestUri = path.join(pwd, ROUTE_MANIFEST_FILE);
55
+ const routeManifest = await compatibleRequire(routesManifestUri).catch((_)=>({}));
56
+ const nestedRoutesJsonPath = path.join(pwd, NESTED_ROUTE_SPEC_FILE);
57
+ const nestedRoutesJson = await compatibleRequire(nestedRoutesJsonPath).catch((_)=>({}));
58
+ return {
59
+ loaderBundles,
60
+ renderBundles,
61
+ loadableStats,
62
+ routeManifest,
63
+ nestedRoutesJson
64
+ };
65
+ }
66
+ function injectServerManifest(pwd, routes, manifestPromise) {
67
+ return async (c, next)=>{
68
+ if (routes && !c.get('serverManifest')) {
69
+ const logger = c.get('logger');
70
+ const serverManifest = await (manifestPromise || getServerManifest(pwd, routes, logger));
71
+ c.set('serverManifest', serverManifest);
72
+ }
73
+ await next();
74
+ };
75
+ }
76
+ async function getRscServerManifest(pwd) {
77
+ const rscServerManifest = await compatibleRequire(path.join(pwd, 'bundles', 'react-server-manifest.json')).catch((_)=>void 0);
78
+ return rscServerManifest;
79
+ }
80
+ async function getClientManifest(pwd) {
81
+ const rscClientManifest = await compatibleRequire(path.join(pwd, 'react-client-manifest.json')).catch((_)=>void 0);
82
+ return rscClientManifest;
83
+ }
84
+ async function getRscSSRManifest(pwd) {
85
+ const rscSSRManifest = await compatibleRequire(path.join(pwd, 'react-ssr-manifest.json')).catch((_)=>void 0);
86
+ return rscSSRManifest;
87
+ }
88
+ const injectRscManifestPlugin = ()=>({
89
+ name: '@modern-js/plugin-inject-rsc-manifest',
90
+ setup (api) {
91
+ api.onPrepare(()=>{
92
+ const { middlewares, distDirectory: pwd } = api.getServerContext();
93
+ const config = api.getServerConfig();
94
+ if (!config.server?.rsc) return;
95
+ middlewares.push({
96
+ name: 'inject-rsc-manifest',
97
+ handler: async (c, next)=>{
98
+ if (!c.get('rscServerManifest')) {
99
+ const rscServerManifest = await getRscServerManifest(pwd);
100
+ c.set('rscServerManifest', rscServerManifest);
101
+ }
102
+ if (!c.get('rscClientManifest')) {
103
+ const rscClientManifest = await getClientManifest(pwd);
104
+ c.set('rscClientManifest', rscClientManifest);
105
+ }
106
+ if (!c.get('rscSSRManifest')) {
107
+ const rscSSRManifest = await getRscSSRManifest(pwd);
108
+ c.set('rscSSRManifest', rscSSRManifest);
109
+ }
110
+ await next();
111
+ }
112
+ });
113
+ });
114
+ }
115
+ });
116
+ const injectResourcePlugin = ()=>({
117
+ name: '@modern-js/plugin-inject-resource',
118
+ setup (api) {
119
+ api.onPrepare(()=>{
120
+ const { middlewares, routes, distDirectory: pwd } = api.getServerContext();
121
+ let htmlTemplatePromise;
122
+ let manifestPromise;
123
+ if (isProd()) {
124
+ manifestPromise = getServerManifest(pwd, routes || [], console);
125
+ htmlTemplatePromise = getHtmlTemplates(pwd, routes || []);
126
+ }
127
+ middlewares.push({
128
+ name: 'inject-server-manifest',
129
+ handler: injectServerManifest(pwd, routes, manifestPromise)
130
+ });
131
+ middlewares.push({
132
+ name: 'inject-html',
133
+ handler: injectTemplates(pwd, routes, htmlTemplatePromise)
134
+ });
135
+ });
136
+ }
137
+ });
138
+ export { getClientManifest, getHtmlTemplates, getRscSSRManifest, getRscServerManifest, getServerManifest, injectResourcePlugin, injectRscManifestPlugin, injectServerManifest, injectTemplates };
@@ -0,0 +1,118 @@
1
+ import path from "path";
2
+ import { fileReader } from "@modern-js/runtime-utils/fileReader";
3
+ import { fs } from "@modern-js/utils";
4
+ import { getMimeType } from "hono/utils/mime";
5
+ import { sortRoutes } from "../../../utils";
6
+ import { getPublicDirPatterns } from "../../../utils/publicDir";
7
+ const serverStaticPlugin = ()=>({
8
+ name: '@modern-js/plugin-server-static',
9
+ setup (api) {
10
+ api.onPrepare(()=>{
11
+ const { middlewares, distDirectory: pwd, routes } = api.getServerContext();
12
+ const config = api.getServerConfig();
13
+ const serverStaticMiddleware = createStaticMiddleware({
14
+ pwd: pwd,
15
+ routes,
16
+ output: config.output || {},
17
+ html: config.html || {},
18
+ server: config.server || {}
19
+ });
20
+ middlewares.push({
21
+ name: 'server-static',
22
+ handler: serverStaticMiddleware
23
+ });
24
+ });
25
+ }
26
+ });
27
+ function createPublicMiddleware({ pwd, routes }) {
28
+ return async (c, next)=>{
29
+ const route = matchPublicRoute(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 (null !== data) {
36
+ const body = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
37
+ if (mimeType) c.header('Content-Type', mimeType);
38
+ Object.entries(route.responseHeaders || {}).forEach(([k, v])=>{
39
+ c.header(k, v);
40
+ });
41
+ return c.body(body, 200);
42
+ }
43
+ }
44
+ return await next();
45
+ };
46
+ }
47
+ function matchPublicRoute(req, routes) {
48
+ for (const route of routes.sort(sortRoutes))if (!route.isSSR && route.entryPath.startsWith('public') && req.path.startsWith(route.urlPath)) return route;
49
+ }
50
+ const extractPathname = (url)=>{
51
+ try {
52
+ if (url.includes('://')) return new URL(url).pathname || '/';
53
+ if (url.startsWith('//')) return new URL(`http:${url}`).pathname || '/';
54
+ return url;
55
+ } catch (e) {
56
+ return url;
57
+ }
58
+ };
59
+ function createStaticMiddleware(options) {
60
+ const { pwd, routes } = options;
61
+ const prefix = options.output.assetPrefix || '/';
62
+ const pathPrefix = extractPathname(prefix);
63
+ const { distPath: { css: cssPath, js: jsPath, media: mediaPath } = {} } = options.output;
64
+ const { favicon } = options.html;
65
+ const { publicDir } = options.server;
66
+ const favicons = prepareFavicons(favicon);
67
+ const staticFiles = [
68
+ cssPath,
69
+ jsPath,
70
+ mediaPath
71
+ ].filter((v)=>Boolean(v));
72
+ const publicDirPatterns = getPublicDirPatterns(publicDir);
73
+ const staticReg = [
74
+ 'static/',
75
+ 'upload/',
76
+ ...staticFiles,
77
+ ...publicDirPatterns
78
+ ];
79
+ const iconReg = [
80
+ 'favicon.ico',
81
+ 'icon.png',
82
+ ...favicons
83
+ ];
84
+ const regPrefix = pathPrefix.endsWith('/') ? pathPrefix : `${pathPrefix}/`;
85
+ const staticPathRegExp = new RegExp(`^${regPrefix}(${[
86
+ ...staticReg,
87
+ ...iconReg
88
+ ].join('|')})`);
89
+ return async (c, next)=>{
90
+ const pageRoute = c.get('route');
91
+ const pathname = c.req.path;
92
+ if (pageRoute && '' === path.extname(pathname)) return next();
93
+ const hit = staticPathRegExp.test(pathname);
94
+ if (!hit) return createPublicMiddleware({
95
+ pwd,
96
+ routes: routes || []
97
+ })(c, next);
98
+ {
99
+ const filepath = path.join(pwd, pathname.replace(pathPrefix, ()=>''));
100
+ if (!await fs.pathExists(filepath)) return next();
101
+ const mimeType = getMimeType(filepath);
102
+ if (mimeType) c.header('Content-Type', mimeType);
103
+ const stat = await fs.lstat(filepath);
104
+ const { size } = stat;
105
+ const chunk = await fileReader.readFileFromSystem(filepath, 'buffer');
106
+ c.header('Content-Length', String(size));
107
+ if (null === chunk) return next();
108
+ const body = new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength);
109
+ return c.body(body, 200);
110
+ }
111
+ };
112
+ }
113
+ const prepareFavicons = (favicon)=>{
114
+ const faviconNames = [];
115
+ if (favicon && 'string' == typeof favicon) faviconNames.push(favicon.substring(favicon.lastIndexOf('/') + 1));
116
+ return faviconNames;
117
+ };
118
+ export { createPublicMiddleware, createStaticMiddleware, serverStaticPlugin };
@@ -0,0 +1,28 @@
1
+ const AGGRED_DIR = {
2
+ mock: 'config/mock',
3
+ server: 'server',
4
+ api: 'api',
5
+ shared: 'shared',
6
+ lambda: 'lambda'
7
+ };
8
+ const REPLACE_REG = {
9
+ before: {
10
+ head: '<head\\b[^>]*>',
11
+ body: '<body\\b[^>]*>'
12
+ },
13
+ after: {
14
+ head: '</head>',
15
+ body: '</body>'
16
+ }
17
+ };
18
+ var constants_ServerTimings = /*#__PURE__*/ function(ServerTimings) {
19
+ ServerTimings["SERVER_HANDLE_REQUEST"] = "server-handle-request";
20
+ ServerTimings["SERVER_MIDDLEWARE"] = "server-middleware";
21
+ ServerTimings["SERVER_HOOK_AFTER_RENDER"] = "server-hook-after-render";
22
+ ServerTimings["SERVER_HOOK_AFTER_MATCH"] = "server-hook-after-match";
23
+ return ServerTimings;
24
+ }({});
25
+ const SERVER_TIMING = 'Server-Timing';
26
+ const X_RENDER_CACHE = 'x-render-cache';
27
+ const X_MODERNJS_RENDER = 'x-modernjs-render';
28
+ export { AGGRED_DIR, REPLACE_REG, SERVER_TIMING, constants_ServerTimings as ServerTimings, X_MODERNJS_RENDER, X_RENDER_CACHE };
@@ -1,6 +1,3 @@
1
1
  import { createStorage } from "./utils/storage";
2
2
  const { run, useHonoContext } = createStorage();
3
- export {
4
- run,
5
- useHonoContext
6
- };
3
+ export { run, useHonoContext };
@@ -0,0 +1,11 @@
1
+ const LOADER_CONTEXT = 'loaderContext';
2
+ function getLoaderCtx(c) {
3
+ const loaderContext = c.get(LOADER_CONTEXT);
4
+ if (loaderContext) return loaderContext;
5
+ {
6
+ const loaderContext = new Map();
7
+ c.set(LOADER_CONTEXT, loaderContext);
8
+ return loaderContext;
9
+ }
10
+ }
11
+ export { getLoaderCtx };
@@ -0,0 +1,3 @@
1
+ import { deleteCookie, getCookie, setCookie } from "hono/cookie";
2
+ import { languageDetector } from "hono/language";
3
+ export { deleteCookie, getCookie, languageDetector, setCookie };
@@ -0,0 +1,13 @@
1
+ import { ErrorDigest, createErrorHtml, onError } from "./utils";
2
+ import { getPublicDirConfig, getPublicDirPatterns, getPublicDirRoutePrefixes, normalizePublicDir, normalizePublicDirPath, resolvePublicDirPaths } from "./utils/publicDir";
3
+ import { AGGRED_DIR } from "./constants";
4
+ import { createServerBase } from "./serverBase";
5
+ import { useHonoContext } from "./context";
6
+ import { Hono } from "hono";
7
+ import { getLoaderCtx } from "./helper";
8
+ export * from "./plugins";
9
+ export * from "./types/plugins";
10
+ export * from "./types/render";
11
+ export * from "./types/config";
12
+ export * from "./types/requestHandler";
13
+ export { AGGRED_DIR, ErrorDigest, Hono, createErrorHtml, createServerBase, getLoaderCtx, getPublicDirConfig, getPublicDirPatterns, getPublicDirRoutePrefixes, normalizePublicDir, normalizePublicDirPath, onError, resolvePublicDirPaths, useHonoContext };
@@ -0,0 +1,40 @@
1
+ function getHookRunners(context) {
2
+ const { hooks } = context;
3
+ return {
4
+ config: (params)=>hooks.modifyConfig.call(params),
5
+ prepare: ()=>hooks.onPrepare.call(),
6
+ reset: (params)=>hooks.onReset.call(params),
7
+ fallback: (input)=>hooks.fallback.call(input),
8
+ prepareWebServer: (input)=>hooks.prepareWebServer.call(input),
9
+ prepareApiServer: (input)=>hooks.prepareApiServer.call(input),
10
+ afterMatch: (ctx)=>hooks.afterMatch.call(ctx),
11
+ afterRender: (ctx)=>hooks.afterRender.call(ctx),
12
+ afterStreamingRender: (ctx)=>hooks.afterStreamingRender.call(ctx)
13
+ };
14
+ }
15
+ function transformHookRunner(hookRunnerName) {
16
+ switch(hookRunnerName){
17
+ case 'config':
18
+ return 'modifyConfig';
19
+ case 'prepare':
20
+ return 'onPrepare';
21
+ case 'reset':
22
+ return 'onReset';
23
+ default:
24
+ return hookRunnerName;
25
+ }
26
+ }
27
+ function handleSetupResult(setupResult, api) {
28
+ if (!setupResult) return;
29
+ Object.keys(setupResult).forEach((key)=>{
30
+ const fn = setupResult[key];
31
+ if ('function' == typeof fn) {
32
+ const newAPI = transformHookRunner(key);
33
+ if (api[newAPI]) api[newAPI]((...params)=>{
34
+ const res = fn(...params);
35
+ return res;
36
+ });
37
+ }
38
+ });
39
+ }
40
+ export { getHookRunners, handleSetupResult, transformHookRunner };
@@ -0,0 +1,27 @@
1
+ import { createAsyncHook, createAsyncPipelineHook } from "@modern-js/plugin";
2
+ import { getHookRunners, handleSetupResult } from "./hooks";
3
+ const compatPlugin = ()=>({
4
+ name: '@modern-js/server-compat',
5
+ registryHooks: {
6
+ fallback: createAsyncHook(),
7
+ prepareWebServer: createAsyncPipelineHook(),
8
+ prepareApiServer: createAsyncPipelineHook(),
9
+ afterMatch: createAsyncPipelineHook(),
10
+ afterRender: createAsyncPipelineHook(),
11
+ afterStreamingRender: createAsyncPipelineHook()
12
+ },
13
+ _registryApi: (getServerContext, updateServerContext)=>{
14
+ const getInternalContext = ()=>getServerContext()._internalContext;
15
+ return {
16
+ useConfigContext: ()=>getInternalContext().config,
17
+ useAppContext: ()=>{
18
+ const { _internalContext, ...serverContext } = getServerContext();
19
+ return serverContext;
20
+ },
21
+ setAppContext: (context)=>updateServerContext(context),
22
+ useHookRunners: ()=>getHookRunners(getInternalContext())
23
+ };
24
+ },
25
+ setup: ()=>{}
26
+ });
27
+ export { compatPlugin, handleSetupResult };
@@ -0,0 +1,25 @@
1
+ import { compatPlugin } from "./compat";
2
+ import { logPlugin } from "./log";
3
+ import { initMonitorsPlugin, injectServerTiming, injectloggerPlugin } from "./monitors";
4
+ import { processedByPlugin } from "./processedBy";
5
+ import { injectRenderHandlerPlugin } from "./render";
6
+ import { injectRoutePlugin } from "./route";
7
+ function createSilenceLogger() {
8
+ return new Proxy({}, {
9
+ get: ()=>()=>{}
10
+ });
11
+ }
12
+ function createDefaultPlugins(options = {}) {
13
+ const plugins = [
14
+ compatPlugin(),
15
+ logPlugin(),
16
+ initMonitorsPlugin(),
17
+ injectRenderHandlerPlugin(options),
18
+ injectloggerPlugin(options.logger ? options.logger : createSilenceLogger()),
19
+ injectServerTiming(),
20
+ processedByPlugin(),
21
+ injectRoutePlugin()
22
+ ];
23
+ return plugins;
24
+ }
25
+ export { createDefaultPlugins };
@@ -0,0 +1,14 @@
1
+ const faviconPlugin = ()=>({
2
+ name: '@modern-js/plugin-favicon',
3
+ setup (api) {
4
+ api.onPrepare(()=>{
5
+ const { middlewares } = api.getServerContext();
6
+ middlewares.push({
7
+ name: 'favicon-fallback',
8
+ path: '/favicon.ico',
9
+ handler: async (c, _next)=>c.body(null, 204)
10
+ });
11
+ });
12
+ }
13
+ });
14
+ export { faviconPlugin };
@@ -1,4 +1,4 @@
1
- import { renderPlugin, injectRenderHandlerPlugin, getRenderHandler } from "./render";
1
+ import { getRenderHandler, injectRenderHandlerPlugin, renderPlugin } from "./render";
2
2
  import { faviconPlugin } from "./favicon";
3
3
  import { injectServerTiming, injectloggerPlugin } from "./monitors";
4
4
  import { processedByPlugin } from "./processedBy";
@@ -6,17 +6,4 @@ import { logPlugin } from "./log";
6
6
  import { createDefaultPlugins } from "./default";
7
7
  import { compatPlugin, handleSetupResult } from "./compat";
8
8
  import { injectConfigMiddlewarePlugin } from "./middlewares";
9
- export {
10
- compatPlugin,
11
- createDefaultPlugins,
12
- faviconPlugin,
13
- getRenderHandler,
14
- handleSetupResult,
15
- injectConfigMiddlewarePlugin,
16
- injectRenderHandlerPlugin,
17
- injectServerTiming,
18
- injectloggerPlugin,
19
- logPlugin,
20
- processedByPlugin,
21
- renderPlugin
22
- };
9
+ export { compatPlugin, createDefaultPlugins, faviconPlugin, getRenderHandler, handleSetupResult, injectConfigMiddlewarePlugin, injectRenderHandlerPlugin, injectServerTiming, injectloggerPlugin, logPlugin, processedByPlugin, renderPlugin };