@tanstack/react-query 4.0.5

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 (129) hide show
  1. package/build/cjs/query-core/build/esm/index.js +3110 -0
  2. package/build/cjs/query-core/build/esm/index.js.map +1 -0
  3. package/build/cjs/react-query/src/Hydrate.js +66 -0
  4. package/build/cjs/react-query/src/Hydrate.js.map +1 -0
  5. package/build/cjs/react-query/src/QueryClientProvider.js +96 -0
  6. package/build/cjs/react-query/src/QueryClientProvider.js.map +1 -0
  7. package/build/cjs/react-query/src/QueryErrorResetBoundary.js +67 -0
  8. package/build/cjs/react-query/src/QueryErrorResetBoundary.js.map +1 -0
  9. package/build/cjs/react-query/src/index.js +64 -0
  10. package/build/cjs/react-query/src/index.js.map +1 -0
  11. package/build/cjs/react-query/src/isRestoring.js +43 -0
  12. package/build/cjs/react-query/src/isRestoring.js.map +1 -0
  13. package/build/cjs/react-query/src/useBaseQuery.js +117 -0
  14. package/build/cjs/react-query/src/useBaseQuery.js.map +1 -0
  15. package/build/cjs/react-query/src/useInfiniteQuery.js +24 -0
  16. package/build/cjs/react-query/src/useInfiniteQuery.js.map +1 -0
  17. package/build/cjs/react-query/src/useIsFetching.js +50 -0
  18. package/build/cjs/react-query/src/useIsFetching.js.map +1 -0
  19. package/build/cjs/react-query/src/useIsMutating.js +50 -0
  20. package/build/cjs/react-query/src/useIsMutating.js.map +1 -0
  21. package/build/cjs/react-query/src/useMutation.js +68 -0
  22. package/build/cjs/react-query/src/useMutation.js.map +1 -0
  23. package/build/cjs/react-query/src/useQueries.js +71 -0
  24. package/build/cjs/react-query/src/useQueries.js.map +1 -0
  25. package/build/cjs/react-query/src/useQuery.js +24 -0
  26. package/build/cjs/react-query/src/useQuery.js.map +1 -0
  27. package/build/cjs/react-query/src/utils.js +25 -0
  28. package/build/cjs/react-query/src/utils.js.map +1 -0
  29. package/build/esm/index.js +3368 -0
  30. package/build/esm/index.js.map +1 -0
  31. package/build/stats-html.html +2689 -0
  32. package/build/stats.json +666 -0
  33. package/build/types/packages/query-core/src/focusManager.d.ts +16 -0
  34. package/build/types/packages/query-core/src/hydration.d.ts +34 -0
  35. package/build/types/packages/query-core/src/index.d.ts +20 -0
  36. package/build/types/packages/query-core/src/infiniteQueryBehavior.d.ts +15 -0
  37. package/build/types/packages/query-core/src/infiniteQueryObserver.d.ts +18 -0
  38. package/build/types/packages/query-core/src/logger.d.ts +8 -0
  39. package/build/types/packages/query-core/src/mutation.d.ts +70 -0
  40. package/build/types/packages/query-core/src/mutationCache.d.ts +52 -0
  41. package/build/types/packages/query-core/src/mutationObserver.d.ts +23 -0
  42. package/build/types/packages/query-core/src/notifyManager.d.ts +18 -0
  43. package/build/types/packages/query-core/src/onlineManager.d.ts +16 -0
  44. package/build/types/packages/query-core/src/queriesObserver.d.ts +23 -0
  45. package/build/types/packages/query-core/src/query.d.ts +119 -0
  46. package/build/types/packages/query-core/src/queryCache.d.ts +59 -0
  47. package/build/types/packages/query-core/src/queryClient.d.ts +65 -0
  48. package/build/types/packages/query-core/src/queryObserver.d.ts +61 -0
  49. package/build/types/packages/query-core/src/removable.d.ts +9 -0
  50. package/build/types/packages/query-core/src/retryer.d.ts +33 -0
  51. package/build/types/packages/query-core/src/subscribable.d.ts +10 -0
  52. package/build/types/packages/query-core/src/types.d.ts +417 -0
  53. package/build/types/packages/query-core/src/utils.d.ts +99 -0
  54. package/build/types/packages/react-query/src/Hydrate.d.ts +10 -0
  55. package/build/types/packages/react-query/src/QueryClientProvider.d.ts +24 -0
  56. package/build/types/packages/react-query/src/QueryErrorResetBoundary.d.ts +12 -0
  57. package/build/types/packages/react-query/src/__tests__/Hydrate.test.d.ts +1 -0
  58. package/build/types/packages/react-query/src/__tests__/QueryClientProvider.test.d.ts +1 -0
  59. package/build/types/packages/react-query/src/__tests__/QueryResetErrorBoundary.test.d.ts +6 -0
  60. package/build/types/packages/react-query/src/__tests__/ssr-hydration.test.d.ts +1 -0
  61. package/build/types/packages/react-query/src/__tests__/ssr.test.d.ts +4 -0
  62. package/build/types/packages/react-query/src/__tests__/suspense.test.d.ts +1 -0
  63. package/build/types/packages/react-query/src/__tests__/useInfiniteQuery.test.d.ts +1 -0
  64. package/build/types/packages/react-query/src/__tests__/useIsFetching.test.d.ts +1 -0
  65. package/build/types/packages/react-query/src/__tests__/useIsMutating.test.d.ts +1 -0
  66. package/build/types/packages/react-query/src/__tests__/useMutation.test.d.ts +1 -0
  67. package/build/types/packages/react-query/src/__tests__/useQueries.test.d.ts +1 -0
  68. package/build/types/packages/react-query/src/__tests__/useQuery.test.d.ts +1 -0
  69. package/build/types/packages/react-query/src/__tests__/useQuery.types.test.d.ts +2 -0
  70. package/build/types/packages/react-query/src/__tests__/utils.d.ts +8 -0
  71. package/build/types/packages/react-query/src/index.d.ts +17 -0
  72. package/build/types/packages/react-query/src/isRestoring.d.ts +3 -0
  73. package/build/types/packages/react-query/src/reactBatchedUpdates.d.ts +2 -0
  74. package/build/types/packages/react-query/src/reactBatchedUpdates.native.d.ts +2 -0
  75. package/build/types/packages/react-query/src/setBatchUpdatesFn.d.ts +1 -0
  76. package/build/types/packages/react-query/src/types.d.ts +35 -0
  77. package/build/types/packages/react-query/src/useBaseQuery.d.ts +3 -0
  78. package/build/types/packages/react-query/src/useInfiniteQuery.d.ts +5 -0
  79. package/build/types/packages/react-query/src/useIsFetching.d.ts +7 -0
  80. package/build/types/packages/react-query/src/useIsMutating.d.ts +7 -0
  81. package/build/types/packages/react-query/src/useMutation.d.ts +6 -0
  82. package/build/types/packages/react-query/src/useQueries.d.ts +49 -0
  83. package/build/types/packages/react-query/src/useQuery.d.ts +20 -0
  84. package/build/types/packages/react-query/src/utils.d.ts +1 -0
  85. package/build/types/tests/utils.d.ts +24 -0
  86. package/build/umd/index.development.js +3429 -0
  87. package/build/umd/index.development.js.map +1 -0
  88. package/build/umd/index.production.js +22 -0
  89. package/build/umd/index.production.js.map +1 -0
  90. package/codemods/v4/key-transformation.js +138 -0
  91. package/codemods/v4/replace-import-specifier.js +25 -0
  92. package/codemods/v4/utils/index.js +166 -0
  93. package/codemods/v4/utils/replacers/key-replacer.js +160 -0
  94. package/codemods/v4/utils/transformers/query-cache-transformer.js +115 -0
  95. package/codemods/v4/utils/transformers/query-client-transformer.js +49 -0
  96. package/codemods/v4/utils/transformers/use-query-like-transformer.js +32 -0
  97. package/codemods/v4/utils/unprocessable-key-error.js +8 -0
  98. package/package.json +63 -0
  99. package/src/Hydrate.tsx +36 -0
  100. package/src/QueryClientProvider.tsx +90 -0
  101. package/src/QueryErrorResetBoundary.tsx +52 -0
  102. package/src/__tests__/Hydrate.test.tsx +247 -0
  103. package/src/__tests__/QueryClientProvider.test.tsx +275 -0
  104. package/src/__tests__/QueryResetErrorBoundary.test.tsx +630 -0
  105. package/src/__tests__/ssr-hydration.test.tsx +274 -0
  106. package/src/__tests__/ssr.test.tsx +151 -0
  107. package/src/__tests__/suspense.test.tsx +1015 -0
  108. package/src/__tests__/useInfiniteQuery.test.tsx +1773 -0
  109. package/src/__tests__/useIsFetching.test.tsx +274 -0
  110. package/src/__tests__/useIsMutating.test.tsx +260 -0
  111. package/src/__tests__/useMutation.test.tsx +1099 -0
  112. package/src/__tests__/useQueries.test.tsx +1107 -0
  113. package/src/__tests__/useQuery.test.tsx +5746 -0
  114. package/src/__tests__/useQuery.types.test.tsx +157 -0
  115. package/src/__tests__/utils.tsx +45 -0
  116. package/src/index.ts +29 -0
  117. package/src/isRestoring.tsx +6 -0
  118. package/src/reactBatchedUpdates.native.ts +4 -0
  119. package/src/reactBatchedUpdates.ts +2 -0
  120. package/src/setBatchUpdatesFn.ts +4 -0
  121. package/src/types.ts +122 -0
  122. package/src/useBaseQuery.ts +140 -0
  123. package/src/useInfiniteQuery.ts +101 -0
  124. package/src/useIsFetching.ts +39 -0
  125. package/src/useIsMutating.ts +43 -0
  126. package/src/useMutation.ts +126 -0
  127. package/src/useQueries.ts +192 -0
  128. package/src/useQuery.ts +104 -0
  129. package/src/utils.ts +11 -0
