@modern-js/runtime 2.39.2 → 2.41.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 (42) hide show
  1. package/dist/cjs/cli/index.js +0 -23
  2. package/dist/cjs/core/loader/loaderManager.js +7 -7
  3. package/dist/cjs/router/cli/index.js +0 -13
  4. package/dist/cjs/ssr/prefetch.js +37 -16
  5. package/dist/cjs/ssr/serverRender/renderToStream/index.js +2 -2
  6. package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.js +3 -3
  7. package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.worker.js +3 -3
  8. package/dist/cjs/ssr/serverRender/renderToString/entry.js +5 -8
  9. package/dist/cjs/ssr/serverRender/renderToString/index.js +0 -5
  10. package/dist/cjs/ssr/serverRender/renderToString/loadable.js +14 -9
  11. package/dist/cjs/ssr/serverRender/tracker.js +33 -28
  12. package/dist/cjs/state/cli/index.js +0 -13
  13. package/dist/esm/cli/index.js +1 -23
  14. package/dist/esm/core/loader/loaderManager.js +7 -7
  15. package/dist/esm/router/cli/index.js +0 -13
  16. package/dist/esm/ssr/cli/babel-plugin-ssr-loader-id.js +3 -3
  17. package/dist/esm/ssr/prefetch.js +51 -18
  18. package/dist/esm/ssr/serverRender/renderToStream/buildTemplate.after.js +6 -6
  19. package/dist/esm/ssr/serverRender/renderToStream/bulidTemplate.before.js +14 -14
  20. package/dist/esm/ssr/serverRender/renderToStream/index.js +2 -2
  21. package/dist/esm/ssr/serverRender/renderToStream/renderToPipe.js +3 -3
  22. package/dist/esm/ssr/serverRender/renderToStream/renderToPipe.worker.js +3 -3
  23. package/dist/esm/ssr/serverRender/renderToString/entry.js +13 -18
  24. package/dist/esm/ssr/serverRender/renderToString/index.js +1 -6
  25. package/dist/esm/ssr/serverRender/renderToString/loadable.js +68 -63
  26. package/dist/esm/ssr/serverRender/tracker.js +31 -27
  27. package/dist/esm/state/cli/index.js +0 -13
  28. package/dist/esm-node/cli/index.js +1 -24
  29. package/dist/esm-node/core/loader/loaderManager.js +7 -7
  30. package/dist/esm-node/router/cli/index.js +0 -13
  31. package/dist/esm-node/ssr/prefetch.js +37 -16
  32. package/dist/esm-node/ssr/serverRender/renderToStream/index.js +2 -2
  33. package/dist/esm-node/ssr/serverRender/renderToStream/renderToPipe.js +3 -3
  34. package/dist/esm-node/ssr/serverRender/renderToStream/renderToPipe.worker.js +3 -3
  35. package/dist/esm-node/ssr/serverRender/renderToString/entry.js +5 -8
  36. package/dist/esm-node/ssr/serverRender/renderToString/index.js +0 -5
  37. package/dist/esm-node/ssr/serverRender/renderToString/loadable.js +14 -9
  38. package/dist/esm-node/ssr/serverRender/tracker.js +33 -28
  39. package/dist/esm-node/state/cli/index.js +0 -13
  40. package/dist/types/ssr/prefetch.d.ts +4 -2
  41. package/dist/types/ssr/serverRender/tracker.d.ts +9 -8
  42. package/package.json +11 -11
