UNPKG

@gotake/gotake-sdk

Version:

SDK for interacting with GoTake blockchain contracts

83 lines (82 loc) 2.58 kB
"use strict"; /** * Simple EventEmitter implementation for video status notifications */ Object.defineProperty(exports, "__esModule", { value: true }); exports.EventEmitter = void 0; /** * Simple EventEmitter implementation that allows subscribing to events and emitting events */ var EventEmitter = /** @class */ (function () { function EventEmitter() { this.events = new Map(); } /** * Subscribe to an event * @param event Event name * @param listener Function to call when event is emitted * @returns Unsubscribe function */ EventEmitter.prototype.on = function (event, listener) { if (!this.events.has(event)) { this.events.set(event, []); } var listeners = this.events.get(event); listeners.push(listener); // Return unsubscribe function return { unsubscribe: function () { var index = listeners.indexOf(listener); if (index !== -1) { listeners.splice(index, 1); } } }; }; /** * Emit an event with data * @param event Event name * @param args Arguments to pass to listeners */ EventEmitter.prototype.emit = function (event) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } var listeners = this.events.get(event); if (!listeners) return; for (var _a = 0, listeners_1 = listeners; _a < listeners_1.length; _a++) { var listener = listeners_1[_a]; try { listener.apply(void 0, args); } catch (error) { console.error("Error in event listener for ".concat(event, ":"), error); } } }; /** * Remove all listeners for an event or all events * @param event Optional event name, if not provided, all events are cleared */ EventEmitter.prototype.removeAllListeners = function (event) { if (event) { this.events.delete(event); } else { this.events.clear(); } }; /** * Check if an event has listeners * @param event Event name * @returns True if the event has listeners */ EventEmitter.prototype.hasListeners = function (event) { var listeners = this.events.get(event); return !!listeners && listeners.length > 0; }; return EventEmitter; }()); exports.EventEmitter = EventEmitter;