{"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 (re-export in this PR, conditional switcher later).\n */\n\nimport type { PostponedState, PrerenderOptions } from 'react-dom/static'\nimport { resume, renderToReadableStream } from 'react-dom/server'\nimport { prerender } from 'react-dom/static'\n\nimport {\n  renderToInitialFizzStream,\n  streamToString as webStreamToString,\n  createRuntimePrefetchTransformStream,\n  continueFizzStream as webContinueFizzStream,\n} from '../stream-utils/node-web-streams-helper'\nimport { createInlinedDataReadableStream } from './use-flight-response'\n\n// ---------------------------------------------------------------------------\n// Shared types (web-only for now; will move to stream-ops.node.ts later)\n// ---------------------------------------------------------------------------\n\ntype FlightRenderToReadableStream = (\n  model: any,\n  webpackMap: any,\n  options?: any\n) => ReadableStream<Uint8Array>\n\nexport type AnyStream = ReadableStream<Uint8Array>\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]\nexport type FlightRenderOptions = Parameters<FlightRenderToReadableStream>[2]\n\nexport type FizzStreamResult = {\n  stream: AnyStream\n  allReady: Promise<void>\n  abort?: (reason?: unknown) => void\n}\n\n// ---------------------------------------------------------------------------\n// Continue functions\n// ---------------------------------------------------------------------------\n\nexport {\n  continueStaticPrerender,\n  continueDynamicPrerender,\n  continueStaticFallbackPrerender,\n  continueDynamicHTMLResume,\n  streamToBuffer,\n  chainStreams,\n  createDocumentClosingStream,\n} from '../stream-utils/node-web-streams-helper'\n\nexport { processPrelude } from './app-render-prerender-utils'\n\n/**\n * Wrapper for continueFizzStream that accepts AnyStream.\n * The underlying implementation expects ReactDOMServerReadableStream but at\n * the stream-ops boundary we only expose AnyStream.\n */\nexport function continueFizzStream(\n  renderStream: AnyStream,\n  opts: ContinueFizzStreamOptions\n): Promise<ReadableStream<Uint8Array>> {\n  return webContinueFizzStream(renderStream as any, opts)\n}\n\n// Not available in web bundles\nexport const nodeReadableToWeb:\n  | ((readable: import('node:stream').Readable) => ReadableStream<Uint8Array>)\n  | undefined = undefined\n\n// ---------------------------------------------------------------------------\n// Composed helpers\n// ---------------------------------------------------------------------------\n\nexport function createInlinedDataStream(\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 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 renderToFlightStream(\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 renderToFizzStream(\n  element: React.ReactElement,\n  streamOptions: any\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 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"],"names":["chainStreams","continueDynamicHTMLResume","continueDynamicPrerender","continueFizzStream","continueStaticFallbackPrerender","continueStaticPrerender","createDocumentClosingStream","createInlinedDataStream","createOnHeadersCallback","createPendingStream","getClientPrerender","getServerPrerender","nodeReadableToWeb","pipeRuntimePrefetchTransform","processPrelude","renderToFizzStream","renderToFlightStream","resumeAndAbort","resumeToFizzStream","streamToBuffer","streamToString","renderStream","opts","webContinueFizzStream","undefined","source","nonce","formState","createInlinedDataReadableStream","ReadableStream","appendHeader","headers","forEach","value","key","element","postponed","resume","ComponentMod","payload","clientModules","renderToReadableStream","stream","webStreamToString","streamOptions","renderToInitialFizzStream","ReactDOMServer","allReady","abort","postponedState","prerender","sentinel","isPartial","staleTime","pipeThrough","createRuntimePrefetchTransformStream"],"mappings":"AAAA;;;CAGC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6ECA,YAAY;eAAZA,kCAAY;;IAFZC,yBAAyB;eAAzBA,+CAAyB;;IAFzBC,wBAAwB;eAAxBA,8CAAwB;;IAeVC,kBAAkB;eAAlBA;;IAddC,+BAA+B;eAA/BA,qDAA+B;;IAF/BC,uBAAuB;eAAvBA,6CAAuB;;IAMvBC,2BAA2B;eAA3BA,iDAA2B;;IA0BbC,uBAAuB;eAAvBA;;IAgBAC,uBAAuB;eAAvBA;;IAJAC,mBAAmB;eAAnBA;;IAkEHC,kBAAkB;eAAlBA;;IANGC,kBAAkB;eAAlBA;;IAhFHC,iBAAiB;eAAjBA;;IAyFGC,4BAA4B;eAA5BA;;IAxGPC,cAAc;eAAdA,uCAAc;;IA0EDC,kBAAkB;eAAlBA;;IAbNC,oBAAoB;eAApBA;;IAZMC,cAAc;eAAdA;;IAqCAC,kBAAkB;eAAlBA;;IA3FpBC,cAAc;eAAdA,oCAAc;;IA2EMC,cAAc;eAAdA;;;wBApJyB;wBACrB;sCAOnB;mCACyC;yCAqEjB;AAOxB,SAASjB,mBACdkB,YAAuB,EACvBC,IAA+B;IAE/B,OAAOC,IAAAA,wCAAqB,EAACF,cAAqBC;AACpD;AAGO,MAAMV,oBAEGY;AAMT,SAASjB,wBACdkB,MAAiB,EACjBC,KAAyB,EACzBC,SAAyB;IAEzB,OAAOC,IAAAA,kDAA+B,EACpCH,QACAC,OACAC;AAEJ;AAEO,SAASlB;IACd,OAAO,IAAIoB;AACb;AAEO,SAASrB,wBACdsB,YAAkD;IAElD,OAAO,CAACC;QACNA,QAAQC,OAAO,CAAC,CAACC,OAAOC;YACtBJ,aAAaI,KAAKD;QACpB;IACF;AACF;AAEO,eAAehB,eACpBkB,OAA2B,EAC3BC,SAAgC,EAChCd,IAAuD;IAEvD,OAAOe,IAAAA,cAAM,EACXF,SACAC,WACAd;AAEJ;AAEO,SAASN,qBACdsB,YAAgC,EAChCC,OAAsB,EACtBC,aAAkC,EAClClB,IAAyB;IAEzB,OAAOgB,aAAaG,sBAAsB,CAACF,SAASC,eAAelB;AACrE;AAEO,eAAeF,eAAesB,MAAiB;IACpD,OAAOC,IAAAA,oCAAiB,EAACD;AAC3B;AAEO,eAAe3B,mBACpBoB,OAA2B,EAC3BS,aAAkB;IAElB,MAAMF,SAAS,MAAMG,IAAAA,+CAAyB,EAAC;QAC7CC,gBAAgB;YAAEL,wBAAAA,8BAAsB;QAAC;QACzCN;QACAS;IACF;IACA,OAAO;QAAEF;QAAQK,UAAUL,OAAOK,QAAQ;QAAEC,OAAOxB;IAAU;AAC/D;AAEO,eAAeN,mBACpBiB,OAA2B,EAC3Bc,cAA8B,EAC9BL,aAAkB;IAElB,MAAMF,SAAS,MAAML,IAAAA,cAAM,EAACF,SAASc,gBAAgBL;IACrD,OAAO;QAAEF;QAAQK,UAAUL,OAAOK,QAAQ;QAAEC,OAAOxB;IAAU;AAC/D;AAEO,SAASb,mBACd2B,YAAyC;IAEzC,OAAOA,aAAaY,SAAS;AAC/B;AAEO,MAAMxC,qBACXwC,iBAAS;AAEJ,SAASrC,6BACd6B,MAAiB,EACjBS,QAAgB,EAChBC,SAAkB,EAClBC,SAAiB;IAEjB,OAAO,AAACX,OAAsCY,WAAW,CACvDC,IAAAA,0DAAoC,EAACJ,UAAUC,WAAWC;AAE9D","ignoreList":[0]}