@tanstack/react-query 5.12.0 → 5.12.2

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/src/useQueries.ts CHANGED
@@ -20,7 +20,11 @@ import {
20
20
  shouldSuspend,
21
21
  willFetch,
22
22
  } from './suspense'
23
- import type { UseQueryOptions, UseQueryResult } from './types'
23
+ import type {
24
+ DefinedUseQueryResult,
25
+ UseQueryOptions,
26
+ UseQueryResult,
27
+ } from './types'
24
28
  import type {
25
29
  DefaultError,
26
30
  QueriesObserverOptions,
@@ -95,28 +99,46 @@ type GetOptions<T> =
95
99
  : // Fallback
96
100
  UseQueryOptionsForUseQueries
97
101
 
102
+ // A defined initialData setting should return a DefinedUseQueryResult rather than UseQueryResult
103
+ type GetDefinedOrUndefinedQueryResult<T, TData, TError = unknown> = T extends {
104
+ initialData?: infer TInitialData
105
+ }
106
+ ? unknown extends TInitialData
107
+ ? UseQueryResult<TData, TError>
108
+ : TInitialData extends TData
109
+ ? DefinedUseQueryResult<TData, TError>
110
+ : TInitialData extends () => infer TInitialDataResult
111
+ ? unknown extends TInitialDataResult
112
+ ? UseQueryResult<TData, TError>
113
+ : TInitialDataResult extends TData
114
+ ? DefinedUseQueryResult<TData, TError>
115
+ : UseQueryResult<TData, TError>
116
+ : UseQueryResult<TData, TError>
117
+ : UseQueryResult<TData, TError>
118
+
98
119
  type GetResults<T> =
99
120
  // Part 1: responsible for mapping explicit type parameter to function result, if object
100
121
  T extends { queryFnData: any; error?: infer TError; data: infer TData }
101
- ? UseQueryResult<TData, TError>
122
+ ? GetDefinedOrUndefinedQueryResult<T, TData, TError>
102
123
  : T extends { queryFnData: infer TQueryFnData; error?: infer TError }
103
- ? UseQueryResult<TQueryFnData, TError>
124
+ ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData, TError>
104
125
  : T extends { data: infer TData; error?: infer TError }
105
- ? UseQueryResult<TData, TError>
126
+ ? GetDefinedOrUndefinedQueryResult<T, TData, TError>
106
127
  : // Part 2: responsible for mapping explicit type parameter to function result, if tuple
107
128
  T extends [any, infer TError, infer TData]
108
- ? UseQueryResult<TData, TError>
129
+ ? GetDefinedOrUndefinedQueryResult<T, TData, TError>
109
130
  : T extends [infer TQueryFnData, infer TError]
110
- ? UseQueryResult<TQueryFnData, TError>
131
+ ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData, TError>
111
132
  : T extends [infer TQueryFnData]
112
- ? UseQueryResult<TQueryFnData>
133
+ ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData>
113
134
  : // Part 3: responsible for mapping inferred type to results, if no explicit parameter was provided
114
135
  T extends {
115
136
  queryFn?: QueryFunction<infer TQueryFnData, any>
116
137
  select?: (data: any) => infer TData
117
138
  throwOnError?: ThrowOnError<any, infer TError, any, any>
118
139
  }
119
- ? UseQueryResult<
140
+ ? GetDefinedOrUndefinedQueryResult<
141
+ T,
120
142
  unknown extends TData ? TQueryFnData : TData,
121
143
  unknown extends TError ? DefaultError : TError
122
144
  >
@@ -124,7 +146,8 @@ type GetResults<T> =
124
146
  queryFn?: QueryFunction<infer TQueryFnData, any>
125
147
  throwOnError?: ThrowOnError<any, infer TError, any, any>
126
148
  }
127
- ? UseQueryResult<
149
+ ? GetDefinedOrUndefinedQueryResult<
150
+ T,
128
151
  TQueryFnData,
129
152
  unknown extends TError ? DefaultError : TError
130
153
  >