@modern-js/prod-server 2.48.6 → 2.49.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 (174) hide show
  1. package/README.md +20 -16
  2. package/dist/cjs/{libs/route/route.js → error.js} +16 -17
  3. package/dist/cjs/index.js +18 -24
  4. package/dist/cjs/init.js +71 -0
  5. package/dist/cjs/{type.js → types.js} +2 -2
  6. package/dist/esm/error.js +15 -0
  7. package/dist/esm/index.js +53 -19
  8. package/dist/esm/init.js +73 -0
  9. package/dist/esm-node/error.js +14 -0
  10. package/dist/esm-node/index.js +16 -17
  11. package/dist/esm-node/init.js +47 -0
  12. package/dist/types/error.d.ts +6 -0
  13. package/dist/types/index.d.ts +8 -11
  14. package/dist/types/init.d.ts +4 -0
  15. package/dist/types/types.d.ts +14 -0
  16. package/package.json +23 -64
  17. package/dist/cjs/constants.js +0 -72
  18. package/dist/cjs/libs/context/context.js +0 -236
  19. package/dist/cjs/libs/context/index.js +0 -31
  20. package/dist/cjs/libs/hook-api/afterRenderForStream.js +0 -34
  21. package/dist/cjs/libs/hook-api/base.js +0 -96
  22. package/dist/cjs/libs/hook-api/index.js +0 -85
  23. package/dist/cjs/libs/hook-api/index.worker.js +0 -116
  24. package/dist/cjs/libs/hook-api/route.js +0 -44
  25. package/dist/cjs/libs/hook-api/template.js +0 -72
  26. package/dist/cjs/libs/hook-api/templateForStream.js +0 -52
  27. package/dist/cjs/libs/loadConfig.js +0 -70
  28. package/dist/cjs/libs/metrics.js +0 -33
  29. package/dist/cjs/libs/preload/flushServerHeader.js +0 -49
  30. package/dist/cjs/libs/preload/index.js +0 -24
  31. package/dist/cjs/libs/preload/parseLinks.js +0 -124
  32. package/dist/cjs/libs/preload/shouldFlushServerHeader.js +0 -52
  33. package/dist/cjs/libs/preload/transformLinks2String.js +0 -150
  34. package/dist/cjs/libs/proxy.js +0 -99
  35. package/dist/cjs/libs/render/index.js +0 -109
  36. package/dist/cjs/libs/render/measure.js +0 -74
  37. package/dist/cjs/libs/render/ssr.js +0 -130
  38. package/dist/cjs/libs/render/ssrCache/cacheMod.js +0 -51
  39. package/dist/cjs/libs/render/ssrCache/index.js +0 -90
  40. package/dist/cjs/libs/render/ssrCache/manager.js +0 -120
  41. package/dist/cjs/libs/render/static.js +0 -72
  42. package/dist/cjs/libs/render/type.js +0 -33
  43. package/dist/cjs/libs/render/utils.js +0 -41
  44. package/dist/cjs/libs/reporter.js +0 -39
  45. package/dist/cjs/libs/route/index.js +0 -83
  46. package/dist/cjs/libs/route/matcher.js +0 -113
  47. package/dist/cjs/libs/serveFile.js +0 -84
  48. package/dist/cjs/libs/serverTiming.js +0 -41
  49. package/dist/cjs/renderHtml.js +0 -65
  50. package/dist/cjs/server/index.js +0 -223
  51. package/dist/cjs/server/modernServer.js +0 -522
  52. package/dist/cjs/server/modernServerSplit.js +0 -67
  53. package/dist/cjs/utils.js +0 -164
  54. package/dist/cjs/workerServer.js +0 -260
  55. package/dist/esm/constants.js +0 -43
  56. package/dist/esm/libs/context/context.js +0 -260
  57. package/dist/esm/libs/context/index.js +0 -8
  58. package/dist/esm/libs/hook-api/afterRenderForStream.js +0 -33
  59. package/dist/esm/libs/hook-api/base.js +0 -73
  60. package/dist/esm/libs/hook-api/index.js +0 -55
  61. package/dist/esm/libs/hook-api/index.worker.js +0 -99
  62. package/dist/esm/libs/hook-api/route.js +0 -26
  63. package/dist/esm/libs/hook-api/template.js +0 -56
  64. package/dist/esm/libs/hook-api/templateForStream.js +0 -35
  65. package/dist/esm/libs/loadConfig.js +0 -36
  66. package/dist/esm/libs/metrics.js +0 -9
  67. package/dist/esm/libs/preload/flushServerHeader.js +0 -50
  68. package/dist/esm/libs/preload/index.js +0 -2
  69. package/dist/esm/libs/preload/parseLinks.js +0 -172
  70. package/dist/esm/libs/preload/shouldFlushServerHeader.js +0 -27
  71. package/dist/esm/libs/preload/transformLinks2String.js +0 -140
  72. package/dist/esm/libs/proxy.js +0 -160
  73. package/dist/esm/libs/render/index.js +0 -175
  74. package/dist/esm/libs/render/measure.js +0 -69
  75. package/dist/esm/libs/render/ssr.js +0 -133
  76. package/dist/esm/libs/render/ssrCache/cacheMod.js +0 -25
  77. package/dist/esm/libs/render/ssrCache/index.js +0 -170
  78. package/dist/esm/libs/render/ssrCache/manager.js +0 -178
  79. package/dist/esm/libs/render/static.js +0 -100
  80. package/dist/esm/libs/render/type.js +0 -9
  81. package/dist/esm/libs/render/utils.js +0 -16
  82. package/dist/esm/libs/reporter.js +0 -15
  83. package/dist/esm/libs/route/index.js +0 -82
  84. package/dist/esm/libs/route/matcher.js +0 -92
  85. package/dist/esm/libs/route/route.js +0 -17
  86. package/dist/esm/libs/serveFile.js +0 -68
  87. package/dist/esm/libs/serverTiming.js +0 -22
  88. package/dist/esm/renderHtml.js +0 -133
  89. package/dist/esm/server/index.js +0 -350
  90. package/dist/esm/server/modernServer.js +0 -884
  91. package/dist/esm/server/modernServerSplit.js +0 -113
  92. package/dist/esm/utils.js +0 -103
  93. package/dist/esm/workerServer.js +0 -352
  94. package/dist/esm-node/constants.js +0 -43
  95. package/dist/esm-node/libs/context/context.js +0 -202
  96. package/dist/esm-node/libs/context/index.js +0 -6
  97. package/dist/esm-node/libs/hook-api/afterRenderForStream.js +0 -10
  98. package/dist/esm-node/libs/hook-api/base.js +0 -61
  99. package/dist/esm-node/libs/hook-api/index.js +0 -57
  100. package/dist/esm-node/libs/hook-api/index.worker.js +0 -89
  101. package/dist/esm-node/libs/hook-api/route.js +0 -20
  102. package/dist/esm-node/libs/hook-api/template.js +0 -47
  103. package/dist/esm-node/libs/hook-api/templateForStream.js +0 -28
  104. package/dist/esm-node/libs/loadConfig.js +0 -34
  105. package/dist/esm-node/libs/metrics.js +0 -9
  106. package/dist/esm-node/libs/preload/flushServerHeader.js +0 -25
  107. package/dist/esm-node/libs/preload/index.js +0 -2
  108. package/dist/esm-node/libs/preload/parseLinks.js +0 -90
  109. package/dist/esm-node/libs/preload/shouldFlushServerHeader.js +0 -27
  110. package/dist/esm-node/libs/preload/transformLinks2String.js +0 -126
  111. package/dist/esm-node/libs/proxy.js +0 -74
  112. package/dist/esm-node/libs/render/index.js +0 -75
  113. package/dist/esm-node/libs/render/measure.js +0 -49
  114. package/dist/esm-node/libs/render/ssr.js +0 -96
  115. package/dist/esm-node/libs/render/ssrCache/cacheMod.js +0 -17
  116. package/dist/esm-node/libs/render/ssrCache/index.js +0 -66
  117. package/dist/esm-node/libs/render/ssrCache/manager.js +0 -96
  118. package/dist/esm-node/libs/render/static.js +0 -38
  119. package/dist/esm-node/libs/render/type.js +0 -9
  120. package/dist/esm-node/libs/render/utils.js +0 -16
  121. package/dist/esm-node/libs/reporter.js +0 -15
  122. package/dist/esm-node/libs/route/index.js +0 -58
  123. package/dist/esm-node/libs/route/matcher.js +0 -89
  124. package/dist/esm-node/libs/route/route.js +0 -16
  125. package/dist/esm-node/libs/serveFile.js +0 -49
  126. package/dist/esm-node/libs/serverTiming.js +0 -17
  127. package/dist/esm-node/renderHtml.js +0 -73
  128. package/dist/esm-node/server/index.js +0 -189
  129. package/dist/esm-node/server/modernServer.js +0 -488
  130. package/dist/esm-node/server/modernServerSplit.js +0 -43
  131. package/dist/esm-node/utils.js +0 -132
  132. package/dist/esm-node/workerServer.js +0 -235
  133. package/dist/types/constants.d.ts +0 -30
  134. package/dist/types/libs/context/context.d.ts +0 -62
  135. package/dist/types/libs/context/index.d.ts +0 -7
  136. package/dist/types/libs/hook-api/afterRenderForStream.d.ts +0 -4
  137. package/dist/types/libs/hook-api/base.d.ts +0 -53
  138. package/dist/types/libs/hook-api/index.d.ts +0 -6
  139. package/dist/types/libs/hook-api/index.worker.d.ts +0 -19
  140. package/dist/types/libs/hook-api/route.d.ts +0 -9
  141. package/dist/types/libs/hook-api/template.d.ts +0 -22
  142. package/dist/types/libs/hook-api/templateForStream.d.ts +0 -8
  143. package/dist/types/libs/loadConfig.d.ts +0 -13
  144. package/dist/types/libs/metrics.d.ts +0 -3
  145. package/dist/types/libs/preload/flushServerHeader.d.ts +0 -14
  146. package/dist/types/libs/preload/index.d.ts +0 -2
  147. package/dist/types/libs/preload/parseLinks.d.ts +0 -13
  148. package/dist/types/libs/preload/shouldFlushServerHeader.d.ts +0 -3
  149. package/dist/types/libs/preload/transformLinks2String.d.ts +0 -3
  150. package/dist/types/libs/proxy.d.ts +0 -13
  151. package/dist/types/libs/render/index.d.ts +0 -21
  152. package/dist/types/libs/render/measure.d.ts +0 -10
  153. package/dist/types/libs/render/ssr.d.ts +0 -12
  154. package/dist/types/libs/render/ssrCache/cacheMod.d.ts +0 -8
  155. package/dist/types/libs/render/ssrCache/index.d.ts +0 -6
  156. package/dist/types/libs/render/ssrCache/manager.d.ts +0 -20
  157. package/dist/types/libs/render/static.d.ts +0 -3
  158. package/dist/types/libs/render/type.d.ts +0 -36
  159. package/dist/types/libs/render/utils.d.ts +0 -5
  160. package/dist/types/libs/reporter.d.ts +0 -2
  161. package/dist/types/libs/route/index.d.ts +0 -15
  162. package/dist/types/libs/route/matcher.d.ts +0 -15
  163. package/dist/types/libs/route/route.d.ts +0 -14
  164. package/dist/types/libs/serveFile.d.ts +0 -9
  165. package/dist/types/libs/serverTiming.d.ts +0 -13
  166. package/dist/types/renderHtml.d.ts +0 -23
  167. package/dist/types/server/index.d.ts +0 -55
  168. package/dist/types/server/modernServer.d.ts +0 -71
  169. package/dist/types/server/modernServerSplit.d.ts +0 -2
  170. package/dist/types/type.d.ts +0 -78
  171. package/dist/types/utils.d.ts +0 -24
  172. package/dist/types/workerServer.d.ts +0 -59
  173. /package/dist/esm/{type.js → types.js} +0 -0
  174. /package/dist/esm-node/{type.js → types.js} +0 -0
