Skip to content

Commit 12fcb29

Browse files
committed
Parameterize ProgressEvent
1 parent 9563cbc commit 12fcb29

File tree

6 files changed

+60
-33
lines changed

6 files changed

+60
-33
lines changed

baselines/dom.generated.d.ts

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5368,23 +5368,23 @@ declare var FileList: {
53685368
};
53695369

53705370
interface FileReaderEventMap {
5371-
"abort": ProgressEvent;
5372-
"error": ProgressEvent;
5373-
"load": ProgressEvent;
5374-
"loadend": ProgressEvent;
5375-
"loadstart": ProgressEvent;
5376-
"progress": ProgressEvent;
5371+
"abort": ProgressEvent<FileReader>;
5372+
"error": ProgressEvent<FileReader>;
5373+
"load": ProgressEvent<FileReader>;
5374+
"loadend": ProgressEvent<FileReader>;
5375+
"loadstart": ProgressEvent<FileReader>;
5376+
"progress": ProgressEvent<FileReader>;
53775377
}
53785378

53795379
/** 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. */
53805380
interface FileReader extends EventTarget {
53815381
readonly error: DOMException | null;
5382-
onabort: ((this: FileReader, ev: ProgressEvent) => any) | null;
5383-
onerror: ((this: FileReader, ev: ProgressEvent) => any) | null;
5384-
onload: ((this: FileReader, ev: ProgressEvent) => any) | null;
5385-
onloadend: ((this: FileReader, ev: ProgressEvent) => any) | null;
5386-
onloadstart: ((this: FileReader, ev: ProgressEvent) => any) | null;
5387-
onprogress: ((this: FileReader, ev: ProgressEvent) => any) | null;
5382+
onabort: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5383+
onerror: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5384+
onload: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5385+
onloadend: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5386+
onloadstart: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
5387+
onprogress: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
53885388
readonly readyState: number;
53895389
readonly result: string | ArrayBuffer | null;
53905390
abort(): void;
@@ -11759,9 +11759,10 @@ declare var ProcessingInstruction: {
1175911759
};
1176011760

1176111761
/** 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>). */
11762-
interface ProgressEvent extends Event {
11762+
interface ProgressEvent<T extends EventTarget = EventTarget> extends Event {
1176311763
readonly lengthComputable: boolean;
1176411764
readonly loaded: number;
11765+
readonly target: T | null;
1176511766
readonly total: number;
1176611767
}
1176711768

baselines/webworker.generated.d.ts

Lines changed: 14 additions & 13 deletions
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": ProgressEvent<FileReader>;
1529+
"error": ProgressEvent<FileReader>;
1530+
"load": ProgressEvent<FileReader>;
1531+
"loadend": ProgressEvent<FileReader>;
1532+
"loadstart": ProgressEvent<FileReader>;
1533+
"progress": ProgressEvent<FileReader>;
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: ProgressEvent<FileReader>) => any) | null;
1540+
onerror: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
1541+
onload: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
1542+
onloadend: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
1543+
onloadstart: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
1544+
onprogress: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
15451545
readonly readyState: number;
15461546
readonly result: string | ArrayBuffer | null;
15471547
abort(): void;
@@ -2583,9 +2583,10 @@ declare var Permissions: {
25832583
};
25842584

25852585
/** 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>). */
2586-
interface ProgressEvent extends Event {
2586+
interface ProgressEvent<T extends EventTarget = EventTarget> extends Event {
25872587
readonly lengthComputable: boolean;
25882588
readonly loaded: number;
2589+
readonly target: T | null;
25892590
readonly total: number;
25902591
}
25912592

inputfiles/addedTypes.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2174,6 +2174,18 @@
21742174
}
21752175
}
21762176
}
2177+
},
2178+
"ProgressEvent": {
2179+
"generic": "T extends EventTarget = EventTarget",
2180+
"properties": {
2181+
"property": {
2182+
"target": {
2183+
"name": "target",
2184+
"read-only": 1,
2185+
"override-type": "T | null"
2186+
}
2187+
}
2188+
}
21772189
}
21782190
}
21792191
},

inputfiles/overridingTypes.json

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1862,27 +1862,33 @@
18621862
"event": [
18631863
{
18641864
"name": "loadstart",
1865-
"type": "ProgressEvent"
1865+
"type": "ProgressEvent",
1866+
"generic": "FileReader"
18661867
},
18671868
{
18681869
"name": "progress",
1869-
"type": "ProgressEvent"
1870+
"type": "ProgressEvent",
1871+
"generic": "FileReader"
18701872
},
18711873
{
18721874
"name": "load",
1873-
"type": "ProgressEvent"
1875+
"type": "ProgressEvent",
1876+
"generic": "FileReader"
18741877
},
18751878
{
18761879
"name": "abort",
1877-
"type": "ProgressEvent"
1880+
"type": "ProgressEvent",
1881+
"generic": "FileReader"
18781882
},
18791883
{
18801884
"name": "error",
1881-
"type": "ProgressEvent"
1885+
"type": "ProgressEvent",
1886+
"generic": "FileReader"
18821887
},
18831888
{
18841889
"name": "loadend",
1885-
"type": "ProgressEvent"
1890+
"type": "ProgressEvent",
1891+
"generic": "FileReader"
18861892
}
18871893
]
18881894
}

src/emitter.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,8 @@ export function emitWebIdl(webidl: Browser.WebIdl, flavor: Flavor) {
248248
if (i.events) {
249249
const event = i.events.event.find(e => e.name === eName);
250250
if (event && event.type) {
251-
return event.type;
251+
const generic = event.generic ? `<${event.generic}>` : "";
252+
return event.type + generic;
252253
}
253254
}
254255
if (i["attributeless-events"]) {
@@ -830,6 +831,10 @@ export function emitWebIdl(webidl: Browser.WebIdl, flavor: Flavor) {
830831

831832
printer.print(`interface ${processInterfaceType(i, processedIName)}`);
832833

834+
if (i.generic) {
835+
printer.print(`<${i.generic}>`)
836+
}
837+
833838
const finalExtends = distinct([i.extends || "Object"].concat(i.implements || [])
834839
.filter(i => i !== "Object")
835840
.map(processIName));

src/types.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ export interface Property extends Typed {
6666
export interface Event {
6767
name: string;
6868
type: string;
69+
generic?: string;
6970
dispatch?: string;
7071
"skips-window"?: string;
7172
bubbles?: 1;
@@ -150,6 +151,7 @@ export interface TypeParameter {
150151

151152
export interface Interface {
152153
name: string;
154+
generic?: string;
153155
extends: string;
154156
comment?: string;
155157
constants?: {

0 commit comments

Comments
 (0)