@tanstack/query-core 5.28.6 → 5.28.9

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 (88) hide show
  1. package/build/legacy/hydration.d.cts +1 -1
  2. package/build/legacy/hydration.d.ts +1 -1
  3. package/build/legacy/index.d.cts +1 -1
  4. package/build/legacy/index.d.ts +1 -1
  5. package/build/legacy/infiniteQueryBehavior.cjs.map +1 -1
  6. package/build/legacy/infiniteQueryBehavior.d.cts +1 -1
  7. package/build/legacy/infiniteQueryBehavior.d.ts +1 -1
  8. package/build/legacy/infiniteQueryBehavior.js.map +1 -1
  9. package/build/legacy/infiniteQueryObserver.d.cts +1 -1
  10. package/build/legacy/infiniteQueryObserver.d.ts +1 -1
  11. package/build/legacy/mutation.d.cts +1 -1
  12. package/build/legacy/mutation.d.ts +1 -1
  13. package/build/legacy/mutationCache.d.cts +1 -1
  14. package/build/legacy/mutationCache.d.ts +1 -1
  15. package/build/legacy/mutationObserver.d.cts +1 -1
  16. package/build/legacy/mutationObserver.d.ts +1 -1
  17. package/build/legacy/queriesObserver.d.cts +1 -1
  18. package/build/legacy/queriesObserver.d.ts +1 -1
  19. package/build/legacy/query.cjs.map +1 -1
  20. package/build/legacy/query.d.cts +1 -1
  21. package/build/legacy/query.d.ts +1 -1
  22. package/build/legacy/query.js.map +1 -1
  23. package/build/legacy/queryCache.d.cts +1 -1
  24. package/build/legacy/queryCache.d.ts +1 -1
  25. package/build/legacy/{queryClient-6vLRMq5C.d.ts → queryClient-Iu1tSaKE.d.ts} +7 -6
  26. package/build/legacy/{queryClient-C_S9rQE6.d.cts → queryClient-nKFaeeO2.d.cts} +7 -6
  27. package/build/legacy/queryClient.cjs +2 -2
  28. package/build/legacy/queryClient.cjs.map +1 -1
  29. package/build/legacy/queryClient.d.cts +1 -1
  30. package/build/legacy/queryClient.d.ts +1 -1
  31. package/build/legacy/queryClient.js +2 -2
  32. package/build/legacy/queryClient.js.map +1 -1
  33. package/build/legacy/queryObserver.d.cts +1 -1
  34. package/build/legacy/queryObserver.d.ts +1 -1
  35. package/build/legacy/retryer.d.cts +1 -1
  36. package/build/legacy/retryer.d.ts +1 -1
  37. package/build/legacy/types.cjs.map +1 -1
  38. package/build/legacy/types.d.cts +1 -1
  39. package/build/legacy/types.d.ts +1 -1
  40. package/build/legacy/utils.d.cts +1 -1
  41. package/build/legacy/utils.d.ts +1 -1
  42. package/build/modern/hydration.d.cts +1 -1
  43. package/build/modern/hydration.d.ts +1 -1
  44. package/build/modern/index.d.cts +1 -1
  45. package/build/modern/index.d.ts +1 -1
  46. package/build/modern/infiniteQueryBehavior.cjs.map +1 -1
  47. package/build/modern/infiniteQueryBehavior.d.cts +1 -1
  48. package/build/modern/infiniteQueryBehavior.d.ts +1 -1
  49. package/build/modern/infiniteQueryBehavior.js.map +1 -1
  50. package/build/modern/infiniteQueryObserver.d.cts +1 -1
  51. package/build/modern/infiniteQueryObserver.d.ts +1 -1
  52. package/build/modern/mutation.d.cts +1 -1
  53. package/build/modern/mutation.d.ts +1 -1
  54. package/build/modern/mutationCache.d.cts +1 -1
  55. package/build/modern/mutationCache.d.ts +1 -1
  56. package/build/modern/mutationObserver.d.cts +1 -1
  57. package/build/modern/mutationObserver.d.ts +1 -1
  58. package/build/modern/queriesObserver.d.cts +1 -1
  59. package/build/modern/queriesObserver.d.ts +1 -1
  60. package/build/modern/query.cjs.map +1 -1
  61. package/build/modern/query.d.cts +1 -1
  62. package/build/modern/query.d.ts +1 -1
  63. package/build/modern/query.js.map +1 -1
  64. package/build/modern/queryCache.d.cts +1 -1
  65. package/build/modern/queryCache.d.ts +1 -1
  66. package/build/modern/{queryClient-6vLRMq5C.d.ts → queryClient-Iu1tSaKE.d.ts} +7 -6
  67. package/build/modern/{queryClient-C_S9rQE6.d.cts → queryClient-nKFaeeO2.d.cts} +7 -6
  68. package/build/modern/queryClient.cjs +2 -2
  69. package/build/modern/queryClient.cjs.map +1 -1
  70. package/build/modern/queryClient.d.cts +1 -1
  71. package/build/modern/queryClient.d.ts +1 -1
  72. package/build/modern/queryClient.js +2 -2
  73. package/build/modern/queryClient.js.map +1 -1
  74. package/build/modern/queryObserver.d.cts +1 -1
  75. package/build/modern/queryObserver.d.ts +1 -1
  76. package/build/modern/retryer.d.cts +1 -1
  77. package/build/modern/retryer.d.ts +1 -1
  78. package/build/modern/types.cjs.map +1 -1
  79. package/build/modern/types.d.cts +1 -1
  80. package/build/modern/types.d.ts +1 -1
  81. package/build/modern/utils.d.cts +1 -1
  82. package/build/modern/utils.d.ts +1 -1
  83. package/package.json +1 -1
  84. package/src/__tests__/OmitKeyof.test-d.ts +59 -0
  85. package/src/infiniteQueryBehavior.ts +2 -1
  86. package/src/query.ts +6 -2
  87. package/src/queryClient.ts +14 -13
  88. package/src/types.ts +13 -2
