test-tw-publish
Version:
描述
54 lines (53 loc) • 1.79 kB
JavaScript
var v = Object.defineProperty;
var f = (s, t, n) => t in s ? v(s, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : s[t] = n;
var l = (s, t, n) => (f(s, typeof t != "symbol" ? t + "" : t, n), n);
const u = (s = 6) => Math.random().toString(36).slice(2, s + 2).padEnd(s, Math.floor(10 * Math.random()) + ""), _ = (s) => {
for (let t = s.length - 1; t >= 0; t--) {
const n = Math.floor(Math.random() * (t + 1)), e = s[n];
s[n] = s[t], s[t] = e;
}
return s;
};
class d {
constructor(t) {
l(this, "_event");
this._event = t.event || {};
}
subscribe(t, n) {
const e = t;
if (!this._event[e])
return console.error(`${e} 事件订阅失败,因为它不在事件 [` + Object.keys(this._event).join(",") + "] 范围内"), { id: "", success: !1 };
this._event[e] || (this._event[e] = []);
const i = ((o = 3, h = 6) => {
let r = [Date.now().toString(36)];
for (let c = o - 1; c >= 0; c--)
r.push(u(h));
return r = _(r), r.join("-");
})();
return this._event[e].push({ id: i, fn: n }), { id: i, success: !0 };
}
unsubscribe(t, n) {
const e = t;
if (e || n) {
if (e && !n && this._event[e])
this._event[e] = [];
else if (e && n && this._event[e]) {
const i = this._event[e] || [], o = i.findIndex((h) => h.id === n);
o !== -1 && i.splice(o, 1);
}
} else
for (const i in this._event)
this._event[i] = [];
}
publish(t, n) {
const e = t;
if (!this._event[e])
return void console.error(`${e} 事件发布失败,因为它不在事件 [` + Object.keys(this._event).join(",") + "] 范围内");
(this._event[e] || []).forEach((i) => {
i && i.fn && i.fn(n || null);
});
}
}
export {
d as default
};