UNPKG

rsbuild-plugin-react-router

Version:
32 lines (31 loc) 1.94 kB
import * as __WEBPACK_EXTERNAL_MODULE_node_stream_444d1c2b__ from "node:stream"; import * as __WEBPACK_EXTERNAL_MODULE__react_router_node_fff52f02__ from "@react-router/node"; import * as __WEBPACK_EXTERNAL_MODULE_isbot__ from "isbot"; import * as __WEBPACK_EXTERNAL_MODULE_react__ from "react"; import * as __WEBPACK_EXTERNAL_MODULE_react_dom_server_98c38d5c__ from "react-dom/server"; import * as __WEBPACK_EXTERNAL_MODULE_react_router_65608a1a__ from "react-router"; function handleRequest(request, responseStatusCode, responseHeaders, routerContext) { return new Promise((resolve, reject)=>{ let shellRendered = !1, statusCode = responseStatusCode, userAgent = request.headers.get('user-agent'), readyOption = userAgent && (0, __WEBPACK_EXTERNAL_MODULE_isbot__.isbot)(userAgent) || routerContext.isSpaMode ? 'onAllReady' : 'onShellReady', { pipe, abort } = (0, __WEBPACK_EXTERNAL_MODULE_react_dom_server_98c38d5c__.renderToPipeableStream)(__WEBPACK_EXTERNAL_MODULE_react__.createElement(__WEBPACK_EXTERNAL_MODULE_react_router_65608a1a__.ServerRouter, { context: routerContext, url: request.url }), { [readyOption] () { shellRendered = !0; let body = new __WEBPACK_EXTERNAL_MODULE_node_stream_444d1c2b__.PassThrough(), stream = (0, __WEBPACK_EXTERNAL_MODULE__react_router_node_fff52f02__.createReadableStreamFromReadable)(body); responseHeaders.set('Content-Type', 'text/html'), resolve(new Response(stream, { headers: responseHeaders, status: statusCode })), pipe(body); }, onShellError (error) { reject(error); }, onError (error) { statusCode = 500, shellRendered && console.error(error); } }); setTimeout(abort, 5000); }); } export { handleRequest as default };