@modern-js/server-core 2.48.5-alpha.2 → 2.48.6

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 (209) hide show
  1. package/dist/cjs/index.js +4 -6
  2. package/dist/cjs/{core/loadPlugins.js → loadPlugins.js} +7 -4
  3. package/dist/cjs/{core/plugin.js → plugin.js} +42 -1
  4. package/dist/esm/index.js +2 -3
  5. package/dist/{esm-node/core → esm}/loadPlugins.js +7 -4
  6. package/dist/{esm-node/core → esm}/plugin.js +42 -1
  7. package/dist/types/index.d.ts +2 -3
  8. package/dist/types/loadPlugins.d.ts +5 -0
  9. package/dist/types/plugin.d.ts +493 -0
  10. package/package.json +6 -44
  11. package/dist/cjs/base/adapters/node/bff.js +0 -70
  12. package/dist/cjs/base/adapters/node/hono.js +0 -63
  13. package/dist/cjs/base/adapters/node/index.js +0 -54
  14. package/dist/cjs/base/adapters/node/loadServer.js +0 -56
  15. package/dist/cjs/base/adapters/node/middlewares/index.js +0 -28
  16. package/dist/cjs/base/adapters/node/middlewares/mock.js +0 -113
  17. package/dist/cjs/base/adapters/node/middlewares/serverManifest.js +0 -82
  18. package/dist/cjs/base/adapters/node/middlewares/serverPublic.js +0 -67
  19. package/dist/cjs/base/adapters/node/middlewares/serverStatic.js +0 -109
  20. package/dist/cjs/base/adapters/node/middlewares/templates.js +0 -67
  21. package/dist/cjs/base/adapters/node/node.js +0 -127
  22. package/dist/cjs/base/adapters/node/polyfills/index.js +0 -24
  23. package/dist/cjs/base/adapters/node/polyfills/install.js +0 -72
  24. package/dist/cjs/base/adapters/node/polyfills/stream.js +0 -153
  25. package/dist/cjs/base/constants.js +0 -58
  26. package/dist/cjs/base/index.js +0 -49
  27. package/dist/cjs/base/middlewares/customServer/base.js +0 -154
  28. package/dist/cjs/base/middlewares/customServer/context.js +0 -73
  29. package/dist/cjs/base/middlewares/customServer/index.js +0 -130
  30. package/dist/cjs/base/middlewares/customServer/routerApi.js +0 -44
  31. package/dist/cjs/base/middlewares/customServer/template.js +0 -58
  32. package/dist/cjs/base/middlewares/faviconFallback.js +0 -34
  33. package/dist/cjs/base/middlewares/frameworkHeader.js +0 -31
  34. package/dist/cjs/base/middlewares/index.js +0 -30
  35. package/dist/cjs/base/middlewares/logger.js +0 -77
  36. package/dist/cjs/base/middlewares/monitor.js +0 -90
  37. package/dist/cjs/base/middlewares/renderHandler/dataHandler.js +0 -46
  38. package/dist/cjs/base/middlewares/renderHandler/index.js +0 -106
  39. package/dist/cjs/base/middlewares/renderHandler/render.js +0 -126
  40. package/dist/cjs/base/middlewares/renderHandler/serverTiming.js +0 -40
  41. package/dist/cjs/base/middlewares/renderHandler/ssrCache.js +0 -197
  42. package/dist/cjs/base/middlewares/renderHandler/ssrRender.js +0 -208
  43. package/dist/cjs/base/serverBase.js +0 -203
  44. package/dist/cjs/base/utils/debug.js +0 -29
  45. package/dist/cjs/base/utils/entry.js +0 -30
  46. package/dist/cjs/base/utils/env.js +0 -45
  47. package/dist/cjs/base/utils/error.js +0 -65
  48. package/dist/cjs/base/utils/index.js +0 -34
  49. package/dist/cjs/base/utils/middlewareCollector.js +0 -54
  50. package/dist/cjs/base/utils/request.js +0 -65
  51. package/dist/cjs/base/utils/serverConfig.js +0 -70
  52. package/dist/cjs/base/utils/transformStream.js +0 -61
  53. package/dist/cjs/base/utils/warmup.js +0 -43
  54. package/dist/cjs/core/index.js +0 -22
  55. package/dist/cjs/core/render.js +0 -16
  56. package/dist/cjs/core/server.js +0 -16
  57. package/dist/esm/base/adapters/node/bff.js +0 -128
  58. package/dist/esm/base/adapters/node/hono.js +0 -83
  59. package/dist/esm/base/adapters/node/index.js +0 -19
  60. package/dist/esm/base/adapters/node/loadServer.js +0 -73
  61. package/dist/esm/base/adapters/node/middlewares/index.js +0 -4
  62. package/dist/esm/base/adapters/node/middlewares/mock.js +0 -198
  63. package/dist/esm/base/adapters/node/middlewares/serverManifest.js +0 -132
  64. package/dist/esm/base/adapters/node/middlewares/serverPublic.js +0 -85
  65. package/dist/esm/base/adapters/node/middlewares/serverStatic.js +0 -119
  66. package/dist/esm/base/adapters/node/middlewares/templates.js +0 -114
  67. package/dist/esm/base/adapters/node/node.js +0 -197
  68. package/dist/esm/base/adapters/node/polyfills/index.js +0 -2
  69. package/dist/esm/base/adapters/node/polyfills/install.js +0 -48
  70. package/dist/esm/base/adapters/node/polyfills/stream.js +0 -316
  71. package/dist/esm/base/constants.js +0 -31
  72. package/dist/esm/base/index.js +0 -16
  73. package/dist/esm/base/middlewares/customServer/base.js +0 -182
  74. package/dist/esm/base/middlewares/customServer/context.js +0 -68
  75. package/dist/esm/base/middlewares/customServer/index.js +0 -214
  76. package/dist/esm/base/middlewares/customServer/routerApi.js +0 -26
  77. package/dist/esm/base/middlewares/customServer/template.js +0 -47
  78. package/dist/esm/base/middlewares/faviconFallback.js +0 -28
  79. package/dist/esm/base/middlewares/frameworkHeader.js +0 -27
  80. package/dist/esm/base/middlewares/index.js +0 -5
  81. package/dist/esm/base/middlewares/logger.js +0 -75
  82. package/dist/esm/base/middlewares/monitor.js +0 -157
  83. package/dist/esm/base/middlewares/renderHandler/dataHandler.js +0 -45
  84. package/dist/esm/base/middlewares/renderHandler/index.js +0 -165
  85. package/dist/esm/base/middlewares/renderHandler/render.js +0 -216
  86. package/dist/esm/base/middlewares/renderHandler/serverTiming.js +0 -21
  87. package/dist/esm/base/middlewares/renderHandler/ssrCache.js +0 -306
  88. package/dist/esm/base/middlewares/renderHandler/ssrRender.js +0 -265
  89. package/dist/esm/base/serverBase.js +0 -383
  90. package/dist/esm/base/utils/debug.js +0 -5
  91. package/dist/esm/base/utils/entry.js +0 -6
  92. package/dist/esm/base/utils/env.js +0 -20
  93. package/dist/esm/base/utils/error.js +0 -12
  94. package/dist/esm/base/utils/index.js +0 -7
  95. package/dist/esm/base/utils/middlewareCollector.js +0 -31
  96. package/dist/esm/base/utils/request.js +0 -39
  97. package/dist/esm/base/utils/serverConfig.js +0 -58
  98. package/dist/esm/base/utils/transformStream.js +0 -90
  99. package/dist/esm/base/utils/warmup.js +0 -9
  100. package/dist/esm/core/index.js +0 -1
  101. package/dist/esm/core/loadPlugins.js +0 -26
  102. package/dist/esm/core/plugin.js +0 -59
  103. package/dist/esm/core/render.js +0 -0
  104. package/dist/esm/core/server.js +0 -0
  105. package/dist/esm-node/base/adapters/node/bff.js +0 -46
  106. package/dist/esm-node/base/adapters/node/hono.js +0 -38
  107. package/dist/esm-node/base/adapters/node/index.js +0 -19
  108. package/dist/esm-node/base/adapters/node/loadServer.js +0 -22
  109. package/dist/esm-node/base/adapters/node/middlewares/index.js +0 -4
  110. package/dist/esm-node/base/adapters/node/middlewares/mock.js +0 -79
  111. package/dist/esm-node/base/adapters/node/middlewares/serverManifest.js +0 -48
  112. package/dist/esm-node/base/adapters/node/middlewares/serverPublic.js +0 -33
  113. package/dist/esm-node/base/adapters/node/middlewares/serverStatic.js +0 -75
  114. package/dist/esm-node/base/adapters/node/middlewares/templates.js +0 -32
  115. package/dist/esm-node/base/adapters/node/node.js +0 -101
  116. package/dist/esm-node/base/adapters/node/polyfills/index.js +0 -2
  117. package/dist/esm-node/base/adapters/node/polyfills/install.js +0 -48
  118. package/dist/esm-node/base/adapters/node/polyfills/stream.js +0 -126
  119. package/dist/esm-node/base/constants.js +0 -31
  120. package/dist/esm-node/base/index.js +0 -16
  121. package/dist/esm-node/base/middlewares/customServer/base.js +0 -130
  122. package/dist/esm-node/base/middlewares/customServer/context.js +0 -46
  123. package/dist/esm-node/base/middlewares/customServer/index.js +0 -106
  124. package/dist/esm-node/base/middlewares/customServer/routerApi.js +0 -20
  125. package/dist/esm-node/base/middlewares/customServer/template.js +0 -34
  126. package/dist/esm-node/base/middlewares/faviconFallback.js +0 -10
  127. package/dist/esm-node/base/middlewares/frameworkHeader.js +0 -7
  128. package/dist/esm-node/base/middlewares/index.js +0 -5
  129. package/dist/esm-node/base/middlewares/logger.js +0 -53
  130. package/dist/esm-node/base/middlewares/monitor.js +0 -63
  131. package/dist/esm-node/base/middlewares/renderHandler/dataHandler.js +0 -22
  132. package/dist/esm-node/base/middlewares/renderHandler/index.js +0 -71
  133. package/dist/esm-node/base/middlewares/renderHandler/render.js +0 -102
  134. package/dist/esm-node/base/middlewares/renderHandler/serverTiming.js +0 -16
  135. package/dist/esm-node/base/middlewares/renderHandler/ssrCache.js +0 -162
  136. package/dist/esm-node/base/middlewares/renderHandler/ssrRender.js +0 -173
  137. package/dist/esm-node/base/serverBase.js +0 -168
  138. package/dist/esm-node/base/utils/debug.js +0 -5
  139. package/dist/esm-node/base/utils/entry.js +0 -6
  140. package/dist/esm-node/base/utils/env.js +0 -20
  141. package/dist/esm-node/base/utils/error.js +0 -41
  142. package/dist/esm-node/base/utils/index.js +0 -7
  143. package/dist/esm-node/base/utils/middlewareCollector.js +0 -29
  144. package/dist/esm-node/base/utils/request.js +0 -38
  145. package/dist/esm-node/base/utils/serverConfig.js +0 -34
  146. package/dist/esm-node/base/utils/transformStream.js +0 -36
  147. package/dist/esm-node/base/utils/warmup.js +0 -9
  148. package/dist/esm-node/core/index.js +0 -1
  149. package/dist/esm-node/core/render.js +0 -0
  150. package/dist/esm-node/core/server.js +0 -0
  151. package/dist/esm-node/index.js +0 -5
  152. package/dist/esm-node/types/config/bff.js +0 -0
  153. package/dist/esm-node/types/config/dev.js +0 -0
  154. package/dist/esm-node/types/config/html.js +0 -0
  155. package/dist/esm-node/types/config/index.js +0 -6
  156. package/dist/esm-node/types/config/output.js +0 -0
  157. package/dist/esm-node/types/config/security.js +0 -0
  158. package/dist/esm-node/types/config/server.js +0 -0
  159. package/dist/esm-node/types/config/share.js +0 -0
  160. package/dist/esm-node/types/config/source.js +0 -0
  161. package/dist/esm-node/types/config/tools.js +0 -0
  162. package/dist/types/base/adapters/node/bff.d.ts +0 -3
  163. package/dist/types/base/adapters/node/hono.d.ts +0 -22
  164. package/dist/types/base/adapters/node/index.d.ts +0 -6
  165. package/dist/types/base/adapters/node/loadServer.d.ts +0 -3
  166. package/dist/types/base/adapters/node/middlewares/index.d.ts +0 -4
  167. package/dist/types/base/adapters/node/middlewares/mock.d.ts +0 -5
  168. package/dist/types/base/adapters/node/middlewares/serverManifest.d.ts +0 -3
  169. package/dist/types/base/adapters/node/middlewares/serverPublic.d.ts +0 -7
  170. package/dist/types/base/adapters/node/middlewares/serverStatic.d.ts +0 -11
  171. package/dist/types/base/adapters/node/middlewares/templates.d.ts +0 -4
  172. package/dist/types/base/adapters/node/node.d.ts +0 -13
  173. package/dist/types/base/adapters/node/polyfills/index.d.ts +0 -2
  174. package/dist/types/base/adapters/node/polyfills/install.d.ts +0 -1
  175. package/dist/types/base/adapters/node/polyfills/stream.d.ts +0 -18
  176. package/dist/types/base/constants.d.ts +0 -24
  177. package/dist/types/base/index.d.ts +0 -7
  178. package/dist/types/base/middlewares/customServer/base.d.ts +0 -3
  179. package/dist/types/base/middlewares/customServer/context.d.ts +0 -7
  180. package/dist/types/base/middlewares/customServer/index.d.ts +0 -13
  181. package/dist/types/base/middlewares/customServer/routerApi.d.ts +0 -9
  182. package/dist/types/base/middlewares/customServer/template.d.ts +0 -11
  183. package/dist/types/base/middlewares/faviconFallback.d.ts +0 -2
  184. package/dist/types/base/middlewares/frameworkHeader.d.ts +0 -2
  185. package/dist/types/base/middlewares/index.d.ts +0 -5
  186. package/dist/types/base/middlewares/logger.d.ts +0 -2
  187. package/dist/types/base/middlewares/monitor.d.ts +0 -6
  188. package/dist/types/base/middlewares/renderHandler/dataHandler.d.ts +0 -5
  189. package/dist/types/base/middlewares/renderHandler/index.d.ts +0 -9
  190. package/dist/types/base/middlewares/renderHandler/render.d.ts +0 -12
  191. package/dist/types/base/middlewares/renderHandler/serverTiming.d.ts +0 -7
  192. package/dist/types/base/middlewares/renderHandler/ssrCache.d.ts +0 -28
  193. package/dist/types/base/middlewares/renderHandler/ssrRender.d.ts +0 -20
  194. package/dist/types/base/serverBase.d.ts +0 -70
  195. package/dist/types/base/utils/debug.d.ts +0 -1
  196. package/dist/types/base/utils/entry.d.ts +0 -2
  197. package/dist/types/base/utils/env.d.ts +0 -2
  198. package/dist/types/base/utils/error.d.ts +0 -1
  199. package/dist/types/base/utils/index.d.ts +0 -7
  200. package/dist/types/base/utils/middlewareCollector.d.ts +0 -12
  201. package/dist/types/base/utils/request.d.ts +0 -12
  202. package/dist/types/base/utils/serverConfig.d.ts +0 -14
  203. package/dist/types/base/utils/transformStream.d.ts +0 -5
  204. package/dist/types/base/utils/warmup.d.ts +0 -1
  205. package/dist/types/core/index.d.ts +0 -1
  206. package/dist/types/core/loadPlugins.d.ts +0 -3
  207. package/dist/types/core/plugin.d.ts +0 -202
  208. package/dist/types/core/render.d.ts +0 -15
  209. package/dist/types/core/server.d.ts +0 -44
