UNPKG

alistair

Version:
40 lines (36 loc) 862 B
import { StrictMap } from '../chunk-JMMXLLD5.js'; // Copyright 2026 Alistair Smith https://github.com/alii/alistair // src/bus/index.ts var EventBus = class { listeners; constructor() { this.listeners = new StrictMap(); } on(key, listener) { const list = this.listeners.getOr(key, () => /* @__PURE__ */ new Set()); list.add(listener); return () => { this.off(key, listener); }; } off(key, listener) { const list = this.listeners.getElse(key, () => null); if (!list) { return; } list.delete(listener); if (list.size === 0) { this.listeners.delete(key); } } emit(key, ...args) { const listeners = this.listeners.getElse(key, () => null); if (!listeners) { return; } for (const listener of listeners) { listener(...args); } } }; export { EventBus };