@@ -187,6 +187,7 @@ describe("server", () => {
187187 Ev extends keyof Map = keyof Map
188188 > = ( ev : Ev , ...args : Parameters < Map [ Ev ] > ) => ReturnType < Map [ Ev ] > ;
189189 interface ClientToServerEvents {
190+ noArgs : ( ) => void ;
190191 helloFromClient : ( message : string ) => void ;
191192 ackFromClient : (
192193 a : string ,
@@ -196,6 +197,7 @@ describe("server", () => {
196197 }
197198
198199 interface ServerToClientEvents {
200+ noArgs : ( ) => void ;
199201 helloFromServer : ( message : string , x : number ) => void ;
200202 ackFromServer : (
201203 a : boolean ,
@@ -212,12 +214,14 @@ describe("server", () => {
212214 // While these could be generated using the types from typed-events,
213215 // it's likely better to just write them out, so that both the types and this are tested properly
214216 interface ServerToClientEventsNoAck {
217+ noArgs : ( ) => void ;
215218 helloFromServer : ( message : string , x : number ) => void ;
216219 ackFromServer : never ;
217220 ackFromServerSingleArg : never ;
218221 onlyCallback : never ;
219222 }
220223 interface ServerToClientEventsWithError {
224+ noArgs : ( ) => void ;
221225 helloFromServer : ( message : string , x : number ) => void ;
222226 ackFromServer : (
223227 a : boolean ,
@@ -233,6 +237,7 @@ describe("server", () => {
233237 }
234238
235239 interface ServerToClientEventsWithMultiple {
240+ noArgs : ( ) => void ;
236241 helloFromServer : ( message : string , x : number ) => void ;
237242 ackFromServer : ( a : boolean , b : string , ack : ( c : boolean [ ] ) => void ) => void ;
238243 ackFromServerSingleArg : (
@@ -243,6 +248,7 @@ describe("server", () => {
243248 onlyCallback : ( a : ( ) => void ) => void ;
244249 }
245250 interface ServerToClientEventsWithMultipleAndError {
251+ noArgs : ( ) => void ;
246252 helloFromServer : ( message : string , x : number ) => void ;
247253 ackFromServer : (
248254 a : boolean ,
@@ -383,6 +389,9 @@ describe("server", () => {
383389 } ) ;
384390 it ( "has the correct types for `emit`" , ( ) => {
385391 const sio = new Server < ClientToServerEvents , ServerToClientEvents > ( ) ;
392+ expectType < ToEmit < ServerToClientEventsWithMultipleAndError , "noArgs" > > (
393+ sio . timeout ( 0 ) . emit < "noArgs" >
394+ ) ;
386395 expectType <
387396 ToEmit < ServerToClientEventsWithMultipleAndError , "helloFromServer" >
388397 > ( sio . timeout ( 0 ) . emit < "helloFromServer" > ) ;
@@ -406,6 +415,8 @@ describe("server", () => {
406415 expectType < never > (
407416 undefined as Parameters < typeof sansTimeout [ "emitWithAck" ] > [ 0 ]
408417 ) ;
418+ // @ts -expect-error - "noArgs" doesn't have a callback and is thus excluded
419+ sio . timeout ( 0 ) . emitWithAck ( "noArgs" ) ;
409420 // @ts -expect-error - "helloFromServer" doesn't have a callback and is thus excluded
410421 sio . timeout ( 0 ) . emitWithAck ( "helloFromServer" ) ;
411422 // @ts -expect-error - "onlyCallback" doesn't have a callback and is thus excluded
@@ -428,7 +439,9 @@ describe("server", () => {
428439 it ( "Infers correct types" , ( ) => {
429440 const sio = new Server < ClientToServerEvents , ServerToClientEvents > ( ) ;
430441 const nio = sio . of ( "/test" ) ;
431-
442+ expectType < ToEmit < ServerToClientEventsNoAck , "noArgs" > > (
443+ sio . emit < "noArgs" >
444+ ) ;
432445 expectType < ToEmit < ServerToClientEventsNoAck , "helloFromServer" > > (
433446 // These errors will dissapear once the TS version is updated from 4.7.4
434447 // the TSD instance is using a newer version of TS than the workspace version
@@ -439,6 +452,7 @@ describe("server", () => {
439452 nio . emit < "helloFromServer" >
440453 ) ;
441454 sio . on ( "connection" , ( s ) => {
455+ expectType < ToEmit < ServerToClientEvents , "noArgs" > > ( s . emit < "noArgs" > ) ;
442456 expectType < ToEmit < ServerToClientEvents , "helloFromServer" > > (
443457 s . emit < "helloFromServer" >
444458 ) ;
@@ -474,6 +488,8 @@ describe("server", () => {
474488 it ( "Infers correct types" , ( ) => {
475489 const sio = new Server < ClientToServerEvents , ServerToClientEvents > ( ) ;
476490 sio . on ( "connection" , ( s ) => {
491+ // @ts -expect-error - "noArgs" doesn't have a callback and is thus excluded
492+ s . emitWithAck ( "noArgs" ) ;
477493 // @ts -expect-error - "helloFromServer" doesn't have a callback and is thus excluded
478494 s . emitWithAck ( "helloFromServer" ) ;
479495 // @ts -expect-error - "onlyCallback" doesn't have a callback and is thus excluded
@@ -506,6 +522,10 @@ describe("server", () => {
506522 srv . listen ( ( ) => {
507523 sio . on ( "connection" , ( s ) => {
508524 expectType < Socket < ClientToServerEvents , ServerToClientEvents > > ( s ) ;
525+ s . on ( "noArgs" , ( ...args ) => {
526+ expectType < [ ] > ( args ) ;
527+ done ( ) ;
528+ } ) ;
509529 s . on ( "helloFromClient" , ( message ) => {
510530 expectType < string > ( message ) ;
511531 done ( ) ;
@@ -526,6 +546,10 @@ describe("server", () => {
526546 const sio = new Server < ClientToServerEvents , ServerToClientEvents > ( srv ) ;
527547 srv . listen ( ( ) => {
528548 sio . on ( "connection" , ( s ) => {
549+ // @ts -expect-error - shouldn't accept emit events
550+ s . on ( "noArgs" , ( message , number ) => {
551+ done ( ) ;
552+ } ) ;
529553 // @ts -expect-error - shouldn't accept emit events
530554 s . on ( "helloFromServer" , ( message , number ) => {
531555 done ( ) ;
@@ -538,14 +562,17 @@ describe("server", () => {
538562
539563 describe ( "listen and emit event maps for the serverSideEmit method" , ( ) => {
540564 interface ClientToServerEvents {
565+ noArgs : ( ) => void ;
541566 helloFromClient : ( message : string ) => void ;
542567 }
543568
544569 interface ServerToClientEvents {
570+ noArgs : ( ) => void ;
545571 helloFromServer : ( message : string , x : number ) => void ;
546572 }
547573
548574 interface InterServerEvents {
575+ noArgs : ( ) => void ;
549576 helloFromServerToServer : ( message : string , x : number ) => void ;
550577 ackFromServerToServer : ( foo : string , cb : ( bar : number ) => void ) => void ;
551578 }
@@ -563,20 +590,29 @@ describe("server", () => {
563590 Server < ClientToServerEvents , ServerToClientEvents , InterServerEvents >
564591 > ( sio ) ;
565592 srv . listen ( async ( ) => {
593+ sio . serverSideEmit ( "noArgs" ) ;
566594 sio . serverSideEmit ( "helloFromServerToServer" , "hello" , 10 ) ;
567595 sio
568596 . of ( "/test" )
569597 . serverSideEmit ( "helloFromServerToServer" , "hello" , 10 ) ;
570598
599+ sio . on ( "noArgs" , ( ...args ) => {
600+ expectType < [ ] > ( args ) ;
601+ } ) ;
571602 sio . on ( "helloFromServerToServer" , ( message , x ) => {
572603 expectType < string > ( message ) ;
573604 expectType < number > ( x ) ;
574605 } ) ;
606+ sio . of ( "/test" ) . on ( "noArgs" , ( ...args ) => {
607+ expectType < [ ] > ( args ) ;
608+ } ) ;
575609 sio . of ( "/test" ) . on ( "helloFromServerToServer" , ( message , x ) => {
576610 expectType < string > ( message ) ;
577611 expectType < number > ( x ) ;
578612 } ) ;
579613
614+ //@ts -expect-error - "helloFromServerToServer" does not have a callback
615+ sio . serverSideEmitWithAck ( "noArgs" ) ;
580616 //@ts -expect-error - "helloFromServerToServer" does not have a callback
581617 sio . serverSideEmitWithAck ( "helloFromServerToServer" , "hello" ) ;
582618
0 commit comments