@@ -4,29 +4,27 @@ import {Listeners} from '../managers/ListenerManager';
4
4
import Logger from 'js-logger' ;
5
5
import { Util } from '../util/Util' ;
6
6
7
- type Events < WS extends boolean > = WS extends true ? WSEventType : keyof ClientEvents ;
8
-
9
- export interface ListenerOptions < WS extends boolean = boolean , Event extends Events < WS > = Events < WS > > {
7
+ export interface ListenerOptions < WS extends boolean , Event extends WS extends false | undefined ? keyof ClientEvents : WSEventType > {
10
8
event : Event ;
11
9
name : string ;
12
10
once ?: boolean ;
13
- ws ?: boolean ;
11
+ ws ?: WS ;
14
12
fileName ?: string ;
15
- run ?: ( ...args : Event extends Events < false > ? ClientEvents [ Event ] : Array < any > ) => any ;
13
+ run ?: ( ...args : Event extends keyof ClientEvents ? ClientEvents [ Event ] : Array < any > ) => any ;
16
14
}
17
15
18
- export class Listener {
16
+ export class Listener < WS extends boolean = boolean , Event extends WS extends false | undefined ? keyof ClientEvents : WSEventType = WS extends false | undefined ? keyof ClientEvents : WSEventType > {
19
17
public client : GClient ;
20
- public readonly event : string ;
18
+ public readonly event : Event ;
21
19
public readonly name : string ;
22
20
public readonly once ?: boolean ;
23
- public readonly ws ?: boolean ;
21
+ public readonly ws ?: WS ;
24
22
public readonly fileName ?: string ;
25
23
public readonly run : ( ...args : Array < any > ) => any ;
26
24
public owner ?: string ;
27
25
public reloading = false ;
28
26
29
- public constructor ( options : ListenerOptions ) {
27
+ public constructor ( options : ListenerOptions < WS , Event > ) {
30
28
Object . assign ( this , options ) ;
31
29
32
30
Listeners . register ( this ) ;
0 commit comments