Home / File/ ReactDOMServerFB.js — react Source File

ReactDOMServerFB.js — react Source File

Architecture documentation for ReactDOMServerFB.js, a javascript file in the react codebase. 5 imports, 0 dependents.

File javascript BabelCompiler Validation 5 imports 6 functions

Entity Profile

Dependency Diagram

graph LR
  d055cb24_73d6_ffe8_0232_7ee0d7126941["ReactDOMServerFB.js"]
  d8f20c67_f5fa_0f0a_c967_c41fd9ffce07["ReactTypes"]
  d055cb24_73d6_ffe8_0232_7ee0d7126941 --> d8f20c67_f5fa_0f0a_c967_c41fd9ffce07
  ca40cfc0_4531_f3fa_7600_53b0400a208c["ReactFizzServer"]
  d055cb24_73d6_ffe8_0232_7ee0d7126941 --> ca40cfc0_4531_f3fa_7600_53b0400a208c
  a32ef50b_1b7d_cd2b_b3ca_369cc41a517f["ReactServerStreamConfig"]
  d055cb24_73d6_ffe8_0232_7ee0d7126941 --> a32ef50b_1b7d_cd2b_b3ca_369cc41a517f
  0007d323_0c7d_faa0_6434_4c73e7b3d66e["ReactFizzConfigDOM"]
  d055cb24_73d6_ffe8_0232_7ee0d7126941 --> 0007d323_0c7d_faa0_6434_4c73e7b3d66e
  32b7cc1b_f9ba_d1ed_91c2_d9ab41454fe3["ReactFizzConfig"]
  d055cb24_73d6_ffe8_0232_7ee0d7126941 --> 32b7cc1b_f9ba_d1ed_91c2_d9ab41454fe3
  style d055cb24_73d6_ffe8_0232_7ee0d7126941 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

/**
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @flow
 */

import type {ReactNodeList} from 'shared/ReactTypes';

import type {Request} from 'react-server/src/ReactFizzServer';

import type {Destination} from 'react-server/src/ReactServerStreamConfig';
import type {BootstrapScriptDescriptor} from 'react-dom-bindings/src/server/ReactFizzConfigDOM';

import {
  createRequest,
  startWork,
  performWork,
  startFlowing,
  abort,
} from 'react-server/src/ReactFizzServer';

import {
  createResumableState,
  createRenderState,
  createRootFormatContext,
} from 'react-server/src/ReactFizzConfig';

type Options = {
  identifierPrefix?: string,
  bootstrapScriptContent?: string,
  bootstrapScripts: Array<string>,
  bootstrapModules: Array<string>,
  progressiveChunkSize?: number,
  onError: (error: mixed) => void,
  unstable_externalRuntimeSrc?: string | BootstrapScriptDescriptor,
};

opaque type Stream = {
  destination: Destination,
  request: Request,
};

function renderToStream(children: ReactNodeList, options: Options): Stream {
  const destination = {
    buffer: '',
    done: false,
    fatal: false,
    error: null,
  };
  const resumableState = createResumableState(
    options ? options.identifierPrefix : undefined,
    options ? options.unstable_externalRuntimeSrc : undefined,
    options ? options.bootstrapScriptContent : undefined,
    options ? options.bootstrapScripts : undefined,
    options ? options.bootstrapModules : undefined,
  );
  const request = createRequest(
    children,
    resumableState,
    createRenderState(
      resumableState,
      undefined,
      options ? options.unstable_externalRuntimeSrc : undefined,
    ),
    createRootFormatContext(undefined),
    options ? options.progressiveChunkSize : undefined,
    options.onError,
    undefined,
    undefined,
  );
  startWork(request);
  if (destination.fatal) {
    throw destination.error;
  }
  return {
    destination,
    request,
  };
}

function abortStream(stream: Stream, reason: mixed): void {
  abort(stream.request, reason);
}

function renderNextChunk(stream: Stream): string {
  const {request, destination} = stream;
  performWork(request);
  startFlowing(request, destination);
  if (destination.fatal) {
    throw destination.error;
  }
  const chunk = destination.buffer;
  destination.buffer = '';
  return chunk;
}

function hasFinished(stream: Stream): boolean {
  return stream.destination.done;
}

function debug(stream: Stream): any {
  // convert to any to silence flow errors from opaque type
  const request = (stream.request: any);
  return {
    pendingRootTasks: request.pendingRootTasks,
    clientRenderedBoundaries: request.clientRenderedBoundaries.length,
    completedBoundaries: request.completedBoundaries.length,
    partialBoundaries: request.partialBoundaries.length,
    allPendingTasks: request.allPendingTasks,
    pingedTasks: request.pingedTasks.length,
  };
}

export {renderToStream, renderNextChunk, hasFinished, abortStream, debug};

Domain

Subdomains

Dependencies

  • ReactFizzConfig
  • ReactFizzConfigDOM
  • ReactFizzServer
  • ReactServerStreamConfig
  • ReactTypes

Frequently Asked Questions

What does ReactDOMServerFB.js do?
ReactDOMServerFB.js is a source file in the react codebase, written in javascript. It belongs to the BabelCompiler domain, Validation subdomain.
What functions are defined in ReactDOMServerFB.js?
ReactDOMServerFB.js defines 6 function(s): Options.onError, abortStream, debug, hasFinished, renderNextChunk, renderToStream.
What does ReactDOMServerFB.js depend on?
ReactDOMServerFB.js imports 5 module(s): ReactFizzConfig, ReactFizzConfigDOM, ReactFizzServer, ReactServerStreamConfig, ReactTypes.
Where is ReactDOMServerFB.js in the architecture?
ReactDOMServerFB.js is located at packages/react-server-dom-fb/src/ReactDOMServerFB.js (domain: BabelCompiler, subdomain: Validation, directory: packages/react-server-dom-fb/src).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free