@@ -1,3 +1,3 @@
1
- export { aI as CancelOptions, v as DataTag, D as DefaultError, aH as DefaultOptions, _ as DefaultedInfiniteQueryObserverOptions, Y as DefaultedQueryObserverOptions, aq as DefinedInfiniteQueryObserverResult, ai as DefinedQueryObserverResult, a0 as EnsureQueryDataOptions, a1 as FetchInfiniteQueryOptions, a8 as FetchNextPageOptions, a9 as FetchPreviousPageOptions, $ as FetchQueryOptions, ab as FetchStatus, B as GetNextPageParamFunction, G as GetPreviousPageParamFunction, E as InfiniteData, ak as InfiniteQueryObserverBaseResult, an as InfiniteQueryObserverLoadingErrorResult, am as InfiniteQueryObserverLoadingResult, Z as InfiniteQueryObserverOptions, al as InfiniteQueryObserverPendingResult, ao as InfiniteQueryObserverRefetchErrorResult, ar as InfiniteQueryObserverResult, ap as InfiniteQueryObserverSuccessResult, O as InfiniteQueryPageParamsOptions, I as InitialDataFunction, L as InitialPageParam, a6 as InvalidateOptions, a4 as InvalidateQueryFilters, az as MutateFunction, ay as MutateOptions, av as MutationFunction, as as MutationKey, au as MutationMeta, aA as MutationObserverBaseResult, aD as MutationObserverErrorResult, aB as MutationObserverIdleResult, aC as MutationObserverLoadingResult, ax as MutationObserverOptions, aF as MutationObserverResult, aE as MutationObserverSuccessResult, aw as MutationOptions, at as MutationStatus, H as NetworkMode, N as NoInfer, aL as NotifyEvent, aK as NotifyEventType, J as NotifyOnChangeProps, X as Optional, P as PlaceholderDataFunction, z as QueriesPlaceholderDataFunction, aG as QueryClientConfig, w as QueryFunction, y as QueryFunctionContext, t as QueryKey, A as QueryKeyHashFunction, F as QueryMeta, ac as QueryObserverBaseResult, af as QueryObserverLoadingErrorResult, ae as QueryObserverLoadingResult, V as QueryObserverOptions, ad as QueryObserverPendingResult, ag as QueryObserverRefetchErrorResult, aj as QueryObserverResult, ah as QueryObserverSuccessResult, K as QueryOptions, x as QueryPersister, aa as QueryStatus, a3 as RefetchOptions, a5 as RefetchQueryFilters, R as Register, a7 as ResetOptions, a2 as ResultOptions, aJ as SetDataOptions, T as ThrowOnError, W as WithRequired, u as dataTagSymbol } from './queryClient-6vLRMq5C.js';
1
+ export { aJ as CancelOptions, v as DataTag, D as DefaultError, aI as DefaultOptions, $ as DefaultedInfiniteQueryObserverOptions, Z as DefaultedQueryObserverOptions, ar as DefinedInfiniteQueryObserverResult, aj as DefinedQueryObserverResult, a1 as EnsureQueryDataOptions, a2 as FetchInfiniteQueryOptions, a9 as FetchNextPageOptions, aa as FetchPreviousPageOptions, a0 as FetchQueryOptions, ac as FetchStatus, B as GetNextPageParamFunction, G as GetPreviousPageParamFunction, E as InfiniteData, al as InfiniteQueryObserverBaseResult, ao as InfiniteQueryObserverLoadingErrorResult, an as InfiniteQueryObserverLoadingResult, _ as InfiniteQueryObserverOptions, am as InfiniteQueryObserverPendingResult, ap as InfiniteQueryObserverRefetchErrorResult, as as InfiniteQueryObserverResult, aq as InfiniteQueryObserverSuccessResult, T as InfiniteQueryPageParamsOptions, I as InitialDataFunction, L as InitialPageParam, a7 as InvalidateOptions, a5 as InvalidateQueryFilters, aA as MutateFunction, az as MutateOptions, aw as MutationFunction, at as MutationKey, av as MutationMeta, aB as MutationObserverBaseResult, aE as MutationObserverErrorResult, aC as MutationObserverIdleResult, aD as MutationObserverLoadingResult, ay as MutationObserverOptions, aG as MutationObserverResult, aF as MutationObserverSuccessResult, ax as MutationOptions, au as MutationStatus, H as NetworkMode, N as NoInfer, aM as NotifyEvent, aL as NotifyEventType, J as NotifyOnChangeProps, O as OmitKeyof, Y as Optional, P as PlaceholderDataFunction, z as QueriesPlaceholderDataFunction, aH as QueryClientConfig, w as QueryFunction, y as QueryFunctionContext, t as QueryKey, A as QueryKeyHashFunction, F as QueryMeta, ad as QueryObserverBaseResult, ag as QueryObserverLoadingErrorResult, af as QueryObserverLoadingResult, W as QueryObserverOptions, ae as QueryObserverPendingResult, ah as QueryObserverRefetchErrorResult, ak as QueryObserverResult, ai as QueryObserverSuccessResult, K as QueryOptions, x as QueryPersister, ab as QueryStatus, a4 as RefetchOptions, a6 as RefetchQueryFilters, R as Register, a8 as ResetOptions, a3 as ResultOptions, aK as SetDataOptions, V as ThrowOnError, X as WithRequired, u as dataTagSymbol } from './queryClient-Iu1tSaKE.js';
2
2
  import './removable.js';
