{"version":3,"sources":["../../../src/server/app-render/stream-ops.web.ts"],"sourcesContent":["/**\n * Web stream operations for the rendering pipeline.\n * Loaded by stream-ops.ts when __NEXT_USE_NODE_STREAMS is false, such as edge\n * bundles where Node.js streams are unavailable.\n *\n * AnyStream = AnyStreamType so the exported type surface matches stream-ops.node.ts,\n * allowing the switcher to assign either module without `as unknown as`.\n */\n\nimport type { PostponedState, PrerenderOptions } from 'react-dom/static'\nimport { resume, renderToReadableStream } from 'react-dom/server'\nimport { prerender } from 'react-dom/static'\nimport type { renderToReadableStream as flightRenderToReadableStream } from 'react-server-dom-webpack/server'\n\nimport {\n  renderToInitialFizzStream,\n  streamToString as webStreamToString,\n  createRuntimePrefetchTransformStream,\n  continueFizzStream as webContinueFizzStream,\n  continueStaticPrerender as webContinueStaticPrerender,\n  continueDynamicPrerender as webContinueDynamicPrerender,\n  continueStaticFallbackPrerender as webContinueStaticFallbackPrerender,\n  continueDynamicHTMLResume as webContinueDynamicHTMLResume,\n  streamToBuffer as webStreamToBuffer,\n  chainStreams as webChainStreams,\n  createDocumentClosingStream as webCreateDocumentClosingStream,\n} from '../stream-utils/node-web-streams-helper'\nimport { createInlinedDataReadableStream } from './use-flight-response'\nimport { processPrelude as webProcessPrelude } from './app-render-prerender-utils'\nimport type { AnyStream as AnyStreamType } from './app-render-prerender-utils'\n\n// ---------------------------------------------------------------------------\n// Shared types\n// ---------------------------------------------------------------------------\n\ntype FlightRenderToReadableStream = typeof flightRenderToReadableStream\n\nexport type AnyStream = AnyStreamType\n\nexport type ContinueStreamSharedOptions = {\n  deploymentId: string | undefined\n  getServerInsertedHTML: () => Promise<string>\n  getServerInsertedMetadata: () => Promise<string>\n}\n\nexport type ContinueFizzStreamOptions = ContinueStreamSharedOptions & {\n  inlinedDataStream: AnyStream | undefined\n  isStaticGeneration: boolean\n  allReady?: Promise<void>\n  validateRootLayout?: boolean\n  suffix?: string\n}\n\nexport type ContinueStaticPrerenderOptions = ContinueStreamSharedOptions & {\n  inlinedDataStream: AnyStream\n}\n\nexport type ContinueDynamicHTMLResumeOptions = ContinueStreamSharedOptions & {\n  inlinedDataStream: AnyStream\n  delayDataUntilFirstHtmlChunk: boolean\n}\n\nexport type FlightComponentMod = {\n  renderToReadableStream: FlightRenderToReadableStream\n}\n\nexport type ServerPrerenderComponentMod = {\n  prerender: (...args: any[]) => Promise<any>\n}\n\nexport type FlightPayload = Parameters<FlightRenderToReadableStream>[0]\nexport type FlightClientModules = Parameters<FlightRenderToReadableStream>[1]\n\n/**\n * The options our Flight render wrappers accept, taken from React's Flight\n * `renderToReadableStream`. `signal` aborts the render: the Web wrapper passes\n * it straight to `renderToReadableStream`, while the Node wrapper aborts the\n * pipeable returned by `renderToPipeableStream` (which has no `signal` option)\n * when it fires.\n */\nexport type FlightRenderOptions = NonNullable<\n  Parameters<FlightRenderToReadableStream>[2]\n>\n\nexport type FizzStreamResult = {\n  stream: AnyStream\n  allReady: Promise<void>\n  abort?: (reason?: unknown) => void\n}\n\n// ---------------------------------------------------------------------------\n// Continue function wrappers\n// Thin wrappers that accept AnyStream and narrow to\n// ReadableStream<Uint8Array> internally for the web helper functions.\n// ---------------------------------------------------------------------------\n\nexport function continueFizzStream(\n  renderStream: AnyStream,\n  opts: ContinueFizzStreamOptions\n): Promise<AnyStream> {\n  return webContinueFizzStream(\n    renderStream as ReadableStream<Uint8Array> as any,\n    {\n      ...opts,\n      inlinedDataStream: opts.inlinedDataStream as\n        | ReadableStream<Uint8Array>\n        | undefined,\n    }\n  )\n}\n\nexport async function continueStaticPrerender(\n  prerenderStream: AnyStream,\n  opts: ContinueStaticPrerenderOptions\n): Promise<AnyStream> {\n  return webContinueStaticPrerender(\n    prerenderStream as ReadableStream<Uint8Array>,\n    {\n      ...opts,\n      inlinedDataStream: opts.inlinedDataStream as ReadableStream<Uint8Array>,\n    }\n  )\n}\n\nexport async function continueDynamicPrerender(\n  prerenderStream: AnyStream,\n  opts: {\n    getServerInsertedHTML: () => Promise<string>\n    getServerInsertedMetadata: () => Promise<string>\n    deploymentId: string | undefined\n  }\n): Promise<AnyStream> {\n  return webContinueDynamicPrerender(\n    prerenderStream as ReadableStream<Uint8Array>,\n    opts\n  )\n}\n\nexport async function continueStaticFallbackPrerender(\n  prerenderStream: AnyStream,\n  opts: ContinueStaticPrerenderOptions\n): Promise<AnyStream> {\n  return webContinueStaticFallbackPrerender(\n    prerenderStream as ReadableStream<Uint8Array>,\n    {\n      ...opts,\n      inlinedDataStream: opts.inlinedDataStream as ReadableStream<Uint8Array>,\n    }\n  )\n}\n\nexport async function continueDynamicHTMLResumeWeb(\n  renderStream: AnyStream,\n  opts: ContinueDynamicHTMLResumeOptions\n): Promise<AnyStream> {\n  return webContinueDynamicHTMLResume(\n    renderStream as ReadableStream<Uint8Array>,\n    {\n      ...opts,\n      inlinedDataStream: opts.inlinedDataStream as ReadableStream<Uint8Array>,\n    }\n  )\n}\n\nexport function continueDynamicHTMLResumeNode(\n  _renderStream: AnyStream,\n  _opts: ContinueDynamicHTMLResumeOptions\n): Promise<AnyStream> {\n  throw new Error('not implemented')\n}\n\nexport async function streamToBuffer(stream: AnyStream): Promise<Buffer> {\n  return webStreamToBuffer(stream as ReadableStream<Uint8Array>)\n}\n\nexport function chainStreams(...streams: AnyStream[]): AnyStream {\n  return webChainStreams(...(streams as ReadableStream<Uint8Array>[]))\n}\n\nexport function createDocumentClosingStream(): AnyStream {\n  return webCreateDocumentClosingStream()\n}\n\nexport async function processPrelude(\n  unprocessedPrelude: AnyStream\n): Promise<{ prelude: AnyStream; preludeIsEmpty: boolean }> {\n  return webProcessPrelude(unprocessedPrelude as ReadableStream<Uint8Array>)\n}\n\n// ---------------------------------------------------------------------------\n// Composed helpers\n// ---------------------------------------------------------------------------\n\nexport function createWebInlinedDataStream(\n  source: AnyStream,\n  nonce: string | undefined,\n  formState: unknown | null\n): AnyStream {\n  return createInlinedDataReadableStream(\n    source as ReadableStream<Uint8Array>,\n    nonce,\n    formState\n  )\n}\n\nexport function createNodeInlinedDataStream(\n  _source: AnyStream,\n  _nonce: string | undefined,\n  _formState: unknown | null\n): AnyStream {\n  throw new Error('not implemented')\n}\n\nexport function createPendingStream(): AnyStream {\n  return new ReadableStream<Uint8Array>()\n}\n\nexport function createOnHeadersCallback(\n  appendHeader: (key: string, value: string) => void\n): NonNullable<PrerenderOptions['onHeaders']> {\n  return (headers: Headers) => {\n    headers.forEach((value, key) => {\n      appendHeader(key, value)\n    })\n  }\n}\n\nexport async function resumeAndAbort(\n  element: React.ReactElement,\n  postponed: PostponedState | null,\n  opts: Parameters<typeof resume>[2] & { nonce?: string }\n): Promise<AnyStream> {\n  return resume(\n    element,\n    postponed as PostponedState,\n    opts as Parameters<typeof resume>[2]\n  )\n}\n\nexport function renderToNodeFlightStream(\n  _ComponentMod: FlightComponentMod,\n  _payload: FlightPayload,\n  _clientModules: FlightClientModules,\n  _opts: FlightRenderOptions\n): AnyStream {\n  throw new Error('not implemented')\n}\n\nexport function renderToWebFlightStream(\n  ComponentMod: FlightComponentMod,\n  payload: FlightPayload,\n  clientModules: FlightClientModules,\n  opts: FlightRenderOptions\n): AnyStream {\n  return ComponentMod.renderToReadableStream(payload, clientModules, opts)\n}\n\nexport async function streamToString(stream: AnyStream): Promise<string> {\n  return webStreamToString(stream as ReadableStream<Uint8Array>)\n}\n\nexport async function renderToWebFizzStream(\n  element: React.ReactElement,\n  streamOptions: any,\n  _options?: { waitForAllReady?: boolean }\n): Promise<FizzStreamResult> {\n  const stream = await renderToInitialFizzStream({\n    ReactDOMServer: { renderToReadableStream },\n    element,\n    streamOptions,\n  })\n  return { stream, allReady: stream.allReady, abort: undefined }\n}\n\nexport async function renderToNodeFizzStream(\n  _element: React.ReactElement,\n  _streamOptions: any,\n  _options?: { waitForAllReady?: boolean }\n): Promise<FizzStreamResult> {\n  throw new Error('Not implemented')\n}\n\nexport async function resumeToFizzStream(\n  element: React.ReactElement,\n  postponedState: PostponedState,\n  streamOptions: any\n): Promise<FizzStreamResult> {\n  const stream = await resume(element, postponedState, streamOptions)\n  return { stream, allReady: stream.allReady, abort: undefined }\n}\n\nexport function getServerPrerender(\n  ComponentMod: ServerPrerenderComponentMod\n): (...args: any[]) => any {\n  return ComponentMod.prerender\n}\n\nexport const getClientPrerender: typeof import('react-dom/static').prerender =\n  prerender\n\nexport function pipeRuntimePrefetchTransform(\n  stream: AnyStream,\n  sentinel: number,\n  isPartial: boolean,\n  staleTime: number\n): AnyStream {\n  return (stream as ReadableStream<Uint8Array>).pipeThrough(\n    createRuntimePrefetchTransformStream(sentinel, isPartial, staleTime)\n  )\n}\n\nexport function teeStream(stream: AnyStream): [AnyStream, AnyStream] {\n  return (stream as ReadableStream<Uint8Array>).tee()\n}\n"],"names":["chainStreams","continueDynamicHTMLResumeNode","continueDynamicHTMLResumeWeb","continueDynamicPrerender","continueFizzStream","continueStaticFallbackPrerender","continueStaticPrerender","createDocumentClosingStream","createNodeInlinedDataStream","createOnHeadersCallback","createPendingStream","createWebInlinedDataStream","getClientPrerender","getServerPrerender","pipeRuntimePrefetchTransform","processPrelude","renderToNodeFizzStream","renderToNodeFlightStream","renderToWebFizzStream","renderToWebFlightStream","resumeAndAbort","resumeToFizzStream","streamToBuffer","streamToString","teeStream","renderStream","opts","webContinueFizzStream","inlinedDataStream","prerenderStream","webContinueStaticPrerender","webContinueDynamicPrerender","webContinueStaticFallbackPrerender","webContinueDynamicHTMLResume","_renderStream","_opts","Error","stream","webStreamToBuffer","streams","webChainStreams","webCreateDocumentClosingStream","unprocessedPrelude","webProcessPrelude","source","nonce","formState","createInlinedDataReadableStream","_source","_nonce","_formState","ReadableStream","appendHeader","headers","forEach","value","key","element","postponed","resume","_ComponentMod","_payload","_clientModules","ComponentMod","payload","clientModules","renderToReadableStream","webStreamToString","streamOptions","_options","renderToInitialFizzStream","ReactDOMServer","allReady","abort","undefined","_element","_streamOptions","postponedState","prerender","sentinel","isPartial","staleTime","pipeThrough","createRuntimePrefetchTransformStream","tee"],"mappings":"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","ignoreList":[0]}