UNPKG

@slippi/slippi-js

Version:
37 lines (34 loc) 1.02 kB
'use strict'; class TypedEventEmitter { constructor() { this.listeners = new Map(); } on(type, listener) { let listeners = this.listeners.get(type); if (!listeners) { listeners = new Set(); this.listeners.set(type, listeners); } listeners.add(listener); return () => this.off(type, listener); } once(type, listener) { const wrappedListener = (data) => { this.off(type, wrappedListener); listener(data); }; return this.on(type, wrappedListener); } off(type, listener) { var _a; (_a = this.listeners.get(type)) === null || _a === void 0 ? void 0 : _a.delete(listener); } removeListener(type, listener) { this.off(type, listener); } emit(type, data) { var _a; (_a = this.listeners.get(type)) === null || _a === void 0 ? void 0 : _a.forEach((fn) => fn(data)); } } exports.TypedEventEmitter = TypedEventEmitter;