@@ -22,14 +22,22 @@ export interface DehydrateConfig {
2222 shouldDehydrate ?: ShouldDehydrateFunction
2323}
2424
25+ function serializePositiveNumber ( value : number ) : number {
26+ return value === Infinity ? - 1 : value
27+ }
28+
29+ function deserializePositiveNumber ( value : number ) : number {
30+ return value === - 1 ? Infinity : value
31+ }
32+
2533// Most config is not dehydrated but instead meant to configure again when
2634// consuming the de/rehydrated data, typically with useQuery on the client.
2735// Sometimes it might make sense to prefetch data on the server and include
2836// in the html-payload, but not consume it on the initial render.
2937function dehydrateQuery ( query : Query ) : DehydratedQuery {
3038 return {
3139 config : {
32- cacheTime : query . cacheTime ,
40+ cacheTime : serializePositiveNumber ( query . cacheTime ) ,
3341 } ,
3442 data : query . state . data ,
3543 queryKey : query . queryKey ,
@@ -80,7 +88,9 @@ export function hydrate(cache: QueryCache, dehydratedState: unknown): void {
8088 queryKey : dehydratedQuery . queryKey ,
8189 queryHash : dehydratedQuery . queryHash ,
8290 options : {
83- cacheTime : dehydratedQuery . config . cacheTime ,
91+ cacheTime : deserializePositiveNumber (
92+ dehydratedQuery . config . cacheTime
93+ ) ,
8494 } ,
8595 } )
8696 cache . add ( query )
0 commit comments