@depup/tanstack__react-query 5.91.0-depup.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/LICENSE +21 -0
- package/README.md +25 -0
- package/build/codemods/src/utils/index.cjs +208 -0
- package/build/codemods/src/utils/transformers/query-cache-transformer.cjs +124 -0
- package/build/codemods/src/utils/transformers/query-client-transformer.cjs +53 -0
- package/build/codemods/src/utils/transformers/use-query-like-transformer.cjs +38 -0
- package/build/codemods/src/v4/key-transformation.cjs +181 -0
- package/build/codemods/src/v4/replace-import-specifier.cjs +25 -0
- package/build/codemods/src/v4/utils/replacers/key-replacer.cjs +164 -0
- package/build/codemods/src/v5/is-loading/is-loading.cjs +244 -0
- package/build/codemods/src/v5/keep-previous-data/README.md +32 -0
- package/build/codemods/src/v5/keep-previous-data/keep-previous-data.cjs +271 -0
- package/build/codemods/src/v5/keep-previous-data/utils/already-has-placeholder-data-property.cjs +26 -0
- package/build/codemods/src/v5/remove-overloads/remove-overloads.cjs +58 -0
- package/build/codemods/src/v5/remove-overloads/transformers/filter-aware-usage-transformer.cjs +271 -0
- package/build/codemods/src/v5/remove-overloads/transformers/query-fn-aware-usage-transformer.cjs +185 -0
- package/build/codemods/src/v5/remove-overloads/utils/index.cjs +123 -0
- package/build/codemods/src/v5/remove-overloads/utils/unknown-usage-error.cjs +27 -0
- package/build/codemods/src/v5/rename-hydrate/rename-hydrate.cjs +55 -0
- package/build/codemods/src/v5/rename-properties/rename-properties.cjs +41 -0
- package/build/legacy/HydrationBoundary.cjs +91 -0
- package/build/legacy/HydrationBoundary.cjs.map +1 -0
- package/build/legacy/HydrationBoundary.d.cts +2 -0
- package/build/legacy/HydrationBoundary.d.ts +2 -0
- package/build/legacy/HydrationBoundary.js +57 -0
- package/build/legacy/HydrationBoundary.js.map +1 -0
- package/build/legacy/IsRestoringProvider.cjs +47 -0
- package/build/legacy/IsRestoringProvider.cjs.map +1 -0
- package/build/legacy/IsRestoringProvider.d.cts +2 -0
- package/build/legacy/IsRestoringProvider.d.ts +2 -0
- package/build/legacy/IsRestoringProvider.js +12 -0
- package/build/legacy/IsRestoringProvider.js.map +1 -0
- package/build/legacy/QueryClientProvider.cjs +72 -0
- package/build/legacy/QueryClientProvider.cjs.map +1 -0
- package/build/legacy/QueryClientProvider.d.cts +4 -0
- package/build/legacy/QueryClientProvider.d.ts +4 -0
- package/build/legacy/QueryClientProvider.js +36 -0
- package/build/legacy/QueryClientProvider.js.map +1 -0
- package/build/legacy/QueryErrorResetBoundary.cjs +67 -0
- package/build/legacy/QueryErrorResetBoundary.cjs.map +1 -0
- package/build/legacy/QueryErrorResetBoundary.d.cts +8 -0
- package/build/legacy/QueryErrorResetBoundary.d.ts +8 -0
- package/build/legacy/QueryErrorResetBoundary.js +32 -0
- package/build/legacy/QueryErrorResetBoundary.js.map +1 -0
- package/build/legacy/_tsup-dts-rollup.d.cts +993 -0
- package/build/legacy/_tsup-dts-rollup.d.ts +993 -0
- package/build/legacy/errorBoundaryUtils.cjs +69 -0
- package/build/legacy/errorBoundaryUtils.cjs.map +1 -0
- package/build/legacy/errorBoundaryUtils.d.cts +3 -0
- package/build/legacy/errorBoundaryUtils.d.ts +3 -0
- package/build/legacy/errorBoundaryUtils.js +33 -0
- package/build/legacy/errorBoundaryUtils.js.map +1 -0
- package/build/legacy/index.cjs +97 -0
- package/build/legacy/index.cjs.map +1 -0
- package/build/legacy/index.d.cts +206 -0
- package/build/legacy/index.d.ts +206 -0
- package/build/legacy/index.js +54 -0
- package/build/legacy/index.js.map +1 -0
- package/build/legacy/infiniteQueryOptions.cjs +33 -0
- package/build/legacy/infiniteQueryOptions.cjs.map +1 -0
- package/build/legacy/infiniteQueryOptions.d.cts +4 -0
- package/build/legacy/infiniteQueryOptions.d.ts +4 -0
- package/build/legacy/infiniteQueryOptions.js +8 -0
- package/build/legacy/infiniteQueryOptions.js.map +1 -0
- package/build/legacy/mutationOptions.cjs +33 -0
- package/build/legacy/mutationOptions.cjs.map +1 -0
- package/build/legacy/mutationOptions.d.cts +1 -0
- package/build/legacy/mutationOptions.d.ts +1 -0
- package/build/legacy/mutationOptions.js +8 -0
- package/build/legacy/mutationOptions.js.map +1 -0
- package/build/legacy/queryOptions.cjs +33 -0
- package/build/legacy/queryOptions.cjs.map +1 -0
- package/build/legacy/queryOptions.d.cts +4 -0
- package/build/legacy/queryOptions.d.ts +4 -0
- package/build/legacy/queryOptions.js +8 -0
- package/build/legacy/queryOptions.js.map +1 -0
- package/build/legacy/suspense.cjs +58 -0
- package/build/legacy/suspense.cjs.map +1 -0
- package/build/legacy/suspense.d.cts +5 -0
- package/build/legacy/suspense.d.ts +5 -0
- package/build/legacy/suspense.js +29 -0
- package/build/legacy/suspense.js.map +1 -0
- package/build/legacy/types.cjs +19 -0
- package/build/legacy/types.cjs.map +1 -0
- package/build/legacy/types.d.cts +24 -0
- package/build/legacy/types.d.ts +24 -0
- package/build/legacy/types.js +1 -0
- package/build/legacy/types.js.map +1 -0
- package/build/legacy/useBaseQuery.cjs +133 -0
- package/build/legacy/useBaseQuery.cjs.map +1 -0
- package/build/legacy/useBaseQuery.d.cts +1 -0
- package/build/legacy/useBaseQuery.d.ts +1 -0
- package/build/legacy/useBaseQuery.js +108 -0
- package/build/legacy/useBaseQuery.js.map +1 -0
- package/build/legacy/useInfiniteQuery.cjs +40 -0
- package/build/legacy/useInfiniteQuery.cjs.map +1 -0
- package/build/legacy/useInfiniteQuery.d.cts +1 -0
- package/build/legacy/useInfiniteQuery.d.ts +1 -0
- package/build/legacy/useInfiniteQuery.js +16 -0
- package/build/legacy/useInfiniteQuery.js.map +1 -0
- package/build/legacy/useIsFetching.cjs +56 -0
- package/build/legacy/useIsFetching.cjs.map +1 -0
- package/build/legacy/useIsFetching.d.cts +1 -0
- package/build/legacy/useIsFetching.d.ts +1 -0
- package/build/legacy/useIsFetching.js +22 -0
- package/build/legacy/useIsFetching.js.map +1 -0
- package/build/legacy/useMutation.cjs +74 -0
- package/build/legacy/useMutation.cjs.map +1 -0
- package/build/legacy/useMutation.d.cts +1 -0
- package/build/legacy/useMutation.d.ts +1 -0
- package/build/legacy/useMutation.js +45 -0
- package/build/legacy/useMutation.js.map +1 -0
- package/build/legacy/useMutationState.cjs +86 -0
- package/build/legacy/useMutationState.cjs.map +1 -0
- package/build/legacy/useMutationState.d.cts +2 -0
- package/build/legacy/useMutationState.d.ts +2 -0
- package/build/legacy/useMutationState.js +51 -0
- package/build/legacy/useMutationState.js.map +1 -0
- package/build/legacy/usePrefetchInfiniteQuery.cjs +37 -0
- package/build/legacy/usePrefetchInfiniteQuery.cjs.map +1 -0
- package/build/legacy/usePrefetchInfiniteQuery.d.cts +1 -0
- package/build/legacy/usePrefetchInfiniteQuery.d.ts +1 -0
- package/build/legacy/usePrefetchInfiniteQuery.js +12 -0
- package/build/legacy/usePrefetchInfiniteQuery.js.map +1 -0
- package/build/legacy/usePrefetchQuery.cjs +37 -0
- package/build/legacy/usePrefetchQuery.cjs.map +1 -0
- package/build/legacy/usePrefetchQuery.d.cts +1 -0
- package/build/legacy/usePrefetchQuery.d.ts +1 -0
- package/build/legacy/usePrefetchQuery.js +12 -0
- package/build/legacy/usePrefetchQuery.js.map +1 -0
- package/build/legacy/useQueries.cjs +128 -0
- package/build/legacy/useQueries.cjs.map +1 -0
- package/build/legacy/useQueries.d.cts +3 -0
- package/build/legacy/useQueries.d.ts +3 -0
- package/build/legacy/useQueries.js +107 -0
- package/build/legacy/useQueries.js.map +1 -0
- package/build/legacy/useQuery.cjs +36 -0
- package/build/legacy/useQuery.cjs.map +1 -0
- package/build/legacy/useQuery.d.cts +1 -0
- package/build/legacy/useQuery.d.ts +1 -0
- package/build/legacy/useQuery.js +12 -0
- package/build/legacy/useQuery.js.map +1 -0
- package/build/legacy/useSuspenseInfiniteQuery.cjs +51 -0
- package/build/legacy/useSuspenseInfiniteQuery.cjs.map +1 -0
- package/build/legacy/useSuspenseInfiniteQuery.d.cts +1 -0
- package/build/legacy/useSuspenseInfiniteQuery.d.ts +1 -0
- package/build/legacy/useSuspenseInfiniteQuery.js +27 -0
- package/build/legacy/useSuspenseInfiniteQuery.js.map +1 -0
- package/build/legacy/useSuspenseQueries.cjs +56 -0
- package/build/legacy/useSuspenseQueries.cjs.map +1 -0
- package/build/legacy/useSuspenseQueries.d.cts +3 -0
- package/build/legacy/useSuspenseQueries.d.ts +3 -0
- package/build/legacy/useSuspenseQueries.js +32 -0
- package/build/legacy/useSuspenseQueries.js.map +1 -0
- package/build/legacy/useSuspenseQuery.cjs +52 -0
- package/build/legacy/useSuspenseQuery.cjs.map +1 -0
- package/build/legacy/useSuspenseQuery.d.cts +1 -0
- package/build/legacy/useSuspenseQuery.d.ts +1 -0
- package/build/legacy/useSuspenseQuery.js +28 -0
- package/build/legacy/useSuspenseQuery.js.map +1 -0
- package/build/modern/HydrationBoundary.cjs +91 -0
- package/build/modern/HydrationBoundary.cjs.map +1 -0
- package/build/modern/HydrationBoundary.d.cts +2 -0
- package/build/modern/HydrationBoundary.d.ts +2 -0
- package/build/modern/HydrationBoundary.js +57 -0
- package/build/modern/HydrationBoundary.js.map +1 -0
- package/build/modern/IsRestoringProvider.cjs +47 -0
- package/build/modern/IsRestoringProvider.cjs.map +1 -0
- package/build/modern/IsRestoringProvider.d.cts +2 -0
- package/build/modern/IsRestoringProvider.d.ts +2 -0
- package/build/modern/IsRestoringProvider.js +12 -0
- package/build/modern/IsRestoringProvider.js.map +1 -0
- package/build/modern/QueryClientProvider.cjs +72 -0
- package/build/modern/QueryClientProvider.cjs.map +1 -0
- package/build/modern/QueryClientProvider.d.cts +4 -0
- package/build/modern/QueryClientProvider.d.ts +4 -0
- package/build/modern/QueryClientProvider.js +36 -0
- package/build/modern/QueryClientProvider.js.map +1 -0
- package/build/modern/QueryErrorResetBoundary.cjs +67 -0
- package/build/modern/QueryErrorResetBoundary.cjs.map +1 -0
- package/build/modern/QueryErrorResetBoundary.d.cts +8 -0
- package/build/modern/QueryErrorResetBoundary.d.ts +8 -0
- package/build/modern/QueryErrorResetBoundary.js +32 -0
- package/build/modern/QueryErrorResetBoundary.js.map +1 -0
- package/build/modern/_tsup-dts-rollup.d.cts +993 -0
- package/build/modern/_tsup-dts-rollup.d.ts +993 -0
- package/build/modern/errorBoundaryUtils.cjs +69 -0
- package/build/modern/errorBoundaryUtils.cjs.map +1 -0
- package/build/modern/errorBoundaryUtils.d.cts +3 -0
- package/build/modern/errorBoundaryUtils.d.ts +3 -0
- package/build/modern/errorBoundaryUtils.js +33 -0
- package/build/modern/errorBoundaryUtils.js.map +1 -0
- package/build/modern/index.cjs +97 -0
- package/build/modern/index.cjs.map +1 -0
- package/build/modern/index.d.cts +206 -0
- package/build/modern/index.d.ts +206 -0
- package/build/modern/index.js +54 -0
- package/build/modern/index.js.map +1 -0
- package/build/modern/infiniteQueryOptions.cjs +33 -0
- package/build/modern/infiniteQueryOptions.cjs.map +1 -0
- package/build/modern/infiniteQueryOptions.d.cts +4 -0
- package/build/modern/infiniteQueryOptions.d.ts +4 -0
- package/build/modern/infiniteQueryOptions.js +8 -0
- package/build/modern/infiniteQueryOptions.js.map +1 -0
- package/build/modern/mutationOptions.cjs +33 -0
- package/build/modern/mutationOptions.cjs.map +1 -0
- package/build/modern/mutationOptions.d.cts +1 -0
- package/build/modern/mutationOptions.d.ts +1 -0
- package/build/modern/mutationOptions.js +8 -0
- package/build/modern/mutationOptions.js.map +1 -0
- package/build/modern/queryOptions.cjs +33 -0
- package/build/modern/queryOptions.cjs.map +1 -0
- package/build/modern/queryOptions.d.cts +4 -0
- package/build/modern/queryOptions.d.ts +4 -0
- package/build/modern/queryOptions.js +8 -0
- package/build/modern/queryOptions.js.map +1 -0
- package/build/modern/suspense.cjs +58 -0
- package/build/modern/suspense.cjs.map +1 -0
- package/build/modern/suspense.d.cts +5 -0
- package/build/modern/suspense.d.ts +5 -0
- package/build/modern/suspense.js +29 -0
- package/build/modern/suspense.js.map +1 -0
- package/build/modern/types.cjs +19 -0
- package/build/modern/types.cjs.map +1 -0
- package/build/modern/types.d.cts +24 -0
- package/build/modern/types.d.ts +24 -0
- package/build/modern/types.js +1 -0
- package/build/modern/types.js.map +1 -0
- package/build/modern/useBaseQuery.cjs +130 -0
- package/build/modern/useBaseQuery.cjs.map +1 -0
- package/build/modern/useBaseQuery.d.cts +1 -0
- package/build/modern/useBaseQuery.d.ts +1 -0
- package/build/modern/useBaseQuery.js +105 -0
- package/build/modern/useBaseQuery.js.map +1 -0
- package/build/modern/useInfiniteQuery.cjs +40 -0
- package/build/modern/useInfiniteQuery.cjs.map +1 -0
- package/build/modern/useInfiniteQuery.d.cts +1 -0
- package/build/modern/useInfiniteQuery.d.ts +1 -0
- package/build/modern/useInfiniteQuery.js +16 -0
- package/build/modern/useInfiniteQuery.js.map +1 -0
- package/build/modern/useIsFetching.cjs +56 -0
- package/build/modern/useIsFetching.cjs.map +1 -0
- package/build/modern/useIsFetching.d.cts +1 -0
- package/build/modern/useIsFetching.d.ts +1 -0
- package/build/modern/useIsFetching.js +22 -0
- package/build/modern/useIsFetching.js.map +1 -0
- package/build/modern/useMutation.cjs +74 -0
- package/build/modern/useMutation.cjs.map +1 -0
- package/build/modern/useMutation.d.cts +1 -0
- package/build/modern/useMutation.d.ts +1 -0
- package/build/modern/useMutation.js +45 -0
- package/build/modern/useMutation.js.map +1 -0
- package/build/modern/useMutationState.cjs +86 -0
- package/build/modern/useMutationState.cjs.map +1 -0
- package/build/modern/useMutationState.d.cts +2 -0
- package/build/modern/useMutationState.d.ts +2 -0
- package/build/modern/useMutationState.js +51 -0
- package/build/modern/useMutationState.js.map +1 -0
- package/build/modern/usePrefetchInfiniteQuery.cjs +37 -0
- package/build/modern/usePrefetchInfiniteQuery.cjs.map +1 -0
- package/build/modern/usePrefetchInfiniteQuery.d.cts +1 -0
- package/build/modern/usePrefetchInfiniteQuery.d.ts +1 -0
- package/build/modern/usePrefetchInfiniteQuery.js +12 -0
- package/build/modern/usePrefetchInfiniteQuery.js.map +1 -0
- package/build/modern/usePrefetchQuery.cjs +37 -0
- package/build/modern/usePrefetchQuery.cjs.map +1 -0
- package/build/modern/usePrefetchQuery.d.cts +1 -0
- package/build/modern/usePrefetchQuery.d.ts +1 -0
- package/build/modern/usePrefetchQuery.js +12 -0
- package/build/modern/usePrefetchQuery.js.map +1 -0
- package/build/modern/useQueries.cjs +128 -0
- package/build/modern/useQueries.cjs.map +1 -0
- package/build/modern/useQueries.d.cts +3 -0
- package/build/modern/useQueries.d.ts +3 -0
- package/build/modern/useQueries.js +107 -0
- package/build/modern/useQueries.js.map +1 -0
- package/build/modern/useQuery.cjs +36 -0
- package/build/modern/useQuery.cjs.map +1 -0
- package/build/modern/useQuery.d.cts +1 -0
- package/build/modern/useQuery.d.ts +1 -0
- package/build/modern/useQuery.js +12 -0
- package/build/modern/useQuery.js.map +1 -0
- package/build/modern/useSuspenseInfiniteQuery.cjs +51 -0
- package/build/modern/useSuspenseInfiniteQuery.cjs.map +1 -0
- package/build/modern/useSuspenseInfiniteQuery.d.cts +1 -0
- package/build/modern/useSuspenseInfiniteQuery.d.ts +1 -0
- package/build/modern/useSuspenseInfiniteQuery.js +27 -0
- package/build/modern/useSuspenseInfiniteQuery.js.map +1 -0
- package/build/modern/useSuspenseQueries.cjs +56 -0
- package/build/modern/useSuspenseQueries.cjs.map +1 -0
- package/build/modern/useSuspenseQueries.d.cts +3 -0
- package/build/modern/useSuspenseQueries.d.ts +3 -0
- package/build/modern/useSuspenseQueries.js +32 -0
- package/build/modern/useSuspenseQueries.js.map +1 -0
- package/build/modern/useSuspenseQuery.cjs +52 -0
- package/build/modern/useSuspenseQuery.cjs.map +1 -0
- package/build/modern/useSuspenseQuery.d.cts +1 -0
- package/build/modern/useSuspenseQuery.d.ts +1 -0
- package/build/modern/useSuspenseQuery.js +28 -0
- package/build/modern/useSuspenseQuery.js.map +1 -0
- package/build/query-codemods/eslint.config.js +18 -0
- package/build/query-codemods/package.json +38 -0
- package/build/query-codemods/root.eslint.config.js +64 -0
- package/build/query-codemods/tsconfig.json +8 -0
- package/build/query-codemods/vite.config.ts +30 -0
- package/changes.json +5 -0
- package/package.json +104 -0
- package/src/HydrationBoundary.tsx +111 -0
- package/src/IsRestoringProvider.ts +7 -0
- package/src/QueryClientProvider.tsx +45 -0
- package/src/QueryErrorResetBoundary.tsx +56 -0
- package/src/errorBoundaryUtils.ts +82 -0
- package/src/index.ts +56 -0
- package/src/infiniteQueryOptions.ts +149 -0
- package/src/mutationOptions.ts +41 -0
- package/src/queryOptions.ts +87 -0
- package/src/suspense.ts +80 -0
- package/src/types.ts +242 -0
- package/src/useBaseQuery.ts +170 -0
- package/src/useInfiniteQuery.ts +81 -0
- package/src/useIsFetching.ts +24 -0
- package/src/useMutation.ts +69 -0
- package/src/useMutationState.ts +75 -0
- package/src/usePrefetchInfiniteQuery.tsx +30 -0
- package/src/usePrefetchQuery.tsx +19 -0
- package/src/useQueries.ts +328 -0
- package/src/useQuery.ts +52 -0
- package/src/useSuspenseInfiniteQuery.ts +50 -0
- package/src/useSuspenseQueries.ts +211 -0
- package/src/useSuspenseQuery.ts +34 -0
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
import { skipToken } from '@tanstack/query-core'
|
|
3
|
+
import { useQueries } from './useQueries'
|
|
4
|
+
import { defaultThrowOnError } from './suspense'
|
|
5
|
+
import type { UseSuspenseQueryOptions, UseSuspenseQueryResult } from './types'
|
|
6
|
+
import type {
|
|
7
|
+
DefaultError,
|
|
8
|
+
QueryClient,
|
|
9
|
+
QueryFunction,
|
|
10
|
+
ThrowOnError,
|
|
11
|
+
} from '@tanstack/query-core'
|
|
12
|
+
|
|
13
|
+
// Avoid TS depth-limit error in case of large array literal
|
|
14
|
+
type MAXIMUM_DEPTH = 20
|
|
15
|
+
|
|
16
|
+
// Widen the type of the symbol to enable type inference even if skipToken is not immutable.
|
|
17
|
+
type SkipTokenForUseQueries = symbol
|
|
18
|
+
|
|
19
|
+
type GetUseSuspenseQueryOptions<T> =
|
|
20
|
+
// Part 1: responsible for applying explicit type parameter to function arguments, if object { queryFnData: TQueryFnData, error: TError, data: TData }
|
|
21
|
+
T extends {
|
|
22
|
+
queryFnData: infer TQueryFnData
|
|
23
|
+
error?: infer TError
|
|
24
|
+
data: infer TData
|
|
25
|
+
}
|
|
26
|
+
? UseSuspenseQueryOptions<TQueryFnData, TError, TData>
|
|
27
|
+
: T extends { queryFnData: infer TQueryFnData; error?: infer TError }
|
|
28
|
+
? UseSuspenseQueryOptions<TQueryFnData, TError>
|
|
29
|
+
: T extends { data: infer TData; error?: infer TError }
|
|
30
|
+
? UseSuspenseQueryOptions<unknown, TError, TData>
|
|
31
|
+
: // Part 2: responsible for applying explicit type parameter to function arguments, if tuple [TQueryFnData, TError, TData]
|
|
32
|
+
T extends [infer TQueryFnData, infer TError, infer TData]
|
|
33
|
+
? UseSuspenseQueryOptions<TQueryFnData, TError, TData>
|
|
34
|
+
: T extends [infer TQueryFnData, infer TError]
|
|
35
|
+
? UseSuspenseQueryOptions<TQueryFnData, TError>
|
|
36
|
+
: T extends [infer TQueryFnData]
|
|
37
|
+
? UseSuspenseQueryOptions<TQueryFnData>
|
|
38
|
+
: // Part 3: responsible for inferring and enforcing type if no explicit parameter was provided
|
|
39
|
+
T extends {
|
|
40
|
+
queryFn?:
|
|
41
|
+
| QueryFunction<infer TQueryFnData, infer TQueryKey>
|
|
42
|
+
| SkipTokenForUseQueries
|
|
43
|
+
select?: (data: any) => infer TData
|
|
44
|
+
throwOnError?: ThrowOnError<any, infer TError, any, any>
|
|
45
|
+
}
|
|
46
|
+
? UseSuspenseQueryOptions<
|
|
47
|
+
TQueryFnData,
|
|
48
|
+
TError,
|
|
49
|
+
TData,
|
|
50
|
+
TQueryKey
|
|
51
|
+
>
|
|
52
|
+
: T extends {
|
|
53
|
+
queryFn?:
|
|
54
|
+
| QueryFunction<infer TQueryFnData, infer TQueryKey>
|
|
55
|
+
| SkipTokenForUseQueries
|
|
56
|
+
throwOnError?: ThrowOnError<any, infer TError, any, any>
|
|
57
|
+
}
|
|
58
|
+
? UseSuspenseQueryOptions<
|
|
59
|
+
TQueryFnData,
|
|
60
|
+
TError,
|
|
61
|
+
TQueryFnData,
|
|
62
|
+
TQueryKey
|
|
63
|
+
>
|
|
64
|
+
: // Fallback
|
|
65
|
+
UseSuspenseQueryOptions
|
|
66
|
+
|
|
67
|
+
type GetUseSuspenseQueryResult<T> =
|
|
68
|
+
// Part 1: responsible for mapping explicit type parameter to function result, if object
|
|
69
|
+
T extends { queryFnData: any; error?: infer TError; data: infer TData }
|
|
70
|
+
? UseSuspenseQueryResult<TData, TError>
|
|
71
|
+
: T extends { queryFnData: infer TQueryFnData; error?: infer TError }
|
|
72
|
+
? UseSuspenseQueryResult<TQueryFnData, TError>
|
|
73
|
+
: T extends { data: infer TData; error?: infer TError }
|
|
74
|
+
? UseSuspenseQueryResult<TData, TError>
|
|
75
|
+
: // Part 2: responsible for mapping explicit type parameter to function result, if tuple
|
|
76
|
+
T extends [any, infer TError, infer TData]
|
|
77
|
+
? UseSuspenseQueryResult<TData, TError>
|
|
78
|
+
: T extends [infer TQueryFnData, infer TError]
|
|
79
|
+
? UseSuspenseQueryResult<TQueryFnData, TError>
|
|
80
|
+
: T extends [infer TQueryFnData]
|
|
81
|
+
? UseSuspenseQueryResult<TQueryFnData>
|
|
82
|
+
: // Part 3: responsible for mapping inferred type to results, if no explicit parameter was provided
|
|
83
|
+
T extends {
|
|
84
|
+
queryFn?:
|
|
85
|
+
| QueryFunction<infer TQueryFnData, any>
|
|
86
|
+
| SkipTokenForUseQueries
|
|
87
|
+
select?: (data: any) => infer TData
|
|
88
|
+
throwOnError?: ThrowOnError<any, infer TError, any, any>
|
|
89
|
+
}
|
|
90
|
+
? UseSuspenseQueryResult<
|
|
91
|
+
unknown extends TData ? TQueryFnData : TData,
|
|
92
|
+
unknown extends TError ? DefaultError : TError
|
|
93
|
+
>
|
|
94
|
+
: T extends {
|
|
95
|
+
queryFn?:
|
|
96
|
+
| QueryFunction<infer TQueryFnData, any>
|
|
97
|
+
| SkipTokenForUseQueries
|
|
98
|
+
throwOnError?: ThrowOnError<any, infer TError, any, any>
|
|
99
|
+
}
|
|
100
|
+
? UseSuspenseQueryResult<
|
|
101
|
+
TQueryFnData,
|
|
102
|
+
unknown extends TError ? DefaultError : TError
|
|
103
|
+
>
|
|
104
|
+
: // Fallback
|
|
105
|
+
UseSuspenseQueryResult
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* SuspenseQueriesOptions reducer recursively unwraps function arguments to infer/enforce type param
|
|
109
|
+
*/
|
|
110
|
+
export type SuspenseQueriesOptions<
|
|
111
|
+
T extends Array<any>,
|
|
112
|
+
TResults extends Array<any> = [],
|
|
113
|
+
TDepth extends ReadonlyArray<number> = [],
|
|
114
|
+
> = TDepth['length'] extends MAXIMUM_DEPTH
|
|
115
|
+
? Array<UseSuspenseQueryOptions>
|
|
116
|
+
: T extends []
|
|
117
|
+
? []
|
|
118
|
+
: T extends [infer Head]
|
|
119
|
+
? [...TResults, GetUseSuspenseQueryOptions<Head>]
|
|
120
|
+
: T extends [infer Head, ...infer Tails]
|
|
121
|
+
? SuspenseQueriesOptions<
|
|
122
|
+
[...Tails],
|
|
123
|
+
[...TResults, GetUseSuspenseQueryOptions<Head>],
|
|
124
|
+
[...TDepth, 1]
|
|
125
|
+
>
|
|
126
|
+
: Array<unknown> extends T
|
|
127
|
+
? T
|
|
128
|
+
: // If T is *some* array but we couldn't assign unknown[] to it, then it must hold some known/homogenous type!
|
|
129
|
+
// use this to infer the param types in the case of Array.map() argument
|
|
130
|
+
T extends Array<
|
|
131
|
+
UseSuspenseQueryOptions<
|
|
132
|
+
infer TQueryFnData,
|
|
133
|
+
infer TError,
|
|
134
|
+
infer TData,
|
|
135
|
+
infer TQueryKey
|
|
136
|
+
>
|
|
137
|
+
>
|
|
138
|
+
? Array<
|
|
139
|
+
UseSuspenseQueryOptions<TQueryFnData, TError, TData, TQueryKey>
|
|
140
|
+
>
|
|
141
|
+
: // Fallback
|
|
142
|
+
Array<UseSuspenseQueryOptions>
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* SuspenseQueriesResults reducer recursively maps type param to results
|
|
146
|
+
*/
|
|
147
|
+
export type SuspenseQueriesResults<
|
|
148
|
+
T extends Array<any>,
|
|
149
|
+
TResults extends Array<any> = [],
|
|
150
|
+
TDepth extends ReadonlyArray<number> = [],
|
|
151
|
+
> = TDepth['length'] extends MAXIMUM_DEPTH
|
|
152
|
+
? Array<UseSuspenseQueryResult>
|
|
153
|
+
: T extends []
|
|
154
|
+
? []
|
|
155
|
+
: T extends [infer Head]
|
|
156
|
+
? [...TResults, GetUseSuspenseQueryResult<Head>]
|
|
157
|
+
: T extends [infer Head, ...infer Tails]
|
|
158
|
+
? SuspenseQueriesResults<
|
|
159
|
+
[...Tails],
|
|
160
|
+
[...TResults, GetUseSuspenseQueryResult<Head>],
|
|
161
|
+
[...TDepth, 1]
|
|
162
|
+
>
|
|
163
|
+
: { [K in keyof T]: GetUseSuspenseQueryResult<T[K]> }
|
|
164
|
+
|
|
165
|
+
export function useSuspenseQueries<
|
|
166
|
+
T extends Array<any>,
|
|
167
|
+
TCombinedResult = SuspenseQueriesResults<T>,
|
|
168
|
+
>(
|
|
169
|
+
options: {
|
|
170
|
+
queries:
|
|
171
|
+
| readonly [...SuspenseQueriesOptions<T>]
|
|
172
|
+
| readonly [...{ [K in keyof T]: GetUseSuspenseQueryOptions<T[K]> }]
|
|
173
|
+
combine?: (result: SuspenseQueriesResults<T>) => TCombinedResult
|
|
174
|
+
},
|
|
175
|
+
queryClient?: QueryClient,
|
|
176
|
+
): TCombinedResult
|
|
177
|
+
|
|
178
|
+
export function useSuspenseQueries<
|
|
179
|
+
T extends Array<any>,
|
|
180
|
+
TCombinedResult = SuspenseQueriesResults<T>,
|
|
181
|
+
>(
|
|
182
|
+
options: {
|
|
183
|
+
queries: readonly [...SuspenseQueriesOptions<T>]
|
|
184
|
+
combine?: (result: SuspenseQueriesResults<T>) => TCombinedResult
|
|
185
|
+
},
|
|
186
|
+
queryClient?: QueryClient,
|
|
187
|
+
): TCombinedResult
|
|
188
|
+
|
|
189
|
+
export function useSuspenseQueries(options: any, queryClient?: QueryClient) {
|
|
190
|
+
return useQueries(
|
|
191
|
+
{
|
|
192
|
+
...options,
|
|
193
|
+
queries: options.queries.map((query: any) => {
|
|
194
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
195
|
+
if (query.queryFn === skipToken) {
|
|
196
|
+
console.error('skipToken is not allowed for useSuspenseQueries')
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
return {
|
|
201
|
+
...query,
|
|
202
|
+
suspense: true,
|
|
203
|
+
throwOnError: defaultThrowOnError,
|
|
204
|
+
enabled: true,
|
|
205
|
+
placeholderData: undefined,
|
|
206
|
+
}
|
|
207
|
+
}),
|
|
208
|
+
},
|
|
209
|
+
queryClient,
|
|
210
|
+
)
|
|
211
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
import { QueryObserver, skipToken } from '@tanstack/query-core'
|
|
3
|
+
import { useBaseQuery } from './useBaseQuery'
|
|
4
|
+
import { defaultThrowOnError } from './suspense'
|
|
5
|
+
import type { UseSuspenseQueryOptions, UseSuspenseQueryResult } from './types'
|
|
6
|
+
import type { DefaultError, QueryClient, QueryKey } from '@tanstack/query-core'
|
|
7
|
+
|
|
8
|
+
export function useSuspenseQuery<
|
|
9
|
+
TQueryFnData = unknown,
|
|
10
|
+
TError = DefaultError,
|
|
11
|
+
TData = TQueryFnData,
|
|
12
|
+
TQueryKey extends QueryKey = QueryKey,
|
|
13
|
+
>(
|
|
14
|
+
options: UseSuspenseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
15
|
+
queryClient?: QueryClient,
|
|
16
|
+
): UseSuspenseQueryResult<TData, TError> {
|
|
17
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
18
|
+
if ((options.queryFn as any) === skipToken) {
|
|
19
|
+
console.error('skipToken is not allowed for useSuspenseQuery')
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return useBaseQuery(
|
|
24
|
+
{
|
|
25
|
+
...options,
|
|
26
|
+
enabled: true,
|
|
27
|
+
suspense: true,
|
|
28
|
+
throwOnError: defaultThrowOnError,
|
|
29
|
+
placeholderData: undefined,
|
|
30
|
+
},
|
|
31
|
+
QueryObserver,
|
|
32
|
+
queryClient,
|
|
33
|
+
) as UseSuspenseQueryResult<TData, TError>
|
|
34
|
+
}
|