From 3f911a7aec438fe16fe1741787061f937bccca1e Mon Sep 17 00:00:00 2001 From: Danya H Date: Sun, 9 Jun 2024 17:19:06 +0100 Subject: [PATCH] registerMany untyped proposal --- server/src/index.ts | 32 +++++++++++++++++++++----------- shared/server/index.d.ts | 4 ++++ 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/server/src/index.ts b/server/src/index.ts index 228cda9..7805ebe 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -8,6 +8,22 @@ class Server implements RageFW_Server { ): void { rpc.register(eventName, callback as rpc.ProcedureListener) } + + public registerMany(events: { + [key in EventName]: RageFW_ServerEventCallback + }): void { + Object.keys(events).forEach(eventName => + // unknown[] ? + // rpc.register(eventName, (args: unknown[]) => + // Array.isArray(args) ? events[eventName as keyof typeof events](...args) : callback(args), + // ), + rpc.register(eventName, (args: unknown[]) => + Array.isArray(args) + ? events[eventName as EventName](args) + : events[eventName as EventName](args), + ), + ) + } } export const rage = { @@ -18,14 +34,8 @@ rage.event.register('customServerEvent', (player, arg1, arg2) => { return true }) -// public registerMultiple(events: { -// [name: string]: (player: PlayerMp, ...args: any[]) => any -// }): void -// -// registerMultiple(events: { [name: string]: (...args: any[]) => any }) { -// Object.entries(events).forEach(([name, callback]) => -// rpc.register(name, (data: any[]) => { -// return Array.isArray(data) ? callback(...data) : callback(data) -// }), -// ) -// } +rage.event.registerMany({ + customServerEvent: (player, arg1, arg2) => { + return true + }, +}) diff --git a/shared/server/index.d.ts b/shared/server/index.d.ts index d75272d..79be8e4 100644 --- a/shared/server/index.d.ts +++ b/shared/server/index.d.ts @@ -23,4 +23,8 @@ declare class RageFW_Server { eventName: EventName, callback: RageFW_ServerEventCallback, ): void + + declare registerMany(events: { + [key: EventName]: RageFW_ServerEventCallback + }): void }