UNPKG

@tanstack/solid-router

Version:

Modern and scalable routing for Solid applications

31 lines 1.27 kB
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