@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.
- package/dist/cjs/awaited.cjs +8 -1
- package/dist/cjs/awaited.cjs.map +1 -1
- package/dist/cjs/ssr/renderRouterToStream.cjs +10 -1
- package/dist/cjs/ssr/renderRouterToStream.cjs.map +1 -1
- package/dist/cjs/ssr/renderRouterToString.cjs +10 -1
- package/dist/cjs/ssr/renderRouterToString.cjs.map +1 -1
- package/dist/cjs/ssr/renderRouterToString.d.cts +1 -1
- package/dist/esm/awaited.js +8 -1
- package/dist/esm/awaited.js.map +1 -1
- package/dist/esm/ssr/renderRouterToStream.js +10 -1
- package/dist/esm/ssr/renderRouterToStream.js.map +1 -1
- package/dist/esm/ssr/renderRouterToString.d.ts +1 -1
- package/dist/esm/ssr/renderRouterToString.js +10 -1
- package/dist/esm/ssr/renderRouterToString.js.map +1 -1
- package/dist/source/awaited.jsx +5 -1
- package/dist/source/awaited.jsx.map +1 -1
- package/dist/source/ssr/renderRouterToStream.jsx +8 -0
- package/dist/source/ssr/renderRouterToStream.jsx.map +1 -1
- package/dist/source/ssr/renderRouterToString.d.ts +1 -1
- package/dist/source/ssr/renderRouterToString.jsx +8 -0
- package/dist/source/ssr/renderRouterToString.jsx.map +1 -1
- package/package.json +4 -4
- package/src/awaited.tsx +8 -1
- package/src/ssr/renderRouterToStream.tsx +11 -1
- package/src/ssr/renderRouterToString.tsx +12 -2
package/dist/cjs/awaited.cjs
CHANGED
|
@@ -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(
|
|
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;
|
package/dist/cjs/awaited.cjs.map
CHANGED
|
@@ -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,
|
|
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","
|
|
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
|
|
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;;"}
|
package/dist/esm/awaited.js
CHANGED
|
@@ -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(
|
|
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;
|
package/dist/esm/awaited.js.map
CHANGED
|
@@ -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,
|
|
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","
|
|
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,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
|
|
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;"}
|
package/dist/source/awaited.jsx
CHANGED
|
@@ -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,
|
|
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;
|
|
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;
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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(
|
|
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
|
|
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(''),
|