/
githubmr
/
facebook-react
Обзор
Документация
Войти
/
githubmr
/
facebook-react
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
v18.2.0
packages/react-server-dom-webpack/src/ReactFlightDOMServerNode.js
64 строки
2 KB
Sebastian Markbåge
Remove extra Server Context argument (#24683)
07 июн 2022, 22:12
Не верифицирован
07 июн 2022, 22:12
7e8a020
Код
Авторство
О чём код?
/** * Copyright (c) Facebook, Inc. and its 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 {ReactModel} from 'react-server/src/ReactFlightServer'; import type {BundlerConfig} from './ReactFlightServerWebpackBundlerConfig'; import type {Writable} from 'stream'; import type {ServerContextJSONValue} from 'shared/ReactTypes'; import { createRequest, startWork, startFlowing, } from 'react-server/src/ReactFlightServer'; function createDrainHandler(destination, request) { return () => startFlowing(request, destination); } type Options = { onError?: (error: mixed) => void, context?: Array<[string, ServerContextJSONValue]>, identifierPrefix?: string, }; type PipeableStream = {| pipe<T: Writable>(destination: T): T, |}; function renderToPipeableStream( model: ReactModel, webpackMap: BundlerConfig, options?: Options, ): PipeableStream { const request = createRequest( model, webpackMap, options ? options.onError : undefined, options ? options.context : undefined, options ? options.identifierPrefix : undefined, ); let hasStartedFlowing = false; startWork(request); return { pipe<T: Writable>(destination: T): T { if (hasStartedFlowing) { throw new Error( 'React currently only supports piping to one writable stream.', ); } hasStartedFlowing = true; startFlowing(request, destination); destination.on('drain', createDrainHandler(destination, request)); return destination; }, }; } export {renderToPipeableStream};