From d7d1e2540419ebca39bec0fe87cea52dc14525e3 Mon Sep 17 00:00:00 2001 From: Deivu Date: Sun, 2 Jul 2023 14:24:35 +0800 Subject: [PATCH] feat: add raw ipc event --- src/Indomitable.ts | 7 +++++++ src/Util.ts | 3 ++- src/ipc/BaseIpc.ts | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Indomitable.ts b/src/Indomitable.ts index f68994b..b6ea2ff 100644 --- a/src/Indomitable.ts +++ b/src/Indomitable.ts @@ -104,6 +104,11 @@ export declare interface Indomitable { * @eventProperty */ on(event: 'clientReady', listener: (event: ShardEventData) => void): this; + /** + * Emitted on every ipc message the handler receives + * @eventProperty + */ + on(event: 'raw', listener: (event: unknown) => void): this; once(event: 'debug', listener: (message: string, data?: unknown) => void): this; once(event: 'message', listener: (message: Message|unknown) => void): this; once(event: 'error', listener: (error: unknown) => void): this; @@ -115,6 +120,7 @@ export declare interface Indomitable { once(event: 'shardResume', listener: (event: ShardEventData) => void): this; once(event: 'shardDisconnect', listener: (event: ShardEventData) => void): this; once(event: 'clientReady', listener: (event: ShardEventData) => void): this; + once(event: 'raw', listener: (event: unknown) => void): this; off(event: 'debug', listener: (message: string, data?: unknown) => void): this; off(event: 'message', listener: (message: Message|unknown) => void): this; off(event: 'error', listener: (error: unknown) => void): this; @@ -126,6 +132,7 @@ export declare interface Indomitable { off(event: 'shardResume', listener: (event: ShardEventData) => void): this; off(event: 'shardDisconnect', listener: (event: ShardEventData) => void): this; off(event: 'clientReady', listener: (event: ShardEventData) => void): this; + off(event: 'raw', listener: (event: unknown) => void): this; } /** diff --git a/src/Util.ts b/src/Util.ts index af58762..edfe49d 100644 --- a/src/Util.ts +++ b/src/Util.ts @@ -33,7 +33,8 @@ export enum LibraryEvents { SHARD_RECONNECT = 'shardReconnect', SHARD_RESUME = 'shardResume', SHARD_DISCONNECT = 'shardDisconnect', - CLIENT_READY = 'clientReady' + CLIENT_READY = 'clientReady', + RAW = 'raw' } /** diff --git a/src/ipc/BaseIpc.ts b/src/ipc/BaseIpc.ts index 23dcbea..fb034b3 100644 --- a/src/ipc/BaseIpc.ts +++ b/src/ipc/BaseIpc.ts @@ -47,6 +47,7 @@ export abstract class BaseIpc { */ public async handleRawResponse(data: Serializable, errorCallback: (error: unknown) => any): Promise { try { + this.manager.emit(LibraryEvents.RAW, data); if (!(data as any).internal) return this.manager.emit(LibraryEvents.MESSAGE, data); switch((data as RawIpcMessage).type) {