@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
@@ -31,6 +31,36 @@ var checkIsInline = function(chunk, enableInline) {
31
31
  return false;
32
32
  }
33
33
  };
34
+ var readAsset = function() {
35
+ var _ref = _async_to_generator(function(chunk) {
36
+ var fs, path, filepath;
37
+ return _ts_generator(this, function(_state) {
38
+ switch (_state.label) {
39
+ case 0:
40
+ return [
41
+ 4,
42
+ import("node:fs/promises")
43
+ ];
44
+ case 1:
45
+ fs = _state.sent();
46
+ return [
47
+ 4,
48
+ import("node:path")
49
+ ];
50
+ case 2:
51
+ path = _state.sent();
52
+ filepath = path.resolve(__dirname, chunk.filename);
53
+ return [
54
+ 2,
55
+ fs.readFile(filepath, "utf-8")
56
+ ];
57
+ }
58
+ });
59
+ });
60
+ return function readAsset2(chunk) {
61
+ return _ref.apply(this, arguments);
62
+ };
63
+ }();
34
64
  var checkIsNode = function() {
35
65
  var _process_release;
36
66
  return typeof process !== "undefined" && ((_process_release = process.release) === null || _process_release === void 0 ? void 0 : _process_release.name) === "node";
@@ -151,40 +181,27 @@ var LoadableCollector = /* @__PURE__ */ function() {
151
181
  return !jsChunkReg.test(template) && !((_this_existsAssets = _this.existsAssets) === null || _this_existsAssets === void 0 ? void 0 : _this_existsAssets.includes(chunk.path));
152
182
  }).map(function() {
153
183
  var _ref = _async_to_generator(function(chunk) {
154
- var fs, filepath;
184
+ var script;
155
185
  return _ts_generator(this, function(_state2) {
156
- switch (_state2.label) {
157
- case 0:
158
- if (!(checkIsInline(chunk, enableInlineScripts) && checkIsNode()))
159
- return [
160
- 3,
161
- 2
162
- ];
163
- return [
164
- 4,
165
- import("node:fs/promises")
166
- ];
167
- case 1:
168
- fs = _state2.sent();
169
- filepath = chunk.path;
170
- return [
171
- 2,
172
- fs.readFile(filepath, "utf-8").then(function(content) {
173
- return "<script>".concat(content, "</script>");
174
- }).catch(function(_) {
175
- return "";
176
- })
177
- ];
178
- case 2:
179
- return [
180
- 2,
181
- "<script".concat(attributes, ' src="').concat(chunk.url, '"></script>')
182
- ];
183
- case 3:
184
- return [
185
- 2
186
- ];
186
+ script = "<script".concat(attributes, ' src="').concat(chunk.url, '"></script>');
187
+ if (checkIsInline(chunk, enableInlineScripts) && checkIsNode()) {
188
+ return [
189
+ 2,
190
+ readAsset(chunk).then(function(content) {
191
+ return "<script>".concat(content, "</script>");
192
+ }).catch(function(_) {
193
+ return script;
194
+ })
195
+ ];
196
+ } else {
197
+ return [
198
+ 2,
199
+ script
200
+ ];
187
201
  }
202
+ return [
203
+ 2
204
+ ];
188
205
  });
189
206
  });
190
207
  return function(chunk) {
@@ -224,39 +241,27 @@ var LoadableCollector = /* @__PURE__ */ function() {
224
241
  return !cssChunkReg.test(template) && !((_this_existsAssets = _this.existsAssets) === null || _this_existsAssets === void 0 ? void 0 : _this_existsAssets.includes(chunk.path));
225
242
  }).map(function() {
226
243
  var _ref = _async_to_generator(function(chunk) {
227
- var fs;
244
+ var link;
228
245
  return _ts_generator(this, function(_state2) {
229
- switch (_state2.label) {
230
- case 0:
231
- if (!(checkIsInline(chunk, enableInlineStyles) && checkIsNode()))
232
- return [
233
- 3,
234
- 2
235
- ];
236
- return [
237
- 4,
238
- import("node:fs/promises")
239
- ];
240
- case 1:
241
- fs = _state2.sent();
242
- return [
243
- 2,
244
- fs.readFile(chunk.path).then(function(content) {
245
- return "<style>".concat(content, "</style>");
246
- }).catch(function(_) {
247
- return "";
248
- })
249
- ];
250
- case 2:
251
- return [
252
- 2,
253
- "<link".concat(atrributes, ' href="').concat(chunk.url, '" rel="stylesheet" />')
254
- ];
255
- case 3:
256
- return [
257
- 2
258
- ];
246
+ link = "<link".concat(atrributes, ' href="').concat(chunk.url, '" rel="stylesheet" />');
247
+ if (checkIsInline(chunk, enableInlineStyles) && checkIsNode()) {
248
+ return [
249
+ 2,
250
+ readAsset(chunk).then(function(content) {
251
+ return "<style>".concat(content, "</style>");
252
+ }).catch(function(_) {
253
+ return link;
254
+ })
255
+ ];
256
+ } else {
257
+ return [
258
+ 2,
259
+ link
260
+ ];
259
261
  }
262
+ return [
263
+ 2
264
+ ];
260
265
  });
261
266
  });
262
267
  return function(chunk) {
@@ -1,23 +1,28 @@
1
1
  import { _ as _define_property } from "@swc/helpers/_/_define_property";
2
2
  var SSRTimings;
3
3
  (function(SSRTimings2) {
4
- SSRTimings2[SSRTimings2["SSR_RENDER_TOTAL"] = 0] = "SSR_RENDER_TOTAL";
5
- SSRTimings2[SSRTimings2["SSR_PREFETCH"] = 1] = "SSR_PREFETCH";
6
- SSRTimings2[SSRTimings2["SSR_RENDER_HTML"] = 2] = "SSR_RENDER_HTML";
7
- SSRTimings2[SSRTimings2["SSR_RENDER_SHELL"] = 3] = "SSR_RENDER_SHELL";
4
+ SSRTimings2[SSRTimings2["PRERENDER"] = 0] = "PRERENDER";
5
+ SSRTimings2[SSRTimings2["RENDER_HTML"] = 1] = "RENDER_HTML";
6
+ SSRTimings2[SSRTimings2["RENDER_SHELL"] = 2] = "RENDER_SHELL";
7
+ SSRTimings2[SSRTimings2["USE_LOADER"] = 3] = "USE_LOADER";
8
8
  })(SSRTimings || (SSRTimings = {}));
9
9
  var SSRErrors;
10
10
  (function(SSRErrors2) {
11
- SSRErrors2[SSRErrors2["PREFETCH"] = 0] = "PREFETCH";
12
- SSRErrors2[SSRErrors2["RENDER_HTML"] = 1] = "RENDER_HTML";
13
- SSRErrors2[SSRErrors2["RENDER_STREAM"] = 2] = "RENDER_STREAM";
14
- SSRErrors2[SSRErrors2["RENDER_SHELL"] = 3] = "RENDER_SHELL";
11
+ SSRErrors2[SSRErrors2["PRERENDER"] = 0] = "PRERENDER";
12
+ SSRErrors2[SSRErrors2["USE_LOADER"] = 1] = "USE_LOADER";
13
+ SSRErrors2[SSRErrors2["RENDER_HTML"] = 2] = "RENDER_HTML";
14
+ SSRErrors2[SSRErrors2["RENDER_STREAM"] = 3] = "RENDER_STREAM";
15
+ SSRErrors2[SSRErrors2["RENDER_SHELL"] = 4] = "RENDER_SHELL";
15
16
  })(SSRErrors || (SSRErrors = {}));
16
17
  var _obj;
17
- var errors = (_obj = {}, _define_property(_obj, SSRErrors.PREFETCH, {
18
- reporter: "SSR Error - App Prefetch Render",
19
- logger: "App Prefetch Render",
20
- metrics: "app.prefetch.render.error"
18
+ var errors = (_obj = {}, _define_property(_obj, SSRErrors.PRERENDER, {
19
+ reporter: "SSR Error - App Prerender",
20
+ logger: "App Prerender",
21
+ metrics: "app.prerender.error"
22
+ }), _define_property(_obj, SSRErrors.USE_LOADER, {
23
+ reporter: "SSR Error - App run useLoader",
24
+ logger: "App run useLoader",
25
+ metrics: "app.useloader.error"
21
26
  }), _define_property(_obj, SSRErrors.RENDER_HTML, {
22
27
  reporter: "SSR Error - App Render To HTML",
23
28
  logger: "App Render To HTML",
@@ -30,23 +35,22 @@ var errors = (_obj = {}, _define_property(_obj, SSRErrors.PREFETCH, {
30
35
  metrics: "app.render.streaming.shell.error"
31
36
  }), _obj);
32
37
  var _obj1;
33
- var timings = (_obj1 = {}, _define_property(_obj1, SSRTimings.SSR_PREFETCH, {
34
- reporter: "ssr-prefetch",
35
- serverTiming: "ssr-prefetch",
36
- metrics: "app.prefeth.cost",
37
- logger: "App Prefetch cost = %d ms"
38
- }), _define_property(_obj1, SSRTimings.SSR_RENDER_HTML, {
38
+ var timings = (_obj1 = {}, _define_property(_obj1, SSRTimings.PRERENDER, {
39
+ reporter: "ssr-prerender",
40
+ serverTiming: "ssr-prerender",
41
+ metrics: "app.prerender.cost",
42
+ logger: "App Prerender cost = %d ms"
43
+ }), _define_property(_obj1, SSRTimings.RENDER_HTML, {
39
44
  reporter: "ssr-render-html",
40
45
  serverTiming: "ssr-render-html",
41
46
  metrics: "app.render.html.cost",
42
47
  logger: "App Render To HTML cost = %d ms"
43
- }), _define_property(_obj1, SSRTimings.SSR_RENDER_TOTAL, {
44
- reporter: "ssr-render-total",
45
- serverTiming: "ssr-render-total",
46
- metrics: "app.render.cost",
47
- logger: "App Render Total cost = %d ms"
48
- }), _define_property(_obj1, SSRTimings.SSR_RENDER_SHELL, {
48
+ }), _define_property(_obj1, SSRTimings.RENDER_SHELL, {
49
49
  reporter: "ssr-render-shell"
50
+ }), _define_property(_obj1, SSRTimings.USE_LOADER, {
51
+ reporter: "use-loader",
52
+ serverTiming: "use-loader",
53
+ logger: "App run useLoader cost = %d ms"
50
54
  }), _obj1);
51
55
  function createSSRTracker(param) {
52
56
  var reporter = param.reporter, serverTiming = param.serverTiming, metrics = param.metrics, logger = param.logger;
@@ -58,19 +58,6 @@ var statePlugin = function() {
58
58
  plugins
59
59
  };
60
60
  },
61
- validateSchema: function validateSchema() {
62
- return [
63
- {
64
- target: "runtime.state",
65
- schema: {
66
- type: [
67
- "boolean",
68
- "object"
69
- ]
70
- }
71
- }
72
- ];
73
- },
74
61
  addRuntimeExports: function addRuntimeExports() {
75
62
  pluginsExportsUtils.addExport("export { default as state } from '@modern-js/runtime/model'");
76
63
  }
@@ -1,5 +1,5 @@
1
1
  import path from "path";
2
- import { isReact18, cleanRequireCache, ENTRY_NAME_PATTERN } from "@modern-js/utils";
2
+ import { isReact18, cleanRequireCache } from "@modern-js/utils";
3
3
  import { statePlugin } from "../state/cli";
4
4
  import { ssrPlugin } from "../ssr/cli";
5
5
  import { routerPlugin } from "../router/cli";
@@ -51,29 +51,6 @@ const runtimePlugin = () => ({
51
51
  }
52
52
  };
53
53
  },
54
- validateSchema() {
55
- return [
56
- {
57
- target: "runtime",
58
- schema: {
59
- type: "object",
60
- additionalProperties: false
61
- }
62
- },
63
- {
64
- target: "runtimeByEntries",
65
- schema: {
66
- type: "object",
67
- patternProperties: {
68
- [ENTRY_NAME_PATTERN]: {
69
- type: "object"
70
- }
71
- },
72
- additionalProperties: false
73
- }
74
- }
75
- ];
76
- },
77
54
  async beforeRestart() {
78
55
  cleanRequireCache([
79
56
  require.resolve("../state/cli"),
@@ -29,19 +29,6 @@ const routerPlugin = () => ({
29
29
  }
30
30
  };
31
31
  },
32
- validateSchema() {
33
- return [
34
- {
35
- target: "runtime.router",
36
- schema: {
37
- type: [
38
- "boolean",
39
- "object"
40
- ]
41
- }
42
- }
43
- ];
44
- },
45
32
  modifyEntryImports({ entrypoint, imports }) {
46
33
  const { entryName, isMainEntry, fileSystemRoutes } = entrypoint;
47
34
  const userConfig = api.useResolvedConfigContext();
@@ -2,25 +2,36 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { renderToStaticMarkup } from "react-dom/server";
3
3
  import { run } from "@modern-js/runtime-utils/node";
4
4
  import { ChunkExtractor } from "@loadable/server";
5
- const prefetch = async (App, context, config) => run(context.ssrContext.request.headers, async () => {
5
+ import { time } from "@modern-js/runtime-utils/time";
6
+ import { SSRTimings, SSRErrors } from "./serverRender/tracker";
7
+ const prefetch = async (App, context, config, tracker) => run(context.ssrContext.request.headers, async () => {
6
8
  var _context_store;
7
9
  const { ssrContext } = context;
8
10
  const { loadableStats } = ssrContext;
9
11
  if (!config.disablePrerender) {
10
- if (loadableStats) {
11
- const extractor = new ChunkExtractor({
12
- stats: loadableStats,
13
- entrypoints: [
14
- ssrContext.entryName
15
- ].filter(Boolean)
16
- });
17
- renderToStaticMarkup(extractor.collectChunks(/* @__PURE__ */ _jsx(App, {
18
- context
19
- })));
20
- } else {
21
- renderToStaticMarkup(/* @__PURE__ */ _jsx(App, {
22
- context
23
- }));
12
+ try {
13
+ const end = time();
14
+ if (loadableStats) {
15
+ const extractor = new ChunkExtractor({
16
+ stats: loadableStats,
17
+ entrypoints: [
18
+ ssrContext.entryName
19
+ ].filter(Boolean)
20
+ });
21
+ renderToStaticMarkup(extractor.collectChunks(/* @__PURE__ */ _jsx(App, {
22
+ context
23
+ })));
24
+ } else {
25
+ renderToStaticMarkup(/* @__PURE__ */ _jsx(App, {
26
+ context
27
+ }));
28
+ }
29
+ const cost = end();
30
+ tracker.trackTiming(SSRTimings.PRERENDER, cost);
31
+ } catch (e) {
32
+ const error = e;
33
+ tracker.trackError(SSRErrors.PRERENDER, error);
34
+ throw e;
24
35
  }
25
36
  }
26
37
  if (!context.loaderManager.hasPendingLoaders()) {
@@ -29,7 +40,17 @@ const prefetch = async (App, context, config) => run(context.ssrContext.request.
29
40
  i18nData: context.__i18nData__
30
41
  };
31
42
  }
32
- const loadersData = await context.loaderManager.awaitPendingLoaders();
43
+ let loadersData = {};
44
+ try {
45
+ const end = time();
46
+ loadersData = await context.loaderManager.awaitPendingLoaders();
47
+ const cost = end();
48
+ tracker.trackTiming(SSRTimings.USE_LOADER, cost);
49
+ } catch (e) {
50
+ const error = e;
51
+ tracker.trackError(SSRErrors.USE_LOADER, error);
52
+ throw e;
53
+ }
33
54
  Object.keys(loadersData).forEach((id) => {
34
55
  const data = loadersData[id];
35
56
  if (data._error) {
@@ -24,11 +24,11 @@ const render = ({ App, context }) => {
24
24
  ssrContext.cacheConfig = cacheConfig;
25
25
  }
26
26
  const cost = end();
27
- tracker.trackTiming(SSRTimings.SSR_RENDER_SHELL, cost);
27
+ tracker.trackTiming(SSRTimings.RENDER_SHELL, cost);
28
28
  },
29
29
  onAllReady() {
30
30
  const cost = end();
31
- tracker.trackTiming(SSRTimings.SSR_RENDER_TOTAL, cost);
31
+ tracker.trackTiming(SSRTimings.RENDER_HTML, cost);
32
32
  },
33
33
  onShellError(e) {
34
34
  tracker.trackError(SSRErrors.RENDER_SHELL, e);
@@ -72,15 +72,11 @@ class Entry {
72
72
  }
73
73
  async prefetch(context) {
74
74
  let prefetchData;
75
- const end = time();
76
75
  try {
77
- prefetchData = await prefetch(this.App, context, this.pluginConfig);
76
+ prefetchData = await prefetch(this.App, context, this.pluginConfig, this.tracker);
78
77
  this.result.renderLevel = RenderLevel.SERVER_PREFETCH;
79
- const prefetchCost = end();
80
- this.tracker.trackTiming(SSRTimings.SSR_PREFETCH, prefetchCost);
81
78
  } catch (e) {
82
79
  this.result.renderLevel = RenderLevel.CLIENT_RENDER;
83
- this.tracker.trackError(SSRErrors.PREFETCH, e);
84
80
  }
85
81
  return prefetchData || {};
86
82
  }
@@ -104,7 +100,7 @@ class Entry {
104
100
  routeManifest: this.routeManifest
105
101
  })).finish();
106
102
  const cost = end();
107
- this.tracker.trackTiming(SSRTimings.SSR_RENDER_HTML, cost);
103
+ this.tracker.trackTiming(SSRTimings.RENDER_HTML, cost);
108
104
  this.result.renderLevel = RenderLevel.SERVER_RENDER;
109
105
  } catch (e) {
110
106
  this.tracker.trackError(SSRErrors.RENDER_HTML, e);
@@ -1,7 +1,5 @@
1
1
  import { run } from "@modern-js/runtime-utils/node";
2
- import { time } from "@modern-js/runtime-utils/time";
3
2
  import { PreRender } from "../../react/prerender";
4
- import { SSRTimings } from "../tracker";
5
3
  import SSREntry from "./entry";
6
4
  const render = ({ App, context, config }) => {
7
5
  const ssrContext = context.ssrContext;
@@ -12,10 +10,7 @@ const render = ({ App, context, config }) => {
12
10
  config
13
11
  });
14
12
  entry.metrics.emitCounter("app.visit.count", 1);
15
- const end = time();
16
13
  const html = await entry.renderToHtml(context);
17
- const cost = end();
18
- entry.tracker.trackTiming(SSRTimings.SSR_RENDER_TOTAL, cost);
19
14
  const cacheConfig = PreRender.config();
20
15
  if (cacheConfig) {
21
16
  context.ssrContext.cacheConfig = cacheConfig;
@@ -19,6 +19,12 @@ const checkIsInline = (chunk, enableInline) => {
19
19
  return false;
20
20
  }
21
21
  };
22
+ const readAsset = async (chunk) => {
23
+ const fs = await import("node:fs/promises");
24
+ const path = await import("node:path");
25
+ const filepath = path.resolve(__dirname, chunk.filename);
26
+ return fs.readFile(filepath, "utf-8");
27
+ };
22
28
  const checkIsNode = () => {
23
29
  var _process_release;
24
30
  return typeof process !== "undefined" && ((_process_release = process.release) === null || _process_release === void 0 ? void 0 : _process_release.name) === "node";
@@ -81,14 +87,13 @@ class LoadableCollector {
81
87
  const jsChunkReg = new RegExp(`<script .*src="${chunk.url}".*>`);
82
88
  return !jsChunkReg.test(template) && !((_this_existsAssets = this.existsAssets) === null || _this_existsAssets === void 0 ? void 0 : _this_existsAssets.includes(chunk.path));
83
89
  }).map(async (chunk) => {
90
+ const script = `<script${attributes} src="${chunk.url}"></script>`;
84
91
  if (checkIsInline(chunk, enableInlineScripts) && checkIsNode()) {
85
- const fs = await import("node:fs/promises");
86
- const filepath = chunk.path;
87
- return fs.readFile(filepath, "utf-8").then((content) => `<script>${content}</script>`).catch((_) => {
88
- return "";
92
+ return readAsset(chunk).then((content) => `<script>${content}</script>`).catch((_) => {
93
+ return script;
89
94
  });
90
95
  } else {
91
- return `<script${attributes} src="${chunk.url}"></script>`;
96
+ return script;
92
97
  }
93
98
  }));
94
99
  chunksMap.js += scripts.filter((script) => Boolean(script)).join("");
@@ -101,13 +106,13 @@ class LoadableCollector {
101
106
  const cssChunkReg = new RegExp(`<link .*href="${chunk.url}".*>`);
102
107
  return !cssChunkReg.test(template) && !((_this_existsAssets = this.existsAssets) === null || _this_existsAssets === void 0 ? void 0 : _this_existsAssets.includes(chunk.path));
103
108
  }).map(async (chunk) => {
109
+ const link = `<link${atrributes} href="${chunk.url}" rel="stylesheet" />`;
104
110
  if (checkIsInline(chunk, enableInlineStyles) && checkIsNode()) {
105
- const fs = await import("node:fs/promises");
106
- return fs.readFile(chunk.path).then((content) => `<style>${content}</style>`).catch((_) => {
107
- return "";
111
+ return readAsset(chunk).then((content) => `<style>${content}</style>`).catch((_) => {
112
+ return link;
108
113
  });
109
114
  } else {
110
- return `<link${atrributes} href="${chunk.url}" rel="stylesheet" />`;
115
+ return link;
111
116
  }
112
117
  }));
113
118
  chunksMap.css += css.filter((css2) => Boolean(css2)).join("");
@@ -1,22 +1,28 @@
1
1
  var SSRTimings;
2
2
  (function(SSRTimings2) {
3
- SSRTimings2[SSRTimings2["SSR_RENDER_TOTAL"] = 0] = "SSR_RENDER_TOTAL";
4
- SSRTimings2[SSRTimings2["SSR_PREFETCH"] = 1] = "SSR_PREFETCH";
5
- SSRTimings2[SSRTimings2["SSR_RENDER_HTML"] = 2] = "SSR_RENDER_HTML";
6
- SSRTimings2[SSRTimings2["SSR_RENDER_SHELL"] = 3] = "SSR_RENDER_SHELL";
3
+ SSRTimings2[SSRTimings2["PRERENDER"] = 0] = "PRERENDER";
4
+ SSRTimings2[SSRTimings2["RENDER_HTML"] = 1] = "RENDER_HTML";
5
+ SSRTimings2[SSRTimings2["RENDER_SHELL"] = 2] = "RENDER_SHELL";
6
+ SSRTimings2[SSRTimings2["USE_LOADER"] = 3] = "USE_LOADER";
7
7
  })(SSRTimings || (SSRTimings = {}));
8
8
  var SSRErrors;
9
9
  (function(SSRErrors2) {
10
- SSRErrors2[SSRErrors2["PREFETCH"] = 0] = "PREFETCH";
11
- SSRErrors2[SSRErrors2["RENDER_HTML"] = 1] = "RENDER_HTML";
12
- SSRErrors2[SSRErrors2["RENDER_STREAM"] = 2] = "RENDER_STREAM";
13
- SSRErrors2[SSRErrors2["RENDER_SHELL"] = 3] = "RENDER_SHELL";
10
+ SSRErrors2[SSRErrors2["PRERENDER"] = 0] = "PRERENDER";
11
+ SSRErrors2[SSRErrors2["USE_LOADER"] = 1] = "USE_LOADER";
12
+ SSRErrors2[SSRErrors2["RENDER_HTML"] = 2] = "RENDER_HTML";
13
+ SSRErrors2[SSRErrors2["RENDER_STREAM"] = 3] = "RENDER_STREAM";
14
+ SSRErrors2[SSRErrors2["RENDER_SHELL"] = 4] = "RENDER_SHELL";
14
15
  })(SSRErrors || (SSRErrors = {}));
15
16
  const errors = {
16
- [SSRErrors.PREFETCH]: {
17
- reporter: "SSR Error - App Prefetch Render",
18
- logger: "App Prefetch Render",
19
- metrics: "app.prefetch.render.error"
17
+ [SSRErrors.PRERENDER]: {
18
+ reporter: "SSR Error - App Prerender",
19
+ logger: "App Prerender",
20
+ metrics: "app.prerender.error"
21
+ },
22
+ [SSRErrors.USE_LOADER]: {
23
+ reporter: "SSR Error - App run useLoader",
24
+ logger: "App run useLoader",
25
+ metrics: "app.useloader.error"
20
26
  },
21
27
  [SSRErrors.RENDER_HTML]: {
22
28
  reporter: "SSR Error - App Render To HTML",
@@ -33,26 +39,25 @@ const errors = {
33
39
  }
34
40
  };
35
41
  const timings = {
36
- [SSRTimings.SSR_PREFETCH]: {
37
- reporter: "ssr-prefetch",
38
- serverTiming: "ssr-prefetch",
39
- metrics: "app.prefeth.cost",
40
- logger: "App Prefetch cost = %d ms"
42
+ [SSRTimings.PRERENDER]: {
43
+ reporter: "ssr-prerender",
44
+ serverTiming: "ssr-prerender",
45
+ metrics: "app.prerender.cost",
46
+ logger: "App Prerender cost = %d ms"
41
47
  },
42
- [SSRTimings.SSR_RENDER_HTML]: {
48
+ [SSRTimings.RENDER_HTML]: {
43
49
  reporter: "ssr-render-html",
44
50
  serverTiming: "ssr-render-html",
45
51
  metrics: "app.render.html.cost",
46
52
  logger: "App Render To HTML cost = %d ms"
47
53
  },
48
- [SSRTimings.SSR_RENDER_TOTAL]: {
49
- reporter: "ssr-render-total",
50
- serverTiming: "ssr-render-total",
51
- metrics: "app.render.cost",
52
- logger: "App Render Total cost = %d ms"
53
- },
54
- [SSRTimings.SSR_RENDER_SHELL]: {
54
+ [SSRTimings.RENDER_SHELL]: {
55
55
  reporter: "ssr-render-shell"
56
+ },
57
+ [SSRTimings.USE_LOADER]: {
58
+ reporter: "use-loader",
59
+ serverTiming: "use-loader",
60
+ logger: "App run useLoader cost = %d ms"
56
61
  }
57
62
  };
58
63
  function createSSRTracker({ reporter, serverTiming, metrics, logger }) {
@@ -55,19 +55,6 @@ const statePlugin = () => ({
55
55
  plugins
56
56
  };
57
57
  },
58
- validateSchema() {
59
- return [
60
- {
61
- target: "runtime.state",
62
- schema: {
63
- type: [
64
- "boolean",
65
- "object"
66
- ]
67
- }
68
- }
69
- ];
70
- },
71
58
  addRuntimeExports() {
72
59
  pluginsExportsUtils.addExport(`export { default as state } from '@modern-js/runtime/model'`);
73
60
  }
@@ -1,12 +1,14 @@
1
1
  import { RuntimeContext } from '../core';
2
+ import { LoaderResult } from '../core/loader/loaderManager';
2
3
  import { SSRPluginConfig } from './serverRender/types';
3
- declare const prefetch: (App: React.ComponentType<any>, context: RuntimeContext, config: SSRPluginConfig) => Promise<{
4
+ import { SSRTracker } from './serverRender/tracker';
5
+ declare const prefetch: (App: React.ComponentType<any>, context: RuntimeContext, config: SSRPluginConfig, tracker: SSRTracker) => Promise<{
4
6
  initialData: Record<string, unknown> | undefined;
5
7
  i18nData: any;
6
8
  loadersData?: undefined;
7
9
  storeState?: undefined;
8
10
  } | {
9
- loadersData: Record<string, import("../core/loader/loaderManager").LoaderResult>;
11
+ loadersData: Record<string, LoaderResult>;
10
12
  initialData: Record<string, unknown> | undefined;
11
13
  i18nData: any;
12
14
  storeState: any;
@@ -1,16 +1,17 @@
1
1
  import type { BaseSSRServerContext } from '@modern-js/types';
2
2
  export type SSRTracker = ReturnType<typeof createSSRTracker>;
3
3
  export declare enum SSRTimings {
4
- SSR_RENDER_TOTAL = 0,
5
- SSR_PREFETCH = 1,
6
- SSR_RENDER_HTML = 2,
7
- SSR_RENDER_SHELL = 3,
4
+ PRERENDER = 0,
5
+ RENDER_HTML = 1,
6
+ RENDER_SHELL = 2,
7
+ USE_LOADER = 3,
8
8
  }
9
9
  export declare enum SSRErrors {
10
- PREFETCH = 0,
11
- RENDER_HTML = 1,
12
- RENDER_STREAM = 2,
13
- RENDER_SHELL = 3,
10
+ PRERENDER = 0,
11
+ USE_LOADER = 1,
12
+ RENDER_HTML = 2,
13
+ RENDER_STREAM = 3,
14
+ RENDER_SHELL = 4,
14
15
  }
15
16
  export declare function createSSRTracker({
16
17
  reporter,