@modern-js/prod-server 2.47.0 → 2.47.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/README.md +20 -16
  2. package/dist/cjs/{libs/hook-api/route.js → error.js} +16 -25
  3. package/dist/cjs/index.js +46 -24
  4. package/dist/esm/error.js +15 -0
  5. package/dist/esm/index.js +105 -19
  6. package/dist/esm-node/error.js +14 -0
  7. package/dist/esm-node/index.js +44 -17
  8. package/dist/types/error.d.ts +6 -0
  9. package/dist/types/index.d.ts +21 -11
  10. package/package.json +18 -92
  11. package/dist/cjs/constants.js +0 -72
  12. package/dist/cjs/libs/context/context.js +0 -240
  13. package/dist/cjs/libs/context/index.js +0 -31
  14. package/dist/cjs/libs/hook-api/afterRenderForStream.js +0 -34
  15. package/dist/cjs/libs/hook-api/base.js +0 -107
  16. package/dist/cjs/libs/hook-api/index.js +0 -85
  17. package/dist/cjs/libs/hook-api/index.worker.js +0 -119
  18. package/dist/cjs/libs/hook-api/template.js +0 -74
  19. package/dist/cjs/libs/hook-api/templateForStream.js +0 -52
  20. package/dist/cjs/libs/loadConfig.js +0 -70
  21. package/dist/cjs/libs/metrics.js +0 -33
  22. package/dist/cjs/libs/preload/flushServerHeader.js +0 -49
  23. package/dist/cjs/libs/preload/index.js +0 -24
  24. package/dist/cjs/libs/preload/parseLinks.js +0 -124
  25. package/dist/cjs/libs/preload/shouldFlushServerHeader.js +0 -52
  26. package/dist/cjs/libs/preload/transformLinks2String.js +0 -150
  27. package/dist/cjs/libs/proxy.js +0 -99
  28. package/dist/cjs/libs/render/index.js +0 -109
  29. package/dist/cjs/libs/render/measure.js +0 -74
  30. package/dist/cjs/libs/render/ssr.js +0 -126
  31. package/dist/cjs/libs/render/ssrCache/cacheMod.js +0 -56
  32. package/dist/cjs/libs/render/ssrCache/index.js +0 -83
  33. package/dist/cjs/libs/render/ssrCache/manager.js +0 -106
  34. package/dist/cjs/libs/render/static.js +0 -72
  35. package/dist/cjs/libs/render/type.js +0 -33
  36. package/dist/cjs/libs/render/utils.js +0 -41
  37. package/dist/cjs/libs/reporter.js +0 -39
  38. package/dist/cjs/libs/route/index.js +0 -85
  39. package/dist/cjs/libs/route/matcher.js +0 -117
  40. package/dist/cjs/libs/route/route.js +0 -49
  41. package/dist/cjs/libs/serveFile.js +0 -84
  42. package/dist/cjs/libs/serverTiming.js +0 -44
  43. package/dist/cjs/renderHtml.js +0 -72
  44. package/dist/cjs/server/index.js +0 -229
  45. package/dist/cjs/server/modernServer.js +0 -532
  46. package/dist/cjs/server/modernServerSplit.js +0 -67
  47. package/dist/cjs/type.js +0 -16
  48. package/dist/cjs/utils.js +0 -164
  49. package/dist/cjs/workerServer.js +0 -264
  50. package/dist/esm/constants.js +0 -43
  51. package/dist/esm/libs/context/context.js +0 -292
  52. package/dist/esm/libs/context/index.js +0 -8
  53. package/dist/esm/libs/hook-api/afterRenderForStream.js +0 -33
  54. package/dist/esm/libs/hook-api/base.js +0 -108
  55. package/dist/esm/libs/hook-api/index.js +0 -55
  56. package/dist/esm/libs/hook-api/index.worker.js +0 -113
  57. package/dist/esm/libs/hook-api/route.js +0 -41
  58. package/dist/esm/libs/hook-api/template.js +0 -84
  59. package/dist/esm/libs/hook-api/templateForStream.js +0 -35
  60. package/dist/esm/libs/loadConfig.js +0 -36
  61. package/dist/esm/libs/metrics.js +0 -9
  62. package/dist/esm/libs/preload/flushServerHeader.js +0 -50
  63. package/dist/esm/libs/preload/index.js +0 -2
  64. package/dist/esm/libs/preload/parseLinks.js +0 -172
  65. package/dist/esm/libs/preload/shouldFlushServerHeader.js +0 -27
  66. package/dist/esm/libs/preload/transformLinks2String.js +0 -140
  67. package/dist/esm/libs/proxy.js +0 -160
  68. package/dist/esm/libs/render/index.js +0 -175
  69. package/dist/esm/libs/render/measure.js +0 -69
  70. package/dist/esm/libs/render/ssr.js +0 -129
  71. package/dist/esm/libs/render/ssrCache/cacheMod.js +0 -33
  72. package/dist/esm/libs/render/ssrCache/index.js +0 -151
  73. package/dist/esm/libs/render/ssrCache/manager.js +0 -170
  74. package/dist/esm/libs/render/static.js +0 -100
  75. package/dist/esm/libs/render/type.js +0 -9
  76. package/dist/esm/libs/render/utils.js +0 -16
  77. package/dist/esm/libs/reporter.js +0 -15
  78. package/dist/esm/libs/route/index.js +0 -116
  79. package/dist/esm/libs/route/matcher.js +0 -128
  80. package/dist/esm/libs/route/route.js +0 -26
  81. package/dist/esm/libs/serveFile.js +0 -68
  82. package/dist/esm/libs/serverTiming.js +0 -30
  83. package/dist/esm/renderHtml.js +0 -150
  84. package/dist/esm/server/index.js +0 -426
  85. package/dist/esm/server/modernServer.js +0 -1018
  86. package/dist/esm/server/modernServerSplit.js +0 -138
  87. package/dist/esm/type.js +0 -0
  88. package/dist/esm/utils.js +0 -103
  89. package/dist/esm/workerServer.js +0 -347
  90. package/dist/esm-node/constants.js +0 -43
  91. package/dist/esm-node/libs/context/context.js +0 -206
  92. package/dist/esm-node/libs/context/index.js +0 -6
  93. package/dist/esm-node/libs/hook-api/afterRenderForStream.js +0 -10
  94. package/dist/esm-node/libs/hook-api/base.js +0 -72
  95. package/dist/esm-node/libs/hook-api/index.js +0 -57
  96. package/dist/esm-node/libs/hook-api/index.worker.js +0 -92
  97. package/dist/esm-node/libs/hook-api/route.js +0 -24
  98. package/dist/esm-node/libs/hook-api/template.js +0 -49
  99. package/dist/esm-node/libs/hook-api/templateForStream.js +0 -28
  100. package/dist/esm-node/libs/loadConfig.js +0 -34
  101. package/dist/esm-node/libs/metrics.js +0 -9
  102. package/dist/esm-node/libs/preload/flushServerHeader.js +0 -25
  103. package/dist/esm-node/libs/preload/index.js +0 -2
  104. package/dist/esm-node/libs/preload/parseLinks.js +0 -90
  105. package/dist/esm-node/libs/preload/shouldFlushServerHeader.js +0 -27
  106. package/dist/esm-node/libs/preload/transformLinks2String.js +0 -126
  107. package/dist/esm-node/libs/proxy.js +0 -74
  108. package/dist/esm-node/libs/render/index.js +0 -75
  109. package/dist/esm-node/libs/render/measure.js +0 -49
  110. package/dist/esm-node/libs/render/ssr.js +0 -92
  111. package/dist/esm-node/libs/render/ssrCache/cacheMod.js +0 -22
  112. package/dist/esm-node/libs/render/ssrCache/index.js +0 -59
  113. package/dist/esm-node/libs/render/ssrCache/manager.js +0 -82
  114. package/dist/esm-node/libs/render/static.js +0 -38
  115. package/dist/esm-node/libs/render/type.js +0 -9
  116. package/dist/esm-node/libs/render/utils.js +0 -16
  117. package/dist/esm-node/libs/reporter.js +0 -15
  118. package/dist/esm-node/libs/route/index.js +0 -60
  119. package/dist/esm-node/libs/route/matcher.js +0 -93
  120. package/dist/esm-node/libs/route/route.js +0 -25
  121. package/dist/esm-node/libs/serveFile.js +0 -49
  122. package/dist/esm-node/libs/serverTiming.js +0 -20
  123. package/dist/esm-node/renderHtml.js +0 -80
  124. package/dist/esm-node/server/index.js +0 -195
  125. package/dist/esm-node/server/modernServer.js +0 -498
  126. package/dist/esm-node/server/modernServerSplit.js +0 -43
  127. package/dist/esm-node/type.js +0 -0
  128. package/dist/esm-node/utils.js +0 -132
  129. package/dist/esm-node/workerServer.js +0 -239
  130. package/dist/types/constants.d.ts +0 -30
  131. package/dist/types/libs/context/context.d.ts +0 -62
  132. package/dist/types/libs/context/index.d.ts +0 -7
  133. package/dist/types/libs/hook-api/afterRenderForStream.d.ts +0 -4
  134. package/dist/types/libs/hook-api/base.d.ts +0 -53
  135. package/dist/types/libs/hook-api/index.d.ts +0 -6
  136. package/dist/types/libs/hook-api/index.worker.d.ts +0 -19
  137. package/dist/types/libs/hook-api/route.d.ts +0 -9
  138. package/dist/types/libs/hook-api/template.d.ts +0 -22
  139. package/dist/types/libs/hook-api/templateForStream.d.ts +0 -8
  140. package/dist/types/libs/loadConfig.d.ts +0 -13
  141. package/dist/types/libs/metrics.d.ts +0 -3
  142. package/dist/types/libs/preload/flushServerHeader.d.ts +0 -14
  143. package/dist/types/libs/preload/index.d.ts +0 -2
  144. package/dist/types/libs/preload/parseLinks.d.ts +0 -13
  145. package/dist/types/libs/preload/shouldFlushServerHeader.d.ts +0 -3
  146. package/dist/types/libs/preload/transformLinks2String.d.ts +0 -3
  147. package/dist/types/libs/proxy.d.ts +0 -13
  148. package/dist/types/libs/render/index.d.ts +0 -21
  149. package/dist/types/libs/render/measure.d.ts +0 -10
  150. package/dist/types/libs/render/ssr.d.ts +0 -12
  151. package/dist/types/libs/render/ssrCache/cacheMod.d.ts +0 -8
  152. package/dist/types/libs/render/ssrCache/index.d.ts +0 -7
  153. package/dist/types/libs/render/ssrCache/manager.d.ts +0 -14
  154. package/dist/types/libs/render/static.d.ts +0 -3
  155. package/dist/types/libs/render/type.d.ts +0 -36
  156. package/dist/types/libs/render/utils.d.ts +0 -5
  157. package/dist/types/libs/reporter.d.ts +0 -2
  158. package/dist/types/libs/route/index.d.ts +0 -15
  159. package/dist/types/libs/route/matcher.d.ts +0 -15
  160. package/dist/types/libs/route/route.d.ts +0 -14
  161. package/dist/types/libs/serveFile.d.ts +0 -9
  162. package/dist/types/libs/serverTiming.d.ts +0 -13
  163. package/dist/types/renderHtml.d.ts +0 -23
  164. package/dist/types/server/index.d.ts +0 -55
  165. package/dist/types/server/modernServer.d.ts +0 -71
  166. package/dist/types/server/modernServerSplit.d.ts +0 -2
  167. package/dist/types/type.d.ts +0 -77
  168. package/dist/types/utils.d.ts +0 -24
  169. package/dist/types/workerServer.d.ts +0 -59
