@tanstack/solid-router
Version:
Modern and scalable routing for Solid applications
36 lines • 1.37 kB
JSX
import * as Solid from 'solid-js/web';
import { makeSsrSerovalPlugin } from '@tanstack/router-core';
export const renderRouterToString = async ({ router, responseHeaders, children, }) => {
try {
const serializationAdapters = router.options?.serializationAdapters ||
router.options.ssr?.serializationAdapters;
const serovalPlugins = serializationAdapters?.map((adapter) => {
const plugin = makeSsrSerovalPlugin(adapter, { didRun: false });
return plugin;
});
let html = Solid.renderToString(children, {
nonce: router.options.ssr?.nonce,
plugins: serovalPlugins,
});
router.serverSsr.setRenderFinished();
const injectedHtml = router.serverSsr.takeBufferedHtml();
if (injectedHtml) {
html = html.replace(`</body>`, () => `${injectedHtml}</body>`);
}
return new Response(`<!DOCTYPE html>${html}`, {
status: router.state.statusCode,
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();
}
};
//# sourceMappingURL=renderRouterToString.jsx.map