@web-deps/event-manager
Version:
A JavaScript library for managing events. It can be used both on the frontend and backend.
65 lines (64 loc) • 1.52 kB
JavaScript
var v = Object.defineProperty;
var b = (t, r, e) => r in t ? v(t, r, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[r] = e;
var o = (t, r, e) => (b(t, typeof r != "symbol" ? r + "" : r, e), e);
class c {
constructor(r, e, s) {
o(this, "name");
o(this, "subject");
o(this, "data");
this.name = r, this.subject = e, s && (this.data = s);
}
}
class d {
}
class f extends d {
constructor(e, s) {
super();
o(this, "subject");
o(this, "events");
o(this, "observers", {});
this.subject = e, this.events = s;
for (const i of s)
this.observers[i] = [];
}
eventIsRegistered(e) {
return this.events.includes(e);
}
addObserver(e, s) {
if (!this.eventIsRegistered(e))
throw new Error(`
Failed to add observer.
Event "${e}" is not registered.
`);
this.observers[e].push(s);
}
removeObserver(e, s) {
if (!this.eventIsRegistered(e))
throw new Error(`
Failed to remove observer.
Event "${e}" is not registered.
`);
let i = this.observers[e];
const n = i.indexOf(s);
n > -1 && i.splice(n, 1);
}
notifyObservers(e, s) {
const i = this.observers[e];
for (const n of i)
n(
new c(e, this.subject, s)
);
}
emit(e, s) {
if (!this.eventIsRegistered(e))
throw new Error(`
Failed to emit event.
Event "${e}" is not registered.
`);
this.notifyObservers(e, s);
}
}
export {
c as Event,
f as EventEmitter
};