@tanstack/react-query 4.24.10 → 5.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/lib/HydrationBoundary.d.ts +9 -0
- package/build/lib/{Hydrate.esm.js → HydrationBoundary.esm.js} +14 -17
- package/build/lib/HydrationBoundary.esm.js.map +1 -0
- package/build/lib/{Hydrate.js → HydrationBoundary.js} +17 -24
- package/build/lib/HydrationBoundary.js.map +1 -0
- package/build/lib/{Hydrate.mjs → HydrationBoundary.mjs} +14 -17
- package/build/lib/HydrationBoundary.mjs.map +1 -0
- package/build/lib/QueryClientProvider.d.ts +4 -19
- package/build/lib/QueryClientProvider.esm.js +11 -46
- package/build/lib/QueryClientProvider.esm.js.map +1 -1
- package/build/lib/QueryClientProvider.js +14 -52
- package/build/lib/QueryClientProvider.js.map +1 -1
- package/build/lib/QueryClientProvider.mjs +11 -46
- package/build/lib/QueryClientProvider.mjs.map +1 -1
- package/build/lib/QueryErrorResetBoundary.esm.js +7 -2
- package/build/lib/QueryErrorResetBoundary.esm.js.map +1 -1
- package/build/lib/QueryErrorResetBoundary.js +10 -8
- package/build/lib/QueryErrorResetBoundary.js.map +1 -1
- package/build/lib/QueryErrorResetBoundary.mjs +7 -2
- package/build/lib/QueryErrorResetBoundary.mjs.map +1 -1
- package/build/lib/__tests__/useQuery.types.test.d.ts +1 -2
- package/build/lib/__tests__/utils.d.ts +7 -10
- package/build/lib/errorBoundaryUtils.d.ts +3 -3
- package/build/lib/errorBoundaryUtils.esm.js +3 -3
- package/build/lib/errorBoundaryUtils.esm.js.map +1 -1
- package/build/lib/errorBoundaryUtils.js +6 -9
- package/build/lib/errorBoundaryUtils.js.map +1 -1
- package/build/lib/errorBoundaryUtils.mjs +3 -3
- package/build/lib/errorBoundaryUtils.mjs.map +1 -1
- package/build/lib/index.d.ts +4 -5
- package/build/lib/index.esm.js +3 -4
- package/build/lib/index.esm.js.map +1 -1
- package/build/lib/index.js +6 -9
- package/build/lib/index.js.map +1 -1
- package/build/lib/index.mjs +3 -4
- package/build/lib/index.mjs.map +1 -1
- package/build/lib/isRestoring.esm.js.map +1 -1
- package/build/lib/isRestoring.js +3 -6
- package/build/lib/isRestoring.js.map +1 -1
- package/build/lib/isRestoring.mjs.map +1 -1
- package/build/lib/suspense.esm.js +5 -5
- package/build/lib/suspense.esm.js.map +1 -1
- package/build/lib/suspense.js +5 -7
- package/build/lib/suspense.js.map +1 -1
- package/build/lib/suspense.mjs +5 -5
- package/build/lib/suspense.mjs.map +1 -1
- package/build/lib/types.d.ts +14 -22
- package/build/lib/useBaseQuery.d.ts +2 -2
- package/build/lib/useBaseQuery.esm.js +15 -18
- package/build/lib/useBaseQuery.esm.js.map +1 -1
- package/build/lib/useBaseQuery.js +18 -24
- package/build/lib/useBaseQuery.js.map +1 -1
- package/build/lib/useBaseQuery.mjs +15 -18
- package/build/lib/useBaseQuery.mjs.map +1 -1
- package/build/lib/useInfiniteQuery.d.ts +2 -4
- package/build/lib/useInfiniteQuery.esm.js +4 -4
- package/build/lib/useInfiniteQuery.esm.js.map +1 -1
- package/build/lib/useInfiniteQuery.js +3 -5
- package/build/lib/useInfiniteQuery.js.map +1 -1
- package/build/lib/useInfiniteQuery.mjs +4 -4
- package/build/lib/useInfiniteQuery.mjs.map +1 -1
- package/build/lib/useIsFetching.d.ts +2 -7
- package/build/lib/useIsFetching.esm.js +5 -9
- package/build/lib/useIsFetching.esm.js.map +1 -1
- package/build/lib/useIsFetching.js +7 -14
- package/build/lib/useIsFetching.js.map +1 -1
- package/build/lib/useIsFetching.mjs +5 -9
- package/build/lib/useIsFetching.mjs.map +1 -1
- package/build/lib/useMutation.d.ts +2 -5
- package/build/lib/useMutation.esm.js +12 -14
- package/build/lib/useMutation.esm.js.map +1 -1
- package/build/lib/useMutation.js +14 -19
- package/build/lib/useMutation.js.map +1 -1
- package/build/lib/useMutation.mjs +12 -14
- package/build/lib/useMutation.mjs.map +1 -1
- package/build/lib/useMutationState.d.ts +8 -0
- package/build/lib/useMutationState.esm.js +37 -0
- package/build/lib/useMutationState.esm.js.map +1 -0
- package/build/lib/useMutationState.js +59 -0
- package/build/lib/useMutationState.js.map +1 -0
- package/build/lib/useMutationState.mjs +37 -0
- package/build/lib/useMutationState.mjs.map +1 -0
- package/build/lib/useQueries.d.ts +9 -7
- package/build/lib/useQueries.esm.js +16 -27
- package/build/lib/useQueries.esm.js.map +1 -1
- package/build/lib/useQueries.js +19 -33
- package/build/lib/useQueries.js.map +1 -1
- package/build/lib/useQueries.mjs +16 -27
- package/build/lib/useQueries.mjs.map +1 -1
- package/build/lib/useQuery.d.ts +9 -21
- package/build/lib/useQuery.esm.js +5 -4
- package/build/lib/useQuery.esm.js.map +1 -1
- package/build/lib/useQuery.js +4 -5
- package/build/lib/useQuery.js.map +1 -1
- package/build/lib/useQuery.mjs +5 -4
- package/build/lib/useQuery.mjs.map +1 -1
- package/build/lib/utils.d.ts +1 -1
- package/build/lib/utils.esm.js +5 -6
- package/build/lib/utils.esm.js.map +1 -1
- package/build/lib/utils.js +5 -8
- package/build/lib/utils.js.map +1 -1
- package/build/lib/utils.mjs +5 -6
- package/build/lib/utils.mjs.map +1 -1
- package/build/umd/index.development.js +1003 -1827
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +6 -18
- package/src/{Hydrate.tsx → HydrationBoundary.tsx} +17 -18
- package/src/QueryClientProvider.tsx +11 -65
- package/src/__tests__/{Hydrate.test.tsx → HydrationBoundary.test.tsx} +89 -77
- package/src/__tests__/QueryClientProvider.test.tsx +33 -147
- package/src/__tests__/QueryResetErrorBoundary.test.tsx +118 -85
- package/src/__tests__/ssr-hydration.test.tsx +27 -33
- package/src/__tests__/ssr.test.tsx +23 -9
- package/src/__tests__/suspense.test.tsx +194 -171
- package/src/__tests__/useInfiniteQuery.test.tsx +249 -494
- package/src/__tests__/useInfiniteQuery.type.test.tsx +131 -0
- package/src/__tests__/useIsFetching.test.tsx +65 -108
- package/src/__tests__/useMutation.test.tsx +200 -268
- package/src/__tests__/useMutationState.test.tsx +284 -0
- package/src/__tests__/useQueries.test.tsx +43 -347
- package/src/__tests__/useQuery.test.tsx +890 -686
- package/src/__tests__/useQuery.types.test.tsx +23 -24
- package/src/__tests__/utils.tsx +14 -23
- package/src/errorBoundaryUtils.ts +5 -10
- package/src/index.ts +4 -7
- package/src/types.ts +33 -38
- package/src/useBaseQuery.ts +7 -7
- package/src/useInfiniteQuery.ts +12 -77
- package/src/useIsFetching.ts +8 -20
- package/src/useMutation.ts +8 -66
- package/src/useMutationState.ts +81 -0
- package/src/useQueries.ts +29 -21
- package/src/useQuery.ts +27 -104
- package/src/utils.ts +5 -5
- package/build/lib/Hydrate.d.ts +0 -10
- package/build/lib/Hydrate.esm.js.map +0 -1
- package/build/lib/Hydrate.js.map +0 -1
- package/build/lib/Hydrate.mjs.map +0 -1
- package/build/lib/reactBatchedUpdates.d.ts +0 -2
- package/build/lib/reactBatchedUpdates.esm.js +0 -6
- package/build/lib/reactBatchedUpdates.esm.js.map +0 -1
- package/build/lib/reactBatchedUpdates.js +0 -30
- package/build/lib/reactBatchedUpdates.js.map +0 -1
- package/build/lib/reactBatchedUpdates.mjs +0 -6
- package/build/lib/reactBatchedUpdates.mjs.map +0 -1
- package/build/lib/reactBatchedUpdates.native.d.ts +0 -2
- package/build/lib/reactBatchedUpdates.native.esm.js +0 -2
- package/build/lib/reactBatchedUpdates.native.esm.js.map +0 -1
- package/build/lib/reactBatchedUpdates.native.js +0 -13
- package/build/lib/reactBatchedUpdates.native.js.map +0 -1
- package/build/lib/reactBatchedUpdates.native.mjs +0 -2
- package/build/lib/reactBatchedUpdates.native.mjs.map +0 -1
- package/build/lib/setBatchUpdatesFn.esm.js +0 -5
- package/build/lib/setBatchUpdatesFn.esm.js.map +0 -1
- package/build/lib/setBatchUpdatesFn.js +0 -7
- package/build/lib/setBatchUpdatesFn.js.map +0 -1
- package/build/lib/setBatchUpdatesFn.mjs +0 -5
- package/build/lib/setBatchUpdatesFn.mjs.map +0 -1
- package/build/lib/useIsMutating.d.ts +0 -7
- package/build/lib/useIsMutating.esm.js +0 -16
- package/build/lib/useIsMutating.esm.js.map +0 -1
- package/build/lib/useIsMutating.js +0 -40
- package/build/lib/useIsMutating.js.map +0 -1
- package/build/lib/useIsMutating.mjs +0 -16
- package/build/lib/useIsMutating.mjs.map +0 -1
- package/build/lib/useSyncExternalStore.d.ts +0 -2
- package/build/lib/useSyncExternalStore.esm.js +0 -7
- package/build/lib/useSyncExternalStore.esm.js.map +0 -1
- package/build/lib/useSyncExternalStore.js +0 -11
- package/build/lib/useSyncExternalStore.js.map +0 -1
- package/build/lib/useSyncExternalStore.mjs +0 -7
- package/build/lib/useSyncExternalStore.mjs.map +0 -1
- package/build/lib/useSyncExternalStore.native.d.ts +0 -2
- package/build/lib/useSyncExternalStore.native.esm.js +0 -2
- package/build/lib/useSyncExternalStore.native.esm.js.map +0 -1
- package/build/lib/useSyncExternalStore.native.js +0 -13
- package/build/lib/useSyncExternalStore.native.js.map +0 -1
- package/build/lib/useSyncExternalStore.native.mjs +0 -2
- package/build/lib/useSyncExternalStore.native.mjs.map +0 -1
- package/codemods/v4/key-transformation.js +0 -138
- package/codemods/v4/replace-import-specifier.js +0 -25
- package/codemods/v4/utils/index.js +0 -166
- package/codemods/v4/utils/replacers/key-replacer.js +0 -160
- package/codemods/v4/utils/transformers/query-cache-transformer.js +0 -115
- package/codemods/v4/utils/transformers/query-client-transformer.js +0 -49
- package/codemods/v4/utils/transformers/use-query-like-transformer.js +0 -32
- package/codemods/v4/utils/unprocessable-key-error.js +0 -8
- package/src/__tests__/useIsMutating.test.tsx +0 -259
- package/src/reactBatchedUpdates.native.ts +0 -4
- package/src/reactBatchedUpdates.ts +0 -2
- package/src/setBatchUpdatesFn.ts +0 -4
- package/src/useIsMutating.ts +0 -39
- package/src/useSyncExternalStore.native.ts +0 -5
- package/src/useSyncExternalStore.ts +0 -4
- /package/build/lib/__tests__/{Hydrate.test.d.ts → HydrationBoundary.test.d.ts} +0 -0
- /package/build/lib/__tests__/{useIsMutating.test.d.ts → useInfiniteQuery.type.test.d.ts} +0 -0
- /package/build/lib/{setBatchUpdatesFn.d.ts → __tests__/useMutationState.test.d.ts} +0 -0
|
@@ -1,20 +1,13 @@
|
|
|
1
1
|
import { useQuery } from '../useQuery'
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
T,
|
|
5
|
-
>() => T extends Y ? 1 : 2
|
|
6
|
-
? true
|
|
7
|
-
: false
|
|
8
|
-
|
|
9
|
-
export type Expect<T extends true> = T
|
|
10
|
-
|
|
11
|
-
const doNotExecute = (_func: () => void) => true
|
|
2
|
+
import type { Expect, Equal } from './utils'
|
|
3
|
+
import { doNotExecute } from './utils'
|
|
12
4
|
|
|
13
5
|
describe('initialData', () => {
|
|
14
6
|
describe('Config object overload', () => {
|
|
15
7
|
it('TData should always be defined when initialData is provided as an object', () => {
|
|
16
8
|
doNotExecute(() => {
|
|
17
9
|
const { data } = useQuery({
|
|
10
|
+
queryKey: ['key'],
|
|
18
11
|
queryFn: () => {
|
|
19
12
|
return {
|
|
20
13
|
wow: true,
|
|
@@ -33,6 +26,7 @@ describe('initialData', () => {
|
|
|
33
26
|
it('TData should always be defined when initialData is provided as a function which ALWAYS returns the data', () => {
|
|
34
27
|
doNotExecute(() => {
|
|
35
28
|
const { data } = useQuery({
|
|
29
|
+
queryKey: ['key'],
|
|
36
30
|
queryFn: () => {
|
|
37
31
|
return {
|
|
38
32
|
wow: true,
|
|
@@ -51,6 +45,7 @@ describe('initialData', () => {
|
|
|
51
45
|
it('TData should have undefined in the union when initialData is NOT provided', () => {
|
|
52
46
|
doNotExecute(() => {
|
|
53
47
|
const { data } = useQuery({
|
|
48
|
+
queryKey: ['key'],
|
|
54
49
|
queryFn: () => {
|
|
55
50
|
return {
|
|
56
51
|
wow: true,
|
|
@@ -67,6 +62,7 @@ describe('initialData', () => {
|
|
|
67
62
|
it('TData should have undefined in the union when initialData is provided as a function which can return undefined', () => {
|
|
68
63
|
doNotExecute(() => {
|
|
69
64
|
const { data } = useQuery({
|
|
65
|
+
queryKey: ['key'],
|
|
70
66
|
queryFn: () => {
|
|
71
67
|
return {
|
|
72
68
|
wow: true,
|
|
@@ -85,7 +81,8 @@ describe('initialData', () => {
|
|
|
85
81
|
describe('Query key overload', () => {
|
|
86
82
|
it('TData should always be defined when initialData is provided', () => {
|
|
87
83
|
doNotExecute(() => {
|
|
88
|
-
const { data } = useQuery(
|
|
84
|
+
const { data } = useQuery({
|
|
85
|
+
queryKey: ['key'],
|
|
89
86
|
queryFn: () => {
|
|
90
87
|
return {
|
|
91
88
|
wow: true,
|
|
@@ -103,7 +100,8 @@ describe('initialData', () => {
|
|
|
103
100
|
|
|
104
101
|
it('TData should have undefined in the union when initialData is NOT provided', () => {
|
|
105
102
|
doNotExecute(() => {
|
|
106
|
-
const { data } = useQuery(
|
|
103
|
+
const { data } = useQuery({
|
|
104
|
+
queryKey: ['key'],
|
|
107
105
|
queryFn: () => {
|
|
108
106
|
return {
|
|
109
107
|
wow: true,
|
|
@@ -121,19 +119,17 @@ describe('initialData', () => {
|
|
|
121
119
|
describe('Query key and func', () => {
|
|
122
120
|
it('TData should always be defined when initialData is provided', () => {
|
|
123
121
|
doNotExecute(() => {
|
|
124
|
-
const { data } = useQuery(
|
|
125
|
-
['key'],
|
|
126
|
-
() => {
|
|
122
|
+
const { data } = useQuery({
|
|
123
|
+
queryKey: ['key'],
|
|
124
|
+
queryFn: () => {
|
|
127
125
|
return {
|
|
128
126
|
wow: true,
|
|
129
127
|
}
|
|
130
128
|
},
|
|
131
|
-
{
|
|
132
|
-
|
|
133
|
-
wow: true,
|
|
134
|
-
},
|
|
129
|
+
initialData: {
|
|
130
|
+
wow: true,
|
|
135
131
|
},
|
|
136
|
-
)
|
|
132
|
+
})
|
|
137
133
|
|
|
138
134
|
const result: Expect<Equal<{ wow: boolean }, typeof data>> = true
|
|
139
135
|
return result
|
|
@@ -142,10 +138,13 @@ describe('initialData', () => {
|
|
|
142
138
|
|
|
143
139
|
it('TData should have undefined in the union when initialData is NOT provided', () => {
|
|
144
140
|
doNotExecute(() => {
|
|
145
|
-
const { data } = useQuery(
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
141
|
+
const { data } = useQuery({
|
|
142
|
+
queryKey: ['key'],
|
|
143
|
+
queryFn: () => {
|
|
144
|
+
return {
|
|
145
|
+
wow: true,
|
|
146
|
+
}
|
|
147
|
+
},
|
|
149
148
|
})
|
|
150
149
|
|
|
151
150
|
const result: Expect<Equal<{ wow: boolean } | undefined, typeof data>> =
|
package/src/__tests__/utils.tsx
CHANGED
|
@@ -1,26 +1,21 @@
|
|
|
1
1
|
import * as React from 'react'
|
|
2
2
|
import { act, render } from '@testing-library/react'
|
|
3
|
-
import type {
|
|
3
|
+
import type { QueryClientConfig } from '..'
|
|
4
4
|
import { QueryClient, QueryClientProvider } from '..'
|
|
5
5
|
import * as utils from '@tanstack/query-core'
|
|
6
6
|
|
|
7
7
|
export function renderWithClient(
|
|
8
8
|
client: QueryClient,
|
|
9
9
|
ui: React.ReactElement,
|
|
10
|
-
options: ContextOptions = {},
|
|
11
10
|
): ReturnType<typeof render> {
|
|
12
11
|
const { rerender, ...result } = render(
|
|
13
|
-
<QueryClientProvider client={client}
|
|
14
|
-
{ui}
|
|
15
|
-
</QueryClientProvider>,
|
|
12
|
+
<QueryClientProvider client={client}>{ui}</QueryClientProvider>,
|
|
16
13
|
)
|
|
17
14
|
return {
|
|
18
15
|
...result,
|
|
19
16
|
rerender: (rerenderUi: React.ReactElement) =>
|
|
20
17
|
rerender(
|
|
21
|
-
<QueryClientProvider client={client}
|
|
22
|
-
{rerenderUi}
|
|
23
|
-
</QueryClientProvider>,
|
|
18
|
+
<QueryClientProvider client={client}>{rerenderUi}</QueryClientProvider>,
|
|
24
19
|
),
|
|
25
20
|
} as any
|
|
26
21
|
}
|
|
@@ -46,8 +41,7 @@ export const Blink = ({
|
|
|
46
41
|
}
|
|
47
42
|
|
|
48
43
|
export function createQueryClient(config?: QueryClientConfig): QueryClient {
|
|
49
|
-
|
|
50
|
-
return new QueryClient({ logger: mockLogger, ...config })
|
|
44
|
+
return new QueryClient(config)
|
|
51
45
|
}
|
|
52
46
|
|
|
53
47
|
export function mockVisibilityState(value: DocumentVisibilityState) {
|
|
@@ -58,12 +52,6 @@ export function mockNavigatorOnLine(value: boolean) {
|
|
|
58
52
|
return jest.spyOn(navigator, 'onLine', 'get').mockReturnValue(value)
|
|
59
53
|
}
|
|
60
54
|
|
|
61
|
-
export const mockLogger = {
|
|
62
|
-
log: jest.fn(),
|
|
63
|
-
warn: jest.fn(),
|
|
64
|
-
error: jest.fn(),
|
|
65
|
-
}
|
|
66
|
-
|
|
67
55
|
let queryKeyCount = 0
|
|
68
56
|
export function queryKey(): Array<string> {
|
|
69
57
|
queryKeyCount++
|
|
@@ -91,6 +79,14 @@ export function expectType<T>(_: T): void {
|
|
|
91
79
|
return undefined
|
|
92
80
|
}
|
|
93
81
|
|
|
82
|
+
export type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends <
|
|
83
|
+
T,
|
|
84
|
+
>() => T extends Y ? 1 : 2
|
|
85
|
+
? true
|
|
86
|
+
: false
|
|
87
|
+
|
|
88
|
+
export type Expect<T extends true> = T
|
|
89
|
+
|
|
94
90
|
/**
|
|
95
91
|
* Assert the parameter is not typed as `any`
|
|
96
92
|
*/
|
|
@@ -98,13 +94,6 @@ export function expectTypeNotAny<T>(_: 0 extends 1 & T ? never : T): void {
|
|
|
98
94
|
return undefined
|
|
99
95
|
}
|
|
100
96
|
|
|
101
|
-
export function executeMutation(
|
|
102
|
-
queryClient: QueryClient,
|
|
103
|
-
options: MutationOptions<any, any, any, any>,
|
|
104
|
-
): Promise<unknown> {
|
|
105
|
-
return queryClient.getMutationCache().build(queryClient, options).execute()
|
|
106
|
-
}
|
|
107
|
-
|
|
108
97
|
// This monkey-patches the isServer-value from utils,
|
|
109
98
|
// so that we can pretend to be in a server environment
|
|
110
99
|
export function setIsServer(isServer: boolean) {
|
|
@@ -119,3 +108,5 @@ export function setIsServer(isServer: boolean) {
|
|
|
119
108
|
})
|
|
120
109
|
}
|
|
121
110
|
}
|
|
111
|
+
|
|
112
|
+
export const doNotExecute = (_func: () => void) => true
|
|
@@ -3,7 +3,7 @@ import type {
|
|
|
3
3
|
Query,
|
|
4
4
|
QueryKey,
|
|
5
5
|
QueryObserverResult,
|
|
6
|
-
|
|
6
|
+
ThrowErrors,
|
|
7
7
|
} from '@tanstack/query-core'
|
|
8
8
|
import type { QueryErrorResetBoundaryValue } from './QueryErrorResetBoundary'
|
|
9
9
|
import * as React from 'react'
|
|
@@ -25,7 +25,7 @@ export const ensurePreventErrorBoundaryRetry = <
|
|
|
25
25
|
>,
|
|
26
26
|
errorResetBoundary: QueryErrorResetBoundaryValue,
|
|
27
27
|
) => {
|
|
28
|
-
if (options.suspense || options.
|
|
28
|
+
if (options.suspense || options.throwErrors) {
|
|
29
29
|
// Prevent retrying failed query if the error boundary has not been reset yet
|
|
30
30
|
if (!errorResetBoundary.isReset()) {
|
|
31
31
|
options.retryOnMount = false
|
|
@@ -50,23 +50,18 @@ export const getHasError = <
|
|
|
50
50
|
>({
|
|
51
51
|
result,
|
|
52
52
|
errorResetBoundary,
|
|
53
|
-
|
|
53
|
+
throwErrors,
|
|
54
54
|
query,
|
|
55
55
|
}: {
|
|
56
56
|
result: QueryObserverResult<TData, TError>
|
|
57
57
|
errorResetBoundary: QueryErrorResetBoundaryValue
|
|
58
|
-
|
|
59
|
-
TQueryFnData,
|
|
60
|
-
TError,
|
|
61
|
-
TQueryData,
|
|
62
|
-
TQueryKey
|
|
63
|
-
>
|
|
58
|
+
throwErrors: ThrowErrors<TQueryFnData, TError, TQueryData, TQueryKey>
|
|
64
59
|
query: Query<TQueryFnData, TError, TQueryData, TQueryKey>
|
|
65
60
|
}) => {
|
|
66
61
|
return (
|
|
67
62
|
result.isError &&
|
|
68
63
|
!errorResetBoundary.isReset() &&
|
|
69
64
|
!result.isFetching &&
|
|
70
|
-
shouldThrowError(
|
|
65
|
+
shouldThrowError(throwErrors, [result.error, query])
|
|
71
66
|
)
|
|
72
67
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
/* istanbul ignore file */
|
|
2
2
|
|
|
3
|
-
// Side effects
|
|
4
|
-
import './setBatchUpdatesFn'
|
|
5
|
-
|
|
6
3
|
// Re-export core
|
|
7
4
|
export * from '@tanstack/query-core'
|
|
8
5
|
|
|
@@ -12,20 +9,20 @@ export { useQueries } from './useQueries'
|
|
|
12
9
|
export type { QueriesResults, QueriesOptions } from './useQueries'
|
|
13
10
|
export { useQuery } from './useQuery'
|
|
14
11
|
export {
|
|
15
|
-
|
|
12
|
+
QueryClientContext,
|
|
16
13
|
QueryClientProvider,
|
|
17
14
|
useQueryClient,
|
|
18
15
|
} from './QueryClientProvider'
|
|
19
16
|
export type { QueryClientProviderProps } from './QueryClientProvider'
|
|
20
17
|
export type { QueryErrorResetBoundaryProps } from './QueryErrorResetBoundary'
|
|
21
|
-
export {
|
|
22
|
-
export type {
|
|
18
|
+
export { HydrationBoundary } from './HydrationBoundary'
|
|
19
|
+
export type { HydrationBoundaryProps } from './HydrationBoundary'
|
|
23
20
|
export {
|
|
24
21
|
QueryErrorResetBoundary,
|
|
25
22
|
useQueryErrorResetBoundary,
|
|
26
23
|
} from './QueryErrorResetBoundary'
|
|
27
24
|
export { useIsFetching } from './useIsFetching'
|
|
28
|
-
export { useIsMutating } from './
|
|
25
|
+
export { useIsMutating, useMutationState } from './useMutationState'
|
|
29
26
|
export { useMutation } from './useMutation'
|
|
30
27
|
export { useInfiniteQuery } from './useInfiniteQuery'
|
|
31
28
|
export { useIsRestoring, IsRestoringProvider } from './isRestoring'
|
package/src/types.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/* istanbul ignore file */
|
|
2
2
|
|
|
3
|
-
import type * as React from 'react'
|
|
4
3
|
import type {
|
|
5
4
|
InfiniteQueryObserverOptions,
|
|
6
5
|
InfiniteQueryObserverResult,
|
|
@@ -11,92 +10,88 @@ import type {
|
|
|
11
10
|
MutationObserverOptions,
|
|
12
11
|
MutateFunction,
|
|
13
12
|
DefinedQueryObserverResult,
|
|
13
|
+
WithRequired,
|
|
14
|
+
RegisteredError,
|
|
14
15
|
} from '@tanstack/query-core'
|
|
15
|
-
import type { QueryClient } from '@tanstack/query-core'
|
|
16
|
-
|
|
17
|
-
export interface ContextOptions {
|
|
18
|
-
/**
|
|
19
|
-
* Use this to pass your React Query context. Otherwise, `defaultContext` will be used.
|
|
20
|
-
*/
|
|
21
|
-
context?: React.Context<QueryClient | undefined>
|
|
22
|
-
}
|
|
23
16
|
|
|
24
17
|
export interface UseBaseQueryOptions<
|
|
25
18
|
TQueryFnData = unknown,
|
|
26
|
-
TError =
|
|
19
|
+
TError = RegisteredError,
|
|
27
20
|
TData = TQueryFnData,
|
|
28
21
|
TQueryData = TQueryFnData,
|
|
29
22
|
TQueryKey extends QueryKey = QueryKey,
|
|
30
|
-
> extends
|
|
31
|
-
QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey
|
|
23
|
+
> extends WithRequired<
|
|
24
|
+
QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>,
|
|
25
|
+
'queryKey'
|
|
26
|
+
> {}
|
|
32
27
|
|
|
33
28
|
export interface UseQueryOptions<
|
|
34
29
|
TQueryFnData = unknown,
|
|
35
|
-
TError =
|
|
30
|
+
TError = RegisteredError,
|
|
36
31
|
TData = TQueryFnData,
|
|
37
32
|
TQueryKey extends QueryKey = QueryKey,
|
|
38
|
-
> extends
|
|
39
|
-
TQueryFnData,
|
|
40
|
-
|
|
41
|
-
TData,
|
|
42
|
-
TQueryFnData,
|
|
43
|
-
TQueryKey
|
|
33
|
+
> extends WithRequired<
|
|
34
|
+
UseBaseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,
|
|
35
|
+
'queryKey'
|
|
44
36
|
> {}
|
|
45
37
|
|
|
46
38
|
export interface UseInfiniteQueryOptions<
|
|
47
39
|
TQueryFnData = unknown,
|
|
48
|
-
TError =
|
|
40
|
+
TError = RegisteredError,
|
|
49
41
|
TData = TQueryFnData,
|
|
50
42
|
TQueryData = TQueryFnData,
|
|
51
43
|
TQueryKey extends QueryKey = QueryKey,
|
|
52
|
-
|
|
44
|
+
TPageParam = unknown,
|
|
45
|
+
> extends WithRequired<
|
|
53
46
|
InfiniteQueryObserverOptions<
|
|
54
47
|
TQueryFnData,
|
|
55
48
|
TError,
|
|
56
49
|
TData,
|
|
57
50
|
TQueryData,
|
|
58
|
-
TQueryKey
|
|
59
|
-
|
|
51
|
+
TQueryKey,
|
|
52
|
+
TPageParam
|
|
53
|
+
>,
|
|
54
|
+
'queryKey'
|
|
55
|
+
> {}
|
|
60
56
|
|
|
61
57
|
export type UseBaseQueryResult<
|
|
62
58
|
TData = unknown,
|
|
63
|
-
TError =
|
|
59
|
+
TError = RegisteredError,
|
|
64
60
|
> = QueryObserverResult<TData, TError>
|
|
65
61
|
|
|
66
62
|
export type UseQueryResult<
|
|
67
63
|
TData = unknown,
|
|
68
|
-
TError =
|
|
64
|
+
TError = RegisteredError,
|
|
69
65
|
> = UseBaseQueryResult<TData, TError>
|
|
70
66
|
|
|
71
67
|
export type DefinedUseBaseQueryResult<
|
|
72
68
|
TData = unknown,
|
|
73
|
-
TError =
|
|
69
|
+
TError = RegisteredError,
|
|
74
70
|
> = DefinedQueryObserverResult<TData, TError>
|
|
75
71
|
|
|
76
72
|
export type DefinedUseQueryResult<
|
|
77
73
|
TData = unknown,
|
|
78
|
-
TError =
|
|
74
|
+
TError = RegisteredError,
|
|
79
75
|
> = DefinedUseBaseQueryResult<TData, TError>
|
|
80
76
|
|
|
81
77
|
export type UseInfiniteQueryResult<
|
|
82
78
|
TData = unknown,
|
|
83
|
-
TError =
|
|
79
|
+
TError = RegisteredError,
|
|
84
80
|
> = InfiniteQueryObserverResult<TData, TError>
|
|
85
81
|
|
|
86
82
|
export interface UseMutationOptions<
|
|
87
83
|
TData = unknown,
|
|
88
|
-
TError =
|
|
84
|
+
TError = RegisteredError,
|
|
89
85
|
TVariables = void,
|
|
90
86
|
TContext = unknown,
|
|
91
|
-
> extends
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
> {}
|
|
87
|
+
> extends Omit<
|
|
88
|
+
MutationObserverOptions<TData, TError, TVariables, TContext>,
|
|
89
|
+
'_defaulted' | 'variables'
|
|
90
|
+
> {}
|
|
96
91
|
|
|
97
92
|
export type UseMutateFunction<
|
|
98
93
|
TData = unknown,
|
|
99
|
-
TError =
|
|
94
|
+
TError = RegisteredError,
|
|
100
95
|
TVariables = void,
|
|
101
96
|
TContext = unknown,
|
|
102
97
|
> = (
|
|
@@ -105,14 +100,14 @@ export type UseMutateFunction<
|
|
|
105
100
|
|
|
106
101
|
export type UseMutateAsyncFunction<
|
|
107
102
|
TData = unknown,
|
|
108
|
-
TError =
|
|
103
|
+
TError = RegisteredError,
|
|
109
104
|
TVariables = void,
|
|
110
105
|
TContext = unknown,
|
|
111
106
|
> = MutateFunction<TData, TError, TVariables, TContext>
|
|
112
107
|
|
|
113
108
|
export type UseBaseMutationResult<
|
|
114
109
|
TData = unknown,
|
|
115
|
-
TError =
|
|
110
|
+
TError = RegisteredError,
|
|
116
111
|
TVariables = unknown,
|
|
117
112
|
TContext = unknown,
|
|
118
113
|
> = Override<
|
|
@@ -122,7 +117,7 @@ export type UseBaseMutationResult<
|
|
|
122
117
|
|
|
123
118
|
export type UseMutationResult<
|
|
124
119
|
TData = unknown,
|
|
125
|
-
TError =
|
|
120
|
+
TError = RegisteredError,
|
|
126
121
|
TVariables = unknown,
|
|
127
122
|
TContext = unknown,
|
|
128
123
|
> = UseBaseMutationResult<TData, TError, TVariables, TContext>
|
package/src/useBaseQuery.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as React from 'react'
|
|
2
|
-
import { useSyncExternalStore } from './useSyncExternalStore'
|
|
3
2
|
|
|
4
|
-
import type { QueryKey, QueryObserver } from '@tanstack/query-core'
|
|
3
|
+
import type { QueryClient, QueryKey, QueryObserver } from '@tanstack/query-core'
|
|
5
4
|
import { notifyManager } from '@tanstack/query-core'
|
|
6
5
|
import { useQueryErrorResetBoundary } from './QueryErrorResetBoundary'
|
|
7
6
|
import { useQueryClient } from './QueryClientProvider'
|
|
@@ -29,11 +28,12 @@ export function useBaseQuery<
|
|
|
29
28
|
TQueryKey
|
|
30
29
|
>,
|
|
31
30
|
Observer: typeof QueryObserver,
|
|
31
|
+
queryClient?: QueryClient,
|
|
32
32
|
) {
|
|
33
|
-
const
|
|
33
|
+
const client = useQueryClient(queryClient)
|
|
34
34
|
const isRestoring = useIsRestoring()
|
|
35
35
|
const errorResetBoundary = useQueryErrorResetBoundary()
|
|
36
|
-
const defaultedOptions =
|
|
36
|
+
const defaultedOptions = client.defaultQueryOptions(options)
|
|
37
37
|
|
|
38
38
|
// Make sure results are optimistically set in fetching state before subscribing or updating options
|
|
39
39
|
defaultedOptions._optimisticResults = isRestoring
|
|
@@ -67,14 +67,14 @@ export function useBaseQuery<
|
|
|
67
67
|
const [observer] = React.useState(
|
|
68
68
|
() =>
|
|
69
69
|
new Observer<TQueryFnData, TError, TData, TQueryData, TQueryKey>(
|
|
70
|
-
|
|
70
|
+
client,
|
|
71
71
|
defaultedOptions,
|
|
72
72
|
),
|
|
73
73
|
)
|
|
74
74
|
|
|
75
75
|
const result = observer.getOptimisticResult(defaultedOptions)
|
|
76
76
|
|
|
77
|
-
useSyncExternalStore(
|
|
77
|
+
React.useSyncExternalStore(
|
|
78
78
|
React.useCallback(
|
|
79
79
|
(onStoreChange) =>
|
|
80
80
|
isRestoring
|
|
@@ -102,7 +102,7 @@ export function useBaseQuery<
|
|
|
102
102
|
getHasError({
|
|
103
103
|
result,
|
|
104
104
|
errorResetBoundary,
|
|
105
|
-
|
|
105
|
+
throwErrors: defaultedOptions.throwErrors,
|
|
106
106
|
query: observer.getCurrentQuery(),
|
|
107
107
|
})
|
|
108
108
|
) {
|
package/src/useInfiniteQuery.ts
CHANGED
|
@@ -1,100 +1,35 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
QueryObserver,
|
|
3
|
-
QueryFunction,
|
|
4
3
|
QueryKey,
|
|
4
|
+
QueryClient,
|
|
5
|
+
RegisteredError,
|
|
6
|
+
InfiniteData,
|
|
5
7
|
} from '@tanstack/query-core'
|
|
6
|
-
import { InfiniteQueryObserver
|
|
8
|
+
import { InfiniteQueryObserver } from '@tanstack/query-core'
|
|
7
9
|
import type { UseInfiniteQueryOptions, UseInfiniteQueryResult } from './types'
|
|
8
10
|
import { useBaseQuery } from './useBaseQuery'
|
|
9
11
|
|
|
10
12
|
// HOOK
|
|
11
|
-
|
|
12
|
-
export function useInfiniteQuery<
|
|
13
|
-
TQueryFnData = unknown,
|
|
14
|
-
TError = unknown,
|
|
15
|
-
TData = TQueryFnData,
|
|
16
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
17
|
-
>(
|
|
18
|
-
options: UseInfiniteQueryOptions<
|
|
19
|
-
TQueryFnData,
|
|
20
|
-
TError,
|
|
21
|
-
TData,
|
|
22
|
-
TQueryFnData,
|
|
23
|
-
TQueryKey
|
|
24
|
-
>,
|
|
25
|
-
): UseInfiniteQueryResult<TData, TError>
|
|
26
|
-
export function useInfiniteQuery<
|
|
27
|
-
TQueryFnData = unknown,
|
|
28
|
-
TError = unknown,
|
|
29
|
-
TData = TQueryFnData,
|
|
30
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
31
|
-
>(
|
|
32
|
-
queryKey: TQueryKey,
|
|
33
|
-
options?: Omit<
|
|
34
|
-
UseInfiniteQueryOptions<
|
|
35
|
-
TQueryFnData,
|
|
36
|
-
TError,
|
|
37
|
-
TData,
|
|
38
|
-
TQueryFnData,
|
|
39
|
-
TQueryKey
|
|
40
|
-
>,
|
|
41
|
-
'queryKey'
|
|
42
|
-
>,
|
|
43
|
-
): UseInfiniteQueryResult<TData, TError>
|
|
44
|
-
export function useInfiniteQuery<
|
|
45
|
-
TQueryFnData = unknown,
|
|
46
|
-
TError = unknown,
|
|
47
|
-
TData = TQueryFnData,
|
|
48
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
49
|
-
>(
|
|
50
|
-
queryKey: TQueryKey,
|
|
51
|
-
queryFn: QueryFunction<TQueryFnData, TQueryKey>,
|
|
52
|
-
options?: Omit<
|
|
53
|
-
UseInfiniteQueryOptions<
|
|
54
|
-
TQueryFnData,
|
|
55
|
-
TError,
|
|
56
|
-
TData,
|
|
57
|
-
TQueryFnData,
|
|
58
|
-
TQueryKey
|
|
59
|
-
>,
|
|
60
|
-
'queryKey' | 'queryFn'
|
|
61
|
-
>,
|
|
62
|
-
): UseInfiniteQueryResult<TData, TError>
|
|
63
13
|
export function useInfiniteQuery<
|
|
64
14
|
TQueryFnData,
|
|
65
|
-
TError,
|
|
66
|
-
TData = TQueryFnData
|
|
15
|
+
TError = RegisteredError,
|
|
16
|
+
TData = InfiniteData<TQueryFnData>,
|
|
67
17
|
TQueryKey extends QueryKey = QueryKey,
|
|
18
|
+
TPageParam = unknown,
|
|
68
19
|
>(
|
|
69
|
-
|
|
70
|
-
| TQueryKey
|
|
71
|
-
| UseInfiniteQueryOptions<
|
|
72
|
-
TQueryFnData,
|
|
73
|
-
TError,
|
|
74
|
-
TData,
|
|
75
|
-
TQueryFnData,
|
|
76
|
-
TQueryKey
|
|
77
|
-
>,
|
|
78
|
-
arg2?:
|
|
79
|
-
| QueryFunction<TQueryFnData, TQueryKey>
|
|
80
|
-
| UseInfiniteQueryOptions<
|
|
81
|
-
TQueryFnData,
|
|
82
|
-
TError,
|
|
83
|
-
TData,
|
|
84
|
-
TQueryFnData,
|
|
85
|
-
TQueryKey
|
|
86
|
-
>,
|
|
87
|
-
arg3?: UseInfiniteQueryOptions<
|
|
20
|
+
options: UseInfiniteQueryOptions<
|
|
88
21
|
TQueryFnData,
|
|
89
22
|
TError,
|
|
90
23
|
TData,
|
|
91
24
|
TQueryFnData,
|
|
92
|
-
TQueryKey
|
|
25
|
+
TQueryKey,
|
|
26
|
+
TPageParam
|
|
93
27
|
>,
|
|
28
|
+
queryClient?: QueryClient,
|
|
94
29
|
): UseInfiniteQueryResult<TData, TError> {
|
|
95
|
-
const options = parseQueryArgs(arg1, arg2, arg3)
|
|
96
30
|
return useBaseQuery(
|
|
97
31
|
options,
|
|
98
32
|
InfiniteQueryObserver as typeof QueryObserver,
|
|
33
|
+
queryClient,
|
|
99
34
|
) as UseInfiniteQueryResult<TData, TError>
|
|
100
35
|
}
|
package/src/useIsFetching.ts
CHANGED
|
@@ -1,35 +1,23 @@
|
|
|
1
1
|
import * as React from 'react'
|
|
2
|
-
import type {
|
|
3
|
-
import { notifyManager
|
|
2
|
+
import type { QueryClient, QueryFilters } from '@tanstack/query-core'
|
|
3
|
+
import { notifyManager } from '@tanstack/query-core'
|
|
4
4
|
|
|
5
|
-
import { useSyncExternalStore } from './useSyncExternalStore'
|
|
6
|
-
import type { ContextOptions } from './types'
|
|
7
5
|
import { useQueryClient } from './QueryClientProvider'
|
|
8
6
|
|
|
9
|
-
interface Options extends ContextOptions {}
|
|
10
|
-
|
|
11
|
-
export function useIsFetching(filters?: QueryFilters, options?: Options): number
|
|
12
7
|
export function useIsFetching(
|
|
13
|
-
queryKey?: QueryKey,
|
|
14
8
|
filters?: QueryFilters,
|
|
15
|
-
|
|
16
|
-
): number
|
|
17
|
-
export function useIsFetching(
|
|
18
|
-
arg1?: QueryKey | QueryFilters,
|
|
19
|
-
arg2?: QueryFilters | Options,
|
|
20
|
-
arg3?: Options,
|
|
9
|
+
queryClient?: QueryClient,
|
|
21
10
|
): number {
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
const queryCache = queryClient.getQueryCache()
|
|
11
|
+
const client = useQueryClient(queryClient)
|
|
12
|
+
const queryCache = client.getQueryCache()
|
|
25
13
|
|
|
26
|
-
return useSyncExternalStore(
|
|
14
|
+
return React.useSyncExternalStore(
|
|
27
15
|
React.useCallback(
|
|
28
16
|
(onStoreChange) =>
|
|
29
17
|
queryCache.subscribe(notifyManager.batchCalls(onStoreChange)),
|
|
30
18
|
[queryCache],
|
|
31
19
|
),
|
|
32
|
-
() =>
|
|
33
|
-
() =>
|
|
20
|
+
() => client.isFetching(filters),
|
|
21
|
+
() => client.isFetching(filters),
|
|
34
22
|
)
|
|
35
23
|
}
|