@@ -1052,6 +1052,8 @@ export class Client extends (EventEmitter as unknown as new () => TypedEmitter<C
10521052 return this . _addWhoisData ( message . args [ 1 ] , 'serverinfo' , message . args [ 3 ] ) ;
10531053 case 'rpl_whoisactually' :
10541054 return this . _addWhoisData ( message . args [ 1 ] , 'realHost' , message . args [ 2 ] ) ;
1055+ case 'rpl_whoiscertfp' :
1056+ return this . _addWhoisData ( message . args [ 1 ] , 'certfp' , message . args [ 2 ] ) ;
10551057 case 'rpl_whoisoperator' :
10561058 return this . _addWhoisData ( message . args [ 1 ] , 'operator' , message . args [ 2 ] ) ;
10571059 case 'rpl_whoisaccount' :
@@ -1452,6 +1454,7 @@ export class Client extends (EventEmitter as unknown as new () => TypedEmitter<C
14521454 * unmaps the client instance from the socket. The state will also need to be cleared up seperately.
14531455 */
14541456 public destroy ( ) {
1457+ util . log ( 'Destroying connection' ) ;
14551458 (
14561459 [ 'data' , 'end' , 'close' , 'timeout' , 'error' ] as ( keyof IrcConnectionEventsMap ) [ ]
14571460 ) . forEach ( evtType => {
@@ -1690,14 +1693,18 @@ export class Client extends (EventEmitter as unknown as new () => TypedEmitter<C
16901693 return this . send ( 'LIST' , ...args ) ;
16911694 }
16921695
1693- private _addWhoisData ( nick : string , key : keyof ( WhoisResponse ) , value : string | string [ ] , onlyIfExists = false ) {
1694- if ( onlyIfExists && ! this . state . whoisData . has ( nick ) ) { return ; }
1695- const data : WhoisResponse = {
1696- ...this . state . whoisData . get ( nick ) ,
1697- nick,
1698- [ key ] : value ,
1699- } ;
1700- this . state . whoisData . set ( nick , data ) ;
1696+ private _addWhoisData <
1697+ K extends keyof ( WhoisResponse ) ,
1698+ V extends WhoisResponse [ K ] > ( nick : string , key : K , value : V , onlyIfExists = false ) {
1699+ let data : WhoisResponse | undefined = this . state . whoisData . get ( nick ) ;
1700+ if ( onlyIfExists && ! data ) {
1701+ return ;
1702+ }
1703+ else if ( ! data ) {
1704+ data = { nick } ;
1705+ this . state . whoisData . set ( nick , data ) ;
1706+ }
1707+ data [ key ] = value ;
17011708 }
17021709
17031710 private _clearWhoisData ( nick : string ) {
0 commit comments