@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,206 +0,0 @@
1
- import { _ as _class_private_field_get } from "@swc/helpers/_/_class_private_field_get";
2
- import { _ as _class_private_field_init } from "@swc/helpers/_/_class_private_field_init";
3
- import { _ as _class_private_field_set } from "@swc/helpers/_/_class_private_field_set";
4
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
5
- import { URL } from "url";
6
- import qs from "querystring";
7
- import { Buffer } from "buffer";
8
- import createEtag from "etag";
9
- import fresh from "fresh";
10
- import { cutNameByHyphen } from "@modern-js/utils";
11
- import { ServerTiming } from "../serverTiming";
12
- import { defaultReporter } from "../reporter";
13
- import { headersWithoutCookie } from "../../utils";
14
- const MOCK_URL_BASE = "https://modernjs.dev/";
15
- var _urls = /* @__PURE__ */ new WeakMap(), _queries = /* @__PURE__ */ new WeakMap();
16
- class ModernServerContext {
17
- get logger() {
18
- return this.req.logger;
19
- }
20
- get metrics() {
21
- return this.req.metrics;
22
- }
23
- get parsedURL() {
24
- try {
25
- let url = _class_private_field_get(this, _urls).get(this.req.url);
26
- if (!url) {
27
- url = new URL(this.req.url, MOCK_URL_BASE);
28
- _class_private_field_get(this, _urls).set(this.req.url, url);
29
- }
30
- return url;
31
- } catch (e) {
32
- this.logger.error("Parse URL error", e.stack || e.message);
33
- return new URL("/_modern_mock_path", MOCK_URL_BASE);
34
- }
35
- }
36
- bind() {
37
- const { req, res } = this;
38
- req.get = (key) => this.getReqHeader(key);
39
- res.set = (key, value) => {
40
- if (!res.headersSent) {
41
- res.setHeader(key, value);
42
- }
43
- return res;
44
- };
45
- res.send = (body) => {
46
- this.send(body);
47
- };
48
- }
49
- // compat express res.send, only support etag now
50
- send(body) {
51
- try {
52
- const generateETag = !this.res.getHeader("ETag") && this.options.etag;
53
- if (body !== void 0 && generateETag) {
54
- const encoding = typeof body === "string" ? "utf-8" : void 0;
55
- const buf = !Buffer.isBuffer(body) ? Buffer.from(body, encoding) : body;
56
- const etag = createEtag(buf, {
57
- weak: true
58
- });
59
- if (etag) {
60
- this.res.setHeader("ETag", etag);
61
- }
62
- }
63
- if (this.fresh) {
64
- this.status = 304;
65
- }
66
- } catch (e) {
67
- this.logger.error(e.message);
68
- }
69
- this.res.end(body);
70
- }
71
- setParams(params) {
72
- this.params = params;
73
- }
74
- setServerData(key, value) {
75
- this.serverData[key] = value;
76
- }
77
- getReqHeader(key) {
78
- const { req } = this;
79
- const field = key.toLowerCase();
80
- switch (field) {
81
- case "referer":
82
- case "referrer":
83
- return req.headers.referrer || req.headers.referer || "";
84
- default:
85
- return req.headers[field] || "";
86
- }
87
- }
88
- get fresh() {
89
- const { status, res, method } = this;
90
- if ("GET" !== method && "HEAD" !== method) {
91
- return false;
92
- }
93
- if (status >= 200 && status < 300 || 304 === status) {
94
- return fresh(this.headers, {
95
- etag: res.getHeader("ETag"),
96
- "last-modified": res.getHeader("Last-Modified")
97
- });
98
- }
99
- return false;
100
- }
101
- /* request property */
102
- get headers() {
103
- return this.req.headers;
104
- }
105
- get method() {
106
- return this.req.method;
107
- }
108
- get url() {
109
- return this.req.url || "";
110
- }
111
- set url(val) {
112
- this.req.url = val;
113
- }
114
- get host() {
115
- let host = this.getReqHeader("X-Forwarded-Host");
116
- if (!host) {
117
- host = this.getReqHeader("Host");
118
- }
119
- host = host.split(/\s*,\s*/, 1)[0] || "undefined";
120
- return host;
121
- }
122
- get protocol() {
123
- if (this.req.socket.encrypted) {
124
- return "https";
125
- }
126
- const proto = this.getReqHeader("X-Forwarded-Proto");
127
- return proto ? proto.split(/\s*,\s*/, 1)[0] : "http";
128
- }
129
- get origin() {
130
- return `${this.protocol}://${this.host}`;
131
- }
132
- get href() {
133
- return this.origin + this.url;
134
- }
135
- get path() {
136
- return this.parsedURL.pathname;
137
- }
138
- set path(p) {
139
- if (!p) {
140
- return;
141
- }
142
- if (this.path === p) {
143
- return;
144
- }
145
- this.url = p + this.parsedURL.search;
146
- }
147
- get querystring() {
148
- if (!this.req) {
149
- return "";
150
- }
151
- return this.parsedURL.search.replace(/^\?/, "") || "";
152
- }
153
- get query() {
154
- const str = this.querystring;
155
- let query = _class_private_field_get(this, _queries).get(str);
156
- if (!query) {
157
- query = qs.parse(str);
158
- _class_private_field_get(this, _queries).set(str, query);
159
- }
160
- return query;
161
- }
162
- /* response property */
163
- get status() {
164
- return this.res.statusCode;
165
- }
166
- set status(statusCode) {
167
- this.res.statusCode = statusCode;
168
- }
169
- /**
170
- * 判断链接是否已经关闭
171
- */
172
- resHasHandled() {
173
- return this.res.writableEnded;
174
- }
175
- error(dig, e = "") {
176
- this.logger.error(`Web Server Error - ${dig}, error = %s, req.url = %s, req.headers = %o`, e instanceof Error ? e.stack || e.message : e, this.path, headersWithoutCookie(this.headers));
177
- }
178
- constructor(req, res, options) {
179
- _define_property(this, "req", void 0);
180
- _define_property(this, "res", void 0);
181
- _define_property(this, "params", {});
182
- _define_property(this, "reporter", defaultReporter);
183
- _define_property(this, "serverTiming", void 0);
184
- _define_property(this, "serverData", {});
185
- _define_property(this, "options", {});
186
- _class_private_field_init(this, _urls, {
187
- writable: true,
188
- value: void 0
189
- });
190
- _class_private_field_init(this, _queries, {
191
- writable: true,
192
- value: void 0
193
- });
194
- this.req = req;
195
- this.res = res;
196
- this.options = options || {};
197
- this.bind();
198
- _class_private_field_set(this, _urls, /* @__PURE__ */ new Map());
199
- _class_private_field_set(this, _queries, /* @__PURE__ */ new Map());
200
- this.serverTiming = new ServerTiming(this.res, cutNameByHyphen((options === null || options === void 0 ? void 0 : options.metaName) || "modern-js"));
201
- req.reporter && (this.reporter = req.reporter);
202
- }
203
- }
204
- export {
205
- ModernServerContext
206
- };
@@ -1,6 +0,0 @@
1
- import { ModernServerContext } from "./context";
2
- const createContext = (req, res, options) => new ModernServerContext(req, res, options);
3
- export {
4
- ModernServerContext,
5
- createContext
6
- };
@@ -1,10 +0,0 @@
1
- import { Transform } from "stream";
2
- const afterRenderInjectableStream = (fn) => new Transform({
3
- async write(chunk, _, callback) {
4
- this.push(await fn(chunk.toString()));
5
- callback();
6
- }
7
- });
8
- export {
9
- afterRenderInjectableStream
10
- };
@@ -1,72 +0,0 @@
1
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
2
- import cookie from "cookie";
3
- class BaseResponse {
4
- get(key) {
5
- return this.res.getHeader(key);
6
- }
7
- set(key, value) {
8
- return this.res.setHeader(key, value);
9
- }
10
- status(code) {
11
- this.res.statusCode = code;
12
- }
13
- setCookie(key, value, options) {
14
- const cookieValue = this.res.getHeader("set-cookie") || "";
15
- const fmt = Array.isArray(cookieValue) ? cookieValue : [
16
- cookieValue
17
- ].filter(Boolean);
18
- fmt.push(cookie.serialize(key, value, options));
19
- this.res.setHeader("set-cookie", fmt.length === 1 ? fmt[0] : fmt);
20
- }
21
- clearCookie() {
22
- this.res.removeHeader("set-cookie");
23
- }
24
- raw(body, options) {
25
- const { status, headers = {} } = options || {};
26
- Object.entries(headers).forEach(([key, value]) => {
27
- this.res.setHeader(key, value);
28
- });
29
- if (status) {
30
- this.res.statusCode = status;
31
- }
32
- this.res.end(body);
33
- }
34
- constructor(res) {
35
- _define_property(this, "cookies", void 0);
36
- _define_property(this, "res", void 0);
37
- this.res = res;
38
- this.cookies = {
39
- set: this.setCookie.bind(this),
40
- clear: this.clearCookie.bind(this)
41
- };
42
- }
43
- }
44
- class BaseRequest {
45
- getCookie(key) {
46
- return this._cookie[key];
47
- }
48
- constructor(request) {
49
- _define_property(this, "url", void 0);
50
- _define_property(this, "host", void 0);
51
- _define_property(this, "pathname", void 0);
52
- _define_property(this, "query", void 0);
53
- _define_property(this, "headers", void 0);
54
- _define_property(this, "cookie", void 0);
55
- _define_property(this, "cookies", void 0);
56
- _define_property(this, "_cookie", void 0);
57
- this.url = request.url;
58
- this.host = request.host;
59
- this.pathname = request.path;
60
- this.query = request.query;
61
- this.headers = request.headers;
62
- this.cookie = request.headers.cookie || "";
63
- this._cookie = cookie.parse(this.cookie);
64
- this.cookies = {
65
- get: this.getCookie.bind(this)
66
- };
67
- }
68
- }
69
- export {
70
- BaseRequest,
71
- BaseResponse
72
- };
@@ -1,57 +0,0 @@
1
- import { RouteAPI } from "./route";
2
- import { TemplateAPI } from "./template";
3
- import { BaseRequest, BaseResponse } from "./base";
4
- const base = (context) => {
5
- const { res } = context;
6
- return {
7
- response: new BaseResponse(res),
8
- request: new BaseRequest(context),
9
- logger: context.logger,
10
- metrics: context.metrics
11
- };
12
- };
13
- const createAfterMatchContext = (context, entryName) => {
14
- const baseContext = base(context);
15
- return {
16
- ...baseContext,
17
- router: new RouteAPI(entryName)
18
- };
19
- };
20
- const createAfterRenderContext = (context, route, content) => {
21
- const baseContext = base(context);
22
- return {
23
- ...baseContext,
24
- route,
25
- template: new TemplateAPI(content)
26
- };
27
- };
28
- const createAfterStreamingRenderContext = (context, route) => {
29
- const baseContext = base(context);
30
- return (chunk) => {
31
- return {
32
- ...baseContext,
33
- route,
34
- chunk
35
- };
36
- };
37
- };
38
- const createMiddlewareContext = (context) => {
39
- const baseContext = base(context);
40
- baseContext.response.locals = context.res.locals || {};
41
- return {
42
- ...baseContext,
43
- response: baseContext.response,
44
- reporter: context.reporter,
45
- source: {
46
- req: context.req,
47
- res: context.res
48
- }
49
- };
50
- };
51
- export {
52
- base,
53
- createAfterMatchContext,
54
- createAfterRenderContext,
55
- createAfterStreamingRenderContext,
56
- createMiddlewareContext
57
- };
@@ -1,92 +0,0 @@
1
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
2
- import { BaseRequest, BaseResponse } from "./base";
3
- import { RouteAPI } from "./route";
4
- import { TemplateAPI } from "./template";
5
- class ServerResponse {
6
- set statusCode(code) {
7
- this.res.status = code;
8
- }
9
- get statusCode() {
10
- return this.res.status;
11
- }
12
- getHeader(key) {
13
- var _this_res_headers_get;
14
- return (_this_res_headers_get = this.res.headers.get(key)) !== null && _this_res_headers_get !== void 0 ? _this_res_headers_get : void 0;
15
- }
16
- setHeader(key, value) {
17
- this.res.headers.set(key, value);
18
- }
19
- removeHeader(key) {
20
- this.res.headers.delete(key);
21
- }
22
- end(body) {
23
- this.res.body = body;
24
- this.res.isSent = true;
25
- }
26
- constructor(res) {
27
- _define_property(this, "locals", void 0);
28
- _define_property(this, "res", void 0);
29
- this.res = res;
30
- this.locals = res.locals;
31
- }
32
- }
33
- const base = (context) => {
34
- const { req, res, logger, metrics } = context;
35
- const serverResponse = new ServerResponse(res);
36
- const { host, pathname, searchParams } = new URL(req.url);
37
- const headers = {};
38
- req.headers.forEach((value, key) => {
39
- headers[key] = value;
40
- });
41
- return {
42
- response: new BaseResponse(serverResponse),
43
- request: new BaseRequest({
44
- url: req.url,
45
- host,
46
- path: pathname,
47
- headers,
48
- // eslint-disable-next-line node/no-unsupported-features/es-builtins
49
- query: Object.fromEntries(searchParams)
50
- }),
51
- logger,
52
- metrics
53
- };
54
- };
55
- const createAfterMatchContext = (context, entryName) => {
56
- const baseContext = base(context);
57
- return {
58
- ...baseContext,
59
- router: new RouteAPI(entryName)
60
- };
61
- };
62
- const createAfterRenderContext = (context, route, content) => {
63
- const baseContext = base(context);
64
- return {
65
- ...baseContext,
66
- route,
67
- template: new TemplateAPI(content)
68
- };
69
- };
70
- const createMiddlewareContext = (context) => {
71
- const baseContext = base(context);
72
- baseContext.response.locals = context.res.locals;
73
- const { url, headers } = context.req;
74
- const rawRequest = new Request(url, {
75
- headers
76
- });
77
- return {
78
- ...baseContext,
79
- reporter: context.reporter,
80
- response: baseContext.response,
81
- source: {
82
- req: rawRequest,
83
- res: baseContext.response
84
- }
85
- };
86
- };
87
- export {
88
- base,
89
- createAfterMatchContext,
90
- createAfterRenderContext,
91
- createMiddlewareContext
92
- };
@@ -1,24 +0,0 @@
1
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
2
- class RouteAPI {
3
- redirect(url, status = 302) {
4
- this.url = url;
5
- this.status = status;
6
- }
7
- rewrite(entryName) {
8
- this.current = entryName;
9
- }
10
- use(entryName) {
11
- this.rewrite(entryName);
12
- }
13
- constructor(entryName) {
14
- _define_property(this, "current", void 0);
15
- _define_property(this, "status", void 0);
16
- _define_property(this, "url", void 0);
17
- this.current = entryName;
18
- this.status = 200;
19
- this.url = "";
20
- }
21
- }
22
- export {
23
- RouteAPI
24
- };
@@ -1,49 +0,0 @@
1
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
2
- const RegList = {
3
- before: {
4
- head: "<head[^>]*>",
5
- body: "<body[^>]*>"
6
- },
7
- after: {
8
- head: "</head>",
9
- body: "</body>"
10
- }
11
- };
12
- class TemplateAPI {
13
- get() {
14
- return this.content;
15
- }
16
- set(content) {
17
- this.content = content;
18
- }
19
- prependHead(fragment) {
20
- const { head } = RegList.before;
21
- return this.replaceByFunction(new RegExp(head), (beforeHead) => `${beforeHead}${fragment}`);
22
- }
23
- appendHead(fragment) {
24
- const { head } = RegList.after;
25
- return this.replace(head, `${fragment}${head}`);
26
- }
27
- prependBody(fragment) {
28
- const { body } = RegList.before;
29
- return this.replaceByFunction(new RegExp(body), (beforeBody) => `${beforeBody}${fragment}`);
30
- }
31
- appendBody(fragment) {
32
- const { body } = RegList.after;
33
- return this.replace(body, `${fragment}${body}`);
34
- }
35
- replaceByFunction(reg, replacer) {
36
- this.content = this.content.replace(reg, replacer);
37
- }
38
- replace(reg, text) {
39
- this.content = this.content.replace(reg, text);
40
- }
41
- constructor(content) {
42
- _define_property(this, "content", void 0);
43
- this.content = content;
44
- }
45
- }
46
- export {
47
- RegList,
48
- TemplateAPI
49
- };
@@ -1,28 +0,0 @@
1
- import { Transform } from "stream";
2
- import { RegList } from "./template";
3
- const templateInjectableStream = ({ prependHead, appendHead, prependBody, appendBody }) => new Transform({
4
- write(chunk, _, callback) {
5
- let chunk_str = chunk.toString();
6
- if (prependHead) {
7
- const { head } = RegList.before;
8
- chunk_str = chunk_str.replace(new RegExp(head), (beforeHead) => `${beforeHead}${prependHead}`);
9
- }
10
- if (appendHead) {
11
- const { head } = RegList.after;
12
- chunk_str = chunk_str.replace(head, `${appendHead}${head}`);
13
- }
14
- if (prependBody) {
15
- const { body } = RegList.before;
16
- chunk_str = chunk_str.replace(new RegExp(body), (beforeBody) => `${beforeBody}${prependBody}`);
17
- }
18
- if (appendBody) {
19
- const { body } = RegList.after;
20
- chunk_str = chunk_str.replace(body, `${appendBody}${body}`);
21
- }
22
- this.push(chunk_str);
23
- callback();
24
- }
25
- });
26
- export {
27
- templateInjectableStream
28
- };
@@ -1,34 +0,0 @@
1
- import * as path from "path";
2
- import { compatRequire, fs, DEFAULT_SERVER_CONFIG } from "@modern-js/utils";
3
- import mergeDeep from "merge-deep";
4
- const getServerConfigPath = (distDirectory, serverConfigFile = DEFAULT_SERVER_CONFIG) => {
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,9 +0,0 @@
1
- const metrics = {
2
- emitCounter() {
3
- },
4
- emitTimer() {
5
- }
6
- };
7
- export {
8
- metrics
9
- };
@@ -1,25 +0,0 @@
1
- import { parseLinks } from "./parseLinks";
2
- import { transformLinks2String } from "./transformLinks2String";
3
- async function flushServerHeader({ serverConf, ctx, distDir, template, headers }) {
4
- const { ssr: ssrConf } = serverConf || {};
5
- if (typeof ssrConf !== "object") {
6
- return;
7
- }
8
- const { res } = ctx;
9
- const links = await parseLinks({
10
- template,
11
- distDir,
12
- pathname: ctx.path
13
- });
14
- const link = transformLinks2String(links, ssrConf.preload);
15
- res.set("link", link);
16
- for (const key in headers || {}) {
17
- const value = headers === null || headers === void 0 ? void 0 : headers[key];
18
- value && res.set(key, value);
19
- }
20
- res.flushHeaders();
21
- res.modernFlushedHeaders = true;
22
- }
23
- export {
24
- flushServerHeader
25
- };
@@ -1,2 +0,0 @@
1
- export * from "./parseLinks";
2
- export * from "./flushServerHeader";