@modern-js/server-core 2.65.1 → 2.65.2

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 (41) hide show
  1. package/dist/cjs/plugins/customServer/context.js +0 -2
  2. package/dist/cjs/plugins/customServer/index.js +2 -12
  3. package/dist/cjs/plugins/default.js +4 -2
  4. package/dist/cjs/plugins/index.js +2 -2
  5. package/dist/cjs/plugins/monitors.js +30 -15
  6. package/dist/cjs/plugins/render/dataHandler.js +2 -1
  7. package/dist/cjs/plugins/render/index.js +4 -10
  8. package/dist/cjs/plugins/render/render.js +1 -0
  9. package/dist/cjs/plugins/render/ssrRender.js +2 -1
  10. package/dist/cjs/plugins/route.js +65 -0
  11. package/dist/esm/plugins/customServer/context.js +0 -2
  12. package/dist/esm/plugins/customServer/index.js +4 -29
  13. package/dist/esm/plugins/default.js +5 -3
  14. package/dist/esm/plugins/index.js +2 -2
  15. package/dist/esm/plugins/monitors.js +46 -22
  16. package/dist/esm/plugins/render/dataHandler.js +3 -2
  17. package/dist/esm/plugins/render/index.js +6 -12
  18. package/dist/esm/plugins/render/render.js +1 -0
  19. package/dist/esm/plugins/render/ssrRender.js +3 -2
  20. package/dist/esm/plugins/route.js +92 -0
  21. package/dist/esm-node/plugins/customServer/context.js +0 -2
  22. package/dist/esm-node/plugins/customServer/index.js +1 -10
  23. package/dist/esm-node/plugins/default.js +5 -3
  24. package/dist/esm-node/plugins/index.js +2 -2
  25. package/dist/esm-node/plugins/monitors.js +28 -13
  26. package/dist/esm-node/plugins/render/dataHandler.js +2 -1
  27. package/dist/esm-node/plugins/render/index.js +6 -12
  28. package/dist/esm-node/plugins/render/render.js +1 -0
  29. package/dist/esm-node/plugins/render/ssrRender.js +2 -1
  30. package/dist/esm-node/plugins/route.js +41 -0
  31. package/dist/types/index.d.ts +1 -1
  32. package/dist/types/plugins/customServer/index.d.ts +0 -3
  33. package/dist/types/plugins/index.d.ts +1 -1
  34. package/dist/types/plugins/monitors.d.ts +2 -2
  35. package/dist/types/plugins/render/dataHandler.d.ts +1 -1
  36. package/dist/types/plugins/render/ssrRender.d.ts +3 -2
  37. package/dist/types/plugins/route.d.ts +2 -0
  38. package/dist/types/types/render.d.ts +1 -1
  39. package/dist/types/types/requestHandler.d.ts +2 -1
  40. package/dist/types/types/server.d.ts +5 -4
  41. package/package.json +7 -7
