@bleedingdev/modern-js-runtime 3.9.0-ultramodern.4 → 3.9.0-ultramodern.5
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/ssr/index.js +2 -74
- package/dist/cjs/core/context/index.js +4 -43
- package/dist/cjs/core/context/public.js +4 -8
- package/dist/cjs/core/context/runtime.js +17 -6
- package/dist/cjs/core/react/wrapper.js +22 -65
- package/dist/cjs/core/server/helmet.js +5 -4
- package/dist/cjs/core/server/requestResponse.js +4 -4
- package/dist/cjs/core/server/routerCleanup.js +2 -2
- package/dist/cjs/core/server/shared.js +171 -4
- package/dist/cjs/core/server/stream/afterTemplate.js +21 -16
- package/dist/cjs/core/server/stream/beforeTemplate.js +34 -25
- package/dist/cjs/core/server/stream/beforeTemplate.worker.js +28 -21
- package/dist/cjs/core/server/stream/createReadableStream.js +208 -123
- package/dist/cjs/core/server/stream/createReadableStream.worker.js +159 -90
- package/dist/cjs/core/server/stream/deferredScript.js +3 -3
- package/dist/cjs/core/server/stream/shared.js +2 -2
- package/dist/cjs/core/server/string/index.js +100 -64
- package/dist/cjs/core/server/string/loadable.js +34 -19
- package/dist/cjs/core/server/string/ssrData.js +5 -12
- package/dist/cjs/core/server/utils.js +1 -2
- package/dist/cjs/exports/head.js +7 -14
- package/dist/cjs/router/runtime/PrefetchLink.js +67 -123
- package/dist/cjs/router/runtime/hooks.js +13 -2
- package/dist/cjs/router/runtime/internal.js +7 -45
- package/dist/cjs/router/runtime/plugin.js +2 -8
- package/dist/cjs/router/runtime/plugin.node.js +2 -30
- package/dist/cjs/router/runtime/redirect.js +1 -1
- package/dist/esm/cli/ssr/index.mjs +3 -72
- package/dist/esm/core/context/index.mjs +2 -5
- package/dist/esm/core/context/public.mjs +1 -6
- package/dist/esm/core/context/runtime.mjs +12 -4
- package/dist/esm/core/react/wrapper.mjs +21 -67
- package/dist/esm/core/server/helmet.mjs +5 -4
- package/dist/esm/core/server/requestResponse.mjs +3 -3
- package/dist/esm/core/server/routerCleanup.mjs +1 -1
- package/dist/esm/core/server/shared.mjs +153 -1
- package/dist/esm/core/server/stream/afterTemplate.mjs +23 -18
- package/dist/esm/core/server/stream/beforeTemplate.mjs +37 -28
- package/dist/esm/core/server/stream/beforeTemplate.worker.mjs +31 -24
- package/dist/esm/core/server/stream/createReadableStream.mjs +207 -122
- package/dist/esm/core/server/stream/createReadableStream.worker.mjs +149 -90
- package/dist/esm/core/server/stream/deferredScript.mjs +3 -3
- package/dist/esm/core/server/stream/shared.mjs +2 -2
- package/dist/esm/core/server/string/index.mjs +104 -68
- package/dist/esm/core/server/string/loadable.mjs +34 -19
- package/dist/esm/core/server/string/ssrData.mjs +5 -12
- package/dist/esm/core/server/utils.mjs +1 -2
- package/dist/esm/exports/head.mjs +7 -14
- package/dist/esm/router/runtime/PrefetchLink.mjs +67 -123
- package/dist/esm/router/runtime/hooks.mjs +9 -1
- package/dist/esm/router/runtime/internal.mjs +2 -33
- package/dist/esm/router/runtime/plugin.mjs +1 -7
- package/dist/esm/router/runtime/plugin.node.mjs +1 -29
- package/dist/esm/router/runtime/redirect.mjs +1 -1
- package/dist/esm-node/cli/ssr/index.mjs +3 -72
- package/dist/esm-node/core/context/index.mjs +2 -5
- package/dist/esm-node/core/context/public.mjs +1 -6
- package/dist/esm-node/core/context/runtime.mjs +12 -4
- package/dist/esm-node/core/react/wrapper.mjs +21 -67
- package/dist/esm-node/core/server/helmet.mjs +5 -4
- package/dist/esm-node/core/server/requestResponse.mjs +3 -3
- package/dist/esm-node/core/server/routerCleanup.mjs +1 -1
- package/dist/esm-node/core/server/shared.mjs +153 -1
- package/dist/esm-node/core/server/stream/afterTemplate.mjs +23 -18
- package/dist/esm-node/core/server/stream/beforeTemplate.mjs +37 -28
- package/dist/esm-node/core/server/stream/beforeTemplate.worker.mjs +31 -24
- package/dist/esm-node/core/server/stream/createReadableStream.mjs +207 -122
- package/dist/esm-node/core/server/stream/createReadableStream.worker.mjs +149 -90
- package/dist/esm-node/core/server/stream/deferredScript.mjs +3 -3
- package/dist/esm-node/core/server/stream/shared.mjs +2 -2
- package/dist/esm-node/core/server/string/index.mjs +104 -68
- package/dist/esm-node/core/server/string/loadable.mjs +34 -19
- package/dist/esm-node/core/server/string/ssrData.mjs +5 -12
- package/dist/esm-node/core/server/utils.mjs +1 -2
- package/dist/esm-node/exports/head.mjs +7 -14
- package/dist/esm-node/router/runtime/PrefetchLink.mjs +67 -123
- package/dist/esm-node/router/runtime/hooks.mjs +9 -1
- package/dist/esm-node/router/runtime/internal.mjs +2 -33
- package/dist/esm-node/router/runtime/plugin.mjs +1 -7
- package/dist/esm-node/router/runtime/plugin.node.mjs +1 -29
- package/dist/esm-node/router/runtime/redirect.mjs +1 -1
- package/dist/types/cli/ssr/index.d.ts +0 -3
- package/dist/types/core/context/index.d.ts +4 -6
- package/dist/types/core/context/public.d.ts +1 -23
- package/dist/types/core/context/runtime.d.ts +26 -2
- package/dist/types/core/react/wrapper.d.ts +6 -0
- package/dist/types/core/server/helmet.d.ts +4 -5
- package/dist/types/core/server/shared.d.ts +23 -0
- package/dist/types/core/server/stream/afterTemplate.d.ts +2 -1
- package/dist/types/core/server/stream/beforeTemplate.d.ts +4 -1
- package/dist/types/core/server/stream/beforeTemplate.worker.d.ts +4 -1
- package/dist/types/core/server/stream/shared.d.ts +1 -1
- package/dist/types/core/server/string/loadable.d.ts +6 -3
- package/dist/types/core/server/string/ssrData.d.ts +2 -1
- package/dist/types/core/server/string/types.d.ts +1 -5
- package/dist/types/exports/head.d.ts +2 -2
- package/dist/types/router/runtime/PrefetchLink.d.ts +27 -2
- package/dist/types/router/runtime/hooks.d.ts +19 -2
- package/dist/types/router/runtime/internal.d.ts +4 -21
- package/dist/types/router/runtime/types.d.ts +2 -43
- package/package.json +9 -38
- package/rstest.config.mts +32 -2
- package/dist/cjs/boundary-debugger/index.js +0 -317
- package/dist/cjs/core/context/extensions.js +0 -74
- package/dist/cjs/core/context/helmetContext.js +0 -54
- package/dist/cjs/core/server/federatedCss.js +0 -58
- package/dist/cjs/core/server/scriptOrder.js +0 -140
- package/dist/cjs/module-federation/consume-surface.js +0 -199
- package/dist/cjs/module-federation/distributed-ssr.js +0 -135
- package/dist/cjs/module-federation/index.js +0 -316
- package/dist/cjs/module-federation/last-known-good.js +0 -157
- package/dist/cjs/module-federation/manifest-recovery-runtime-plugin.js +0 -129
- package/dist/cjs/module-federation/surface-resolution-types.js +0 -61
- package/dist/cjs/router/runtime/lifecycle.js +0 -167
- package/dist/cjs/router/runtime/provider.js +0 -153
- package/dist/esm/boundary-debugger/index.mjs +0 -277
- package/dist/esm/core/context/extensions.mjs +0 -33
- package/dist/esm/core/context/helmetContext.mjs +0 -13
- package/dist/esm/core/server/federatedCss.mjs +0 -20
- package/dist/esm/core/server/scriptOrder.mjs +0 -90
- package/dist/esm/module-federation/consume-surface.mjs +0 -158
- package/dist/esm/module-federation/distributed-ssr.mjs +0 -82
- package/dist/esm/module-federation/index.mjs +0 -115
- package/dist/esm/module-federation/last-known-good.mjs +0 -113
- package/dist/esm/module-federation/manifest-recovery-runtime-plugin.mjs +0 -89
- package/dist/esm/module-federation/surface-resolution-types.mjs +0 -8
- package/dist/esm/router/runtime/lifecycle.mjs +0 -105
- package/dist/esm/router/runtime/provider.mjs +0 -100
- package/dist/esm-node/boundary-debugger/index.mjs +0 -278
- package/dist/esm-node/core/context/extensions.mjs +0 -34
- package/dist/esm-node/core/context/helmetContext.mjs +0 -14
- package/dist/esm-node/core/server/federatedCss.mjs +0 -21
- package/dist/esm-node/core/server/scriptOrder.mjs +0 -91
- package/dist/esm-node/module-federation/consume-surface.mjs +0 -159
- package/dist/esm-node/module-federation/distributed-ssr.mjs +0 -83
- package/dist/esm-node/module-federation/index.mjs +0 -116
- package/dist/esm-node/module-federation/last-known-good.mjs +0 -114
- package/dist/esm-node/module-federation/manifest-recovery-runtime-plugin.mjs +0 -90
- package/dist/esm-node/module-federation/surface-resolution-types.mjs +0 -9
- package/dist/esm-node/router/runtime/lifecycle.mjs +0 -106
- package/dist/esm-node/router/runtime/provider.mjs +0 -101
- package/dist/types/boundary-debugger/index.d.ts +0 -28
- package/dist/types/core/context/extensions.d.ts +0 -35
- package/dist/types/core/context/helmetContext.d.ts +0 -10
- package/dist/types/core/server/federatedCss.d.ts +0 -5
- package/dist/types/core/server/scriptOrder.d.ts +0 -25
- package/dist/types/module-federation/consume-surface.d.ts +0 -104
- package/dist/types/module-federation/distributed-ssr.d.ts +0 -61
- package/dist/types/module-federation/index.d.ts +0 -71
- package/dist/types/module-federation/last-known-good.d.ts +0 -52
- package/dist/types/module-federation/manifest-recovery-runtime-plugin.d.ts +0 -25
- package/dist/types/module-federation/surface-resolution-types.d.ts +0 -23
- package/dist/types/router/runtime/lifecycle.d.ts +0 -27
- package/dist/types/router/runtime/provider.d.ts +0 -78
|
@@ -30,150 +30,235 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
30
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
31
31
|
createReadableStreamFromElement: ()=>createReadableStreamFromElement
|
|
32
32
|
});
|
|
33
|
-
const node_namespaceObject = require("@modern-js/runtime-
|
|
34
|
-
const runtime_utils_node_namespaceObject = require("@modern-js/runtime-utils/node");
|
|
33
|
+
const node_namespaceObject = require("@modern-js/runtime-utils/node");
|
|
35
34
|
const constants_namespaceObject = require("@modern-js/utils/universal/constants");
|
|
36
35
|
const external_stream_namespaceObject = require("stream");
|
|
37
36
|
const external_common_js_namespaceObject = require("../../../common.js");
|
|
38
37
|
const external_constants_js_namespaceObject = require("../../constants.js");
|
|
39
38
|
const index_js_namespaceObject = require("../../context/index.js");
|
|
40
39
|
const monitors_index_js_namespaceObject = require("../../context/monitors/index.js");
|
|
40
|
+
const wrapper_js_namespaceObject = require("../../react/wrapper.js");
|
|
41
41
|
const external_helmet_js_namespaceObject = require("../helmet.js");
|
|
42
|
+
const external_shared_js_namespaceObject = require("../shared.js");
|
|
42
43
|
const external_deferredScript_js_namespaceObject = require("./deferredScript.js");
|
|
43
|
-
const
|
|
44
|
+
const external_shared_js_namespaceObject_1 = require("./shared.js");
|
|
44
45
|
const external_template_js_namespaceObject = require("./template.js");
|
|
45
|
-
const defaultExtender = {
|
|
46
|
-
modifyRootElement: (rootElement)=>rootElement,
|
|
47
|
-
getStyleTags: ()=>'',
|
|
48
|
-
processStream: (stream)=>stream
|
|
49
|
-
};
|
|
50
46
|
const createReadableStreamFromElement = async (request, rootElement, options)=>{
|
|
51
47
|
const { renderToPipeableStream } = await import("react-dom/server");
|
|
52
|
-
const { runtimeContext, htmlTemplate, config, ssrConfig, entryName,
|
|
53
|
-
|
|
54
|
-
|
|
48
|
+
const { runtimeContext, htmlTemplate, config, ssrConfig, entryName, resource } = options;
|
|
49
|
+
const hooks = (0, index_js_namespaceObject.getGlobalInternalRuntimeContext)().hooks;
|
|
50
|
+
const isRsc = true === (0, index_js_namespaceObject.getGlobalEnableRsc)();
|
|
51
|
+
const extenders = hooks.extendStreamSSR.call({
|
|
52
|
+
runtimeContext,
|
|
53
|
+
request,
|
|
54
|
+
resource,
|
|
55
|
+
config,
|
|
56
|
+
platform: 'node',
|
|
57
|
+
mode: 'stream',
|
|
58
|
+
isRsc,
|
|
59
|
+
terminalMarker: external_common_js_namespaceObject.ESCAPED_SHELL_STREAM_END_MARK
|
|
60
|
+
}) || [];
|
|
61
|
+
const lifecycle = (0, external_shared_js_namespaceObject.createSSRRenderLifecycle)(extenders);
|
|
62
|
+
const reportError = (0, external_shared_js_namespaceObject.createSSRStreamErrorReporter)(options.onError);
|
|
55
63
|
const forceStream2String = Boolean(process.env.MODERN_JS_STREAM_TO_STRING);
|
|
56
|
-
const { onReady } = (0,
|
|
57
|
-
|
|
58
|
-
const hooks = internalRuntimeContext.hooks;
|
|
59
|
-
const extenders = hooks.extendStreamSSR.call() || [];
|
|
60
|
-
if (0 === extenders.length) extenders.push(defaultExtender);
|
|
61
|
-
extenders.forEach((extender)=>{
|
|
62
|
-
if (extender.init) extender.init({
|
|
63
|
-
rootElement,
|
|
64
|
-
forceStream2String
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
let processedRootElement = rootElement;
|
|
68
|
-
extenders.forEach((extender)=>{
|
|
69
|
-
if (extender.modifyRootElement) processedRootElement = extender.modifyRootElement(processedRootElement);
|
|
70
|
-
});
|
|
71
|
-
const chunkVec = [];
|
|
64
|
+
const { onReady } = (0, external_shared_js_namespaceObject_1.resolveStreamingMode)(request, forceStream2String);
|
|
65
|
+
let renderLevel = external_constants_js_namespaceObject.RenderLevel.SERVER_RENDER;
|
|
72
66
|
let hasStartedPipe = false;
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
67
|
+
let failed = false;
|
|
68
|
+
let reactStream;
|
|
69
|
+
const ownedStreams = new Set();
|
|
70
|
+
const streamCompletions = [];
|
|
71
|
+
let teardown;
|
|
72
|
+
return new Promise((resolve, reject)=>{
|
|
73
|
+
const destroyOwnedStreams = (reason)=>{
|
|
74
|
+
if (teardown) return teardown;
|
|
75
|
+
const error = void 0 === reason ? void 0 : reason instanceof Error ? reason : new Error(String(reason));
|
|
76
|
+
for (const stream of ownedStreams){
|
|
77
|
+
const destroyable = stream;
|
|
78
|
+
destroyable.destroy?.(error);
|
|
79
|
+
}
|
|
80
|
+
teardown = Promise.all(streamCompletions).then((errors)=>{
|
|
81
|
+
const cleanupError = errors.find((value)=>void 0 !== value && value !== error && 'ERR_STREAM_PREMATURE_CLOSE' !== value.code);
|
|
82
|
+
if (cleanupError) throw cleanupError;
|
|
83
|
+
});
|
|
84
|
+
return teardown;
|
|
85
|
+
};
|
|
86
|
+
const abortReact = (reason)=>reactStream?.abort(reason);
|
|
87
|
+
const fail = (error)=>{
|
|
88
|
+
if (failed) return;
|
|
89
|
+
failed = true;
|
|
90
|
+
request.signal.removeEventListener('abort', onStartupAbort);
|
|
91
|
+
if (request.signal.aborted) lifecycle.finish({
|
|
92
|
+
status: 'cancelled',
|
|
93
|
+
reason: request.signal.reason
|
|
94
|
+
});
|
|
95
|
+
else {
|
|
96
|
+
lifecycle.finish({
|
|
97
|
+
status: 'error',
|
|
98
|
+
error
|
|
85
99
|
});
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
})
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
100
|
+
reportError(error);
|
|
101
|
+
}
|
|
102
|
+
abortReact(error);
|
|
103
|
+
destroyOwnedStreams(error).then(()=>reject(error), ()=>reject(error));
|
|
104
|
+
};
|
|
105
|
+
const own = (stream)=>{
|
|
106
|
+
if (!ownedStreams.has(stream)) {
|
|
107
|
+
ownedStreams.add(stream);
|
|
108
|
+
streamCompletions.push(new Promise((done)=>{
|
|
109
|
+
(0, external_stream_namespaceObject.finished)(stream, (error)=>done(error ?? void 0));
|
|
110
|
+
}));
|
|
111
|
+
stream.on('error', fail);
|
|
112
|
+
}
|
|
113
|
+
return stream;
|
|
114
|
+
};
|
|
115
|
+
const onStartupAbort = ()=>fail(request.signal.reason);
|
|
116
|
+
const deliver = (source)=>{
|
|
117
|
+
const stream = (0, external_shared_js_namespaceObject.observeSSRStream)(source, {
|
|
118
|
+
lifecycle,
|
|
119
|
+
signal: request.signal,
|
|
120
|
+
async onError (error) {
|
|
121
|
+
failed = true;
|
|
122
|
+
abortReact(error);
|
|
123
|
+
await destroyOwnedStreams(error);
|
|
124
|
+
reportError(error);
|
|
125
|
+
},
|
|
126
|
+
onCancel (reason) {
|
|
127
|
+
failed = true;
|
|
128
|
+
const cleanup = destroyOwnedStreams();
|
|
129
|
+
abortReact(reason);
|
|
130
|
+
return cleanup;
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
request.signal.removeEventListener('abort', onStartupAbort);
|
|
134
|
+
resolve(stream);
|
|
135
|
+
};
|
|
136
|
+
const templateOptions = ()=>({
|
|
137
|
+
request,
|
|
138
|
+
ssrConfig,
|
|
139
|
+
renderLevel,
|
|
140
|
+
runtimeContext,
|
|
141
|
+
config,
|
|
142
|
+
entryName,
|
|
143
|
+
lifecycle
|
|
144
|
+
});
|
|
145
|
+
const startOutput = async ()=>{
|
|
146
|
+
if (hasStartedPipe || failed) return;
|
|
147
|
+
hasStartedPipe = true;
|
|
148
|
+
const styledComponentsStyleTags = extenders.map((extender)=>extender.getStyleTags?.() ?? '').join('');
|
|
149
|
+
options[onReady]?.();
|
|
150
|
+
const { shellBefore, shellAfter } = await (0, external_template_js_namespaceObject.getTemplates)(htmlTemplate, {
|
|
151
|
+
...templateOptions(),
|
|
152
|
+
styledComponentsStyleTags
|
|
153
|
+
});
|
|
154
|
+
if (failed) return;
|
|
155
|
+
const chunks = [];
|
|
156
|
+
const marker = Buffer.from(external_common_js_namespaceObject.ESCAPED_SHELL_STREAM_END_MARK);
|
|
157
|
+
const pendingScripts = [];
|
|
158
|
+
let shellChunkStatus = external_shared_js_namespaceObject_1.ShellChunkStatus.START;
|
|
159
|
+
const emitShell = (destination, buffered, markerIndex)=>{
|
|
160
|
+
const beforeMark = lifecycle.completedBody(buffered.subarray(0, markerIndex).toString('utf8'), 'shell');
|
|
161
|
+
const completedShellBefore = (0, external_helmet_js_namespaceObject.createReplaceHelemt)((0, external_helmet_js_namespaceObject.getHelmetData)(extenders))(shellBefore);
|
|
162
|
+
shellChunkStatus = external_shared_js_namespaceObject_1.ShellChunkStatus.FINISH;
|
|
163
|
+
chunks.length = 0;
|
|
164
|
+
destination.push(`${completedShellBefore}${beforeMark}${shellAfter}`);
|
|
165
|
+
const afterMark = buffered.subarray(markerIndex + marker.length);
|
|
166
|
+
if (afterMark.length > 0) destination.push(afterMark);
|
|
167
|
+
for (const script of pendingScripts)destination.push(script);
|
|
168
|
+
pendingScripts.length = 0;
|
|
169
|
+
};
|
|
170
|
+
const body = new external_stream_namespaceObject.Transform({
|
|
171
|
+
transform (chunk, _encoding, callback) {
|
|
172
|
+
try {
|
|
173
|
+
if (shellChunkStatus === external_shared_js_namespaceObject_1.ShellChunkStatus.FINISH) this.push(chunk);
|
|
174
|
+
else {
|
|
175
|
+
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
176
|
+
const buffered = Buffer.concat(chunks);
|
|
177
|
+
const markerIndex = buffered.indexOf(marker);
|
|
178
|
+
if (-1 !== markerIndex) emitShell(this, buffered, markerIndex);
|
|
120
179
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
if (extender.processStream) processedStream = extender.processStream(processedStream);
|
|
128
|
-
});
|
|
129
|
-
node_namespaceObject.pipeNodeHeadStream({
|
|
130
|
-
source: processedStream,
|
|
131
|
-
destination: body,
|
|
132
|
-
context: runtimeContext,
|
|
133
|
-
terminalMarker: external_common_js_namespaceObject.ESCAPED_SHELL_STREAM_END_MARK,
|
|
134
|
-
onError: reportError
|
|
135
|
-
});
|
|
136
|
-
reactStreamingPipe(passThrough);
|
|
180
|
+
callback();
|
|
181
|
+
} catch (error) {
|
|
182
|
+
callback(error instanceof Error ? error : new Error(String(error)));
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
flush (callback) {
|
|
137
186
|
try {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
if (entries.length > 0) {
|
|
142
|
-
const enqueueScript = (s)=>{
|
|
143
|
-
if (shellChunkStatus === external_shared_js_namespaceObject.ShellChunkStatus.FINISH) body.write(s);
|
|
144
|
-
else pendingScripts.push(s);
|
|
145
|
-
};
|
|
146
|
-
(0, external_deferredScript_js_namespaceObject.enqueueFromEntries)(entries, config.nonce, (s)=>enqueueScript(s));
|
|
187
|
+
if (shellChunkStatus !== external_shared_js_namespaceObject_1.ShellChunkStatus.FINISH) {
|
|
188
|
+
const buffered = Buffer.concat(chunks);
|
|
189
|
+
emitShell(this, buffered, buffered.length);
|
|
147
190
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
191
|
+
callback();
|
|
192
|
+
} catch (error) {
|
|
193
|
+
callback(error instanceof Error ? error : new Error(String(error)));
|
|
151
194
|
}
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
own(body);
|
|
198
|
+
const passThrough = new external_stream_namespaceObject.PassThrough();
|
|
199
|
+
let processedStream = own(passThrough);
|
|
200
|
+
for (const extender of (0, external_shared_js_namespaceObject.orderSSRStreamTransforms)(extenders))if (extender.processStream) processedStream = own(extender.processStream(processedStream));
|
|
201
|
+
(0, external_stream_namespaceObject.pipeline)(processedStream, body, (error)=>{
|
|
202
|
+
if (null != error && !failed) fail(error);
|
|
203
|
+
});
|
|
204
|
+
deliver(external_stream_namespaceObject.Readable.toWeb(body));
|
|
205
|
+
reactStream.pipe(passThrough);
|
|
206
|
+
try {
|
|
207
|
+
const activeDeferreds = node_namespaceObject.storage.useContext?.()?.activeDeferreds;
|
|
208
|
+
const entries = activeDeferreds instanceof Map ? Array.from(activeDeferreds.entries()) : [];
|
|
209
|
+
(0, external_deferredScript_js_namespaceObject.enqueueFromEntries)(entries, config.nonce, (script)=>{
|
|
210
|
+
if (failed || body.destroyed || body.writableEnded) return;
|
|
211
|
+
if (shellChunkStatus === external_shared_js_namespaceObject_1.ShellChunkStatus.FINISH) body.write(script);
|
|
212
|
+
else pendingScripts.push(script);
|
|
152
213
|
});
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
node_namespaceObject.abortHeadRender(runtimeContext);
|
|
156
|
-
renderLevel = external_constants_js_namespaceObject.RenderLevel.CLIENT_RENDER;
|
|
157
|
-
(0, external_template_js_namespaceObject.getTemplates)(htmlTemplate, {
|
|
158
|
-
request,
|
|
159
|
-
ssrConfig,
|
|
160
|
-
renderLevel,
|
|
161
|
-
runtimeContext,
|
|
162
|
-
entryName,
|
|
163
|
-
config,
|
|
164
|
-
moduleFederationCssAssets
|
|
165
|
-
}).then(({ shellAfter, shellBefore })=>{
|
|
166
|
-
const fallbackHtml = `${shellBefore}${shellAfter}`;
|
|
167
|
-
const readableStream = (0, external_shared_js_namespaceObject.getReadableStreamFromString)(fallbackHtml);
|
|
168
|
-
resolve(readableStream);
|
|
169
|
-
options?.onShellError?.(error);
|
|
170
|
-
});
|
|
171
|
-
},
|
|
172
|
-
onError (error) {
|
|
173
|
-
renderLevel = external_constants_js_namespaceObject.RenderLevel.CLIENT_RENDER;
|
|
174
|
-
reportError(error);
|
|
214
|
+
} catch (error) {
|
|
215
|
+
(0, monitors_index_js_namespaceObject.getMonitors)().error("cannot inject router data script", error);
|
|
175
216
|
}
|
|
217
|
+
};
|
|
218
|
+
const renderFallback = async (error)=>{
|
|
219
|
+
if (failed || hasStartedPipe) return;
|
|
220
|
+
lifecycle.finish({
|
|
221
|
+
status: 'fallback',
|
|
222
|
+
error
|
|
223
|
+
});
|
|
224
|
+
renderLevel = external_constants_js_namespaceObject.RenderLevel.CLIENT_RENDER;
|
|
225
|
+
const { shellBefore, shellAfter } = await (0, external_template_js_namespaceObject.getTemplates)(htmlTemplate, {
|
|
226
|
+
...templateOptions(),
|
|
227
|
+
helmetData: (0, external_helmet_js_namespaceObject.getHelmetData)(extenders)
|
|
228
|
+
});
|
|
229
|
+
if (failed) return;
|
|
230
|
+
options.onShellError?.(error);
|
|
231
|
+
deliver((0, external_shared_js_namespaceObject_1.getReadableStreamFromString)(`${shellBefore}${shellAfter}`));
|
|
232
|
+
};
|
|
233
|
+
request.signal.addEventListener('abort', onStartupAbort, {
|
|
234
|
+
once: true
|
|
176
235
|
});
|
|
236
|
+
try {
|
|
237
|
+
request.signal.throwIfAborted();
|
|
238
|
+
for (const extender of extenders)extender.init?.({
|
|
239
|
+
rootElement,
|
|
240
|
+
forceStream2String
|
|
241
|
+
});
|
|
242
|
+
let processedRootElement = isRsc && false === runtimeContext.isBrowser ? (0, wrapper_js_namespaceObject.wrapRuntimeComponentResolver)(rootElement, hooks) : rootElement;
|
|
243
|
+
for (const extender of extenders)processedRootElement = extender.modifyRootElement?.(processedRootElement) ?? processedRootElement;
|
|
244
|
+
lifecycle.beforeReact();
|
|
245
|
+
reactStream = renderToPipeableStream(processedRootElement, {
|
|
246
|
+
nonce: config.nonce,
|
|
247
|
+
identifierPrefix: constants_namespaceObject.SSR_HYDRATION_ID_PREFIX,
|
|
248
|
+
[onReady] () {
|
|
249
|
+
startOutput().catch(fail);
|
|
250
|
+
},
|
|
251
|
+
onShellError (error) {
|
|
252
|
+
renderFallback(error).catch(fail);
|
|
253
|
+
},
|
|
254
|
+
onError (error) {
|
|
255
|
+
renderLevel = external_constants_js_namespaceObject.RenderLevel.CLIENT_RENDER;
|
|
256
|
+
if (!request.signal.aborted && !failed) reportError(error);
|
|
257
|
+
}
|
|
258
|
+
});
|
|
259
|
+
} catch (error) {
|
|
260
|
+
fail(error);
|
|
261
|
+
}
|
|
177
262
|
});
|
|
178
263
|
};
|
|
179
264
|
exports.createReadableStreamFromElement = __webpack_exports__.createReadableStreamFromElement;
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.n = (module)=>{
|
|
5
|
+
var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
|
|
6
|
+
__webpack_require__.d(getter, {
|
|
7
|
+
a: getter
|
|
8
|
+
});
|
|
9
|
+
return getter;
|
|
10
|
+
};
|
|
11
|
+
})();
|
|
3
12
|
(()=>{
|
|
4
13
|
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
14
|
var define = (defs, kind)=>{
|
|
@@ -31,123 +40,183 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
31
40
|
createReadableStreamFromElement: ()=>createReadableStreamFromElement
|
|
32
41
|
});
|
|
33
42
|
const ssr_namespaceObject = require("@modern-js/render/ssr");
|
|
34
|
-
const runtime_extensions_namespaceObject = require("@modern-js/runtime-extensions");
|
|
35
43
|
const node_namespaceObject = require("@modern-js/runtime-utils/node");
|
|
44
|
+
const external_react_namespaceObject = require("react");
|
|
45
|
+
var external_react_default = /*#__PURE__*/ __webpack_require__.n(external_react_namespaceObject);
|
|
36
46
|
const external_common_js_namespaceObject = require("../../../common.js");
|
|
37
47
|
const external_constants_js_namespaceObject = require("../../constants.js");
|
|
48
|
+
const index_js_namespaceObject = require("../../context/index.js");
|
|
49
|
+
const wrapper_js_namespaceObject = require("../../react/wrapper.js");
|
|
38
50
|
const external_helmet_js_namespaceObject = require("../helmet.js");
|
|
51
|
+
const external_shared_js_namespaceObject = require("../shared.js");
|
|
39
52
|
const external_deferredScript_js_namespaceObject = require("./deferredScript.js");
|
|
40
|
-
const
|
|
53
|
+
const external_shared_js_namespaceObject_1 = require("./shared.js");
|
|
41
54
|
const external_template_js_namespaceObject = require("./template.js");
|
|
42
55
|
const createReadableStreamFromElement = async (request, rootElement, options)=>{
|
|
43
|
-
|
|
44
|
-
const
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
56
|
+
const { htmlTemplate, runtimeContext, config, ssrConfig, entryName, resource, rscManifest, rscRoot } = options;
|
|
57
|
+
const hooks = (0, index_js_namespaceObject.getGlobalInternalRuntimeContext)().hooks;
|
|
58
|
+
const isRsc = true === (0, index_js_namespaceObject.getGlobalEnableRsc)();
|
|
59
|
+
const extenders = hooks.extendStreamSSR.call({
|
|
60
|
+
runtimeContext,
|
|
61
|
+
request,
|
|
62
|
+
resource,
|
|
63
|
+
config,
|
|
64
|
+
platform: 'web',
|
|
65
|
+
mode: 'stream',
|
|
66
|
+
isRsc,
|
|
67
|
+
terminalMarker: external_common_js_namespaceObject.ESCAPED_SHELL_STREAM_END_MARK
|
|
68
|
+
}) || [];
|
|
69
|
+
const lifecycle = (0, external_shared_js_namespaceObject.createSSRRenderLifecycle)(extenders);
|
|
70
|
+
const reportOnce = (0, external_shared_js_namespaceObject.createSSRStreamErrorReporter)(options.onError);
|
|
71
|
+
const reportError = (error)=>{
|
|
72
|
+
if (!request.signal.aborted && lifecycle.terminal?.status !== 'cancelled') reportOnce(error);
|
|
73
|
+
};
|
|
74
|
+
const forceStream2String = Boolean("u" > typeof process && process.env?.MODERN_JS_STREAM_TO_STRING);
|
|
75
|
+
let pendingSource;
|
|
76
|
+
let bodyOpen = true;
|
|
77
|
+
let bodyPipe;
|
|
78
|
+
const templateOptions = {
|
|
49
79
|
runtimeContext,
|
|
50
80
|
ssrConfig,
|
|
51
81
|
request,
|
|
52
82
|
config,
|
|
53
83
|
entryName,
|
|
54
|
-
|
|
55
|
-
}
|
|
84
|
+
lifecycle
|
|
85
|
+
};
|
|
56
86
|
try {
|
|
87
|
+
request.signal.throwIfAborted();
|
|
88
|
+
for (const extender of extenders)extender.init?.({
|
|
89
|
+
rootElement,
|
|
90
|
+
forceStream2String
|
|
91
|
+
});
|
|
57
92
|
const readableOriginal = await (0, ssr_namespaceObject.renderSSRStream)(rootElement, {
|
|
58
93
|
request,
|
|
94
|
+
signal: request.signal,
|
|
59
95
|
nonce: config.nonce,
|
|
60
96
|
rscManifest,
|
|
61
97
|
rscRoot: rscRoot,
|
|
62
98
|
routes: runtimeContext.routes,
|
|
63
|
-
onError
|
|
64
|
-
|
|
99
|
+
onError: reportError,
|
|
100
|
+
wrapHtmlRoot (root) {
|
|
101
|
+
let element = external_react_default().isValidElement(root) ? root : external_react_default().createElement(external_react_default().Fragment, null, root);
|
|
102
|
+
if (isRsc && false === runtimeContext.isBrowser) element = (0, wrapper_js_namespaceObject.wrapRuntimeComponentResolver)(element, hooks);
|
|
103
|
+
for (const extender of extenders)element = extender.modifyRootElement?.(element) ?? element;
|
|
104
|
+
lifecycle.beforeReact();
|
|
105
|
+
return element;
|
|
65
106
|
}
|
|
66
107
|
});
|
|
108
|
+
pendingSource = readableOriginal;
|
|
67
109
|
options.onShellReady?.();
|
|
68
|
-
readableOriginal.allReady.then(()=>
|
|
69
|
-
|
|
70
|
-
});
|
|
71
|
-
const forceStreamToString = Boolean("u" > typeof process && process.env?.MODERN_JS_STREAM_TO_STRING);
|
|
72
|
-
const { waitForAllReady } = (0, external_shared_js_namespaceObject.resolveStreamingMode)(request, forceStreamToString);
|
|
110
|
+
readableOriginal.allReady.then(()=>options.onAllReady?.()).catch(reportError);
|
|
111
|
+
const { waitForAllReady } = (0, external_shared_js_namespaceObject_1.resolveStreamingMode)(request, forceStream2String);
|
|
73
112
|
if (waitForAllReady) await readableOriginal.allReady;
|
|
74
|
-
|
|
75
|
-
const
|
|
113
|
+
request.signal.throwIfAborted();
|
|
114
|
+
const styledComponentsStyleTags = extenders.map((extender)=>extender.getStyleTags?.() ?? '').join('');
|
|
115
|
+
const { shellBefore, shellAfter } = await (0, external_template_js_namespaceObject.getTemplates)(htmlTemplate, {
|
|
116
|
+
...templateOptions,
|
|
117
|
+
renderLevel: external_constants_js_namespaceObject.RenderLevel.SERVER_RENDER,
|
|
118
|
+
styledComponentsStyleTags
|
|
119
|
+
});
|
|
120
|
+
for (const extender of (0, external_shared_js_namespaceObject.orderSSRStreamTransforms)(extenders))if (void 0 !== extender.processReadableStream) pendingSource = extender.processReadableStream(pendingSource);
|
|
121
|
+
const decoder = new TextDecoder();
|
|
122
|
+
const encoder = new TextEncoder();
|
|
123
|
+
const pendingScripts = [];
|
|
124
|
+
let buffered = '';
|
|
125
|
+
let shellChunkStatus = external_shared_js_namespaceObject_1.ShellChunkStatus.START;
|
|
126
|
+
let bodyController;
|
|
127
|
+
const emit = (chunk, controller)=>{
|
|
128
|
+
if (shellChunkStatus === external_shared_js_namespaceObject_1.ShellChunkStatus.FINISH) {
|
|
129
|
+
if (chunk.length > 0) controller.enqueue(encoder.encode(chunk));
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
buffered += chunk;
|
|
133
|
+
const markerIndex = buffered.indexOf(external_common_js_namespaceObject.ESCAPED_SHELL_STREAM_END_MARK);
|
|
134
|
+
if (-1 === markerIndex) return;
|
|
135
|
+
const beforeMark = lifecycle.completedBody(buffered.slice(0, markerIndex), 'shell');
|
|
136
|
+
const afterMark = buffered.slice(markerIndex + external_common_js_namespaceObject.ESCAPED_SHELL_STREAM_END_MARK.length);
|
|
137
|
+
const completedShellBefore = (0, external_helmet_js_namespaceObject.createReplaceHelemt)((0, external_helmet_js_namespaceObject.getHelmetData)(extenders))(shellBefore);
|
|
138
|
+
shellChunkStatus = external_shared_js_namespaceObject_1.ShellChunkStatus.FINISH;
|
|
139
|
+
buffered = '';
|
|
140
|
+
controller.enqueue(encoder.encode(`${completedShellBefore}${beforeMark}${shellAfter}`));
|
|
141
|
+
if (afterMark.length > 0) controller.enqueue(encoder.encode(afterMark));
|
|
142
|
+
for (const script of pendingScripts)controller.enqueue(encoder.encode(script));
|
|
143
|
+
pendingScripts.length = 0;
|
|
144
|
+
};
|
|
145
|
+
const body = new TransformStream({
|
|
76
146
|
start (controller) {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
} catch {
|
|
84
|
-
isClosed = true;
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
const closeController = ()=>{
|
|
88
|
-
if (!isClosed) {
|
|
89
|
-
isClosed = true;
|
|
90
|
-
try {
|
|
91
|
-
controller.close();
|
|
92
|
-
} catch {}
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
const flushPendingScripts = ()=>{
|
|
96
|
-
for (const s of pendingScripts)safeEnqueue((0, external_shared_js_namespaceObject.encodeForWebStream)(s));
|
|
97
|
-
pendingScripts.length = 0;
|
|
98
|
-
};
|
|
99
|
-
const enqueueScript = (script)=>{
|
|
100
|
-
if (shellChunkStatus === external_shared_js_namespaceObject.ShellChunkStatus.FINISH) safeEnqueue((0, external_shared_js_namespaceObject.encodeForWebStream)(script));
|
|
101
|
-
else pendingScripts.push(script);
|
|
102
|
-
};
|
|
103
|
-
const storageContext = node_namespaceObject.storage.useContext?.();
|
|
104
|
-
const activeDeferreds = storageContext?.activeDeferreds;
|
|
105
|
-
const entries = activeDeferreds instanceof Map ? Array.from(activeDeferreds.entries()) : [];
|
|
106
|
-
if (entries.length > 0) (0, external_deferredScript_js_namespaceObject.enqueueFromEntries)(entries, config.nonce, enqueueScript);
|
|
107
|
-
async function push() {
|
|
108
|
-
try {
|
|
109
|
-
const { done, value } = await reader.read();
|
|
110
|
-
if (done) return void closeController();
|
|
111
|
-
if (isClosed) return;
|
|
112
|
-
if (shellChunkStatus !== external_shared_js_namespaceObject.ShellChunkStatus.FINISH) {
|
|
113
|
-
chunkVec.push(new TextDecoder().decode(value));
|
|
114
|
-
const concatedChunk = chunkVec.join('');
|
|
115
|
-
const markerIndex = concatedChunk.indexOf(external_common_js_namespaceObject.ESCAPED_SHELL_STREAM_END_MARK);
|
|
116
|
-
if (-1 !== markerIndex) {
|
|
117
|
-
const beforeMark = concatedChunk.slice(0, markerIndex);
|
|
118
|
-
const afterMark = concatedChunk.slice(markerIndex + external_common_js_namespaceObject.ESCAPED_SHELL_STREAM_END_MARK.length);
|
|
119
|
-
runtime_extensions_namespaceObject.publishHeadRender(runtimeContext);
|
|
120
|
-
const completedShellBefore = (0, external_helmet_js_namespaceObject.createReplaceHelemt)((0, external_helmet_js_namespaceObject.getHelmetData)(runtimeContext))(shellBefore);
|
|
121
|
-
shellChunkStatus = external_shared_js_namespaceObject.ShellChunkStatus.FINISH;
|
|
122
|
-
safeEnqueue((0, external_shared_js_namespaceObject.encodeForWebStream)(`${completedShellBefore}${beforeMark}${shellAfter}`));
|
|
123
|
-
if (afterMark.length > 0) safeEnqueue((0, external_shared_js_namespaceObject.encodeForWebStream)(afterMark));
|
|
124
|
-
flushPendingScripts();
|
|
125
|
-
}
|
|
126
|
-
} else safeEnqueue(value);
|
|
127
|
-
if (!isClosed) push();
|
|
128
|
-
} catch (error) {
|
|
129
|
-
runtime_extensions_namespaceObject.abortHeadRender(runtimeContext);
|
|
130
|
-
if (!isClosed) {
|
|
131
|
-
isClosed = true;
|
|
132
|
-
try {
|
|
133
|
-
controller.error(error);
|
|
134
|
-
} catch {}
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
push();
|
|
147
|
+
bodyController = controller;
|
|
148
|
+
},
|
|
149
|
+
transform (chunk, controller) {
|
|
150
|
+
emit(decoder.decode(chunk, {
|
|
151
|
+
stream: true
|
|
152
|
+
}), controller);
|
|
139
153
|
},
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
154
|
+
flush (controller) {
|
|
155
|
+
bodyOpen = false;
|
|
156
|
+
emit(decoder.decode(), controller);
|
|
157
|
+
if (shellChunkStatus !== external_shared_js_namespaceObject_1.ShellChunkStatus.FINISH) throw new Error('React SSR stream ended before the shell marker');
|
|
143
158
|
}
|
|
144
159
|
});
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
const
|
|
149
|
-
const
|
|
150
|
-
|
|
160
|
+
bodyPipe = pendingSource.pipeTo(body.writable);
|
|
161
|
+
bodyPipe.catch(()=>{});
|
|
162
|
+
pendingSource = body.readable;
|
|
163
|
+
const activeDeferreds = node_namespaceObject.storage.useContext?.()?.activeDeferreds;
|
|
164
|
+
const entries = activeDeferreds instanceof Map ? Array.from(activeDeferreds.entries()) : [];
|
|
165
|
+
(0, external_deferredScript_js_namespaceObject.enqueueFromEntries)(entries, config.nonce, (script)=>{
|
|
166
|
+
if (!bodyOpen) return;
|
|
167
|
+
if (shellChunkStatus === external_shared_js_namespaceObject_1.ShellChunkStatus.FINISH) try {
|
|
168
|
+
bodyController.enqueue(encoder.encode(script));
|
|
169
|
+
} catch {
|
|
170
|
+
bodyOpen = false;
|
|
171
|
+
}
|
|
172
|
+
else pendingScripts.push(script);
|
|
173
|
+
});
|
|
174
|
+
return (0, external_shared_js_namespaceObject.observeSSRStream)(pendingSource, {
|
|
175
|
+
lifecycle,
|
|
176
|
+
async onError (error) {
|
|
177
|
+
bodyOpen = false;
|
|
178
|
+
await bodyPipe?.catch(()=>{});
|
|
179
|
+
reportError(error);
|
|
180
|
+
},
|
|
181
|
+
signal: request.signal,
|
|
182
|
+
async onCancel (reason) {
|
|
183
|
+
bodyOpen = false;
|
|
184
|
+
await bodyPipe?.catch((error)=>{
|
|
185
|
+
if (error !== reason) throw error;
|
|
186
|
+
});
|
|
187
|
+
},
|
|
188
|
+
onComplete: ()=>bodyPipe
|
|
189
|
+
});
|
|
190
|
+
} catch (error) {
|
|
191
|
+
bodyOpen = false;
|
|
192
|
+
if (void 0 !== pendingSource) try {
|
|
193
|
+
await pendingSource.cancel(error);
|
|
194
|
+
await bodyPipe?.catch(()=>{});
|
|
195
|
+
} catch (cancelError) {
|
|
196
|
+
if (!request.signal.aborted) reportError(cancelError);
|
|
197
|
+
}
|
|
198
|
+
if (request.signal.aborted) {
|
|
199
|
+
lifecycle.finish({
|
|
200
|
+
status: 'cancelled',
|
|
201
|
+
reason: request.signal.reason
|
|
202
|
+
});
|
|
203
|
+
throw request.signal.reason;
|
|
204
|
+
}
|
|
205
|
+
lifecycle.finish({
|
|
206
|
+
status: 'fallback',
|
|
207
|
+
error
|
|
208
|
+
});
|
|
209
|
+
reportError(error);
|
|
210
|
+
const { shellBefore, shellAfter } = await (0, external_template_js_namespaceObject.getTemplates)(htmlTemplate, {
|
|
211
|
+
...templateOptions,
|
|
212
|
+
renderLevel: external_constants_js_namespaceObject.RenderLevel.CLIENT_RENDER,
|
|
213
|
+
helmetData: (0, external_helmet_js_namespaceObject.getHelmetData)(extenders)
|
|
214
|
+
});
|
|
215
|
+
return (0, external_shared_js_namespaceObject.observeSSRStream)((0, external_shared_js_namespaceObject_1.getReadableStreamFromString)(`${shellBefore}${shellAfter}`), {
|
|
216
|
+
lifecycle,
|
|
217
|
+
onError: reportError,
|
|
218
|
+
signal: request.signal
|
|
219
|
+
});
|
|
151
220
|
}
|
|
152
221
|
};
|
|
153
222
|
exports.createReadableStreamFromElement = __webpack_exports__.createReadableStreamFromElement;
|