From 1eaeddca11e71c9dc53e8b1f57b7d7c56562015b Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Fri, 31 Jan 2025 09:16:55 -0800 Subject: [PATCH] Override MessageEventTarget's this parameters This is needed after all. I incorrectly reverted it in my previous PR. --- baselines/audioworklet.generated.d.ts | 8 ++++---- baselines/dom.generated.d.ts | 8 ++++---- baselines/serviceworker.generated.d.ts | 8 ++++---- baselines/sharedworker.generated.d.ts | 8 ++++---- baselines/ts5.5/audioworklet.generated.d.ts | 8 ++++---- baselines/ts5.5/dom.generated.d.ts | 8 ++++---- baselines/ts5.5/serviceworker.generated.d.ts | 8 ++++---- baselines/ts5.5/sharedworker.generated.d.ts | 8 ++++---- baselines/ts5.5/webworker.generated.d.ts | 8 ++++---- baselines/webworker.generated.d.ts | 8 ++++---- inputfiles/overridingTypes.jsonc | 1 + src/build/emitter.ts | 1 + src/build/types.d.ts | 1 + 13 files changed, 43 insertions(+), 40 deletions(-) diff --git a/baselines/audioworklet.generated.d.ts b/baselines/audioworklet.generated.d.ts index 4753a3267..31dd975a5 100644 --- a/baselines/audioworklet.generated.d.ts +++ b/baselines/audioworklet.generated.d.ts @@ -684,12 +684,12 @@ interface MessageEventTargetEventMap { interface MessageEventTarget { /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */ - onmessage: ((this: MessageEventTarget, ev: MessageEvent) => any) | null; + onmessage: ((this: 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(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; + onmessageerror: ((this: T, ev: MessageEvent) => any) | null; + addEventListener(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; - removeEventListener(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void; removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; } diff --git a/baselines/dom.generated.d.ts b/baselines/dom.generated.d.ts index 18729c1d6..7b6d0275c 100644 --- a/baselines/dom.generated.d.ts +++ b/baselines/dom.generated.d.ts @@ -16412,12 +16412,12 @@ interface MessageEventTargetEventMap { interface MessageEventTarget { /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */ - onmessage: ((this: MessageEventTarget, ev: MessageEvent) => any) | null; + onmessage: ((this: 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(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; + onmessageerror: ((this: T, ev: MessageEvent) => any) | null; + addEventListener(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; - removeEventListener(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void; removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; } diff --git a/baselines/serviceworker.generated.d.ts b/baselines/serviceworker.generated.d.ts index f49cece56..f3abdab06 100644 --- a/baselines/serviceworker.generated.d.ts +++ b/baselines/serviceworker.generated.d.ts @@ -3763,12 +3763,12 @@ interface MessageEventTargetEventMap { interface MessageEventTarget { /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */ - onmessage: ((this: MessageEventTarget, ev: MessageEvent) => any) | null; + onmessage: ((this: 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(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; + onmessageerror: ((this: T, ev: MessageEvent) => any) | null; + addEventListener(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; - removeEventListener(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void; removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; } diff --git a/baselines/sharedworker.generated.d.ts b/baselines/sharedworker.generated.d.ts index 87eb1ac0a..bbf7dd466 100644 --- a/baselines/sharedworker.generated.d.ts +++ b/baselines/sharedworker.generated.d.ts @@ -3652,12 +3652,12 @@ interface MessageEventTargetEventMap { interface MessageEventTarget { /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */ - onmessage: ((this: MessageEventTarget, ev: MessageEvent) => any) | null; + onmessage: ((this: 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(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; + onmessageerror: ((this: T, ev: MessageEvent) => any) | null; + addEventListener(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; - removeEventListener(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void; removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; } diff --git a/baselines/ts5.5/audioworklet.generated.d.ts b/baselines/ts5.5/audioworklet.generated.d.ts index 4753a3267..31dd975a5 100644 --- a/baselines/ts5.5/audioworklet.generated.d.ts +++ b/baselines/ts5.5/audioworklet.generated.d.ts @@ -684,12 +684,12 @@ interface MessageEventTargetEventMap { interface MessageEventTarget { /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */ - onmessage: ((this: MessageEventTarget, ev: MessageEvent) => any) | null; + onmessage: ((this: 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(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; + onmessageerror: ((this: T, ev: MessageEvent) => any) | null; + addEventListener(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; - removeEventListener(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void; removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; } diff --git a/baselines/ts5.5/dom.generated.d.ts b/baselines/ts5.5/dom.generated.d.ts index 52a501f3c..2e8111ea2 100644 --- a/baselines/ts5.5/dom.generated.d.ts +++ b/baselines/ts5.5/dom.generated.d.ts @@ -16392,12 +16392,12 @@ interface MessageEventTargetEventMap { interface MessageEventTarget { /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */ - onmessage: ((this: MessageEventTarget, ev: MessageEvent) => any) | null; + onmessage: ((this: 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(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; + onmessageerror: ((this: T, ev: MessageEvent) => any) | null; + addEventListener(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; - removeEventListener(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void; removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; } diff --git a/baselines/ts5.5/serviceworker.generated.d.ts b/baselines/ts5.5/serviceworker.generated.d.ts index f49cece56..f3abdab06 100644 --- a/baselines/ts5.5/serviceworker.generated.d.ts +++ b/baselines/ts5.5/serviceworker.generated.d.ts @@ -3763,12 +3763,12 @@ interface MessageEventTargetEventMap { interface MessageEventTarget { /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */ - onmessage: ((this: MessageEventTarget, ev: MessageEvent) => any) | null; + onmessage: ((this: 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(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; + onmessageerror: ((this: T, ev: MessageEvent) => any) | null; + addEventListener(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; - removeEventListener(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void; removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; } diff --git a/baselines/ts5.5/sharedworker.generated.d.ts b/baselines/ts5.5/sharedworker.generated.d.ts index 87eb1ac0a..bbf7dd466 100644 --- a/baselines/ts5.5/sharedworker.generated.d.ts +++ b/baselines/ts5.5/sharedworker.generated.d.ts @@ -3652,12 +3652,12 @@ interface MessageEventTargetEventMap { interface MessageEventTarget { /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */ - onmessage: ((this: MessageEventTarget, ev: MessageEvent) => any) | null; + onmessage: ((this: 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(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; + onmessageerror: ((this: T, ev: MessageEvent) => any) | null; + addEventListener(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; - removeEventListener(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void; removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; } diff --git a/baselines/ts5.5/webworker.generated.d.ts b/baselines/ts5.5/webworker.generated.d.ts index 231355afe..57907fcb5 100644 --- a/baselines/ts5.5/webworker.generated.d.ts +++ b/baselines/ts5.5/webworker.generated.d.ts @@ -4337,12 +4337,12 @@ interface MessageEventTargetEventMap { interface MessageEventTarget { /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */ - onmessage: ((this: MessageEventTarget, ev: MessageEvent) => any) | null; + onmessage: ((this: 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(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; + onmessageerror: ((this: T, ev: MessageEvent) => any) | null; + addEventListener(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; - removeEventListener(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void; removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; } diff --git a/baselines/webworker.generated.d.ts b/baselines/webworker.generated.d.ts index 231355afe..57907fcb5 100644 --- a/baselines/webworker.generated.d.ts +++ b/baselines/webworker.generated.d.ts @@ -4337,12 +4337,12 @@ interface MessageEventTargetEventMap { interface MessageEventTarget { /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */ - onmessage: ((this: MessageEventTarget, ev: MessageEvent) => any) | null; + onmessage: ((this: 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(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; + onmessageerror: ((this: T, ev: MessageEvent) => any) | null; + addEventListener(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; - removeEventListener(type: K, listener: (this: MessageEventTarget, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void; removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; } diff --git a/inputfiles/overridingTypes.jsonc b/inputfiles/overridingTypes.jsonc index 859ce6150..b2ddbd18f 100644 --- a/inputfiles/overridingTypes.jsonc +++ b/inputfiles/overridingTypes.jsonc @@ -7,6 +7,7 @@ "name": "T" } ], + "overrideThis": "T", "events": { "event": [ { diff --git a/src/build/emitter.ts b/src/build/emitter.ts index ec6651d6f..af3595e91 100644 --- a/src/build/emitter.ts +++ b/src/build/emitter.ts @@ -465,6 +465,7 @@ export function emitWebIdl( function nameWithForwardedTypes(i: Browser.Interface) { const typeParameters = i.typeParameters; + if (i.overrideThis) return i.overrideThis; if (!typeParameters) return i.name; if (!typeParameters.length) return i.name; diff --git a/src/build/types.d.ts b/src/build/types.d.ts index b3c68a68f..dc97aafe8 100644 --- a/src/build/types.d.ts +++ b/src/build/types.d.ts @@ -181,6 +181,7 @@ export interface Interface { overrideExposed?: string; tags?: string; "implicit-this"?: 1; + overrideThis?: string; noInterfaceObject?: boolean; global?: string; typeParameters?: TypeParameter[];