@modern-js/runtime 2.43.0 → 2.45.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/ssr/cli/index.js +3 -7
- package/dist/cjs/ssr/prefetch.js +1 -2
- package/dist/cjs/ssr/serverRender/renderToStream/buildTemplate.share.js +1 -1
- package/dist/cjs/ssr/serverRender/renderToStream/bulidTemplate.before.js +36 -10
- package/dist/cjs/ssr/serverRender/renderToStream/index.js +2 -2
- package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.js +32 -30
- package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.worker.js +3 -3
- package/dist/cjs/ssr/serverRender/renderToStream/template.js +3 -3
- package/dist/cjs/ssr/serverRender/renderToString/entry.js +0 -2
- package/dist/cjs/ssr/serverRender/renderToString/index.js +0 -1
- package/dist/cjs/ssr/serverRender/renderToString/loadable.js +4 -7
- package/dist/cjs/ssr/serverRender/tracker.js +8 -20
- package/dist/cjs/ssr/serverRender/utils.js +6 -0
- package/dist/esm/ssr/cli/index.js +5 -8
- package/dist/esm/ssr/prefetch.js +1 -2
- package/dist/esm/ssr/serverRender/renderToStream/buildTemplate.share.js +5 -3
- package/dist/esm/ssr/serverRender/renderToStream/bulidTemplate.before.js +168 -33
- package/dist/esm/ssr/serverRender/renderToStream/index.js +2 -2
- package/dist/esm/ssr/serverRender/renderToStream/renderToPipe.js +34 -30
- package/dist/esm/ssr/serverRender/renderToStream/renderToPipe.worker.js +23 -13
- package/dist/esm/ssr/serverRender/renderToStream/template.js +37 -11
- package/dist/esm/ssr/serverRender/renderToString/entry.js +0 -2
- package/dist/esm/ssr/serverRender/renderToString/index.js +0 -1
- package/dist/esm/ssr/serverRender/renderToString/loadable.js +5 -8
- package/dist/esm/ssr/serverRender/tracker.js +8 -20
- package/dist/esm/ssr/serverRender/utils.js +5 -0
- package/dist/esm-node/ssr/cli/index.js +3 -7
- package/dist/esm-node/ssr/prefetch.js +1 -2
- package/dist/esm-node/ssr/serverRender/renderToStream/buildTemplate.share.js +1 -1
- package/dist/esm-node/ssr/serverRender/renderToStream/bulidTemplate.before.js +37 -11
- package/dist/esm-node/ssr/serverRender/renderToStream/index.js +2 -2
- package/dist/esm-node/ssr/serverRender/renderToStream/renderToPipe.js +32 -30
- package/dist/esm-node/ssr/serverRender/renderToStream/renderToPipe.worker.js +3 -3
- package/dist/esm-node/ssr/serverRender/renderToStream/template.js +3 -3
- package/dist/esm-node/ssr/serverRender/renderToString/entry.js +0 -2
- package/dist/esm-node/ssr/serverRender/renderToString/index.js +0 -1
- package/dist/esm-node/ssr/serverRender/renderToString/loadable.js +5 -8
- package/dist/esm-node/ssr/serverRender/tracker.js +8 -20
- package/dist/esm-node/ssr/serverRender/utils.js +5 -0
- package/dist/types/ssr/serverRender/renderToStream/buildTemplate.after.d.ts +1 -1
- package/dist/types/ssr/serverRender/renderToStream/buildTemplate.share.d.ts +2 -2
- package/dist/types/ssr/serverRender/renderToStream/bulidTemplate.before.d.ts +2 -2
- package/dist/types/ssr/serverRender/renderToStream/index.d.ts +1 -1
- package/dist/types/ssr/serverRender/renderToStream/renderToPipe.d.ts +2 -2
- package/dist/types/ssr/serverRender/renderToStream/renderToPipe.worker.d.ts +2 -2
- package/dist/types/ssr/serverRender/renderToStream/template.d.ts +2 -2
- package/dist/types/ssr/serverRender/renderToString/entry.d.ts +0 -1
- package/dist/types/ssr/serverRender/tracker.d.ts +1 -1
- package/dist/types/ssr/serverRender/types.d.ts +1 -1
- package/dist/types/ssr/serverRender/utils.d.ts +1 -0
- package/package.json +10 -10
|
@@ -154,24 +154,20 @@ const ssrPlugin = () => ({
|
|
|
154
154
|
},
|
|
155
155
|
modifyEntryRuntimePlugins({ entrypoint, plugins, bundlerConfigs }) {
|
|
156
156
|
if (ssrConfigMap.get(entrypoint.entryName)) {
|
|
157
|
-
var _bundlerConfigs_find_output, _bundlerConfigs_find
|
|
157
|
+
var _bundlerConfigs_find_output, _bundlerConfigs_find;
|
|
158
158
|
const chunkLoadingGlobal = bundlerConfigs === null || bundlerConfigs === void 0 ? void 0 : (_bundlerConfigs_find = bundlerConfigs.find((config2) => config2.name === "client")) === null || _bundlerConfigs_find === void 0 ? void 0 : (_bundlerConfigs_find_output = _bundlerConfigs_find.output) === null || _bundlerConfigs_find_output === void 0 ? void 0 : _bundlerConfigs_find_output.chunkLoadingGlobal;
|
|
159
159
|
const config = api.useResolvedConfigContext();
|
|
160
160
|
const { enableInlineScripts, enableInlineStyles } = config.output;
|
|
161
161
|
const { crossorigin, scriptLoading } = config.html;
|
|
162
|
-
const disablePrerender = typeof ((_config_server = config.server) === null || _config_server === void 0 ? void 0 : _config_server.ssr) === "object" ? Boolean(config.server.ssr.disablePrerender) : false;
|
|
163
|
-
const unsafeHeaders = typeof ((_config_server1 = config.server) === null || _config_server1 === void 0 ? void 0 : _config_server1.ssr) === "object" ? config.server.ssr.unsafeHeaders : void 0;
|
|
164
162
|
plugins.push({
|
|
165
163
|
name: PLUGIN_IDENTIFIER,
|
|
166
164
|
options: JSON.stringify({
|
|
165
|
+
scriptLoading,
|
|
167
166
|
...ssrConfigMap.get(entrypoint.entryName) || {},
|
|
168
167
|
crossorigin,
|
|
169
|
-
scriptLoading,
|
|
170
168
|
chunkLoadingGlobal,
|
|
171
|
-
disablePrerender,
|
|
172
169
|
enableInlineScripts: typeof enableInlineScripts === "function" ? void 0 : enableInlineScripts,
|
|
173
|
-
enableInlineStyles: typeof enableInlineStyles === "function" ? void 0 : enableInlineStyles
|
|
174
|
-
unsafeHeaders
|
|
170
|
+
enableInlineStyles: typeof enableInlineStyles === "function" ? void 0 : enableInlineStyles
|
|
175
171
|
})
|
|
176
172
|
});
|
|
177
173
|
}
|
package/dist/cjs/ssr/prefetch.js
CHANGED
|
@@ -77,8 +77,7 @@ const prefetch = async (App, context, config, tracker) => (0, import_node.run)(c
|
|
|
77
77
|
Object.keys(loadersData).forEach((id) => {
|
|
78
78
|
const data = loadersData[id];
|
|
79
79
|
if (data._error) {
|
|
80
|
-
ssrContext.logger.error("App
|
|
81
|
-
ssrContext.metrics.emitCounter("app.prefetch.loader.error", 1);
|
|
80
|
+
ssrContext.logger.error("App Load use-loader", data._error);
|
|
82
81
|
delete data._error;
|
|
83
82
|
}
|
|
84
83
|
});
|
|
@@ -24,7 +24,7 @@ __export(buildTemplate_share_exports, {
|
|
|
24
24
|
module.exports = __toCommonJS(buildTemplate_share_exports);
|
|
25
25
|
const HEAD_REG_EXP = /<head(.|\n)*>(.|\n)*<\/head>/;
|
|
26
26
|
function buildTemplate(template, callbacks) {
|
|
27
|
-
return callbacks.reduce((
|
|
27
|
+
return callbacks.reduce((promise, buildTemplateCb) => promise.then((template2) => buildTemplateCb(template2)), Promise.resolve(template));
|
|
28
28
|
}
|
|
29
29
|
// Annotate the CommonJS export names for ESM import in node:
|
|
30
30
|
0 && (module.exports = {
|
|
@@ -37,7 +37,24 @@ var import_helmet = __toESM(require("../helmet"));
|
|
|
37
37
|
var import_constants = require("../constants");
|
|
38
38
|
var import_utils = require("../utils");
|
|
39
39
|
var import_buildTemplate = require("./buildTemplate.share");
|
|
40
|
-
|
|
40
|
+
const readAsset = async (chunk) => {
|
|
41
|
+
const fs = await Promise.resolve().then(() => __toESM(require("fs/promises")));
|
|
42
|
+
const path = await Promise.resolve().then(() => __toESM(require("path")));
|
|
43
|
+
const filepath = path.join(__dirname, chunk);
|
|
44
|
+
return fs.readFile(filepath, "utf-8");
|
|
45
|
+
};
|
|
46
|
+
const checkIsInline = (chunk, enableInline) => {
|
|
47
|
+
if (process.env.NODE_ENV === "production") {
|
|
48
|
+
if (enableInline instanceof RegExp) {
|
|
49
|
+
return enableInline.test(chunk);
|
|
50
|
+
} else {
|
|
51
|
+
return Boolean(enableInline);
|
|
52
|
+
}
|
|
53
|
+
} else {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
function getHeadTemplate(beforeEntryTemplate, context, pluginConfig) {
|
|
41
58
|
const callbacks = [
|
|
42
59
|
(headTemplate2) => {
|
|
43
60
|
const helmetData = import_react_helmet.default.renderStatic();
|
|
@@ -51,9 +68,10 @@ function getHeadTemplate(beforeEntryTemplate, context) {
|
|
|
51
68
|
return "";
|
|
52
69
|
}
|
|
53
70
|
return (0, import_buildTemplate.buildTemplate)(headTemplate, callbacks);
|
|
54
|
-
function injectCss(headTemplate2) {
|
|
55
|
-
|
|
56
|
-
|
|
71
|
+
async function injectCss(headTemplate2) {
|
|
72
|
+
const css = await getCssChunks();
|
|
73
|
+
return (0, import_utils.safeReplace)(headTemplate2, import_constants.CHUNK_CSS_PLACEHOLDER, css);
|
|
74
|
+
async function getCssChunks() {
|
|
57
75
|
const { routeManifest, routerContext, routes } = context;
|
|
58
76
|
if (!routeManifest || !routerContext || !routes) {
|
|
59
77
|
return "";
|
|
@@ -75,15 +93,23 @@ function getHeadTemplate(beforeEntryTemplate, context) {
|
|
|
75
93
|
}
|
|
76
94
|
}
|
|
77
95
|
});
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
96
|
+
const { enableInlineStyles } = pluginConfig;
|
|
97
|
+
const styles = await Promise.all(cssChunks.map(async (chunk) => {
|
|
98
|
+
const link = `<link href="${chunk}" rel="stylesheet" />`;
|
|
99
|
+
if ((0, import_utils.checkIsNode)() && checkIsInline(chunk, enableInlineStyles)) {
|
|
100
|
+
return readAsset(chunk).then((content) => `<style>${content}</style>`).catch((_) => {
|
|
101
|
+
return link;
|
|
102
|
+
});
|
|
103
|
+
} else {
|
|
104
|
+
return link;
|
|
105
|
+
}
|
|
106
|
+
}));
|
|
107
|
+
return `${styles.join("")}`;
|
|
82
108
|
}
|
|
83
109
|
}
|
|
84
110
|
}
|
|
85
|
-
function buildShellBeforeTemplate(beforeAppTemplate, context) {
|
|
86
|
-
const headTemplate = getHeadTemplate(beforeAppTemplate, context);
|
|
111
|
+
async function buildShellBeforeTemplate(beforeAppTemplate, context, pluginConfig) {
|
|
112
|
+
const headTemplate = await getHeadTemplate(beforeAppTemplate, context, pluginConfig);
|
|
87
113
|
return beforeAppTemplate.replace(import_buildTemplate.HEAD_REG_EXP, headTemplate);
|
|
88
114
|
}
|
|
89
115
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -36,7 +36,7 @@ var import_node = require("@modern-js/runtime-utils/node");
|
|
|
36
36
|
var import_time = require("@modern-js/runtime-utils/time");
|
|
37
37
|
var import_tracker = require("../tracker");
|
|
38
38
|
var import_renderToPipe = __toESM(require("./renderToPipe"));
|
|
39
|
-
const render = ({ App, context }) => {
|
|
39
|
+
const render = ({ App, context, config }) => {
|
|
40
40
|
const { ssrContext } = context;
|
|
41
41
|
if (!ssrContext) {
|
|
42
42
|
throw new Error('The "ssrContext" must not be undefined, but received undefined');
|
|
@@ -49,7 +49,7 @@ const render = ({ App, context }) => {
|
|
|
49
49
|
})
|
|
50
50
|
});
|
|
51
51
|
const { tracker } = ssrContext;
|
|
52
|
-
const pipe = (0, import_renderToPipe.default)(rootElement, context, {
|
|
52
|
+
const pipe = (0, import_renderToPipe.default)(rootElement, context, config, {
|
|
53
53
|
onShellReady() {
|
|
54
54
|
const cost = end();
|
|
55
55
|
tracker.trackTiming(import_tracker.SSRTimings.RENDER_SHELL, cost);
|
|
@@ -30,7 +30,7 @@ var ShellChunkStatus;
|
|
|
30
30
|
ShellChunkStatus2[ShellChunkStatus2["START"] = 0] = "START";
|
|
31
31
|
ShellChunkStatus2[ShellChunkStatus2["FINIESH"] = 1] = "FINIESH";
|
|
32
32
|
})(ShellChunkStatus || (ShellChunkStatus = {}));
|
|
33
|
-
function renderToPipe(rootElement, context, options) {
|
|
33
|
+
function renderToPipe(rootElement, context, pluginConfig, options) {
|
|
34
34
|
let shellChunkStatus = 0;
|
|
35
35
|
const { ssrContext } = context;
|
|
36
36
|
const chunkVec = [];
|
|
@@ -45,41 +45,43 @@ function renderToPipe(rootElement, context, options) {
|
|
|
45
45
|
...options,
|
|
46
46
|
nonce: ssrContext === null || ssrContext === void 0 ? void 0 : ssrContext.nonce,
|
|
47
47
|
onShellReady() {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
48
|
+
(0, import_template.getTemplates)(context, import_types.RenderLevel.SERVER_RENDER, pluginConfig).then(({ shellAfter, shellBefore }) => {
|
|
49
|
+
var _options_onShellReady;
|
|
50
|
+
options === null || options === void 0 ? void 0 : (_options_onShellReady = options.onShellReady) === null || _options_onShellReady === void 0 ? void 0 : _options_onShellReady.call(options);
|
|
51
|
+
const injectableTransform = new import_stream.Transform({
|
|
52
|
+
transform(chunk, _encoding, callback) {
|
|
53
|
+
try {
|
|
54
|
+
if (shellChunkStatus !== 1) {
|
|
55
|
+
chunkVec.push(chunk.toString());
|
|
56
|
+
let concatedChunk = chunkVec.join("");
|
|
57
|
+
if (concatedChunk.endsWith(import_common.ESCAPED_SHELL_STREAM_END_MARK)) {
|
|
58
|
+
concatedChunk = concatedChunk.replace(import_common.ESCAPED_SHELL_STREAM_END_MARK, "");
|
|
59
|
+
shellChunkStatus = 1;
|
|
60
|
+
this.push(`${shellBefore}${concatedChunk}${shellAfter}`);
|
|
61
|
+
}
|
|
62
|
+
} else {
|
|
63
|
+
this.push(chunk);
|
|
64
|
+
}
|
|
65
|
+
callback();
|
|
66
|
+
} catch (e) {
|
|
67
|
+
if (e instanceof Error) {
|
|
68
|
+
callback(e);
|
|
69
|
+
} else {
|
|
70
|
+
callback(new Error("Received unkown error when streaming"));
|
|
61
71
|
}
|
|
62
|
-
} else {
|
|
63
|
-
this.push(chunk);
|
|
64
|
-
}
|
|
65
|
-
callback();
|
|
66
|
-
} catch (e) {
|
|
67
|
-
if (e instanceof Error) {
|
|
68
|
-
callback(e);
|
|
69
|
-
} else {
|
|
70
|
-
callback(new Error("Received unkown error when streaming"));
|
|
71
72
|
}
|
|
72
73
|
}
|
|
73
|
-
}
|
|
74
|
+
});
|
|
75
|
+
resolve(pipe(injectableTransform).pipe(stream));
|
|
74
76
|
});
|
|
75
|
-
resolve(pipe(injectableTransform).pipe(stream));
|
|
76
77
|
},
|
|
77
78
|
onShellError(error) {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
79
|
+
(0, import_template.getTemplates)(context, import_types.RenderLevel.CLIENT_RENDER, pluginConfig).then(({ shellAfter, shellBefore }) => {
|
|
80
|
+
var _options_onShellError;
|
|
81
|
+
const fallbackHtml = `${shellBefore}${shellAfter}`;
|
|
82
|
+
resolve(fallbackHtml);
|
|
83
|
+
options === null || options === void 0 ? void 0 : (_options_onShellError = options.onShellError) === null || _options_onShellError === void 0 ? void 0 : _options_onShellError.call(options, error);
|
|
84
|
+
});
|
|
83
85
|
}
|
|
84
86
|
});
|
|
85
87
|
});
|
|
@@ -30,7 +30,7 @@ var ShellChunkStatus;
|
|
|
30
30
|
ShellChunkStatus2[ShellChunkStatus2["START"] = 0] = "START";
|
|
31
31
|
ShellChunkStatus2[ShellChunkStatus2["FINIESH"] = 1] = "FINIESH";
|
|
32
32
|
})(ShellChunkStatus || (ShellChunkStatus = {}));
|
|
33
|
-
function renderToPipe(rootElement, context, options) {
|
|
33
|
+
function renderToPipe(rootElement, context, pluginConfig, options) {
|
|
34
34
|
let shellChunkStatus = 0;
|
|
35
35
|
const chunkVec = [];
|
|
36
36
|
const { ssrContext } = context;
|
|
@@ -40,7 +40,7 @@ function renderToPipe(rootElement, context, options) {
|
|
|
40
40
|
({ renderToReadableStream } = require("react-dom/server"));
|
|
41
41
|
} catch (e) {
|
|
42
42
|
}
|
|
43
|
-
const { shellAfter, shellBefore } = (0, import_template.getTemplates)(context, import_types.RenderLevel.SERVER_RENDER);
|
|
43
|
+
const { shellAfter, shellBefore } = await (0, import_template.getTemplates)(context, import_types.RenderLevel.SERVER_RENDER, pluginConfig);
|
|
44
44
|
try {
|
|
45
45
|
const readableOriginal = await renderToReadableStream(rootElement, {
|
|
46
46
|
...options,
|
|
@@ -79,7 +79,7 @@ function renderToPipe(rootElement, context, options) {
|
|
|
79
79
|
return injectableStream;
|
|
80
80
|
} catch (err) {
|
|
81
81
|
ssrContext === null || ssrContext === void 0 ? void 0 : ssrContext.tracker.trackError(import_tracker.SSRErrors.RENDER_SHELL, err);
|
|
82
|
-
const { shellAfter: shellAfter2, shellBefore: shellBefore2 } = (0, import_template.getTemplates)(context, import_types.RenderLevel.CLIENT_RENDER);
|
|
82
|
+
const { shellAfter: shellAfter2, shellBefore: shellBefore2 } = await (0, import_template.getTemplates)(context, import_types.RenderLevel.CLIENT_RENDER, pluginConfig);
|
|
83
83
|
const fallbackHtml = `${shellBefore2}${shellAfter2}`;
|
|
84
84
|
return fallbackHtml;
|
|
85
85
|
}
|
|
@@ -24,11 +24,11 @@ module.exports = __toCommonJS(template_exports);
|
|
|
24
24
|
var import_buildTemplate = require("./buildTemplate.after");
|
|
25
25
|
var import_bulidTemplate = require("./bulidTemplate.before");
|
|
26
26
|
const HTML_SEPARATOR = "<!--<?- html ?>-->";
|
|
27
|
-
const getTemplates = (context, renderLevel) => {
|
|
27
|
+
const getTemplates = async (context, renderLevel, pluginConfig) => {
|
|
28
28
|
const { ssrContext } = context;
|
|
29
29
|
const [beforeAppTemplate = "", afterAppHtmlTemplate = ""] = ssrContext.template.split(HTML_SEPARATOR) || [];
|
|
30
|
-
const builtBeforeTemplate = (0, import_bulidTemplate.buildShellBeforeTemplate)(beforeAppTemplate, context);
|
|
31
|
-
const builtAfterTemplate = (0, import_buildTemplate.buildShellAfterTemplate)(afterAppHtmlTemplate, {
|
|
30
|
+
const builtBeforeTemplate = await (0, import_bulidTemplate.buildShellBeforeTemplate)(beforeAppTemplate, context, pluginConfig);
|
|
31
|
+
const builtAfterTemplate = await (0, import_buildTemplate.buildShellAfterTemplate)(afterAppHtmlTemplate, {
|
|
32
32
|
context,
|
|
33
33
|
renderLevel
|
|
34
34
|
});
|
|
@@ -161,7 +161,6 @@ class Entry {
|
|
|
161
161
|
constructor(options) {
|
|
162
162
|
(0, import_define_property._)(this, "entryName", void 0);
|
|
163
163
|
(0, import_define_property._)(this, "result", void 0);
|
|
164
|
-
(0, import_define_property._)(this, "metrics", void 0);
|
|
165
164
|
(0, import_define_property._)(this, "tracker", void 0);
|
|
166
165
|
(0, import_define_property._)(this, "template", void 0);
|
|
167
166
|
(0, import_define_property._)(this, "App", void 0);
|
|
@@ -177,7 +176,6 @@ class Entry {
|
|
|
177
176
|
this.pluginConfig = config;
|
|
178
177
|
this.routeManifest = ctx.routeManifest;
|
|
179
178
|
this.tracker = ctx.tracker;
|
|
180
|
-
this.metrics = ctx.metrics;
|
|
181
179
|
this.htmlModifiers = ctx.htmlModifiers;
|
|
182
180
|
this.nonce = nonce;
|
|
183
181
|
this.result = {
|
|
@@ -58,10 +58,6 @@ const readAsset = async (chunk) => {
|
|
|
58
58
|
const filepath = path.resolve(__dirname, chunk.filename);
|
|
59
59
|
return fs.readFile(filepath, "utf-8");
|
|
60
60
|
};
|
|
61
|
-
const checkIsNode = () => {
|
|
62
|
-
var _process_release;
|
|
63
|
-
return typeof process !== "undefined" && ((_process_release = process.release) === null || _process_release === void 0 ? void 0 : _process_release.name) === "node";
|
|
64
|
-
};
|
|
65
61
|
class LoadableCollector {
|
|
66
62
|
get existsAssets() {
|
|
67
63
|
var _routeManifest_routeAssets_entryName, _routeManifest_routeAssets;
|
|
@@ -109,7 +105,8 @@ class LoadableCollector {
|
|
|
109
105
|
const { scriptLoading = "defer", enableInlineScripts } = config;
|
|
110
106
|
const scriptLoadingAtr = {
|
|
111
107
|
defer: scriptLoading === "defer" ? true : void 0,
|
|
112
|
-
type: scriptLoading === "module" ? "module" : void 0
|
|
108
|
+
type: scriptLoading === "module" ? "module" : void 0,
|
|
109
|
+
async: scriptLoading === "async" ? true : void 0
|
|
113
110
|
};
|
|
114
111
|
const attributes = (0, import_utils.attributesToString)(this.generateAttributes({
|
|
115
112
|
nonce,
|
|
@@ -121,7 +118,7 @@ class LoadableCollector {
|
|
|
121
118
|
return !jsChunkReg.test(template) && !((_this_existsAssets = this.existsAssets) === null || _this_existsAssets === void 0 ? void 0 : _this_existsAssets.includes(chunk.path));
|
|
122
119
|
}).map(async (chunk) => {
|
|
123
120
|
const script = `<script${attributes} src="${chunk.url}"></script>`;
|
|
124
|
-
if (
|
|
121
|
+
if ((0, import_utils.checkIsNode)() && checkIsInline(chunk, enableInlineScripts)) {
|
|
125
122
|
return readAsset(chunk).then((content) => `<script>${content}</script>`).catch((_) => {
|
|
126
123
|
return script;
|
|
127
124
|
});
|
|
@@ -140,7 +137,7 @@ class LoadableCollector {
|
|
|
140
137
|
return !cssChunkReg.test(template) && !((_this_existsAssets = this.existsAssets) === null || _this_existsAssets === void 0 ? void 0 : _this_existsAssets.includes(chunk.path));
|
|
141
138
|
}).map(async (chunk) => {
|
|
142
139
|
const link = `<link${atrributes} href="${chunk.url}" rel="stylesheet" />`;
|
|
143
|
-
if (
|
|
140
|
+
if ((0, import_utils.checkIsNode)() && checkIsInline(chunk, enableInlineStyles)) {
|
|
144
141
|
return readAsset(chunk).then((content) => `<style>${content}</style>`).catch((_) => {
|
|
145
142
|
return link;
|
|
146
143
|
});
|
|
@@ -41,69 +41,57 @@ var SSRErrors;
|
|
|
41
41
|
const errors = {
|
|
42
42
|
[0]: {
|
|
43
43
|
reporter: "App Prerender",
|
|
44
|
-
logger: "App Prerender"
|
|
45
|
-
metrics: "app.prerender.error"
|
|
44
|
+
logger: "App Prerender"
|
|
46
45
|
},
|
|
47
46
|
[1]: {
|
|
48
47
|
reporter: "App run useLoader",
|
|
49
|
-
logger: "App run useLoader"
|
|
50
|
-
metrics: "app.useloader.error"
|
|
48
|
+
logger: "App run useLoader"
|
|
51
49
|
},
|
|
52
50
|
[2]: {
|
|
53
51
|
reporter: "App Render To HTML",
|
|
54
|
-
logger: "App Render To HTML"
|
|
55
|
-
metrics: "app.render.html.error"
|
|
52
|
+
logger: "App Render To HTML"
|
|
56
53
|
},
|
|
57
54
|
[3]: {
|
|
58
55
|
reporter: "App Render To Streaming",
|
|
59
|
-
logger: "An error occurs during streaming SSR"
|
|
60
|
-
metrics: "app.render.streaming.error"
|
|
56
|
+
logger: "An error occurs during streaming SSR"
|
|
61
57
|
},
|
|
62
|
-
[4]: {
|
|
63
|
-
metrics: "app.render.streaming.shell.error"
|
|
64
|
-
}
|
|
58
|
+
[4]: {}
|
|
65
59
|
};
|
|
66
60
|
const timings = {
|
|
67
61
|
[0]: {
|
|
68
62
|
reporter: "ssr-prerender",
|
|
69
63
|
serverTiming: "ssr-prerender",
|
|
70
|
-
metrics: "app.prerender.cost",
|
|
71
64
|
logger: "App Prerender cost = %d ms"
|
|
72
65
|
},
|
|
73
66
|
[1]: {
|
|
74
67
|
reporter: "ssr-render-html",
|
|
75
68
|
serverTiming: "ssr-render-html",
|
|
76
|
-
metrics: "app.render.html.cost",
|
|
77
69
|
logger: "App Render To HTML cost = %d ms"
|
|
78
70
|
},
|
|
79
71
|
[2]: {
|
|
80
72
|
reporter: "ssr-render-shell",
|
|
81
|
-
metrics: "app.render.shell.cost",
|
|
82
73
|
logger: "App Render To Shell cost = %d ms"
|
|
83
74
|
},
|
|
84
75
|
[3]: {
|
|
85
76
|
reporter: "use-loader",
|
|
86
77
|
serverTiming: "use-loader",
|
|
87
|
-
metrics: "app.useloader.cost",
|
|
88
78
|
logger: "App run useLoader cost = %d ms"
|
|
89
79
|
}
|
|
90
80
|
};
|
|
91
|
-
function createSSRTracker({ reporter, serverTiming,
|
|
81
|
+
function createSSRTracker({ reporter, serverTiming, logger }) {
|
|
92
82
|
const tracker = {
|
|
93
83
|
get sessionId() {
|
|
94
84
|
return reporter.sessionId;
|
|
95
85
|
},
|
|
96
86
|
trackError(key, e) {
|
|
97
|
-
const { reporter: reporterContent,
|
|
87
|
+
const { reporter: reporterContent, logger: loggerContent } = errors[key];
|
|
98
88
|
reporterContent && reporter.reportError(`SSR Error - ${reporterContent}`, e);
|
|
99
|
-
metricsContent && metrics.emitCounter(metricsContent, 1);
|
|
100
89
|
loggerContent && logger.error(loggerContent, e);
|
|
101
90
|
},
|
|
102
91
|
trackTiming(key, cost) {
|
|
103
|
-
const { reporter: reporterName, serverTiming: serverTimingName, logger: loggerName
|
|
92
|
+
const { reporter: reporterName, serverTiming: serverTimingName, logger: loggerName } = timings[key];
|
|
104
93
|
reporterName && reporter.reportTiming(reporterName, cost);
|
|
105
94
|
serverTimingName && serverTiming.addServeTiming(serverTimingName, cost);
|
|
106
|
-
metricsName && metrics.emitTimer(metricsName, cost);
|
|
107
95
|
loggerName && logger.debug(loggerName, cost);
|
|
108
96
|
}
|
|
109
97
|
};
|
|
@@ -19,6 +19,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var utils_exports = {};
|
|
20
20
|
__export(utils_exports, {
|
|
21
21
|
attributesToString: () => attributesToString,
|
|
22
|
+
checkIsNode: () => checkIsNode,
|
|
22
23
|
safeReplace: () => safeReplace
|
|
23
24
|
});
|
|
24
25
|
module.exports = __toCommonJS(utils_exports);
|
|
@@ -30,8 +31,13 @@ function attributesToString(attributes) {
|
|
|
30
31
|
function safeReplace(source, searchValue, replaceValue) {
|
|
31
32
|
return source.replace(searchValue, () => replaceValue);
|
|
32
33
|
}
|
|
34
|
+
function checkIsNode() {
|
|
35
|
+
var _process_release;
|
|
36
|
+
return typeof process !== "undefined" && ((_process_release = process.release) === null || _process_release === void 0 ? void 0 : _process_release.name) === "node";
|
|
37
|
+
}
|
|
33
38
|
// Annotate the CommonJS export names for ESM import in node:
|
|
34
39
|
0 && (module.exports = {
|
|
35
40
|
attributesToString,
|
|
41
|
+
checkIsNode,
|
|
36
42
|
safeReplace
|
|
37
43
|
});
|
|
@@ -146,25 +146,22 @@ var ssrPlugin = function() {
|
|
|
146
146
|
modifyEntryRuntimePlugins: function modifyEntryRuntimePlugins(param) {
|
|
147
147
|
var entrypoint = param.entrypoint, plugins = param.plugins, bundlerConfigs = param.bundlerConfigs;
|
|
148
148
|
if (ssrConfigMap.get(entrypoint.entryName)) {
|
|
149
|
-
var _bundlerConfigs_find_output, _bundlerConfigs_find
|
|
149
|
+
var _bundlerConfigs_find_output, _bundlerConfigs_find;
|
|
150
150
|
var chunkLoadingGlobal = bundlerConfigs === null || bundlerConfigs === void 0 ? void 0 : (_bundlerConfigs_find = bundlerConfigs.find(function(config2) {
|
|
151
151
|
return config2.name === "client";
|
|
152
152
|
})) === null || _bundlerConfigs_find === void 0 ? void 0 : (_bundlerConfigs_find_output = _bundlerConfigs_find.output) === null || _bundlerConfigs_find_output === void 0 ? void 0 : _bundlerConfigs_find_output.chunkLoadingGlobal;
|
|
153
153
|
var config = api.useResolvedConfigContext();
|
|
154
154
|
var _config_output = config.output, enableInlineScripts = _config_output.enableInlineScripts, enableInlineStyles = _config_output.enableInlineStyles;
|
|
155
155
|
var _config_html = config.html, crossorigin = _config_html.crossorigin, scriptLoading = _config_html.scriptLoading;
|
|
156
|
-
var disablePrerender = typeof ((_config_server = config.server) === null || _config_server === void 0 ? void 0 : _config_server.ssr) === "object" ? Boolean(config.server.ssr.disablePrerender) : false;
|
|
157
|
-
var unsafeHeaders = typeof ((_config_server1 = config.server) === null || _config_server1 === void 0 ? void 0 : _config_server1.ssr) === "object" ? config.server.ssr.unsafeHeaders : void 0;
|
|
158
156
|
plugins.push({
|
|
159
157
|
name: PLUGIN_IDENTIFIER,
|
|
160
|
-
options: JSON.stringify(_object_spread_props(_object_spread({
|
|
158
|
+
options: JSON.stringify(_object_spread_props(_object_spread({
|
|
159
|
+
scriptLoading
|
|
160
|
+
}, ssrConfigMap.get(entrypoint.entryName) || {}), {
|
|
161
161
|
crossorigin,
|
|
162
|
-
scriptLoading,
|
|
163
162
|
chunkLoadingGlobal,
|
|
164
|
-
disablePrerender,
|
|
165
163
|
enableInlineScripts: typeof enableInlineScripts === "function" ? void 0 : enableInlineScripts,
|
|
166
|
-
enableInlineStyles: typeof enableInlineStyles === "function" ? void 0 : enableInlineStyles
|
|
167
|
-
unsafeHeaders
|
|
164
|
+
enableInlineStyles: typeof enableInlineStyles === "function" ? void 0 : enableInlineStyles
|
|
168
165
|
}))
|
|
169
166
|
});
|
|
170
167
|
}
|
package/dist/esm/ssr/prefetch.js
CHANGED
|
@@ -84,8 +84,7 @@ var prefetch = function() {
|
|
|
84
84
|
Object.keys(loadersData).forEach(function(id) {
|
|
85
85
|
var data = loadersData[id];
|
|
86
86
|
if (data._error) {
|
|
87
|
-
ssrContext.logger.error("App
|
|
88
|
-
ssrContext.metrics.emitCounter("app.prefetch.loader.error", 1);
|
|
87
|
+
ssrContext.logger.error("App Load use-loader", data._error);
|
|
89
88
|
delete data._error;
|
|
90
89
|
}
|
|
91
90
|
});
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
var HEAD_REG_EXP = /<head(.|\n)*>(.|\n)*<\/head>/;
|
|
2
2
|
function buildTemplate(template, callbacks) {
|
|
3
|
-
return callbacks.reduce(function(
|
|
4
|
-
return
|
|
5
|
-
|
|
3
|
+
return callbacks.reduce(function(promise, buildTemplateCb) {
|
|
4
|
+
return promise.then(function(template2) {
|
|
5
|
+
return buildTemplateCb(template2);
|
|
6
|
+
});
|
|
7
|
+
}, Promise.resolve(template));
|
|
6
8
|
}
|
|
7
9
|
export {
|
|
8
10
|
HEAD_REG_EXP,
|