@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.
- package/dist/cjs/cli/index.js +0 -23
- package/dist/cjs/core/loader/loaderManager.js +7 -7
- 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/renderToStream/renderToPipe.js +3 -3
- package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.worker.js +3 -3
- package/dist/cjs/ssr/serverRender/renderToString/entry.js +5 -8
- 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 +33 -28
- package/dist/cjs/state/cli/index.js +0 -13
- package/dist/esm/cli/index.js +1 -23
- package/dist/esm/core/loader/loaderManager.js +7 -7
- package/dist/esm/router/cli/index.js +0 -13
- package/dist/esm/ssr/cli/babel-plugin-ssr-loader-id.js +3 -3
- package/dist/esm/ssr/prefetch.js +51 -18
- package/dist/esm/ssr/serverRender/renderToStream/buildTemplate.after.js +6 -6
- package/dist/esm/ssr/serverRender/renderToStream/bulidTemplate.before.js +14 -14
- package/dist/esm/ssr/serverRender/renderToStream/index.js +2 -2
- package/dist/esm/ssr/serverRender/renderToStream/renderToPipe.js +3 -3
- package/dist/esm/ssr/serverRender/renderToStream/renderToPipe.worker.js +3 -3
- package/dist/esm/ssr/serverRender/renderToString/entry.js +13 -18
- 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 +31 -27
- package/dist/esm/state/cli/index.js +0 -13
- package/dist/esm-node/cli/index.js +1 -24
- package/dist/esm-node/core/loader/loaderManager.js +7 -7
- 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/renderToStream/renderToPipe.js +3 -3
- package/dist/esm-node/ssr/serverRender/renderToStream/renderToPipe.worker.js +3 -3
- package/dist/esm-node/ssr/serverRender/renderToString/entry.js +5 -8
- 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 +33 -28
- 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 +11 -11
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"),
|
|
@@ -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 =
|
|
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 ===
|
|
71
|
+
if (status === 1) {
|
|
72
72
|
return promise;
|
|
73
73
|
}
|
|
74
|
-
status =
|
|
74
|
+
status = 1;
|
|
75
75
|
notify();
|
|
76
76
|
promise = loaderFn().then((value) => {
|
|
77
77
|
data = value;
|
|
78
78
|
error = null;
|
|
79
|
-
status =
|
|
79
|
+
status = 2;
|
|
80
80
|
}).catch((e) => {
|
|
81
81
|
error = e;
|
|
82
82
|
data = null;
|
|
83
|
-
status =
|
|
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 ===
|
|
93
|
-
reloading: hasLoaded && status ===
|
|
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();
|
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);
|
|
@@ -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 =
|
|
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 !==
|
|
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 =
|
|
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 =
|
|
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 !==
|
|
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 =
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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,59 +25,64 @@ __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
|
-
[
|
|
42
|
-
reporter: "SSR Error - App
|
|
43
|
-
logger: "App
|
|
44
|
-
metrics: "app.
|
|
42
|
+
[0]: {
|
|
43
|
+
reporter: "SSR Error - App Prerender",
|
|
44
|
+
logger: "App Prerender",
|
|
45
|
+
metrics: "app.prerender.error"
|
|
45
46
|
},
|
|
46
|
-
[
|
|
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
|
-
[
|
|
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
|
-
[
|
|
62
|
+
[4]: {
|
|
57
63
|
metrics: "app.render.streaming.shell.error"
|
|
58
64
|
}
|
|
59
65
|
};
|
|
60
66
|
const timings = {
|
|
61
|
-
[
|
|
62
|
-
reporter: "ssr-
|
|
63
|
-
serverTiming: "ssr-
|
|
64
|
-
metrics: "app.
|
|
65
|
-
logger: "App
|
|
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
|
-
[
|
|
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
|
-
[
|
|
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
|
}
|
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,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 =
|
|
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 ===
|
|
48
|
+
if (status === 1) {
|
|
49
49
|
return [
|
|
50
50
|
2,
|
|
51
51
|
promise
|
|
52
52
|
];
|
|
53
53
|
}
|
|
54
|
-
status =
|
|
54
|
+
status = 1;
|
|
55
55
|
notify();
|
|
56
56
|
promise = loaderFn().then(function(value) {
|
|
57
57
|
data = value;
|
|
58
58
|
error = null;
|
|
59
|
-
status =
|
|
59
|
+
status = 2;
|
|
60
60
|
}).catch(function(e) {
|
|
61
61
|
error = e;
|
|
62
62
|
data = null;
|
|
63
|
-
status =
|
|
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 ===
|
|
82
|
-
reloading: hasLoaded && status ===
|
|
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() {
|