@tanstack/solid-router 1.133.31 → 1.133.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -33,7 +33,14 @@ function useAwaited({
33
33
  return [promise[routerCore.TSR_DEFERRED_PROMISE].data, promise];
34
34
  }
35
35
  function Await(props) {
36
- const [resource] = Solid__namespace.createResource(() => props.promise);
36
+ const [resource] = Solid__namespace.createResource(
37
+ () => routerCore.defer(props.promise),
38
+ // Simple passthrough - just return the promise for Solid to await
39
+ (p) => p,
40
+ {
41
+ deferStream: true
42
+ }
43
+ );
37
44
  return Solid$1.createComponent(Solid__namespace.Show, {
38
45
  get fallback() {
39
46
  return props.fallback;
@@ -1 +1 @@
1
- {"version":3,"file":"awaited.cjs","sources":["../../src/awaited.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\n\nimport { TSR_DEFERRED_PROMISE, defer } from '@tanstack/router-core'\nimport type { DeferredPromise } from '@tanstack/router-core'\nimport type { SolidNode } from './route'\n\nexport type AwaitOptions<T> = {\n promise: Promise<T>\n}\n\nexport function useAwaited<T>({\n promise: _promise,\n}: AwaitOptions<T>): [T, DeferredPromise<T>] {\n const promise = defer(_promise)\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'pending') {\n throw promise\n }\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'error') {\n throw promise[TSR_DEFERRED_PROMISE].error\n }\n\n return [promise[TSR_DEFERRED_PROMISE].data, promise]\n}\n\nexport function Await<T>(\n props: AwaitOptions<T> & {\n fallback?: SolidNode\n children: (result: T) => SolidNode\n },\n) {\n const [resource] = Solid.createResource(() => props.promise)\n\n return (\n <Solid.Show fallback={props.fallback} when={resource()}>\n {(data) => props.children(data())}\n </Solid.Show>\n )\n}\n"],"names":["useAwaited","promise","_promise","defer","TSR_DEFERRED_PROMISE","status","error","data","Await","props","resource","Solid","createResource","_$createComponent","Show","fallback","when","children"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAUO,SAASA,WAAc;AAAA,EAC5BC,SAASC;AACM,GAA4B;AAC3C,QAAMD,UAAUE,WAAAA,MAAMD,QAAQ;AAE9B,MAAID,QAAQG,WAAAA,oBAAoB,EAAEC,WAAW,WAAW;AACtD,UAAMJ;AAAAA,EACR;AAEA,MAAIA,QAAQG,WAAAA,oBAAoB,EAAEC,WAAW,SAAS;AACpD,UAAMJ,QAAQG,WAAAA,oBAAoB,EAAEE;AAAAA,EACtC;AAEA,SAAO,CAACL,QAAQG,WAAAA,oBAAoB,EAAEG,MAAMN,OAAO;AACrD;AAEO,SAASO,MACdC,OAIA;AACA,QAAM,CAACC,QAAQ,IAAIC,iBAAMC,eAAe,MAAMH,MAAMR,OAAO;AAE3D,SAAAY,QAAAA,gBACGF,iBAAMG,MAAI;AAAA,IAAA,IAACC,WAAQ;AAAA,aAAEN,MAAMM;AAAAA,IAAQ;AAAA,IAAA,IAAEC,OAAI;AAAA,aAAEN,SAAAA;AAAAA,IAAU;AAAA,IAAAO,UAClDV,CAAAA,SAASE,MAAMQ,SAASV,MAAM;AAAA,EAAA,CAAC;AAGvC;;;"}
1
+ {"version":3,"file":"awaited.cjs","sources":["../../src/awaited.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\n\nimport { TSR_DEFERRED_PROMISE, defer } from '@tanstack/router-core'\nimport type { DeferredPromise } from '@tanstack/router-core'\nimport type { SolidNode } from './route'\n\nexport type AwaitOptions<T> = {\n promise: Promise<T>\n}\n\nexport function useAwaited<T>({\n promise: _promise,\n}: AwaitOptions<T>): [T, DeferredPromise<T>] {\n const promise = defer(_promise)\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'pending') {\n throw promise\n }\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'error') {\n throw promise[TSR_DEFERRED_PROMISE].error\n }\n\n return [promise[TSR_DEFERRED_PROMISE].data, promise]\n}\n\nexport function Await<T>(\n props: AwaitOptions<T> & {\n fallback?: SolidNode\n children: (result: T) => SolidNode\n },\n) {\n const [resource] = Solid.createResource(\n () => defer(props.promise),\n // Simple passthrough - just return the promise for Solid to await\n (p) => p,\n {\n deferStream: true,\n },\n )\n\n return (\n <Solid.Show fallback={props.fallback} when={resource()}>\n {(data) => props.children(data())}\n </Solid.Show>\n )\n}\n"],"names":["useAwaited","promise","_promise","defer","TSR_DEFERRED_PROMISE","status","error","data","Await","props","resource","Solid","createResource","p","deferStream","_$createComponent","Show","fallback","when","children"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAUO,SAASA,WAAc;AAAA,EAC5BC,SAASC;AACM,GAA4B;AAC3C,QAAMD,UAAUE,WAAAA,MAAMD,QAAQ;AAE9B,MAAID,QAAQG,WAAAA,oBAAoB,EAAEC,WAAW,WAAW;AACtD,UAAMJ;AAAAA,EACR;AAEA,MAAIA,QAAQG,WAAAA,oBAAoB,EAAEC,WAAW,SAAS;AACpD,UAAMJ,QAAQG,WAAAA,oBAAoB,EAAEE;AAAAA,EACtC;AAEA,SAAO,CAACL,QAAQG,WAAAA,oBAAoB,EAAEG,MAAMN,OAAO;AACrD;AAEO,SAASO,MACdC,OAIA;AACA,QAAM,CAACC,QAAQ,IAAIC,iBAAMC;AAAAA,IACvB,MAAMT,WAAAA,MAAMM,MAAMR,OAAO;AAAA;AAAA,IAExBY,CAAAA,MAAMA;AAAAA,IACP;AAAA,MACEC,aAAa;AAAA,IAAA;AAAA,EACf;AAGF,SAAAC,QAAAA,gBACGJ,iBAAMK,MAAI;AAAA,IAAA,IAACC,WAAQ;AAAA,aAAER,MAAMQ;AAAAA,IAAQ;AAAA,IAAA,IAAEC,OAAI;AAAA,aAAER,SAAAA;AAAAA,IAAU;AAAA,IAAAS,UAClDZ,CAAAA,SAASE,MAAMU,SAASZ,MAAM;AAAA,EAAA,CAAC;AAGvC;;;"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const Solid = require("solid-js/web");
4
4
  const isbot = require("isbot");
5
5
  const server = require("@tanstack/router-core/ssr/server");
6
+ const routerCore = require("@tanstack/router-core");
6
7
  function _interopNamespaceDefault(e) {
7
8
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
8
9
  if (e) {
@@ -31,8 +32,16 @@ const renderRouterToStream = async ({
31
32
  readable
32
33
  } = new TransformStream();
33
34
  const docType = Solid__namespace.ssr("<!DOCTYPE html>");
35
+ const serializationAdapters = router.options?.serializationAdapters || router.options.ssr?.serializationAdapters;
36
+ const serovalPlugins = serializationAdapters?.map((adapter) => {
37
+ const plugin = routerCore.makeSsrSerovalPlugin(adapter, {
38
+ didRun: false
39
+ });
40
+ return plugin;
41
+ });
34
42
  const stream = Solid__namespace.renderToStream(() => [docType, Solid.memo(children)], {
35
- nonce: router.options.ssr?.nonce
43
+ nonce: router.options.ssr?.nonce,
44
+ plugins: serovalPlugins
36
45
  });
37
46
  if (isbot.isbot(request.headers.get("User-Agent"))) {
38
47
  await stream;
@@ -1 +1 @@
1
- {"version":3,"file":"renderRouterToStream.cjs","sources":["../../../src/ssr/renderRouterToStream.tsx"],"sourcesContent":["import * as Solid from 'solid-js/web'\nimport { isbot } from 'isbot'\nimport { transformReadableStreamWithRouter } from '@tanstack/router-core/ssr/server'\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 docType = Solid.ssr('<!DOCTYPE html>')\n\n const stream = Solid.renderToStream(\n () => (\n <>\n {docType}\n {children()}\n </>\n ),\n {\n nonce: router.options.ssr?.nonce,\n },\n )\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.state.statusCode,\n headers: responseHeaders,\n })\n}\n"],"names":["renderRouterToStream","request","router","responseHeaders","children","writable","readable","TransformStream","docType","Solid","ssr","stream","renderToStream","_$memo","nonce","options","isbot","headers","get","pipeTo","responseStream","transformReadableStreamWithRouter","Response","status","state","statusCode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAOO,MAAMA,uBAAuB,OAAO;AAAA,EACzCC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAMF,MAAM;AACJ,QAAM;AAAA,IAAEC;AAAAA,IAAUC;AAAAA,EAAAA,IAAa,IAAIC,gBAAAA;AAEnC,QAAMC,UAAUC,iBAAMC,IAAI,iBAAiB;AAE3C,QAAMC,SAASF,iBAAMG,eACnB,MAAA,CAEKJ,SAAOK,MAAAA,KACPT,QAAQ,IAGb;AAAA,IACEU,OAAOZ,OAAOa,QAAQL,KAAKI;AAAAA,EAAAA,CAE/B;AAEA,MAAIE,MAAAA,MAAMf,QAAQgB,QAAQC,IAAI,YAAY,CAAC,GAAG;AAC5C,UAAMP;AAAAA,EACR;AACAA,SAAOQ,OAAOd,QAAQ;AAEtB,QAAMe,iBAAiBC,OAAAA,kCACrBnB,QACAI,QACF;AACA,SAAO,IAAIgB,SAASF,gBAAuB;AAAA,IACzCG,QAAQrB,OAAOsB,MAAMC;AAAAA,IACrBR,SAASd;AAAAA,EAAAA,CACV;AACH;;"}
1
+ {"version":3,"file":"renderRouterToStream.cjs","sources":["../../../src/ssr/renderRouterToStream.tsx"],"sourcesContent":["import * as Solid from 'solid-js/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 docType = Solid.ssr('<!DOCTYPE html>')\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(\n () => (\n <>\n {docType}\n {children()}\n </>\n ),\n {\n nonce: router.options.ssr?.nonce,\n plugins: serovalPlugins,\n } as any,\n )\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.state.statusCode,\n headers: responseHeaders,\n })\n}\n"],"names":["renderRouterToStream","request","router","responseHeaders","children","writable","readable","TransformStream","docType","Solid","ssr","serializationAdapters","options","serovalPlugins","map","adapter","plugin","makeSsrSerovalPlugin","didRun","stream","renderToStream","_$memo","nonce","plugins","isbot","headers","get","pipeTo","responseStream","transformReadableStreamWithRouter","Response","status","state","statusCode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAQO,MAAMA,uBAAuB,OAAO;AAAA,EACzCC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAMF,MAAM;AACJ,QAAM;AAAA,IAAEC;AAAAA,IAAUC;AAAAA,EAAAA,IAAa,IAAIC,gBAAAA;AAEnC,QAAMC,UAAUC,iBAAMC,IAAI,iBAAiB;AAE3C,QAAMC,wBACHT,OAAOU,SAAiBD,yBACxBT,OAAOU,QAAQF,KAAaC;AAC/B,QAAME,iBAAiBF,uBAAuBG,IAAI,CAACC,YAAiB;AAClE,UAAMC,SAASC,WAAAA,qBAAqBF,SAAS;AAAA,MAAEG,QAAQ;AAAA,IAAA,CAAO;AAC9D,WAAOF;AAAAA,EACT,CAAC;AAED,QAAMG,SAASV,iBAAMW,eACnB,MAAA,CAEKZ,SAAOa,MAAAA,KACPjB,QAAQ,IAGb;AAAA,IACEkB,OAAOpB,OAAOU,QAAQF,KAAKY;AAAAA,IAC3BC,SAASV;AAAAA,EAAAA,CAEb;AAEA,MAAIW,MAAAA,MAAMvB,QAAQwB,QAAQC,IAAI,YAAY,CAAC,GAAG;AAC5C,UAAMP;AAAAA,EACR;AACAA,SAAOQ,OAAOtB,QAAQ;AAEtB,QAAMuB,iBAAiBC,OAAAA,kCACrB3B,QACAI,QACF;AACA,SAAO,IAAIwB,SAASF,gBAAuB;AAAA,IACzCG,QAAQ7B,OAAO8B,MAAMC;AAAAA,IACrBR,SAAStB;AAAAA,EAAAA,CACV;AACH;;"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const Solid = require("solid-js/web");
4
+ const routerCore = require("@tanstack/router-core");
4
5
  function _interopNamespaceDefault(e) {
5
6
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
6
7
  if (e) {
@@ -24,8 +25,16 @@ const renderRouterToString = async ({
24
25
  children
25
26
  }) => {
26
27
  try {
28
+ const serializationAdapters = router.options?.serializationAdapters || router.options.ssr?.serializationAdapters;
29
+ const serovalPlugins = serializationAdapters?.map((adapter) => {
30
+ const plugin = routerCore.makeSsrSerovalPlugin(adapter, {
31
+ didRun: false
32
+ });
33
+ return plugin;
34
+ });
27
35
  let html = Solid__namespace.renderToString(children, {
28
- nonce: router.options.ssr?.nonce
36
+ nonce: router.options.ssr?.nonce,
37
+ plugins: serovalPlugins
29
38
  });
30
39
  router.serverSsr.setRenderFinished();
31
40
  const injectedHtml = await Promise.all(router.serverSsr.injectedHtml).then((htmls) => htmls.join(""));
@@ -1 +1 @@
1
- {"version":3,"file":"renderRouterToString.cjs","sources":["../../../src/ssr/renderRouterToString.tsx"],"sourcesContent":["import * as Solid from 'solid-js/web'\nimport type { JSXElement } from 'solid-js'\nimport type { AnyRouter } from '@tanstack/router-core'\n\nexport const renderRouterToString = async ({\n router,\n responseHeaders,\n children,\n}: {\n router: AnyRouter\n responseHeaders: Headers\n children: () => JSXElement\n}) => {\n try {\n let html = Solid.renderToString(children, {\n nonce: router.options.ssr?.nonce,\n })\n router.serverSsr!.setRenderFinished()\n const injectedHtml = await Promise.all(router.serverSsr!.injectedHtml).then(\n (htmls) => htmls.join(''),\n )\n html = html.replace(`</body>`, `${injectedHtml}</body>`)\n return new Response(`<!DOCTYPE html>${html}`, {\n status: router.state.statusCode,\n headers: responseHeaders,\n })\n } catch (error) {\n console.error('Render to string error:', error)\n return new Response('Internal Server Error', {\n status: 500,\n headers: responseHeaders,\n })\n }\n}\n"],"names":["renderRouterToString","router","responseHeaders","children","html","Solid","renderToString","nonce","options","ssr","serverSsr","setRenderFinished","injectedHtml","Promise","all","then","htmls","join","replace","Response","status","state","statusCode","headers","error","console"],"mappings":";;;;;;;;;;;;;;;;;;;;AAIO,MAAMA,uBAAuB,OAAO;AAAA,EACzCC;AAAAA,EACAC;AAAAA,EACAC;AAKF,MAAM;AACJ,MAAI;AACF,QAAIC,OAAOC,iBAAMC,eAAeH,UAAU;AAAA,MACxCI,OAAON,OAAOO,QAAQC,KAAKF;AAAAA,IAAAA,CAC5B;AACDN,WAAOS,UAAWC,kBAAAA;AAClB,UAAMC,eAAe,MAAMC,QAAQC,IAAIb,OAAOS,UAAWE,YAAY,EAAEG,KACpEC,CAAAA,UAAUA,MAAMC,KAAK,EAAE,CAC1B;AACAb,WAAOA,KAAKc,QAAQ,WAAW,GAAGN,YAAY,SAAS;AACvD,WAAO,IAAIO,SAAS,kBAAkBf,IAAI,IAAI;AAAA,MAC5CgB,QAAQnB,OAAOoB,MAAMC;AAAAA,MACrBC,SAASrB;AAAAA,IAAAA,CACV;AAAA,EACH,SAASsB,OAAO;AACdC,YAAQD,MAAM,2BAA2BA,KAAK;AAC9C,WAAO,IAAIL,SAAS,yBAAyB;AAAA,MAC3CC,QAAQ;AAAA,MACRG,SAASrB;AAAAA,IAAAA,CACV;AAAA,EACH;AACF;;"}
1
+ {"version":3,"file":"renderRouterToString.cjs","sources":["../../../src/ssr/renderRouterToString.tsx"],"sourcesContent":["import * as Solid from 'solid-js/web'\nimport { makeSsrSerovalPlugin } from '@tanstack/router-core'\nimport type { AnyRouter } from '@tanstack/router-core'\nimport type { JSXElement } from 'solid-js'\n\nexport const renderRouterToString = async ({\n router,\n responseHeaders,\n children,\n}: {\n router: AnyRouter\n responseHeaders: Headers\n children: () => JSXElement\n}) => {\n try {\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 let html = Solid.renderToString(children, {\n nonce: router.options.ssr?.nonce,\n plugins: serovalPlugins,\n } as any)\n router.serverSsr!.setRenderFinished()\n const injectedHtml = await Promise.all(router.serverSsr!.injectedHtml).then(\n (htmls) => htmls.join(''),\n )\n html = html.replace(`</body>`, `${injectedHtml}</body>`)\n return new Response(`<!DOCTYPE html>${html}`, {\n status: router.state.statusCode,\n headers: responseHeaders,\n })\n } catch (error) {\n console.error('Render to string error:', error)\n return new Response('Internal Server Error', {\n status: 500,\n headers: responseHeaders,\n })\n }\n}\n"],"names":["renderRouterToString","router","responseHeaders","children","serializationAdapters","options","ssr","serovalPlugins","map","adapter","plugin","makeSsrSerovalPlugin","didRun","html","Solid","renderToString","nonce","plugins","serverSsr","setRenderFinished","injectedHtml","Promise","all","then","htmls","join","replace","Response","status","state","statusCode","headers","error","console"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAKO,MAAMA,uBAAuB,OAAO;AAAA,EACzCC;AAAAA,EACAC;AAAAA,EACAC;AAKF,MAAM;AACJ,MAAI;AACF,UAAMC,wBACHH,OAAOI,SAAiBD,yBACxBH,OAAOI,QAAQC,KAAaF;AAC/B,UAAMG,iBAAiBH,uBAAuBI,IAAI,CAACC,YAAiB;AAClE,YAAMC,SAASC,WAAAA,qBAAqBF,SAAS;AAAA,QAAEG,QAAQ;AAAA,MAAA,CAAO;AAC9D,aAAOF;AAAAA,IACT,CAAC;AAED,QAAIG,OAAOC,iBAAMC,eAAeZ,UAAU;AAAA,MACxCa,OAAOf,OAAOI,QAAQC,KAAKU;AAAAA,MAC3BC,SAASV;AAAAA,IAAAA,CACH;AACRN,WAAOiB,UAAWC,kBAAAA;AAClB,UAAMC,eAAe,MAAMC,QAAQC,IAAIrB,OAAOiB,UAAWE,YAAY,EAAEG,KACpEC,CAAAA,UAAUA,MAAMC,KAAK,EAAE,CAC1B;AACAZ,WAAOA,KAAKa,QAAQ,WAAW,GAAGN,YAAY,SAAS;AACvD,WAAO,IAAIO,SAAS,kBAAkBd,IAAI,IAAI;AAAA,MAC5Ce,QAAQ3B,OAAO4B,MAAMC;AAAAA,MACrBC,SAAS7B;AAAAA,IAAAA,CACV;AAAA,EACH,SAAS8B,OAAO;AACdC,YAAQD,MAAM,2BAA2BA,KAAK;AAC9C,WAAO,IAAIL,SAAS,yBAAyB;AAAA,MAC3CC,QAAQ;AAAA,MACRG,SAAS7B;AAAAA,IAAAA,CACV;AAAA,EACH;AACF;;"}
@@ -1,5 +1,5 @@
1
- import { JSXElement } from 'solid-js';
2
1
  import { AnyRouter } from '@tanstack/router-core';
2
+ import { JSXElement } from 'solid-js';
3
3
  export declare const renderRouterToString: ({ router, responseHeaders, children, }: {
4
4
  router: AnyRouter;
5
5
  responseHeaders: Headers;
@@ -14,7 +14,14 @@ function useAwaited({
14
14
  return [promise[TSR_DEFERRED_PROMISE].data, promise];
15
15
  }
16
16
  function Await(props) {
17
- const [resource] = Solid.createResource(() => props.promise);
17
+ const [resource] = Solid.createResource(
18
+ () => defer(props.promise),
19
+ // Simple passthrough - just return the promise for Solid to await
20
+ (p) => p,
21
+ {
22
+ deferStream: true
23
+ }
24
+ );
18
25
  return createComponent(Solid.Show, {
19
26
  get fallback() {
20
27
  return props.fallback;
@@ -1 +1 @@
1
- {"version":3,"file":"awaited.js","sources":["../../src/awaited.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\n\nimport { TSR_DEFERRED_PROMISE, defer } from '@tanstack/router-core'\nimport type { DeferredPromise } from '@tanstack/router-core'\nimport type { SolidNode } from './route'\n\nexport type AwaitOptions<T> = {\n promise: Promise<T>\n}\n\nexport function useAwaited<T>({\n promise: _promise,\n}: AwaitOptions<T>): [T, DeferredPromise<T>] {\n const promise = defer(_promise)\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'pending') {\n throw promise\n }\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'error') {\n throw promise[TSR_DEFERRED_PROMISE].error\n }\n\n return [promise[TSR_DEFERRED_PROMISE].data, promise]\n}\n\nexport function Await<T>(\n props: AwaitOptions<T> & {\n fallback?: SolidNode\n children: (result: T) => SolidNode\n },\n) {\n const [resource] = Solid.createResource(() => props.promise)\n\n return (\n <Solid.Show fallback={props.fallback} when={resource()}>\n {(data) => props.children(data())}\n </Solid.Show>\n )\n}\n"],"names":["useAwaited","promise","_promise","defer","TSR_DEFERRED_PROMISE","status","error","data","Await","props","resource","Solid","createResource","_$createComponent","Show","fallback","when","children"],"mappings":";;;AAUO,SAASA,WAAc;AAAA,EAC5BC,SAASC;AACM,GAA4B;AAC3C,QAAMD,UAAUE,MAAMD,QAAQ;AAE9B,MAAID,QAAQG,oBAAoB,EAAEC,WAAW,WAAW;AACtD,UAAMJ;AAAAA,EACR;AAEA,MAAIA,QAAQG,oBAAoB,EAAEC,WAAW,SAAS;AACpD,UAAMJ,QAAQG,oBAAoB,EAAEE;AAAAA,EACtC;AAEA,SAAO,CAACL,QAAQG,oBAAoB,EAAEG,MAAMN,OAAO;AACrD;AAEO,SAASO,MACdC,OAIA;AACA,QAAM,CAACC,QAAQ,IAAIC,MAAMC,eAAe,MAAMH,MAAMR,OAAO;AAE3D,SAAAY,gBACGF,MAAMG,MAAI;AAAA,IAAA,IAACC,WAAQ;AAAA,aAAEN,MAAMM;AAAAA,IAAQ;AAAA,IAAA,IAAEC,OAAI;AAAA,aAAEN,SAAAA;AAAAA,IAAU;AAAA,IAAAO,UAClDV,CAAAA,SAASE,MAAMQ,SAASV,MAAM;AAAA,EAAA,CAAC;AAGvC;"}
1
+ {"version":3,"file":"awaited.js","sources":["../../src/awaited.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\n\nimport { TSR_DEFERRED_PROMISE, defer } from '@tanstack/router-core'\nimport type { DeferredPromise } from '@tanstack/router-core'\nimport type { SolidNode } from './route'\n\nexport type AwaitOptions<T> = {\n promise: Promise<T>\n}\n\nexport function useAwaited<T>({\n promise: _promise,\n}: AwaitOptions<T>): [T, DeferredPromise<T>] {\n const promise = defer(_promise)\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'pending') {\n throw promise\n }\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'error') {\n throw promise[TSR_DEFERRED_PROMISE].error\n }\n\n return [promise[TSR_DEFERRED_PROMISE].data, promise]\n}\n\nexport function Await<T>(\n props: AwaitOptions<T> & {\n fallback?: SolidNode\n children: (result: T) => SolidNode\n },\n) {\n const [resource] = Solid.createResource(\n () => defer(props.promise),\n // Simple passthrough - just return the promise for Solid to await\n (p) => p,\n {\n deferStream: true,\n },\n )\n\n return (\n <Solid.Show fallback={props.fallback} when={resource()}>\n {(data) => props.children(data())}\n </Solid.Show>\n )\n}\n"],"names":["useAwaited","promise","_promise","defer","TSR_DEFERRED_PROMISE","status","error","data","Await","props","resource","Solid","createResource","p","deferStream","_$createComponent","Show","fallback","when","children"],"mappings":";;;AAUO,SAASA,WAAc;AAAA,EAC5BC,SAASC;AACM,GAA4B;AAC3C,QAAMD,UAAUE,MAAMD,QAAQ;AAE9B,MAAID,QAAQG,oBAAoB,EAAEC,WAAW,WAAW;AACtD,UAAMJ;AAAAA,EACR;AAEA,MAAIA,QAAQG,oBAAoB,EAAEC,WAAW,SAAS;AACpD,UAAMJ,QAAQG,oBAAoB,EAAEE;AAAAA,EACtC;AAEA,SAAO,CAACL,QAAQG,oBAAoB,EAAEG,MAAMN,OAAO;AACrD;AAEO,SAASO,MACdC,OAIA;AACA,QAAM,CAACC,QAAQ,IAAIC,MAAMC;AAAAA,IACvB,MAAMT,MAAMM,MAAMR,OAAO;AAAA;AAAA,IAExBY,CAAAA,MAAMA;AAAAA,IACP;AAAA,MACEC,aAAa;AAAA,IAAA;AAAA,EACf;AAGF,SAAAC,gBACGJ,MAAMK,MAAI;AAAA,IAAA,IAACC,WAAQ;AAAA,aAAER,MAAMQ;AAAAA,IAAQ;AAAA,IAAA,IAAEC,OAAI;AAAA,aAAER,SAAAA;AAAAA,IAAU;AAAA,IAAAS,UAClDZ,CAAAA,SAASE,MAAMU,SAASZ,MAAM;AAAA,EAAA,CAAC;AAGvC;"}
@@ -2,6 +2,7 @@ import * as Solid from "solid-js/web";
2
2
  import { memo } from "solid-js/web";
3
3
  import { isbot } from "isbot";
4
4
  import { transformReadableStreamWithRouter } from "@tanstack/router-core/ssr/server";
5
+ import { makeSsrSerovalPlugin } from "@tanstack/router-core";
5
6
  const renderRouterToStream = async ({
6
7
  request,
7
8
  router,
@@ -13,8 +14,16 @@ const renderRouterToStream = async ({
13
14
  readable
14
15
  } = new TransformStream();
15
16
  const docType = Solid.ssr("<!DOCTYPE html>");
17
+ const serializationAdapters = router.options?.serializationAdapters || router.options.ssr?.serializationAdapters;
18
+ const serovalPlugins = serializationAdapters?.map((adapter) => {
19
+ const plugin = makeSsrSerovalPlugin(adapter, {
20
+ didRun: false
21
+ });
22
+ return plugin;
23
+ });
16
24
  const stream = Solid.renderToStream(() => [docType, memo(children)], {
17
- nonce: router.options.ssr?.nonce
25
+ nonce: router.options.ssr?.nonce,
26
+ plugins: serovalPlugins
18
27
  });
19
28
  if (isbot(request.headers.get("User-Agent"))) {
20
29
  await stream;
@@ -1 +1 @@
1
- {"version":3,"file":"renderRouterToStream.js","sources":["../../../src/ssr/renderRouterToStream.tsx"],"sourcesContent":["import * as Solid from 'solid-js/web'\nimport { isbot } from 'isbot'\nimport { transformReadableStreamWithRouter } from '@tanstack/router-core/ssr/server'\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 docType = Solid.ssr('<!DOCTYPE html>')\n\n const stream = Solid.renderToStream(\n () => (\n <>\n {docType}\n {children()}\n </>\n ),\n {\n nonce: router.options.ssr?.nonce,\n },\n )\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.state.statusCode,\n headers: responseHeaders,\n })\n}\n"],"names":["renderRouterToStream","request","router","responseHeaders","children","writable","readable","TransformStream","docType","Solid","ssr","stream","renderToStream","_$memo","nonce","options","isbot","headers","get","pipeTo","responseStream","transformReadableStreamWithRouter","Response","status","state","statusCode"],"mappings":";;;;AAOO,MAAMA,uBAAuB,OAAO;AAAA,EACzCC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAMF,MAAM;AACJ,QAAM;AAAA,IAAEC;AAAAA,IAAUC;AAAAA,EAAAA,IAAa,IAAIC,gBAAAA;AAEnC,QAAMC,UAAUC,MAAMC,IAAI,iBAAiB;AAE3C,QAAMC,SAASF,MAAMG,eACnB,MAAA,CAEKJ,SAAOK,KACPT,QAAQ,IAGb;AAAA,IACEU,OAAOZ,OAAOa,QAAQL,KAAKI;AAAAA,EAAAA,CAE/B;AAEA,MAAIE,MAAMf,QAAQgB,QAAQC,IAAI,YAAY,CAAC,GAAG;AAC5C,UAAMP;AAAAA,EACR;AACAA,SAAOQ,OAAOd,QAAQ;AAEtB,QAAMe,iBAAiBC,kCACrBnB,QACAI,QACF;AACA,SAAO,IAAIgB,SAASF,gBAAuB;AAAA,IACzCG,QAAQrB,OAAOsB,MAAMC;AAAAA,IACrBR,SAASd;AAAAA,EAAAA,CACV;AACH;"}
1
+ {"version":3,"file":"renderRouterToStream.js","sources":["../../../src/ssr/renderRouterToStream.tsx"],"sourcesContent":["import * as Solid from 'solid-js/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 docType = Solid.ssr('<!DOCTYPE html>')\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(\n () => (\n <>\n {docType}\n {children()}\n </>\n ),\n {\n nonce: router.options.ssr?.nonce,\n plugins: serovalPlugins,\n } as any,\n )\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.state.statusCode,\n headers: responseHeaders,\n })\n}\n"],"names":["renderRouterToStream","request","router","responseHeaders","children","writable","readable","TransformStream","docType","Solid","ssr","serializationAdapters","options","serovalPlugins","map","adapter","plugin","makeSsrSerovalPlugin","didRun","stream","renderToStream","_$memo","nonce","plugins","isbot","headers","get","pipeTo","responseStream","transformReadableStreamWithRouter","Response","status","state","statusCode"],"mappings":";;;;;AAQO,MAAMA,uBAAuB,OAAO;AAAA,EACzCC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAMF,MAAM;AACJ,QAAM;AAAA,IAAEC;AAAAA,IAAUC;AAAAA,EAAAA,IAAa,IAAIC,gBAAAA;AAEnC,QAAMC,UAAUC,MAAMC,IAAI,iBAAiB;AAE3C,QAAMC,wBACHT,OAAOU,SAAiBD,yBACxBT,OAAOU,QAAQF,KAAaC;AAC/B,QAAME,iBAAiBF,uBAAuBG,IAAI,CAACC,YAAiB;AAClE,UAAMC,SAASC,qBAAqBF,SAAS;AAAA,MAAEG,QAAQ;AAAA,IAAA,CAAO;AAC9D,WAAOF;AAAAA,EACT,CAAC;AAED,QAAMG,SAASV,MAAMW,eACnB,MAAA,CAEKZ,SAAOa,KACPjB,QAAQ,IAGb;AAAA,IACEkB,OAAOpB,OAAOU,QAAQF,KAAKY;AAAAA,IAC3BC,SAASV;AAAAA,EAAAA,CAEb;AAEA,MAAIW,MAAMvB,QAAQwB,QAAQC,IAAI,YAAY,CAAC,GAAG;AAC5C,UAAMP;AAAAA,EACR;AACAA,SAAOQ,OAAOtB,QAAQ;AAEtB,QAAMuB,iBAAiBC,kCACrB3B,QACAI,QACF;AACA,SAAO,IAAIwB,SAASF,gBAAuB;AAAA,IACzCG,QAAQ7B,OAAO8B,MAAMC;AAAAA,IACrBR,SAAStB;AAAAA,EAAAA,CACV;AACH;"}
@@ -1,5 +1,5 @@
1
- import { JSXElement } from 'solid-js';
2
1
  import { AnyRouter } from '@tanstack/router-core';
2
+ import { JSXElement } from 'solid-js';
3
3
  export declare const renderRouterToString: ({ router, responseHeaders, children, }: {
4
4
  router: AnyRouter;
5
5
  responseHeaders: Headers;
@@ -1,12 +1,21 @@
1
1
  import * as Solid from "solid-js/web";
2
+ import { makeSsrSerovalPlugin } from "@tanstack/router-core";
2
3
  const renderRouterToString = async ({
3
4
  router,
4
5
  responseHeaders,
5
6
  children
6
7
  }) => {
7
8
  try {
9
+ const serializationAdapters = router.options?.serializationAdapters || router.options.ssr?.serializationAdapters;
10
+ const serovalPlugins = serializationAdapters?.map((adapter) => {
11
+ const plugin = makeSsrSerovalPlugin(adapter, {
12
+ didRun: false
13
+ });
14
+ return plugin;
15
+ });
8
16
  let html = Solid.renderToString(children, {
9
- nonce: router.options.ssr?.nonce
17
+ nonce: router.options.ssr?.nonce,
18
+ plugins: serovalPlugins
10
19
  });
11
20
  router.serverSsr.setRenderFinished();
12
21
  const injectedHtml = await Promise.all(router.serverSsr.injectedHtml).then((htmls) => htmls.join(""));
@@ -1 +1 @@
1
- {"version":3,"file":"renderRouterToString.js","sources":["../../../src/ssr/renderRouterToString.tsx"],"sourcesContent":["import * as Solid from 'solid-js/web'\nimport type { JSXElement } from 'solid-js'\nimport type { AnyRouter } from '@tanstack/router-core'\n\nexport const renderRouterToString = async ({\n router,\n responseHeaders,\n children,\n}: {\n router: AnyRouter\n responseHeaders: Headers\n children: () => JSXElement\n}) => {\n try {\n let html = Solid.renderToString(children, {\n nonce: router.options.ssr?.nonce,\n })\n router.serverSsr!.setRenderFinished()\n const injectedHtml = await Promise.all(router.serverSsr!.injectedHtml).then(\n (htmls) => htmls.join(''),\n )\n html = html.replace(`</body>`, `${injectedHtml}</body>`)\n return new Response(`<!DOCTYPE html>${html}`, {\n status: router.state.statusCode,\n headers: responseHeaders,\n })\n } catch (error) {\n console.error('Render to string error:', error)\n return new Response('Internal Server Error', {\n status: 500,\n headers: responseHeaders,\n })\n }\n}\n"],"names":["renderRouterToString","router","responseHeaders","children","html","Solid","renderToString","nonce","options","ssr","serverSsr","setRenderFinished","injectedHtml","Promise","all","then","htmls","join","replace","Response","status","state","statusCode","headers","error","console"],"mappings":";AAIO,MAAMA,uBAAuB,OAAO;AAAA,EACzCC;AAAAA,EACAC;AAAAA,EACAC;AAKF,MAAM;AACJ,MAAI;AACF,QAAIC,OAAOC,MAAMC,eAAeH,UAAU;AAAA,MACxCI,OAAON,OAAOO,QAAQC,KAAKF;AAAAA,IAAAA,CAC5B;AACDN,WAAOS,UAAWC,kBAAAA;AAClB,UAAMC,eAAe,MAAMC,QAAQC,IAAIb,OAAOS,UAAWE,YAAY,EAAEG,KACpEC,CAAAA,UAAUA,MAAMC,KAAK,EAAE,CAC1B;AACAb,WAAOA,KAAKc,QAAQ,WAAW,GAAGN,YAAY,SAAS;AACvD,WAAO,IAAIO,SAAS,kBAAkBf,IAAI,IAAI;AAAA,MAC5CgB,QAAQnB,OAAOoB,MAAMC;AAAAA,MACrBC,SAASrB;AAAAA,IAAAA,CACV;AAAA,EACH,SAASsB,OAAO;AACdC,YAAQD,MAAM,2BAA2BA,KAAK;AAC9C,WAAO,IAAIL,SAAS,yBAAyB;AAAA,MAC3CC,QAAQ;AAAA,MACRG,SAASrB;AAAAA,IAAAA,CACV;AAAA,EACH;AACF;"}
1
+ {"version":3,"file":"renderRouterToString.js","sources":["../../../src/ssr/renderRouterToString.tsx"],"sourcesContent":["import * as Solid from 'solid-js/web'\nimport { makeSsrSerovalPlugin } from '@tanstack/router-core'\nimport type { AnyRouter } from '@tanstack/router-core'\nimport type { JSXElement } from 'solid-js'\n\nexport const renderRouterToString = async ({\n router,\n responseHeaders,\n children,\n}: {\n router: AnyRouter\n responseHeaders: Headers\n children: () => JSXElement\n}) => {\n try {\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 let html = Solid.renderToString(children, {\n nonce: router.options.ssr?.nonce,\n plugins: serovalPlugins,\n } as any)\n router.serverSsr!.setRenderFinished()\n const injectedHtml = await Promise.all(router.serverSsr!.injectedHtml).then(\n (htmls) => htmls.join(''),\n )\n html = html.replace(`</body>`, `${injectedHtml}</body>`)\n return new Response(`<!DOCTYPE html>${html}`, {\n status: router.state.statusCode,\n headers: responseHeaders,\n })\n } catch (error) {\n console.error('Render to string error:', error)\n return new Response('Internal Server Error', {\n status: 500,\n headers: responseHeaders,\n })\n }\n}\n"],"names":["renderRouterToString","router","responseHeaders","children","serializationAdapters","options","ssr","serovalPlugins","map","adapter","plugin","makeSsrSerovalPlugin","didRun","html","Solid","renderToString","nonce","plugins","serverSsr","setRenderFinished","injectedHtml","Promise","all","then","htmls","join","replace","Response","status","state","statusCode","headers","error","console"],"mappings":";;AAKO,MAAMA,uBAAuB,OAAO;AAAA,EACzCC;AAAAA,EACAC;AAAAA,EACAC;AAKF,MAAM;AACJ,MAAI;AACF,UAAMC,wBACHH,OAAOI,SAAiBD,yBACxBH,OAAOI,QAAQC,KAAaF;AAC/B,UAAMG,iBAAiBH,uBAAuBI,IAAI,CAACC,YAAiB;AAClE,YAAMC,SAASC,qBAAqBF,SAAS;AAAA,QAAEG,QAAQ;AAAA,MAAA,CAAO;AAC9D,aAAOF;AAAAA,IACT,CAAC;AAED,QAAIG,OAAOC,MAAMC,eAAeZ,UAAU;AAAA,MACxCa,OAAOf,OAAOI,QAAQC,KAAKU;AAAAA,MAC3BC,SAASV;AAAAA,IAAAA,CACH;AACRN,WAAOiB,UAAWC,kBAAAA;AAClB,UAAMC,eAAe,MAAMC,QAAQC,IAAIrB,OAAOiB,UAAWE,YAAY,EAAEG,KACpEC,CAAAA,UAAUA,MAAMC,KAAK,EAAE,CAC1B;AACAZ,WAAOA,KAAKa,QAAQ,WAAW,GAAGN,YAAY,SAAS;AACvD,WAAO,IAAIO,SAAS,kBAAkBd,IAAI,IAAI;AAAA,MAC5Ce,QAAQ3B,OAAO4B,MAAMC;AAAAA,MACrBC,SAAS7B;AAAAA,IAAAA,CACV;AAAA,EACH,SAAS8B,OAAO;AACdC,YAAQD,MAAM,2BAA2BA,KAAK;AAC9C,WAAO,IAAIL,SAAS,yBAAyB;AAAA,MAC3CC,QAAQ;AAAA,MACRG,SAAS7B;AAAAA,IAAAA,CACV;AAAA,EACH;AACF;"}
@@ -11,7 +11,11 @@ export function useAwaited({ promise: _promise, }) {
11
11
  return [promise[TSR_DEFERRED_PROMISE].data, promise];
12
12
  }
13
13
  export function Await(props) {
14
- const [resource] = Solid.createResource(() => props.promise);
14
+ const [resource] = Solid.createResource(() => defer(props.promise),
15
+ // Simple passthrough - just return the promise for Solid to await
16
+ (p) => p, {
17
+ deferStream: true,
18
+ });
15
19
  return (<Solid.Show fallback={props.fallback} when={resource()}>
16
20
  {(data) => props.children(data())}
17
21
  </Solid.Show>);
@@ -1 +1 @@
1
- {"version":3,"file":"awaited.jsx","sourceRoot":"","sources":["../../src/awaited.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AAEjC,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAQnE,MAAM,UAAU,UAAU,CAAI,EAC5B,OAAO,EAAE,QAAQ,GACD;IAChB,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;IAE/B,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACvD,MAAM,OAAO,CAAA;IACf,CAAC;IAED,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QACrD,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAA;IAC3C,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,KAAK,CACnB,KAGC;IAED,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAE5D,OAAO,CACL,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CACrD;MAAA,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CACnC;IAAA,EAAE,KAAK,CAAC,IAAI,CAAC,CACd,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"awaited.jsx","sourceRoot":"","sources":["../../src/awaited.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AAEjC,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAQnE,MAAM,UAAU,UAAU,CAAI,EAC5B,OAAO,EAAE,QAAQ,GACD;IAChB,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;IAE/B,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACvD,MAAM,OAAO,CAAA;IACf,CAAC;IAED,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QACrD,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAA;IAC3C,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,KAAK,CACnB,KAGC;IAED,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,cAAc,CACrC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;IAC1B,kEAAkE;IAClE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EACR;QACE,WAAW,EAAE,IAAI;KAClB,CACF,CAAA;IAED,OAAO,CACL,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CACrD;MAAA,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CACnC;IAAA,EAAE,KAAK,CAAC,IAAI,CAAC,CACd,CAAA;AACH,CAAC"}
@@ -1,14 +1,22 @@
1
1
  import * as Solid from 'solid-js/web';
2
2
  import { isbot } from 'isbot';
3
3
  import { transformReadableStreamWithRouter } from '@tanstack/router-core/ssr/server';
4
+ import { makeSsrSerovalPlugin } from '@tanstack/router-core';
4
5
  export const renderRouterToStream = async ({ request, router, responseHeaders, children, }) => {
5
6
  const { writable, readable } = new TransformStream();
6
7
  const docType = Solid.ssr('<!DOCTYPE html>');
8
+ const serializationAdapters = router.options?.serializationAdapters ||
9
+ router.options.ssr?.serializationAdapters;
10
+ const serovalPlugins = serializationAdapters?.map((adapter) => {
11
+ const plugin = makeSsrSerovalPlugin(adapter, { didRun: false });
12
+ return plugin;
13
+ });
7
14
  const stream = Solid.renderToStream(() => (<>
8
15
  {docType}
9
16
  {children()}
10
17
  </>), {
11
18
  nonce: router.options.ssr?.nonce,
19
+ plugins: serovalPlugins,
12
20
  });
13
21
  if (isbot(request.headers.get('User-Agent'))) {
14
22
  await stream;
@@ -1 +1 @@
1
- {"version":3,"file":"renderRouterToStream.jsx","sourceRoot":"","sources":["../../../src/ssr/renderRouterToStream.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAA;AAKpF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,EACzC,OAAO,EACP,MAAM,EACN,eAAe,EACf,QAAQ,GAMT,EAAE,EAAE;IACH,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,eAAe,EAAE,CAAA;IAEpD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IAE5C,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CACjC,GAAG,EAAE,CAAC,CACJ,EACE;QAAA,CAAC,OAAO,CACR;QAAA,CAAC,QAAQ,EAAE,CACb;MAAA,GAAG,CACJ,EACD;QACE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK;KACjC,CACF,CAAA;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAA;IACd,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAEvB,MAAM,cAAc,GAAG,iCAAiC,CACtD,MAAM,EACN,QAAqC,CACtC,CAAA;IACD,OAAO,IAAI,QAAQ,CAAC,cAAqB,EAAE;QACzC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;QAC/B,OAAO,EAAE,eAAe;KACzB,CAAC,CAAA;AACJ,CAAC,CAAA"}
1
+ {"version":3,"file":"renderRouterToStream.jsx","sourceRoot":"","sources":["../../../src/ssr/renderRouterToStream.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAA;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAK5D,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,EACzC,OAAO,EACP,MAAM,EACN,eAAe,EACf,QAAQ,GAMT,EAAE,EAAE;IACH,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,eAAe,EAAE,CAAA;IAEpD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IAE5C,MAAM,qBAAqB,GACxB,MAAM,CAAC,OAAe,EAAE,qBAAqB;QAC7C,MAAM,CAAC,OAAO,CAAC,GAAW,EAAE,qBAAqB,CAAA;IACpD,MAAM,cAAc,GAAG,qBAAqB,EAAE,GAAG,CAAC,CAAC,OAAY,EAAE,EAAE;QACjE,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QAC/D,OAAO,MAAM,CAAA;IACf,CAAC,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CACjC,GAAG,EAAE,CAAC,CACJ,EACE;QAAA,CAAC,OAAO,CACR;QAAA,CAAC,QAAQ,EAAE,CACb;MAAA,GAAG,CACJ,EACD;QACE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK;QAChC,OAAO,EAAE,cAAc;KACjB,CACT,CAAA;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAA;IACd,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAEvB,MAAM,cAAc,GAAG,iCAAiC,CACtD,MAAM,EACN,QAAqC,CACtC,CAAA;IACD,OAAO,IAAI,QAAQ,CAAC,cAAqB,EAAE;QACzC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;QAC/B,OAAO,EAAE,eAAe;KACzB,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -1,5 +1,5 @@
1
- import type { JSXElement } from 'solid-js';
2
1
  import type { AnyRouter } from '@tanstack/router-core';
2
+ import type { JSXElement } from 'solid-js';
3
3
  export declare const renderRouterToString: ({ router, responseHeaders, children, }: {
4
4
  router: AnyRouter;
5
5
  responseHeaders: Headers;
@@ -1,8 +1,16 @@
1
1
  import * as Solid from 'solid-js/web';
2
+ import { makeSsrSerovalPlugin } from '@tanstack/router-core';
2
3
  export const renderRouterToString = async ({ router, responseHeaders, children, }) => {
3
4
  try {
5
+ const serializationAdapters = router.options?.serializationAdapters ||
6
+ router.options.ssr?.serializationAdapters;
7
+ const serovalPlugins = serializationAdapters?.map((adapter) => {
8
+ const plugin = makeSsrSerovalPlugin(adapter, { didRun: false });
9
+ return plugin;
10
+ });
4
11
  let html = Solid.renderToString(children, {
5
12
  nonce: router.options.ssr?.nonce,
13
+ plugins: serovalPlugins,
6
14
  });
7
15
  router.serverSsr.setRenderFinished();
8
16
  const injectedHtml = await Promise.all(router.serverSsr.injectedHtml).then((htmls) => htmls.join(''));
@@ -1 +1 @@
1
- {"version":3,"file":"renderRouterToString.jsx","sourceRoot":"","sources":["../../../src/ssr/renderRouterToString.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAIrC,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,EACzC,MAAM,EACN,eAAe,EACf,QAAQ,GAKT,EAAE,EAAE;IACH,IAAI,CAAC;QACH,IAAI,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE;YACxC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK;SACjC,CAAC,CAAA;QACF,MAAM,CAAC,SAAU,CAAC,iBAAiB,EAAE,CAAA;QACrC,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CACzE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAC1B,CAAA;QACD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,YAAY,SAAS,CAAC,CAAA;QACxD,OAAO,IAAI,QAAQ,CAAC,kBAAkB,IAAI,EAAE,EAAE;YAC5C,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;YAC/B,OAAO,EAAE,eAAe;SACzB,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAA;QAC/C,OAAO,IAAI,QAAQ,CAAC,uBAAuB,EAAE;YAC3C,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,eAAe;SACzB,CAAC,CAAA;IACJ,CAAC;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"renderRouterToString.jsx","sourceRoot":"","sources":["../../../src/ssr/renderRouterToString.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAI5D,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,EACzC,MAAM,EACN,eAAe,EACf,QAAQ,GAKT,EAAE,EAAE;IACH,IAAI,CAAC;QACH,MAAM,qBAAqB,GACxB,MAAM,CAAC,OAAe,EAAE,qBAAqB;YAC7C,MAAM,CAAC,OAAO,CAAC,GAAW,EAAE,qBAAqB,CAAA;QACpD,MAAM,cAAc,GAAG,qBAAqB,EAAE,GAAG,CAAC,CAAC,OAAY,EAAE,EAAE;YACjE,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;YAC/D,OAAO,MAAM,CAAA;QACf,CAAC,CAAC,CAAA;QAEF,IAAI,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE;YACxC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK;YAChC,OAAO,EAAE,cAAc;SACjB,CAAC,CAAA;QACT,MAAM,CAAC,SAAU,CAAC,iBAAiB,EAAE,CAAA;QACrC,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CACzE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAC1B,CAAA;QACD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,YAAY,SAAS,CAAC,CAAA;QACxD,OAAO,IAAI,QAAQ,CAAC,kBAAkB,IAAI,EAAE,EAAE;YAC5C,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;YAC/B,OAAO,EAAE,eAAe;SACzB,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAA;QAC/C,OAAO,IAAI,QAAQ,CAAC,uBAAuB,EAAE;YAC3C,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,eAAe;SACzB,CAAC,CAAA;IACJ,CAAC;AACH,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/solid-router",
3
- "version": "1.133.31",
3
+ "version": "1.133.35",
4
4
  "description": "Modern and scalable routing for Solid applications",
5
5
  "author": "Tanner Linsley",
6
6
  "license": "MIT",
@@ -89,19 +89,19 @@
89
89
  "tiny-invariant": "^1.3.3",
90
90
  "tiny-warning": "^1.0.3",
91
91
  "@tanstack/history": "1.133.28",
92
- "@tanstack/router-core": "1.133.28"
92
+ "@tanstack/router-core": "1.133.35"
93
93
  },
94
94
  "devDependencies": {
95
95
  "@solidjs/testing-library": "^0.8.10",
96
96
  "@testing-library/jest-dom": "^6.6.3",
97
97
  "combinate": "^1.1.11",
98
98
  "eslint-plugin-solid": "^0.14.5",
99
- "solid-js": "^1.9.9",
99
+ "solid-js": "^1.9.10",
100
100
  "vite-plugin-solid": "^2.11.10",
101
101
  "zod": "^3.23.8"
102
102
  },
103
103
  "peerDependencies": {
104
- "solid-js": "^1.9.9"
104
+ "solid-js": "^1.9.10"
105
105
  },
106
106
  "scripts": {
107
107
  "clean": "rimraf ./dist && rimraf ./coverage",
package/src/awaited.tsx CHANGED
@@ -30,7 +30,14 @@ export function Await<T>(
30
30
  children: (result: T) => SolidNode
31
31
  },
32
32
  ) {
33
- const [resource] = Solid.createResource(() => props.promise)
33
+ const [resource] = Solid.createResource(
34
+ () => defer(props.promise),
35
+ // Simple passthrough - just return the promise for Solid to await
36
+ (p) => p,
37
+ {
38
+ deferStream: true,
39
+ },
40
+ )
34
41
 
35
42
  return (
36
43
  <Solid.Show fallback={props.fallback} when={resource()}>
@@ -1,6 +1,7 @@
1
1
  import * as Solid from 'solid-js/web'
2
2
  import { isbot } from 'isbot'
3
3
  import { transformReadableStreamWithRouter } from '@tanstack/router-core/ssr/server'
4
+ import { makeSsrSerovalPlugin } from '@tanstack/router-core'
4
5
  import type { JSXElement } from 'solid-js'
5
6
  import type { ReadableStream } from 'node:stream/web'
6
7
  import type { AnyRouter } from '@tanstack/router-core'
@@ -20,6 +21,14 @@ export const renderRouterToStream = async ({
20
21
 
21
22
  const docType = Solid.ssr('<!DOCTYPE html>')
22
23
 
24
+ const serializationAdapters =
25
+ (router.options as any)?.serializationAdapters ||
26
+ (router.options.ssr as any)?.serializationAdapters
27
+ const serovalPlugins = serializationAdapters?.map((adapter: any) => {
28
+ const plugin = makeSsrSerovalPlugin(adapter, { didRun: false })
29
+ return plugin
30
+ })
31
+
23
32
  const stream = Solid.renderToStream(
24
33
  () => (
25
34
  <>
@@ -29,7 +38,8 @@ export const renderRouterToStream = async ({
29
38
  ),
30
39
  {
31
40
  nonce: router.options.ssr?.nonce,
32
- },
41
+ plugins: serovalPlugins,
42
+ } as any,
33
43
  )
34
44
 
35
45
  if (isbot(request.headers.get('User-Agent'))) {
@@ -1,6 +1,7 @@
1
1
  import * as Solid from 'solid-js/web'
2
- import type { JSXElement } from 'solid-js'
2
+ import { makeSsrSerovalPlugin } from '@tanstack/router-core'
3
3
  import type { AnyRouter } from '@tanstack/router-core'
4
+ import type { JSXElement } from 'solid-js'
4
5
 
5
6
  export const renderRouterToString = async ({
6
7
  router,
@@ -12,9 +13,18 @@ export const renderRouterToString = async ({
12
13
  children: () => JSXElement
13
14
  }) => {
14
15
  try {
16
+ const serializationAdapters =
17
+ (router.options as any)?.serializationAdapters ||
18
+ (router.options.ssr as any)?.serializationAdapters
19
+ const serovalPlugins = serializationAdapters?.map((adapter: any) => {
20
+ const plugin = makeSsrSerovalPlugin(adapter, { didRun: false })
21
+ return plugin
22
+ })
23
+
15
24
  let html = Solid.renderToString(children, {
16
25
  nonce: router.options.ssr?.nonce,
17
- })
26
+ plugins: serovalPlugins,
27
+ } as any)
18
28
  router.serverSsr!.setRenderFinished()
19
29
  const injectedHtml = await Promise.all(router.serverSsr!.injectedHtml).then(
20
30
  (htmls) => htmls.join(''),