From 1766f047a43e5fe0fcf93e2762170c87c0ee8475 Mon Sep 17 00:00:00 2001 From: Oleksandr Honcharov <0976053529@ukr.net> Date: Thu, 13 Jun 2024 05:06:02 +0300 Subject: [PATCH] better typization for cef --- cef/src/index.ts | 19 ++++++++++++++----- cef/src/types/cef.ts | 7 +++++++ cef/src/types/client.ts | 8 ++++++++ cef/src/types/server.ts | 8 ++++++++ 4 files changed, 37 insertions(+), 5 deletions(-) diff --git a/cef/src/index.ts b/cef/src/index.ts index 1292694..10b2ef5 100644 --- a/cef/src/index.ts +++ b/cef/src/index.ts @@ -1,16 +1,19 @@ import rpc from 'rage-rpc' import { + _CefEventHasArgs, + _ClientEventHasArgs, + _ServerEventHasArgs, RageFW_CefArguments, RageFW_CefCallback, RageFW_CefReturn, RageFW_ClientArguments, RageFW_ClientReturn, - RageFW_ServerArguments, - RageFW_ServerReturn, RageFW_ICustomCefEvent, RageFW_ICustomClientEvent, RageFW_ICustomServerEvent, + RageFW_ServerArguments, + RageFW_ServerReturn, } from './types' class Cef { @@ -23,21 +26,27 @@ class Cef { public trigger( eventName: EventName, - args: RageFW_CefArguments, + ...args: _CefEventHasArgs extends true + ? [RageFW_CefArguments] + : [] ): Promise> { return rpc.call(eventName, args) } public triggerServer( eventName: EventName, - args: RageFW_ServerArguments, + ...args: _ServerEventHasArgs extends true + ? [RageFW_ServerArguments] + : [] ): Promise> { return rpc.callServer(eventName, args) } public triggerClient( eventName: EventName, - args: RageFW_ClientArguments, + ...args: _ClientEventHasArgs extends true + ? [RageFW_ClientArguments] + : [] ): Promise> { return rpc.callClient(eventName, args) } diff --git a/cef/src/types/cef.ts b/cef/src/types/cef.ts index 153fdbd..3304976 100644 --- a/cef/src/types/cef.ts +++ b/cef/src/types/cef.ts @@ -30,3 +30,10 @@ export type RageFW_CefReturn = ReturnType< export type RageFW_CefCallback = ( args: RageFW_CefArguments, ) => RageFW_CefReturn + +export type _CefEventHasArgs = + keyof RageFW_ICustomCefEvent extends never + ? false + : Parameters[0] extends undefined + ? false + : true diff --git a/cef/src/types/client.ts b/cef/src/types/client.ts index ad17504..89a6bdf 100644 --- a/cef/src/types/client.ts +++ b/cef/src/types/client.ts @@ -22,3 +22,11 @@ export type RageFW_ClientArguments = Parameters< export type RageFW_ClientReturn = ReturnType< RageFW_ICustomClientEvent[K] > + +export type _ClientEventHasArgs< + EventName extends keyof RageFW_ICustomClientEvent, +> = keyof RageFW_ICustomClientEvent extends never + ? false + : Parameters[0] extends undefined + ? false + : true diff --git a/cef/src/types/server.ts b/cef/src/types/server.ts index aec1962..01f9e71 100644 --- a/cef/src/types/server.ts +++ b/cef/src/types/server.ts @@ -22,3 +22,11 @@ export type RageFW_ServerArguments = Parameters< export type RageFW_ServerReturn = ReturnType< RageFW_ICustomServerEvent[K] > + +export type _ServerEventHasArgs< + EventName extends keyof RageFW_ICustomServerEvent, +> = keyof RageFW_ICustomServerEvent extends never + ? false + : Parameters[0] extends undefined + ? false + : true