@tanstack/query-core 4.0.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.
Files changed (85) hide show
  1. package/build/cjs/focusManager.js +101 -0
  2. package/build/cjs/focusManager.js.map +1 -0
  3. package/build/cjs/hydration.js +112 -0
  4. package/build/cjs/hydration.js.map +1 -0
  5. package/build/cjs/index.js +51 -0
  6. package/build/cjs/index.js.map +1 -0
  7. package/build/cjs/infiniteQueryBehavior.js +160 -0
  8. package/build/cjs/infiniteQueryBehavior.js.map +1 -0
  9. package/build/cjs/infiniteQueryObserver.js +92 -0
  10. package/build/cjs/infiniteQueryObserver.js.map +1 -0
  11. package/build/cjs/logger.js +18 -0
  12. package/build/cjs/logger.js.map +1 -0
  13. package/build/cjs/mutation.js +258 -0
  14. package/build/cjs/mutation.js.map +1 -0
  15. package/build/cjs/mutationCache.js +99 -0
  16. package/build/cjs/mutationCache.js.map +1 -0
  17. package/build/cjs/mutationObserver.js +130 -0
  18. package/build/cjs/mutationObserver.js.map +1 -0
  19. package/build/cjs/notifyManager.js +114 -0
  20. package/build/cjs/notifyManager.js.map +1 -0
  21. package/build/cjs/onlineManager.js +100 -0
  22. package/build/cjs/onlineManager.js.map +1 -0
  23. package/build/cjs/queriesObserver.js +170 -0
  24. package/build/cjs/queriesObserver.js.map +1 -0
  25. package/build/cjs/query.js +474 -0
  26. package/build/cjs/query.js.map +1 -0
  27. package/build/cjs/queryCache.js +140 -0
  28. package/build/cjs/queryCache.js.map +1 -0
  29. package/build/cjs/queryClient.js +357 -0
  30. package/build/cjs/queryClient.js.map +1 -0
  31. package/build/cjs/queryObserver.js +521 -0
  32. package/build/cjs/queryObserver.js.map +1 -0
  33. package/build/cjs/removable.js +47 -0
  34. package/build/cjs/removable.js.map +1 -0
  35. package/build/cjs/retryer.js +177 -0
  36. package/build/cjs/retryer.js.map +1 -0
  37. package/build/cjs/subscribable.js +43 -0
  38. package/build/cjs/subscribable.js.map +1 -0
  39. package/build/cjs/utils.js +356 -0
  40. package/build/cjs/utils.js.map +1 -0
  41. package/build/esm/index.js +3077 -0
  42. package/build/esm/index.js.map +1 -0
  43. package/build/stats-html.html +2689 -0
  44. package/build/umd/index.development.js +3106 -0
  45. package/build/umd/index.development.js.map +1 -0
  46. package/build/umd/index.production.js +12 -0
  47. package/build/umd/index.production.js.map +1 -0
  48. package/package.json +25 -0
  49. package/src/focusManager.ts +89 -0
  50. package/src/hydration.ts +164 -0
  51. package/src/index.ts +35 -0
  52. package/src/infiniteQueryBehavior.ts +214 -0
  53. package/src/infiniteQueryObserver.ts +159 -0
  54. package/src/logger.native.ts +11 -0
  55. package/src/logger.ts +9 -0
  56. package/src/mutation.ts +349 -0
  57. package/src/mutationCache.ts +157 -0
  58. package/src/mutationObserver.ts +195 -0
  59. package/src/notifyManager.ts +96 -0
  60. package/src/onlineManager.ts +89 -0
  61. package/src/queriesObserver.ts +211 -0
  62. package/src/query.ts +612 -0
  63. package/src/queryCache.ts +206 -0
  64. package/src/queryClient.ts +716 -0
  65. package/src/queryObserver.ts +748 -0
  66. package/src/removable.ts +37 -0
  67. package/src/retryer.ts +215 -0
  68. package/src/subscribable.ts +33 -0
  69. package/src/tests/focusManager.test.tsx +155 -0
  70. package/src/tests/hydration.test.tsx +429 -0
  71. package/src/tests/infiniteQueryBehavior.test.tsx +124 -0
  72. package/src/tests/infiniteQueryObserver.test.tsx +64 -0
  73. package/src/tests/mutationCache.test.tsx +260 -0
  74. package/src/tests/mutationObserver.test.tsx +75 -0
  75. package/src/tests/mutations.test.tsx +363 -0
  76. package/src/tests/notifyManager.test.tsx +51 -0
  77. package/src/tests/onlineManager.test.tsx +148 -0
  78. package/src/tests/queriesObserver.test.tsx +330 -0
  79. package/src/tests/query.test.tsx +888 -0
  80. package/src/tests/queryCache.test.tsx +236 -0
  81. package/src/tests/queryClient.test.tsx +1435 -0
  82. package/src/tests/queryObserver.test.tsx +802 -0
  83. package/src/tests/utils.test.tsx +360 -0
  84. package/src/types.ts +705 -0
  85. package/src/utils.ts +435 -0
