@tanstack/solid-router
Version:
Modern and scalable routing for Solid applications
28 lines (27 loc) • 1.19 kB
JavaScript
import { makeSsrSerovalPlugin } from "@tanstack/router-core";
import * as Solid from "solid-js/web";
import { memo } from "solid-js/web";
import { transformReadableStreamWithRouter } from "@tanstack/router-core/ssr/server";
import { isbot } from "isbot";
//#region src/ssr/renderRouterToStream.tsx
var renderRouterToStream = async ({ request, router, responseHeaders, children }) => {
const { writable, readable } = new TransformStream();
const docType = Solid.ssr("<!DOCTYPE html>");
const serovalPlugins = (router.options?.serializationAdapters || router.options.ssr?.serializationAdapters)?.map((adapter) => {
return makeSsrSerovalPlugin(adapter, { didRun: false });
});
const stream = Solid.renderToStream(() => [docType, memo(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
});
};
//#endregion
export { renderRouterToStream };
//# sourceMappingURL=renderRouterToStream.js.map