File tree Expand file tree Collapse file tree 1 file changed +20
-7
lines changed Expand file tree Collapse file tree 1 file changed +20
-7
lines changed Original file line number Diff line number Diff line change @@ -125,16 +125,29 @@ export type ResponseType<R extends Route> = R["settings"]["response"];
125
125
export type BodyType < R extends Route > = "body" extends keyof R [ "settings" ] [ "response" ]
126
126
? R [ "settings" ] [ "response" ] [ "body" ]
127
127
: unknown ;
128
+
129
+ type MoreThanOne < T , Td = T > = T extends unknown
130
+ ? [ Td ] extends [ T ]
131
+ ? never
132
+ : T
133
+ : never ;
134
+
135
+ type FallbackStatus < T > = "status" extends keyof T
136
+ ? T extends { status : MoreThanOne < T [ "status" ] > }
137
+ ? T
138
+ : never
139
+ : never ;
140
+
128
141
/**
129
142
* Get the response type for a route matching a specific status code
130
143
*/
131
- export type SpecificResponseType < R extends Route , S extends StatusCode = StatusCode > = R [ "settings" ] [ "response" ] extends { status : S }
132
- ? R [ "settings" ] [ "response" ]
133
- : "status" extends keyof R [ "settings" ] [ "response" ]
134
- ? S extends R [ "settings" ] [ "response" ] [ " status" ]
135
- ? R [ "settings" ] [ "response" ]
136
- : RouteSettings [ " response"]
137
- : RouteSettings [ "response" ] ;
144
+ export type SpecificResponseType <
145
+ R extends Route ,
146
+ S extends StatusCode = StatusCode ,
147
+ Ex = Extract < R [ "settings" ] [ "response" ] , { status : S } > ,
148
+ > = Extract < R [ "settings" ] [ "response" ] , { status : S } > extends never
149
+ ? FallbackStatus < R [ "settings" ] [ " response"] >
150
+ : Ex ;
138
151
/**
139
152
* Get the response body type for a route matching a specific status code
140
153
*/
You can’t perform that action at this time.
0 commit comments