@tanstack/react-query 5.0.0-beta.19 → 5.0.0-beta.20
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.
- package/build/legacy/useQueries.cjs.map +1 -1
- package/build/legacy/useQueries.d.cts +3 -3
- package/build/legacy/useQueries.d.ts +3 -3
- package/build/legacy/useQueries.js.map +1 -1
- package/build/legacy/useSuspenseQueries.cjs.map +1 -1
- package/build/legacy/useSuspenseQueries.d.cts +5 -5
- package/build/legacy/useSuspenseQueries.d.ts +5 -5
- package/build/legacy/useSuspenseQueries.js.map +1 -1
- package/build/legacy/utils.cjs.map +1 -1
- package/build/legacy/utils.d.cts +1 -1
- package/build/legacy/utils.d.ts +1 -1
- package/build/legacy/utils.js.map +1 -1
- package/build/modern/useQueries.cjs.map +1 -1
- package/build/modern/useQueries.d.cts +3 -3
- package/build/modern/useQueries.d.ts +3 -3
- package/build/modern/useQueries.js.map +1 -1
- package/build/modern/useSuspenseQueries.cjs.map +1 -1
- package/build/modern/useSuspenseQueries.d.cts +5 -5
- package/build/modern/useSuspenseQueries.d.ts +5 -5
- package/build/modern/useSuspenseQueries.js.map +1 -1
- package/build/modern/utils.cjs.map +1 -1
- package/build/modern/utils.d.cts +1 -1
- package/build/modern/utils.d.ts +1 -1
- package/build/modern/utils.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/suspense.test.tsx +7 -6
- package/src/__tests__/useInfiniteQuery.test.tsx +21 -21
- package/src/__tests__/useIsFetching.test.tsx +2 -2
- package/src/__tests__/useMutation.test.tsx +4 -4
- package/src/__tests__/useMutationState.test.tsx +4 -4
- package/src/__tests__/useQueries.test.tsx +14 -12
- package/src/__tests__/useQuery.test.tsx +80 -80
- package/src/useQueries.ts +33 -27
- package/src/useSuspenseQueries.ts +33 -27
- package/src/utils.ts +1 -1
- package/build/codemods/coverage/base.css +0 -224
- package/build/codemods/coverage/block-navigation.js +0 -87
- package/build/codemods/coverage/clover.xml +0 -6
- package/build/codemods/coverage/coverage-final.json +0 -1
- package/build/codemods/coverage/favicon.png +0 -0
- package/build/codemods/coverage/index.html +0 -101
- package/build/codemods/coverage/prettify.css +0 -1
- package/build/codemods/coverage/prettify.js +0 -2
- package/build/codemods/coverage/sort-arrow-sprite.png +0 -0
- package/build/codemods/coverage/sorter.js +0 -196
|
@@ -37,7 +37,7 @@ type GetSuspenseResults<T> = T extends {
|
|
|
37
37
|
/**
|
|
38
38
|
* SuspenseQueriesOptions reducer recursively unwraps function arguments to infer/enforce type param
|
|
39
39
|
*/
|
|
40
|
-
type SuspenseQueriesOptions<T extends any
|
|
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
41
|
...Tail
|
|
42
42
|
], [
|
|
43
43
|
...Result,
|
|
@@ -45,11 +45,11 @@ type SuspenseQueriesOptions<T extends any[], Result extends any[] = [], Depth ex
|
|
|
45
45
|
], [
|
|
46
46
|
...Depth,
|
|
47
47
|
1
|
|
48
|
-
]> : unknown
|
|
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
49
|
/**
|
|
50
50
|
* SuspenseQueriesResults reducer recursively maps type param to results
|
|
51
51
|
*/
|
|
52
|
-
type SuspenseQueriesResults<T extends any
|
|
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
53
|
...Tail
|
|
54
54
|
], [
|
|
55
55
|
...Result,
|
|
@@ -57,8 +57,8 @@ type SuspenseQueriesResults<T extends any[], Result extends any[] = [], Depth ex
|
|
|
57
57
|
], [
|
|
58
58
|
...Depth,
|
|
59
59
|
1
|
|
60
|
-
]> : T extends UseSuspenseQueryOptions<infer TQueryFnData, infer TError, infer TData, any
|
|
61
|
-
declare function useSuspenseQueries<T extends any
|
|
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
62
|
queries: readonly [...SuspenseQueriesOptions<T>];
|
|
63
63
|
combine?: (result: SuspenseQueriesResults<T>) => TCombinedResult;
|
|
64
64
|
}, queryClient?: QueryClient): TCombinedResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/useSuspenseQueries.ts"],"sourcesContent":["'use client'\nimport { useQueries } from './useQueries'\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 any
|
|
1
|
+
{"version":3,"sources":["../../src/useSuspenseQueries.ts"],"sourcesContent":["'use client'\nimport { useQueries } from './useQueries'\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: true,\n enabled: true,\n })),\n } as any,\n queryClient,\n )\n}\n"],"mappings":";;;AACA,SAAS,kBAAkB;AA2IpB,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":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils.ts"],"sourcesContent":["export function shouldThrowError<T extends (...args: any
|
|
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":[]}
|
package/build/modern/utils.d.cts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
declare function shouldThrowError<T extends (...args: any
|
|
1
|
+
declare function shouldThrowError<T extends (...args: Array<any>) => boolean>(throwError: boolean | T | undefined, params: Parameters<T>): boolean;
|
|
2
2
|
|
|
3
3
|
export { shouldThrowError };
|
package/build/modern/utils.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
declare function shouldThrowError<T extends (...args: any
|
|
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
|
|
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,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/react-query",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.20",
|
|
4
4
|
"description": "Hooks for managing, caching and syncing asynchronous and remote data in React",
|
|
5
5
|
"author": "tannerlinsley",
|
|
6
6
|
"license": "MIT",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
],
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"client-only": "0.0.1",
|
|
45
|
-
"@tanstack/query-core": "5.0.0-beta.
|
|
45
|
+
"@tanstack/query-core": "5.0.0-beta.20"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@types/react": "^18.2.4",
|
|
@@ -23,7 +23,7 @@ describe('useSuspenseQuery', () => {
|
|
|
23
23
|
|
|
24
24
|
it('should render the correct amount of times in Suspense mode', async () => {
|
|
25
25
|
const key = queryKey()
|
|
26
|
-
const states: UseSuspenseQueryResult<number
|
|
26
|
+
const states: Array<UseSuspenseQueryResult<number>> = []
|
|
27
27
|
|
|
28
28
|
let count = 0
|
|
29
29
|
let renders = 0
|
|
@@ -72,7 +72,8 @@ describe('useSuspenseQuery', () => {
|
|
|
72
72
|
|
|
73
73
|
it('should return the correct states for a successful infinite query', async () => {
|
|
74
74
|
const key = queryKey()
|
|
75
|
-
const states: UseSuspenseInfiniteQueryResult<InfiniteData<number
|
|
75
|
+
const states: Array<UseSuspenseInfiniteQueryResult<InfiniteData<number>>> =
|
|
76
|
+
[]
|
|
76
77
|
|
|
77
78
|
function Page() {
|
|
78
79
|
const [multiplier, setMultiplier] = React.useState(1)
|
|
@@ -122,7 +123,7 @@ describe('useSuspenseQuery', () => {
|
|
|
122
123
|
it('should not call the queryFn twice when used in Suspense mode', async () => {
|
|
123
124
|
const key = queryKey()
|
|
124
125
|
|
|
125
|
-
const queryFn = vi.fn<unknown
|
|
126
|
+
const queryFn = vi.fn<Array<unknown>, string>()
|
|
126
127
|
queryFn.mockImplementation(() => {
|
|
127
128
|
sleep(10)
|
|
128
129
|
return 'data'
|
|
@@ -718,7 +719,7 @@ describe('useSuspenseQueries', () => {
|
|
|
718
719
|
it('should suspend all queries in parallel', async () => {
|
|
719
720
|
const key1 = queryKey()
|
|
720
721
|
const key2 = queryKey()
|
|
721
|
-
const results: string
|
|
722
|
+
const results: Array<string> = []
|
|
722
723
|
|
|
723
724
|
function Fallback() {
|
|
724
725
|
results.push('loading')
|
|
@@ -769,8 +770,8 @@ describe('useSuspenseQueries', () => {
|
|
|
769
770
|
it("shouldn't unmount before all promises fetched", async () => {
|
|
770
771
|
const key1 = queryKey()
|
|
771
772
|
const key2 = queryKey()
|
|
772
|
-
const results: string
|
|
773
|
-
const refs: number
|
|
773
|
+
const results: Array<string> = []
|
|
774
|
+
const refs: Array<number> = []
|
|
774
775
|
|
|
775
776
|
function Fallback() {
|
|
776
777
|
results.push('loading')
|
|
@@ -18,7 +18,7 @@ import type {
|
|
|
18
18
|
import type { Mock } from 'vitest'
|
|
19
19
|
|
|
20
20
|
interface Result {
|
|
21
|
-
items: number
|
|
21
|
+
items: Array<number>
|
|
22
22
|
nextId?: number
|
|
23
23
|
prevId?: number
|
|
24
24
|
ts: number
|
|
@@ -47,7 +47,7 @@ describe('useInfiniteQuery', () => {
|
|
|
47
47
|
|
|
48
48
|
it('should return the correct states for a successful query', async () => {
|
|
49
49
|
const key = queryKey()
|
|
50
|
-
const states: UseInfiniteQueryResult<InfiniteData<number
|
|
50
|
+
const states: Array<UseInfiniteQueryResult<InfiniteData<number>>> = []
|
|
51
51
|
|
|
52
52
|
function Page() {
|
|
53
53
|
const state = useInfiniteQuery({
|
|
@@ -174,7 +174,7 @@ describe('useInfiniteQuery', () => {
|
|
|
174
174
|
|
|
175
175
|
it('should keep the previous data when placeholderData is set', async () => {
|
|
176
176
|
const key = queryKey()
|
|
177
|
-
const states: UseInfiniteQueryResult<InfiniteData<string
|
|
177
|
+
const states: Array<UseInfiniteQueryResult<InfiniteData<string>>> = []
|
|
178
178
|
|
|
179
179
|
function Page() {
|
|
180
180
|
const [order, setOrder] = React.useState('desc')
|
|
@@ -262,7 +262,7 @@ describe('useInfiniteQuery', () => {
|
|
|
262
262
|
|
|
263
263
|
it('should be able to select a part of the data', async () => {
|
|
264
264
|
const key = queryKey()
|
|
265
|
-
const states: UseInfiniteQueryResult<InfiniteData<string
|
|
265
|
+
const states: Array<UseInfiniteQueryResult<InfiniteData<string>>> = []
|
|
266
266
|
|
|
267
267
|
function Page() {
|
|
268
268
|
const state = useInfiniteQuery({
|
|
@@ -299,9 +299,9 @@ describe('useInfiniteQuery', () => {
|
|
|
299
299
|
|
|
300
300
|
it('should be able to select a new result and not cause infinite renders', async () => {
|
|
301
301
|
const key = queryKey()
|
|
302
|
-
const states:
|
|
303
|
-
InfiniteData<{ count: number; id: number }
|
|
304
|
-
>
|
|
302
|
+
const states: Array<
|
|
303
|
+
UseInfiniteQueryResult<InfiniteData<{ count: number; id: number }>>
|
|
304
|
+
> = []
|
|
305
305
|
let selectCalled = 0
|
|
306
306
|
|
|
307
307
|
function Page() {
|
|
@@ -349,7 +349,7 @@ describe('useInfiniteQuery', () => {
|
|
|
349
349
|
|
|
350
350
|
it('should be able to reverse the data', async () => {
|
|
351
351
|
const key = queryKey()
|
|
352
|
-
const states: UseInfiniteQueryResult<InfiniteData<number
|
|
352
|
+
const states: Array<UseInfiniteQueryResult<InfiniteData<number>>> = []
|
|
353
353
|
|
|
354
354
|
function Page() {
|
|
355
355
|
const state = useInfiniteQuery({
|
|
@@ -406,7 +406,7 @@ describe('useInfiniteQuery', () => {
|
|
|
406
406
|
|
|
407
407
|
it('should be able to fetch a previous page', async () => {
|
|
408
408
|
const key = queryKey()
|
|
409
|
-
const states: UseInfiniteQueryResult<InfiniteData<number
|
|
409
|
+
const states: Array<UseInfiniteQueryResult<InfiniteData<number>>> = []
|
|
410
410
|
|
|
411
411
|
function Page() {
|
|
412
412
|
const start = 10
|
|
@@ -489,7 +489,7 @@ describe('useInfiniteQuery', () => {
|
|
|
489
489
|
|
|
490
490
|
it('should be able to refetch when providing page params automatically', async () => {
|
|
491
491
|
const key = queryKey()
|
|
492
|
-
const states: UseInfiniteQueryResult<InfiniteData<number
|
|
492
|
+
const states: Array<UseInfiniteQueryResult<InfiniteData<number>>> = []
|
|
493
493
|
|
|
494
494
|
function Page() {
|
|
495
495
|
const state = useInfiniteQuery({
|
|
@@ -644,8 +644,8 @@ describe('useInfiniteQuery', () => {
|
|
|
644
644
|
it('should silently cancel an ongoing fetchNextPage request when another fetchNextPage is invoked', async () => {
|
|
645
645
|
const key = queryKey()
|
|
646
646
|
const start = 10
|
|
647
|
-
const onAborts: Mock<any, any
|
|
648
|
-
const abortListeners: Mock<any, any
|
|
647
|
+
const onAborts: Array<Mock<any, any>> = []
|
|
648
|
+
const abortListeners: Array<Mock<any, any>> = []
|
|
649
649
|
const fetchPage = vi.fn<
|
|
650
650
|
[QueryFunctionContext<typeof key, number>],
|
|
651
651
|
Promise<number>
|
|
@@ -720,8 +720,8 @@ describe('useInfiniteQuery', () => {
|
|
|
720
720
|
it('should not cancel an ongoing fetchNextPage request when another fetchNextPage is invoked if `cancelRefetch: false` is used ', async () => {
|
|
721
721
|
const key = queryKey()
|
|
722
722
|
const start = 10
|
|
723
|
-
const onAborts: Mock<any, any
|
|
724
|
-
const abortListeners: Mock<any, any
|
|
723
|
+
const onAborts: Array<Mock<any, any>> = []
|
|
724
|
+
const abortListeners: Array<Mock<any, any>> = []
|
|
725
725
|
const fetchPage = vi.fn<
|
|
726
726
|
[QueryFunctionContext<typeof key, number>],
|
|
727
727
|
Promise<number>
|
|
@@ -787,7 +787,7 @@ describe('useInfiniteQuery', () => {
|
|
|
787
787
|
|
|
788
788
|
it('should keep fetching first page when not loaded yet and triggering fetch more', async () => {
|
|
789
789
|
const key = queryKey()
|
|
790
|
-
const states: UseInfiniteQueryResult<InfiniteData<number
|
|
790
|
+
const states: Array<UseInfiniteQueryResult<InfiniteData<number>>> = []
|
|
791
791
|
|
|
792
792
|
function Page() {
|
|
793
793
|
const start = 10
|
|
@@ -886,7 +886,7 @@ describe('useInfiniteQuery', () => {
|
|
|
886
886
|
|
|
887
887
|
it('should be able to set new pages with the query client', async () => {
|
|
888
888
|
const key = queryKey()
|
|
889
|
-
const states: UseInfiniteQueryResult<InfiniteData<number
|
|
889
|
+
const states: Array<UseInfiniteQueryResult<InfiniteData<number>>> = []
|
|
890
890
|
|
|
891
891
|
function Page() {
|
|
892
892
|
const [firstPage, setFirstPage] = React.useState(0)
|
|
@@ -968,7 +968,7 @@ describe('useInfiniteQuery', () => {
|
|
|
968
968
|
|
|
969
969
|
it('should only refetch the first page when initialData is provided', async () => {
|
|
970
970
|
const key = queryKey()
|
|
971
|
-
const states: UseInfiniteQueryResult<InfiniteData<number
|
|
971
|
+
const states: Array<UseInfiniteQueryResult<InfiniteData<number>>> = []
|
|
972
972
|
|
|
973
973
|
function Page() {
|
|
974
974
|
const state = useInfiniteQuery({
|
|
@@ -1033,7 +1033,7 @@ describe('useInfiniteQuery', () => {
|
|
|
1033
1033
|
|
|
1034
1034
|
it('should set hasNextPage to false if getNextPageParam returns undefined', async () => {
|
|
1035
1035
|
const key = queryKey()
|
|
1036
|
-
const states: UseInfiniteQueryResult<InfiniteData<number
|
|
1036
|
+
const states: Array<UseInfiniteQueryResult<InfiniteData<number>>> = []
|
|
1037
1037
|
|
|
1038
1038
|
function Page() {
|
|
1039
1039
|
const state = useInfiniteQuery({
|
|
@@ -1071,7 +1071,7 @@ describe('useInfiniteQuery', () => {
|
|
|
1071
1071
|
|
|
1072
1072
|
it('should compute hasNextPage correctly using initialData', async () => {
|
|
1073
1073
|
const key = queryKey()
|
|
1074
|
-
const states: UseInfiniteQueryResult<InfiniteData<number
|
|
1074
|
+
const states: Array<UseInfiniteQueryResult<InfiniteData<number>>> = []
|
|
1075
1075
|
|
|
1076
1076
|
function Page() {
|
|
1077
1077
|
const state = useInfiniteQuery({
|
|
@@ -1110,7 +1110,7 @@ describe('useInfiniteQuery', () => {
|
|
|
1110
1110
|
|
|
1111
1111
|
it('should compute hasNextPage correctly for falsy getFetchMore return value using initialData', async () => {
|
|
1112
1112
|
const key = queryKey()
|
|
1113
|
-
const states: UseInfiniteQueryResult<InfiniteData<number
|
|
1113
|
+
const states: Array<UseInfiniteQueryResult<InfiniteData<number>>> = []
|
|
1114
1114
|
|
|
1115
1115
|
function Page() {
|
|
1116
1116
|
const state = useInfiniteQuery({
|
|
@@ -1149,7 +1149,7 @@ describe('useInfiniteQuery', () => {
|
|
|
1149
1149
|
|
|
1150
1150
|
it('should not use selected data when computing hasNextPage', async () => {
|
|
1151
1151
|
const key = queryKey()
|
|
1152
|
-
const states: UseInfiniteQueryResult<InfiniteData<string
|
|
1152
|
+
const states: Array<UseInfiniteQueryResult<InfiniteData<string>>> = []
|
|
1153
1153
|
|
|
1154
1154
|
function Page() {
|
|
1155
1155
|
const state = useInfiniteQuery({
|
|
@@ -61,7 +61,7 @@ describe('useIsFetching', () => {
|
|
|
61
61
|
const key1 = queryKey()
|
|
62
62
|
const key2 = queryKey()
|
|
63
63
|
|
|
64
|
-
const isFetchings: number
|
|
64
|
+
const isFetchings: Array<number> = []
|
|
65
65
|
|
|
66
66
|
function IsFetching() {
|
|
67
67
|
const isFetching = useIsFetching()
|
|
@@ -118,7 +118,7 @@ describe('useIsFetching', () => {
|
|
|
118
118
|
const key1 = queryKey()
|
|
119
119
|
const key2 = queryKey()
|
|
120
120
|
|
|
121
|
-
const isFetchings: number
|
|
121
|
+
const isFetchings: Array<number> = []
|
|
122
122
|
|
|
123
123
|
function One() {
|
|
124
124
|
useQuery({
|
|
@@ -267,7 +267,7 @@ describe('useMutation', () => {
|
|
|
267
267
|
})
|
|
268
268
|
|
|
269
269
|
it('should be able to override the useMutation success callbacks', async () => {
|
|
270
|
-
const callbacks: string
|
|
270
|
+
const callbacks: Array<string> = []
|
|
271
271
|
|
|
272
272
|
function Page() {
|
|
273
273
|
const { mutateAsync } = useMutation({
|
|
@@ -313,7 +313,7 @@ describe('useMutation', () => {
|
|
|
313
313
|
})
|
|
314
314
|
|
|
315
315
|
it('should be able to override the error callbacks when using mutateAsync', async () => {
|
|
316
|
-
const callbacks: string
|
|
316
|
+
const callbacks: Array<string> = []
|
|
317
317
|
|
|
318
318
|
function Page() {
|
|
319
319
|
const { mutateAsync } = useMutation({
|
|
@@ -369,7 +369,7 @@ describe('useMutation', () => {
|
|
|
369
369
|
},
|
|
370
370
|
})
|
|
371
371
|
|
|
372
|
-
const states: UseMutationResult<any, any, any, any
|
|
372
|
+
const states: Array<UseMutationResult<any, any, any, any>> = []
|
|
373
373
|
|
|
374
374
|
function Page() {
|
|
375
375
|
const state = useMutation<string, unknown, string>({ mutationKey: key })
|
|
@@ -586,7 +586,7 @@ describe('useMutation', () => {
|
|
|
586
586
|
const onlineMock = mockOnlineManagerIsOnline(false)
|
|
587
587
|
|
|
588
588
|
let count = 0
|
|
589
|
-
const states: UseMutationResult<any, any, any, any
|
|
589
|
+
const states: Array<UseMutationResult<any, any, any, any>> = []
|
|
590
590
|
|
|
591
591
|
function Page() {
|
|
592
592
|
const state = useMutation({
|
|
@@ -13,7 +13,7 @@ import type { MutationState, MutationStatus } from '@tanstack/query-core'
|
|
|
13
13
|
|
|
14
14
|
describe('useIsMutating', () => {
|
|
15
15
|
it('should return the number of fetching mutations', async () => {
|
|
16
|
-
const isMutatings: number
|
|
16
|
+
const isMutatings: Array<number> = []
|
|
17
17
|
const queryClient = createQueryClient()
|
|
18
18
|
|
|
19
19
|
function IsMutating() {
|
|
@@ -62,7 +62,7 @@ describe('useIsMutating', () => {
|
|
|
62
62
|
})
|
|
63
63
|
|
|
64
64
|
it('should filter correctly by mutationKey', async () => {
|
|
65
|
-
const isMutatings: number
|
|
65
|
+
const isMutatings: Array<number> = []
|
|
66
66
|
const queryClient = createQueryClient()
|
|
67
67
|
|
|
68
68
|
function IsMutating() {
|
|
@@ -100,7 +100,7 @@ describe('useIsMutating', () => {
|
|
|
100
100
|
})
|
|
101
101
|
|
|
102
102
|
it('should filter correctly by predicate', async () => {
|
|
103
|
-
const isMutatings: number
|
|
103
|
+
const isMutatings: Array<number> = []
|
|
104
104
|
const queryClient = createQueryClient()
|
|
105
105
|
|
|
106
106
|
function IsMutating() {
|
|
@@ -197,7 +197,7 @@ describe('useMutationState', () => {
|
|
|
197
197
|
})
|
|
198
198
|
it('should return variables after calling mutate', async () => {
|
|
199
199
|
const queryClient = createQueryClient()
|
|
200
|
-
const variables: unknown
|
|
200
|
+
const variables: Array<Array<unknown>> = []
|
|
201
201
|
const mutationKey = ['mutation']
|
|
202
202
|
|
|
203
203
|
function Variables() {
|
|
@@ -28,7 +28,7 @@ describe('useQueries', () => {
|
|
|
28
28
|
it('should return the correct states', async () => {
|
|
29
29
|
const key1 = queryKey()
|
|
30
30
|
const key2 = queryKey()
|
|
31
|
-
const results: UseQueryResult
|
|
31
|
+
const results: Array<Array<UseQueryResult>> = []
|
|
32
32
|
|
|
33
33
|
function Page() {
|
|
34
34
|
const result = useQueries({
|
|
@@ -73,7 +73,7 @@ describe('useQueries', () => {
|
|
|
73
73
|
|
|
74
74
|
it('should track results', async () => {
|
|
75
75
|
const key1 = queryKey()
|
|
76
|
-
const results: UseQueryResult
|
|
76
|
+
const results: Array<Array<UseQueryResult>> = []
|
|
77
77
|
let count = 0
|
|
78
78
|
|
|
79
79
|
function Page() {
|
|
@@ -125,7 +125,9 @@ describe('useQueries', () => {
|
|
|
125
125
|
// @ts-expect-error (Page component is not rendered)
|
|
126
126
|
// eslint-disable-next-line
|
|
127
127
|
function Page() {
|
|
128
|
-
const result1 = useQueries<
|
|
128
|
+
const result1 = useQueries<
|
|
129
|
+
[[number], [string], [Array<string>, boolean]]
|
|
130
|
+
>({
|
|
129
131
|
queries: [
|
|
130
132
|
{
|
|
131
133
|
queryKey: key1,
|
|
@@ -143,10 +145,10 @@ describe('useQueries', () => {
|
|
|
143
145
|
})
|
|
144
146
|
expectType<QueryObserverResult<number, unknown>>(result1[0])
|
|
145
147
|
expectType<QueryObserverResult<string, unknown>>(result1[1])
|
|
146
|
-
expectType<QueryObserverResult<string
|
|
148
|
+
expectType<QueryObserverResult<Array<string>, boolean>>(result1[2])
|
|
147
149
|
expectType<number | undefined>(result1[0].data)
|
|
148
150
|
expectType<string | undefined>(result1[1].data)
|
|
149
|
-
expectType<string
|
|
151
|
+
expectType<Array<string> | undefined>(result1[2].data)
|
|
150
152
|
expectType<boolean | null>(result1[2].error)
|
|
151
153
|
|
|
152
154
|
// TData (3rd element) takes precedence over TQueryFnData (1st element)
|
|
@@ -235,7 +237,7 @@ describe('useQueries', () => {
|
|
|
235
237
|
[
|
|
236
238
|
{ queryFnData: number },
|
|
237
239
|
{ queryFnData: string },
|
|
238
|
-
{ queryFnData: string
|
|
240
|
+
{ queryFnData: Array<string>; error: boolean },
|
|
239
241
|
]
|
|
240
242
|
>({
|
|
241
243
|
queries: [
|
|
@@ -255,10 +257,10 @@ describe('useQueries', () => {
|
|
|
255
257
|
})
|
|
256
258
|
expectType<QueryObserverResult<number, unknown>>(result1[0])
|
|
257
259
|
expectType<QueryObserverResult<string, unknown>>(result1[1])
|
|
258
|
-
expectType<QueryObserverResult<string
|
|
260
|
+
expectType<QueryObserverResult<Array<string>, boolean>>(result1[2])
|
|
259
261
|
expectType<number | undefined>(result1[0].data)
|
|
260
262
|
expectType<string | undefined>(result1[1].data)
|
|
261
|
-
expectType<string
|
|
263
|
+
expectType<Array<string> | undefined>(result1[2].data)
|
|
262
264
|
expectType<boolean | null>(result1[2].error)
|
|
263
265
|
|
|
264
266
|
// TData (data prop) takes precedence over TQueryFnData (queryFnData prop)
|
|
@@ -387,7 +389,7 @@ describe('useQueries', () => {
|
|
|
387
389
|
queryFn: () => i + 10,
|
|
388
390
|
})),
|
|
389
391
|
})
|
|
390
|
-
expectType<QueryObserverResult<number, unknown
|
|
392
|
+
expectType<Array<QueryObserverResult<number, unknown>>>(result1)
|
|
391
393
|
expectType<number | undefined>(result1[0]?.data)
|
|
392
394
|
|
|
393
395
|
// Array.map preserves TData
|
|
@@ -398,7 +400,7 @@ describe('useQueries', () => {
|
|
|
398
400
|
select: (data: number) => data.toString(),
|
|
399
401
|
})),
|
|
400
402
|
})
|
|
401
|
-
expectType<QueryObserverResult<string, unknown
|
|
403
|
+
expectType<Array<QueryObserverResult<string, unknown>>>(result2)
|
|
402
404
|
|
|
403
405
|
const result3 = useQueries({
|
|
404
406
|
queries: [
|
|
@@ -616,7 +618,7 @@ describe('useQueries', () => {
|
|
|
616
618
|
TError,
|
|
617
619
|
TData,
|
|
618
620
|
TQueryKey extends QueryKey,
|
|
619
|
-
>(queries: UseQueryOptions<TQueryFnData, TError, TData, TQueryKey
|
|
621
|
+
>(queries: Array<UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>>) {
|
|
620
622
|
return useQueries({
|
|
621
623
|
queries: queries.map(
|
|
622
624
|
// no need to type the mapped query
|
|
@@ -684,7 +686,7 @@ describe('useQueries', () => {
|
|
|
684
686
|
})),
|
|
685
687
|
)
|
|
686
688
|
|
|
687
|
-
expectType<QueryObserverResult<number | undefined, unknown
|
|
689
|
+
expectType<Array<QueryObserverResult<number | undefined, unknown>>>(
|
|
688
690
|
withWrappedQueries,
|
|
689
691
|
)
|
|
690
692
|
}
|