@@ -7,26 +7,48 @@ import {
77 getTrpcFetch ,
88} from "./create-trpc-client" ;
99import type { Router , Endpoint , router } from "./core" ;
10+ import z from "zod" ;
1011
1112type TrpcClientWithQuery < R extends Router < any > > = {
1213 [ K in keyof R ] : R [ K ] extends Endpoint < infer Output , infer Input , any >
1314 ? EndpointClient < Input , Output > & {
14- useQuery : (
15- queryOptions ?: Omit <
16- Parameters < typeof useQueryType > [ 0 ] ,
17- "queryKey" | "queryFn"
18- >
19- ) => ReturnType <
20- typeof useQueryType < Awaited < Output > , Error , Awaited < Output > , string [ ] >
21- > ;
15+ useQuery : Input extends import ( "zod" ) . Schema
16+ ? (
17+ queryOptions : Omit <
18+ Parameters < typeof useQueryType > [ 0 ] ,
19+ "queryKey" | "queryFn"
20+ > & {
21+ input : z . infer < Input > ;
22+ }
23+ ) => ReturnType <
24+ typeof useQueryType <
25+ Awaited < Output > ,
26+ Error ,
27+ Awaited < Output > ,
28+ string [ ]
29+ >
30+ >
31+ : (
32+ queryOptions ?: Omit <
33+ Parameters < typeof useQueryType > [ 0 ] ,
34+ "queryKey" | "queryFn"
35+ >
36+ ) => ReturnType <
37+ typeof useQueryType <
38+ Awaited < Output > ,
39+ Error ,
40+ Awaited < Output > ,
41+ string [ ]
42+ >
43+ > ;
2244 }
2345 : never ;
2446} ;
2547
2648export const createTrpcQueryClient = <
2749 R extends ReturnType < typeof router < any , Router < any > > >
2850> (
29- opts : createTrpcClientOptions & { useQuery : typeof useQueryType }
51+ opts : createTrpcClientOptions & { useQuery : typeof useQueryType }
3052) : TrpcClientWithQuery < R > => {
3153 return new Proxy ( { } as TrpcClientWithQuery < R > , {
3254 get ( target , prop ) {
@@ -40,16 +62,21 @@ export const createTrpcQueryClient = <
4062 queryOptions ?: Omit <
4163 Parameters < typeof useQueryType > [ 0 ] ,
4264 "queryKey" | "queryFn"
43- >
65+ > & {
66+ input ?: any ;
67+ }
4468 ) => {
4569 const endpointName = prop . replace ( / ( [ A - Z ] ) / g, "-$1" ) . toLowerCase ( ) ;
4670 return opts . useQuery ( {
4771 ...queryOptions ,
4872 queryKey : [ endpointName ] ,
49- queryFn : getTrpcFetch ( {
50- endpointSlug : prop ,
51- ...opts ,
52- } ) ,
73+ queryFn : async ( ) => {
74+ const fetcher = getTrpcFetch ( {
75+ endpointSlug : prop ,
76+ ...opts ,
77+ } ) ;
78+ return await fetcher ( queryOptions ?. input ) ;
79+ } ,
5380 } ) ;
5481 } ,
5582 } ;
0 commit comments