|
1 | | -import { PassThrough } from 'node:stream'; |
2 | | -import { createReadableStreamFromReadable } from '@react-router/node'; |
3 | | -import { renderToPipeableStream } from 'react-dom/server'; |
4 | | -import { ServerRouter, type EntryContext } from 'react-router'; |
| 1 | +import { handleRequest } from '@vercel/react-router/entry.server'; |
| 2 | +import type { AppLoadContext, EntryContext } from 'react-router'; |
5 | 3 |
|
6 | | -export default function handleRequest( |
| 4 | +export default async function handleServerRequest( |
7 | 5 | request: Request, |
8 | 6 | responseStatusCode: number, |
9 | 7 | responseHeaders: Headers, |
10 | | - routerContext: EntryContext |
11 | | -) { |
12 | | - return new Promise((resolve, reject) => { |
13 | | - const { pipe } = renderToPipeableStream( |
14 | | - <ServerRouter context={routerContext} url={request.url} />, |
15 | | - { |
16 | | - onShellReady() { |
17 | | - responseHeaders.set('Content-Type', 'text/html'); |
18 | | - |
19 | | - const body = new PassThrough(); |
20 | | - const stream = createReadableStreamFromReadable(body); |
21 | | - |
22 | | - resolve( |
23 | | - new Response(stream, { |
24 | | - headers: responseHeaders, |
25 | | - status: responseStatusCode, |
26 | | - }) |
27 | | - ); |
28 | | - |
29 | | - pipe(body); |
30 | | - }, |
31 | | - onShellError(error: unknown) { |
32 | | - reject(error); |
33 | | - }, |
34 | | - } |
35 | | - ); |
36 | | - }); |
| 8 | + routerContext: EntryContext, |
| 9 | + loadContext?: AppLoadContext |
| 10 | +): Promise<Response> { |
| 11 | + return handleRequest(request, responseStatusCode, responseHeaders, routerContext, loadContext); |
37 | 12 | } |
0 commit comments