Skip to content

Commit

Permalink
Override MessageEventTarget's events' this-parameter type (#1882)
Browse files Browse the repository at this point in the history
* Override MessageEventTarget's events' this type

* do not override this on globals

* Default to this: this and add overrides to exclude

There are only 3 right now.

* Switch to this:T for MessagePort and immediate subtypes

This allows more variable in non-immediate subtypes
  • Loading branch information
sandersn authored Jan 23, 2025
1 parent 394c066 commit 61e18df
Show file tree
Hide file tree
Showing 13 changed files with 78 additions and 94 deletions.
12 changes: 6 additions & 6 deletions baselines/audioworklet.generated.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -682,14 +682,14 @@ interface MessageEventTargetEventMap {
"messageerror": MessageEvent;
}

interface MessageEventTarget {
interface MessageEventTarget<T> {
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */
onmessage: ((this: MessageEventTarget, ev: MessageEvent) => any) | null;
onmessage: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/messageerror_event) */
onmessageerror: ((this: MessageEventTarget, ev: MessageEvent) => any) | null;
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
onmessageerror: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

Expand All @@ -703,7 +703,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap {
*
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort)
*/
interface MessagePort extends EventTarget, MessageEventTarget {
interface MessagePort extends EventTarget, MessageEventTarget<MessagePort> {
/**
* Disconnects the port, so that it is no longer active.
*
Expand Down
16 changes: 7 additions & 9 deletions baselines/dom.generated.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16389,14 +16389,14 @@ interface MessageEventTargetEventMap {
"messageerror": MessageEvent;
}

interface MessageEventTarget {
interface MessageEventTarget<T> {
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */
onmessage: ((this: MessageEventTarget, ev: MessageEvent) => any) | null;
onmessage: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/messageerror_event) */
onmessageerror: ((this: MessageEventTarget, ev: MessageEvent) => any) | null;
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
onmessageerror: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

Expand All @@ -16410,7 +16410,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap {
*
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort)
*/
interface MessagePort extends EventTarget, MessageEventTarget {
interface MessagePort extends EventTarget, MessageEventTarget<MessagePort> {
/**
* Disconnects the port, so that it is no longer active.
*
Expand Down Expand Up @@ -27259,16 +27259,14 @@ interface WindowSessionStorage {
}

interface WorkerEventMap extends AbstractWorkerEventMap, MessageEventTargetEventMap {
"message": MessageEvent;
"messageerror": MessageEvent;
}

/**
* This Web Workers API interface represents a background task that can be easily created and can send messages back to its creator. Creating a worker is as simple as calling the Worker() constructor and specifying a script to be run in the worker thread.
*
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Worker)
*/
interface Worker extends EventTarget, AbstractWorker, MessageEventTarget {
interface Worker extends EventTarget, AbstractWorker, MessageEventTarget<Worker> {
/**
* Clones message and transmits it to worker's global environment. transfer can be passed as a list of objects that are to be transferred rather than cloned.
*
Expand Down
12 changes: 6 additions & 6 deletions baselines/serviceworker.generated.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3759,14 +3759,14 @@ interface MessageEventTargetEventMap {
"messageerror": MessageEvent;
}

interface MessageEventTarget {
interface MessageEventTarget<T> {
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */
onmessage: ((this: MessageEventTarget, ev: MessageEvent) => any) | null;
onmessage: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/messageerror_event) */
onmessageerror: ((this: MessageEventTarget, ev: MessageEvent) => any) | null;
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
onmessageerror: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

Expand All @@ -3780,7 +3780,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap {
*
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort)
*/
interface MessagePort extends EventTarget, MessageEventTarget {
interface MessagePort extends EventTarget, MessageEventTarget<MessagePort> {
/**
* Disconnects the port, so that it is no longer active.
*
Expand Down
16 changes: 7 additions & 9 deletions baselines/sharedworker.generated.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3648,14 +3648,14 @@ interface MessageEventTargetEventMap {
"messageerror": MessageEvent;
}

interface MessageEventTarget {
interface MessageEventTarget<T> {
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */
onmessage: ((this: MessageEventTarget, ev: MessageEvent) => any) | null;
onmessage: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/messageerror_event) */
onmessageerror: ((this: MessageEventTarget, ev: MessageEvent) => any) | null;
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
onmessageerror: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

Expand All @@ -3669,7 +3669,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap {
*
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort)
*/
interface MessagePort extends EventTarget, MessageEventTarget {
interface MessagePort extends EventTarget, MessageEventTarget<MessagePort> {
/**
* Disconnects the port, so that it is no longer active.
*
Expand Down Expand Up @@ -7841,16 +7841,14 @@ interface WindowOrWorkerGlobalScope {
}

interface WorkerEventMap extends AbstractWorkerEventMap, MessageEventTargetEventMap {
"message": MessageEvent;
"messageerror": MessageEvent;
}

/**
* This Web Workers API interface represents a background task that can be easily created and can send messages back to its creator. Creating a worker is as simple as calling the Worker() constructor and specifying a script to be run in the worker thread.
*
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Worker)
*/
interface Worker extends EventTarget, AbstractWorker, MessageEventTarget {
interface Worker extends EventTarget, AbstractWorker, MessageEventTarget<Worker> {
/**
* Clones message and transmits it to worker's global environment. transfer can be passed as a list of objects that are to be transferred rather than cloned.
*
Expand Down
12 changes: 6 additions & 6 deletions baselines/ts5.5/audioworklet.generated.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -682,14 +682,14 @@ interface MessageEventTargetEventMap {
"messageerror": MessageEvent;
}

interface MessageEventTarget {
interface MessageEventTarget<T> {
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */
onmessage: ((this: MessageEventTarget, ev: MessageEvent) => any) | null;
onmessage: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/messageerror_event) */
onmessageerror: ((this: MessageEventTarget, ev: MessageEvent) => any) | null;
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
onmessageerror: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

Expand All @@ -703,7 +703,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap {
*
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort)
*/
interface MessagePort extends EventTarget, MessageEventTarget {
interface MessagePort extends EventTarget, MessageEventTarget<MessagePort> {
/**
* Disconnects the port, so that it is no longer active.
*
Expand Down
16 changes: 7 additions & 9 deletions baselines/ts5.5/dom.generated.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16369,14 +16369,14 @@ interface MessageEventTargetEventMap {
"messageerror": MessageEvent;
}

interface MessageEventTarget {
interface MessageEventTarget<T> {
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */
onmessage: ((this: MessageEventTarget, ev: MessageEvent) => any) | null;
onmessage: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/messageerror_event) */
onmessageerror: ((this: MessageEventTarget, ev: MessageEvent) => any) | null;
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
onmessageerror: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

Expand All @@ -16390,7 +16390,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap {
*
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort)
*/
interface MessagePort extends EventTarget, MessageEventTarget {
interface MessagePort extends EventTarget, MessageEventTarget<MessagePort> {
/**
* Disconnects the port, so that it is no longer active.
*
Expand Down Expand Up @@ -27237,16 +27237,14 @@ interface WindowSessionStorage {
}

interface WorkerEventMap extends AbstractWorkerEventMap, MessageEventTargetEventMap {
"message": MessageEvent;
"messageerror": MessageEvent;
}

/**
* This Web Workers API interface represents a background task that can be easily created and can send messages back to its creator. Creating a worker is as simple as calling the Worker() constructor and specifying a script to be run in the worker thread.
*
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Worker)
*/
interface Worker extends EventTarget, AbstractWorker, MessageEventTarget {
interface Worker extends EventTarget, AbstractWorker, MessageEventTarget<Worker> {
/**
* Clones message and transmits it to worker's global environment. transfer can be passed as a list of objects that are to be transferred rather than cloned.
*
Expand Down
12 changes: 6 additions & 6 deletions baselines/ts5.5/serviceworker.generated.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3759,14 +3759,14 @@ interface MessageEventTargetEventMap {
"messageerror": MessageEvent;
}

interface MessageEventTarget {
interface MessageEventTarget<T> {
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */
onmessage: ((this: MessageEventTarget, ev: MessageEvent) => any) | null;
onmessage: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/messageerror_event) */
onmessageerror: ((this: MessageEventTarget, ev: MessageEvent) => any) | null;
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
onmessageerror: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

Expand All @@ -3780,7 +3780,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap {
*
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort)
*/
interface MessagePort extends EventTarget, MessageEventTarget {
interface MessagePort extends EventTarget, MessageEventTarget<MessagePort> {
/**
* Disconnects the port, so that it is no longer active.
*
Expand Down
Loading

0 comments on commit 61e18df

Please sign in to comment.