@tanstack/router-core
Version:
Modern and scalable routing for React applications
30 lines (28 loc) • 777 B
text/typescript
import { getSsrStatus } from './handlerCallback'
import { transformHtmlStringWithRouter } from './transformStreamWithRouter'
import type { AnyRouter } from '../router'
export async function renderSsrHtmlResponse({
router,
responseHeaders,
render,
}: {
router: AnyRouter
responseHeaders: Headers
render: () => string | Promise<string>
}) {
try {
const html = await transformHtmlStringWithRouter(router, await render())
return new Response(html, {
status: getSsrStatus(router),
headers: responseHeaders,
})
} catch (error) {
console.error('Render to string error:', error)
return new Response('Internal Server Error', {
status: 500,
headers: responseHeaders,
})
} finally {
router.serverSsr?.cleanup()
}
}