{"version":3,"sources":["../src/helpers.ts","../src/DataArray.ts","../src/DataTree.ts","../src/Store.ts","../src/DataRouter.ts","../src/EventBus.ts","../src/EventResolver.ts","../src/EventBusRouter.ts"],"names":["fullKey","signals"],"mappings":"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","file":"index.cjs","sourcesContent":["let iid = new Date().valueOf();\nexport const uid = ():number => iid++;\n\nexport function tempID(): string {\n\treturn \"temp://\" + iid++;\n}\n\nexport function isTempID(v: string | number): boolean {\n\treturn (\n\t\ttypeof v === \"string\" && v.length === 20 && parseInt(v.substr(7)) > 1e12\n\t);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isSameObject(left: any, right: any): boolean {\n\tif (Object.keys(left).length !== Object.keys(right).length) return false;\n\t\n\tfor (const key in right) {\n\t\tconst v = left[key];\n\t\tconst nv = right[key];\n\n\t\tif (!isSame(v, nv)) return false;\n\t}\n\treturn true;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nexport function isSame(v: any, nv: any): boolean {\n\tconst primitiveValue =\n\t\ttypeof v === \"number\" ||\n\t\ttypeof v === \"string\" ||\n\t\ttypeof v === \"boolean\" ||\n\t\tv === null;\n\tif (primitiveValue) return v === nv;\n\n\t// different types of data\n\tif (typeof v !== typeof nv) return false;\n\t// data vs null\n\tif ((v === null || nv === null) && v !== nv) return false;\n\t// dates\n\tif (v instanceof Date && nv instanceof Date && v.getTime() !== nv.getTime())\n\t\treturn false;\n\t// arrays and objects\n\tif (typeof v === \"object\") {\n\t\tif (Array.isArray(v) && Array.isArray(nv)) {\n\t\t\tif (v.length !== nv.length) return false;\n\t\t\tfor (let i = v.length - 1; i >= 0; i--) {\n\t\t\t\tif (!isSame(v[i], nv[i])) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn isSameObject(v, nv);\n\t\t}\n\t}\n\n\treturn v === nv;\n}\n\nexport function deepCopy<T>(obj: T): T {\n\tif (typeof obj !== \"object\") return obj;\n\tif (obj === null) return obj;\n\tif (obj instanceof Date) return new Date(obj) as T;\n\tif (obj instanceof Array) return obj.map(deepCopy) as T;\n\n\tconst out: T = {} as T;\n\tfor (const key in obj) {\n\t\tout[key] = deepCopy(obj[key]);\n\t}\n\treturn out;\n}\n","import { uid } from \"./helpers\";\nimport type { IHasID, TID } from \"./types\";\n\nexport default class _DataArray<T extends IHasID> {\n\tprivate _pool: Map<TID, T>;\n\tprivate _data: T[];\n\tconstructor(raw: T[]) {\n\t\tthis._data = raw;\n\t\tthis._pool = new Map();\n\t\tfor (let i = 0; i < raw.length; i++) {\n\t\t\tconst obj = raw[i];\n\t\t\tthis._pool.set(obj.id, obj);\n\t\t}\n\t}\n\tadd(raw: T):void {\n\t\traw = { id: uid(), ...raw };\n\t\tthis._data.push(raw);\n\t\tthis._pool.set(raw.id, raw);\n\t}\n\tupdate(id: TID, raw: T):void {\n\t\tconst index = this._data.findIndex(link => link.id == id);\n\t\tconst old = this._data[index];\n\t\tconst updated = { ...old, ...raw };\n\t\tthis._data[index] = updated;\n\t\tthis._pool.set(updated.id, updated);\n\t}\n\tremove(id: TID):void {\n\t\tthis._data = this._data.filter(a => a.id != id);\n\t\tthis._pool.delete(id);\n\t}\n\tfilter(cb: (value: T) => boolean): void {\n\t\tthis._data = this._data.filter(x => {\n\t\t\tconst check = cb(x);\n\t\t\tif (!check) this._pool.delete(x.id);\n\t\t\treturn check;\n\t\t});\n\t}\n\tbyId(id: TID): T {\n\t\treturn this._pool.get(id);\n\t}\n\tmap<D>(cb: (value: T, index: number, array: T[]) => D): D[] {\n\t\treturn this._data.map(cb);\n\t}\n\tforEach(cb: (value: T, index: number, array: T[]) => void): void {\n\t\tthis._data.forEach(cb);\n\t}\n}\n","import type { IHasIDAndParent, TID } from \"./types\";\n\nexport default class DataTree<T extends IHasIDAndParent> {\n\tpublic _pool: Map<TID, T>;\n\n\tconstructor(raw?: T[]) {\n\t\tconst top: IHasIDAndParent = {\n\t\t\tid: 0,\n\t\t\t$level: 0,\n\t\t\tdata: [],\n\t\t\tparent: null,\n\t\t};\n\t\tconst items: Map<TID, T> = new Map();\n\t\titems.set(0, top as T);\n\t\tthis._pool = items;\n\n\t\tif (raw && raw.length) this.parse(raw, 0);\n\t}\n\tparse(raw: T[], parent: TID): void {\n\t\tconst items = this._pool;\n\n\t\tfor (let i = 0; i < raw.length; i++) {\n\t\t\tconst obj = raw[i];\n\t\t\tobj.parent = obj.parent || parent;\n\t\t\tobj.data = null;\n\t\t\titems.set(obj.id, obj);\n\t\t}\n\n\t\tfor (let i = 0; i < raw.length; i++) {\n\t\t\tconst obj = raw[i];\n\t\t\tconst temp = items.get(obj.parent);\n\t\t\tif (temp) {\n\t\t\t\tif (!temp.data) temp.data = [];\n\t\t\t\t// we are not recreating the array, as setLevel will do it anyway\n\t\t\t\ttemp.data.push(obj);\n\t\t\t}\n\t\t}\n\n\t\tconst top = items.get(parent);\n\t\tthis.setLevel(top, top.$level + 1, false);\n\t}\n\tadd(raw: T, index: number): void {\n\t\tconst parent = this._pool.get(raw.parent || 0);\n\t\traw.$level = parent.$level + 1;\n\t\tthis._pool.set(raw.id, raw);\n\n\t\tif (parent.data) {\n\t\t\tif (index === -1) parent.data = [...parent.data, raw];\n\t\t\telse insertElement(parent, index, raw);\n\t\t} else parent.data = [raw];\n\t}\n\taddAfter(raw: T, after: TID): void {\n\t\tif (!after) {\n\t\t\treturn this.add(raw, -1);\n\t\t}\n\n\t\tconst node = this.byId(after);\n\t\tconst parent = this.byId(node.parent);\n\t\tconst index = indexById(parent, node.id) + 1;\n\n\t\traw.parent = parent.id;\n\t\traw.$level = parent.$level + 1;\n\t\tthis.add(raw, index);\n\t}\n\tremove(id: TID): void {\n\t\tconst obj = this._pool.get(id);\n\t\tthis._remove(obj);\n\t\tconst parent = this._pool.get(obj.parent);\n\t\tparent.data = parent.data.filter(a => a.id != id);\n\t\tthis._clearBranch(parent);\n\t}\n\t_remove(obj: T): void {\n\t\tif (obj.data) {\n\t\t\tobj.data.forEach(i => this._remove(i as T));\n\t\t}\n\t\tthis._pool.delete(obj.id);\n\t}\n\tupdate<Data>(id: TID, values: Data): void {\n\t\tlet obj = this._pool.get(id);\n\t\tconst branch = this._pool.get(obj.parent);\n\t\tconst index = indexById(branch, obj.id);\n\n\t\tobj = { ...obj, ...values };\n\n\t\tif (branch && index >= 0) {\n\t\t\tbranch.data[index] = obj;\n\t\t\tbranch.data = [...branch.data];\n\t\t}\n\t\tthis._pool.set(obj.id, obj);\n\t}\n\tmove(id: TID, mode: string, target: TID): void {\n\t\tconst now = this._pool.get(id);\n\t\tconst dropChild = mode === \"child\";\n\t\tconst tobj = this._pool.get(target);\n\t\tconst tLevel = tobj.$level + (dropChild ? 1 : 0);\n\t\tif (!now || !tobj) return;\n\n\t\tconst parent = this._pool.get(now.parent);\n\t\tconst newParent = dropChild ? tobj : this._pool.get(tobj.parent);\n\t\tif (!newParent.data) newParent.data = [];\n\n\t\tconst index = indexById(parent, now.id);\n\t\tdeleteElement(parent, index);\n\t\tconst newIndex = dropChild\n\t\t\t? newParent.data.length\n\t\t\t: indexById(newParent, tobj.id) + (mode === \"after\" ? 1 : 0);\n\t\tinsertElement(newParent, newIndex, now);\n\n\t\tif (parent.id === newParent.id && index === newIndex) return null;\n\n\t\tnow.parent = newParent.id;\n\n\t\tif (now.$level !== tLevel) {\n\t\t\tnow.$level = tLevel;\n\t\t\tthis.setLevel(now, tLevel + 1, true);\n\t\t}\n\n\t\tthis.update(now.id, now);\n\t\tthis._clearBranch(parent);\n\t}\n\n\tprivate _clearBranch(obj: T): void {\n\t\tif (obj.data && !obj.data.length) {\n\t\t\tif (obj.open) delete obj.open;\n\t\t\tthis.update(obj.id, { data: null });\n\t\t}\n\t}\n\n\ttoArray(): T[] {\n\t\tconst out: T[] = [];\n\t\tconst kids = this._pool.get(0).data;\n\t\tif (kids) toArray(kids, out);\n\t\treturn out;\n\t}\n\tbyId(id: TID): T {\n\t\treturn this._pool.get(id);\n\t}\n\n\tgetBranch(id: TID): T[] {\n\t\treturn this._pool.get(id).data as T[];\n\t}\n\n\tforEach(cb: (value: T) => void): void {\n\t\tthis._pool.forEach((value, key) => {\n\t\t\tif (key !== 0) cb(value);\n\t\t});\n\t}\n\n\teachChild(cb: (value: T, index: number) => void, parent: TID): void {\n\t\tconst p = this.byId(parent);\n\t\tif (!p || !p.data) return;\n\t\tp.data.forEach((child, index) => {\n\t\t\tcb(this.byId(child.id), index);\n\t\t\tthis.eachChild(cb, child.id);\n\t\t});\n\t}\n\n\tsetLevel(root: IHasIDAndParent, level: number, copy: boolean): void {\n\t\tif (!root.data) return;\n\n\t\troot.data = root.data.map(child => {\n\t\t\tif (copy) {\n\t\t\t\tchild = { ...child };\n\t\t\t\tthis._pool.set(child.id, child as T);\n\t\t\t}\n\t\t\tchild.$level = level;\n\t\t\tif (child.data) this.setLevel(child, level + 1, copy);\n\t\t\treturn child;\n\t\t});\n\t}\n}\n\nfunction toArray<T extends IHasIDAndParent>(line: T[], out: T[]): void {\n\tline.forEach(a => {\n\t\tout.push(a);\n\t\tif (a.open === true) {\n\t\t\ttoArray(a.data, out);\n\t\t}\n\t});\n}\n\nfunction deleteElement(obj: IHasIDAndParent, index: number) {\n\tconst newData = [...obj.data];\n\tnewData.splice(index, 1);\n\tobj.data = newData;\n}\n\nfunction insertElement(\n\tobj: IHasIDAndParent,\n\tindex: number,\n\titem: IHasIDAndParent\n) {\n\tconst newData = [...obj.data];\n\tnewData.splice(index, 0, item);\n\tobj.data = newData;\n}\n\nfunction indexById(parentNode: IHasIDAndParent, id: TID) {\n\treturn parentNode?.data.findIndex(\n\t\t(child: IHasIDAndParent) => child.id === id\n\t);\n}\n","import type {\n\tDataHash,\n\tIPublicWritable,\n\tTAsyncSignals,\n\tTStateMode,\n\tTDataConfig,\n\tTWritableCreator,\n} from \"./types\";\n\n// export const STORE_SET_DEFAULT:TStateMode = 1;\nexport const STORE_SET_SILENT: TStateMode = 2;\n\ntype TState<Type> = {\n\t[Property in keyof Type]: IPublicWritable<Type[Property]>;\n};\n\ntype StoreConfig = {\n\twritable: TWritableCreator;\n\tasync: boolean;\n}\n\nexport default class Store<T extends DataHash> {\n\tprivate _state: TState<T>;\n\tprivate _values: T;\n\tprivate _writable: TWritableCreator;\n\tprivate _async: boolean;\n\n\tconstructor(config: StoreConfig) {\n\t\tif (config) {\n\t\t\tthis._writable = config.writable;\n\t\t\tthis._async = config.async;\n\t\t}\n\n\t\tthis._values = {} as T;\n\t\tthis._state = {} as TState<T>;\n\t}\n\tsetState(\n\t\tdata: Partial<T>,\n\t\tmode: TStateMode | TDataConfig = 0\n\t): TAsyncSignals {\n\t\tconst signals = {} as TAsyncSignals;\n\t\tthis._wrapProperties(\n\t\t\tdata,\n\t\t\tthis._state,\n\t\t\tthis._values,\n\t\t\t\"\",\n\t\t\tsignals,\n\t\t\tmode as TStateMode\n\t\t);\n\t\treturn signals;\n\t}\n\tgetState(): T {\n\t\treturn this._values;\n\t}\n\tgetReactive(): TState<T> {\n\t\treturn this._state;\n\t}\n\tprivate _wrapProperties(\n\t\tdata: any, // eslint-disable-line @typescript-eslint/no-explicit-any\n\t\tstate: any, // eslint-disable-line @typescript-eslint/no-explicit-any\n\t\tvalues: any, // eslint-disable-line @typescript-eslint/no-explicit-any\n\t\tparent: string,\n\t\tsignals: TAsyncSignals,\n\t\tmode: TStateMode\n\t) {\n\t\tfor (const key in data) {\n\t\t\tconst os = state[key];\n\t\t\tconst ov = values[key];\n\t\t\tconst nv = data[key];\n\n\t\t\tif (os) {\n\t\t\t\t// same value\n\t\t\t\tif (ov === nv && typeof nv !== \"object\") continue;\n\t\t\t\t// so maybe we have two dates\n\t\t\t\tif (nv instanceof Date) {\n\t\t\t\t\tif (ov instanceof Date && ov.getTime() === nv.getTime()) continue;\n\t\t\t\t} else {\n\t\t\t\t\t// we have two pointers to the same array of or same object\n\t\t\t\t\t// assume that they are different\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst fullKey = parent + (parent ? \".\" : \"\") + key;\n\n\t\t\tif (os) {\n\t\t\t\tif (os.__parse(nv, fullKey, signals, mode)) values[key] = nv;\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tif (mode & STORE_SET_SILENT) signals[fullKey] = os.__trigger;\n\t\t\t\telse os.__trigger();\n\t\t\t} else {\n\t\t\t\tif (nv && nv.__reactive) {\n\t\t\t\t\tstate[key] = this._wrapNested(nv, nv, fullKey, signals);\n\t\t\t\t} else {\n\t\t\t\t\tstate[key] = this._wrapWritable(nv);\n\t\t\t\t}\n\t\t\t\tvalues[key] = nv;\n\t\t\t}\n\t\t\tsignals[fullKey] = signals[fullKey] || null;\n\t\t}\n\t}\n\tprivate _wrapNested(\n\t\tdata: any, // eslint-disable-line @typescript-eslint/no-explicit-any\n\t\tvalues: any, // eslint-disable-line @typescript-eslint/no-explicit-any\n\t\tfullKey: string,\n\t\tsignals: TAsyncSignals\n\t) {\n\t\tconst state = this._wrapWritable(data);\n\t\tthis._wrapProperties(data, state, values, fullKey, signals, 0);\n\n\t\tstate.__parse = (\n\t\t\tv: any, // eslint-disable-line @typescript-eslint/no-explicit-any\n\t\t\tfullKey: string,\n\t\t\tsignals: TAsyncSignals,\n\t\t\tmode: TStateMode\n\t\t) => {\n\t\t\tthis._wrapProperties(v, state, values, fullKey, signals, mode);\n\t\t\treturn false;\n\t\t};\n\t\treturn state;\n\t}\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tprivate _wrapWritable(val: any): IPublicWritable<any> {\n\t\tconst ss = [] as ((v: typeof val) => void)[];\n\n\t\tconst __triggerSync = function () {\n\t\t\tfor (let i = 0; i < ss.length; i++) {\n\t\t\t\tss[i](val);\n\t\t\t}\n\t\t};\n\t\tconst __trigger = () => {\n\t\t\tif (ss.length) {\n\t\t\t\tif (this._async) setTimeout(__triggerSync, 1);\n\t\t\t\telse __triggerSync();\n\t\t\t}\n\t\t};\n\t\tconst subscribe = (fn: (v: typeof val) => void) => {\n\t\t\tss.push(fn);\n\n\t\t\tif (this._async) setTimeout(fn, 1, val);\n\t\t\telse fn(val);\n\n\t\t\treturn () => {\n\t\t\t\tconst i = ss.indexOf(fn);\n\t\t\t\tif (i >= 0) ss.splice(i, 1);\n\t\t\t};\n\t\t};\n\t\tconst __parse = function (v: typeof val) {\n\t\t\tval = v;\n\t\t\treturn true;\n\t\t};\n\n\t\treturn {\n\t\t\tsubscribe,\n\t\t\t__trigger,\n\t\t\t__parse,\n\t\t};\n\t}\n}\n\nexport function markReactive<T>(t: T, nested?: boolean): T {\n\tObject.defineProperty(t, \"__reactive\", {\n\t\tvalue: true,\n\t\tenumerable: false,\n\t\twritable: false,\n\t});\n\tif (nested === true) {\n\t\tfor (const key in t) {\n\t\t\tconst sub = t[key];\n\t\t\tif (typeof sub === \"object\" && sub !== null) {\n\t\t\t\tmarkReactive(sub, true);\n\t\t\t}\n\t\t}\n\t}\n\treturn t;\n}\n","import type {\n\tTDataConfig,\n\tTDataBlock,\n\tTParserHash,\n\tIStringHash,\n\tTAsyncSignals,\n\tTStateMode,\n} from \"./types\";\nimport type EventBus from \"./EventBus\";\nimport { STORE_SET_SILENT } from \"./Store\";\n\ntype TSetter<T> = (data: Partial<T>, mode?: TStateMode) => TAsyncSignals;\ntype TStoreLike<T> = {\n\tsetState: TSetter<T>;\n};\n\ntype AsyncUpdate = {\n\ttimer: number;\n\tsignals: TAsyncSignals;\n};\n\nexport default class DataRouter<T, D, E> {\n\tprivate _setter: TSetter<T>;\n\tprivate _routes: TDataConfig;\n\tprivate _triggers: Map<string, TDataBlock[]>;\n\tprivate _sources: Map<string, IStringHash<boolean>>;\n\tprivate _prev: Partial<D>;\n\tprivate _parsers: TParserHash;\n\tprivate _bus: EventBus<E, keyof E> | undefined;\n\tprivate _async: AsyncUpdate | null;\n\n\tconstructor(\n\t\ts: TSetter<T> | TStoreLike<T>,\n\t\tr: TDataConfig,\n\t\tp: TParserHash,\n\t\tb?: EventBus<E, keyof E>\n\t) {\n\t\tif (typeof s === \"function\") this._setter = s;\n\t\telse this._setter = s.setState.bind(s);\n\n\t\tthis._routes = r;\n\t\tthis._parsers = p;\n\t\tthis._prev = {};\n\n\t\tthis._triggers = new Map();\n\t\tthis._sources = new Map();\n\t\tthis._routes.forEach(a => {\n\t\t\ta.in.forEach(k => {\n\t\t\t\tconst arr = this._triggers.get(k) || [];\n\t\t\t\tarr.push(a);\n\t\t\t\tthis._triggers.set(k, arr);\n\t\t\t});\n\t\t\ta.out.forEach(k => {\n\t\t\t\tconst h: IStringHash<boolean> = this._sources.get(k) || {};\n\t\t\t\ta.in.forEach(i => (h[i] = true));\n\t\t\t\tthis._sources.set(k, h);\n\t\t\t});\n\t\t});\n\n\t\tthis._routes.forEach(a => {\n\t\t\ta.length = Math.max(\n\t\t\t\t...a.in.map(key => _calckSize(key, this._sources, 1))\n\t\t\t);\n\t\t});\n\n\t\tthis._bus = b;\n\t}\n\tinit(cfg: Partial<D>):void {\n\t\tconst next: Partial<T> = {};\n\t\tfor (const key in cfg) {\n\t\t\tif (this._prev[key] !== cfg[key]) {\n\t\t\t\tconst parser = this._parsers[key];\n\t\t\t\tnext[key as unknown as keyof T] = parser ? parser(cfg[key]) : cfg[key];\n\t\t\t}\n\t\t}\n\n\t\tthis._prev = this._prev ? { ...this._prev, ...cfg } : { ...cfg };\n\t\tthis.setState(next);\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tif (this._bus) this._bus.exec(\"init-state\" as any, next as any);\n\t}\n\tsetStateAsync(updates: Partial<T>): TAsyncSignals {\n\t\tconst signals = this._setter(updates, STORE_SET_SILENT);\n\t\tif (this._async) {\n\t\t\tObject.assign(this._async.signals, signals);\n\t\t} else {\n\t\t\tthis._async = {\n\t\t\t\tsignals,\n\t\t\t\ttimer: setTimeout(this._applyState.bind(this), 1) as unknown as number,\n\t\t\t};\n\t\t}\n\n\t\treturn signals;\n\t}\n\t_applyState():void {\n\t\tconst obj = this._async;\n\t\tif (!obj) return;\n\t\tthis._async = null;\n\n\t\t// trigger dynamic values calculation\n\t\tthis._triggerUpdates(obj.signals, []);\n\t\t// trigger external subscription\n\t\tfor (const key in obj.signals) {\n\t\t\tconst h = obj.signals[key];\n\t\t\tif (h) h();\n\t\t}\n\t}\n\tsetState(updates: Partial<T>, ctx: TDataConfig = []): TAsyncSignals {\n\t\tconst signals = this._setter(updates);\n\t\tthis._triggerUpdates(signals, ctx);\n\t\treturn signals;\n\t}\n\tprivate _triggerUpdates(signals: TAsyncSignals, ctx: TDataConfig) {\n\t\tconst keys = Object.keys(signals);\n\t\tconst needExec = !ctx.length;\n\t\tctx = ctx || [];\n\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tconst key = keys[i];\n\t\t\tconst trgs = this._triggers.get(key);\n\t\t\tif (trgs) {\n\t\t\t\ttrgs.forEach(a => {\n\t\t\t\t\tif (ctx.indexOf(a) == -1) {\n\t\t\t\t\t\tctx.push(a);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (needExec) {\n\t\t\tthis._execNext(ctx);\n\t\t}\n\t}\n\tprivate _execNext(ctx: TDataConfig) {\n\t\twhile (ctx.length) {\n\t\t\tctx.sort((a, b) => (a.length! < b.length! ? 1 : -1));\n\n\t\t\tconst next = ctx[ctx.length - 1];\n\t\t\tctx.splice(ctx.length - 1);\n\t\t\tnext.exec(ctx);\n\t\t}\n\t}\n}\n\nfunction _calckSize(\n\tkey: string,\n\tsources: Map<string, IStringHash<boolean>>,\n\tprev: number\n): number {\n\tconst next = sources.get(key);\n\tif (!next) return prev;\n\n\tconst sizes = Object.keys(next).map(a => _calckSize(a, sources, prev + 1));\n\treturn Math.max(...sizes);\n}\n","import type { IEventConfig, IEventBus } from \"./types\";\n\nexport default class EventBus<T, A extends keyof T> {\n\tprivate _handlers: {\n\t\t[key in A]: { (v: T[A]): void | boolean | Promise<boolean> }[];\n\t};\n\tprotected _nextHandler: IEventBus<T>;\n\tprotected _tag: WeakMap<\n\t\t{ (v: T[A]): void | boolean | Promise<boolean> },\n\t\tnumber | string | symbol\n\t>;\n\n\tconstructor() {\n\t\tthis._nextHandler = null;\n\t\tthis._handlers = {} as {\n\t\t\t[key in A]: { (v: T[A]): void | boolean | Promise<boolean> }[];\n\t\t};\n\t\tthis._tag = new WeakMap();\n\n\t\tthis.exec = this.exec.bind(this);\n\t}\n\ton(\n\t\tname: A,\n\t\thandler: (v: T[A]) => void | boolean | Promise<boolean>,\n\t\tconfig?: IEventConfig\n\t):void {\n\t\tlet prev = this._handlers[name];\n\t\tif (!prev) {\n\t\t\tprev = this._handlers[name] = [handler];\n\t\t} else {\n\t\t\tif (config && config.intercept) prev.unshift(handler);\n\t\t\telse prev.push(handler);\n\t\t}\n\n\t\tif (config && config.tag) this._tag.set(handler, config.tag);\n\t}\n\tintercept(\n\t\tname: A,\n\t\thandler: (v: T[A]) => void | boolean | Promise<boolean>,\n\t\tconfig?: IEventConfig\n\t):void {\n\t\tthis.on(name, handler, { ...config, intercept: true });\n\t}\n\tdetach(tag: number | string | symbol):void {\n\t\tfor (const key in this._handlers) {\n\t\t\tconst stack = this._handlers[key];\n\t\t\tfor (let i = stack.length - 1; i >= 0; i--) {\n\t\t\t\tif (this._tag.get(stack[i]) === tag) {\n\t\t\t\t\tstack.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tasync exec(name: A, ev: T[A]): Promise<T[A]> {\n\t\tconst stack = this._handlers[name];\n\t\tif (stack) {\n\t\t\tfor (let i = 0; i < stack.length; i++) {\n\t\t\t\tconst res = stack[i](ev);\n\t\t\t\tif (res === false) return;\n\t\t\t\tif (res && (res as Promise<boolean>).then) {\n\t\t\t\t\tconst res2 = await (res as Promise<boolean>);\n\t\t\t\t\tif (res2 === false) return;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (this._nextHandler) await this._nextHandler.exec(name, ev);\n\n\t\treturn ev;\n\t}\n\tsetNext(next: IEventBus<T>): IEventBus<T> {\n\t\treturn (this._nextHandler = next);\n\t}\n}\n","import type { IEventBus, CommonEvent } from \"./types\";\n\nexport default class EventResolver<T> implements IEventBus<T> {\n\tprivate _key: string;\n\tprotected _nextHandler: IEventBus<T>;\n\n\tconstructor(key: string) {\n\t\tthis._key = key;\n\t\tthis._nextHandler = null;\n\n\t\tthis.exec = this.exec.bind(this);\n\t}\n\tasync exec(name: keyof T, ev: T[keyof T]): Promise<T[keyof T]> {\n\t\tconst obj = ev as CommonEvent;\n\t\tif (obj && obj[this._key]) await obj[this._key](obj);\n\t\tif (this._nextHandler) {\n\t\t\tawait this._nextHandler.exec(name, ev);\n\t\t}\n\n\t\treturn ev;\n\t}\n\tsetNext(next: IEventBus<T>): IEventBus<T> {\n\t\treturn (this._nextHandler = next);\n\t}\n}\n","import type { IEventBus, TDispatch } from \"./types\";\n\nexport default class EventBusRouter<T> implements IEventBus<T> {\n\tprivate _dispatch: TDispatch<T>;\n\tprotected _nextHandler: IEventBus<T>;\n\n\tconstructor(dispatch: TDispatch<T>) {\n\t\tthis._nextHandler = null;\n\t\tthis._dispatch = dispatch;\n\t\tthis.exec = this.exec.bind(this);\n\t}\n\tasync exec(name: keyof T, ev: T[keyof T]): Promise<T[keyof T]> {\n\t\tthis._dispatch(name, ev);\n\t\tif (this._nextHandler) await this._nextHandler.exec(name, ev);\n\t\treturn ev;\n\t}\n\tsetNext(next: IEventBus<T>): IEventBus<T> {\n\t\treturn (this._nextHandler = next);\n\t}\n}\n"]}