Skip to content

Commit a20c418

Browse files
saschanazsandersn
authored andcommitted
Parameterize ProgressEvent (#707)
* Revert "Restore FileReaderProgressEvent (#704)" This reverts commit 17d343a. * Parameterize ProgressEvent * use generic for existing types * emit parameterized ProgressEvent * use existing `type-parameters` field * ensure attributeless events get type param in the future
1 parent 80f06eb commit a20c418

8 files changed

+113
-89
lines changed

baselines/dom.generated.d.ts

Lines changed: 29 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2056,7 +2056,7 @@ interface ApplicationCacheEventMap {
20562056
"error": Event;
20572057
"noupdate": Event;
20582058
"obsolete": Event;
2059-
"progress": ProgressEvent;
2059+
"progress": ProgressEvent<ApplicationCache>;
20602060
"updateready": Event;
20612061
}
20622062

@@ -2074,7 +2074,7 @@ interface ApplicationCache extends EventTarget {
20742074
/** @deprecated */
20752075
onobsolete: ((this: ApplicationCache, ev: Event) => any) | null;
20762076
/** @deprecated */
2077-
onprogress: ((this: ApplicationCache, ev: ProgressEvent) => any) | null;
2077+
onprogress: ((this: ApplicationCache, ev: ProgressEvent<ApplicationCache>) => any) | null;
20782078
/** @deprecated */
20792079
onupdateready: ((this: ApplicationCache, ev: Event) => any) | null;
20802080
/** @deprecated */
@@ -4444,7 +4444,7 @@ interface DocumentEventMap extends GlobalEventHandlersEventMap, DocumentAndEleme
44444444
"fullscreenerror": Event;
44454445
"pointerlockchange": Event;
44464446
"pointerlockerror": Event;
4447-
"readystatechange": ProgressEvent;
4447+
"readystatechange": ProgressEvent<Document>;
44484448
"visibilitychange": Event;
44494449
}
44504450

@@ -4603,7 +4603,7 @@ interface Document extends Node, NonElementParentNode, DocumentOrShadowRoot, Par
46034603
* Fires when the state of the object has changed.
46044604
* @param ev The event
46054605
*/
4606-
onreadystatechange: ((this: Document, ev: ProgressEvent) => any) | null;
4606+
onreadystatechange: ((this: Document, ev: ProgressEvent<Document>) => any) | null;
46074607
onvisibilitychange: ((this: Document, ev: Event) => any) | null;
46084608
/**
46094609
* Returns document's origin.
@@ -4716,7 +4716,6 @@ interface Document extends Node, NonElementParentNode, DocumentOrShadowRoot, Par
47164716
createEvent(eventInterface: "ErrorEvent"): ErrorEvent;
47174717
createEvent(eventInterface: "Event"): Event;
47184718
createEvent(eventInterface: "Events"): Event;
4719-
createEvent(eventInterface: "FileReaderProgressEvent"): FileReaderProgressEvent;
47204719
createEvent(eventInterface: "FocusEvent"): FocusEvent;
47214720
createEvent(eventInterface: "FocusNavigationEvent"): FocusNavigationEvent;
47224721
createEvent(eventInterface: "GamepadEvent"): GamepadEvent;
@@ -4967,7 +4966,6 @@ interface DocumentEvent {
49674966
createEvent(eventInterface: "ErrorEvent"): ErrorEvent;
49684967
createEvent(eventInterface: "Event"): Event;
49694968
createEvent(eventInterface: "Events"): Event;
4970-
createEvent(eventInterface: "FileReaderProgressEvent"): FileReaderProgressEvent;
49714969
createEvent(eventInterface: "FocusEvent"): FocusEvent;
49724970
createEvent(eventInterface: "FocusNavigationEvent"): FocusNavigationEvent;
49734971
createEvent(eventInterface: "GamepadEvent"): GamepadEvent;
@@ -5535,23 +5533,23 @@ declare var FileList: {
55355533
};
55365534

55375535
interface FileReaderEventMap {
5538-
"abort": FileReaderProgressEvent;
5539-
"error": FileReaderProgressEvent;
5540-
"load": FileReaderProgressEvent;
5541-
"loadend": FileReaderProgressEvent;
5542-
"loadstart": FileReaderProgressEvent;
5543-
"progress": FileReaderProgressEvent;
5536+
"abort": ProgressEvent<FileReader>;
5537+
"error": ProgressEvent<FileReader>;
5538+
"load": ProgressEvent<FileReader>;
5539+
"loadend": ProgressEvent<FileReader>;
5540+
"loadstart": ProgressEvent<FileReader>;
5541+
"progress": ProgressEvent<FileReader>;
55445542
}
55455543

55465544
/** 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. */
55475545
interface FileReader extends EventTarget {
55485546
readonly error: DOMException | null;
5549-
onabort: ((this: FileReader, ev: FileReaderProgressEvent) => any) | null;
5550-
onerror: ((this: FileReader, ev: FileReaderProgressEvent) => any) | null;
5551-
onload: ((this: FileReader, ev: FileReaderProgressEvent) => any) | null;
5552-
onloadend: ((this: FileReader, ev: FileReaderProgressEvent) => any) | null;
5553-
onloadstart: ((this: FileReader, ev: FileReaderProgressEvent) => any) | null;
5554-
onprogress: ((this: FileReader, ev: FileReaderProgressEvent) => any) | null;
5547+
onabort: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5548+
onerror: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5549+
onload: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5550+
onloadend: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5551+
onloadstart: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5552+
onprogress: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
55555553
readonly readyState: number;
55565554
readonly result: string | ArrayBuffer | null;
55575555
abort(): void;
@@ -5576,10 +5574,6 @@ declare var FileReader: {
55765574
readonly LOADING: number;
55775575
};
55785576

5579-
interface FileReaderProgressEvent extends ProgressEvent {
5580-
readonly target: FileReader | null;
5581-
}
5582-
55835577
/** Focus-related events like focus, blur, focusin, or focusout. */
55845578
interface FocusEvent extends UIEvent {
55855579
readonly relatedTarget: EventTarget | null;
@@ -11929,9 +11923,10 @@ declare var ProcessingInstruction: {
1192911923
};
1193011924

1193111925
/** Events measuring progress of an underlying process, like an HTTP request (for an XMLHttpRequest, or the loading of the underlying resource of an <img>, <audio>, <video>, <style> or <link>). */
11932-
interface ProgressEvent extends Event {
11926+
interface ProgressEvent<T extends EventTarget = EventTarget> extends Event {
1193311927
readonly lengthComputable: boolean;
1193411928
readonly loaded: number;
11929+
readonly target: T | null;
1193511930
readonly total: number;
1193611931
}
1193711932

@@ -18429,9 +18424,9 @@ interface WindowEventMap extends GlobalEventHandlersEventMap, WindowEventHandler
1842918424
"play": Event;
1843018425
"playing": Event;
1843118426
"popstate": PopStateEvent;
18432-
"progress": ProgressEvent;
18427+
"progress": ProgressEvent<Window>;
1843318428
"ratechange": Event;
18434-
"readystatechange": ProgressEvent;
18429+
"readystatechange": ProgressEvent<Window>;
1843518430
"reset": Event;
1843618431
"resize": UIEvent;
1843718432
"scroll": Event;
@@ -18515,7 +18510,7 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window
1851518510
onmspointerup: ((this: Window, ev: Event) => any) | null;
1851618511
/** @deprecated */
1851718512
onorientationchange: ((this: Window, ev: Event) => any) | null;
18518-
onreadystatechange: ((this: Window, ev: ProgressEvent) => any) | null;
18513+
onreadystatechange: ((this: Window, ev: ProgressEvent<Window>) => any) | null;
1851918514
onvrdisplayactivate: ((this: Window, ev: Event) => any) | null;
1852018515
onvrdisplayblur: ((this: Window, ev: Event) => any) | null;
1852118516
onvrdisplayconnect: ((this: Window, ev: Event) => any) | null;
@@ -18865,13 +18860,13 @@ declare var XMLHttpRequest: {
1886518860
};
1886618861

1886718862
interface XMLHttpRequestEventTargetEventMap {
18868-
"abort": ProgressEvent;
18869-
"error": ProgressEvent;
18870-
"load": ProgressEvent;
18871-
"loadend": ProgressEvent;
18872-
"loadstart": ProgressEvent;
18873-
"progress": ProgressEvent;
18874-
"timeout": ProgressEvent;
18863+
"abort": ProgressEvent<XMLHttpRequestEventTarget>;
18864+
"error": ProgressEvent<XMLHttpRequestEventTarget>;
18865+
"load": ProgressEvent<XMLHttpRequestEventTarget>;
18866+
"loadend": ProgressEvent<XMLHttpRequestEventTarget>;
18867+
"loadstart": ProgressEvent<XMLHttpRequestEventTarget>;
18868+
"progress": ProgressEvent<XMLHttpRequestEventTarget>;
18869+
"timeout": ProgressEvent<XMLHttpRequestEventTarget>;
1887518870
}
1887618871

1887718872
interface XMLHttpRequestEventTarget extends EventTarget {
@@ -19509,7 +19504,7 @@ declare var onmspointerover: ((this: Window, ev: Event) => any) | null;
1950919504
declare var onmspointerup: ((this: Window, ev: Event) => any) | null;
1951019505
/** @deprecated */
1951119506
declare var onorientationchange: ((this: Window, ev: Event) => any) | null;
19512-
declare var onreadystatechange: ((this: Window, ev: ProgressEvent) => any) | null;
19507+
declare var onreadystatechange: ((this: Window, ev: ProgressEvent<Window>) => any) | null;
1951319508
declare var onvrdisplayactivate: ((this: Window, ev: Event) => any) | null;
1951419509
declare var onvrdisplayblur: ((this: Window, ev: Event) => any) | null;
1951519510
declare var onvrdisplayconnect: ((this: Window, ev: Event) => any) | null;

baselines/webworker.generated.d.ts

Lines changed: 21 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1540,23 +1540,23 @@ declare var FileList: {
15401540
};
15411541

15421542
interface FileReaderEventMap {
1543-
"abort": FileReaderProgressEvent;
1544-
"error": FileReaderProgressEvent;
1545-
"load": FileReaderProgressEvent;
1546-
"loadend": FileReaderProgressEvent;
1547-
"loadstart": FileReaderProgressEvent;
1548-
"progress": FileReaderProgressEvent;
1543+
"abort": ProgressEvent<FileReader>;
1544+
"error": ProgressEvent<FileReader>;
1545+
"load": ProgressEvent<FileReader>;
1546+
"loadend": ProgressEvent<FileReader>;
1547+
"loadstart": ProgressEvent<FileReader>;
1548+
"progress": ProgressEvent<FileReader>;
15491549
}
15501550

15511551
/** 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. */
15521552
interface FileReader extends EventTarget {
15531553
readonly error: DOMException | null;
1554-
onabort: ((this: FileReader, ev: FileReaderProgressEvent) => any) | null;
1555-
onerror: ((this: FileReader, ev: FileReaderProgressEvent) => any) | null;
1556-
onload: ((this: FileReader, ev: FileReaderProgressEvent) => any) | null;
1557-
onloadend: ((this: FileReader, ev: FileReaderProgressEvent) => any) | null;
1558-
onloadstart: ((this: FileReader, ev: FileReaderProgressEvent) => any) | null;
1559-
onprogress: ((this: FileReader, ev: FileReaderProgressEvent) => any) | null;
1554+
onabort: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
1555+
onerror: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
1556+
onload: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
1557+
onloadend: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
1558+
onloadstart: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
1559+
onprogress: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
15601560
readonly readyState: number;
15611561
readonly result: string | ArrayBuffer | null;
15621562
abort(): void;
@@ -1581,10 +1581,6 @@ declare var FileReader: {
15811581
readonly LOADING: number;
15821582
};
15831583

1584-
interface FileReaderProgressEvent extends ProgressEvent {
1585-
readonly target: FileReader | null;
1586-
}
1587-
15881584
/** Allows to read File or Blob objects in a synchronous way. */
15891585
interface FileReaderSync {
15901586
readAsArrayBuffer(blob: Blob): ArrayBuffer;
@@ -2622,9 +2618,10 @@ declare var Permissions: {
26222618
};
26232619

26242620
/** Events measuring progress of an underlying process, like an HTTP request (for an XMLHttpRequest, or the loading of the underlying resource of an <img>, <audio>, <video>, <style> or <link>). */
2625-
interface ProgressEvent extends Event {
2621+
interface ProgressEvent<T extends EventTarget = EventTarget> extends Event {
26262622
readonly lengthComputable: boolean;
26272623
readonly loaded: number;
2624+
readonly target: T | null;
26282625
readonly total: number;
26292626
}
26302627

@@ -5556,13 +5553,13 @@ declare var XMLHttpRequest: {
55565553
};
55575554

55585555
interface XMLHttpRequestEventTargetEventMap {
5559-
"abort": ProgressEvent;
5560-
"error": ProgressEvent;
5561-
"load": ProgressEvent;
5562-
"loadend": ProgressEvent;
5563-
"loadstart": ProgressEvent;
5564-
"progress": ProgressEvent;
5565-
"timeout": ProgressEvent;
5556+
"abort": ProgressEvent<XMLHttpRequestEventTarget>;
5557+
"error": ProgressEvent<XMLHttpRequestEventTarget>;
5558+
"load": ProgressEvent<XMLHttpRequestEventTarget>;
5559+
"loadend": ProgressEvent<XMLHttpRequestEventTarget>;
5560+
"loadstart": ProgressEvent<XMLHttpRequestEventTarget>;
5561+
"progress": ProgressEvent<XMLHttpRequestEventTarget>;
5562+
"timeout": ProgressEvent<XMLHttpRequestEventTarget>;
55665563
}
55675564

55685565
interface XMLHttpRequestEventTarget extends EventTarget {

inputfiles/addedTypes.json

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -599,8 +599,14 @@
599599
}
600600
}
601601
},
602-
"NodeListOf<TNode extends Node>": {
603-
"name": "NodeListOf<TNode extends Node>",
602+
"NodeListOf": {
603+
"name": "NodeListOf",
604+
"type-parameters": [
605+
{
606+
"name": "TNode",
607+
"extends": "Node"
608+
}
609+
],
604610
"exposed": "Window",
605611
"extends": "NodeList",
606612
"properties": {
@@ -634,8 +640,14 @@
634640
]
635641
}
636642
},
637-
"HTMLCollectionOf<T extends Element>": {
638-
"name": "HTMLCollectionOf<T extends Element>",
643+
"HTMLCollectionOf": {
644+
"name": "HTMLCollectionOf",
645+
"type-parameters": [
646+
{
647+
"name": "T",
648+
"extends": "Element"
649+
}
650+
],
639651
"exposed": "Window",
640652
"extends": "HTMLCollection",
641653
"methods": {
@@ -2177,17 +2189,21 @@
21772189
}
21782190
}
21792191
},
2180-
"FileReaderProgressEvent": {
2181-
"name": "FileReaderProgressEvent",
2182-
"extends": "ProgressEvent",
2183-
"no-interface-object": 1,
2192+
"ProgressEvent": {
2193+
"type-parameters": [
2194+
{
2195+
"name": "T",
2196+
"extends": "EventTarget",
2197+
"default": "EventTarget"
2198+
}
2199+
],
21842200
"properties": {
21852201
"property": {
21862202
"target": {
21872203
"name": "target",
21882204
"read-only": 1,
21892205
"nullable": 1,
2190-
"type": "FileReader"
2206+
"override-type": "T"
21912207
}
21922208
}
21932209
}

inputfiles/comments.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@
177177
}
178178
}
179179
},
180-
"NodeListOf<TNode extends Node>": {
180+
"NodeListOf": {
181181
"methods": {
182182
"method": {
183183
"forEach": {

inputfiles/overridingTypes.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1875,27 +1875,27 @@
18751875
"event": [
18761876
{
18771877
"name": "loadstart",
1878-
"type": "FileReaderProgressEvent"
1878+
"type": "ProgressEvent"
18791879
},
18801880
{
18811881
"name": "progress",
1882-
"type": "FileReaderProgressEvent"
1882+
"type": "ProgressEvent"
18831883
},
18841884
{
18851885
"name": "load",
1886-
"type": "FileReaderProgressEvent"
1886+
"type": "ProgressEvent"
18871887
},
18881888
{
18891889
"name": "abort",
1890-
"type": "FileReaderProgressEvent"
1890+
"type": "ProgressEvent"
18911891
},
18921892
{
18931893
"name": "error",
1894-
"type": "FileReaderProgressEvent"
1894+
"type": "ProgressEvent"
18951895
},
18961896
{
18971897
"name": "loadend",
1898-
"type": "FileReaderProgressEvent"
1898+
"type": "ProgressEvent"
18991899
}
19001900
]
19011901
}

0 commit comments

Comments
 (0)