@tanstack/query-core 4.39.0 → 4.39.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/build/lib/focusManager.esm.js +91 -0
- package/build/lib/focusManager.esm.js.map +1 -0
- package/build/lib/focusManager.js +96 -0
- package/build/lib/focusManager.js.map +1 -0
- package/build/lib/focusManager.mjs +91 -0
- package/build/lib/focusManager.mjs.map +1 -0
- package/build/lib/hydration.esm.js +109 -0
- package/build/lib/hydration.esm.js.map +1 -0
- package/build/lib/hydration.js +116 -0
- package/build/lib/hydration.js.map +1 -0
- package/build/lib/hydration.mjs +109 -0
- package/build/lib/hydration.mjs.map +1 -0
- package/build/lib/index.esm.js +15 -0
- package/build/lib/index.esm.js.map +1 -0
- package/build/lib/index.js +48 -0
- package/build/lib/index.js.map +1 -0
- package/build/lib/index.mjs +15 -0
- package/build/lib/index.mjs.map +1 -0
- package/build/lib/infiniteQueryBehavior.esm.js +146 -0
- package/build/lib/infiniteQueryBehavior.esm.js.map +1 -0
- package/build/lib/infiniteQueryBehavior.js +154 -0
- package/build/lib/infiniteQueryBehavior.js.map +1 -0
- package/build/lib/infiniteQueryBehavior.mjs +146 -0
- package/build/lib/infiniteQueryBehavior.mjs.map +1 -0
- package/build/lib/infiniteQueryObserver.esm.js +85 -0
- package/build/lib/infiniteQueryObserver.esm.js.map +1 -0
- package/build/lib/infiniteQueryObserver.js +89 -0
- package/build/lib/infiniteQueryObserver.js.map +1 -0
- package/build/lib/infiniteQueryObserver.mjs +85 -0
- package/build/lib/infiniteQueryObserver.mjs.map +1 -0
- package/build/lib/logger.esm.js +4 -0
- package/build/lib/logger.esm.js.map +1 -0
- package/build/lib/logger.js +8 -0
- package/build/lib/logger.js.map +1 -0
- package/build/lib/logger.mjs +4 -0
- package/build/lib/logger.mjs.map +1 -0
- package/build/lib/logger.native.esm.js +12 -0
- package/build/lib/logger.native.esm.js.map +1 -0
- package/build/lib/logger.native.js +16 -0
- package/build/lib/logger.native.js.map +1 -0
- package/build/lib/logger.native.mjs +12 -0
- package/build/lib/logger.native.mjs.map +1 -0
- package/build/lib/mutation.esm.js +261 -0
- package/build/lib/mutation.esm.js.map +1 -0
- package/build/lib/mutation.js +266 -0
- package/build/lib/mutation.js.map +1 -0
- package/build/lib/mutation.mjs +261 -0
- package/build/lib/mutation.mjs.map +1 -0
- package/build/lib/mutationCache.esm.js +93 -0
- package/build/lib/mutationCache.esm.js.map +1 -0
- package/build/lib/mutationCache.js +97 -0
- package/build/lib/mutationCache.js.map +1 -0
- package/build/lib/mutationCache.mjs +93 -0
- package/build/lib/mutationCache.mjs.map +1 -0
- package/build/lib/mutationObserver.esm.js +134 -0
- package/build/lib/mutationObserver.esm.js.map +1 -0
- package/build/lib/mutationObserver.js +138 -0
- package/build/lib/mutationObserver.js.map +1 -0
- package/build/lib/mutationObserver.mjs +134 -0
- package/build/lib/mutationObserver.mjs.map +1 -0
- package/build/lib/notifyManager.esm.js +99 -0
- package/build/lib/notifyManager.esm.js.map +1 -0
- package/build/lib/notifyManager.js +104 -0
- package/build/lib/notifyManager.js.map +1 -0
- package/build/lib/notifyManager.mjs +99 -0
- package/build/lib/notifyManager.mjs.map +1 -0
- package/build/lib/onlineManager.esm.js +93 -0
- package/build/lib/onlineManager.esm.js.map +1 -0
- package/build/lib/onlineManager.js +98 -0
- package/build/lib/onlineManager.js.map +1 -0
- package/build/lib/onlineManager.mjs +93 -0
- package/build/lib/onlineManager.mjs.map +1 -0
- package/build/lib/queriesObserver.esm.js +168 -0
- package/build/lib/queriesObserver.esm.js.map +1 -0
- package/build/lib/queriesObserver.js +172 -0
- package/build/lib/queriesObserver.js.map +1 -0
- package/build/lib/queriesObserver.mjs +168 -0
- package/build/lib/queriesObserver.mjs.map +1 -0
- package/build/lib/query.esm.js +475 -0
- package/build/lib/query.esm.js.map +1 -0
- package/build/lib/query.js +479 -0
- package/build/lib/query.js.map +1 -0
- package/build/lib/query.mjs +475 -0
- package/build/lib/query.mjs.map +1 -0
- package/build/lib/queryCache.esm.js +133 -0
- package/build/lib/queryCache.esm.js.map +1 -0
- package/build/lib/queryCache.js +137 -0
- package/build/lib/queryCache.js.map +1 -0
- package/build/lib/queryCache.mjs +133 -0
- package/build/lib/queryCache.mjs.map +1 -0
- package/build/lib/queryClient.esm.js +402 -0
- package/build/lib/queryClient.esm.js.map +1 -0
- package/build/lib/queryClient.js +406 -0
- package/build/lib/queryClient.js.map +1 -0
- package/build/lib/queryClient.mjs +402 -0
- package/build/lib/queryClient.mjs.map +1 -0
- package/build/lib/queryObserver.esm.js +580 -0
- package/build/lib/queryObserver.esm.js.map +1 -0
- package/build/lib/queryObserver.js +584 -0
- package/build/lib/queryObserver.js.map +1 -0
- package/build/lib/queryObserver.mjs +580 -0
- package/build/lib/queryObserver.mjs.map +1 -0
- package/build/lib/removable.esm.js +33 -0
- package/build/lib/removable.esm.js.map +1 -0
- package/build/lib/removable.js +37 -0
- package/build/lib/removable.js.map +1 -0
- package/build/lib/removable.mjs +33 -0
- package/build/lib/removable.mjs.map +1 -0
- package/build/lib/retryer.esm.js +167 -0
- package/build/lib/retryer.esm.js.map +1 -0
- package/build/lib/retryer.js +174 -0
- package/build/lib/retryer.js.map +1 -0
- package/build/lib/retryer.mjs +167 -0
- package/build/lib/retryer.mjs.map +1 -0
- package/build/lib/subscribable.esm.js +32 -0
- package/build/lib/subscribable.esm.js.map +1 -0
- package/build/lib/subscribable.js +36 -0
- package/build/lib/subscribable.js.map +1 -0
- package/build/lib/subscribable.mjs +32 -0
- package/build/lib/subscribable.mjs.map +1 -0
- package/build/lib/types.d.ts +1 -0
- package/build/lib/utils.esm.js +320 -0
- package/build/lib/utils.esm.js.map +1 -0
- package/build/lib/utils.js +350 -0
- package/build/lib/utils.js.map +1 -0
- package/build/lib/utils.mjs +320 -0
- package/build/lib/utils.mjs.map +1 -0
- package/build/umd/index.development.js +3361 -0
- package/build/umd/index.development.js.map +1 -0
- package/build/umd/index.production.js +2 -0
- package/build/umd/index.production.js.map +1 -0
- package/package.json +1 -1
- package/src/types.ts +5 -0
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
import { parseFilterArgs, parseQueryArgs, functionalUpdate, noop, hashQueryKey, partialMatchKey, hashQueryKeyByOptions } from './utils.esm.js';
|
|
2
|
+
import { QueryCache } from './queryCache.esm.js';
|
|
3
|
+
import { MutationCache } from './mutationCache.esm.js';
|
|
4
|
+
import { focusManager } from './focusManager.esm.js';
|
|
5
|
+
import { onlineManager } from './onlineManager.esm.js';
|
|
6
|
+
import { notifyManager } from './notifyManager.esm.js';
|
|
7
|
+
import { infiniteQueryBehavior } from './infiniteQueryBehavior.esm.js';
|
|
8
|
+
import { defaultLogger } from './logger.esm.js';
|
|
9
|
+
|
|
10
|
+
// CLASS
|
|
11
|
+
class QueryClient {
|
|
12
|
+
constructor(config = {}) {
|
|
13
|
+
this.queryCache = config.queryCache || new QueryCache();
|
|
14
|
+
this.mutationCache = config.mutationCache || new MutationCache();
|
|
15
|
+
this.logger = config.logger || defaultLogger;
|
|
16
|
+
this.defaultOptions = config.defaultOptions || {};
|
|
17
|
+
this.queryDefaults = [];
|
|
18
|
+
this.mutationDefaults = [];
|
|
19
|
+
this.mountCount = 0;
|
|
20
|
+
|
|
21
|
+
if (process.env.NODE_ENV !== 'production' && config.logger) {
|
|
22
|
+
this.logger.error("Passing a custom logger has been deprecated and will be removed in the next major version.");
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
mount() {
|
|
27
|
+
this.mountCount++;
|
|
28
|
+
if (this.mountCount !== 1) return;
|
|
29
|
+
this.unsubscribeFocus = focusManager.subscribe(() => {
|
|
30
|
+
if (focusManager.isFocused()) {
|
|
31
|
+
this.resumePausedMutations();
|
|
32
|
+
this.queryCache.onFocus();
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
this.unsubscribeOnline = onlineManager.subscribe(() => {
|
|
36
|
+
if (onlineManager.isOnline()) {
|
|
37
|
+
this.resumePausedMutations();
|
|
38
|
+
this.queryCache.onOnline();
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
unmount() {
|
|
44
|
+
var _this$unsubscribeFocu, _this$unsubscribeOnli;
|
|
45
|
+
|
|
46
|
+
this.mountCount--;
|
|
47
|
+
if (this.mountCount !== 0) return;
|
|
48
|
+
(_this$unsubscribeFocu = this.unsubscribeFocus) == null ? void 0 : _this$unsubscribeFocu.call(this);
|
|
49
|
+
this.unsubscribeFocus = undefined;
|
|
50
|
+
(_this$unsubscribeOnli = this.unsubscribeOnline) == null ? void 0 : _this$unsubscribeOnli.call(this);
|
|
51
|
+
this.unsubscribeOnline = undefined;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* @deprecated This method should be used with only one object argument.
|
|
56
|
+
*/
|
|
57
|
+
isFetching(arg1, arg2) {
|
|
58
|
+
const [filters] = parseFilterArgs(arg1, arg2);
|
|
59
|
+
filters.fetchStatus = 'fetching';
|
|
60
|
+
return this.queryCache.findAll(filters).length;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
isMutating(filters) {
|
|
64
|
+
return this.mutationCache.findAll({ ...filters,
|
|
65
|
+
fetching: true
|
|
66
|
+
}).length;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* @deprecated This method will accept only queryKey in the next major version.
|
|
71
|
+
*/
|
|
72
|
+
getQueryData(queryKey, filters) {
|
|
73
|
+
var _this$queryCache$find;
|
|
74
|
+
|
|
75
|
+
return (_this$queryCache$find = this.queryCache.find(queryKey, filters)) == null ? void 0 : _this$queryCache$find.state.data;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* @deprecated This method should be used with only one object argument.
|
|
80
|
+
*/
|
|
81
|
+
ensureQueryData(arg1, arg2, arg3) {
|
|
82
|
+
const parsedOptions = parseQueryArgs(arg1, arg2, arg3);
|
|
83
|
+
const cachedData = this.getQueryData(parsedOptions.queryKey);
|
|
84
|
+
return cachedData ? Promise.resolve(cachedData) : this.fetchQuery(parsedOptions);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* @deprecated This method should be used with only one object argument.
|
|
89
|
+
*/
|
|
90
|
+
getQueriesData(queryKeyOrFilters) {
|
|
91
|
+
return this.getQueryCache().findAll(queryKeyOrFilters).map(({
|
|
92
|
+
queryKey,
|
|
93
|
+
state
|
|
94
|
+
}) => {
|
|
95
|
+
const data = state.data;
|
|
96
|
+
return [queryKey, data];
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
setQueryData(queryKey, updater, options) {
|
|
101
|
+
const query = this.queryCache.find(queryKey);
|
|
102
|
+
const prevData = query == null ? void 0 : query.state.data;
|
|
103
|
+
const data = functionalUpdate(updater, prevData);
|
|
104
|
+
|
|
105
|
+
if (typeof data === 'undefined') {
|
|
106
|
+
return undefined;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
const parsedOptions = parseQueryArgs(queryKey);
|
|
110
|
+
const defaultedOptions = this.defaultQueryOptions(parsedOptions);
|
|
111
|
+
return this.queryCache.build(this, defaultedOptions).setData(data, { ...options,
|
|
112
|
+
manual: true
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* @deprecated This method should be used with only one object argument.
|
|
118
|
+
*/
|
|
119
|
+
setQueriesData(queryKeyOrFilters, updater, options) {
|
|
120
|
+
return notifyManager.batch(() => this.getQueryCache().findAll(queryKeyOrFilters).map(({
|
|
121
|
+
queryKey
|
|
122
|
+
}) => [queryKey, this.setQueryData(queryKey, updater, options)]));
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
getQueryState(queryKey,
|
|
126
|
+
/**
|
|
127
|
+
* @deprecated This filters will be removed in the next major version.
|
|
128
|
+
*/
|
|
129
|
+
filters) {
|
|
130
|
+
var _this$queryCache$find2;
|
|
131
|
+
|
|
132
|
+
return (_this$queryCache$find2 = this.queryCache.find(queryKey, filters)) == null ? void 0 : _this$queryCache$find2.state;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* @deprecated This method should be used with only one object argument.
|
|
137
|
+
*/
|
|
138
|
+
removeQueries(arg1, arg2) {
|
|
139
|
+
const [filters] = parseFilterArgs(arg1, arg2);
|
|
140
|
+
const queryCache = this.queryCache;
|
|
141
|
+
notifyManager.batch(() => {
|
|
142
|
+
queryCache.findAll(filters).forEach(query => {
|
|
143
|
+
queryCache.remove(query);
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* @deprecated This method should be used with only one object argument.
|
|
150
|
+
*/
|
|
151
|
+
resetQueries(arg1, arg2, arg3) {
|
|
152
|
+
const [filters, options] = parseFilterArgs(arg1, arg2, arg3);
|
|
153
|
+
const queryCache = this.queryCache;
|
|
154
|
+
const refetchFilters = {
|
|
155
|
+
type: 'active',
|
|
156
|
+
...filters
|
|
157
|
+
};
|
|
158
|
+
return notifyManager.batch(() => {
|
|
159
|
+
queryCache.findAll(filters).forEach(query => {
|
|
160
|
+
query.reset();
|
|
161
|
+
});
|
|
162
|
+
return this.refetchQueries(refetchFilters, options);
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* @deprecated This method should be used with only one object argument.
|
|
168
|
+
*/
|
|
169
|
+
cancelQueries(arg1, arg2, arg3) {
|
|
170
|
+
const [filters, cancelOptions = {}] = parseFilterArgs(arg1, arg2, arg3);
|
|
171
|
+
|
|
172
|
+
if (typeof cancelOptions.revert === 'undefined') {
|
|
173
|
+
cancelOptions.revert = true;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
const promises = notifyManager.batch(() => this.queryCache.findAll(filters).map(query => query.cancel(cancelOptions)));
|
|
177
|
+
return Promise.all(promises).then(noop).catch(noop);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* @deprecated This method should be used with only one object argument.
|
|
182
|
+
*/
|
|
183
|
+
invalidateQueries(arg1, arg2, arg3) {
|
|
184
|
+
const [filters, options] = parseFilterArgs(arg1, arg2, arg3);
|
|
185
|
+
return notifyManager.batch(() => {
|
|
186
|
+
var _ref, _filters$refetchType;
|
|
187
|
+
|
|
188
|
+
this.queryCache.findAll(filters).forEach(query => {
|
|
189
|
+
query.invalidate();
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
if (filters.refetchType === 'none') {
|
|
193
|
+
return Promise.resolve();
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
const refetchFilters = { ...filters,
|
|
197
|
+
type: (_ref = (_filters$refetchType = filters.refetchType) != null ? _filters$refetchType : filters.type) != null ? _ref : 'active'
|
|
198
|
+
};
|
|
199
|
+
return this.refetchQueries(refetchFilters, options);
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* @deprecated This method should be used with only one object argument.
|
|
205
|
+
*/
|
|
206
|
+
refetchQueries(arg1, arg2, arg3) {
|
|
207
|
+
const [filters, options] = parseFilterArgs(arg1, arg2, arg3);
|
|
208
|
+
const promises = notifyManager.batch(() => this.queryCache.findAll(filters).filter(query => !query.isDisabled()).map(query => {
|
|
209
|
+
var _options$cancelRefetc;
|
|
210
|
+
|
|
211
|
+
return query.fetch(undefined, { ...options,
|
|
212
|
+
cancelRefetch: (_options$cancelRefetc = options == null ? void 0 : options.cancelRefetch) != null ? _options$cancelRefetc : true,
|
|
213
|
+
meta: {
|
|
214
|
+
refetchPage: filters.refetchPage
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
}));
|
|
218
|
+
let promise = Promise.all(promises).then(noop);
|
|
219
|
+
|
|
220
|
+
if (!(options != null && options.throwOnError)) {
|
|
221
|
+
promise = promise.catch(noop);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
return promise;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* @deprecated This method should be used with only one object argument.
|
|
229
|
+
*/
|
|
230
|
+
fetchQuery(arg1, arg2, arg3) {
|
|
231
|
+
const parsedOptions = parseQueryArgs(arg1, arg2, arg3);
|
|
232
|
+
const defaultedOptions = this.defaultQueryOptions(parsedOptions); // https://github.com/tannerlinsley/react-query/issues/652
|
|
233
|
+
|
|
234
|
+
if (typeof defaultedOptions.retry === 'undefined') {
|
|
235
|
+
defaultedOptions.retry = false;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
const query = this.queryCache.build(this, defaultedOptions);
|
|
239
|
+
return query.isStaleByTime(defaultedOptions.staleTime) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* @deprecated This method should be used with only one object argument.
|
|
244
|
+
*/
|
|
245
|
+
prefetchQuery(arg1, arg2, arg3) {
|
|
246
|
+
return this.fetchQuery(arg1, arg2, arg3).then(noop).catch(noop);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* @deprecated This method should be used with only one object argument.
|
|
251
|
+
*/
|
|
252
|
+
fetchInfiniteQuery(arg1, arg2, arg3) {
|
|
253
|
+
const parsedOptions = parseQueryArgs(arg1, arg2, arg3);
|
|
254
|
+
parsedOptions.behavior = infiniteQueryBehavior();
|
|
255
|
+
return this.fetchQuery(parsedOptions);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* @deprecated This method should be used with only one object argument.
|
|
260
|
+
*/
|
|
261
|
+
prefetchInfiniteQuery(arg1, arg2, arg3) {
|
|
262
|
+
return this.fetchInfiniteQuery(arg1, arg2, arg3).then(noop).catch(noop);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
resumePausedMutations() {
|
|
266
|
+
return this.mutationCache.resumePausedMutations();
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
getQueryCache() {
|
|
270
|
+
return this.queryCache;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
getMutationCache() {
|
|
274
|
+
return this.mutationCache;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
getLogger() {
|
|
278
|
+
return this.logger;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
getDefaultOptions() {
|
|
282
|
+
return this.defaultOptions;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
setDefaultOptions(options) {
|
|
286
|
+
this.defaultOptions = options;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
setQueryDefaults(queryKey, options) {
|
|
290
|
+
const result = this.queryDefaults.find(x => hashQueryKey(queryKey) === hashQueryKey(x.queryKey));
|
|
291
|
+
|
|
292
|
+
if (result) {
|
|
293
|
+
result.defaultOptions = options;
|
|
294
|
+
} else {
|
|
295
|
+
this.queryDefaults.push({
|
|
296
|
+
queryKey,
|
|
297
|
+
defaultOptions: options
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
getQueryDefaults(queryKey) {
|
|
303
|
+
if (!queryKey) {
|
|
304
|
+
return undefined;
|
|
305
|
+
} // Get the first matching defaults
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
const firstMatchingDefaults = this.queryDefaults.find(x => partialMatchKey(queryKey, x.queryKey)); // Additional checks and error in dev mode
|
|
309
|
+
|
|
310
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
311
|
+
// Retrieve all matching defaults for the given key
|
|
312
|
+
const matchingDefaults = this.queryDefaults.filter(x => partialMatchKey(queryKey, x.queryKey)); // It is ok not having defaults, but it is error prone to have more than 1 default for a given key
|
|
313
|
+
|
|
314
|
+
if (matchingDefaults.length > 1) {
|
|
315
|
+
this.logger.error("[QueryClient] Several query defaults match with key '" + JSON.stringify(queryKey) + "'. 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.");
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
return firstMatchingDefaults == null ? void 0 : firstMatchingDefaults.defaultOptions;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
setMutationDefaults(mutationKey, options) {
|
|
323
|
+
const result = this.mutationDefaults.find(x => hashQueryKey(mutationKey) === hashQueryKey(x.mutationKey));
|
|
324
|
+
|
|
325
|
+
if (result) {
|
|
326
|
+
result.defaultOptions = options;
|
|
327
|
+
} else {
|
|
328
|
+
this.mutationDefaults.push({
|
|
329
|
+
mutationKey,
|
|
330
|
+
defaultOptions: options
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
getMutationDefaults(mutationKey) {
|
|
336
|
+
if (!mutationKey) {
|
|
337
|
+
return undefined;
|
|
338
|
+
} // Get the first matching defaults
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
const firstMatchingDefaults = this.mutationDefaults.find(x => partialMatchKey(mutationKey, x.mutationKey)); // Additional checks and error in dev mode
|
|
342
|
+
|
|
343
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
344
|
+
// Retrieve all matching defaults for the given key
|
|
345
|
+
const matchingDefaults = this.mutationDefaults.filter(x => partialMatchKey(mutationKey, x.mutationKey)); // It is ok not having defaults, but it is error prone to have more than 1 default for a given key
|
|
346
|
+
|
|
347
|
+
if (matchingDefaults.length > 1) {
|
|
348
|
+
this.logger.error("[QueryClient] Several mutation defaults match with key '" + JSON.stringify(mutationKey) + "'. 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.");
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
return firstMatchingDefaults == null ? void 0 : firstMatchingDefaults.defaultOptions;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
defaultQueryOptions(options) {
|
|
356
|
+
if (options != null && options._defaulted) {
|
|
357
|
+
return options;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
const defaultedOptions = { ...this.defaultOptions.queries,
|
|
361
|
+
...this.getQueryDefaults(options == null ? void 0 : options.queryKey),
|
|
362
|
+
...options,
|
|
363
|
+
_defaulted: true
|
|
364
|
+
};
|
|
365
|
+
|
|
366
|
+
if (!defaultedOptions.queryHash && defaultedOptions.queryKey) {
|
|
367
|
+
defaultedOptions.queryHash = hashQueryKeyByOptions(defaultedOptions.queryKey, defaultedOptions);
|
|
368
|
+
} // dependent default values
|
|
369
|
+
|
|
370
|
+
|
|
371
|
+
if (typeof defaultedOptions.refetchOnReconnect === 'undefined') {
|
|
372
|
+
defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== 'always';
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
if (typeof defaultedOptions.useErrorBoundary === 'undefined') {
|
|
376
|
+
defaultedOptions.useErrorBoundary = !!defaultedOptions.suspense;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
return defaultedOptions;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
defaultMutationOptions(options) {
|
|
383
|
+
if (options != null && options._defaulted) {
|
|
384
|
+
return options;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
return { ...this.defaultOptions.mutations,
|
|
388
|
+
...this.getMutationDefaults(options == null ? void 0 : options.mutationKey),
|
|
389
|
+
...options,
|
|
390
|
+
_defaulted: true
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
clear() {
|
|
395
|
+
this.queryCache.clear();
|
|
396
|
+
this.mutationCache.clear();
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
export { QueryClient };
|
|
402
|
+
//# sourceMappingURL=queryClient.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryClient.esm.js","sources":["../../src/queryClient.ts"],"sourcesContent":["import {\n functionalUpdate,\n hashQueryKey,\n hashQueryKeyByOptions,\n noop,\n parseFilterArgs,\n parseQueryArgs,\n partialMatchKey,\n} from './utils'\nimport { QueryCache } from './queryCache'\nimport { MutationCache } from './mutationCache'\nimport { focusManager } from './focusManager'\nimport { onlineManager } from './onlineManager'\nimport { notifyManager } from './notifyManager'\nimport { infiniteQueryBehavior } from './infiniteQueryBehavior'\nimport { defaultLogger } from './logger'\nimport type { OmitKeyof } from '@tanstack/query-core'\nimport type { CancelOptions, DefaultedQueryObserverOptions } from './types'\nimport type { Logger } from './logger'\nimport type { QueryState } from './query'\nimport type {\n DefaultOptions,\n FetchInfiniteQueryOptions,\n FetchQueryOptions,\n InfiniteData,\n InvalidateOptions,\n InvalidateQueryFilters,\n MutationKey,\n MutationObserverOptions,\n MutationOptions,\n QueryClientConfig,\n QueryFunction,\n QueryKey,\n QueryObserverOptions,\n QueryOptions,\n RefetchOptions,\n RefetchQueryFilters,\n ResetOptions,\n ResetQueryFilters,\n SetDataOptions,\n WithRequired,\n} from './types'\nimport type { MutationFilters, QueryFilters, Updater } from './utils'\n\n// TYPES\n\ninterface QueryDefaults {\n queryKey: QueryKey\n defaultOptions: QueryOptions<any, any, any>\n}\n\ninterface MutationDefaults {\n mutationKey: MutationKey\n defaultOptions: MutationOptions<any, any, any, any>\n}\n\n// CLASS\n\nexport class QueryClient {\n private queryCache: QueryCache\n private mutationCache: MutationCache\n private logger: Logger\n private defaultOptions: DefaultOptions\n private queryDefaults: QueryDefaults[]\n private mutationDefaults: MutationDefaults[]\n private mountCount: number\n private unsubscribeFocus?: () => void\n private unsubscribeOnline?: () => void\n\n constructor(config: QueryClientConfig = {}) {\n this.queryCache = config.queryCache || new QueryCache()\n this.mutationCache = config.mutationCache || new MutationCache()\n this.logger = config.logger || defaultLogger\n this.defaultOptions = config.defaultOptions || {}\n this.queryDefaults = []\n this.mutationDefaults = []\n this.mountCount = 0\n\n if (process.env.NODE_ENV !== 'production' && config.logger) {\n this.logger.error(\n `Passing a custom logger has been deprecated and will be removed in the next major version.`,\n )\n }\n }\n\n mount(): void {\n this.mountCount++\n if (this.mountCount !== 1) return\n\n this.unsubscribeFocus = focusManager.subscribe(() => {\n if (focusManager.isFocused()) {\n this.resumePausedMutations()\n this.queryCache.onFocus()\n }\n })\n this.unsubscribeOnline = onlineManager.subscribe(() => {\n if (onlineManager.isOnline()) {\n this.resumePausedMutations()\n this.queryCache.onOnline()\n }\n })\n }\n\n unmount(): void {\n this.mountCount--\n if (this.mountCount !== 0) return\n\n this.unsubscribeFocus?.()\n this.unsubscribeFocus = undefined\n\n this.unsubscribeOnline?.()\n this.unsubscribeOnline = undefined\n }\n\n isFetching(filters?: QueryFilters): number\n /**\n * @deprecated This method should be used with only one object argument.\n */\n isFetching(\n queryKey?: QueryKey,\n filters?: OmitKeyof<QueryFilters, 'queryKey'>,\n ): number\n /**\n * @deprecated This method should be used with only one object argument.\n */\n isFetching(arg1?: QueryKey | QueryFilters, arg2?: QueryFilters): number {\n const [filters] = parseFilterArgs(arg1, arg2)\n filters.fetchStatus = 'fetching'\n return this.queryCache.findAll(filters).length\n }\n\n isMutating(filters?: MutationFilters): number {\n return this.mutationCache.findAll({ ...filters, fetching: true }).length\n }\n\n getQueryData<TQueryFnData = unknown>(\n queryKey: QueryKey,\n ): TQueryFnData | undefined\n /**\n * @deprecated This method will accept only queryKey in the next major version.\n */\n getQueryData<TQueryFnData = unknown>(\n queryKey: QueryKey,\n filters: OmitKeyof<QueryFilters, 'queryKey'>,\n ): TQueryFnData | undefined\n /**\n * @deprecated This method will accept only queryKey in the next major version.\n */\n getQueryData<TQueryFnData = unknown>(\n queryKey: QueryKey,\n filters?: OmitKeyof<QueryFilters, 'queryKey'>,\n ): TQueryFnData | undefined {\n return this.queryCache.find<TQueryFnData>(queryKey, filters)?.state.data\n }\n\n ensureQueryData<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: WithRequired<\n FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'queryKey'\n >,\n ): Promise<TData>\n /**\n * @deprecated This method should be used with only one object argument.\n */\n ensureQueryData<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n options?: OmitKeyof<\n FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'queryKey'\n >,\n ): Promise<TData>\n /**\n * @deprecated This method should be used with only one object argument.\n */\n ensureQueryData<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n queryFn: QueryFunction<TQueryFnData, TQueryKey>,\n options?: OmitKeyof<\n FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'queryKey' | 'queryFn'\n >,\n ): Promise<TData>\n /**\n * @deprecated This method should be used with only one object argument.\n */\n ensureQueryData<\n TQueryFnData,\n TError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n arg1:\n | TQueryKey\n | WithRequired<\n FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'queryKey'\n >,\n arg2?:\n | QueryFunction<TQueryFnData, TQueryKey>\n | FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n arg3?: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<TData> {\n const parsedOptions = parseQueryArgs(arg1, arg2, arg3)\n const cachedData = this.getQueryData<TData>(parsedOptions.queryKey!)\n\n return cachedData\n ? Promise.resolve(cachedData)\n : this.fetchQuery(parsedOptions)\n }\n\n getQueriesData<TQueryFnData = unknown>(\n filters: QueryFilters,\n ): [QueryKey, TQueryFnData | undefined][]\n /**\n * @deprecated This method should be used with only one object argument.\n */\n getQueriesData<TQueryFnData = unknown>(\n queryKey: QueryKey,\n ): [QueryKey, TQueryFnData | undefined][]\n /**\n * @deprecated This method should be used with only one object argument.\n */\n getQueriesData<TQueryFnData = unknown>(\n queryKeyOrFilters: QueryKey | QueryFilters,\n ): [QueryKey, TQueryFnData | undefined][] {\n return this.getQueryCache()\n .findAll(queryKeyOrFilters)\n .map(({ queryKey, state }) => {\n const data = state.data as TQueryFnData | undefined\n return [queryKey, data]\n })\n }\n\n setQueryData<TQueryFnData>(\n queryKey: QueryKey,\n updater: Updater<TQueryFnData | undefined, TQueryFnData | undefined>,\n options?: SetDataOptions,\n ): TQueryFnData | undefined {\n const query = this.queryCache.find<TQueryFnData>(queryKey)\n const prevData = query?.state.data\n const data = functionalUpdate(updater, prevData)\n\n if (typeof data === 'undefined') {\n return undefined\n }\n\n const parsedOptions = parseQueryArgs(queryKey)\n const defaultedOptions = this.defaultQueryOptions(parsedOptions)\n return this.queryCache\n .build(this, defaultedOptions)\n .setData(data, { ...options, manual: true })\n }\n\n setQueriesData<TQueryFnData>(\n filters: QueryFilters,\n updater: Updater<TQueryFnData | undefined, TQueryFnData | undefined>,\n options?: SetDataOptions,\n ): [QueryKey, TQueryFnData | undefined][]\n /**\n * @deprecated This method should be used with only one object argument.\n */\n setQueriesData<TQueryFnData>(\n queryKey: QueryKey,\n updater: Updater<TQueryFnData | undefined, TQueryFnData | undefined>,\n options?: SetDataOptions,\n ): [QueryKey, TQueryFnData | undefined][]\n /**\n * @deprecated This method should be used with only one object argument.\n */\n setQueriesData<TQueryFnData>(\n queryKeyOrFilters: QueryKey | QueryFilters,\n updater: Updater<TQueryFnData | undefined, TQueryFnData | undefined>,\n options?: SetDataOptions,\n ): [QueryKey, TQueryFnData | undefined][] {\n return notifyManager.batch(() =>\n this.getQueryCache()\n .findAll(queryKeyOrFilters)\n .map(({ queryKey }) => [\n queryKey,\n this.setQueryData<TQueryFnData>(queryKey, updater, options),\n ]),\n )\n }\n\n getQueryState<TQueryFnData = unknown, TError = undefined>(\n queryKey: QueryKey,\n /**\n * @deprecated This filters will be removed in the next major version.\n */\n filters?: OmitKeyof<QueryFilters, 'queryKey'>,\n ): QueryState<TQueryFnData, TError> | undefined {\n return this.queryCache.find<TQueryFnData, TError>(queryKey, filters)?.state\n }\n\n removeQueries(filters?: QueryFilters): void\n /**\n * @deprecated This method should be used with only one object argument.\n */\n removeQueries(\n queryKey?: QueryKey,\n filters?: OmitKeyof<QueryFilters, 'queryKey'>,\n ): void\n /**\n * @deprecated This method should be used with only one object argument.\n */\n removeQueries(\n arg1?: QueryKey | QueryFilters,\n arg2?: OmitKeyof<QueryFilters, 'queryKey'>,\n ): void {\n const [filters] = parseFilterArgs(arg1, arg2)\n const queryCache = this.queryCache\n notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n queryCache.remove(query)\n })\n })\n }\n\n resetQueries<TPageData = unknown>(\n filters?: ResetQueryFilters<TPageData>,\n options?: ResetOptions,\n ): Promise<void>\n /**\n * @deprecated This method should be used with only one object argument.\n */\n resetQueries<TPageData = unknown>(\n queryKey?: QueryKey,\n filters?: OmitKeyof<ResetQueryFilters<TPageData>, 'queryKey'>,\n options?: ResetOptions,\n ): Promise<void>\n /**\n * @deprecated This method should be used with only one object argument.\n */\n resetQueries(\n arg1?: QueryKey | ResetQueryFilters,\n arg2?: OmitKeyof<ResetQueryFilters, 'queryKey'> | ResetOptions,\n arg3?: ResetOptions,\n ): Promise<void> {\n const [filters, options] = parseFilterArgs(arg1, arg2, arg3)\n const queryCache = this.queryCache\n\n const refetchFilters: RefetchQueryFilters = {\n type: 'active',\n ...filters,\n }\n\n return notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n query.reset()\n })\n return this.refetchQueries(refetchFilters, options)\n })\n }\n\n cancelQueries(filters?: QueryFilters, options?: CancelOptions): Promise<void>\n /**\n * @deprecated This method should be used with only one object argument.\n */\n cancelQueries(\n queryKey?: QueryKey,\n filters?: OmitKeyof<QueryFilters, 'queryKey'>,\n options?: CancelOptions,\n ): Promise<void>\n /**\n * @deprecated This method should be used with only one object argument.\n */\n cancelQueries(\n arg1?: QueryKey | QueryFilters,\n arg2?: OmitKeyof<QueryFilters, 'queryKey'> | CancelOptions,\n arg3?: CancelOptions,\n ): Promise<void> {\n const [filters, cancelOptions = {}] = parseFilterArgs(arg1, arg2, arg3)\n\n if (typeof cancelOptions.revert === 'undefined') {\n cancelOptions.revert = true\n }\n\n const promises = notifyManager.batch(() =>\n this.queryCache\n .findAll(filters)\n .map((query) => query.cancel(cancelOptions)),\n )\n\n return Promise.all(promises).then(noop).catch(noop)\n }\n\n invalidateQueries<TPageData = unknown>(\n filters?: InvalidateQueryFilters<TPageData>,\n options?: InvalidateOptions,\n ): Promise<void>\n /**\n * @deprecated This method should be used with only one object argument.\n */\n invalidateQueries<TPageData = unknown>(\n queryKey?: QueryKey,\n filters?: OmitKeyof<InvalidateQueryFilters<TPageData>, 'queryKey'>,\n options?: InvalidateOptions,\n ): Promise<void>\n /**\n * @deprecated This method should be used with only one object argument.\n */\n invalidateQueries(\n arg1?: QueryKey | InvalidateQueryFilters,\n arg2?: OmitKeyof<InvalidateQueryFilters, 'queryKey'> | InvalidateOptions,\n arg3?: InvalidateOptions,\n ): Promise<void> {\n const [filters, options] = parseFilterArgs(arg1, arg2, arg3)\n\n return notifyManager.batch(() => {\n this.queryCache.findAll(filters).forEach((query) => {\n query.invalidate()\n })\n\n if (filters.refetchType === 'none') {\n return Promise.resolve()\n }\n const refetchFilters: RefetchQueryFilters = {\n ...filters,\n type: filters.refetchType ?? filters.type ?? 'active',\n }\n return this.refetchQueries(refetchFilters, options)\n })\n }\n\n refetchQueries<TPageData = unknown>(\n filters?: RefetchQueryFilters<TPageData>,\n options?: RefetchOptions,\n ): Promise<void>\n /**\n * @deprecated This method should be used with only one object argument.\n */\n refetchQueries<TPageData = unknown>(\n queryKey?: QueryKey,\n filters?: OmitKeyof<RefetchQueryFilters<TPageData>, 'queryKey'>,\n options?: RefetchOptions,\n ): Promise<void>\n /**\n * @deprecated This method should be used with only one object argument.\n */\n refetchQueries(\n arg1?: QueryKey | RefetchQueryFilters,\n arg2?: OmitKeyof<RefetchQueryFilters, 'queryKey'> | RefetchOptions,\n arg3?: RefetchOptions,\n ): Promise<void> {\n const [filters, options] = parseFilterArgs(arg1, arg2, arg3)\n\n const promises = notifyManager.batch(() =>\n this.queryCache\n .findAll(filters)\n .filter((query) => !query.isDisabled())\n .map((query) =>\n query.fetch(undefined, {\n ...options,\n cancelRefetch: options?.cancelRefetch ?? true,\n meta: { refetchPage: filters.refetchPage },\n }),\n ),\n )\n\n let promise = Promise.all(promises).then(noop)\n\n if (!options?.throwOnError) {\n promise = promise.catch(noop)\n }\n\n return promise\n }\n\n fetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<TData>\n /**\n * @deprecated This method should be used with only one object argument.\n */\n fetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n options?: OmitKeyof<\n FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'queryKey'\n >,\n ): Promise<TData>\n /**\n * @deprecated This method should be used with only one object argument.\n */\n fetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n queryFn: QueryFunction<TQueryFnData, TQueryKey>,\n options?: OmitKeyof<\n FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'queryKey' | 'queryFn'\n >,\n ): Promise<TData>\n /**\n * @deprecated This method should be used with only one object argument.\n */\n fetchQuery<\n TQueryFnData,\n TError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n arg1: TQueryKey | FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n arg2?:\n | QueryFunction<TQueryFnData, TQueryKey>\n | OmitKeyof<\n FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'queryKey'\n >,\n arg3?: OmitKeyof<\n FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'queryKey' | 'queryFn'\n >,\n ): Promise<TData> {\n const parsedOptions = parseQueryArgs(arg1, arg2, arg3)\n const defaultedOptions = this.defaultQueryOptions(parsedOptions)\n\n // https://github.com/tannerlinsley/react-query/issues/652\n if (typeof defaultedOptions.retry === 'undefined') {\n defaultedOptions.retry = false\n }\n\n const query = this.queryCache.build(this, defaultedOptions)\n\n return query.isStaleByTime(defaultedOptions.staleTime)\n ? query.fetch(defaultedOptions)\n : Promise.resolve(query.state.data as TData)\n }\n\n prefetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<void>\n /**\n * @deprecated This method should be used with only one object argument.\n */\n prefetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n options?: OmitKeyof<\n FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'queryKey'\n >,\n ): Promise<void>\n /**\n * @deprecated This method should be used with only one object argument.\n */\n prefetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n queryFn: QueryFunction<TQueryFnData, TQueryKey>,\n options?: OmitKeyof<\n FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'queryKey' | 'queryFn'\n >,\n ): Promise<void>\n /**\n * @deprecated This method should be used with only one object argument.\n */\n prefetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n arg1: TQueryKey | FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n arg2?:\n | QueryFunction<TQueryFnData, TQueryKey>\n | OmitKeyof<\n FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'queryKey'\n >,\n arg3?: OmitKeyof<\n FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'queryKey' | 'queryFn'\n >,\n ): Promise<void> {\n return this.fetchQuery(arg1 as any, arg2 as any, arg3)\n .then(noop)\n .catch(noop)\n }\n\n fetchInfiniteQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<InfiniteData<TData>>\n /**\n * @deprecated This method should be used with only one object argument.\n */\n fetchInfiniteQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n options?: OmitKeyof<\n FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'queryKey'\n >,\n ): Promise<InfiniteData<TData>>\n /**\n * @deprecated This method should be used with only one object argument.\n */\n fetchInfiniteQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n queryFn: QueryFunction<TQueryFnData, TQueryKey>,\n options?: OmitKeyof<\n FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'queryKey' | 'queryFn'\n >,\n ): Promise<InfiniteData<TData>>\n /**\n * @deprecated This method should be used with only one object argument.\n */\n fetchInfiniteQuery<\n TQueryFnData,\n TError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n arg1:\n | TQueryKey\n | FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n arg2?:\n | QueryFunction<TQueryFnData, TQueryKey>\n | OmitKeyof<\n FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'queryKey'\n >,\n arg3?: OmitKeyof<\n FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'queryKey' | 'queryFn'\n >,\n ): Promise<InfiniteData<TData>> {\n const parsedOptions = parseQueryArgs(arg1, arg2, arg3)\n parsedOptions.behavior = infiniteQueryBehavior<\n TQueryFnData,\n TError,\n TData\n >()\n return this.fetchQuery(parsedOptions)\n }\n\n prefetchInfiniteQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<void>\n /**\n * @deprecated This method should be used with only one object argument.\n */\n prefetchInfiniteQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n options?: OmitKeyof<\n FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'queryKey'\n >,\n ): Promise<void>\n /**\n * @deprecated This method should be used with only one object argument.\n */\n prefetchInfiniteQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n queryFn: QueryFunction<TQueryFnData, TQueryKey>,\n options?: OmitKeyof<\n FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'queryKey' | 'queryFn'\n >,\n ): Promise<void>\n /**\n * @deprecated This method should be used with only one object argument.\n */\n prefetchInfiniteQuery<\n TQueryFnData,\n TError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n arg1:\n | TQueryKey\n | FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n arg2?:\n | QueryFunction<TQueryFnData, TQueryKey>\n | OmitKeyof<\n FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'queryKey'\n >,\n arg3?: OmitKeyof<\n FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'queryKey' | 'queryFn'\n >,\n ): Promise<void> {\n return this.fetchInfiniteQuery(arg1 as any, arg2 as any, arg3)\n .then(noop)\n .catch(noop)\n }\n\n resumePausedMutations(): Promise<unknown> {\n return this.mutationCache.resumePausedMutations()\n }\n\n getQueryCache(): QueryCache {\n return this.queryCache\n }\n\n getMutationCache(): MutationCache {\n return this.mutationCache\n }\n\n getLogger(): Logger {\n return this.logger\n }\n\n getDefaultOptions(): DefaultOptions {\n return this.defaultOptions\n }\n\n setDefaultOptions(options: DefaultOptions): void {\n this.defaultOptions = options\n }\n\n setQueryDefaults(\n queryKey: QueryKey,\n options: QueryObserverOptions<unknown, any, any, any>,\n ): void {\n const result = this.queryDefaults.find(\n (x) => hashQueryKey(queryKey) === hashQueryKey(x.queryKey),\n )\n if (result) {\n result.defaultOptions = options\n } else {\n this.queryDefaults.push({ queryKey, defaultOptions: options })\n }\n }\n\n getQueryDefaults(\n queryKey?: QueryKey,\n ): QueryObserverOptions<any, any, any, any, any> | undefined {\n if (!queryKey) {\n return undefined\n }\n\n // Get the first matching defaults\n const firstMatchingDefaults = this.queryDefaults.find((x) =>\n partialMatchKey(queryKey, x.queryKey),\n )\n\n // Additional checks and error in dev mode\n if (process.env.NODE_ENV !== 'production') {\n // Retrieve all matching defaults for the given key\n const matchingDefaults = this.queryDefaults.filter((x) =>\n partialMatchKey(queryKey, x.queryKey),\n )\n // It is ok not having defaults, but it is error prone to have more than 1 default for a given key\n if (matchingDefaults.length > 1) {\n this.logger.error(\n `[QueryClient] Several query defaults match with key '${JSON.stringify(\n queryKey,\n )}'. 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.`,\n )\n }\n }\n\n return firstMatchingDefaults?.defaultOptions\n }\n\n setMutationDefaults(\n mutationKey: MutationKey,\n options: MutationObserverOptions<any, any, any, any>,\n ): void {\n const result = this.mutationDefaults.find(\n (x) => hashQueryKey(mutationKey) === hashQueryKey(x.mutationKey),\n )\n if (result) {\n result.defaultOptions = options\n } else {\n this.mutationDefaults.push({ mutationKey, defaultOptions: options })\n }\n }\n\n getMutationDefaults(\n mutationKey?: MutationKey,\n ): MutationObserverOptions<any, any, any, any> | undefined {\n if (!mutationKey) {\n return undefined\n }\n\n // Get the first matching defaults\n const firstMatchingDefaults = this.mutationDefaults.find((x) =>\n partialMatchKey(mutationKey, x.mutationKey),\n )\n\n // Additional checks and error in dev mode\n if (process.env.NODE_ENV !== 'production') {\n // Retrieve all matching defaults for the given key\n const matchingDefaults = this.mutationDefaults.filter((x) =>\n partialMatchKey(mutationKey, x.mutationKey),\n )\n // It is ok not having defaults, but it is error prone to have more than 1 default for a given key\n if (matchingDefaults.length > 1) {\n this.logger.error(\n `[QueryClient] Several mutation defaults match with key '${JSON.stringify(\n mutationKey,\n )}'. 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.`,\n )\n }\n }\n\n return firstMatchingDefaults?.defaultOptions\n }\n\n defaultQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey extends QueryKey,\n >(\n options?:\n | QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>\n | DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n > {\n if (options?._defaulted) {\n return options as DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >\n }\n\n const defaultedOptions = {\n ...this.defaultOptions.queries,\n ...this.getQueryDefaults(options?.queryKey),\n ...options,\n _defaulted: true,\n }\n\n if (!defaultedOptions.queryHash && defaultedOptions.queryKey) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(\n defaultedOptions.queryKey,\n defaultedOptions,\n )\n }\n\n // dependent default values\n if (typeof defaultedOptions.refetchOnReconnect === 'undefined') {\n defaultedOptions.refetchOnReconnect =\n defaultedOptions.networkMode !== 'always'\n }\n if (typeof defaultedOptions.useErrorBoundary === 'undefined') {\n defaultedOptions.useErrorBoundary = !!defaultedOptions.suspense\n }\n\n return defaultedOptions as DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >\n }\n\n defaultMutationOptions<T extends MutationOptions<any, any, any, any>>(\n options?: T,\n ): T {\n if (options?._defaulted) {\n return options\n }\n return {\n ...this.defaultOptions.mutations,\n ...this.getMutationDefaults(options?.mutationKey),\n ...options,\n _defaulted: true,\n } as T\n }\n\n clear(): void {\n this.queryCache.clear()\n this.mutationCache.clear()\n }\n}\n"],"names":["QueryClient","constructor","config","queryCache","QueryCache","mutationCache","MutationCache","logger","defaultLogger","defaultOptions","queryDefaults","mutationDefaults","mountCount","process","env","NODE_ENV","error","mount","unsubscribeFocus","focusManager","subscribe","isFocused","resumePausedMutations","onFocus","unsubscribeOnline","onlineManager","isOnline","onOnline","unmount","undefined","isFetching","arg1","arg2","filters","parseFilterArgs","fetchStatus","findAll","length","isMutating","fetching","getQueryData","queryKey","find","state","data","ensureQueryData","arg3","parsedOptions","parseQueryArgs","cachedData","Promise","resolve","fetchQuery","getQueriesData","queryKeyOrFilters","getQueryCache","map","setQueryData","updater","options","query","prevData","functionalUpdate","defaultedOptions","defaultQueryOptions","build","setData","manual","setQueriesData","notifyManager","batch","getQueryState","removeQueries","forEach","remove","resetQueries","refetchFilters","type","reset","refetchQueries","cancelQueries","cancelOptions","revert","promises","cancel","all","then","noop","catch","invalidateQueries","invalidate","refetchType","filter","isDisabled","fetch","cancelRefetch","meta","refetchPage","promise","throwOnError","retry","isStaleByTime","staleTime","prefetchQuery","fetchInfiniteQuery","behavior","infiniteQueryBehavior","prefetchInfiniteQuery","getMutationCache","getLogger","getDefaultOptions","setDefaultOptions","setQueryDefaults","result","x","hashQueryKey","push","getQueryDefaults","firstMatchingDefaults","partialMatchKey","matchingDefaults","JSON","stringify","setMutationDefaults","mutationKey","getMutationDefaults","_defaulted","queries","queryHash","hashQueryKeyByOptions","refetchOnReconnect","networkMode","useErrorBoundary","suspense","defaultMutationOptions","mutations","clear"],"mappings":"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"}
|