Skip to content

Commit

Permalink
refactor(types): allow to apply types to socket.request
Browse files Browse the repository at this point in the history
  • Loading branch information
darrachequesne committed Oct 11, 2023
1 parent 9a2a83f commit 37d9fc6
Show file tree
Hide file tree
Showing 6 changed files with 317 additions and 52 deletions.
46 changes: 39 additions & 7 deletions lib/client.ts
Expand Up @@ -29,7 +29,8 @@ export class Client<
ListenEvents extends EventsMap,
EmitEvents extends EventsMap,
ServerSideEvents extends EventsMap,
SocketData = any
SocketData = any,
AdditionalRequestData = Record<string, never>
> {
public readonly conn: RawSocket;

Expand All @@ -38,17 +39,30 @@ export class Client<
ListenEvents,
EmitEvents,
ServerSideEvents,
SocketData
SocketData,
AdditionalRequestData
>;
private readonly encoder: Encoder;
private readonly decoder: Decoder;
private sockets: Map<
SocketId,
Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>
Socket<
ListenEvents,
EmitEvents,
ServerSideEvents,
SocketData,
AdditionalRequestData
>
> = new Map();
private nsps: Map<
string,
Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>
Socket<
ListenEvents,
EmitEvents,
ServerSideEvents,
SocketData,
AdditionalRequestData
>
> = new Map();
private connectTimeout?: NodeJS.Timeout;

Expand All @@ -60,7 +74,13 @@ export class Client<
* @package
*/
constructor(
server: Server<ListenEvents, EmitEvents, ServerSideEvents, SocketData>,
server: Server<
ListenEvents,
EmitEvents,
ServerSideEvents,
SocketData,
AdditionalRequestData
>,
conn: any
) {
this.server = server;
Expand Down Expand Up @@ -125,7 +145,13 @@ export class Client<
auth,
(
dynamicNspName:
| Namespace<ListenEvents, EmitEvents, ServerSideEvents, SocketData>
| Namespace<
ListenEvents,
EmitEvents,
ServerSideEvents,
SocketData,
AdditionalRequestData
>
| false
) => {
if (dynamicNspName) {
Expand Down Expand Up @@ -185,7 +211,13 @@ export class Client<
* @private
*/
_remove(
socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>
socket: Socket<
ListenEvents,
EmitEvents,
ServerSideEvents,
SocketData,
AdditionalRequestData
>
): void {
if (this.sockets.has(socket.id)) {
const nsp = this.sockets.get(socket.id)!.nsp.name;
Expand Down
67 changes: 56 additions & 11 deletions lib/index.ts
Expand Up @@ -138,22 +138,25 @@ export class Server<
ListenEvents extends EventsMap = DefaultEventsMap,
EmitEvents extends EventsMap = ListenEvents,
ServerSideEvents extends EventsMap = DefaultEventsMap,
SocketData = any
SocketData = any,
AdditionalRequestData = Record<string, never>
> extends StrictEventEmitter<
ServerSideEvents,
RemoveAcknowledgements<EmitEvents>,
ServerReservedEventsMap<
ListenEvents,
EmitEvents,
ServerSideEvents,
SocketData
SocketData,
AdditionalRequestData
>
> {
public readonly sockets: Namespace<
ListenEvents,
EmitEvents,
ServerSideEvents,
SocketData
SocketData,
AdditionalRequestData
>;
/**
* A reference to the underlying Engine.IO server.
Expand All @@ -174,11 +177,23 @@ export class Server<
*/
_nsps: Map<
string,
Namespace<ListenEvents, EmitEvents, ServerSideEvents, SocketData>
Namespace<
ListenEvents,
EmitEvents,
ServerSideEvents,
SocketData,
AdditionalRequestData
>
> = new Map();
private parentNsps: Map<
ParentNspNameMatchFn,
ParentNamespace<ListenEvents, EmitEvents, ServerSideEvents, SocketData>
ParentNamespace<
ListenEvents,
EmitEvents,
ServerSideEvents,
SocketData,
AdditionalRequestData
>
> = new Map();

/**
Expand All @@ -189,7 +204,13 @@ export class Server<
*/
private parentNamespacesFromRegExp: Map<
RegExp,
ParentNamespace<ListenEvents, EmitEvents, ServerSideEvents, SocketData>
ParentNamespace<
ListenEvents,
EmitEvents,
ServerSideEvents,
SocketData,
AdditionalRequestData
>
> = new Map();

private _adapter?: AdapterConstructor;
Expand Down Expand Up @@ -313,7 +334,13 @@ export class Server<
auth: { [key: string]: any },
fn: (
nsp:
| Namespace<ListenEvents, EmitEvents, ServerSideEvents, SocketData>
| Namespace<
ListenEvents,
EmitEvents,
ServerSideEvents,
SocketData,
AdditionalRequestData
>
| false
) => void
): void {
Expand All @@ -333,7 +360,7 @@ export class Server<
if (this._nsps.has(name)) {
// the namespace was created in the meantime
debug("dynamic namespace %s already exists", name);
return fn(this._nsps.get(name) as Namespace);
return fn(this._nsps.get(name)!);
}
const namespace = this.parentNsps.get(nextFn.value)!.createChild(name);
debug("dynamic namespace %s was created", name);
Expand Down Expand Up @@ -705,9 +732,21 @@ export class Server<
public of(
name: string | RegExp | ParentNspNameMatchFn,
fn?: (
socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>
socket: Socket<
ListenEvents,
EmitEvents,
ServerSideEvents,
SocketData,
AdditionalRequestData
>
) => void
): Namespace<ListenEvents, EmitEvents, ServerSideEvents, SocketData> {
): Namespace<
ListenEvents,
EmitEvents,
ServerSideEvents,
SocketData,
AdditionalRequestData
> {
if (typeof name === "function" || name instanceof RegExp) {
const parentNsp = new ParentNamespace(this);
debug("initializing parent namespace %s", parentNsp.name);
Expand Down Expand Up @@ -785,7 +824,13 @@ export class Server<
*/
public use(
fn: (
socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>,
socket: Socket<
ListenEvents,
EmitEvents,
ServerSideEvents,
SocketData,
AdditionalRequestData
>,
next: (err?: ExtendedError) => void
) => void
): this {
Expand Down

0 comments on commit 37d9fc6

Please sign in to comment.