@tanstack/query-core 5.0.0-beta.6 → 5.0.0-rc.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 (171) hide show
  1. package/build/legacy/hydration.cjs.map +1 -1
  2. package/build/legacy/hydration.d.cts +3 -3
  3. package/build/legacy/hydration.d.ts +3 -3
  4. package/build/legacy/hydration.js.map +1 -1
  5. package/build/legacy/index.cjs +3 -0
  6. package/build/legacy/index.cjs.map +1 -1
  7. package/build/legacy/index.d.cts +1 -1
  8. package/build/legacy/index.d.ts +1 -1
  9. package/build/legacy/index.js +2 -0
  10. package/build/legacy/index.js.map +1 -1
  11. package/build/legacy/infiniteQueryBehavior.cjs +23 -6
  12. package/build/legacy/infiniteQueryBehavior.cjs.map +1 -1
  13. package/build/legacy/infiniteQueryBehavior.d.cts +2 -2
  14. package/build/legacy/infiniteQueryBehavior.d.ts +2 -2
  15. package/build/legacy/infiniteQueryBehavior.js +23 -6
  16. package/build/legacy/infiniteQueryBehavior.js.map +1 -1
  17. package/build/legacy/infiniteQueryObserver.cjs.map +1 -1
  18. package/build/legacy/infiniteQueryObserver.d.cts +3 -3
  19. package/build/legacy/infiniteQueryObserver.d.ts +3 -3
  20. package/build/legacy/infiniteQueryObserver.js.map +1 -1
  21. package/build/legacy/mutation.cjs.map +1 -1
  22. package/build/legacy/mutation.d.cts +1 -1
  23. package/build/legacy/mutation.d.ts +1 -1
  24. package/build/legacy/mutation.js.map +1 -1
  25. package/build/legacy/mutationCache.cjs.map +1 -1
  26. package/build/legacy/mutationCache.d.cts +1 -1
  27. package/build/legacy/mutationCache.d.ts +1 -1
  28. package/build/legacy/mutationCache.js.map +1 -1
  29. package/build/legacy/mutationObserver.d.cts +1 -1
  30. package/build/legacy/mutationObserver.d.ts +1 -1
  31. package/build/legacy/notifyManager.cjs.map +1 -1
  32. package/build/legacy/notifyManager.d.cts +1 -1
  33. package/build/legacy/notifyManager.d.ts +1 -1
  34. package/build/legacy/notifyManager.js.map +1 -1
  35. package/build/legacy/queriesObserver.cjs +6 -8
  36. package/build/legacy/queriesObserver.cjs.map +1 -1
  37. package/build/legacy/queriesObserver.d.cts +11 -11
  38. package/build/legacy/queriesObserver.d.ts +11 -11
  39. package/build/legacy/queriesObserver.js +6 -8
  40. package/build/legacy/queriesObserver.js.map +1 -1
  41. package/build/legacy/query.cjs +10 -2
  42. package/build/legacy/query.cjs.map +1 -1
  43. package/build/legacy/query.d.cts +1 -1
  44. package/build/legacy/query.d.ts +1 -1
  45. package/build/legacy/query.js +10 -2
  46. package/build/legacy/query.js.map +1 -1
  47. package/build/legacy/queryCache.cjs.map +1 -1
  48. package/build/legacy/queryCache.d.cts +1 -1
  49. package/build/legacy/queryCache.d.ts +1 -1
  50. package/build/legacy/queryCache.js.map +1 -1
  51. package/build/legacy/{queryClient-9264ae39.d.ts → queryClient-230e991e.d.ts} +28 -25
  52. package/build/legacy/{queryClient-7060338a.d.ts → queryClient-64e47985.d.ts} +28 -25
  53. package/build/legacy/queryClient.cjs +4 -3
  54. package/build/legacy/queryClient.cjs.map +1 -1
  55. package/build/legacy/queryClient.d.cts +1 -1
  56. package/build/legacy/queryClient.d.ts +1 -1
  57. package/build/legacy/queryClient.js +4 -3
  58. package/build/legacy/queryClient.js.map +1 -1
  59. package/build/legacy/queryObserver.cjs +1 -1
  60. package/build/legacy/queryObserver.cjs.map +1 -1
  61. package/build/legacy/queryObserver.d.cts +1 -1
  62. package/build/legacy/queryObserver.d.ts +1 -1
  63. package/build/legacy/queryObserver.js +1 -1
  64. package/build/legacy/queryObserver.js.map +1 -1
  65. package/build/legacy/retryer.d.cts +1 -1
  66. package/build/legacy/retryer.d.ts +1 -1
  67. package/build/legacy/types.cjs.map +1 -1
  68. package/build/legacy/types.d.cts +1 -1
  69. package/build/legacy/types.d.ts +1 -1
  70. package/build/legacy/utils.cjs.map +1 -1
  71. package/build/legacy/utils.d.cts +1 -1
  72. package/build/legacy/utils.d.ts +1 -1
  73. package/build/legacy/utils.js.map +1 -1
  74. package/build/modern/hydration.cjs.map +1 -1
  75. package/build/modern/hydration.d.cts +3 -3
  76. package/build/modern/hydration.d.ts +3 -3
  77. package/build/modern/hydration.js.map +1 -1
  78. package/build/modern/index.cjs +3 -0
  79. package/build/modern/index.cjs.map +1 -1
  80. package/build/modern/index.d.cts +1 -1
  81. package/build/modern/index.d.ts +1 -1
  82. package/build/modern/index.js +2 -0
  83. package/build/modern/index.js.map +1 -1
  84. package/build/modern/infiniteQueryBehavior.cjs +21 -6
  85. package/build/modern/infiniteQueryBehavior.cjs.map +1 -1
  86. package/build/modern/infiniteQueryBehavior.d.cts +2 -2
  87. package/build/modern/infiniteQueryBehavior.d.ts +2 -2
  88. package/build/modern/infiniteQueryBehavior.js +21 -6
  89. package/build/modern/infiniteQueryBehavior.js.map +1 -1
  90. package/build/modern/infiniteQueryObserver.cjs.map +1 -1
  91. package/build/modern/infiniteQueryObserver.d.cts +3 -3
  92. package/build/modern/infiniteQueryObserver.d.ts +3 -3
  93. package/build/modern/infiniteQueryObserver.js.map +1 -1
  94. package/build/modern/mutation.cjs.map +1 -1
  95. package/build/modern/mutation.d.cts +1 -1
  96. package/build/modern/mutation.d.ts +1 -1
  97. package/build/modern/mutation.js.map +1 -1
  98. package/build/modern/mutationCache.cjs.map +1 -1
  99. package/build/modern/mutationCache.d.cts +1 -1
  100. package/build/modern/mutationCache.d.ts +1 -1
  101. package/build/modern/mutationCache.js.map +1 -1
  102. package/build/modern/mutationObserver.d.cts +1 -1
  103. package/build/modern/mutationObserver.d.ts +1 -1
  104. package/build/modern/notifyManager.cjs.map +1 -1
  105. package/build/modern/notifyManager.d.cts +1 -1
  106. package/build/modern/notifyManager.d.ts +1 -1
  107. package/build/modern/notifyManager.js.map +1 -1
  108. package/build/modern/queriesObserver.cjs +6 -8
  109. package/build/modern/queriesObserver.cjs.map +1 -1
  110. package/build/modern/queriesObserver.d.cts +11 -11
  111. package/build/modern/queriesObserver.d.ts +11 -11
  112. package/build/modern/queriesObserver.js +6 -8
  113. package/build/modern/queriesObserver.js.map +1 -1
  114. package/build/modern/query.cjs +10 -2
  115. package/build/modern/query.cjs.map +1 -1
  116. package/build/modern/query.d.cts +1 -1
  117. package/build/modern/query.d.ts +1 -1
  118. package/build/modern/query.js +10 -2
  119. package/build/modern/query.js.map +1 -1
  120. package/build/modern/queryCache.cjs.map +1 -1
  121. package/build/modern/queryCache.d.cts +1 -1
  122. package/build/modern/queryCache.d.ts +1 -1
  123. package/build/modern/queryCache.js.map +1 -1
  124. package/build/modern/{queryClient-9264ae39.d.ts → queryClient-230e991e.d.ts} +28 -25
  125. package/build/modern/{queryClient-7060338a.d.ts → queryClient-64e47985.d.ts} +28 -25
  126. package/build/modern/queryClient.cjs +4 -3
  127. package/build/modern/queryClient.cjs.map +1 -1
  128. package/build/modern/queryClient.d.cts +1 -1
  129. package/build/modern/queryClient.d.ts +1 -1
  130. package/build/modern/queryClient.js +4 -3
  131. package/build/modern/queryClient.js.map +1 -1
  132. package/build/modern/queryObserver.cjs +1 -1
  133. package/build/modern/queryObserver.cjs.map +1 -1
  134. package/build/modern/queryObserver.d.cts +1 -1
  135. package/build/modern/queryObserver.d.ts +1 -1
  136. package/build/modern/queryObserver.js +1 -1
  137. package/build/modern/queryObserver.js.map +1 -1
  138. package/build/modern/retryer.d.cts +1 -1
  139. package/build/modern/retryer.d.ts +1 -1
  140. package/build/modern/types.cjs.map +1 -1
  141. package/build/modern/types.d.cts +1 -1
  142. package/build/modern/types.d.ts +1 -1
  143. package/build/modern/utils.cjs.map +1 -1
  144. package/build/modern/utils.d.cts +1 -1
  145. package/build/modern/utils.d.ts +1 -1
  146. package/build/modern/utils.js.map +1 -1
  147. package/package.json +6 -2
  148. package/src/hydration.ts +2 -2
  149. package/src/index.ts +2 -1
  150. package/src/infiniteQueryBehavior.ts +23 -8
  151. package/src/infiniteQueryObserver.ts +7 -2
  152. package/src/mutation.ts +1 -1
  153. package/src/mutationCache.ts +3 -3
  154. package/src/notifyManager.ts +3 -3
  155. package/src/queriesObserver.ts +24 -25
  156. package/src/query.ts +12 -2
  157. package/src/queryCache.ts +2 -2
  158. package/src/queryClient.ts +17 -7
  159. package/src/queryObserver.ts +1 -1
  160. package/src/tests/hydration.test.tsx +2 -2
  161. package/src/tests/infiniteQueryBehavior.test.tsx +4 -4
  162. package/src/tests/infiniteQueryObserver.test.tsx +36 -7
  163. package/src/tests/mutations.test.tsx +2 -2
  164. package/src/tests/queriesObserver.test.tsx +4 -4
  165. package/src/tests/query.test.tsx +55 -3
  166. package/src/tests/queryClient.test.tsx +77 -38
  167. package/src/tests/queryObserver.test.tsx +22 -22
  168. package/src/tests/utils.test.tsx +2 -2
  169. package/src/tests/utils.ts +0 -5
  170. package/src/types.ts +41 -20
  171. package/src/utils.ts +2 -2
