resolved types

This commit is contained in:
2024-06-11 15:14:20 +01:00
parent 5205a9e245
commit 3f48215eb1
5 changed files with 40 additions and 29 deletions
+14 -10
View File
@@ -1,29 +1,30 @@
import rpc from 'rage-rpc'
import {
RageFW_ClientEventReturn,
RageFW_ClientCallback,
RageFW_ClientEvent,
RageFW_ClientEventArguments,
RageFW_ClientServerCallback,
RageFW_ClientEventReturn,
RageFW_ClientServerEvent,
RageFW_ClientServerEventArguments,
RageFW_ClientServerEventReturn,
} from './types'
class Client {
public register<EventName extends RageFW_ClientServerEvent>(
public register<EventName extends RageFW_ClientEvent>(
eventName: EventName,
callback: RageFW_ClientServerCallback<EventName>,
callback: RageFW_ClientCallback<EventName>,
): void {
rpc.register(eventName, data => {
return callback(...data)
return callback(data)
})
}
}
class Player {
public triggerServer<EventName extends RageFW_ClientEvent>(
public triggerServer<EventName extends RageFW_ClientServerEvent>(
eventName: EventName,
...args: RageFW_ClientEventArguments<EventName>
): Promise<RageFW_ClientEventReturn<EventName>> {
return rpc.callServer(eventName, ...args)
args: RageFW_ClientServerEventArguments<EventName>,
): Promise<RageFW_ClientServerEventReturn<EventName>> {
return rpc.callServer(eventName, args)
}
}
@@ -31,3 +32,6 @@ export const fw = {
event: new Client(),
player: new Player(),
}
fw.player.triggerServer('customServerEvent', ['wer'])
fw.event.register('customClientEvent', ([arg1]) => true)
+19 -9
View File
@@ -5,20 +5,30 @@ import type {
RageFW_ICustomServerEvent,
} from 'rage-fw-shared-types'
export type RageFW_ClientEvent = keyof RageFW_ICustomServerEvent
// CLIENT
export type RageFW_ClientEventArguments<K extends RageFW_ClientEvent> =
K extends keyof RageFW_ICustomServerEvent
? Parameters<RageFW_ICustomServerEvent[K]>
: never
export type RageFW_ClientEvent = keyof RageFW_ICustomClientEvent
export type RageFW_ClientCallback<K extends RageFW_ClientEvent> = (
args: Parameters<RageFW_ICustomClientEvent[K]>,
) => RageFW_ClientEventReturn<K>
export type RageFW_ClientEventReturn<K extends RageFW_ClientEvent> =
K extends keyof RageFW_ICustomClientEvent
? ReturnType<RageFW_ICustomClientEvent[K]>
: never
export type RageFW_ClientServerEvent = keyof RageFW_ICustomClientEvent
// SERVER
export type RageFW_ClientServerCallback<K extends RageFW_ClientServerEvent> = (
...args: Parameters<RageFW_ICustomClientEvent[K]>
) => ReturnType<RageFW_ICustomClientEvent[K]>
export type RageFW_ClientServerEvent = keyof RageFW_ICustomServerEvent
export type RageFW_ClientServerEventArguments<
K extends RageFW_ClientServerEvent,
> = K extends keyof RageFW_ICustomServerEvent
? Parameters<RageFW_ICustomServerEvent[K]>
: never
export type RageFW_ClientServerEventReturn<K extends RageFW_ClientServerEvent> =
K extends keyof RageFW_ICustomServerEvent
? ReturnType<RageFW_ICustomServerEvent[K]>
: never