refactor: event manager (#25481)

* refactor: event manager

* fix: broken downloadFile endpoint
This commit is contained in:
Jason Rasmussen
2026-01-23 18:02:23 -05:00
committed by GitHub
parent b52e8cd570
commit 4fedae4150
16 changed files with 45 additions and 116 deletions

View File

@@ -1,12 +1,11 @@
type BaseEvents = Record<string, unknown[]>;
type EventMap = Record<string, unknown[]>;
type PromiseLike<T> = Promise<T> | T;
export type EventCallback<Events extends BaseEvents, T extends keyof Events> = (
...args: Events[T]
) => Promise<void> | void;
export type EventItem<Events extends BaseEvents, T extends keyof Events = keyof Events> = {
export type EventCallback<E extends EventMap, T extends keyof E> = (...args: E[T]) => PromiseLike<unknown>;
export type EventItem<E extends EventMap, T extends keyof E = keyof E> = {
id: number;
event: T;
callback: EventCallback<Events, T>;
callback: EventCallback<E, T>;
};
let count = 1;
@@ -14,7 +13,7 @@ const nextId = () => count++;
const noop = () => {};
export class BaseEventManager<Events extends BaseEvents> {
export class BaseEventManager<Events extends EventMap> {
#callbacks: EventItem<Events>[] = $state([]);
on<T extends keyof Events>(event: T, callback?: EventCallback<Events, T>) {

View File

@@ -21,22 +21,5 @@ export function createEventEmitter<
};
}
function once<Ev extends ReservedOrUserEventNames<ReservedEvents, ListenEvents>>(
ev: Ev,
listener: ReservedOrUserListener<ReservedEvents, ListenEvents, Ev>,
) {
socket.once(ev, listener);
return () => {
socket.off(ev, listener);
};
}
function off<Ev extends ReservedOrUserEventNames<ReservedEvents, ListenEvents>>(
ev: Ev,
listener: ReservedOrUserListener<ReservedEvents, ListenEvents, Ev>,
) {
socket.off(ev, listener);
}
return { on, once, off };
return { on };
}