Skip to content

Commit 183e468

Browse files
committed
Add event listeners centrally
1 parent a391cb1 commit 183e468

File tree

3 files changed

+21
-21
lines changed

3 files changed

+21
-21
lines changed

src/dispatcher.ts

+20-2
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,43 @@
2525

2626
import { EventEmitter } from "events";
2727

28+
// tslint:disable:ban-types
29+
30+
/**
31+
* @hidden
32+
*/
33+
export interface EventListeners<T> {
34+
newListener: keyof T;
35+
removeListener: keyof T;
36+
}
37+
2838
/**
2939
* @hidden
3040
*/
3141
export interface TypedDispatcher<T> {
3242
addEventListener<K extends keyof T>(type: K, listener: (this: this, event: T[K]) => void): void;
43+
addEventListener<E extends keyof EventListeners<T>>(type: E, listener: (this: this, event: EventListeners<T>[E]) => void): void;
3344
removeEventListener<K extends keyof T>(type: K, callback: (this: this, event: T[K]) => void): void;
45+
removeEventListener<E extends keyof EventListeners<T>>(type: E, callback: (this: this, event: EventListeners<T>[E]) => void): void;
3446
dispatchEvent<K extends keyof T>(event: T[K]): boolean;
3547
addListener<K extends keyof T>(event: K, listener: (data: T[K]) => void): this;
48+
addListener<E extends keyof EventListeners<T>>(event: E, listener: (data: EventListeners<T>[E]) => void): this;
3649
on<K extends keyof T>(event: K, listener: (data: T[K]) => void): this;
50+
on<E extends keyof EventListeners<T>>(event: E, listener: (data: EventListeners<T>[E]) => void): this;
3751
once<K extends keyof T>(event: K, listener: (data: T[K]) => void): this;
52+
once<E extends keyof EventListeners<T>>(event: E, listener: (data: EventListeners<T>[E]) => void): this;
3853
prependListener<K extends keyof T>(event: K, listener: (data: T[K]) => void): this;
3954
prependOnceListener<K extends keyof T>(event: K, listener: (data: T[K]) => void): this;
4055
removeListener<K extends keyof T>(event: K, listener: (data: T[K]) => void): this;
56+
removeListener<E extends keyof EventListeners<T>>(event: E, listener: (data: EventListeners<T>[E]) => void): this;
4157
removeAllListeners<K extends keyof T>(event?: K): this;
42-
// tslint:disable-next-line:ban-types
58+
removeAllListeners<E extends keyof EventListeners<T>>(event?: E): this;
4359
listeners<K extends keyof T>(event: K): Array<Function>;
60+
listeners<E extends keyof EventListeners<T>>(event: EventListeners<T>[E]): Array<Function>;
4461
emit<K extends keyof T>(event: K, data: T[K]): boolean;
45-
eventNames<K extends keyof T>(): Array<K>;
62+
eventNames<K extends keyof T, E extends keyof EventListeners<T>>(): Array<K | E>;
4663
listenerCount<K extends keyof T>(type: K): number;
64+
listenerCount<E extends keyof EventListeners<T>>(type: EventListeners<T>[E]): number;
4765
setMaxListeners(n: number): this;
4866
getMaxListeners(): number;
4967
}

src/interfaces.ts

+1-11
Original file line numberDiff line numberDiff line change
@@ -36,17 +36,7 @@ export interface W3CUSBConnectionEvent extends USBConnectionEvent {}
3636
/**
3737
* @hidden
3838
*/
39-
// export interface W3CUSB extends USB {}
40-
export interface W3CUSB {
41-
onconnect: ((this: this, ev: USBConnectionEvent) => any) | null;
42-
ondisconnect: ((this: this, ev: USBConnectionEvent) => any) | null;
43-
getDevices(): Promise<Array<USBDevice>>;
44-
requestDevice(options?: USBDeviceRequestOptions): Promise<USBDevice>;
45-
addEventListener(type: "connect" | "disconnect", listener: (this: this, ev: USBConnectionEvent) => any, useCapture?: boolean): void;
46-
addEventListener(type: string, listener: EventListenerOrEventListenerObject | null, options?: boolean | AddEventListenerOptions): void;
47-
removeEventListener(type: "connect" | "disconnect", callback: (this: this, ev: USBConnectionEvent) => any, useCapture?: boolean): void;
48-
removeEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: EventListenerOptions | boolean): void;
49-
}
39+
export interface W3CUSB extends USB {}
5040

5141
/**
5242
* @hidden

src/usb.ts

-8
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,6 @@ export interface USBOptions {
4343
* @hidden
4444
*/
4545
export interface USBEvents {
46-
/**
47-
* @hidden
48-
*/
49-
newListener: keyof USBEvents;
50-
/**
51-
* @hidden
52-
*/
53-
removeListener: keyof USBEvents;
5446
/**
5547
* USBDevice connected event
5648
*/

0 commit comments

Comments
 (0)