@@ -3,8 +3,6 @@ import type { ContextTimed } from '@matrixai/contexts';
33import type {
44 ClientCrypto ,
55 Host ,
6- Hostname ,
7- Port ,
86 VerifyCallback ,
97} from './types' ;
108import type { Config } from './native/types' ;
@@ -76,16 +74,16 @@ class QUICClient extends EventTarget {
7674 */
7775 public static createQUICClient (
7876 opts : {
79- host : Host | Hostname ;
80- port : Port ;
81- localHost ?: Host | Hostname ;
82- localPort ?: Port ;
77+ host : string ;
78+ port : number ;
79+ localHost ?: string ;
80+ localPort ?: number ;
8381 crypto : {
8482 ops : ClientCrypto ;
8583 } ;
8684 config ?: Partial < QUICConfig > ;
8785 socket ?: QUICSocket ;
88- resolveHostname ?: ( hostname : Hostname ) => Host | PromiseLike < Host > ;
86+ resolveHostname ?: ( hostname : string ) => Host | PromiseLike < Host > ;
8987 reasonToCode ?: StreamReasonToCode ;
9088 codeToReason ?: StreamCodeToReason ;
9189 verifyCallback ?: VerifyCallback ;
@@ -98,8 +96,8 @@ class QUICClient extends EventTarget {
9896 {
9997 host,
10098 port,
101- localHost = '::' as Host ,
102- localPort = 0 as Port ,
99+ localHost = '::' ,
100+ localPort = 0 ,
103101 crypto,
104102 config = { } ,
105103 socket,
@@ -109,18 +107,18 @@ class QUICClient extends EventTarget {
109107 verifyCallback,
110108 logger = new Logger ( `${ this . name } ` ) ,
111109 } : {
112- host : Host | Hostname ;
113- port : Port ;
114- localHost ?: Host | Hostname ;
115- localPort ?: Port ;
110+ host : string ;
111+ port : number ;
112+ localHost ?: string ;
113+ localPort ?: number ;
116114 crypto : {
117115 ops : {
118116 randomBytes ( data : ArrayBuffer ) : Promise < void > ;
119117 } ;
120118 } ;
121119 config ?: Partial < QUICConfig > ;
122120 socket ?: QUICSocket ;
123- resolveHostname ?: ( hostname : Hostname ) => Host | PromiseLike < Host > ;
121+ resolveHostname ?: ( hostname : string ) => Host | PromiseLike < Host > ;
124122 reasonToCode ?: StreamReasonToCode ;
125123 codeToReason ?: StreamCodeToReason ;
126124 verifyCallback ?: VerifyCallback ;
@@ -139,7 +137,12 @@ class QUICClient extends EventTarget {
139137 const scidBuffer = new ArrayBuffer ( quiche . MAX_CONN_ID_LEN ) ;
140138 await crypto . ops . randomBytes ( scidBuffer ) ;
141139 const scid = new QUICConnectionId ( scidBuffer ) ;
140+ // validating host and port types
142141 let [ host_ ] = await utils . resolveHost ( host , resolveHostname ) ;
142+ let [ localHost_ ] = await utils . resolveHost ( host , resolveHostname ) ;
143+ if ( ! utils . isPort ( port ) || ! utils . isPort ( localPort ) ) {
144+ throw Error ( 'TMP Not a valid port number' ) ;
145+ }
143146 // If the target host is in fact a zero IP, it cannot be used
144147 // as a target host, so we need to resolve it to a non-zero IP
145148 // in this case, 0.0.0.0 is resolved to 127.0.0.1 and :: and ::0 is
@@ -159,7 +162,7 @@ class QUICClient extends EventTarget {
159162 } ) ;
160163 isSocketShared = false ;
161164 await socket . start ( {
162- host : localHost ,
165+ host : localHost_ ,
163166 port : localPort ,
164167 } ) ;
165168 } else {
@@ -388,12 +391,12 @@ class QUICClient extends EventTarget {
388391 }
389392
390393 @ready ( new errors . ErrorQUICClientDestroyed ( ) )
391- public get host ( ) {
394+ public get host ( ) : string {
392395 return this . socket . host ;
393396 }
394397
395398 @ready ( new errors . ErrorQUICClientDestroyed ( ) )
396- public get port ( ) {
399+ public get port ( ) : number {
397400 return this . socket . port ;
398401 }
399402
0 commit comments