@modern-js/runtime 2.39.2 → 2.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/cjs/cli/index.js +0 -23
  2. package/dist/cjs/router/cli/index.js +0 -13
  3. package/dist/cjs/ssr/prefetch.js +37 -16
  4. package/dist/cjs/ssr/serverRender/renderToStream/index.js +2 -2
  5. package/dist/cjs/ssr/serverRender/renderToString/entry.js +2 -6
  6. package/dist/cjs/ssr/serverRender/renderToString/index.js +0 -5
  7. package/dist/cjs/ssr/serverRender/renderToString/loadable.js +14 -9
  8. package/dist/cjs/ssr/serverRender/tracker.js +30 -25
  9. package/dist/cjs/state/cli/index.js +0 -13
  10. package/dist/esm/cli/index.js +1 -23
  11. package/dist/esm/router/cli/index.js +0 -13
  12. package/dist/esm/ssr/prefetch.js +51 -18
  13. package/dist/esm/ssr/serverRender/renderToStream/index.js +2 -2
  14. package/dist/esm/ssr/serverRender/renderToString/entry.js +11 -17
  15. package/dist/esm/ssr/serverRender/renderToString/index.js +1 -6
  16. package/dist/esm/ssr/serverRender/renderToString/loadable.js +68 -63
  17. package/dist/esm/ssr/serverRender/tracker.js +28 -24
  18. package/dist/esm/state/cli/index.js +0 -13
  19. package/dist/esm-node/cli/index.js +1 -24
  20. package/dist/esm-node/router/cli/index.js +0 -13
  21. package/dist/esm-node/ssr/prefetch.js +37 -16
  22. package/dist/esm-node/ssr/serverRender/renderToStream/index.js +2 -2
  23. package/dist/esm-node/ssr/serverRender/renderToString/entry.js +2 -6
  24. package/dist/esm-node/ssr/serverRender/renderToString/index.js +0 -5
  25. package/dist/esm-node/ssr/serverRender/renderToString/loadable.js +14 -9
  26. package/dist/esm-node/ssr/serverRender/tracker.js +30 -25
  27. package/dist/esm-node/state/cli/index.js +0 -13
  28. package/dist/types/ssr/prefetch.d.ts +4 -2
  29. package/dist/types/ssr/serverRender/tracker.d.ts +9 -8
  30. package/package.json +10 -10
@@ -85,29 +85,6 @@ const runtimePlugin = () => ({
85
85
  }
86
86
  };
87
87
  },