@@ -0,0 +1,126 @@
1
+ import * as React from 'react'
2
+ import { useSyncExternalStore } from 'use-sync-external-store/shim'
3
+
4
+ import {
5
+ notifyManager,
6
+ parseMutationArgs,
7
+ MutationObserver,
8
+ MutationFunction,
9
+ MutationKey,
10
+ } from '@tanstack/query-core'
11
+ import { useQueryClient } from './QueryClientProvider'
12
+ import {
13
+ UseMutateFunction,
14
+ UseMutationOptions,
15
+ UseMutationResult,
16
+ } from './types'
17
+ import { shouldThrowError } from './utils'
18
+
19
+ // HOOK
20
+
21
+ export function useMutation<
22
+ TData = unknown,
23
+ TError = unknown,
24
+ TVariables = void,
25
+ TContext = unknown,
26
+ >(
27
+ options: UseMutationOptions<TData, TError, TVariables, TContext>,
28
+ ): UseMutationResult<TData, TError, TVariables, TContext>
29
+ export function useMutation<
30
+ TData = unknown,
31
+ TError = unknown,
32
+ TVariables = void,
33
+ TContext = unknown,
34
+ >(
35
+ mutationFn: MutationFunction<TData, TVariables>,
36
+ options?: Omit<
37
+ UseMutationOptions<TData, TError, TVariables, TContext>,
38
+ 'mutationFn'
39
+ >,
40
+ ): UseMutationResult<TData, TError, TVariables, TContext>
41
+ export function useMutation<
42
+ TData = unknown,
43
+ TError = unknown,
44
+ TVariables = void,
45
+ TContext = unknown,
46
+ >(
47
+ mutationKey: MutationKey,
48
+ options?: Omit<
49
+ UseMutationOptions<TData, TError, TVariables, TContext>,
50
+ 'mutationKey'
51
+ >,
52
+ ): UseMutationResult<TData, TError, TVariables, TContext>
53
+ export function useMutation<
54
+ TData = unknown,
55
+ TError = unknown,
56
+ TVariables = void,
57
+ TContext = unknown,
58
+ >(
59
+ mutationKey: MutationKey,
60
+ mutationFn?: MutationFunction<TData, TVariables>,
61
+ options?: Omit<
62
+ UseMutationOptions<TData, TError, TVariables, TContext>,
63
+ 'mutationKey' | 'mutationFn'
64
+ >,
65
+ ): UseMutationResult<TData, TError, TVariables, TContext>
66
+ export function useMutation<
67
+ TData = unknown,
68
+ TError = unknown,
69
+ TVariables = void,
70
+ TContext = unknown,
71
+ >(
72
+ arg1:
73
+ | MutationKey
74
+ | MutationFunction<TData, TVariables>
75
+ | UseMutationOptions<TData, TError, TVariables, TContext>,
76
+ arg2?:
77
+ | MutationFunction<TData, TVariables>
78
+ | UseMutationOptions<TData, TError, TVariables, TContext>,
79
+ arg3?: UseMutationOptions<TData, TError, TVariables, TContext>,
80
+ ): UseMutationResult<TData, TError, TVariables, TContext> {
81
+ const options = parseMutationArgs(arg1, arg2, arg3)
82
+ const queryClient = useQueryClient({ context: options.context })
83
+
84
+ const [observer] = React.useState(
85
+ () =>
86
+ new MutationObserver<TData, TError, TVariables, TContext>(
87
+ queryClient,
88
+ options,
89
+ ),
90
+ )
91
+
92
+ React.useEffect(() => {
93
+ observer.setOptions(options)
94
+ }, [observer, options])
95
+
96
+ const result = useSyncExternalStore(
97
+ React.useCallback(
98
+ (onStoreChange) =>
99
+ observer.subscribe(notifyManager.batchCalls(onStoreChange)),
100
+ [observer],
101
+ ),
102
+ () => observer.getCurrentResult(),
103
+ () => observer.getCurrentResult(),
104
+ )
105
+
106
+ const mutate = React.useCallback<
107
+ UseMutateFunction<TData, TError, TVariables, TContext>
108
+ >(
109
+ (variables, mutateOptions) => {
110
+ observer.mutate(variables, mutateOptions).catch(noop)
111
+ },
112
+ [observer],
113
+ )
114
+
115
+ if (
116
+ result.error &&
117
+ shouldThrowError(observer.options.useErrorBoundary, [result.error])
118
+ ) {
119
+ throw result.error
120
+ }
121
+
122
+ return { ...result, mutate, mutateAsync: result.mutate }
123
+ }
124
+
125
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
126
+ function noop() {}
@@ -0,0 +1,192 @@
1
+ import * as React from 'react'
2
+ import { useSyncExternalStore } from 'use-sync-external-store/shim'
3
+
4
+ import {
5
+ QueryKey,
6
+ QueryFunction,
7
+ notifyManager,
8
+ QueriesObserver,
9
+ } from '@tanstack/query-core'
10
+ import { useQueryClient } from './QueryClientProvider'
11
+ import { UseQueryOptions, UseQueryResult } from './types'
12
+ import { useIsRestoring } from './isRestoring'
13
+
14
+ // This defines the `UseQueryOptions` that are accepted in `QueriesOptions` & `GetOptions`.
15
+ // - `context` is omitted as it is passed as a root-level option to `useQueries` instead.
16
+ type UseQueryOptionsForUseQueries<
17
+ TQueryFnData = unknown,
18
+ TError = unknown,
19
+ TData = TQueryFnData,
20
+ TQueryKey extends QueryKey = QueryKey,
21
+ > = Omit<UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>, 'context'>
22
+
23
+ // Avoid TS depth-limit error in case of large array literal
24
+ type MAXIMUM_DEPTH = 20
25
+
26
+ type GetOptions<T> =
27
+ // Part 1: responsible for applying explicit type parameter to function arguments, if object { queryFnData: TQueryFnData, error: TError, data: TData }
28
+ T extends {
29
+ queryFnData: infer TQueryFnData
30
+ error?: infer TError
31
+ data: infer TData
32
+ }
33
+ ? UseQueryOptionsForUseQueries<TQueryFnData, TError, TData>
34
+ : T extends { queryFnData: infer TQueryFnData; error?: infer TError }
35
+ ? UseQueryOptionsForUseQueries<TQueryFnData, TError>
36
+ : T extends { data: infer TData; error?: infer TError }
37
+ ? UseQueryOptionsForUseQueries<unknown, TError, TData>
38
+ : // Part 2: responsible for applying explicit type parameter to function arguments, if tuple [TQueryFnData, TError, TData]
39
+ T extends [infer TQueryFnData, infer TError, infer TData]
40
+ ? UseQueryOptionsForUseQueries<TQueryFnData, TError, TData>
41
+ : T extends [infer TQueryFnData, infer TError]
42
+ ? UseQueryOptionsForUseQueries<TQueryFnData, TError>
43
+ : T extends [infer TQueryFnData]
44
+ ? UseQueryOptionsForUseQueries<TQueryFnData>
45
+ : // Part 3: responsible for inferring and enforcing type if no explicit parameter was provided
46
+ T extends {
47
+ queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey>
48
+ select: (data: any) => infer TData
49
+ }
50
+ ? UseQueryOptionsForUseQueries<TQueryFnData, unknown, TData, TQueryKey>
51
+ : T extends { queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey> }
52
+ ? UseQueryOptionsForUseQueries<
53
+ TQueryFnData,
54
+ unknown,
55
+ TQueryFnData,
56
+ TQueryKey
57
+ >
58
+ : // Fallback
59
+ UseQueryOptionsForUseQueries
60
+
61
+ type GetResults<T> =
62
+ // Part 1: responsible for mapping explicit type parameter to function result, if object
63
+ T extends { queryFnData: any; error?: infer TError; data: infer TData }
64
+ ? UseQueryResult<TData, TError>
65
+ : T extends { queryFnData: infer TQueryFnData; error?: infer TError }
66
+ ? UseQueryResult<TQueryFnData, TError>
67
+ : T extends { data: infer TData; error?: infer TError }
68
+ ? UseQueryResult<TData, TError>
69
+ : // Part 2: responsible for mapping explicit type parameter to function result, if tuple
70
+ T extends [any, infer TError, infer TData]
71
+ ? UseQueryResult<TData, TError>
72
+ : T extends [infer TQueryFnData, infer TError]
73
+ ? UseQueryResult<TQueryFnData, TError>
74
+ : T extends [infer TQueryFnData]
75
+ ? UseQueryResult<TQueryFnData>
76
+ : // Part 3: responsible for mapping inferred type to results, if no explicit parameter was provided
77
+ T extends {
78
+ queryFn?: QueryFunction<unknown, any>
79
+ select: (data: any) => infer TData
80
+ }
81
+ ? UseQueryResult<TData>
82
+ : T extends { queryFn?: QueryFunction<infer TQueryFnData, any> }
83
+ ? UseQueryResult<TQueryFnData>
84
+ : // Fallback
85
+ UseQueryResult
86
+
87
+ /**
88
+ * QueriesOptions reducer recursively unwraps function arguments to infer/enforce type param
89
+ */
90
+ export type QueriesOptions<
91
+ T extends any[],
92
+ Result extends any[] = [],
93
+ Depth extends ReadonlyArray<number> = [],
94
+ > = Depth['length'] extends MAXIMUM_DEPTH
95
+ ? UseQueryOptionsForUseQueries[]
96
+ : T extends []
97
+ ? []
98
+ : T extends [infer Head]
99
+ ? [...Result, GetOptions<Head>]
100
+ : T extends [infer Head, ...infer Tail]
101
+ ? QueriesOptions<[...Tail], [...Result, GetOptions<Head>], [...Depth, 1]>
102
+ : unknown[] extends T
103
+ ? T
104
+ : // If T is *some* array but we couldn't assign unknown[] to it, then it must hold some known/homogenous type!
105
+ // use this to infer the param types in the case of Array.map() argument
106
+ T extends UseQueryOptionsForUseQueries<
107
+ infer TQueryFnData,
108
+ infer TError,
109
+ infer TData,
110
+ infer TQueryKey
111
+ >[]
112
+ ? UseQueryOptionsForUseQueries<TQueryFnData, TError, TData, TQueryKey>[]
113
+ : // Fallback
114
+ UseQueryOptionsForUseQueries[]
115
+
116
+ /**
117
+ * QueriesResults reducer recursively maps type param to results
118
+ */
119
+ export type QueriesResults<
120
+ T extends any[],
121
+ Result extends any[] = [],
122
+ Depth extends ReadonlyArray<number> = [],
123
+ > = Depth['length'] extends MAXIMUM_DEPTH
124
+ ? UseQueryResult[]
125
+ : T extends []
126
+ ? []
127
+ : T extends [infer Head]
128
+ ? [...Result, GetResults<Head>]
129
+ : T extends [infer Head, ...infer Tail]
130
+ ? QueriesResults<[...Tail], [...Result, GetResults<Head>], [...Depth, 1]>
131
+ : T extends UseQueryOptionsForUseQueries<
132
+ infer TQueryFnData,
133
+ infer TError,
134
+ infer TData,
135
+ any
136
+ >[]
137
+ ? // Dynamic-size (homogenous) UseQueryOptions array: map directly to array of results
138
+ UseQueryResult<unknown extends TData ? TQueryFnData : TData, TError>[]
139
+ : // Fallback
140
+ UseQueryResult[]
141
+
142
+ export function useQueries<T extends any[]>({
143
+ queries,
144
+ context,
145
+ }: {
146
+ queries: readonly [...QueriesOptions<T>]
147
+ context?: UseQueryOptions['context']
148
+ }): QueriesResults<T> {
149
+ const queryClient = useQueryClient({ context })
150
+ const isRestoring = useIsRestoring()
151
+
152
+ const defaultedQueries = React.useMemo(
153
+ () =>
154
+ queries.map((options) => {
155
+ const defaultedOptions = queryClient.defaultQueryOptions(options)
156
+
157
+ // Make sure the results are already in fetching state before subscribing or updating options
158
+ defaultedOptions._optimisticResults = isRestoring
159
+ ? 'isRestoring'
160
+ : 'optimistic'
161
+
162
+ return defaultedOptions
163
+ }),
164
+ [queries, queryClient, isRestoring],
165
+ )
166
+
167
+ const [observer] = React.useState(
168
+ () => new QueriesObserver(queryClient, defaultedQueries),
169
+ )
170
+
171
+ const result = observer.getOptimisticResult(defaultedQueries)
172
+
173
+ useSyncExternalStore(
174
+ React.useCallback(
175
+ (onStoreChange) =>
176
+ isRestoring
177
+ ? () => undefined
178
+ : observer.subscribe(notifyManager.batchCalls(onStoreChange)),
179
+ [observer, isRestoring],
180
+ ),
181
+ () => observer.getCurrentResult(),
182
+ () => observer.getCurrentResult(),
183
+ )
184
+
185
+ React.useEffect(() => {
186
+ // Do not notify on updates because of changes in the options because
187
+ // these changes should already be reflected in the optimistic result.
188
+ observer.setQueries(defaultedQueries, { listeners: false })
189
+ }, [defaultedQueries, observer])
190
+
191
+ return result as QueriesResults<T>
192
+ }
@@ -0,0 +1,104 @@
1
+ import {
2
+ parseQueryArgs,
3
+ QueryFunction,
4
+ QueryKey,
5
+ QueryObserver,
6
+ } from '@tanstack/query-core'
7
+ import { DefinedUseQueryResult, UseQueryOptions, UseQueryResult } from './types'
8
+ import { useBaseQuery } from './useBaseQuery'
9
+
10
+ // HOOK
11
+
12
+ export function useQuery<
13
+ TQueryFnData = unknown,
14
+ TError = unknown,
15
+ TData = TQueryFnData,
16
+ TQueryKey extends QueryKey = QueryKey,
17
+ >(
18
+ options: Omit<
19
+ UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
20
+ 'initialData'
21
+ > & { initialData?: () => undefined },
22
+ ): UseQueryResult<TData, TError>
23
+
24
+ export function useQuery<
25
+ TQueryFnData = unknown,
26
+ TError = unknown,
27
+ TData = TQueryFnData,
28
+ TQueryKey extends QueryKey = QueryKey,
29
+ >(
30
+ options: Omit<
31
+ UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
32
+ 'initialData'
33
+ > & { initialData: TQueryFnData | (() => TQueryFnData) },
34
+ ): DefinedUseQueryResult<TData, TError>
35
+
36
+ export function useQuery<
37
+ TQueryFnData = unknown,
38
+ TError = unknown,
39
+ TData = TQueryFnData,
40
+ TQueryKey extends QueryKey = QueryKey,
41
+ >(
42
+ queryKey: TQueryKey,
43
+ options?: Omit<
44
+ UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
45
+ 'queryKey' | 'initialData'
46
+ > & { initialData?: () => undefined },
47
+ ): UseQueryResult<TData, TError>
48
+
49
+ export function useQuery<
50
+ TQueryFnData = unknown,
51
+ TError = unknown,
52
+ TData = TQueryFnData,
53
+ TQueryKey extends QueryKey = QueryKey,
54
+ >(
55
+ queryKey: TQueryKey,
56
+ options?: Omit<
57
+ UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
58
+ 'queryKey' | 'initialData'
59
+ > & { initialData: TQueryFnData | (() => TQueryFnData) },
60
+ ): DefinedUseQueryResult<TData, TError>
61
+
62
+ export function useQuery<
63
+ TQueryFnData = unknown,
64
+ TError = unknown,
65
+ TData = TQueryFnData,
66
+ TQueryKey extends QueryKey = QueryKey,
67
+ >(
68
+ queryKey: TQueryKey,
69
+ queryFn: QueryFunction<TQueryFnData, TQueryKey>,
70
+ options?: Omit<
71
+ UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
72
+ 'queryKey' | 'queryFn' | 'initialData'
73
+ > & { initialData?: () => undefined },
74
+ ): UseQueryResult<TData, TError>
75
+
76
+ export function useQuery<
77
+ TQueryFnData = unknown,
78
+ TError = unknown,
79
+ TData = TQueryFnData,
80
+ TQueryKey extends QueryKey = QueryKey,
81
+ >(
82
+ queryKey: TQueryKey,
83
+ queryFn: QueryFunction<TQueryFnData, TQueryKey>,
84
+ options?: Omit<
85
+ UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
86
+ 'queryKey' | 'queryFn' | 'initialData'
87
+ > & { initialData: TQueryFnData | (() => TQueryFnData) },
88
+ ): DefinedUseQueryResult<TData, TError>
89
+
90
+ export function useQuery<
91
+ TQueryFnData,
92
+ TError,
93
+ TData = TQueryFnData,
94
+ TQueryKey extends QueryKey = QueryKey,
95
+ >(
96
+ arg1: TQueryKey | UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
97
+ arg2?:
98
+ | QueryFunction<TQueryFnData, TQueryKey>
99
+ | UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
100
+ arg3?: UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
101
+ ): UseQueryResult<TData, TError> {
102
+ const parsedOptions = parseQueryArgs(arg1, arg2, arg3)
103
+ return useBaseQuery(parsedOptions, QueryObserver)
104
+ }
package/src/utils.ts ADDED
@@ -0,0 +1,11 @@
1
+ export function shouldThrowError<T extends (...args: any[]) => boolean>(
2
+ _useErrorBoundary: boolean | T | undefined,
3
+ params: Parameters<T>,
4
+ ): boolean {
5
+ // Allow useErrorBoundary function to override throwing behavior on a per-error basis
6
+ if (typeof _useErrorBoundary === 'function') {
7
+ return _useErrorBoundary(...params)
8
+ }
9
+
10
+ return !!_useErrorBoundary
11
+ }