bobe-shared 0.0.4 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -280,36 +280,92 @@ class Queue {
280
280
  return (_a = this._last) == null ? void 0 : _a.v;
281
281
  }
282
282
  push(it) {
283
- this.len++;
284
- const { _last: last } = this;
285
- const item = { v: it };
286
- if (!last) {
287
- this._first = this._last = item;
288
- return;
283
+ return this.insetAfter(it, this._last);
284
+ }
285
+ insetAfter(it, anchor) {
286
+ var _a;
287
+ const item = { v: it, prev: null, next: null };
288
+ const prev = anchor || ((_a = this._first) == null ? void 0 : _a.prev);
289
+ const after = prev ? prev.next : this._first;
290
+ item.prev = prev;
291
+ item.next = after;
292
+ if (prev) {
293
+ if (prev.next === this._first) this._first = item;
294
+ prev.next = item;
295
+ } else {
296
+ this._first = item;
297
+ }
298
+ if (after) {
299
+ if (after.prev === this._last) this._last = item;
300
+ after.prev = item;
301
+ } else {
302
+ this._last = item;
289
303
  }
290
- item.prev = this._last;
291
- last.next = item;
292
- this._last = item;
304
+ this.len++;
305
+ return item;
293
306
  }
294
- shift() {
295
- const { _first: first } = this;
296
- if (!first) return void 0;
297
- this.len--;
298
- const { next } = first;
299
- first.next = void 0;
307
+ delete(item) {
308
+ const { prev, next } = item;
309
+ if (prev) {
310
+ if (item === this._first) this._first = next;
311
+ prev.next = next;
312
+ } else {
313
+ this._first = next;
314
+ }
300
315
  if (next) {
301
- next.prev = void 0;
316
+ if (item === this._last) this._last = prev;
317
+ next.prev = prev;
302
318
  } else {
303
- this._last = void 0;
319
+ this._last = prev;
304
320
  }
305
- this._first = next;
306
- return first.v;
321
+ item.next = null;
322
+ item.prev = null;
323
+ this.len--;
324
+ return item.v;
325
+ }
326
+ static forEach(firstItem, lastItem, fn) {
327
+ if (!firstItem) return;
328
+ let point = firstItem;
329
+ let next = point.next;
330
+ while (true) {
331
+ fn(point.v, point);
332
+ if (!next || point === lastItem) {
333
+ break;
334
+ }
335
+ point = next;
336
+ next = point.next;
337
+ }
338
+ }
339
+ forEach(fn) {
340
+ if (!this._first) return;
341
+ let point = this._first;
342
+ let next = point.next;
343
+ while (true) {
344
+ fn(point.v, point);
345
+ if (!next || point === this._last) {
346
+ break;
347
+ }
348
+ point = next;
349
+ next = point.next;
350
+ }
351
+ }
352
+ /** TODO: Queue.len 不准确 */
353
+ subRef(firstItem, lastItem) {
354
+ const subQueue = new Queue();
355
+ subQueue._first = firstItem;
356
+ subQueue._last = lastItem;
357
+ return subQueue;
358
+ }
359
+ shift() {
360
+ return this.delete(this._first);
307
361
  }
308
362
  clone() {
309
363
  const c = new Queue();
310
364
  let point = this._first;
311
- while (point != null) {
365
+ if (!point) return c;
366
+ while (true) {
312
367
  c.push(point.v);
368
+ if (point === this._last) break;
313
369
  point = point.next;
314
370
  }
315
371
  return c;
@@ -330,10 +386,10 @@ class SortMap {
330
386
  const { data } = this;
331
387
  let list = data[key];
332
388
  if (!list) {
333
- list = [];
389
+ list = new Queue();
334
390
  data[key] = list;
335
391
  }
336
- list.push(value);
392
+ return list.push(value);
337
393
  }
338
394
  }
339
395
  function pick(obj, keys) {
@@ -1 +1 @@
1
- {"version":3,"file":"bobe-shared.cjs.js","sources":["../src/event.ts","../src/util.ts"],"sourcesContent":["// @ts-nocheck\nexport type Func = (...args: any[]) => any;\n\nconst None = Symbol('none');\nexport const timestamp = globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;\n\nexport enum EventMode {\n Immediate,\n Queue,\n}\n\nexport enum ProcessStatus {\n None,\n Processing,\n Paused,\n}\n\nconst DefaultEventOpt = {\n mode: EventMode.Immediate,\n};\n\nconst ALL = '__ALL_KEY';\nconst myNull = null;\n\nexport type IEventOpt = Partial<typeof DefaultEventOpt>;\n\nexport type IScheduler = (doCall: Func, ...args: any[]) => void;\nexport type IGlobalScheduler = (goOn: () => void) => void;\nexport type ISetScheduler = {\n (type: string, scheduler: IScheduler): void;\n (scheduler: IGlobalScheduler): void;\n};\n\nexport type IEventItem = {\n type: string;\n args: any[];\n time: number;\n};\n\nexport class BaseEvent {\n static a = 19\n constructor(private opt: IEventOpt = {}) {\n this.opt = { ...DefaultEventOpt, ...opt };\n }\n scheduler?: IGlobalScheduler;\n eventQueue: IEventItem[] = [];\n status = ProcessStatus.None;\n subMap = new Map<string, Set<Func>>();\n on = (type: string | undefined, fn: Func) => {\n if (type == null) type = ALL;\n const suber = this.subMap.get(type) || new Set<Func>();\n suber.add(fn);\n this.subMap.set(type, suber);\n };\n\n off = (type: string | undefined, fn: Func) => {\n const suber = this.subMap.get(type ?? ALL);\n if (!suber) return;\n suber.delete(fn);\n };\n\n once = (type: string | undefined, fn: Func) => {\n fn['once'] = true;\n this.on(type, fn);\n };\n\n promiseOnce = (type: string | undefined) => {\n return new Promise((resolve) => {\n this.once(type, (...args) => {\n resolve(args)\n })\n })\n }\n\n setScheduler: ISetScheduler = (type: string | IGlobalScheduler, scheduler?: Func) => {\n if (typeof type !== 'string') {\n this.scheduler = type;\n return;\n }\n const set = this.subMap.get(type) || new Set<Func>();\n set['scheduler'] = scheduler;\n this.subMap.set(type, set);\n };\n\n callSub(it: Func, fns, args) {\n const doCall = (...args) => {\n it(...args);\n if (it['once'] === true) fns.delete(it);\n };\n const scheduler = it['scheduler'] || fns['scheduler'];\n\n if (scheduler) {\n scheduler(doCall, ...args);\n } else {\n it(...args);\n if (it['once'] === true) fns.delete(it);\n }\n }\n\n // construct 会初始化为下面其中一种\n emit = (type: string, ...args: any[]) => {\n this.opt.mode === EventMode.Immediate\n ? this.emitImmediate(type, ...args)\n : this.emitQueue(type, ...args);\n };\n \n emitImmediate(type: string, ...args: any[]) {\n const fns = this.subMap.get(type);\n const allSub = this.subMap.get(ALL);\n fns?.forEach((it) => this.callSub(it, fns, args));\n allSub?.forEach((it) => this.callSub(it, allSub, args));\n }\n\n emitQueue(type: string, ...args: any[]) {\n this.eventQueue.push({ type, args, time: timestamp() });\n this.process();\n }\n\n pause = () => (this.status = ProcessStatus.Paused);\n unPause = () => (this.status = ProcessStatus.None);\n start = () => {\n this.status = ProcessStatus.None;\n this.processQueue();\n };\n\n process = () => {\n if (this.scheduler) {\n return this.scheduler(this.recallScheduler);\n }\n return this.processQueue();\n }\n\n recallScheduler = () => {\n this.scheduler!(this.recallScheduler);\n };\n\n processQueue = () => {\n // 如果是挂起状态则直接结束\n if (this.status === ProcessStatus.Paused) return;\n this.status = ProcessStatus.Processing;\n\n let { type, args } = this.eventQueue.shift() || {};\n if (type) {\n // 在此过程中用户可通过 pause 和 start 同步控制事件处理\n const fns = this.subMap.get(type);\n const allSub = this.subMap.get(ALL);\n fns?.forEach((it) => this.callSub(it, fns, args));\n allSub?.forEach((it) => this.callSub(it, allSub, args));\n if (this.eventQueue.length > 0) {\n this.processQueue();\n }\n }\n //@ts-ignore 队列全部处理完成,如果执行过程中被 pause \n if(this.status !== ProcessStatus.Paused) {\n this.status = ProcessStatus.None;\n }\n };\n\n\n dispatchEvent = (iList: number[]) => {\n // 从大到小排序\n iList.sort((a, b) => b - a);\n iList.forEach((idx) => {\n const [item] = this.eventQueue.splice(idx, 1);\n const { type, args } = item || {};\n if (type && args) {\n this.emitImmediate(type, ...args);\n }\n });\n };\n\n clear = () => {\n this.subMap.clear();\n this.eventQueue = [];\n this.scheduler = undefined;\n };\n}\n\nexport class EventNode extends BaseEvent {\n constructor() {\n super({ mode: EventMode.Queue });\n }\n pipe = (type: string, ...fns: (Func | PipeNode)[]) => {\n const { firstNode, lastNode } = this.buildPip(fns);\n // 将第一个节点与事件源节点关联\n this.on(type, (...args) => firstNode.emit('process', args));\n return lastNode;\n };\n\n buildPip = (fns: (Func | PipeNode)[]) => {\n const startWithPipeNode = fns[0] instanceof PipeNode;\n let firstNode: PipeNode;\n // @ts-ignore\n let curNode: PipeNode = (firstNode = startWithPipeNode ? fns[0] : new PipeNode());\n let i = startWithPipeNode ? 1 : 0;\n let toAdd: Func[] = [];\n while (i < fns.length) {\n const it = fns[i];\n if (!(it instanceof PipeNode)) {\n toAdd.push(it);\n continue;\n }\n\n // 遇到下一个 pipeNode,把上一个完成\n curNode.pipList = toAdd;\n toAdd = [];\n curNode.on('finish', (args) => it.emit('process', args));\n\n curNode = it;\n i++;\n }\n // 处理最后一个节点\n curNode.markLast();\n curNode.pipList = toAdd;\n return {\n firstNode,\n lastNode: curNode,\n };\n };\n\n preProcessMap = new Map<string, [PipeNode, PipeNode]>();\n preProcess = (type: string, ...fns: (Func | PipeNode)[]) => {\n const { firstNode, lastNode } = this.buildPip(fns);\n this.preProcessMap.set(type, [firstNode, lastNode]);\n };\n\n emit = (type: string, ...args: any[]) => {\n const [firstNode, lastNode] = this.preProcessMap.get(type) || [];\n if (firstNode && lastNode) {\n lastNode.once('real-finish', (...args) => {\n // 等待预处理完成后再开始触发事件,且修正 args\n this.eventQueue.push({ type, args, time: timestamp() });\n this.start();\n });\n this.pause();\n firstNode.emit('process', args);\n } else {\n this.emitQueue(type, ...args);\n }\n };\n\n from(type: string, promise?: Promise<any>) {\n if (promise) {\n promise.then(\n (value) => {\n this.emit(type, value);\n },\n (err) => {\n this.emit(type, err);\n },\n );\n return;\n }\n\n return (...args: any[]) => {\n this.emit(type, ...args);\n };\n }\n}\n\nexport class PipeNode extends BaseEvent {\n public pipList: Func[] = [];\n\n onFinish = (fn: Func) => {\n this.on('real-finish', fn);\n };\n\n isLastNode = false;\n\n markLast = () => (this.isLastNode = true);\n\n constructor() {\n super({ mode: EventMode.Queue });\n this.on('process', async (args) => {\n let res;\n for (const pipeFn of this.pipList) {\n try {\n res = pipeFn(...args);\n if (res instanceof Promise) {\n res = await res;\n }\n } catch (error) {\n res = error;\n }\n args = [res];\n }\n if (this.isLastNode) {\n this.emitImmediate('real-finish', ...args);\n } else {\n this.emitImmediate('finish', args);\n }\n });\n }\n}","type QueueItem<T> = {\n v: T;\n prev?: QueueItem<T>;\n next?: QueueItem<T>;\n};\n\nexport class Queue<T> {\n _first?: QueueItem<T>;\n get first() {\n return this._first?.v!;\n }\n _last?: QueueItem<T>;\n get last() {\n return this._last?.v!;\n }\n len = 0;\n push(it: T) {\n this.len++;\n const { _last: last } = this;\n const item = { v: it } as QueueItem<T>;\n if (!last) {\n this._first = this._last = item;\n return;\n }\n item.prev = this._last!;\n last.next = item;\n this._last = item;\n }\n shift() {\n const { _first: first } = this;\n if (!first) return undefined;\n this.len--;\n\n const { next } = first;\n first.next = undefined;\n\n if (next) {\n next.prev = undefined;\n } else {\n this._last = undefined;\n }\n\n this._first = next;\n return first.v;\n }\n clone() {\n const c = new Queue<T>();\n let point = this._first;\n while (point != null) {\n c.push(point.v);\n point = point.next;\n }\n return c;\n }\n}\n\nexport function isNum(char: string) {\n return (\n char === '0' ||\n char === '1' ||\n char === '2' ||\n char === '3' ||\n char === '4' ||\n char === '5' ||\n char === '6' ||\n char === '7' ||\n char === '8' ||\n char === '9'\n );\n}\n\nexport const genKey = (v: string | number) => `${v}-${Date.now()}-${Math.random()}` as unknown as number;\n\nexport class SortMap<T> {\n data: Record<string | symbol, T[]> = {};\n clear() {\n this.data = {};\n }\n add(key: string | symbol, value: T) {\n const { data } = this;\n let list = data[key];\n if (!list) {\n list = [];\n data[key] = list;\n }\n list.push(value);\n }\n}\n\nexport function pick<T, K extends keyof T>(obj: T, keys: K[]) {\n return keys.reduce(\n (acc, key) => {\n acc[key] = obj[key];\n return acc;\n },\n {} as Pick<T, K>\n );\n}\n\n// const queue = new Queue([1,2,3,4]);\n// queue.shift()\n// queue.pop()\n// // @ts-ignore\n// queue.unshift('a')\n// // @ts-ignore\n// queue.push('b')\n// queue.shift()\n// queue.pop()\n// queue.shift()\n// queue.pop()\n// queue.shift()\n// queue.pop()\n// queue.push(10)\n// queue.array();\n"],"names":["EventMode","ProcessStatus","args"],"mappings":"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"}
1
+ {"version":3,"file":"bobe-shared.cjs.js","sources":["../src/event.ts","../src/util.ts"],"sourcesContent":["// @ts-nocheck\nexport type Func = (...args: any[]) => any;\n\nconst None = Symbol('none');\nexport const timestamp = globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;\n\nexport enum EventMode {\n Immediate,\n Queue,\n}\n\nexport enum ProcessStatus {\n None,\n Processing,\n Paused,\n}\n\nconst DefaultEventOpt = {\n mode: EventMode.Immediate,\n};\n\nconst ALL = '__ALL_KEY';\nconst myNull = null;\n\nexport type IEventOpt = Partial<typeof DefaultEventOpt>;\n\nexport type IScheduler = (doCall: Func, ...args: any[]) => void;\nexport type IGlobalScheduler = (goOn: () => void) => void;\nexport type ISetScheduler = {\n (type: string, scheduler: IScheduler): void;\n (scheduler: IGlobalScheduler): void;\n};\n\nexport type IEventItem = {\n type: string;\n args: any[];\n time: number;\n};\n\nexport class BaseEvent {\n static a = 19\n constructor(private opt: IEventOpt = {}) {\n this.opt = { ...DefaultEventOpt, ...opt };\n }\n scheduler?: IGlobalScheduler;\n eventQueue: IEventItem[] = [];\n status = ProcessStatus.None;\n subMap = new Map<string, Set<Func>>();\n on = (type: string | undefined, fn: Func) => {\n if (type == null) type = ALL;\n const suber = this.subMap.get(type) || new Set<Func>();\n suber.add(fn);\n this.subMap.set(type, suber);\n };\n\n off = (type: string | undefined, fn: Func) => {\n const suber = this.subMap.get(type ?? ALL);\n if (!suber) return;\n suber.delete(fn);\n };\n\n once = (type: string | undefined, fn: Func) => {\n fn['once'] = true;\n this.on(type, fn);\n };\n\n promiseOnce = (type: string | undefined) => {\n return new Promise((resolve) => {\n this.once(type, (...args) => {\n resolve(args)\n })\n })\n }\n\n setScheduler: ISetScheduler = (type: string | IGlobalScheduler, scheduler?: Func) => {\n if (typeof type !== 'string') {\n this.scheduler = type;\n return;\n }\n const set = this.subMap.get(type) || new Set<Func>();\n set['scheduler'] = scheduler;\n this.subMap.set(type, set);\n };\n\n callSub(it: Func, fns, args) {\n const doCall = (...args) => {\n it(...args);\n if (it['once'] === true) fns.delete(it);\n };\n const scheduler = it['scheduler'] || fns['scheduler'];\n\n if (scheduler) {\n scheduler(doCall, ...args);\n } else {\n it(...args);\n if (it['once'] === true) fns.delete(it);\n }\n }\n\n // construct 会初始化为下面其中一种\n emit = (type: string, ...args: any[]) => {\n this.opt.mode === EventMode.Immediate\n ? this.emitImmediate(type, ...args)\n : this.emitQueue(type, ...args);\n };\n \n emitImmediate(type: string, ...args: any[]) {\n const fns = this.subMap.get(type);\n const allSub = this.subMap.get(ALL);\n fns?.forEach((it) => this.callSub(it, fns, args));\n allSub?.forEach((it) => this.callSub(it, allSub, args));\n }\n\n emitQueue(type: string, ...args: any[]) {\n this.eventQueue.push({ type, args, time: timestamp() });\n this.process();\n }\n\n pause = () => (this.status = ProcessStatus.Paused);\n unPause = () => (this.status = ProcessStatus.None);\n start = () => {\n this.status = ProcessStatus.None;\n this.processQueue();\n };\n\n process = () => {\n if (this.scheduler) {\n return this.scheduler(this.recallScheduler);\n }\n return this.processQueue();\n }\n\n recallScheduler = () => {\n this.scheduler!(this.recallScheduler);\n };\n\n processQueue = () => {\n // 如果是挂起状态则直接结束\n if (this.status === ProcessStatus.Paused) return;\n this.status = ProcessStatus.Processing;\n\n let { type, args } = this.eventQueue.shift() || {};\n if (type) {\n // 在此过程中用户可通过 pause 和 start 同步控制事件处理\n const fns = this.subMap.get(type);\n const allSub = this.subMap.get(ALL);\n fns?.forEach((it) => this.callSub(it, fns, args));\n allSub?.forEach((it) => this.callSub(it, allSub, args));\n if (this.eventQueue.length > 0) {\n this.processQueue();\n }\n }\n //@ts-ignore 队列全部处理完成,如果执行过程中被 pause \n if(this.status !== ProcessStatus.Paused) {\n this.status = ProcessStatus.None;\n }\n };\n\n\n dispatchEvent = (iList: number[]) => {\n // 从大到小排序\n iList.sort((a, b) => b - a);\n iList.forEach((idx) => {\n const [item] = this.eventQueue.splice(idx, 1);\n const { type, args } = item || {};\n if (type && args) {\n this.emitImmediate(type, ...args);\n }\n });\n };\n\n clear = () => {\n this.subMap.clear();\n this.eventQueue = [];\n this.scheduler = undefined;\n };\n}\n\nexport class EventNode extends BaseEvent {\n constructor() {\n super({ mode: EventMode.Queue });\n }\n pipe = (type: string, ...fns: (Func | PipeNode)[]) => {\n const { firstNode, lastNode } = this.buildPip(fns);\n // 将第一个节点与事件源节点关联\n this.on(type, (...args) => firstNode.emit('process', args));\n return lastNode;\n };\n\n buildPip = (fns: (Func | PipeNode)[]) => {\n const startWithPipeNode = fns[0] instanceof PipeNode;\n let firstNode: PipeNode;\n // @ts-ignore\n let curNode: PipeNode = (firstNode = startWithPipeNode ? fns[0] : new PipeNode());\n let i = startWithPipeNode ? 1 : 0;\n let toAdd: Func[] = [];\n while (i < fns.length) {\n const it = fns[i];\n if (!(it instanceof PipeNode)) {\n toAdd.push(it);\n continue;\n }\n\n // 遇到下一个 pipeNode,把上一个完成\n curNode.pipList = toAdd;\n toAdd = [];\n curNode.on('finish', (args) => it.emit('process', args));\n\n curNode = it;\n i++;\n }\n // 处理最后一个节点\n curNode.markLast();\n curNode.pipList = toAdd;\n return {\n firstNode,\n lastNode: curNode,\n };\n };\n\n preProcessMap = new Map<string, [PipeNode, PipeNode]>();\n preProcess = (type: string, ...fns: (Func | PipeNode)[]) => {\n const { firstNode, lastNode } = this.buildPip(fns);\n this.preProcessMap.set(type, [firstNode, lastNode]);\n };\n\n emit = (type: string, ...args: any[]) => {\n const [firstNode, lastNode] = this.preProcessMap.get(type) || [];\n if (firstNode && lastNode) {\n lastNode.once('real-finish', (...args) => {\n // 等待预处理完成后再开始触发事件,且修正 args\n this.eventQueue.push({ type, args, time: timestamp() });\n this.start();\n });\n this.pause();\n firstNode.emit('process', args);\n } else {\n this.emitQueue(type, ...args);\n }\n };\n\n from(type: string, promise?: Promise<any>) {\n if (promise) {\n promise.then(\n (value) => {\n this.emit(type, value);\n },\n (err) => {\n this.emit(type, err);\n },\n );\n return;\n }\n\n return (...args: any[]) => {\n this.emit(type, ...args);\n };\n }\n}\n\nexport class PipeNode extends BaseEvent {\n public pipList: Func[] = [];\n\n onFinish = (fn: Func) => {\n this.on('real-finish', fn);\n };\n\n isLastNode = false;\n\n markLast = () => (this.isLastNode = true);\n\n constructor() {\n super({ mode: EventMode.Queue });\n this.on('process', async (args) => {\n let res;\n for (const pipeFn of this.pipList) {\n try {\n res = pipeFn(...args);\n if (res instanceof Promise) {\n res = await res;\n }\n } catch (error) {\n res = error;\n }\n args = [res];\n }\n if (this.isLastNode) {\n this.emitImmediate('real-finish', ...args);\n } else {\n this.emitImmediate('finish', args);\n }\n });\n }\n}","export type QueueItem<T> = {\n v: T;\n prev?: QueueItem<T>;\n next?: QueueItem<T>;\n};\n\nexport class Queue<T> {\n _first?: QueueItem<T>;\n get first() {\n return this._first?.v!;\n }\n _last?: QueueItem<T>;\n get last() {\n return this._last?.v!;\n }\n len = 0;\n push(it: T) {\n return this.insetAfter(it, this._last);\n }\n\n insetAfter(it: T, anchor: QueueItem<T>) {\n const item = { v: it, prev: null, next: null } as QueueItem<T>;\n const prev = anchor || this._first?.prev;\n const after = prev ? prev.next : this._first;\n item.prev = prev;\n item.next = after;\n\n if (prev) {\n // 子 Queue 逻辑\n if (prev.next === this._first) this._first = item;\n prev.next = item;\n } else {\n this._first = item;\n }\n if (after) {\n if (after.prev === this._last) this._last = item;\n after.prev = item;\n } else {\n this._last = item;\n }\n this.len++;\n return item;\n }\n\n delete(item: QueueItem<T>) {\n const { prev, next } = item;\n if (prev) {\n if (item === this._first) this._first = next;\n prev.next = next;\n } else {\n this._first = next;\n }\n if (next) {\n if (item === this._last) this._last = prev;\n next.prev = prev;\n } else {\n this._last = prev;\n }\n item.next = null;\n item.prev = null;\n this.len--;\n return item.v;\n }\n\n static forEach<V>(firstItem: QueueItem<V>, lastItem: QueueItem<V>, fn: (value: V, item: QueueItem<V>) => void) {\n if (!firstItem) return;\n let point = firstItem;\n let next = point.next;\n while (true) {\n fn(point.v, point);\n if (!next || point === lastItem) {\n break;\n }\n point = next;\n next = point.next;\n }\n }\n\n forEach(fn: (value: T, item: QueueItem<T>) => void) {\n if (!this._first) return;\n let point = this._first;\n let next = point.next;\n while (true) {\n fn(point.v, point);\n if (!next || point === this._last) {\n break;\n }\n point = next;\n next = point.next;\n }\n }\n /** TODO: Queue.len 不准确 */\n subRef(firstItem: QueueItem<T>, lastItem: QueueItem<T>) {\n const subQueue = new Queue<T>()\n subQueue._first = firstItem;\n subQueue._last = lastItem;\n return subQueue;\n }\n\n shift() {\n return this.delete(this._first);\n }\n\n clone() {\n const c = new Queue<T>();\n let point = this._first;\n if (!point) return c;\n while (true) {\n c.push(point.v);\n if (point === this._last) break;\n point = point.next;\n }\n return c;\n }\n}\n\nexport function isNum(char: string) {\n return (\n char === '0' ||\n char === '1' ||\n char === '2' ||\n char === '3' ||\n char === '4' ||\n char === '5' ||\n char === '6' ||\n char === '7' ||\n char === '8' ||\n char === '9'\n );\n}\n\nexport const genKey = (v: string | number) => `${v}-${Date.now()}-${Math.random()}` as unknown as number;\n\nexport class SortMap<T> {\n data: Record<string | symbol, Queue<T>> = {};\n clear() {\n this.data = {};\n }\n add(key: string | symbol, value: T) {\n const { data } = this;\n let list = data[key];\n if (!list) {\n list = new Queue<T>();\n data[key] = list;\n }\n return list.push(value);\n }\n}\n\nexport function pick<T, K extends keyof T>(obj: T, keys: K[]) {\n return keys.reduce(\n (acc, key) => {\n acc[key] = obj[key];\n return acc;\n },\n {} as Pick<T, K>\n );\n}\n\n// const queue = new Queue([1,2,3,4]);\n// queue.shift()\n// queue.pop()\n// // @ts-ignore\n// queue.unshift('a')\n// // @ts-ignore\n// queue.push('b')\n// queue.shift()\n// queue.pop()\n// queue.shift()\n// queue.pop()\n// queue.shift()\n// queue.pop()\n// queue.push(10)\n// queue.array();\n"],"names":["EventMode","ProcessStatus","args"],"mappings":"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"}
@@ -278,36 +278,92 @@ class Queue {
278
278
  return (_a = this._last) == null ? void 0 : _a.v;
279
279
  }
280
280
  push(it) {
281
- this.len++;
282
- const { _last: last } = this;
283
- const item = { v: it };
284
- if (!last) {
285
- this._first = this._last = item;
286
- return;
281
+ return this.insetAfter(it, this._last);
282
+ }
283
+ insetAfter(it, anchor) {
284
+ var _a;
285
+ const item = { v: it, prev: null, next: null };
286
+ const prev = anchor || ((_a = this._first) == null ? void 0 : _a.prev);
287
+ const after = prev ? prev.next : this._first;
288
+ item.prev = prev;
289
+ item.next = after;
290
+ if (prev) {
291
+ if (prev.next === this._first) this._first = item;
292
+ prev.next = item;
293
+ } else {
294
+ this._first = item;
295
+ }
296
+ if (after) {
297
+ if (after.prev === this._last) this._last = item;
298
+ after.prev = item;
299
+ } else {
300
+ this._last = item;
287
301
  }
288
- item.prev = this._last;
289
- last.next = item;
290
- this._last = item;
302
+ this.len++;
303
+ return item;
291
304
  }
292
- shift() {
293
- const { _first: first } = this;
294
- if (!first) return void 0;
295
- this.len--;
296
- const { next } = first;
297
- first.next = void 0;
305
+ delete(item) {
306
+ const { prev, next } = item;
307
+ if (prev) {
308
+ if (item === this._first) this._first = next;
309
+ prev.next = next;
310
+ } else {
311
+ this._first = next;
312
+ }
298
313
  if (next) {
299
- next.prev = void 0;
314
+ if (item === this._last) this._last = prev;
315
+ next.prev = prev;
300
316
  } else {
301
- this._last = void 0;
317
+ this._last = prev;
302
318
  }
303
- this._first = next;
304
- return first.v;
319
+ item.next = null;
320
+ item.prev = null;
321
+ this.len--;
322
+ return item.v;
323
+ }
324
+ static forEach(firstItem, lastItem, fn) {
325
+ if (!firstItem) return;
326
+ let point = firstItem;
327
+ let next = point.next;
328
+ while (true) {
329
+ fn(point.v, point);
330
+ if (!next || point === lastItem) {
331
+ break;
332
+ }
333
+ point = next;
334
+ next = point.next;
335
+ }
336
+ }
337
+ forEach(fn) {
338
+ if (!this._first) return;
339
+ let point = this._first;
340
+ let next = point.next;
341
+ while (true) {
342
+ fn(point.v, point);
343
+ if (!next || point === this._last) {
344
+ break;
345
+ }
346
+ point = next;
347
+ next = point.next;
348
+ }
349
+ }
350
+ /** TODO: Queue.len 不准确 */
351
+ subRef(firstItem, lastItem) {
352
+ const subQueue = new Queue();
353
+ subQueue._first = firstItem;
354
+ subQueue._last = lastItem;
355
+ return subQueue;
356
+ }
357
+ shift() {
358
+ return this.delete(this._first);
305
359
  }
306
360
  clone() {
307
361
  const c = new Queue();
308
362
  let point = this._first;
309
- while (point != null) {
363
+ if (!point) return c;
364
+ while (true) {
310
365
  c.push(point.v);
366
+ if (point === this._last) break;
311
367
  point = point.next;
312
368
  }
313
369
  return c;
@@ -328,10 +384,10 @@ class SortMap {
328
384
  const { data } = this;
329
385
  let list = data[key];
330
386
  if (!list) {
331
- list = [];
387
+ list = new Queue();
332
388
  data[key] = list;
333
389
  }
334
- list.push(value);
390
+ return list.push(value);
335
391
  }
336
392
  }
337
393
  function pick(obj, keys) {
@@ -1 +1 @@
1
- {"version":3,"file":"bobe-shared.esm.js","sources":["../src/event.ts","../src/util.ts"],"sourcesContent":["// @ts-nocheck\nexport type Func = (...args: any[]) => any;\n\nconst None = Symbol('none');\nexport const timestamp = globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;\n\nexport enum EventMode {\n Immediate,\n Queue,\n}\n\nexport enum ProcessStatus {\n None,\n Processing,\n Paused,\n}\n\nconst DefaultEventOpt = {\n mode: EventMode.Immediate,\n};\n\nconst ALL = '__ALL_KEY';\nconst myNull = null;\n\nexport type IEventOpt = Partial<typeof DefaultEventOpt>;\n\nexport type IScheduler = (doCall: Func, ...args: any[]) => void;\nexport type IGlobalScheduler = (goOn: () => void) => void;\nexport type ISetScheduler = {\n (type: string, scheduler: IScheduler): void;\n (scheduler: IGlobalScheduler): void;\n};\n\nexport type IEventItem = {\n type: string;\n args: any[];\n time: number;\n};\n\nexport class BaseEvent {\n static a = 19\n constructor(private opt: IEventOpt = {}) {\n this.opt = { ...DefaultEventOpt, ...opt };\n }\n scheduler?: IGlobalScheduler;\n eventQueue: IEventItem[] = [];\n status = ProcessStatus.None;\n subMap = new Map<string, Set<Func>>();\n on = (type: string | undefined, fn: Func) => {\n if (type == null) type = ALL;\n const suber = this.subMap.get(type) || new Set<Func>();\n suber.add(fn);\n this.subMap.set(type, suber);\n };\n\n off = (type: string | undefined, fn: Func) => {\n const suber = this.subMap.get(type ?? ALL);\n if (!suber) return;\n suber.delete(fn);\n };\n\n once = (type: string | undefined, fn: Func) => {\n fn['once'] = true;\n this.on(type, fn);\n };\n\n promiseOnce = (type: string | undefined) => {\n return new Promise((resolve) => {\n this.once(type, (...args) => {\n resolve(args)\n })\n })\n }\n\n setScheduler: ISetScheduler = (type: string | IGlobalScheduler, scheduler?: Func) => {\n if (typeof type !== 'string') {\n this.scheduler = type;\n return;\n }\n const set = this.subMap.get(type) || new Set<Func>();\n set['scheduler'] = scheduler;\n this.subMap.set(type, set);\n };\n\n callSub(it: Func, fns, args) {\n const doCall = (...args) => {\n it(...args);\n if (it['once'] === true) fns.delete(it);\n };\n const scheduler = it['scheduler'] || fns['scheduler'];\n\n if (scheduler) {\n scheduler(doCall, ...args);\n } else {\n it(...args);\n if (it['once'] === true) fns.delete(it);\n }\n }\n\n // construct 会初始化为下面其中一种\n emit = (type: string, ...args: any[]) => {\n this.opt.mode === EventMode.Immediate\n ? this.emitImmediate(type, ...args)\n : this.emitQueue(type, ...args);\n };\n \n emitImmediate(type: string, ...args: any[]) {\n const fns = this.subMap.get(type);\n const allSub = this.subMap.get(ALL);\n fns?.forEach((it) => this.callSub(it, fns, args));\n allSub?.forEach((it) => this.callSub(it, allSub, args));\n }\n\n emitQueue(type: string, ...args: any[]) {\n this.eventQueue.push({ type, args, time: timestamp() });\n this.process();\n }\n\n pause = () => (this.status = ProcessStatus.Paused);\n unPause = () => (this.status = ProcessStatus.None);\n start = () => {\n this.status = ProcessStatus.None;\n this.processQueue();\n };\n\n process = () => {\n if (this.scheduler) {\n return this.scheduler(this.recallScheduler);\n }\n return this.processQueue();\n }\n\n recallScheduler = () => {\n this.scheduler!(this.recallScheduler);\n };\n\n processQueue = () => {\n // 如果是挂起状态则直接结束\n if (this.status === ProcessStatus.Paused) return;\n this.status = ProcessStatus.Processing;\n\n let { type, args } = this.eventQueue.shift() || {};\n if (type) {\n // 在此过程中用户可通过 pause 和 start 同步控制事件处理\n const fns = this.subMap.get(type);\n const allSub = this.subMap.get(ALL);\n fns?.forEach((it) => this.callSub(it, fns, args));\n allSub?.forEach((it) => this.callSub(it, allSub, args));\n if (this.eventQueue.length > 0) {\n this.processQueue();\n }\n }\n //@ts-ignore 队列全部处理完成,如果执行过程中被 pause \n if(this.status !== ProcessStatus.Paused) {\n this.status = ProcessStatus.None;\n }\n };\n\n\n dispatchEvent = (iList: number[]) => {\n // 从大到小排序\n iList.sort((a, b) => b - a);\n iList.forEach((idx) => {\n const [item] = this.eventQueue.splice(idx, 1);\n const { type, args } = item || {};\n if (type && args) {\n this.emitImmediate(type, ...args);\n }\n });\n };\n\n clear = () => {\n this.subMap.clear();\n this.eventQueue = [];\n this.scheduler = undefined;\n };\n}\n\nexport class EventNode extends BaseEvent {\n constructor() {\n super({ mode: EventMode.Queue });\n }\n pipe = (type: string, ...fns: (Func | PipeNode)[]) => {\n const { firstNode, lastNode } = this.buildPip(fns);\n // 将第一个节点与事件源节点关联\n this.on(type, (...args) => firstNode.emit('process', args));\n return lastNode;\n };\n\n buildPip = (fns: (Func | PipeNode)[]) => {\n const startWithPipeNode = fns[0] instanceof PipeNode;\n let firstNode: PipeNode;\n // @ts-ignore\n let curNode: PipeNode = (firstNode = startWithPipeNode ? fns[0] : new PipeNode());\n let i = startWithPipeNode ? 1 : 0;\n let toAdd: Func[] = [];\n while (i < fns.length) {\n const it = fns[i];\n if (!(it instanceof PipeNode)) {\n toAdd.push(it);\n continue;\n }\n\n // 遇到下一个 pipeNode,把上一个完成\n curNode.pipList = toAdd;\n toAdd = [];\n curNode.on('finish', (args) => it.emit('process', args));\n\n curNode = it;\n i++;\n }\n // 处理最后一个节点\n curNode.markLast();\n curNode.pipList = toAdd;\n return {\n firstNode,\n lastNode: curNode,\n };\n };\n\n preProcessMap = new Map<string, [PipeNode, PipeNode]>();\n preProcess = (type: string, ...fns: (Func | PipeNode)[]) => {\n const { firstNode, lastNode } = this.buildPip(fns);\n this.preProcessMap.set(type, [firstNode, lastNode]);\n };\n\n emit = (type: string, ...args: any[]) => {\n const [firstNode, lastNode] = this.preProcessMap.get(type) || [];\n if (firstNode && lastNode) {\n lastNode.once('real-finish', (...args) => {\n // 等待预处理完成后再开始触发事件,且修正 args\n this.eventQueue.push({ type, args, time: timestamp() });\n this.start();\n });\n this.pause();\n firstNode.emit('process', args);\n } else {\n this.emitQueue(type, ...args);\n }\n };\n\n from(type: string, promise?: Promise<any>) {\n if (promise) {\n promise.then(\n (value) => {\n this.emit(type, value);\n },\n (err) => {\n this.emit(type, err);\n },\n );\n return;\n }\n\n return (...args: any[]) => {\n this.emit(type, ...args);\n };\n }\n}\n\nexport class PipeNode extends BaseEvent {\n public pipList: Func[] = [];\n\n onFinish = (fn: Func) => {\n this.on('real-finish', fn);\n };\n\n isLastNode = false;\n\n markLast = () => (this.isLastNode = true);\n\n constructor() {\n super({ mode: EventMode.Queue });\n this.on('process', async (args) => {\n let res;\n for (const pipeFn of this.pipList) {\n try {\n res = pipeFn(...args);\n if (res instanceof Promise) {\n res = await res;\n }\n } catch (error) {\n res = error;\n }\n args = [res];\n }\n if (this.isLastNode) {\n this.emitImmediate('real-finish', ...args);\n } else {\n this.emitImmediate('finish', args);\n }\n });\n }\n}","type QueueItem<T> = {\n v: T;\n prev?: QueueItem<T>;\n next?: QueueItem<T>;\n};\n\nexport class Queue<T> {\n _first?: QueueItem<T>;\n get first() {\n return this._first?.v!;\n }\n _last?: QueueItem<T>;\n get last() {\n return this._last?.v!;\n }\n len = 0;\n push(it: T) {\n this.len++;\n const { _last: last } = this;\n const item = { v: it } as QueueItem<T>;\n if (!last) {\n this._first = this._last = item;\n return;\n }\n item.prev = this._last!;\n last.next = item;\n this._last = item;\n }\n shift() {\n const { _first: first } = this;\n if (!first) return undefined;\n this.len--;\n\n const { next } = first;\n first.next = undefined;\n\n if (next) {\n next.prev = undefined;\n } else {\n this._last = undefined;\n }\n\n this._first = next;\n return first.v;\n }\n clone() {\n const c = new Queue<T>();\n let point = this._first;\n while (point != null) {\n c.push(point.v);\n point = point.next;\n }\n return c;\n }\n}\n\nexport function isNum(char: string) {\n return (\n char === '0' ||\n char === '1' ||\n char === '2' ||\n char === '3' ||\n char === '4' ||\n char === '5' ||\n char === '6' ||\n char === '7' ||\n char === '8' ||\n char === '9'\n );\n}\n\nexport const genKey = (v: string | number) => `${v}-${Date.now()}-${Math.random()}` as unknown as number;\n\nexport class SortMap<T> {\n data: Record<string | symbol, T[]> = {};\n clear() {\n this.data = {};\n }\n add(key: string | symbol, value: T) {\n const { data } = this;\n let list = data[key];\n if (!list) {\n list = [];\n data[key] = list;\n }\n list.push(value);\n }\n}\n\nexport function pick<T, K extends keyof T>(obj: T, keys: K[]) {\n return keys.reduce(\n (acc, key) => {\n acc[key] = obj[key];\n return acc;\n },\n {} as Pick<T, K>\n );\n}\n\n// const queue = new Queue([1,2,3,4]);\n// queue.shift()\n// queue.pop()\n// // @ts-ignore\n// queue.unshift('a')\n// // @ts-ignore\n// queue.push('b')\n// queue.shift()\n// queue.pop()\n// queue.shift()\n// queue.pop()\n// queue.shift()\n// queue.pop()\n// queue.push(10)\n// queue.array();\n"],"names":["EventMode","ProcessStatus","args"],"mappings":"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"}
1
+ {"version":3,"file":"bobe-shared.esm.js","sources":["../src/event.ts","../src/util.ts"],"sourcesContent":["// @ts-nocheck\nexport type Func = (...args: any[]) => any;\n\nconst None = Symbol('none');\nexport const timestamp = globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;\n\nexport enum EventMode {\n Immediate,\n Queue,\n}\n\nexport enum ProcessStatus {\n None,\n Processing,\n Paused,\n}\n\nconst DefaultEventOpt = {\n mode: EventMode.Immediate,\n};\n\nconst ALL = '__ALL_KEY';\nconst myNull = null;\n\nexport type IEventOpt = Partial<typeof DefaultEventOpt>;\n\nexport type IScheduler = (doCall: Func, ...args: any[]) => void;\nexport type IGlobalScheduler = (goOn: () => void) => void;\nexport type ISetScheduler = {\n (type: string, scheduler: IScheduler): void;\n (scheduler: IGlobalScheduler): void;\n};\n\nexport type IEventItem = {\n type: string;\n args: any[];\n time: number;\n};\n\nexport class BaseEvent {\n static a = 19\n constructor(private opt: IEventOpt = {}) {\n this.opt = { ...DefaultEventOpt, ...opt };\n }\n scheduler?: IGlobalScheduler;\n eventQueue: IEventItem[] = [];\n status = ProcessStatus.None;\n subMap = new Map<string, Set<Func>>();\n on = (type: string | undefined, fn: Func) => {\n if (type == null) type = ALL;\n const suber = this.subMap.get(type) || new Set<Func>();\n suber.add(fn);\n this.subMap.set(type, suber);\n };\n\n off = (type: string | undefined, fn: Func) => {\n const suber = this.subMap.get(type ?? ALL);\n if (!suber) return;\n suber.delete(fn);\n };\n\n once = (type: string | undefined, fn: Func) => {\n fn['once'] = true;\n this.on(type, fn);\n };\n\n promiseOnce = (type: string | undefined) => {\n return new Promise((resolve) => {\n this.once(type, (...args) => {\n resolve(args)\n })\n })\n }\n\n setScheduler: ISetScheduler = (type: string | IGlobalScheduler, scheduler?: Func) => {\n if (typeof type !== 'string') {\n this.scheduler = type;\n return;\n }\n const set = this.subMap.get(type) || new Set<Func>();\n set['scheduler'] = scheduler;\n this.subMap.set(type, set);\n };\n\n callSub(it: Func, fns, args) {\n const doCall = (...args) => {\n it(...args);\n if (it['once'] === true) fns.delete(it);\n };\n const scheduler = it['scheduler'] || fns['scheduler'];\n\n if (scheduler) {\n scheduler(doCall, ...args);\n } else {\n it(...args);\n if (it['once'] === true) fns.delete(it);\n }\n }\n\n // construct 会初始化为下面其中一种\n emit = (type: string, ...args: any[]) => {\n this.opt.mode === EventMode.Immediate\n ? this.emitImmediate(type, ...args)\n : this.emitQueue(type, ...args);\n };\n \n emitImmediate(type: string, ...args: any[]) {\n const fns = this.subMap.get(type);\n const allSub = this.subMap.get(ALL);\n fns?.forEach((it) => this.callSub(it, fns, args));\n allSub?.forEach((it) => this.callSub(it, allSub, args));\n }\n\n emitQueue(type: string, ...args: any[]) {\n this.eventQueue.push({ type, args, time: timestamp() });\n this.process();\n }\n\n pause = () => (this.status = ProcessStatus.Paused);\n unPause = () => (this.status = ProcessStatus.None);\n start = () => {\n this.status = ProcessStatus.None;\n this.processQueue();\n };\n\n process = () => {\n if (this.scheduler) {\n return this.scheduler(this.recallScheduler);\n }\n return this.processQueue();\n }\n\n recallScheduler = () => {\n this.scheduler!(this.recallScheduler);\n };\n\n processQueue = () => {\n // 如果是挂起状态则直接结束\n if (this.status === ProcessStatus.Paused) return;\n this.status = ProcessStatus.Processing;\n\n let { type, args } = this.eventQueue.shift() || {};\n if (type) {\n // 在此过程中用户可通过 pause 和 start 同步控制事件处理\n const fns = this.subMap.get(type);\n const allSub = this.subMap.get(ALL);\n fns?.forEach((it) => this.callSub(it, fns, args));\n allSub?.forEach((it) => this.callSub(it, allSub, args));\n if (this.eventQueue.length > 0) {\n this.processQueue();\n }\n }\n //@ts-ignore 队列全部处理完成,如果执行过程中被 pause \n if(this.status !== ProcessStatus.Paused) {\n this.status = ProcessStatus.None;\n }\n };\n\n\n dispatchEvent = (iList: number[]) => {\n // 从大到小排序\n iList.sort((a, b) => b - a);\n iList.forEach((idx) => {\n const [item] = this.eventQueue.splice(idx, 1);\n const { type, args } = item || {};\n if (type && args) {\n this.emitImmediate(type, ...args);\n }\n });\n };\n\n clear = () => {\n this.subMap.clear();\n this.eventQueue = [];\n this.scheduler = undefined;\n };\n}\n\nexport class EventNode extends BaseEvent {\n constructor() {\n super({ mode: EventMode.Queue });\n }\n pipe = (type: string, ...fns: (Func | PipeNode)[]) => {\n const { firstNode, lastNode } = this.buildPip(fns);\n // 将第一个节点与事件源节点关联\n this.on(type, (...args) => firstNode.emit('process', args));\n return lastNode;\n };\n\n buildPip = (fns: (Func | PipeNode)[]) => {\n const startWithPipeNode = fns[0] instanceof PipeNode;\n let firstNode: PipeNode;\n // @ts-ignore\n let curNode: PipeNode = (firstNode = startWithPipeNode ? fns[0] : new PipeNode());\n let i = startWithPipeNode ? 1 : 0;\n let toAdd: Func[] = [];\n while (i < fns.length) {\n const it = fns[i];\n if (!(it instanceof PipeNode)) {\n toAdd.push(it);\n continue;\n }\n\n // 遇到下一个 pipeNode,把上一个完成\n curNode.pipList = toAdd;\n toAdd = [];\n curNode.on('finish', (args) => it.emit('process', args));\n\n curNode = it;\n i++;\n }\n // 处理最后一个节点\n curNode.markLast();\n curNode.pipList = toAdd;\n return {\n firstNode,\n lastNode: curNode,\n };\n };\n\n preProcessMap = new Map<string, [PipeNode, PipeNode]>();\n preProcess = (type: string, ...fns: (Func | PipeNode)[]) => {\n const { firstNode, lastNode } = this.buildPip(fns);\n this.preProcessMap.set(type, [firstNode, lastNode]);\n };\n\n emit = (type: string, ...args: any[]) => {\n const [firstNode, lastNode] = this.preProcessMap.get(type) || [];\n if (firstNode && lastNode) {\n lastNode.once('real-finish', (...args) => {\n // 等待预处理完成后再开始触发事件,且修正 args\n this.eventQueue.push({ type, args, time: timestamp() });\n this.start();\n });\n this.pause();\n firstNode.emit('process', args);\n } else {\n this.emitQueue(type, ...args);\n }\n };\n\n from(type: string, promise?: Promise<any>) {\n if (promise) {\n promise.then(\n (value) => {\n this.emit(type, value);\n },\n (err) => {\n this.emit(type, err);\n },\n );\n return;\n }\n\n return (...args: any[]) => {\n this.emit(type, ...args);\n };\n }\n}\n\nexport class PipeNode extends BaseEvent {\n public pipList: Func[] = [];\n\n onFinish = (fn: Func) => {\n this.on('real-finish', fn);\n };\n\n isLastNode = false;\n\n markLast = () => (this.isLastNode = true);\n\n constructor() {\n super({ mode: EventMode.Queue });\n this.on('process', async (args) => {\n let res;\n for (const pipeFn of this.pipList) {\n try {\n res = pipeFn(...args);\n if (res instanceof Promise) {\n res = await res;\n }\n } catch (error) {\n res = error;\n }\n args = [res];\n }\n if (this.isLastNode) {\n this.emitImmediate('real-finish', ...args);\n } else {\n this.emitImmediate('finish', args);\n }\n });\n }\n}","export type QueueItem<T> = {\n v: T;\n prev?: QueueItem<T>;\n next?: QueueItem<T>;\n};\n\nexport class Queue<T> {\n _first?: QueueItem<T>;\n get first() {\n return this._first?.v!;\n }\n _last?: QueueItem<T>;\n get last() {\n return this._last?.v!;\n }\n len = 0;\n push(it: T) {\n return this.insetAfter(it, this._last);\n }\n\n insetAfter(it: T, anchor: QueueItem<T>) {\n const item = { v: it, prev: null, next: null } as QueueItem<T>;\n const prev = anchor || this._first?.prev;\n const after = prev ? prev.next : this._first;\n item.prev = prev;\n item.next = after;\n\n if (prev) {\n // 子 Queue 逻辑\n if (prev.next === this._first) this._first = item;\n prev.next = item;\n } else {\n this._first = item;\n }\n if (after) {\n if (after.prev === this._last) this._last = item;\n after.prev = item;\n } else {\n this._last = item;\n }\n this.len++;\n return item;\n }\n\n delete(item: QueueItem<T>) {\n const { prev, next } = item;\n if (prev) {\n if (item === this._first) this._first = next;\n prev.next = next;\n } else {\n this._first = next;\n }\n if (next) {\n if (item === this._last) this._last = prev;\n next.prev = prev;\n } else {\n this._last = prev;\n }\n item.next = null;\n item.prev = null;\n this.len--;\n return item.v;\n }\n\n static forEach<V>(firstItem: QueueItem<V>, lastItem: QueueItem<V>, fn: (value: V, item: QueueItem<V>) => void) {\n if (!firstItem) return;\n let point = firstItem;\n let next = point.next;\n while (true) {\n fn(point.v, point);\n if (!next || point === lastItem) {\n break;\n }\n point = next;\n next = point.next;\n }\n }\n\n forEach(fn: (value: T, item: QueueItem<T>) => void) {\n if (!this._first) return;\n let point = this._first;\n let next = point.next;\n while (true) {\n fn(point.v, point);\n if (!next || point === this._last) {\n break;\n }\n point = next;\n next = point.next;\n }\n }\n /** TODO: Queue.len 不准确 */\n subRef(firstItem: QueueItem<T>, lastItem: QueueItem<T>) {\n const subQueue = new Queue<T>()\n subQueue._first = firstItem;\n subQueue._last = lastItem;\n return subQueue;\n }\n\n shift() {\n return this.delete(this._first);\n }\n\n clone() {\n const c = new Queue<T>();\n let point = this._first;\n if (!point) return c;\n while (true) {\n c.push(point.v);\n if (point === this._last) break;\n point = point.next;\n }\n return c;\n }\n}\n\nexport function isNum(char: string) {\n return (\n char === '0' ||\n char === '1' ||\n char === '2' ||\n char === '3' ||\n char === '4' ||\n char === '5' ||\n char === '6' ||\n char === '7' ||\n char === '8' ||\n char === '9'\n );\n}\n\nexport const genKey = (v: string | number) => `${v}-${Date.now()}-${Math.random()}` as unknown as number;\n\nexport class SortMap<T> {\n data: Record<string | symbol, Queue<T>> = {};\n clear() {\n this.data = {};\n }\n add(key: string | symbol, value: T) {\n const { data } = this;\n let list = data[key];\n if (!list) {\n list = new Queue<T>();\n data[key] = list;\n }\n return list.push(value);\n }\n}\n\nexport function pick<T, K extends keyof T>(obj: T, keys: K[]) {\n return keys.reduce(\n (acc, key) => {\n acc[key] = obj[key];\n return acc;\n },\n {} as Pick<T, K>\n );\n}\n\n// const queue = new Queue([1,2,3,4]);\n// queue.shift()\n// queue.pop()\n// // @ts-ignore\n// queue.unshift('a')\n// // @ts-ignore\n// queue.push('b')\n// queue.shift()\n// queue.pop()\n// queue.shift()\n// queue.pop()\n// queue.shift()\n// queue.pop()\n// queue.push(10)\n// queue.array();\n"],"names":["EventMode","ProcessStatus","args"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIO,MAAM,SAAA,GAAY,UAAA,CAAW,WAAA,GAAc,UAAA,CAAW,WAAA,CAAY,IAAI,IAAA,CAAK,UAAA,CAAW,WAAW,CAAA,GAAI,IAAA,CAAK;AAE1G,IAAK,SAAA,qBAAAA,UAAAA,KAAL;AACL,EAAAA,UAAAA,CAAAA,UAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AACA,EAAAA,UAAAA,CAAAA,UAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AAFU,EAAA,OAAAA,UAAAA;AAAA,CAAA,EAAA,SAAA,IAAA,EAAA;AAKL,IAAK,aAAA,qBAAAC,cAAAA,KAAL;AACL,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AAHU,EAAA,OAAAA,cAAAA;AAAA,CAAA,EAAA,aAAA,IAAA,EAAA;AAMZ,MAAM,eAAA,GAAkB;AAAA,EACtB,IAAA,EAAM,CAAA;AACR,CAAA;AAEA,MAAM,GAAA,GAAM,WAAA;AAkBL,MAAM,SAAA,CAAU;AAAA,EAErB,WAAA,CAAoB,GAAA,GAAiB,EAAC,EAAG;AAArB,IAAA,IAAA,CAAA,GAAA,GAAA,GAAA;AAIpB,IAAA,IAAA,CAAA,UAAA,GAA2B,EAAC;AAC5B,IAAA,IAAA,CAAA,MAAA,GAAS,CAAA;AACT,IAAA,IAAA,CAAA,MAAA,uBAAa,GAAA,EAAuB;AACpC,IAAA,IAAA,CAAA,EAAA,GAAK,CAAC,MAA0B,EAAA,KAAa;AAC3C,MAAA,IAAI,IAAA,IAAQ,MAAM,IAAA,GAAO,GAAA;AACzB,MAAA,MAAM,QAAQ,IAAA,CAAK,MAAA,CAAO,IAAI,IAAI,CAAA,wBAAS,GAAA,EAAU;AACrD,MAAA,KAAA,CAAM,IAAI,EAAE,CAAA;AACZ,MAAA,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,IAAA,EAAM,KAAK,CAAA;AAAA,IAC7B,CAAA;AAEA,IAAA,IAAA,CAAA,GAAA,GAAM,CAAC,MAA0B,EAAA,KAAa;AAC5C,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,sBAAQ,GAAG,CAAA;AACzC,MAAA,IAAI,CAAC,KAAA,EAAO;AACZ,MAAA,KAAA,CAAM,OAAO,EAAE,CAAA;AAAA,IACjB,CAAA;AAEA,IAAA,IAAA,CAAA,IAAA,GAAO,CAAC,MAA0B,EAAA,KAAa;AAC7C,MAAA,EAAA,CAAG,MAAM,CAAA,GAAI,IAAA;AACb,MAAA,IAAA,CAAK,EAAA,CAAG,MAAM,EAAE,CAAA;AAAA,IAClB,CAAA;AAEA,IAAA,IAAA,CAAA,WAAA,GAAc,CAAC,IAAA,KAA6B;AAC1C,MAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,KAAY;AAC9B,QAAA,IAAA,CAAK,IAAA,CAAK,IAAA,EAAM,CAAA,GAAI,IAAA,KAAS;AAC3B,UAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,QACd,CAAC,CAAA;AAAA,MACH,CAAC,CAAA;AAAA,IACH,CAAA;AAEA,IAAA,IAAA,CAAA,YAAA,GAA8B,CAAC,MAAiC,SAAA,KAAqB;AACnF,MAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,QAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AACjB,QAAA;AAAA,MACF;AACA,MAAA,MAAM,MAAM,IAAA,CAAK,MAAA,CAAO,IAAI,IAAI,CAAA,wBAAS,GAAA,EAAU;AACnD,MAAA,GAAA,CAAI,WAAW,CAAA,GAAI,SAAA;AACnB,MAAA,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,IAAA,EAAM,GAAG,CAAA;AAAA,IAC3B,CAAA;AAkBA;AAAA,IAAA,IAAA,CAAA,IAAA,GAAO,CAAC,SAAiB,IAAA,KAAgB;AACvC,MAAA,IAAA,CAAK,GAAA,CAAI,IAAA,KAAS,CAAA,mBACd,IAAA,CAAK,aAAA,CAAc,IAAA,EAAM,GAAG,IAAI,CAAA,GAChC,IAAA,CAAK,SAAA,CAAU,IAAA,EAAM,GAAG,IAAI,CAAA;AAAA,IAClC,CAAA;AAcA,IAAA,IAAA,CAAA,KAAA,GAAQ,MAAO,KAAK,MAAA,GAAS,CAAA;AAC7B,IAAA,IAAA,CAAA,OAAA,GAAU,MAAO,KAAK,MAAA,GAAS,CAAA;AAC/B,IAAA,IAAA,CAAA,KAAA,GAAQ,MAAM;AACZ,MAAA,IAAA,CAAK,MAAA,GAAS,CAAA;AACd,MAAA,IAAA,CAAK,YAAA,EAAa;AAAA,IACpB,CAAA;AAEA,IAAA,IAAA,CAAA,OAAA,GAAU,MAAM;AACd,MAAA,IAAI,KAAK,SAAA,EAAW;AAClB,QAAA,OAAO,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,eAAe,CAAA;AAAA,MAC5C;AACA,MAAA,OAAO,KAAK,YAAA,EAAa;AAAA,IAC3B,CAAA;AAEA,IAAA,IAAA,CAAA,eAAA,GAAkB,MAAM;AACtB,MAAA,IAAA,CAAK,SAAA,CAAW,KAAK,eAAe,CAAA;AAAA,IACtC,CAAA;AAEA,IAAA,IAAA,CAAA,YAAA,GAAe,MAAM;AAEnB,MAAA,IAAI,IAAA,CAAK,WAAW,CAAA,eAAsB;AAC1C,MAAA,IAAA,CAAK,MAAA,GAAS,CAAA;AAEd,MAAA,IAAI,EAAE,MAAM,IAAA,EAAK,GAAI,KAAK,UAAA,CAAW,KAAA,MAAW,EAAC;AACjD,MAAA,IAAI,IAAA,EAAM;AAER,QAAA,MAAM,GAAA,GAAM,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,IAAI,CAAA;AAChC,QAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,GAAG,CAAA;AAClC,QAAA,GAAA,IAAA,IAAA,GAAA,MAAA,GAAA,GAAA,CAAK,QAAQ,CAAC,EAAA,KAAO,KAAK,OAAA,CAAQ,EAAA,EAAI,KAAK,IAAI,CAAA,CAAA;AAC/C,QAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,QAAQ,CAAC,EAAA,KAAO,KAAK,OAAA,CAAQ,EAAA,EAAI,QAAQ,IAAI,CAAA,CAAA;AACrD,QAAA,IAAI,IAAA,CAAK,UAAA,CAAW,MAAA,GAAS,CAAA,EAAG;AAC9B,UAAA,IAAA,CAAK,YAAA,EAAa;AAAA,QACpB;AAAA,MACF;AAEA,MAAA,IAAG,IAAA,CAAK,WAAW,CAAA,eAAsB;AACvC,QAAA,IAAA,CAAK,MAAA,GAAS,CAAA;AAAA,MAChB;AAAA,IACF,CAAA;AAGA,IAAA,IAAA,CAAA,aAAA,GAAgB,CAAC,KAAA,KAAoB;AAEnC,MAAA,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,IAAI,CAAC,CAAA;AAC1B,MAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,GAAA,KAAQ;AACrB,QAAA,MAAM,CAAC,IAAI,CAAA,GAAI,KAAK,UAAA,CAAW,MAAA,CAAO,KAAK,CAAC,CAAA;AAC5C,QAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAK,GAAI,QAAQ,EAAC;AAChC,QAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,UAAA,IAAA,CAAK,aAAA,CAAc,IAAA,EAAM,GAAG,IAAI,CAAA;AAAA,QAClC;AAAA,MACF,CAAC,CAAA;AAAA,IACH,CAAA;AAEA,IAAA,IAAA,CAAA,KAAA,GAAQ,MAAM;AACZ,MAAA,IAAA,CAAK,OAAO,KAAA,EAAM;AAClB,MAAA,IAAA,CAAK,aAAa,EAAC;AACnB,MAAA,IAAA,CAAK,SAAA,GAAY,MAAA;AAAA,IACnB,CAAA;AArIE,IAAA,IAAA,CAAK,GAAA,GAAM,kCAAK,eAAA,CAAA,EAAoB,GAAA,CAAA;AAAA,EACtC;AAAA,EAyCA,OAAA,CAAQ,EAAA,EAAU,GAAA,EAAK,IAAA,EAAM;AAC3B,IAAA,MAAM,MAAA,GAAS,IAAIC,KAAAA,KAAS;AAC1B,MAAA,EAAA,CAAG,GAAGA,KAAI,CAAA;AACV,MAAA,IAAI,GAAG,MAAM,CAAA,KAAM,IAAA,EAAM,GAAA,CAAI,OAAO,EAAE,CAAA;AAAA,IACxC,CAAA;AACA,IAAA,MAAM,SAAA,GAAY,EAAA,CAAG,WAAW,CAAA,IAAK,IAAI,WAAW,CAAA;AAEpD,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,SAAA,CAAU,MAAA,EAAQ,GAAG,IAAI,CAAA;AAAA,IAC3B,CAAA,MAAO;AACL,MAAA,EAAA,CAAG,GAAG,IAAI,CAAA;AACV,MAAA,IAAI,GAAG,MAAM,CAAA,KAAM,IAAA,EAAM,GAAA,CAAI,OAAO,EAAE,CAAA;AAAA,IACxC;AAAA,EACF;AAAA,EASA,aAAA,CAAc,SAAiB,IAAA,EAAa;AAC1C,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,IAAI,CAAA;AAChC,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,GAAG,CAAA;AAClC,IAAA,GAAA,IAAA,IAAA,GAAA,MAAA,GAAA,GAAA,CAAK,QAAQ,CAAC,EAAA,KAAO,KAAK,OAAA,CAAQ,EAAA,EAAI,KAAK,IAAI,CAAA,CAAA;AAC/C,IAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,QAAQ,CAAC,EAAA,KAAO,KAAK,OAAA,CAAQ,EAAA,EAAI,QAAQ,IAAI,CAAA,CAAA;AAAA,EACvD;AAAA,EAEA,SAAA,CAAU,SAAiB,IAAA,EAAa;AACtC,IAAA,IAAA,CAAK,UAAA,CAAW,KAAK,EAAE,IAAA,EAAM,MAAM,IAAA,EAAM,SAAA,IAAa,CAAA;AACtD,IAAA,IAAA,CAAK,OAAA,EAAQ;AAAA,EACf;AA4DF;AAzIa,SAAA,CACJ,CAAA,GAAI,EAAA;AA0IN,MAAM,kBAAkB,SAAA,CAAU;AAAA,EACvC,WAAA,GAAc;AACZ,IAAA,KAAA,CAAM,EAAE,IAAA,EAAM,CAAA,cAAiB,CAAA;AAEjC,IAAA,IAAA,CAAA,IAAA,GAAO,CAAC,SAAiB,GAAA,KAA6B;AACpD,MAAA,MAAM,EAAE,SAAA,EAAW,QAAA,EAAS,GAAI,IAAA,CAAK,SAAS,GAAG,CAAA;AAEjD,MAAA,IAAA,CAAK,EAAA,CAAG,MAAM,CAAA,GAAI,IAAA,KAAS,UAAU,IAAA,CAAK,SAAA,EAAW,IAAI,CAAC,CAAA;AAC1D,MAAA,OAAO,QAAA;AAAA,IACT,CAAA;AAEA,IAAA,IAAA,CAAA,QAAA,GAAW,CAAC,GAAA,KAA6B;AACvC,MAAA,MAAM,iBAAA,GAAoB,GAAA,CAAI,CAAC,CAAA,YAAa,QAAA;AAC5C,MAAA,IAAI,SAAA;AAEJ,MAAA,IAAI,UAAqB,SAAA,GAAY,iBAAA,GAAoB,IAAI,CAAC,CAAA,GAAI,IAAI,QAAA,EAAS;AAC/E,MAAA,IAAI,CAAA,GAAI,oBAAoB,CAAA,GAAI,CAAA;AAChC,MAAA,IAAI,QAAgB,EAAC;AACrB,MAAA,OAAO,CAAA,GAAI,IAAI,MAAA,EAAQ;AACrB,QAAA,MAAM,EAAA,GAAK,IAAI,CAAC,CAAA;AAChB,QAAA,IAAI,EAAE,cAAc,QAAA,CAAA,EAAW;AAC7B,UAAA,KAAA,CAAM,KAAK,EAAE,CAAA;AACb,UAAA;AAAA,QACF;AAGA,QAAA,OAAA,CAAQ,OAAA,GAAU,KAAA;AAClB,QAAA,KAAA,GAAQ,EAAC;AACT,QAAA,OAAA,CAAQ,EAAA,CAAG,UAAU,CAAC,IAAA,KAAS,GAAG,IAAA,CAAK,SAAA,EAAW,IAAI,CAAC,CAAA;AAEvD,QAAA,OAAA,GAAU,EAAA;AACV,QAAA,CAAA,EAAA;AAAA,MACF;AAEA,MAAA,OAAA,CAAQ,QAAA,EAAS;AACjB,MAAA,OAAA,CAAQ,OAAA,GAAU,KAAA;AAClB,MAAA,OAAO;AAAA,QACL,SAAA;AAAA,QACA,QAAA,EAAU;AAAA,OACZ;AAAA,IACF,CAAA;AAEA,IAAA,IAAA,CAAA,aAAA,uBAAoB,GAAA,EAAkC;AACtD,IAAA,IAAA,CAAA,UAAA,GAAa,CAAC,SAAiB,GAAA,KAA6B;AAC1D,MAAA,MAAM,EAAE,SAAA,EAAW,QAAA,EAAS,GAAI,IAAA,CAAK,SAAS,GAAG,CAAA;AACjD,MAAA,IAAA,CAAK,cAAc,GAAA,CAAI,IAAA,EAAM,CAAC,SAAA,EAAW,QAAQ,CAAC,CAAA;AAAA,IACpD,CAAA;AAEA,IAAA,IAAA,CAAA,IAAA,GAAO,CAAC,SAAiB,IAAA,KAAgB;AACvC,MAAA,MAAM,CAAC,WAAW,QAAQ,CAAA,GAAI,KAAK,aAAA,CAAc,GAAA,CAAI,IAAI,CAAA,IAAK,EAAC;AAC/D,MAAA,IAAI,aAAa,QAAA,EAAU;AACzB,QAAA,QAAA,CAAS,IAAA,CAAK,aAAA,EAAe,CAAA,GAAIA,KAAAA,KAAS;AAExC,UAAA,IAAA,CAAK,UAAA,CAAW,KAAK,EAAE,IAAA,EAAM,MAAAA,KAAAA,EAAM,IAAA,EAAM,SAAA,EAAU,EAAG,CAAA;AACtD,UAAA,IAAA,CAAK,KAAA,EAAM;AAAA,QACb,CAAC,CAAA;AACD,QAAA,IAAA,CAAK,KAAA,EAAM;AACX,QAAA,SAAA,CAAU,IAAA,CAAK,WAAW,IAAI,CAAA;AAAA,MAChC,CAAA,MAAO;AACL,QAAA,IAAA,CAAK,SAAA,CAAU,IAAA,EAAM,GAAG,IAAI,CAAA;AAAA,MAC9B;AAAA,IACF,CAAA;AAAA,EA1DA;AAAA,EA4DA,IAAA,CAAK,MAAc,OAAA,EAAwB;AACzC,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,OAAA,CAAQ,IAAA;AAAA,QACN,CAAC,KAAA,KAAU;AACT,UAAA,IAAA,CAAK,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,QACvB,CAAA;AAAA,QACA,CAAC,GAAA,KAAQ;AACP,UAAA,IAAA,CAAK,IAAA,CAAK,MAAM,GAAG,CAAA;AAAA,QACrB;AAAA,OACF;AACA,MAAA;AAAA,IACF;AAEA,IAAA,OAAO,IAAI,IAAA,KAAgB;AACzB,MAAA,IAAA,CAAK,IAAA,CAAK,IAAA,EAAM,GAAG,IAAI,CAAA;AAAA,IACzB,CAAA;AAAA,EACF;AACF;AAEO,MAAM,iBAAiB,SAAA,CAAU;AAAA,EAWtC,WAAA,GAAc;AACZ,IAAA,KAAA,CAAM,EAAE,IAAA,EAAM,CAAA,cAAiB,CAAA;AAXjC,IAAA,IAAA,CAAO,UAAkB,EAAC;AAE1B,IAAA,IAAA,CAAA,QAAA,GAAW,CAAC,EAAA,KAAa;AACvB,MAAA,IAAA,CAAK,EAAA,CAAG,eAAe,EAAE,CAAA;AAAA,IAC3B,CAAA;AAEA,IAAA,IAAA,CAAA,UAAA,GAAa,KAAA;AAEb,IAAA,IAAA,CAAA,QAAA,GAAW,MAAO,KAAK,UAAA,GAAa,IAAA;AAIlC,IAAA,IAAA,CAAK,EAAA,CAAG,SAAA,EAAW,CAAO,IAAA,KAAS,OAAA,CAAA,IAAA,EAAA,IAAA,EAAA,aAAA;AACjC,MAAA,IAAI,GAAA;AACJ,MAAA,KAAA,MAAW,MAAA,IAAU,KAAK,OAAA,EAAS;AACjC,QAAA,IAAI;AACF,UAAA,GAAA,GAAM,MAAA,CAAO,GAAG,IAAI,CAAA;AACpB,UAAA,IAAI,eAAe,OAAA,EAAS;AAC1B,YAAA,GAAA,GAAM,MAAM,GAAA;AAAA,UACd;AAAA,QACF,SAAS,KAAA,EAAO;AACd,UAAA,GAAA,GAAM,KAAA;AAAA,QACR;AACA,QAAA,IAAA,GAAO,CAAC,GAAG,CAAA;AAAA,MACb;AACA,MAAA,IAAI,KAAK,UAAA,EAAY;AACnB,QAAA,IAAA,CAAK,aAAA,CAAc,aAAA,EAAe,GAAG,IAAI,CAAA;AAAA,MAC3C,CAAA,MAAO;AACL,QAAA,IAAA,CAAK,aAAA,CAAc,UAAU,IAAI,CAAA;AAAA,MACnC;AAAA,IACF,CAAA,CAAC,CAAA;AAAA,EACH;AACF;;AC/RO,MAAM,KAAA,CAAS;AAAA,EAAf,WAAA,GAAA;AASL,IAAA,IAAA,CAAA,GAAA,GAAM,CAAA;AAAA,EAAA;AAAA,EAPN,IAAI,KAAA,GAAQ;AARd,IAAA,IAAA,EAAA;AASI,IAAA,OAAA,CAAO,EAAA,GAAA,IAAA,CAAK,WAAL,IAAA,GAAA,MAAA,GAAA,EAAA,CAAa,CAAA;AAAA,EACtB;AAAA,EAEA,IAAI,IAAA,GAAO;AAZb,IAAA,IAAA,EAAA;AAaI,IAAA,OAAA,CAAO,EAAA,GAAA,IAAA,CAAK,UAAL,IAAA,GAAA,MAAA,GAAA,EAAA,CAAY,CAAA;AAAA,EACrB;AAAA,EAEA,KAAK,EAAA,EAAO;AACV,IAAA,OAAO,IAAA,CAAK,UAAA,CAAW,EAAA,EAAI,IAAA,CAAK,KAAK,CAAA;AAAA,EACvC;AAAA,EAEA,UAAA,CAAW,IAAO,MAAA,EAAsB;AApB1C,IAAA,IAAA,EAAA;AAqBI,IAAA,MAAM,OAAO,EAAE,CAAA,EAAG,IAAI,IAAA,EAAM,IAAA,EAAM,MAAM,IAAA,EAAK;AAC7C,IAAA,MAAM,IAAA,GAAO,MAAA,KAAA,CAAU,EAAA,GAAA,IAAA,CAAK,MAAA,KAAL,IAAA,GAAA,MAAA,GAAA,EAAA,CAAa,IAAA,CAAA;AACpC,IAAA,MAAM,KAAA,GAAQ,IAAA,GAAO,IAAA,CAAK,IAAA,GAAO,IAAA,CAAK,MAAA;AACtC,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAA,CAAK,IAAA,GAAO,KAAA;AAEZ,IAAA,IAAI,IAAA,EAAM;AAER,MAAA,IAAI,IAAA,CAAK,IAAA,KAAS,IAAA,CAAK,MAAA,OAAa,MAAA,GAAS,IAAA;AAC7C,MAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAAA,IACd,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AAAA,IAChB;AACA,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,IAAI,KAAA,CAAM,IAAA,KAAS,IAAA,CAAK,KAAA,OAAY,KAAA,GAAQ,IAAA;AAC5C,MAAA,KAAA,CAAM,IAAA,GAAO,IAAA;AAAA,IACf,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,KAAA,GAAQ,IAAA;AAAA,IACf;AACA,IAAA,IAAA,CAAK,GAAA,EAAA;AACL,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,OAAO,IAAA,EAAoB;AACzB,IAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAK,GAAI,IAAA;AACvB,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,IAAI,IAAA,KAAS,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,MAAA,GAAS,IAAA;AACxC,MAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAAA,IACd,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AAAA,IAChB;AACA,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,IAAI,IAAA,KAAS,IAAA,CAAK,KAAA,EAAO,IAAA,CAAK,KAAA,GAAQ,IAAA;AACtC,MAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAAA,IACd,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,KAAA,GAAQ,IAAA;AAAA,IACf;AACA,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAA,CAAK,GAAA,EAAA;AACL,IAAA,OAAO,IAAA,CAAK,CAAA;AAAA,EACd;AAAA,EAEA,OAAO,OAAA,CAAW,SAAA,EAAyB,QAAA,EAAwB,EAAA,EAA4C;AAC7G,IAAA,IAAI,CAAC,SAAA,EAAW;AAChB,IAAA,IAAI,KAAA,GAAQ,SAAA;AACZ,IAAA,IAAI,OAAO,KAAA,CAAM,IAAA;AACjB,IAAA,OAAO,IAAA,EAAM;AACX,MAAA,EAAA,CAAG,KAAA,CAAM,GAAG,KAAK,CAAA;AACjB,MAAA,IAAI,CAAC,IAAA,IAAQ,KAAA,KAAU,QAAA,EAAU;AAC/B,QAAA;AAAA,MACF;AACA,MAAA,KAAA,GAAQ,IAAA;AACR,MAAA,IAAA,GAAO,KAAA,CAAM,IAAA;AAAA,IACf;AAAA,EACF;AAAA,EAEA,QAAQ,EAAA,EAA4C;AAClD,IAAA,IAAI,CAAC,KAAK,MAAA,EAAQ;AAClB,IAAA,IAAI,QAAQ,IAAA,CAAK,MAAA;AACjB,IAAA,IAAI,OAAO,KAAA,CAAM,IAAA;AACjB,IAAA,OAAO,IAAA,EAAM;AACX,MAAA,EAAA,CAAG,KAAA,CAAM,GAAG,KAAK,CAAA;AACjB,MAAA,IAAI,CAAC,IAAA,IAAQ,KAAA,KAAU,IAAA,CAAK,KAAA,EAAO;AACjC,QAAA;AAAA,MACF;AACA,MAAA,KAAA,GAAQ,IAAA;AACR,MAAA,IAAA,GAAO,KAAA,CAAM,IAAA;AAAA,IACf;AAAA,EACF;AAAA;AAAA,EAEA,MAAA,CAAO,WAAyB,QAAA,EAAwB;AACtD,IAAA,MAAM,QAAA,GAAW,IAAI,KAAA,EAAS;AAC9B,IAAA,QAAA,CAAS,MAAA,GAAS,SAAA;AAClB,IAAA,QAAA,CAAS,KAAA,GAAQ,QAAA;AACjB,IAAA,OAAO,QAAA;AAAA,EACT;AAAA,EAEA,KAAA,GAAQ;AACN,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA;AAAA,EAChC;AAAA,EAEA,KAAA,GAAQ;AACN,IAAA,MAAM,CAAA,GAAI,IAAI,KAAA,EAAS;AACvB,IAAA,IAAI,QAAQ,IAAA,CAAK,MAAA;AACjB,IAAA,IAAI,CAAC,OAAO,OAAO,CAAA;AACnB,IAAA,OAAO,IAAA,EAAM;AACX,MAAA,CAAA,CAAE,IAAA,CAAK,MAAM,CAAC,CAAA;AACd,MAAA,IAAI,KAAA,KAAU,KAAK,KAAA,EAAO;AAC1B,MAAA,KAAA,GAAQ,KAAA,CAAM,IAAA;AAAA,IAChB;AACA,IAAA,OAAO,CAAA;AAAA,EACT;AACF;AAEO,SAAS,MAAM,IAAA,EAAc;AAClC,EAAA,OACE,SAAS,GAAA,IACT,IAAA,KAAS,OACT,IAAA,KAAS,GAAA,IACT,SAAS,GAAA,IACT,IAAA,KAAS,GAAA,IACT,IAAA,KAAS,OACT,IAAA,KAAS,GAAA,IACT,SAAS,GAAA,IACT,IAAA,KAAS,OACT,IAAA,KAAS,GAAA;AAEb;AAEO,MAAM,MAAA,GAAS,CAAC,CAAA,KAAuB,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,IAAA,CAAK,GAAA,EAAK,CAAA,CAAA,EAAI,IAAA,CAAK,MAAA,EAAQ,CAAA;AAE1E,MAAM,OAAA,CAAW;AAAA,EAAjB,WAAA,GAAA;AACL,IAAA,IAAA,CAAA,IAAA,GAA0C,EAAC;AAAA,EAAA;AAAA,EAC3C,KAAA,GAAQ;AACN,IAAA,IAAA,CAAK,OAAO,EAAC;AAAA,EACf;AAAA,EACA,GAAA,CAAI,KAAsB,KAAA,EAAU;AAClC,IAAA,MAAM,EAAE,MAAK,GAAI,IAAA;AACjB,IAAA,IAAI,IAAA,GAAO,KAAK,GAAG,CAAA;AACnB,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,IAAA,GAAO,IAAI,KAAA,EAAS;AACpB,MAAA,IAAA,CAAK,GAAG,CAAA,GAAI,IAAA;AAAA,IACd;AACA,IAAA,OAAO,IAAA,CAAK,KAAK,KAAK,CAAA;AAAA,EACxB;AACF;AAEO,SAAS,IAAA,CAA2B,KAAQ,IAAA,EAAW;AAC5D,EAAA,OAAO,IAAA,CAAK,MAAA;AAAA,IACV,CAAC,KAAK,GAAA,KAAQ;AACZ,MAAA,GAAA,CAAI,GAAG,CAAA,GAAI,GAAA,CAAI,GAAG,CAAA;AAClB,MAAA,OAAO,GAAA;AAAA,IACT,CAAA;AAAA,IACA;AAAC,GACH;AACF;;;;"}
package/dist/index.d.ts CHANGED
@@ -81,18 +81,24 @@ declare class Queue<T> {
81
81
  _last?: QueueItem<T>;
82
82
  get last(): T;
83
83
  len: number;
84
- push(it: T): void;
84
+ push(it: T): QueueItem<T>;
85
+ insetAfter(it: T, anchor: QueueItem<T>): QueueItem<T>;
86
+ delete(item: QueueItem<T>): T;
87
+ static forEach<V>(firstItem: QueueItem<V>, lastItem: QueueItem<V>, fn: (value: V, item: QueueItem<V>) => void): void;
88
+ forEach(fn: (value: T, item: QueueItem<T>) => void): void;
89
+ /** TODO: Queue.len 不准确 */
90
+ subRef(firstItem: QueueItem<T>, lastItem: QueueItem<T>): Queue<T>;
85
91
  shift(): T;
86
92
  clone(): Queue<T>;
87
93
  }
88
94
  declare function isNum(char: string): char is "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9";
89
95
  declare const genKey: (v: string | number) => number;
90
96
  declare class SortMap<T> {
91
- data: Record<string | symbol, T[]>;
97
+ data: Record<string | symbol, Queue<T>>;
92
98
  clear(): void;
93
- add(key: string | symbol, value: T): void;
99
+ add(key: string | symbol, value: T): QueueItem<T>;
94
100
  }
95
101
  declare function pick<T, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
96
102
 
97
103
  export { BaseEvent, EventMode, EventNode, PipeNode, ProcessStatus, Queue, SortMap, genKey, isNum, pick, timestamp };
98
- export type { Func, IEventItem, IEventOpt, IGlobalScheduler, IScheduler, ISetScheduler };
104
+ export type { Func, IEventItem, IEventOpt, IGlobalScheduler, IScheduler, ISetScheduler, QueueItem };
package/dist/index.umd.js CHANGED
@@ -284,36 +284,92 @@
284
284
  return (_a = this._last) == null ? void 0 : _a.v;
285
285
  }
286
286
  push(it) {
287
- this.len++;
288
- const { _last: last } = this;
289
- const item = { v: it };
290
- if (!last) {
291
- this._first = this._last = item;
292
- return;
287
+ return this.insetAfter(it, this._last);
288
+ }
289
+ insetAfter(it, anchor) {
290
+ var _a;
291
+ const item = { v: it, prev: null, next: null };
292
+ const prev = anchor || ((_a = this._first) == null ? void 0 : _a.prev);
293
+ const after = prev ? prev.next : this._first;
294
+ item.prev = prev;
295
+ item.next = after;
296
+ if (prev) {
297
+ if (prev.next === this._first) this._first = item;
298
+ prev.next = item;
299
+ } else {
300
+ this._first = item;
301
+ }
302
+ if (after) {
303
+ if (after.prev === this._last) this._last = item;
304
+ after.prev = item;
305
+ } else {
306
+ this._last = item;
293
307
  }
294
- item.prev = this._last;
295
- last.next = item;
296
- this._last = item;
308
+ this.len++;
309
+ return item;
297
310
  }
298
- shift() {
299
- const { _first: first } = this;
300
- if (!first) return void 0;
301
- this.len--;
302
- const { next } = first;
303
- first.next = void 0;
311
+ delete(item) {
312
+ const { prev, next } = item;
313
+ if (prev) {
314
+ if (item === this._first) this._first = next;
315
+ prev.next = next;
316
+ } else {
317
+ this._first = next;
318
+ }
304
319
  if (next) {
305
- next.prev = void 0;
320
+ if (item === this._last) this._last = prev;
321
+ next.prev = prev;
306
322
  } else {
307
- this._last = void 0;
323
+ this._last = prev;
308
324
  }
309
- this._first = next;
310
- return first.v;
325
+ item.next = null;
326
+ item.prev = null;
327
+ this.len--;
328
+ return item.v;
329
+ }
330
+ static forEach(firstItem, lastItem, fn) {
331
+ if (!firstItem) return;
332
+ let point = firstItem;
333
+ let next = point.next;
334
+ while (true) {
335
+ fn(point.v, point);
336
+ if (!next || point === lastItem) {
337
+ break;
338
+ }
339
+ point = next;
340
+ next = point.next;
341
+ }
342
+ }
343
+ forEach(fn) {
344
+ if (!this._first) return;
345
+ let point = this._first;
346
+ let next = point.next;
347
+ while (true) {
348
+ fn(point.v, point);
349
+ if (!next || point === this._last) {
350
+ break;
351
+ }
352
+ point = next;
353
+ next = point.next;
354
+ }
355
+ }
356
+ /** TODO: Queue.len 不准确 */
357
+ subRef(firstItem, lastItem) {
358
+ const subQueue = new Queue();
359
+ subQueue._first = firstItem;
360
+ subQueue._last = lastItem;
361
+ return subQueue;
362
+ }
363
+ shift() {
364
+ return this.delete(this._first);
311
365
  }
312
366
  clone() {
313
367
  const c = new Queue();
314
368
  let point = this._first;
315
- while (point != null) {
369
+ if (!point) return c;
370
+ while (true) {
316
371
  c.push(point.v);
372
+ if (point === this._last) break;
317
373
  point = point.next;
318
374
  }
319
375
  return c;
@@ -334,10 +390,10 @@
334
390
  const { data } = this;
335
391
  let list = data[key];
336
392
  if (!list) {
337
- list = [];
393
+ list = new Queue();
338
394
  data[key] = list;
339
395
  }
340
- list.push(value);
396
+ return list.push(value);
341
397
  }
342
398
  }
343
399
  function pick(obj, keys) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","sources":["../src/event.ts","../src/util.ts"],"sourcesContent":["// @ts-nocheck\nexport type Func = (...args: any[]) => any;\n\nconst None = Symbol('none');\nexport const timestamp = globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;\n\nexport enum EventMode {\n Immediate,\n Queue,\n}\n\nexport enum ProcessStatus {\n None,\n Processing,\n Paused,\n}\n\nconst DefaultEventOpt = {\n mode: EventMode.Immediate,\n};\n\nconst ALL = '__ALL_KEY';\nconst myNull = null;\n\nexport type IEventOpt = Partial<typeof DefaultEventOpt>;\n\nexport type IScheduler = (doCall: Func, ...args: any[]) => void;\nexport type IGlobalScheduler = (goOn: () => void) => void;\nexport type ISetScheduler = {\n (type: string, scheduler: IScheduler): void;\n (scheduler: IGlobalScheduler): void;\n};\n\nexport type IEventItem = {\n type: string;\n args: any[];\n time: number;\n};\n\nexport class BaseEvent {\n static a = 19\n constructor(private opt: IEventOpt = {}) {\n this.opt = { ...DefaultEventOpt, ...opt };\n }\n scheduler?: IGlobalScheduler;\n eventQueue: IEventItem[] = [];\n status = ProcessStatus.None;\n subMap = new Map<string, Set<Func>>();\n on = (type: string | undefined, fn: Func) => {\n if (type == null) type = ALL;\n const suber = this.subMap.get(type) || new Set<Func>();\n suber.add(fn);\n this.subMap.set(type, suber);\n };\n\n off = (type: string | undefined, fn: Func) => {\n const suber = this.subMap.get(type ?? ALL);\n if (!suber) return;\n suber.delete(fn);\n };\n\n once = (type: string | undefined, fn: Func) => {\n fn['once'] = true;\n this.on(type, fn);\n };\n\n promiseOnce = (type: string | undefined) => {\n return new Promise((resolve) => {\n this.once(type, (...args) => {\n resolve(args)\n })\n })\n }\n\n setScheduler: ISetScheduler = (type: string | IGlobalScheduler, scheduler?: Func) => {\n if (typeof type !== 'string') {\n this.scheduler = type;\n return;\n }\n const set = this.subMap.get(type) || new Set<Func>();\n set['scheduler'] = scheduler;\n this.subMap.set(type, set);\n };\n\n callSub(it: Func, fns, args) {\n const doCall = (...args) => {\n it(...args);\n if (it['once'] === true) fns.delete(it);\n };\n const scheduler = it['scheduler'] || fns['scheduler'];\n\n if (scheduler) {\n scheduler(doCall, ...args);\n } else {\n it(...args);\n if (it['once'] === true) fns.delete(it);\n }\n }\n\n // construct 会初始化为下面其中一种\n emit = (type: string, ...args: any[]) => {\n this.opt.mode === EventMode.Immediate\n ? this.emitImmediate(type, ...args)\n : this.emitQueue(type, ...args);\n };\n \n emitImmediate(type: string, ...args: any[]) {\n const fns = this.subMap.get(type);\n const allSub = this.subMap.get(ALL);\n fns?.forEach((it) => this.callSub(it, fns, args));\n allSub?.forEach((it) => this.callSub(it, allSub, args));\n }\n\n emitQueue(type: string, ...args: any[]) {\n this.eventQueue.push({ type, args, time: timestamp() });\n this.process();\n }\n\n pause = () => (this.status = ProcessStatus.Paused);\n unPause = () => (this.status = ProcessStatus.None);\n start = () => {\n this.status = ProcessStatus.None;\n this.processQueue();\n };\n\n process = () => {\n if (this.scheduler) {\n return this.scheduler(this.recallScheduler);\n }\n return this.processQueue();\n }\n\n recallScheduler = () => {\n this.scheduler!(this.recallScheduler);\n };\n\n processQueue = () => {\n // 如果是挂起状态则直接结束\n if (this.status === ProcessStatus.Paused) return;\n this.status = ProcessStatus.Processing;\n\n let { type, args } = this.eventQueue.shift() || {};\n if (type) {\n // 在此过程中用户可通过 pause 和 start 同步控制事件处理\n const fns = this.subMap.get(type);\n const allSub = this.subMap.get(ALL);\n fns?.forEach((it) => this.callSub(it, fns, args));\n allSub?.forEach((it) => this.callSub(it, allSub, args));\n if (this.eventQueue.length > 0) {\n this.processQueue();\n }\n }\n //@ts-ignore 队列全部处理完成,如果执行过程中被 pause \n if(this.status !== ProcessStatus.Paused) {\n this.status = ProcessStatus.None;\n }\n };\n\n\n dispatchEvent = (iList: number[]) => {\n // 从大到小排序\n iList.sort((a, b) => b - a);\n iList.forEach((idx) => {\n const [item] = this.eventQueue.splice(idx, 1);\n const { type, args } = item || {};\n if (type && args) {\n this.emitImmediate(type, ...args);\n }\n });\n };\n\n clear = () => {\n this.subMap.clear();\n this.eventQueue = [];\n this.scheduler = undefined;\n };\n}\n\nexport class EventNode extends BaseEvent {\n constructor() {\n super({ mode: EventMode.Queue });\n }\n pipe = (type: string, ...fns: (Func | PipeNode)[]) => {\n const { firstNode, lastNode } = this.buildPip(fns);\n // 将第一个节点与事件源节点关联\n this.on(type, (...args) => firstNode.emit('process', args));\n return lastNode;\n };\n\n buildPip = (fns: (Func | PipeNode)[]) => {\n const startWithPipeNode = fns[0] instanceof PipeNode;\n let firstNode: PipeNode;\n // @ts-ignore\n let curNode: PipeNode = (firstNode = startWithPipeNode ? fns[0] : new PipeNode());\n let i = startWithPipeNode ? 1 : 0;\n let toAdd: Func[] = [];\n while (i < fns.length) {\n const it = fns[i];\n if (!(it instanceof PipeNode)) {\n toAdd.push(it);\n continue;\n }\n\n // 遇到下一个 pipeNode,把上一个完成\n curNode.pipList = toAdd;\n toAdd = [];\n curNode.on('finish', (args) => it.emit('process', args));\n\n curNode = it;\n i++;\n }\n // 处理最后一个节点\n curNode.markLast();\n curNode.pipList = toAdd;\n return {\n firstNode,\n lastNode: curNode,\n };\n };\n\n preProcessMap = new Map<string, [PipeNode, PipeNode]>();\n preProcess = (type: string, ...fns: (Func | PipeNode)[]) => {\n const { firstNode, lastNode } = this.buildPip(fns);\n this.preProcessMap.set(type, [firstNode, lastNode]);\n };\n\n emit = (type: string, ...args: any[]) => {\n const [firstNode, lastNode] = this.preProcessMap.get(type) || [];\n if (firstNode && lastNode) {\n lastNode.once('real-finish', (...args) => {\n // 等待预处理完成后再开始触发事件,且修正 args\n this.eventQueue.push({ type, args, time: timestamp() });\n this.start();\n });\n this.pause();\n firstNode.emit('process', args);\n } else {\n this.emitQueue(type, ...args);\n }\n };\n\n from(type: string, promise?: Promise<any>) {\n if (promise) {\n promise.then(\n (value) => {\n this.emit(type, value);\n },\n (err) => {\n this.emit(type, err);\n },\n );\n return;\n }\n\n return (...args: any[]) => {\n this.emit(type, ...args);\n };\n }\n}\n\nexport class PipeNode extends BaseEvent {\n public pipList: Func[] = [];\n\n onFinish = (fn: Func) => {\n this.on('real-finish', fn);\n };\n\n isLastNode = false;\n\n markLast = () => (this.isLastNode = true);\n\n constructor() {\n super({ mode: EventMode.Queue });\n this.on('process', async (args) => {\n let res;\n for (const pipeFn of this.pipList) {\n try {\n res = pipeFn(...args);\n if (res instanceof Promise) {\n res = await res;\n }\n } catch (error) {\n res = error;\n }\n args = [res];\n }\n if (this.isLastNode) {\n this.emitImmediate('real-finish', ...args);\n } else {\n this.emitImmediate('finish', args);\n }\n });\n }\n}","type QueueItem<T> = {\n v: T;\n prev?: QueueItem<T>;\n next?: QueueItem<T>;\n};\n\nexport class Queue<T> {\n _first?: QueueItem<T>;\n get first() {\n return this._first?.v!;\n }\n _last?: QueueItem<T>;\n get last() {\n return this._last?.v!;\n }\n len = 0;\n push(it: T) {\n this.len++;\n const { _last: last } = this;\n const item = { v: it } as QueueItem<T>;\n if (!last) {\n this._first = this._last = item;\n return;\n }\n item.prev = this._last!;\n last.next = item;\n this._last = item;\n }\n shift() {\n const { _first: first } = this;\n if (!first) return undefined;\n this.len--;\n\n const { next } = first;\n first.next = undefined;\n\n if (next) {\n next.prev = undefined;\n } else {\n this._last = undefined;\n }\n\n this._first = next;\n return first.v;\n }\n clone() {\n const c = new Queue<T>();\n let point = this._first;\n while (point != null) {\n c.push(point.v);\n point = point.next;\n }\n return c;\n }\n}\n\nexport function isNum(char: string) {\n return (\n char === '0' ||\n char === '1' ||\n char === '2' ||\n char === '3' ||\n char === '4' ||\n char === '5' ||\n char === '6' ||\n char === '7' ||\n char === '8' ||\n char === '9'\n );\n}\n\nexport const genKey = (v: string | number) => `${v}-${Date.now()}-${Math.random()}` as unknown as number;\n\nexport class SortMap<T> {\n data: Record<string | symbol, T[]> = {};\n clear() {\n this.data = {};\n }\n add(key: string | symbol, value: T) {\n const { data } = this;\n let list = data[key];\n if (!list) {\n list = [];\n data[key] = list;\n }\n list.push(value);\n }\n}\n\nexport function pick<T, K extends keyof T>(obj: T, keys: K[]) {\n return keys.reduce(\n (acc, key) => {\n acc[key] = obj[key];\n return acc;\n },\n {} as Pick<T, K>\n );\n}\n\n// const queue = new Queue([1,2,3,4]);\n// queue.shift()\n// queue.pop()\n// // @ts-ignore\n// queue.unshift('a')\n// // @ts-ignore\n// queue.push('b')\n// queue.shift()\n// queue.pop()\n// queue.shift()\n// queue.pop()\n// queue.shift()\n// queue.pop()\n// queue.push(10)\n// queue.array();\n"],"names":["EventMode","ProcessStatus","args"],"mappings":"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"}
1
+ {"version":3,"file":"index.umd.js","sources":["../src/event.ts","../src/util.ts"],"sourcesContent":["// @ts-nocheck\nexport type Func = (...args: any[]) => any;\n\nconst None = Symbol('none');\nexport const timestamp = globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;\n\nexport enum EventMode {\n Immediate,\n Queue,\n}\n\nexport enum ProcessStatus {\n None,\n Processing,\n Paused,\n}\n\nconst DefaultEventOpt = {\n mode: EventMode.Immediate,\n};\n\nconst ALL = '__ALL_KEY';\nconst myNull = null;\n\nexport type IEventOpt = Partial<typeof DefaultEventOpt>;\n\nexport type IScheduler = (doCall: Func, ...args: any[]) => void;\nexport type IGlobalScheduler = (goOn: () => void) => void;\nexport type ISetScheduler = {\n (type: string, scheduler: IScheduler): void;\n (scheduler: IGlobalScheduler): void;\n};\n\nexport type IEventItem = {\n type: string;\n args: any[];\n time: number;\n};\n\nexport class BaseEvent {\n static a = 19\n constructor(private opt: IEventOpt = {}) {\n this.opt = { ...DefaultEventOpt, ...opt };\n }\n scheduler?: IGlobalScheduler;\n eventQueue: IEventItem[] = [];\n status = ProcessStatus.None;\n subMap = new Map<string, Set<Func>>();\n on = (type: string | undefined, fn: Func) => {\n if (type == null) type = ALL;\n const suber = this.subMap.get(type) || new Set<Func>();\n suber.add(fn);\n this.subMap.set(type, suber);\n };\n\n off = (type: string | undefined, fn: Func) => {\n const suber = this.subMap.get(type ?? ALL);\n if (!suber) return;\n suber.delete(fn);\n };\n\n once = (type: string | undefined, fn: Func) => {\n fn['once'] = true;\n this.on(type, fn);\n };\n\n promiseOnce = (type: string | undefined) => {\n return new Promise((resolve) => {\n this.once(type, (...args) => {\n resolve(args)\n })\n })\n }\n\n setScheduler: ISetScheduler = (type: string | IGlobalScheduler, scheduler?: Func) => {\n if (typeof type !== 'string') {\n this.scheduler = type;\n return;\n }\n const set = this.subMap.get(type) || new Set<Func>();\n set['scheduler'] = scheduler;\n this.subMap.set(type, set);\n };\n\n callSub(it: Func, fns, args) {\n const doCall = (...args) => {\n it(...args);\n if (it['once'] === true) fns.delete(it);\n };\n const scheduler = it['scheduler'] || fns['scheduler'];\n\n if (scheduler) {\n scheduler(doCall, ...args);\n } else {\n it(...args);\n if (it['once'] === true) fns.delete(it);\n }\n }\n\n // construct 会初始化为下面其中一种\n emit = (type: string, ...args: any[]) => {\n this.opt.mode === EventMode.Immediate\n ? this.emitImmediate(type, ...args)\n : this.emitQueue(type, ...args);\n };\n \n emitImmediate(type: string, ...args: any[]) {\n const fns = this.subMap.get(type);\n const allSub = this.subMap.get(ALL);\n fns?.forEach((it) => this.callSub(it, fns, args));\n allSub?.forEach((it) => this.callSub(it, allSub, args));\n }\n\n emitQueue(type: string, ...args: any[]) {\n this.eventQueue.push({ type, args, time: timestamp() });\n this.process();\n }\n\n pause = () => (this.status = ProcessStatus.Paused);\n unPause = () => (this.status = ProcessStatus.None);\n start = () => {\n this.status = ProcessStatus.None;\n this.processQueue();\n };\n\n process = () => {\n if (this.scheduler) {\n return this.scheduler(this.recallScheduler);\n }\n return this.processQueue();\n }\n\n recallScheduler = () => {\n this.scheduler!(this.recallScheduler);\n };\n\n processQueue = () => {\n // 如果是挂起状态则直接结束\n if (this.status === ProcessStatus.Paused) return;\n this.status = ProcessStatus.Processing;\n\n let { type, args } = this.eventQueue.shift() || {};\n if (type) {\n // 在此过程中用户可通过 pause 和 start 同步控制事件处理\n const fns = this.subMap.get(type);\n const allSub = this.subMap.get(ALL);\n fns?.forEach((it) => this.callSub(it, fns, args));\n allSub?.forEach((it) => this.callSub(it, allSub, args));\n if (this.eventQueue.length > 0) {\n this.processQueue();\n }\n }\n //@ts-ignore 队列全部处理完成,如果执行过程中被 pause \n if(this.status !== ProcessStatus.Paused) {\n this.status = ProcessStatus.None;\n }\n };\n\n\n dispatchEvent = (iList: number[]) => {\n // 从大到小排序\n iList.sort((a, b) => b - a);\n iList.forEach((idx) => {\n const [item] = this.eventQueue.splice(idx, 1);\n const { type, args } = item || {};\n if (type && args) {\n this.emitImmediate(type, ...args);\n }\n });\n };\n\n clear = () => {\n this.subMap.clear();\n this.eventQueue = [];\n this.scheduler = undefined;\n };\n}\n\nexport class EventNode extends BaseEvent {\n constructor() {\n super({ mode: EventMode.Queue });\n }\n pipe = (type: string, ...fns: (Func | PipeNode)[]) => {\n const { firstNode, lastNode } = this.buildPip(fns);\n // 将第一个节点与事件源节点关联\n this.on(type, (...args) => firstNode.emit('process', args));\n return lastNode;\n };\n\n buildPip = (fns: (Func | PipeNode)[]) => {\n const startWithPipeNode = fns[0] instanceof PipeNode;\n let firstNode: PipeNode;\n // @ts-ignore\n let curNode: PipeNode = (firstNode = startWithPipeNode ? fns[0] : new PipeNode());\n let i = startWithPipeNode ? 1 : 0;\n let toAdd: Func[] = [];\n while (i < fns.length) {\n const it = fns[i];\n if (!(it instanceof PipeNode)) {\n toAdd.push(it);\n continue;\n }\n\n // 遇到下一个 pipeNode,把上一个完成\n curNode.pipList = toAdd;\n toAdd = [];\n curNode.on('finish', (args) => it.emit('process', args));\n\n curNode = it;\n i++;\n }\n // 处理最后一个节点\n curNode.markLast();\n curNode.pipList = toAdd;\n return {\n firstNode,\n lastNode: curNode,\n };\n };\n\n preProcessMap = new Map<string, [PipeNode, PipeNode]>();\n preProcess = (type: string, ...fns: (Func | PipeNode)[]) => {\n const { firstNode, lastNode } = this.buildPip(fns);\n this.preProcessMap.set(type, [firstNode, lastNode]);\n };\n\n emit = (type: string, ...args: any[]) => {\n const [firstNode, lastNode] = this.preProcessMap.get(type) || [];\n if (firstNode && lastNode) {\n lastNode.once('real-finish', (...args) => {\n // 等待预处理完成后再开始触发事件,且修正 args\n this.eventQueue.push({ type, args, time: timestamp() });\n this.start();\n });\n this.pause();\n firstNode.emit('process', args);\n } else {\n this.emitQueue(type, ...args);\n }\n };\n\n from(type: string, promise?: Promise<any>) {\n if (promise) {\n promise.then(\n (value) => {\n this.emit(type, value);\n },\n (err) => {\n this.emit(type, err);\n },\n );\n return;\n }\n\n return (...args: any[]) => {\n this.emit(type, ...args);\n };\n }\n}\n\nexport class PipeNode extends BaseEvent {\n public pipList: Func[] = [];\n\n onFinish = (fn: Func) => {\n this.on('real-finish', fn);\n };\n\n isLastNode = false;\n\n markLast = () => (this.isLastNode = true);\n\n constructor() {\n super({ mode: EventMode.Queue });\n this.on('process', async (args) => {\n let res;\n for (const pipeFn of this.pipList) {\n try {\n res = pipeFn(...args);\n if (res instanceof Promise) {\n res = await res;\n }\n } catch (error) {\n res = error;\n }\n args = [res];\n }\n if (this.isLastNode) {\n this.emitImmediate('real-finish', ...args);\n } else {\n this.emitImmediate('finish', args);\n }\n });\n }\n}","export type QueueItem<T> = {\n v: T;\n prev?: QueueItem<T>;\n next?: QueueItem<T>;\n};\n\nexport class Queue<T> {\n _first?: QueueItem<T>;\n get first() {\n return this._first?.v!;\n }\n _last?: QueueItem<T>;\n get last() {\n return this._last?.v!;\n }\n len = 0;\n push(it: T) {\n return this.insetAfter(it, this._last);\n }\n\n insetAfter(it: T, anchor: QueueItem<T>) {\n const item = { v: it, prev: null, next: null } as QueueItem<T>;\n const prev = anchor || this._first?.prev;\n const after = prev ? prev.next : this._first;\n item.prev = prev;\n item.next = after;\n\n if (prev) {\n // 子 Queue 逻辑\n if (prev.next === this._first) this._first = item;\n prev.next = item;\n } else {\n this._first = item;\n }\n if (after) {\n if (after.prev === this._last) this._last = item;\n after.prev = item;\n } else {\n this._last = item;\n }\n this.len++;\n return item;\n }\n\n delete(item: QueueItem<T>) {\n const { prev, next } = item;\n if (prev) {\n if (item === this._first) this._first = next;\n prev.next = next;\n } else {\n this._first = next;\n }\n if (next) {\n if (item === this._last) this._last = prev;\n next.prev = prev;\n } else {\n this._last = prev;\n }\n item.next = null;\n item.prev = null;\n this.len--;\n return item.v;\n }\n\n static forEach<V>(firstItem: QueueItem<V>, lastItem: QueueItem<V>, fn: (value: V, item: QueueItem<V>) => void) {\n if (!firstItem) return;\n let point = firstItem;\n let next = point.next;\n while (true) {\n fn(point.v, point);\n if (!next || point === lastItem) {\n break;\n }\n point = next;\n next = point.next;\n }\n }\n\n forEach(fn: (value: T, item: QueueItem<T>) => void) {\n if (!this._first) return;\n let point = this._first;\n let next = point.next;\n while (true) {\n fn(point.v, point);\n if (!next || point === this._last) {\n break;\n }\n point = next;\n next = point.next;\n }\n }\n /** TODO: Queue.len 不准确 */\n subRef(firstItem: QueueItem<T>, lastItem: QueueItem<T>) {\n const subQueue = new Queue<T>()\n subQueue._first = firstItem;\n subQueue._last = lastItem;\n return subQueue;\n }\n\n shift() {\n return this.delete(this._first);\n }\n\n clone() {\n const c = new Queue<T>();\n let point = this._first;\n if (!point) return c;\n while (true) {\n c.push(point.v);\n if (point === this._last) break;\n point = point.next;\n }\n return c;\n }\n}\n\nexport function isNum(char: string) {\n return (\n char === '0' ||\n char === '1' ||\n char === '2' ||\n char === '3' ||\n char === '4' ||\n char === '5' ||\n char === '6' ||\n char === '7' ||\n char === '8' ||\n char === '9'\n );\n}\n\nexport const genKey = (v: string | number) => `${v}-${Date.now()}-${Math.random()}` as unknown as number;\n\nexport class SortMap<T> {\n data: Record<string | symbol, Queue<T>> = {};\n clear() {\n this.data = {};\n }\n add(key: string | symbol, value: T) {\n const { data } = this;\n let list = data[key];\n if (!list) {\n list = new Queue<T>();\n data[key] = list;\n }\n return list.push(value);\n }\n}\n\nexport function pick<T, K extends keyof T>(obj: T, keys: K[]) {\n return keys.reduce(\n (acc, key) => {\n acc[key] = obj[key];\n return acc;\n },\n {} as Pick<T, K>\n );\n}\n\n// const queue = new Queue([1,2,3,4]);\n// queue.shift()\n// queue.pop()\n// // @ts-ignore\n// queue.unshift('a')\n// // @ts-ignore\n// queue.push('b')\n// queue.shift()\n// queue.pop()\n// queue.shift()\n// queue.pop()\n// queue.shift()\n// queue.pop()\n// queue.push(10)\n// queue.array();\n"],"names":["EventMode","ProcessStatus","args"],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "bobe-shared",
3
- "version": "0.0.4",
3
+ "version": "0.0.7",
4
4
  "main": "dist/bobe-shared.cjs.js",
5
5
  "module": "dist/bobe-shared.esm.js",
6
6
  "browser": "dist/bobe-shared.umd.js",
7
7
  "types": "dist/index.d.ts",
8
+ "private": false,
8
9
  "devDependencies": {},
9
10
  "files": [
10
11
  "dist"
@@ -18,17 +19,15 @@
18
19
  "author": "smooth-cat",
19
20
  "repository": {
20
21
  "type": "git",
21
- "url": "git+git@github.com:smooth-cat/newme.git"
22
+ "url": "git+git@github.com:smooth-cat/bobe.git"
22
23
  },
23
24
  "bugs": {
24
- "url": "https://github.com/smooth-cat/newme/issues"
25
+ "url": "https://github.com/smooth-cat/bobe/issues"
25
26
  },
26
- "homepage": "https://github.com/smooth-cat/newme#readme",
27
- "description": "a front-end framework utils",
27
+ "homepage": "https://github.com/smooth-cat/bobe#readme",
28
+ "description": "A front-end framework utils",
28
29
  "scripts": {
29
- "ini": "node scripts/init.js",
30
30
  "build": "rm -rf ./dist && rollup -c",
31
- "pub": "node scripts/publish.js",
32
31
  "dev": "rollup -c -w",
33
32
  "t": "jest",
34
33
  "tw": "jest --coverage --watch"