(
serverContext: TODO,
matchedRoutes?: ReadonlyArray<AnyRoute>,
)
| 540 | |
| 541 | // Router execution function |
| 542 | const executeRouter = async ( |
| 543 | serverContext: TODO, |
| 544 | matchedRoutes?: ReadonlyArray<AnyRoute>, |
| 545 | ): Promise<Response> => { |
| 546 | const acceptHeader = request.headers.get('Accept') || '*/*' |
| 547 | const acceptParts = acceptHeader.split(',') |
| 548 | const supportedMimeTypes = ['*/*', 'text/html'] |
| 549 | |
| 550 | const isSupported = supportedMimeTypes.some((mimeType) => |
| 551 | acceptParts.some((part) => part.trim().startsWith(mimeType)), |
| 552 | ) |
| 553 | |
| 554 | if (!isSupported) { |
| 555 | return Response.json( |
| 556 | { error: 'Only HTML requests are supported here' }, |
| 557 | { status: 500 }, |
| 558 | ) |
| 559 | } |
| 560 | |
| 561 | const manifest = await resolveManifest( |
| 562 | matchedRoutes, |
| 563 | await getTransformFn({ warmup: false, request }), |
| 564 | cache, |
| 565 | ) |
| 566 | const routerInstance = await getRouter() |
| 567 | |
| 568 | attachRouterServerSsrUtils({ |
| 569 | router: routerInstance, |
| 570 | manifest, |
| 571 | }) |
| 572 | |
| 573 | routerInstance.update({ additionalContext: { serverContext } }) |
| 574 | await routerInstance.load() |
| 575 | |
| 576 | if (routerInstance.state.redirect) { |
| 577 | return routerInstance.state.redirect |
| 578 | } |
| 579 | |
| 580 | await routerInstance.serverSsr!.dehydrate() |
| 581 | |
| 582 | const responseHeaders = getStartResponseHeaders({ |
| 583 | router: routerInstance, |
| 584 | }) |
| 585 | cbWillCleanup = true |
| 586 | |
| 587 | return cb({ |
| 588 | request, |
| 589 | router: routerInstance, |
| 590 | responseHeaders, |
| 591 | }) |
| 592 | } |
| 593 | |
| 594 | // Main request handler |
| 595 | const requestHandlerMiddleware = async ({ context }: TODO) => { |
no test coverage detected