@@ -42,12 +42,10 @@ async function getAfterRenderCtx(c, baseHookCtx, route) {
42
42
  function createCustomMiddlewaresCtx(c, locals, resArgs) {
43
43
  var _c_env_node, _c_env_node1;
44
44
  const baseContext = (0, import_base.createBaseHookContext)(c, resArgs);
45
- const reporter = c.get("reporter");
46
45
  const response = baseContext.response;
47
46
  response.locals = locals;
48
47
  return {
49
48
  ...baseContext,
50
- reporter,
51
49
  response,
52
50
  source: {
53
51
  req: (_c_env_node = c.env.node) === null || _c_env_node === void 0 ? void 0 : _c_env_node.req,
@@ -19,8 +19,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
19
19
  var customServer_exports = {};
20
20
  __export(customServer_exports, {
21
21
  CustomServer: () => CustomServer,
22
- getServerMidFromUnstableMid: () => getServerMidFromUnstableMid,
23
- injectRoute: () => injectRoute
22
+ getServerMidFromUnstableMid: () => getServerMidFromUnstableMid
24
23
  });
25
24
  module.exports = __toCommonJS(customServer_exports);
26
25
  var import_time = require("@modern-js/runtime-utils/time");
@@ -213,17 +212,8 @@ async function createMiddlewareContextFromHono(c) {
213
212
  redirect: c.redirect.bind(c)
214
213
  };
215
214
  }
216
- function injectRoute(route) {
217
- return async (c, next) => {
218
- if (route && !c.get("route")) {
219
- c.set("route", route);
220
- }
221
- await next();
222
- };
223
- }
224
215
  // Annotate the CommonJS export names for ESM import in node:
225
216
  0 && (module.exports = {
226
217
  CustomServer,
227
- getServerMidFromUnstableMid,
228
- injectRoute
218
+ getServerMidFromUnstableMid
229
219
  });
@@ -25,6 +25,7 @@ var import_log = require("./log");
25
25
  var import_monitors = require("./monitors");
26
26
  var import_processedBy = require("./processedBy");
27
27
  var import_render = require("./render");
28
+ var import_route = require("./route");
28
29
  function createSilenceLogger() {
29
30
  return new Proxy({}, {
30
31
  get: () => {
@@ -38,9 +39,10 @@ function createDefaultPlugins(options = {}) {
38
39
  (0, import_log.logPlugin)(),
39
40
  (0, import_monitors.initMonitorsPlugin)(),
40
41
  (0, import_render.injectRenderHandlerPlugin)(options),
41
- (0, import_monitors.injectloggerPluigin)(options.logger ? options.logger : createSilenceLogger()),
42
+ (0, import_monitors.injectloggerPlugin)(options.logger ? options.logger : createSilenceLogger()),
42
43
  (0, import_monitors.injectServerTiming)(),
43
- (0, import_processedBy.processedByPlugin)()
44
+ (0, import_processedBy.processedByPlugin)(),
45
+ (0, import_route.injectRoutePlugin)()
44
46
  ];
45
47
  return plugins;
46
48
  }
@@ -23,7 +23,7 @@ __export(plugins_exports, {
23
23
  getRenderHandler: () => import_render.getRenderHandler,
24
24
  injectRenderHandlerPlugin: () => import_render.injectRenderHandlerPlugin,
25
25
  injectServerTiming: () => import_monitors.injectServerTiming,
26
- injectloggerPluigin: () => import_monitors.injectloggerPluigin,
26
+ injectloggerPlugin: () => import_monitors.injectloggerPlugin,
27
27
  logPlugin: () => import_log.logPlugin,
28
28
  processedByPlugin: () => import_processedBy.processedByPlugin,
29
29
  renderPlugin: () => import_render.renderPlugin
@@ -42,7 +42,7 @@ var import_default = require("./default");
42
42
  getRenderHandler,
43
43
  injectRenderHandlerPlugin,
44
44
  injectServerTiming,
45
- injectloggerPluigin,
45
+ injectloggerPlugin,
46
46
  logPlugin,
47
47
  processedByPlugin,
48
48
  renderPlugin
@@ -19,9 +19,9 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
19
19
  var monitors_exports = {};
20
20
  __export(monitors_exports, {
21
21
  initMonitorsPlugin: () => initMonitorsPlugin,
22
- initReporter: () => initReporter,
23
22
  injectServerTiming: () => injectServerTiming,
24
- injectloggerPluigin: () => injectloggerPluigin
23
+ injectloggerPlugin: () => injectloggerPlugin,
24
+ requestLatencyMiddleware: () => requestLatencyMiddleware
25
25
  });
26
26
  module.exports = __toCommonJS(monitors_exports);
27
27
  var import_time = require("@modern-js/runtime-utils/time");
@@ -55,13 +55,27 @@ function createMonitors() {
55
55
  info(message, ...args) {
56
56
  log("info", message, args);
57
57
  },
58
- timing(name, dur, desc) {
58
+ trace(message, ...args) {
59
+ log("trace", message, args);
60
+ },
61
+ timing(name, dur, desc, ...args) {
59
62
  const event = {
60
63
  type: "timing",
61
64
  payload: {
62
65
  name,
63
66
  dur,
64
- desc
67
+ desc,
68
+ args
69
+ }
70
+ };
71
+ coreMonitors.forEach((monitor) => monitor(event));
72
+ },
73
+ counter(name, ...args) {
74
+ const event = {
75
+ type: "counter",
76
+ payload: {
77
+ name,
78
+ args
65
79
  }
66
80
  };
67
81
  coreMonitors.forEach((monitor) => monitor(event));
@@ -90,7 +104,7 @@ const initMonitorsPlugin = () => ({
90
104
  };
91
105
  }
92
106
  });
93
- const injectloggerPluigin = (inputLogger) => ({
107
+ const injectloggerPlugin = (inputLogger) => ({
94
108
  name: "@modern-js/inject-logger",
95
109
  setup(api) {
96
110
  const logger = inputLogger || console;
@@ -107,7 +121,11 @@ const injectloggerPluigin = (inputLogger) => ({
107
121
  const loggerMonitor = (event) => {
108
122
  if (event.type === "log") {
109
123
  const { level, message, args } = event.payload;
110
- logger[level](message, ...args || []);
124
+ if (level === "trace") {
125
+ logger.info(message, ...args || []);
126
+ } else {
127
+ logger[level](message, ...args || []);
128
+ }
111
129
  }
112
130
  if (event.type === "timing") {
113
131
  const { name, dur, desc } = event.payload;
@@ -159,26 +177,23 @@ const injectServerTiming = () => ({
159
177
  };
160
178
  }
161
179
  });
162
- function initReporter(entryName) {
180
+ function requestLatencyMiddleware() {
163
181
  return async (c, next) => {
164
- const reporter = c.get("reporter");
165
- if (!reporter) {
182
+ const monitors = c.get("monitors");
183
+ if (!monitors) {
166
184
  await next();
167
185
  return;
168
186
  }
169
- await reporter.init({
170
- entryName
171
- });
172
187
  const getCost = (0, import_time.time)();
173
188
  await next();
174
189
  const cost = getCost();
175
- reporter.reportTiming(import_constants.ServerTimings.SERVER_HANDLE_REQUEST, cost);
190
+ monitors.timing(import_constants.ServerTimings.SERVER_HANDLE_REQUEST, cost);
176
191
  };
177
192
  }
178
193
  // Annotate the CommonJS export names for ESM import in node:
179
194
  0 && (module.exports = {
180
195
  initMonitorsPlugin,
181
- initReporter,
182
196
  injectServerTiming,
183
- injectloggerPluigin
197
+ injectloggerPlugin,
198
+ requestLatencyMiddleware
184
199
  });
@@ -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, onError, onTiming, serverManifest, loaderContext }) => {
25
+ const dataHandler = async (request, { routeInfo, serverRoutes, reporter, monitors, onError, onTiming, serverManifest, loaderContext }) => {
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) {
@@ -34,6 +34,7 @@ const dataHandler = async (request, { routeInfo, serverRoutes, reporter, onError
34
34
  serverRoutes,
35
35
  context: {
36
36
  reporter,
37
+ monitors,
37
38
  loaderContext
38
39
  },
39
40
  onTiming,
@@ -43,20 +43,14 @@ const renderPlugin = () => ({
43
43
  const customServer = new import_customServer.CustomServer(runner, serverBase, pwd);
44
44
  const serverMiddleware = ((_config_render = config.render) === null || _config_render === void 0 ? void 0 : _config_render.middleware) && (0, import_customServer.getServerMidFromUnstableMid)(config.render.middleware);
45
45
  const pageRoutes = getPageRoutes(routes);
46
+ middlewares.push({
47
+ name: "page-latency",
48
+ handler: (0, import_monitors.requestLatencyMiddleware)()
49
+ });
46
50
  for (const route of pageRoutes) {
47
51
  const { urlPath: originUrlPath, entryName = import_constants.MAIN_ENTRY_NAME } = route;
48
52
  const urlPath = originUrlPath.endsWith("/") ? `${originUrlPath}*` : `${originUrlPath}/*`;
49
- middlewares.push({
50
- name: "init-reporter",
51
- handler: (0, import_monitors.initReporter)(entryName)
52
- });
53
53
  const customServerHookMiddleware = customServer.getHookMiddleware(entryName, routes);
54
- middlewares.push({
55
- name: "inject-route-info",
56
- handler: (0, import_customServer.injectRoute)({
57
- entryName
58
- })
59
- });
60
54
  middlewares.push({
61
55
  name: "custom-server-hook",
62
56
  path: urlPath,
@@ -136,6 +136,7 @@ async function createRender({ routes, pwd, metaName, staticGenerate, cacheConfig
136
136
  params,
137
137
  logger,
138
138
  metrics,
139
+ monitors,
139
140
  locals,
140
141
  rscClientManifest,
141
142
  rscSSRManifest,
@@ -26,7 +26,7 @@ var import_constants2 = require("../../constants");
26
26
  var import_utils = require("../../utils");
27
27
  var import_ssrCache = require("./ssrCache");
28
28
  const SERVER_RUNTIME_ENTRY = "requestHandler";
29
- async function ssrRender(request, { routeInfo, html, config: userConfig, staticGenerate, nodeReq, serverManifest, rscSSRManifest, rscClientManifest, rscServerManifest, locals, params, loaderContext, reporter, cacheConfig, logger, metrics, onError, onTiming }) {
29
+ async function ssrRender(request, { routeInfo, html, config: userConfig, staticGenerate, nodeReq, serverManifest, rscSSRManifest, rscClientManifest, rscServerManifest, locals, params, loaderContext, reporter, monitors, cacheConfig, logger, metrics, onError, onTiming }) {
30
30
  var _serverManifest_renderBundles;
31
31
  const { entryName } = routeInfo;
32
32
  const loadableStats = serverManifest.loadableStats || {};
@@ -64,6 +64,7 @@ async function ssrRender(request, { routeInfo, html, config: userConfig, staticG
64
64
  staticGenerate,
65
65
  logger,
66
66
  metrics,
67
+ monitors,
67
68
  onError,
68
69
  onTiming
69
70
  };
@@ -0,0 +1,65 @@
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 route_exports = {};
20
+ __export(route_exports, {
21
+ injectRoutePlugin: () => injectRoutePlugin
22
+ });
23
+ module.exports = __toCommonJS(route_exports);
24
+ var import_constants = require("@modern-js/utils/universal/constants");
25
+ var import_utils = require("../utils");
26
+ function injectRoute(route) {
27
+ return async (c, next) => {
28
+ if (route && !c.get("route")) {
29
+ c.set("route", route);
30
+ }
31
+ await next();
32
+ };
33
+ }
34
+ function getPageRoutes(routes) {
35
+ return routes.filter((route) => !route.isApi).sort(import_utils.sortRoutes);
36
+ }
37
+ const injectRoutePlugin = () => ({
38
+ name: "@modern-js/plugin-inject-route",
39
+ setup(api) {
40
+ return {
41
+ async prepare() {
42
+ const { middlewares, routes } = api.useAppContext();
43
+ if (!routes) {
44
+ return;
45
+ }
46
+ const pageRoutes = getPageRoutes(routes);
47
+ for (const route of pageRoutes) {
48
+ const { urlPath: originUrlPath, entryName = import_constants.MAIN_ENTRY_NAME } = route;
49
+ const urlPath = originUrlPath.endsWith("/") ? `${originUrlPath}*` : `${originUrlPath}/*`;
50
+ middlewares.push({
51
+ name: "inject-route-info",
52
+ path: urlPath,
53
+ handler: injectRoute({
54
+ entryName
55
+ })
56
+ });
57
+ }
58
+ }
59
+ };
60
+ }
61
+ });
62
+ // Annotate the CommonJS export names for ESM import in node:
63
+ 0 && (module.exports = {
64
+ injectRoutePlugin
65
+ });
@@ -40,11 +40,9 @@ function _getAfterRenderCtx() {
40
40
  function createCustomMiddlewaresCtx(c, locals, resArgs) {
41
41
  var _c_env_node, _c_env_node1;
42
42
  var baseContext = createBaseHookContext(c, resArgs);
43
- var reporter = c.get("reporter");
44
43
  var response = baseContext.response;
45
44
  response.locals = locals;
46
45
  return _object_spread_props(_object_spread({}, baseContext), {
47
- reporter,
48
46
  response,
49
47
  source: {
50
48
  req: (_c_env_node = c.env.node) === null || _c_env_node === void 0 ? void 0 : _c_env_node.req,
@@ -286,7 +286,9 @@ function createMiddlewareContextFromHono(c) {
286
286
  return _createMiddlewareContextFromHono.apply(this, arguments);
287
287
  }
288
288
  function _createMiddlewareContextFromHono() {
289
- _createMiddlewareContextFromHono = _async_to_generator(function(c) {
289
+ _createMiddlewareContextFromHono = // TODO: maybe we need use hono ctx directly
290
+ // TODO: after we use hono ctx, we should use `c.get('monitors')` to get monitors
291
+ _async_to_generator(function(c) {
290
292
  var loaderContext, rawRequest, method, streamModulePath, createReadableStreamFromReadable, init;
291
293
  return _ts_generator(this, function(_state) {
292
294
  switch (_state.label) {
@@ -355,34 +357,7 @@ function _createMiddlewareContextFromHono() {
355
357
  });
356
358
  return _createMiddlewareContextFromHono.apply(this, arguments);
357
359
  }
358
- function injectRoute(route) {
359
- return function() {
360
- var _ref = _async_to_generator(function(c, next) {
361
- return _ts_generator(this, function(_state) {
362
- switch (_state.label) {
363
- case 0:
364
- if (route && !c.get("route")) {
365
- c.set("route", route);
366
- }
367
- return [
368
- 4,
369
- next()
370
- ];
371
- case 1:
372
- _state.sent();
373
- return [
374
- 2
375
- ];
376
- }
377
- });
378
- });
379
- return function(c, next) {
380
- return _ref.apply(this, arguments);
381
- };
382
- }();
383
- }
384
360
  export {
385
361
  CustomServer,
386
- getServerMidFromUnstableMid,
387
- injectRoute
362
+ getServerMidFromUnstableMid
388
363
  };
@@ -1,7 +1,8 @@
1
1
  import { logPlugin } from "./log";
2
- import { initMonitorsPlugin, injectServerTiming, injectloggerPluigin } from "./monitors";
2
+ import { initMonitorsPlugin, injectServerTiming, injectloggerPlugin } from "./monitors";
3
3
  import { processedByPlugin } from "./processedBy";
4
4
  import { injectRenderHandlerPlugin } from "./render";
5
+ import { injectRoutePlugin } from "./route";
5
6
  function createSilenceLogger() {
6
7
  return new Proxy({}, {
7
8
  get: function() {
@@ -16,9 +17,10 @@ function createDefaultPlugins() {
16
17
  logPlugin(),
17
18
  initMonitorsPlugin(),
18
19
  injectRenderHandlerPlugin(options),
19
- injectloggerPluigin(options.logger ? options.logger : createSilenceLogger()),
20
+ injectloggerPlugin(options.logger ? options.logger : createSilenceLogger()),
20
21
  injectServerTiming(),
21
- processedByPlugin()
22
+ processedByPlugin(),
23
+ injectRoutePlugin()
22
24
  ];
23
25
  return plugins;
24
26
  }
@@ -1,6 +1,6 @@
1
1
  import { renderPlugin, injectRenderHandlerPlugin, getRenderHandler } from "./render";
2
2
  import { faviconPlugin } from "./favicon";
3
- import { injectServerTiming, injectloggerPluigin } from "./monitors";
3
+ import { injectServerTiming, injectloggerPlugin } from "./monitors";
4
4
  import { processedByPlugin } from "./processedBy";
5
5
  import { logPlugin } from "./log";
6
6
  import { createDefaultPlugins } from "./default";
@@ -10,7 +10,7 @@ export {
10
10
  getRenderHandler,
11
11
  injectRenderHandlerPlugin,
12
12
  injectServerTiming,
13
- injectloggerPluigin,
13
+ injectloggerPlugin,
14
14
  logPlugin,
15
15
  processedByPlugin,
16
16
  renderPlugin
@@ -46,13 +46,38 @@ function createMonitors() {
46
46
  }
47
47
  log("info", message, args);
48
48
  },
49
+ trace: function trace(message) {
50
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
51
+ args[_key - 1] = arguments[_key];
52
+ }
53
+ log("trace", message, args);
54
+ },
49
55
  timing: function timing(name, dur, desc) {
56
+ for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
57
+ args[_key - 3] = arguments[_key];
58
+ }
50
59
  var event = {
51
60
  type: "timing",
52
61
  payload: {
53
62
  name,
54
63
  dur,
55
- desc
64
+ desc,
65
+ args
66
+ }
67
+ };
68
+ coreMonitors.forEach(function(monitor) {
69
+ return monitor(event);
70
+ });
71
+ },
72
+ counter: function counter(name) {
73
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
74
+ args[_key - 1] = arguments[_key];
75
+ }
76
+ var event = {
77
+ type: "counter",
78
+ payload: {
79
+ name,
80
+ args
56
81
  }
57
82
  };
58
83
  coreMonitors.forEach(function(monitor) {
@@ -96,7 +121,7 @@ var initMonitorsPlugin = function() {
96
121
  }
97
122
  };
98
123
  };
99
- var injectloggerPluigin = function(inputLogger) {
124
+ var injectloggerPlugin = function(inputLogger) {
100
125
  return {
101
126
  name: "@modern-js/inject-logger",
102
127
  setup: function setup(api) {
@@ -116,11 +141,18 @@ var injectloggerPluigin = function(inputLogger) {
116
141
  pathname = c.req.path;
117
142
  loggerMonitor = function(event) {
118
143
  if (event.type === "log") {
119
- var _logger;
120
144
  var _event_payload = event.payload, level = _event_payload.level, message = _event_payload.message, args = _event_payload.args;
121
- (_logger = logger)[level].apply(_logger, [
122
- message
123
- ].concat(_to_consumable_array(args || [])));
145
+ if (level === "trace") {
146
+ var _logger;
147
+ (_logger = logger).info.apply(_logger, [
148
+ message
149
+ ].concat(_to_consumable_array(args || [])));
150
+ } else {
151
+ var _logger1;
152
+ (_logger1 = logger)[level].apply(_logger1, [
153
+ message
154
+ ].concat(_to_consumable_array(args || [])));
155
+ }
124
156
  }
125
157
  if (event.type === "timing") {
126
158
  var _event_payload1 = event.payload, name = _event_payload1.name, dur = _event_payload1.dur, desc = _event_payload1.desc;
@@ -202,15 +234,15 @@ var injectServerTiming = function() {
202
234
  }
203
235
  };
204
236
  };
205
- function initReporter(entryName) {
237
+ function requestLatencyMiddleware() {
206
238
  return function() {
207
239
  var _ref = _async_to_generator(function(c, next) {
208
- var reporter, getCost, cost;
240
+ var monitors, getCost, cost;
209
241
  return _ts_generator(this, function(_state) {
210
242
  switch (_state.label) {
211
243
  case 0:
212
- reporter = c.get("reporter");
213
- if (!!reporter)
244
+ monitors = c.get("monitors");
245
+ if (!!monitors)
214
246
  return [
215
247
  3,
216
248
  2
@@ -225,23 +257,15 @@ function initReporter(entryName) {
225
257
  2
226
258
  ];
227
259
  case 2:
228
- return [
229
- 4,
230
- reporter.init({
231
- entryName
232
- })
233
- ];
234
- case 3:
235
- _state.sent();
236
260
  getCost = time();
237
261
  return [
238
262
  4,
239
263
  next()
240
264
  ];
241
- case 4:
265
+ case 3:
242
266
  _state.sent();
243
267
  cost = getCost();
244
- reporter.reportTiming(ServerTimings.SERVER_HANDLE_REQUEST, cost);
268
+ monitors.timing(ServerTimings.SERVER_HANDLE_REQUEST, cost);
245
269
  return [
246
270
  2
247
271
  ];
@@ -255,7 +279,7 @@ function initReporter(entryName) {
255
279
  }
256
280
  export {
257
281
  initMonitorsPlugin,
258
- initReporter,
259
282
  injectServerTiming,
260
- injectloggerPluigin
283
+ injectloggerPlugin,
284
+ requestLatencyMiddleware
261
285
  };
@@ -3,11 +3,11 @@ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
3
3
  import { MAIN_ENTRY_NAME } from "@modern-js/utils/universal/constants";
4
4
  var dataHandler = function() {
5
5
  var _ref = _async_to_generator(function(request, param) {
6
- var routeInfo, serverRoutes, reporter, onError, onTiming, serverManifest, loaderContext, _serverManifest_loaderBundles, serverLoaderModule, routes, handleRequest, response;
6
+ var routeInfo, serverRoutes, reporter, monitors, onError, onTiming, serverManifest, loaderContext, _serverManifest_loaderBundles, serverLoaderModule, routes, handleRequest, response;
7
7
  return _ts_generator(this, function(_state) {
8
8
  switch (_state.label) {
9
9
  case 0:
10
- routeInfo = param.routeInfo, serverRoutes = param.serverRoutes, reporter = param.reporter, onError = param.onError, onTiming = param.onTiming, serverManifest = param.serverManifest, loaderContext = param.loaderContext;
10
+ routeInfo = param.routeInfo, serverRoutes = param.serverRoutes, reporter = param.reporter, monitors = param.monitors, onError = param.onError, onTiming = param.onTiming, serverManifest = param.serverManifest, loaderContext = param.loaderContext;
11
11
  serverLoaderModule = serverManifest === null || serverManifest === void 0 ? void 0 : (_serverManifest_loaderBundles = serverManifest.loaderBundles) === null || _serverManifest_loaderBundles === void 0 ? void 0 : _serverManifest_loaderBundles[routeInfo.entryName || MAIN_ENTRY_NAME];
12
12
  if (!serverLoaderModule) {
13
13
  return [
@@ -22,6 +22,7 @@ var dataHandler = function() {
22
22
  serverRoutes,
23
23
  context: {
24
24
  reporter,
25
+ monitors,
25
26
  loaderContext
26
27
  },
27
28
  onTiming,
@@ -3,8 +3,8 @@ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
3
3
  import { MAIN_ENTRY_NAME } from "@modern-js/utils/universal/constants";
4
4
  import { getLoaderCtx } from "../../helper";
5
5
  import { sortRoutes } from "../../utils";
6
- import { CustomServer, getServerMidFromUnstableMid, injectRoute } from "../customServer";
7
- import { initReporter } from "../monitors";
6
+ import { CustomServer, getServerMidFromUnstableMid } from "../customServer";
7
+ import { requestLatencyMiddleware } from "../monitors";
8
8
  export * from "./inject";
9
9
  var renderPlugin = function() {
10
10
  return {
@@ -28,6 +28,10 @@ var renderPlugin = function() {
28
28
  customServer = new CustomServer(runner, serverBase, pwd);
29
29
  serverMiddleware = ((_config_render = config.render) === null || _config_render === void 0 ? void 0 : _config_render.middleware) && getServerMidFromUnstableMid(config.render.middleware);
30
30
  pageRoutes = getPageRoutes(routes);
31
+ middlewares.push({
32
+ name: "page-latency",
33
+ handler: requestLatencyMiddleware()
34
+ });
31
35
  _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
32
36
  _state.label = 1;
33
37
  case 1:
@@ -48,17 +52,7 @@ var renderPlugin = function() {
48
52
  route = _step.value;
49
53
  originUrlPath = route.urlPath, _route_entryName = route.entryName, entryName = _route_entryName === void 0 ? MAIN_ENTRY_NAME : _route_entryName;
50
54
  urlPath = originUrlPath.endsWith("/") ? "".concat(originUrlPath, "*") : "".concat(originUrlPath, "/*");
51
- middlewares.push({
52
- name: "init-reporter",
53
- handler: initReporter(entryName)
54
- });
55
55
  customServerHookMiddleware = customServer.getHookMiddleware(entryName, routes);
56
- middlewares.push({
57
- name: "inject-route-info",
58
- handler: injectRoute({
59
- entryName
60
- })
61
- });
62
56
  middlewares.push({
63
57
  name: "custom-server-hook",
64
58
  path: urlPath,
@@ -163,6 +163,7 @@ function _createRender() {
163
163
  params,
164
164
  logger,
165
165
  metrics,
166
+ monitors,
166
167
  locals,
167
168
  rscClientManifest,
168
169
  rscSSRManifest,
@@ -11,11 +11,11 @@ function ssrRender(request, _) {
11
11
  }
12
12
  function _ssrRender() {
13
13
  _ssrRender = _async_to_generator(function(request, param) {
14
- var routeInfo, html, userConfig, staticGenerate, nodeReq, serverManifest, rscSSRManifest, rscClientManifest, rscServerManifest, locals, params, loaderContext, reporter, cacheConfig, logger, metrics, onError, onTiming, _serverManifest_renderBundles, entryName, loadableStats, routeManifest, headers, key, renderBundle, requestHandler, config, requestHandlerOptions, cacheControl, response;
14
+ var routeInfo, html, userConfig, staticGenerate, nodeReq, serverManifest, rscSSRManifest, rscClientManifest, rscServerManifest, locals, params, loaderContext, reporter, monitors, cacheConfig, logger, metrics, onError, onTiming, _serverManifest_renderBundles, entryName, loadableStats, routeManifest, headers, key, renderBundle, requestHandler, config, requestHandlerOptions, cacheControl, response;
15
15
  return _ts_generator(this, function(_state) {
16
16
  switch (_state.label) {
17
17
  case 0:
18
- routeInfo = param.routeInfo, html = param.html, userConfig = param.config, staticGenerate = param.staticGenerate, nodeReq = param.nodeReq, serverManifest = param.serverManifest, rscSSRManifest = param.rscSSRManifest, rscClientManifest = param.rscClientManifest, rscServerManifest = param.rscServerManifest, locals = param.locals, params = param.params, loaderContext = param.loaderContext, reporter = param.reporter, cacheConfig = param.cacheConfig, logger = param.logger, metrics = param.metrics, onError = param.onError, onTiming = param.onTiming;
18
+ routeInfo = param.routeInfo, html = param.html, userConfig = param.config, staticGenerate = param.staticGenerate, nodeReq = param.nodeReq, serverManifest = param.serverManifest, rscSSRManifest = param.rscSSRManifest, rscClientManifest = param.rscClientManifest, rscServerManifest = param.rscServerManifest, locals = param.locals, params = param.params, loaderContext = param.loaderContext, reporter = param.reporter, monitors = param.monitors, cacheConfig = param.cacheConfig, logger = param.logger, metrics = param.metrics, onError = param.onError, onTiming = param.onTiming;
19
19
  entryName = routeInfo.entryName;
20
20
  loadableStats = serverManifest.loadableStats || {};
21
21
  routeManifest = serverManifest.routeManifest || {};
@@ -57,6 +57,7 @@ function _ssrRender() {
57
57
  staticGenerate,
58
58
  logger,
59
59
  metrics,
60
+ monitors,
60
61
  onError,
61
62
  onTiming
62
63
  };
@@ -0,0 +1,92 @@
1
+ import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
+ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
3
+ import { MAIN_ENTRY_NAME } from "@modern-js/utils/universal/constants";
4
+ import { sortRoutes } from "../utils";
5
+ function injectRoute(route) {
6
+ return function() {
7
+ var _ref = _async_to_generator(function(c, next) {
8
+ return _ts_generator(this, function(_state) {
9
+ switch (_state.label) {
10
+ case 0:
11
+ if (route && !c.get("route")) {
12
+ c.set("route", route);
13
+ }
14
+ return [
15
+ 4,
16
+ next()
17
+ ];
18
+ case 1:
19
+ _state.sent();
20
+ return [
21
+ 2
22
+ ];
23
+ }
24
+ });
25
+ });
26
+ return function(c, next) {
27
+ return _ref.apply(this, arguments);
28
+ };
29
+ }();
30
+ }
31
+ function getPageRoutes(routes) {
32
+ return routes.filter(function(route) {
33
+ return !route.isApi;
34
+ }).sort(sortRoutes);
35
+ }
36
+ var injectRoutePlugin = function() {
37
+ return {
38
+ name: "@modern-js/plugin-inject-route",
39
+ setup: function setup(api) {
40
+ return {
41
+ prepare: function prepare() {
42
+ return _async_to_generator(function() {
43
+ var _api_useAppContext, middlewares, routes, pageRoutes, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, route, originUrlPath, _route_entryName, entryName, urlPath;
44
+ return _ts_generator(this, function(_state) {
45
+ _api_useAppContext = api.useAppContext(), middlewares = _api_useAppContext.middlewares, routes = _api_useAppContext.routes;
46
+ if (!routes) {
47
+ return [
48
+ 2
49
+ ];
50
+ }
51
+ pageRoutes = getPageRoutes(routes);
52
+ _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
53
+ try {
54
+ for (_iterator = pageRoutes[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
55
+ route = _step.value;
56
+ originUrlPath = route.urlPath, _route_entryName = route.entryName, entryName = _route_entryName === void 0 ? MAIN_ENTRY_NAME : _route_entryName;
57
+ urlPath = originUrlPath.endsWith("/") ? "".concat(originUrlPath, "*") : "".concat(originUrlPath, "/*");
58
+ middlewares.push({
59
+ name: "inject-route-info",
60
+ path: urlPath,
61
+ handler: injectRoute({
62
+ entryName
63
+ })
64
+ });
65
+ }
66
+ } catch (err) {
67
+ _didIteratorError = true;
68
+ _iteratorError = err;
69
+ } finally {
70
+ try {
71
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
72
+ _iterator.return();
73
+ }
74
+ } finally {
75
+ if (_didIteratorError) {
76
+ throw _iteratorError;
77
+ }
78
+ }
79
+ }
80
+ return [
81
+ 2
82
+ ];
83
+ });
84
+ })();
85
+ }
86
+ };
87
+ }
88
+ };
89
+ };
90
+ export {
91
+ injectRoutePlugin
92
+ };
@@ -16,12 +16,10 @@ async function getAfterRenderCtx(c, baseHookCtx, route) {
16
16
  function createCustomMiddlewaresCtx(c, locals, resArgs) {
17
17
  var _c_env_node, _c_env_node1;
18
18
  const baseContext = createBaseHookContext(c, resArgs);
19
- const reporter = c.get("reporter");
20
19
  const response = baseContext.response;
21
20
  response.locals = locals;
22
21
  return {
23
22
  ...baseContext,
24
- reporter,
25
23
  response,
26
24
  source: {
27
25
  req: (_c_env_node = c.env.node) === null || _c_env_node === void 0 ? void 0 : _c_env_node.req,
@@ -188,16 +188,7 @@ async function createMiddlewareContextFromHono(c) {
188
188
  redirect: c.redirect.bind(c)
189
189
  };
190
190
  }
191
- function injectRoute(route) {
192
- return async (c, next) => {
193
- if (route && !c.get("route")) {
194
- c.set("route", route);
195
- }
196
- await next();
197
- };
198
- }
199
191
  export {
200
192
  CustomServer,
201
- getServerMidFromUnstableMid,
202
- injectRoute
193
+ getServerMidFromUnstableMid
203
194
  };
@@ -1,7 +1,8 @@
1
1
  import { logPlugin } from "./log";
2
- import { initMonitorsPlugin, injectServerTiming, injectloggerPluigin } from "./monitors";
2
+ import { initMonitorsPlugin, injectServerTiming, injectloggerPlugin } from "./monitors";
3
3
  import { processedByPlugin } from "./processedBy";
4
4
  import { injectRenderHandlerPlugin } from "./render";
5
+ import { injectRoutePlugin } from "./route";
5
6
  function createSilenceLogger() {
6
7
  return new Proxy({}, {
7
8
  get: () => {
@@ -15,9 +16,10 @@ function createDefaultPlugins(options = {}) {
15
16
  logPlugin(),
16
17
  initMonitorsPlugin(),
17
18
  injectRenderHandlerPlugin(options),
18
- injectloggerPluigin(options.logger ? options.logger : createSilenceLogger()),
19
+ injectloggerPlugin(options.logger ? options.logger : createSilenceLogger()),
19
20
  injectServerTiming(),
20
- processedByPlugin()
21
+ processedByPlugin(),
22
+ injectRoutePlugin()
21
23
  ];
22
24
  return plugins;
23
25
  }
@@ -1,6 +1,6 @@
1
1
  import { renderPlugin, injectRenderHandlerPlugin, getRenderHandler } from "./render";
2
2
  import { faviconPlugin } from "./favicon";
3
- import { injectServerTiming, injectloggerPluigin } from "./monitors";
3
+ import { injectServerTiming, injectloggerPlugin } from "./monitors";
4
4
  import { processedByPlugin } from "./processedBy";
5
5
  import { logPlugin } from "./log";
6
6
  import { createDefaultPlugins } from "./default";
@@ -10,7 +10,7 @@ export {
10
10
  getRenderHandler,
11
11
  injectRenderHandlerPlugin,
12
12
  injectServerTiming,
13
- injectloggerPluigin,
13
+ injectloggerPlugin,
14
14
  logPlugin,
15
15
  processedByPlugin,
16
16
  renderPlugin
@@ -29,13 +29,27 @@ function createMonitors() {
29
29
  info(message, ...args) {
30
30
  log("info", message, args);
31
31
  },
32
- timing(name, dur, desc) {
32
+ trace(message, ...args) {
33
+ log("trace", message, args);
34
+ },
35
+ timing(name, dur, desc, ...args) {
33
36
  const event = {
34
37
  type: "timing",
35
38
  payload: {
36
39
  name,
37
40
  dur,
38
- desc
41
+ desc,
42
+ args
43
+ }
44
+ };
45
+ coreMonitors.forEach((monitor) => monitor(event));
46
+ },
47
+ counter(name, ...args) {
48
+ const event = {
49
+ type: "counter",
50
+ payload: {
51
+ name,
52
+ args
39
53
  }
40
54
  };
41
55
  coreMonitors.forEach((monitor) => monitor(event));
@@ -64,7 +78,7 @@ const initMonitorsPlugin = () => ({
64
78
  };
65
79
  }
66
80
  });
67
- const injectloggerPluigin = (inputLogger) => ({
81
+ const injectloggerPlugin = (inputLogger) => ({
68
82
  name: "@modern-js/inject-logger",
69
83
  setup(api) {
70
84
  const logger = inputLogger || console;
@@ -81,7 +95,11 @@ const injectloggerPluigin = (inputLogger) => ({
81
95
  const loggerMonitor = (event) => {
82
96
  if (event.type === "log") {
83
97
  const { level, message, args } = event.payload;
84
- logger[level](message, ...args || []);
98
+ if (level === "trace") {
99
+ logger.info(message, ...args || []);
100
+ } else {
101
+ logger[level](message, ...args || []);
102
+ }
85
103
  }
86
104
  if (event.type === "timing") {
87
105
  const { name, dur, desc } = event.payload;
@@ -133,25 +151,22 @@ const injectServerTiming = () => ({
133
151
  };
134
152
  }
135
153
  });
136
- function initReporter(entryName) {
154
+ function requestLatencyMiddleware() {
137
155
  return async (c, next) => {
138
- const reporter = c.get("reporter");
139
- if (!reporter) {
156
+ const monitors = c.get("monitors");
157
+ if (!monitors) {
140
158
  await next();
141
159
  return;
142
160
  }
143
- await reporter.init({
144
- entryName
145
- });
146
161
  const getCost = time();
147
162
  await next();
148
163
  const cost = getCost();
149
- reporter.reportTiming(ServerTimings.SERVER_HANDLE_REQUEST, cost);
164
+ monitors.timing(ServerTimings.SERVER_HANDLE_REQUEST, cost);
150
165
  };
151
166
  }
152
167
  export {
153
168
  initMonitorsPlugin,
154
- initReporter,
155
169
  injectServerTiming,
156
- injectloggerPluigin
170
+ injectloggerPlugin,
171
+ requestLatencyMiddleware
157
172
  };
@@ -1,5 +1,5 @@
1
1
  import { MAIN_ENTRY_NAME } from "@modern-js/utils/universal/constants";
2
- const dataHandler = async (request, { routeInfo, serverRoutes, reporter, onError, onTiming, serverManifest, loaderContext }) => {
2
+ const dataHandler = async (request, { routeInfo, serverRoutes, reporter, monitors, onError, onTiming, serverManifest, loaderContext }) => {
3
3
  var _serverManifest_loaderBundles;
4
4
  const serverLoaderModule = serverManifest === null || serverManifest === void 0 ? void 0 : (_serverManifest_loaderBundles = serverManifest.loaderBundles) === null || _serverManifest_loaderBundles === void 0 ? void 0 : _serverManifest_loaderBundles[routeInfo.entryName || MAIN_ENTRY_NAME];
5
5
  if (!serverLoaderModule) {
@@ -11,6 +11,7 @@ const dataHandler = async (request, { routeInfo, serverRoutes, reporter, onError
11
11
  serverRoutes,
12
12
  context: {
13
13
  reporter,
14
+ monitors,
14
15
  loaderContext
15
16
  },
16
17
  onTiming,
@@ -1,8 +1,8 @@
1
1
  import { MAIN_ENTRY_NAME } from "@modern-js/utils/universal/constants";
2
2
  import { getLoaderCtx } from "../../helper";
3
3
  import { sortRoutes } from "../../utils";
4
- import { CustomServer, getServerMidFromUnstableMid, injectRoute } from "../customServer";
5
- import { initReporter } from "../monitors";
4
+ import { CustomServer, getServerMidFromUnstableMid } from "../customServer";
5
+ import { requestLatencyMiddleware } from "../monitors";
6
6
  export * from "./inject";
7
7
  const renderPlugin = () => ({
8
8
  name: "@modern-js/plugin-render",
@@ -19,20 +19,14 @@ const renderPlugin = () => ({
19
19
  const customServer = new CustomServer(runner, serverBase, pwd);
20
20
  const serverMiddleware = ((_config_render = config.render) === null || _config_render === void 0 ? void 0 : _config_render.middleware) && getServerMidFromUnstableMid(config.render.middleware);
21
21
  const pageRoutes = getPageRoutes(routes);
22
+ middlewares.push({
23
+ name: "page-latency",
24
+ handler: requestLatencyMiddleware()
25
+ });
22
26
  for (const route of pageRoutes) {
23
27
  const { urlPath: originUrlPath, entryName = MAIN_ENTRY_NAME } = route;
24
28
  const urlPath = originUrlPath.endsWith("/") ? `${originUrlPath}*` : `${originUrlPath}/*`;
25
- middlewares.push({
26
- name: "init-reporter",
27
- handler: initReporter(entryName)
28
- });
29
29
  const customServerHookMiddleware = customServer.getHookMiddleware(entryName, routes);
30
- middlewares.push({
31
- name: "inject-route-info",
32
- handler: injectRoute({
33
- entryName
34
- })
35
- });
36
30
  middlewares.push({
37
31
  name: "custom-server-hook",
38
32
  path: urlPath,
@@ -103,6 +103,7 @@ async function createRender({ routes, pwd, metaName, staticGenerate, cacheConfig
103
103
  params,
104
104
  logger,
105
105
  metrics,
106
+ monitors,
106
107
  locals,
107
108
  rscClientManifest,
108
109
  rscSSRManifest,
@@ -3,7 +3,7 @@ import { X_MODERNJS_RENDER } from "../../constants";
3
3
  import { getPathname, parseHeaders } from "../../utils";
4
4
  import { getCacheResult, matchCacheControl } from "./ssrCache";
5
5
  const SERVER_RUNTIME_ENTRY = "requestHandler";
6
- async function ssrRender(request, { routeInfo, html, config: userConfig, staticGenerate, nodeReq, serverManifest, rscSSRManifest, rscClientManifest, rscServerManifest, locals, params, loaderContext, reporter, cacheConfig, logger, metrics, onError, onTiming }) {
6
+ async function ssrRender(request, { routeInfo, html, config: userConfig, staticGenerate, nodeReq, serverManifest, rscSSRManifest, rscClientManifest, rscServerManifest, locals, params, loaderContext, reporter, monitors, cacheConfig, logger, metrics, onError, onTiming }) {
7
7
  var _serverManifest_renderBundles;
8
8
  const { entryName } = routeInfo;
9
9
  const loadableStats = serverManifest.loadableStats || {};
@@ -41,6 +41,7 @@ async function ssrRender(request, { routeInfo, html, config: userConfig, staticG
41
41
  staticGenerate,
42
42
  logger,
43
43
  metrics,
44
+ monitors,
44
45
  onError,
45
46
  onTiming
46
47
  };
@@ -0,0 +1,41 @@
1
+ import { MAIN_ENTRY_NAME } from "@modern-js/utils/universal/constants";
2
+ import { sortRoutes } from "../utils";
3
+ function injectRoute(route) {
4
+ return async (c, next) => {
5
+ if (route && !c.get("route")) {
6
+ c.set("route", route);
7
+ }
8
+ await next();
9
+ };
10
+ }
11
+ function getPageRoutes(routes) {
12
+ return routes.filter((route) => !route.isApi).sort(sortRoutes);
13
+ }
14
+ const injectRoutePlugin = () => ({
15
+ name: "@modern-js/plugin-inject-route",
16
+ setup(api) {
17
+ return {
18
+ async prepare() {
19
+ const { middlewares, routes } = api.useAppContext();
20
+ if (!routes) {
21
+ return;
22
+ }
23
+ const pageRoutes = getPageRoutes(routes);
24
+ for (const route of pageRoutes) {
25
+ const { urlPath: originUrlPath, entryName = MAIN_ENTRY_NAME } = route;
26
+ const urlPath = originUrlPath.endsWith("/") ? `${originUrlPath}*` : `${originUrlPath}/*`;
27
+ middlewares.push({
28
+ name: "inject-route-info",
29
+ path: urlPath,
30
+ handler: injectRoute({
31
+ entryName
32
+ })
33
+ });
34
+ }
35
+ }
36
+ };
37
+ }
38
+ });
39
+ export {
40
+ injectRoutePlugin
41
+ };
@@ -3,7 +3,7 @@ export { AGGRED_DIR } from './constants';
3
3
  export type { ServerBase, ServerBaseOptions } from './serverBase';
4
4
  export { createServerBase } from './serverBase';
5
5
  export { PluginManager, type PluginManagerOptions } from './pluginManager';
6
- export type { Middleware, Context, Next, HonoRequest as InternalRequest, ServerEnv, ServerManifest, } from './types';
6
+ export type { Middleware, Context, Next, HonoRequest as InternalRequest, ServerEnv, ServerManifest, ServerLoaderBundle, } from './types';
7
7
  export { getLoaderCtx } from './helper';
8
8
  export * from './plugins';
9
9
  export * from './types/plugin';
@@ -11,6 +11,3 @@ export declare class CustomServer {
11
11
  getServerMiddleware(renderMiddlewares?: Middleware<ServerNodeEnv & ServerEnv>[]): Promise<Middleware<ServerNodeEnv & ServerEnv> | Array<Middleware<ServerNodeEnv & ServerEnv>> | undefined>;
12
12
  }
13
13
  export declare function getServerMidFromUnstableMid(serverMiddleware: UnstableMiddleware[]): Array<Middleware<ServerNodeEnv & ServerEnv>>;
14
- export declare function injectRoute(route: {
15
- entryName: string;
16
- }): Middleware<ServerEnv>;
@@ -1,6 +1,6 @@
1
1
  export { renderPlugin, injectRenderHandlerPlugin, type InjectRenderHandlerOptions, getRenderHandler, } from './render';
2
2
  export { faviconPlugin } from './favicon';
3
- export { injectServerTiming, injectloggerPluigin } from './monitors';
3
+ export { injectServerTiming, injectloggerPlugin } from './monitors';
4
4
  export { processedByPlugin } from './processedBy';
5
5
  export { logPlugin } from './log';
6
6
  export { createDefaultPlugins, type CreateDefaultPluginsOptions, } from './default';
@@ -1,6 +1,6 @@
1
1
  import type { Logger } from '@modern-js/types';
2
2
  import type { Context, Next, ServerEnv, ServerPlugin } from '../types';
3
3
  export declare const initMonitorsPlugin: () => ServerPlugin;
4
- export declare const injectloggerPluigin: (inputLogger?: Logger) => ServerPlugin;
4
+ export declare const injectloggerPlugin: (inputLogger?: Logger) => ServerPlugin;
5
5
  export declare const injectServerTiming: () => ServerPlugin;
6
- export declare function initReporter(entryName: string): (c: Context<ServerEnv>, next: Next) => Promise<void>;
6
+ export declare function requestLatencyMiddleware(): (c: Context<ServerEnv>, next: Next) => Promise<void>;
@@ -1,5 +1,5 @@
1
1
  import type { ServerRoute } from '@modern-js/types';
2
2
  import type { SSRRenderOptions } from './ssrRender';
3
- export declare const dataHandler: (request: Request, { routeInfo, serverRoutes, reporter, onError, onTiming, serverManifest, loaderContext, }: SSRRenderOptions & {
3
+ export declare const dataHandler: (request: Request, { routeInfo, serverRoutes, reporter, monitors, onError, onTiming, serverManifest, loaderContext, }: SSRRenderOptions & {
4
4
  serverRoutes: ServerRoute[];
5
5
  }) => Promise<Response | void>;
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" />
2
2
  import type { IncomingMessage } from 'http';
3
3
  import type { Logger, Metrics, Reporter, ServerRoute } from '@modern-js/types';
4
- import type { ClientManifest as RscClientManifest, SSRManifest as RscSSRManifest, ServerManifest as RscServerManifest } from '@modern-js/types/server';
4
+ import type { Monitors, ClientManifest as RscClientManifest, SSRManifest as RscSSRManifest, ServerManifest as RscServerManifest } from '@modern-js/types/server';
5
5
  import type { CacheConfig, ServerManifest, UserConfig } from '../../types';
6
6
  import type { OnError, OnTiming, Params } from '../../types/requestHandler';
7
7
  export interface SSRRenderOptions {
@@ -23,7 +23,8 @@ export interface SSRRenderOptions {
23
23
  locals?: Record<string, any>;
24
24
  cacheConfig?: CacheConfig;
25
25
  nodeReq?: IncomingMessage;
26
+ monitors: Monitors;
26
27
  onError: OnError;
27
28
  onTiming: OnTiming;
28
29
  }
29
- export declare function ssrRender(request: Request, { routeInfo, html, config: userConfig, staticGenerate, nodeReq, serverManifest, rscSSRManifest, rscClientManifest, rscServerManifest, locals, params, loaderContext, reporter, cacheConfig, logger, metrics, onError, onTiming, }: SSRRenderOptions): Promise<Response>;
30
+ export declare function ssrRender(request: Request, { routeInfo, html, config: userConfig, staticGenerate, nodeReq, serverManifest, rscSSRManifest, rscClientManifest, rscServerManifest, locals, params, loaderContext, reporter, monitors, cacheConfig, logger, metrics, onError, onTiming, }: SSRRenderOptions): Promise<Response>;
@@ -0,0 +1,2 @@
1
+ import type { ServerPlugin } from '../types';
2
+ export declare const injectRoutePlugin: () => ServerPlugin;
@@ -3,6 +3,7 @@ import type { IncomingMessage } from 'node:http';
3
3
  import type { Logger, Metrics, Monitors, Reporter, ClientManifest as RscClientManifest, SSRManifest as RscSSRManifest, ServerManifest as RscServerManifest } from '@modern-js/types';
4
4
  import type { ServerManifest } from './server';
5
5
  export interface RenderOptions {
6
+ monitors: Monitors;
6
7
  loaderContext?: Map<string, unknown>;
7
8
  /** ssr render html templates */
8
9
  templates: Record<string, string>;
@@ -18,7 +19,6 @@ export interface RenderOptions {
18
19
  matchPathname?: string;
19
20
  /** For compat rewrite MPA, while not modify request */
20
21
  matchEntryName?: string;
21
- monitors?: Monitors;
22
22
  serverManifest: ServerManifest;
23
23
  rscServerManifest?: RscServerManifest;
24
24
  rscClientManifest?: RscClientManifest;
@@ -1,5 +1,5 @@
1
1
  import type { Logger, Metrics, Reporter, ServerRoute } from '@modern-js/types';
2
- import type { ClientManifest as RscClientManifest, SSRManifest as RscSSRManifest, ServerManifest as RscServerManifest } from '@modern-js/types/server';
2
+ import type { Monitors, ClientManifest as RscClientManifest, SSRManifest as RscSSRManifest, ServerManifest as RscServerManifest } from '@modern-js/types/server';
3
3
  import type { ServerUserConfig, SourceUserConfig } from './config';
4
4
  export type Resource = {
5
5
  loadableStats: Record<string, any>;
@@ -43,6 +43,7 @@ export type RequestHandlerOptions = {
43
43
  logger: Logger;
44
44
  /** @deprecated */
45
45
  metrics?: Metrics;
46
+ monitors: Monitors;
46
47
  onError: OnError;
47
48
  onTiming: OnTiming;
48
49
  };
@@ -2,13 +2,14 @@ import type { Logger, Metrics, Monitors, NestedRoute, Reporter, ServerRoute } fr
2
2
  import type { ClientManifest as RscClientManifest, SSRManifest as RscSSRManifest, ServerManifest as RscServerManifest } from '@modern-js/types/server';
3
3
  import type { RequestHandler as BundleRequestHandler, OnError, OnTiming } from './requestHandler';
4
4
  export type RequestHandler = (request: Request, ...args: any[]) => Response | Promise<Response>;
5
- type ServerLoaderBundle = {
5
+ export type ServerLoaderBundle = {
6
6
  routes: NestedRoute[];
7
7
  handleRequest: (options: {
8
8
  request: Request;
9
9
  serverRoutes: ServerRoute[];
10
10
  routes: NestedRoute[];
11
11
  context: {
12
+ monitors: Monitors;
12
13
  reporter?: Reporter;
13
14
  loaderContext?: Map<string, unknown>;
14
15
  };
@@ -33,11 +34,11 @@ export type ServerManifest = {
33
34
  nestedRoutesJson?: Record<string, any>;
34
35
  };
35
36
  type ServerVariables = {
36
- /** @deprecated */
37
+ /** @deprecated */
37
38
  logger: Logger;
38
- /** @deprecated */
39
+ /** @deprecated */
39
40
  reporter?: Reporter;
40
- /** @deprecated */
41
+ /** @deprecated */
41
42
  metrics?: Metrics;
42
43
  monitors: Monitors;
43
44
  serverManifest?: ServerManifest;
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "2.65.1",
18
+ "version": "2.65.2",
19
19
  "jsnext:source": "./src/index.ts",
20
20
  "types": "./dist/types/index.d.ts",
21
21
  "main": "./dist/cjs/index.js",
@@ -53,9 +53,9 @@
53
53
  "flatted": "^3.2.9",
54
54
  "hono": "^3.12.2",
55
55
  "ts-deepmerge": "7.0.2",
56
- "@modern-js/plugin": "2.65.1",
57
- "@modern-js/runtime-utils": "2.65.1",
58
- "@modern-js/utils": "2.65.1"
56
+ "@modern-js/plugin": "2.65.2",
57
+ "@modern-js/runtime-utils": "2.65.2",
58
+ "@modern-js/utils": "2.65.2"
59
59
  },
60
60
  "devDependencies": {
61
61
  "@types/jest": "^29",
@@ -65,9 +65,9 @@
65
65
  "jest": "^29",
66
66
  "ts-jest": "^29.1.0",
67
67
  "typescript": "^5",
68
- "@modern-js/types": "2.65.1",
69
- "@scripts/build": "2.65.1",
70
- "@scripts/jest-config": "2.65.1"
68
+ "@modern-js/types": "2.65.2",
69
+ "@scripts/jest-config": "2.65.2",
70
+ "@scripts/build": "2.65.2"
71
71
  },
72
72
  "sideEffects": false,
73
73
  "publishConfig": {