3
3
  import './subscribable.js';
@@ -1,3 +1,3 @@
1
- export { g as MutationFilters, j as QueryFilters, aP as QueryTypeFilter, S as SkipToken, U as Updater, a$ as addToEnd, b0 as addToStart, aR as functionalUpdate, h as hashKey, aU as hashQueryKeyByOptions, aX as isPlainArray, aY as isPlainObject, i as isServer, aS as isValidTimeout, k as keepPreviousData, f as matchMutation, m as matchQuery, aQ as noop, aV as partialMatchKey, a_ as replaceData, r as replaceEqualDeep, aW as shallowEqualObjects, s as skipToken, aZ as sleep, aT as timeUntilStale } from './queryClient-C_S9rQE6.cjs';
1
+ export { g as MutationFilters, j as QueryFilters, aQ as QueryTypeFilter, S as SkipToken, U as Updater, b0 as addToEnd, b1 as addToStart, aS as functionalUpdate, h as hashKey, aV as hashQueryKeyByOptions, aY as isPlainArray, aZ as isPlainObject, i as isServer, aT as isValidTimeout, k as keepPreviousData, f as matchMutation, m as matchQuery, aR as noop, aW as partialMatchKey, a$ as replaceData, r as replaceEqualDeep, aX as shallowEqualObjects, s as skipToken, a_ as sleep, aU as timeUntilStale } from './queryClient-nKFaeeO2.cjs';
2
2
  import './removable.cjs';
