UNPKG

@tanstack/solid-router

Version:

Modern and scalable routing for Solid applications

1 lines 2.65 kB
{"version":3,"file":"renderRouterToStream.cjs","names":["Solid","isbot","transformReadableStreamWithRouter","makeSsrSerovalPlugin","JSXElement","ReadableStream","AnyRouter","renderRouterToStream","request","router","responseHeaders","children","Request","Headers","writable","readable","TransformStream","serializationAdapters","options","ssr","serovalPlugins","map","adapter","plugin","didRun","stream","renderToStream","nonce","plugins","headers","get","pipeTo","responseStream","Response","status","stores","statusCode","state"],"sources":["../../../src/ssr/renderRouterToStream.tsx"],"sourcesContent":["import * as Solid from '@solidjs/web'\nimport { isbot } from 'isbot'\nimport { transformReadableStreamWithRouter } from '@tanstack/router-core/ssr/server'\nimport { makeSsrSerovalPlugin } from '@tanstack/router-core'\nimport type { JSXElement } from 'solid-js'\nimport type { ReadableStream } from 'node:stream/web'\nimport type { AnyRouter } from '@tanstack/router-core'\n\nexport const renderRouterToStream = async ({\n request,\n router,\n responseHeaders,\n children,\n}: {\n request: Request\n router: AnyRouter\n responseHeaders: Headers\n children: () => JSXElement\n}) => {\n const { writable, readable } = new TransformStream()\n\n const serializationAdapters =\n (router.options as any)?.serializationAdapters ||\n (router.options.ssr as any)?.serializationAdapters\n const serovalPlugins = serializationAdapters?.map((adapter: any) => {\n const plugin = makeSsrSerovalPlugin(adapter, { didRun: false })\n return plugin\n })\n\n const stream = Solid.renderToStream(() => children, {\n nonce: router.options.ssr?.nonce,\n plugins: serovalPlugins,\n } as any)\n\n if (isbot(request.headers.get('User-Agent'))) {\n await stream\n }\n stream.pipeTo(writable)\n\n const responseStream = transformReadableStreamWithRouter(\n router,\n readable as unknown as ReadableStream,\n )\n return new Response(responseStream as any, {\n status: router.stores.statusCode.state,\n headers: responseHeaders,\n })\n}\n"],"mappings":";;;;;;;AAQA,IAAaO,uBAAuB,OAAO,EACzCC,SACAC,QACAC,iBACAC,eAMI;CACJ,MAAM,EAAEG,UAAUC,aAAa,IAAIC,iBAAiB;CAKpD,MAAMI,kBAFHX,OAAOS,SAAiBD,yBACxBR,OAAOS,QAAQC,KAAaF,wBACeI,KAAKC,YAAiB;AAElE,UAAA,GAAA,sBAAA,sBADoCA,SAAS,EAAEE,QAAQ,OAAO,CAAC;GAE/D;CAEF,MAAMC,SAASzB,aAAM0B,qBAAqBf,UAAU;EAClDgB,OAAOlB,OAAOS,QAAQC,KAAKQ;EAC3BC,SAASR;EACV,CAAQ;AAET,MAAA,GAAA,MAAA,OAAUZ,QAAQqB,QAAQC,IAAI,aAAa,CAAC,CAC1C,OAAML;AAERA,QAAOM,OAAOjB,SAAS;CAEvB,MAAMkB,kBAAAA,GAAAA,iCAAAA,mCACJvB,QACAM,SACD;AACD,QAAO,IAAIkB,SAASD,gBAAuB;EACzCE,QAAQzB,OAAO0B,OAAOC,WAAWC;EACjCR,SAASnB;EACV,CAAC"}