88 useMutation as useTanStackMutation ,
99 useQuery as useTanStackQuery ,
1010 useQueryClient as useTanStackQueryClient ,
11- type MutationKey ,
1211 type QueryClient as QueryClientType ,
13- type QueryKey ,
1412 type UseMutationOptions ,
1513 type UseMutationResult ,
1614 type UseQueryOptions ,
@@ -19,30 +17,8 @@ import {
1917
2018export { QueryClient , QueryClientProvider , mutationOptions , queryOptions , skipToken } ;
2119
22- let legacyQueryId = 0 ;
23- let legacyMutationId = 0 ;
2420const invalidationScopes : Array < Array < Promise < unknown > > > = [ ] ;
2521
26- type RefetchableQuery = {
27- refetch : ( ) => unknown ;
28- } ;
29-
30- type LegacyMutationOptions < TData , TError , TVariables , TContext > = UseMutationOptions <
31- TData ,
32- TError ,
33- TVariables ,
34- TContext
35- > & {
36- invalidates ?: readonly RefetchableQuery [ ] ;
37- } ;
38-
39- const nextLegacyQueryKey = ( ) : QueryKey => [ "executor" , "legacy-query" , ++ legacyQueryId ] ;
40- const nextLegacyMutationKey = ( ) : MutationKey => [
41- "executor" ,
42- "legacy-mutation" ,
43- ++ legacyMutationId ,
44- ] ;
45-
4622const trackInvalidation = ( promise : Promise < unknown > ) => {
4723 for ( const scope of invalidationScopes ) {
4824 scope . push ( promise ) ;
@@ -105,88 +81,34 @@ const wrapMutationOptions = <TData, TError, TVariables, TContext>(
10581 : undefined ,
10682} ) ;
10783
108- /**
109- * TanStack Query's `useQuery`, plus compatibility for the original generated
110- * UI shorthand: `useQuery(() => tools.namespace.tool(args))`.
111- */
112- export function useQuery < TData > ( fn : ( ) => Promise < TData > ) : UseQueryResult < TData , Error > ;
11384export function useQuery <
11485 TQueryFnData ,
11586 TError = Error ,
11687 TData = TQueryFnData ,
117- TQueryKey extends QueryKey = QueryKey ,
88+ TQueryKey extends readonly unknown [ ] = readonly unknown [ ] ,
11889> (
11990 options : UseQueryOptions < TQueryFnData , TError , TData , TQueryKey > ,
12091 queryClient ?: QueryClientType ,
12192) : UseQueryResult < TData , TError > ;
122- export function useQuery (
123- optionsOrFn : unknown ,
93+ export function useQuery <
94+ TQueryFnData ,
95+ TError = Error ,
96+ TData = TQueryFnData ,
97+ TQueryKey extends readonly unknown [ ] = readonly unknown [ ] ,
98+ > (
99+ options : UseQueryOptions < TQueryFnData , TError , TData , TQueryKey > ,
124100 queryClient ?: QueryClientType ,
125- ) : UseQueryResult < unknown , Error > {
126- const legacyFnRef = useRef < ( ( ) => Promise < unknown > ) | null > ( null ) ;
127- const legacyQueryKeyRef = useRef < QueryKey | null > ( null ) ;
128-
129- if ( typeof optionsOrFn === "function" ) {
130- legacyFnRef . current = optionsOrFn as ( ) => Promise < unknown > ;
131- legacyQueryKeyRef . current ??= nextLegacyQueryKey ( ) ;
132- return useTanStackQuery (
133- {
134- queryKey : legacyQueryKeyRef . current ,
135- queryFn : ( ) => {
136- const current = legacyFnRef . current ;
137- if ( ! current ) throw new Error ( "Missing legacy query function." ) ;
138- return current ( ) ;
139- } ,
140- } ,
141- queryClient ,
142- ) ;
143- }
144-
145- return useTanStackQuery (
146- optionsOrFn as UseQueryOptions < unknown , Error , unknown , QueryKey > ,
147- queryClient ,
148- ) ;
101+ ) : UseQueryResult < TData , TError > {
102+ return useTanStackQuery ( options , queryClient ) ;
149103}
150104
151- /**
152- * TanStack Query's `useMutation`, plus compatibility for the original generated
153- * UI shorthand: `useMutation((input) => tools.namespace.tool(input), opts)`.
154- */
155- export function useMutation < TVariables , TData = unknown , TContext = unknown > (
156- fn : ( input : TVariables ) => Promise < TData > ,
157- options ?: LegacyMutationOptions < TData , Error , TVariables , TContext > ,
158- ) : UseMutationResult < TData , Error , TVariables , TContext > ;
159105export function useMutation < TData = unknown , TError = Error , TVariables = void , TContext = unknown > (
160106 options : UseMutationOptions < TData , TError , TVariables , TContext > ,
161107 queryClient ?: QueryClientType ,
162108) : UseMutationResult < TData , TError , TVariables , TContext > ;
163- export function useMutation (
164- optionsOrFn : unknown ,
165- optionsOrQueryClient ?: unknown ,
166- ) : UseMutationResult < unknown , Error , unknown , unknown > {
167- const legacyMutationKeyRef = useRef < MutationKey | null > ( null ) ;
168- legacyMutationKeyRef . current ??= nextLegacyMutationKey ( ) ;
169-
170- if ( typeof optionsOrFn === "function" ) {
171- const legacyOptions =
172- ( optionsOrQueryClient as
173- | LegacyMutationOptions < unknown , Error , unknown , unknown >
174- | undefined ) ?? { } ;
175- const { invalidates, onSuccess, ...tanstackOptions } = legacyOptions ;
176-
177- return useTanStackMutation ( {
178- mutationKey : legacyOptions . mutationKey ?? legacyMutationKeyRef . current ,
179- ...tanstackOptions ,
180- mutationFn : optionsOrFn as ( input : unknown ) => Promise < unknown > ,
181- onSuccess : async ( data , variables , context , mutationContext ) => {
182- await trackMutationCallback ( ( ) => onSuccess ?.( data , variables , context , mutationContext ) ) ;
183- await Promise . all ( invalidates ?. map ( ( query ) => query . refetch ( ) ) ?? [ ] ) ;
184- } ,
185- } ) ;
186- }
187-
188- return useTanStackMutation (
189- wrapMutationOptions ( optionsOrFn as UseMutationOptions < unknown , Error , unknown , unknown > ) ,
190- optionsOrQueryClient as QueryClientType | undefined ,
191- ) ;
109+ export function useMutation < TData = unknown , TError = Error , TVariables = void , TContext = unknown > (
110+ options : UseMutationOptions < TData , TError , TVariables , TContext > ,
111+ queryClient ?: QueryClientType ,
112+ ) : UseMutationResult < TData , TError , TVariables , TContext > {
113+ return useTanStackMutation ( wrapMutationOptions ( options ) , queryClient ) ;
192114}
0 commit comments