@modern-js/server-core 2.69.5 → 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,41 @@
1
+ import { MAIN_ENTRY_NAME } from "@modern-js/utils/universal/constants";
2
+ import { createRequestHandlerConfig } from "./utils";
3
+ const renderRscHandler = async (req, options)=>{
4
+ const { routeInfo, serverManifest, rscSSRManifest, rscClientManifest, rscServerManifest, locals, params, loaderContext, monitors, onError, onTiming, staticGenerate } = options;
5
+ const serverBundle = serverManifest?.renderBundles?.[routeInfo.entryName || MAIN_ENTRY_NAME];
6
+ const loadableStats = serverManifest.loadableStats || {};
7
+ const routeManifest = serverManifest.routeManifest || {};
8
+ const config = createRequestHandlerConfig(options.config);
9
+ const requestHandlerOptions = {
10
+ resource: {
11
+ route: routeInfo,
12
+ loadableStats,
13
+ routeManifest,
14
+ entryName: routeInfo.entryName || MAIN_ENTRY_NAME
15
+ },
16
+ config,
17
+ params,
18
+ loaderContext,
19
+ rscSSRManifest,
20
+ rscClientManifest,
21
+ rscServerManifest,
22
+ locals,
23
+ staticGenerate,
24
+ monitors,
25
+ onError,
26
+ onTiming,
27
+ reporter: options.reporter
28
+ };
29
+ if (!serverBundle) return new Response('Cannot find server bundle for RSC', {
30
+ status: 500
31
+ });
32
+ const rscPayloadHandler = await serverBundle.rscPayloadHandler;
33
+ if (!rscPayloadHandler) return new Response('Cannot find request handler for RSC', {
34
+ status: 500
35
+ });
36
+ if (!rscClientManifest) return new Response('Cannot find rsc client manifest', {
37
+ status: 500
38
+ });
39
+ return rscPayloadHandler(req, requestHandlerOptions);
40
+ };
41
+ export { renderRscHandler };
@@ -0,0 +1,18 @@
1
+ import { MAIN_ENTRY_NAME } from "@modern-js/utils/universal/constants";
2
+ const serverActionHandler = async (req, { serverManifest, routeInfo, rscClientManifest })=>{
3
+ const serverBundle = serverManifest?.renderBundles?.[routeInfo.entryName || MAIN_ENTRY_NAME];
4
+ if (!serverBundle) return new Response('Cannot find server bundle for server action', {
5
+ status: 500
6
+ });
7
+ const { handleAction } = serverBundle;
8
+ if (!handleAction) return new Response('Cannot find server action handler', {
9
+ status: 500
10
+ });
11
+ if (!rscClientManifest) return new Response('Cannot find rsc client manifest', {
12
+ status: 500
13
+ });
14
+ return handleAction(req, {
15
+ clientManifest: rscClientManifest
16
+ });
17
+ };
18
+ export { serverActionHandler };
@@ -0,0 +1,158 @@
1
+ import { createMemoryStorage } from "@modern-js/runtime-utils/storer";
2
+ import { X_RENDER_CACHE } from "../../constants";
3
+ import { createTransformStream, getPathname } from "../../utils";
4
+ const removeTailSlash = (s)=>s.replace(/\/+$/, '');
5
+ const ZERO_RENDER_LEVEL = /"renderLevel":0/;
6
+ const NO_SSR_CACHE = /<meta\s+[^>]*name=["']no-ssr-cache["'][^>]*>/i;
7
+ async function processCache({ request, key, requestHandler, requestHandlerOptions, ttl, container, cacheStatus }) {
8
+ const response = await requestHandler(request, requestHandlerOptions);
9
+ const { onError } = requestHandlerOptions;
10
+ const nonCacheableStatusCodes = [
11
+ 204,
12
+ 305,
13
+ 404,
14
+ 405,
15
+ 500,
16
+ 501,
17
+ 502,
18
+ 503,
19
+ 504
20
+ ];
21
+ if (nonCacheableStatusCodes.includes(response.status)) return response;
22
+ const decoder = new TextDecoder();
23
+ if (response.body) {
24
+ const stream = createTransformStream();
25
+ const reader = response.body.getReader();
26
+ const writer = stream.writable.getWriter();
27
+ let html = '';
28
+ const push = ()=>reader.read().then(({ done, value })=>{
29
+ if (done) {
30
+ const match = ZERO_RENDER_LEVEL.test(html) || NO_SSR_CACHE.test(html);
31
+ if (match) return void writer.close();
32
+ const current = Date.now();
33
+ const cache = {
34
+ val: html,
35
+ cursor: current
36
+ };
37
+ container.set(key, JSON.stringify(cache), {
38
+ ttl
39
+ }).catch(()=>{
40
+ if (onError) onError(`[render-cache] set cache failed, key: ${key}, value: ${JSON.stringify(cache)}`);
41
+ else console.error(`[render-cache] set cache failed, key: ${key}, value: ${JSON.stringify(cache)}`);
42
+ });
43
+ writer.close();
44
+ return;
45
+ }
46
+ const content = decoder.decode(value);
47
+ html += content;
48
+ writer.write(value);
49
+ push();
50
+ });
51
+ push();
52
+ cacheStatus && response.headers.set(X_RENDER_CACHE, cacheStatus);
53
+ return new Response(stream.readable, {
54
+ status: response.status,
55
+ headers: response.headers
56
+ });
57
+ }
58
+ return response;
59
+ }
60
+ const CACHE_NAMESPACE = '__ssr__cache';
61
+ const storage = createMemoryStorage(CACHE_NAMESPACE);
62
+ function computedKey(req, cacheControl) {
63
+ const pathname = getPathname(req);
64
+ const { customKey } = cacheControl;
65
+ const defaultKey = '/' === pathname ? pathname : removeTailSlash(pathname);
66
+ if (!customKey) return defaultKey;
67
+ if ('string' == typeof customKey) return customKey;
68
+ return customKey(defaultKey);
69
+ }
70
+ function shouldUseCache(request) {
71
+ const url = new URL(request.url);
72
+ const hasRSCAction = request.headers.has('x-rsc-action');
73
+ const hasRSCTree = request.headers.has('x-rsc-tree');
74
+ const hasLoaderQuery = url.searchParams.has('__loader');
75
+ return !(hasRSCAction || hasRSCTree || hasLoaderQuery);
76
+ }
77
+ function matchCacheControl(cacheOption, req) {
78
+ if (!cacheOption || !req) return;
79
+ {
80
+ if (isCacheControl(cacheOption)) return cacheOption;
81
+ if (isCacheOptionProvider(cacheOption)) return cacheOption(req);
82
+ const url = req.url;
83
+ const options = Object.entries(cacheOption);
84
+ for (const [key, option] of options)if ('*' === key || new RegExp(key).test(url)) if ('function' == typeof option) return option(req);
85
+ else return option;
86
+ return;
87
+ }
88
+ function isCacheOptionProvider(option) {
89
+ return 'function' == typeof option;
90
+ }
91
+ function isCacheControl(option) {
92
+ return 'object' == typeof option && null !== option && 'maxAge' in option;
93
+ }
94
+ }
95
+ async function getCacheResult(request, options) {
96
+ const { cacheControl, container = storage, requestHandler, requestHandlerOptions } = options;
97
+ const { onError } = requestHandlerOptions;
98
+ const key = computedKey(request, cacheControl);
99
+ let value;
100
+ try {
101
+ value = await container.get(key);
102
+ } catch (_) {
103
+ if (onError) onError(`[render-cache] get cache failed, key: ${key}`);
104
+ else console.error(`[render-cache] get cache failed, key: ${key}`);
105
+ value = void 0;
106
+ }
107
+ const { maxAge, staleWhileRevalidate } = cacheControl;
108
+ const ttl = maxAge + staleWhileRevalidate;
109
+ if (!value) return processCache({
110
+ key,
111
+ request,
112
+ requestHandler,
113
+ requestHandlerOptions,
114
+ ttl,
115
+ container,
116
+ cacheStatus: 'miss'
117
+ });
118
+ {
119
+ const cache = JSON.parse(value);
120
+ const interval = Date.now() - cache.cursor;
121
+ if (interval <= maxAge) {
122
+ const cacheStatus = 'hit';
123
+ return new Response(cache.val, {
124
+ headers: {
125
+ [X_RENDER_CACHE]: cacheStatus
126
+ }
127
+ });
128
+ }
129
+ if (!(interval <= staleWhileRevalidate + maxAge)) return processCache({
130
+ key,
131
+ request,
132
+ requestHandler,
133
+ requestHandlerOptions,
134
+ ttl,
135
+ container,
136
+ cacheStatus: 'expired'
137
+ });
138
+ {
139
+ processCache({
140
+ key,
141
+ request,
142
+ requestHandler,
143
+ requestHandlerOptions,
144
+ ttl,
145
+ container
146
+ }).then(async (response)=>{
147
+ await response.text();
148
+ });
149
+ const cacheStatus = 'stale';
150
+ return new Response(cache.val, {
151
+ headers: {
152
+ [X_RENDER_CACHE]: cacheStatus
153
+ }
154
+ });
155
+ }
156
+ }
157
+ }
158
+ export { getCacheResult, matchCacheControl, shouldUseCache };
@@ -0,0 +1,62 @@
1
+ import { MAIN_ENTRY_NAME } from "@modern-js/utils/universal/constants";
2
+ import { X_MODERNJS_RENDER } from "../../constants";
3
+ import { getPathname, parseHeaders } from "../../utils";
4
+ import { getCacheResult, matchCacheControl, shouldUseCache } from "./ssrCache";
5
+ import { createRequestHandlerConfig } from "./utils";
6
+ const SERVER_RUNTIME_ENTRY = 'requestHandler';
7
+ async function ssrRender(request, { routeInfo, html, config: userConfig, staticGenerate, nodeReq, serverManifest, rscSSRManifest, rscClientManifest, rscServerManifest, locals, params, loaderContext, monitors, cacheConfig, onError, onTiming, reporter }) {
8
+ const { entryName } = routeInfo;
9
+ const loadableStats = serverManifest.loadableStats || {};
10
+ const routeManifest = serverManifest.routeManifest || {};
11
+ const headers = parseHeaders(request);
12
+ if (nodeReq) {
13
+ for(const key in nodeReq.headers)if (!headers[key]) headers[key] = nodeReq.headers[key];
14
+ }
15
+ const renderBundle = serverManifest.renderBundles?.[entryName || MAIN_ENTRY_NAME];
16
+ if (!renderBundle) throw new Error(`Can't find renderBundle ${entryName || MAIN_ENTRY_NAME}`);
17
+ const requestHandler = await renderBundle[SERVER_RUNTIME_ENTRY];
18
+ const config = createRequestHandlerConfig(userConfig);
19
+ const requestHandlerOptions = {
20
+ resource: {
21
+ route: routeInfo,
22
+ loadableStats,
23
+ routeManifest,
24
+ htmlTemplate: html,
25
+ entryName: entryName || MAIN_ENTRY_NAME
26
+ },
27
+ params,
28
+ loaderContext,
29
+ config,
30
+ rscSSRManifest,
31
+ rscClientManifest,
32
+ rscServerManifest,
33
+ locals,
34
+ staticGenerate,
35
+ monitors,
36
+ onError,
37
+ onTiming,
38
+ reporter
39
+ };
40
+ const cacheControl = await matchCacheControl(cacheConfig?.strategy, nodeReq || new IncomingMessgeProxy(request));
41
+ let response;
42
+ response = cacheControl && shouldUseCache(request) ? await getCacheResult(request, {
43
+ cacheControl,
44
+ container: cacheConfig?.container,
45
+ requestHandler: requestHandler,
46
+ requestHandlerOptions
47
+ }) : await requestHandler(request, requestHandlerOptions);
48
+ response.headers.set(X_MODERNJS_RENDER, 'server');
49
+ response.headers.set('content-type', 'text/html; charset=UTF-8');
50
+ return response;
51
+ }
52
+ class IncomingMessgeProxy {
53
+ constructor(req){
54
+ this.headers = {};
55
+ req.headers.forEach((value, key)=>{
56
+ this.headers[key] = value;
57
+ });
58
+ this.method = req.method;
59
+ this.url = getPathname(req);
60
+ }
61
+ }
62
+ export { ssrRender };
@@ -0,0 +1,15 @@
1
+ function createRequestHandlerConfig(userConfig) {
2
+ const { output, server, security, html, source } = userConfig;
3
+ return {
4
+ ssr: server?.ssr,
5
+ ssrByEntries: server?.ssrByEntries,
6
+ nonce: security?.nonce,
7
+ inlineScripts: output?.inlineScripts,
8
+ inlineStyles: output?.inlineStyles,
9
+ crossorigin: html?.crossorigin,
10
+ scriptLoading: html?.scriptLoading,
11
+ useJsonScript: server?.useJsonScript,
12
+ enableAsyncEntry: source?.enableAsyncEntry
13
+ };
14
+ }
15
+ export { createRequestHandlerConfig };
@@ -0,0 +1,34 @@
1
+ import { MAIN_ENTRY_NAME } from "@modern-js/utils/universal/constants";
2
+ import { sortRoutes } from "../utils";
3
+ function injectRoute(route) {
4
+ return async (c, next)=>{
5
+ if (route && !c.get('route')) c.set('route', route);
6
+ await next();
7
+ };
8
+ }
9
+ function getPageRoutes(routes) {
10
+ return routes.filter((route)=>route.entryName).sort(sortRoutes);
11
+ }
12
+ const injectRoutePlugin = ()=>({
13
+ name: '@modern-js/plugin-inject-route',
14
+ setup (api) {
15
+ api.onPrepare(()=>{
16
+ const { middlewares, routes } = api.getServerContext();
17
+ if (!routes) return;
18
+ const pageRoutes = getPageRoutes(routes);
19
+ for (const route of pageRoutes){
20
+ const { urlPath: originUrlPath, entryName = MAIN_ENTRY_NAME } = route;
21
+ const urlPath = originUrlPath.endsWith('/') ? `${originUrlPath}*` : `${originUrlPath}/*`;
22
+ middlewares.push({
23
+ name: 'inject-route-info',
24
+ path: urlPath,
25
+ handler: injectRoute({
26
+ entryName,
27
+ urlPath: originUrlPath
28
+ })
29
+ });
30
+ }
31
+ });
32
+ }
33
+ });
34
+ export { injectRoutePlugin };
@@ -0,0 +1,136 @@
1
+ import { server as server_server } from "@modern-js/plugin/server";
2
+ import { Hono } from "hono";
3
+ import { run } from "./context";
4
+ import { handleSetupResult } from "./plugins/compat/hooks";
5
+ import { loadConfig } from "./utils";
6
+ function _check_private_redeclaration(obj, privateCollection) {
7
+ if (privateCollection.has(obj)) throw new TypeError("Cannot initialize the same private elements twice on an object");
8
+ }
9
+ function _class_private_method_get(receiver, privateSet, fn) {
10
+ if (!privateSet.has(receiver)) throw new TypeError("attempted to get private field on non-instance");
11
+ return fn;
12
+ }
13
+ function _class_private_method_init(obj, privateSet) {
14
+ _check_private_redeclaration(obj, privateSet);
15
+ privateSet.add(obj);
16
+ }
17
+ var _applyMiddlewares = /*#__PURE__*/ new WeakSet();
18
+ class ServerBase {
19
+ async init() {
20
+ const { serverConfig, config: cliConfig } = this.options;
21
+ const mergedConfig = loadConfig({
22
+ cliConfig,
23
+ serverConfig: serverConfig || {}
24
+ });
25
+ const { serverContext } = await server_server.run({
26
+ plugins: this.plugins,
27
+ options: this.options,
28
+ config: mergedConfig,
29
+ handleSetupResult: handleSetupResult
30
+ });
31
+ serverContext.serverBase = this;
32
+ this.serverContext = serverContext;
33
+ await serverContext.hooks.onPrepare.call();
34
+ _class_private_method_get(this, _applyMiddlewares, applyMiddlewares).call(this);
35
+ return this;
36
+ }
37
+ addPlugins(plugins) {
38
+ this.plugins.push(...plugins);
39
+ }
40
+ get hooks() {
41
+ return this.serverContext.hooks;
42
+ }
43
+ get all() {
44
+ return this.app.all.bind(this.app);
45
+ }
46
+ get use() {
47
+ return this.app.use.bind(this.app);
48
+ }
49
+ get get() {
50
+ return this.app.get.bind(this.app);
51
+ }
52
+ get post() {
53
+ return this.app.post.bind(this.app);
54
+ }
55
+ get put() {
56
+ return this.app.put.bind(this.app);
57
+ }
58
+ get delete() {
59
+ return this.app.delete.bind(this.app);
60
+ }
61
+ get patch() {
62
+ return this.app.patch.bind(this.app);
63
+ }
64
+ get handle() {
65
+ return this.app.fetch.bind(this.app);
66
+ }
67
+ get request() {
68
+ return this.app.request.bind(this.app);
69
+ }
70
+ get notFound() {
71
+ return this.app.notFound.bind(this.app);
72
+ }
73
+ get onError() {
74
+ return this.app.onError.bind(this.app);
75
+ }
76
+ constructor(options){
77
+ _class_private_method_init(this, _applyMiddlewares);
78
+ this.plugins = [];
79
+ this.serverContext = null;
80
+ this.options = options;
81
+ this.app = new Hono();
82
+ this.app.use('*', run);
83
+ }
84
+ }
85
+ function applyMiddlewares() {
86
+ const { middlewares } = this.serverContext;
87
+ const preMiddlewares = [];
88
+ const defaultMiddlewares = [];
89
+ const postMiddlewares = [];
90
+ for (const middleware of middlewares)switch(middleware.order){
91
+ case 'pre':
92
+ preMiddlewares.push(middleware);
93
+ break;
94
+ case 'post':
95
+ postMiddlewares.push(middleware);
96
+ break;
97
+ default:
98
+ defaultMiddlewares.push(middleware);
99
+ }
100
+ const finalMiddlewares = [];
101
+ const insertMiddleware = (middleware)=>{
102
+ if (middleware.before) {
103
+ const targetIndex = finalMiddlewares.findIndex((item)=>{
104
+ if (middleware.before?.includes(item.name)) return true;
105
+ return false;
106
+ });
107
+ if (-1 !== targetIndex) finalMiddlewares.splice(targetIndex, 0, middleware);
108
+ else finalMiddlewares.push(middleware);
109
+ } else finalMiddlewares.push(middleware);
110
+ };
111
+ preMiddlewares.forEach(insertMiddleware);
112
+ defaultMiddlewares.forEach(insertMiddleware);
113
+ postMiddlewares.forEach(insertMiddleware);
114
+ for (const middleware of finalMiddlewares){
115
+ const { path = '*', method = 'all', handler } = middleware;
116
+ const handlers = handler2Handlers(handler);
117
+ if (0 === handlers.length) continue;
118
+ const firstHandler = handlers[0];
119
+ const restHandlers = handlers.slice(1);
120
+ const m = method;
121
+ const register = this.app[m];
122
+ register.call(this.app, path, firstHandler, ...restHandlers);
123
+ }
124
+ function handler2Handlers(handler) {
125
+ if (Array.isArray(handler)) return handler;
126
+ return [
127
+ handler
128
+ ];
129
+ }
130
+ }
131
+ function createServerBase(options) {
132
+ if (null == options) throw new Error('can not start server without options');
133
+ const server = new ServerBase(options);
134
+ return server;
135
+ }
136
+ export { ServerBase, createServerBase };
@@ -0,0 +1 @@
1
+ export * from "./plugin";
@@ -0,0 +1,3 @@
1
+ const sortRoutes = (route1, route2)=>route2.urlPath.length - route1.urlPath.length;
2
+ const uniqueKeyByRoute = (route)=>`${route.entryName}-${route.urlPath}`;
3
+ export { sortRoutes, uniqueKeyByRoute };
@@ -0,0 +1,14 @@
1
+ const getRuntimeEnv = ()=>{
2
+ if (globalThis?.process?.release?.name === 'node') return 'node';
3
+ return 'other';
4
+ };
5
+ const checkIsProd = ()=>{
6
+ const env = getRuntimeEnv();
7
+ switch(env){
8
+ case 'node':
9
+ return 'production' === process.env.NODE_ENV;
10
+ default:
11
+ return false;
12
+ }
13
+ };
14
+ export { checkIsProd, getRuntimeEnv };
@@ -0,0 +1,53 @@
1
+ import { parseHeaders } from "./request";
2
+ const ERROR_PAGE_TEXT = {
3
+ 404: 'This page could not be found.',
4
+ 500: 'Internal Server Error.'
5
+ };
6
+ const createErrorHtml = (status)=>{
7
+ const text = ERROR_PAGE_TEXT[status] || '';
8
+ const title = `${status}: ${text}`;
9
+ return `<!DOCTYPE html>
10
+ <html lang="en">
11
+ <head>
12
+ <meta charset="utf-8">
13
+ <meta name="viewport" content="width=device-width">
14
+ <title>${title}</title>
15
+ <style>
16
+ html,body {
17
+ margin: 0;
18
+ }
19
+
20
+ .page-container {
21
+ color: #000;
22
+ background: #fff;
23
+ height: 100vh;
24
+ text-align: center;
25
+ display: flex;
26
+ flex-direction: column;
27
+ align-items: center;
28
+ justify-content: center;
29
+ }
30
+ </style>
31
+ </head>
32
+ <body>
33
+ <div class="page-container">
34
+ <h1>${status}</h1>
35
+ <div>${text}</div>
36
+ </body>
37
+ </html>
38
+ `;
39
+ };
40
+ var error_ErrorDigest = /*#__PURE__*/ function(ErrorDigest) {
41
+ ErrorDigest["ENOTF"] = "Page could not be found";
42
+ ErrorDigest["EINTER"] = "Internal server error";
43
+ ErrorDigest["ERENDER"] = "SSR render fallback";
44
+ return ErrorDigest;
45
+ }({});
46
+ function onError(digest, error, monitors, req) {
47
+ const headerData = req && parseHeaders(req);
48
+ headerData && delete headerData.cookie;
49
+ if (monitors) monitors.error(req ? `Server Error - ${digest}, error = %s, req.url = %s, req.headers = %o` : `Server Error - ${digest}, error = %s`, error instanceof Error ? error.stack || error.message : error, req?.url, headerData);
50
+ else if (req) console.error(`Server Error - ${digest}, error = ${error instanceof Error ? error.stack || error.message : error}, req.url = ${req.url}, req.headers = ${JSON.stringify(headerData)}`);
51
+ else console.error(`Server Error - ${digest}, error = ${error instanceof Error ? error.stack || error.message : error} `);
52
+ }
53
+ export { error_ErrorDigest as ErrorDigest, createErrorHtml, onError };
@@ -6,3 +6,4 @@ export * from "./warmup";
6
6
  export * from "./entry";
7
7
  export * from "./request";
8
8
  export * from "./serverConfig";
9
+ export * from "./publicDir";
@@ -0,0 +1,26 @@
1
+ const mergeExtension = (users)=>{
2
+ const output = [];
3
+ return {
4
+ middleware: output.concat(users)
5
+ };
6
+ };
7
+ const createMiddlewareCollecter = ()=>{
8
+ const webMiddlewares = [];
9
+ const apiMiddlewares = [];
10
+ const addWebMiddleware = (input)=>{
11
+ webMiddlewares.push(input);
12
+ };
13
+ const addAPIMiddleware = (input)=>{
14
+ apiMiddlewares.push(input);
15
+ };
16
+ const getMiddlewares = ()=>({
17
+ web: webMiddlewares,
18
+ api: apiMiddlewares
19
+ });
20
+ return {
21
+ getMiddlewares,
22
+ addWebMiddleware,
23
+ addAPIMiddleware
24
+ };
25
+ };
26
+ export { createMiddlewareCollecter, mergeExtension };
@@ -0,0 +1,33 @@
1
+ import path from "path";
2
+ function normalizePublicDir(publicDir) {
3
+ if (!publicDir) return [];
4
+ return Array.isArray(publicDir) ? publicDir : [
5
+ publicDir
6
+ ];
7
+ }
8
+ function normalizePublicDirPath(dir) {
9
+ return dir.replace(/^\.\//, '').replace(/\/$/, '');
10
+ }
11
+ function getPublicDirRoutePrefixes(publicDir) {
12
+ const dirs = normalizePublicDir(publicDir);
13
+ return dirs.map((dir)=>{
14
+ const normalized = normalizePublicDirPath(dir);
15
+ return `/${normalized}`;
16
+ });
17
+ }
18
+ function getPublicDirPatterns(publicDir) {
19
+ const dirs = normalizePublicDir(publicDir);
20
+ return dirs.map((dir)=>{
21
+ const normalized = normalizePublicDirPath(dir);
22
+ return `${normalized}/`;
23
+ });
24
+ }
25
+ function resolvePublicDirPaths(publicDir, appDirectory) {
26
+ const dirs = normalizePublicDir(publicDir);
27
+ if (!appDirectory) return dirs;
28
+ return dirs.map((dir)=>path.resolve(appDirectory, dir));
29
+ }
30
+ function getPublicDirConfig(serverConfig) {
31
+ return serverConfig?.publicDir;
32
+ }
33
+ export { getPublicDirConfig, getPublicDirPatterns, getPublicDirRoutePrefixes, normalizePublicDir, normalizePublicDirPath, resolvePublicDirPaths };
@@ -0,0 +1,40 @@
1
+ function parseQuery(req) {
2
+ const query = {};
3
+ const { url } = req;
4
+ const q = url.split('?')[1];
5
+ if (q) {
6
+ const search = new URLSearchParams(q);
7
+ search.forEach((v, k)=>{
8
+ query[k] = v;
9
+ });
10
+ }
11
+ return query;
12
+ }
13
+ function parseHeaders(request) {
14
+ const headersData = {};
15
+ request.headers.forEach((value, key)=>{
16
+ headersData[key] = value;
17
+ });
18
+ return headersData;
19
+ }
20
+ function getPathname(request) {
21
+ const match = request.url.match(/^https?:\/\/[^/]+(\/[^?]*)/);
22
+ return match ? match[1] : '/';
23
+ }
24
+ function getHost(request) {
25
+ const { headers } = request;
26
+ let host = headers.get('X-Forwarded-Host');
27
+ if (!host) host = headers.get('Host');
28
+ host = host?.split(/\s*,\s*/, 1)[0] || 'undefined';
29
+ return host;
30
+ }
31
+ function parseCookie(req) {
32
+ const _cookie = req.headers.get('Cookie');
33
+ const cookie = {};
34
+ _cookie?.trim().split(';').forEach((item)=>{
35
+ const [k, v] = item.trim().split('=');
36
+ if (k) cookie[k] = v;
37
+ });
38
+ return cookie;
39
+ }
40
+ export { getHost, getPathname, parseCookie, parseHeaders, parseQuery };
@@ -0,0 +1,9 @@
1
+ import { merge } from "ts-deepmerge";
2
+ const loadConfig = ({ cliConfig, serverConfig })=>{
3
+ const config = merge({
4
+ ...cliConfig,
5
+ plugins: []
6
+ }, serverConfig);
7
+ return config;
8
+ };
9
+ export { loadConfig };