UNPKG

@tanstack/solid-router

Version:

Modern and scalable routing for Solid applications

41 lines (40 loc) 1.9 kB
const require_runtime = require("../_virtual/_rolldown/runtime.cjs"); const require_renderOptions = require("./renderOptions.cjs"); let solid_js_web = require("solid-js/web"); solid_js_web = require_runtime.__toESM(solid_js_web, 1); let _tanstack_router_core_ssr_server = require("@tanstack/router-core/ssr/server"); let isbot = require("isbot"); //#region src/ssr/renderRouterToStream.tsx var renderRouterToStream = async ({ request, router, responseHeaders, children }) => { const signal = request.signal; if (signal.aborted) { router.serverSsr?.cleanup(); throw signal.reason; } try { const docType = solid_js_web.ssr("<!DOCTYPE html>"); const stream = solid_js_web.renderToStream(() => [docType, (0, solid_js_web.memo)(children)], require_renderOptions.getSolidRenderOptions(router)); const { readable, writable } = new TransformStream(); const rendererAbort = (0, isbot.isbot)(request.headers.get("User-Agent")) ? new AbortController() : void 0; const responseStream = (0, _tanstack_router_core_ssr_server.transformReadableStreamWithRouter)(router, readable, { rendererSafePoint: "record-end", signal, onAbort: rendererAbort ? (reason) => rendererAbort.abort(reason) : void 0 }); if (rendererAbort) await (0, _tanstack_router_core_ssr_server.waitForRequest)(stream, rendererAbort.signal); Promise.resolve(stream.pipeTo(writable)).catch((error) => { console.error("Error in Solid render stream:", error); writable.abort(error).catch(() => {}); }); return (0, _tanstack_router_core_ssr_server.createSsrStreamResponse)(router, new Response(responseStream, { status: (0, _tanstack_router_core_ssr_server.getSsrStatus)(router), headers: responseHeaders })); } catch (error) { router.serverSsr?.cleanup(); throw error; } }; //#endregion exports.renderRouterToStream = renderRouterToStream; //# sourceMappingURL=renderRouterToStream.cjs.map