Skip to content

Test generic DOM events again #57040

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
199 changes: 140 additions & 59 deletions src/lib/dom.generated.d.ts

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions src/lib/dom.iterable.generated.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,7 @@ interface SubtleCrypto {
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/deriveKey) */
deriveKey(algorithm: AlgorithmIdentifier | EcdhKeyDeriveParams | HkdfParams | Pbkdf2Params, baseKey: CryptoKey, derivedKeyType: AlgorithmIdentifier | AesDerivedKeyParams | HmacImportParams | HkdfParams | Pbkdf2Params, extractable: boolean, keyUsages: Iterable<KeyUsage>): Promise<CryptoKey>;
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/generateKey) */
generateKey(algorithm: "Ed25519", extractable: boolean, keyUsages: ReadonlyArray<"sign" | "verify">): Promise<CryptoKeyPair>;
generateKey(algorithm: RsaHashedKeyGenParams | EcKeyGenParams, extractable: boolean, keyUsages: ReadonlyArray<KeyUsage>): Promise<CryptoKeyPair>;
generateKey(algorithm: AesKeyGenParams | HmacKeyGenParams | Pbkdf2Params, extractable: boolean, keyUsages: ReadonlyArray<KeyUsage>): Promise<CryptoKey>;
generateKey(algorithm: AlgorithmIdentifier, extractable: boolean, keyUsages: Iterable<KeyUsage>): Promise<CryptoKeyPair | CryptoKey>;
Expand Down
164 changes: 123 additions & 41 deletions src/lib/webworker.generated.d.ts

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions src/lib/webworker.iterable.generated.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ interface SubtleCrypto {
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/deriveKey) */
deriveKey(algorithm: AlgorithmIdentifier | EcdhKeyDeriveParams | HkdfParams | Pbkdf2Params, baseKey: CryptoKey, derivedKeyType: AlgorithmIdentifier | AesDerivedKeyParams | HmacImportParams | HkdfParams | Pbkdf2Params, extractable: boolean, keyUsages: Iterable<KeyUsage>): Promise<CryptoKey>;
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/generateKey) */
generateKey(algorithm: "Ed25519", extractable: boolean, keyUsages: ReadonlyArray<"sign" | "verify">): Promise<CryptoKeyPair>;
generateKey(algorithm: RsaHashedKeyGenParams | EcKeyGenParams, extractable: boolean, keyUsages: ReadonlyArray<KeyUsage>): Promise<CryptoKeyPair>;
generateKey(algorithm: AesKeyGenParams | HmacKeyGenParams | Pbkdf2Params, extractable: boolean, keyUsages: ReadonlyArray<KeyUsage>): Promise<CryptoKey>;
generateKey(algorithm: AlgorithmIdentifier, extractable: boolean, keyUsages: Iterable<KeyUsage>): Promise<CryptoKeyPair | CryptoKey>;
Expand Down
4 changes: 2 additions & 2 deletions tests/baselines/reference/correlatedUnions.js
Original file line number Diff line number Diff line change
Expand Up @@ -529,12 +529,12 @@ declare function createEventListener<K extends keyof DocumentEventMap>({ name, o
declare const clickEvent: {
readonly name: "click";
readonly once?: boolean | undefined;
readonly callback: (ev: MouseEvent) => void;
readonly callback: (ev: MouseEvent<EventTarget>) => void;
};
declare const scrollEvent: {
readonly name: "scroll";
readonly once?: boolean | undefined;
readonly callback: (ev: Event) => void;
readonly callback: (ev: Event<EventTarget>) => void;
};
declare function ff1(): void;
type ArgMap = {
Expand Down
60 changes: 30 additions & 30 deletions tests/baselines/reference/correlatedUnions.types
Original file line number Diff line number Diff line change
Expand Up @@ -354,9 +354,9 @@ function processEvents<K extends keyof DocumentEventMap>(events: Ev<K>[]) {

document.addEventListener(event.name, (ev) => event.callback(ev), { once: event.once });
>document.addEventListener(event.name, (ev) => event.callback(ev), { once: event.once }) : void
>document.addEventListener : { <K_1 extends keyof DocumentEventMap>(type: K_1, listener: (this: Document, ev: DocumentEventMap[K_1]) => any, options?: boolean | AddEventListenerOptions | undefined): void; (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined): void; }
>document.addEventListener : { <K_1 extends keyof DocumentEventMap>(type: K_1, listener: (this: Document, ev: DocumentEventMap[K_1]) => any, options?: boolean | AddEventListenerOptions | undefined): void; (type: string, listener: EventListenerOrEventListenerObject<EventTarget>, options?: boolean | AddEventListenerOptions | undefined): void; }
>document : Document
>addEventListener : { <K_1 extends keyof DocumentEventMap>(type: K_1, listener: (this: Document, ev: DocumentEventMap[K_1]) => any, options?: boolean | AddEventListenerOptions | undefined): void; (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined): void; }
>addEventListener : { <K_1 extends keyof DocumentEventMap>(type: K_1, listener: (this: Document, ev: DocumentEventMap[K_1]) => any, options?: boolean | AddEventListenerOptions | undefined): void; (type: string, listener: EventListenerOrEventListenerObject<EventTarget>, options?: boolean | AddEventListenerOptions | undefined): void; }
>event.name : K
>event : Ev<K>
>name : K
Expand Down Expand Up @@ -390,86 +390,86 @@ function createEventListener<K extends keyof DocumentEventMap>({ name, once = fa
}

const clickEvent = createEventListener({
>clickEvent : { readonly name: "click"; readonly once?: boolean | undefined; readonly callback: (ev: MouseEvent) => void; }
>createEventListener({ name: "click", callback: ev => console.log(ev),}) : { readonly name: "click"; readonly once?: boolean | undefined; readonly callback: (ev: MouseEvent) => void; }
>clickEvent : { readonly name: "click"; readonly once?: boolean | undefined; readonly callback: (ev: MouseEvent<EventTarget>) => void; }
>createEventListener({ name: "click", callback: ev => console.log(ev),}) : { readonly name: "click"; readonly once?: boolean | undefined; readonly callback: (ev: MouseEvent<EventTarget>) => void; }
>createEventListener : <K extends keyof DocumentEventMap>({ name, once, callback }: Ev<K>) => Ev<K>
>{ name: "click", callback: ev => console.log(ev),} : { name: "click"; callback: (ev: MouseEvent) => void; }
>{ name: "click", callback: ev => console.log(ev),} : { name: "click"; callback: (ev: MouseEvent<EventTarget>) => void; }

name: "click",
>name : "click"
>"click" : "click"

callback: ev => console.log(ev),
>callback : (ev: MouseEvent) => void
>ev => console.log(ev) : (ev: MouseEvent) => void
>ev : MouseEvent
>callback : (ev: MouseEvent<EventTarget>) => void
>ev => console.log(ev) : (ev: MouseEvent<EventTarget>) => void
>ev : MouseEvent<EventTarget>
>console.log(ev) : void
>console.log : (...data: any[]) => void
>console : Console
>log : (...data: any[]) => void
>ev : MouseEvent
>ev : MouseEvent<EventTarget>

});

const scrollEvent = createEventListener({
>scrollEvent : { readonly name: "scroll"; readonly once?: boolean | undefined; readonly callback: (ev: Event) => void; }
>createEventListener({ name: "scroll", callback: ev => console.log(ev),}) : { readonly name: "scroll"; readonly once?: boolean | undefined; readonly callback: (ev: Event) => void; }
>scrollEvent : { readonly name: "scroll"; readonly once?: boolean | undefined; readonly callback: (ev: Event<EventTarget>) => void; }
>createEventListener({ name: "scroll", callback: ev => console.log(ev),}) : { readonly name: "scroll"; readonly once?: boolean | undefined; readonly callback: (ev: Event<EventTarget>) => void; }
>createEventListener : <K extends keyof DocumentEventMap>({ name, once, callback }: Ev<K>) => Ev<K>
>{ name: "scroll", callback: ev => console.log(ev),} : { name: "scroll"; callback: (ev: Event) => void; }
>{ name: "scroll", callback: ev => console.log(ev),} : { name: "scroll"; callback: (ev: Event<EventTarget>) => void; }

name: "scroll",
>name : "scroll"
>"scroll" : "scroll"

callback: ev => console.log(ev),
>callback : (ev: Event) => void
>ev => console.log(ev) : (ev: Event) => void
>ev : Event
>callback : (ev: Event<EventTarget>) => void
>ev => console.log(ev) : (ev: Event<EventTarget>) => void
>ev : Event<EventTarget>
>console.log(ev) : void
>console.log : (...data: any[]) => void
>console : Console
>log : (...data: any[]) => void
>ev : Event
>ev : Event<EventTarget>

});

processEvents([clickEvent, scrollEvent]);
>processEvents([clickEvent, scrollEvent]) : void
>processEvents : <K extends keyof DocumentEventMap>(events: Ev<K>[]) => void
>[clickEvent, scrollEvent] : ({ readonly name: "click"; readonly once?: boolean | undefined; readonly callback: (ev: MouseEvent) => void; } | { readonly name: "scroll"; readonly once?: boolean | undefined; readonly callback: (ev: Event) => void; })[]
>clickEvent : { readonly name: "click"; readonly once?: boolean | undefined; readonly callback: (ev: MouseEvent) => void; }
>scrollEvent : { readonly name: "scroll"; readonly once?: boolean | undefined; readonly callback: (ev: Event) => void; }
>[clickEvent, scrollEvent] : ({ readonly name: "click"; readonly once?: boolean | undefined; readonly callback: (ev: MouseEvent<EventTarget>) => void; } | { readonly name: "scroll"; readonly once?: boolean | undefined; readonly callback: (ev: Event<EventTarget>) => void; })[]
>clickEvent : { readonly name: "click"; readonly once?: boolean | undefined; readonly callback: (ev: MouseEvent<EventTarget>) => void; }
>scrollEvent : { readonly name: "scroll"; readonly once?: boolean | undefined; readonly callback: (ev: Event<EventTarget>) => void; }

processEvents([
>processEvents([ { name: "click", callback: ev => console.log(ev) }, { name: "scroll", callback: ev => console.log(ev) },]) : void
>processEvents : <K extends keyof DocumentEventMap>(events: Ev<K>[]) => void
>[ { name: "click", callback: ev => console.log(ev) }, { name: "scroll", callback: ev => console.log(ev) },] : ({ name: "click"; callback: (ev: MouseEvent) => void; } | { name: "scroll"; callback: (ev: Event) => void; })[]
>[ { name: "click", callback: ev => console.log(ev) }, { name: "scroll", callback: ev => console.log(ev) },] : ({ name: "click"; callback: (ev: MouseEvent<EventTarget>) => void; } | { name: "scroll"; callback: (ev: Event<EventTarget>) => void; })[]

{ name: "click", callback: ev => console.log(ev) },
>{ name: "click", callback: ev => console.log(ev) } : { name: "click"; callback: (ev: MouseEvent) => void; }
>{ name: "click", callback: ev => console.log(ev) } : { name: "click"; callback: (ev: MouseEvent<EventTarget>) => void; }
>name : "click"
>"click" : "click"
>callback : (ev: MouseEvent) => void
>ev => console.log(ev) : (ev: MouseEvent) => void
>ev : MouseEvent
>callback : (ev: MouseEvent<EventTarget>) => void
>ev => console.log(ev) : (ev: MouseEvent<EventTarget>) => void
>ev : MouseEvent<EventTarget>
>console.log(ev) : void
>console.log : (...data: any[]) => void
>console : Console
>log : (...data: any[]) => void
>ev : MouseEvent
>ev : MouseEvent<EventTarget>

{ name: "scroll", callback: ev => console.log(ev) },
>{ name: "scroll", callback: ev => console.log(ev) } : { name: "scroll"; callback: (ev: Event) => void; }
>{ name: "scroll", callback: ev => console.log(ev) } : { name: "scroll"; callback: (ev: Event<EventTarget>) => void; }
>name : "scroll"
>"scroll" : "scroll"
>callback : (ev: Event) => void
>ev => console.log(ev) : (ev: Event) => void
>ev : Event
>callback : (ev: Event<EventTarget>) => void
>ev => console.log(ev) : (ev: Event<EventTarget>) => void
>ev : Event<EventTarget>
>console.log(ev) : void
>console.log : (...data: any[]) => void
>console : Console
>log : (...data: any[]) => void
>ev : Event
>ev : Event<EventTarget>

]);

Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -442,15 +442,15 @@ function negativeIntersectionTest() {
>window : Window & typeof globalThis

window.ontouchstart
>window.ontouchstart : ((this: GlobalEventHandlers, ev: TouchEvent) => any) & ((this: Window, ev: TouchEvent) => any)
>window.ontouchstart : ((this: GlobalEventHandlers, ev: TouchEvent<EventTarget>) => any) & ((this: Window, ev: TouchEvent<EventTarget>) => any)
>window : Window & typeof globalThis
>ontouchstart : ((this: GlobalEventHandlers, ev: TouchEvent) => any) & ((this: Window, ev: TouchEvent) => any)
>ontouchstart : ((this: GlobalEventHandlers, ev: TouchEvent<EventTarget>) => any) & ((this: Window, ev: TouchEvent<EventTarget>) => any)

} else {
window.ontouchstart
>window.ontouchstart : ((this: GlobalEventHandlers, ev: TouchEvent) => any) & ((this: Window, ev: TouchEvent) => any)
>window.ontouchstart : ((this: GlobalEventHandlers, ev: TouchEvent<EventTarget>) => any) & ((this: Window, ev: TouchEvent<EventTarget>) => any)
>window : Window & typeof globalThis
>ontouchstart : ((this: GlobalEventHandlers, ev: TouchEvent) => any) & ((this: Window, ev: TouchEvent) => any)
>ontouchstart : ((this: GlobalEventHandlers, ev: TouchEvent<EventTarget>) => any) & ((this: Window, ev: TouchEvent<EventTarget>) => any)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -442,15 +442,15 @@ function negativeIntersectionTest() {
>window : Window & typeof globalThis

window.ontouchstart
>window.ontouchstart : (((this: GlobalEventHandlers, ev: TouchEvent) => any) & ((this: Window, ev: TouchEvent) => any)) | null | undefined
>window.ontouchstart : (((this: GlobalEventHandlers, ev: TouchEvent<EventTarget>) => any) & ((this: Window, ev: TouchEvent<EventTarget>) => any)) | null | undefined
>window : Window & typeof globalThis
>ontouchstart : (((this: GlobalEventHandlers, ev: TouchEvent) => any) & ((this: Window, ev: TouchEvent) => any)) | null | undefined
>ontouchstart : (((this: GlobalEventHandlers, ev: TouchEvent<EventTarget>) => any) & ((this: Window, ev: TouchEvent<EventTarget>) => any)) | null | undefined

} else {
window.ontouchstart
>window.ontouchstart : (((this: GlobalEventHandlers, ev: TouchEvent) => any) & ((this: Window, ev: TouchEvent) => any)) | null | undefined
>window.ontouchstart : (((this: GlobalEventHandlers, ev: TouchEvent<EventTarget>) => any) & ((this: Window, ev: TouchEvent<EventTarget>) => any)) | null | undefined
>window : Window & typeof globalThis
>ontouchstart : (((this: GlobalEventHandlers, ev: TouchEvent) => any) & ((this: Window, ev: TouchEvent) => any)) | null | undefined
>ontouchstart : (((this: GlobalEventHandlers, ev: TouchEvent<EventTarget>) => any) & ((this: Window, ev: TouchEvent<EventTarget>) => any)) | null | undefined
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@
/** @type {int} */ declare const n: int;
/** @type {float} */ declare const o: float;
/** @type {integer} */ declare const p: integer;
/** @type {event} */ declare const q: Event | undefined;
/** @type {event} */ declare const q: Event<EventTarget> | undefined;


//// [DtsFileErrors]
Expand Down Expand Up @@ -123,5 +123,5 @@ out/index.d.ts(18,41): error TS2304: Cannot find name 'integer'.
/** @type {integer} */ declare const p: integer;
~~~~~~~
!!! error TS2304: Cannot find name 'integer'.
/** @type {event} */ declare const q: Event | undefined;
/** @type {event} */ declare const q: Event<EventTarget> | undefined;

Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,6 @@

// or, in the case of `event` likely erroneously refers to the type of the global Event object
/** @type {event} */const q = undefined;
>q : Event | undefined
>q : Event<EventTarget> | undefined
>undefined : undefined

8 changes: 4 additions & 4 deletions tests/baselines/reference/mappedTypeRecursiveInference.types

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -37,31 +37,31 @@ bindAll({} as HTMLButtonElement, [
>bindAll : <TTarget extends EventTarget, TTypes extends Tuple<keyof TTarget & `on${any}`>>(target: TTarget, bindings: { [K in keyof TTypes]: { type: TTypes[K]; listener: (ev: Parameters<Extract<TTarget[TTypes[K]], (...args: any[]) => any>>[0]) => void; }; }) => void
>{} as HTMLButtonElement : HTMLButtonElement
>{} : {}
>[ { type: "onclick", listener: (event) => {}, }, { type: "onkeydown", listener: (event) => {}, },] : [{ type: "onclick"; listener: (event: MouseEvent) => void; }, { type: "onkeydown"; listener: (event: KeyboardEvent) => void; }]
>[ { type: "onclick", listener: (event) => {}, }, { type: "onkeydown", listener: (event) => {}, },] : [{ type: "onclick"; listener: (event: MouseEvent<EventTarget>) => void; }, { type: "onkeydown"; listener: (event: KeyboardEvent<EventTarget>) => void; }]
{
>{ type: "onclick", listener: (event) => {}, } : { type: "onclick"; listener: (event: MouseEvent) => void; }
>{ type: "onclick", listener: (event) => {}, } : { type: "onclick"; listener: (event: MouseEvent<EventTarget>) => void; }

type: "onclick",
>type : "onclick"
>"onclick" : "onclick"

listener: (event) => {},
>listener : (event: MouseEvent) => void
>(event) => {} : (event: MouseEvent) => void
>event : MouseEvent
>listener : (event: MouseEvent<EventTarget>) => void
>(event) => {} : (event: MouseEvent<EventTarget>) => void
>event : MouseEvent<EventTarget>

},
{
>{ type: "onkeydown", listener: (event) => {}, } : { type: "onkeydown"; listener: (event: KeyboardEvent) => void; }
>{ type: "onkeydown", listener: (event) => {}, } : { type: "onkeydown"; listener: (event: KeyboardEvent<EventTarget>) => void; }

type: "onkeydown",
>type : "onkeydown"
>"onkeydown" : "onkeydown"

listener: (event) => {},
>listener : (event: KeyboardEvent) => void
>(event) => {} : (event: KeyboardEvent) => void
>event : KeyboardEvent
>listener : (event: KeyboardEvent<EventTarget>) => void
>(event) => {} : (event: KeyboardEvent<EventTarget>) => void
>event : KeyboardEvent<EventTarget>

},
]);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
chrome-devtools-DOMExtension.js(2,17): error TS2339: Property 'removeChildren' does not exist on type 'Event'.
chrome-devtools-DOMExtension.js(3,10): error TS2339: Property 'textContent' does not exist on type 'Event'.
chrome-devtools-DOMExtension.js(2,17): error TS2339: Property 'removeChildren' does not exist on type 'Event<EventTarget>'.
chrome-devtools-DOMExtension.js(3,10): error TS2339: Property 'textContent' does not exist on type 'Event<EventTarget>'.


==== chrome-devtools-DOMExtension.js (2 errors) ====
// Extend that DOM! (doesn't work, but shouldn't crash)
Event.prototype.removeChildren = function () {
~~~~~~~~~~~~~~
!!! error TS2339: Property 'removeChildren' does not exist on type 'Event'.
!!! error TS2339: Property 'removeChildren' does not exist on type 'Event<EventTarget>'.
this.textContent = 'nope, not going to happen'
~~~~~~~~~~~
!!! error TS2339: Property 'textContent' does not exist on type 'Event'.
!!! error TS2339: Property 'textContent' does not exist on type 'Event<EventTarget>'.
}

8 changes: 4 additions & 4 deletions tests/baselines/reference/typeFromPropertyAssignment21.types
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@
Event.prototype.removeChildren = function () {
>Event.prototype.removeChildren = function () { this.textContent = 'nope, not going to happen'} : () => void
>Event.prototype.removeChildren : any
>Event.prototype : Event
>Event : { new (type: string, eventInitDict?: EventInit): Event; prototype: Event; readonly NONE: 0; readonly CAPTURING_PHASE: 1; readonly AT_TARGET: 2; readonly BUBBLING_PHASE: 3; }
>prototype : Event
>Event.prototype : Event<EventTarget>
>Event : { new (type: string, eventInitDict?: EventInit): Event<EventTarget>; prototype: Event<EventTarget>; readonly NONE: 0; readonly CAPTURING_PHASE: 1; readonly AT_TARGET: 2; readonly BUBBLING_PHASE: 3; }
>prototype : Event<EventTarget>
>removeChildren : any
>function () { this.textContent = 'nope, not going to happen'} : () => void

this.textContent = 'nope, not going to happen'
>this.textContent = 'nope, not going to happen' : "nope, not going to happen"
>this.textContent : any
>this : Event
>this : Event<EventTarget>
>textContent : any
>'nope, not going to happen' : "nope, not going to happen"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ type Source = {

(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
>type : string
>listener : EventListenerOrEventListenerObject
>listener : EventListenerOrEventListenerObject<EventTarget>
>options : boolean | AddEventListenerOptions
}

Expand Down