@@ -141,6 +141,8 @@ type FetchT<UrlPrefix extends UrlPrefixPattern, E extends ApiEndpoints> = <
141141 : never ,
142142 LM extends Lowercase < InputMethod > ,
143143 Query extends ApiP < E , CandidatePaths , LM , "query" > ,
144+ Headers extends ApiP < E , CandidatePaths , LM , "headers" > ,
145+ Body extends ApiP < E , CandidatePaths , LM , "body" > ,
144146 Response extends ApiP <
145147 E ,
146148 CandidatePaths ,
@@ -154,17 +156,25 @@ type FetchT<UrlPrefix extends UrlPrefixPattern, E extends ApiEndpoints> = <
154156 AcceptableMethods ,
155157 "get"
156158 > ,
159+ CanOmitMethod extends boolean = "get" extends AcceptableMethods
160+ ? true
161+ : false ,
162+ CanOmitInit extends boolean = CanOmitMethod extends true
163+ ? Headers extends undefined
164+ ? true
165+ : Headers extends Record < string , string >
166+ ? IsAllOptional < Headers > extends true
167+ ? true
168+ : false
169+ : false
170+ : false ,
157171> (
158172 input : [ ValidatedUrl ] extends [ C . OK | QueryParameterRequiredError ]
159173 ? Input
160174 : ValidatedUrl ,
161- init : RequestInitT <
162- // If `get` method is defined in the spec, method can be omitted
163- "get" extends AcceptableMethods ? true : false ,
164- ApiP < E , CandidatePaths , LM , "body" > ,
165- ApiP < E , CandidatePaths , LM , "headers" > ,
166- InputMethod
167- > ,
175+ ...args : CanOmitInit extends true
176+ ? [ init ?: RequestInitT < CanOmitMethod , Body , Headers , InputMethod > ]
177+ : [ init : RequestInitT < CanOmitMethod , Body , Headers , InputMethod > ]
168178) => Promise < Response > ;
169179
170180export default FetchT ;
0 commit comments