@@ -38,9 +38,15 @@ function isOkStatus(status: number): boolean {
38
38
39
39
declare const setTimeout : ( callback : ( ) => void , timeout ?: number ) => number
40
40
41
+ type URLSearchParamsLike = {
42
+ toString : ( ) => string
43
+ append : ( key : string , value : string ) => void
44
+ }
45
+
41
46
// It exists both in node, browser, miniprogram environment
42
47
declare const URLSearchParams : {
43
- new ( params : Record < string , string > ) : { toString : ( ) => string }
48
+ new ( params : Record < string , string > ) : URLSearchParamsLike
49
+ new ( ) : URLSearchParamsLike
44
50
}
45
51
46
52
export function createLyla < C , M extends LylaAdapterMeta > (
@@ -164,13 +170,17 @@ export function createLyla<C, M extends LylaAdapterMeta>(
164
170
165
171
// Resolve query string, patch it to URL
166
172
if ( _options . query ) {
167
- const resolvedQuery : Record < string , string > = { }
168
- for ( const key in _options . query ) {
169
- const v = _options . query [ key ]
170
- if ( v === undefined || v === null ) continue
171
- resolvedQuery [ key ] = v . toString ( )
173
+ const urlSearchParams = new URLSearchParams ( )
174
+ for ( const [ key , value ] of Object . entries ( _options . query ) ) {
175
+ if ( Array . isArray ( value ) ) {
176
+ for ( const v of value ) {
177
+ urlSearchParams . append ( key , v . toString ( ) )
178
+ }
179
+ } else if ( value !== undefined && value !== null ) {
180
+ urlSearchParams . append ( key , value . toString ( ) )
181
+ }
172
182
}
173
- const urlSearchParams = new URLSearchParams ( resolvedQuery )
183
+
174
184
const queryString = urlSearchParams . toString ( )
175
185
if ( _options . url . includes ( '?' ) ) {
176
186
const badRequestError = defineLylaError <
0 commit comments