@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
|
@@ -1,12 +1,56 @@
|
|
|
1
|
+
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
|
|
2
|
+
import { _ as _instanceof } from "@swc/helpers/_/_instanceof";
|
|
1
3
|
import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
|
|
2
4
|
import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
|
|
5
|
+
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
|
|
3
6
|
import ReactHelmet from "react-helmet";
|
|
4
7
|
import { matchRoutes } from "@modern-js/runtime-utils/router";
|
|
5
8
|
import helmetReplace from "../helmet";
|
|
6
9
|
import { CHUNK_CSS_PLACEHOLDER } from "../constants";
|
|
7
|
-
import { safeReplace } from "../utils";
|
|
10
|
+
import { checkIsNode, safeReplace } from "../utils";
|
|
8
11
|
import { HEAD_REG_EXP, buildTemplate } from "./buildTemplate.share";
|
|
9
|
-
function
|
|
12
|
+
var readAsset = function() {
|
|
13
|
+
var _ref = _async_to_generator(function(chunk) {
|
|
14
|
+
var fs, path, filepath;
|
|
15
|
+
return _ts_generator(this, function(_state) {
|
|
16
|
+
switch (_state.label) {
|
|
17
|
+
case 0:
|
|
18
|
+
return [
|
|
19
|
+
4,
|
|
20
|
+
import("fs/promises")
|
|
21
|
+
];
|
|
22
|
+
case 1:
|
|
23
|
+
fs = _state.sent();
|
|
24
|
+
return [
|
|
25
|
+
4,
|
|
26
|
+
import("path")
|
|
27
|
+
];
|
|
28
|
+
case 2:
|
|
29
|
+
path = _state.sent();
|
|
30
|
+
filepath = path.join(__dirname, chunk);
|
|
31
|
+
return [
|
|
32
|
+
2,
|
|
33
|
+
fs.readFile(filepath, "utf-8")
|
|
34
|
+
];
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
return function readAsset2(chunk) {
|
|
39
|
+
return _ref.apply(this, arguments);
|
|
40
|
+
};
|
|
41
|
+
}();
|
|
42
|
+
var checkIsInline = function(chunk, enableInline) {
|
|
43
|
+
if (process.env.NODE_ENV === "production") {
|
|
44
|
+
if (_instanceof(enableInline, RegExp)) {
|
|
45
|
+
return enableInline.test(chunk);
|
|
46
|
+
} else {
|
|
47
|
+
return Boolean(enableInline);
|
|
48
|
+
}
|
|
49
|
+
} else {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
function getHeadTemplate(beforeEntryTemplate, context, pluginConfig) {
|
|
10
54
|
var callbacks = [
|
|
11
55
|
function(headTemplate2) {
|
|
12
56
|
var helmetData = ReactHelmet.renderStatic();
|
|
@@ -21,42 +65,133 @@ function getHeadTemplate(beforeEntryTemplate, context) {
|
|
|
21
65
|
}
|
|
22
66
|
return buildTemplate(headTemplate, callbacks);
|
|
23
67
|
function injectCss(headTemplate2) {
|
|
24
|
-
return
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
68
|
+
return _injectCss.apply(this, arguments);
|
|
69
|
+
}
|
|
70
|
+
function _injectCss() {
|
|
71
|
+
_injectCss = _async_to_generator(function(headTemplate2) {
|
|
72
|
+
var css;
|
|
73
|
+
function getCssChunks() {
|
|
74
|
+
return _getCssChunks.apply(this, arguments);
|
|
29
75
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
76
|
+
function _getCssChunks() {
|
|
77
|
+
_getCssChunks = _async_to_generator(function() {
|
|
78
|
+
var routeManifest, routerContext, routes, routeAssets, cssChunks, matches, enableInlineStyles, styles;
|
|
79
|
+
return _ts_generator(this, function(_state) {
|
|
80
|
+
switch (_state.label) {
|
|
81
|
+
case 0:
|
|
82
|
+
routeManifest = context.routeManifest, routerContext = context.routerContext, routes = context.routes;
|
|
83
|
+
if (!routeManifest || !routerContext || !routes) {
|
|
84
|
+
return [
|
|
85
|
+
2,
|
|
86
|
+
""
|
|
87
|
+
];
|
|
88
|
+
}
|
|
89
|
+
routeAssets = routeManifest.routeAssets;
|
|
90
|
+
cssChunks = [];
|
|
91
|
+
matches = matchRoutes(routes, routerContext.location, routerContext.basename);
|
|
92
|
+
matches === null || matches === void 0 ? void 0 : matches.forEach(function(match, index) {
|
|
93
|
+
if (!index) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
var routeId = match.route.id;
|
|
97
|
+
if (routeId) {
|
|
98
|
+
var routeManifest2 = routeAssets[routeId];
|
|
99
|
+
if (routeManifest2) {
|
|
100
|
+
var _cssChunks;
|
|
101
|
+
var _routeManifest_referenceCssAssets = routeManifest2.referenceCssAssets, referenceCssAssets = _routeManifest_referenceCssAssets === void 0 ? [] : _routeManifest_referenceCssAssets;
|
|
102
|
+
var _cssChunks1 = referenceCssAssets.filter(function(asset) {
|
|
103
|
+
return (asset === null || asset === void 0 ? void 0 : asset.endsWith(".css")) && !headTemplate2.includes(asset);
|
|
104
|
+
});
|
|
105
|
+
(_cssChunks = cssChunks).push.apply(_cssChunks, _to_consumable_array(_cssChunks1));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
enableInlineStyles = pluginConfig.enableInlineStyles;
|
|
110
|
+
return [
|
|
111
|
+
4,
|
|
112
|
+
Promise.all(cssChunks.map(function() {
|
|
113
|
+
var _ref2 = _async_to_generator(function(chunk) {
|
|
114
|
+
var link;
|
|
115
|
+
return _ts_generator(this, function(_state2) {
|
|
116
|
+
link = '<link href="'.concat(chunk, '" rel="stylesheet" />');
|
|
117
|
+
if (checkIsNode() && checkIsInline(chunk, enableInlineStyles)) {
|
|
118
|
+
return [
|
|
119
|
+
2,
|
|
120
|
+
readAsset(chunk).then(function(content) {
|
|
121
|
+
return "<style>".concat(content, "</style>");
|
|
122
|
+
}).catch(function(_) {
|
|
123
|
+
return link;
|
|
124
|
+
})
|
|
125
|
+
];
|
|
126
|
+
} else {
|
|
127
|
+
return [
|
|
128
|
+
2,
|
|
129
|
+
link
|
|
130
|
+
];
|
|
131
|
+
}
|
|
132
|
+
return [
|
|
133
|
+
2
|
|
134
|
+
];
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
return function(chunk) {
|
|
138
|
+
return _ref2.apply(this, arguments);
|
|
139
|
+
};
|
|
140
|
+
}()))
|
|
141
|
+
];
|
|
142
|
+
case 1:
|
|
143
|
+
styles = _state.sent();
|
|
144
|
+
return [
|
|
145
|
+
2,
|
|
146
|
+
"".concat(styles.join(""))
|
|
147
|
+
];
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
return _getCssChunks.apply(this, arguments);
|
|
152
|
+
}
|
|
153
|
+
return _ts_generator(this, function(_state) {
|
|
154
|
+
switch (_state.label) {
|
|
155
|
+
case 0:
|
|
156
|
+
return [
|
|
157
|
+
4,
|
|
158
|
+
getCssChunks()
|
|
159
|
+
];
|
|
160
|
+
case 1:
|
|
161
|
+
css = _state.sent();
|
|
162
|
+
return [
|
|
163
|
+
2,
|
|
164
|
+
safeReplace(headTemplate2, CHUNK_CSS_PLACEHOLDER, css)
|
|
165
|
+
];
|
|
48
166
|
}
|
|
49
167
|
});
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
});
|
|
53
|
-
return "".concat(styleLinks.join(""));
|
|
54
|
-
}
|
|
168
|
+
});
|
|
169
|
+
return _injectCss.apply(this, arguments);
|
|
55
170
|
}
|
|
56
171
|
}
|
|
57
|
-
function buildShellBeforeTemplate(beforeAppTemplate, context) {
|
|
58
|
-
|
|
59
|
-
|
|
172
|
+
function buildShellBeforeTemplate(beforeAppTemplate, context, pluginConfig) {
|
|
173
|
+
return _buildShellBeforeTemplate.apply(this, arguments);
|
|
174
|
+
}
|
|
175
|
+
function _buildShellBeforeTemplate() {
|
|
176
|
+
_buildShellBeforeTemplate = _async_to_generator(function(beforeAppTemplate, context, pluginConfig) {
|
|
177
|
+
var headTemplate;
|
|
178
|
+
return _ts_generator(this, function(_state) {
|
|
179
|
+
switch (_state.label) {
|
|
180
|
+
case 0:
|
|
181
|
+
return [
|
|
182
|
+
4,
|
|
183
|
+
getHeadTemplate(beforeAppTemplate, context, pluginConfig)
|
|
184
|
+
];
|
|
185
|
+
case 1:
|
|
186
|
+
headTemplate = _state.sent();
|
|
187
|
+
return [
|
|
188
|
+
2,
|
|
189
|
+
beforeAppTemplate.replace(HEAD_REG_EXP, headTemplate)
|
|
190
|
+
];
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
return _buildShellBeforeTemplate.apply(this, arguments);
|
|
60
195
|
}
|
|
61
196
|
export {
|
|
62
197
|
buildShellBeforeTemplate
|
|
@@ -6,7 +6,7 @@ import { time } from "@modern-js/runtime-utils/time";
|
|
|
6
6
|
import { SSRErrors, SSRTimings } from "../tracker";
|
|
7
7
|
import renderToPipe from "./renderToPipe";
|
|
8
8
|
var render = function(param) {
|
|
9
|
-
var App = param.App, context = param.context;
|
|
9
|
+
var App = param.App, context = param.context, config = param.config;
|
|
10
10
|
var ssrContext = context.ssrContext;
|
|
11
11
|
if (!ssrContext) {
|
|
12
12
|
throw new Error('The "ssrContext" must not be undefined, but received undefined');
|
|
@@ -21,7 +21,7 @@ var render = function(param) {
|
|
|
21
21
|
})
|
|
22
22
|
});
|
|
23
23
|
tracker = ssrContext.tracker;
|
|
24
|
-
pipe = renderToPipe(rootElement, context, {
|
|
24
|
+
pipe = renderToPipe(rootElement, context, config, {
|
|
25
25
|
onShellReady: function onShellReady() {
|
|
26
26
|
var cost = end();
|
|
27
27
|
tracker.trackTiming(SSRTimings.RENDER_SHELL, cost);
|
|
@@ -10,7 +10,7 @@ var ShellChunkStatus;
|
|
|
10
10
|
ShellChunkStatus2[ShellChunkStatus2["START"] = 0] = "START";
|
|
11
11
|
ShellChunkStatus2[ShellChunkStatus2["FINIESH"] = 1] = "FINIESH";
|
|
12
12
|
})(ShellChunkStatus || (ShellChunkStatus = {}));
|
|
13
|
-
function renderToPipe(rootElement, context, options) {
|
|
13
|
+
function renderToPipe(rootElement, context, pluginConfig, options) {
|
|
14
14
|
var shellChunkStatus = 0;
|
|
15
15
|
var ssrContext = context.ssrContext;
|
|
16
16
|
var chunkVec = [];
|
|
@@ -24,41 +24,45 @@ function renderToPipe(rootElement, context, options) {
|
|
|
24
24
|
var pipe = renderToPipeableStream(rootElement, _object_spread_props(_object_spread({}, options), {
|
|
25
25
|
nonce: ssrContext === null || ssrContext === void 0 ? void 0 : ssrContext.nonce,
|
|
26
26
|
onShellReady: function onShellReady() {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
27
|
+
getTemplates(context, RenderLevel.SERVER_RENDER, pluginConfig).then(function(param) {
|
|
28
|
+
var shellAfter = param.shellAfter, shellBefore = param.shellBefore;
|
|
29
|
+
var _options_onShellReady;
|
|
30
|
+
options === null || options === void 0 ? void 0 : (_options_onShellReady = options.onShellReady) === null || _options_onShellReady === void 0 ? void 0 : _options_onShellReady.call(options);
|
|
31
|
+
var injectableTransform = new Transform({
|
|
32
|
+
transform: function transform(chunk, _encoding, callback) {
|
|
33
|
+
try {
|
|
34
|
+
if (shellChunkStatus !== 1) {
|
|
35
|
+
chunkVec.push(chunk.toString());
|
|
36
|
+
var concatedChunk = chunkVec.join("");
|
|
37
|
+
if (concatedChunk.endsWith(ESCAPED_SHELL_STREAM_END_MARK)) {
|
|
38
|
+
concatedChunk = concatedChunk.replace(ESCAPED_SHELL_STREAM_END_MARK, "");
|
|
39
|
+
shellChunkStatus = 1;
|
|
40
|
+
this.push("".concat(shellBefore).concat(concatedChunk).concat(shellAfter));
|
|
41
|
+
}
|
|
42
|
+
} else {
|
|
43
|
+
this.push(chunk);
|
|
44
|
+
}
|
|
45
|
+
callback();
|
|
46
|
+
} catch (e) {
|
|
47
|
+
if (_instanceof(e, Error)) {
|
|
48
|
+
callback(e);
|
|
49
|
+
} else {
|
|
50
|
+
callback(new Error("Received unkown error when streaming"));
|
|
40
51
|
}
|
|
41
|
-
} else {
|
|
42
|
-
this.push(chunk);
|
|
43
|
-
}
|
|
44
|
-
callback();
|
|
45
|
-
} catch (e) {
|
|
46
|
-
if (_instanceof(e, Error)) {
|
|
47
|
-
callback(e);
|
|
48
|
-
} else {
|
|
49
|
-
callback(new Error("Received unkown error when streaming"));
|
|
50
52
|
}
|
|
51
53
|
}
|
|
52
|
-
}
|
|
54
|
+
});
|
|
55
|
+
resolve(pipe(injectableTransform).pipe(stream));
|
|
53
56
|
});
|
|
54
|
-
resolve(pipe(injectableTransform).pipe(stream));
|
|
55
57
|
},
|
|
56
58
|
onShellError: function onShellError(error) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
getTemplates(context, RenderLevel.CLIENT_RENDER, pluginConfig).then(function(param) {
|
|
60
|
+
var shellAfter = param.shellAfter, shellBefore = param.shellBefore;
|
|
61
|
+
var _options_onShellError;
|
|
62
|
+
var fallbackHtml = "".concat(shellBefore).concat(shellAfter);
|
|
63
|
+
resolve(fallbackHtml);
|
|
64
|
+
options === null || options === void 0 ? void 0 : (_options_onShellError = options.onShellError) === null || _options_onShellError === void 0 ? void 0 : _options_onShellError.call(options, error);
|
|
65
|
+
});
|
|
62
66
|
}
|
|
63
67
|
})).pipe;
|
|
64
68
|
});
|
|
@@ -11,13 +11,13 @@ var ShellChunkStatus;
|
|
|
11
11
|
ShellChunkStatus2[ShellChunkStatus2["START"] = 0] = "START";
|
|
12
12
|
ShellChunkStatus2[ShellChunkStatus2["FINIESH"] = 1] = "FINIESH";
|
|
13
13
|
})(ShellChunkStatus || (ShellChunkStatus = {}));
|
|
14
|
-
function renderToPipe(rootElement, context, options) {
|
|
14
|
+
function renderToPipe(rootElement, context, pluginConfig, options) {
|
|
15
15
|
var shellChunkStatus = 0;
|
|
16
16
|
var chunkVec = [];
|
|
17
17
|
var ssrContext = context.ssrContext;
|
|
18
18
|
var forUserPipe = function() {
|
|
19
19
|
var _ref = _async_to_generator(function() {
|
|
20
|
-
var renderToReadableStream,
|
|
20
|
+
var renderToReadableStream, _ref2, shellAfter, shellBefore, readableOriginal, reader, injectableStream, err, _ref1, shellAfter1, shellBefore1, fallbackHtml;
|
|
21
21
|
return _ts_generator(this, function(_state) {
|
|
22
22
|
switch (_state.label) {
|
|
23
23
|
case 0:
|
|
@@ -25,14 +25,19 @@ function renderToPipe(rootElement, context, options) {
|
|
|
25
25
|
renderToReadableStream = require("react-dom/server").renderToReadableStream;
|
|
26
26
|
} catch (e) {
|
|
27
27
|
}
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
return [
|
|
29
|
+
4,
|
|
30
|
+
getTemplates(context, RenderLevel.SERVER_RENDER, pluginConfig)
|
|
31
|
+
];
|
|
30
32
|
case 1:
|
|
33
|
+
_ref2 = _state.sent(), shellAfter = _ref2.shellAfter, shellBefore = _ref2.shellBefore;
|
|
34
|
+
_state.label = 2;
|
|
35
|
+
case 2:
|
|
31
36
|
_state.trys.push([
|
|
32
|
-
|
|
33
|
-
|
|
37
|
+
2,
|
|
38
|
+
4,
|
|
34
39
|
,
|
|
35
|
-
|
|
40
|
+
6
|
|
36
41
|
]);
|
|
37
42
|
return [
|
|
38
43
|
4,
|
|
@@ -44,7 +49,7 @@ function renderToPipe(rootElement, context, options) {
|
|
|
44
49
|
}
|
|
45
50
|
}))
|
|
46
51
|
];
|
|
47
|
-
case
|
|
52
|
+
case 3:
|
|
48
53
|
readableOriginal = _state.sent();
|
|
49
54
|
reader = readableOriginal.getReader();
|
|
50
55
|
injectableStream = new ReadableStream({
|
|
@@ -54,7 +59,7 @@ function renderToPipe(rootElement, context, options) {
|
|
|
54
59
|
}
|
|
55
60
|
function _push() {
|
|
56
61
|
_push = _async_to_generator(function() {
|
|
57
|
-
var
|
|
62
|
+
var _ref3, done, value, chunk, concatedChunk;
|
|
58
63
|
return _ts_generator(this, function(_state2) {
|
|
59
64
|
switch (_state2.label) {
|
|
60
65
|
case 0:
|
|
@@ -63,7 +68,7 @@ function renderToPipe(rootElement, context, options) {
|
|
|
63
68
|
reader.read()
|
|
64
69
|
];
|
|
65
70
|
case 1:
|
|
66
|
-
|
|
71
|
+
_ref3 = _state2.sent(), done = _ref3.done, value = _ref3.value;
|
|
67
72
|
if (done) {
|
|
68
73
|
controller.close();
|
|
69
74
|
return [
|
|
@@ -98,16 +103,21 @@ function renderToPipe(rootElement, context, options) {
|
|
|
98
103
|
2,
|
|
99
104
|
injectableStream
|
|
100
105
|
];
|
|
101
|
-
case
|
|
106
|
+
case 4:
|
|
102
107
|
err = _state.sent();
|
|
103
108
|
ssrContext === null || ssrContext === void 0 ? void 0 : ssrContext.tracker.trackError(SSRErrors.RENDER_SHELL, err);
|
|
104
|
-
|
|
109
|
+
return [
|
|
110
|
+
4,
|
|
111
|
+
getTemplates(context, RenderLevel.CLIENT_RENDER, pluginConfig)
|
|
112
|
+
];
|
|
113
|
+
case 5:
|
|
114
|
+
_ref1 = _state.sent(), shellAfter1 = _ref1.shellAfter, shellBefore1 = _ref1.shellBefore;
|
|
105
115
|
fallbackHtml = "".concat(shellBefore1).concat(shellAfter1);
|
|
106
116
|
return [
|
|
107
117
|
2,
|
|
108
118
|
fallbackHtml
|
|
109
119
|
];
|
|
110
|
-
case
|
|
120
|
+
case 6:
|
|
111
121
|
return [
|
|
112
122
|
2
|
|
113
123
|
];
|
|
@@ -1,20 +1,46 @@
|
|
|
1
|
+
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
|
|
1
2
|
import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
|
|
3
|
+
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
|
|
2
4
|
import { buildShellAfterTemplate } from "./buildTemplate.after";
|
|
3
5
|
import { buildShellBeforeTemplate } from "./bulidTemplate.before";
|
|
4
6
|
var HTML_SEPARATOR = "<!--<?- html ?>-->";
|
|
5
|
-
var getTemplates = function(
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
var getTemplates = function() {
|
|
8
|
+
var _ref = _async_to_generator(function(context, renderLevel, pluginConfig) {
|
|
9
|
+
var ssrContext, _ref2, tmp, beforeAppTemplate, tmp1, afterAppHtmlTemplate, builtBeforeTemplate, builtAfterTemplate;
|
|
10
|
+
return _ts_generator(this, function(_state) {
|
|
11
|
+
switch (_state.label) {
|
|
12
|
+
case 0:
|
|
13
|
+
ssrContext = context.ssrContext;
|
|
14
|
+
_ref2 = _sliced_to_array(ssrContext.template.split(HTML_SEPARATOR) || [], 2), tmp = _ref2[0], beforeAppTemplate = tmp === void 0 ? "" : tmp, tmp1 = _ref2[1], afterAppHtmlTemplate = tmp1 === void 0 ? "" : tmp1;
|
|
15
|
+
return [
|
|
16
|
+
4,
|
|
17
|
+
buildShellBeforeTemplate(beforeAppTemplate, context, pluginConfig)
|
|
18
|
+
];
|
|
19
|
+
case 1:
|
|
20
|
+
builtBeforeTemplate = _state.sent();
|
|
21
|
+
return [
|
|
22
|
+
4,
|
|
23
|
+
buildShellAfterTemplate(afterAppHtmlTemplate, {
|
|
24
|
+
context,
|
|
25
|
+
renderLevel
|
|
26
|
+
})
|
|
27
|
+
];
|
|
28
|
+
case 2:
|
|
29
|
+
builtAfterTemplate = _state.sent();
|
|
30
|
+
return [
|
|
31
|
+
2,
|
|
32
|
+
{
|
|
33
|
+
shellBefore: builtBeforeTemplate,
|
|
34
|
+
shellAfter: builtAfterTemplate
|
|
35
|
+
}
|
|
36
|
+
];
|
|
37
|
+
}
|
|
38
|
+
});
|
|
12
39
|
});
|
|
13
|
-
return {
|
|
14
|
-
|
|
15
|
-
shellAfter: builtAfterTemplate
|
|
40
|
+
return function getTemplates2(context, renderLevel, pluginConfig) {
|
|
41
|
+
return _ref.apply(this, arguments);
|
|
16
42
|
};
|
|
17
|
-
};
|
|
43
|
+
}();
|
|
18
44
|
export {
|
|
19
45
|
getTemplates
|
|
20
46
|
};
|
|
@@ -54,7 +54,6 @@ var Entry = /* @__PURE__ */ function() {
|
|
|
54
54
|
_class_call_check(this, Entry2);
|
|
55
55
|
_define_property(this, "entryName", void 0);
|
|
56
56
|
_define_property(this, "result", void 0);
|
|
57
|
-
_define_property(this, "metrics", void 0);
|
|
58
57
|
_define_property(this, "tracker", void 0);
|
|
59
58
|
_define_property(this, "template", void 0);
|
|
60
59
|
_define_property(this, "App", void 0);
|
|
@@ -70,7 +69,6 @@ var Entry = /* @__PURE__ */ function() {
|
|
|
70
69
|
this.pluginConfig = config;
|
|
71
70
|
this.routeManifest = ctx.routeManifest;
|
|
72
71
|
this.tracker = ctx.tracker;
|
|
73
|
-
this.metrics = ctx.metrics;
|
|
74
72
|
this.htmlModifiers = ctx.htmlModifiers;
|
|
75
73
|
this.nonce = nonce;
|
|
76
74
|
this.result = {
|
|
@@ -6,7 +6,7 @@ import { _ as _instanceof } from "@swc/helpers/_/_instanceof";
|
|
|
6
6
|
import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
|
|
7
7
|
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
|
|
8
8
|
import { ChunkExtractor } from "@loadable/server";
|
|
9
|
-
import { attributesToString } from "../utils";
|
|
9
|
+
import { attributesToString, checkIsNode } from "../utils";
|
|
10
10
|
var extname = function(uri) {
|
|
11
11
|
if (typeof uri !== "string" || !uri.includes(".")) {
|
|
12
12
|
return "";
|
|
@@ -61,10 +61,6 @@ var readAsset = function() {
|
|
|
61
61
|
return _ref.apply(this, arguments);
|
|
62
62
|
};
|
|
63
63
|
}();
|
|
64
|
-
var checkIsNode = function() {
|
|
65
|
-
var _process_release;
|
|
66
|
-
return typeof process !== "undefined" && ((_process_release = process.release) === null || _process_release === void 0 ? void 0 : _process_release.name) === "node";
|
|
67
|
-
};
|
|
68
64
|
var LoadableCollector = /* @__PURE__ */ function() {
|
|
69
65
|
"use strict";
|
|
70
66
|
function LoadableCollector2(options) {
|
|
@@ -168,7 +164,8 @@ var LoadableCollector = /* @__PURE__ */ function() {
|
|
|
168
164
|
_config_scriptLoading = config.scriptLoading, scriptLoading = _config_scriptLoading === void 0 ? "defer" : _config_scriptLoading, enableInlineScripts = config.enableInlineScripts;
|
|
169
165
|
scriptLoadingAtr = {
|
|
170
166
|
defer: scriptLoading === "defer" ? true : void 0,
|
|
171
|
-
type: scriptLoading === "module" ? "module" : void 0
|
|
167
|
+
type: scriptLoading === "module" ? "module" : void 0,
|
|
168
|
+
async: scriptLoading === "async" ? true : void 0
|
|
172
169
|
};
|
|
173
170
|
attributes = attributesToString(_this.generateAttributes(_object_spread({
|
|
174
171
|
nonce
|
|
@@ -184,7 +181,7 @@ var LoadableCollector = /* @__PURE__ */ function() {
|
|
|
184
181
|
var script;
|
|
185
182
|
return _ts_generator(this, function(_state2) {
|
|
186
183
|
script = "<script".concat(attributes, ' src="').concat(chunk.url, '"></script>');
|
|
187
|
-
if (checkIsInline(chunk, enableInlineScripts)
|
|
184
|
+
if (checkIsNode() && checkIsInline(chunk, enableInlineScripts)) {
|
|
188
185
|
return [
|
|
189
186
|
2,
|
|
190
187
|
readAsset(chunk).then(function(content) {
|
|
@@ -244,7 +241,7 @@ var LoadableCollector = /* @__PURE__ */ function() {
|
|
|
244
241
|
var link;
|
|
245
242
|
return _ts_generator(this, function(_state2) {
|
|
246
243
|
link = "<link".concat(atrributes, ' href="').concat(chunk.url, '" rel="stylesheet" />');
|
|
247
|
-
if (checkIsInline(chunk, enableInlineStyles)
|
|
244
|
+
if (checkIsNode() && checkIsInline(chunk, enableInlineStyles)) {
|
|
248
245
|
return [
|
|
249
246
|
2,
|
|
250
247
|
readAsset(chunk).then(function(content) {
|
|
@@ -17,61 +17,49 @@ var SSRErrors;
|
|
|
17
17
|
var _obj;
|
|
18
18
|
var errors = (_obj = {}, _define_property(_obj, 0, {
|
|
19
19
|
reporter: "App Prerender",
|
|
20
|
-
logger: "App Prerender"
|
|
21
|
-
metrics: "app.prerender.error"
|
|
20
|
+
logger: "App Prerender"
|
|
22
21
|
}), _define_property(_obj, 1, {
|
|
23
22
|
reporter: "App run useLoader",
|
|
24
|
-
logger: "App run useLoader"
|
|
25
|
-
metrics: "app.useloader.error"
|
|
23
|
+
logger: "App run useLoader"
|
|
26
24
|
}), _define_property(_obj, 2, {
|
|
27
25
|
reporter: "App Render To HTML",
|
|
28
|
-
logger: "App Render To HTML"
|
|
29
|
-
metrics: "app.render.html.error"
|
|
26
|
+
logger: "App Render To HTML"
|
|
30
27
|
}), _define_property(_obj, 3, {
|
|
31
28
|
reporter: "App Render To Streaming",
|
|
32
|
-
logger: "An error occurs during streaming SSR"
|
|
33
|
-
|
|
34
|
-
}), _define_property(_obj, 4, {
|
|
35
|
-
metrics: "app.render.streaming.shell.error"
|
|
36
|
-
}), _obj);
|
|
29
|
+
logger: "An error occurs during streaming SSR"
|
|
30
|
+
}), _define_property(_obj, 4, {}), _obj);
|
|
37
31
|
var _obj1;
|
|
38
32
|
var timings = (_obj1 = {}, _define_property(_obj1, 0, {
|
|
39
33
|
reporter: "ssr-prerender",
|
|
40
34
|
serverTiming: "ssr-prerender",
|
|
41
|
-
metrics: "app.prerender.cost",
|
|
42
35
|
logger: "App Prerender cost = %d ms"
|
|
43
36
|
}), _define_property(_obj1, 1, {
|
|
44
37
|
reporter: "ssr-render-html",
|
|
45
38
|
serverTiming: "ssr-render-html",
|
|
46
|
-
metrics: "app.render.html.cost",
|
|
47
39
|
logger: "App Render To HTML cost = %d ms"
|
|
48
40
|
}), _define_property(_obj1, 2, {
|
|
49
41
|
reporter: "ssr-render-shell",
|
|
50
|
-
metrics: "app.render.shell.cost",
|
|
51
42
|
logger: "App Render To Shell cost = %d ms"
|
|
52
43
|
}), _define_property(_obj1, 3, {
|
|
53
44
|
reporter: "use-loader",
|
|
54
45
|
serverTiming: "use-loader",
|
|
55
|
-
metrics: "app.useloader.cost",
|
|
56
46
|
logger: "App run useLoader cost = %d ms"
|
|
57
47
|
}), _obj1);
|
|
58
48
|
function createSSRTracker(param) {
|
|
59
|
-
var reporter = param.reporter, serverTiming = param.serverTiming,
|
|
49
|
+
var reporter = param.reporter, serverTiming = param.serverTiming, logger = param.logger;
|
|
60
50
|
var tracker = {
|
|
61
51
|
get sessionId() {
|
|
62
52
|
return reporter.sessionId;
|
|
63
53
|
},
|
|
64
54
|
trackError: function trackError(key, e) {
|
|
65
|
-
var _errors_key = errors[key], reporterContent = _errors_key.reporter,
|
|
55
|
+
var _errors_key = errors[key], reporterContent = _errors_key.reporter, loggerContent = _errors_key.logger;
|
|
66
56
|
reporterContent && reporter.reportError("SSR Error - ".concat(reporterContent), e);
|
|
67
|
-
metricsContent && metrics.emitCounter(metricsContent, 1);
|
|
68
57
|
loggerContent && logger.error(loggerContent, e);
|
|
69
58
|
},
|
|
70
59
|
trackTiming: function trackTiming(key, cost) {
|
|
71
|
-
var _timings_key = timings[key], reporterName = _timings_key.reporter, serverTimingName = _timings_key.serverTiming, loggerName = _timings_key.logger
|
|
60
|
+
var _timings_key = timings[key], reporterName = _timings_key.reporter, serverTimingName = _timings_key.serverTiming, loggerName = _timings_key.logger;
|
|
72
61
|
reporterName && reporter.reportTiming(reporterName, cost);
|
|
73
62
|
serverTimingName && serverTiming.addServeTiming(serverTimingName, cost);
|
|
74
|
-
metricsName && metrics.emitTimer(metricsName, cost);
|
|
75
63
|
loggerName && logger.debug(loggerName, cost);
|
|
76
64
|
}
|
|
77
65
|
};
|
|
@@ -10,7 +10,12 @@ function safeReplace(source, searchValue, replaceValue) {
|
|
|
10
10
|
return replaceValue;
|
|
11
11
|
});
|
|
12
12
|
}
|
|
13
|
+
function checkIsNode() {
|
|
14
|
+
var _process_release;
|
|
15
|
+
return typeof process !== "undefined" && ((_process_release = process.release) === null || _process_release === void 0 ? void 0 : _process_release.name) === "node";
|
|
16
|
+
}
|
|
13
17
|
export {
|
|
14
18
|
attributesToString,
|
|
19
|
+
checkIsNode,
|
|
15
20
|
safeReplace
|
|
16
21
|
};
|