@@ -34,16 +34,19 @@ export type FilterKeys<Obj, Matchers> = { [K in keyof Obj]: K extends Matchers ?
34
34
/** handle "application/json", "application/vnd.api+json", "appliacation/json;charset=utf-8" and more */
35
35
export type JSONLike = `${string } json${string } `;
36
36
37
- // fetch types
37
+ // general purpose types
38
38
export type Params < O > = O extends { parameters : any } ? { params : NonNullable < O [ "parameters" ] > } : BaseParams ;
39
- export type RequestBodyObj < O > = O extends { requestBody : any } ? O [ "requestBody" ] : never ;
39
+ export type RequestBodyObj < O > = O extends { requestBody ? : any } ? O [ "requestBody" ] : never ;
40
40
export type RequestBodyContent < O > = undefined extends RequestBodyObj < O > ? FilterKeys < NonNullable < RequestBodyObj < O > > , "content" > | undefined : FilterKeys < RequestBodyObj < O > , "content" > ;
41
41
export type RequestBodyJSON < O > = FilterKeys < RequestBodyContent < O > , JSONLike > extends never ? FilterKeys < NonNullable < RequestBodyContent < O > > , JSONLike > | undefined : FilterKeys < RequestBodyContent < O > , JSONLike > ;
42
42
export type RequestBody < O > = undefined extends RequestBodyJSON < O > ? { body ?: RequestBodyJSON < O > } : { body : RequestBodyJSON < O > } ;
43
43
export type QuerySerializer < O > = ( query : O extends { parameters : { query : any } } ? O [ "parameters" ] [ "query" ] : Record < string , unknown > ) => string ;
44
- export type FetchOptions < T > = Params < T > & RequestBody < T > & Omit < RequestInit , "body" > & { querySerializer ?: QuerySerializer < T > } ;
44
+ export type RequestOptions < T > = Params < T > & RequestBody < T > & { querySerializer ?: QuerySerializer < T > } ;
45
45
export type Success < O > = FilterKeys < FilterKeys < O , OkStatus > , "content" > ;
46
46
export type Error < O > = FilterKeys < FilterKeys < O , ErrorStatus > , "content" > ;
47
+
48
+ // fetch types
49
+ export type FetchOptions < T > = RequestOptions < T > & Omit < RequestInit , "body" > ;
47
50
export type FetchResponse < T > =
48
51
| { data : T extends { responses : any } ? NonNullable < FilterKeys < Success < T [ "responses" ] > , JSONLike > > : unknown ; error ?: never ; response : Response }
49
52
| { data ?: never ; error : T extends { responses : any } ? NonNullable < FilterKeys < Error < T [ "responses" ] > , JSONLike > > : unknown ; response : Response } ;
0 commit comments