3
3
  import './subscribable.cjs';
@@ -1,3 +1,3 @@
1
- export { g as MutationFilters, j as QueryFilters, aP as QueryTypeFilter, S as SkipToken, U as Updater, a$ as addToEnd, b0 as addToStart, aR as functionalUpdate, h as hashKey, aU as hashQueryKeyByOptions, aX as isPlainArray, aY as isPlainObject, i as isServer, aS as isValidTimeout, k as keepPreviousData, f as matchMutation, m as matchQuery, aQ as noop, aV as partialMatchKey, a_ as replaceData, r as replaceEqualDeep, aW as shallowEqualObjects, s as skipToken, aZ as sleep, aT as timeUntilStale } from './queryClient-6vLRMq5C.js';
1
+ export { g as MutationFilters, j as QueryFilters, aQ as QueryTypeFilter, S as SkipToken, U as Updater, b0 as addToEnd, b1 as addToStart, aS as functionalUpdate, h as hashKey, aV as hashQueryKeyByOptions, aY as isPlainArray, aZ as isPlainObject, i as isServer, aT as isValidTimeout, k as keepPreviousData, f as matchMutation, m as matchQuery, aR as noop, aW as partialMatchKey, a$ as replaceData, r as replaceEqualDeep, aX as shallowEqualObjects, s as skipToken, a_ as sleep, aU as timeUntilStale } from './queryClient-Iu1tSaKE.js';
2
2
  import './removable.js';
3
3
  import './subscribable.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/query-core",
3
- "version": "5.28.6",
3
+ "version": "5.28.9",
4
4
  "description": "The framework agnostic core that powers TanStack Query",
5
5
  "author": "tannerlinsley",
6
6
  "license": "MIT",
@@ -0,0 +1,59 @@
1
+ import { describe, expectTypeOf, it } from 'vitest'
2
+ import type { OmitKeyof } from '..'
3
+
4
+ describe('OmitKeyof', () => {
5
+ it("'s type check", () => {
6
+ type A = {
7
+ x: string
8
+ y: number
9
+ }
10
+
11
+ type ExpectedType = {
12
+ x: string
13
+ }
14
+
15
+ // Bad point
16
+ // 1. original Omit can use 'z' as type parameter with no type error
17
+ // 2. original Omit have no auto complete for 2nd type parameter
18
+ expectTypeOf<Omit<A, 'z' | 'y'>>().toEqualTypeOf<ExpectedType>()
19
+
20
+ // Solution
21
+
22
+ // 1. strictly
23
+ expectTypeOf<
24
+ OmitKeyof<
25
+ A,
26
+ // OmitKeyof can't use 'z' as type parameter with type error because A don't have key 'z'
27
+ // @ts-expect-error Type does not satisfy the constraint keyof A
28
+ 'z' | 'y'
29
+ >
30
+ >().toEqualTypeOf<ExpectedType>
31
+ expectTypeOf<
32
+ OmitKeyof<
33
+ A,
34
+ // OmitKeyof can't use 'z' as type parameter with type error because A don't have key 'z'
35
+ // @ts-expect-error Type does not satisfy the constraint keyof A
36
+ 'z' | 'y',
37
+ 'strictly'
38
+ >
39
+ >().toEqualTypeOf<ExpectedType>
40
+
41
+ // 2. safely
42
+ expectTypeOf<
43
+ OmitKeyof<
44
+ A,
45
+ // OmitKeyof can't use 'z' as type parameter type error with strictly parameter or default parameter
46
+ // @ts-expect-error Type does not satisfy the constraint keyof A
47
+ 'z' | 'y'
48
+ >
49
+ >().toEqualTypeOf<ExpectedType>
50
+ expectTypeOf<
51
+ OmitKeyof<
52
+ A,
53
+ // With 'safely', OmitKeyof can use 'z' as type parameter like original Omit but This support autocomplete too yet for DX.
54
+ 'z' | 'y',
55
+ 'safely'
56
+ >
57
+ >().toEqualTypeOf<ExpectedType>
58
+ })
59
+ })
@@ -3,6 +3,7 @@ import type { QueryBehavior } from './query'
3
3
  import type {
4
4
  InfiniteData,
5
5
  InfiniteQueryPageParamsOptions,
6
+ OmitKeyof,
6
7
  QueryFunctionContext,
7
8
  QueryKey,
8
9
  } from './types'
