Skip to content

Commit e357daf

Browse files
committedOct 13, 2022
fix(typings): apply types to "io.timeout(...).emit()" calls
Typed events were not applied when calling "io.timeout(...).emit()". Related: socketio/socket.io-client#1555 (comment) Reference: https://socket.io/docs/v4/typescript/
1 parent 10fa4a2 commit e357daf

File tree

5 files changed

+69
-52
lines changed

5 files changed

+69
-52
lines changed
 

‎lib/broadcast-operator.ts

+17-20
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,14 @@ export class BroadcastOperator<EmitEvents extends EventsMap, SocketData>
2626
* @return a new BroadcastOperator instance
2727
* @public
2828
*/
29-
public to(room: Room | Room[]): BroadcastOperator<EmitEvents, SocketData> {
29+
public to(room: Room | Room[]) {
3030
const rooms = new Set(this.rooms);
3131
if (Array.isArray(room)) {
3232
room.forEach((r) => rooms.add(r));
3333
} else {
3434
rooms.add(room);
3535
}
36-
return new BroadcastOperator(
36+
return new BroadcastOperator<EmitEvents, SocketData>(
3737
this.adapter,
3838
rooms,
3939
this.exceptRooms,
@@ -48,7 +48,7 @@ export class BroadcastOperator<EmitEvents extends EventsMap, SocketData>
4848
* @return a new BroadcastOperator instance
4949
* @public
5050
*/
51-
public in(room: Room | Room[]): BroadcastOperator<EmitEvents, SocketData> {
51+
public in(room: Room | Room[]) {
5252
return this.to(room);
5353
}
5454

@@ -59,16 +59,14 @@ export class BroadcastOperator<EmitEvents extends EventsMap, SocketData>
5959
* @return a new BroadcastOperator instance
6060
* @public
6161
*/
62-
public except(
63-
room: Room | Room[]
64-
): BroadcastOperator<EmitEvents, SocketData> {
62+
public except(room: Room | Room[]) {
6563
const exceptRooms = new Set(this.exceptRooms);
6664
if (Array.isArray(room)) {
6765
room.forEach((r) => exceptRooms.add(r));
6866
} else {
6967
exceptRooms.add(room);
7068
}
71-
return new BroadcastOperator(
69+
return new BroadcastOperator<EmitEvents, SocketData>(
7270
this.adapter,
7371
this.rooms,
7472
exceptRooms,
@@ -83,11 +81,9 @@ export class BroadcastOperator<EmitEvents extends EventsMap, SocketData>
8381
* @return a new BroadcastOperator instance
8482
* @public
8583
*/
86-
public compress(
87-
compress: boolean
88-
): BroadcastOperator<EmitEvents, SocketData> {
84+
public compress(compress: boolean) {
8985
const flags = Object.assign({}, this.flags, { compress });
90-
return new BroadcastOperator(
86+
return new BroadcastOperator<EmitEvents, SocketData>(
9187
this.adapter,
9288
this.rooms,
9389
this.exceptRooms,
@@ -103,9 +99,9 @@ export class BroadcastOperator<EmitEvents extends EventsMap, SocketData>
10399
* @return a new BroadcastOperator instance
104100
* @public
105101
*/
106-
public get volatile(): BroadcastOperator<EmitEvents, SocketData> {
102+
public get volatile() {
107103
const flags = Object.assign({}, this.flags, { volatile: true });
108-
return new BroadcastOperator(
104+
return new BroadcastOperator<EmitEvents, SocketData>(
109105
this.adapter,
110106
this.rooms,
111107
this.exceptRooms,
@@ -119,9 +115,9 @@ export class BroadcastOperator<EmitEvents extends EventsMap, SocketData>
119115
* @return a new BroadcastOperator instance
120116
* @public
121117
*/
122-
public get local(): BroadcastOperator<EmitEvents, SocketData> {
118+
public get local() {
123119
const flags = Object.assign({}, this.flags, { local: true });
124-
return new BroadcastOperator(
120+
return new BroadcastOperator<EmitEvents, SocketData>(
125121
this.adapter,
126122
this.rooms,
127123
this.exceptRooms,
@@ -144,7 +140,7 @@ export class BroadcastOperator<EmitEvents extends EventsMap, SocketData>
144140
*/
145141
public timeout(timeout: number) {
146142
const flags = Object.assign({}, this.flags, { timeout });
147-
return new BroadcastOperator(
143+
return new BroadcastOperator<EmitEvents, SocketData>(
148144
this.adapter,
149145
this.rooms,
150146
this.exceptRooms,
@@ -255,9 +251,7 @@ export class BroadcastOperator<EmitEvents extends EventsMap, SocketData>
255251
*
256252
* @public
257253
*/
258-
public fetchSockets<SocketData = any>(): Promise<
259-
RemoteSocket<EmitEvents, SocketData>[]
260-
> {
254+
public fetchSockets(): Promise<RemoteSocket<EmitEvents, SocketData>[]> {
261255
return this.adapter
262256
.fetchSockets({
263257
rooms: this.rooms,
@@ -359,7 +353,10 @@ export class RemoteSocket<EmitEvents extends EventsMap, SocketData>
359353
this.handshake = details.handshake;
360354
this.rooms = new Set(details.rooms);
361355
this.data = details.data;
362-
this.operator = new BroadcastOperator(adapter, new Set([this.id]));
356+
this.operator = new BroadcastOperator<EmitEvents, SocketData>(
357+
adapter,
358+
new Set([this.id])
359+
);
363360
}
364361

365362
public emit<Ev extends EventNames<EmitEvents>>(

‎lib/index.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -819,7 +819,7 @@ export class Server<
819819
* @param room
820820
* @public
821821
*/
822-
public socketsJoin(room: Room | Room[]): void {
822+
public socketsJoin(room: Room | Room[]) {
823823
return this.sockets.socketsJoin(room);
824824
}
825825

@@ -829,7 +829,7 @@ export class Server<
829829
* @param room
830830
* @public
831831
*/
832-
public socketsLeave(room: Room | Room[]): void {
832+
public socketsLeave(room: Room | Room[]) {
833833
return this.sockets.socketsLeave(room);
834834
}
835835

@@ -839,7 +839,7 @@ export class Server<
839839
* @param close - whether to close the underlying connection
840840
* @public
841841
*/
842-
public disconnectSockets(close: boolean = false): void {
842+
public disconnectSockets(close: boolean = false) {
843843
return this.sockets.disconnectSockets(close);
844844
}
845845
}

‎lib/namespace.ts

+38-26
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,8 @@ export class Namespace<
175175
* @return self
176176
* @public
177177
*/
178-
public to(room: Room | Room[]): BroadcastOperator<EmitEvents, SocketData> {
179-
return new BroadcastOperator(this.adapter).to(room);
178+
public to(room: Room | Room[]) {
179+
return new BroadcastOperator<EmitEvents, SocketData>(this.adapter).to(room);
180180
}
181181

182182
/**
@@ -186,8 +186,8 @@ export class Namespace<
186186
* @return self
187187
* @public
188188
*/
189-
public in(room: Room | Room[]): BroadcastOperator<EmitEvents, SocketData> {
190-
return new BroadcastOperator(this.adapter).in(room);
189+
public in(room: Room | Room[]) {
190+
return new BroadcastOperator<EmitEvents, SocketData>(this.adapter).in(room);
191191
}
192192

193193
/**
@@ -197,10 +197,10 @@ export class Namespace<
197197
* @return self
198198
* @public
199199
*/
200-
public except(
201-
room: Room | Room[]
202-
): BroadcastOperator<EmitEvents, SocketData> {
203-
return new BroadcastOperator(this.adapter).except(room);
200+
public except(room: Room | Room[]) {
201+
return new BroadcastOperator<EmitEvents, SocketData>(this.adapter).except(
202+
room
203+
);
204204
}
205205

206206
/**
@@ -345,7 +345,9 @@ export class Namespace<
345345
* @public
346346
*/
347347
public allSockets(): Promise<Set<SocketId>> {
348-
return new BroadcastOperator(this.adapter).allSockets();
348+
return new BroadcastOperator<EmitEvents, SocketData>(
349+
this.adapter
350+
).allSockets();
349351
}
350352

351353
/**
@@ -355,10 +357,10 @@ export class Namespace<
355357
* @return self
356358
* @public
357359
*/
358-
public compress(
359-
compress: boolean
360-
): BroadcastOperator<EmitEvents, SocketData> {
361-
return new BroadcastOperator(this.adapter).compress(compress);
360+
public compress(compress: boolean) {
361+
return new BroadcastOperator<EmitEvents, SocketData>(this.adapter).compress(
362+
compress
363+
);
362364
}
363365

364366
/**
@@ -369,8 +371,8 @@ export class Namespace<
369371
* @return self
370372
* @public
371373
*/
372-
public get volatile(): BroadcastOperator<EmitEvents, SocketData> {
373-
return new BroadcastOperator(this.adapter).volatile;
374+
public get volatile() {
375+
return new BroadcastOperator<EmitEvents, SocketData>(this.adapter).volatile;
374376
}
375377

376378
/**
@@ -379,8 +381,8 @@ export class Namespace<
379381
* @return self
380382
* @public
381383
*/
382-
public get local(): BroadcastOperator<EmitEvents, SocketData> {
383-
return new BroadcastOperator(this.adapter).local;
384+
public get local() {
385+
return new BroadcastOperator<EmitEvents, SocketData>(this.adapter).local;
384386
}
385387

386388
/**
@@ -397,16 +399,20 @@ export class Namespace<
397399
* @param timeout
398400
*/
399401
public timeout(timeout: number) {
400-
return new BroadcastOperator(this.adapter).timeout(timeout);
402+
return new BroadcastOperator<EmitEvents, SocketData>(this.adapter).timeout(
403+
timeout
404+
);
401405
}
402406

403407
/**
404408
* Returns the matching socket instances
405409
*
406410
* @public
407411
*/
408-
public fetchSockets(): Promise<RemoteSocket<EmitEvents, SocketData>[]> {
409-
return new BroadcastOperator(this.adapter).fetchSockets();
412+
public fetchSockets() {
413+
return new BroadcastOperator<EmitEvents, SocketData>(
414+
this.adapter
415+
).fetchSockets();
410416
}
411417

412418
/**
@@ -415,8 +421,10 @@ export class Namespace<
415421
* @param room
416422
* @public
417423
*/
418-
public socketsJoin(room: Room | Room[]): void {
419-
return new BroadcastOperator(this.adapter).socketsJoin(room);
424+
public socketsJoin(room: Room | Room[]) {
425+
return new BroadcastOperator<EmitEvents, SocketData>(
426+
this.adapter
427+
).socketsJoin(room);
420428
}
421429

422430
/**
@@ -425,8 +433,10 @@ export class Namespace<
425433
* @param room
426434
* @public
427435
*/
428-
public socketsLeave(room: Room | Room[]): void {
429-
return new BroadcastOperator(this.adapter).socketsLeave(room);
436+
public socketsLeave(room: Room | Room[]) {
437+
return new BroadcastOperator<EmitEvents, SocketData>(
438+
this.adapter
439+
).socketsLeave(room);
430440
}
431441

432442
/**
@@ -435,7 +445,9 @@ export class Namespace<
435445
* @param close - whether to close the underlying connection
436446
* @public
437447
*/
438-
public disconnectSockets(close: boolean = false): void {
439-
return new BroadcastOperator(this.adapter).disconnectSockets(close);
448+
public disconnectSockets(close: boolean = false) {
449+
return new BroadcastOperator<EmitEvents, SocketData>(
450+
this.adapter
451+
).disconnectSockets(close);
440452
}
441453
}

‎lib/socket.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -902,10 +902,10 @@ export class Socket<
902902
}
903903
}
904904

905-
private newBroadcastOperator(): BroadcastOperator<EmitEvents, SocketData> {
905+
private newBroadcastOperator() {
906906
const flags = Object.assign({}, this.flags);
907907
this.flags = {};
908-
return new BroadcastOperator(
908+
return new BroadcastOperator<EmitEvents, SocketData>(
909909
this.adapter,
910910
new Set<Room>(),
911911
new Set<Room>([this.id]),

‎test/socket.io.test-d.ts

+9-1
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,10 @@ describe("server", () => {
209209
const srv = createServer();
210210
const sio = new Server<ClientToServerEvents, ServerToClientEvents>(srv);
211211
srv.listen(() => {
212+
sio.emit("helloFromServer", "hi", 1);
213+
sio.to("room").emit("helloFromServer", "hi", 1);
214+
sio.timeout(1000).emit("helloFromServer", "hi", 1);
215+
212216
sio.on("connection", (s) => {
213217
s.emit("helloFromServer", "hi", 10);
214218
done();
@@ -220,6 +224,10 @@ describe("server", () => {
220224
const srv = createServer();
221225
const sio = new Server<ClientToServerEvents, ServerToClientEvents>(srv);
222226
srv.listen(() => {
227+
expectError(sio.emit("helloFromClient"));
228+
expectError(sio.to("room").emit("helloFromClient"));
229+
expectError(sio.timeout(1000).to("room").emit("helloFromClient"));
230+
223231
sio.on("connection", (s) => {
224232
expectError(s.emit("helloFromClient", "hi"));
225233
expectError(s.emit("helloFromServer", "hi", 10, "10"));
@@ -234,7 +242,7 @@ describe("server", () => {
234242
});
235243
});
236244

237-
describe("listen and emit event maps", () => {
245+
describe("listen and emit event maps for the serverSideEmit method", () => {
238246
interface ClientToServerEvents {
239247
helloFromClient: (message: string) => void;
240248
}

0 commit comments

Comments
 (0)
Please sign in to comment.