@@ -1,173 +0,0 @@
1
- import { SERVER_RENDER_FUNCTION_NAME, MAIN_ENTRY_NAME } from "@modern-js/utils/universal/constants";
2
- import * as isbot from "isbot";
3
- import { getRuntimeEnv, parseHeaders, parseQuery, getHost, getPathname } from "../../utils";
4
- import { X_RENDER_CACHE } from "../../constants";
5
- import { ServerTiming } from "./serverTiming";
6
- const defaultReporter = {
7
- init() {
8
- },
9
- reportError() {
10
- },
11
- reportTiming() {
12
- },
13
- reportInfo() {
14
- },
15
- reportWarn() {
16
- }
17
- };
18
- async function ssrRender(request, { routeInfo, html, staticGenerate, nonce, metaName, reporter, logger, nodeReq, serverManifest, locals }) {
19
- var _serverManifest_renderBundles;
20
- const { entryName } = routeInfo;
21
- const loadableStats = serverManifest.loadableStats || {};
22
- const routeManifest = serverManifest.routeManifest || {};
23
- const host = getHost(request);
24
- const isSpider = isbot.default(request.headers.get("user-agent"));
25
- const responseProxy = new ResponseProxy();
26
- const query = parseQuery(request);
27
- const headers = parseHeaders(request);
28
- if (nodeReq) {
29
- for (const key in nodeReq.headers) {
30
- if (!headers[key]) {
31
- headers[key] = nodeReq.headers[key];
32
- }
33
- }
34
- }
35
- const ssrContext = {
36
- request: {
37
- baseUrl: routeInfo.urlPath,
38
- params: {},
39
- pathname: nodeReq ? getPathnameFromNodeReq(nodeReq) : getPathname(request),
40
- host,
41
- query,
42
- url: nodeReq ? getHrefFromNodeReq(nodeReq) : request.url,
43
- headers
44
- },
45
- response: {
46
- setHeader(key, value) {
47
- responseProxy.headers.set(key, value);
48
- },
49
- status(code) {
50
- responseProxy.status = code;
51
- },
52
- locals: locals || {}
53
- },
54
- redirection: {},
55
- template: html,
56
- loadableStats,
57
- routeManifest,
58
- entryName,
59
- staticGenerate,
60
- logger,
61
- serverTiming: new ServerTiming(responseProxy.headers, metaName),
62
- reporter: reporter || defaultReporter,
63
- /** @deprecated node req */
64
- req: nodeReq || request,
65
- /** @deprecated node res */
66
- res: void 0,
67
- isSpider,
68
- nonce
69
- };
70
- const renderBundle = (_serverManifest_renderBundles = serverManifest.renderBundles) === null || _serverManifest_renderBundles === void 0 ? void 0 : _serverManifest_renderBundles[entryName || MAIN_ENTRY_NAME];
71
- if (!renderBundle) {
72
- throw new Error(`Can't found renderBundle ${entryName || MAIN_ENTRY_NAME}`);
73
- }
74
- const runtimeEnv = getRuntimeEnv();
75
- let ssrResult;
76
- let cacheStatus;
77
- const render = renderBundle[SERVER_RENDER_FUNCTION_NAME];
78
- if (runtimeEnv === "node") {
79
- const cacheModuleName = "./ssrCache";
80
- const { ssrCache } = await import(cacheModuleName);
81
- const incomingMessage = nodeReq ? nodeReq : new IncomingMessgeProxy(request);
82
- const cacheControl = await ssrCache.matchCacheControl(incomingMessage);
83
- if (cacheControl) {
84
- const { data: data2, status } = await ssrCache.getCache(request, cacheControl, render, ssrContext);
85
- ssrResult = data2;
86
- cacheStatus = status;
87
- } else {
88
- ssrResult = await render(ssrContext);
89
- }
90
- } else {
91
- ssrResult = await render(ssrContext);
92
- }
93
- const { redirection } = ssrContext;
94
- if (cacheStatus) {
95
- responseProxy.headers.set(X_RENDER_CACHE, cacheStatus);
96
- }
97
- if (redirection.url) {
98
- const { headers: headers2 } = responseProxy;
99
- headers2.set("Location", redirection.url);
100
- return new Response(null, {
101
- status: redirection.status || 302,
102
- headers: {
103
- Location: redirection.url
104
- }
105
- });
106
- }
107
- const { Readable } = await import("stream").catch((_) => ({
108
- Readable: void 0
109
- }));
110
- const streamModule = "../../adapters/node/polyfills/stream";
111
- const { createReadableStreamFromReadable } = runtimeEnv === "node" ? await import(streamModule).catch((_) => ({
112
- createReadableStreamFromReadable: void 0
113
- })) : {
114
- createReadableStreamFromReadable: void 0
115
- };
116
- const data = Readable && ssrResult instanceof Readable ? (createReadableStreamFromReadable === null || createReadableStreamFromReadable === void 0 ? void 0 : createReadableStreamFromReadable(ssrResult)) || "" : ssrResult;
117
- return new Response(data, {
118
- status: responseProxy.status,
119
- headers: responseProxy.headers
120
- });
121
- }
122
- class ResponseProxy {
123
- constructor() {
124
- this.headers = new Headers();
125
- this.status = 200;
126
- this.headers.set("content-type", "text/html; charset=UTF-8");
127
- }
128
- }
129
- class IncomingMessgeProxy {
130
- constructor(req) {
131
- this.headers = {};
132
- req.headers.forEach((value, key) => {
133
- this.headers[key] = value;
134
- });
135
- this.method = req.method;
136
- this.url = getPathname(req);
137
- }
138
- }
139
- function getHrefFromNodeReq(nodeReq) {
140
- function getProtocal() {
141
- if (nodeReq.socket.encrypted) {
142
- return "https";
143
- }
144
- const proto = nodeReq.headers["x-forwarded-proto"];
145
- return proto ? proto.split(/\s*,\s*/, 1)[0] : "http";
146
- }
147
- function getHost2() {
148
- let host = nodeReq.headers["x-forwarded-host"];
149
- if (!host) {
150
- host = nodeReq.headers.host;
151
- }
152
- host = host.split(/\s*,\s*/, 1)[0] || "undefined";
153
- return host;
154
- }
155
- const href = `${getProtocal()}://${getHost2()}${nodeReq.url || ""}`;
156
- return href;
157
- }
158
- function getPathnameFromNodeReq(nodeReq) {
159
- const { url } = nodeReq;
160
- if (!url) {
161
- return "/";
162
- }
163
- const match = url.match(/\/[^?]*/);
164
- let pathname = match ? match[0] : "/";
165
- if (pathname !== "/" && pathname.endsWith("/")) {
166
- pathname = pathname.slice(0, -1);
167
- }
168
- return pathname;
169
- }
170
- export {
171
- getPathnameFromNodeReq,
172
- ssrRender
173
- };
@@ -1,168 +0,0 @@
1
- import { INTERNAL_SERVER_PLUGINS } from "@modern-js/utils/universal/constants";
2
- import { Hono } from "hono";
3
- import { AppContext, ConfigContext, serverManager, createPlugin } from "../core";
4
- import { getRuntimeEnv } from "./utils";
5
- class ServerBase {
6
- /**
7
- * 初始化顺序
8
- * - 获取 server runtime config
9
- * - 设置 context
10
- * - 创建 hooksRunner
11
- * - 合并插件,内置插件和 serverConfig 中配置的插件
12
- * - 执行 config hook
13
- * - 获取最终的配置
14
- * - 设置配置到 context
15
- * - 执行 prepare hook
16
- */
17
- async init() {
18
- const { options } = this;
19
- const runtimeEnv = getRuntimeEnv();
20
- runtimeEnv === "node" && await this.initServerConfig(options);
21
- await this.injectContext(options);
22
- this.runner = await this.createHookRunner();
23
- runtimeEnv === "node" && await this.initConfig(this.runner, options);
24
- await this.injectContext(options);
25
- await this.runner.prepare();
26
- return this;
27
- }
28
- async createHookRunner() {
29
- serverManager.clear();
30
- const runtimeEnv = getRuntimeEnv();
31
- const internalPlugins = runtimeEnv === "node" ? await this.loadInternalPlugins() : [];
32
- const externalPlugins = this.loadExternalPlugins();
33
- const loadedPlugins = [
34
- ...internalPlugins,
35
- ...externalPlugins
36
- ];
37
- loadedPlugins.forEach((p) => {
38
- serverManager.usePlugin(p);
39
- });
40
- const hooksRunner = await serverManager.init();
41
- return hooksRunner;
42
- }
43
- async loadInternalPlugins() {
44
- const { internalPlugins: plugins = INTERNAL_SERVER_PLUGINS, appContext, pwd } = this.options;
45
- const loadPluginsModule = "../core/loadPlugins";
46
- const { loadPlugins } = await import(loadPluginsModule);
47
- const internalPlugins = loadPlugins(appContext.appDirectory || pwd, plugins);
48
- return internalPlugins;
49
- }
50
- loadExternalPlugins() {
51
- const { plugins = [] } = this.options;
52
- const configPlugins = this.serverConfig.plugins || [];
53
- const externalPlugins = [
54
- ...plugins,
55
- ...configPlugins
56
- ];
57
- return externalPlugins.map((plugin) => createPlugin(plugin.setup, plugin));
58
- }
59
- async initServerConfig(options) {
60
- const { pwd, serverConfigFile } = options;
61
- const utilsModuleName = "./utils/serverConfig";
62
- const { getServerConfigPath, requireConfig } = await import(utilsModuleName);
63
- const serverConfigPath = await getServerConfigPath(pwd, serverConfigFile);
64
- const serverConfig = requireConfig(serverConfigPath);
65
- this.serverConfig = serverConfig;
66
- }
67
- async injectContext(options) {
68
- const appContext = await this.initAppContext();
69
- const { config, pwd } = options;
70
- ConfigContext.set(config);
71
- AppContext.set({
72
- ...appContext,
73
- serverBase: this,
74
- distDirectory: pwd
75
- });
76
- }
77
- async initAppContext() {
78
- const { options } = this;
79
- const { pwd, plugins = [], appContext } = options;
80
- const serverPlugins = plugins.map((p) => ({
81
- server: p
82
- }));
83
- return {
84
- appDirectory: (appContext === null || appContext === void 0 ? void 0 : appContext.appDirectory) || "",
85
- apiDirectory: appContext === null || appContext === void 0 ? void 0 : appContext.apiDirectory,
86
- lambdaDirectory: appContext === null || appContext === void 0 ? void 0 : appContext.lambdaDirectory,
87
- sharedDirectory: appContext.sharedDirectory || "",
88
- distDirectory: pwd,
89
- plugins: serverPlugins
90
- };
91
- }
92
- /**
93
- * Execute config hooks
94
- * @param runner
95
- * @param options
96
- */
97
- runConfigHook(runner, serverConfig) {
98
- const newServerConfig = runner.config(serverConfig || {});
99
- return newServerConfig;
100
- }
101
- async initConfig(runner, options) {
102
- const path = await import("path").catch((_) => {
103
- return {};
104
- });
105
- const utilsModuleName = "@modern-js/utils";
106
- const { ensureAbsolutePath, OUTPUT_CONFIG_FILE } = await import(utilsModuleName);
107
- const configModuleName = "./utils/serverConfig";
108
- const { loadConfig } = await import(configModuleName);
109
- const { pwd, config } = options;
110
- const { serverConfig } = this;
111
- const finalServerConfig = this.runConfigHook(runner, serverConfig);
112
- const resolvedConfigPath = ensureAbsolutePath(pwd, path.join(config.output.path || "dist", OUTPUT_CONFIG_FILE));
113
- options.config = loadConfig({
114
- cliConfig: config,
115
- serverConfig: finalServerConfig,
116
- resolvedConfigPath
117
- });
118
- }
119
- get all() {
120
- return this.app.all.bind(this.app);
121
- }
122
- get use() {
123
- return this.app.use.bind(this.app);
124
- }
125
- get get() {
126
- return this.app.get.bind(this.app);
127
- }
128
- get post() {
129
- return this.app.post.bind(this.app);
130
- }
131
- get put() {
132
- return this.app.put.bind(this.app);
133
- }
134
- get delete() {
135
- return this.app.delete.bind(this.app);
136
- }
137
- get patch() {
138
- return this.app.patch.bind(this.app);
139
- }
140
- get handle() {
141
- return this.app.fetch.bind(this.app);
142
- }
143
- get request() {
144
- return this.app.request.bind(this.app);
145
- }
146
- get notFound() {
147
- return this.app.notFound.bind(this.app);
148
- }
149
- get onError() {
150
- return this.app.onError.bind(this.app);
151
- }
152
- constructor(options) {
153
- this.serverConfig = {};
154
- this.options = options;
155
- this.app = new Hono();
156
- }
157
- }
158
- function createServerBase(options) {
159
- if (options == null) {
160
- throw new Error("can not start server without options");
161
- }
162
- const server = new ServerBase(options);
163
- return server;
164
- }
165
- export {
166
- ServerBase,
167
- createServerBase
168
- };
@@ -1,5 +0,0 @@
1
- import { createDebugger } from "@modern-js/utils";
2
- const debug = createDebugger("prod-server");
3
- export {
4
- debug
5
- };
@@ -1,6 +0,0 @@
1
- const sortRoutes = (route1, route2) => {
2
- return route2.urlPath.length - route1.urlPath.length;
3
- };
4
- export {
5
- sortRoutes
6
- };
@@ -1,20 +0,0 @@
1
- const getRuntimeEnv = () => {
2
- var _globalThis_process_release, _globalThis_process, _globalThis;
3
- if (((_globalThis = globalThis) === null || _globalThis === void 0 ? void 0 : (_globalThis_process = _globalThis.process) === null || _globalThis_process === void 0 ? void 0 : (_globalThis_process_release = _globalThis_process.release) === null || _globalThis_process_release === void 0 ? void 0 : _globalThis_process_release.name) === "node") {
4
- return "node";
5
- }
6
- return "other";
7
- };
8
- const checkIsProd = () => {
9
- const env = getRuntimeEnv();
10
- switch (env) {
11
- case "node":
12
- return process.env.NODE_ENV === "production";
13
- default:
14
- return false;
15
- }
16
- };
17
- export {
18
- checkIsProd,
19
- getRuntimeEnv
20
- };
@@ -1,41 +0,0 @@
1
- const ERROR_PAGE_TEXT = {
2
- 404: "This page could not be found.",
3
- 500: "Internal Server Error."
4
- };
5
- const createErrorHtml = (status) => {
6
- const text = ERROR_PAGE_TEXT[status] || "";
7
- const title = `${status}: ${text}`;
8
- return `<!DOCTYPE html>
9
- <html lang="en">
10
- <head>
11
- <meta charset="utf-8">
12
- <meta name="viewport" content="width=device-width">
13
- <title>${title}</title>
14
- <style>
15
- html,body {
16
- margin: 0;
17
- }
18
-
19
- .page-container {
20
- color: #000;
21
- background: #fff;
22
- height: 100vh;
23
- text-align: center;
24
- display: flex;
25
- flex-direction: column;
26
- align-items: center;
27
- justify-content: center;
28
- }
29
- </style>
30
- </head>
31
- <body>
32
- <div class="page-container">
33
- <h1>${status}</h1>
34
- <div>${text}</div>
35
- </body>
36
- </html>
37
- `;
38
- };
39
- export {
40
- createErrorHtml
41
- };
@@ -1,7 +0,0 @@
1
- export * from "./env";
2
- export * from "./request";
3
- export * from "./transformStream";
4
- export * from "./middlewareCollector";
5
- export * from "./error";
6
- export * from "./warmup";
7
- export * from "./entry";
@@ -1,29 +0,0 @@
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 {
27
- createMiddlewareCollecter,
28
- mergeExtension
29
- };
@@ -1,38 +0,0 @@
1
- function parseQuery(request) {
2
- const { url } = request;
3
- const q = url.split("?")[1];
4
- const query = {};
5
- if (q) {
6
- q.split("&").forEach((item) => {
7
- const [key, value] = item.split("=");
8
- query[key] = value;
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) {
28
- host = headers.get("Host");
29
- }
30
- host = (host === null || host === void 0 ? void 0 : host.split(/\s*,\s*/, 1)[0]) || "undefined";
31
- return host;
32
- }
33
- export {
34
- getHost,
35
- getPathname,
36
- parseHeaders,
37
- parseQuery
38
- };
@@ -1,34 +0,0 @@
1
- import { compatRequire, fs, DEFAULT_SERVER_CONFIG } from "@modern-js/utils";
2
- import mergeDeep from "merge-deep";
3
- const getServerConfigPath = async (distDirectory, serverConfigFile = DEFAULT_SERVER_CONFIG) => {
4
- const path = await import("path");
5
- const serverConfigPath = path.join(distDirectory, serverConfigFile);
6
- return `${serverConfigPath}.js`;
7
- };
8
- const requireConfig = (serverConfigPath) => {
9
- if (fs.pathExistsSync(serverConfigPath)) {
10
- return compatRequire(serverConfigPath);
11
- }
12
- return {};
13
- };
14
- const loadConfig = ({ cliConfig, serverConfig, resolvedConfigPath }) => {
15
- let config = null;
16
- if (process.env.NODE_ENV === "production") {
17
- const resolvedConfig = requireConfig(resolvedConfigPath);
18
- config = mergeDeep({
19
- ...resolvedConfig,
20
- plugins: []
21
- }, serverConfig, cliConfig);
22
- } else {
23
- config = mergeDeep({
24
- ...cliConfig,
25
- plugins: []
26
- }, serverConfig);
27
- }
28
- return config;
29
- };
30
- export {
31
- getServerConfigPath,
32
- loadConfig,
33
- requireConfig
34
- };
@@ -1,36 +0,0 @@
1
- function createTransformStream(fn) {
2
- const decoder = new TextDecoder();
3
- const encoder = new TextEncoder();
4
- return new TransformStream({
5
- async transform(chunk, controller) {
6
- const content = decoder.decode(chunk);
7
- const newContent = await fn(content);
8
- controller.enqueue(encoder.encode(newContent));
9
- }
10
- });
11
- }
12
- function transformResponse(response, transformCb) {
13
- let readable = null;
14
- if (response.body) {
15
- const stream = createTransformStream(async (before) => {
16
- if (Array.isArray(transformCb)) {
17
- return transformCb.reduce(async (before2, cb) => {
18
- return cb(await before2);
19
- }, Promise.resolve(before));
20
- } else {
21
- return transformCb(before);
22
- }
23
- });
24
- response.body.pipeThrough(stream);
25
- readable = stream.readable;
26
- }
27
- return new Response(readable, {
28
- status: response.status,
29
- headers: response.headers,
30
- statusText: response.statusText
31
- });
32
- }
33
- export {
34
- createTransformStream,
35
- transformResponse
36
- };
@@ -1,9 +0,0 @@
1
- function warmup(bundles) {
2
- bundles.forEach((bundle) => {
3
- bundle && import(bundle).catch((_) => {
4
- });
5
- });
6
- }
7
- export {
8
- warmup
9
- };
@@ -1 +0,0 @@
1
- export * from "./plugin";
File without changes
File without changes
@@ -1,5 +0,0 @@
1
- export * from "./core/plugin";
2
- export * from "./core/render";
3
- export * from "@modern-js/plugin";
4
- export * from "./core/loadPlugins";
5
- export * from "./types/config";
File without changes
File without changes
File without changes
@@ -1,6 +0,0 @@
1
- export * from "./bff";
2
- export * from "./html";
3
- export * from "./output";
4
- export * from "./server";
5
- export * from "./source";
6
- export * from "./tools";
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,3 +0,0 @@
1
- import { BindRenderHandleOptions } from '../../../base/middlewares';
2
- import { ServerBase, type ServerBaseOptions } from '../../serverBase';
3
- export declare const bindBFFHandler: (server: ServerBase, options: ServerBaseOptions & BindRenderHandleOptions) => Promise<void>;
@@ -1,22 +0,0 @@
1
- import { NodeRequest, NodeResponse } from '../../../core/plugin';
2
- import { Context, HonoRequest, ServerEnv, Middleware, Next, ServerManifest } from '../../../core/server';
3
- type NodeBindings = {
4
- node: {
5
- req: NodeRequest & {
6
- __honoRequest: HonoRequest;
7
- __templates: Record<string, string>;
8
- __serverManifest: ServerManifest;
9
- };
10
- res: NodeResponse;
11
- };
12
- };
13
- export type ServerNodeEnv = {
14
- Bindings: NodeBindings;
15
- };
16
- export type ServerNodeMiddleware = Middleware<ServerNodeEnv>;
17
- export type ServerNodeContext = Context<ServerNodeEnv>;
18
- type Handler = (req: NodeRequest, res: NodeResponse) => void | Promise<void>;
19
- export declare const httpCallBack2HonoMid: (handler: Handler) => (context: Context<ServerNodeEnv & ServerEnv>, next: Next) => Promise<void>;
20
- type ConnectMiddleware = ((req: NodeRequest, res: NodeResponse, callback: (...args: unknown[]) => void) => void) | ((req: NodeRequest, res: NodeResponse) => void);
21
- export declare const connectMid2HonoMid: (handler: ConnectMiddleware) => Middleware;
22
- export {};
@@ -1,6 +0,0 @@
1
- export { loadServerEnv } from './loadServer';
2
- export { httpCallBack2HonoMid, connectMid2HonoMid } from './hono';
3
- export type { ServerNodeContext, ServerNodeMiddleware } from './hono';
4
- export { createNodeServer, sendResponse, createWebRequest } from './node';
5
- export { bindBFFHandler } from './bff';
6
- export { createStaticMiddleware, registerMockHandlers, injectServerManifest, injectTemplates, getHtmlTemplates, } from './middlewares';
@@ -1,3 +0,0 @@
1
- import type { ServerBaseOptions } from '../../serverBase';
2
- /** 读取 .env.{process.env.MODERN_ENV} 文件,加载环境变量 */
3
- export declare function loadServerEnv(options: ServerBaseOptions): Promise<void>;
@@ -1,4 +0,0 @@
1
- export * from './mock';
2
- export * from './serverStatic';
3
- export * from './templates';
4
- export * from './serverManifest';
@@ -1,5 +0,0 @@
1
- import type { ServerBase } from '../../../serverBase';
2
- export declare const registerMockHandlers: ({ pwd, server, }: {
3
- pwd: string;
4
- server: ServerBase;
5
- }) => Promise<null | undefined>;