@@ -1,235 +0,0 @@
1
- import { createAsyncPipeline } from "@modern-js/plugin";
2
- import { createAfterMatchContext, createAfterRenderContext, createMiddlewareContext } from "./libs/hook-api/index.worker";
3
- import { RouteMatchManager } from "./libs/route";
4
- import { metrics as defaultMetrics } from "./libs/metrics";
5
- import { defaultReporter } from "./libs/reporter";
6
- const createLogger = () => ({
7
- error(message, ...args) {
8
- console.error(message, ...args);
9
- },
10
- info(message, ...args) {
11
- console.error(message, ...args);
12
- },
13
- warn(message, ...args) {
14
- console.warn(message, ...args);
15
- },
16
- debug(message, ...args) {
17
- console.debug(message, ...args);
18
- }
19
- });
20
- const calcFallback = (metaName) => `x-${metaName.split(/[-_]/)[0]}-ssr-fallback`;
21
- class ReturnResponse {
22
- /**
23
- * Iterate a Object
24
- * 1. adds the value if the key does not already exist.
25
- * 2. append the value if the key does already exist.
26
- *
27
- * more detail follow: https://developer.mozilla.org/en-US/docs/Web/API/Headers/append
28
- * @param headers
29
- * @returns
30
- */
31
- appendHeaders(headers) {
32
- Object.entries(headers).forEach(([key, value]) => {
33
- this.headers.append(key, value.toString());
34
- });
35
- return this;
36
- }
37
- /**
38
- * Iterate a Object
39
- * 1. adds the value if the key does not already exist.
40
- * 2. modify the value if the key does already exist.
41
- *
42
- * more detail follow: https://developer.mozilla.org/en-US/docs/Web/API/Headers/set
43
- * @param headers
44
- * @returns
45
- */
46
- setHeaders(headers) {
47
- Object.entries(headers).forEach(([key, value]) => {
48
- this.headers.set(key, value.toString());
49
- });
50
- return this;
51
- }
52
- constructor(body, status, headers = {}) {
53
- this.body = body;
54
- this.status = status;
55
- this.headers = new Headers(headers);
56
- this.headers.set("content-type", "text/html;charset=UTF-8");
57
- }
58
- }
59
- const RESPONSE_NOTFOUND = new ReturnResponse("404: Page not found", 404);
60
- const isRedirect = (code) => {
61
- return [
62
- 301,
63
- 302,
64
- 307,
65
- 308
66
- ].includes(code);
67
- };
68
- const checkIsSent = (context) => {
69
- if (context.res.isSent) {
70
- return true;
71
- }
72
- if (context.res.headers.get("Location") && isRedirect(context.res.status)) {
73
- return true;
74
- }
75
- return false;
76
- };
77
- const middlewarePipeline = createAsyncPipeline();
78
- const createHandler = (manifest) => {
79
- const routeMgr = new RouteMatchManager();
80
- const { pages, routes, options: manifestOpts } = manifest;
81
- const { metaName = "modern-js", forceCSR = false } = manifestOpts || {};
82
- routeMgr.reset(routes);
83
- return async (options) => {
84
- var _page_serverHooks_afterMatch, _page_serverHooks;
85
- const { request, loadableStats, routeManifest } = options;
86
- const url = new URL(request.url);
87
- const pageMatch = routeMgr.match(url.pathname);
88
- if (!pageMatch) {
89
- return RESPONSE_NOTFOUND;
90
- }
91
- const entryName = pageMatch.spec.urlPath;
92
- const page = pages[entryName];
93
- if (forceCSR && url.searchParams.get("csr") === "1") {
94
- return createResponse(page.template);
95
- }
96
- const logger = createLogger();
97
- const metrics = defaultMetrics;
98
- const reporter = defaultReporter;
99
- const route = pageMatch.generate(url.pathname);
100
- const hookContext = createWorkerHookContext(request.url, logger, metrics, reporter);
101
- const afterMatchHookContext = createAfterMatchContext(hookContext, entryName);
102
- await (page === null || page === void 0 ? void 0 : (_page_serverHooks = page.serverHooks) === null || _page_serverHooks === void 0 ? void 0 : (_page_serverHooks_afterMatch = _page_serverHooks.afterMatch) === null || _page_serverHooks_afterMatch === void 0 ? void 0 : _page_serverHooks_afterMatch.call(_page_serverHooks, afterMatchHookContext, () => void 0));
103
- if (checkIsSent(hookContext)) {
104
- return new ReturnResponse(hookContext.res.body || "Unkown body", hookContext.res.status, hookContext.res.headers);
105
- }
106
- if (page.serverRender) {
107
- try {
108
- var _page_serverHooks1, _page_serverHooks_afterRender, _page_serverHooks2;
109
- const middlewarsHookContext = createMiddlewareContext(hookContext);
110
- applyMiddlewares(middlewarsHookContext, (_page_serverHooks1 = page.serverHooks) === null || _page_serverHooks1 === void 0 ? void 0 : _page_serverHooks1.middleware);
111
- if (checkIsSent(hookContext)) {
112
- return new ReturnResponse(hookContext.res.body || "Unkown body", hookContext.res.status, hookContext.res.headers);
113
- }
114
- if (forceCSR && middlewarsHookContext.request.headers[calcFallback(metaName)]) {
115
- return createResponse(page.template);
116
- }
117
- const responseLike = {
118
- headers: {},
119
- statusCode: 200,
120
- locals: {},
121
- setHeader(key, value) {
122
- this.headers[key] = value;
123
- },
124
- status(code) {
125
- this.statusCode = code;
126
- }
127
- };
128
- const params = pageMatch.parseURLParams(url.pathname) || {};
129
- const { urlPath: baseUrl } = pageMatch;
130
- const serverRenderContext = {
131
- request: createServerRequest(url, baseUrl, request, params),
132
- response: responseLike,
133
- loadableStats,
134
- routeManifest,
135
- redirection: {},
136
- template: page.template,
137
- entryName: page.entryName,
138
- logger,
139
- reporter: defaultReporter,
140
- metrics,
141
- req: request,
142
- res: responseLike,
143
- serverTiming: {
144
- addServeTiming() {
145
- return this;
146
- }
147
- }
148
- };
149
- const body = await page.serverRender(serverRenderContext);
150
- const afterRenderHookContext = createAfterRenderContext(hookContext, route, body);
151
- await ((_page_serverHooks2 = page.serverHooks) === null || _page_serverHooks2 === void 0 ? void 0 : (_page_serverHooks_afterRender = _page_serverHooks2.afterRender) === null || _page_serverHooks_afterRender === void 0 ? void 0 : _page_serverHooks_afterRender.call(_page_serverHooks2, afterRenderHookContext, () => void 0));
152
- if (checkIsSent(hookContext)) {
153
- return new ReturnResponse(hookContext.res.body || "Unkown body", hookContext.res.status, hookContext.res.headers);
154
- }
155
- return new ReturnResponse(afterRenderHookContext.template.get(), responseLike.statusCode, responseLike.headers);
156
- } catch (e) {
157
- console.warn(`page(${pageMatch.spec.urlPath}) serverRender occur error: `);
158
- console.warn(e);
159
- return createResponse(page.template);
160
- }
161
- }
162
- console.warn(`Can't not page(${entryName}) serverRender`);
163
- return createResponse(page.template);
164
- function createServerRequest(url2, baseUrl, request2, params) {
165
- const { pathname, host, searchParams } = url2;
166
- const { headers: rawHeaders } = request2;
167
- const headers = {};
168
- rawHeaders.forEach((value, key) => {
169
- headers[key] = value;
170
- });
171
- const query = Object.fromEntries(searchParams);
172
- return {
173
- url: url2.href,
174
- baseUrl,
175
- pathname,
176
- host,
177
- headers,
178
- params,
179
- query
180
- };
181
- }
182
- };
183
- };
184
- function createResponse(template) {
185
- if (template) {
186
- return new ReturnResponse(template, 200);
187
- } else {
188
- return RESPONSE_NOTFOUND;
189
- }
190
- }
191
- function createWorkerHookContext(url, logger, metrics, reporter) {
192
- const [res, req] = [
193
- {
194
- headers: new Headers(),
195
- body: "",
196
- status: 200,
197
- isSent: false
198
- },
199
- new Request(url)
200
- ];
201
- return {
202
- res,
203
- req,
204
- logger,
205
- metrics,
206
- reporter
207
- };
208
- }
209
- let appliedMiddlewares = false;
210
- async function applyMiddlewares(ctx, middleware) {
211
- if (middleware) {
212
- const middlewares = (() => {
213
- if (Array.isArray(middleware)) {
214
- return middleware;
215
- } else {
216
- return [
217
- middleware
218
- ];
219
- }
220
- })();
221
- if (!appliedMiddlewares) {
222
- middlewares.forEach((middleware2) => {
223
- middlewarePipeline.use(middleware2);
224
- });
225
- appliedMiddlewares = true;
226
- }
227
- await middlewarePipeline.run(ctx, {
228
- onLast: () => void 0
229
- });
230
- }
231
- }
232
- export {
233
- ReturnResponse,
234
- createHandler
235
- };
@@ -1,30 +0,0 @@
1
- export declare const AGGRED_DIR: {
2
- mock: string;
3
- server: string;
4
- api: string;
5
- shared: string;
6
- lambda: string;
7
- };
8
- export declare enum ApiServerMode {
9
- func = "function",
10
- frame = "framework"
11
- }
12
- export declare const ERROR_DIGEST: {
13
- INIT: string;
14
- ENOTF: string;
15
- WARMUP: string;
16
- EINTER: string;
17
- ERENDER: string;
18
- EMICROINJ: string;
19
- };
20
- export declare const ERROR_PAGE_TEXT: Record<number, string>;
21
- export declare const RUN_MODE: {
22
- FULL: string;
23
- TYPE: string;
24
- };
25
- export declare enum ServerReportTimings {
26
- SERVER_HANDLE_REQUEST = "server-handle-request",
27
- SERVER_MIDDLEWARE = "server-middleware",
28
- SERVER_HOOK_AFTER_RENDER = "server-hook-after-render",
29
- SERVER_HOOK_AFTER_MATCH = "server-hook-after-match"
30
- }
@@ -1,62 +0,0 @@
1
- /// <reference path="../../type.d.ts" />
2
- /// <reference types="node" />
3
- /// <reference types="node" />
4
- /// <reference types="node" />
5
- /// <reference types="node/http" />
6
- import { IncomingMessage, ServerResponse } from 'http';
7
- import qs from 'querystring';
8
- import type { ModernServerContext as ModernServerContextInterface, Reporter as ModernServerReporter, ServerTiming as ModernServerTiming } from '@modern-js/types';
9
- export type ContextOptions = {
10
- metaName?: string;
11
- etag?: boolean;
12
- };
13
- type ResponseBody = string | Buffer;
14
- export declare class ModernServerContext implements ModernServerContextInterface {
15
- #private;
16
- /**
17
- * http request
18
- */
19
- req: IncomingMessage;
20
- /**
21
- * http response
22
- */
23
- res: ServerResponse;
24
- /**
25
- * url params
26
- */
27
- params: Record<string, string>;
28
- reporter: ModernServerReporter;
29
- serverTiming: ModernServerTiming;
30
- get logger(): import("@modern-js/types").Logger;
31
- get metrics(): import("@modern-js/types").Metrics;
32
- serverData: Record<string, any>;
33
- private options;
34
- constructor(req: IncomingMessage, res: ServerResponse, options?: ContextOptions);
35
- private get parsedURL();
36
- private bind;
37
- send(body: ResponseBody): void;
38
- setParams(params: Record<string, string>): void;
39
- setServerData(key: string, value: any): void;
40
- getReqHeader(key: string): string | string[];
41
- get fresh(): boolean;
42
- get headers(): import("http").IncomingHttpHeaders;
43
- get method(): string;
44
- get url(): string;
45
- set url(val: string);
46
- get host(): string;
47
- get protocol(): string;
48
- get origin(): string;
49
- get href(): string;
50
- get path(): string;
51
- set path(p: string);
52
- get querystring(): string;
53
- get query(): qs.ParsedUrlQuery;
54
- get status(): number;
55
- set status(statusCode: number);
56
- /**
57
- * 判断链接是否已经关闭
58
- */
59
- resHasHandled(): boolean;
60
- error(dig: string, e?: Error | string): void;
61
- }
62
- export {};
@@ -1,7 +0,0 @@
1
- /// <reference path="../../type.d.ts" />
2
- /// <reference types="node/http" />
3
- import { IncomingMessage, ServerResponse } from 'http';
4
- import { ModernServerContext, ContextOptions } from './context';
5
- export declare const createContext: (req: IncomingMessage, res: ServerResponse, options?: ContextOptions) => ModernServerContext;
6
- export { ModernServerContext };
7
- export type { ContextOptions };
@@ -1,4 +0,0 @@
1
- /// <reference types="node" />
2
- import { Transform } from 'stream';
3
- import { MaybeAsync } from '@modern-js/plugin';
4
- export declare const afterRenderInjectableStream: (fn: (content: string) => MaybeAsync<string>) => Transform;
@@ -1,53 +0,0 @@
1
- import { CookieAPI, Metrics, ModernRequest, ModernResponse, Logger } from '@modern-js/types/server';
2
- export interface ServerResponseLike {
3
- statusCode?: number;
4
- locals?: Record<string, any>;
5
- getHeader: (key: string) => string | undefined | string[] | number;
6
- setHeader: (key: string, value: string | number | string[]) => this | void;
7
- removeHeader: (key: string) => void;
8
- end: (body: string) => this | void;
9
- }
10
- export declare class BaseResponse implements ModernResponse {
11
- cookies: CookieAPI;
12
- private res;
13
- constructor(res: ServerResponseLike);
14
- get(key: string): string | number | string[] | undefined;
15
- set(key: string, value: string | number): void | ServerResponseLike;
16
- status(code: number): void;
17
- private setCookie;
18
- private clearCookie;
19
- raw(body: string, options?: {
20
- status?: number;
21
- headers?: Record<string, any>;
22
- }): void;
23
- }
24
- export interface ServerRequestLike {
25
- url: string;
26
- host: string;
27
- path: string;
28
- query: Record<string, any>;
29
- headers: Record<string, any>;
30
- }
31
- export declare class BaseRequest implements ModernRequest {
32
- readonly url: string;
33
- readonly host: string;
34
- readonly pathname: string;
35
- readonly query: Record<string, any>;
36
- readonly headers: Record<string, any>;
37
- readonly cookie: string;
38
- cookies: Pick<CookieAPI, 'get'>;
39
- private _cookie;
40
- constructor(request: ServerRequestLike);
41
- private getCookie;
42
- }
43
- export interface ServerContextLike {
44
- res: ServerResponseLike;
45
- req: any;
46
- metrics: Metrics;
47
- logger: Logger;
48
- url: string;
49
- host: string;
50
- path: string;
51
- query: Record<string, any>;
52
- headers: Record<string, any>;
53
- }
@@ -1,6 +0,0 @@
1
- import type { ModernServerContext, HookContext, AfterMatchContext, AfterRenderContext, MiddlewareContext, ServerRoute, AfterStreamingRenderContext } from '@modern-js/types';
2
- export declare const base: (context: ModernServerContext) => HookContext;
3
- export declare const createAfterMatchContext: (context: ModernServerContext, entryName: string) => AfterMatchContext;
4
- export declare const createAfterRenderContext: (context: ModernServerContext, route: Partial<ServerRoute>, content: string) => AfterRenderContext;
5
- export declare const createAfterStreamingRenderContext: (context: ModernServerContext, route: Partial<ServerRoute>) => (chunk: string) => AfterStreamingRenderContext;
6
- export declare const createMiddlewareContext: (context: ModernServerContext) => MiddlewareContext;
@@ -1,19 +0,0 @@
1
- import { AfterMatchContext, AfterRenderContext, HookContext, Logger, Metrics, MiddlewareContext, Reporter, ServerRoute } from '@modern-js/types/server';
2
- export interface WorkerResponse {
3
- headers: Headers;
4
- status: number;
5
- isSent: boolean;
6
- locals?: Record<string, any>;
7
- body?: string;
8
- }
9
- export interface WorkerServerContext {
10
- res: WorkerResponse;
11
- req: Request;
12
- logger: Logger;
13
- reporter: Reporter;
14
- metrics: Metrics;
15
- }
16
- export declare const base: (context: WorkerServerContext) => HookContext;
17
- export declare const createAfterMatchContext: (context: WorkerServerContext, entryName: string) => AfterMatchContext;
18
- export declare const createAfterRenderContext: (context: WorkerServerContext, route: Partial<ServerRoute>, content: string) => AfterRenderContext;
19
- export declare const createMiddlewareContext: (context: WorkerServerContext) => MiddlewareContext<'worker'>;
@@ -1,9 +0,0 @@
1
- export declare class RouteAPI {
2
- current: string;
3
- status: number;
4
- url: string;
5
- constructor(entryName: string);
6
- redirect(url: string, status?: number): void;
7
- rewrite(entryName: string): void;
8
- use(entryName: string): void;
9
- }
@@ -1,22 +0,0 @@
1
- export declare const RegList: {
2
- before: {
3
- head: string;
4
- body: string;
5
- };
6
- after: {
7
- head: string;
8
- body: string;
9
- };
10
- };
11
- export declare class TemplateAPI {
12
- private content;
13
- constructor(content: string);
14
- get(): string;
15
- set(content: string): void;
16
- prependHead(fragment: string): void;
17
- appendHead(fragment: string): void;
18
- prependBody(fragment: string): void;
19
- appendBody(fragment: string): void;
20
- private replaceByFunction;
21
- private replace;
22
- }
@@ -1,8 +0,0 @@
1
- /// <reference types="node" />
2
- import { Transform } from 'stream';
3
- export declare const templateInjectableStream: ({ prependHead, appendHead, prependBody, appendBody, }: {
4
- prependHead?: string | undefined;
5
- appendHead?: string | undefined;
6
- prependBody?: string | undefined;
7
- appendBody?: string | undefined;
8
- }) => Transform;
@@ -1,13 +0,0 @@
1
- import type { ServerConfig, ServerOptions } from '@modern-js/server-core';
2
- export declare const getServerConfigPath: (distDirectory: string, serverConfigFile?: string) => string;
3
- export declare const requireConfig: (serverConfigPath: string) => any;
4
- /**
5
- * 对配置进行合并,开发环境下,cliConfig 与 serverConfig 进行深合并
6
- * 生产环境下,resolvedConfig 与 serverConfig 进行深合并
7
- * resolvedConfigPath: 构建序列化后的 modern.config.js 文件路径
8
- */
9
- export declare const loadConfig: ({ cliConfig, serverConfig, resolvedConfigPath, }: {
10
- cliConfig: ServerOptions;
11
- serverConfig: ServerConfig;
12
- resolvedConfigPath: string;
13
- }) => any;
@@ -1,3 +0,0 @@
1
- import { Metrics } from '../type';
2
- declare const metrics: Metrics;
3
- export { metrics };
@@ -1,14 +0,0 @@
1
- /// <reference path="../../type.d.ts" />
2
- /// <reference types="node" />
3
- /// <reference types="node/http" />
4
- import { OutgoingHttpHeaders } from 'http';
5
- import { ServerOptions } from '@modern-js/server-core';
6
- import { ModernServerContext } from '@modern-js/types';
7
- export interface FlushServerHeaderOptions {
8
- ctx: ModernServerContext;
9
- distDir: string;
10
- template: string;
11
- serverConf: ServerOptions['server'];
12
- headers?: OutgoingHttpHeaders;
13
- }
14
- export declare function flushServerHeader({ serverConf, ctx, distDir, template, headers, }: FlushServerHeaderOptions): Promise<void>;
@@ -1,2 +0,0 @@
1
- export * from './parseLinks';
2
- export * from './flushServerHeader';
@@ -1,13 +0,0 @@
1
- export interface Link {
2
- uri: string;
3
- rel?: string;
4
- as?: 'script' | 'style' | 'image' | 'video' | 'font' | string;
5
- /** rest str(like attributes) that need add to link */
6
- rest?: string;
7
- }
8
- export interface ParseLinksOptions {
9
- distDir: string;
10
- pathname: string;
11
- template: string;
12
- }
13
- export declare function parseLinks({ pathname, distDir, template, }: ParseLinksOptions): Promise<Link[]>;
@@ -1,3 +0,0 @@
1
- import type { ServerOptions } from '@modern-js/server-core';
2
- export declare function transformToRegExp(input: string | RegExp): RegExp;
3
- export declare function shouldFlushServerHeader(serverConf: ServerOptions['server'], userAgent?: string, disablePreload?: boolean): boolean;
@@ -1,3 +0,0 @@
1
- import { SSRPreload } from '@modern-js/server-core';
2
- import { Link } from './parseLinks';
3
- export declare function transformLinks2String(links: Link[], preload: SSRPreload | boolean): string;
@@ -1,13 +0,0 @@
1
- /// <reference path="../type.d.ts" />
2
- /// <reference types="node/http" />
3
- import http from 'http';
4
- import { RequestHandler } from 'http-proxy-middleware';
5
- import { ProxyDetail, BffProxyOptions } from '@modern-js/types';
6
- import type { ModernServerHandler } from '../type';
7
- export type { BffProxyOptions };
8
- export declare function formatProxyOptions(proxyOptions: BffProxyOptions): ProxyDetail[];
9
- export type HttpUpgradeHandler = NonNullable<RequestHandler['upgrade']>;
10
- export declare const createProxyHandler: (proxyOptions: BffProxyOptions) => {
11
- handlers: ModernServerHandler[];
12
- handleUpgrade: (server: http.Server) => void;
13
- };
@@ -1,21 +0,0 @@
1
- import type { ModernServerContext } from '@modern-js/types';
2
- import { ServerOptions } from '@modern-js/server-core';
3
- import { RenderResult, ServerHookRunner } from '../../type';
4
- import { ModernRoute } from '../route';
5
- import * as ssr from './ssr';
6
- export type RenderHandler = (options: {
7
- ctx: ModernServerContext;
8
- route: ModernRoute;
9
- runner: ServerHookRunner;
10
- }) => Promise<RenderResult | null>;
11
- type CreateRenderHandler = (ctx: {
12
- distDir: string;
13
- staticGenerate: boolean;
14
- conf: ServerOptions;
15
- ssrRender?: typeof ssr.render;
16
- forceCSR?: boolean;
17
- nonce?: string;
18
- metaName?: string;
19
- }) => RenderHandler;
20
- export declare const createRenderHandler: CreateRenderHandler;
21
- export {};
@@ -1,10 +0,0 @@
1
- import { BaseSSRServerContext, Logger, Metrics } from '@modern-js/types';
2
- export declare const createMetrics: (context: BaseSSRServerContext, metrics: Metrics) => {
3
- emitTimer: (name: string, cost: number, tags?: Record<string, unknown>) => void;
4
- emitCounter: (name: string, counter: number, tags?: Record<string, unknown>) => void;
5
- };
6
- export declare const createLogger: (serverContext: BaseSSRServerContext, logger: Logger) => {
7
- error: (message: string, e: Error | string) => void;
8
- info: (message: string, ...args: any[]) => void;
9
- debug: (message: string, ...args: any[]) => void;
10
- };
@@ -1,12 +0,0 @@
1
- import type { ModernServerContext } from '@modern-js/types';
2
- import { RenderResult, ServerHookRunner } from '../../type';
3
- import type { ModernRoute } from '../route';
4
- export type SSRRenderOptions = {
5
- distDir: string;
6
- template: string;
7
- route: ModernRoute;
8
- staticGenerate: boolean;
9
- enableUnsafeCtx?: boolean;
10
- nonce?: string;
11
- };
12
- export declare const render: (ctx: ModernServerContext, renderOptions: SSRRenderOptions, runner: ServerHookRunner) => Promise<RenderResult>;
@@ -1,8 +0,0 @@
1
- import type { CacheOption, Container } from '@modern-js/types';
2
- declare class ServerCacheMod {
3
- customContainer?: Container;
4
- cacheOption?: CacheOption;
5
- loadServerCacheMod(pwd?: string): void;
6
- }
7
- export declare const cacheMod: ServerCacheMod;
8
- export {};
@@ -1,6 +0,0 @@
1
- /// <reference types="node/http" />
2
- /// <reference types="dist/types/type" />
3
- import { IncomingMessage } from 'http';
4
- import { RenderFunction, SSRServerContext } from '../type';
5
- import { CacheResult } from './manager';
6
- export declare function ssrCache(req: IncomingMessage, render: RenderFunction, ssrContext: SSRServerContext): Promise<CacheResult>;
@@ -1,20 +0,0 @@
1
- /// <reference types="node" />
2
- /// <reference types="node/http" />
3
- /// <reference types="dist/types/type" />
4
- import { IncomingMessage } from 'http';
5
- import { Readable } from 'stream';
6
- import { CacheControl, Container } from '@modern-js/types';
7
- import { RenderFunction, SSRServerContext } from '../type';
8
- type CacheStatus = 'hit' | 'stale' | 'expired' | 'miss';
9
- export type CacheResult = {
10
- data: string | Readable;
11
- status?: CacheStatus;
12
- };
13
- export declare class CacheManager {
14
- private container;
15
- constructor(container: Container<string, string>);
16
- getCacheResult(req: IncomingMessage, cacheControl: CacheControl, render: RenderFunction, ssrContext: SSRServerContext): Promise<CacheResult>;
17
- private processCache;
18
- private computedKey;
19
- }
20
- export {};
@@ -1,3 +0,0 @@
1
- import type { ModernServerContext } from '@modern-js/types';
2
- import { RenderResult } from '../../type';
3
- export declare function handleDirectory(ctx: ModernServerContext, entryPath: string, urlPath: string): Promise<RenderResult | null>;