@glodon-aiot/agent-cli-sdk
Version:
aiot agent client js sdk
65 lines (64 loc) • 2.02 kB
JavaScript
var u = Object.defineProperty;
var v = Object.getOwnPropertySymbols;
var o = Object.prototype.hasOwnProperty, L = Object.prototype.propertyIsEnumerable;
var l = (s, e, n) => e in s ? u(s, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : s[e] = n, a = (s, e) => {
for (var n in e || (e = {}))
o.call(e, n) && l(s, n, e[n]);
if (v)
for (var n of v(e))
L.call(e, n) && l(s, n, e[n]);
return s;
};
var h = (s, e, n) => (l(s, typeof e != "symbol" ? e + "" : e, n), n);
import M from "./Logger.mjs";
const i = new M("[EventBus] ");
class $ {
constructor(e = !1) {
h(this, "eventListenerMap", {});
e && i.disable();
}
getEventListenerMap() {
return a({}, this.eventListenerMap);
}
on(e, n, r = !1) {
this.eventListenerMap[e] || (this.eventListenerMap[e] = []), r ? this.eventListenerMap[e].push({
fn: n,
once: !0
}) : this.eventListenerMap[e].push(n), i.log(`add event ${e} listener ${r ? ", call once" : ""}`);
}
once(e, n) {
this.on(e, n, !0);
}
off(e, n) {
if (this.eventListenerMap[e]) {
const r = this.eventListenerMap[e].findIndex((t) => {
if (typeof t == "function" && n === t)
return !0;
if (t = t, t.fn === n)
return !0;
});
r < 0 ? i.log(`event ${e} listener ${n.name} is not found`) : (this.eventListenerMap[e].splice(r, 1), i.log(`remove event ${e} listener`));
} else
i.log(`event ${e} listeners is empty`);
}
emit(e, n) {
if (!this.eventListenerMap[e]) {
i.log(`event ${e} listeners is empty`);
return;
}
const r = [];
for (let t = 0; t < this.eventListenerMap[e].length; t++) {
const f = this.eventListenerMap[e][t];
typeof f == "function" ? f(n) : r.push(f);
}
r.forEach((t) => {
t && (t.fn(n), this.off(e, t.fn));
}), i.log(`event ${e} is fired, has ${this.eventListenerMap[e].length} listeners`);
}
removeAllListeners() {
this.eventListenerMap = {};
}
}
export {
$ as default
};