Skip to content

Commit c36e436

Browse files
Prevent runtime errors on FormData set and append (#1534)
Co-authored-by: saschanaz <[email protected]>
1 parent c7886a2 commit c36e436

File tree

6 files changed

+60
-12
lines changed

6 files changed

+60
-12
lines changed

baselines/dom.generated.d.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8548,7 +8548,9 @@ interface FontFaceSource {
85488548
*/
85498549
interface FormData {
85508550
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/append) */
8551-
append(name: string, value: string | Blob, fileName?: string): void;
8551+
append(name: string, value: string | Blob): void;
8552+
append(name: string, value: string): void;
8553+
append(name: string, blobValue: Blob, filename?: string): void;
85528554
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/delete) */
85538555
delete(name: string): void;
85548556
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/get) */
@@ -8558,7 +8560,9 @@ interface FormData {
85588560
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/has) */
85598561
has(name: string): boolean;
85608562
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/set) */
8561-
set(name: string, value: string | Blob, fileName?: string): void;
8563+
set(name: string, value: string | Blob): void;
8564+
set(name: string, value: string): void;
8565+
set(name: string, blobValue: Blob, filename?: string): void;
85628566
forEach(callbackfn: (value: FormDataEntryValue, key: string, parent: FormData) => void, thisArg?: any): void;
85638567
}
85648568

baselines/serviceworker.generated.d.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2732,7 +2732,9 @@ interface FontFaceSource {
27322732
*/
27332733
interface FormData {
27342734
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/append) */
2735-
append(name: string, value: string | Blob, fileName?: string): void;
2735+
append(name: string, value: string | Blob): void;
2736+
append(name: string, value: string): void;
2737+
append(name: string, blobValue: Blob, filename?: string): void;
27362738
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/delete) */
27372739
delete(name: string): void;
27382740
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/get) */
@@ -2742,7 +2744,9 @@ interface FormData {
27422744
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/has) */
27432745
has(name: string): boolean;
27442746
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/set) */
2745-
set(name: string, value: string | Blob, fileName?: string): void;
2747+
set(name: string, value: string | Blob): void;
2748+
set(name: string, value: string): void;
2749+
set(name: string, blobValue: Blob, filename?: string): void;
27462750
forEach(callbackfn: (value: FormDataEntryValue, key: string, parent: FormData) => void, thisArg?: any): void;
27472751
}
27482752

baselines/sharedworker.generated.d.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2621,7 +2621,9 @@ interface FontFaceSource {
26212621
*/
26222622
interface FormData {
26232623
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/append) */
2624-
append(name: string, value: string | Blob, fileName?: string): void;
2624+
append(name: string, value: string | Blob): void;
2625+
append(name: string, value: string): void;
2626+
append(name: string, blobValue: Blob, filename?: string): void;
26252627
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/delete) */
26262628
delete(name: string): void;
26272629
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/get) */
@@ -2631,7 +2633,9 @@ interface FormData {
26312633
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/has) */
26322634
has(name: string): boolean;
26332635
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/set) */
2634-
set(name: string, value: string | Blob, fileName?: string): void;
2636+
set(name: string, value: string | Blob): void;
2637+
set(name: string, value: string): void;
2638+
set(name: string, blobValue: Blob, filename?: string): void;
26352639
forEach(callbackfn: (value: FormDataEntryValue, key: string, parent: FormData) => void, thisArg?: any): void;
26362640
}
26372641

baselines/webworker.generated.d.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2985,7 +2985,9 @@ interface FontFaceSource {
29852985
*/
29862986
interface FormData {
29872987
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/append) */
2988-
append(name: string, value: string | Blob, fileName?: string): void;
2988+
append(name: string, value: string | Blob): void;
2989+
append(name: string, value: string): void;
2990+
append(name: string, blobValue: Blob, filename?: string): void;
29892991
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/delete) */
29902992
delete(name: string): void;
29912993
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/get) */
@@ -2995,7 +2997,9 @@ interface FormData {
29952997
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/has) */
29962998
has(name: string): boolean;
29972999
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/set) */
2998-
set(name: string, value: string | Blob, fileName?: string): void;
3000+
set(name: string, value: string | Blob): void;
3001+
set(name: string, value: string): void;
3002+
set(name: string, blobValue: Blob, filename?: string): void;
29993003
forEach(callbackfn: (value: FormDataEntryValue, key: string, parent: FormData) => void, thisArg?: any): void;
30003004
}
30013005

inputfiles/overridingTypes.jsonc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1240,15 +1240,15 @@
12401240
"append": {
12411241
"name": "append",
12421242
"flavor": "Web",
1243-
"overrideSignatures": [
1244-
"append(name: string, value: string | Blob, fileName?: string): void"
1243+
"additionalSignatures": [
1244+
"append(name: string, value: string | Blob): void"
12451245
]
12461246
},
12471247
"set": {
12481248
"name": "set",
12491249
"flavor": "Web",
1250-
"overrideSignatures": [
1251-
"set(name: string, value: string | Blob, fileName?: string): void"
1250+
"additionalSignatures": [
1251+
"set(name: string, value: string | Blob): void"
12521252
]
12531253
}
12541254
}

unittests/files/formData.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
const formData = new FormData();
2+
3+
// Should work
4+
formData.append("myProp", "value");
5+
6+
// Should work
7+
formData.append("myProp", new Blob());
8+
9+
// Should work
10+
formData.append("myProp", new Blob(), "myFile");
11+
12+
// @ts-expect-error will error on runtime
13+
formData.append("myProp", "value", "myFile");
14+
15+
// Should work
16+
formData.set("myProp", "value");
17+
18+
// Should work
19+
formData.set("myProp", new Blob());
20+
21+
// Should work
22+
formData.set("myProp", new Blob(), "myFile");
23+
24+
// @ts-expect-error will error on runtime
25+
formData.set("myProp", "value", "myFile");
26+
27+
// Should work for union type
28+
type stringBlobUnion = string | Blob;
29+
const unionValue = "value" as stringBlobUnion;
30+
31+
formData.set("myProp", unionValue);
32+
formData.append("myProp", unionValue);

0 commit comments

Comments
 (0)