@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
@@ -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"),
@@ -60,7 +60,7 @@ const createLoader = (id, initialData = {
60
60
  error: void 0
61
61
  }, loaderFn, skip = false) => {
62
62
  let promise;
63
- let status = LoaderStatus.idle;
63
+ let status = 0;
64
64
  let { data, error } = initialData;
65
65
  let hasLoaded = false;
66
66
  const handlers = /* @__PURE__ */ new Set();
@@ -68,19 +68,19 @@ const createLoader = (id, initialData = {
68
68
  if (skip) {
69
69
  return promise;
70
70
  }
71
- if (status === LoaderStatus.loading) {
71
+ if (status === 1) {
72
72
  return promise;
73
73
  }
74
- status = LoaderStatus.loading;
74
+ status = 1;
75
75
  notify();
76
76
  promise = loaderFn().then((value) => {
77
77
  data = value;
78
78
  error = null;
79
- status = LoaderStatus.fulfilled;
79
+ status = 2;
80
80
  }).catch((e) => {
81
81
  error = e;
82
82
  data = null;
83
- status = LoaderStatus.rejected;
83
+ status = 3;
84
84
  }).finally(() => {
85
85
  promise = null;
86
86
  hasLoaded = true;
@@ -89,8 +89,8 @@ const createLoader = (id, initialData = {
89
89
  return promise;
90
90
  };
91
91
  const getResult = () => ({
92
- loading: !hasLoaded && status === LoaderStatus.loading,
93
- reloading: hasLoaded && status === LoaderStatus.loading,
92
+ loading: !hasLoaded && status === 1,
93
+ reloading: hasLoaded && status === 1,
94
94
  data,
95
95
  error: error instanceof Error ? `${error.message}` : error,
96
96
  // redundant fields for ssr log
@@ -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);
@@ -31,7 +31,7 @@ var ShellChunkStatus;
31
31
  ShellChunkStatus2[ShellChunkStatus2["FINIESH"] = 1] = "FINIESH";
32
32
  })(ShellChunkStatus || (ShellChunkStatus = {}));
33
33
  function renderToPipe(rootElement, context, options) {
34
- let shellChunkStatus = ShellChunkStatus.START;
34
+ let shellChunkStatus = 0;
35
35
  const { ssrContext } = context;
36
36
  const chunkVec = [];
37
37
  const forUserPipe = (stream) => {
@@ -51,12 +51,12 @@ function renderToPipe(rootElement, context, options) {
51
51
  const injectableTransform = new import_stream.Transform({
52
52
  transform(chunk, _encoding, callback) {
53
53
  try {
54
- if (shellChunkStatus !== ShellChunkStatus.FINIESH) {
54
+ if (shellChunkStatus !== 1) {
55
55
  chunkVec.push(chunk.toString());
56
56
  let concatedChunk = chunkVec.join("");
57
57
  if (concatedChunk.endsWith(import_common.ESCAPED_SHELL_STREAM_END_MARK)) {
58
58
  concatedChunk = concatedChunk.replace(import_common.ESCAPED_SHELL_STREAM_END_MARK, "");
59
- shellChunkStatus = ShellChunkStatus.FINIESH;
59
+ shellChunkStatus = 1;
60
60
  this.push(`${shellBefore}${concatedChunk}${shellAfter}`);
61
61
  }
62
62
  } else {
@@ -31,7 +31,7 @@ var ShellChunkStatus;
31
31
  ShellChunkStatus2[ShellChunkStatus2["FINIESH"] = 1] = "FINIESH";
32
32
  })(ShellChunkStatus || (ShellChunkStatus = {}));
33
33
  function renderToPipe(rootElement, context, options) {
34
- let shellChunkStatus = ShellChunkStatus.START;
34
+ let shellChunkStatus = 0;
35
35
  const chunkVec = [];
36
36
  const { ssrContext } = context;
37
37
  const forUserPipe = async () => {
@@ -59,13 +59,13 @@ function renderToPipe(rootElement, context, options) {
59
59
  controller.close();
60
60
  return;
61
61
  }
62
- if (shellChunkStatus !== ShellChunkStatus.FINIESH) {
62
+ if (shellChunkStatus !== 1) {
63
63
  const chunk = new TextDecoder().decode(value);
64
64
  chunkVec.push(chunk);
65
65
  let concatedChunk = chunkVec.join("");
66
66
  if (concatedChunk.endsWith(import_common.ESCAPED_SHELL_STREAM_END_MARK)) {
67
67
  concatedChunk = concatedChunk.replace(import_common.ESCAPED_SHELL_STREAM_END_MARK, "");
68
- shellChunkStatus = ShellChunkStatus.FINIESH;
68
+ shellChunkStatus = 1;
69
69
  controller.enqueue(encodeForWebStream(`${shellBefore}${concatedChunk}${shellAfter}`));
70
70
  }
71
71
  } else {
@@ -69,7 +69,8 @@ const buildTemplateData = (context, data, renderLevel, tracker) => {
69
69
  renderLevel
70
70
  };
71
71
  };
72
- class Entry {
72
+ var Entry;
73
+ Entry = class Entry2 {
73
74
  async renderToHtml(context) {
74
75
  var _ssrContext_redirection, _ssrContext_redirection1, _ssrContext_redirection2;
75
76
  const ssrContext = context.ssrContext;
@@ -105,15 +106,11 @@ class Entry {
105
106
  }
106
107
  async prefetch(context) {
107
108
  let prefetchData;
108
- const end = (0, import_time.time)();
109
109
  try {
110
- prefetchData = await (0, import_prefetch.default)(this.App, context, this.pluginConfig);
110
+ prefetchData = await (0, import_prefetch.default)(this.App, context, this.pluginConfig, this.tracker);
111
111
  this.result.renderLevel = import_types.RenderLevel.SERVER_PREFETCH;
112
- const prefetchCost = end();
113
- this.tracker.trackTiming(import_tracker.SSRTimings.SSR_PREFETCH, prefetchCost);
114
112
  } catch (e) {
115
113
  this.result.renderLevel = import_types.RenderLevel.CLIENT_RENDER;
116
- this.tracker.trackError(import_tracker.SSRErrors.PREFETCH, e);
117
114
  }
118
115
  return prefetchData || {};
119
116
  }
@@ -137,7 +134,7 @@ class Entry {
137
134
  routeManifest: this.routeManifest
138
135
  })).finish();
139
136
  const cost = end();
140
- this.tracker.trackTiming(import_tracker.SSRTimings.SSR_RENDER_HTML, cost);
137
+ this.tracker.trackTiming(import_tracker.SSRTimings.RENDER_HTML, cost);
141
138
  this.result.renderLevel = import_types.RenderLevel.SERVER_RENDER;
142
139
  } catch (e) {
143
140
  this.tracker.trackError(import_tracker.SSRErrors.RENDER_HTML, e);
@@ -190,4 +187,4 @@ class Entry {
190
187
  }
191
188
  };
192
189
  }
193
- }
190
+ };
@@ -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("fs/promises")));
57
+ const path = await Promise.resolve().then(() => __toESM(require("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,59 +25,64 @@ __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
+ [0]: {
43
+ reporter: "SSR Error - App Prerender",
44
+ logger: "App Prerender",
45
+ metrics: "app.prerender.error"
45
46
  },
46
- [SSRErrors.RENDER_HTML]: {
47
+ [1]: {
48
+ reporter: "SSR Error - App run useLoader",
49
+ logger: "App run useLoader",
50
+ metrics: "app.useloader.error"
51
+ },
52
+ [2]: {
47
53
  reporter: "SSR Error - App Render To HTML",
48
54
  logger: "App Render To HTML",
49
55
  metrics: "app.render.html.error"
50
56
  },
51
- [SSRErrors.RENDER_STREAM]: {
57
+ [3]: {
52
58
  reporter: "SSR Error - App Render To Streaming",
53
59
  logger: "An error occurs during streaming SSR",
54
60
  metrics: "app.render.streaming.error"
55
61
  },
56
- [SSRErrors.RENDER_SHELL]: {
62
+ [4]: {
57
63
  metrics: "app.render.streaming.shell.error"
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
+ [0]: {
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
+ [1]: {
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
+ [2]: {
80
80
  reporter: "ssr-render-shell"
81
+ },
82
+ [3]: {
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,7 +32,7 @@ var createLoader = function(id) {
32
32
  error: void 0
33
33
  }, loaderFn = arguments.length > 2 ? arguments[2] : void 0, skip = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false;
34
34
  var promise;
35
- var status = LoaderStatus.idle;
35
+ var status = 0;
36
36
  var data = initialData.data, error = initialData.error;
37
37
  var hasLoaded = false;
38
38
  var handlers = /* @__PURE__ */ new Set();
@@ -45,22 +45,22 @@ var createLoader = function(id) {
45
45
  promise
46
46
  ];
47
47
  }
48
- if (status === LoaderStatus.loading) {
48
+ if (status === 1) {
49
49
  return [
50
50
  2,
51
51
  promise
52
52
  ];
53
53
  }
54
- status = LoaderStatus.loading;
54
+ status = 1;
55
55
  notify();
56
56
  promise = loaderFn().then(function(value) {
57
57
  data = value;
58
58
  error = null;
59
- status = LoaderStatus.fulfilled;
59
+ status = 2;
60
60
  }).catch(function(e) {
61
61
  error = e;
62
62
  data = null;
63
- status = LoaderStatus.rejected;
63
+ status = 3;
64
64
  }).finally(function() {
65
65
  promise = null;
66
66
  hasLoaded = true;
@@ -78,8 +78,8 @@ var createLoader = function(id) {
78
78
  }();
79
79
  var getResult = function() {
80
80
  return {
81
- loading: !hasLoaded && status === LoaderStatus.loading,
82
- reloading: hasLoaded && status === LoaderStatus.loading,
81
+ loading: !hasLoaded && status === 1,
82
+ reloading: hasLoaded && status === 1,
83
83
  data,
84
84
  error: _instanceof(error, Error) ? "".concat(error.message) : error,
85
85
  // redundant fields for ssr log
@@ -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;
@@ -62,12 +62,12 @@ var require_babel_plugin_ssr_loader_id = __commonJS({
62
62
  ])), []);
63
63
  }
64
64
  module.exports = function() {
65
- var genId = function genId2() {
66
- return "".concat(hash, "_").concat(index++);
67
- };
68
65
  var useLoader = null;
69
66
  var hash = "";
70
67
  var index = 0;
68
+ function genId() {
69
+ return "".concat(hash, "_").concat(index++);
70
+ }
71
71
  return {
72
72
  name: "babel-plugin-ssr-loader-id",
73
73
  pre: function pre() {