Skip to content

Commit c4e86a9

Browse files
committed
Restore FileReaderProgressEvent
This type doesn't exist, but is useful until we parametrise ProgressEvent with subtype properties. Fixes microsoft/TypeScript#25510
1 parent 73f17d8 commit c4e86a9

File tree

7 files changed

+72
-48
lines changed

7 files changed

+72
-48
lines changed

baselines/dom.generated.d.ts

+18-12
Original file line numberDiff line numberDiff line change
@@ -4535,6 +4535,7 @@ interface Document extends Node, NonElementParentNode, DocumentOrShadowRoot, Par
45354535
createEvent(eventInterface: "ErrorEvent"): ErrorEvent;
45364536
createEvent(eventInterface: "Event"): Event;
45374537
createEvent(eventInterface: "Events"): Event;
4538+
createEvent(eventInterface: "FileReaderProgressEvent"): FileReaderProgressEvent;
45384539
createEvent(eventInterface: "FocusEvent"): FocusEvent;
45394540
createEvent(eventInterface: "FocusNavigationEvent"): FocusNavigationEvent;
45404541
createEvent(eventInterface: "GamepadEvent"): GamepadEvent;
@@ -4786,6 +4787,7 @@ interface DocumentEvent {
47864787
createEvent(eventInterface: "ErrorEvent"): ErrorEvent;
47874788
createEvent(eventInterface: "Event"): Event;
47884789
createEvent(eventInterface: "Events"): Event;
4790+
createEvent(eventInterface: "FileReaderProgressEvent"): FileReaderProgressEvent;
47894791
createEvent(eventInterface: "FocusEvent"): FocusEvent;
47904792
createEvent(eventInterface: "FocusNavigationEvent"): FocusNavigationEvent;
47914793
createEvent(eventInterface: "GamepadEvent"): GamepadEvent;
@@ -5347,23 +5349,23 @@ declare var FileList: {
53475349
};
53485350

53495351
interface FileReaderEventMap {
5350-
"abort": ProgressEvent;
5351-
"error": ProgressEvent;
5352-
"load": ProgressEvent;
5353-
"loadend": ProgressEvent;
5354-
"loadstart": ProgressEvent;
5355-
"progress": ProgressEvent;
5352+
"abort": FileReaderProgressEvent;
5353+
"error": FileReaderProgressEvent;
5354+
"load": FileReaderProgressEvent;
5355+
"loadend": FileReaderProgressEvent;
5356+
"loadstart": FileReaderProgressEvent;
5357+
"progress": FileReaderProgressEvent;
53565358
}
53575359

53585360
/** Lets web applications asynchronously read the contents of files (or raw data buffers) stored on the user's computer, using File or Blob objects to specify the file or data to read. */
53595361
interface FileReader extends EventTarget {
53605362
readonly error: DOMException | null;
5361-
onabort: ((this: FileReader, ev: ProgressEvent) => any) | null;
5362-
onerror: ((this: FileReader, ev: ProgressEvent) => any) | null;
5363-
onload: ((this: FileReader, ev: ProgressEvent) => any) | null;
5364-
onloadend: ((this: FileReader, ev: ProgressEvent) => any) | null;
5365-
onloadstart: ((this: FileReader, ev: ProgressEvent) => any) | null;
5366-
onprogress: ((this: FileReader, ev: ProgressEvent) => any) | null;
5363+
onabort: ((this: FileReader, ev: FileReaderProgressEvent) => any) | null;
5364+
onerror: ((this: FileReader, ev: FileReaderProgressEvent) => any) | null;
5365+
onload: ((this: FileReader, ev: FileReaderProgressEvent) => any) | null;
5366+
onloadend: ((this: FileReader, ev: FileReaderProgressEvent) => any) | null;
5367+
onloadstart: ((this: FileReader, ev: FileReaderProgressEvent) => any) | null;
5368+
onprogress: ((this: FileReader, ev: FileReaderProgressEvent) => any) | null;
53675369
readonly readyState: number;
53685370
readonly result: string | ArrayBuffer | null;
53695371
abort(): void;
@@ -5388,6 +5390,10 @@ declare var FileReader: {
53885390
readonly LOADING: number;
53895391
};
53905392

5393+
interface FileReaderProgressEvent extends ProgressEvent {
5394+
readonly target: FileReader | null;
5395+
}
5396+
53915397
/** Focus-related events like focus, blur, focusin, or focusout. */
53925398
interface FocusEvent extends UIEvent {
53935399
readonly relatedTarget: EventTarget;

baselines/webworker.generated.d.ts

+16-12
Original file line numberDiff line numberDiff line change
@@ -1525,23 +1525,23 @@ declare var FileList: {
15251525
};
15261526

15271527
interface FileReaderEventMap {
1528-
"abort": ProgressEvent;
1529-
"error": ProgressEvent;
1530-
"load": ProgressEvent;
1531-
"loadend": ProgressEvent;
1532-
"loadstart": ProgressEvent;
1533-
"progress": ProgressEvent;
1528+
"abort": FileReaderProgressEvent;
1529+
"error": FileReaderProgressEvent;
1530+
"load": FileReaderProgressEvent;
1531+
"loadend": FileReaderProgressEvent;
1532+
"loadstart": FileReaderProgressEvent;
1533+
"progress": FileReaderProgressEvent;
15341534
}
15351535

15361536
/** Lets web applications asynchronously read the contents of files (or raw data buffers) stored on the user's computer, using File or Blob objects to specify the file or data to read. */
15371537
interface FileReader extends EventTarget {
15381538
readonly error: DOMException | null;
1539-
onabort: ((this: FileReader, ev: ProgressEvent) => any) | null;
1540-
onerror: ((this: FileReader, ev: ProgressEvent) => any) | null;
1541-
onload: ((this: FileReader, ev: ProgressEvent) => any) | null;
1542-
onloadend: ((this: FileReader, ev: ProgressEvent) => any) | null;
1543-
onloadstart: ((this: FileReader, ev: ProgressEvent) => any) | null;
1544-
onprogress: ((this: FileReader, ev: ProgressEvent) => any) | null;
1539+
onabort: ((this: FileReader, ev: FileReaderProgressEvent) => any) | null;
1540+
onerror: ((this: FileReader, ev: FileReaderProgressEvent) => any) | null;
1541+
onload: ((this: FileReader, ev: FileReaderProgressEvent) => any) | null;
1542+
onloadend: ((this: FileReader, ev: FileReaderProgressEvent) => any) | null;
1543+
onloadstart: ((this: FileReader, ev: FileReaderProgressEvent) => any) | null;
1544+
onprogress: ((this: FileReader, ev: FileReaderProgressEvent) => any) | null;
15451545
readonly readyState: number;
15461546
readonly result: string | ArrayBuffer | null;
15471547
abort(): void;
@@ -1566,6 +1566,10 @@ declare var FileReader: {
15661566
readonly LOADING: number;
15671567
};
15681568

1569+
interface FileReaderProgressEvent extends ProgressEvent {
1570+
readonly target: FileReader | null;
1571+
}
1572+
15691573
/** Allows to read File or Blob objects in a synchronous way. */
15701574
interface FileReaderSync {
15711575
readAsArrayBuffer(blob: Blob): ArrayBuffer;

inputfiles/addedTypes.json

+15
Original file line numberDiff line numberDiff line change
@@ -1964,6 +1964,21 @@
19641964
}
19651965
}
19661966
}
1967+
},
1968+
"FileReaderProgressEvent": {
1969+
"name": "FileReaderProgressEvent",
1970+
"extends": "ProgressEvent",
1971+
"no-interface-object": 1,
1972+
"properties": {
1973+
"property": {
1974+
"target": {
1975+
"name": "target",
1976+
"read-only": 1,
1977+
"nullable": 1,
1978+
"type": "FileReader"
1979+
}
1980+
}
1981+
}
19671982
}
19681983
}
19691984
},

