@tanstack/solid-router
Version:
Modern and scalable routing for Solid applications
31 lines • 1.27 kB
JSX
import * as Solid from 'solid-js/web';
import { isbot } from 'isbot';
import { transformReadableStreamWithRouter } from '@tanstack/router-core/ssr/server';
import { makeSsrSerovalPlugin } from '@tanstack/router-core';
export const renderRouterToStream = async ({ request, router, responseHeaders, children, }) => {
const { writable, readable } = new TransformStream();
const docType = Solid.ssr('<!DOCTYPE html>');
const serializationAdapters = router.options?.serializationAdapters ||
router.options.ssr?.serializationAdapters;
const serovalPlugins = serializationAdapters?.map((adapter) => {
const plugin = makeSsrSerovalPlugin(adapter, { didRun: false });
return plugin;
});
const stream = Solid.renderToStream(() => (<>
{docType}
{children()}
</>), {
nonce: router.options.ssr?.nonce,
plugins: serovalPlugins,
});
if (isbot(request.headers.get('User-Agent'))) {
await stream;
}
stream.pipeTo(writable);
const responseStream = transformReadableStreamWithRouter(router, readable);
return new Response(responseStream, {
status: router.state.statusCode,
headers: responseHeaders,
});
};
//# sourceMappingURL=renderRouterToStream.jsx.map