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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +26 -0
  3. package/dist/cjs/adapters/node/helper/index.js +55 -0
  4. package/dist/cjs/adapters/node/helper/loadCache.js +58 -0
  5. package/dist/cjs/adapters/node/helper/loadConfig.js +78 -0
  6. package/dist/cjs/adapters/node/helper/loadEnv.js +66 -0
  7. package/dist/cjs/adapters/node/helper/loadPlugin.js +47 -0
  8. package/dist/cjs/adapters/node/helper/utils.js +39 -0
  9. package/dist/cjs/adapters/node/hono.js +95 -0
  10. package/dist/cjs/adapters/node/index.js +87 -0
  11. package/dist/cjs/adapters/node/node.js +180 -0
  12. package/dist/cjs/adapters/node/plugins/index.js +72 -0
  13. package/dist/cjs/adapters/node/plugins/nodeServer.js +43 -0
  14. package/dist/cjs/adapters/node/plugins/resource.js +206 -0
  15. package/dist/cjs/adapters/node/plugins/static.js +379 -0
  16. package/dist/cjs/constants.js +77 -0
  17. package/dist/cjs/context.js +41 -0
  18. package/dist/cjs/helper.js +45 -0
  19. package/dist/cjs/hono.js +46 -0
  20. package/dist/cjs/index.js +247 -0
  21. package/dist/cjs/plugins/compat/hooks.js +80 -0
  22. package/dist/cjs/plugins/compat/index.js +64 -0
  23. package/dist/cjs/plugins/contractGateAutopilot.js +158 -0
  24. package/dist/cjs/plugins/contractGateSnapshotStore.js +239 -0
  25. package/dist/cjs/plugins/default.js +61 -0
  26. package/dist/cjs/plugins/favicon.js +48 -0
  27. package/dist/cjs/plugins/index.js +157 -0
  28. package/dist/cjs/plugins/log.js +92 -0
  29. package/dist/cjs/plugins/mfCache.js +78 -0
  30. package/dist/cjs/plugins/middlewares.js +49 -0
  31. package/dist/cjs/plugins/monitors.js +192 -0
  32. package/dist/cjs/plugins/processedBy.js +50 -0
  33. package/dist/cjs/plugins/render/csrRscRender.js +74 -0
  34. package/dist/cjs/plugins/render/dataHandler.js +53 -0
  35. package/dist/cjs/plugins/render/index.js +158 -0
  36. package/dist/cjs/plugins/render/inject.js +92 -0
  37. package/dist/cjs/plugins/render/render.js +273 -0
  38. package/dist/cjs/plugins/render/renderRscHandler.js +72 -0
  39. package/dist/cjs/plugins/render/serverActionHandler.js +47 -0
  40. package/dist/cjs/plugins/render/ssrCache.js +198 -0
  41. package/dist/cjs/plugins/render/ssrRender.js +96 -0
  42. package/dist/cjs/plugins/render/utils.js +49 -0
  43. package/dist/cjs/plugins/route.js +68 -0
  44. package/dist/cjs/plugins/telemetry.js +1283 -0
  45. package/dist/cjs/serverBase.js +176 -0
  46. package/dist/cjs/types/config/bff.js +18 -0
  47. package/dist/cjs/types/config/dev.js +18 -0
  48. package/dist/cjs/types/config/html.js +18 -0
  49. package/dist/cjs/types/config/index.js +93 -0
  50. package/dist/cjs/types/config/output.js +18 -0
  51. package/dist/cjs/types/config/security.js +18 -0
  52. package/dist/cjs/types/config/server.js +18 -0
  53. package/dist/cjs/types/config/share.js +18 -0
  54. package/dist/cjs/types/config/source.js +18 -0
  55. package/dist/cjs/types/config/tools.js +18 -0
  56. package/dist/cjs/types/index.js +79 -0
  57. package/dist/cjs/types/plugins/base.js +18 -0
  58. package/dist/cjs/types/plugins/index.js +58 -0
  59. package/dist/cjs/types/plugins/plugin.js +18 -0
  60. package/dist/cjs/types/render.js +18 -0
  61. package/dist/cjs/types/requestHandler.js +18 -0
  62. package/dist/cjs/types/server.js +18 -0
  63. package/dist/cjs/utils/entry.js +40 -0
  64. package/dist/cjs/utils/env.js +51 -0
  65. package/dist/cjs/utils/error.js +93 -0
  66. package/dist/cjs/utils/index.js +114 -0
  67. package/dist/cjs/utils/middlewareCollector.js +63 -0
  68. package/dist/cjs/utils/publicDir.js +92 -0
  69. package/dist/cjs/utils/request.js +86 -0
  70. package/dist/cjs/utils/serverConfig.js +43 -0
  71. package/dist/cjs/utils/storage.js +69 -0
  72. package/dist/cjs/utils/transformStream.js +65 -0
  73. package/dist/cjs/utils/warmup.js +40 -0
  74. package/dist/esm/adapters/node/helper/index.mjs +5 -0
  75. package/dist/esm/adapters/node/helper/loadCache.mjs +14 -0
  76. package/dist/esm/adapters/node/helper/loadConfig.mjs +31 -0
  77. package/dist/esm/adapters/node/helper/loadEnv.mjs +22 -0
  78. package/dist/esm/adapters/node/helper/loadPlugin.mjs +13 -0
  79. package/dist/esm/adapters/node/helper/utils.mjs +5 -0
  80. package/dist/esm/adapters/node/hono.mjs +55 -0
  81. package/dist/esm/adapters/node/index.mjs +4 -0
  82. package/dist/esm/adapters/node/node.mjs +130 -0
  83. package/dist/esm/adapters/node/plugins/index.mjs +3 -0
  84. package/dist/esm/adapters/node/plugins/nodeServer.mjs +9 -0
  85. package/dist/esm/adapters/node/plugins/resource.mjs +138 -0
  86. package/dist/esm/adapters/node/plugins/static.mjs +329 -0
  87. package/dist/esm/constants.mjs +28 -0
  88. package/dist/esm/context.mjs +4 -0
  89. package/dist/esm/helper.mjs +11 -0
  90. package/dist/esm/hono.mjs +2 -0
  91. package/dist/esm/index.mjs +12 -0
  92. package/dist/esm/plugins/compat/hooks.mjs +40 -0
  93. package/dist/esm/plugins/compat/index.mjs +27 -0
  94. package/dist/esm/plugins/contractGateAutopilot.mjs +124 -0
  95. package/dist/esm/plugins/contractGateSnapshotStore.mjs +180 -0
  96. package/dist/esm/plugins/default.mjs +27 -0
  97. package/dist/esm/plugins/favicon.mjs +14 -0
  98. package/dist/esm/plugins/index.mjs +11 -0
  99. package/dist/esm/plugins/log.mjs +58 -0
  100. package/dist/esm/plugins/mfCache.mjs +35 -0
  101. package/dist/esm/plugins/middlewares.mjs +15 -0
  102. package/dist/esm/plugins/monitors.mjs +149 -0
  103. package/dist/esm/plugins/processedBy.mjs +16 -0
  104. package/dist/esm/plugins/render/csrRscRender.mjs +40 -0
  105. package/dist/esm/plugins/render/dataHandler.mjs +19 -0
  106. package/dist/esm/plugins/render/index.mjs +84 -0
  107. package/dist/esm/plugins/render/inject.mjs +55 -0
  108. package/dist/esm/plugins/render/render.mjs +230 -0
  109. package/dist/esm/plugins/render/renderRscHandler.mjs +38 -0
  110. package/dist/esm/plugins/render/serverActionHandler.mjs +13 -0
  111. package/dist/esm/plugins/render/ssrCache.mjs +158 -0
  112. package/dist/esm/plugins/render/ssrRender.mjs +62 -0
  113. package/dist/esm/plugins/render/utils.mjs +15 -0
  114. package/dist/esm/plugins/route.mjs +34 -0
  115. package/dist/esm/plugins/telemetry.mjs +1195 -0
  116. package/dist/esm/rslib-runtime.mjs +18 -0
  117. package/dist/esm/serverBase.mjs +139 -0
  118. package/dist/esm/types/config/bff.mjs +0 -0
  119. package/dist/esm/types/config/dev.mjs +0 -0
  120. package/dist/esm/types/config/html.mjs +0 -0
  121. package/dist/esm/types/config/index.mjs +6 -0
  122. package/dist/esm/types/config/output.mjs +0 -0
  123. package/dist/esm/types/config/security.mjs +0 -0
  124. package/dist/esm/types/config/server.mjs +0 -0
  125. package/dist/esm/types/config/share.mjs +0 -0
  126. package/dist/esm/types/config/source.mjs +0 -0
  127. package/dist/esm/types/config/tools.mjs +0 -0
  128. package/dist/esm/types/index.mjs +4 -0
  129. package/dist/esm/types/plugins/base.mjs +0 -0
  130. package/dist/esm/types/plugins/index.mjs +1 -0
  131. package/dist/esm/types/plugins/plugin.mjs +0 -0
  132. package/dist/esm/types/render.mjs +0 -0
  133. package/dist/esm/types/requestHandler.mjs +0 -0
  134. package/dist/esm/types/server.mjs +0 -0
  135. package/dist/esm/utils/entry.mjs +3 -0
  136. package/dist/esm/utils/env.mjs +14 -0
  137. package/dist/esm/utils/error.mjs +53 -0
  138. package/dist/esm/utils/index.mjs +9 -0
  139. package/dist/esm/utils/middlewareCollector.mjs +26 -0
  140. package/dist/esm/utils/publicDir.mjs +33 -0
  141. package/dist/esm/utils/request.mjs +40 -0
  142. package/dist/esm/utils/serverConfig.mjs +9 -0
  143. package/dist/esm/utils/storage.mjs +35 -0
  144. package/dist/esm/utils/transformStream.mjs +28 -0
  145. package/dist/esm/utils/warmup.mjs +6 -0
  146. package/dist/esm-node/adapters/node/helper/index.mjs +6 -0
  147. package/dist/esm-node/adapters/node/helper/loadCache.mjs +15 -0
  148. package/dist/esm-node/adapters/node/helper/loadConfig.mjs +32 -0
  149. package/dist/esm-node/adapters/node/helper/loadEnv.mjs +23 -0
  150. package/dist/esm-node/adapters/node/helper/loadPlugin.mjs +14 -0
  151. package/dist/esm-node/adapters/node/helper/utils.mjs +6 -0
  152. package/dist/esm-node/adapters/node/hono.mjs +56 -0
  153. package/dist/esm-node/adapters/node/index.mjs +5 -0
  154. package/dist/esm-node/adapters/node/node.mjs +131 -0
  155. package/dist/esm-node/adapters/node/plugins/index.mjs +4 -0
  156. package/dist/esm-node/adapters/node/plugins/nodeServer.mjs +10 -0
  157. package/dist/esm-node/adapters/node/plugins/resource.mjs +139 -0
  158. package/dist/esm-node/adapters/node/plugins/static.mjs +330 -0
  159. package/dist/esm-node/constants.mjs +29 -0
  160. package/dist/esm-node/context.mjs +5 -0
  161. package/dist/esm-node/helper.mjs +12 -0
  162. package/dist/esm-node/hono.mjs +3 -0
  163. package/dist/esm-node/index.mjs +13 -0
  164. package/dist/esm-node/plugins/compat/hooks.mjs +41 -0
  165. package/dist/esm-node/plugins/compat/index.mjs +28 -0
  166. package/dist/esm-node/plugins/contractGateAutopilot.mjs +125 -0
  167. package/dist/esm-node/plugins/contractGateSnapshotStore.mjs +182 -0
  168. package/dist/esm-node/plugins/default.mjs +28 -0
  169. package/dist/esm-node/plugins/favicon.mjs +15 -0
  170. package/dist/esm-node/plugins/index.mjs +12 -0
  171. package/dist/esm-node/plugins/log.mjs +59 -0
  172. package/dist/esm-node/plugins/mfCache.mjs +36 -0
  173. package/dist/esm-node/plugins/middlewares.mjs +16 -0
  174. package/dist/esm-node/plugins/monitors.mjs +150 -0
  175. package/dist/esm-node/plugins/processedBy.mjs +17 -0
  176. package/dist/esm-node/plugins/render/csrRscRender.mjs +41 -0
  177. package/dist/esm-node/plugins/render/dataHandler.mjs +20 -0
  178. package/dist/esm-node/plugins/render/index.mjs +85 -0
  179. package/dist/esm-node/plugins/render/inject.mjs +56 -0
  180. package/dist/esm-node/plugins/render/render.mjs +231 -0
  181. package/dist/esm-node/plugins/render/renderRscHandler.mjs +39 -0
  182. package/dist/esm-node/plugins/render/serverActionHandler.mjs +14 -0
  183. package/dist/esm-node/plugins/render/ssrCache.mjs +159 -0
  184. package/dist/esm-node/plugins/render/ssrRender.mjs +63 -0
  185. package/dist/esm-node/plugins/render/utils.mjs +16 -0
  186. package/dist/esm-node/plugins/route.mjs +35 -0
  187. package/dist/esm-node/plugins/telemetry.mjs +1196 -0
  188. package/dist/esm-node/rslib-runtime.mjs +19 -0
  189. package/dist/esm-node/serverBase.mjs +140 -0
  190. package/dist/esm-node/types/config/bff.mjs +1 -0
  191. package/dist/esm-node/types/config/dev.mjs +1 -0
  192. package/dist/esm-node/types/config/html.mjs +1 -0
  193. package/dist/esm-node/types/config/index.mjs +7 -0
  194. package/dist/esm-node/types/config/output.mjs +1 -0
  195. package/dist/esm-node/types/config/security.mjs +1 -0
  196. package/dist/esm-node/types/config/server.mjs +1 -0
  197. package/dist/esm-node/types/config/share.mjs +1 -0
  198. package/dist/esm-node/types/config/source.mjs +1 -0
  199. package/dist/esm-node/types/config/tools.mjs +1 -0
  200. package/dist/esm-node/types/index.mjs +5 -0
  201. package/dist/esm-node/types/plugins/base.mjs +1 -0
  202. package/dist/esm-node/types/plugins/index.mjs +2 -0
  203. package/dist/esm-node/types/plugins/plugin.mjs +1 -0
  204. package/dist/esm-node/types/render.mjs +1 -0
  205. package/dist/esm-node/types/requestHandler.mjs +1 -0
  206. package/dist/esm-node/types/server.mjs +1 -0
  207. package/dist/esm-node/utils/entry.mjs +4 -0
  208. package/dist/esm-node/utils/env.mjs +15 -0
  209. package/dist/esm-node/utils/error.mjs +54 -0
  210. package/dist/esm-node/utils/index.mjs +10 -0
  211. package/dist/esm-node/utils/middlewareCollector.mjs +27 -0
  212. package/dist/esm-node/utils/publicDir.mjs +34 -0
  213. package/dist/esm-node/utils/request.mjs +41 -0
  214. package/dist/esm-node/utils/serverConfig.mjs +10 -0
  215. package/dist/esm-node/utils/storage.mjs +36 -0
  216. package/dist/esm-node/utils/transformStream.mjs +29 -0
  217. package/dist/esm-node/utils/warmup.mjs +7 -0
  218. package/dist/types/adapters/node/helper/index.d.ts +6 -0
  219. package/dist/types/adapters/node/helper/loadCache.d.ts +2 -0
  220. package/dist/types/adapters/node/helper/loadConfig.d.ts +3 -0
  221. package/dist/types/adapters/node/helper/loadEnv.d.ts +3 -0
  222. package/dist/types/adapters/node/helper/loadPlugin.d.ts +3 -0
  223. package/dist/types/adapters/node/helper/utils.d.ts +21 -0
  224. package/dist/types/adapters/node/hono.d.ts +19 -0
  225. package/dist/types/adapters/node/index.d.ts +5 -0
  226. package/dist/types/adapters/node/node.d.ts +17 -0
  227. package/dist/types/adapters/node/plugins/index.d.ts +3 -0
  228. package/dist/types/adapters/node/plugins/nodeServer.d.ts +6 -0
  229. package/dist/types/adapters/node/plugins/resource.d.ts +11 -0
  230. package/dist/types/adapters/node/plugins/static.d.ts +25 -0
  231. package/dist/types/constants.d.ts +26 -0
  232. package/dist/types/context.d.ts +3 -0
  233. package/dist/types/helper.d.ts +10 -0
  234. package/dist/types/hono.d.ts +3 -0
  235. package/dist/types/index.d.ts +14 -0
  236. package/dist/types/plugins/compat/hooks.d.ts +8 -0
  237. package/dist/types/plugins/compat/index.d.ts +3 -0
  238. package/dist/types/plugins/contractGateAutopilot.d.ts +35 -0
  239. package/dist/types/plugins/contractGateSnapshotStore.d.ts +57 -0
  240. package/dist/types/plugins/default.d.ts +7 -0
  241. package/dist/types/plugins/favicon.d.ts +2 -0
  242. package/dist/types/plugins/index.d.ts +11 -0
  243. package/dist/types/plugins/log.d.ts +2 -0
  244. package/dist/types/plugins/mfCache.d.ts +12 -0
  245. package/dist/types/plugins/middlewares.d.ts +2 -0
  246. package/dist/types/plugins/monitors.d.ts +6 -0
  247. package/dist/types/plugins/processedBy.d.ts +2 -0
  248. package/dist/types/plugins/render/csrRscRender.d.ts +2 -0
  249. package/dist/types/plugins/render/dataHandler.d.ts +5 -0
  250. package/dist/types/plugins/render/index.d.ts +3 -0
  251. package/dist/types/plugins/render/inject.d.ts +7 -0
  252. package/dist/types/plugins/render/render.d.ts +16 -0
  253. package/dist/types/plugins/render/renderRscHandler.d.ts +2 -0
  254. package/dist/types/plugins/render/serverActionHandler.d.ts +2 -0
  255. package/dist/types/plugins/render/ssrCache.d.ts +18 -0
  256. package/dist/types/plugins/render/ssrRender.d.ts +26 -0
  257. package/dist/types/plugins/render/utils.d.ts +3 -0
  258. package/dist/types/plugins/route.d.ts +2 -0
  259. package/dist/types/plugins/telemetry.d.ts +309 -0
  260. package/dist/types/serverBase.d.ts +38 -0
  261. package/dist/types/types/config/bff.d.ts +142 -0
  262. package/dist/types/types/config/dev.d.ts +4 -0
  263. package/dist/types/types/config/html.d.ts +15 -0
  264. package/dist/types/types/config/index.d.ts +35 -0
  265. package/dist/types/types/config/output.d.ts +20 -0
  266. package/dist/types/types/config/security.d.ts +4 -0
  267. package/dist/types/types/config/server.d.ts +402 -0
  268. package/dist/types/types/config/share.d.ts +3 -0
  269. package/dist/types/types/config/source.d.ts +7 -0
  270. package/dist/types/types/config/tools.d.ts +2 -0
  271. package/dist/types/types/index.d.ts +4 -0
  272. package/dist/types/types/plugins/base.d.ts +57 -0
  273. package/dist/types/types/plugins/index.d.ts +2 -0
  274. package/dist/types/types/plugins/plugin.d.ts +31 -0
  275. package/dist/types/types/render.d.ts +24 -0
  276. package/dist/types/types/requestHandler.d.ts +48 -0
  277. package/dist/types/types/server.d.ts +67 -0
  278. package/dist/types/utils/entry.d.ts +3 -0
  279. package/dist/types/utils/env.d.ts +2 -0
  280. package/dist/types/utils/error.d.ts +8 -0
  281. package/dist/types/utils/index.d.ts +9 -0
  282. package/dist/types/utils/middlewareCollector.d.ts +12 -0
  283. package/dist/types/utils/publicDir.d.ts +40 -0
  284. package/dist/types/utils/request.d.ts +17 -0
  285. package/dist/types/utils/serverConfig.d.ts +8 -0
  286. package/dist/types/utils/storage.d.ts +5 -0
  287. package/dist/types/utils/transformStream.d.ts +5 -0
  288. package/dist/types/utils/warmup.d.ts +1 -0
  289. package/package.json +103 -0
  290. package/rslib.config.mts +4 -0
  291. package/rstest.config.mts +7 -0
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ createTransformStream: ()=>createTransformStream,
28
+ transformResponse: ()=>transformResponse
29
+ });
30
+ function createTransformStream(fn) {
31
+ const decoder = new TextDecoder();
32
+ const encoder = new TextEncoder();
33
+ return new TransformStream({
34
+ async transform (chunk, controller) {
35
+ const content = decoder.decode(chunk);
36
+ const newContent = fn ? await fn(content) : content;
37
+ controller.enqueue(encoder.encode(newContent));
38
+ }
39
+ });
40
+ }
41
+ function transformResponse(response, transformCb) {
42
+ let readable = null;
43
+ if (response.body) {
44
+ const stream = createTransformStream(async (before)=>{
45
+ if (Array.isArray(transformCb)) return transformCb.reduce(async (before, cb)=>cb(await before), Promise.resolve(before));
46
+ return transformCb(before);
47
+ });
48
+ response.body.pipeThrough(stream);
49
+ readable = stream.readable;
50
+ }
51
+ return new Response(readable, {
52
+ status: response.status,
53
+ headers: response.headers,
54
+ statusText: response.statusText
55
+ });
56
+ }
57
+ exports.createTransformStream = __webpack_exports__.createTransformStream;
58
+ exports.transformResponse = __webpack_exports__.transformResponse;
59
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
60
+ "createTransformStream",
61
+ "transformResponse"
62
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
63
+ Object.defineProperty(exports, '__esModule', {
64
+ value: true
65
+ });
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ warmup: ()=>warmup
28
+ });
29
+ function warmup(bundles) {
30
+ bundles.forEach((bundle)=>{
31
+ bundle && import(bundle).catch((_)=>{});
32
+ });
33
+ }
34
+ exports.warmup = __webpack_exports__.warmup;
35
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
36
+ "warmup"
37
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
38
+ Object.defineProperty(exports, '__esModule', {
39
+ value: true
40
+ });
@@ -0,0 +1,5 @@
1
+ export { loadCacheConfig } from "./loadCache.mjs";
2
+ export { loadServerCliConfig, loadServerRuntimeConfig } from "./loadConfig.mjs";
3
+ export { loadServerEnv } from "./loadEnv.mjs";
4
+ export { loadServerPlugins } from "./loadPlugin.mjs";
5
+ export { isResFinalized } from "./utils.mjs";
@@ -0,0 +1,14 @@
1
+ import { SERVER_DIR, requireExistModule } from "@modern-js/utils";
2
+ import path from "path";
3
+ const CACHE_FILENAME = 'cache';
4
+ async function loadCacheConfig(pwd) {
5
+ const serverCacheFilepath = path.resolve(pwd, SERVER_DIR, CACHE_FILENAME);
6
+ const mod = await requireExistModule(serverCacheFilepath, {
7
+ interop: false
8
+ });
9
+ if (mod?.cacheOption) return {
10
+ strategy: mod.cacheOption,
11
+ container: mod.customContainer
12
+ };
13
+ }
14
+ export { loadCacheConfig };
@@ -0,0 +1,31 @@
1
+ import { OUTPUT_CONFIG_FILE, ensureAbsolutePath, fs as utils_fs, lodash, requireExistModule } from "@modern-js/utils";
2
+ import { parse } from "flatted";
3
+ import path_0 from "path";
4
+ async function loadServerConfigNew(serverConfigPath) {
5
+ const mod = await requireExistModule(serverConfigPath);
6
+ if (mod) return mod;
7
+ }
8
+ async function loadServerRuntimeConfig(serverConfigPath) {
9
+ const newServerConfig = await loadServerConfigNew(serverConfigPath);
10
+ return newServerConfig;
11
+ }
12
+ function loadServerCliConfig(pwd, defaultConfig = {}) {
13
+ const cliConfigPath = ensureAbsolutePath(pwd, path_0.join(defaultConfig.output?.distPath?.root || 'dist', OUTPUT_CONFIG_FILE));
14
+ let cliConfig = {
15
+ output: {},
16
+ source: {},
17
+ tools: {},
18
+ server: {},
19
+ security: {},
20
+ bff: {},
21
+ html: {},
22
+ dev: {}
23
+ };
24
+ try {
25
+ const content = utils_fs.readFileSync(cliConfigPath, 'utf-8');
26
+ cliConfig = parse(content);
27
+ } catch (_) {}
28
+ const mergedCliConfig = lodash.merge(defaultConfig, cliConfig);
29
+ return mergedCliConfig;
30
+ }
31
+ export { loadServerCliConfig, loadServerRuntimeConfig };
@@ -0,0 +1,22 @@
1
+ import { dotenv, dotenvExpand, fs } from "@modern-js/utils";
2
+ import path from "path";
3
+ async function loadServerEnv(options) {
4
+ const { pwd } = options;
5
+ const serverEnv = process.env.MODERN_ENV;
6
+ const defaultEnvPath = path.resolve(pwd, ".env");
7
+ const serverEnvPath = path.resolve(pwd, `.env.${serverEnv}`);
8
+ if (await fs.pathExists(defaultEnvPath) && !(await fs.stat(defaultEnvPath)).isDirectory()) {
9
+ const envConfig = dotenv.config({
10
+ path: defaultEnvPath
11
+ });
12
+ dotenvExpand(envConfig);
13
+ }
14
+ if (await fs.pathExists(serverEnvPath) && !(await fs.stat(serverEnvPath)).isDirectory()) {
15
+ const envConfig = dotenv.config({
16
+ path: serverEnvPath
17
+ });
18
+ if (envConfig.parsed) Object.assign(process.env, envConfig.parsed);
19
+ dotenvExpand(envConfig);
20
+ }
21
+ }
22
+ export { loadServerEnv };
@@ -0,0 +1,13 @@
1
+ import { compatibleRequire, tryResolve } from "@modern-js/utils";
2
+ async function resolveServerPlugin(plugin, appDirectory) {
3
+ const { name, options } = plugin;
4
+ const pluginPath = tryResolve(name, appDirectory);
5
+ const module = await compatibleRequire(pluginPath);
6
+ const pluginInstance = module(options);
7
+ return pluginInstance;
8
+ }
9
+ async function loadServerPlugins(serverPlugins, appDirectory) {
10
+ const instances = await Promise.all(serverPlugins.map((plugin)=>resolveServerPlugin(plugin, appDirectory)));
11
+ return instances;
12
+ }
13
+ export { loadServerPlugins };
@@ -0,0 +1,5 @@
1
+ const isResFinalized = (res)=>{
2
+ const response = res;
3
+ return Boolean(response.headersSent) || Boolean(response._modernBodyPiped) || Boolean(response.writableEnded) || Boolean(response.finished) || response.socket?.writable === false;
4
+ };
5
+ export { isResFinalized };
@@ -0,0 +1,55 @@
1
+ import { isResFinalized } from "./helper/index.mjs";
2
+ const httpCallBack2HonoMid = (handler)=>async (context, next)=>{
3
+ const { req, res: rawRes } = context.env.node;
4
+ const res = rawRes;
5
+ const onPipe = ()=>{
6
+ res._modernBodyPiped = true;
7
+ };
8
+ res.once?.('pipe', onPipe);
9
+ req.__honoRequest = context.req;
10
+ req.__templates = context.get('templates') || {};
11
+ req.__serverManifest = context.get('serverManifest') || {};
12
+ req.__rscServerManifest = context.get('rscServerManifest');
13
+ req.__rscClientManifest = context.get('rscClientManifest');
14
+ req.__rscSSRManifest = context.get('rscSSRManifest');
15
+ try {
16
+ await handler(req, res);
17
+ } finally{
18
+ delete req.__honoRequest;
19
+ delete req.__templates;
20
+ delete req.__serverManifest;
21
+ delete req.__rscServerManifest;
22
+ delete req.__rscClientManifest;
23
+ delete req.__rscSSRManifest;
24
+ res.removeListener?.('pipe', onPipe);
25
+ }
26
+ if (isResFinalized(res)) {
27
+ context.res;
28
+ context.finalized = true;
29
+ } else await next();
30
+ };
31
+ const noop = ()=>{};
32
+ const connectMid2HonoMid = (handler)=>async (context, next)=>new Promise((resolve, reject)=>{
33
+ const { req, res } = context.env.node;
34
+ if (handler.length < 3) resolve(handler(req, res, noop));
35
+ else handler(req, res, (err)=>{
36
+ if (err) reject(err);
37
+ else resolve(next());
38
+ });
39
+ });
40
+ const connectMockMid2HonoMid = (handler)=>async (context, next)=>new Promise((resolve, reject)=>{
41
+ const { req, res: rawRes } = context.env.node;
42
+ const res = rawRes;
43
+ if (handler.length < 3) {
44
+ res.once?.('finish', ()=>{
45
+ context.res;
46
+ context.finalized = true;
47
+ resolve();
48
+ });
49
+ handler(req, res, noop);
50
+ } else handler(req, res, (err)=>{
51
+ if (err) reject(err);
52
+ else resolve(next());
53
+ });
54
+ });
55
+ export { connectMid2HonoMid, connectMockMid2HonoMid, httpCallBack2HonoMid };
@@ -0,0 +1,4 @@
1
+ export { loadCacheConfig, loadServerCliConfig, loadServerEnv, loadServerPlugins, loadServerRuntimeConfig } from "./helper/index.mjs";
2
+ export { connectMid2HonoMid, connectMockMid2HonoMid, httpCallBack2HonoMid } from "./hono.mjs";
3
+ export { createNodeServer, createWebRequest, sendResponse } from "./node.mjs";
4
+ export { getHtmlTemplates, getServerManifest, injectNodeSeverPlugin, injectResourcePlugin, injectRscManifestPlugin, serverStaticPlugin } from "./plugins/index.mjs";
@@ -0,0 +1,130 @@
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/index.mjs";
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) {
87
+ res.statusCode = 500;
88
+ res.setHeader('Content-Type', 'text/plain');
89
+ }
90
+ res.end(`Error: ${err.message}`);
91
+ res.destroy(err);
92
+ }
93
+ };
94
+ const getRequestListener = (handler)=>async (req, res)=>{
95
+ try {
96
+ const request = createWebRequest(req, res);
97
+ const response = await handler(request, {
98
+ node: {
99
+ req,
100
+ res
101
+ }
102
+ });
103
+ if (!response.res && !isResFinalized(res)) await sendResponse(response, res);
104
+ } catch (error) {
105
+ return handleResponseError(error, res);
106
+ }
107
+ };
108
+ const createNodeServer = async (requestHandler, httpsOptions, http2)=>{
109
+ const requestListener = getRequestListener(requestHandler);
110
+ let nodeServer;
111
+ if (httpsOptions) if (http2) {
112
+ const { createSecureServer } = await import("node:http2");
113
+ nodeServer = createSecureServer({
114
+ allowHTTP1: true,
115
+ maxSessionMemory: 1024,
116
+ ...httpsOptions
117
+ }, (req, res)=>requestListener(req, res));
118
+ } else {
119
+ const { createServer } = await import("node:https");
120
+ nodeServer = createServer(httpsOptions, requestListener);
121
+ }
122
+ else {
123
+ const { createServer } = await import("node:http");
124
+ nodeServer = createServer(requestListener);
125
+ }
126
+ nodeServer.getRequestListener = ()=>requestListener;
127
+ nodeServer.getRequestHandler = ()=>requestHandler;
128
+ return nodeServer;
129
+ };
130
+ export { createNodeServer, createWebRequest, sendResponse };
@@ -0,0 +1,3 @@
1
+ export * from "./nodeServer.mjs";
2
+ export * from "./resource.mjs";
3
+ export * from "./static.mjs";
@@ -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 { fileReader } from "@modern-js/runtime-utils/fileReader";
2
+ import { LOADABLE_STATS_FILE, MAIN_ENTRY_NAME, NESTED_ROUTE_SPEC_FILE, ROUTE_MANIFEST_FILE, SERVER_BUNDLE_DIRECTORY, compatibleRequire, fs, isProd } from "@modern-js/utils";
3
+ import path from "path";
4
+ import { uniqueKeyByRoute } from "../../../utils/index.mjs";
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, monitors)=>{
31
+ if (!await fs.pathExists(filepath)) return;
32
+ try {
33
+ const module = await compatibleRequire(filepath, false);
34
+ return module;
35
+ } catch (e) {
36
+ if (monitors) monitors.error(`Load ${filepath} bundle failed, error = %s`, e instanceof Error ? e.stack || e.message : e);
37
+ else console.error(`Load ${filepath} bundle failed, error = ${e instanceof Error ? e.stack || e.message : e}`);
38
+ return;
39
+ }
40
+ };
41
+ async function getServerManifest(pwd, routes, monitors) {
42
+ const loaderBundles = {};
43
+ const renderBundles = {};
44
+ await Promise.all(routes.filter((route)=>Boolean(route.bundle)).map(async (route)=>{
45
+ const entryName = route.entryName || MAIN_ENTRY_NAME;
46
+ const renderBundlePath = path.join(pwd, route.bundle || '');
47
+ const loaderBundlePath = path.join(pwd, SERVER_BUNDLE_DIRECTORY, `${entryName}-server-loaders.js`);
48
+ const renderBundle = await loadBundle(renderBundlePath, monitors);
49
+ const loaderBundle = await loadBundle(loaderBundlePath, monitors);
50
+ renderBundle && (renderBundles[entryName] = renderBundle);
51
+ loaderBundle && (loaderBundles[entryName] = loaderBundle?.loadModules ? await loaderBundle?.loadModules() : loaderBundle);
52
+ }));
53
+ const loadableUri = path.join(pwd, LOADABLE_STATS_FILE);
54
+ const loadableStats = await compatibleRequire(loadableUri).catch((_)=>({}));
55
+ const routesManifestUri = path.join(pwd, ROUTE_MANIFEST_FILE);
56
+ const routeManifest = await compatibleRequire(routesManifestUri).catch((_)=>({}));
57
+ const nestedRoutesJsonPath = path.join(pwd, NESTED_ROUTE_SPEC_FILE);
58
+ const nestedRoutesJson = await compatibleRequire(nestedRoutesJsonPath).catch((_)=>({}));
59
+ return {
60
+ loaderBundles,
61
+ renderBundles,
62
+ loadableStats,
63
+ routeManifest,
64
+ nestedRoutesJson
65
+ };
66
+ }
67
+ function injectServerManifest(pwd, routes, manifestPromise) {
68
+ return async (c, next)=>{
69
+ if (routes && !c.get('serverManifest')) {
70
+ const monitors = c.get('monitors');
71
+ const serverManifest = await (manifestPromise || getServerManifest(pwd, routes, monitors));
72
+ c.set('serverManifest', serverManifest);
73
+ }
74
+ await next();
75
+ };
76
+ }
77
+ async function getRscServerManifest(pwd) {
78
+ const rscServerManifest = await compatibleRequire(path.join(pwd, 'bundles', 'react-server-manifest.json')).catch((_)=>void 0);
79
+ return rscServerManifest;
80
+ }
81
+ async function getClientManifest(pwd) {
82
+ const rscClientManifest = await compatibleRequire(path.join(pwd, 'react-client-manifest.json')).catch((_)=>void 0);
83
+ return rscClientManifest;
84
+ }
85
+ async function getRscSSRManifest(pwd) {
86
+ const rscSSRManifest = await compatibleRequire(path.join(pwd, 'react-ssr-manifest.json')).catch((_)=>void 0);
87
+ return rscSSRManifest;
88
+ }
89
+ const injectRscManifestPlugin = (enableRsc)=>({
90
+ name: '@modern-js/plugin-inject-rsc-manifest',
91
+ setup (api) {
92
+ api.onPrepare(()=>{
93
+ const { middlewares, distDirectory: pwd } = api.getServerContext();
94
+ if (!enableRsc) 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 || [], void 0);
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 };