@tanstack/react-query 5.59.9 → 5.59.11

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 (52) hide show
  1. package/build/legacy/index.cjs.map +1 -1
  2. package/build/legacy/index.d.cts +2 -2
  3. package/build/legacy/index.d.ts +2 -2
  4. package/build/legacy/index.js.map +1 -1
  5. package/build/legacy/infiniteQueryOptions.cjs.map +1 -1
  6. package/build/legacy/infiniteQueryOptions.d.cts +9 -3
  7. package/build/legacy/infiniteQueryOptions.d.ts +9 -3
  8. package/build/legacy/infiniteQueryOptions.js.map +1 -1
  9. package/build/legacy/queryOptions.cjs.map +1 -1
  10. package/build/legacy/queryOptions.d.cts +9 -3
  11. package/build/legacy/queryOptions.d.ts +9 -3
  12. package/build/legacy/queryOptions.js.map +1 -1
  13. package/build/legacy/types.cjs.map +1 -1
  14. package/build/legacy/types.d.cts +5 -3
  15. package/build/legacy/types.d.ts +5 -3
  16. package/build/legacy/useSuspenseInfiniteQuery.cjs.map +1 -1
  17. package/build/legacy/useSuspenseInfiniteQuery.js.map +1 -1
  18. package/build/legacy/useSuspenseQuery.cjs.map +1 -1
  19. package/build/legacy/useSuspenseQuery.js.map +1 -1
  20. package/build/modern/index.cjs.map +1 -1
  21. package/build/modern/index.d.cts +2 -2
  22. package/build/modern/index.d.ts +2 -2
  23. package/build/modern/index.js.map +1 -1
  24. package/build/modern/infiniteQueryOptions.cjs.map +1 -1
  25. package/build/modern/infiniteQueryOptions.d.cts +9 -3
  26. package/build/modern/infiniteQueryOptions.d.ts +9 -3
  27. package/build/modern/infiniteQueryOptions.js.map +1 -1
  28. package/build/modern/queryOptions.cjs.map +1 -1
  29. package/build/modern/queryOptions.d.cts +9 -3
  30. package/build/modern/queryOptions.d.ts +9 -3
  31. package/build/modern/queryOptions.js.map +1 -1
  32. package/build/modern/types.cjs.map +1 -1
  33. package/build/modern/types.d.cts +5 -3
  34. package/build/modern/types.d.ts +5 -3
  35. package/build/modern/useSuspenseInfiniteQuery.cjs.map +1 -1
  36. package/build/modern/useSuspenseInfiniteQuery.js.map +1 -1
  37. package/build/modern/useSuspenseQuery.cjs.map +1 -1
  38. package/build/modern/useSuspenseQuery.js.map +1 -1
  39. package/package.json +2 -2
  40. package/src/__tests__/infiniteQueryOptions.test-d.tsx +13 -5
  41. package/src/__tests__/prefetch.test.tsx +7 -3
  42. package/src/__tests__/queryOptions.test-d.tsx +29 -1
  43. package/src/__tests__/suspense.test-d.tsx +29 -11
  44. package/src/__tests__/suspense.test.tsx +74 -2
  45. package/src/__tests__/useMutationState.test.tsx +12 -12
  46. package/src/__tests__/useSuspenseQueries.test-d.tsx +41 -18
  47. package/src/index.ts +2 -0
  48. package/src/infiniteQueryOptions.ts +57 -0
  49. package/src/queryOptions.ts +32 -1
  50. package/src/types.ts +22 -4
  51. package/src/useSuspenseInfiniteQuery.ts +1 -1
  52. package/src/useSuspenseQuery.ts +1 -1
@@ -1,8 +1,11 @@
1
- import { DefaultError, QueryKey, InitialDataFunction, DataTag } from '@tanstack/query-core';
1
+ import { DefaultError, QueryKey, InitialDataFunction, OmitKeyof, SkipToken, DataTag } from '@tanstack/query-core';
2
2
  import { UseQueryOptions } from './types.js';
3
3
 
4
4
  type UndefinedInitialDataOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = UseQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {
5
- initialData?: undefined | InitialDataFunction<NonUndefinedGuard<TQueryFnData>>;
5
+ initialData?: undefined | InitialDataFunction<NonUndefinedGuard<TQueryFnData>> | NonUndefinedGuard<TQueryFnData>;
6
+ };
7
+ type UnusedSkipTokenOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = OmitKeyof<UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>, 'queryFn'> & {
8
+ queryFn: Exclude<UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>['queryFn'], SkipToken>;
6
9
  };
7
10
  type NonUndefinedGuard<T> = T extends undefined ? never : T;
8
11
  type DefinedInitialDataOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = UseQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {
@@ -11,8 +14,11 @@ type DefinedInitialDataOptions<TQueryFnData = unknown, TError = DefaultError, TD
11
14
  declare function queryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>): DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> & {
12
15
  queryKey: DataTag<TQueryKey, TQueryFnData>;
13
16
  };
17
+ declare function queryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: UnusedSkipTokenOptions<TQueryFnData, TError, TData, TQueryKey>): UnusedSkipTokenOptions<TQueryFnData, TError, TData, TQueryKey> & {
18
+ queryKey: DataTag<TQueryKey, TQueryFnData>;
19
+ };
14
20
  declare function queryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>): UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> & {
15
21
  queryKey: DataTag<TQueryKey, TQueryFnData>;
16
22
  };
17
23
 
