1
1
import { EventEmitter } from 'events'
2
- import { Protocol } from '../protocol/protocol'
2
+ import { Message , Protocol } from '../protocol/protocol'
3
3
import { Peer } from '../peer/peer'
4
4
import { Sender } from './sender'
5
5
import { Config } from '../../config'
@@ -31,7 +31,7 @@ export class BoundProtocol extends EventEmitter {
31
31
private versions : number [ ]
32
32
private timeout : number
33
33
private _status : any
34
- private resolvers : Map < string , any >
34
+ private resolvers : Map < string | number , any >
35
35
36
36
/**
37
37
* Create bound protocol
@@ -80,9 +80,9 @@ export class BoundProtocol extends EventEmitter {
80
80
* @param {Object } message message object
81
81
* @emits message
82
82
*/
83
- handle ( incoming : any ) {
83
+ handle ( incoming : Message ) {
84
84
const messages = this . protocol . messages
85
- const message = messages . find ( ( m : any ) => m . code === incoming . code )
85
+ const message = messages . find ( ( m ) => m . code === incoming . code )
86
86
if ( ! message ) {
87
87
return
88
88
}
@@ -117,16 +117,16 @@ export class BoundProtocol extends EventEmitter {
117
117
* @param name message name
118
118
* @param args message arguments
119
119
*/
120
- send ( name : string , args ?: any ) : any {
120
+ send ( name : string , args ?: any ) {
121
121
const messages = this . protocol . messages
122
- const message = messages . find ( ( m : any ) => m . name === name )
122
+ const message = messages . find ( ( m ) => m . name === name )
123
123
if ( message ) {
124
124
const encoded = this . protocol . encode ( message , args )
125
125
this . sender . sendMessage ( message . code , encoded )
126
- return message
127
126
} else {
128
127
throw new Error ( `Unknown message: ${ name } ` )
129
128
}
129
+ return message
130
130
}
131
131
132
132
/**
@@ -143,14 +143,14 @@ export class BoundProtocol extends EventEmitter {
143
143
resolve : null ,
144
144
reject : null ,
145
145
}
146
- if ( this . resolvers . get ( message . response ) ) {
146
+ if ( this . resolvers . get ( message . response ! ) ) {
147
147
throw new Error ( `Only one active request allowed per message type (${ name } )` )
148
148
}
149
- this . resolvers . set ( message . response , resolver )
149
+ this . resolvers . set ( message . response ! , resolver )
150
150
return new Promise ( ( resolve , reject ) => {
151
151
resolver . timeout = setTimeout ( ( ) => {
152
152
resolver . timeout = null
153
- this . resolvers . delete ( message . response )
153
+ this . resolvers . delete ( message . response ! )
154
154
reject ( new Error ( `Request timed out after ${ this . timeout } ms` ) )
155
155
} , this . timeout )
156
156
resolver . resolve = resolve
@@ -163,9 +163,9 @@ export class BoundProtocol extends EventEmitter {
163
163
* corresponding response message.
164
164
*/
165
165
addMethods ( ) {
166
- const messages = this . protocol . messages . filter ( ( m : any ) => m . response )
166
+ const messages = this . protocol . messages . filter ( ( m ) => m . response )
167
167
for ( const message of messages ) {
168
- const name = message . name as string
168
+ const name = message . name
169
169
const camel = name [ 0 ] . toLowerCase ( ) + name . slice ( 1 )
170
170
; ( this as any ) [ camel ] = async ( args : any [ ] ) =>
171
171
this . request ( name , args ) . catch ( ( error : Error ) => {
0 commit comments