@@ -26,7 +26,7 @@ const createLoader = (id, initialData = {
26
26
  error: void 0
27
27
  }, loaderFn, skip = false) => {
28
28
  let promise;
29
- let status = LoaderStatus.idle;
29
+ let status = 0;
30
30
  let { data, error } = initialData;
31
31
  let hasLoaded = false;
32
32
  const handlers = /* @__PURE__ */ new Set();
@@ -34,19 +34,19 @@ const createLoader = (id, initialData = {
34
34
  if (skip) {
35
35
  return promise;
36
36
  }
37
- if (status === LoaderStatus.loading) {
37
+ if (status === 1) {
38
38
  return promise;
39
39
  }
40
- status = LoaderStatus.loading;
40
+ status = 1;
41
41
  notify();
42
42
  promise = loaderFn().then((value) => {
43
43
  data = value;
44
44
  error = null;
45
- status = LoaderStatus.fulfilled;
45
+ status = 2;
46
46
  }).catch((e) => {
47
47
  error = e;
48
48
  data = null;
49
- status = LoaderStatus.rejected;
49
+ status = 3;
50
50
  }).finally(() => {
51
51
  promise = null;
52
52
  hasLoaded = true;
@@ -55,8 +55,8 @@ const createLoader = (id, initialData = {
55
55
  return promise;
56
56
  };
57
57
  const getResult = () => ({
58
- loading: !hasLoaded && status === LoaderStatus.loading,
59
- reloading: hasLoaded && status === LoaderStatus.loading,
58
+ loading: !hasLoaded && status === 1,
59
+ reloading: hasLoaded && status === 1,
60
60
  data,
61
61
  error: error instanceof Error ? `${error.message}` : error,
62
62
  // redundant fields for ssr log
@@ -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);
@@ -8,7 +8,7 @@ var ShellChunkStatus;
8
8
  ShellChunkStatus2[ShellChunkStatus2["FINIESH"] = 1] = "FINIESH";
9
9
  })(ShellChunkStatus || (ShellChunkStatus = {}));
10
10
  function renderToPipe(rootElement, context, options) {
11
- let shellChunkStatus = ShellChunkStatus.START;
11
+ let shellChunkStatus = 0;
12
12
  const { ssrContext } = context;
13
13
  const chunkVec = [];
14
14
  const forUserPipe = (stream) => {
@@ -28,12 +28,12 @@ function renderToPipe(rootElement, context, options) {
28
28
  const injectableTransform = new Transform({
29
29
  transform(chunk, _encoding, callback) {
30
30
  try {
31
- if (shellChunkStatus !== ShellChunkStatus.FINIESH) {
31
+ if (shellChunkStatus !== 1) {
32
32
  chunkVec.push(chunk.toString());
33
33
  let concatedChunk = chunkVec.join("");
34
34
  if (concatedChunk.endsWith(ESCAPED_SHELL_STREAM_END_MARK)) {
35
35
  concatedChunk = concatedChunk.replace(ESCAPED_SHELL_STREAM_END_MARK, "");
36
- shellChunkStatus = ShellChunkStatus.FINIESH;
36
+ shellChunkStatus = 1;
37
37
  this.push(`${shellBefore}${concatedChunk}${shellAfter}`);
38
38
  }
39
39
  } else {
@@ -8,7 +8,7 @@ var ShellChunkStatus;
8
8
  ShellChunkStatus2[ShellChunkStatus2["FINIESH"] = 1] = "FINIESH";
9
9
  })(ShellChunkStatus || (ShellChunkStatus = {}));
10
10
  function renderToPipe(rootElement, context, options) {
11
- let shellChunkStatus = ShellChunkStatus.START;
11
+ let shellChunkStatus = 0;
12
12
  const chunkVec = [];
13
13
  const { ssrContext } = context;
14
14
  const forUserPipe = async () => {
@@ -36,13 +36,13 @@ function renderToPipe(rootElement, context, options) {
36
36
  controller.close();
37
37
  return;
38
38
  }
39
- if (shellChunkStatus !== ShellChunkStatus.FINIESH) {
39
+ if (shellChunkStatus !== 1) {
40
40
  const chunk = new TextDecoder().decode(value);
41
41
  chunkVec.push(chunk);
42
42
  let concatedChunk = chunkVec.join("");
43
43
  if (concatedChunk.endsWith(ESCAPED_SHELL_STREAM_END_MARK)) {
44
44
  concatedChunk = concatedChunk.replace(ESCAPED_SHELL_STREAM_END_MARK, "");
45
- shellChunkStatus = ShellChunkStatus.FINIESH;
45
+ shellChunkStatus = 1;
46
46
  controller.enqueue(encodeForWebStream(`${shellBefore}${concatedChunk}${shellAfter}`));
47
47
  }
48
48
  } else {
@@ -36,7 +36,8 @@ const buildTemplateData = (context, data, renderLevel, tracker) => {
36
36
  renderLevel
37
37
  };
38
38
  };
39
- class Entry {
39
+ var Entry;
40
+ Entry = class Entry2 {
40
41
  async renderToHtml(context) {
41
42
  var _ssrContext_redirection, _ssrContext_redirection1, _ssrContext_redirection2;
42
43
  const ssrContext = context.ssrContext;
@@ -72,15 +73,11 @@ class Entry {
72
73
  }
73
74
  async prefetch(context) {
74
75
  let prefetchData;
75
- const end = time();
76
76
  try {
77
- prefetchData = await prefetch(this.App, context, this.pluginConfig);
77
+ prefetchData = await prefetch(this.App, context, this.pluginConfig, this.tracker);
78
78
  this.result.renderLevel = RenderLevel.SERVER_PREFETCH;
79
- const prefetchCost = end();
80
- this.tracker.trackTiming(SSRTimings.SSR_PREFETCH, prefetchCost);
81
79
  } catch (e) {
82
80
  this.result.renderLevel = RenderLevel.CLIENT_RENDER;
83
- this.tracker.trackError(SSRErrors.PREFETCH, e);
84
81
  }
85
82
  return prefetchData || {};
86
83
  }
@@ -104,7 +101,7 @@ class Entry {
104
101
  routeManifest: this.routeManifest
105
102
  })).finish();
106
103
  const cost = end();
107
- this.tracker.trackTiming(SSRTimings.SSR_RENDER_HTML, cost);
104
+ this.tracker.trackTiming(SSRTimings.RENDER_HTML, cost);
108
105
  this.result.renderLevel = RenderLevel.SERVER_RENDER;
109
106
  } catch (e) {
110
107
  this.tracker.trackError(SSRErrors.RENDER_HTML, e);
@@ -157,7 +154,7 @@ class Entry {
157
154
  }
158
155
  };
159
156
  }
160
- }
157
+ };
161
158
  export {
162
159
  Entry as default
163
160
  };
@@ -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("fs/promises");
24
+ const path = await import("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,58 +1,63 @@
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
+ [0]: {
18
+ reporter: "SSR Error - App Prerender",
19
+ logger: "App Prerender",
20
+ metrics: "app.prerender.error"
20
21
  },
21
- [SSRErrors.RENDER_HTML]: {
22
+ [1]: {
23
+ reporter: "SSR Error - App run useLoader",
24
+ logger: "App run useLoader",
25
+ metrics: "app.useloader.error"
26
+ },
27
+ [2]: {
22
28
  reporter: "SSR Error - App Render To HTML",
23
29
  logger: "App Render To HTML",
24
30
  metrics: "app.render.html.error"
25
31
  },
26
- [SSRErrors.RENDER_STREAM]: {
32
+ [3]: {
27
33
  reporter: "SSR Error - App Render To Streaming",
28
34
  logger: "An error occurs during streaming SSR",
29
35
  metrics: "app.render.streaming.error"
30
36
  },
31
- [SSRErrors.RENDER_SHELL]: {
37
+ [4]: {
32
38
  metrics: "app.render.streaming.shell.error"
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
+ [0]: {
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
+ [1]: {
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
+ [2]: {
55
55
  reporter: "ssr-render-shell"
56
+ },
57
+ [3]: {
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,
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "2.39.2",
18
+ "version": "2.41.0",
19
19
  "engines": {
20
20
  "node": ">=14.17.6"
21
21
  },
@@ -170,11 +170,11 @@
170
170
  "react-is": "^18",
171
171
  "react-side-effect": "^2.1.1",
172
172
  "styled-components": "^5.3.1",
173
- "@swc/helpers": "0.5.1",
174
- "@modern-js/plugin": "2.39.2",
175
- "@modern-js/utils": "2.39.2",
176
- "@modern-js/runtime-utils": "2.39.2",
177
- "@modern-js/types": "2.39.2"
173
+ "@swc/helpers": "0.5.3",
174
+ "@modern-js/plugin": "2.41.0",
175
+ "@modern-js/types": "2.41.0",
176
+ "@modern-js/utils": "2.41.0",
177
+ "@modern-js/runtime-utils": "2.41.0"
178
178
  },
179
179
  "peerDependencies": {
180
180
  "react": ">=17",
@@ -195,11 +195,11 @@
195
195
  "ts-jest": "^29.1.0",
196
196
  "typescript": "^5",
197
197
  "webpack": "^5.88.1",
198
- "@modern-js/app-tools": "2.39.2",
199
- "@modern-js/core": "2.39.2",
200
- "@scripts/build": "2.39.2",
201
- "@modern-js/server-core": "2.39.2",
202
- "@scripts/jest-config": "2.39.2"
198
+ "@modern-js/core": "2.41.0",
199
+ "@scripts/build": "2.41.0",
200
+ "@modern-js/server-core": "2.41.0",
201
+ "@modern-js/app-tools": "2.41.0",
202
+ "@scripts/jest-config": "2.41.0"
203
203
  },
204
204
  "sideEffects": false,
205
205
  "publishConfig": {