@@ -67,7 +68,7 @@ export function infiniteQueryBehavior<TQueryFnData, TError, TData, TPageParam>(
67
68
  return Promise.resolve(data)
68
69
  }
69
70
 
70
- const queryFnContext: Omit<
71
+ const queryFnContext: OmitKeyof<
71
72
  QueryFunctionContext<QueryKey, unknown>,
72
73
  'signal'
73
74
  > = {
package/src/query.ts CHANGED
@@ -7,6 +7,7 @@ import type {
7
7
  DefaultError,
8
8
  FetchStatus,
9
9
  InitialDataFunction,
10
+ OmitKeyof,
10
11
  QueryFunctionContext,
11
12
  QueryKey,
12
13
  QueryMeta,
@@ -370,7 +371,10 @@ export class Query<
370
371
  const abortController = new AbortController()
371
372
 
372
373
  // Create query function context
373
- const queryFnContext: Omit<QueryFunctionContext<TQueryKey>, 'signal'> = {
374
+ const queryFnContext: OmitKeyof<
375
+ QueryFunctionContext<TQueryKey>,
376
+ 'signal'
377
+ > = {
374
378
  queryKey: this.queryKey,
375
379
  meta: this.meta,
376
380
  }
@@ -421,7 +425,7 @@ export class Query<
421
425
  }
422
426
 
423
427
  // Trigger behavior hook
424
- const context: Omit<
428
+ const context: OmitKeyof<
425
429
  FetchContext<TQueryFnData, TError, TData, TQueryKey>,
426
430
  'signal'
427
431
  > = {
@@ -12,7 +12,7 @@ import { focusManager } from './focusManager'
12
12
  import { onlineManager } from './onlineManager'
13
13
  import { notifyManager } from './notifyManager'
14
14
  import { infiniteQueryBehavior } from './infiniteQueryBehavior'
15
- import type { DataTag, NoInfer } from './types'
15
+ import type { DataTag, NoInfer, OmitKeyof } from './types'
16
16
  import type { QueryState } from './query'
17
17
  import type {
18
18
  CancelOptions,
@@ -43,7 +43,7 @@ import type { MutationFilters, QueryFilters, Updater } from './utils'
43
43
 
44
44
  interface QueryDefaults {
45
45
  queryKey: QueryKey
46
- defaultOptions: Omit<QueryOptions<any, any, any>, 'queryKey'>
46
+ defaultOptions: OmitKeyof<QueryOptions<any, any, any>, 'queryKey'>
47
47
  }
48
48
 
49
49
  interface MutationDefaults {
@@ -154,12 +154,10 @@ export class QueryClient {
154
154
  getQueriesData<TQueryFnData = unknown>(
155
155
  filters: QueryFilters,
156
156
  ): Array<[QueryKey, TQueryFnData | undefined]> {
157
- return this.getQueryCache()
158
- .findAll(filters)
159
- .map(({ queryKey, state }) => {
160
- const data = state.data as TQueryFnData | undefined
161
- return [queryKey, data]
162
- })
157
+ return this.#queryCache.findAll(filters).map(({ queryKey, state }) => {
158
+ const data = state.data as TQueryFnData | undefined
159
+ return [queryKey, data]
160
+ })
163
161
  }
164
162
 
165
163
  setQueryData<
@@ -208,7 +206,7 @@ export class QueryClient {
208
206
  options?: SetDataOptions,
209
207
  ): Array<[QueryKey, TQueryFnData | undefined]> {
210
208
  return notifyManager.batch(() =>
211
- this.getQueryCache()
209
+ this.#queryCache
212
210
  .findAll(filters)
213
211
  .map(({ queryKey }) => [
214
212
  queryKey,
@@ -429,7 +427,7 @@ export class QueryClient {
429
427
  setQueryDefaults(
430
428
  queryKey: QueryKey,
431
429
  options: Partial<
432
- Omit<QueryObserverOptions<unknown, any, any, any>, 'queryKey'>
430
+ OmitKeyof<QueryObserverOptions<unknown, any, any, any>, 'queryKey'>
433
431
  >,
434
432
  ): void {
435
433
  this.#queryDefaults.set(hashKey(queryKey), {
@@ -440,10 +438,10 @@ export class QueryClient {
440
438
 
441
439
  getQueryDefaults(
442
440
  queryKey: QueryKey,
443
- ): Omit<QueryObserverOptions<any, any, any, any, any>, 'queryKey'> {
441
+ ): OmitKeyof<QueryObserverOptions<any, any, any, any, any>, 'queryKey'> {
444
442
  const defaults = [...this.#queryDefaults.values()]
445
443
 
446
- let result: Omit<
444
+ let result: OmitKeyof<
447
445
  QueryObserverOptions<any, any, any, any, any>,
448
446
  'queryKey'
449
447
  > = {}
@@ -458,7 +456,10 @@ export class QueryClient {
458
456
 
459
457
  setMutationDefaults(
460
458
  mutationKey: MutationKey,
461
- options: Omit<MutationObserverOptions<any, any, any, any>, 'mutationKey'>,
459
+ options: OmitKeyof<
460
+ MutationObserverOptions<any, any, any, any>,
461
+ 'mutationKey'
462
+ >,
462
463
  ): void {
463
464
  this.#mutationDefaults.set(hashKey(mutationKey), {
464
465
  mutationKey,
package/src/types.ts CHANGED
@@ -7,6 +7,14 @@ import type { QueryFilters, QueryTypeFilter, SkipToken } from './utils'
7
7
  import type { QueryCache } from './queryCache'
8
8
  import type { MutationCache } from './mutationCache'
9
9
 
10
+ export type OmitKeyof<
11
+ TObject,
12
+ TKey extends TStrictly extends 'safely'
13
+ ? keyof TObject | (string & Record<never, never>)
14
+ : keyof TObject,
15
+ TStrictly extends 'strictly' | 'safely' = 'strictly',
16
+ > = Omit<TObject, TKey>
17
+
10
18
  export type NoInfer<T> = [T][T extends any ? 0 : never]
11
19
 
12
20
  export interface Register {
@@ -341,7 +349,7 @@ export type Optional<TTarget, TKey extends keyof TTarget> = Pick<
341
349
  Partial<TTarget>,
342
350
  TKey
343
351
  > &
344
- Omit<TTarget, TKey>
352
+ OmitKeyof<TTarget, TKey>
345
353
 
346
354
  export type DefaultedQueryObserverOptions<
347
355
  TQueryFnData = unknown,
@@ -889,7 +897,10 @@ export interface QueryClientConfig {
889
897
  }
890
898
 
891
899
  export interface DefaultOptions<TError = DefaultError> {
892
- queries?: Omit<QueryObserverOptions<unknown, TError>, 'suspense' | 'queryKey'>
900
+ queries?: OmitKeyof<
901
+ QueryObserverOptions<unknown, TError>,
902
+ 'suspense' | 'queryKey'
903
+ >
893
904
  mutations?: MutationObserverOptions<unknown, TError, unknown, unknown>
894
905
  }
895
906