@@ -10,6 +10,8 @@ interface ClientOptions extends RequestInit {
10
10
baseUrl ?: string ;
11
11
/** custom fetch (defaults to globalThis.fetch) */
12
12
fetch ?: typeof fetch ;
13
+ /** global querySerializer */
14
+ querySerializer ?: QuerySerializer < unknown > ;
13
15
}
14
16
export interface BaseParams {
15
17
params ?: { query ?: Record < string , unknown > } ;
@@ -82,15 +84,15 @@ export function createFinalURL<O>(url: string, options: { baseUrl?: string; para
82
84
}
83
85
84
86
export default function createClient < Paths extends { } > ( clientOptions : ClientOptions = { } ) {
85
- const { fetch = globalThis . fetch , ...options } = clientOptions ;
87
+ const { fetch = globalThis . fetch , querySerializer : globalQuerySerializer , ...options } = clientOptions ;
86
88
87
89
const defaultHeaders = new Headers ( {
88
90
...DEFAULT_HEADERS ,
89
91
...( options . headers ?? { } ) ,
90
92
} ) ;
91
93
92
94
async function coreFetch < P extends keyof Paths , M extends HttpMethod > ( url : P , fetchOptions : FetchOptions < M extends keyof Paths [ P ] ? Paths [ P ] [ M ] : never > ) : Promise < FetchResponse < M extends keyof Paths [ P ] ? Paths [ P ] [ M ] : unknown > > {
93
- const { headers, body : requestBody , params = { } , parseAs = "json" , querySerializer = defaultSerializer , ...init } = fetchOptions || { } ;
95
+ const { headers, body : requestBody , params = { } , parseAs = "json" , querySerializer = globalQuerySerializer ?? defaultSerializer , ...init } = fetchOptions || { } ;
94
96
95
97
// URL
96
98
const finalURL = createFinalURL ( url as string , { baseUrl : options . baseUrl , params, querySerializer } ) ;
0 commit comments