@@ -34,19 +34,24 @@ type TRPCSubscriptionObserver<TValue, TError> = {
34
34
}
35
35
36
36
type ArrayElement < T > = T extends readonly unknown [ ] ? T [ number ] : never
37
- export type Exact < Shape , T extends Shape > = Shape extends void
38
- ? void
39
- : {
40
- [ Key in keyof T ] : Key extends keyof Shape
41
- ? T [ Key ] extends Date
42
- ? T [ Key ]
43
- : T [ Key ] extends unknown [ ]
44
- ? Array < Exact < ArrayElement < Shape [ Key ] > , ArrayElement < T [ Key ] > > >
45
- : T [ Key ] extends object
46
- ? Exact < Shape [ Key ] , T [ Key ] >
47
- : T [ Key ]
48
- : never
49
- }
37
+ type Primitive = null | undefined | string | number | boolean | symbol | bigint
38
+ export type Exact < Shape , T extends Shape > = Shape extends Primitive
39
+ ? Shape
40
+ : Shape extends object
41
+ ? {
42
+ [ Key in keyof T ] : Key extends keyof Shape
43
+ ? T [ Key ] extends Date
44
+ ? T [ Key ]
45
+ : T [ Key ] extends unknown [ ]
46
+ ? Array < Exact < ArrayElement < Shape [ Key ] > , ArrayElement < T [ Key ] > > >
47
+ : T [ Key ] extends readonly unknown [ ]
48
+ ? ReadonlyArray < Exact < ArrayElement < Shape [ Key ] > , ArrayElement < T [ Key ] > > >
49
+ : T [ Key ] extends object
50
+ ? Exact < Shape [ Key ] , T [ Key ] >
51
+ : T [ Key ]
52
+ : never
53
+ }
54
+ : Shape
50
55
51
56
export type DecorateProcedure <
52
57
TProcedure extends AnyTRPCProcedure ,
@@ -59,7 +64,7 @@ export type DecorateProcedure<
59
64
TData extends TQueryFnData ,
60
65
TQueryData extends TQueryFnData ,
61
66
TQueryKey extends QueryKey ,
62
- TInput ,
67
+ TInput extends inferProcedureInput < TProcedure > ,
63
68
> (
64
69
input : MaybeRefOrGetter < Exact < inferProcedureInput < TProcedure > , TInput > > ,
65
70
opts ?: MaybeRefOrGetter <
@@ -72,18 +77,18 @@ export type DecorateProcedure<
72
77
}
73
78
> ,
74
79
) => UseQueryReturnType < TData , TError >
75
- query : < TInput > (
80
+ query : < TInput extends inferProcedureInput < TProcedure > > (
76
81
input : Exact < inferProcedureInput < TProcedure > , TInput > ,
77
82
opts ?: ProcedureOptions ,
78
83
) => Promise < inferTransformedProcedureOutput < TRouter , TProcedure > >
79
- invalidate : < TInput > (
84
+ invalidate : < TInput extends inferProcedureInput < TProcedure > > (
80
85
input ?: MaybeRefOrGetter < Exact < inferProcedureInput < TProcedure > , TInput > > ,
81
86
) => Promise < void >
82
- setQueryData : < TInput > (
87
+ setQueryData : < TInput extends inferProcedureInput < TProcedure > > (
83
88
updater : inferTransformedProcedureOutput < TRouter , TProcedure > ,
84
89
input ?: MaybeRefOrGetter < Exact < inferProcedureInput < TProcedure > , TInput > > ,
85
90
) => ReturnType < QueryClient [ 'setQueryData' ] >
86
- key : < TInput > (
91
+ key : < TInput extends inferProcedureInput < TProcedure > > (
87
92
input ?: MaybeRefOrGetter < Exact < inferProcedureInput < TProcedure > , TInput > > ,
88
93
) => QueryKey
89
94
} & ( TProcedure [ '_def' ] [ '$types' ] [ 'input' ] extends { cursor ?: infer CursorType }
@@ -94,7 +99,7 @@ export type DecorateProcedure<
94
99
TData extends InfiniteData < TQueryFnData > ,
95
100
TQueryData extends TQueryFnData ,
96
101
TQueryKey extends QueryKey ,
97
- TInput ,
102
+ TInput extends inferProcedureInput < TProcedure > ,
98
103
> (
99
104
input : MaybeRefOrGetter < Exact < Omit < inferProcedureInput < TProcedure > , 'cursor' > , TInput > > ,
100
105
opts ?: MaybeRefOrGetter <
@@ -115,7 +120,7 @@ export type DecorateProcedure<
115
120
: object )
116
121
: TProcedure extends AnyTRPCMutationProcedure
117
122
? {
118
- mutate : < TInput > (
123
+ mutate : < TInput extends inferProcedureInput < TProcedure > > (
119
124
input : Exact < inferProcedureInput < TProcedure > , TInput > ,
120
125
opts ?: ProcedureOptions ,
121
126
) => Promise < inferTransformedProcedureOutput < TRouter , TProcedure > >
@@ -135,7 +140,7 @@ export type DecorateProcedure<
135
140
}
136
141
: TProcedure extends AnyTRPCSubscriptionProcedure
137
142
? {
138
- subscribe : < TInput > (
143
+ subscribe : < TInput extends inferProcedureInput < TProcedure > > (
139
144
input : Exact < inferProcedureInput < TProcedure > , TInput > ,
140
145
opts : ProcedureOptions &
141
146
Partial <
@@ -145,7 +150,7 @@ export type DecorateProcedure<
145
150
>
146
151
> ,
147
152
) => Unsubscribable
148
- useSubscription : < TInput > (
153
+ useSubscription : < TInput extends inferProcedureInput < TProcedure > > (
149
154
input : MaybeRefOrGetter < Exact < inferProcedureInput < TProcedure > , TInput > > ,
150
155
opts : ProcedureOptions &
151
156
Partial <
0 commit comments