rage-framework/client/src/core/client.ts

38 lines
1.0 KiB
TypeScript
Raw Normal View History

import { rpc } from './rpc'
2024-10-29 17:03:07 +00:00
import { Middleware } from './middleware'
import type * as T from '../types'
export class Client {
public register<EventName extends T.RageFW_ClientEvent>(
eventName: EventName,
callback: T.RageFW_ClientCallback<EventName>,
2024-10-29 17:03:07 +00:00
options?: {
middlewares?: T.RageFW_MiddlewareOptions<EventName>
},
): Client {
rpc.register<
Parameters<typeof callback>,
2024-10-29 17:03:07 +00:00
ReturnType<typeof callback> | Promise<unknown>,
EventName
2024-10-29 17:03:07 +00:00
>(eventName, async (...data) => {
if (!options?.middlewares) return await callback(...data)
await Middleware.process(options.middlewares, callback, data)
})
return this
}
public unregister<EventName extends T.RageFW_ClientEvent>(
eventName: EventName,
): Client {
rpc.unregister<EventName>(eventName)
return this
}
}
// new Client()
// .register('customClientEvent', async (a, b) => true)
// .unregister('customClientEvent')