18
- export { type DefinedInitialDataOptions, type UndefinedInitialDataOptions, queryOptions };
24
+ export { type DefinedInitialDataOptions, type UndefinedInitialDataOptions, type UnusedSkipTokenOptions, queryOptions };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/queryOptions.ts"],"sourcesContent":["import type {\n DataTag,\n DefaultError,\n InitialDataFunction,\n QueryKey,\n} from '@tanstack/query-core'\nimport type { UseQueryOptions } from './types'\n\nexport type UndefinedInitialDataOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = UseQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {\n initialData?: undefined | InitialDataFunction<NonUndefinedGuard<TQueryFnData>>\n}\n\ntype NonUndefinedGuard<T> = T extends undefined ? never : T\n\nexport type DefinedInitialDataOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = UseQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {\n initialData:\n | NonUndefinedGuard<TQueryFnData>\n | (() => NonUndefinedGuard<TQueryFnData>)\n}\n\nexport function queryOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n): DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> & {\n queryKey: DataTag<TQueryKey, TQueryFnData>\n}\n\nexport function queryOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n): UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> & {\n queryKey: DataTag<TQueryKey, TQueryFnData>\n}\n\nexport function queryOptions(options: unknown) {\n return options\n}\n"],"mappings":";AAoDO,SAAS,aAAa,SAAkB;AAC7C,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../src/queryOptions.ts"],"sourcesContent":["import type {\n DataTag,\n DefaultError,\n InitialDataFunction,\n OmitKeyof,\n QueryKey,\n SkipToken,\n} from '@tanstack/query-core'\nimport type { UseQueryOptions } from './types'\n\nexport type UndefinedInitialDataOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = UseQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {\n initialData?:\n | undefined\n | InitialDataFunction<NonUndefinedGuard<TQueryFnData>>\n | NonUndefinedGuard<TQueryFnData>\n}\n\nexport type UnusedSkipTokenOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = OmitKeyof<\n UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'queryFn'\n> & {\n queryFn: Exclude<\n UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>['queryFn'],\n SkipToken\n >\n}\n\ntype NonUndefinedGuard<T> = T extends undefined ? never : T\n\nexport type DefinedInitialDataOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = UseQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {\n initialData:\n | NonUndefinedGuard<TQueryFnData>\n | (() => NonUndefinedGuard<TQueryFnData>)\n}\n\nexport function queryOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n): DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> & {\n queryKey: DataTag<TQueryKey, TQueryFnData>\n}\n\nexport function queryOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UnusedSkipTokenOptions<TQueryFnData, TError, TData, TQueryKey>,\n): UnusedSkipTokenOptions<TQueryFnData, TError, TData, TQueryKey> & {\n queryKey: DataTag<TQueryKey, TQueryFnData>\n}\n\nexport function queryOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n): UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> & {\n queryKey: DataTag<TQueryKey, TQueryFnData>\n}\n\nexport function queryOptions(options: unknown) {\n return options\n}\n"],"mappings":";AAmFO,SAAS,aAAa,SAAkB;AAC7C,SAAO;AACT;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/types.ts"],"sourcesContent":["/* istanbul ignore file */\n\nimport type {\n DefaultError,\n DefinedInfiniteQueryObserverResult,\n DefinedQueryObserverResult,\n InfiniteQueryObserverOptions,\n InfiniteQueryObserverResult,\n MutateFunction,\n MutationObserverOptions,\n MutationObserverResult,\n OmitKeyof,\n Override,\n QueryKey,\n QueryObserverOptions,\n QueryObserverResult,\n} from '@tanstack/query-core'\n\nexport interface UseBaseQueryOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n > {}\n\nexport interface UseQueryOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends OmitKeyof<\n UseBaseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,\n 'suspense'\n > {}\n\nexport interface UseSuspenseQueryOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends OmitKeyof<\n UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'enabled' | 'throwOnError' | 'placeholderData'\n > {}\n\nexport interface UseInfiniteQueryOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n> extends OmitKeyof<\n InfiniteQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey,\n TPageParam\n >,\n 'suspense'\n > {}\n\nexport interface UseSuspenseInfiniteQueryOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n> extends OmitKeyof<\n UseInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey,\n TPageParam\n >,\n 'enabled' | 'throwOnError' | 'placeholderData'\n > {}\n\nexport type UseBaseQueryResult<\n TData = unknown,\n TError = DefaultError,\n> = QueryObserverResult<TData, TError>\n\nexport type UseQueryResult<\n TData = unknown,\n TError = DefaultError,\n> = UseBaseQueryResult<TData, TError>\n\nexport type UseSuspenseQueryResult<\n TData = unknown,\n TError = DefaultError,\n> = OmitKeyof<\n DefinedQueryObserverResult<TData, TError>,\n 'isPlaceholderData' | 'promise'\n>\n\nexport type DefinedUseQueryResult<\n TData = unknown,\n TError = DefaultError,\n> = DefinedQueryObserverResult<TData, TError>\n\nexport type UseInfiniteQueryResult<\n TData = unknown,\n TError = DefaultError,\n> = InfiniteQueryObserverResult<TData, TError>\n\nexport type DefinedUseInfiniteQueryResult<\n TData = unknown,\n TError = DefaultError,\n> = DefinedInfiniteQueryObserverResult<TData, TError>\n\nexport type UseSuspenseInfiniteQueryResult<\n TData = unknown,\n TError = DefaultError,\n> = OmitKeyof<\n DefinedInfiniteQueryObserverResult<TData, TError>,\n 'isPlaceholderData' | 'promise'\n>\n\nexport interface UseMutationOptions<\n TData = unknown,\n TError = DefaultError,\n TVariables = void,\n TContext = unknown,\n> extends OmitKeyof<\n MutationObserverOptions<TData, TError, TVariables, TContext>,\n '_defaulted'\n > {}\n\nexport type UseMutateFunction<\n TData = unknown,\n TError = DefaultError,\n TVariables = void,\n TContext = unknown,\n> = (\n ...args: Parameters<MutateFunction<TData, TError, TVariables, TContext>>\n) => void\n\nexport type UseMutateAsyncFunction<\n TData = unknown,\n TError = DefaultError,\n TVariables = void,\n TContext = unknown,\n> = MutateFunction<TData, TError, TVariables, TContext>\n\nexport type UseBaseMutationResult<\n TData = unknown,\n TError = DefaultError,\n TVariables = unknown,\n TContext = unknown,\n> = Override<\n MutationObserverResult<TData, TError, TVariables, TContext>,\n { mutate: UseMutateFunction<TData, TError, TVariables, TContext> }\n> & { mutateAsync: UseMutateAsyncFunction<TData, TError, TVariables, TContext> }\n\nexport type UseMutationResult<\n TData = unknown,\n TError = DefaultError,\n TVariables = unknown,\n TContext = unknown,\n> = UseBaseMutationResult<TData, TError, TVariables, TContext>\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
1
+ {"version":3,"sources":["../../src/types.ts"],"sourcesContent":["/* istanbul ignore file */\n\nimport type {\n DefaultError,\n DefinedInfiniteQueryObserverResult,\n DefinedQueryObserverResult,\n InfiniteQueryObserverOptions,\n InfiniteQueryObserverResult,\n MutateFunction,\n MutationObserverOptions,\n MutationObserverResult,\n OmitKeyof,\n Override,\n QueryKey,\n QueryObserverOptions,\n QueryObserverResult,\n SkipToken,\n} from '@tanstack/query-core'\n\nexport interface UseBaseQueryOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n > {}\n\nexport interface UseQueryOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends OmitKeyof<\n UseBaseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,\n 'suspense'\n > {}\n\nexport interface UseSuspenseQueryOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends OmitKeyof<\n UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'queryFn' | 'enabled' | 'throwOnError' | 'placeholderData'\n > {\n queryFn: Exclude<\n UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>['queryFn'],\n SkipToken\n >\n}\n\nexport interface UseInfiniteQueryOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n> extends OmitKeyof<\n InfiniteQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey,\n TPageParam\n >,\n 'suspense'\n > {}\n\nexport interface UseSuspenseInfiniteQueryOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n> extends OmitKeyof<\n UseInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey,\n TPageParam\n >,\n 'queryFn' | 'enabled' | 'throwOnError' | 'placeholderData'\n > {\n queryFn: Exclude<\n UseInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey,\n TPageParam\n >['queryFn'],\n SkipToken\n >\n}\n\nexport type UseBaseQueryResult<\n TData = unknown,\n TError = DefaultError,\n> = QueryObserverResult<TData, TError>\n\nexport type UseQueryResult<\n TData = unknown,\n TError = DefaultError,\n> = UseBaseQueryResult<TData, TError>\n\nexport type UseSuspenseQueryResult<\n TData = unknown,\n TError = DefaultError,\n> = OmitKeyof<\n DefinedQueryObserverResult<TData, TError>,\n 'isPlaceholderData' | 'promise'\n>\n\nexport type DefinedUseQueryResult<\n TData = unknown,\n TError = DefaultError,\n> = DefinedQueryObserverResult<TData, TError>\n\nexport type UseInfiniteQueryResult<\n TData = unknown,\n TError = DefaultError,\n> = InfiniteQueryObserverResult<TData, TError>\n\nexport type DefinedUseInfiniteQueryResult<\n TData = unknown,\n TError = DefaultError,\n> = DefinedInfiniteQueryObserverResult<TData, TError>\n\nexport type UseSuspenseInfiniteQueryResult<\n TData = unknown,\n TError = DefaultError,\n> = OmitKeyof<\n DefinedInfiniteQueryObserverResult<TData, TError>,\n 'isPlaceholderData' | 'promise'\n>\n\nexport interface UseMutationOptions<\n TData = unknown,\n TError = DefaultError,\n TVariables = void,\n TContext = unknown,\n> extends OmitKeyof<\n MutationObserverOptions<TData, TError, TVariables, TContext>,\n '_defaulted'\n > {}\n\nexport type UseMutateFunction<\n TData = unknown,\n TError = DefaultError,\n TVariables = void,\n TContext = unknown,\n> = (\n ...args: Parameters<MutateFunction<TData, TError, TVariables, TContext>>\n) => void\n\nexport type UseMutateAsyncFunction<\n TData = unknown,\n TError = DefaultError,\n TVariables = void,\n TContext = unknown,\n> = MutateFunction<TData, TError, TVariables, TContext>\n\nexport type UseBaseMutationResult<\n TData = unknown,\n TError = DefaultError,\n TVariables = unknown,\n TContext = unknown,\n> = Override<\n MutationObserverResult<TData, TError, TVariables, TContext>,\n { mutate: UseMutateFunction<TData, TError, TVariables, TContext> }\n> & { mutateAsync: UseMutateAsyncFunction<TData, TError, TVariables, TContext> }\n\nexport type UseMutationResult<\n TData = unknown,\n TError = DefaultError,\n TVariables = unknown,\n TContext = unknown,\n> = UseBaseMutationResult<TData, TError, TVariables, TContext>\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -1,14 +1,16 @@
1
- import { DefaultError, QueryKey, QueryObserverOptions, OmitKeyof, InfiniteQueryObserverOptions, QueryObserverResult, DefinedQueryObserverResult, InfiniteQueryObserverResult, DefinedInfiniteQueryObserverResult, MutationObserverOptions, MutateFunction, Override, MutationObserverResult } from '@tanstack/query-core';
1
+ import { DefaultError, QueryKey, QueryObserverOptions, OmitKeyof, SkipToken, InfiniteQueryObserverOptions, QueryObserverResult, DefinedQueryObserverResult, InfiniteQueryObserverResult, DefinedInfiniteQueryObserverResult, MutationObserverOptions, MutateFunction, Override, MutationObserverResult } from '@tanstack/query-core';
2
2
 
3
3
  interface UseBaseQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> extends QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey> {
4
4
  }
5
5
  interface UseQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> extends OmitKeyof<UseBaseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>, 'suspense'> {
6
6
  }
7
- interface UseSuspenseQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> extends OmitKeyof<UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>, 'enabled' | 'throwOnError' | 'placeholderData'> {
7
+ interface UseSuspenseQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> extends OmitKeyof<UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>, 'queryFn' | 'enabled' | 'throwOnError' | 'placeholderData'> {
8
+ queryFn: Exclude<UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>['queryFn'], SkipToken>;
8
9
  }
9
10
  interface UseInfiniteQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown> extends OmitKeyof<InfiniteQueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey, TPageParam>, 'suspense'> {
10
11
  }
11
- interface UseSuspenseInfiniteQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown> extends OmitKeyof<UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey, TPageParam>, 'enabled' | 'throwOnError' | 'placeholderData'> {
12
+ interface UseSuspenseInfiniteQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown> extends OmitKeyof<UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey, TPageParam>, 'queryFn' | 'enabled' | 'throwOnError' | 'placeholderData'> {
13
+ queryFn: Exclude<UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey, TPageParam>['queryFn'], SkipToken>;
12
14
  }
13
15
  type UseBaseQueryResult<TData = unknown, TError = DefaultError> = QueryObserverResult<TData, TError>;
14
16
  type UseQueryResult<TData = unknown, TError = DefaultError> = UseBaseQueryResult<TData, TError>;
@@ -1,14 +1,16 @@
1
- import { DefaultError, QueryKey, QueryObserverOptions, OmitKeyof, InfiniteQueryObserverOptions, QueryObserverResult, DefinedQueryObserverResult, InfiniteQueryObserverResult, DefinedInfiniteQueryObserverResult, MutationObserverOptions, MutateFunction, Override, MutationObserverResult } from '@tanstack/query-core';
1
+ import { DefaultError, QueryKey, QueryObserverOptions, OmitKeyof, SkipToken, InfiniteQueryObserverOptions, QueryObserverResult, DefinedQueryObserverResult, InfiniteQueryObserverResult, DefinedInfiniteQueryObserverResult, MutationObserverOptions, MutateFunction, Override, MutationObserverResult } from '@tanstack/query-core';
2
2
 
3
3
  interface UseBaseQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> extends QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey> {
4
4
  }
5
5
  interface UseQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> extends OmitKeyof<UseBaseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>, 'suspense'> {
6
6
  }
7
- interface UseSuspenseQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> extends OmitKeyof<UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>, 'enabled' | 'throwOnError' | 'placeholderData'> {
7
+ interface UseSuspenseQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> extends OmitKeyof<UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>, 'queryFn' | 'enabled' | 'throwOnError' | 'placeholderData'> {
8
+ queryFn: Exclude<UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>['queryFn'], SkipToken>;
8
9
  }
9
10
  interface UseInfiniteQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown> extends OmitKeyof<InfiniteQueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey, TPageParam>, 'suspense'> {
10
11
  }
11
- interface UseSuspenseInfiniteQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown> extends OmitKeyof<UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey, TPageParam>, 'enabled' | 'throwOnError' | 'placeholderData'> {
12
+ interface UseSuspenseInfiniteQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown> extends OmitKeyof<UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey, TPageParam>, 'queryFn' | 'enabled' | 'throwOnError' | 'placeholderData'> {
13
+ queryFn: Exclude<UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey, TPageParam>['queryFn'], SkipToken>;
12
14
  }
13
15
  type UseBaseQueryResult<TData = unknown, TError = DefaultError> = QueryObserverResult<TData, TError>;
14
16
  type UseQueryResult<TData = unknown, TError = DefaultError> = UseBaseQueryResult<TData, TError>;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/useSuspenseInfiniteQuery.ts"],"sourcesContent":["'use client'\nimport { InfiniteQueryObserver, skipToken } from '@tanstack/query-core'\nimport { useBaseQuery } from './useBaseQuery'\nimport { defaultThrowOnError } from './suspense'\nimport type {\n DefaultError,\n InfiniteData,\n InfiniteQueryObserverSuccessResult,\n QueryClient,\n QueryKey,\n QueryObserver,\n} from '@tanstack/query-core'\nimport type {\n UseSuspenseInfiniteQueryOptions,\n UseSuspenseInfiniteQueryResult,\n} from './types'\n\nexport function useSuspenseInfiniteQuery<\n TQueryFnData,\n TError = DefaultError,\n TData = InfiniteData<TQueryFnData>,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n>(\n options: UseSuspenseInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryFnData,\n TQueryKey,\n TPageParam\n >,\n queryClient?: QueryClient,\n): UseSuspenseInfiniteQueryResult<TData, TError> {\n if (process.env.NODE_ENV !== 'production') {\n if (options.queryFn === skipToken) {\n console.error('skipToken is not allowed for useSuspenseInfiniteQuery')\n }\n }\n\n return useBaseQuery(\n {\n ...options,\n enabled: true,\n suspense: true,\n throwOnError: defaultThrowOnError,\n },\n InfiniteQueryObserver as typeof QueryObserver,\n queryClient,\n ) as InfiniteQueryObserverSuccessResult<TData, TError>\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,wBAAiD;AACjD,0BAA6B;AAC7B,sBAAoC;AAc7B,SAAS,yBAOd,SAQA,aAC+C;AAC/C,MAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,QAAI,QAAQ,YAAY,6BAAW;AACjC,cAAQ,MAAM,uDAAuD;AAAA,IACvE;AAAA,EACF;AAEA,aAAO;AAAA,IACL;AAAA,MACE,GAAG;AAAA,MACH,SAAS;AAAA,MACT,UAAU;AAAA,MACV,cAAc;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/useSuspenseInfiniteQuery.ts"],"sourcesContent":["'use client'\nimport { InfiniteQueryObserver, skipToken } from '@tanstack/query-core'\nimport { useBaseQuery } from './useBaseQuery'\nimport { defaultThrowOnError } from './suspense'\nimport type {\n DefaultError,\n InfiniteData,\n InfiniteQueryObserverSuccessResult,\n QueryClient,\n QueryKey,\n QueryObserver,\n} from '@tanstack/query-core'\nimport type {\n UseSuspenseInfiniteQueryOptions,\n UseSuspenseInfiniteQueryResult,\n} from './types'\n\nexport function useSuspenseInfiniteQuery<\n TQueryFnData,\n TError = DefaultError,\n TData = InfiniteData<TQueryFnData>,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n>(\n options: UseSuspenseInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryFnData,\n TQueryKey,\n TPageParam\n >,\n queryClient?: QueryClient,\n): UseSuspenseInfiniteQueryResult<TData, TError> {\n if (process.env.NODE_ENV !== 'production') {\n if ((options.queryFn as any) === skipToken) {\n console.error('skipToken is not allowed for useSuspenseInfiniteQuery')\n }\n }\n\n return useBaseQuery(\n {\n ...options,\n enabled: true,\n suspense: true,\n throwOnError: defaultThrowOnError,\n },\n InfiniteQueryObserver as typeof QueryObserver,\n queryClient,\n ) as InfiniteQueryObserverSuccessResult<TData, TError>\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,wBAAiD;AACjD,0BAA6B;AAC7B,sBAAoC;AAc7B,SAAS,yBAOd,SAQA,aAC+C;AAC/C,MAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,QAAK,QAAQ,YAAoB,6BAAW;AAC1C,cAAQ,MAAM,uDAAuD;AAAA,IACvE;AAAA,EACF;AAEA,aAAO;AAAA,IACL;AAAA,MACE,GAAG;AAAA,MACH,SAAS;AAAA,MACT,UAAU;AAAA,MACV,cAAc;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/useSuspenseInfiniteQuery.ts"],"sourcesContent":["'use client'\nimport { InfiniteQueryObserver, skipToken } from '@tanstack/query-core'\nimport { useBaseQuery } from './useBaseQuery'\nimport { defaultThrowOnError } from './suspense'\nimport type {\n DefaultError,\n InfiniteData,\n InfiniteQueryObserverSuccessResult,\n QueryClient,\n QueryKey,\n QueryObserver,\n} from '@tanstack/query-core'\nimport type {\n UseSuspenseInfiniteQueryOptions,\n UseSuspenseInfiniteQueryResult,\n} from './types'\n\nexport function useSuspenseInfiniteQuery<\n TQueryFnData,\n TError = DefaultError,\n TData = InfiniteData<TQueryFnData>,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n>(\n options: UseSuspenseInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryFnData,\n TQueryKey,\n TPageParam\n >,\n queryClient?: QueryClient,\n): UseSuspenseInfiniteQueryResult<TData, TError> {\n if (process.env.NODE_ENV !== 'production') {\n if (options.queryFn === skipToken) {\n console.error('skipToken is not allowed for useSuspenseInfiniteQuery')\n }\n }\n\n return useBaseQuery(\n {\n ...options,\n enabled: true,\n suspense: true,\n throwOnError: defaultThrowOnError,\n },\n InfiniteQueryObserver as typeof QueryObserver,\n queryClient,\n ) as InfiniteQueryObserverSuccessResult<TData, TError>\n}\n"],"mappings":";;;AACA,SAAS,uBAAuB,iBAAiB;AACjD,SAAS,oBAAoB;AAC7B,SAAS,2BAA2B;AAc7B,SAAS,yBAOd,SAQA,aAC+C;AAC/C,MAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,QAAI,QAAQ,YAAY,WAAW;AACjC,cAAQ,MAAM,uDAAuD;AAAA,IACvE;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,MACE,GAAG;AAAA,MACH,SAAS;AAAA,MACT,UAAU;AAAA,MACV,cAAc;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/useSuspenseInfiniteQuery.ts"],"sourcesContent":["'use client'\nimport { InfiniteQueryObserver, skipToken } from '@tanstack/query-core'\nimport { useBaseQuery } from './useBaseQuery'\nimport { defaultThrowOnError } from './suspense'\nimport type {\n DefaultError,\n InfiniteData,\n InfiniteQueryObserverSuccessResult,\n QueryClient,\n QueryKey,\n QueryObserver,\n} from '@tanstack/query-core'\nimport type {\n UseSuspenseInfiniteQueryOptions,\n UseSuspenseInfiniteQueryResult,\n} from './types'\n\nexport function useSuspenseInfiniteQuery<\n TQueryFnData,\n TError = DefaultError,\n TData = InfiniteData<TQueryFnData>,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n>(\n options: UseSuspenseInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryFnData,\n TQueryKey,\n TPageParam\n >,\n queryClient?: QueryClient,\n): UseSuspenseInfiniteQueryResult<TData, TError> {\n if (process.env.NODE_ENV !== 'production') {\n if ((options.queryFn as any) === skipToken) {\n console.error('skipToken is not allowed for useSuspenseInfiniteQuery')\n }\n }\n\n return useBaseQuery(\n {\n ...options,\n enabled: true,\n suspense: true,\n throwOnError: defaultThrowOnError,\n },\n InfiniteQueryObserver as typeof QueryObserver,\n queryClient,\n ) as InfiniteQueryObserverSuccessResult<TData, TError>\n}\n"],"mappings":";;;AACA,SAAS,uBAAuB,iBAAiB;AACjD,SAAS,oBAAoB;AAC7B,SAAS,2BAA2B;AAc7B,SAAS,yBAOd,SAQA,aAC+C;AAC/C,MAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,QAAK,QAAQ,YAAoB,WAAW;AAC1C,cAAQ,MAAM,uDAAuD;AAAA,IACvE;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,MACE,GAAG;AAAA,MACH,SAAS;AAAA,MACT,UAAU;AAAA,MACV,cAAc;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/useSuspenseQuery.ts"],"sourcesContent":["'use client'\nimport { QueryObserver, skipToken } from '@tanstack/query-core'\nimport { useBaseQuery } from './useBaseQuery'\nimport { defaultThrowOnError } from './suspense'\nimport type { UseSuspenseQueryOptions, UseSuspenseQueryResult } from './types'\nimport type { DefaultError, QueryClient, QueryKey } from '@tanstack/query-core'\n\nexport function useSuspenseQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UseSuspenseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n): UseSuspenseQueryResult<TData, TError> {\n if (process.env.NODE_ENV !== 'production') {\n if (options.queryFn === skipToken) {\n console.error('skipToken is not allowed for useSuspenseQuery')\n }\n }\n\n return useBaseQuery(\n {\n ...options,\n enabled: true,\n suspense: true,\n throwOnError: defaultThrowOnError,\n placeholderData: undefined,\n },\n QueryObserver,\n queryClient,\n ) as UseSuspenseQueryResult<TData, TError>\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,wBAAyC;AACzC,0BAA6B;AAC7B,sBAAoC;AAI7B,SAAS,iBAMd,SACA,aACuC;AACvC,MAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,QAAI,QAAQ,YAAY,6BAAW;AACjC,cAAQ,MAAM,+CAA+C;AAAA,IAC/D;AAAA,EACF;AAEA,aAAO;AAAA,IACL;AAAA,MACE,GAAG;AAAA,MACH,SAAS;AAAA,MACT,UAAU;AAAA,MACV,cAAc;AAAA,MACd,iBAAiB;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/useSuspenseQuery.ts"],"sourcesContent":["'use client'\nimport { QueryObserver, skipToken } from '@tanstack/query-core'\nimport { useBaseQuery } from './useBaseQuery'\nimport { defaultThrowOnError } from './suspense'\nimport type { UseSuspenseQueryOptions, UseSuspenseQueryResult } from './types'\nimport type { DefaultError, QueryClient, QueryKey } from '@tanstack/query-core'\n\nexport function useSuspenseQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UseSuspenseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n): UseSuspenseQueryResult<TData, TError> {\n if (process.env.NODE_ENV !== 'production') {\n if ((options.queryFn as any) === skipToken) {\n console.error('skipToken is not allowed for useSuspenseQuery')\n }\n }\n\n return useBaseQuery(\n {\n ...options,\n enabled: true,\n suspense: true,\n throwOnError: defaultThrowOnError,\n placeholderData: undefined,\n },\n QueryObserver,\n queryClient,\n ) as UseSuspenseQueryResult<TData, TError>\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,wBAAyC;AACzC,0BAA6B;AAC7B,sBAAoC;AAI7B,SAAS,iBAMd,SACA,aACuC;AACvC,MAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,QAAK,QAAQ,YAAoB,6BAAW;AAC1C,cAAQ,MAAM,+CAA+C;AAAA,IAC/D;AAAA,EACF;AAEA,aAAO;AAAA,IACL;AAAA,MACE,GAAG;AAAA,MACH,SAAS;AAAA,MACT,UAAU;AAAA,MACV,cAAc;AAAA,MACd,iBAAiB;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/useSuspenseQuery.ts"],"sourcesContent":["'use client'\nimport { QueryObserver, skipToken } from '@tanstack/query-core'\nimport { useBaseQuery } from './useBaseQuery'\nimport { defaultThrowOnError } from './suspense'\nimport type { UseSuspenseQueryOptions, UseSuspenseQueryResult } from './types'\nimport type { DefaultError, QueryClient, QueryKey } from '@tanstack/query-core'\n\nexport function useSuspenseQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UseSuspenseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n): UseSuspenseQueryResult<TData, TError> {\n if (process.env.NODE_ENV !== 'production') {\n if (options.queryFn === skipToken) {\n console.error('skipToken is not allowed for useSuspenseQuery')\n }\n }\n\n return useBaseQuery(\n {\n ...options,\n enabled: true,\n suspense: true,\n throwOnError: defaultThrowOnError,\n placeholderData: undefined,\n },\n QueryObserver,\n queryClient,\n ) as UseSuspenseQueryResult<TData, TError>\n}\n"],"mappings":";;;AACA,SAAS,eAAe,iBAAiB;AACzC,SAAS,oBAAoB;AAC7B,SAAS,2BAA2B;AAI7B,SAAS,iBAMd,SACA,aACuC;AACvC,MAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,QAAI,QAAQ,YAAY,WAAW;AACjC,cAAQ,MAAM,+CAA+C;AAAA,IAC/D;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,MACE,GAAG;AAAA,MACH,SAAS;AAAA,MACT,UAAU;AAAA,MACV,cAAc;AAAA,MACd,iBAAiB;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/useSuspenseQuery.ts"],"sourcesContent":["'use client'\nimport { QueryObserver, skipToken } from '@tanstack/query-core'\nimport { useBaseQuery } from './useBaseQuery'\nimport { defaultThrowOnError } from './suspense'\nimport type { UseSuspenseQueryOptions, UseSuspenseQueryResult } from './types'\nimport type { DefaultError, QueryClient, QueryKey } from '@tanstack/query-core'\n\nexport function useSuspenseQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UseSuspenseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n): UseSuspenseQueryResult<TData, TError> {\n if (process.env.NODE_ENV !== 'production') {\n if ((options.queryFn as any) === skipToken) {\n console.error('skipToken is not allowed for useSuspenseQuery')\n }\n }\n\n return useBaseQuery(\n {\n ...options,\n enabled: true,\n suspense: true,\n throwOnError: defaultThrowOnError,\n placeholderData: undefined,\n },\n QueryObserver,\n queryClient,\n ) as UseSuspenseQueryResult<TData, TError>\n}\n"],"mappings":";;;AACA,SAAS,eAAe,iBAAiB;AACzC,SAAS,oBAAoB;AAC7B,SAAS,2BAA2B;AAI7B,SAAS,iBAMd,SACA,aACuC;AACvC,MAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,QAAK,QAAQ,YAAoB,WAAW;AAC1C,cAAQ,MAAM,+CAA+C;AAAA,IAC/D;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,MACE,GAAG;AAAA,MACH,SAAS;AAAA,MACT,UAAU;AAAA,MACV,cAAc;AAAA,MACd,iBAAiB;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/react-query",
3
- "version": "5.59.9",
3
+ "version": "5.59.11",
4
4
  "description": "Hooks for managing, caching and syncing asynchronous and remote data in React",
5
5
  "author": "tannerlinsley",
6
6
  "license": "MIT",
@@ -41,7 +41,7 @@
41
41
  "!build/codemods/**/__tests__"
42
42
  ],
43
43
  "dependencies": {
44
- "@tanstack/query-core": "5.59.9"
44
+ "@tanstack/query-core": "5.59.10"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@types/react": "npm:types-react@rc",
@@ -1,5 +1,5 @@
1
1
  import { describe, expectTypeOf, it, test } from 'vitest'
2
- import { QueryClient, dataTagSymbol } from '@tanstack/query-core'
2
+ import { QueryClient, dataTagSymbol, skipToken } from '@tanstack/query-core'
3
3
  import { infiniteQueryOptions } from '../infiniteQueryOptions'
4
4
  import { useInfiniteQuery } from '../useInfiniteQuery'
5
5
  import { useSuspenseInfiniteQuery } from '../useSuspenseInfiniteQuery'
@@ -134,6 +134,18 @@ describe('infiniteQueryOptions', () => {
134
134
  InfiniteData<string, unknown> | undefined
135
135
  >()
136
136
  })
137
+ it('should throw a type error when using queryFn with skipToken in a suspense query', () => {
138
+ const options = infiniteQueryOptions({
139
+ queryKey: ['key'],
140
+ queryFn:
141
+ Math.random() > 0.5 ? skipToken : () => Promise.resolve('string'),
142
+ getNextPageParam: () => 1,
143
+ initialPageParam: 1,
144
+ })
145
+ // @ts-expect-error TS2345
146
+ const { data } = useSuspenseInfiniteQuery(options)
147
+ expectTypeOf(data).toEqualTypeOf<InfiniteData<string, unknown>>()
148
+ })
137
149
 
138
150
  test('should not be allowed to be passed to non-infinite query functions', () => {
139
151
  const queryClient = new QueryClient()
@@ -158,14 +170,12 @@ describe('infiniteQueryOptions', () => {
158
170
  const queryOptions = infiniteQueryOptions({
159
171
  queryKey: ['example'],
160
172
  queryFn: async () => initialData,
161
- // initialData below errors
162
173
  initialData: initialData
163
174
  ? () => ({ pages: [initialData], pageParams: [] })
164
175
  : undefined,
165
176
  getNextPageParam: () => 1,
166
177
  initialPageParam: 1,
167
178
  })
168
- queryOptions.initialData
169
179
  expectTypeOf(queryOptions.initialData).toMatchTypeOf<
170
180
  | InitialDataFunction<InfiniteData<{ example: boolean }, number>>
171
181
  | InfiniteData<{ example: boolean }, number>
@@ -178,14 +188,12 @@ describe('infiniteQueryOptions', () => {
178
188
  const queryOptions = infiniteQueryOptions({
179
189
  queryKey: ['example'],
180
190
  queryFn: async () => initialData,
181
- // initialData below errors
182
191
  initialData: initialData
183
192
  ? { pages: [initialData], pageParams: [] }
184
193
  : undefined,
185
194
  getNextPageParam: () => 1,
186
195
  initialPageParam: 1,
187
196
  })
188
- queryOptions.initialData
189
197
  expectTypeOf(queryOptions.initialData).toMatchTypeOf<
190
198
  | InitialDataFunction<InfiniteData<{ example: boolean }, number>>
191
199
  | InfiniteData<{ example: boolean }, number>
@@ -12,7 +12,11 @@ import {
12
12
  } from '..'
13
13
  import { createQueryClient, queryKey, renderWithClient, sleep } from './utils'
14
14
 
15
- import type { InfiniteData, UseInfiniteQueryOptions, UseQueryOptions } from '..'
15
+ import type {
16
+ InfiniteData,
17
+ UseSuspenseInfiniteQueryOptions,
18
+ UseSuspenseQueryOptions,
19
+ } from '..'
16
20
  import type { Mock } from 'vitest'
17
21
 
18
22
  const generateQueryFn = (data: string) =>
@@ -56,7 +60,7 @@ describe('usePrefetchQuery', () => {
56
60
  const queryClient = createQueryClient({ queryCache })
57
61
 
58
62
  function Suspended<TData = unknown>(props: {
59
- queryOpts: UseQueryOptions<TData, Error, TData, Array<string>>
63
+ queryOpts: UseSuspenseQueryOptions<TData, Error, TData, Array<string>>
60
64
  children?: React.ReactNode
61
65
  }) {
62
66
  const state = useSuspenseQuery(props.queryOpts)
@@ -303,7 +307,7 @@ describe('usePrefetchInfiniteQuery', () => {
303
307
  const Fallback = vi.fn().mockImplementation(() => <div>Loading...</div>)
304
308
 
305
309
  function Suspended<T = unknown>(props: {
306
- queryOpts: UseInfiniteQueryOptions<
310
+ queryOpts: UseSuspenseInfiniteQueryOptions<
307
311
  T,
308
312
  Error,
309
313
  InfiniteData<T>,
@@ -9,7 +9,10 @@ import { queryOptions } from '../queryOptions'
9
9
  import { useQuery } from '../useQuery'
10
10
  import { useQueries } from '../useQueries'
11
11
  import { useSuspenseQuery } from '../useSuspenseQuery'
12
- import type { QueryObserverResult } from '@tanstack/query-core'
12
+ import type {
13
+ InitialDataFunction,
14
+ QueryObserverResult,
15
+ } from '@tanstack/query-core'
13
16
 
14
17
  describe('queryOptions', () => {
15
18
  it('should not allow excess properties', () => {
@@ -174,6 +177,16 @@ describe('queryOptions', () => {
174
177
  expectTypeOf(data).toEqualTypeOf<unknown>()
175
178
  })
176
179
 
180
+ it('should throw a type error when using queryFn with skipToken in a suspense query', () => {
181
+ const options = queryOptions({
182
+ queryKey: ['key'],
183
+ queryFn: Math.random() > 0.5 ? skipToken : () => Promise.resolve(5),
184
+ })
185
+ // @ts-expect-error TS2345
186
+ const { data } = useSuspenseQuery(options)
187
+ expectTypeOf(data).toEqualTypeOf<number>()
188
+ })
189
+
177
190
  it('should return the proper type when passed to QueriesObserver', () => {
178
191
  const options = queryOptions({
179
192
  queryKey: ['key'],
@@ -205,4 +218,19 @@ describe('queryOptions', () => {
205
218
  },
206
219
  })
207
220
  })
221
+
222
+ it('should allow optional initialData object', () => {
223
+ const testFn = (id?: string) => {
224
+ const options = queryOptions({
225
+ queryKey: ['test'],
226
+ queryFn: async () => 'something string',
227
+ initialData: id ? 'initial string' : undefined,
228
+ })
229
+ expectTypeOf(options.initialData).toMatchTypeOf<
230
+ InitialDataFunction<string> | string | undefined
231
+ >()
232
+ }
233
+ testFn('id')
234
+ testFn()
235
+ })
208
236
  })
@@ -1,7 +1,7 @@
1
1
  import { describe, expectTypeOf, it } from 'vitest'
2
+ import { skipToken } from '@tanstack/query-core'
2
3
  import { useSuspenseQuery } from '../useSuspenseQuery'
3
4
  import { useSuspenseInfiniteQuery } from '../useSuspenseInfiniteQuery'
4
- import type { UseSuspenseQueryOptions } from '..'
5
5
  import type { InfiniteData } from '@tanstack/query-core'
6
6
 
7
7
  describe('useSuspenseQuery', () => {
@@ -23,6 +23,20 @@ describe('useSuspenseQuery', () => {
23
23
  expectTypeOf(status).toEqualTypeOf<'error' | 'success'>()
24
24
  })
25
25
 
26
+ it('should not allow skipToken in queryFn', () => {
27
+ useSuspenseQuery({
28
+ queryKey: ['key'],
29
+ // @ts-expect-error
30
+ queryFn: skipToken,
31
+ })
32
+
33
+ useSuspenseQuery({
34
+ queryKey: ['key'],
35
+ // @ts-expect-error
36
+ queryFn: Math.random() > 0.5 ? skipToken : () => Promise.resolve(5),
37
+ })
38
+ })
39
+
26
40
  it('should not allow placeholderData, enabled or throwOnError props', () => {
27
41
  useSuspenseQuery({
28
42
  queryKey: ['key'],
@@ -70,6 +84,20 @@ describe('useSuspenseInfiniteQuery', () => {
70
84
  expectTypeOf(data).toEqualTypeOf<InfiniteData<number, unknown>>()
71
85
  })
72
86
 
87
+ it('should not allow skipToken in queryFn', () => {
88
+ useSuspenseInfiniteQuery({
89
+ queryKey: ['key'],
90
+ // @ts-expect-error
91
+ queryFn: skipToken,
92
+ })
93
+
94
+ useSuspenseInfiniteQuery({
95
+ queryKey: ['key'],
96
+ // @ts-expect-error
97
+ queryFn: Math.random() > 0.5 ? skipToken : () => Promise.resolve(5),
98
+ })
99
+ })
100
+
73
101
  it('should not have pending status', () => {
74
102
  const { status } = useSuspenseInfiniteQuery({
75
103
  queryKey: ['key'],
@@ -122,14 +150,4 @@ describe('useSuspenseInfiniteQuery', () => {
122
150
  // @ts-expect-error TS2339
123
151
  query.isPlaceholderData
124
152
  })
125
-
126
- it('should not accept skipToken type for queryFn in useSuspenseQuery', () => {
127
- const query: UseSuspenseQueryOptions = {
128
- // @ts-expect-error
129
- queryFn: skipToken,
130
- queryKey: [1],
131
- }
132
-
133
- return query
134
- })
135
153
  })
@@ -1,5 +1,5 @@
1
- import { describe, expect, it, vi } from 'vitest'
2
- import { fireEvent, waitFor } from '@testing-library/react'
1
+ import { afterAll, beforeAll, describe, expect, it, vi } from 'vitest'
2
+ import { act, fireEvent, waitFor } from '@testing-library/react'
3
3
  import * as React from 'react'
4
4
  import { ErrorBoundary } from 'react-error-boundary'
5
5
  import {
@@ -1235,4 +1235,76 @@ describe('useSuspenseQueries', () => {
1235
1235
  expect(count).toBe(1)
1236
1236
  consoleMock.mockRestore()
1237
1237
  })
1238
+
1239
+ describe('gc (with fake timers)', () => {
1240
+ beforeAll(() => {
1241
+ vi.useFakeTimers()
1242
+ })
1243
+
1244
+ afterAll(() => {
1245
+ vi.useRealTimers()
1246
+ })
1247
+
1248
+ it('should gc when unmounted while fetching with low gcTime (#8159)', async () => {
1249
+ const key = queryKey()
1250
+
1251
+ function Page() {
1252
+ return (
1253
+ <React.Suspense fallback="loading">
1254
+ <Component />
1255
+ </React.Suspense>
1256
+ )
1257
+ }
1258
+
1259
+ function Component() {
1260
+ const { data } = useSuspenseQuery({
1261
+ queryKey: key,
1262
+ queryFn: async () => {
1263
+ await sleep(3000)
1264
+ return 'data'
1265
+ },
1266
+ gcTime: 1000,
1267
+ })
1268
+
1269
+ return <div>{data}</div>
1270
+ }
1271
+
1272
+ function Page2() {
1273
+ return <div>page2</div>
1274
+ }
1275
+
1276
+ function App() {
1277
+ const [show, setShow] = React.useState(true)
1278
+ return (
1279
+ <div>
1280
+ {show ? <Page /> : <Page2 />}
1281
+ <button onClick={() => setShow(false)}>hide</button>
1282
+ </div>
1283
+ )
1284
+ }
1285
+
1286
+ const rendered = renderWithClient(queryClient, <App />)
1287
+
1288
+ await act(() => vi.advanceTimersByTimeAsync(200))
1289
+
1290
+ rendered.getByText('loading')
1291
+
1292
+ // unmount while still fetching
1293
+ fireEvent.click(rendered.getByText('hide'))
1294
+
1295
+ await act(() => vi.advanceTimersByTimeAsync(800))
1296
+
1297
+ rendered.getByText('page2')
1298
+
1299
+ // wait for query to be resolved
1300
+ await act(() => vi.advanceTimersByTimeAsync(2000))
1301
+
1302
+ expect(queryClient.getQueryData(key)).toBe('data')
1303
+
1304
+ // wait for gc
1305
+ await act(() => vi.advanceTimersByTimeAsync(1000))
1306
+
1307
+ expect(queryClient.getQueryData(key)).toBe(undefined)
1308
+ })
1309
+ })
1238
1310
  })
@@ -7,7 +7,6 @@ import {
7
7
  createQueryClient,
8
8
  doNotExecute,
9
9
  renderWithClient,
10
- setActTimeout,
11
10
  sleep,
12
11
  } from './utils'
13
12
  import type { MutationState, MutationStatus } from '@tanstack/query-core'
@@ -27,26 +26,24 @@ describe('useIsMutating', () => {
27
26
  const { mutate: mutate1 } = useMutation({
28
27
  mutationKey: ['mutation1'],
29
28
  mutationFn: async () => {
30
- await sleep(150)
29
+ await sleep(50)
31
30
  return 'data'
32
31
  },
33
32
  })
34
33
  const { mutate: mutate2 } = useMutation({
35
34
  mutationKey: ['mutation2'],
36
35
  mutationFn: async () => {
37
- await sleep(50)
36
+ await sleep(10)
38
37
  return 'data'
39
38
  },
40
39
  })
41
40
 
42
- React.useEffect(() => {
43
- mutate1()
44
- setActTimeout(() => {
45
- mutate2()
46
- }, 50)
47
- }, [mutate1, mutate2])
48
-
49
- return null
41
+ return (
42
+ <div>
43
+ <button onClick={() => mutate1()}>mutate1</button>
44
+ <button onClick={() => mutate2()}>mutate2</button>
45
+ </div>
46
+ )
50
47
  }
51
48
 
52
49
  function Page() {
@@ -58,7 +55,10 @@ describe('useIsMutating', () => {
58
55
  )
59
56
  }
60
57
 
61
- renderWithClient(queryClient, <Page />)
58
+ const rendered = renderWithClient(queryClient, <Page />)
59
+ fireEvent.click(rendered.getByRole('button', { name: /mutate1/i }))
60
+ await sleep(10)
61
+ fireEvent.click(rendered.getByRole('button', { name: /mutate2/i }))
62
62
  await waitFor(() => expect(isMutatingArray).toEqual([0, 1, 2, 1, 0]))
63
63
  })
64
64
 
@@ -89,6 +89,47 @@ describe('UseSuspenseQueries config object overload', () => {
89
89
  expectTypeOf(data).toEqualTypeOf<{ wow: boolean }>()
90
90
  })
91
91
 
92
+ it('should not allow skipToken in queryFn', () => {
93
+ useSuspenseQueries({
94
+ queries: [
95
+ {
96
+ queryKey: ['key'],
97
+ // @ts-expect-error
98
+ queryFn: skipToken,
99
+ },
100
+ ],
101
+ })
102
+
103
+ useSuspenseQueries({
104
+ queries: [
105
+ {
106
+ queryKey: ['key'],
107
+ // @ts-expect-error
108
+ queryFn: Math.random() > 0.5 ? skipToken : () => Promise.resolve(5),
109
+ },
110
+ ],
111
+ })
112
+ })
113
+
114
+ it('TData should have correct type when conditional skipToken is passed', () => {
115
+ const queryResults = useSuspenseQueries({
116
+ queries: [
117
+ {
118
+ queryKey: ['withSkipToken'],
119
+ // @ts-expect-error
120
+ queryFn: Math.random() > 0.5 ? skipToken : () => Promise.resolve(5),
121
+ },
122
+ ],
123
+ })
124
+
125
+ const firstResult = queryResults[0]
126
+
127
+ expectTypeOf(firstResult).toEqualTypeOf<
128
+ UseSuspenseQueryResult<number, Error>
129
+ >()
130
+ expectTypeOf(firstResult.data).toEqualTypeOf<number>()
131
+ })
132
+
92
133
  describe('custom hook', () => {
93
134
  it('should allow custom hooks using UseQueryOptions', () => {
94
135
  type Data = string
@@ -113,22 +154,4 @@ describe('UseSuspenseQueries config object overload', () => {
113
154
  expectTypeOf(data).toEqualTypeOf<Data>()
114
155
  })
115
156
  })
116
-
117
- it('TData should have correct type when conditional skipToken is passed', () => {
118
- const queryResults = useSuspenseQueries({
119
- queries: [
120
- {
121
- queryKey: ['withSkipToken'],
122
- queryFn: Math.random() > 0.5 ? skipToken : () => Promise.resolve(5),
123
- },
124
- ],
125
- })
126
-
127
- const firstResult = queryResults[0]
128
-
129
- expectTypeOf(firstResult).toEqualTypeOf<
130
- UseSuspenseQueryResult<number, Error>
131
- >()
132
- expectTypeOf(firstResult.data).toEqualTypeOf<number>()
133
- })
134
157
  })
package/src/index.ts CHANGED
@@ -21,11 +21,13 @@ export { queryOptions } from './queryOptions'
21
21
  export type {
22
22
  DefinedInitialDataOptions,
23
23
  UndefinedInitialDataOptions,
24
+ UnusedSkipTokenOptions,
24
25
  } from './queryOptions'
25
26
  export { infiniteQueryOptions } from './infiniteQueryOptions'
26
27
  export type {
27
28
  DefinedInitialDataInfiniteOptions,
28
29
  UndefinedInitialDataInfiniteOptions,
30
+ UnusedSkipTokenInfiniteOptions,
29
31
  } from './infiniteQueryOptions'
30
32
  export {
31
33
  QueryClientContext,