@@ -187,6 +187,7 @@ describe("server", () => {
187
187
Ev extends keyof Map = keyof Map
188
188
> = ( ev : Ev , ...args : Parameters < Map [ Ev ] > ) => ReturnType < Map [ Ev ] > ;
189
189
interface ClientToServerEvents {
190
+ noArgs : ( ) => void ;
190
191
helloFromClient : ( message : string ) => void ;
191
192
ackFromClient : (
192
193
a : string ,
@@ -196,6 +197,7 @@ describe("server", () => {
196
197
}
197
198
198
199
interface ServerToClientEvents {
200
+ noArgs : ( ) => void ;
199
201
helloFromServer : ( message : string , x : number ) => void ;
200
202
ackFromServer : (
201
203
a : boolean ,
@@ -212,12 +214,14 @@ describe("server", () => {
212
214
// While these could be generated using the types from typed-events,
213
215
// it's likely better to just write them out, so that both the types and this are tested properly
214
216
interface ServerToClientEventsNoAck {
217
+ noArgs : ( ) => void ;
215
218
helloFromServer : ( message : string , x : number ) => void ;
216
219
ackFromServer : never ;
217
220
ackFromServerSingleArg : never ;
218
221
onlyCallback : never ;
219
222
}
220
223
interface ServerToClientEventsWithError {
224
+ noArgs : ( ) => void ;
221
225
helloFromServer : ( message : string , x : number ) => void ;
222
226
ackFromServer : (
223
227
a : boolean ,
@@ -233,6 +237,7 @@ describe("server", () => {
233
237
}
234
238
235
239
interface ServerToClientEventsWithMultiple {
240
+ noArgs : ( ) => void ;
236
241
helloFromServer : ( message : string , x : number ) => void ;
237
242
ackFromServer : ( a : boolean , b : string , ack : ( c : boolean [ ] ) => void ) => void ;
238
243
ackFromServerSingleArg : (
@@ -243,6 +248,7 @@ describe("server", () => {
243
248
onlyCallback : ( a : ( ) => void ) => void ;
244
249
}
245
250
interface ServerToClientEventsWithMultipleAndError {
251
+ noArgs : ( ) => void ;
246
252
helloFromServer : ( message : string , x : number ) => void ;
247
253
ackFromServer : (
248
254
a : boolean ,
@@ -383,6 +389,9 @@ describe("server", () => {
383
389
} ) ;
384
390
it ( "has the correct types for `emit`" , ( ) => {
385
391
const sio = new Server < ClientToServerEvents , ServerToClientEvents > ( ) ;
392
+ expectType < ToEmit < ServerToClientEventsWithMultipleAndError , "noArgs" > > (
393
+ sio . timeout ( 0 ) . emit < "noArgs" >
394
+ ) ;
386
395
expectType <
387
396
ToEmit < ServerToClientEventsWithMultipleAndError , "helloFromServer" >
388
397
> ( sio . timeout ( 0 ) . emit < "helloFromServer" > ) ;
@@ -406,6 +415,8 @@ describe("server", () => {
406
415
expectType < never > (
407
416
undefined as Parameters < typeof sansTimeout [ "emitWithAck" ] > [ 0 ]
408
417
) ;
418
+ // @ts -expect-error - "noArgs" doesn't have a callback and is thus excluded
419
+ sio . timeout ( 0 ) . emitWithAck ( "noArgs" ) ;
409
420
// @ts -expect-error - "helloFromServer" doesn't have a callback and is thus excluded
410
421
sio . timeout ( 0 ) . emitWithAck ( "helloFromServer" ) ;
411
422
// @ts -expect-error - "onlyCallback" doesn't have a callback and is thus excluded
@@ -428,7 +439,9 @@ describe("server", () => {
428
439
it ( "Infers correct types" , ( ) => {
429
440
const sio = new Server < ClientToServerEvents , ServerToClientEvents > ( ) ;
430
441
const nio = sio . of ( "/test" ) ;
431
-
442
+ expectType < ToEmit < ServerToClientEventsNoAck , "noArgs" > > (
443
+ sio . emit < "noArgs" >
444
+ ) ;
432
445
expectType < ToEmit < ServerToClientEventsNoAck , "helloFromServer" > > (
433
446
// These errors will dissapear once the TS version is updated from 4.7.4
434
447
// the TSD instance is using a newer version of TS than the workspace version
@@ -439,6 +452,7 @@ describe("server", () => {
439
452
nio . emit < "helloFromServer" >
440
453
) ;
441
454
sio . on ( "connection" , ( s ) => {
455
+ expectType < ToEmit < ServerToClientEvents , "noArgs" > > ( s . emit < "noArgs" > ) ;
442
456
expectType < ToEmit < ServerToClientEvents , "helloFromServer" > > (
443
457
s . emit < "helloFromServer" >
444
458
) ;
@@ -474,6 +488,8 @@ describe("server", () => {
474
488
it ( "Infers correct types" , ( ) => {
475
489
const sio = new Server < ClientToServerEvents , ServerToClientEvents > ( ) ;
476
490
sio . on ( "connection" , ( s ) => {
491
+ // @ts -expect-error - "noArgs" doesn't have a callback and is thus excluded
492
+ s . emitWithAck ( "noArgs" ) ;
477
493
// @ts -expect-error - "helloFromServer" doesn't have a callback and is thus excluded
478
494
s . emitWithAck ( "helloFromServer" ) ;
479
495
// @ts -expect-error - "onlyCallback" doesn't have a callback and is thus excluded
@@ -506,6 +522,10 @@ describe("server", () => {
506
522
srv . listen ( ( ) => {
507
523
sio . on ( "connection" , ( s ) => {
508
524
expectType < Socket < ClientToServerEvents , ServerToClientEvents > > ( s ) ;
525
+ s . on ( "noArgs" , ( ...args ) => {
526
+ expectType < [ ] > ( args ) ;
527
+ done ( ) ;
528
+ } ) ;
509
529
s . on ( "helloFromClient" , ( message ) => {
510
530
expectType < string > ( message ) ;
511
531
done ( ) ;
@@ -526,6 +546,10 @@ describe("server", () => {
526
546
const sio = new Server < ClientToServerEvents , ServerToClientEvents > ( srv ) ;
527
547
srv . listen ( ( ) => {
528
548
sio . on ( "connection" , ( s ) => {
549
+ // @ts -expect-error - shouldn't accept emit events
550
+ s . on ( "noArgs" , ( message , number ) => {
551
+ done ( ) ;
552
+ } ) ;
529
553
// @ts -expect-error - shouldn't accept emit events
530
554
s . on ( "helloFromServer" , ( message , number ) => {
531
555
done ( ) ;
@@ -538,14 +562,17 @@ describe("server", () => {
538
562
539
563
describe ( "listen and emit event maps for the serverSideEmit method" , ( ) => {
540
564
interface ClientToServerEvents {
565
+ noArgs : ( ) => void ;
541
566
helloFromClient : ( message : string ) => void ;
542
567
}
543
568
544
569
interface ServerToClientEvents {
570
+ noArgs : ( ) => void ;
545
571
helloFromServer : ( message : string , x : number ) => void ;
546
572
}
547
573
548
574
interface InterServerEvents {
575
+ noArgs : ( ) => void ;
549
576
helloFromServerToServer : ( message : string , x : number ) => void ;
550
577
ackFromServerToServer : ( foo : string , cb : ( bar : number ) => void ) => void ;
551
578
}
@@ -563,20 +590,29 @@ describe("server", () => {
563
590
Server < ClientToServerEvents , ServerToClientEvents , InterServerEvents >
564
591
> ( sio ) ;
565
592
srv . listen ( async ( ) => {
593
+ sio . serverSideEmit ( "noArgs" ) ;
566
594
sio . serverSideEmit ( "helloFromServerToServer" , "hello" , 10 ) ;
567
595
sio
568
596
. of ( "/test" )
569
597
. serverSideEmit ( "helloFromServerToServer" , "hello" , 10 ) ;
570
598
599
+ sio . on ( "noArgs" , ( ...args ) => {
600
+ expectType < [ ] > ( args ) ;
601
+ } ) ;
571
602
sio . on ( "helloFromServerToServer" , ( message , x ) => {
572
603
expectType < string > ( message ) ;
573
604
expectType < number > ( x ) ;
574
605
} ) ;
606
+ sio . of ( "/test" ) . on ( "noArgs" , ( ...args ) => {
607
+ expectType < [ ] > ( args ) ;
608
+ } ) ;
575
609
sio . of ( "/test" ) . on ( "helloFromServerToServer" , ( message , x ) => {
576
610
expectType < string > ( message ) ;
577
611
expectType < number > ( x ) ;
578
612
} ) ;
579
613
614
+ //@ts -expect-error - "helloFromServerToServer" does not have a callback
615
+ sio . serverSideEmitWithAck ( "noArgs" ) ;
580
616
//@ts -expect-error - "helloFromServerToServer" does not have a callback
581
617
sio . serverSideEmitWithAck ( "helloFromServerToServer" , "hello" ) ;
582
618
0 commit comments