@tanstack/react-query 5.0.0-beta.2 → 5.0.0-beta.23

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 (131) hide show
  1. package/build/codemods/coverage/base.css +224 -0
  2. package/build/codemods/coverage/block-navigation.js +87 -0
  3. package/build/codemods/coverage/clover.xml +6 -0
  4. package/build/codemods/coverage/coverage-final.json +1 -0
  5. package/build/codemods/coverage/favicon.png +0 -0
  6. package/build/codemods/coverage/index.html +101 -0
  7. package/build/codemods/coverage/prettify.css +1 -0
  8. package/build/codemods/coverage/prettify.js +2 -0
  9. package/build/codemods/coverage/sort-arrow-sprite.png +0 -0
  10. package/build/codemods/coverage/sorter.js +196 -0
  11. package/build/legacy/index.cjs +3 -0
  12. package/build/legacy/index.cjs.map +1 -1
  13. package/build/legacy/index.d.cts +3 -2
  14. package/build/legacy/index.d.ts +3 -2
  15. package/build/legacy/index.js +2 -0
  16. package/build/legacy/index.js.map +1 -1
  17. package/build/legacy/infiniteQueryOptions.cjs.map +1 -1
  18. package/build/legacy/infiniteQueryOptions.d.cts +1 -1
  19. package/build/legacy/infiniteQueryOptions.d.ts +1 -1
  20. package/build/legacy/infiniteQueryOptions.js.map +1 -1
  21. package/build/legacy/queryOptions.cjs.map +1 -1
  22. package/build/legacy/queryOptions.d.cts +4 -3
  23. package/build/legacy/queryOptions.d.ts +4 -3
  24. package/build/legacy/queryOptions.js.map +1 -1
  25. package/build/legacy/suspense.cjs +3 -0
  26. package/build/legacy/suspense.cjs.map +1 -1
  27. package/build/legacy/suspense.d.cts +3 -2
  28. package/build/legacy/suspense.d.ts +3 -2
  29. package/build/legacy/suspense.js +2 -0
  30. package/build/legacy/suspense.js.map +1 -1
  31. package/build/legacy/types.cjs.map +1 -1
  32. package/build/legacy/types.d.cts +4 -4
  33. package/build/legacy/types.d.ts +4 -4
  34. package/build/legacy/useInfiniteQuery.cjs.map +1 -1
  35. package/build/legacy/useInfiniteQuery.d.cts +2 -1
  36. package/build/legacy/useInfiniteQuery.d.ts +2 -1
  37. package/build/legacy/useInfiniteQuery.js.map +1 -1
  38. package/build/legacy/useQueries.cjs.map +1 -1
  39. package/build/legacy/useQueries.d.cts +4 -4
  40. package/build/legacy/useQueries.d.ts +4 -4
  41. package/build/legacy/useQueries.js.map +1 -1
  42. package/build/legacy/useQuery.cjs.map +1 -1
  43. package/build/legacy/useQuery.d.cts +2 -1
  44. package/build/legacy/useQuery.d.ts +2 -1
  45. package/build/legacy/useQuery.js.map +1 -1
  46. package/build/legacy/useSuspenseQueries.cjs +47 -0
  47. package/build/legacy/useSuspenseQueries.cjs.map +1 -0
  48. package/build/legacy/useSuspenseQueries.d.cts +66 -0
  49. package/build/legacy/useSuspenseQueries.d.ts +66 -0
  50. package/build/legacy/useSuspenseQueries.js +23 -0
  51. package/build/legacy/useSuspenseQueries.js.map +1 -0
  52. package/build/legacy/useSuspenseQuery.cjs +2 -1
  53. package/build/legacy/useSuspenseQuery.cjs.map +1 -1
  54. package/build/legacy/useSuspenseQuery.js +2 -1
  55. package/build/legacy/useSuspenseQuery.js.map +1 -1
  56. package/build/legacy/utils.cjs.map +1 -1
  57. package/build/legacy/utils.d.cts +1 -1
  58. package/build/legacy/utils.d.ts +1 -1
  59. package/build/legacy/utils.js.map +1 -1
  60. package/build/modern/index.cjs +3 -0
  61. package/build/modern/index.cjs.map +1 -1
  62. package/build/modern/index.d.cts +3 -2
  63. package/build/modern/index.d.ts +3 -2
  64. package/build/modern/index.js +2 -0
  65. package/build/modern/index.js.map +1 -1
  66. package/build/modern/infiniteQueryOptions.cjs.map +1 -1
  67. package/build/modern/infiniteQueryOptions.d.cts +1 -1
  68. package/build/modern/infiniteQueryOptions.d.ts +1 -1
  69. package/build/modern/infiniteQueryOptions.js.map +1 -1
  70. package/build/modern/queryOptions.cjs.map +1 -1
  71. package/build/modern/queryOptions.d.cts +4 -3
  72. package/build/modern/queryOptions.d.ts +4 -3
  73. package/build/modern/queryOptions.js.map +1 -1
  74. package/build/modern/suspense.cjs +3 -0
  75. package/build/modern/suspense.cjs.map +1 -1
  76. package/build/modern/suspense.d.cts +3 -2
  77. package/build/modern/suspense.d.ts +3 -2
  78. package/build/modern/suspense.js +2 -0
  79. package/build/modern/suspense.js.map +1 -1
  80. package/build/modern/types.cjs.map +1 -1
  81. package/build/modern/types.d.cts +4 -4
  82. package/build/modern/types.d.ts +4 -4
  83. package/build/modern/useInfiniteQuery.cjs.map +1 -1
  84. package/build/modern/useInfiniteQuery.d.cts +2 -1
  85. package/build/modern/useInfiniteQuery.d.ts +2 -1
  86. package/build/modern/useInfiniteQuery.js.map +1 -1
  87. package/build/modern/useQueries.cjs.map +1 -1
  88. package/build/modern/useQueries.d.cts +4 -4
  89. package/build/modern/useQueries.d.ts +4 -4
  90. package/build/modern/useQueries.js.map +1 -1
  91. package/build/modern/useQuery.cjs.map +1 -1
  92. package/build/modern/useQuery.d.cts +2 -1
  93. package/build/modern/useQuery.d.ts +2 -1
  94. package/build/modern/useQuery.js.map +1 -1
  95. package/build/modern/useSuspenseQueries.cjs +47 -0
  96. package/build/modern/useSuspenseQueries.cjs.map +1 -0
  97. package/build/modern/useSuspenseQueries.d.cts +66 -0
  98. package/build/modern/useSuspenseQueries.d.ts +66 -0
  99. package/build/modern/useSuspenseQueries.js +23 -0
  100. package/build/modern/useSuspenseQueries.js.map +1 -0
  101. package/build/modern/useSuspenseQuery.cjs +2 -1
  102. package/build/modern/useSuspenseQuery.cjs.map +1 -1
  103. package/build/modern/useSuspenseQuery.js +2 -1
  104. package/build/modern/useSuspenseQuery.js.map +1 -1
  105. package/build/modern/utils.cjs.map +1 -1
  106. package/build/modern/utils.d.cts +1 -1
  107. package/build/modern/utils.d.ts +1 -1
  108. package/build/modern/utils.js.map +1 -1
  109. package/package.json +8 -4
  110. package/src/__tests__/QueryResetErrorBoundary.test.tsx +10 -6
  111. package/src/__tests__/ssr.test.tsx +2 -2
  112. package/src/__tests__/suspense.test.tsx +94 -386
  113. package/src/__tests__/useInfiniteQuery.test.tsx +44 -44
  114. package/src/__tests__/useInfiniteQuery.type.test.tsx +24 -13
  115. package/src/__tests__/useIsFetching.test.tsx +2 -2
  116. package/src/__tests__/useMutation.test.tsx +4 -4
  117. package/src/__tests__/useMutationState.test.tsx +4 -4
  118. package/src/__tests__/useQueries.test.tsx +14 -12
  119. package/src/__tests__/useQuery.test.tsx +109 -80
  120. package/src/__tests__/useQuery.types.test.tsx +36 -55
  121. package/src/index.ts +13 -0
  122. package/src/infiniteQueryOptions.ts +3 -1
  123. package/src/queryOptions.ts +19 -7
  124. package/src/suspense.ts +12 -0
  125. package/src/types.ts +18 -12
  126. package/src/useInfiniteQuery.ts +7 -2
  127. package/src/useQueries.ts +34 -28
  128. package/src/useQuery.ts +3 -1
  129. package/src/useSuspenseQueries.ts +164 -0
  130. package/src/useSuspenseQuery.ts +2 -1
  131. package/src/utils.ts +1 -1