88
- validateSchema() {
89
- return [
90
- {
91
- target: "runtime",
92
- schema: {
93
- type: "object",
94
- additionalProperties: false
95
- }
96
- },
97
- {
98
- target: "runtimeByEntries",
99
- schema: {
100
- type: "object",
101
- patternProperties: {
102
- [import_utils.ENTRY_NAME_PATTERN]: {
103
- type: "object"
104
- }
105
- },
106
- additionalProperties: false
107
- }
108
- }
109
- ];
110
- },
111
88
  async beforeRestart() {
112
89
  (0, import_utils.cleanRequireCache)([
113
90
  require.resolve("../state/cli"),
@@ -53,19 +53,6 @@ const routerPlugin = () => ({
53
53
  }
54
54
  };
55
55
  },
56
- validateSchema() {
57
- return [
58
- {
59
- target: "runtime.router",
60
- schema: {
61
- type: [
62
- "boolean",
63
- "object"
64
- ]
65
- }
66
- }
67
- ];
68
- },
69
56
  modifyEntryImports({ entrypoint, imports }) {
70
57
  const { entryName, isMainEntry, fileSystemRoutes } = entrypoint;
71
58
  const userConfig = api.useResolvedConfigContext();
@@ -25,25 +25,36 @@ var import_jsx_runtime = require("react/jsx-runtime");
25
25
  var import_server = require("react-dom/server");
26
26
  var import_node = require("@modern-js/runtime-utils/node");
27
27
  var import_server2 = require("@loadable/server");
28
- const prefetch = async (App, context, config) => (0, import_node.run)(context.ssrContext.request.headers, async () => {
28
+ var import_time = require("@modern-js/runtime-utils/time");
29
+ var import_tracker = require("./serverRender/tracker");
30
+ const prefetch = async (App, context, config, tracker) => (0, import_node.run)(context.ssrContext.request.headers, async () => {
29
31
  var _context_store;
30
32
  const { ssrContext } = context;
31
33
  const { loadableStats } = ssrContext;
32
34
  if (!config.disablePrerender) {
33
- if (loadableStats) {
34
- const extractor = new import_server2.ChunkExtractor({
35
- stats: loadableStats,
36
- entrypoints: [
37
- ssrContext.entryName
38
- ].filter(Boolean)
39
- });
40
- (0, import_server.renderToStaticMarkup)(extractor.collectChunks(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(App, {
41
- context
42
- })));
43
- } else {
44
- (0, import_server.renderToStaticMarkup)(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(App, {
45
- context
46
- }));
35
+ try {
36
+ const end = (0, import_time.time)();
37
+ if (loadableStats) {
38
+ const extractor = new import_server2.ChunkExtractor({
39
+ stats: loadableStats,
40
+ entrypoints: [
41
+ ssrContext.entryName
42
+ ].filter(Boolean)
43
+ });
44
+ (0, import_server.renderToStaticMarkup)(extractor.collectChunks(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(App, {
45
+ context
46
+ })));
47
+ } else {
48
+ (0, import_server.renderToStaticMarkup)(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(App, {
49
+ context
50
+ }));
51
+ }
52
+ const cost = end();
53
+ tracker.trackTiming(import_tracker.SSRTimings.PRERENDER, cost);
54
+ } catch (e) {
55
+ const error = e;
56
+ tracker.trackError(import_tracker.SSRErrors.PRERENDER, error);
57
+ throw e;
47
58
  }
48
59
  }
49
60
  if (!context.loaderManager.hasPendingLoaders()) {
@@ -52,7 +63,17 @@ const prefetch = async (App, context, config) => (0, import_node.run)(context.ss
52
63
  i18nData: context.__i18nData__
53
64
  };
54
65
  }
55
- const loadersData = await context.loaderManager.awaitPendingLoaders();
66
+ let loadersData = {};
67
+ try {
68
+ const end = (0, import_time.time)();
69
+ loadersData = await context.loaderManager.awaitPendingLoaders();
70
+ const cost = end();
71
+ tracker.trackTiming(import_tracker.SSRTimings.USE_LOADER, cost);
72
+ } catch (e) {
73
+ const error = e;
74
+ tracker.trackError(import_tracker.SSRErrors.USE_LOADER, error);
75
+ throw e;
76
+ }
56
77
  Object.keys(loadersData).forEach((id) => {
57
78
  const data = loadersData[id];
58
79
  if (data._error) {
@@ -57,11 +57,11 @@ const render = ({ App, context }) => {
57
57
  ssrContext.cacheConfig = cacheConfig;
58
58
  }
59
59
  const cost = end();
60
- tracker.trackTiming(import_tracker.SSRTimings.SSR_RENDER_SHELL, cost);
60
+ tracker.trackTiming(import_tracker.SSRTimings.RENDER_SHELL, cost);
61
61
  },
62
62
  onAllReady() {
63
63
  const cost = end();
64
- tracker.trackTiming(import_tracker.SSRTimings.SSR_RENDER_TOTAL, cost);
64
+ tracker.trackTiming(import_tracker.SSRTimings.RENDER_HTML, cost);
65
65
  },
66
66
  onShellError(e) {
67
67
  tracker.trackError(import_tracker.SSRErrors.RENDER_SHELL, e);
@@ -105,15 +105,11 @@ class Entry {
105
105
  }
106
106
  async prefetch(context) {
107
107
  let prefetchData;
108
- const end = (0, import_time.time)();
109
108
  try {
110
- prefetchData = await (0, import_prefetch.default)(this.App, context, this.pluginConfig);
109
+ prefetchData = await (0, import_prefetch.default)(this.App, context, this.pluginConfig, this.tracker);
111
110
  this.result.renderLevel = import_types.RenderLevel.SERVER_PREFETCH;
112
- const prefetchCost = end();
113
- this.tracker.trackTiming(import_tracker.SSRTimings.SSR_PREFETCH, prefetchCost);
114
111
  } catch (e) {
115
112
  this.result.renderLevel = import_types.RenderLevel.CLIENT_RENDER;
116
- this.tracker.trackError(import_tracker.SSRErrors.PREFETCH, e);
117
113
  }
118
114
  return prefetchData || {};
119
115
  }
@@ -137,7 +133,7 @@ class Entry {
137
133
  routeManifest: this.routeManifest
138
134
  })).finish();
139
135
  const cost = end();
140
- this.tracker.trackTiming(import_tracker.SSRTimings.SSR_RENDER_HTML, cost);
136
+ this.tracker.trackTiming(import_tracker.SSRTimings.RENDER_HTML, cost);
141
137
  this.result.renderLevel = import_types.RenderLevel.SERVER_RENDER;
142
138
  } catch (e) {
143
139
  this.tracker.trackError(import_tracker.SSRErrors.RENDER_HTML, e);
@@ -32,9 +32,7 @@ __export(renderToString_exports, {
32
32
  });
33
33
  module.exports = __toCommonJS(renderToString_exports);
34
34
  var import_node = require("@modern-js/runtime-utils/node");
35
- var import_time = require("@modern-js/runtime-utils/time");
36
35
  var import_prerender = require("../../react/prerender");
37
- var import_tracker = require("../tracker");
38
36
  var import_entry = __toESM(require("./entry"));
39
37
  const render = ({ App, context, config }) => {
40
38
  const ssrContext = context.ssrContext;
@@ -45,10 +43,7 @@ const render = ({ App, context, config }) => {
45
43
  config
46
44
  });
47
45
  entry.metrics.emitCounter("app.visit.count", 1);
48
- const end = (0, import_time.time)();
49
46
  const html = await entry.renderToHtml(context);
50
- const cost = end();
51
- entry.tracker.trackTiming(import_tracker.SSRTimings.SSR_RENDER_TOTAL, cost);
52
47
  const cacheConfig = import_prerender.PreRender.config();
53
48
  if (cacheConfig) {
54
49
  context.ssrContext.cacheConfig = cacheConfig;
@@ -52,6 +52,12 @@ const checkIsInline = (chunk, enableInline) => {
52
52
  return false;
53
53
  }
54
54
  };
55
+ const readAsset = async (chunk) => {
56
+ const fs = await Promise.resolve().then(() => __toESM(require("node:fs/promises")));
57
+ const path = await Promise.resolve().then(() => __toESM(require("node:path")));
58
+ const filepath = path.resolve(__dirname, chunk.filename);
59
+ return fs.readFile(filepath, "utf-8");
60
+ };
55
61
  const checkIsNode = () => {
56
62
  var _process_release;
57
63
  return typeof process !== "undefined" && ((_process_release = process.release) === null || _process_release === void 0 ? void 0 : _process_release.name) === "node";
@@ -114,14 +120,13 @@ class LoadableCollector {
114
120
  const jsChunkReg = new RegExp(`<script .*src="${chunk.url}".*>`);
115
121
  return !jsChunkReg.test(template) && !((_this_existsAssets = this.existsAssets) === null || _this_existsAssets === void 0 ? void 0 : _this_existsAssets.includes(chunk.path));
116
122
  }).map(async (chunk) => {
123
+ const script = `<script${attributes} src="${chunk.url}"></script>`;
117
124
  if (checkIsInline(chunk, enableInlineScripts) && checkIsNode()) {
118
- const fs = await Promise.resolve().then(() => __toESM(require("node:fs/promises")));
119
- const filepath = chunk.path;
120
- return fs.readFile(filepath, "utf-8").then((content) => `<script>${content}</script>`).catch((_) => {
121
- return "";
125
+ return readAsset(chunk).then((content) => `<script>${content}</script>`).catch((_) => {
126
+ return script;
122
127
  });
123
128
  } else {
124
- return `<script${attributes} src="${chunk.url}"></script>`;
129
+ return script;
125
130
  }
126
131
  }));
127
132
  chunksMap.js += scripts.filter((script) => Boolean(script)).join("");
@@ -134,13 +139,13 @@ class LoadableCollector {
134
139
  const cssChunkReg = new RegExp(`<link .*href="${chunk.url}".*>`);
135
140
  return !cssChunkReg.test(template) && !((_this_existsAssets = this.existsAssets) === null || _this_existsAssets === void 0 ? void 0 : _this_existsAssets.includes(chunk.path));
136
141
  }).map(async (chunk) => {
142
+ const link = `<link${atrributes} href="${chunk.url}" rel="stylesheet" />`;
137
143
  if (checkIsInline(chunk, enableInlineStyles) && checkIsNode()) {
138
- const fs = await Promise.resolve().then(() => __toESM(require("node:fs/promises")));
139
- return fs.readFile(chunk.path).then((content) => `<style>${content}</style>`).catch((_) => {
140
- return "";
144
+ return readAsset(chunk).then((content) => `<style>${content}</style>`).catch((_) => {
145
+ return link;
141
146
  });
142
147
  } else {
143
- return `<link${atrributes} href="${chunk.url}" rel="stylesheet" />`;
148
+ return link;
144
149
  }
145
150
  }));
146
151
  chunksMap.css += css.filter((css2) => Boolean(css2)).join("");
@@ -25,23 +25,29 @@ __export(tracker_exports, {
25
25
  module.exports = __toCommonJS(tracker_exports);
26
26
  var SSRTimings;
27
27
  (function(SSRTimings2) {
28
- SSRTimings2[SSRTimings2["SSR_RENDER_TOTAL"] = 0] = "SSR_RENDER_TOTAL";
29
- SSRTimings2[SSRTimings2["SSR_PREFETCH"] = 1] = "SSR_PREFETCH";
30
- SSRTimings2[SSRTimings2["SSR_RENDER_HTML"] = 2] = "SSR_RENDER_HTML";
31
- SSRTimings2[SSRTimings2["SSR_RENDER_SHELL"] = 3] = "SSR_RENDER_SHELL";
28
+ SSRTimings2[SSRTimings2["PRERENDER"] = 0] = "PRERENDER";
29
+ SSRTimings2[SSRTimings2["RENDER_HTML"] = 1] = "RENDER_HTML";
30
+ SSRTimings2[SSRTimings2["RENDER_SHELL"] = 2] = "RENDER_SHELL";
31
+ SSRTimings2[SSRTimings2["USE_LOADER"] = 3] = "USE_LOADER";
32
32
  })(SSRTimings || (SSRTimings = {}));
33
33
  var SSRErrors;
34
34
  (function(SSRErrors2) {
35
- SSRErrors2[SSRErrors2["PREFETCH"] = 0] = "PREFETCH";
36
- SSRErrors2[SSRErrors2["RENDER_HTML"] = 1] = "RENDER_HTML";
37
- SSRErrors2[SSRErrors2["RENDER_STREAM"] = 2] = "RENDER_STREAM";
38
- SSRErrors2[SSRErrors2["RENDER_SHELL"] = 3] = "RENDER_SHELL";
35
+ SSRErrors2[SSRErrors2["PRERENDER"] = 0] = "PRERENDER";
36
+ SSRErrors2[SSRErrors2["USE_LOADER"] = 1] = "USE_LOADER";
37
+ SSRErrors2[SSRErrors2["RENDER_HTML"] = 2] = "RENDER_HTML";
38
+ SSRErrors2[SSRErrors2["RENDER_STREAM"] = 3] = "RENDER_STREAM";
39
+ SSRErrors2[SSRErrors2["RENDER_SHELL"] = 4] = "RENDER_SHELL";
39
40
  })(SSRErrors || (SSRErrors = {}));
40
41
  const errors = {
41
- [SSRErrors.PREFETCH]: {
42
- reporter: "SSR Error - App Prefetch Render",
43
- logger: "App Prefetch Render",
44
- metrics: "app.prefetch.render.error"
42
+ [SSRErrors.PRERENDER]: {
43
+ reporter: "SSR Error - App Prerender",
44
+ logger: "App Prerender",
45
+ metrics: "app.prerender.error"
46
+ },
47
+ [SSRErrors.USE_LOADER]: {
48
+ reporter: "SSR Error - App run useLoader",
49
+ logger: "App run useLoader",
50
+ metrics: "app.useloader.error"
45
51
  },
46
52
  [SSRErrors.RENDER_HTML]: {
47
53
  reporter: "SSR Error - App Render To HTML",
@@ -58,26 +64,25 @@ const errors = {
58
64
  }
59
65
  };
60
66
  const timings = {
61
- [SSRTimings.SSR_PREFETCH]: {
62
- reporter: "ssr-prefetch",
63
- serverTiming: "ssr-prefetch",
64
- metrics: "app.prefeth.cost",
65
- logger: "App Prefetch cost = %d ms"
67
+ [SSRTimings.PRERENDER]: {
68
+ reporter: "ssr-prerender",
69
+ serverTiming: "ssr-prerender",
70
+ metrics: "app.prerender.cost",
71
+ logger: "App Prerender cost = %d ms"
66
72
  },
67
- [SSRTimings.SSR_RENDER_HTML]: {
73
+ [SSRTimings.RENDER_HTML]: {
68
74
  reporter: "ssr-render-html",
69
75
  serverTiming: "ssr-render-html",
70
76
  metrics: "app.render.html.cost",
71
77
  logger: "App Render To HTML cost = %d ms"
72
78
  },
73
- [SSRTimings.SSR_RENDER_TOTAL]: {
74
- reporter: "ssr-render-total",
75
- serverTiming: "ssr-render-total",
76
- metrics: "app.render.cost",
77
- logger: "App Render Total cost = %d ms"
78
- },
79
- [SSRTimings.SSR_RENDER_SHELL]: {
79
+ [SSRTimings.RENDER_SHELL]: {
80
80
  reporter: "ssr-render-shell"
81
+ },
82
+ [SSRTimings.USE_LOADER]: {
83
+ reporter: "use-loader",
84
+ serverTiming: "use-loader",
85
+ logger: "App run useLoader cost = %d ms"
81
86
  }
82
87
  };
83
88
  function createSSRTracker({ reporter, serverTiming, metrics, logger }) {
@@ -79,19 +79,6 @@ const statePlugin = () => ({
79
79
  plugins
80
80
  };
81
81
  },
82
- validateSchema() {
83
- return [
84
- {
85
- target: "runtime.state",
86
- schema: {
87
- type: [
88
- "boolean",
89
- "object"
90
- ]
91
- }
92
- }
93
- ];
94
- },
95
82
  addRuntimeExports() {
96
83
  pluginsExportsUtils.addExport(`export { default as state } from '@modern-js/runtime/model'`);
97
84
  }
@@ -1,8 +1,7 @@
1
1
  import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
3
2
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
4
3
  import path from "path";
5
- import { isReact18, cleanRequireCache, ENTRY_NAME_PATTERN } from "@modern-js/utils";
4
+ import { isReact18, cleanRequireCache } from "@modern-js/utils";
6
5
  import { statePlugin } from "../state/cli";
7
6
  import { ssrPlugin } from "../ssr/cli";
8
7
  import { routerPlugin } from "../router/cli";
@@ -55,27 +54,6 @@ var runtimePlugin = function() {
55
54
  }
56
55
  };
57
56
  },
58
- validateSchema: function validateSchema() {
59
- return [
60
- {
61
- target: "runtime",
62
- schema: {
63
- type: "object",
64
- additionalProperties: false
65
- }
66
- },
67
- {
68
- target: "runtimeByEntries",
69
- schema: {
70
- type: "object",
71
- patternProperties: _define_property({}, ENTRY_NAME_PATTERN, {
72
- type: "object"
73
- }),
74
- additionalProperties: false
75
- }
76
- }
77
- ];
78
- },
79
57
  beforeRestart: function beforeRestart() {
80
58
  return _async_to_generator(function() {
81
59
  return _ts_generator(this, function(_state) {
@@ -32,19 +32,6 @@ var routerPlugin = function() {
32
32
  }
33
33
  };
34
34
  },
35
- validateSchema: function validateSchema() {
36
- return [
37
- {
38
- target: "runtime.router",
39
- schema: {
40
- type: [
41
- "boolean",
42
- "object"
43
- ]
44
- }
45
- }
46
- ];
47
- },
48
35
  modifyEntryImports: function modifyEntryImports(param) {
49
36
  var entrypoint = param.entrypoint, imports = param.imports;
50
37
  var entryName = entrypoint.entryName, isMainEntry = entrypoint.isMainEntry, fileSystemRoutes = entrypoint.fileSystemRoutes;
@@ -4,33 +4,44 @@ import { jsx as _jsx } from "react/jsx-runtime";
4
4
  import { renderToStaticMarkup } from "react-dom/server";
5
5
  import { run } from "@modern-js/runtime-utils/node";
6
6
  import { ChunkExtractor } from "@loadable/server";
7
+ import { time } from "@modern-js/runtime-utils/time";
8
+ import { SSRTimings, SSRErrors } from "./serverRender/tracker";
7
9
  var prefetch = function() {
8
- var _ref = _async_to_generator(function(App, context, config) {
10
+ var _ref = _async_to_generator(function(App, context, config, tracker) {
9
11
  return _ts_generator(this, function(_state) {
10
12
  return [
11
13
  2,
12
14
  run(context.ssrContext.request.headers, /* @__PURE__ */ _async_to_generator(function() {
13
- var _context_store, ssrContext, loadableStats, extractor, loadersData;
15
+ var _context_store, ssrContext, loadableStats, end, extractor, cost, error, loadersData, end1, cost1, e, error1;
14
16
  return _ts_generator(this, function(_state2) {
15
17
  switch (_state2.label) {
16
18
  case 0:
17
19
  ssrContext = context.ssrContext;
18
20
  loadableStats = ssrContext.loadableStats;
19
21
  if (!config.disablePrerender) {
20
- if (loadableStats) {
21
- extractor = new ChunkExtractor({
22
- stats: loadableStats,
23
- entrypoints: [
24
- ssrContext.entryName
25
- ].filter(Boolean)
26
- });
27
- renderToStaticMarkup(extractor.collectChunks(/* @__PURE__ */ _jsx(App, {
28
- context
29
- })));
30
- } else {
31
- renderToStaticMarkup(/* @__PURE__ */ _jsx(App, {
32
- context
33
- }));
22
+ try {
23
+ end = time();
24
+ if (loadableStats) {
25
+ extractor = new ChunkExtractor({
26
+ stats: loadableStats,
27
+ entrypoints: [
28
+ ssrContext.entryName
29
+ ].filter(Boolean)
30
+ });
31
+ renderToStaticMarkup(extractor.collectChunks(/* @__PURE__ */ _jsx(App, {
32
+ context
33
+ })));
34
+ } else {
35
+ renderToStaticMarkup(/* @__PURE__ */ _jsx(App, {
36
+ context
37
+ }));
38
+ }
39
+ cost = end();
40
+ tracker.trackTiming(SSRTimings.PRERENDER, cost);
41
+ } catch (e2) {
42
+ error = e2;
43
+ tracker.trackError(SSRErrors.PRERENDER, error);
44
+ throw e2;
34
45
  }
35
46
  }
36
47
  if (!context.loaderManager.hasPendingLoaders()) {
@@ -42,12 +53,34 @@ var prefetch = function() {
42
53
  }
43
54
  ];
44
55
  }
56
+ loadersData = {};
57
+ _state2.label = 1;
58
+ case 1:
59
+ _state2.trys.push([
60
+ 1,
61
+ 3,
62
+ ,
63
+ 4
64
+ ]);
65
+ end1 = time();
45
66
  return [
46
67
  4,
47
68
  context.loaderManager.awaitPendingLoaders()
48
69
  ];
49
- case 1:
70
+ case 2:
50
71
  loadersData = _state2.sent();
72
+ cost1 = end1();
73
+ tracker.trackTiming(SSRTimings.USE_LOADER, cost1);
74
+ return [
75
+ 3,
76
+ 4
77
+ ];
78
+ case 3:
79
+ e = _state2.sent();
80
+ error1 = e;
81
+ tracker.trackError(SSRErrors.USE_LOADER, error1);
82
+ throw e;
83
+ case 4:
51
84
  Object.keys(loadersData).forEach(function(id) {
52
85
  var data = loadersData[id];
53
86
  if (data._error) {
@@ -72,7 +105,7 @@ var prefetch = function() {
72
105
  ];
73
106
  });
74
107
  });
75
- return function prefetch2(App, context, config) {
108
+ return function prefetch2(App, context, config, tracker) {
76
109
  return _ref.apply(this, arguments);
77
110
  };
78
111
  }();
@@ -29,11 +29,11 @@ var render = function(param) {
29
29
  ssrContext.cacheConfig = cacheConfig;
30
30
  }
31
31
  var cost = end();
32
- tracker.trackTiming(SSRTimings.SSR_RENDER_SHELL, cost);
32
+ tracker.trackTiming(SSRTimings.RENDER_SHELL, cost);
33
33
  },
34
34
  onAllReady: function onAllReady() {
35
35
  var cost = end();
36
- tracker.trackTiming(SSRTimings.SSR_RENDER_TOTAL, cost);
36
+ tracker.trackTiming(SSRTimings.RENDER_HTML, cost);
37
37
  },
38
38
  onShellError: function onShellError(e) {
39
39
  tracker.trackError(SSRErrors.RENDER_SHELL, e);
@@ -152,41 +152,35 @@ var Entry = /* @__PURE__ */ function() {
152
152
  value: function prefetch1(context) {
153
153
  var _this = this;
154
154
  return _async_to_generator(function() {
155
- var prefetchData, end, prefetchCost, e;
155
+ var prefetchData, e;
156
156
  return _ts_generator(this, function(_state) {
157
157
  switch (_state.label) {
158
158
  case 0:
159
- end = time();
160
- _state.label = 1;
161
- case 1:
162
159
  _state.trys.push([
163
- 1,
164
- 3,
160
+ 0,
161
+ 2,
165
162
  ,
166
- 4
163
+ 3
167
164
  ]);
168
165
  return [
169
166
  4,
170
- prefetch(_this.App, context, _this.pluginConfig)
167
+ prefetch(_this.App, context, _this.pluginConfig, _this.tracker)
171
168
  ];
172
- case 2:
169
+ case 1:
173
170
  prefetchData = _state.sent();
174
171
  _this.result.renderLevel = RenderLevel.SERVER_PREFETCH;
175
- prefetchCost = end();
176
- _this.tracker.trackTiming(SSRTimings.SSR_PREFETCH, prefetchCost);
177
172
  return [
178
173
  3,
179
- 4
174
+ 3
180
175
  ];
181
- case 3:
176
+ case 2:
182
177
  e = _state.sent();
183
178
  _this.result.renderLevel = RenderLevel.CLIENT_RENDER;
184
- _this.tracker.trackError(SSRErrors.PREFETCH, e);
185
179
  return [
186
180
  3,
187
- 4
181
+ 3
188
182
  ];
189
- case 4:
183
+ case 3:
190
184
  return [
191
185
  2,
192
186
  prefetchData || {}
@@ -236,7 +230,7 @@ var Entry = /* @__PURE__ */ function() {
236
230
  case 2:
237
231
  html = _state.sent();
238
232
  cost = end();
239
- _this.tracker.trackTiming(SSRTimings.SSR_RENDER_HTML, cost);
233
+ _this.tracker.trackTiming(SSRTimings.RENDER_HTML, cost);
240
234
  _this.result.renderLevel = RenderLevel.SERVER_RENDER;
241
235
  return [
242
236
  3,
@@ -1,15 +1,13 @@
1
1
  import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
2
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
3
3
  import { run } from "@modern-js/runtime-utils/node";
4
- import { time } from "@modern-js/runtime-utils/time";
5
4
  import { PreRender } from "../../react/prerender";
6
- import { SSRTimings } from "../tracker";
7
5
  import SSREntry from "./entry";
8
6
  var render = function(param) {
9
7
  var App = param.App, context = param.context, config = param.config;
10
8
  var ssrContext = context.ssrContext;
11
9
  return run(ssrContext.request.headers, /* @__PURE__ */ _async_to_generator(function() {
12
- var entry, end, html, cost, cacheConfig;
10
+ var entry, html, cacheConfig;
13
11
  return _ts_generator(this, function(_state) {
14
12
  switch (_state.label) {
15
13
  case 0:
@@ -19,15 +17,12 @@ var render = function(param) {
19
17
  config
20
18
  });
21
19
  entry.metrics.emitCounter("app.visit.count", 1);
22
- end = time();
23
20
  return [
24
21
  4,
25
22
  entry.renderToHtml(context)
26
23
  ];
27
24
  case 1:
28
25
  html = _state.sent();
29
- cost = end();
30
- entry.tracker.trackTiming(SSRTimings.SSR_RENDER_TOTAL, cost);
31
26
  cacheConfig = PreRender.config();
32
27
  if (cacheConfig) {
33
28
  context.ssrContext.cacheConfig = cacheConfig;