@modern-js/prod-server 2.35.0 → 2.36.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.
- package/dist/cjs/constants.js +33 -27
- package/dist/cjs/index.js +41 -33
- package/dist/cjs/libs/context/context.js +86 -36
- package/dist/cjs/libs/context/index.js +27 -17
- package/dist/cjs/libs/hook-api/base.js +49 -30
- package/dist/cjs/libs/hook-api/index.js +36 -28
- package/dist/cjs/libs/hook-api/index.worker.js +39 -31
- package/dist/cjs/libs/hook-api/route.js +28 -11
- package/dist/cjs/libs/hook-api/template.js +27 -17
- package/dist/cjs/libs/hook-api/templateForStream.js +31 -14
- package/dist/cjs/libs/loadConfig.js +46 -29
- package/dist/cjs/libs/metrics.js +24 -7
- package/dist/cjs/libs/preload/flushServerHeader.js +30 -13
- package/dist/cjs/libs/preload/index.js +22 -5
- package/dist/cjs/libs/preload/parseLinks.js +54 -30
- package/dist/cjs/libs/preload/shouldFlushServerHeader.js +25 -15
- package/dist/cjs/libs/preload/transformLinks2String.js +27 -11
- package/dist/cjs/libs/proxy.js +29 -19
- package/dist/cjs/libs/render/cache/__tests__/cache.fun.test.js +40 -22
- package/dist/cjs/libs/render/cache/__tests__/cache.test.js +33 -41
- package/dist/cjs/libs/render/cache/__tests__/cacheable.js +24 -7
- package/dist/cjs/libs/render/cache/__tests__/error-configuration.js +24 -7
- package/dist/cjs/libs/render/cache/__tests__/matched-cache.js +24 -7
- package/dist/cjs/libs/render/cache/index.js +30 -18
- package/dist/cjs/libs/render/cache/page-caches/index.js +26 -9
- package/dist/cjs/libs/render/cache/page-caches/lru.js +39 -13
- package/dist/cjs/libs/render/cache/spr.js +62 -44
- package/dist/cjs/libs/render/cache/type.js +15 -3
- package/dist/cjs/libs/render/cache/util.js +49 -36
- package/dist/cjs/libs/render/index.js +56 -30
- package/dist/cjs/libs/render/measure.js +27 -17
- package/dist/cjs/libs/render/reader.js +50 -35
- package/dist/cjs/libs/render/ssr.js +52 -26
- package/dist/cjs/libs/render/static.js +44 -18
- package/dist/cjs/libs/render/type.js +24 -7
- package/dist/cjs/libs/render/utils.js +29 -19
- package/dist/cjs/libs/reporter.js +24 -7
- package/dist/cjs/libs/route/index.js +30 -20
- package/dist/cjs/libs/route/matcher.js +37 -20
- package/dist/cjs/libs/route/route.js +34 -17
- package/dist/cjs/libs/serveFile.js +40 -21
- package/dist/cjs/libs/serverTiming.js +27 -10
- package/dist/cjs/renderHtml.js +17 -20
- package/dist/cjs/server/index.js +74 -50
- package/dist/cjs/server/modernServer.js +136 -113
- package/dist/cjs/server/modernServerSplit.js +29 -12
- package/dist/cjs/type.js +15 -3
- package/dist/cjs/utils.js +41 -38
- package/dist/cjs/workerServer.js +48 -39
- package/dist/esm/constants.js +14 -6
- package/dist/esm/index.js +11 -5
- package/dist/esm/libs/context/context.js +33 -6
- package/dist/esm/libs/context/index.js +5 -2
- package/dist/esm/libs/hook-api/base.js +6 -2
- package/dist/esm/libs/hook-api/index.js +11 -5
- package/dist/esm/libs/hook-api/index.worker.js +16 -10
- package/dist/esm/libs/hook-api/route.js +4 -1
- package/dist/esm/libs/hook-api/template.js +6 -2
- package/dist/esm/libs/hook-api/templateForStream.js +4 -1
- package/dist/esm/libs/loadConfig.js +8 -3
- package/dist/esm/libs/metrics.js +3 -1
- package/dist/esm/libs/preload/flushServerHeader.js +9 -6
- package/dist/esm/libs/preload/parseLinks.js +13 -11
- package/dist/esm/libs/preload/shouldFlushServerHeader.js +6 -2
- package/dist/esm/libs/preload/transformLinks2String.js +5 -3
- package/dist/esm/libs/proxy.js +9 -5
- package/dist/esm/libs/render/cache/__tests__/cache.test.js +12 -12
- package/dist/esm/libs/render/cache/__tests__/cacheable.js +4 -1
- package/dist/esm/libs/render/cache/__tests__/error-configuration.js +4 -1
- package/dist/esm/libs/render/cache/__tests__/matched-cache.js +4 -1
- package/dist/esm/libs/render/cache/index.js +6 -3
- package/dist/esm/libs/render/cache/page-caches/index.js +5 -2
- package/dist/esm/libs/render/cache/page-caches/lru.js +4 -1
- package/dist/esm/libs/render/cache/spr.js +13 -9
- package/dist/esm/libs/render/cache/type.js +0 -1
- package/dist/esm/libs/render/cache/util.js +18 -8
- package/dist/esm/libs/render/index.js +17 -11
- package/dist/esm/libs/render/measure.js +15 -11
- package/dist/esm/libs/render/reader.js +17 -10
- package/dist/esm/libs/render/ssr.js +11 -8
- package/dist/esm/libs/render/static.js +5 -2
- package/dist/esm/libs/render/type.js +4 -1
- package/dist/esm/libs/render/utils.js +6 -2
- package/dist/esm/libs/reporter.js +4 -1
- package/dist/esm/libs/route/index.js +5 -2
- package/dist/esm/libs/route/matcher.js +6 -3
- package/dist/esm/libs/route/route.js +4 -1
- package/dist/esm/libs/serveFile.js +6 -2
- package/dist/esm/libs/serverTiming.js +4 -1
- package/dist/esm/renderHtml.js +133 -124
- package/dist/esm/server/index.js +14 -13
- package/dist/esm/server/modernServer.js +39 -47
- package/dist/esm/server/modernServerSplit.js +4 -1
- package/dist/esm/type.js +0 -1
- package/dist/esm/utils.js +23 -12
- package/dist/esm/workerServer.js +25 -22
- package/dist/esm-node/constants.js +14 -6
- package/dist/esm-node/index.js +11 -5
- package/dist/esm-node/libs/context/context.js +33 -6
- package/dist/esm-node/libs/context/index.js +5 -2
- package/dist/esm-node/libs/hook-api/base.js +6 -2
- package/dist/esm-node/libs/hook-api/index.js +10 -4
- package/dist/esm-node/libs/hook-api/index.worker.js +10 -4
- package/dist/esm-node/libs/hook-api/route.js +4 -1
- package/dist/esm-node/libs/hook-api/template.js +6 -2
- package/dist/esm-node/libs/hook-api/templateForStream.js +4 -1
- package/dist/esm-node/libs/loadConfig.js +8 -3
- package/dist/esm-node/libs/metrics.js +3 -1
- package/dist/esm-node/libs/preload/flushServerHeader.js +6 -3
- package/dist/esm-node/libs/preload/parseLinks.js +11 -9
- package/dist/esm-node/libs/preload/shouldFlushServerHeader.js +6 -2
- package/dist/esm-node/libs/preload/transformLinks2String.js +5 -3
- package/dist/esm-node/libs/proxy.js +6 -2
- package/dist/esm-node/libs/render/cache/__tests__/cache.test.js +7 -12
- package/dist/esm-node/libs/render/cache/__tests__/cacheable.js +4 -1
- package/dist/esm-node/libs/render/cache/__tests__/error-configuration.js +4 -1
- package/dist/esm-node/libs/render/cache/__tests__/matched-cache.js +4 -1
- package/dist/esm-node/libs/render/cache/index.js +5 -3
- package/dist/esm-node/libs/render/cache/page-caches/index.js +4 -1
- package/dist/esm-node/libs/render/cache/page-caches/lru.js +4 -1
- package/dist/esm-node/libs/render/cache/spr.js +7 -4
- package/dist/esm-node/libs/render/cache/type.js +0 -1
- package/dist/esm-node/libs/render/cache/util.js +18 -8
- package/dist/esm-node/libs/render/index.js +7 -3
- package/dist/esm-node/libs/render/measure.js +6 -2
- package/dist/esm-node/libs/render/reader.js +13 -7
- package/dist/esm-node/libs/render/ssr.js +4 -1
- package/dist/esm-node/libs/render/static.js +4 -1
- package/dist/esm-node/libs/render/type.js +4 -1
- package/dist/esm-node/libs/render/utils.js +6 -2
- package/dist/esm-node/libs/reporter.js +4 -1
- package/dist/esm-node/libs/route/index.js +5 -2
- package/dist/esm-node/libs/route/matcher.js +6 -3
- package/dist/esm-node/libs/route/route.js +4 -1
- package/dist/esm-node/libs/serveFile.js +6 -2
- package/dist/esm-node/libs/serverTiming.js +4 -1
- package/dist/esm-node/renderHtml.js +72 -63
- package/dist/esm-node/server/index.js +11 -10
- package/dist/esm-node/server/modernServer.js +29 -28
- package/dist/esm-node/server/modernServerSplit.js +4 -1
- package/dist/esm-node/type.js +0 -1
- package/dist/esm-node/utils.js +20 -9
- package/dist/esm-node/workerServer.js +12 -9
- package/dist/types/libs/context/context.d.ts +2 -1
- package/dist/types/type.d.ts +1 -0
- package/dist/types/utils.d.ts +1 -1
- package/package.json +9 -8
- package/dist/cjs/libs/logger.js +0 -123
- package/dist/esm/libs/logger.js +0 -125
- package/dist/esm-node/libs/logger.js +0 -106
- package/dist/types/libs/logger.d.ts +0 -61
|
@@ -1,46 +1,67 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.
|
|
3
|
-
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var modernServer_exports = {};
|
|
30
|
+
__export(modernServer_exports, {
|
|
31
|
+
ModernServer: () => ModernServer
|
|
4
32
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const _serveFile = require("../libs/serveFile");
|
|
21
|
-
const _utils1 = require("../utils");
|
|
22
|
-
const _reader = /* @__PURE__ */ _interop_require_wildcard._(require("../libs/render/reader"));
|
|
23
|
-
const _proxy = require("../libs/proxy");
|
|
24
|
-
const _context = require("../libs/context");
|
|
25
|
-
const _constants = require("../constants");
|
|
26
|
-
const _hookapi = require("../libs/hook-api");
|
|
33
|
+
module.exports = __toCommonJS(modernServer_exports);
|
|
34
|
+
var import_define_property = require("@swc/helpers/_/_define_property");
|
|
35
|
+
var import_http = require("http");
|
|
36
|
+
var import_path = __toESM(require("path"));
|
|
37
|
+
var import_utils = require("@modern-js/utils");
|
|
38
|
+
var import_time = require("@modern-js/runtime-utils/time");
|
|
39
|
+
var import_route = require("../libs/route");
|
|
40
|
+
var import_render = require("../libs/render");
|
|
41
|
+
var import_serveFile = require("../libs/serveFile");
|
|
42
|
+
var import_utils2 = require("../utils");
|
|
43
|
+
var reader = __toESM(require("../libs/render/reader"));
|
|
44
|
+
var import_proxy = require("../libs/proxy");
|
|
45
|
+
var import_context = require("../libs/context");
|
|
46
|
+
var import_constants = require("../constants");
|
|
47
|
+
var import_hook_api = require("../libs/hook-api");
|
|
27
48
|
const SERVER_DIR = "./server";
|
|
28
49
|
class ModernServer {
|
|
29
50
|
// server prepare
|
|
30
51
|
async onInit(runner, app) {
|
|
31
|
-
var _conf_bff,
|
|
52
|
+
var _conf_bff, _this_conf_output;
|
|
32
53
|
this.runner = runner;
|
|
33
54
|
const { distDir, conf } = this;
|
|
34
55
|
this.initReader();
|
|
35
|
-
(0,
|
|
56
|
+
(0, import_utils2.debug)("final server conf", this.conf);
|
|
36
57
|
if ((_conf_bff = conf.bff) === null || _conf_bff === void 0 ? void 0 : _conf_bff.proxy) {
|
|
37
|
-
const { handlers, handleUpgrade } = (0,
|
|
58
|
+
const { handlers, handleUpgrade } = (0, import_proxy.createProxyHandler)(conf.bff.proxy);
|
|
38
59
|
app && handleUpgrade(app);
|
|
39
60
|
handlers.forEach((handler) => {
|
|
40
61
|
this.addHandler(handler);
|
|
41
62
|
});
|
|
42
63
|
}
|
|
43
|
-
|
|
64
|
+
app === null || app === void 0 ? void 0 : app.on("close", () => {
|
|
44
65
|
this.reader.close();
|
|
45
66
|
});
|
|
46
67
|
const usageRoutes = this.filterRoutes(this.getRoutes());
|
|
@@ -51,7 +72,7 @@ class ModernServer {
|
|
|
51
72
|
this.routeRenderHandler = this.getRenderHandler();
|
|
52
73
|
await this.setupBeforeProdMiddleware();
|
|
53
74
|
this.addHandler(this.setupStaticMiddleware((_this_conf_output = this.conf.output) === null || _this_conf_output === void 0 ? void 0 : _this_conf_output.assetPrefix));
|
|
54
|
-
this.addHandler(
|
|
75
|
+
this.addHandler(import_serveFile.faviconFallbackHandler);
|
|
55
76
|
this.addHandler(this.routeHandler.bind(this));
|
|
56
77
|
this.compose();
|
|
57
78
|
}
|
|
@@ -60,7 +81,7 @@ class ModernServer {
|
|
|
60
81
|
const { distDir, staticGenerate, conf, metaName } = this;
|
|
61
82
|
const ssrConfig = (_this_conf_server = this.conf.server) === null || _this_conf_server === void 0 ? void 0 : _this_conf_server.ssr;
|
|
62
83
|
const forceCSR = typeof ssrConfig === "object" ? ssrConfig.forceCSR : false;
|
|
63
|
-
return (0,
|
|
84
|
+
return (0, import_render.createRenderHandler)({
|
|
64
85
|
distDir,
|
|
65
86
|
staticGenerate,
|
|
66
87
|
forceCSR,
|
|
@@ -79,7 +100,7 @@ class ModernServer {
|
|
|
79
100
|
async render(req, res, url) {
|
|
80
101
|
req.logger = req.logger || this.logger;
|
|
81
102
|
req.metrics = req.metrics || this.metrics;
|
|
82
|
-
const context = (0,
|
|
103
|
+
const context = (0, import_context.createContext)(req, res, {
|
|
83
104
|
metaName: this.metaName
|
|
84
105
|
});
|
|
85
106
|
const matched = this.router.match(url || context.path);
|
|
@@ -98,7 +119,7 @@ class ModernServer {
|
|
|
98
119
|
return result.content.toString();
|
|
99
120
|
}
|
|
100
121
|
async createHTTPServer(handler) {
|
|
101
|
-
return (0,
|
|
122
|
+
return (0, import_http.createServer)(handler);
|
|
102
123
|
}
|
|
103
124
|
/* —————————————————————— function will be overwrite —————————————————————— */
|
|
104
125
|
initReader() {
|
|
@@ -106,9 +127,9 @@ class ModernServer {
|
|
|
106
127
|
}
|
|
107
128
|
async onServerChange({ filepath }) {
|
|
108
129
|
const { pwd } = this;
|
|
109
|
-
const { api, server } =
|
|
110
|
-
const apiPath =
|
|
111
|
-
const serverPath =
|
|
130
|
+
const { api, server } = import_constants.AGGRED_DIR;
|
|
131
|
+
const apiPath = import_path.default.normalize(import_path.default.join(pwd, api));
|
|
132
|
+
const serverPath = import_path.default.normalize(import_path.default.join(pwd, server));
|
|
112
133
|
const onlyApi = filepath.startsWith(apiPath);
|
|
113
134
|
const onlyWeb = filepath.startsWith(serverPath);
|
|
114
135
|
await this.prepareFrameHandler({
|
|
@@ -121,9 +142,9 @@ class ModernServer {
|
|
|
121
142
|
if (this.presetRoutes) {
|
|
122
143
|
return this.presetRoutes;
|
|
123
144
|
}
|
|
124
|
-
const file =
|
|
125
|
-
if (
|
|
126
|
-
const content =
|
|
145
|
+
const file = import_path.default.join(this.distDir, import_utils.ROUTE_SPEC_FILE);
|
|
146
|
+
if (import_utils.fs.existsSync(file)) {
|
|
147
|
+
const content = import_utils.fs.readJSONSync(file);
|
|
127
148
|
return content.routes;
|
|
128
149
|
}
|
|
129
150
|
return [];
|
|
@@ -135,7 +156,7 @@ class ModernServer {
|
|
|
135
156
|
}
|
|
136
157
|
// return 404 page
|
|
137
158
|
render404(context) {
|
|
138
|
-
context.error(
|
|
159
|
+
context.error(import_constants.ERROR_DIGEST.ENOTF, "404 Not Found");
|
|
139
160
|
this.renderErrorPage(context, 404);
|
|
140
161
|
}
|
|
141
162
|
async prepareLoaderHandler(specs, distDir) {
|
|
@@ -152,16 +173,16 @@ class ModernServer {
|
|
|
152
173
|
async prepareFrameHandler(options) {
|
|
153
174
|
const { workDir, runner } = this;
|
|
154
175
|
const { onlyApi, onlyWeb } = options || {};
|
|
155
|
-
const { getMiddlewares, ...collector } = (0,
|
|
176
|
+
const { getMiddlewares, ...collector } = (0, import_utils2.createMiddlewareCollecter)();
|
|
156
177
|
await runner.gather(collector);
|
|
157
178
|
const { api: pluginAPIExt, web: pluginWebExt } = getMiddlewares();
|
|
158
|
-
const serverDir =
|
|
159
|
-
if (await
|
|
160
|
-
const webExtension = (0,
|
|
179
|
+
const serverDir = import_path.default.join(workDir, SERVER_DIR);
|
|
180
|
+
if (await import_utils.fs.pathExists(import_path.default.join(serverDir)) && !onlyApi) {
|
|
181
|
+
const webExtension = (0, import_utils2.mergeExtension)(pluginWebExt);
|
|
161
182
|
this.frameWebHandler = await this.prepareWebHandler(webExtension);
|
|
162
183
|
}
|
|
163
184
|
if (!onlyWeb) {
|
|
164
|
-
const apiExtension = (0,
|
|
185
|
+
const apiExtension = (0, import_utils2.mergeExtension)(pluginAPIExt);
|
|
165
186
|
this.frameAPIHandler = await this.prepareAPIHandler(apiExtension);
|
|
166
187
|
}
|
|
167
188
|
}
|
|
@@ -176,11 +197,10 @@ class ModernServer {
|
|
|
176
197
|
return handler;
|
|
177
198
|
}
|
|
178
199
|
async prepareAPIHandler(extension) {
|
|
179
|
-
var _bff, _bff1;
|
|
180
200
|
const { workDir, runner, conf } = this;
|
|
181
201
|
const { bff } = conf;
|
|
182
|
-
const prefix = (
|
|
183
|
-
const webOnly = await (0,
|
|
202
|
+
const prefix = (bff === null || bff === void 0 ? void 0 : bff.prefix) || "/api";
|
|
203
|
+
const webOnly = await (0, import_utils.isWebOnly)();
|
|
184
204
|
if (webOnly && process.env.NODE_ENV === "development") {
|
|
185
205
|
return (req, res) => {
|
|
186
206
|
res.setHeader("Content-Type", "text/plain");
|
|
@@ -191,7 +211,7 @@ class ModernServer {
|
|
|
191
211
|
pwd: workDir,
|
|
192
212
|
config: extension,
|
|
193
213
|
prefix: Array.isArray(prefix) ? prefix[0] : prefix,
|
|
194
|
-
httpMethodDecider:
|
|
214
|
+
httpMethodDecider: bff === null || bff === void 0 ? void 0 : bff.httpMethodDecider,
|
|
195
215
|
render: this.render.bind(this)
|
|
196
216
|
}, {
|
|
197
217
|
onLast: () => null
|
|
@@ -208,8 +228,8 @@ class ModernServer {
|
|
|
208
228
|
});
|
|
209
229
|
}
|
|
210
230
|
setupStaticMiddleware(prefix) {
|
|
211
|
-
const staticPathRegExp = (0,
|
|
212
|
-
return (0,
|
|
231
|
+
const staticPathRegExp = (0, import_utils2.getStaticReg)(this.conf.output, this.conf.html, prefix);
|
|
232
|
+
return (0, import_serveFile.createStaticFileHandler)([
|
|
213
233
|
{
|
|
214
234
|
path: staticPathRegExp,
|
|
215
235
|
target: this.distDir
|
|
@@ -271,14 +291,14 @@ class ModernServer {
|
|
|
271
291
|
const { distDir } = this;
|
|
272
292
|
const bundles = this.router.getBundles();
|
|
273
293
|
bundles.forEach((bundle) => {
|
|
274
|
-
const filepath =
|
|
275
|
-
if (
|
|
294
|
+
const filepath = import_path.default.join(distDir, bundle);
|
|
295
|
+
if (import_utils.fs.existsSync(filepath)) {
|
|
276
296
|
require(filepath);
|
|
277
297
|
}
|
|
278
298
|
});
|
|
279
299
|
}
|
|
280
300
|
createContext(req, res, options = {}) {
|
|
281
|
-
return (0,
|
|
301
|
+
return (0, import_context.createContext)(req, res, options);
|
|
282
302
|
}
|
|
283
303
|
/* —————————————————————— private function —————————————————————— */
|
|
284
304
|
// handler route.json, include api / csr / ssr
|
|
@@ -292,26 +312,24 @@ class ModernServer {
|
|
|
292
312
|
await reporter.init({
|
|
293
313
|
match: matched
|
|
294
314
|
});
|
|
295
|
-
const end = (0,
|
|
315
|
+
const end = (0, import_time.time)();
|
|
296
316
|
res.on("finish", () => {
|
|
297
317
|
const cost = end();
|
|
298
|
-
reporter.reportTiming(
|
|
318
|
+
reporter.reportTiming(import_constants.ServerReportTimings.SERVER_HANDLE_REQUEST, cost);
|
|
299
319
|
});
|
|
300
320
|
let route = matched.generate(context.url);
|
|
301
321
|
if (route.isApi) {
|
|
302
322
|
await this.handleAPI(context);
|
|
303
323
|
return;
|
|
304
324
|
}
|
|
305
|
-
if (route.entryName) {
|
|
306
|
-
const afterMatchContext = (0,
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
cost && reporter.reportTiming(_constants.ServerReportTimings.SERVER_HOOK_AFTER_MATCH, cost);
|
|
314
|
-
}
|
|
325
|
+
if (route.entryName && this.runMode === import_constants.RUN_MODE.FULL) {
|
|
326
|
+
const afterMatchContext = (0, import_hook_api.createAfterMatchContext)(context, route.entryName);
|
|
327
|
+
const end2 = (0, import_time.time)();
|
|
328
|
+
await this.runner.afterMatch(afterMatchContext, {
|
|
329
|
+
onLast: import_utils2.noop
|
|
330
|
+
});
|
|
331
|
+
const cost = end2();
|
|
332
|
+
cost && reporter.reportTiming(import_constants.ServerReportTimings.SERVER_HOOK_AFTER_MATCH, cost);
|
|
315
333
|
if (this.isSend(res)) {
|
|
316
334
|
return;
|
|
317
335
|
}
|
|
@@ -331,11 +349,11 @@ class ModernServer {
|
|
|
331
349
|
}
|
|
332
350
|
if (this.frameWebHandler) {
|
|
333
351
|
res.locals = res.locals || {};
|
|
334
|
-
const middlewareContext = (0,
|
|
335
|
-
const end2 = (0,
|
|
352
|
+
const middlewareContext = (0, import_hook_api.createMiddlewareContext)(context);
|
|
353
|
+
const end2 = (0, import_time.time)();
|
|
336
354
|
await this.frameWebHandler(middlewareContext);
|
|
337
355
|
const cost = end2();
|
|
338
|
-
cost && reporter.reportTiming(
|
|
356
|
+
cost && reporter.reportTiming(import_constants.ServerReportTimings.SERVER_MIDDLEWARE, cost);
|
|
339
357
|
res.locals = {
|
|
340
358
|
...res.locals,
|
|
341
359
|
...middlewareContext.response.locals
|
|
@@ -354,16 +372,14 @@ class ModernServer {
|
|
|
354
372
|
responseStream.pipe(res);
|
|
355
373
|
return;
|
|
356
374
|
}
|
|
357
|
-
if (route.entryName) {
|
|
358
|
-
const afterRenderContext = (0,
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
cost && reporter.reportTiming(_constants.ServerReportTimings.SERVER_HOOK_AFTER_RENDER, cost);
|
|
366
|
-
}
|
|
375
|
+
if (route.entryName && this.runMode === import_constants.RUN_MODE.FULL) {
|
|
376
|
+
const afterRenderContext = (0, import_hook_api.createAfterRenderContext)(context, response.toString());
|
|
377
|
+
const end2 = (0, import_time.time)();
|
|
378
|
+
await this.runner.afterRender(afterRenderContext, {
|
|
379
|
+
onLast: import_utils2.noop
|
|
380
|
+
});
|
|
381
|
+
const cost = end2();
|
|
382
|
+
cost && reporter.reportTiming(import_constants.ServerReportTimings.SERVER_HOOK_AFTER_RENDER, cost);
|
|
367
383
|
if (this.isSend(res)) {
|
|
368
384
|
return;
|
|
369
385
|
}
|
|
@@ -372,10 +388,14 @@ class ModernServer {
|
|
|
372
388
|
res.end(response);
|
|
373
389
|
}
|
|
374
390
|
isSend(res) {
|
|
375
|
-
if (res.
|
|
391
|
+
if (res.modernFlushedHeaders) {
|
|
392
|
+
if (res.writableFinished) {
|
|
393
|
+
return true;
|
|
394
|
+
}
|
|
395
|
+
} else if (res.headersSent) {
|
|
376
396
|
return true;
|
|
377
397
|
}
|
|
378
|
-
if (res.getHeader("Location") && (0,
|
|
398
|
+
if (res.getHeader("Location") && (0, import_utils2.isRedirect)(res.statusCode)) {
|
|
379
399
|
res.end();
|
|
380
400
|
return true;
|
|
381
401
|
}
|
|
@@ -404,7 +424,7 @@ class ModernServer {
|
|
|
404
424
|
}
|
|
405
425
|
try {
|
|
406
426
|
const result = handler(context, dispatch);
|
|
407
|
-
if ((0,
|
|
427
|
+
if ((0, import_utils.isPromise)(result)) {
|
|
408
428
|
return result.catch(onError);
|
|
409
429
|
}
|
|
410
430
|
} catch (e) {
|
|
@@ -430,8 +450,8 @@ class ModernServer {
|
|
|
430
450
|
} catch (e) {
|
|
431
451
|
this.logger.error(e);
|
|
432
452
|
res.statusCode = 500;
|
|
433
|
-
res.setHeader("content-type",
|
|
434
|
-
return res.end((0,
|
|
453
|
+
res.setHeader("content-type", import_utils.mime.contentType("html"));
|
|
454
|
+
return res.end((0, import_utils2.createErrorDocument)(500, import_constants.ERROR_PAGE_TEXT[500]));
|
|
435
455
|
}
|
|
436
456
|
try {
|
|
437
457
|
return this._handler(context, next);
|
|
@@ -445,13 +465,13 @@ class ModernServer {
|
|
|
445
465
|
res.end();
|
|
446
466
|
}
|
|
447
467
|
onError(context, err) {
|
|
448
|
-
context.error(
|
|
468
|
+
context.error(import_constants.ERROR_DIGEST.EINTER, err);
|
|
449
469
|
this.renderErrorPage(context, 500);
|
|
450
470
|
}
|
|
451
471
|
async renderErrorPage(context, status) {
|
|
452
472
|
const { res } = context;
|
|
453
473
|
context.status = status;
|
|
454
|
-
res.set("content-type",
|
|
474
|
+
res.set("content-type", import_utils.mime.contentType("html"));
|
|
455
475
|
const statusPage = `/${status}`;
|
|
456
476
|
const customErrorPage = `/_error`;
|
|
457
477
|
const matched = this.router.match(statusPage) || this.router.match(customErrorPage);
|
|
@@ -473,44 +493,47 @@ class ModernServer {
|
|
|
473
493
|
}
|
|
474
494
|
}
|
|
475
495
|
}
|
|
476
|
-
const text =
|
|
477
|
-
context.res.end((0,
|
|
496
|
+
const text = import_constants.ERROR_PAGE_TEXT[status] || import_constants.ERROR_PAGE_TEXT[500];
|
|
497
|
+
context.res.end((0, import_utils2.createErrorDocument)(status, text));
|
|
478
498
|
}
|
|
479
499
|
constructor({ pwd, config, routes, staticGenerate, logger, metrics, runMode, proxyTarget, appContext }) {
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
_define_property._(this, "_handler", void 0);
|
|
500
|
+
(0, import_define_property._)(this, "pwd", void 0);
|
|
501
|
+
(0, import_define_property._)(this, "distDir", void 0);
|
|
502
|
+
(0, import_define_property._)(this, "workDir", void 0);
|
|
503
|
+
(0, import_define_property._)(this, "router", void 0);
|
|
504
|
+
(0, import_define_property._)(this, "conf", void 0);
|
|
505
|
+
(0, import_define_property._)(this, "handlers", []);
|
|
506
|
+
(0, import_define_property._)(this, "presetRoutes", void 0);
|
|
507
|
+
(0, import_define_property._)(this, "runner", void 0);
|
|
508
|
+
(0, import_define_property._)(this, "logger", void 0);
|
|
509
|
+
(0, import_define_property._)(this, "metrics", void 0);
|
|
510
|
+
(0, import_define_property._)(this, "runMode", void 0);
|
|
511
|
+
(0, import_define_property._)(this, "reader", reader);
|
|
512
|
+
(0, import_define_property._)(this, "proxyTarget", void 0);
|
|
513
|
+
(0, import_define_property._)(this, "routeRenderHandler", void 0);
|
|
514
|
+
(0, import_define_property._)(this, "staticGenerate", void 0);
|
|
515
|
+
(0, import_define_property._)(this, "metaName", void 0);
|
|
516
|
+
(0, import_define_property._)(this, "loaderHandler", null);
|
|
517
|
+
(0, import_define_property._)(this, "frameWebHandler", null);
|
|
518
|
+
(0, import_define_property._)(this, "frameAPIHandler", null);
|
|
519
|
+
(0, import_define_property._)(this, "_handler", void 0);
|
|
501
520
|
require("ignore-styles");
|
|
502
521
|
this.pwd = pwd;
|
|
503
|
-
this.distDir =
|
|
522
|
+
this.distDir = import_path.default.resolve(pwd, config.output.path || "dist");
|
|
504
523
|
this.workDir = this.distDir;
|
|
505
524
|
this.conf = config;
|
|
506
|
-
(0,
|
|
525
|
+
(0, import_utils2.debug)("server conf", this.conf);
|
|
507
526
|
this.logger = logger;
|
|
508
527
|
this.metrics = metrics;
|
|
509
|
-
this.router = new
|
|
528
|
+
this.router = new import_route.RouteMatchManager();
|
|
510
529
|
this.presetRoutes = routes;
|
|
511
530
|
this.proxyTarget = proxyTarget;
|
|
512
531
|
this.staticGenerate = staticGenerate || false;
|
|
513
|
-
this.runMode = runMode ||
|
|
514
|
-
this.metaName =
|
|
532
|
+
this.runMode = runMode || import_constants.RUN_MODE.FULL;
|
|
533
|
+
this.metaName = appContext === null || appContext === void 0 ? void 0 : appContext.metaName;
|
|
515
534
|
}
|
|
516
535
|
}
|
|
536
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
537
|
+
0 && (module.exports = {
|
|
538
|
+
ModernServer
|
|
539
|
+
});
|
|
@@ -1,15 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
9
15
|
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var modernServerSplit_exports = {};
|
|
20
|
+
__export(modernServerSplit_exports, {
|
|
21
|
+
createProdServer: () => createProdServer
|
|
10
22
|
});
|
|
11
|
-
|
|
12
|
-
|
|
23
|
+
module.exports = __toCommonJS(modernServerSplit_exports);
|
|
24
|
+
var import_modernServer = require("./modernServer");
|
|
25
|
+
class ModernSSRServer extends import_modernServer.ModernServer {
|
|
13
26
|
prepareAPIHandler(_) {
|
|
14
27
|
return null;
|
|
15
28
|
}
|
|
@@ -17,7 +30,7 @@ class ModernSSRServer extends _modernServer.ModernServer {
|
|
|
17
30
|
return this.render404(context);
|
|
18
31
|
}
|
|
19
32
|
}
|
|
20
|
-
class ModernAPIServer extends
|
|
33
|
+
class ModernAPIServer extends import_modernServer.ModernServer {
|
|
21
34
|
prepareWebHandler(_) {
|
|
22
35
|
return null;
|
|
23
36
|
}
|
|
@@ -25,7 +38,7 @@ class ModernAPIServer extends _modernServer.ModernServer {
|
|
|
25
38
|
return routes.filter((route) => route.isApi);
|
|
26
39
|
}
|
|
27
40
|
}
|
|
28
|
-
class ModernWebServer extends
|
|
41
|
+
class ModernWebServer extends import_modernServer.ModernServer {
|
|
29
42
|
async warmupSSRBundle() {
|
|
30
43
|
return null;
|
|
31
44
|
}
|
|
@@ -45,6 +58,10 @@ const createProdServer = (options) => {
|
|
|
45
58
|
} else if (options.webOnly) {
|
|
46
59
|
return new ModernWebServer(options);
|
|
47
60
|
} else {
|
|
48
|
-
return new
|
|
61
|
+
return new import_modernServer.ModernServer(options);
|
|
49
62
|
}
|
|
50
63
|
};
|
|
64
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
65
|
+
0 && (module.exports = {
|
|
66
|
+
createProdServer
|
|
67
|
+
});
|
package/dist/cjs/type.js
CHANGED
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
var type_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(type_exports);
|
package/dist/cjs/utils.js
CHANGED
|
@@ -1,45 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
6
7
|
for (var name in all)
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
return debug;
|
|
15
|
-
},
|
|
16
|
-
mergeExtension: function() {
|
|
17
|
-
return mergeExtension;
|
|
18
|
-
},
|
|
19
|
-
noop: function() {
|
|
20
|
-
return noop;
|
|
21
|
-
},
|
|
22
|
-
createErrorDocument: function() {
|
|
23
|
-
return createErrorDocument;
|
|
24
|
-
},
|
|
25
|
-
createMiddlewareCollecter: function() {
|
|
26
|
-
return createMiddlewareCollecter;
|
|
27
|
-
},
|
|
28
|
-
getStaticReg: function() {
|
|
29
|
-
return getStaticReg;
|
|
30
|
-
},
|
|
31
|
-
prepareFavicons: function() {
|
|
32
|
-
return prepareFavicons;
|
|
33
|
-
},
|
|
34
|
-
headersWithoutCookie: function() {
|
|
35
|
-
return headersWithoutCookie;
|
|
36
|
-
},
|
|
37
|
-
isRedirect: function() {
|
|
38
|
-
return isRedirect;
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
39
15
|
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var utils_exports = {};
|
|
20
|
+
__export(utils_exports, {
|
|
21
|
+
createErrorDocument: () => createErrorDocument,
|
|
22
|
+
createMiddlewareCollecter: () => createMiddlewareCollecter,
|
|
23
|
+
debug: () => debug,
|
|
24
|
+
getStaticReg: () => getStaticReg,
|
|
25
|
+
headersWithoutCookie: () => headersWithoutCookie,
|
|
26
|
+
isRedirect: () => isRedirect,
|
|
27
|
+
mergeExtension: () => mergeExtension,
|
|
28
|
+
noop: () => noop,
|
|
29
|
+
prepareFavicons: () => prepareFavicons
|
|
40
30
|
});
|
|
41
|
-
|
|
42
|
-
|
|
31
|
+
module.exports = __toCommonJS(utils_exports);
|
|
32
|
+
var import_utils = require("@modern-js/utils");
|
|
33
|
+
const debug = (0, import_utils.createDebugger)("prod-server");
|
|
43
34
|
const mergeExtension = (users) => {
|
|
44
35
|
const output = [];
|
|
45
36
|
return {
|
|
@@ -159,3 +150,15 @@ const isRedirect = (code) => {
|
|
|
159
150
|
308
|
|
160
151
|
].includes(code);
|
|
161
152
|
};
|
|
153
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
154
|
+
0 && (module.exports = {
|
|
155
|
+
createErrorDocument,
|
|
156
|
+
createMiddlewareCollecter,
|
|
157
|
+
debug,
|
|
158
|
+
getStaticReg,
|
|
159
|
+
headersWithoutCookie,
|
|
160
|
+
isRedirect,
|
|
161
|
+
mergeExtension,
|
|
162
|
+
noop,
|
|
163
|
+
prepareFavicons
|
|
164
|
+
});
|