@tanstack/query-core 4.24.10 → 5.0.0-alpha.0
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/build/lib/focusManager.d.ts +1 -3
- package/build/lib/focusManager.esm.js +19 -36
- package/build/lib/focusManager.esm.js.map +1 -1
- package/build/lib/focusManager.js +19 -38
- package/build/lib/focusManager.js.map +1 -1
- package/build/lib/focusManager.mjs +19 -36
- package/build/lib/focusManager.mjs.map +1 -1
- package/build/lib/hydration.esm.js +21 -23
- package/build/lib/hydration.esm.js.map +1 -1
- package/build/lib/hydration.js +21 -25
- package/build/lib/hydration.js.map +1 -1
- package/build/lib/hydration.mjs +21 -23
- package/build/lib/hydration.mjs.map +1 -1
- package/build/lib/index.d.ts +1 -2
- package/build/lib/index.esm.js +1 -1
- package/build/lib/index.js +2 -8
- package/build/lib/index.js.map +1 -1
- package/build/lib/index.mjs +1 -1
- package/build/lib/infiniteQueryBehavior.d.ts +3 -7
- package/build/lib/infiniteQueryBehavior.esm.js +52 -75
- package/build/lib/infiniteQueryBehavior.esm.js.map +1 -1
- package/build/lib/infiniteQueryBehavior.js +50 -77
- package/build/lib/infiniteQueryBehavior.js.map +1 -1
- package/build/lib/infiniteQueryBehavior.mjs +52 -75
- package/build/lib/infiniteQueryBehavior.mjs.map +1 -1
- package/build/lib/infiniteQueryObserver.d.ts +4 -4
- package/build/lib/infiniteQueryObserver.esm.js +18 -26
- package/build/lib/infiniteQueryObserver.esm.js.map +1 -1
- package/build/lib/infiniteQueryObserver.js +18 -28
- package/build/lib/infiniteQueryObserver.js.map +1 -1
- package/build/lib/infiniteQueryObserver.mjs +18 -26
- package/build/lib/infiniteQueryObserver.mjs.map +1 -1
- package/build/lib/mutation.d.ts +11 -22
- package/build/lib/mutation.esm.js +73 -105
- package/build/lib/mutation.esm.js.map +1 -1
- package/build/lib/mutation.js +73 -107
- package/build/lib/mutation.js.map +1 -1
- package/build/lib/mutation.mjs +73 -105
- package/build/lib/mutation.mjs.map +1 -1
- package/build/lib/mutationCache.d.ts +4 -6
- package/build/lib/mutationCache.esm.js +23 -32
- package/build/lib/mutationCache.esm.js.map +1 -1
- package/build/lib/mutationCache.js +23 -34
- package/build/lib/mutationCache.js.map +1 -1
- package/build/lib/mutationCache.mjs +23 -32
- package/build/lib/mutationCache.mjs.map +1 -1
- package/build/lib/mutationObserver.d.ts +4 -9
- package/build/lib/mutationObserver.esm.js +43 -72
- package/build/lib/mutationObserver.esm.js.map +1 -1
- package/build/lib/mutationObserver.js +43 -74
- package/build/lib/mutationObserver.js.map +1 -1
- package/build/lib/mutationObserver.mjs +43 -72
- package/build/lib/mutationObserver.mjs.map +1 -1
- package/build/lib/notifyManager.esm.js +7 -17
- package/build/lib/notifyManager.esm.js.map +1 -1
- package/build/lib/notifyManager.js +7 -19
- package/build/lib/notifyManager.js.map +1 -1
- package/build/lib/notifyManager.mjs +7 -17
- package/build/lib/notifyManager.mjs.map +1 -1
- package/build/lib/onlineManager.d.ts +1 -3
- package/build/lib/onlineManager.esm.js +16 -30
- package/build/lib/onlineManager.esm.js.map +1 -1
- package/build/lib/onlineManager.js +16 -32
- package/build/lib/onlineManager.js.map +1 -1
- package/build/lib/onlineManager.mjs +16 -30
- package/build/lib/onlineManager.mjs.map +1 -1
- package/build/lib/queriesObserver.d.ts +3 -10
- package/build/lib/queriesObserver.esm.js +47 -71
- package/build/lib/queriesObserver.esm.js.map +1 -1
- package/build/lib/queriesObserver.js +49 -75
- package/build/lib/queriesObserver.js.map +1 -1
- package/build/lib/queriesObserver.mjs +47 -71
- package/build/lib/queriesObserver.mjs.map +1 -1
- package/build/lib/query.d.ts +14 -21
- package/build/lib/query.esm.js +140 -194
- package/build/lib/query.esm.js.map +1 -1
- package/build/lib/query.js +139 -195
- package/build/lib/query.js.map +1 -1
- package/build/lib/query.mjs +140 -194
- package/build/lib/query.mjs.map +1 -1
- package/build/lib/queryCache.d.ts +12 -7
- package/build/lib/queryCache.esm.js +21 -45
- package/build/lib/queryCache.esm.js.map +1 -1
- package/build/lib/queryCache.js +20 -46
- package/build/lib/queryCache.js.map +1 -1
- package/build/lib/queryCache.mjs +21 -45
- package/build/lib/queryCache.mjs.map +1 -1
- package/build/lib/queryClient.d.ts +18 -46
- package/build/lib/queryClient.esm.js +137 -216
- package/build/lib/queryClient.esm.js.map +1 -1
- package/build/lib/queryClient.js +136 -217
- package/build/lib/queryClient.js.map +1 -1
- package/build/lib/queryClient.mjs +137 -216
- package/build/lib/queryClient.mjs.map +1 -1
- package/build/lib/queryObserver.d.ts +4 -29
- package/build/lib/queryObserver.esm.js +176 -258
- package/build/lib/queryObserver.esm.js.map +1 -1
- package/build/lib/queryObserver.js +176 -260
- package/build/lib/queryObserver.js.map +1 -1
- package/build/lib/queryObserver.mjs +176 -258
- package/build/lib/queryObserver.mjs.map +1 -1
- package/build/lib/removable.d.ts +3 -3
- package/build/lib/removable.esm.js +10 -14
- package/build/lib/removable.esm.js.map +1 -1
- package/build/lib/removable.js +10 -16
- package/build/lib/removable.js.map +1 -1
- package/build/lib/removable.mjs +10 -14
- package/build/lib/removable.mjs.map +1 -1
- package/build/lib/retryer.d.ts +5 -5
- package/build/lib/retryer.esm.js +27 -44
- package/build/lib/retryer.esm.js.map +1 -1
- package/build/lib/retryer.js +27 -46
- package/build/lib/retryer.js.map +1 -1
- package/build/lib/retryer.mjs +27 -44
- package/build/lib/retryer.mjs.map +1 -1
- package/build/lib/subscribable.esm.js +4 -7
- package/build/lib/subscribable.esm.js.map +1 -1
- package/build/lib/subscribable.js +4 -9
- package/build/lib/subscribable.js.map +1 -1
- package/build/lib/subscribable.mjs +4 -7
- package/build/lib/subscribable.mjs.map +1 -1
- package/build/lib/tests/utils.d.ts +3 -12
- package/build/lib/types.d.ts +111 -99
- package/build/lib/utils.d.ts +8 -18
- package/build/lib/utils.esm.js +39 -132
- package/build/lib/utils.esm.js.map +1 -1
- package/build/lib/utils.js +42 -144
- package/build/lib/utils.js.map +1 -1
- package/build/lib/utils.mjs +39 -132
- package/build/lib/utils.mjs.map +1 -1
- package/build/umd/index.development.js +868 -1398
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +1 -1
- package/src/focusManager.ts +17 -24
- package/src/index.ts +1 -11
- package/src/infiniteQueryBehavior.ts +54 -94
- package/src/infiniteQueryObserver.ts +10 -12
- package/src/mutation.ts +68 -92
- package/src/mutationCache.ts +27 -27
- package/src/mutationObserver.ts +60 -97
- package/src/onlineManager.ts +14 -14
- package/src/queriesObserver.ts +50 -54
- package/src/query.ts +106 -110
- package/src/queryCache.ts +42 -41
- package/src/queryClient.ts +155 -434
- package/src/queryObserver.ts +155 -192
- package/src/removable.ts +13 -13
- package/src/retryer.ts +5 -5
- package/src/tests/focusManager.test.tsx +25 -25
- package/src/tests/hydration.test.tsx +167 -81
- package/src/tests/infiniteQueryBehavior.test.tsx +209 -17
- package/src/tests/infiniteQueryObserver.test.tsx +6 -2
- package/src/tests/mutationCache.test.tsx +127 -127
- package/src/tests/mutationObserver.test.tsx +1 -31
- package/src/tests/mutations.test.tsx +62 -43
- package/src/tests/onlineManager.test.tsx +12 -4
- package/src/tests/queriesObserver.test.tsx +41 -77
- package/src/tests/query.test.tsx +175 -243
- package/src/tests/queryCache.test.tsx +170 -93
- package/src/tests/queryClient.test.tsx +229 -378
- package/src/tests/queryObserver.test.tsx +23 -147
- package/src/tests/utils.test.tsx +84 -29
- package/src/tests/utils.ts +9 -18
- package/src/types.ts +187 -140
- package/src/utils.ts +31 -124
- package/build/lib/logger.d.ts +0 -8
- package/build/lib/logger.esm.js +0 -4
- package/build/lib/logger.esm.js.map +0 -1
- package/build/lib/logger.js +0 -8
- package/build/lib/logger.js.map +0 -1
- package/build/lib/logger.mjs +0 -4
- package/build/lib/logger.mjs.map +0 -1
- package/build/lib/logger.native.d.ts +0 -6
- package/build/lib/logger.native.esm.js +0 -12
- package/build/lib/logger.native.esm.js.map +0 -1
- package/build/lib/logger.native.js +0 -16
- package/build/lib/logger.native.js.map +0 -1
- package/build/lib/logger.native.mjs +0 -12
- package/build/lib/logger.native.mjs.map +0 -1
- package/src/logger.native.ts +0 -11
- package/src/logger.ts +0 -9
package/src/queryClient.ts
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import type { QueryFilters, Updater, MutationFilters } from './utils'
|
|
2
2
|
import {
|
|
3
|
-
|
|
3
|
+
hashKey,
|
|
4
4
|
noop,
|
|
5
|
-
parseFilterArgs,
|
|
6
|
-
parseQueryArgs,
|
|
7
5
|
partialMatchKey,
|
|
8
6
|
hashQueryKeyByOptions,
|
|
9
7
|
functionalUpdate,
|
|
@@ -19,16 +17,14 @@ import type {
|
|
|
19
17
|
MutationKey,
|
|
20
18
|
MutationObserverOptions,
|
|
21
19
|
MutationOptions,
|
|
22
|
-
QueryFunction,
|
|
23
20
|
QueryKey,
|
|
24
21
|
QueryObserverOptions,
|
|
25
22
|
QueryOptions,
|
|
26
23
|
RefetchOptions,
|
|
27
24
|
RefetchQueryFilters,
|
|
28
25
|
ResetOptions,
|
|
29
|
-
ResetQueryFilters,
|
|
30
26
|
SetDataOptions,
|
|
31
|
-
|
|
27
|
+
RegisteredError,
|
|
32
28
|
} from './types'
|
|
33
29
|
import type { QueryState } from './query'
|
|
34
30
|
import { QueryCache } from './queryCache'
|
|
@@ -38,8 +34,6 @@ import { onlineManager } from './onlineManager'
|
|
|
38
34
|
import { notifyManager } from './notifyManager'
|
|
39
35
|
import { infiniteQueryBehavior } from './infiniteQueryBehavior'
|
|
40
36
|
import type { CancelOptions, DefaultedQueryObserverOptions } from './types'
|
|
41
|
-
import type { Logger } from './logger'
|
|
42
|
-
import { defaultLogger } from './logger'
|
|
43
37
|
|
|
44
38
|
// TYPES
|
|
45
39
|
|
|
@@ -56,152 +50,86 @@ interface MutationDefaults {
|
|
|
56
50
|
// CLASS
|
|
57
51
|
|
|
58
52
|
export class QueryClient {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
private unsubscribeOnline?: () => void
|
|
53
|
+
#queryCache: QueryCache
|
|
54
|
+
#mutationCache: MutationCache
|
|
55
|
+
#defaultOptions: DefaultOptions
|
|
56
|
+
#queryDefaults: Map<string, QueryDefaults>
|
|
57
|
+
#mutationDefaults: Map<string, MutationDefaults>
|
|
58
|
+
#mountCount: number
|
|
59
|
+
#unsubscribeFocus?: () => void
|
|
60
|
+
#unsubscribeOnline?: () => void
|
|
68
61
|
|
|
69
62
|
constructor(config: QueryClientConfig = {}) {
|
|
70
|
-
this
|
|
71
|
-
this
|
|
72
|
-
this
|
|
73
|
-
this
|
|
74
|
-
this
|
|
75
|
-
this
|
|
76
|
-
this.mountCount = 0
|
|
77
|
-
|
|
78
|
-
if (process.env.NODE_ENV !== 'production' && config.logger) {
|
|
79
|
-
this.logger.error(
|
|
80
|
-
`Passing a custom logger has been deprecated and will be removed in the next major version.`,
|
|
81
|
-
)
|
|
82
|
-
}
|
|
63
|
+
this.#queryCache = config.queryCache || new QueryCache()
|
|
64
|
+
this.#mutationCache = config.mutationCache || new MutationCache()
|
|
65
|
+
this.#defaultOptions = config.defaultOptions || {}
|
|
66
|
+
this.#queryDefaults = new Map()
|
|
67
|
+
this.#mutationDefaults = new Map()
|
|
68
|
+
this.#mountCount = 0
|
|
83
69
|
}
|
|
84
70
|
|
|
85
71
|
mount(): void {
|
|
86
|
-
this
|
|
87
|
-
if (this
|
|
72
|
+
this.#mountCount++
|
|
73
|
+
if (this.#mountCount !== 1) return
|
|
88
74
|
|
|
89
|
-
this
|
|
75
|
+
this.#unsubscribeFocus = focusManager.subscribe(() => {
|
|
90
76
|
if (focusManager.isFocused()) {
|
|
91
77
|
this.resumePausedMutations()
|
|
92
|
-
this
|
|
78
|
+
this.#queryCache.onFocus()
|
|
93
79
|
}
|
|
94
80
|
})
|
|
95
|
-
this
|
|
81
|
+
this.#unsubscribeOnline = onlineManager.subscribe(() => {
|
|
96
82
|
if (onlineManager.isOnline()) {
|
|
97
83
|
this.resumePausedMutations()
|
|
98
|
-
this
|
|
84
|
+
this.#queryCache.onOnline()
|
|
99
85
|
}
|
|
100
86
|
})
|
|
101
87
|
}
|
|
102
88
|
|
|
103
89
|
unmount(): void {
|
|
104
|
-
this
|
|
105
|
-
if (this
|
|
90
|
+
this.#mountCount--
|
|
91
|
+
if (this.#mountCount !== 0) return
|
|
106
92
|
|
|
107
|
-
this
|
|
108
|
-
this
|
|
93
|
+
this.#unsubscribeFocus?.()
|
|
94
|
+
this.#unsubscribeFocus = undefined
|
|
109
95
|
|
|
110
|
-
this
|
|
111
|
-
this
|
|
96
|
+
this.#unsubscribeOnline?.()
|
|
97
|
+
this.#unsubscribeOnline = undefined
|
|
112
98
|
}
|
|
113
99
|
|
|
114
|
-
isFetching(filters?: QueryFilters): number
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
const [filters] = parseFilterArgs(arg1, arg2)
|
|
118
|
-
filters.fetchStatus = 'fetching'
|
|
119
|
-
return this.queryCache.findAll(filters).length
|
|
100
|
+
isFetching(filters?: QueryFilters): number {
|
|
101
|
+
return this.#queryCache.findAll({ ...filters, fetchStatus: 'fetching' })
|
|
102
|
+
.length
|
|
120
103
|
}
|
|
121
104
|
|
|
122
105
|
isMutating(filters?: MutationFilters): number {
|
|
123
|
-
return this
|
|
106
|
+
return this.#mutationCache.findAll({ ...filters, status: 'pending' }).length
|
|
124
107
|
}
|
|
125
108
|
|
|
126
109
|
getQueryData<TQueryFnData = unknown>(
|
|
127
110
|
queryKey: QueryKey,
|
|
128
|
-
filters?: QueryFilters,
|
|
129
111
|
): TQueryFnData | undefined {
|
|
130
|
-
return this
|
|
112
|
+
return this.#queryCache.find<TQueryFnData>({ queryKey })?.state.data
|
|
131
113
|
}
|
|
132
114
|
|
|
133
|
-
ensureQueryData<
|
|
134
|
-
TQueryFnData = unknown,
|
|
135
|
-
TError = unknown,
|
|
136
|
-
TData = TQueryFnData,
|
|
137
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
138
|
-
>(
|
|
139
|
-
options: WithRequired<
|
|
140
|
-
FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
141
|
-
'queryKey'
|
|
142
|
-
>,
|
|
143
|
-
): Promise<TData>
|
|
144
|
-
ensureQueryData<
|
|
145
|
-
TQueryFnData = unknown,
|
|
146
|
-
TError = unknown,
|
|
147
|
-
TData = TQueryFnData,
|
|
148
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
149
|
-
>(
|
|
150
|
-
queryKey: TQueryKey,
|
|
151
|
-
options?: Omit<
|
|
152
|
-
FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
153
|
-
'queryKey'
|
|
154
|
-
>,
|
|
155
|
-
): Promise<TData>
|
|
156
|
-
ensureQueryData<
|
|
157
|
-
TQueryFnData = unknown,
|
|
158
|
-
TError = unknown,
|
|
159
|
-
TData = TQueryFnData,
|
|
160
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
161
|
-
>(
|
|
162
|
-
queryKey: TQueryKey,
|
|
163
|
-
queryFn: QueryFunction<TQueryFnData, TQueryKey>,
|
|
164
|
-
options?: Omit<
|
|
165
|
-
FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
166
|
-
'queryKey' | 'queryFn'
|
|
167
|
-
>,
|
|
168
|
-
): Promise<TData>
|
|
169
115
|
ensureQueryData<
|
|
170
116
|
TQueryFnData,
|
|
171
117
|
TError,
|
|
172
118
|
TData = TQueryFnData,
|
|
173
119
|
TQueryKey extends QueryKey = QueryKey,
|
|
174
120
|
>(
|
|
175
|
-
|
|
176
|
-
| TQueryKey
|
|
177
|
-
| WithRequired<
|
|
178
|
-
FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
179
|
-
'queryKey'
|
|
180
|
-
>,
|
|
181
|
-
arg2?:
|
|
182
|
-
| QueryFunction<TQueryFnData, TQueryKey>
|
|
183
|
-
| FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
184
|
-
arg3?: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
121
|
+
options: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
185
122
|
): Promise<TData> {
|
|
186
|
-
const
|
|
187
|
-
const cachedData = this.getQueryData<TData>(parsedOptions.queryKey!)
|
|
123
|
+
const cachedData = this.getQueryData<TData>(options.queryKey)
|
|
188
124
|
|
|
189
|
-
return cachedData
|
|
190
|
-
? Promise.resolve(cachedData)
|
|
191
|
-
: this.fetchQuery(parsedOptions)
|
|
125
|
+
return cachedData ? Promise.resolve(cachedData) : this.fetchQuery(options)
|
|
192
126
|
}
|
|
193
127
|
|
|
194
|
-
getQueriesData<TQueryFnData = unknown>(
|
|
195
|
-
queryKey: QueryKey,
|
|
196
|
-
): [QueryKey, TQueryFnData | undefined][]
|
|
197
128
|
getQueriesData<TQueryFnData = unknown>(
|
|
198
129
|
filters: QueryFilters,
|
|
199
|
-
): [QueryKey, TQueryFnData | undefined][]
|
|
200
|
-
getQueriesData<TQueryFnData = unknown>(
|
|
201
|
-
queryKeyOrFilters: QueryKey | QueryFilters,
|
|
202
130
|
): [QueryKey, TQueryFnData | undefined][] {
|
|
203
131
|
return this.getQueryCache()
|
|
204
|
-
.findAll(
|
|
132
|
+
.findAll(filters)
|
|
205
133
|
.map(({ queryKey, state }) => {
|
|
206
134
|
const data = state.data as TQueryFnData | undefined
|
|
207
135
|
return [queryKey, data]
|
|
@@ -213,7 +141,7 @@ export class QueryClient {
|
|
|
213
141
|
updater: Updater<TQueryFnData | undefined, TQueryFnData | undefined>,
|
|
214
142
|
options?: SetDataOptions,
|
|
215
143
|
): TQueryFnData | undefined {
|
|
216
|
-
const query = this
|
|
144
|
+
const query = this.#queryCache.find<TQueryFnData>({ queryKey })
|
|
217
145
|
const prevData = query?.state.data
|
|
218
146
|
const data = functionalUpdate(updater, prevData)
|
|
219
147
|
|
|
@@ -221,33 +149,27 @@ export class QueryClient {
|
|
|
221
149
|
return undefined
|
|
222
150
|
}
|
|
223
151
|
|
|
224
|
-
const
|
|
225
|
-
|
|
226
|
-
|
|
152
|
+
const defaultedOptions = this.defaultQueryOptions<
|
|
153
|
+
any,
|
|
154
|
+
any,
|
|
155
|
+
unknown,
|
|
156
|
+
any,
|
|
157
|
+
QueryKey
|
|
158
|
+
>({ queryKey })
|
|
159
|
+
|
|
160
|
+
return this.#queryCache
|
|
227
161
|
.build(this, defaultedOptions)
|
|
228
162
|
.setData(data, { ...options, manual: true })
|
|
229
163
|
}
|
|
230
164
|
|
|
231
|
-
setQueriesData<TQueryFnData>(
|
|
232
|
-
queryKey: QueryKey,
|
|
233
|
-
updater: Updater<TQueryFnData | undefined, TQueryFnData | undefined>,
|
|
234
|
-
options?: SetDataOptions,
|
|
235
|
-
): [QueryKey, TQueryFnData | undefined][]
|
|
236
|
-
|
|
237
165
|
setQueriesData<TQueryFnData>(
|
|
238
166
|
filters: QueryFilters,
|
|
239
167
|
updater: Updater<TQueryFnData | undefined, TQueryFnData | undefined>,
|
|
240
168
|
options?: SetDataOptions,
|
|
241
|
-
): [QueryKey, TQueryFnData | undefined][]
|
|
242
|
-
|
|
243
|
-
setQueriesData<TQueryFnData>(
|
|
244
|
-
queryKeyOrFilters: QueryKey | QueryFilters,
|
|
245
|
-
updater: Updater<TQueryFnData | undefined, TQueryFnData | undefined>,
|
|
246
|
-
options?: SetDataOptions,
|
|
247
169
|
): [QueryKey, TQueryFnData | undefined][] {
|
|
248
170
|
return notifyManager.batch(() =>
|
|
249
171
|
this.getQueryCache()
|
|
250
|
-
.findAll(
|
|
172
|
+
.findAll(filters)
|
|
251
173
|
.map(({ queryKey }) => [
|
|
252
174
|
queryKey,
|
|
253
175
|
this.setQueryData<TQueryFnData>(queryKey, updater, options),
|
|
@@ -255,18 +177,14 @@ export class QueryClient {
|
|
|
255
177
|
)
|
|
256
178
|
}
|
|
257
179
|
|
|
258
|
-
getQueryState<TQueryFnData = unknown, TError =
|
|
180
|
+
getQueryState<TQueryFnData = unknown, TError = RegisteredError>(
|
|
259
181
|
queryKey: QueryKey,
|
|
260
|
-
filters?: QueryFilters,
|
|
261
182
|
): QueryState<TQueryFnData, TError> | undefined {
|
|
262
|
-
return this
|
|
183
|
+
return this.#queryCache.find<TQueryFnData, TError>({ queryKey })?.state
|
|
263
184
|
}
|
|
264
185
|
|
|
265
|
-
removeQueries(filters?: QueryFilters): void
|
|
266
|
-
|
|
267
|
-
removeQueries(arg1?: QueryKey | QueryFilters, arg2?: QueryFilters): void {
|
|
268
|
-
const [filters] = parseFilterArgs(arg1, arg2)
|
|
269
|
-
const queryCache = this.queryCache
|
|
186
|
+
removeQueries(filters?: QueryFilters): void {
|
|
187
|
+
const queryCache = this.#queryCache
|
|
270
188
|
notifyManager.batch(() => {
|
|
271
189
|
queryCache.findAll(filters).forEach((query) => {
|
|
272
190
|
queryCache.remove(query)
|
|
@@ -274,22 +192,8 @@ export class QueryClient {
|
|
|
274
192
|
})
|
|
275
193
|
}
|
|
276
194
|
|
|
277
|
-
resetQueries
|
|
278
|
-
|
|
279
|
-
options?: ResetOptions,
|
|
280
|
-
): Promise<void>
|
|
281
|
-
resetQueries<TPageData = unknown>(
|
|
282
|
-
queryKey?: QueryKey,
|
|
283
|
-
filters?: ResetQueryFilters<TPageData>,
|
|
284
|
-
options?: ResetOptions,
|
|
285
|
-
): Promise<void>
|
|
286
|
-
resetQueries(
|
|
287
|
-
arg1?: QueryKey | ResetQueryFilters,
|
|
288
|
-
arg2?: ResetQueryFilters | ResetOptions,
|
|
289
|
-
arg3?: ResetOptions,
|
|
290
|
-
): Promise<void> {
|
|
291
|
-
const [filters, options] = parseFilterArgs(arg1, arg2, arg3)
|
|
292
|
-
const queryCache = this.queryCache
|
|
195
|
+
resetQueries(filters?: QueryFilters, options?: ResetOptions): Promise<void> {
|
|
196
|
+
const queryCache = this.#queryCache
|
|
293
197
|
|
|
294
198
|
const refetchFilters: RefetchQueryFilters = {
|
|
295
199
|
type: 'active',
|
|
@@ -304,25 +208,16 @@ export class QueryClient {
|
|
|
304
208
|
})
|
|
305
209
|
}
|
|
306
210
|
|
|
307
|
-
cancelQueries(filters?: QueryFilters, options?: CancelOptions): Promise<void>
|
|
308
211
|
cancelQueries(
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
options?: CancelOptions,
|
|
312
|
-
): Promise<void>
|
|
313
|
-
cancelQueries(
|
|
314
|
-
arg1?: QueryKey | QueryFilters,
|
|
315
|
-
arg2?: QueryFilters | CancelOptions,
|
|
316
|
-
arg3?: CancelOptions,
|
|
212
|
+
filters: QueryFilters = {},
|
|
213
|
+
cancelOptions: CancelOptions = {},
|
|
317
214
|
): Promise<void> {
|
|
318
|
-
const [filters, cancelOptions = {}] = parseFilterArgs(arg1, arg2, arg3)
|
|
319
|
-
|
|
320
215
|
if (typeof cancelOptions.revert === 'undefined') {
|
|
321
216
|
cancelOptions.revert = true
|
|
322
217
|
}
|
|
323
218
|
|
|
324
219
|
const promises = notifyManager.batch(() =>
|
|
325
|
-
this
|
|
220
|
+
this.#queryCache
|
|
326
221
|
.findAll(filters)
|
|
327
222
|
.map((query) => query.cancel(cancelOptions)),
|
|
328
223
|
)
|
|
@@ -330,24 +225,12 @@ export class QueryClient {
|
|
|
330
225
|
return Promise.all(promises).then(noop).catch(noop)
|
|
331
226
|
}
|
|
332
227
|
|
|
333
|
-
invalidateQueries<TPageData = unknown>(
|
|
334
|
-
filters?: InvalidateQueryFilters<TPageData>,
|
|
335
|
-
options?: InvalidateOptions,
|
|
336
|
-
): Promise<void>
|
|
337
|
-
invalidateQueries<TPageData = unknown>(
|
|
338
|
-
queryKey?: QueryKey,
|
|
339
|
-
filters?: InvalidateQueryFilters<TPageData>,
|
|
340
|
-
options?: InvalidateOptions,
|
|
341
|
-
): Promise<void>
|
|
342
228
|
invalidateQueries(
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
arg3?: InvalidateOptions,
|
|
229
|
+
filters: InvalidateQueryFilters = {},
|
|
230
|
+
options: InvalidateOptions = {},
|
|
346
231
|
): Promise<void> {
|
|
347
|
-
const [filters, options] = parseFilterArgs(arg1, arg2, arg3)
|
|
348
|
-
|
|
349
232
|
return notifyManager.batch(() => {
|
|
350
|
-
this
|
|
233
|
+
this.#queryCache.findAll(filters).forEach((query) => {
|
|
351
234
|
query.invalidate()
|
|
352
235
|
})
|
|
353
236
|
|
|
@@ -362,31 +245,18 @@ export class QueryClient {
|
|
|
362
245
|
})
|
|
363
246
|
}
|
|
364
247
|
|
|
365
|
-
refetchQueries<TPageData = unknown>(
|
|
366
|
-
filters?: RefetchQueryFilters<TPageData>,
|
|
367
|
-
options?: RefetchOptions,
|
|
368
|
-
): Promise<void>
|
|
369
|
-
refetchQueries<TPageData = unknown>(
|
|
370
|
-
queryKey?: QueryKey,
|
|
371
|
-
filters?: RefetchQueryFilters<TPageData>,
|
|
372
|
-
options?: RefetchOptions,
|
|
373
|
-
): Promise<void>
|
|
374
248
|
refetchQueries(
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
arg3?: RefetchOptions,
|
|
249
|
+
filters: RefetchQueryFilters = {},
|
|
250
|
+
options?: RefetchOptions,
|
|
378
251
|
): Promise<void> {
|
|
379
|
-
const [filters, options] = parseFilterArgs(arg1, arg2, arg3)
|
|
380
|
-
|
|
381
252
|
const promises = notifyManager.batch(() =>
|
|
382
|
-
this
|
|
253
|
+
this.#queryCache
|
|
383
254
|
.findAll(filters)
|
|
384
255
|
.filter((query) => !query.isDisabled())
|
|
385
256
|
.map((query) =>
|
|
386
257
|
query.fetch(undefined, {
|
|
387
258
|
...options,
|
|
388
259
|
cancelRefetch: options?.cancelRefetch ?? true,
|
|
389
|
-
meta: { refetchPage: filters.refetchPage },
|
|
390
260
|
}),
|
|
391
261
|
),
|
|
392
262
|
)
|
|
@@ -400,54 +270,29 @@ export class QueryClient {
|
|
|
400
270
|
return promise
|
|
401
271
|
}
|
|
402
272
|
|
|
403
|
-
fetchQuery<
|
|
404
|
-
TQueryFnData = unknown,
|
|
405
|
-
TError = unknown,
|
|
406
|
-
TData = TQueryFnData,
|
|
407
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
408
|
-
>(
|
|
409
|
-
options: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
410
|
-
): Promise<TData>
|
|
411
|
-
fetchQuery<
|
|
412
|
-
TQueryFnData = unknown,
|
|
413
|
-
TError = unknown,
|
|
414
|
-
TData = TQueryFnData,
|
|
415
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
416
|
-
>(
|
|
417
|
-
queryKey: TQueryKey,
|
|
418
|
-
options?: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
419
|
-
): Promise<TData>
|
|
420
|
-
fetchQuery<
|
|
421
|
-
TQueryFnData = unknown,
|
|
422
|
-
TError = unknown,
|
|
423
|
-
TData = TQueryFnData,
|
|
424
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
425
|
-
>(
|
|
426
|
-
queryKey: TQueryKey,
|
|
427
|
-
queryFn: QueryFunction<TQueryFnData, TQueryKey>,
|
|
428
|
-
options?: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
429
|
-
): Promise<TData>
|
|
430
273
|
fetchQuery<
|
|
431
274
|
TQueryFnData,
|
|
432
|
-
TError,
|
|
275
|
+
TError = RegisteredError,
|
|
433
276
|
TData = TQueryFnData,
|
|
434
277
|
TQueryKey extends QueryKey = QueryKey,
|
|
278
|
+
TPageParam = never,
|
|
435
279
|
>(
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
280
|
+
options: FetchQueryOptions<
|
|
281
|
+
TQueryFnData,
|
|
282
|
+
TError,
|
|
283
|
+
TData,
|
|
284
|
+
TQueryKey,
|
|
285
|
+
TPageParam
|
|
286
|
+
>,
|
|
441
287
|
): Promise<TData> {
|
|
442
|
-
const
|
|
443
|
-
const defaultedOptions = this.defaultQueryOptions(parsedOptions)
|
|
288
|
+
const defaultedOptions = this.defaultQueryOptions(options)
|
|
444
289
|
|
|
445
290
|
// https://github.com/tannerlinsley/react-query/issues/652
|
|
446
291
|
if (typeof defaultedOptions.retry === 'undefined') {
|
|
447
292
|
defaultedOptions.retry = false
|
|
448
293
|
}
|
|
449
294
|
|
|
450
|
-
const query = this
|
|
295
|
+
const query = this.#queryCache.build(this, defaultedOptions)
|
|
451
296
|
|
|
452
297
|
return query.isStaleByTime(defaultedOptions.staleTime)
|
|
453
298
|
? query.fetch(defaultedOptions)
|
|
@@ -456,267 +301,142 @@ export class QueryClient {
|
|
|
456
301
|
|
|
457
302
|
prefetchQuery<
|
|
458
303
|
TQueryFnData = unknown,
|
|
459
|
-
TError =
|
|
304
|
+
TError = RegisteredError,
|
|
460
305
|
TData = TQueryFnData,
|
|
461
306
|
TQueryKey extends QueryKey = QueryKey,
|
|
462
307
|
>(
|
|
463
308
|
options: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
464
|
-
): Promise<void>
|
|
465
|
-
prefetchQuery<
|
|
466
|
-
TQueryFnData = unknown,
|
|
467
|
-
TError = unknown,
|
|
468
|
-
TData = TQueryFnData,
|
|
469
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
470
|
-
>(
|
|
471
|
-
queryKey: TQueryKey,
|
|
472
|
-
options?: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
473
|
-
): Promise<void>
|
|
474
|
-
prefetchQuery<
|
|
475
|
-
TQueryFnData = unknown,
|
|
476
|
-
TError = unknown,
|
|
477
|
-
TData = TQueryFnData,
|
|
478
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
479
|
-
>(
|
|
480
|
-
queryKey: TQueryKey,
|
|
481
|
-
queryFn: QueryFunction<TQueryFnData, TQueryKey>,
|
|
482
|
-
options?: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
483
|
-
): Promise<void>
|
|
484
|
-
prefetchQuery<
|
|
485
|
-
TQueryFnData = unknown,
|
|
486
|
-
TError = unknown,
|
|
487
|
-
TData = TQueryFnData,
|
|
488
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
489
|
-
>(
|
|
490
|
-
arg1: TQueryKey | FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
491
|
-
arg2?:
|
|
492
|
-
| QueryFunction<TQueryFnData, TQueryKey>
|
|
493
|
-
| FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
494
|
-
arg3?: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
495
309
|
): Promise<void> {
|
|
496
|
-
return this.fetchQuery(
|
|
497
|
-
.then(noop)
|
|
498
|
-
.catch(noop)
|
|
310
|
+
return this.fetchQuery(options).then(noop).catch(noop)
|
|
499
311
|
}
|
|
500
312
|
|
|
501
|
-
fetchInfiniteQuery<
|
|
502
|
-
TQueryFnData = unknown,
|
|
503
|
-
TError = unknown,
|
|
504
|
-
TData = TQueryFnData,
|
|
505
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
506
|
-
>(
|
|
507
|
-
options: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
508
|
-
): Promise<InfiniteData<TData>>
|
|
509
|
-
fetchInfiniteQuery<
|
|
510
|
-
TQueryFnData = unknown,
|
|
511
|
-
TError = unknown,
|
|
512
|
-
TData = TQueryFnData,
|
|
513
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
514
|
-
>(
|
|
515
|
-
queryKey: TQueryKey,
|
|
516
|
-
options?: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
517
|
-
): Promise<InfiniteData<TData>>
|
|
518
|
-
fetchInfiniteQuery<
|
|
519
|
-
TQueryFnData = unknown,
|
|
520
|
-
TError = unknown,
|
|
521
|
-
TData = TQueryFnData,
|
|
522
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
523
|
-
>(
|
|
524
|
-
queryKey: TQueryKey,
|
|
525
|
-
queryFn: QueryFunction<TQueryFnData, TQueryKey>,
|
|
526
|
-
options?: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
527
|
-
): Promise<InfiniteData<TData>>
|
|
528
313
|
fetchInfiniteQuery<
|
|
529
314
|
TQueryFnData,
|
|
530
|
-
TError,
|
|
315
|
+
TError = RegisteredError,
|
|
531
316
|
TData = TQueryFnData,
|
|
532
317
|
TQueryKey extends QueryKey = QueryKey,
|
|
318
|
+
TPageParam = unknown,
|
|
533
319
|
>(
|
|
534
|
-
|
|
535
|
-
| TQueryKey
|
|
536
|
-
| FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
537
|
-
arg2?:
|
|
538
|
-
| QueryFunction<TQueryFnData, TQueryKey>
|
|
539
|
-
| FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
540
|
-
arg3?: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
541
|
-
): Promise<InfiniteData<TData>> {
|
|
542
|
-
const parsedOptions = parseQueryArgs(arg1, arg2, arg3)
|
|
543
|
-
parsedOptions.behavior = infiniteQueryBehavior<
|
|
320
|
+
options: FetchInfiniteQueryOptions<
|
|
544
321
|
TQueryFnData,
|
|
545
322
|
TError,
|
|
546
|
-
TData
|
|
547
|
-
|
|
548
|
-
|
|
323
|
+
TData,
|
|
324
|
+
TQueryKey,
|
|
325
|
+
TPageParam
|
|
326
|
+
>,
|
|
327
|
+
): Promise<InfiniteData<TData>> {
|
|
328
|
+
options.behavior = infiniteQueryBehavior<TQueryFnData, TError, TData>()
|
|
329
|
+
return this.fetchQuery(options)
|
|
549
330
|
}
|
|
550
331
|
|
|
551
|
-
prefetchInfiniteQuery<
|
|
552
|
-
TQueryFnData = unknown,
|
|
553
|
-
TError = unknown,
|
|
554
|
-
TData = TQueryFnData,
|
|
555
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
556
|
-
>(
|
|
557
|
-
options: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
558
|
-
): Promise<void>
|
|
559
|
-
prefetchInfiniteQuery<
|
|
560
|
-
TQueryFnData = unknown,
|
|
561
|
-
TError = unknown,
|
|
562
|
-
TData = TQueryFnData,
|
|
563
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
564
|
-
>(
|
|
565
|
-
queryKey: TQueryKey,
|
|
566
|
-
options?: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
567
|
-
): Promise<void>
|
|
568
|
-
prefetchInfiniteQuery<
|
|
569
|
-
TQueryFnData = unknown,
|
|
570
|
-
TError = unknown,
|
|
571
|
-
TData = TQueryFnData,
|
|
572
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
573
|
-
>(
|
|
574
|
-
queryKey: TQueryKey,
|
|
575
|
-
queryFn: QueryFunction<TQueryFnData, TQueryKey>,
|
|
576
|
-
options?: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
577
|
-
): Promise<void>
|
|
578
332
|
prefetchInfiniteQuery<
|
|
579
333
|
TQueryFnData,
|
|
580
|
-
TError,
|
|
334
|
+
TError = RegisteredError,
|
|
581
335
|
TData = TQueryFnData,
|
|
582
336
|
TQueryKey extends QueryKey = QueryKey,
|
|
337
|
+
TPageParam = unknown,
|
|
583
338
|
>(
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
339
|
+
options: FetchInfiniteQueryOptions<
|
|
340
|
+
TQueryFnData,
|
|
341
|
+
TError,
|
|
342
|
+
TData,
|
|
343
|
+
TQueryKey,
|
|
344
|
+
TPageParam
|
|
345
|
+
>,
|
|
591
346
|
): Promise<void> {
|
|
592
|
-
return this.fetchInfiniteQuery(
|
|
593
|
-
.then(noop)
|
|
594
|
-
.catch(noop)
|
|
347
|
+
return this.fetchInfiniteQuery(options).then(noop).catch(noop)
|
|
595
348
|
}
|
|
596
349
|
|
|
597
350
|
resumePausedMutations(): Promise<unknown> {
|
|
598
|
-
return this
|
|
351
|
+
return this.#mutationCache.resumePausedMutations()
|
|
599
352
|
}
|
|
600
353
|
|
|
601
354
|
getQueryCache(): QueryCache {
|
|
602
|
-
return this
|
|
355
|
+
return this.#queryCache
|
|
603
356
|
}
|
|
604
357
|
|
|
605
358
|
getMutationCache(): MutationCache {
|
|
606
|
-
return this
|
|
607
|
-
}
|
|
608
|
-
|
|
609
|
-
getLogger(): Logger {
|
|
610
|
-
return this.logger
|
|
359
|
+
return this.#mutationCache
|
|
611
360
|
}
|
|
612
361
|
|
|
613
362
|
getDefaultOptions(): DefaultOptions {
|
|
614
|
-
return this
|
|
363
|
+
return this.#defaultOptions
|
|
615
364
|
}
|
|
616
365
|
|
|
617
366
|
setDefaultOptions(options: DefaultOptions): void {
|
|
618
|
-
this
|
|
367
|
+
this.#defaultOptions = options
|
|
619
368
|
}
|
|
620
369
|
|
|
621
370
|
setQueryDefaults(
|
|
622
371
|
queryKey: QueryKey,
|
|
623
|
-
options:
|
|
372
|
+
options: Partial<
|
|
373
|
+
Omit<QueryObserverOptions<unknown, any, any, any>, 'queryKey'>
|
|
374
|
+
>,
|
|
624
375
|
): void {
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
result.defaultOptions = options
|
|
630
|
-
} else {
|
|
631
|
-
this.queryDefaults.push({ queryKey, defaultOptions: options })
|
|
632
|
-
}
|
|
376
|
+
this.#queryDefaults.set(hashKey(queryKey), {
|
|
377
|
+
queryKey,
|
|
378
|
+
defaultOptions: options,
|
|
379
|
+
})
|
|
633
380
|
}
|
|
634
381
|
|
|
635
382
|
getQueryDefaults(
|
|
636
|
-
queryKey
|
|
637
|
-
): QueryObserverOptions<any, any, any, any, any>
|
|
638
|
-
|
|
639
|
-
return undefined
|
|
640
|
-
}
|
|
383
|
+
queryKey: QueryKey,
|
|
384
|
+
): QueryObserverOptions<any, any, any, any, any> {
|
|
385
|
+
const defaults = [...this.#queryDefaults.values()]
|
|
641
386
|
|
|
642
|
-
|
|
643
|
-
const firstMatchingDefaults = this.queryDefaults.find((x) =>
|
|
644
|
-
partialMatchKey(queryKey, x.queryKey),
|
|
645
|
-
)
|
|
387
|
+
let result: QueryObserverOptions<any, any, any, any, any> = {}
|
|
646
388
|
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
const matchingDefaults = this.queryDefaults.filter((x) =>
|
|
651
|
-
partialMatchKey(queryKey, x.queryKey),
|
|
652
|
-
)
|
|
653
|
-
// It is ok not having defaults, but it is error prone to have more than 1 default for a given key
|
|
654
|
-
if (matchingDefaults.length > 1) {
|
|
655
|
-
this.logger.error(
|
|
656
|
-
`[QueryClient] Several query defaults match with key '${JSON.stringify(
|
|
657
|
-
queryKey,
|
|
658
|
-
)}'. The first matching query defaults are used. Please check how query defaults are registered. Order does matter here. cf. https://react-query.tanstack.com/reference/QueryClient#queryclientsetquerydefaults.`,
|
|
659
|
-
)
|
|
389
|
+
defaults.forEach((queryDefault) => {
|
|
390
|
+
if (partialMatchKey(queryKey, queryDefault.queryKey)) {
|
|
391
|
+
result = { ...result, ...queryDefault.defaultOptions }
|
|
660
392
|
}
|
|
661
|
-
}
|
|
662
|
-
|
|
663
|
-
return firstMatchingDefaults?.defaultOptions
|
|
393
|
+
})
|
|
394
|
+
return result
|
|
664
395
|
}
|
|
665
396
|
|
|
666
397
|
setMutationDefaults(
|
|
667
398
|
mutationKey: MutationKey,
|
|
668
|
-
options: MutationObserverOptions<any, any, any, any>,
|
|
399
|
+
options: Omit<MutationObserverOptions<any, any, any, any>, 'mutationKey'>,
|
|
669
400
|
): void {
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
result.defaultOptions = options
|
|
675
|
-
} else {
|
|
676
|
-
this.mutationDefaults.push({ mutationKey, defaultOptions: options })
|
|
677
|
-
}
|
|
401
|
+
this.#mutationDefaults.set(hashKey(mutationKey), {
|
|
402
|
+
mutationKey,
|
|
403
|
+
defaultOptions: options,
|
|
404
|
+
})
|
|
678
405
|
}
|
|
679
406
|
|
|
680
407
|
getMutationDefaults(
|
|
681
|
-
mutationKey
|
|
682
|
-
): MutationObserverOptions<any, any, any, any>
|
|
683
|
-
|
|
684
|
-
return undefined
|
|
685
|
-
}
|
|
408
|
+
mutationKey: MutationKey,
|
|
409
|
+
): MutationObserverOptions<any, any, any, any> {
|
|
410
|
+
const defaults = [...this.#mutationDefaults.values()]
|
|
686
411
|
|
|
687
|
-
|
|
688
|
-
const firstMatchingDefaults = this.mutationDefaults.find((x) =>
|
|
689
|
-
partialMatchKey(mutationKey, x.mutationKey),
|
|
690
|
-
)
|
|
412
|
+
let result: MutationObserverOptions<any, any, any, any> = {}
|
|
691
413
|
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
const matchingDefaults = this.mutationDefaults.filter((x) =>
|
|
696
|
-
partialMatchKey(mutationKey, x.mutationKey),
|
|
697
|
-
)
|
|
698
|
-
// It is ok not having defaults, but it is error prone to have more than 1 default for a given key
|
|
699
|
-
if (matchingDefaults.length > 1) {
|
|
700
|
-
this.logger.error(
|
|
701
|
-
`[QueryClient] Several mutation defaults match with key '${JSON.stringify(
|
|
702
|
-
mutationKey,
|
|
703
|
-
)}'. The first matching mutation defaults are used. Please check how mutation defaults are registered. Order does matter here. cf. https://react-query.tanstack.com/reference/QueryClient#queryclientsetmutationdefaults.`,
|
|
704
|
-
)
|
|
414
|
+
defaults.forEach((queryDefault) => {
|
|
415
|
+
if (partialMatchKey(mutationKey, queryDefault.mutationKey)) {
|
|
416
|
+
result = { ...result, ...queryDefault.defaultOptions }
|
|
705
417
|
}
|
|
706
|
-
}
|
|
418
|
+
})
|
|
707
419
|
|
|
708
|
-
return
|
|
420
|
+
return result
|
|
709
421
|
}
|
|
710
422
|
|
|
711
423
|
defaultQueryOptions<
|
|
712
|
-
TQueryFnData,
|
|
713
|
-
TError,
|
|
714
|
-
TData,
|
|
715
|
-
TQueryData,
|
|
716
|
-
TQueryKey extends QueryKey,
|
|
424
|
+
TQueryFnData = unknown,
|
|
425
|
+
TError = RegisteredError,
|
|
426
|
+
TData = TQueryFnData,
|
|
427
|
+
TQueryData = TQueryFnData,
|
|
428
|
+
TQueryKey extends QueryKey = QueryKey,
|
|
429
|
+
TPageParam = never,
|
|
717
430
|
>(
|
|
718
431
|
options?:
|
|
719
|
-
| QueryObserverOptions<
|
|
432
|
+
| QueryObserverOptions<
|
|
433
|
+
TQueryFnData,
|
|
434
|
+
TError,
|
|
435
|
+
TData,
|
|
436
|
+
TQueryData,
|
|
437
|
+
TQueryKey,
|
|
438
|
+
TPageParam
|
|
439
|
+
>
|
|
720
440
|
| DefaultedQueryObserverOptions<
|
|
721
441
|
TQueryFnData,
|
|
722
442
|
TError,
|
|
@@ -742,13 +462,13 @@ export class QueryClient {
|
|
|
742
462
|
}
|
|
743
463
|
|
|
744
464
|
const defaultedOptions = {
|
|
745
|
-
...this
|
|
746
|
-
...this.getQueryDefaults(options
|
|
465
|
+
...this.#defaultOptions.queries,
|
|
466
|
+
...(options?.queryKey && this.getQueryDefaults(options.queryKey)),
|
|
747
467
|
...options,
|
|
748
468
|
_defaulted: true,
|
|
749
469
|
}
|
|
750
470
|
|
|
751
|
-
if (!defaultedOptions.queryHash
|
|
471
|
+
if (!defaultedOptions.queryHash) {
|
|
752
472
|
defaultedOptions.queryHash = hashQueryKeyByOptions(
|
|
753
473
|
defaultedOptions.queryKey,
|
|
754
474
|
defaultedOptions,
|
|
@@ -760,8 +480,8 @@ export class QueryClient {
|
|
|
760
480
|
defaultedOptions.refetchOnReconnect =
|
|
761
481
|
defaultedOptions.networkMode !== 'always'
|
|
762
482
|
}
|
|
763
|
-
if (typeof defaultedOptions.
|
|
764
|
-
defaultedOptions.
|
|
483
|
+
if (typeof defaultedOptions.throwErrors === 'undefined') {
|
|
484
|
+
defaultedOptions.throwErrors = !!defaultedOptions.suspense
|
|
765
485
|
}
|
|
766
486
|
|
|
767
487
|
return defaultedOptions as DefaultedQueryObserverOptions<
|
|
@@ -780,15 +500,16 @@ export class QueryClient {
|
|
|
780
500
|
return options
|
|
781
501
|
}
|
|
782
502
|
return {
|
|
783
|
-
...this
|
|
784
|
-
...
|
|
503
|
+
...this.#defaultOptions.mutations,
|
|
504
|
+
...(options?.mutationKey &&
|
|
505
|
+
this.getMutationDefaults(options.mutationKey)),
|
|
785
506
|
...options,
|
|
786
507
|
_defaulted: true,
|
|
787
508
|
} as T
|
|
788
509
|
}
|
|
789
510
|
|
|
790
511
|
clear(): void {
|
|
791
|
-
this
|
|
792
|
-
this
|
|
512
|
+
this.#queryCache.clear()
|
|
513
|
+
this.#mutationCache.clear()
|
|
793
514
|
}
|
|
794
515
|
}
|