@@ -7,6 +7,7 @@ import type { Readable } from 'svelte/store'
77import type { StoreOrVal } from './types'
88import type {
99 DefaultError ,
10+ DefinedQueryObserverResult ,
1011 OmitKeyof ,
1112 QueriesObserverOptions ,
1213 QueriesPlaceholderDataFunction ,
@@ -19,7 +20,7 @@ import type {
1920} from '@tanstack/query-core'
2021
2122// This defines the `CreateQueryOptions` that are accepted in `QueriesOptions` & `GetOptions`.
22- // `placeholderData` function does not have a parameter
23+ // `placeholderData` function always gets undefined passed
2324type QueryObserverOptionsForCreateQueries <
2425 TQueryFnData = unknown ,
2526 TError = DefaultError ,
@@ -38,7 +39,7 @@ type MAXIMUM_DEPTH = 20
3839// Widen the type of the symbol to enable type inference even if skipToken is not immutable.
3940type SkipTokenForUseQueries = symbol
4041
41- type GetOptions < T > =
42+ type GetQueryObserverOptionsForCreateQueries < T > =
4243 // Part 1: responsible for applying explicit type parameter to function arguments, if object { queryFnData: TQueryFnData, error: TError, data: TData }
4344 T extends {
4445 queryFnData : infer TQueryFnData
@@ -74,21 +75,38 @@ type GetOptions<T> =
7475 : // Fallback
7576 QueryObserverOptionsForCreateQueries
7677
77- type GetResults < T > =
78+ // A defined initialData setting should return a DefinedQueryObserverResult rather than CreateQueryResult
79+ type GetDefinedOrUndefinedQueryResult < T , TData , TError = unknown > = T extends {
80+ initialData ?: infer TInitialData
81+ }
82+ ? unknown extends TInitialData
83+ ? QueryObserverResult < TData , TError >
84+ : TInitialData extends TData
85+ ? DefinedQueryObserverResult < TData , TError >
86+ : TInitialData extends ( ) => infer TInitialDataResult
87+ ? unknown extends TInitialDataResult
88+ ? QueryObserverResult < TData , TError >
89+ : TInitialDataResult extends TData
90+ ? DefinedQueryObserverResult < TData , TError >
91+ : QueryObserverResult < TData , TError >
92+ : QueryObserverResult < TData , TError >
93+ : QueryObserverResult < TData , TError >
94+
95+ type GetCreateQueryResult < T > =
7896 // Part 1: responsible for mapping explicit type parameter to function result, if object
7997 T extends { queryFnData : any ; error ?: infer TError ; data : infer TData }
80- ? QueryObserverResult < TData , TError >
98+ ? GetDefinedOrUndefinedQueryResult < T , TData , TError >
8199 : T extends { queryFnData : infer TQueryFnData ; error ?: infer TError }
82- ? QueryObserverResult < TQueryFnData , TError >
100+ ? GetDefinedOrUndefinedQueryResult < T , TQueryFnData , TError >
83101 : T extends { data : infer TData ; error ?: infer TError }
84- ? QueryObserverResult < TData , TError >
102+ ? GetDefinedOrUndefinedQueryResult < T , TData , TError >
85103 : // Part 2: responsible for mapping explicit type parameter to function result, if tuple
86104 T extends [ any , infer TError , infer TData ]
87- ? QueryObserverResult < TData , TError >
105+ ? GetDefinedOrUndefinedQueryResult < T , TData , TError >
88106 : T extends [ infer TQueryFnData , infer TError ]
89- ? QueryObserverResult < TQueryFnData , TError >
107+ ? GetDefinedOrUndefinedQueryResult < T , TQueryFnData , TError >
90108 : T extends [ infer TQueryFnData ]
91- ? QueryObserverResult < TQueryFnData >
109+ ? GetDefinedOrUndefinedQueryResult < T , TQueryFnData >
92110 : // Part 3: responsible for mapping inferred type to results, if no explicit parameter was provided
93111 T extends {
94112 queryFn ?:
@@ -97,7 +115,8 @@ type GetResults<T> =
97115 select ?: ( data : any ) => infer TData
98116 throwOnError ?: ThrowOnError < any , infer TError , any , any >
99117 }
100- ? QueryObserverResult <
118+ ? GetDefinedOrUndefinedQueryResult <
119+ T ,
101120 unknown extends TData ? TQueryFnData : TData ,
102121 unknown extends TError ? DefaultError : TError
103122 >
@@ -109,18 +128,18 @@ type GetResults<T> =
109128 */
110129export type QueriesOptions <
111130 T extends Array < any > ,
112- TResult extends Array < any > = [ ] ,
131+ TResults extends Array < any > = [ ] ,
113132 TDepth extends ReadonlyArray < number > = [ ] ,
114133> = TDepth [ 'length' ] extends MAXIMUM_DEPTH
115134 ? Array < QueryObserverOptionsForCreateQueries >
116135 : T extends [ ]
117136 ? [ ]
118137 : T extends [ infer Head ]
119- ? [ ...TResult , GetOptions < Head > ]
120- : T extends [ infer Head , ...infer Tail ]
138+ ? [ ...TResults , GetQueryObserverOptionsForCreateQueries < Head > ]
139+ : T extends [ infer Head , ...infer Tails ]
121140 ? QueriesOptions <
122- [ ...Tail ] ,
123- [ ...TResult , GetOptions < Head > ] ,
141+ [ ...Tails ] ,
142+ [ ...TResults , GetQueryObserverOptionsForCreateQueries < Head > ] ,
124143 [ ...TDepth , 1 ]
125144 >
126145 : ReadonlyArray < unknown > extends T
@@ -151,18 +170,18 @@ export type QueriesOptions<
151170 */
152171export type QueriesResults <
153172 T extends Array < any > ,
154- TResult extends Array < any > = [ ] ,
173+ TResults extends Array < any > = [ ] ,
155174 TDepth extends ReadonlyArray < number > = [ ] ,
156175> = TDepth [ 'length' ] extends MAXIMUM_DEPTH
157176 ? Array < QueryObserverResult >
158177 : T extends [ ]
159178 ? [ ]
160179 : T extends [ infer Head ]
161- ? [ ...TResult , GetResults < Head > ]
162- : T extends [ infer Head , ...infer Tail ]
180+ ? [ ...TResults , GetCreateQueryResult < Head > ]
181+ : T extends [ infer Head , ...infer Tails ]
163182 ? QueriesResults <
164- [ ...Tail ] ,
165- [ ...TResult , GetResults < Head > ] ,
183+ [ ...Tails ] ,
184+ [ ...TResults , GetCreateQueryResult < Head > ] ,
166185 [ ...TDepth , 1 ]
167186 >
168187 : T extends Array <
0 commit comments