@tanstack/vue-router 1.167.1 → 1.167.3

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.
Files changed (99) hide show
  1. package/dist/esm/Asset.js +107 -151
  2. package/dist/esm/Asset.js.map +1 -1
  3. package/dist/esm/Body.js +15 -24
  4. package/dist/esm/Body.js.map +1 -1
  5. package/dist/esm/CatchBoundary.js +112 -130
  6. package/dist/esm/CatchBoundary.js.map +1 -1
  7. package/dist/esm/ClientOnly.js +59 -29
  8. package/dist/esm/ClientOnly.js.map +1 -1
  9. package/dist/esm/HeadContent.dev.js +29 -23
  10. package/dist/esm/HeadContent.dev.js.map +1 -1
  11. package/dist/esm/HeadContent.js +21 -16
  12. package/dist/esm/HeadContent.js.map +1 -1
  13. package/dist/esm/Html.js +42 -61
  14. package/dist/esm/Html.js.map +1 -1
  15. package/dist/esm/Match.js +238 -319
  16. package/dist/esm/Match.js.map +1 -1
  17. package/dist/esm/Matches.js +127 -170
  18. package/dist/esm/Matches.js.map +1 -1
  19. package/dist/esm/RouterProvider.js +50 -65
  20. package/dist/esm/RouterProvider.js.map +1 -1
  21. package/dist/esm/ScriptOnce.js +31 -36
  22. package/dist/esm/ScriptOnce.js.map +1 -1
  23. package/dist/esm/Scripts.js +79 -101
  24. package/dist/esm/Scripts.js.map +1 -1
  25. package/dist/esm/ScrollRestoration.js +25 -29
  26. package/dist/esm/ScrollRestoration.js.map +1 -1
  27. package/dist/esm/Transitioner.js +146 -164
  28. package/dist/esm/Transitioner.js.map +1 -1
  29. package/dist/esm/awaited.js +27 -34
  30. package/dist/esm/awaited.js.map +1 -1
  31. package/dist/esm/fileRoute.js +90 -92
  32. package/dist/esm/fileRoute.js.map +1 -1
  33. package/dist/esm/headContentUtils.js +92 -123
  34. package/dist/esm/headContentUtils.js.map +1 -1
  35. package/dist/esm/index.dev.js +16 -118
  36. package/dist/esm/index.js +18 -119
  37. package/dist/esm/lazyRouteComponent.js +69 -82
  38. package/dist/esm/lazyRouteComponent.js.map +1 -1
  39. package/dist/esm/link.js +364 -385
  40. package/dist/esm/link.js.map +1 -1
  41. package/dist/esm/matchContext.js +16 -11
  42. package/dist/esm/matchContext.js.map +1 -1
  43. package/dist/esm/not-found.js +30 -40
  44. package/dist/esm/not-found.js.map +1 -1
  45. package/dist/esm/renderRouteNotFound.js +20 -15
  46. package/dist/esm/renderRouteNotFound.js.map +1 -1
  47. package/dist/esm/route.js +196 -174
  48. package/dist/esm/route.js.map +1 -1
  49. package/dist/esm/router.js +11 -11
  50. package/dist/esm/router.js.map +1 -1
  51. package/dist/esm/routerContext.js +10 -7
  52. package/dist/esm/routerContext.js.map +1 -1
  53. package/dist/esm/scroll-restoration.js +39 -50
  54. package/dist/esm/scroll-restoration.js.map +1 -1
  55. package/dist/esm/ssr/RouterClient.js +29 -43
  56. package/dist/esm/ssr/RouterClient.js.map +1 -1
  57. package/dist/esm/ssr/RouterServer.js +29 -32
  58. package/dist/esm/ssr/RouterServer.js.map +1 -1
  59. package/dist/esm/ssr/client.js +1 -4
  60. package/dist/esm/ssr/defaultRenderHandler.js +11 -13
  61. package/dist/esm/ssr/defaultRenderHandler.js.map +1 -1
  62. package/dist/esm/ssr/defaultStreamHandler.js +12 -15
  63. package/dist/esm/ssr/defaultStreamHandler.js.map +1 -1
  64. package/dist/esm/ssr/renderRouterToStream.js +47 -65
  65. package/dist/esm/ssr/renderRouterToStream.js.map +1 -1
  66. package/dist/esm/ssr/renderRouterToString.js +24 -32
  67. package/dist/esm/ssr/renderRouterToString.js.map +1 -1
  68. package/dist/esm/ssr/server.js +3 -10
  69. package/dist/esm/useBlocker.js +243 -287
  70. package/dist/esm/useBlocker.js.map +1 -1
  71. package/dist/esm/useCanGoBack.js +6 -5
  72. package/dist/esm/useCanGoBack.js.map +1 -1
  73. package/dist/esm/useLoaderData.js +12 -11
  74. package/dist/esm/useLoaderData.js.map +1 -1
  75. package/dist/esm/useLoaderDeps.js +12 -14
  76. package/dist/esm/useLoaderDeps.js.map +1 -1
  77. package/dist/esm/useLocation.js +6 -7
  78. package/dist/esm/useLocation.js.map +1 -1
  79. package/dist/esm/useMatch.js +27 -35
  80. package/dist/esm/useMatch.js.map +1 -1
  81. package/dist/esm/useNavigate.js +18 -24
  82. package/dist/esm/useNavigate.js.map +1 -1
  83. package/dist/esm/useParams.js +13 -12
  84. package/dist/esm/useParams.js.map +1 -1
  85. package/dist/esm/useRouteContext.js +9 -8
  86. package/dist/esm/useRouteContext.js.map +1 -1
  87. package/dist/esm/useRouter.js +9 -8
  88. package/dist/esm/useRouter.js.map +1 -1
  89. package/dist/esm/useRouterState.js +18 -22
  90. package/dist/esm/useRouterState.js.map +1 -1
  91. package/dist/esm/useSearch.js +13 -12
  92. package/dist/esm/useSearch.js.map +1 -1
  93. package/dist/esm/utils.js +59 -38
  94. package/dist/esm/utils.js.map +1 -1
  95. package/package.json +3 -3
  96. package/dist/esm/index.dev.js.map +0 -1
  97. package/dist/esm/index.js.map +0 -1
  98. package/dist/esm/ssr/client.js.map +0 -1
  99. package/dist/esm/ssr/server.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"scroll-restoration.js","sources":["../../src/scroll-restoration.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport {\n defaultGetScrollRestorationKey,\n escapeHtml,\n restoreScroll,\n storageKey,\n} from '@tanstack/router-core'\nimport { isServer } from '@tanstack/router-core/isServer'\nimport { useRouter } from './useRouter'\nimport { ScriptOnce } from './ScriptOnce'\n\n/**\n * ScrollRestoration component for Vue.\n * On server: renders a ScriptOnce with scroll restoration logic.\n * On client during hydration: renders a matching ScriptOnce to avoid mismatch.\n * After mount: renders nothing.\n */\nexport const ScrollRestoration = Vue.defineComponent({\n name: 'ScrollRestoration',\n setup() {\n const router = useRouter()\n\n // Track mounted state for hydration handling\n const mounted = Vue.ref(false)\n Vue.onMounted(() => {\n mounted.value = true\n })\n\n return () => {\n // After mount, render nothing\n if (mounted.value) {\n return null\n }\n\n // Check if scroll restoration is enabled\n if (!router.isScrollRestoring) {\n return null\n }\n\n // Check custom scroll restoration function\n if (typeof router.options.scrollRestoration === 'function') {\n const shouldRestore = router.options.scrollRestoration({\n location: router.latestLocation,\n })\n if (!shouldRestore) {\n return null\n }\n }\n\n const getKey =\n router.options.getScrollRestorationKey || defaultGetScrollRestorationKey\n const userKey = getKey(router.latestLocation)\n const resolvedKey =\n userKey !== defaultGetScrollRestorationKey(router.latestLocation)\n ? userKey\n : undefined\n\n const restoreScrollOptions: Parameters<typeof restoreScroll>[0] = {\n storageKey,\n shouldScrollRestoration: true,\n }\n if (resolvedKey) {\n restoreScrollOptions.key = resolvedKey\n }\n\n // Server-side: render the actual scroll restoration script\n if (isServer ?? router.isServer) {\n return (\n <ScriptOnce\n children={`(${restoreScroll.toString()})(${escapeHtml(JSON.stringify(restoreScrollOptions))})`}\n />\n )\n }\n\n // Client-side during hydration: render empty ScriptOnce to match server structure\n return <ScriptOnce children=\"\" />\n }\n },\n})\n"],"names":["ScrollRestoration","Vue","defineComponent","name","setup","router","useRouter","mounted","ref","onMounted","value","isScrollRestoring","options","scrollRestoration","shouldRestore","location","latestLocation","getKey","getScrollRestorationKey","defaultGetScrollRestorationKey","userKey","resolvedKey","undefined","restoreScrollOptions","storageKey","shouldScrollRestoration","key","isServer","_createVNode","ScriptOnce","restoreScroll","toString","escapeHtml","JSON","stringify"],"mappings":";;;;;;MAiBaA,oBAAoBC,IAAIC,gBAAgB;AAAA,EACnDC,MAAM;AAAA,EACNC,QAAQ;AACN,UAAMC,SAASC,UAAS;AAGxB,UAAMC,UAAUN,IAAIO,IAAI,KAAK;AAC7BP,QAAIQ,UAAU,MAAM;AAClBF,cAAQG,QAAQ;AAAA,IAClB,CAAC;AAED,WAAO,MAAM;AAEX,UAAIH,QAAQG,OAAO;AACjB,eAAO;AAAA,MACT;AAGA,UAAI,CAACL,OAAOM,mBAAmB;AAC7B,eAAO;AAAA,MACT;AAGA,UAAI,OAAON,OAAOO,QAAQC,sBAAsB,YAAY;AAC1D,cAAMC,gBAAgBT,OAAOO,QAAQC,kBAAkB;AAAA,UACrDE,UAAUV,OAAOW;AAAAA,QACnB,CAAC;AACD,YAAI,CAACF,eAAe;AAClB,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,YAAMG,SACJZ,OAAOO,QAAQM,2BAA2BC;AAC5C,YAAMC,UAAUH,OAAOZ,OAAOW,cAAc;AAC5C,YAAMK,cACJD,YAAYD,+BAA+Bd,OAAOW,cAAc,IAC5DI,UACAE;AAEN,YAAMC,uBAA4D;AAAA,QAChEC;AAAAA,QACAC,yBAAyB;AAAA;AAE3B,UAAIJ,aAAa;AACfE,6BAAqBG,MAAML;AAAAA,MAC7B;AAGA,UAAIM,YAAYtB,OAAOsB,UAAU;AAC/B,eAAAC,YAAAC,YAAA;AAAA,UAAA,YAEc,IAAIC,cAAcC,SAAQ,CAAE,KAAKC,WAAWC,KAAKC,UAAUX,oBAAoB,CAAC,CAAC;AAAA,QAAG,GAAA,IAAA;AAAA,MAGpG;AAGA,aAAAK,YAAAC,YAAA;AAAA,QAAA,YAAA;AAAA,MAAA,GAAA,IAAA;AAAA,IACF;AAAA,EACF;AACF,CAAC;"}
