Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/improsocial/impro
An extensible Bluesky client for web impro.social
Something went wrong. Try again.
JavaScript
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960export class EventEmitter { constructor() { this.__eventListeners = new Map(); }
on(event, listener) { const listeners = this.__eventListeners.get(event) || []; listeners.push(listener); this.__eventListeners.set(event, listeners); }
emit(event, data) { const listeners = this.__eventListeners.get(event) || []; listeners.forEach((listener) => listener(data)); }
async emitAsync(event, data) { const listeners = this.__eventListeners.get(event) || []; await Promise.all(listeners.map((listener) => listener(data))); }
off(event, listener) { const listeners = this.__eventListeners.get(event) || []; const index = listeners.indexOf(listener); if (index > -1) { listeners.splice(index, 1); } if (listeners.length === 0) { this.__eventListeners.delete(event); } else { this.__eventListeners.set(event, listeners); } }
removeAllListeners(event) { if (event) { this.__eventListeners.delete(event); } else { this.__eventListeners.clear(); } }}
export class EventTarget { constructor() { this.ee = new EventEmitter(); } addEventListener(event, listener) { this.ee.on(event, listener); }
removeEventListener(event, listener) { this.ee.off(event, listener); }
dispatchEvent(event) { this.ee.emit(event.type, event); }}