feat: add onMany to BaseEventManager (#25492)

Use a map of events instead of array of tuples for better ergonomics.
This commit is contained in:
Min Idzelis
2026-01-26 10:34:26 -05:00
committed by GitHub
parent 836d22570f
commit 646bb372ab
4 changed files with 23 additions and 6 deletions

View File

@@ -30,6 +30,17 @@ export class BaseEventManager<Events extends EventMap> {
};
}
onMany(subscriptions: { [T in keyof Events]?: EventCallback<Events, T> }) {
const cleanups = Object.entries(subscriptions).map(([event, callback]) =>
this.on(event as keyof Events, callback as EventCallback<Events, keyof Events>),
);
return () => {
for (const cleanup of cleanups) {
cleanup();
}
};
}
emit<T extends keyof Events>(event: T, ...params: Events[T]) {
const listeners = this.getListeners(event);
for (const listener of listeners) {