From 59fc50fd41e0ae2018c3fca727c7bbee781574f9 Mon Sep 17 00:00:00 2001 From: PalmDevs Date: Sun, 14 Jan 2024 21:50:02 +0700 Subject: [PATCH] feat(packages/api): allow listening for invalid packets --- packages/api/src/classes/ClientGateway.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/packages/api/src/classes/ClientGateway.ts b/packages/api/src/classes/ClientGateway.ts index 8d01271..670f67a 100755 --- a/packages/api/src/classes/ClientGateway.ts +++ b/packages/api/src/classes/ClientGateway.ts @@ -127,15 +127,13 @@ export default class ClientGateway { #listen() { this.#socket.on('message', data => { const packet = deserializePacket(this._toBuffer(data)) - // TODO: maybe log this? - // Just ignore the invalid packet, we don't have to disconnect - if (!isServerPacket(packet)) return + + if (!isServerPacket(packet)) return this.#emitter.emit('invalidPacket', packet) this.#emitter.emit('packet', packet) switch (packet.op) { case ServerOperation.Hello: { - // eslint-disable-next-line no-case-declarations const data = Object.freeze((packet as Packet).d) this.config = data this.#emitter.emit('hello', data) @@ -186,8 +184,8 @@ export default class ClientGateway { protected _toBuffer(data: RawData) { if (data instanceof Buffer) return data - else if (data instanceof ArrayBuffer) return Buffer.from(data) - else return Buffer.concat(data) + if (data instanceof ArrayBuffer) return Buffer.from(data) + return Buffer.concat(data) } } @@ -202,12 +200,13 @@ export type ClientGatewayServerEventName = keyof typeof ServerOperation export type ClientGatewayEventHandlers = { [K in Uncapitalize]: ( - packet: Packet]>, + packet: Packet<(typeof ServerOperation)[Capitalize]>, ) => Promise | void } & { hello: (config: NonNullable) => Promise | void ready: () => Promise | void packet: (packet: Packet) => Promise | void + invalidPacket: (packet: Packet) => Promise | void disconnect: (reason: DisconnectReason) => Promise | void }