@@ -0,0 +1,66 @@
1
+ import { UseSuspenseQueryOptions, UseSuspenseQueryResult } from './types.cjs';
2
+ import { DefaultError, QueryClient, QueryFunction } from '@tanstack/query-core';
3
+
4
+ type MAXIMUM_DEPTH = 20;
5
+ type GetSuspenseOptions<T> = T extends {
6
+ queryFnData: infer TQueryFnData;
7
+ error?: infer TError;
8
+ data: infer TData;
9
+ } ? UseSuspenseQueryOptions<TQueryFnData, TError, TData> : T extends {
10
+ queryFnData: infer TQueryFnData;
11
+ error?: infer TError;
12
+ } ? UseSuspenseQueryOptions<TQueryFnData, TError> : T extends {
13
+ data: infer TData;
14
+ error?: infer TError;
15
+ } ? UseSuspenseQueryOptions<unknown, TError, TData> : T extends [infer TQueryFnData, infer TError, infer TData] ? UseSuspenseQueryOptions<TQueryFnData, TError, TData> : T extends [infer TQueryFnData, infer TError] ? UseSuspenseQueryOptions<TQueryFnData, TError> : T extends [infer TQueryFnData] ? UseSuspenseQueryOptions<TQueryFnData> : T extends {
16
+ queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey>;
17
+ select: (data: any) => infer TData;
18
+ } ? UseSuspenseQueryOptions<TQueryFnData, Error, TData, TQueryKey> : T extends {
19
+ queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey>;
20
+ } ? UseSuspenseQueryOptions<TQueryFnData, Error, TQueryFnData, TQueryKey> : UseSuspenseQueryOptions;
21
+ type GetSuspenseResults<T> = T extends {
22
+ queryFnData: any;
23
+ error?: infer TError;
24
+ data: infer TData;
25
+ } ? UseSuspenseQueryResult<TData, TError> : T extends {
26
+ queryFnData: infer TQueryFnData;
27
+ error?: infer TError;
28
+ } ? UseSuspenseQueryResult<TQueryFnData, TError> : T extends {
29
+ data: infer TData;
30
+ error?: infer TError;
31
+ } ? UseSuspenseQueryResult<TData, TError> : T extends [any, infer TError, infer TData] ? UseSuspenseQueryResult<TData, TError> : T extends [infer TQueryFnData, infer TError] ? UseSuspenseQueryResult<TQueryFnData, TError> : T extends [infer TQueryFnData] ? UseSuspenseQueryResult<TQueryFnData> : T extends {
32
+ queryFn?: QueryFunction<unknown, any>;
33
+ select: (data: any) => infer TData;
34
+ } ? UseSuspenseQueryResult<TData> : T extends {
35
+ queryFn?: QueryFunction<infer TQueryFnData, any>;
36
+ } ? UseSuspenseQueryResult<TQueryFnData> : UseSuspenseQueryResult;
37
+ /**
38
+ * SuspenseQueriesOptions reducer recursively unwraps function arguments to infer/enforce type param
39
+ */
40
+ type SuspenseQueriesOptions<T extends Array<any>, Result extends Array<any> = [], Depth extends ReadonlyArray<number> = []> = Depth['length'] extends MAXIMUM_DEPTH ? Array<UseSuspenseQueryOptions> : T extends [] ? [] : T extends [infer Head] ? [...Result, GetSuspenseOptions<Head>] : T extends [infer Head, ...infer Tail] ? SuspenseQueriesOptions<[
41
+ ...Tail
42
+ ], [
43
+ ...Result,
44
+ GetSuspenseOptions<Head>
45
+ ], [
46
+ ...Depth,
47
+ 1
48
+ ]> : Array<unknown> extends T ? T : T extends Array<UseSuspenseQueryOptions<infer TQueryFnData, infer TError, infer TData, infer TQueryKey>> ? Array<UseSuspenseQueryOptions<TQueryFnData, TError, TData, TQueryKey>> : Array<UseSuspenseQueryOptions>;
49
+ /**
50
+ * SuspenseQueriesResults reducer recursively maps type param to results
51
+ */
52
+ type SuspenseQueriesResults<T extends Array<any>, Result extends Array<any> = [], Depth extends ReadonlyArray<number> = []> = Depth['length'] extends MAXIMUM_DEPTH ? Array<UseSuspenseQueryResult> : T extends [] ? [] : T extends [infer Head] ? [...Result, GetSuspenseResults<Head>] : T extends [infer Head, ...infer Tail] ? SuspenseQueriesResults<[
53
+ ...Tail
54
+ ], [
55
+ ...Result,
56
+ GetSuspenseResults<Head>
57
+ ], [
58
+ ...Depth,
59
+ 1
60
+ ]> : T extends Array<UseSuspenseQueryOptions<infer TQueryFnData, infer TError, infer TData, any>> ? Array<UseSuspenseQueryResult<unknown extends TData ? TQueryFnData : TData, unknown extends TError ? DefaultError : TError>> : Array<UseSuspenseQueryResult>;
61
+ declare function useSuspenseQueries<T extends Array<any>, TCombinedResult = SuspenseQueriesResults<T>>(options: {
62
+ queries: readonly [...SuspenseQueriesOptions<T>];
63
+ combine?: (result: SuspenseQueriesResults<T>) => TCombinedResult;
64
+ }, queryClient?: QueryClient): TCombinedResult;
65
+
66
+ export { SuspenseQueriesOptions, SuspenseQueriesResults, useSuspenseQueries };
@@ -0,0 +1,66 @@
1
+ import { UseSuspenseQueryOptions, UseSuspenseQueryResult } from './types.js';
2
+ import { DefaultError, QueryClient, QueryFunction } from '@tanstack/query-core';
3
+
4
+ type MAXIMUM_DEPTH = 20;
5
+ type GetSuspenseOptions<T> = T extends {
6
+ queryFnData: infer TQueryFnData;
7
+ error?: infer TError;
8
+ data: infer TData;
9
+ } ? UseSuspenseQueryOptions<TQueryFnData, TError, TData> : T extends {
10
+ queryFnData: infer TQueryFnData;
11
+ error?: infer TError;
12
+ } ? UseSuspenseQueryOptions<TQueryFnData, TError> : T extends {
13
+ data: infer TData;
14
+ error?: infer TError;
15
+ } ? UseSuspenseQueryOptions<unknown, TError, TData> : T extends [infer TQueryFnData, infer TError, infer TData] ? UseSuspenseQueryOptions<TQueryFnData, TError, TData> : T extends [infer TQueryFnData, infer TError] ? UseSuspenseQueryOptions<TQueryFnData, TError> : T extends [infer TQueryFnData] ? UseSuspenseQueryOptions<TQueryFnData> : T extends {
16
+ queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey>;
17
+ select: (data: any) => infer TData;
18
+ } ? UseSuspenseQueryOptions<TQueryFnData, Error, TData, TQueryKey> : T extends {
19
+ queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey>;
20
+ } ? UseSuspenseQueryOptions<TQueryFnData, Error, TQueryFnData, TQueryKey> : UseSuspenseQueryOptions;
21
+ type GetSuspenseResults<T> = T extends {
22
+ queryFnData: any;
23
+ error?: infer TError;
24
+ data: infer TData;
25
+ } ? UseSuspenseQueryResult<TData, TError> : T extends {
26
+ queryFnData: infer TQueryFnData;
27
+ error?: infer TError;
28
+ } ? UseSuspenseQueryResult<TQueryFnData, TError> : T extends {
29
+ data: infer TData;
30
+ error?: infer TError;
31
+ } ? UseSuspenseQueryResult<TData, TError> : T extends [any, infer TError, infer TData] ? UseSuspenseQueryResult<TData, TError> : T extends [infer TQueryFnData, infer TError] ? UseSuspenseQueryResult<TQueryFnData, TError> : T extends [infer TQueryFnData] ? UseSuspenseQueryResult<TQueryFnData> : T extends {
32
+ queryFn?: QueryFunction<unknown, any>;
33
+ select: (data: any) => infer TData;
34
+ } ? UseSuspenseQueryResult<TData> : T extends {
35
+ queryFn?: QueryFunction<infer TQueryFnData, any>;
36
+ } ? UseSuspenseQueryResult<TQueryFnData> : UseSuspenseQueryResult;
37
+ /**
38
+ * SuspenseQueriesOptions reducer recursively unwraps function arguments to infer/enforce type param
39
+ */
40
+ type SuspenseQueriesOptions<T extends Array<any>, Result extends Array<any> = [], Depth extends ReadonlyArray<number> = []> = Depth['length'] extends MAXIMUM_DEPTH ? Array<UseSuspenseQueryOptions> : T extends [] ? [] : T extends [infer Head] ? [...Result, GetSuspenseOptions<Head>] : T extends [infer Head, ...infer Tail] ? SuspenseQueriesOptions<[
41
+ ...Tail
42
+ ], [
43
+ ...Result,
44
+ GetSuspenseOptions<Head>
45
+ ], [
46
+ ...Depth,
47
+ 1
48
+ ]> : Array<unknown> extends T ? T : T extends Array<UseSuspenseQueryOptions<infer TQueryFnData, infer TError, infer TData, infer TQueryKey>> ? Array<UseSuspenseQueryOptions<TQueryFnData, TError, TData, TQueryKey>> : Array<UseSuspenseQueryOptions>;
49
+ /**
50
+ * SuspenseQueriesResults reducer recursively maps type param to results
51
+ */
52
+ type SuspenseQueriesResults<T extends Array<any>, Result extends Array<any> = [], Depth extends ReadonlyArray<number> = []> = Depth['length'] extends MAXIMUM_DEPTH ? Array<UseSuspenseQueryResult> : T extends [] ? [] : T extends [infer Head] ? [...Result, GetSuspenseResults<Head>] : T extends [infer Head, ...infer Tail] ? SuspenseQueriesResults<[
53
+ ...Tail
54
+ ], [
55
+ ...Result,
56
+ GetSuspenseResults<Head>
57
+ ], [
58
+ ...Depth,
59
+ 1
60
+ ]> : T extends Array<UseSuspenseQueryOptions<infer TQueryFnData, infer TError, infer TData, any>> ? Array<UseSuspenseQueryResult<unknown extends TData ? TQueryFnData : TData, unknown extends TError ? DefaultError : TError>> : Array<UseSuspenseQueryResult>;
61
+ declare function useSuspenseQueries<T extends Array<any>, TCombinedResult = SuspenseQueriesResults<T>>(options: {
62
+ queries: readonly [...SuspenseQueriesOptions<T>];
63
+ combine?: (result: SuspenseQueriesResults<T>) => TCombinedResult;
64
+ }, queryClient?: QueryClient): TCombinedResult;
65
+
66
+ export { SuspenseQueriesOptions, SuspenseQueriesResults, useSuspenseQueries };
@@ -0,0 +1,23 @@
1
+ "use client";
2
+
3
+ // src/useSuspenseQueries.ts
4
+ import { useQueries } from "./useQueries.js";
5
+ import { defaultThrowOnError } from "./suspense.js";
6
+ function useSuspenseQueries(options, queryClient) {
7
+ return useQueries(
8
+ {
9
+ ...options,
10
+ queries: options.queries.map((query) => ({
11
+ ...query,
12
+ suspense: true,
13
+ throwOnError: defaultThrowOnError,
14
+ enabled: true
15
+ }))
16
+ },
17
+ queryClient
18
+ );
19
+ }
20
+ export {
21
+ useSuspenseQueries
22
+ };
23
+ //# sourceMappingURL=useSuspenseQueries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/useSuspenseQueries.ts"],"sourcesContent":["'use client'\nimport { useQueries } from './useQueries'\nimport { defaultThrowOnError } from './suspense'\nimport type { UseSuspenseQueryOptions, UseSuspenseQueryResult } from './types'\nimport type {\n DefaultError,\n QueryClient,\n QueryFunction,\n} from '@tanstack/query-core'\n\n// Avoid TS depth-limit error in case of large array literal\ntype MAXIMUM_DEPTH = 20\n\ntype GetSuspenseOptions<T> =\n // Part 1: responsible for applying explicit type parameter to function arguments, if object { queryFnData: TQueryFnData, error: TError, data: TData }\n T extends {\n queryFnData: infer TQueryFnData\n error?: infer TError\n data: infer TData\n }\n ? UseSuspenseQueryOptions<TQueryFnData, TError, TData>\n : T extends { queryFnData: infer TQueryFnData; error?: infer TError }\n ? UseSuspenseQueryOptions<TQueryFnData, TError>\n : T extends { data: infer TData; error?: infer TError }\n ? UseSuspenseQueryOptions<unknown, TError, TData>\n : // Part 2: responsible for applying explicit type parameter to function arguments, if tuple [TQueryFnData, TError, TData]\n T extends [infer TQueryFnData, infer TError, infer TData]\n ? UseSuspenseQueryOptions<TQueryFnData, TError, TData>\n : T extends [infer TQueryFnData, infer TError]\n ? UseSuspenseQueryOptions<TQueryFnData, TError>\n : T extends [infer TQueryFnData]\n ? UseSuspenseQueryOptions<TQueryFnData>\n : // Part 3: responsible for inferring and enforcing type if no explicit parameter was provided\n T extends {\n queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey>\n select: (data: any) => infer TData\n }\n ? UseSuspenseQueryOptions<TQueryFnData, Error, TData, TQueryKey>\n : T extends { queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey> }\n ? UseSuspenseQueryOptions<TQueryFnData, Error, TQueryFnData, TQueryKey>\n : // Fallback\n UseSuspenseQueryOptions\n\ntype GetSuspenseResults<T> =\n // Part 1: responsible for mapping explicit type parameter to function result, if object\n T extends { queryFnData: any; error?: infer TError; data: infer TData }\n ? UseSuspenseQueryResult<TData, TError>\n : T extends { queryFnData: infer TQueryFnData; error?: infer TError }\n ? UseSuspenseQueryResult<TQueryFnData, TError>\n : T extends { data: infer TData; error?: infer TError }\n ? UseSuspenseQueryResult<TData, TError>\n : // Part 2: responsible for mapping explicit type parameter to function result, if tuple\n T extends [any, infer TError, infer TData]\n ? UseSuspenseQueryResult<TData, TError>\n : T extends [infer TQueryFnData, infer TError]\n ? UseSuspenseQueryResult<TQueryFnData, TError>\n : T extends [infer TQueryFnData]\n ? UseSuspenseQueryResult<TQueryFnData>\n : // Part 3: responsible for mapping inferred type to results, if no explicit parameter was provided\n T extends {\n queryFn?: QueryFunction<unknown, any>\n select: (data: any) => infer TData\n }\n ? UseSuspenseQueryResult<TData>\n : T extends { queryFn?: QueryFunction<infer TQueryFnData, any> }\n ? UseSuspenseQueryResult<TQueryFnData>\n : // Fallback\n UseSuspenseQueryResult\n\n/**\n * SuspenseQueriesOptions reducer recursively unwraps function arguments to infer/enforce type param\n */\nexport type SuspenseQueriesOptions<\n T extends Array<any>,\n Result extends Array<any> = [],\n Depth extends ReadonlyArray<number> = [],\n> = Depth['length'] extends MAXIMUM_DEPTH\n ? Array<UseSuspenseQueryOptions>\n : T extends []\n ? []\n : T extends [infer Head]\n ? [...Result, GetSuspenseOptions<Head>]\n : T extends [infer Head, ...infer Tail]\n ? SuspenseQueriesOptions<\n [...Tail],\n [...Result, GetSuspenseOptions<Head>],\n [...Depth, 1]\n >\n : Array<unknown> extends T\n ? T\n : // If T is *some* array but we couldn't assign unknown[] to it, then it must hold some known/homogenous type!\n // use this to infer the param types in the case of Array.map() argument\n T extends Array<\n UseSuspenseQueryOptions<\n infer TQueryFnData,\n infer TError,\n infer TData,\n infer TQueryKey\n >\n >\n ? Array<UseSuspenseQueryOptions<TQueryFnData, TError, TData, TQueryKey>>\n : // Fallback\n Array<UseSuspenseQueryOptions>\n\n/**\n * SuspenseQueriesResults reducer recursively maps type param to results\n */\nexport type SuspenseQueriesResults<\n T extends Array<any>,\n Result extends Array<any> = [],\n Depth extends ReadonlyArray<number> = [],\n> = Depth['length'] extends MAXIMUM_DEPTH\n ? Array<UseSuspenseQueryResult>\n : T extends []\n ? []\n : T extends [infer Head]\n ? [...Result, GetSuspenseResults<Head>]\n : T extends [infer Head, ...infer Tail]\n ? SuspenseQueriesResults<\n [...Tail],\n [...Result, GetSuspenseResults<Head>],\n [...Depth, 1]\n >\n : T extends Array<\n UseSuspenseQueryOptions<\n infer TQueryFnData,\n infer TError,\n infer TData,\n any\n >\n >\n ? // Dynamic-size (homogenous) UseQueryOptions array: map directly to array of results\n Array<\n UseSuspenseQueryResult<\n unknown extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >\n >\n : // Fallback\n Array<UseSuspenseQueryResult>\n\nexport function useSuspenseQueries<\n T extends Array<any>,\n TCombinedResult = SuspenseQueriesResults<T>,\n>(\n options: {\n queries: readonly [...SuspenseQueriesOptions<T>]\n combine?: (result: SuspenseQueriesResults<T>) => TCombinedResult\n },\n queryClient?: QueryClient,\n): TCombinedResult {\n return useQueries(\n {\n ...options,\n queries: options.queries.map((query) => ({\n ...query,\n suspense: true,\n throwOnError: defaultThrowOnError,\n enabled: true,\n })),\n } as any,\n queryClient,\n )\n}\n"],"mappings":";;;AACA,SAAS,kBAAkB;AAC3B,SAAS,2BAA2B;AA2I7B,SAAS,mBAId,SAIA,aACiB;AACjB,SAAO;AAAA,IACL;AAAA,MACE,GAAG;AAAA,MACH,SAAS,QAAQ,QAAQ,IAAI,CAAC,WAAW;AAAA,QACvC,GAAG;AAAA,QACH,UAAU;AAAA,QACV,cAAc;AAAA,QACd,SAAS;AAAA,MACX,EAAE;AAAA,IACJ;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
@@ -26,13 +26,14 @@ __export(useSuspenseQuery_exports, {
26
26
  module.exports = __toCommonJS(useSuspenseQuery_exports);
27
27
  var import_query_core = require("@tanstack/query-core");
28
28
  var import_useBaseQuery = require("./useBaseQuery.cjs");
29
+ var import_suspense = require("./suspense.cjs");
29
30
  function useSuspenseQuery(options, queryClient) {
30
31
  return (0, import_useBaseQuery.useBaseQuery)(
31
32
  {
32
33
  ...options,
33
34
  enabled: true,
34
35
  suspense: true,
35
- throwOnError: true
36
+ throwOnError: import_suspense.defaultThrowOnError
36
37
  },
37
38
  import_query_core.QueryObserver,
38
39
  queryClient
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/useSuspenseQuery.ts"],"sourcesContent":["'use client'\nimport { QueryObserver } from '@tanstack/query-core'\nimport { useBaseQuery } from './useBaseQuery'\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 return useBaseQuery(\n {\n ...options,\n enabled: true,\n suspense: true,\n throwOnError: true,\n },\n QueryObserver,\n queryClient,\n ) as UseSuspenseQueryResult<TData, TError>\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,wBAA8B;AAC9B,0BAA6B;AAItB,SAAS,iBAMd,SACA,aACuC;AACvC,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/useSuspenseQuery.ts"],"sourcesContent":["'use client'\nimport { QueryObserver } 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 return useBaseQuery(\n {\n ...options,\n enabled: true,\n suspense: true,\n throwOnError: defaultThrowOnError,\n },\n QueryObserver,\n queryClient,\n ) as UseSuspenseQueryResult<TData, TError>\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,wBAA8B;AAC9B,0BAA6B;AAC7B,sBAAoC;AAI7B,SAAS,iBAMd,SACA,aACuC;AACvC,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":[]}
@@ -3,13 +3,14 @@
3
3
  // src/useSuspenseQuery.ts
4
4
  import { QueryObserver } from "@tanstack/query-core";
5
5
  import { useBaseQuery } from "./useBaseQuery.js";
6
+ import { defaultThrowOnError } from "./suspense.js";
6
7
  function useSuspenseQuery(options, queryClient) {
7
8
  return useBaseQuery(
8
9
  {
9
10
  ...options,
10
11
  enabled: true,
11
12
  suspense: true,
12
- throwOnError: true
13
+ throwOnError: defaultThrowOnError
13
14
  },
14
15
  QueryObserver,
15
16
  queryClient
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/useSuspenseQuery.ts"],"sourcesContent":["'use client'\nimport { QueryObserver } from '@tanstack/query-core'\nimport { useBaseQuery } from './useBaseQuery'\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 return useBaseQuery(\n {\n ...options,\n enabled: true,\n suspense: true,\n throwOnError: true,\n },\n QueryObserver,\n queryClient,\n ) as UseSuspenseQueryResult<TData, TError>\n}\n"],"mappings":";;;AACA,SAAS,qBAAqB;AAC9B,SAAS,oBAAoB;AAItB,SAAS,iBAMd,SACA,aACuC;AACvC,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/useSuspenseQuery.ts"],"sourcesContent":["'use client'\nimport { QueryObserver } 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 return useBaseQuery(\n {\n ...options,\n enabled: true,\n suspense: true,\n throwOnError: defaultThrowOnError,\n },\n QueryObserver,\n queryClient,\n ) as UseSuspenseQueryResult<TData, TError>\n}\n"],"mappings":";;;AACA,SAAS,qBAAqB;AAC9B,SAAS,oBAAoB;AAC7B,SAAS,2BAA2B;AAI7B,SAAS,iBAMd,SACA,aACuC;AACvC,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/utils.ts"],"sourcesContent":["export function shouldThrowError<T extends (...args: any[]) => boolean>(\n throwError: boolean | T | undefined,\n params: Parameters<T>,\n): boolean {\n // Allow throwError function to override throwing behavior on a per-error basis\n if (typeof throwError === 'function') {\n return throwError(...params)\n }\n\n return !!throwError\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,SAAS,iBACd,YACA,QACS;AAET,MAAI,OAAO,eAAe,YAAY;AACpC,WAAO,WAAW,GAAG,MAAM;AAAA,EAC7B;AAEA,SAAO,CAAC,CAAC;AACX;","names":[]}
1
+ {"version":3,"sources":["../../src/utils.ts"],"sourcesContent":["export function shouldThrowError<T extends (...args: Array<any>) => boolean>(\n throwError: boolean | T | undefined,\n params: Parameters<T>,\n): boolean {\n // Allow throwError function to override throwing behavior on a per-error basis\n if (typeof throwError === 'function') {\n return throwError(...params)\n }\n\n return !!throwError\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,SAAS,iBACd,YACA,QACS;AAET,MAAI,OAAO,eAAe,YAAY;AACpC,WAAO,WAAW,GAAG,MAAM;AAAA,EAC7B;AAEA,SAAO,CAAC,CAAC;AACX;","names":[]}
@@ -1,3 +1,3 @@
1
- declare function shouldThrowError<T extends (...args: any[]) => boolean>(throwError: boolean | T | undefined, params: Parameters<T>): boolean;
1
+ declare function shouldThrowError<T extends (...args: Array<any>) => boolean>(throwError: boolean | T | undefined, params: Parameters<T>): boolean;
2
2
 
3
3
  export { shouldThrowError };
@@ -1,3 +1,3 @@
1
- declare function shouldThrowError<T extends (...args: any[]) => boolean>(throwError: boolean | T | undefined, params: Parameters<T>): boolean;
1
+ declare function shouldThrowError<T extends (...args: Array<any>) => boolean>(throwError: boolean | T | undefined, params: Parameters<T>): boolean;
2
2
 
3
3
  export { shouldThrowError };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils.ts"],"sourcesContent":["export function shouldThrowError<T extends (...args: any[]) => boolean>(\n throwError: boolean | T | undefined,\n params: Parameters<T>,\n): boolean {\n // Allow throwError function to override throwing behavior on a per-error basis\n if (typeof throwError === 'function') {\n return throwError(...params)\n }\n\n return !!throwError\n}\n"],"mappings":";AAAO,SAAS,iBACd,YACA,QACS;AAET,MAAI,OAAO,eAAe,YAAY;AACpC,WAAO,WAAW,GAAG,MAAM;AAAA,EAC7B;AAEA,SAAO,CAAC,CAAC;AACX;","names":[]}
1
+ {"version":3,"sources":["../../src/utils.ts"],"sourcesContent":["export function shouldThrowError<T extends (...args: Array<any>) => boolean>(\n throwError: boolean | T | undefined,\n params: Parameters<T>,\n): boolean {\n // Allow throwError function to override throwing behavior on a per-error basis\n if (typeof throwError === 'function') {\n return throwError(...params)\n }\n\n return !!throwError\n}\n"],"mappings":";AAAO,SAAS,iBACd,YACA,QACS;AAET,MAAI,OAAO,eAAe,YAAY;AACpC,WAAO,WAAW,GAAG,MAAM;AAAA,EAC7B;AAEA,SAAO,CAAC,CAAC;AACX;","names":[]}
package/package.json CHANGED
@@ -1,10 +1,14 @@
1
1
  {
2
2
  "name": "@tanstack/react-query",
3
- "version": "5.0.0-beta.2",
3
+ "version": "5.0.0-beta.23",
4
4
  "description": "Hooks for managing, caching and syncing asynchronous and remote data in React",
5
5
  "author": "tannerlinsley",
6
6
  "license": "MIT",
7
- "repository": "tanstack/query",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/TanStack/query.git",
10
+ "directory": "packages/react-query"
11
+ },
8
12
  "homepage": "https://tanstack.com/query",
9
13
  "funding": {
10
14
  "type": "github",
@@ -38,7 +42,7 @@
38
42
  ],
39
43
  "dependencies": {
40
44
  "client-only": "0.0.1",
41
- "@tanstack/query-core": "5.0.0-beta.0"
45
+ "@tanstack/query-core": "5.0.0-beta.23"
42
46
  },
43
47
  "devDependencies": {
44
48
  "@types/react": "^18.2.4",
@@ -66,7 +70,7 @@
66
70
  "test:types": "tsc",
67
71
  "test:lib": "vitest run --coverage",
68
72
  "test:lib:dev": "pnpm run test:lib --watch",
69
- "test:build": "publint --strict && attw --pack",
73
+ "test:build": "publint --strict",
70
74
  "build": "pnpm build:tsup && pnpm build:codemods",
71
75
  "build:tsup": "tsup",
72
76
  "build:codemods": "cpy ../codemods/* ./build/codemods"
@@ -3,7 +3,14 @@ import { ErrorBoundary } from 'react-error-boundary'
3
3
  import * as React from 'react'
4
4
 
5
5
  import { vi } from 'vitest'
6
- import { QueryCache, QueryErrorResetBoundary, useQueries, useQuery } from '..'
6
+ import {
7
+ QueryCache,
8
+ QueryErrorResetBoundary,
9
+ useQueries,
10
+ useQuery,
11
+ useSuspenseQueries,
12
+ useSuspenseQuery,
13
+ } from '..'
7
14
  import { createQueryClient, queryKey, renderWithClient, sleep } from './utils'
8
15
 
9
16
  // TODO: This should be removed with the types for react-error-boundary get updated.
@@ -522,7 +529,7 @@ describe('QueryErrorResetBoundary', () => {
522
529
  let renders = 0
523
530
 
524
531
  function Page() {
525
- const { data } = useQuery({
532
+ const { data } = useSuspenseQuery({
526
533
  queryKey: key,
527
534
  queryFn: async () => {
528
535
  fetchCount++
@@ -534,7 +541,6 @@ describe('QueryErrorResetBoundary', () => {
534
541
  }
535
542
  },
536
543
  retry: false,
537
- suspense: true,
538
544
  })
539
545
  renders++
540
546
  return <div>{data}</div>
@@ -735,7 +741,7 @@ describe('QueryErrorResetBoundary', () => {
735
741
  let succeed = false
736
742
 
737
743
  function Page() {
738
- const [{ data }] = useQueries({
744
+ const [{ data }] = useSuspenseQueries({
739
745
  queries: [
740
746
  {
741
747
  queryKey: key,
@@ -748,9 +754,7 @@ describe('QueryErrorResetBoundary', () => {
748
754
  }
749
755
  },
750
756
  retry: false,
751
- throwOnError: true,
752
757
  retryOnMount: true,
753
- suspense: true,
754
758
  },
755
759
  ],
756
760
  })
@@ -132,7 +132,7 @@ describe('Server Side Rendering', () => {
132
132
  queryKey: key,
133
133
  queryFn,
134
134
  getNextPageParam: () => undefined,
135
- defaultPageParam: 0,
135
+ initialPageParam: 0,
136
136
  })
137
137
  return (
138
138
  <ul>
@@ -146,7 +146,7 @@ describe('Server Side Rendering', () => {
146
146
  await queryClient.prefetchInfiniteQuery({
147
147
  queryKey: key,
148
148
  queryFn,
149
- defaultPageParam: 0,
149
+ initialPageParam: 0,
150
150
  })
151
151
 
152
152
  const markup = renderToString(