@modern-js/server-core 2.54.6 → 2.56.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/adapters/node/plugins/resource.js +1 -1
- package/dist/cjs/constants.js +12 -9
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/plugins/customServer/index.js +5 -5
- package/dist/cjs/plugins/index.js +7 -3
- package/dist/cjs/plugins/log.js +3 -3
- package/dist/cjs/plugins/monitors.js +183 -0
- package/dist/cjs/plugins/render/dataHandler.js +3 -2
- package/dist/cjs/plugins/render/index.js +6 -4
- package/dist/cjs/plugins/render/render.js +32 -15
- package/dist/cjs/plugins/render/ssrCache.js +72 -83
- package/dist/cjs/plugins/render/ssrRender.js +40 -145
- package/dist/cjs/types/requestHandler.js +16 -0
- package/dist/cjs/utils/error.js +3 -3
- package/dist/cjs/utils/transformStream.js +1 -1
- package/dist/esm/adapters/node/plugins/resource.js +1 -1
- package/dist/esm/constants.js +10 -8
- package/dist/esm/index.js +1 -0
- package/dist/esm/plugins/customServer/index.js +8 -8
- package/dist/esm/plugins/index.js +4 -2
- package/dist/esm/plugins/log.js +4 -4
- package/dist/esm/plugins/monitors.js +261 -0
- package/dist/esm/plugins/render/dataHandler.js +4 -3
- package/dist/esm/plugins/render/index.js +6 -4
- package/dist/esm/plugins/render/render.js +51 -24
- package/dist/esm/plugins/render/ssrCache.js +101 -131
- package/dist/esm/plugins/render/ssrRender.js +55 -175
- package/dist/esm/types/requestHandler.js +0 -0
- package/dist/esm/utils/error.js +3 -3
- package/dist/esm/utils/transformStream.js +16 -2
- package/dist/esm-node/adapters/node/plugins/resource.js +1 -1
- package/dist/esm-node/constants.js +10 -8
- package/dist/esm-node/index.js +1 -0
- package/dist/esm-node/plugins/customServer/index.js +6 -6
- package/dist/esm-node/plugins/index.js +4 -2
- package/dist/esm-node/plugins/log.js +3 -3
- package/dist/esm-node/plugins/monitors.js +156 -0
- package/dist/esm-node/plugins/render/dataHandler.js +3 -2
- package/dist/esm-node/plugins/render/index.js +5 -3
- package/dist/esm-node/plugins/render/render.js +33 -16
- package/dist/esm-node/plugins/render/ssrCache.js +73 -74
- package/dist/esm-node/plugins/render/ssrRender.js +43 -137
- package/dist/esm-node/types/requestHandler.js +0 -0
- package/dist/esm-node/utils/error.js +3 -3
- package/dist/esm-node/utils/transformStream.js +1 -1
- package/dist/types/constants.d.ts +2 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/plugins/index.d.ts +1 -1
- package/dist/types/plugins/monitors.d.ts +6 -0
- package/dist/types/plugins/render/dataHandler.d.ts +1 -1
- package/dist/types/plugins/render/render.d.ts +3 -2
- package/dist/types/plugins/render/ssrCache.d.ts +7 -11
- package/dist/types/plugins/render/ssrRender.d.ts +10 -10
- package/dist/types/types/config/html.d.ts +11 -0
- package/dist/types/types/config/output.d.ts +8 -0
- package/dist/types/types/render.d.ts +7 -4
- package/dist/types/types/requestHandler.d.ts +41 -0
- package/dist/types/types/server.d.ts +13 -4
- package/dist/types/utils/error.d.ts +2 -2
- package/dist/types/utils/transformStream.d.ts +1 -1
- package/package.json +7 -8
- package/dist/cjs/plugins/monitor.js +0 -87
- package/dist/cjs/plugins/render/serverTiming.js +0 -40
- package/dist/esm/plugins/monitor.js +0 -120
- package/dist/esm/plugins/render/serverTiming.js +0 -21
- package/dist/esm-node/plugins/monitor.js +0 -62
- package/dist/esm-node/plugins/render/serverTiming.js +0 -16
- package/dist/types/plugins/monitor.d.ts +0 -9
- package/dist/types/plugins/render/serverTiming.d.ts +0 -7
|
@@ -77,7 +77,7 @@ const loadBundle = async (filepath, logger) => {
|
|
|
77
77
|
return void 0;
|
|
78
78
|
}
|
|
79
79
|
return dynamicImport(filepath).catch((e) => {
|
|
80
|
-
logger.error(`Load ${filepath} bundle failed, error = %s`, e instanceof Error ? e.stack || e.message : e);
|
|
80
|
+
logger === null || logger === void 0 ? void 0 : logger.error(`Load ${filepath} bundle failed, error = %s`, e instanceof Error ? e.stack || e.message : e);
|
|
81
81
|
return void 0;
|
|
82
82
|
});
|
|
83
83
|
};
|
package/dist/cjs/constants.js
CHANGED
|
@@ -20,7 +20,8 @@ var constants_exports = {};
|
|
|
20
20
|
__export(constants_exports, {
|
|
21
21
|
AGGRED_DIR: () => AGGRED_DIR,
|
|
22
22
|
REPLACE_REG: () => REPLACE_REG,
|
|
23
|
-
|
|
23
|
+
SERVER_TIMING: () => SERVER_TIMING,
|
|
24
|
+
ServerTimings: () => ServerTimings,
|
|
24
25
|
X_MODERNJS_RENDER: () => X_MODERNJS_RENDER,
|
|
25
26
|
X_RENDER_CACHE: () => X_RENDER_CACHE
|
|
26
27
|
});
|
|
@@ -42,20 +43,22 @@ const REPLACE_REG = {
|
|
|
42
43
|
body: "</body>"
|
|
43
44
|
}
|
|
44
45
|
};
|
|
45
|
-
var
|
|
46
|
-
(function(
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
})(
|
|
46
|
+
var ServerTimings;
|
|
47
|
+
(function(ServerTimings2) {
|
|
48
|
+
ServerTimings2["SERVER_HANDLE_REQUEST"] = "server-handle-request";
|
|
49
|
+
ServerTimings2["SERVER_MIDDLEWARE"] = "server-middleware";
|
|
50
|
+
ServerTimings2["SERVER_HOOK_AFTER_RENDER"] = "server-hook-after-render";
|
|
51
|
+
ServerTimings2["SERVER_HOOK_AFTER_MATCH"] = "server-hook-after-match";
|
|
52
|
+
})(ServerTimings || (ServerTimings = {}));
|
|
53
|
+
const SERVER_TIMING = "Server-Timing";
|
|
52
54
|
const X_RENDER_CACHE = "x-render-cache";
|
|
53
55
|
const X_MODERNJS_RENDER = "x-modernjs-render";
|
|
54
56
|
// Annotate the CommonJS export names for ESM import in node:
|
|
55
57
|
0 && (module.exports = {
|
|
56
58
|
AGGRED_DIR,
|
|
57
59
|
REPLACE_REG,
|
|
58
|
-
|
|
60
|
+
SERVER_TIMING,
|
|
61
|
+
ServerTimings,
|
|
59
62
|
X_MODERNJS_RENDER,
|
|
60
63
|
X_RENDER_CACHE
|
|
61
64
|
});
|
package/dist/cjs/index.js
CHANGED
|
@@ -36,6 +36,7 @@ __reExport(src_exports, require("./types/plugin"), module.exports);
|
|
|
36
36
|
__reExport(src_exports, require("./types/render"), module.exports);
|
|
37
37
|
__reExport(src_exports, require("@modern-js/plugin"), module.exports);
|
|
38
38
|
__reExport(src_exports, require("./types/config"), module.exports);
|
|
39
|
+
__reExport(src_exports, require("./types/requestHandler"), module.exports);
|
|
39
40
|
// Annotate the CommonJS export names for ESM import in node:
|
|
40
41
|
0 && (module.exports = {
|
|
41
42
|
AGGRED_DIR,
|
|
@@ -48,5 +49,6 @@ __reExport(src_exports, require("./types/config"), module.exports);
|
|
|
48
49
|
...require("./types/plugin"),
|
|
49
50
|
...require("./types/render"),
|
|
50
51
|
...require("@modern-js/plugin"),
|
|
51
|
-
...require("./types/config")
|
|
52
|
+
...require("./types/config"),
|
|
53
|
+
...require("./types/requestHandler")
|
|
52
54
|
});
|
|
@@ -40,7 +40,7 @@ class CustomServer {
|
|
|
40
40
|
getHookMiddleware(entryName, routes) {
|
|
41
41
|
return async (c, next) => {
|
|
42
42
|
const routeInfo = routes.find((route) => route.entryName === entryName);
|
|
43
|
-
const
|
|
43
|
+
const monitors = c.get("monitors");
|
|
44
44
|
const baseHookCtx = (0, import_base.createBaseHookContext)(c);
|
|
45
45
|
const afterMatchCtx = (0, import_context.getAfterMatchCtx)(entryName, baseHookCtx);
|
|
46
46
|
const getCost = (0, import_time.time)();
|
|
@@ -48,7 +48,7 @@ class CustomServer {
|
|
|
48
48
|
onLast: noop
|
|
49
49
|
});
|
|
50
50
|
const cost = getCost();
|
|
51
|
-
cost && (
|
|
51
|
+
cost && (monitors === null || monitors === void 0 ? void 0 : monitors.timing(import_constants.ServerTimings.SERVER_HOOK_AFTER_MATCH, cost));
|
|
52
52
|
const { url, status } = afterMatchCtx.router;
|
|
53
53
|
if (url) {
|
|
54
54
|
return c.redirect(url, status);
|
|
@@ -88,7 +88,7 @@ class CustomServer {
|
|
|
88
88
|
onLast: noop
|
|
89
89
|
});
|
|
90
90
|
const cost2 = getCost2();
|
|
91
|
-
cost2 && (
|
|
91
|
+
cost2 && (monitors === null || monitors === void 0 ? void 0 : monitors.timing(import_constants.ServerTimings.SERVER_HOOK_AFTER_RENDER, cost2));
|
|
92
92
|
if (afterRenderCtx.response.private_overrided) {
|
|
93
93
|
return void 0;
|
|
94
94
|
}
|
|
@@ -107,7 +107,7 @@ class CustomServer {
|
|
|
107
107
|
}
|
|
108
108
|
return async (c, next) => {
|
|
109
109
|
var _c_env_node_res, _c_env_node, _c_env;
|
|
110
|
-
const
|
|
110
|
+
const monitors = c.get("monitors");
|
|
111
111
|
const locals = {};
|
|
112
112
|
const resArgs = {
|
|
113
113
|
headers: new Headers()
|
|
@@ -116,7 +116,7 @@ class CustomServer {
|
|
|
116
116
|
const getCost = (0, import_time.time)();
|
|
117
117
|
await serverMiddleware(customMiddlewareCtx);
|
|
118
118
|
const cost = getCost();
|
|
119
|
-
cost && (
|
|
119
|
+
cost && (monitors === null || monitors === void 0 ? void 0 : monitors.timing(import_constants.ServerTimings.SERVER_MIDDLEWARE, cost));
|
|
120
120
|
c.set("locals", locals);
|
|
121
121
|
if (isRedirect(resArgs.headers, resArgs.status)) {
|
|
122
122
|
return c.redirect(resArgs.headers.get("Location") || "", resArgs.status || 302);
|
|
@@ -21,8 +21,10 @@ __export(plugins_exports, {
|
|
|
21
21
|
faviconPlugin: () => import_favicon.faviconPlugin,
|
|
22
22
|
getLoaderCtx: () => import_customServer.getLoaderCtx,
|
|
23
23
|
getRenderHandler: () => import_render.getRenderHandler,
|
|
24
|
+
initMonitorsPlugin: () => import_monitors.initMonitorsPlugin,
|
|
25
|
+
injectServerTiming: () => import_monitors.injectServerTiming,
|
|
26
|
+
injectloggerPluigin: () => import_monitors.injectloggerPluigin,
|
|
24
27
|
logPlugin: () => import_log.logPlugin,
|
|
25
|
-
monitorPlugin: () => import_monitor.monitorPlugin,
|
|
26
28
|
processedByPlugin: () => import_processedBy.processedByPlugin,
|
|
27
29
|
renderPlugin: () => import_render.renderPlugin
|
|
28
30
|
});
|
|
@@ -32,14 +34,16 @@ var import_favicon = require("./favicon");
|
|
|
32
34
|
var import_processedBy = require("./processedBy");
|
|
33
35
|
var import_customServer = require("./customServer");
|
|
34
36
|
var import_log = require("./log");
|
|
35
|
-
var
|
|
37
|
+
var import_monitors = require("./monitors");
|
|
36
38
|
// Annotate the CommonJS export names for ESM import in node:
|
|
37
39
|
0 && (module.exports = {
|
|
38
40
|
faviconPlugin,
|
|
39
41
|
getLoaderCtx,
|
|
40
42
|
getRenderHandler,
|
|
43
|
+
initMonitorsPlugin,
|
|
44
|
+
injectServerTiming,
|
|
45
|
+
injectloggerPluigin,
|
|
41
46
|
logPlugin,
|
|
42
|
-
monitorPlugin,
|
|
43
47
|
processedByPlugin,
|
|
44
48
|
renderPlugin
|
|
45
49
|
});
|
package/dist/cjs/plugins/log.js
CHANGED
|
@@ -62,13 +62,13 @@ function log(fn, prefix, method, path, status = 0, elapsed) {
|
|
|
62
62
|
function logHandler() {
|
|
63
63
|
return async function logger(c, next) {
|
|
64
64
|
const { method } = c.req;
|
|
65
|
-
const
|
|
66
|
-
if (!
|
|
65
|
+
const monitors = c.get("monitors");
|
|
66
|
+
if (!monitors) {
|
|
67
67
|
await next();
|
|
68
68
|
return;
|
|
69
69
|
}
|
|
70
70
|
const path = (0, import_utils.getPathname)(c.req.raw);
|
|
71
|
-
const logFn =
|
|
71
|
+
const logFn = monitors.debug;
|
|
72
72
|
log(logFn, "<--", method, path);
|
|
73
73
|
const start = Date.now();
|
|
74
74
|
await next();
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
"use strict";
|
|
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 });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var monitors_exports = {};
|
|
20
|
+
__export(monitors_exports, {
|
|
21
|
+
initMonitorsPlugin: () => initMonitorsPlugin,
|
|
22
|
+
initReporter: () => initReporter,
|
|
23
|
+
injectServerTiming: () => injectServerTiming,
|
|
24
|
+
injectloggerPluigin: () => injectloggerPluigin
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(monitors_exports);
|
|
27
|
+
var import_time = require("@modern-js/runtime-utils/time");
|
|
28
|
+
var import_constants = require("../constants");
|
|
29
|
+
function createMonitors() {
|
|
30
|
+
const coreMonitors = [];
|
|
31
|
+
const log = (level, message, args) => {
|
|
32
|
+
const event = {
|
|
33
|
+
type: "log",
|
|
34
|
+
payload: {
|
|
35
|
+
level,
|
|
36
|
+
message,
|
|
37
|
+
args
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
coreMonitors.forEach((monitor) => monitor(event));
|
|
41
|
+
};
|
|
42
|
+
const mointors = {
|
|
43
|
+
push(monitor) {
|
|
44
|
+
coreMonitors.push(monitor);
|
|
45
|
+
},
|
|
46
|
+
error(message, ...args) {
|
|
47
|
+
log("error", message, args);
|
|
48
|
+
},
|
|
49
|
+
warn(message, ...args) {
|
|
50
|
+
log("warn", message, args);
|
|
51
|
+
},
|
|
52
|
+
debug(message, ...args) {
|
|
53
|
+
log("debug", message, args);
|
|
54
|
+
},
|
|
55
|
+
info(message, ...args) {
|
|
56
|
+
log("info", message, args);
|
|
57
|
+
},
|
|
58
|
+
timing(name, dur, desc) {
|
|
59
|
+
const event = {
|
|
60
|
+
type: "timing",
|
|
61
|
+
payload: {
|
|
62
|
+
name,
|
|
63
|
+
dur,
|
|
64
|
+
desc
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
coreMonitors.forEach((monitor) => monitor(event));
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
return mointors;
|
|
71
|
+
}
|
|
72
|
+
const initMonitorsPlugin = () => ({
|
|
73
|
+
name: "@modern-js/init-mointor",
|
|
74
|
+
setup(api) {
|
|
75
|
+
return {
|
|
76
|
+
prepare() {
|
|
77
|
+
const { middlewares } = api.useAppContext();
|
|
78
|
+
middlewares.push({
|
|
79
|
+
name: "init-monitor",
|
|
80
|
+
handler: async (c, next) => {
|
|
81
|
+
if (!c.get("monitors")) {
|
|
82
|
+
const monitors = createMonitors();
|
|
83
|
+
c.set("monitors", monitors);
|
|
84
|
+
}
|
|
85
|
+
return next();
|
|
86
|
+
},
|
|
87
|
+
order: "pre"
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
const injectloggerPluigin = (logger) => ({
|
|
94
|
+
name: "@modern-js/inject-logger",
|
|
95
|
+
setup(api) {
|
|
96
|
+
return {
|
|
97
|
+
prepare() {
|
|
98
|
+
const { middlewares } = api.useAppContext();
|
|
99
|
+
middlewares.push({
|
|
100
|
+
name: "inject-logger",
|
|
101
|
+
handler: async (c, next) => {
|
|
102
|
+
if (!c.get("logger")) {
|
|
103
|
+
c.set("logger", logger);
|
|
104
|
+
}
|
|
105
|
+
const pathname = c.req.path;
|
|
106
|
+
const loggerMonitor = (event) => {
|
|
107
|
+
if (event.type === "log") {
|
|
108
|
+
const { level, message, args } = event.payload;
|
|
109
|
+
logger[level](message, ...args || []);
|
|
110
|
+
}
|
|
111
|
+
if (event.type === "timing") {
|
|
112
|
+
const { name, dur, desc } = event.payload;
|
|
113
|
+
if (desc) {
|
|
114
|
+
logger.debug(`%s Debug - ${name}, cost: %s, req.url = %s `, desc, dur, pathname);
|
|
115
|
+
} else {
|
|
116
|
+
logger.debug(`Debug - ${name}, cost: %s, req.url = %s`, dur, pathname);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
const monitors = c.get("monitors");
|
|
121
|
+
monitors === null || monitors === void 0 ? void 0 : monitors.push(loggerMonitor);
|
|
122
|
+
return next();
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
const injectServerTiming = (metaName = "modern-js") => ({
|
|
130
|
+
name: "@modern-js/inject-server-timing",
|
|
131
|
+
setup(api) {
|
|
132
|
+
return {
|
|
133
|
+
prepare() {
|
|
134
|
+
const { middlewares } = api.useAppContext();
|
|
135
|
+
middlewares.push({
|
|
136
|
+
name: "inject-server-timing",
|
|
137
|
+
handler: async (c, next) => {
|
|
138
|
+
const serverTimings = [];
|
|
139
|
+
const timingMonitor = (event) => {
|
|
140
|
+
if (event.type === "timing") {
|
|
141
|
+
serverTimings.push(event.payload);
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
const monitors = c.get("monitors");
|
|
145
|
+
monitors === null || monitors === void 0 ? void 0 : monitors.push(timingMonitor);
|
|
146
|
+
await next();
|
|
147
|
+
serverTimings.forEach((serverTiming) => {
|
|
148
|
+
const { name, desc, dur } = serverTiming;
|
|
149
|
+
const _name = `bd-${metaName}-${name}`;
|
|
150
|
+
const value = `${_name};${desc ? `decs="${desc}";` : ""} dur=${dur}`;
|
|
151
|
+
c.header(import_constants.SERVER_TIMING, value, {
|
|
152
|
+
append: true
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
function initReporter(entryName) {
|
|
162
|
+
return async (c, next) => {
|
|
163
|
+
const reporter = c.get("reporter");
|
|
164
|
+
if (!reporter) {
|
|
165
|
+
await next();
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
await reporter.init({
|
|
169
|
+
entryName
|
|
170
|
+
});
|
|
171
|
+
const getCost = (0, import_time.time)();
|
|
172
|
+
await next();
|
|
173
|
+
const cost = getCost();
|
|
174
|
+
reporter.reportTiming(import_constants.ServerTimings.SERVER_HANDLE_REQUEST, cost);
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
178
|
+
0 && (module.exports = {
|
|
179
|
+
initMonitorsPlugin,
|
|
180
|
+
initReporter,
|
|
181
|
+
injectServerTiming,
|
|
182
|
+
injectloggerPluigin
|
|
183
|
+
});
|
|
@@ -22,7 +22,7 @@ __export(dataHandler_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(dataHandler_exports);
|
|
24
24
|
var import_constants = require("@modern-js/utils/universal/constants");
|
|
25
|
-
const dataHandler = async (request, { routeInfo, serverRoutes, reporter,
|
|
25
|
+
const dataHandler = async (request, { routeInfo, serverRoutes, reporter, onError, onTiming, serverManifest }) => {
|
|
26
26
|
var _serverManifest_loaderBundles;
|
|
27
27
|
const serverLoaderModule = serverManifest === null || serverManifest === void 0 ? void 0 : (_serverManifest_loaderBundles = serverManifest.loaderBundles) === null || _serverManifest_loaderBundles === void 0 ? void 0 : _serverManifest_loaderBundles[routeInfo.entryName || import_constants.MAIN_ENTRY_NAME];
|
|
28
28
|
if (!serverLoaderModule) {
|
|
@@ -33,9 +33,10 @@ const dataHandler = async (request, { routeInfo, serverRoutes, reporter, logger,
|
|
|
33
33
|
request,
|
|
34
34
|
serverRoutes,
|
|
35
35
|
context: {
|
|
36
|
-
logger,
|
|
37
36
|
reporter
|
|
38
37
|
},
|
|
38
|
+
onTiming,
|
|
39
|
+
onError,
|
|
39
40
|
routes
|
|
40
41
|
});
|
|
41
42
|
return response;
|
|
@@ -23,7 +23,7 @@ __export(render_exports, {
|
|
|
23
23
|
});
|
|
24
24
|
module.exports = __toCommonJS(render_exports);
|
|
25
25
|
var import_constants = require("@modern-js/utils/universal/constants");
|
|
26
|
-
var
|
|
26
|
+
var import_monitors = require("../monitors");
|
|
27
27
|
var import_utils = require("../../utils");
|
|
28
28
|
var import_customServer = require("../customServer");
|
|
29
29
|
var import_render = require("./render");
|
|
@@ -56,7 +56,7 @@ const renderPlugin = (options = {}) => ({
|
|
|
56
56
|
const urlPath = originUrlPath.endsWith("/") ? `${originUrlPath}*` : `${originUrlPath}/*`;
|
|
57
57
|
middlewares.push({
|
|
58
58
|
name: "init-reporter",
|
|
59
|
-
handler: (0,
|
|
59
|
+
handler: (0, import_monitors.initReporter)(entryName || import_constants.MAIN_ENTRY_NAME)
|
|
60
60
|
});
|
|
61
61
|
const customServerHookMiddleware = customServer.getHookMiddleware(entryName || "main", routes);
|
|
62
62
|
middlewares.push({
|
|
@@ -88,6 +88,7 @@ function createRenderHandler(render) {
|
|
|
88
88
|
var _c_env_node;
|
|
89
89
|
const logger = c.get("logger");
|
|
90
90
|
const reporter = c.get("reporter");
|
|
91
|
+
const monitors = c.get("monitors");
|
|
91
92
|
const templates = c.get("templates") || {};
|
|
92
93
|
const serverManifest = c.get("serverManifest") || {};
|
|
93
94
|
const locals = c.get("locals");
|
|
@@ -96,8 +97,9 @@ function createRenderHandler(render) {
|
|
|
96
97
|
const request = c.req.raw;
|
|
97
98
|
const nodeReq = (_c_env_node = c.env.node) === null || _c_env_node === void 0 ? void 0 : _c_env_node.req;
|
|
98
99
|
const res = await render(request, {
|
|
99
|
-
logger,
|
|
100
100
|
nodeReq,
|
|
101
|
+
monitors,
|
|
102
|
+
logger,
|
|
101
103
|
reporter,
|
|
102
104
|
templates,
|
|
103
105
|
metrics,
|
|
@@ -120,7 +122,7 @@ async function getRenderHandler({ pwd, routes, config, cacheConfig, metaName, st
|
|
|
120
122
|
const render = (0, import_render.createRender)({
|
|
121
123
|
routes,
|
|
122
124
|
pwd,
|
|
123
|
-
|
|
125
|
+
config,
|
|
124
126
|
staticGenerate,
|
|
125
127
|
cacheConfig,
|
|
126
128
|
forceCSR,
|
|
@@ -56,9 +56,17 @@ function matchRoute(router, request) {
|
|
|
56
56
|
const result = matched[0][0];
|
|
57
57
|
return result || [];
|
|
58
58
|
}
|
|
59
|
-
|
|
59
|
+
function getHeadersWithoutCookie(headers) {
|
|
60
|
+
const _headers = {
|
|
61
|
+
...headers,
|
|
62
|
+
cookie: void 0
|
|
63
|
+
};
|
|
64
|
+
delete _headers.cookie;
|
|
65
|
+
return _headers;
|
|
66
|
+
}
|
|
67
|
+
async function createRender({ routes, pwd, metaName, staticGenerate, cacheConfig, forceCSR, config, onFallback: onFallbackFn }) {
|
|
60
68
|
const router = getRouter(routes);
|
|
61
|
-
return async (req, { logger,
|
|
69
|
+
return async (req, { logger, reporter, metrics, monitors, nodeReq, templates, serverManifest, locals, loaderContext }) => {
|
|
62
70
|
const [routeInfo, params] = matchRoute(router, req);
|
|
63
71
|
const onFallback = async (reason, error) => {
|
|
64
72
|
return onFallbackFn === null || onFallbackFn === void 0 ? void 0 : onFallbackFn(reason, {
|
|
@@ -85,8 +93,16 @@ async function createRender({ routes, pwd, metaName, staticGenerate, cacheConfig
|
|
|
85
93
|
});
|
|
86
94
|
}
|
|
87
95
|
const renderMode = await getRenderMode(req, metaName || "modern-js", routeInfo.isSSR, forceCSR, nodeReq, onFallback);
|
|
88
|
-
const
|
|
89
|
-
|
|
96
|
+
const pathname = (0, import_utils.getPathname)(req);
|
|
97
|
+
const headerData = (0, import_utils.parseHeaders)(req);
|
|
98
|
+
const onError = (e) => {
|
|
99
|
+
monitors === null || monitors === void 0 ? void 0 : monitors.error(`SSR Error - ${e instanceof Error ? e.name : e}, error = %s, req.url = %s, req.headers = %o`, e instanceof Error ? e.stack || e.message : e, pathname, getHeadersWithoutCookie(headerData));
|
|
100
|
+
};
|
|
101
|
+
const onTiming = (name, dur) => {
|
|
102
|
+
monitors === null || monitors === void 0 ? void 0 : monitors.timing(name, dur, "SSR");
|
|
103
|
+
};
|
|
104
|
+
const onBoundError = async (e) => {
|
|
105
|
+
(0, import_utils.onError)(import_utils.ErrorDigest.ERENDER, e, monitors, req);
|
|
90
106
|
await (onFallback === null || onFallback === void 0 ? void 0 : onFallback("error", e));
|
|
91
107
|
};
|
|
92
108
|
const renderOptions = {
|
|
@@ -94,32 +110,33 @@ async function createRender({ routes, pwd, metaName, staticGenerate, cacheConfig
|
|
|
94
110
|
html,
|
|
95
111
|
routeInfo,
|
|
96
112
|
staticGenerate: staticGenerate || false,
|
|
97
|
-
|
|
98
|
-
nonce,
|
|
99
|
-
logger,
|
|
113
|
+
config,
|
|
100
114
|
nodeReq,
|
|
101
115
|
cacheConfig,
|
|
102
116
|
reporter,
|
|
103
117
|
serverRoutes: routes,
|
|
104
118
|
params,
|
|
119
|
+
logger,
|
|
120
|
+
metrics,
|
|
105
121
|
locals,
|
|
106
122
|
serverManifest,
|
|
107
|
-
|
|
108
|
-
|
|
123
|
+
loaderContext: loaderContext || /* @__PURE__ */ new Map(),
|
|
124
|
+
onError,
|
|
125
|
+
onTiming
|
|
109
126
|
};
|
|
127
|
+
let response;
|
|
110
128
|
switch (renderMode) {
|
|
111
129
|
case "data":
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
response = await renderHandler(req, renderOptions, "ssr", onError);
|
|
115
|
-
}
|
|
116
|
-
return response;
|
|
130
|
+
response = await (0, import_dataHandler.dataHandler)(req, renderOptions) || await renderHandler(req, renderOptions, "ssr", onBoundError);
|
|
131
|
+
break;
|
|
117
132
|
case "ssr":
|
|
118
133
|
case "csr":
|
|
119
|
-
|
|
134
|
+
response = await renderHandler(req, renderOptions, renderMode, onBoundError);
|
|
135
|
+
break;
|
|
120
136
|
default:
|
|
121
137
|
throw new Error(`Unknown render mode: ${renderMode}`);
|
|
122
138
|
}
|
|
139
|
+
return response;
|
|
123
140
|
};
|
|
124
141
|
}
|
|
125
142
|
async function renderHandler(request, options, mode, onError) {
|