Skip to content

Commit 173a3fb

Browse files
committed
- Updated #713
1 parent 506d4d5 commit 173a3fb

File tree

3 files changed

+67
-46
lines changed

3 files changed

+67
-46
lines changed

src/templates/core/functions/getFormData.hbs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ function getFormData(options: ApiRequestOptions): FormData | undefined {
22
if (options.formData) {
33
const formData = new FormData();
44

5-
const append = (key: string, value: any) => {
5+
const process = (key: string, value: any) => {
66
if (isString(value) || isBlob(value)) {
77
formData.append(key, value);
88
} else {
@@ -14,9 +14,9 @@ function getFormData(options: ApiRequestOptions): FormData | undefined {
1414
.filter(([_, value]) => isDefined(value))
1515
.forEach(([key, value]) => {
1616
if (Array.isArray(value)) {
17-
value.forEach(v => append(key, v));
17+
value.forEach(v => process(key, v));
1818
} else {
19-
append(key, value);
19+
process(key, value);
2020
}
2121
});
2222

src/templates/core/functions/getQueryString.hbs

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,29 @@
11
function getQueryString(params: Record<string, any>): string {
2-
const qs: string[] = [];
2+
const searchParams = new URLSearchParams();
33

4-
const append = (key: string, value: any) => {
5-
qs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);
6-
};
7-
8-
Object.entries(params)
9-
.filter(([_, value]) => isDefined(value))
10-
.forEach(([key, value]) => {
4+
const process = (key: string, value: any) => {
5+
if (isDefined(value)) {
116
if (Array.isArray(value)) {
12-
value.forEach(v => append(key, v));
7+
value.forEach(v => {
8+
process(key, v);
9+
});
10+
} else if (typeof value === 'object') {
11+
Object.entries(value).forEach(([k, v]) => {
12+
process(`${key}[${k}]`, v);
13+
});
1314
} else {
14-
append(key, value);
15+
searchParams.append(key, value);
1516
}
16-
});
17+
}
18+
};
19+
20+
Object.entries(params).forEach(([key, value]) => {
21+
process(key, value);
22+
});
1723

18-
if (qs.length > 0) {
19-
return `?${qs.join('&')}`;
24+
const query = searchParams.toString();
25+
if (query.length) {
26+
return `?${query}`;
2027
}
2128

2229
return '';

test/__snapshots__/index.spec.ts.snap

Lines changed: 44 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -270,24 +270,31 @@ function base64(str: string): string {
270270
}
271271

272272
function getQueryString(params: Record<string, any>): string {
273-
const qs: string[] = [];
273+
const searchParams = new URLSearchParams();
274274

275-
const append = (key: string, value: any) => {
276-
qs.push(\`\${encodeURIComponent(key)}=\${encodeURIComponent(String(value))}\`);
277-
};
278-
279-
Object.entries(params)
280-
.filter(([_, value]) => isDefined(value))
281-
.forEach(([key, value]) => {
275+
const process = (key:string, value: any) => {
276+
if (isDefined(value)) {
282277
if (Array.isArray(value)) {
283-
value.forEach(v => append(key, v));
278+
value.forEach(v => {
279+
process(key, v);
280+
});
281+
} else if (typeof value === 'object') {
282+
Object.entries(value).forEach(([k, v]) => {
283+
process(\`\${key}[\${k}]\`, v);
284+
});
284285
} else {
285-
append(key, value);
286+
searchParams.append(key, value);
286287
}
287-
});
288+
}
289+
};
290+
291+
Object.entries(params).forEach(([key, value]) => {
292+
process(key, value);
293+
});
288294

289-
if (qs.length > 0) {
290-
return \`?\${qs.join('&')}\`;
295+
const query = searchParams.toString();
296+
if (query.length) {
297+
return \`?\${query}\`;
291298
}
292299

293300
return '';
@@ -307,7 +314,7 @@ function getFormData(options: ApiRequestOptions): FormData | undefined {
307314
if (options.formData) {
308315
const formData = new FormData();
309316

310-
const append = (key: string, value: any) => {
317+
const process = (key: string, value: any) => {
311318
if (isString(value) || isBlob(value)) {
312319
formData.append(key, value);
313320
} else {
@@ -321,7 +328,7 @@ function getFormData(options: ApiRequestOptions): FormData | undefined {
321328
if (Array.isArray(value)) {
322329
value.forEach(v => append(key, v));
323330
} else {
324-
append(key, value);
331+
process(key, value);
325332
}
326333
});
327334

@@ -3112,24 +3119,31 @@ function base64(str: string): string {
31123119
}
31133120

31143121
function getQueryString(params: Record<string, any>): string {
3115-
const qs: string[] = [];
3122+
const searchParams = new URLSearchParams();
31163123

3117-
const append = (key: string, value: any) => {
3118-
qs.push(\`\${encodeURIComponent(key)}=\${encodeURIComponent(String(value))}\`);
3119-
};
3120-
3121-
Object.entries(params)
3122-
.filter(([_, value]) => isDefined(value))
3123-
.forEach(([key, value]) => {
3124+
const process = (key:string, value: any) => {
3125+
if (isDefined(value)) {
31243126
if (Array.isArray(value)) {
3125-
value.forEach(v => append(key, v));
3127+
value.forEach(v => {
3128+
process(key, v);
3129+
});
3130+
} else if (typeof value === 'object') {
3131+
Object.entries(value).forEach(([k, v]) => {
3132+
process(\`\${key}[\${k}]\`, v);
3133+
});
31263134
} else {
3127-
append(key, value);
3135+
searchParams.append(key, value);
31283136
}
3129-
});
3137+
}
3138+
};
3139+
3140+
Object.entries(params).forEach(([key, value]) => {
3141+
process(key, value);
3142+
});
31303143

3131-
if (qs.length > 0) {
3132-
return \`?\${qs.join('&')}\`;
3144+
const query = searchParams.toString();
3145+
if (query.length) {
3146+
return \`?\${query}\`;
31333147
}
31343148

31353149
return '';
@@ -3149,7 +3163,7 @@ function getFormData(options: ApiRequestOptions): FormData | undefined {
31493163
if (options.formData) {
31503164
const formData = new FormData();
31513165

3152-
const append = (key: string, value: any) => {
3166+
const process = (key: string, value: any) => {
31533167
if (isString(value) || isBlob(value)) {
31543168
formData.append(key, value);
31553169
} else {
@@ -3163,7 +3177,7 @@ function getFormData(options: ApiRequestOptions): FormData | undefined {
31633177
if (Array.isArray(value)) {
31643178
value.forEach(v => append(key, v));
31653179
} else {
3166-
append(key, value);
3180+
process(key, value);
31673181
}
31683182
});
31693183

0 commit comments

Comments
 (0)