Skip to content

Commit 3924890

Browse files
committed
Fix: add (de)hydration options to tanstack query integration
1 parent 4a6dcd0 commit 3924890

File tree

1 file changed

+17
-3
lines changed
  • packages/router-ssr-query-core/src

1 file changed

+17
-3
lines changed

packages/router-ssr-query-core/src/index.ts

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import {
55
import { isRedirect } from '@tanstack/router-core'
66
import type { AnyRouter } from '@tanstack/router-core'
77
import type {
8+
DehydrateOptions,
9+
HydrateOptions,
810
QueryClient,
911
DehydratedState as QueryDehydratedState,
1012
} from '@tanstack/query-core'
@@ -20,6 +22,8 @@ export type RouterSsrQueryOptions<TRouter extends AnyRouter> = {
2022
* @link [Guide](https://tanstack.com/router/latest/docs/framework/react/api/router/redirectFunction)
2123
*/
2224
handleRedirects?: boolean
25+
hydrateOptions?: Omit<HydrateOptions, 'shouldDehydrateQuery'>
26+
dehydrateOptions?: DehydrateOptions
2327
}
2428

2529
type DehydratedRouterQueryState = {
@@ -31,6 +35,8 @@ export function setupCoreRouterSsrQueryIntegration<TRouter extends AnyRouter>({
3135
router,
3236
queryClient,
3337
handleRedirects = true,
38+
dehydrateOptions,
39+
hydrateOptions,
3440
}: RouterSsrQueryOptions<TRouter>) {
3541
const ogHydrate = router.options.hydrate
3642
const ogDehydrate = router.options.dehydrate
@@ -50,7 +56,10 @@ export function setupCoreRouterSsrQueryIntegration<TRouter extends AnyRouter>({
5056
queryStream: queryStream.stream,
5157
}
5258

53-
const dehydratedQueryClient = queryDehydrate(queryClient)
59+
const dehydratedQueryClient = queryDehydrate(
60+
queryClient,
61+
dehydrateOptions,
62+
)
5463
if (dehydratedQueryClient.queries.length > 0) {
5564
dehydratedQueryClient.queries.forEach((query) => {
5665
sentQueries.add(query.queryHash)
@@ -93,6 +102,7 @@ export function setupCoreRouterSsrQueryIntegration<TRouter extends AnyRouter>({
93102
sentQueries.add(event.query.queryHash)
94103
queryStream.enqueue(
95104
queryDehydrate(queryClient, {
105+
...hydrateOptions,
96106
shouldDehydrateQuery: (query) => {
97107
if (query.queryHash === event.query.queryHash) {
98108
return (
@@ -110,15 +120,19 @@ export function setupCoreRouterSsrQueryIntegration<TRouter extends AnyRouter>({
110120
await ogHydrate?.(dehydrated)
111121
// hydrate the query client with the dehydrated data (if it was dehydrated on the server)
112122
if (dehydrated.dehydratedQueryClient) {
113-
queryHydrate(queryClient, dehydrated.dehydratedQueryClient)
123+
queryHydrate(
124+
queryClient,
125+
dehydrated.dehydratedQueryClient,
126+
hydrateOptions,
127+
)
114128
}
115129

116130
// read the query stream and hydrate the queries as they come in
117131
const reader = dehydrated.queryStream.getReader()
118132
reader
119133
.read()
120134
.then(async function handle({ done, value }) {
121-
queryHydrate(queryClient, value)
135+
queryHydrate(queryClient, value, hydrateOptions)
122136
if (done) {
123137
return
124138
}

0 commit comments

Comments
 (0)