@gotake/gotake-sdk
Version:
SDK for interacting with GoTake blockchain contracts
83 lines (82 loc) • 2.58 kB
JavaScript
;
/**
* 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;