1
+ {"version":3,"file":"scroll-restoration.js","names":["Vue","defaultGetScrollRestorationKey","escapeHtml","restoreScroll","storageKey","isServer","useRouter","ScriptOnce","ScrollRestoration","defineComponent","name","setup","router","mounted","ref","onMounted","value","isScrollRestoring","options","scrollRestoration","shouldRestore","location","latestLocation","getKey","getScrollRestorationKey","userKey","resolvedKey","undefined","restoreScrollOptions","shouldScrollRestoration","key","_createVNode","toString","JSON","stringify"],"sources":["../../src/scroll-restoration.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport {\n defaultGetScrollRestorationKey,\n escapeHtml,\n restoreScroll,\n storageKey,\n} from '@tanstack/router-core'\nimport { isServer } from '@tanstack/router-core/isServer'\nimport { useRouter } from './useRouter'\nimport { ScriptOnce } from './ScriptOnce'\n\n/**\n * ScrollRestoration component for Vue.\n * On server: renders a ScriptOnce with scroll restoration logic.\n * On client during hydration: renders a matching ScriptOnce to avoid mismatch.\n * After mount: renders nothing.\n */\nexport const ScrollRestoration = Vue.defineComponent({\n name: 'ScrollRestoration',\n setup() {\n const router = useRouter()\n\n // Track mounted state for hydration handling\n const mounted = Vue.ref(false)\n Vue.onMounted(() => {\n mounted.value = true\n })\n\n return () => {\n // After mount, render nothing\n if (mounted.value) {\n return null\n }\n\n // Check if scroll restoration is enabled\n if (!router.isScrollRestoring) {\n return null\n }\n\n // Check custom scroll restoration function\n if (typeof router.options.scrollRestoration === 'function') {\n const shouldRestore = router.options.scrollRestoration({\n location: router.latestLocation,\n })\n if (!shouldRestore) {\n return null\n }\n }\n\n const getKey =\n router.options.getScrollRestorationKey || defaultGetScrollRestorationKey\n const userKey = getKey(router.latestLocation)\n const resolvedKey =\n userKey !== defaultGetScrollRestorationKey(router.latestLocation)\n ? userKey\n : undefined\n\n const restoreScrollOptions: Parameters<typeof restoreScroll>[0] = {\n storageKey,\n shouldScrollRestoration: true,\n }\n if (resolvedKey) {\n restoreScrollOptions.key = resolvedKey\n }\n\n // Server-side: render the actual scroll restoration script\n if (isServer ?? router.isServer) {\n return (\n <ScriptOnce\n children={`(${restoreScroll.toString()})(${escapeHtml(JSON.stringify(restoreScrollOptions))})`}\n />\n )\n }\n\n // Client-side during hydration: render empty ScriptOnce to match server structure\n return <ScriptOnce children=\"\" />\n }\n },\n})\n"],"mappings":";;;;;;;;;;;;;AAiBA,IAAaQ,oBAAoBR,IAAIS,gBAAgB;CACnDC,MAAM;CACNC,QAAQ;EACN,MAAMC,SAASN,WAAW;EAG1B,MAAMO,UAAUb,IAAIc,IAAI,MAAM;AAC9Bd,MAAIe,gBAAgB;AAClBF,WAAQG,QAAQ;IAChB;AAEF,eAAa;AAEX,OAAIH,QAAQG,MACV,QAAO;AAIT,OAAI,CAACJ,OAAOK,kBACV,QAAO;AAIT,OAAI,OAAOL,OAAOM,QAAQC,sBAAsB;QAI1C,CAHkBP,OAAOM,QAAQC,kBAAkB,EACrDE,UAAUT,OAAOU,gBAClB,CAAC,CAEA,QAAO;;GAMX,MAAMG,WADJb,OAAOM,QAAQM,2BAA2BvB,gCACrBW,OAAOU,eAAe;GAC7C,MAAMI,cACJD,YAAYxB,+BAA+BW,OAAOU,eAAe,GAC7DG,UACAE,KAAAA;GAEN,MAAMC,uBAA4D;IAChExB;IACAyB,yBAAyB;IAC1B;AACD,OAAIH,YACFE,sBAAqBE,MAAMJ;AAI7B,OAAIrB,YAAYO,OAAOP,SACrB,QAAA0B,YAAAxB,YAAA,EAAA,YAEc,IAAIJ,cAAc6B,UAAU,CAAA,IAAK9B,WAAW+B,KAAKC,UAAUN,qBAAqB,CAAC,CAAA,IAAG,EAAA,KAAA;AAMpG,UAAAG,YAAAxB,YAAA,EAAA,YAAA,IAAA,EAAA,KAAA;;;CAGL,CAAC"}
@@ -1,46 +1,32 @@
1
+ import { RouterProvider } from "../RouterProvider.js";
2
+ import { HeadContent } from "../HeadContent.js";
1
3
  import * as Vue from "vue";
2
4
  import { hydrate } from "@tanstack/router-core/ssr/client";
