@modern-js/runtime 2.39.1 → 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.
- package/dist/cjs/cli/index.js +0 -23
- package/dist/cjs/router/cli/index.js +0 -13
- package/dist/cjs/ssr/prefetch.js +37 -16
- package/dist/cjs/ssr/serverRender/renderToStream/index.js +2 -2
- package/dist/cjs/ssr/serverRender/renderToString/entry.js +2 -6
- package/dist/cjs/ssr/serverRender/renderToString/index.js +0 -5
- package/dist/cjs/ssr/serverRender/renderToString/loadable.js +14 -9
- package/dist/cjs/ssr/serverRender/tracker.js +30 -25
- package/dist/cjs/state/cli/index.js +0 -13
- package/dist/esm/cli/index.js +1 -23
- package/dist/esm/router/cli/index.js +0 -13
- package/dist/esm/ssr/prefetch.js +51 -18
- package/dist/esm/ssr/serverRender/renderToStream/index.js +2 -2
- package/dist/esm/ssr/serverRender/renderToString/entry.js +11 -17
- package/dist/esm/ssr/serverRender/renderToString/index.js +1 -6
- package/dist/esm/ssr/serverRender/renderToString/loadable.js +68 -63
- package/dist/esm/ssr/serverRender/tracker.js +28 -24
- package/dist/esm/state/cli/index.js +0 -13
- package/dist/esm-node/cli/index.js +1 -24
- package/dist/esm-node/router/cli/index.js +0 -13
- package/dist/esm-node/ssr/prefetch.js +37 -16
- package/dist/esm-node/ssr/serverRender/renderToStream/index.js +2 -2
- package/dist/esm-node/ssr/serverRender/renderToString/entry.js +2 -6
- package/dist/esm-node/ssr/serverRender/renderToString/index.js +0 -5
- package/dist/esm-node/ssr/serverRender/renderToString/loadable.js +14 -9
- package/dist/esm-node/ssr/serverRender/tracker.js +30 -25
- package/dist/esm-node/state/cli/index.js +0 -13
- package/dist/types/ssr/prefetch.d.ts +4 -2
- package/dist/types/ssr/serverRender/tracker.d.ts +9 -8
- package/package.json +10 -10
package/dist/cjs/cli/index.js
CHANGED
|
@@ -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();
|
package/dist/cjs/ssr/prefetch.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
119
|
-
|
|
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
|
|
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
|
-
|
|
139
|
-
|
|
140
|
-
return "";
|
|
144
|
+
return readAsset(chunk).then((content) => `<style>${content}</style>`).catch((_) => {
|
|
145
|
+
return link;
|
|
141
146
|
});
|
|
142
147
|
} else {
|
|
143
|
-
return
|
|
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["
|
|
29
|
-
SSRTimings2[SSRTimings2["
|
|
30
|
-
SSRTimings2[SSRTimings2["
|
|
31
|
-
SSRTimings2[SSRTimings2["
|
|
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["
|
|
36
|
-
SSRErrors2[SSRErrors2["
|
|
37
|
-
SSRErrors2[SSRErrors2["
|
|
38
|
-
SSRErrors2[SSRErrors2["
|
|
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.
|
|
42
|
-
reporter: "SSR Error - App
|
|
43
|
-
logger: "App
|
|
44
|
-
metrics: "app.
|
|
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.
|
|
62
|
-
reporter: "ssr-
|
|
63
|
-
serverTiming: "ssr-
|
|
64
|
-
metrics: "app.
|
|
65
|
-
logger: "App
|
|
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.
|
|
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.
|
|
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
|
}
|
package/dist/esm/cli/index.js
CHANGED
|
@@ -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
|
|
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;
|
package/dist/esm/ssr/prefetch.js
CHANGED
|
@@ -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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
|
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.
|
|
32
|
+
tracker.trackTiming(SSRTimings.RENDER_SHELL, cost);
|
|
33
33
|
},
|
|
34
34
|
onAllReady: function onAllReady() {
|
|
35
35
|
var cost = end();
|
|
36
|
-
tracker.trackTiming(SSRTimings.
|
|
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,
|
|
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
|
-
|
|
164
|
-
|
|
160
|
+
0,
|
|
161
|
+
2,
|
|
165
162
|
,
|
|
166
|
-
|
|
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
|
|
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
|
-
|
|
174
|
+
3
|
|
180
175
|
];
|
|
181
|
-
case
|
|
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
|
-
|
|
181
|
+
3
|
|
188
182
|
];
|
|
189
|
-
case
|
|
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.
|
|
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,
|
|
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;
|