resolved types
This commit is contained in:
+14
-10
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user