package/src/types.ts CHANGED
@@ -7,6 +7,8 @@ import type { QueryFilters, QueryTypeFilter } from './utils'
7
7
  import type { QueryCache } from './queryCache'
8
8
  import type { MutationCache } from './mutationCache'
9
9
 
10
+ type NoInfer<T> = [T][T extends any ? 0 : never]
11
+
10
12
  export interface Register {
11
13
  // defaultError: Error
12
14
  // queryMeta: Record<string, unknown>
@@ -19,7 +21,7 @@ export type DefaultError = Register extends {
19
21
  ? TError
20
22
  : Error
21
23
 
22
- export type QueryKey = readonly unknown[]
24
+ export type QueryKey = ReadonlyArray<unknown>
23
25
 
24
26
  export type QueryFunction<
25
27
  T = unknown,
@@ -27,6 +29,22 @@ export type QueryFunction<
27
29
  TPageParam = never,
28
30
  > = (context: QueryFunctionContext<TQueryKey, TPageParam>) => T | Promise<T>
29
31
 
32
+ export type QueryPersister<
33
+ T = unknown,
34
+ TQueryKey extends QueryKey = QueryKey,
35
+ TPageParam = never,
36
+ > = [TPageParam] extends [never]
37
+ ? (
38
+ queryFn: QueryFunction<T, TQueryKey, never>,
39
+ context: QueryFunctionContext<TQueryKey>,
40
+ query: Query,
41
+ ) => T | Promise<T>
42
+ : (
43
+ queryFn: QueryFunction<T, TQueryKey, TPageParam>,
44
+ context: QueryFunctionContext<TQueryKey>,
45
+ query: Query,
46
+ ) => T | Promise<T>
47
+
30
48
  export type QueryFunctionContext<
31
49
  TQueryKey extends QueryKey = QueryKey,
32
50
  TPageParam = never,
@@ -68,21 +86,21 @@ export type QueryKeyHashFunction<TQueryKey extends QueryKey> = (
68
86
 
69
87
  export type GetPreviousPageParamFunction<TPageParam, TQueryFnData = unknown> = (
70
88
  firstPage: TQueryFnData,
71
- allPages: TQueryFnData[],
89
+ allPages: Array<TQueryFnData>,
72
90
  firstPageParam: TPageParam,
73
- allPageParams: TPageParam[],
74
- ) => TPageParam | undefined
91
+ allPageParams: Array<TPageParam>,
92
+ ) => TPageParam | undefined | null
75
93
 
76
94
  export type GetNextPageParamFunction<TPageParam, TQueryFnData = unknown> = (
77
95
  lastPage: TQueryFnData,
78
- allPages: TQueryFnData[],
96
+ allPages: Array<TQueryFnData>,
79
97
  lastPageParam: TPageParam,
80
- allPageParams: TPageParam[],
81
- ) => TPageParam | undefined
98
+ allPageParams: Array<TPageParam>,
99
+ ) => TPageParam | undefined | null
82
100
 
83
- export interface InfiniteData<TData> {
84
- pages: TData[]
85
- pageParams: unknown[]
101
+ export interface InfiniteData<TData, TPageParam = unknown> {
102
+ pages: Array<TData>
103
+ pageParams: Array<TPageParam>
86
104
  }
87
105
 
88
106
  export type QueryMeta = Register extends {
@@ -118,6 +136,11 @@ export interface QueryOptions<
118
136
  networkMode?: NetworkMode
119
137
  gcTime?: number
120
138
  queryFn?: QueryFunction<TQueryFnData, TQueryKey, TPageParam>
139
+ persister?: QueryPersister<
140
+ NoInfer<TQueryFnData>,
141
+ NoInfer<TQueryKey>,
142
+ NoInfer<TPageParam>
143
+ >
121
144
  queryHash?: string
122
145
  queryKey?: TQueryKey
123
146
  queryKeyHashFn?: QueryKeyHashFunction<TQueryKey>
@@ -129,9 +152,7 @@ export interface QueryOptions<
129
152
  * Set this to a function which accepts the old and new data and returns resolved data of the same type to implement custom structural sharing logic.
130
153
  * Defaults to `true`.
131
154
  */
132
- structuralSharing?:
133
- | boolean
134
- | ((oldData: TData | undefined, newData: TData) => TData)
155
+ structuralSharing?: boolean | (<T>(oldData: T | undefined, newData: T) => T)
135
156
  _defaulted?: boolean
136
157
  /**
137
158
  * Additional payload to be stored on each query.
@@ -144,14 +165,14 @@ export interface QueryOptions<
144
165
  maxPages?: number
145
166
  }
146
167
 
147
- export interface DefaultPageParam<TPageParam = unknown> {
148
- defaultPageParam: TPageParam
168
+ export interface InitialPageParam<TPageParam = unknown> {
169
+ initialPageParam: TPageParam
149
170
  }
150
171
 
151
172
  export interface InfiniteQueryPageParamsOptions<
152
173
  TQueryFnData = unknown,
153
174
  TPageParam = unknown,
154
- > extends DefaultPageParam<TPageParam> {
175
+ > extends InitialPageParam<TPageParam> {
155
176
  /**
156
177
  * This function can be set to automatically get the previous cursor for infinite queries.
157
178
  * The result will also be used to determine the value of `hasPreviousPage`.
@@ -322,7 +343,7 @@ export interface InfiniteQueryObserverOptions<
322
343
  TQueryFnData,
323
344
  TError,
324
345
  TData,
325
- InfiniteData<TQueryData>,
346
+ InfiniteData<TQueryData, TPageParam>,
326
347
  TQueryKey,
327
348
  TPageParam
328
349
  >,
@@ -380,11 +401,11 @@ export type FetchInfiniteQueryOptions<
380
401
  > = FetchQueryOptions<
381
402
  TQueryFnData,
382
403
  TError,
383
- InfiniteData<TData>,
404
+ InfiniteData<TData, TPageParam>,
384
405
  TQueryKey,
385
406
  TPageParam
386
407
  > &
387
- DefaultPageParam<TPageParam> &
408
+ InitialPageParam<TPageParam> &
388
409
  FetchInfiniteQueryPages<TQueryFnData, TPageParam>
389
410
 
390
411
  export interface ResultOptions {
@@ -606,7 +627,7 @@ export type InfiniteQueryObserverResult<
606
627
  | InfiniteQueryObserverLoadingResult<TData, TError>
607
628
  | DefinedInfiniteQueryObserverResult<TData, TError>
608
629
 
609
- export type MutationKey = readonly unknown[]
630
+ export type MutationKey = ReadonlyArray<unknown>
610
631
 
611
632
  export type MutationStatus = 'idle' | 'pending' | 'success' | 'error'
612
633
 
package/src/utils.ts CHANGED
@@ -334,12 +334,12 @@ export function keepPreviousData<T>(
334
334
  return previousData
335
335
  }
336
336
 
337
- export function addToEnd<T>(items: T[], item: T, max = 0): T[] {
337
+ export function addToEnd<T>(items: Array<T>, item: T, max = 0): Array<T> {
338
338
  const newItems = [...items, item]
339
339
  return max && newItems.length > max ? newItems.slice(1) : newItems
340
340
  }
341
341
 
342
- export function addToStart<T>(items: T[], item: T, max = 0): T[] {
342
+ export function addToStart<T>(items: Array<T>, item: T, max = 0): Array<T> {
343
343
  const newItems = [item, ...items]
344
344
  return max && newItems.length > max ? newItems.slice(0, -1) : newItems
345
345
  }