@tanstack/react-router
Version:
Modern and scalable routing for React applications
1 lines • 1.56 kB
Source Map (JSON)
{"version":3,"file":"renderRouterToString.cjs","names":[],"sources":["../../../src/ssr/renderRouterToString.tsx"],"sourcesContent":["import ReactDOMServer from 'react-dom/server'\nimport type { ReactNode } from 'react'\nimport type { AnyRouter } from '@tanstack/router-core'\n\nexport const renderRouterToString = async ({\n router,\n responseHeaders,\n children,\n}: {\n router: AnyRouter\n responseHeaders: Headers\n children: ReactNode\n}) => {\n try {\n let html = ReactDOMServer.renderToString(children)\n router.serverSsr!.setRenderFinished()\n\n const injectedHtml = router.serverSsr!.takeBufferedHtml()\n if (injectedHtml) {\n html = html.replace(`</body>`, () => `${injectedHtml}</body>`)\n }\n\n return new Response(`<!DOCTYPE html>${html}`, {\n status: router.stores.statusCode.get(),\n headers: responseHeaders,\n })\n } catch (error) {\n console.error('Render to string error:', error)\n return new Response('Internal Server Error', {\n status: 500,\n headers: responseHeaders,\n })\n } finally {\n router.serverSsr?.cleanup()\n }\n}\n"],"mappings":";;;;AAIA,IAAa,uBAAuB,OAAO,EACzC,QACA,iBACA,eAKI;CACJ,IAAI;EACF,IAAI,OAAO,iBAAA,QAAe,eAAe,QAAQ;EACjD,OAAO,UAAW,kBAAkB;EAEpC,MAAM,eAAe,OAAO,UAAW,iBAAiB;EACxD,IAAI,cACF,OAAO,KAAK,QAAQ,iBAAiB,GAAG,aAAa,QAAQ;EAG/D,OAAO,IAAI,SAAS,kBAAkB,QAAQ;GAC5C,QAAQ,OAAO,OAAO,WAAW,IAAI;GACrC,SAAS;EACX,CAAC;CACH,SAAS,OAAO;EACd,QAAQ,MAAM,2BAA2B,KAAK;EAC9C,OAAO,IAAI,SAAS,yBAAyB;GAC3C,QAAQ;GACR,SAAS;EACX,CAAC;CACH,UAAU;EACR,OAAO,WAAW,QAAQ;CAC5B;AACF"}