next
Version:
The React Framework
77 lines (76 loc) • 3.28 kB
JavaScript
/**
* Web stream operations for the rendering pipeline.
* Loaded by stream-ops.ts (re-export in this PR, conditional switcher later).
*/ import { resume, renderToReadableStream } from 'react-dom/server';
import { prerender } from 'react-dom/static';
import { renderToInitialFizzStream, streamToString as webStreamToString, createRuntimePrefetchTransformStream, continueFizzStream as webContinueFizzStream } from '../stream-utils/node-web-streams-helper';
import { createInlinedDataReadableStream } from './use-flight-response';
// ---------------------------------------------------------------------------
// Continue functions
// ---------------------------------------------------------------------------
export { continueStaticPrerender, continueDynamicPrerender, continueStaticFallbackPrerender, continueDynamicHTMLResume, streamToBuffer, chainStreams, createDocumentClosingStream } from '../stream-utils/node-web-streams-helper';
export { processPrelude } from './app-render-prerender-utils';
/**
* Wrapper for continueFizzStream that accepts AnyStream.
* The underlying implementation expects ReactDOMServerReadableStream but at
* the stream-ops boundary we only expose AnyStream.
*/ export function continueFizzStream(renderStream, opts) {
return webContinueFizzStream(renderStream, opts);
}
// Not available in web bundles
export const nodeReadableToWeb = undefined;
// ---------------------------------------------------------------------------
// Composed helpers
// ---------------------------------------------------------------------------
export function createInlinedDataStream(source, nonce, formState) {
return createInlinedDataReadableStream(source, nonce, formState);
}
export function createPendingStream() {
return new ReadableStream();
}
export function createOnHeadersCallback(appendHeader) {
return (headers)=>{
headers.forEach((value, key)=>{
appendHeader(key, value);
});
};
}
export async function resumeAndAbort(element, postponed, opts) {
return resume(element, postponed, opts);
}
export function renderToFlightStream(ComponentMod, payload, clientModules, opts) {
return ComponentMod.renderToReadableStream(payload, clientModules, opts);
}
export async function streamToString(stream) {
return webStreamToString(stream);
}
export async function renderToFizzStream(element, streamOptions) {
const stream = await renderToInitialFizzStream({
ReactDOMServer: {
renderToReadableStream
},
element,
streamOptions
});
return {
stream,
allReady: stream.allReady,
abort: undefined
};
}
export async function resumeToFizzStream(element, postponedState, streamOptions) {
const stream = await resume(element, postponedState, streamOptions);
return {
stream,
allReady: stream.allReady,
abort: undefined
};
}
export function getServerPrerender(ComponentMod) {
return ComponentMod.prerender;
}
export const getClientPrerender = prerender;
export function pipeRuntimePrefetchTransform(stream, sentinel, isPartial, staleTime) {
return stream.pipeThrough(createRuntimePrefetchTransformStream(sentinel, isPartial, staleTime));
}
//# sourceMappingURL=stream-ops.web.js.map