@sphereon/ssi-sdk-web3.headless-provider
Version:
44 lines • 1.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.EventEmitter = void 0;
class EventEmitter {
constructor() {
this.listeners = Object.create(null);
}
emit(eventName, ...args) {
var _a;
(_a = this.listeners[eventName]) === null || _a === void 0 ? void 0 : _a.forEach((listener) => {
listener(...args);
});
return true;
}
on(eventName, listener) {
var _a, _b;
var _c;
(_a = (_c = this.listeners)[eventName]) !== null && _a !== void 0 ? _a : (_c[eventName] = []);
(_b = this.listeners[eventName]) === null || _b === void 0 ? void 0 : _b.push(listener);
return this;
}
off(eventName, listener) {
var _a;
const listeners = (_a = this.listeners[eventName]) !== null && _a !== void 0 ? _a : [];
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
for (const [i, listener_] of listeners.entries()) {
if (listener === listener_) {
listeners.splice(i, 1);
break;
}
}
return this;
}
once(eventName, listener) {
const cb = (...args) => {
this.off(eventName, cb);
listener(...args);
};
return this.on(eventName, cb);
}
}
exports.EventEmitter = EventEmitter;
//# sourceMappingURL=event-emitter.js.map