UNPKG

alistair

Version:
42 lines (37 loc) 911 B
'use strict'; var chunkMLRVSOE7_cjs = require('../chunk-MLRVSOE7.cjs'); // Copyright 2025 Alistair Smith https://github.com/alii/alistair // src/bus/index.ts var EventBus = class { listeners; constructor() { this.listeners = new chunkMLRVSOE7_cjs.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); } } }; exports.EventBus = EventBus;