@@ -1,239 +0,0 @@
1
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
2
- import { createAsyncPipeline } from "@modern-js/plugin";
3
- import { createAfterMatchContext, createAfterRenderContext, createMiddlewareContext } from "./libs/hook-api/index.worker";
4
- import { RouteMatchManager } from "./libs/route";
5
- import { metrics as defaultMetrics } from "./libs/metrics";
6
- import { defaultReporter } from "./libs/reporter";
7
- const createLogger = () => ({
8
- error(message, ...args) {
9
- console.error(message, ...args);
10
- },
11
- info(message, ...args) {
12
- console.error(message, ...args);
13
- },
14
- warn(message, ...args) {
15
- console.warn(message, ...args);
16
- },
17
- debug(message, ...args) {
18
- console.debug(message, ...args);
19
- }
20
- });
21
- const calcFallback = (metaName) => `x-${metaName.split(/[-_]/)[0]}-ssr-fallback`;
22
- class ReturnResponse {
23
- /**
24
- * Iterate a Object
25
- * 1. adds the value if the key does not already exist.
26
- * 2. append the value if the key does already exist.
27
- *
28
- * more detail follow: https://developer.mozilla.org/en-US/docs/Web/API/Headers/append
29
- * @param headers
30
- * @returns
31
- */
32
- appendHeaders(headers) {
33
- Object.entries(headers).forEach(([key, value]) => {
34
- this.headers.append(key, value.toString());
35
- });
36
- return this;
37
- }
38
- /**
39
- * Iterate a Object
40
- * 1. adds the value if the key does not already exist.
41
- * 2. modify the value if the key does already exist.
42
- *
43
- * more detail follow: https://developer.mozilla.org/en-US/docs/Web/API/Headers/set
44
- * @param headers
45
- * @returns
46
- */
47
- setHeaders(headers) {
48
- Object.entries(headers).forEach(([key, value]) => {
49
- this.headers.set(key, value.toString());
50
- });
51
- return this;
52
- }
53
- constructor(body, status, headers = {}) {
54
- _define_property(this, "body", void 0);
55
- _define_property(this, "status", void 0);
56
- _define_property(this, "headers", void 0);
57
- this.body = body;
58
- this.status = status;
59
- this.headers = new Headers(headers);
60
- this.headers.set("content-type", "text/html;charset=UTF-8");
61
- }
62
- }
63
- const RESPONSE_NOTFOUND = new ReturnResponse("404: Page not found", 404);
64
- const isRedirect = (code) => {
65
- return [
66
- 301,
67
- 302,
68
- 307,
69
- 308
70
- ].includes(code);
71
- };
72
- const checkIsSent = (context) => {
73
- if (context.res.isSent) {
74
- return true;
75
- }
76
- if (context.res.headers.get("Location") && isRedirect(context.res.status)) {
77
- return true;
78
- }
79
- return false;
80
- };
81
- const middlewarePipeline = createAsyncPipeline();
82
- const createHandler = (manifest) => {
83
- const routeMgr = new RouteMatchManager();
84
- const { pages, routes, options: manifestOpts } = manifest;
85
- const { metaName = "modern-js", forceCSR = false } = manifestOpts || {};
86
- routeMgr.reset(routes);
87
- return async (options) => {
88
- var _page_serverHooks_afterMatch, _page_serverHooks;
89
- const { request, loadableStats, routeManifest } = options;
90
- const url = new URL(request.url);
91
- const pageMatch = routeMgr.match(url.pathname);
92
- if (!pageMatch) {
93
- return RESPONSE_NOTFOUND;
94
- }
95
- const entryName = pageMatch.spec.urlPath;
96
- const page = pages[entryName];
97
- if (forceCSR && url.searchParams.get("csr") === "1") {
98
- return createResponse(page.template);
99
- }
100
- const logger = createLogger();
101
- const metrics = defaultMetrics;
102
- const reporter = defaultReporter;
103
- const route = pageMatch.generate(url.pathname);
104
- const hookContext = createWorkerHookContext(request.url, logger, metrics, reporter);
105
- const afterMatchHookContext = createAfterMatchContext(hookContext, entryName);
106
- 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);
107
- if (checkIsSent(hookContext)) {
108
- return new ReturnResponse(hookContext.res.body || "Unkown body", hookContext.res.status, hookContext.res.headers);
109
- }
110
- if (page.serverRender) {
111
- try {
112
- var _page_serverHooks1, _page_serverHooks_afterRender, _page_serverHooks2;
113
- const middlewarsHookContext = createMiddlewareContext(hookContext);
114
- applyMiddlewares(middlewarsHookContext, (_page_serverHooks1 = page.serverHooks) === null || _page_serverHooks1 === void 0 ? void 0 : _page_serverHooks1.middleware);
115
- if (checkIsSent(hookContext)) {
116
- return new ReturnResponse(hookContext.res.body || "Unkown body", hookContext.res.status, hookContext.res.headers);
117
- }
118
- if (forceCSR && middlewarsHookContext.request.headers[calcFallback(metaName)]) {
119
- return createResponse(page.template);
120
- }
121
- const responseLike = {
122
- headers: {},
123
- statusCode: 200,
124
- locals: {},
125
- setHeader(key, value) {
126
- this.headers[key] = value;
127
- },
128
- status(code) {
129
- this.statusCode = code;
130
- }
131
- };
132
- const params = pageMatch.parseURLParams(url.pathname) || {};
133
- const { urlPath: baseUrl } = pageMatch;
134
- const serverRenderContext = {
135
- request: createServerRequest(url, baseUrl, request, params),
136
- response: responseLike,
137
- loadableStats,
138
- routeManifest,
139
- redirection: {},
140
- template: page.template,
141
- entryName: page.entryName,
142
- logger,
143
- reporter: defaultReporter,
144
- metrics,
145
- req: request,
146
- res: responseLike,
147
- serverTiming: {
148
- addServeTiming() {
149
- return this;
150
- }
151
- }
152
- };
153
- const body = await page.serverRender(serverRenderContext);
154
- const afterRenderHookContext = createAfterRenderContext(hookContext, route, body);
155
- (_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);
156
- if (checkIsSent(hookContext)) {
157
- return new ReturnResponse(hookContext.res.body || "Unkown body", hookContext.res.status, hookContext.res.headers);
158
- }
159
- return new ReturnResponse(afterRenderHookContext.template.get(), responseLike.statusCode, responseLike.headers);
160
- } catch (e) {
161
- console.warn(`page(${pageMatch.spec.urlPath}) serverRender occur error: `);
162
- console.warn(e);
163
- return createResponse(page.template);
164
- }
165
- }
166
- console.warn(`Can't not page(${entryName}) serverRender`);
167
- return createResponse(page.template);
168
- function createServerRequest(url2, baseUrl, request2, params) {
169
- const { pathname, host, searchParams } = url2;
170
- const { headers: rawHeaders } = request2;
171
- const headers = {};
172
- rawHeaders.forEach((value, key) => {
173
- headers[key] = value;
174
- });
175
- const query = Object.fromEntries(searchParams);
176
- return {
177
- url: url2.href,
178
- baseUrl,
179
- pathname,
180
- host,
181
- headers,
182
- params,
183
- query
184
- };
185
- }
186
- };
187
- };
188
- function createResponse(template) {
189
- if (template) {
190
- return new ReturnResponse(template, 200);
191
- } else {
192
- return RESPONSE_NOTFOUND;
193
- }
194
- }
195
- function createWorkerHookContext(url, logger, metrics, reporter) {
196
- const [res, req] = [
197
- {
198
- headers: new Headers(),
199
- body: "",
200
- status: 200,
201
- isSent: false
202
- },
203
- new Request(url)
204
- ];
205
- return {
206
- res,
207
- req,
208
- logger,
209
- metrics,
210
- reporter
211
- };
212
- }
213
- let appliedMiddlewares = false;
214
- function applyMiddlewares(ctx, middleware) {
215
- if (middleware) {
216
- const middlewares = (() => {
217
- if (Array.isArray(middleware)) {
218
- return middleware;
219
- } else {
220
- return [
221
- middleware
222
- ];
223
- }
224
- })();
225
- if (!appliedMiddlewares) {
226
- middlewares.forEach((middleware2) => {
227
- middlewarePipeline.use(middleware2);
228
- });
229
- appliedMiddlewares = true;
230
- }
231
- middlewarePipeline.run(ctx, {
232
- onLast: () => void 0
233
- });
234
- }
235
- }
236
- export {
237
- ReturnResponse,
238
- createHandler
239
- };
@@ -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,7 +0,0 @@
1
- /// <reference types="node" />
2
- /// <reference types="node/http" />
3
- /// <reference types="dist/types/type" />
4
- import { IncomingMessage } from 'http';
5
- import { type Readable } from 'stream';
6
- import { RenderFunction, SSRServerContext } from '../type';
7
- export declare function ssrCache(req: IncomingMessage, render: RenderFunction, ssrContext: SSRServerContext): Promise<string | Readable>;
@@ -1,14 +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
- export declare class CacheManager {
9
- private container;
10
- constructor(container: Container<string, string>);
11
- getCacheResult(req: IncomingMessage, cacheControl: CacheControl, render: RenderFunction, ssrContext: SSRServerContext): Promise<string | Readable>;
12
- private processCache;
13
- private computedKey;
14
- }
@@ -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>;