3
- import { HeadContent } from "../HeadContent.js";
4
- import { RouterProvider } from "../RouterProvider.js";
5
- let hydrationPromise;
6
- const RouterClient = Vue.defineComponent({
7
- name: "RouterClient",
8
- props: {
9
- router: {
10
- type: Object,
11
- required: true
12
- }
13
- },
14
- setup(props) {
15
- const isHydrated = Vue.ref(false);
16
- if (!hydrationPromise) {
17
- if (!props.router.state.matches.length) {
18
- hydrationPromise = hydrate(props.router);
19
- } else {
20
- hydrationPromise = Promise.resolve();
21
- }
22
- }
23
- Vue.onMounted(() => {
24
- hydrationPromise.then(() => {
25
- isHydrated.value = true;
26
- });
27
- });
28
- if (typeof window === "undefined") {
29
- isHydrated.value = true;
30
- }
31
- return () => {
32
- if (!isHydrated.value) {
33
- return null;
34
- }
35
- return Vue.h(RouterProvider, {
36
- router: props.router
37
- }, {
38
- innerWrap: (innerProps) => [Vue.h(HeadContent), innerProps.children]
39
- });
40
- };
41
- }
5
+ //#region src/ssr/RouterClient.tsx
6
+ var hydrationPromise;
7
+ var RouterClient = Vue.defineComponent({
8
+ name: "RouterClient",
9
+ props: { router: {
10
+ type: Object,
11
+ required: true
12
+ } },
13
+ setup(props) {
14
+ const isHydrated = Vue.ref(false);
15
+ if (!hydrationPromise) if (!props.router.state.matches.length) hydrationPromise = hydrate(props.router);
16
+ else hydrationPromise = Promise.resolve();
17
+ Vue.onMounted(() => {
18
+ hydrationPromise.then(() => {
19
+ isHydrated.value = true;
20
+ });
21
+ });
22
+ if (typeof window === "undefined") isHydrated.value = true;
23
+ return () => {
24
+ if (!isHydrated.value) return null;
25
+ return Vue.h(RouterProvider, { router: props.router }, { innerWrap: (innerProps) => [Vue.h(HeadContent), innerProps.children] });
26
+ };
27
+ }
42
28
  });
43
- export {
44
- RouterClient
45
- };
46
- //# sourceMappingURL=RouterClient.js.map
29
+ //#endregion
30
+ export { RouterClient };
31
+
32
+ //# sourceMappingURL=RouterClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RouterClient.js","sources":["../../../src/ssr/RouterClient.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport { hydrate } from '@tanstack/router-core/ssr/client'\nimport { HeadContent } from '../HeadContent'\nimport { RouterProvider } from '../RouterProvider'\nimport type { AnyRouter } from '@tanstack/router-core'\n\nlet hydrationPromise: Promise<void | Array<Array<void>>> | undefined\n\nexport const RouterClient = Vue.defineComponent({\n name: 'RouterClient',\n props: {\n router: {\n type: Object as () => AnyRouter,\n required: true,\n },\n },\n setup(props) {\n const isHydrated = Vue.ref(false)\n\n if (!hydrationPromise) {\n if (!props.router.state.matches.length) {\n hydrationPromise = hydrate(props.router)\n } else {\n hydrationPromise = Promise.resolve()\n }\n }\n\n Vue.onMounted(() => {\n hydrationPromise!.then(() => {\n isHydrated.value = true\n })\n })\n\n // For SSR, we're already hydrated\n if (typeof window === 'undefined') {\n isHydrated.value = true\n }\n\n return () => {\n if (!isHydrated.value) {\n return null\n }\n\n return Vue.h(\n RouterProvider,\n {\n router: props.router,\n },\n {\n innerWrap: (innerProps: { children: any }) => [\n Vue.h(HeadContent),\n innerProps.children,\n ],\n },\n )\n }\n },\n})\n"],"names":["hydrationPromise","RouterClient","Vue","defineComponent","name","props","router","type","Object","required","setup","isHydrated","ref","state","matches","length","hydrate","Promise","resolve","onMounted","then","value","window","h","RouterProvider","innerWrap","innerProps","HeadContent","children"],"mappings":";;;;AAMA,IAAIA;MAESC,eAAeC,IAAIC,gBAAgB;AAAA,EAC9CC,MAAM;AAAA,EACNC,OAAO;AAAA,IACLC,QAAQ;AAAA,MACNC,MAAMC;AAAAA,MACNC,UAAU;AAAA,IACZ;AAAA;EAEFC,MAAML,OAAO;AACX,UAAMM,aAAaT,IAAIU,IAAI,KAAK;AAEhC,QAAI,CAACZ,kBAAkB;AACrB,UAAI,CAACK,MAAMC,OAAOO,MAAMC,QAAQC,QAAQ;AACtCf,2BAAmBgB,QAAQX,MAAMC,MAAM;AAAA,MACzC,OAAO;AACLN,2BAAmBiB,QAAQC,QAAO;AAAA,MACpC;AAAA,IACF;AAEAhB,QAAIiB,UAAU,MAAM;AAClBnB,uBAAkBoB,KAAK,MAAM;AAC3BT,mBAAWU,QAAQ;AAAA,MACrB,CAAC;AAAA,IACH,CAAC;AAGD,QAAI,OAAOC,WAAW,aAAa;AACjCX,iBAAWU,QAAQ;AAAA,IACrB;AAEA,WAAO,MAAM;AACX,UAAI,CAACV,WAAWU,OAAO;AACrB,eAAO;AAAA,MACT;AAEA,aAAOnB,IAAIqB,EACTC,gBACA;AAAA,QACElB,QAAQD,MAAMC;AAAAA,MAChB,GACA;AAAA,QACEmB,WAAYC,gBAAkC,CAC5CxB,IAAIqB,EAAEI,WAAW,GACjBD,WAAWE,QAAQ;AAAA,MAEvB,CACF;AAAA,IACF;AAAA,EACF;AACF,CAAC;"}
1
+ {"version":3,"file":"RouterClient.js","names":["Vue","hydrate","HeadContent","RouterProvider","hydrationPromise","RouterClient","defineComponent","name","props","router","type","Object","required","setup","isHydrated","ref","state","matches","length","Promise","resolve","onMounted","then","value","window","h","innerWrap","innerProps","children"],"sources":["../../../src/ssr/RouterClient.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport { hydrate } from '@tanstack/router-core/ssr/client'\nimport { HeadContent } from '../HeadContent'\nimport { RouterProvider } from '../RouterProvider'\nimport type { AnyRouter } from '@tanstack/router-core'\n\nlet hydrationPromise: Promise<void | Array<Array<void>>> | undefined\n\nexport const RouterClient = Vue.defineComponent({\n name: 'RouterClient',\n props: {\n router: {\n type: Object as () => AnyRouter,\n required: true,\n },\n },\n setup(props) {\n const isHydrated = Vue.ref(false)\n\n if (!hydrationPromise) {\n if (!props.router.state.matches.length) {\n hydrationPromise = hydrate(props.router)\n } else {\n hydrationPromise = Promise.resolve()\n }\n }\n\n Vue.onMounted(() => {\n hydrationPromise!.then(() => {\n isHydrated.value = true\n })\n })\n\n // For SSR, we're already hydrated\n if (typeof window === 'undefined') {\n isHydrated.value = true\n }\n\n return () => {\n if (!isHydrated.value) {\n return null\n }\n\n return Vue.h(\n RouterProvider,\n {\n router: props.router,\n },\n {\n innerWrap: (innerProps: { children: any }) => [\n Vue.h(HeadContent),\n innerProps.children,\n ],\n },\n )\n }\n },\n})\n"],"mappings":";;;;;AAMA,IAAII;AAEJ,IAAaC,eAAeL,IAAIM,gBAAgB;CAC9CC,MAAM;CACNC,OAAO,EACLC,QAAQ;EACNC,MAAMC;EACNC,UAAU;EACZ,EACD;CACDC,MAAML,OAAO;EACX,MAAMM,aAAad,IAAIe,IAAI,MAAM;AAEjC,MAAI,CAACX,iBACH,KAAI,CAACI,MAAMC,OAAOO,MAAMC,QAAQC,OAC9Bd,oBAAmBH,QAAQO,MAAMC,OAAO;MAExCL,oBAAmBe,QAAQC,SAAS;AAIxCpB,MAAIqB,gBAAgB;AAClBjB,oBAAkBkB,WAAW;AAC3BR,eAAWS,QAAQ;KACnB;IACF;AAGF,MAAI,OAAOC,WAAW,YACpBV,YAAWS,QAAQ;AAGrB,eAAa;AACX,OAAI,CAACT,WAAWS,MACd,QAAO;AAGT,UAAOvB,IAAIyB,EACTtB,gBACA,EACEM,QAAQD,MAAMC,QACf,EACD,EACEiB,YAAYC,eAAkC,CAC5C3B,IAAIyB,EAAEvB,YAAY,EAClByB,WAAWC,SAAQ,EAGzB,CAAC;;;CAGN,CAAC"}
@@ -1,37 +1,34 @@
1
- import * as Vue from "vue";
1
+ import { RouterProvider } from "../RouterProvider.js";
2
2
  import { Asset } from "../Asset.js";
3
3
  import { useTags } from "../headContentUtils.js";
4
- import { RouterProvider } from "../RouterProvider.js";
5
4
  import { Scripts } from "../Scripts.js";
6
- const ServerHeadContent = Vue.defineComponent({
7
- name: "ServerHeadContent",
8
- setup() {
9
- const getTags = useTags();
10
- return () => getTags().map((tag) => Vue.h(Asset, {
11
- key: tag.tag + tag.id,
12
- ...tag
13
- }));
14
- }
5
+ import * as Vue from "vue";
6
+ //#region src/ssr/RouterServer.tsx
7
+ var ServerHeadContent = Vue.defineComponent({
8
+ name: "ServerHeadContent",
9
+ setup() {
10
+ const getTags = useTags();
11
+ return () => getTags().map((tag) => Vue.h(Asset, {
12
+ key: tag.tag + tag.id,
13
+ ...tag
14
+ }));
15
+ }
15
16
  });
16
- const RouterServer = Vue.defineComponent({
17
- name: "RouterServer",
18
- props: {
19
- router: {
20
- type: Object,
21
- required: true
22
- }
23
- },
24
- setup(props) {
25
- return () => Vue.h("html", null, [Vue.h("head", null, [Vue.h(ServerHeadContent)]), Vue.h("body", null, [Vue.h("div", {
26
- id: "__app"
27
- }, [Vue.h(RouterProvider, {
28
- router: props.router
29
- }, {
30
- innerWrap: (innerProps) => [Vue.h(ServerHeadContent), innerProps.children, Vue.h(Scripts)]
31
- })])])]);
32
- }
17
+ var RouterServer = Vue.defineComponent({
18
+ name: "RouterServer",
19
+ props: { router: {
20
+ type: Object,
21
+ required: true
22
+ } },
23
+ setup(props) {
24
+ return () => Vue.h("html", null, [Vue.h("head", null, [Vue.h(ServerHeadContent)]), Vue.h("body", null, [Vue.h("div", { id: "__app" }, [Vue.h(RouterProvider, { router: props.router }, { innerWrap: (innerProps) => [
25
+ Vue.h(ServerHeadContent),
26
+ innerProps.children,
27
+ Vue.h(Scripts)
28
+ ] })])])]);
29
+ }
33
30
  });
34
- export {
35
- RouterServer
36
- };
37
- //# sourceMappingURL=RouterServer.js.map
31
+ //#endregion
32
+ export { RouterServer };
33
+
34
+ //# sourceMappingURL=RouterServer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RouterServer.js","sources":["../../../src/ssr/RouterServer.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport { Asset } from '../Asset'\nimport { useTags } from '../headContentUtils'\nimport { RouterProvider } from '../RouterProvider'\nimport { Scripts } from '../Scripts'\nimport type { AnyRouter, RouterManagedTag } from '@tanstack/router-core'\n\nconst ServerHeadContent = Vue.defineComponent({\n name: 'ServerHeadContent',\n setup() {\n const getTags = useTags()\n\n return () =>\n getTags().map((tag: RouterManagedTag) =>\n Vue.h(Asset, { key: tag.tag + (tag as any).id, ...tag }),\n )\n },\n})\n\nexport const RouterServer = Vue.defineComponent({\n name: 'RouterServer',\n props: {\n router: {\n type: Object as () => AnyRouter,\n required: true,\n },\n },\n setup(props) {\n return () =>\n Vue.h('html', null, [\n Vue.h('head', null, [Vue.h(ServerHeadContent)]),\n Vue.h('body', null, [\n Vue.h('div', { id: '__app' }, [\n Vue.h(\n RouterProvider,\n {\n router: props.router,\n },\n {\n innerWrap: (innerProps: { children: any }) => [\n Vue.h(ServerHeadContent),\n innerProps.children,\n Vue.h(Scripts),\n ],\n },\n ),\n ]),\n ]),\n ])\n },\n})\n"],"names":["ServerHeadContent","Vue","defineComponent","name","setup","getTags","useTags","map","tag","h","Asset","key","id","RouterServer","props","router","type","Object","required","RouterProvider","innerWrap","innerProps","children","Scripts"],"mappings":";;;;;AAOA,MAAMA,oBAAoBC,IAAIC,gBAAgB;AAAA,EAC5CC,MAAM;AAAA,EACNC,QAAQ;AACN,UAAMC,UAAUC,QAAO;AAEvB,WAAO,MACLD,QAAO,EAAGE,IAAKC,SACbP,IAAIQ,EAAEC,OAAO;AAAA,MAAEC,KAAKH,IAAIA,MAAOA,IAAYI;AAAAA,MAAI,GAAGJ;AAAAA,IAAI,CAAC,CACzD;AAAA,EACJ;AACF,CAAC;MAEYK,eAAeZ,IAAIC,gBAAgB;AAAA,EAC9CC,MAAM;AAAA,EACNW,OAAO;AAAA,IACLC,QAAQ;AAAA,MACNC,MAAMC;AAAAA,MACNC,UAAU;AAAA,IACZ;AAAA;EAEFd,MAAMU,OAAO;AACX,WAAO,MACLb,IAAIQ,EAAE,QAAQ,MAAM,CAClBR,IAAIQ,EAAE,QAAQ,MAAM,CAACR,IAAIQ,EAAET,iBAAiB,CAAC,CAAC,GAC9CC,IAAIQ,EAAE,QAAQ,MAAM,CAClBR,IAAIQ,EAAE,OAAO;AAAA,MAAEG,IAAI;AAAA,IAAQ,GAAG,CAC5BX,IAAIQ,EACFU,gBACA;AAAA,MACEJ,QAAQD,MAAMC;AAAAA,IAChB,GACA;AAAA,MACEK,WAAYC,gBAAkC,CAC5CpB,IAAIQ,EAAET,iBAAiB,GACvBqB,WAAWC,UACXrB,IAAIQ,EAAEc,OAAO,CAAC;AAAA,IAElB,CACF,CAAC,CACF,CAAC,CACH,CAAC,CACH;AAAA,EACL;AACF,CAAC;"}
1
+ {"version":3,"file":"RouterServer.js","names":["Vue","Asset","useTags","RouterProvider","Scripts","ServerHeadContent","defineComponent","name","setup","getTags","map","tag","h","key","id","RouterServer","props","router","type","Object","required","innerWrap","innerProps","children"],"sources":["../../../src/ssr/RouterServer.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport { Asset } from '../Asset'\nimport { useTags } from '../headContentUtils'\nimport { RouterProvider } from '../RouterProvider'\nimport { Scripts } from '../Scripts'\nimport type { AnyRouter, RouterManagedTag } from '@tanstack/router-core'\n\nconst ServerHeadContent = Vue.defineComponent({\n name: 'ServerHeadContent',\n setup() {\n const getTags = useTags()\n\n return () =>\n getTags().map((tag: RouterManagedTag) =>\n Vue.h(Asset, { key: tag.tag + (tag as any).id, ...tag }),\n )\n },\n})\n\nexport const RouterServer = Vue.defineComponent({\n name: 'RouterServer',\n props: {\n router: {\n type: Object as () => AnyRouter,\n required: true,\n },\n },\n setup(props) {\n return () =>\n Vue.h('html', null, [\n Vue.h('head', null, [Vue.h(ServerHeadContent)]),\n Vue.h('body', null, [\n Vue.h('div', { id: '__app' }, [\n Vue.h(\n RouterProvider,\n {\n router: props.router,\n },\n {\n innerWrap: (innerProps: { children: any }) => [\n Vue.h(ServerHeadContent),\n innerProps.children,\n Vue.h(Scripts),\n ],\n },\n ),\n ]),\n ]),\n ])\n },\n})\n"],"mappings":";;;;;;AAOA,IAAMK,oBAAoBL,IAAIM,gBAAgB;CAC5CC,MAAM;CACNC,QAAQ;EACN,MAAMC,UAAUP,SAAS;AAEzB,eACEO,SAAS,CAACC,KAAKC,QACbX,IAAIY,EAAEX,OAAO;GAAEY,KAAKF,IAAIA,MAAOA,IAAYG;GAAI,GAAGH;GAAK,CACzD,CAAC;;CAEN,CAAC;AAEF,IAAaI,eAAef,IAAIM,gBAAgB;CAC9CC,MAAM;CACNS,OAAO,EACLC,QAAQ;EACNC,MAAMC;EACNC,UAAU;EACZ,EACD;CACDZ,MAAMQ,OAAO;AACX,eACEhB,IAAIY,EAAE,QAAQ,MAAM,CAClBZ,IAAIY,EAAE,QAAQ,MAAM,CAACZ,IAAIY,EAAEP,kBAAkB,CAAC,CAAC,EAC/CL,IAAIY,EAAE,QAAQ,MAAM,CAClBZ,IAAIY,EAAE,OAAO,EAAEE,IAAI,SAAS,EAAE,CAC5Bd,IAAIY,EACFT,gBACA,EACEc,QAAQD,MAAMC,QACf,EACD,EACEI,YAAYC,eAAkC;GAC5CtB,IAAIY,EAAEP,kBAAkB;GACxBiB,WAAWC;GACXvB,IAAIY,EAAER,QAAQ;GAAA,EAGpB,CAAC,CACF,CAAC,CACH,CAAC,CACH,CAAC;;CAEP,CAAC"}
@@ -1,5 +1,2 @@
1
1
  import { RouterClient } from "./RouterClient.js";
2
- export {
3
- RouterClient
4
- };
5
- //# sourceMappingURL=client.js.map
2
+ export { RouterClient };
@@ -1,15 +1,13 @@
1
- import { defineHandlerCallback } from "@tanstack/router-core/ssr/server";
2
- import { renderRouterToString } from "./renderRouterToString.js";
3
1
  import { RouterServer } from "./RouterServer.js";
4
- const defaultRenderHandler = defineHandlerCallback(({
5
- router,
6
- responseHeaders
7
- }) => renderRouterToString({
8
- router,
9
- responseHeaders,
10
- App: RouterServer
2
+ import { renderRouterToString } from "./renderRouterToString.js";
3
+ import { defineHandlerCallback } from "@tanstack/router-core/ssr/server";
4
+ //#region src/ssr/defaultRenderHandler.tsx
5
+ var defaultRenderHandler = defineHandlerCallback(({ router, responseHeaders }) => renderRouterToString({
6
+ router,
7
+ responseHeaders,
8
+ App: RouterServer
11
9
  }));
12
- export {
13
- defaultRenderHandler
14
- };
15
- //# sourceMappingURL=defaultRenderHandler.js.map
10
+ //#endregion
11
+ export { defaultRenderHandler };
12
+
13
+ //# sourceMappingURL=defaultRenderHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaultRenderHandler.js","sources":["../../../src/ssr/defaultRenderHandler.tsx"],"sourcesContent":["import { defineHandlerCallback } from '@tanstack/router-core/ssr/server'\nimport { renderRouterToString } from './renderRouterToString'\nimport { RouterServer } from './RouterServer'\n\nexport const defaultRenderHandler = defineHandlerCallback(\n ({ router, responseHeaders }) =>\n renderRouterToString({\n router,\n responseHeaders,\n App: RouterServer,\n }),\n)\n"],"names":["defaultRenderHandler","defineHandlerCallback","router","responseHeaders","renderRouterToString","App","RouterServer"],"mappings":";;;AAIO,MAAMA,uBAAuBC,sBAClC,CAAC;AAAA,EAAEC;AAAAA,EAAQC;AAAgB,MACzBC,qBAAqB;AAAA,EACnBF;AAAAA,EACAC;AAAAA,EACAE,KAAKC;AACP,CAAC,CACL;"}
1
+ {"version":3,"file":"defaultRenderHandler.js","names":["defineHandlerCallback","renderRouterToString","RouterServer","defaultRenderHandler","router","responseHeaders","App"],"sources":["../../../src/ssr/defaultRenderHandler.tsx"],"sourcesContent":["import { defineHandlerCallback } from '@tanstack/router-core/ssr/server'\nimport { renderRouterToString } from './renderRouterToString'\nimport { RouterServer } from './RouterServer'\n\nexport const defaultRenderHandler = defineHandlerCallback(\n ({ router, responseHeaders }) =>\n renderRouterToString({\n router,\n responseHeaders,\n App: RouterServer,\n }),\n)\n"],"mappings":";;;;AAIA,IAAaG,uBAAuBH,uBACjC,EAAEI,QAAQC,sBACTJ,qBAAqB;CACnBG;CACAC;CACAC,KAAKJ;CACN,CACL,CAAC"}
@@ -1,17 +1,14 @@
1
- import { defineHandlerCallback } from "@tanstack/router-core/ssr/server";
2
- import { renderRouterToStream } from "./renderRouterToStream.js";
3
1
  import { RouterServer } from "./RouterServer.js";
4
- const defaultStreamHandler = defineHandlerCallback(async ({
5
- request,
6
- router,
7
- responseHeaders
8
- }) => await renderRouterToStream({
9
- request,
10
- router,
11
- responseHeaders,
12
- App: RouterServer
2
+ import { renderRouterToStream } from "./renderRouterToStream.js";
3
+ import { defineHandlerCallback } from "@tanstack/router-core/ssr/server";
4
+ //#region src/ssr/defaultStreamHandler.tsx
5
+ var defaultStreamHandler = defineHandlerCallback(async ({ request, router, responseHeaders }) => await renderRouterToStream({
6
+ request,
7
+ router,
8
+ responseHeaders,
9
+ App: RouterServer
13
10
  }));
14
- export {
15
- defaultStreamHandler
16
- };
17
- //# sourceMappingURL=defaultStreamHandler.js.map
11
+ //#endregion
12
+ export { defaultStreamHandler };
13
+
14
+ //# sourceMappingURL=defaultStreamHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaultStreamHandler.js","sources":["../../../src/ssr/defaultStreamHandler.tsx"],"sourcesContent":["import { defineHandlerCallback } from '@tanstack/router-core/ssr/server'\nimport { renderRouterToStream } from './renderRouterToStream'\nimport { RouterServer } from './RouterServer'\n\nexport const defaultStreamHandler = defineHandlerCallback(\n async ({ request, router, responseHeaders }) =>\n await renderRouterToStream({\n request,\n router,\n responseHeaders,\n App: RouterServer,\n }),\n)\n"],"names":["defaultStreamHandler","defineHandlerCallback","request","router","responseHeaders","renderRouterToStream","App","RouterServer"],"mappings":";;;AAIO,MAAMA,uBAAuBC,sBAClC,OAAO;AAAA,EAAEC;AAAAA,EAASC;AAAAA,EAAQC;AAAgB,MACxC,MAAMC,qBAAqB;AAAA,EACzBH;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAE,KAAKC;AACP,CAAC,CACL;"}
1
+ {"version":3,"file":"defaultStreamHandler.js","names":["defineHandlerCallback","renderRouterToStream","RouterServer","defaultStreamHandler","request","router","responseHeaders","App"],"sources":["../../../src/ssr/defaultStreamHandler.tsx"],"sourcesContent":["import { defineHandlerCallback } from '@tanstack/router-core/ssr/server'\nimport { renderRouterToStream } from './renderRouterToStream'\nimport { RouterServer } from './RouterServer'\n\nexport const defaultStreamHandler = defineHandlerCallback(\n async ({ request, router, responseHeaders }) =>\n await renderRouterToStream({\n request,\n router,\n responseHeaders,\n App: RouterServer,\n }),\n)\n"],"mappings":";;;;AAIA,IAAaG,uBAAuBH,sBAClC,OAAO,EAAEI,SAASC,QAAQC,sBACxB,MAAML,qBAAqB;CACzBG;CACAC;CACAC;CACAC,KAAKL;CACN,CACL,CAAC"}
@@ -1,70 +1,52 @@
1
- import { ReadableStream } from "node:stream/web";
2
1
  import * as Vue from "vue";
3
- import { renderToString, pipeToWebWritable } from "vue/server-renderer";
4
- import { isbot } from "isbot";
5
2
  import { transformReadableStreamWithRouter } from "@tanstack/router-core/ssr/server";
3
+ import { pipeToWebWritable, renderToString } from "vue/server-renderer";
4
+ import { ReadableStream } from "node:stream/web";
5
+ import { isbot } from "isbot";
6
+ //#region src/ssr/renderRouterToStream.tsx
6
7
  function prependDoctype(readable) {
7
- const encoder = new TextEncoder();
8
- let sentDoctype = false;
9
- return new ReadableStream({
10
- start(controller) {
11
- const reader = readable.getReader();
12
- async function pump() {
13
- const {
14
- done,
15
- value
16
- } = await reader.read();
17
- if (done) {
18
- controller.close();
19
- return;
20
- }
21
- if (!sentDoctype) {
22
- sentDoctype = true;
23
- controller.enqueue(encoder.encode("<!DOCTYPE html>"));
24
- }
25
- controller.enqueue(value);
26
- return pump();
27
- }
28
- pump().catch((err) => controller.error(err));
29
- }
30
- });
8
+ const encoder = new TextEncoder();
9
+ let sentDoctype = false;
10
+ return new ReadableStream({ start(controller) {
11
+ const reader = readable.getReader();
12
+ async function pump() {
13
+ const { done, value } = await reader.read();
14
+ if (done) {
15
+ controller.close();
16
+ return;
17
+ }
18
+ if (!sentDoctype) {
19
+ sentDoctype = true;
20
+ controller.enqueue(encoder.encode("<!DOCTYPE html>"));
21
+ }
22
+ controller.enqueue(value);
23
+ return pump();
24
+ }
25
+ pump().catch((err) => controller.error(err));
26
+ } });
31
27
  }
32
- const renderRouterToStream = async ({
33
- request,
34
- router,
35
- responseHeaders,
36
- App
37
- }) => {
38
- const app = Vue.createSSRApp(App, {
39
- router
40
- });
41
- if (isbot(request.headers.get("User-Agent"))) {
42
- let fullHtml = await renderToString(app);
43
- const htmlOpenIndex = fullHtml.indexOf("<html");
44
- const htmlCloseIndex = fullHtml.indexOf("</html>");
45
- if (htmlOpenIndex !== -1 && htmlCloseIndex !== -1) {
46
- fullHtml = fullHtml.slice(htmlOpenIndex, htmlCloseIndex + 7);
47
- } else if (htmlOpenIndex !== -1) {
48
- fullHtml = fullHtml.slice(htmlOpenIndex);
49
- }
50
- return new Response(`<!DOCTYPE html>${fullHtml}`, {
51
- status: router.state.statusCode,
52
- headers: responseHeaders
53
- });
54
- }
55
- const {
56
- writable,
57
- readable
58
- } = new TransformStream();
59
- pipeToWebWritable(app, {}, writable);
60
- const doctypedStream = prependDoctype(readable);
61
- const responseStream = transformReadableStreamWithRouter(router, doctypedStream);
62
- return new Response(responseStream, {
63
- status: router.state.statusCode,
64
- headers: responseHeaders
65
- });
66
- };
67
- export {
68
- renderRouterToStream
28
+ var renderRouterToStream = async ({ request, router, responseHeaders, App }) => {
29
+ const app = Vue.createSSRApp(App, { router });
30
+ if (isbot(request.headers.get("User-Agent"))) {
31
+ let fullHtml = await renderToString(app);
32
+ const htmlOpenIndex = fullHtml.indexOf("<html");
33
+ const htmlCloseIndex = fullHtml.indexOf("</html>");
34
+ if (htmlOpenIndex !== -1 && htmlCloseIndex !== -1) fullHtml = fullHtml.slice(htmlOpenIndex, htmlCloseIndex + 7);
35
+ else if (htmlOpenIndex !== -1) fullHtml = fullHtml.slice(htmlOpenIndex);
36
+ return new Response(`<!DOCTYPE html>${fullHtml}`, {
37
+ status: router.state.statusCode,
38
+ headers: responseHeaders
39
+ });
40
+ }
41
+ const { writable, readable } = new TransformStream();
42
+ pipeToWebWritable(app, {}, writable);
43
+ const responseStream = transformReadableStreamWithRouter(router, prependDoctype(readable));
44
+ return new Response(responseStream, {
45
+ status: router.state.statusCode,
46
+ headers: responseHeaders
47
+ });
69
48
  };
70
- //# sourceMappingURL=renderRouterToStream.js.map
49
+ //#endregion
50
+ export { renderRouterToStream };
51
+
52
+ //# sourceMappingURL=renderRouterToStream.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderRouterToStream.js","sources":["../../../src/ssr/renderRouterToStream.tsx"],"sourcesContent":["import { ReadableStream as NodeReadableStream } from 'node:stream/web'\nimport * as Vue from 'vue'\nimport { pipeToWebWritable, renderToString } from 'vue/server-renderer'\nimport { isbot } from 'isbot'\nimport { transformReadableStreamWithRouter } from '@tanstack/router-core/ssr/server'\nimport type { AnyRouter } from '@tanstack/router-core'\nimport type { Component } from 'vue'\n\nfunction prependDoctype(\n readable: globalThis.ReadableStream,\n): NodeReadableStream<Uint8Array> {\n const encoder = new TextEncoder()\n let sentDoctype = false\n\n return new NodeReadableStream<Uint8Array>({\n start(controller) {\n const reader = readable.getReader()\n\n async function pump(): Promise<void> {\n const { done, value } = await reader.read()\n if (done) {\n controller.close()\n return\n }\n\n if (!sentDoctype) {\n sentDoctype = true\n controller.enqueue(encoder.encode('<!DOCTYPE html>'))\n }\n controller.enqueue(value)\n return pump()\n }\n\n pump().catch((err) => controller.error(err))\n },\n })\n}\n\nexport const renderRouterToStream = async ({\n request,\n router,\n responseHeaders,\n App,\n}: {\n request: Request\n router: AnyRouter\n responseHeaders: Headers\n App: Component\n}) => {\n const app = Vue.createSSRApp(App, { router })\n\n if (isbot(request.headers.get('User-Agent'))) {\n let fullHtml = await renderToString(app)\n\n const htmlOpenIndex = fullHtml.indexOf('<html')\n const htmlCloseIndex = fullHtml.indexOf('</html>')\n\n if (htmlOpenIndex !== -1 && htmlCloseIndex !== -1) {\n fullHtml = fullHtml.slice(htmlOpenIndex, htmlCloseIndex + 7)\n } else if (htmlOpenIndex !== -1) {\n fullHtml = fullHtml.slice(htmlOpenIndex)\n }\n\n return new Response(`<!DOCTYPE html>${fullHtml}`, {\n status: router.state.statusCode,\n headers: responseHeaders,\n })\n }\n\n const { writable, readable } = new TransformStream()\n\n pipeToWebWritable(app, {}, writable)\n\n const doctypedStream = prependDoctype(readable)\n const responseStream = transformReadableStreamWithRouter(\n router,\n doctypedStream,\n )\n\n return new Response(responseStream as any, {\n status: router.state.statusCode,\n headers: responseHeaders,\n })\n}\n"],"names":["prependDoctype","readable","encoder","TextEncoder","sentDoctype","NodeReadableStream","start","controller","reader","getReader","pump","done","value","read","close","enqueue","encode","catch","err","error","renderRouterToStream","request","router","responseHeaders","App","app","Vue","createSSRApp","isbot","headers","get","fullHtml","renderToString","htmlOpenIndex","indexOf","htmlCloseIndex","slice","Response","status","state","statusCode","writable","TransformStream","pipeToWebWritable","doctypedStream","responseStream","transformReadableStreamWithRouter"],"mappings":";;;;;AAQA,SAASA,eACPC,UACgC;AAChC,QAAMC,UAAU,IAAIC,YAAW;AAC/B,MAAIC,cAAc;AAElB,SAAO,IAAIC,eAA+B;AAAA,IACxCC,MAAMC,YAAY;AAChB,YAAMC,SAASP,SAASQ,UAAS;AAEjC,qBAAeC,OAAsB;AACnC,cAAM;AAAA,UAAEC;AAAAA,UAAMC;AAAAA,QAAM,IAAI,MAAMJ,OAAOK,KAAI;AACzC,YAAIF,MAAM;AACRJ,qBAAWO,MAAK;AAChB;AAAA,QACF;AAEA,YAAI,CAACV,aAAa;AAChBA,wBAAc;AACdG,qBAAWQ,QAAQb,QAAQc,OAAO,iBAAiB,CAAC;AAAA,QACtD;AACAT,mBAAWQ,QAAQH,KAAK;AACxB,eAAOF,KAAI;AAAA,MACb;AAEAA,WAAI,EAAGO,MAAOC,SAAQX,WAAWY,MAAMD,GAAG,CAAC;AAAA,IAC7C;AAAA,EACF,CAAC;AACH;AAEO,MAAME,uBAAuB,OAAO;AAAA,EACzCC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAMF,MAAM;AACJ,QAAMC,MAAMC,IAAIC,aAAaH,KAAK;AAAA,IAAEF;AAAAA,EAAO,CAAC;AAE5C,MAAIM,MAAMP,QAAQQ,QAAQC,IAAI,YAAY,CAAC,GAAG;AAC5C,QAAIC,WAAW,MAAMC,eAAeP,GAAG;AAEvC,UAAMQ,gBAAgBF,SAASG,QAAQ,OAAO;AAC9C,UAAMC,iBAAiBJ,SAASG,QAAQ,SAAS;AAEjD,QAAID,kBAAkB,MAAME,mBAAmB,IAAI;AACjDJ,iBAAWA,SAASK,MAAMH,eAAeE,iBAAiB,CAAC;AAAA,IAC7D,WAAWF,kBAAkB,IAAI;AAC/BF,iBAAWA,SAASK,MAAMH,aAAa;AAAA,IACzC;AAEA,WAAO,IAAII,SAAS,kBAAkBN,QAAQ,IAAI;AAAA,MAChDO,QAAQhB,OAAOiB,MAAMC;AAAAA,MACrBX,SAASN;AAAAA,IACX,CAAC;AAAA,EACH;AAEA,QAAM;AAAA,IAAEkB;AAAAA,IAAUxC;AAAAA,EAAS,IAAI,IAAIyC,gBAAe;AAElDC,oBAAkBlB,KAAK,CAAA,GAAIgB,QAAQ;AAEnC,QAAMG,iBAAiB5C,eAAeC,QAAQ;AAC9C,QAAM4C,iBAAiBC,kCACrBxB,QACAsB,cACF;AAEA,SAAO,IAAIP,SAASQ,gBAAuB;AAAA,IACzCP,QAAQhB,OAAOiB,MAAMC;AAAAA,IACrBX,SAASN;AAAAA,EACX,CAAC;AACH;"}
1
+ {"version":3,"file":"renderRouterToStream.js","names":["ReadableStream","NodeReadableStream","Vue","pipeToWebWritable","renderToString","isbot","transformReadableStreamWithRouter","prependDoctype","readable","encoder","TextEncoder","sentDoctype","start","controller","reader","getReader","pump","done","value","read","close","enqueue","encode","catch","err","error","renderRouterToStream","request","router","responseHeaders","App","app","createSSRApp","headers","get","fullHtml","htmlOpenIndex","indexOf","htmlCloseIndex","slice","Response","status","state","statusCode","writable","TransformStream","doctypedStream","responseStream"],"sources":["../../../src/ssr/renderRouterToStream.tsx"],"sourcesContent":["import { ReadableStream as NodeReadableStream } from 'node:stream/web'\nimport * as Vue from 'vue'\nimport { pipeToWebWritable, renderToString } from 'vue/server-renderer'\nimport { isbot } from 'isbot'\nimport { transformReadableStreamWithRouter } from '@tanstack/router-core/ssr/server'\nimport type { AnyRouter } from '@tanstack/router-core'\nimport type { Component } from 'vue'\n\nfunction prependDoctype(\n readable: globalThis.ReadableStream,\n): NodeReadableStream<Uint8Array> {\n const encoder = new TextEncoder()\n let sentDoctype = false\n\n return new NodeReadableStream<Uint8Array>({\n start(controller) {\n const reader = readable.getReader()\n\n async function pump(): Promise<void> {\n const { done, value } = await reader.read()\n if (done) {\n controller.close()\n return\n }\n\n if (!sentDoctype) {\n sentDoctype = true\n controller.enqueue(encoder.encode('<!DOCTYPE html>'))\n }\n controller.enqueue(value)\n return pump()\n }\n\n pump().catch((err) => controller.error(err))\n },\n })\n}\n\nexport const renderRouterToStream = async ({\n request,\n router,\n responseHeaders,\n App,\n}: {\n request: Request\n router: AnyRouter\n responseHeaders: Headers\n App: Component\n}) => {\n const app = Vue.createSSRApp(App, { router })\n\n if (isbot(request.headers.get('User-Agent'))) {\n let fullHtml = await renderToString(app)\n\n const htmlOpenIndex = fullHtml.indexOf('<html')\n const htmlCloseIndex = fullHtml.indexOf('</html>')\n\n if (htmlOpenIndex !== -1 && htmlCloseIndex !== -1) {\n fullHtml = fullHtml.slice(htmlOpenIndex, htmlCloseIndex + 7)\n } else if (htmlOpenIndex !== -1) {\n fullHtml = fullHtml.slice(htmlOpenIndex)\n }\n\n return new Response(`<!DOCTYPE html>${fullHtml}`, {\n status: router.state.statusCode,\n headers: responseHeaders,\n })\n }\n\n const { writable, readable } = new TransformStream()\n\n pipeToWebWritable(app, {}, writable)\n\n const doctypedStream = prependDoctype(readable)\n const responseStream = transformReadableStreamWithRouter(\n router,\n doctypedStream,\n )\n\n return new Response(responseStream as any, {\n status: router.state.statusCode,\n headers: responseHeaders,\n })\n}\n"],"mappings":";;;;;;AAQA,SAASO,eACPC,UACgC;CAChC,MAAMC,UAAU,IAAIC,aAAa;CACjC,IAAIC,cAAc;AAElB,QAAO,IAAIV,eAA+B,EACxCW,MAAMC,YAAY;EAChB,MAAMC,SAASN,SAASO,WAAW;EAEnC,eAAeC,OAAsB;GACnC,MAAM,EAAEC,MAAMC,UAAU,MAAMJ,OAAOK,MAAM;AAC3C,OAAIF,MAAM;AACRJ,eAAWO,OAAO;AAClB;;AAGF,OAAI,CAACT,aAAa;AAChBA,kBAAc;AACdE,eAAWQ,QAAQZ,QAAQa,OAAO,kBAAkB,CAAC;;AAEvDT,cAAWQ,QAAQH,MAAM;AACzB,UAAOF,MAAM;;AAGfA,QAAM,CAACO,OAAOC,QAAQX,WAAWY,MAAMD,IAAI,CAAC;IAE/C,CAAC;;AAGJ,IAAaE,uBAAuB,OAAO,EACzCC,SACAC,QACAC,iBACAC,UAMI;CACJ,MAAMC,MAAM7B,IAAI8B,aAAaF,KAAK,EAAEF,QAAQ,CAAC;AAE7C,KAAIvB,MAAMsB,QAAQM,QAAQC,IAAI,aAAa,CAAC,EAAE;EAC5C,IAAIC,WAAW,MAAM/B,eAAe2B,IAAI;EAExC,MAAMK,gBAAgBD,SAASE,QAAQ,QAAQ;EAC/C,MAAMC,iBAAiBH,SAASE,QAAQ,UAAU;AAElD,MAAID,kBAAkB,MAAME,mBAAmB,GAC7CH,YAAWA,SAASI,MAAMH,eAAeE,iBAAiB,EAAE;WACnDF,kBAAkB,GAC3BD,YAAWA,SAASI,MAAMH,cAAc;AAG1C,SAAO,IAAII,SAAS,kBAAkBL,YAAY;GAChDM,QAAQb,OAAOc,MAAMC;GACrBV,SAASJ;GACV,CAAC;;CAGJ,MAAM,EAAEe,UAAUpC,aAAa,IAAIqC,iBAAiB;AAEpD1C,mBAAkB4B,KAAK,EAAE,EAAEa,SAAS;CAGpC,MAAMG,iBAAiBzC,kCACrBsB,QAFqBrB,eAAeC,SAAS,CAI9C;AAED,QAAO,IAAIgC,SAASO,gBAAuB;EACzCN,QAAQb,OAAOc,MAAMC;EACrBV,SAASJ;EACV,CAAC"}
@@ -1,35 +1,27 @@
1
1
  import * as Vue from "vue";
2
2
  import { renderToString } from "vue/server-renderer";
3
- const renderRouterToString = async ({
4
- router,
5
- responseHeaders,
6
- App
7
- }) => {
8
- try {
9
- const app = Vue.createSSRApp(App, {
10
- router
11
- });
12
- let html = await renderToString(app);
13
- router.serverSsr.setRenderFinished();
14
- const injectedHtml = router.serverSsr.takeBufferedHtml();
15
- if (injectedHtml) {
16
- html = html.replace(`</body>`, () => `${injectedHtml}</body>`);
17
- }
18
- return new Response(`<!DOCTYPE html>${html}`, {
19
- status: router.state.statusCode,
20
- headers: responseHeaders
21
- });
22
- } catch (error) {
23
- console.error("Render to string error:", error);
24
- return new Response("Internal Server Error", {
25
- status: 500,
26
- headers: responseHeaders
27
- });
28
- } finally {
29
- router.serverSsr?.cleanup();
30
- }
3
+ //#region src/ssr/renderRouterToString.tsx
4
+ var renderRouterToString = async ({ router, responseHeaders, App }) => {
5
+ try {
6
+ let html = await renderToString(Vue.createSSRApp(App, { router }));
7
+ router.serverSsr.setRenderFinished();
8
+ const injectedHtml = router.serverSsr.takeBufferedHtml();
9
+ if (injectedHtml) html = html.replace(`</body>`, () => `${injectedHtml}</body>`);
10
+ return new Response(`<!DOCTYPE html>${html}`, {
11
+ status: router.state.statusCode,
12
+ headers: responseHeaders
13
+ });
14
+ } catch (error) {
15
+ console.error("Render to string error:", error);
16
+ return new Response("Internal Server Error", {
17
+ status: 500,
18
+ headers: responseHeaders
19
+ });
20
+ } finally {
21
+ router.serverSsr?.cleanup();
22
+ }
31
23
  };
32
- export {
33
- renderRouterToString
34
- };
35
- //# sourceMappingURL=renderRouterToString.js.map
24
+ //#endregion
25
+ export { renderRouterToString };
26
+
27
+ //# sourceMappingURL=renderRouterToString.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderRouterToString.js","sources":["../../../src/ssr/renderRouterToString.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport { renderToString as vueRenderToString } from 'vue/server-renderer'\nimport type { AnyRouter } from '@tanstack/router-core'\nimport type { Component } from 'vue'\n\nexport const renderRouterToString = async ({\n router,\n responseHeaders,\n App,\n}: {\n router: AnyRouter\n responseHeaders: Headers\n App: Component\n}) => {\n try {\n const app = Vue.createSSRApp(App, { router })\n\n let html = await vueRenderToString(app)\n router.serverSsr!.setRenderFinished()\n\n const injectedHtml = router.serverSsr!.takeBufferedHtml()\n if (injectedHtml) {\n html = html.replace(`</body>`, () => `${injectedHtml}</body>`)\n }\n\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 } finally {\n router.serverSsr?.cleanup()\n }\n}\n"],"names":["renderRouterToString","router","responseHeaders","App","app","Vue","createSSRApp","html","vueRenderToString","serverSsr","setRenderFinished","injectedHtml","takeBufferedHtml","replace","Response","status","state","statusCode","headers","error","console","cleanup"],"mappings":";;AAKO,MAAMA,uBAAuB,OAAO;AAAA,EACzCC;AAAAA,EACAC;AAAAA,EACAC;AAKF,MAAM;AACJ,MAAI;AACF,UAAMC,MAAMC,IAAIC,aAAaH,KAAK;AAAA,MAAEF;AAAAA,IAAO,CAAC;AAE5C,QAAIM,OAAO,MAAMC,eAAkBJ,GAAG;AACtCH,WAAOQ,UAAWC,kBAAiB;AAEnC,UAAMC,eAAeV,OAAOQ,UAAWG,iBAAgB;AACvD,QAAID,cAAc;AAChBJ,aAAOA,KAAKM,QAAQ,WAAW,MAAM,GAAGF,YAAY,SAAS;AAAA,IAC/D;AAEA,WAAO,IAAIG,SAAS,kBAAkBP,IAAI,IAAI;AAAA,MAC5CQ,QAAQd,OAAOe,MAAMC;AAAAA,MACrBC,SAAShB;AAAAA,IACX,CAAC;AAAA,EACH,SAASiB,OAAO;AACdC,YAAQD,MAAM,2BAA2BA,KAAK;AAC9C,WAAO,IAAIL,SAAS,yBAAyB;AAAA,MAC3CC,QAAQ;AAAA,MACRG,SAAShB;AAAAA,IACX,CAAC;AAAA,EACH,UAAC;AACCD,WAAOQ,WAAWY,QAAO;AAAA,EAC3B;AACF;"}
1
+ {"version":3,"file":"renderRouterToString.js","names":["Vue","renderToString","vueRenderToString","renderRouterToString","router","responseHeaders","App","app","createSSRApp","html","serverSsr","setRenderFinished","injectedHtml","takeBufferedHtml","replace","Response","status","state","statusCode","headers","error","console","cleanup"],"sources":["../../../src/ssr/renderRouterToString.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport { renderToString as vueRenderToString } from 'vue/server-renderer'\nimport type { AnyRouter } from '@tanstack/router-core'\nimport type { Component } from 'vue'\n\nexport const renderRouterToString = async ({\n router,\n responseHeaders,\n App,\n}: {\n router: AnyRouter\n responseHeaders: Headers\n App: Component\n}) => {\n try {\n const app = Vue.createSSRApp(App, { router })\n\n let html = await vueRenderToString(app)\n router.serverSsr!.setRenderFinished()\n\n const injectedHtml = router.serverSsr!.takeBufferedHtml()\n if (injectedHtml) {\n html = html.replace(`</body>`, () => `${injectedHtml}</body>`)\n }\n\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 } finally {\n router.serverSsr?.cleanup()\n }\n}\n"],"mappings":";;;AAKA,IAAaG,uBAAuB,OAAO,EACzCC,QACAC,iBACAC,UAKI;AACJ,KAAI;EAGF,IAAIG,OAAO,MAAMP,eAFLF,IAAIQ,aAAaF,KAAK,EAAEF,QAAQ,CAAC,CAEN;AACvCA,SAAOM,UAAWC,mBAAmB;EAErC,MAAMC,eAAeR,OAAOM,UAAWG,kBAAkB;AACzD,MAAID,aACFH,QAAOA,KAAKK,QAAQ,iBAAiB,GAAGF,aAAY,SAAU;AAGhE,SAAO,IAAIG,SAAS,kBAAkBN,QAAQ;GAC5CO,QAAQZ,OAAOa,MAAMC;GACrBC,SAASd;GACV,CAAC;UACKe,OAAO;AACdC,UAAQD,MAAM,2BAA2BA,MAAM;AAC/C,SAAO,IAAIL,SAAS,yBAAyB;GAC3CC,QAAQ;GACRG,SAASd;GACV,CAAC;WACM;AACRD,SAAOM,WAAWY,SAAS"}
@@ -1,14 +1,7 @@
1
1
  import { RouterServer } from "./RouterServer.js";
2
+ import { renderRouterToString } from "./renderRouterToString.js";
2
3
  import { defaultRenderHandler } from "./defaultRenderHandler.js";
3
- import { defaultStreamHandler } from "./defaultStreamHandler.js";
4
4
  import { renderRouterToStream } from "./renderRouterToStream.js";
5
- import { renderRouterToString } from "./renderRouterToString.js";
5
+ import { defaultStreamHandler } from "./defaultStreamHandler.js";
6
6
  export * from "@tanstack/router-core/ssr/server";
7
- export {
8
- RouterServer,
9
- defaultRenderHandler,
10
- defaultStreamHandler,
11
- renderRouterToStream,
12
- renderRouterToString
13
- };
14
- //# sourceMappingURL=server.js.map
7
+ export { RouterServer, defaultRenderHandler, defaultStreamHandler, renderRouterToStream, renderRouterToString };