inputfiles/overridingTypes.json

+6-6
Original file line numberDiff line numberDiff line change
@@ -1862,27 +1862,27 @@
18621862
"event": [
18631863
{
18641864
"name": "loadstart",
1865-
"type": "ProgressEvent"
1865+
"type": "FileReaderProgressEvent"
18661866
},
18671867
{
18681868
"name": "progress",
1869-
"type": "ProgressEvent"
1869+
"type": "FileReaderProgressEvent"
18701870
},
18711871
{
18721872
"name": "load",
1873-
"type": "ProgressEvent"
1873+
"type": "FileReaderProgressEvent"
18741874
},
18751875
{
18761876
"name": "abort",
1877-
"type": "ProgressEvent"
1877+
"type": "FileReaderProgressEvent"
18781878
},
18791879
{
18801880
"name": "error",
1881-
"type": "ProgressEvent"
1881+
"type": "FileReaderProgressEvent"
18821882
},
18831883
{
18841884
"name": "loadend",
1885-
"type": "ProgressEvent"
1885+
"type": "FileReaderProgressEvent"
18861886
}
18871887
]
18881888
}

inputfiles/removedTypes.json

-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,6 @@
7979
}
8080
}
8181
},
82-
"FileReaderProgressEvent": null,
8382
"HTMLAreasCollection": null,
8483
"HTMLBodyElement": {
8584
"properties": {

src/emitter.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ export function emitWebIdl(webidl: Browser.WebIdl, flavor: Flavor) {
153153
/// Interface name to its related eventhandler name list map
154154
/// Note:
155155
/// In the xml file, each event handler has
156-
/// 1. eventhanlder name: "onready", "onabort" etc.
156+
/// 1. eventhandler name: "onready", "onabort" etc.
157157
/// 2. the event name that it handles: "ready", "SVGAbort" etc.
158158
/// And they don't just differ by an "on" prefix!
159159
const iNameToEhList = arrayToMap(allInterfaces, i => i.name, i =>

src/helpers.ts

+16-16
Original file line numberDiff line numberDiff line change
@@ -54,36 +54,36 @@ export function exposesTo(o: { exposed?: string }, target: string) {
5454
return o.exposed.includes(target);
5555
}
5656

57-
export function merge<T>(src: T, target: T, shallow?: boolean): T {
58-
if (typeof src !== "object" || typeof target !== "object") {
59-
return target;
57+
export function merge<T>(target: T, src: T, shallow?: boolean): T {
58+
if (typeof target !== "object" || typeof src !== "object") {
59+
return src;
6060
}
61-
for (const k in target) {
62-
if (Object.getOwnPropertyDescriptor(target, k)) {
63-
if (Object.getOwnPropertyDescriptor(src, k)) {
64-
const srcProp = src[k];
61+
for (const k in src) {
62+
if (Object.getOwnPropertyDescriptor(src, k)) {
63+
if (Object.getOwnPropertyDescriptor(target, k)) {
6564
const targetProp = target[k];
66-
if (Array.isArray(srcProp) && Array.isArray(targetProp)) {
67-
mergeNamedArrays(srcProp, targetProp);
65+
const srcProp = src[k];
66+
if (Array.isArray(targetProp) && Array.isArray(srcProp)) {
67+
mergeNamedArrays(targetProp, srcProp);
6868
}
6969
else {
70-
if (Array.isArray(srcProp) !== Array.isArray(targetProp)) {
71-
throw new Error("Mismatch on property: " + k + JSON.stringify(targetProp));
70+
if (Array.isArray(targetProp) !== Array.isArray(srcProp)) {
71+
throw new Error("Mismatch on property: " + k + JSON.stringify(srcProp));
7272
}
73-
if (shallow && typeof (src[k] as any).name === "string" && typeof (target[k] as any).name === "string") {
74-
src[k] = target[k];
73+
if (shallow && typeof (target[k] as any).name === "string" && typeof (src[k] as any).name === "string") {
74+
target[k] = src[k];
7575
}
7676
else {
77-
src[k] = merge(src[k], target[k], shallow);
77+
target[k] = merge(target[k], src[k], shallow);
7878
}
7979
}
8080
}
8181
else {
82-
src[k] = target[k];
82+
target[k] = src[k];
8383
}
8484
}
8585
}
86-
return src;
86+
return target;
8787
}
8888

8989
function mergeNamedArrays<T extends { name: string; "new-type": string; }>(srcProp: T[], targetProp: T[]) {

0 commit comments

Comments
 (0)