package/src/types.ts ADDED
@@ -0,0 +1,705 @@
1
+ import type { MutationState } from './mutation'
2
+ import type { QueryBehavior, Query } from './query'
3
+ import type { RetryValue, RetryDelayValue } from './retryer'
4
+ import type { QueryFilters, QueryTypeFilter } from './utils'
5
+ import type { QueryCache } from './queryCache'
6
+ import type { MutationCache } from './mutationCache'
7
+ import { Logger } from './logger'
8
+
9
+ export type QueryKey = readonly unknown[]
10
+
11
+ export type QueryFunction<
12
+ T = unknown,
13
+ TQueryKey extends QueryKey = QueryKey,
14
+ > = (context: QueryFunctionContext<TQueryKey>) => T | Promise<T>
15
+
16
+ export interface QueryFunctionContext<
17
+ TQueryKey extends QueryKey = QueryKey,
18
+ TPageParam = any,
19
+ > {
20
+ queryKey: TQueryKey
21
+ signal?: AbortSignal
22
+ pageParam?: TPageParam
23
+ meta: QueryMeta | undefined
24
+ }
25
+
26
+ export type InitialDataFunction<T> = () => T | undefined
27
+
28
+ export type PlaceholderDataFunction<TResult> = () => TResult | undefined
29
+
30
+ export type QueryKeyHashFunction<TQueryKey extends QueryKey> = (
31
+ queryKey: TQueryKey,
32
+ ) => string
33
+
34
+ export type GetPreviousPageParamFunction<TQueryFnData = unknown> = (
35
+ firstPage: TQueryFnData,
36
+ allPages: TQueryFnData[],
37
+ ) => unknown
38
+
39
+ export type GetNextPageParamFunction<TQueryFnData = unknown> = (
40
+ lastPage: TQueryFnData,
41
+ allPages: TQueryFnData[],
42
+ ) => unknown
43
+
44
+ export interface InfiniteData<TData> {
45
+ pages: TData[]
46
+ pageParams: unknown[]
47
+ }
48
+
49
+ export type QueryMeta = Record<string, unknown>
50
+
51
+ export type NetworkMode = 'online' | 'always' | 'offlineFirst'
52
+
53
+ export interface QueryOptions<
54
+ TQueryFnData = unknown,
55
+ TError = unknown,
56
+ TData = TQueryFnData,
57
+ TQueryKey extends QueryKey = QueryKey,
58
+ > {
59
+ /**
60
+ * If `false`, failed queries will not retry by default.
61
+ * If `true`, failed queries will retry infinitely., failureCount: num
62
+ * If set to an integer number, e.g. 3, failed queries will retry until the failed query count meets that number.
63
+ * If set to a function `(failureCount, error) => boolean` failed queries will retry until the function returns false.
64
+ */
65
+ retry?: RetryValue<TError>
66
+ retryDelay?: RetryDelayValue<TError>
67
+ networkMode?: NetworkMode
68
+ cacheTime?: number
69
+ isDataEqual?: (oldData: TData | undefined, newData: TData) => boolean
70
+ queryFn?: QueryFunction<TQueryFnData, TQueryKey>
71
+ queryHash?: string
72
+ queryKey?: TQueryKey
73
+ queryKeyHashFn?: QueryKeyHashFunction<TQueryKey>
74
+ initialData?: TData | InitialDataFunction<TData>
75
+ initialDataUpdatedAt?: number | (() => number | undefined)
76
+ behavior?: QueryBehavior<TQueryFnData, TError, TData>
77
+ /**
78
+ * Set this to `false` to disable structural sharing between query results.
79
+ * Defaults to `true`.
80
+ */
81
+ structuralSharing?: boolean
82
+ /**
83
+ * This function can be set to automatically get the previous cursor for infinite queries.
84
+ * The result will also be used to determine the value of `hasPreviousPage`.
85
+ */
86
+ getPreviousPageParam?: GetPreviousPageParamFunction<TQueryFnData>
87
+ /**
88
+ * This function can be set to automatically get the next cursor for infinite queries.
89
+ * The result will also be used to determine the value of `hasNextPage`.
90
+ */
91
+ getNextPageParam?: GetNextPageParamFunction<TQueryFnData>
92
+ _defaulted?: boolean
93
+ /**
94
+ * Additional payload to be stored on each query.
95
+ * Use this property to pass information that can be used in other places.
96
+ */
97
+ meta?: QueryMeta
98
+ }
99
+
100
+ export interface QueryObserverOptions<
101
+ TQueryFnData = unknown,
102
+ TError = unknown,
103
+ TData = TQueryFnData,
104
+ TQueryData = TQueryFnData,
105
+ TQueryKey extends QueryKey = QueryKey,
106
+ > extends QueryOptions<TQueryFnData, TError, TQueryData, TQueryKey> {
107
+ /**
108
+ * Set this to `false` to disable automatic refetching when the query mounts or changes query keys.
109
+ * To refetch the query, use the `refetch` method returned from the `useQuery` instance.
110
+ * Defaults to `true`.
111
+ */
112
+ enabled?: boolean
113
+ /**
114
+ * The time in milliseconds after data is considered stale.
115
+ * If set to `Infinity`, the data will never be considered stale.
116
+ */
117
+ staleTime?: number
118
+ /**
119
+ * If set to a number, the query will continuously refetch at this frequency in milliseconds.
120
+ * If set to a function, the function will be executed with the latest data and query to compute a frequency
121
+ * Defaults to `false`.
122
+ */
123
+ refetchInterval?:
124
+ | number
125
+ | false
126
+ | ((
127
+ data: TData | undefined,
128
+ query: Query<TQueryFnData, TError, TQueryData, TQueryKey>,
129
+ ) => number | false)
130
+ /**
131
+ * If set to `true`, the query will continue to refetch while their tab/window is in the background.
132
+ * Defaults to `false`.
133
+ */
134
+ refetchIntervalInBackground?: boolean
135
+ /**
136
+ * If set to `true`, the query will refetch on window focus if the data is stale.
137
+ * If set to `false`, the query will not refetch on window focus.
138
+ * If set to `'always'`, the query will always refetch on window focus.
139
+ * If set to a function, the function will be executed with the latest data and query to compute the value.
140
+ * Defaults to `true`.
141
+ */
142
+ refetchOnWindowFocus?:
143
+ | boolean
144
+ | 'always'
145
+ | ((
146
+ query: Query<TQueryFnData, TError, TQueryData, TQueryKey>,
147
+ ) => boolean | 'always')
148
+ /**
149
+ * If set to `true`, the query will refetch on reconnect if the data is stale.
150
+ * If set to `false`, the query will not refetch on reconnect.
151
+ * If set to `'always'`, the query will always refetch on reconnect.
152
+ * If set to a function, the function will be executed with the latest data and query to compute the value.
153
+ * Defaults to the value of `networkOnline` (`true`)
154
+ */
155
+ refetchOnReconnect?:
156
+ | boolean
157
+ | 'always'
158
+ | ((
159
+ query: Query<TQueryFnData, TError, TQueryData, TQueryKey>,
160
+ ) => boolean | 'always')
161
+ /**
162
+ * If set to `true`, the query will refetch on mount if the data is stale.
163
+ * If set to `false`, will disable additional instances of a query to trigger background refetches.
164
+ * If set to `'always'`, the query will always refetch on mount.
165
+ * If set to a function, the function will be executed with the latest data and query to compute the value
166
+ * Defaults to `true`.
167
+ */
168
+ refetchOnMount?:
169
+ | boolean
170
+ | 'always'
171
+ | ((
172
+ query: Query<TQueryFnData, TError, TQueryData, TQueryKey>,
173
+ ) => boolean | 'always')
174
+ /**
175
+ * If set to `false`, the query will not be retried on mount if it contains an error.
176
+ * Defaults to `true`.
177
+ */
178
+ retryOnMount?: boolean
179
+ /**
180
+ * If set, the component will only re-render if any of the listed properties change.
181
+ * When set to `['data', 'error']`, the component will only re-render when the `data` or `error` properties change.
182
+ * When set to `'all'`, the component will re-render whenever a query is updated.
183
+ * By default, access to properties will be tracked, and the component will only re-render when one of the tracked properties change.
184
+ */
185
+ notifyOnChangeProps?: Array<keyof InfiniteQueryObserverResult> | 'all'
186
+ /**
187
+ * This callback will fire any time the query successfully fetches new data or the cache is updated via `setQueryData`.
188
+ */
189
+ onSuccess?: (data: TData) => void
190
+ /**
191
+ * This callback will fire if the query encounters an error and will be passed the error.
192
+ */
193
+ onError?: (err: TError) => void
194
+ /**
195
+ * This callback will fire any time the query is either successfully fetched or errors and be passed either the data or error.
196
+ */
197
+ onSettled?: (data: TData | undefined, error: TError | null) => void
198
+ /**
199
+ * Whether errors should be thrown instead of setting the `error` property.
200
+ * If set to `true` or `suspense` is `true`, all errors will be thrown to the error boundary.
201
+ * If set to `false` and `suspense` is `false`, errors are returned as state.
202
+ * If set to a function, it will be passed the error and the query, and it should return a boolean indicating whether to show the error in an error boundary (`true`) or return the error as state (`false`).
203
+ * Defaults to `false`.
204
+ */
205
+ useErrorBoundary?:
206
+ | boolean
207
+ | ((
208
+ error: TError,
209
+ query: Query<TQueryFnData, TError, TQueryData, TQueryKey>,
210
+ ) => boolean)
211
+ /**
212
+ * This option can be used to transform or select a part of the data returned by the query function.
213
+ */
214
+ select?: (data: TQueryData) => TData
215
+ /**
216
+ * If set to `true`, the query will suspend when `status === 'loading'`
217
+ * and throw errors when `status === 'error'`.
218
+ * Defaults to `false`.
219
+ */
220
+ suspense?: boolean
221
+ /**
222
+ * Set this to `true` to keep the previous `data` when fetching based on a new query key.
223
+ * Defaults to `false`.
224
+ */
225
+ keepPreviousData?: boolean
226
+ /**
227
+ * If set, this value will be used as the placeholder data for this particular query observer while the query is still in the `loading` data and no initialData has been provided.
228
+ */
229
+ placeholderData?: TQueryData | PlaceholderDataFunction<TQueryData>
230
+
231
+ _optimisticResults?: 'optimistic' | 'isRestoring'
232
+ }
233
+
234
+ type WithRequired<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>
235
+ export type DefaultedQueryObserverOptions<
236
+ TQueryFnData = unknown,
237
+ TError = unknown,
238
+ TData = TQueryFnData,
239
+ TQueryData = TQueryFnData,
240
+ TQueryKey extends QueryKey = QueryKey,
241
+ > = WithRequired<
242
+ QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>,
243
+ 'useErrorBoundary' | 'refetchOnReconnect'
244
+ >
245
+
246
+ export interface InfiniteQueryObserverOptions<
247
+ TQueryFnData = unknown,
248
+ TError = unknown,
249
+ TData = TQueryFnData,
250
+ TQueryData = TQueryFnData,
251
+ TQueryKey extends QueryKey = QueryKey,
252
+ > extends QueryObserverOptions<
253
+ TQueryFnData,
254
+ TError,
255
+ InfiniteData<TData>,
256
+ InfiniteData<TQueryData>,
257
+ TQueryKey
258
+ > {}
259
+
260
+ export type DefaultedInfiniteQueryObserverOptions<
261
+ TQueryFnData = unknown,
262
+ TError = unknown,
263
+ TData = TQueryFnData,
264
+ TQueryData = TQueryFnData,
265
+ TQueryKey extends QueryKey = QueryKey,
266
+ > = WithRequired<
267
+ InfiniteQueryObserverOptions<
268
+ TQueryFnData,
269
+ TError,
270
+ TData,
271
+ TQueryData,
272
+ TQueryKey
273
+ >,
274
+ 'useErrorBoundary' | 'refetchOnReconnect'
275
+ >
276
+
277
+ export interface FetchQueryOptions<
278
+ TQueryFnData = unknown,
279
+ TError = unknown,
280
+ TData = TQueryFnData,
281
+ TQueryKey extends QueryKey = QueryKey,
282
+ > extends QueryOptions<TQueryFnData, TError, TData, TQueryKey> {
283
+ /**
284
+ * The time in milliseconds after data is considered stale.
285
+ * If the data is fresh it will be returned from the cache.
286
+ */
287
+ staleTime?: number
288
+ }
289
+
290
+ export interface FetchInfiniteQueryOptions<
291
+ TQueryFnData = unknown,
292
+ TError = unknown,
293
+ TData = TQueryFnData,
294
+ TQueryKey extends QueryKey = QueryKey,
295
+ > extends FetchQueryOptions<
296
+ TQueryFnData,
297
+ TError,
298
+ InfiniteData<TData>,
299
+ TQueryKey
300
+ > {}
301
+
302
+ export interface ResultOptions {
303
+ throwOnError?: boolean
304
+ }
305
+
306
+ export interface RefetchPageFilters<TPageData = unknown> {
307
+ refetchPage?: (
308
+ lastPage: TPageData,
309
+ index: number,
310
+ allPages: TPageData[],
311
+ ) => boolean
312
+ }
313
+
314
+ export interface RefetchOptions extends ResultOptions {
315
+ cancelRefetch?: boolean
316
+ }
317
+
318
+ export interface InvalidateQueryFilters<TPageData = unknown>
319
+ extends QueryFilters,
320
+ RefetchPageFilters<TPageData> {
321
+ refetchType?: QueryTypeFilter | 'none'
322
+ }
323
+
324
+ export interface RefetchQueryFilters<TPageData = unknown>
325
+ extends QueryFilters,
326
+ RefetchPageFilters<TPageData> {}
327
+
328
+ export interface ResetQueryFilters<TPageData = unknown>
329
+ extends QueryFilters,
330
+ RefetchPageFilters<TPageData> {}
331
+
332
+ export interface InvalidateOptions extends RefetchOptions {}
333
+ export interface ResetOptions extends RefetchOptions {}
334
+
335
+ export interface FetchNextPageOptions extends ResultOptions {
336
+ cancelRefetch?: boolean
337
+ pageParam?: unknown
338
+ }
339
+
340
+ export interface FetchPreviousPageOptions extends ResultOptions {
341
+ cancelRefetch?: boolean
342
+ pageParam?: unknown
343
+ }
344
+
345
+ export type QueryStatus = 'loading' | 'error' | 'success'
346
+ export type FetchStatus = 'fetching' | 'paused' | 'idle'
347
+
348
+ export interface QueryObserverBaseResult<TData = unknown, TError = unknown> {
349
+ data: TData | undefined
350
+ dataUpdatedAt: number
351
+ error: TError | null
352
+ errorUpdatedAt: number
353
+ failureCount: number
354
+ errorUpdateCount: number
355
+ isError: boolean
356
+ isFetched: boolean
357
+ isFetchedAfterMount: boolean
358
+ isFetching: boolean
359
+ isLoading: boolean
360
+ isLoadingError: boolean
361
+ isPaused: boolean
362
+ isPlaceholderData: boolean
363
+ isPreviousData: boolean
364
+ isRefetchError: boolean
365
+ isRefetching: boolean
366
+ isStale: boolean
367
+ isSuccess: boolean
368
+ refetch: <TPageData>(
369
+ options?: RefetchOptions & RefetchQueryFilters<TPageData>,
370
+ ) => Promise<QueryObserverResult<TData, TError>>
371
+ remove: () => void
372
+ status: QueryStatus
373
+ fetchStatus: FetchStatus
374
+ }
375
+
376
+ export interface QueryObserverLoadingResult<TData = unknown, TError = unknown>
377
+ extends QueryObserverBaseResult<TData, TError> {
378
+ data: undefined
379
+ error: null
380
+ isError: false
381
+ isLoading: true
382
+ isLoadingError: false
383
+ isRefetchError: false
384
+ isSuccess: false
385
+ status: 'loading'
386
+ }
387
+
388
+ export interface QueryObserverLoadingErrorResult<
389
+ TData = unknown,
390
+ TError = unknown,
391
+ > extends QueryObserverBaseResult<TData, TError> {
392
+ data: undefined
393
+ error: TError
394
+ isError: true
395
+ isLoading: false
396
+ isLoadingError: true
397
+ isRefetchError: false
398
+ isSuccess: false
399
+ status: 'error'
400
+ }
401
+
402
+ export interface QueryObserverRefetchErrorResult<
403
+ TData = unknown,
404
+ TError = unknown,
405
+ > extends QueryObserverBaseResult<TData, TError> {
406
+ data: TData
407
+ error: TError
408
+ isError: true
409
+ isLoading: false
410
+ isLoadingError: false
411
+ isRefetchError: true
412
+ isSuccess: false
413
+ status: 'error'
414
+ }
415
+
416
+ export interface QueryObserverSuccessResult<TData = unknown, TError = unknown>
417
+ extends QueryObserverBaseResult<TData, TError> {
418
+ data: TData
419
+ error: null
420
+ isError: false
421
+ isLoading: false
422
+ isLoadingError: false
423
+ isRefetchError: false
424
+ isSuccess: true
425
+ status: 'success'
426
+ }
427
+
428
+ export type QueryObserverResult<TData = unknown, TError = unknown> =
429
+ | QueryObserverLoadingErrorResult<TData, TError>
430
+ | QueryObserverLoadingResult<TData, TError>
431
+ | QueryObserverRefetchErrorResult<TData, TError>
432
+ | QueryObserverSuccessResult<TData, TError>
433
+
434
+ export interface InfiniteQueryObserverBaseResult<
435
+ TData = unknown,
436
+ TError = unknown,
437
+ > extends QueryObserverBaseResult<InfiniteData<TData>, TError> {
438
+ fetchNextPage: (
439
+ options?: FetchNextPageOptions,
440
+ ) => Promise<InfiniteQueryObserverResult<TData, TError>>
441
+ fetchPreviousPage: (
442
+ options?: FetchPreviousPageOptions,
443
+ ) => Promise<InfiniteQueryObserverResult<TData, TError>>
444
+ hasNextPage?: boolean
445
+ hasPreviousPage?: boolean
446
+ isFetchingNextPage: boolean
447
+ isFetchingPreviousPage: boolean
448
+ }
449
+
450
+ export interface InfiniteQueryObserverLoadingResult<
451
+ TData = unknown,
452
+ TError = unknown,
453
+ > extends InfiniteQueryObserverBaseResult<TData, TError> {
454
+ data: undefined
455
+ error: null
456
+ isError: false
457
+ isLoading: true
458
+ isLoadingError: false
459
+ isRefetchError: false
460
+ isSuccess: false
461
+ status: 'loading'
462
+ }
463
+
464
+ export interface InfiniteQueryObserverLoadingErrorResult<
465
+ TData = unknown,
466
+ TError = unknown,
467
+ > extends InfiniteQueryObserverBaseResult<TData, TError> {
468
+ data: undefined
469
+ error: TError
470
+ isError: true
471
+ isLoading: false
472
+ isLoadingError: true
473
+ isRefetchError: false
474
+ isSuccess: false
475
+ status: 'error'
476
+ }
477
+
478
+ export interface InfiniteQueryObserverRefetchErrorResult<
479
+ TData = unknown,
480
+ TError = unknown,
481
+ > extends InfiniteQueryObserverBaseResult<TData, TError> {
482
+ data: InfiniteData<TData>
483
+ error: TError
484
+ isError: true
485
+ isLoading: false
486
+ isLoadingError: false
487
+ isRefetchError: true
488
+ isSuccess: false
489
+ status: 'error'
490
+ }
491
+
492
+ export interface InfiniteQueryObserverSuccessResult<
493
+ TData = unknown,
494
+ TError = unknown,
495
+ > extends InfiniteQueryObserverBaseResult<TData, TError> {
496
+ data: InfiniteData<TData>
497
+ error: null
498
+ isError: false
499
+ isLoading: false
500
+ isLoadingError: false
501
+ isRefetchError: false
502
+ isSuccess: true
503
+ status: 'success'
504
+ }
505
+
506
+ export type InfiniteQueryObserverResult<TData = unknown, TError = unknown> =
507
+ | InfiniteQueryObserverLoadingErrorResult<TData, TError>
508
+ | InfiniteQueryObserverLoadingResult<TData, TError>
509
+ | InfiniteQueryObserverRefetchErrorResult<TData, TError>
510
+ | InfiniteQueryObserverSuccessResult<TData, TError>
511
+
512
+ export type MutationKey = readonly unknown[]
513
+
514
+ export type MutationStatus = 'idle' | 'loading' | 'success' | 'error'
515
+
516
+ export type MutationMeta = Record<string, unknown>
517
+
518
+ export type MutationFunction<TData = unknown, TVariables = unknown> = (
519
+ variables: TVariables,
520
+ ) => Promise<TData>
521
+
522
+ export interface MutationOptions<
523
+ TData = unknown,
524
+ TError = unknown,
525
+ TVariables = void,
526
+ TContext = unknown,
527
+ > {
528
+ mutationFn?: MutationFunction<TData, TVariables>
529
+ mutationKey?: MutationKey
530
+ variables?: TVariables
531
+ onMutate?: (
532
+ variables: TVariables,
533
+ ) => Promise<TContext | undefined> | TContext | undefined
534
+ onSuccess?: (
535
+ data: TData,
536
+ variables: TVariables,
537
+ context: TContext | undefined,
538
+ ) => Promise<unknown> | void
539
+ onError?: (
540
+ error: TError,
541
+ variables: TVariables,
542
+ context: TContext | undefined,
543
+ ) => Promise<unknown> | void
544
+ onSettled?: (
545
+ data: TData | undefined,
546
+ error: TError | null,
547
+ variables: TVariables,
548
+ context: TContext | undefined,
549
+ ) => Promise<unknown> | void
550
+ retry?: RetryValue<TError>
551
+ retryDelay?: RetryDelayValue<TError>
552
+ networkMode?: NetworkMode
553
+ cacheTime?: number
554
+ _defaulted?: boolean
555
+ meta?: MutationMeta
556
+ }
557
+
558
+ export interface MutationObserverOptions<
559
+ TData = unknown,
560
+ TError = unknown,
561
+ TVariables = void,
562
+ TContext = unknown,
563
+ > extends MutationOptions<TData, TError, TVariables, TContext> {
564
+ useErrorBoundary?: boolean | ((error: TError) => boolean)
565
+ }
566
+
567
+ export interface MutateOptions<
568
+ TData = unknown,
569
+ TError = unknown,
570
+ TVariables = void,
571
+ TContext = unknown,
572
+ > {
573
+ onSuccess?: (
574
+ data: TData,
575
+ variables: TVariables,
576
+ context: TContext,
577
+ ) => Promise<unknown> | void
578
+ onError?: (
579
+ error: TError,
580
+ variables: TVariables,
581
+ context: TContext | undefined,
582
+ ) => Promise<unknown> | void
583
+ onSettled?: (
584
+ data: TData | undefined,
585
+ error: TError | null,
586
+ variables: TVariables,
587
+ context: TContext | undefined,
588
+ ) => Promise<unknown> | void
589
+ }
590
+
591
+ export type MutateFunction<
592
+ TData = unknown,
593
+ TError = unknown,
594
+ TVariables = void,
595
+ TContext = unknown,
596
+ > = (
597
+ variables: TVariables,
598
+ options?: MutateOptions<TData, TError, TVariables, TContext>,
599
+ ) => Promise<TData>
600
+
601
+ export interface MutationObserverBaseResult<
602
+ TData = unknown,
603
+ TError = unknown,
604
+ TVariables = void,
605
+ TContext = unknown,
606
+ > extends MutationState<TData, TError, TVariables, TContext> {
607
+ isError: boolean
608
+ isIdle: boolean
609
+ isLoading: boolean
610
+ isSuccess: boolean
611
+ mutate: MutateFunction<TData, TError, TVariables, TContext>
612
+ reset: () => void
613
+ }
614
+
615
+ export interface MutationObserverIdleResult<
616
+ TData = unknown,
617
+ TError = unknown,
618
+ TVariables = void,
619
+ TContext = unknown,
620
+ > extends MutationObserverBaseResult<TData, TError, TVariables, TContext> {
621
+ data: undefined
622
+ error: null
623
+ isError: false
624
+ isIdle: true
625
+ isLoading: false
626
+ isSuccess: false
627
+ status: 'idle'
628
+ }
629
+
630
+ export interface MutationObserverLoadingResult<
631
+ TData = unknown,
632
+ TError = unknown,
633
+ TVariables = void,
634
+ TContext = unknown,
635
+ > extends MutationObserverBaseResult<TData, TError, TVariables, TContext> {
636
+ data: undefined
637
+ error: null
638
+ isError: false
639
+ isIdle: false
640
+ isLoading: true
641
+ isSuccess: false
642
+ status: 'loading'
643
+ }
644
+
645
+ export interface MutationObserverErrorResult<
646
+ TData = unknown,
647
+ TError = unknown,
648
+ TVariables = void,
649
+ TContext = unknown,
650
+ > extends MutationObserverBaseResult<TData, TError, TVariables, TContext> {
651
+ data: undefined
652
+ error: TError
653
+ isError: true
654
+ isIdle: false
655
+ isLoading: false
656
+ isSuccess: false
657
+ status: 'error'
658
+ }
659
+
660
+ export interface MutationObserverSuccessResult<
661
+ TData = unknown,
662
+ TError = unknown,
663
+ TVariables = void,
664
+ TContext = unknown,
665
+ > extends MutationObserverBaseResult<TData, TError, TVariables, TContext> {
666
+ data: TData
667
+ error: null
668
+ isError: false
669
+ isIdle: false
670
+ isLoading: false
671
+ isSuccess: true
672
+ status: 'success'
673
+ }
674
+
675
+ export type MutationObserverResult<
676
+ TData = unknown,
677
+ TError = unknown,
678
+ TVariables = void,
679
+ TContext = unknown,
680
+ > =
681
+ | MutationObserverIdleResult<TData, TError, TVariables, TContext>
682
+ | MutationObserverLoadingResult<TData, TError, TVariables, TContext>
683
+ | MutationObserverErrorResult<TData, TError, TVariables, TContext>
684
+ | MutationObserverSuccessResult<TData, TError, TVariables, TContext>
685
+
686
+ export interface QueryClientConfig {
687
+ queryCache?: QueryCache
688
+ mutationCache?: MutationCache
689
+ logger?: Logger
690
+ defaultOptions?: DefaultOptions
691
+ }
692
+
693
+ export interface DefaultOptions<TError = unknown> {
694
+ queries?: QueryObserverOptions<unknown, TError>
695
+ mutations?: MutationObserverOptions<unknown, TError, unknown, unknown>
696
+ }
697
+
698
+ export interface CancelOptions {
699
+ revert?: boolean
700
+ silent?: boolean
701
+ }
702
+
703
+ export interface SetDataOptions {
704
+ updatedAt?: number
705
+ }