bobe-shared 0.0.21 → 0.0.23

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.
@@ -1,46 +1,59 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
- var __hasOwnProp = Object.prototype.hasOwnProperty;
4
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
- var __spreadValues = (a, b) => {
7
- for (var prop in b || (b = {}))
8
- if (__hasOwnProp.call(b, prop))
9
- __defNormalProp(a, prop, b[prop]);
10
- if (__getOwnPropSymbols)
11
- for (var prop of __getOwnPropSymbols(b)) {
12
- if (__propIsEnum.call(b, prop))
13
- __defNormalProp(a, prop, b[prop]);
14
- }
15
- return a;
16
- };
17
- var __async = (__this, __arguments, generator) => {
18
- return new Promise((resolve, reject) => {
19
- var fulfilled = (value) => {
20
- try {
21
- step(generator.next(value));
22
- } catch (e) {
23
- reject(e);
24
- }
25
- };
26
- var rejected = (value) => {
1
+ function _arrayLikeToArray(r, a) {
2
+ (null == a || a > r.length) && (a = r.length);
3
+ for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
4
+ return n;
5
+ }
6
+ function _arrayWithHoles(r) {
7
+ if (Array.isArray(r)) return r;
8
+ }
9
+ function _iterableToArrayLimit(r, l) {
10
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
11
+ if (null != t) {
12
+ var e,
13
+ n,
14
+ i,
15
+ u,
16
+ a = [],
17
+ f = true,
18
+ o = false;
19
+ try {
20
+ if (i = (t = t.call(r)).next, 0 === l) {
21
+ if (Object(t) !== t) return;
22
+ f = !1;
23
+ } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
24
+ } catch (r) {
25
+ o = true, n = r;
26
+ } finally {
27
27
  try {
28
- step(generator.throw(value));
29
- } catch (e) {
30
- reject(e);
28
+ if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
29
+ } finally {
30
+ if (o) throw n;
31
31
  }
32
- };
33
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
34
- step((generator = generator.apply(__this, __arguments)).next());
35
- });
36
- };
32
+ }
33
+ return a;
34
+ }
35
+ }
36
+ function _nonIterableRest() {
37
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
38
+ }
39
+ function _slicedToArray(r, e) {
40
+ return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
41
+ }
42
+ function _unsupportedIterableToArray(r, a) {
43
+ if (r) {
44
+ if ("string" == typeof r) return _arrayLikeToArray(r, a);
45
+ var t = {}.toString.call(r).slice(8, -1);
46
+ return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
47
+ }
48
+ }
49
+
37
50
  const timestamp = globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;
38
- var EventMode = /* @__PURE__ */ ((EventMode2) => {
51
+ var EventMode = /* @__PURE__ */(EventMode2 => {
39
52
  EventMode2[EventMode2["Immediate"] = 0] = "Immediate";
40
53
  EventMode2[EventMode2["Queue"] = 1] = "Queue";
41
54
  return EventMode2;
42
55
  })(EventMode || {});
43
- var ProcessStatus = /* @__PURE__ */ ((ProcessStatus2) => {
56
+ var ProcessStatus = /* @__PURE__ */(ProcessStatus2 => {
44
57
  ProcessStatus2[ProcessStatus2["None"] = 0] = "None";
45
58
  ProcessStatus2[ProcessStatus2["Processing"] = 1] = "Processing";
46
59
  ProcessStatus2[ProcessStatus2["Paused"] = 2] = "Paused";
@@ -55,15 +68,15 @@ class BaseEvent {
55
68
  this.opt = opt;
56
69
  this.eventQueue = [];
57
70
  this.status = 0 /* None */;
58
- this.subMap = /* @__PURE__ */ new Map();
71
+ this.subMap = /* @__PURE__ */new Map();
59
72
  this.on = (type, fn) => {
60
73
  if (type == null) type = ALL;
61
- const suber = this.subMap.get(type) || /* @__PURE__ */ new Set();
74
+ const suber = this.subMap.get(type) || /* @__PURE__ */new Set();
62
75
  suber.add(fn);
63
76
  this.subMap.set(type, suber);
64
77
  };
65
78
  this.off = (type, fn) => {
66
- const suber = this.subMap.get(type != null ? type : ALL);
79
+ const suber = this.subMap.get(type ?? ALL);
67
80
  if (!suber) return;
68
81
  suber.delete(fn);
69
82
  };
@@ -71,8 +84,8 @@ class BaseEvent {
71
84
  fn["once"] = true;
72
85
  this.on(type, fn);
73
86
  };
74
- this.promiseOnce = (type) => {
75
- return new Promise((resolve) => {
87
+ this.promiseOnce = type => {
88
+ return new Promise(resolve => {
76
89
  this.once(type, (...args) => {
77
90
  resolve(args);
78
91
  });
@@ -83,7 +96,7 @@ class BaseEvent {
83
96
  this.scheduler = type;
84
97
  return;
85
98
  }
86
- const set = this.subMap.get(type) || /* @__PURE__ */ new Set();
99
+ const set = this.subMap.get(type) || /* @__PURE__ */new Set();
87
100
  set["scheduler"] = scheduler;
88
101
  this.subMap.set(type, set);
89
102
  };
@@ -109,12 +122,14 @@ class BaseEvent {
109
122
  this.processQueue = () => {
110
123
  if (this.status === 2 /* Paused */) return;
111
124
  this.status = 1 /* Processing */;
112
- let { type, args } = this.eventQueue.shift() || {};
125
+ let _ref = this.eventQueue.shift() || {},
126
+ type = _ref.type,
127
+ args = _ref.args;
113
128
  if (type) {
114
129
  const fns = this.subMap.get(type);
115
130
  const allSub = this.subMap.get(ALL);
116
- fns == null ? void 0 : fns.forEach((it) => this.callSub(it, fns, args));
117
- allSub == null ? void 0 : allSub.forEach((it) => this.callSub(it, allSub, args));
131
+ fns?.forEach(it => this.callSub(it, fns, args));
132
+ allSub?.forEach(it => this.callSub(it, allSub, args));
118
133
  if (this.eventQueue.length > 0) {
119
134
  this.processQueue();
120
135
  }
@@ -123,11 +138,15 @@ class BaseEvent {
123
138
  this.status = 0 /* None */;
124
139
  }
125
140
  };
126
- this.dispatchEvent = (iList) => {
141
+ this.dispatchEvent = iList => {
127
142
  iList.sort((a, b) => b - a);
128
- iList.forEach((idx) => {
129
- const [item] = this.eventQueue.splice(idx, 1);
130
- const { type, args } = item || {};
143
+ iList.forEach(idx => {
144
+ const _this$eventQueue$spli = this.eventQueue.splice(idx, 1),
145
+ _this$eventQueue$spli2 = _slicedToArray(_this$eventQueue$spli, 1),
146
+ item = _this$eventQueue$spli2[0];
147
+ const _ref2 = item || {},
148
+ type = _ref2.type,
149
+ args = _ref2.args;
131
150
  if (type && args) {
132
151
  this.emitImmediate(type, ...args);
133
152
  }
@@ -138,7 +157,13 @@ class BaseEvent {
138
157
  this.eventQueue = [];
139
158
  this.scheduler = void 0;
140
159
  };
141
- this.opt = __spreadValues(__spreadValues({}, DefaultEventOpt), opt);
160
+ this.opt = {
161
+ ...DefaultEventOpt,
162
+ ...opt
163
+ };
164
+ }
165
+ static {
166
+ this.a = 19;
142
167
  }
143
168
  callSub(it, fns, args) {
144
169
  const doCall = (...args2) => {
@@ -156,24 +181,31 @@ class BaseEvent {
156
181
  emitImmediate(type, ...args) {
157
182
  const fns = this.subMap.get(type);
158
183
  const allSub = this.subMap.get(ALL);
159
- fns == null ? void 0 : fns.forEach((it) => this.callSub(it, fns, args));
160
- allSub == null ? void 0 : allSub.forEach((it) => this.callSub(it, allSub, args));
184
+ fns?.forEach(it => this.callSub(it, fns, args));
185
+ allSub?.forEach(it => this.callSub(it, allSub, args));
161
186
  }
162
187
  emitQueue(type, ...args) {
163
- this.eventQueue.push({ type, args, time: timestamp() });
188
+ this.eventQueue.push({
189
+ type,
190
+ args,
191
+ time: timestamp()
192
+ });
164
193
  this.process();
165
194
  }
166
195
  }
167
- BaseEvent.a = 19;
168
196
  class EventNode extends BaseEvent {
169
197
  constructor() {
170
- super({ mode: 1 /* Queue */ });
198
+ super({
199
+ mode: 1 /* Queue */
200
+ });
171
201
  this.pipe = (type, ...fns) => {
172
- const { firstNode, lastNode } = this.buildPip(fns);
202
+ const _this$buildPip = this.buildPip(fns),
203
+ firstNode = _this$buildPip.firstNode,
204
+ lastNode = _this$buildPip.lastNode;
173
205
  this.on(type, (...args) => firstNode.emit("process", args));
174
206
  return lastNode;
175
207
  };
176
- this.buildPip = (fns) => {
208
+ this.buildPip = fns => {
177
209
  const startWithPipeNode = fns[0] instanceof PipeNode;
178
210
  let firstNode;
179
211
  let curNode = firstNode = startWithPipeNode ? fns[0] : new PipeNode();
@@ -187,7 +219,7 @@ class EventNode extends BaseEvent {
187
219
  }
188
220
  curNode.pipList = toAdd;
189
221
  toAdd = [];
190
- curNode.on("finish", (args) => it.emit("process", args));
222
+ curNode.on("finish", args => it.emit("process", args));
191
223
  curNode = it;
192
224
  i++;
193
225
  }
@@ -198,16 +230,25 @@ class EventNode extends BaseEvent {
198
230
  lastNode: curNode
199
231
  };
200
232
  };
201
- this.preProcessMap = /* @__PURE__ */ new Map();
233
+ this.preProcessMap = /* @__PURE__ */new Map();
202
234
  this.preProcess = (type, ...fns) => {
203
- const { firstNode, lastNode } = this.buildPip(fns);
235
+ const _this$buildPip2 = this.buildPip(fns),
236
+ firstNode = _this$buildPip2.firstNode,
237
+ lastNode = _this$buildPip2.lastNode;
204
238
  this.preProcessMap.set(type, [firstNode, lastNode]);
205
239
  };
206
240
  this.emit = (type, ...args) => {
207
- const [firstNode, lastNode] = this.preProcessMap.get(type) || [];
241
+ const _ref3 = this.preProcessMap.get(type) || [],
242
+ _ref4 = _slicedToArray(_ref3, 2),
243
+ firstNode = _ref4[0],
244
+ lastNode = _ref4[1];
208
245
  if (firstNode && lastNode) {
209
246
  lastNode.once("real-finish", (...args2) => {
210
- this.eventQueue.push({ type, args: args2, time: timestamp() });
247
+ this.eventQueue.push({
248
+ type,
249
+ args: args2,
250
+ time: timestamp()
251
+ });
211
252
  this.start();
212
253
  });
213
254
  this.pause();
@@ -219,14 +260,11 @@ class EventNode extends BaseEvent {
219
260
  }
220
261
  from(type, promise) {
221
262
  if (promise) {
222
- promise.then(
223
- (value) => {
224
- this.emit(type, value);
225
- },
226
- (err) => {
227
- this.emit(type, err);
228
- }
229
- );
263
+ promise.then(value => {
264
+ this.emit(type, value);
265
+ }, err => {
266
+ this.emit(type, err);
267
+ });
230
268
  return;
231
269
  }
232
270
  return (...args) => {
@@ -236,20 +274,22 @@ class EventNode extends BaseEvent {
236
274
  }
237
275
  class PipeNode extends BaseEvent {
238
276
  constructor() {
239
- super({ mode: 1 /* Queue */ });
277
+ super({
278
+ mode: 1 /* Queue */
279
+ });
240
280
  this.pipList = [];
241
- this.onFinish = (fn) => {
281
+ this.onFinish = fn => {
242
282
  this.on("real-finish", fn);
243
283
  };
244
284
  this.isLastNode = false;
245
285
  this.markLast = () => this.isLastNode = true;
246
- this.on("process", (args) => __async(this, null, function* () {
286
+ this.on("process", async args => {
247
287
  let res;
248
288
  for (const pipeFn of this.pipList) {
249
289
  try {
250
290
  res = pipeFn(...args);
251
291
  if (res instanceof Promise) {
252
- res = yield res;
292
+ res = await res;
253
293
  }
254
294
  } catch (error) {
255
295
  res = error;
@@ -261,7 +301,7 @@ class PipeNode extends BaseEvent {
261
301
  } else {
262
302
  this.emitImmediate("finish", args);
263
303
  }
264
- }));
304
+ });
265
305
  }
266
306
  }
267
307
 
@@ -270,20 +310,21 @@ class Queue {
270
310
  this.len = 0;
271
311
  }
272
312
  get first() {
273
- var _a;
274
- return (_a = this._first) == null ? void 0 : _a.v;
313
+ return this._first?.v;
275
314
  }
276
315
  get last() {
277
- var _a;
278
- return (_a = this._last) == null ? void 0 : _a.v;
316
+ return this._last?.v;
279
317
  }
280
318
  push(it) {
281
319
  return this.insetAfter(it, this._last);
282
320
  }
283
321
  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);
322
+ const item = {
323
+ v: it,
324
+ prev: null,
325
+ next: null
326
+ };
327
+ const prev = anchor || this._first?.prev;
287
328
  const after = prev ? prev.next : this._first;
288
329
  item.prev = prev;
289
330
  item.next = after;
@@ -303,7 +344,8 @@ class Queue {
303
344
  return item;
304
345
  }
305
346
  delete(item) {
306
- const { prev, next } = item;
347
+ const prev = item.prev,
348
+ next = item.next;
307
349
  if (prev) {
308
350
  if (item === this._first) this._first = next;
309
351
  prev.next = next;
@@ -372,7 +414,7 @@ class Queue {
372
414
  function isNum(char) {
373
415
  return char === "0" || char === "1" || char === "2" || char === "3" || char === "4" || char === "5" || char === "6" || char === "7" || char === "8" || char === "9";
374
416
  }
375
- const genKey = (v) => `${v}-${Date.now()}-${Math.random()}`;
417
+ const genKey = v => `${v}-${Date.now()}-${Math.random()}`;
376
418
  class SortMap {
377
419
  constructor() {
378
420
  this.data = {};
@@ -381,7 +423,7 @@ class SortMap {
381
423
  this.data = {};
382
424
  }
383
425
  add(key, value) {
384
- const { data } = this;
426
+ const data = this.data;
385
427
  let list = data[key];
386
428
  if (!list) {
387
429
  list = new Queue();
@@ -391,27 +433,29 @@ class SortMap {
391
433
  }
392
434
  }
393
435
  function pick(obj, keys) {
394
- return keys.reduce(
395
- (acc, key) => {
396
- acc[key] = obj[key];
397
- return acc;
398
- },
399
- {}
400
- );
436
+ return keys.reduce((acc, key) => {
437
+ acc[key] = obj[key];
438
+ return acc;
439
+ }, {});
401
440
  }
402
441
  const NatureNum = /^(0|[1-9]\d*)$/;
403
- const isNatureNumStr = (val) => typeof val === "string" && NatureNum.test(val);
404
- const matchIdStart = (char) => {
442
+ const isNatureNumStr = val => typeof val === "string" && NatureNum.test(val);
443
+ const matchIdStart = char => {
405
444
  const code = char.charCodeAt(0);
406
- return code >= 48 && code <= 57 || // 2. 大写字母 A-Z (65-90)
407
- code >= 65 && code <= 90 || // 3. 小写字母 a-z (97-122)
408
- code >= 97 && code <= 122 || // 4. 下划线 _ (95)
409
- code === 95 || // 5. 斜杠 / (47)
410
- code === 47 || // 5. $ / (36)
445
+ return code >= 48 && code <= 57 ||
446
+ // 2. 大写字母 A-Z (65-90)
447
+ code >= 65 && code <= 90 ||
448
+ // 3. 小写字母 a-z (97-122)
449
+ code >= 97 && code <= 122 ||
450
+ // 4. 下划线 _ (95)
451
+ code === 95 ||
452
+ // 5. 斜杠 / (47)
453
+ code === 47 ||
454
+ // 5. $ / (36)
411
455
  code === 36;
412
456
  };
413
457
  const mask = new Uint8Array(128);
414
- [36, 47, 95].forEach((c) => mask[c] = 1);
458
+ [36, 47, 95].forEach(c => mask[c] = 1);
415
459
  for (let i = 48; i <= 57; i++) mask[i] = 1;
416
460
  for (let i = 65; i <= 90; i++) mask[i] = 1;
417
461
  for (let i = 97; i <= 122; i++) mask[i] = 1;
@@ -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}","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 as SubQueue<T>;\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 type SubQueue<T> = Omit<Queue<T>, 'push' | 'insetAfter' | 'delete' | 'shift'>;\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\nconst NatureNum = /^(0|[1-9]\\d*)$/;\nexport const isNatureNumStr = (val: unknown) => typeof val === 'string' && NatureNum.test(val);\n/**\n * 替代 /[\\$\\d\\w\\/]/.test(char) 的高性能版本\n * @param {string} char - 传入的单个字符\n * @returns {boolean}\n */\nexport const matchIdStart = (char: string) => {\n // 获取第一个字符的 Unicode 编码\n const code = char.charCodeAt(0);\n\n // 1. 数字 0-9 (48-57)\n return (\n (code >= 48 && code <= 57) ||\n // 2. 大写字母 A-Z (65-90)\n (code >= 65 && code <= 90) ||\n // 3. 小写字母 a-z (97-122)\n (code >= 97 && code <= 122) ||\n // 4. 下划线 _ (95)\n code === 95 ||\n // 5. 斜杠 / (47)\n code === 47 ||\n // 5. $ / (36)\n code === 36\n );\n};\n\n// 提前创建一个长度为 128 的布尔映射数组\nconst mask = new Uint8Array(128);\n[36, 47, 95].forEach(c => (mask[c] = 1)); // $, /, _\nfor (let i = 48; i <= 57; i++) mask[i] = 1; // 0-9\nfor (let i = 65; i <= 90; i++) mask[i] = 1; // A-Z\nfor (let i = 97; i <= 122; i++) mask[i] = 1; // a-z\n\nexport const matchIdStart2 = (char: string, i: number) => {\n const code = char.charCodeAt(i);\n return mask[code] === 1;\n};\n\nexport const jsVarRegexp = /\\b[a-zA-Z_$][a-zA-Z0-9_$]*\\b/g;\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,EAAuB;AApB3C,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;AAIO,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;AAEA,MAAM,SAAA,GAAY,gBAAA;AACX,MAAM,cAAA,GAAiB,CAAC,GAAA,KAAiB,OAAO,QAAQ,QAAA,IAAY,SAAA,CAAU,KAAK,GAAG;AAMtF,MAAM,YAAA,GAAe,CAAC,IAAA,KAAiB;AAE5C,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,UAAA,CAAW,CAAC,CAAA;AAG9B,EAAA,OACG,IAAA,IAAQ,MAAM,IAAA,IAAQ,EAAA;AAAA,EAEtB,IAAA,IAAQ,MAAM,IAAA,IAAQ,EAAA;AAAA,EAEtB,IAAA,IAAQ,MAAM,IAAA,IAAQ,GAAA;AAAA,EAEvB,IAAA,KAAS,EAAA;AAAA,EAET,IAAA,KAAS,EAAA;AAAA,EAET,IAAA,KAAS,EAAA;AAEb;AAGA,MAAM,IAAA,GAAO,IAAI,UAAA,CAAW,GAAG,CAAA;AAC/B,CAAC,EAAA,EAAI,IAAI,EAAE,CAAA,CAAE,QAAQ,CAAA,CAAA,KAAM,IAAA,CAAK,CAAC,CAAA,GAAI,CAAE,CAAA;AACvC,KAAA,IAAS,IAAI,EAAA,EAAI,CAAA,IAAK,IAAI,CAAA,EAAA,EAAK,IAAA,CAAK,CAAC,CAAA,GAAI,CAAA;AACzC,KAAA,IAAS,IAAI,EAAA,EAAI,CAAA,IAAK,IAAI,CAAA,EAAA,EAAK,IAAA,CAAK,CAAC,CAAA,GAAI,CAAA;AACzC,KAAA,IAAS,IAAI,EAAA,EAAI,CAAA,IAAK,KAAK,CAAA,EAAA,EAAK,IAAA,CAAK,CAAC,CAAA,GAAI,CAAA;AAEnC,MAAM,aAAA,GAAgB,CAAC,IAAA,EAAc,CAAA,KAAc;AACxD,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,UAAA,CAAW,CAAC,CAAA;AAC9B,EAAA,OAAO,IAAA,CAAK,IAAI,CAAA,KAAM,CAAA;AACxB;AAEO,MAAM,WAAA,GAAc;;;;"}
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 as SubQueue<T>;\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 type SubQueue<T> = Omit<Queue<T>, 'push' | 'insetAfter' | 'delete' | 'shift'>;\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\nconst NatureNum = /^(0|[1-9]\\d*)$/;\nexport const isNatureNumStr = (val: unknown) => typeof val === 'string' && NatureNum.test(val);\n/**\n * 替代 /[\\$\\d\\w\\/]/.test(char) 的高性能版本\n * @param {string} char - 传入的单个字符\n * @returns {boolean}\n */\nexport const matchIdStart = (char: string) => {\n // 获取第一个字符的 Unicode 编码\n const code = char.charCodeAt(0);\n\n // 1. 数字 0-9 (48-57)\n return (\n (code >= 48 && code <= 57) ||\n // 2. 大写字母 A-Z (65-90)\n (code >= 65 && code <= 90) ||\n // 3. 小写字母 a-z (97-122)\n (code >= 97 && code <= 122) ||\n // 4. 下划线 _ (95)\n code === 95 ||\n // 5. 斜杠 / (47)\n code === 47 ||\n // 5. $ / (36)\n code === 36\n );\n};\n\n// 提前创建一个长度为 128 的布尔映射数组\nconst mask = new Uint8Array(128);\n[36, 47, 95].forEach(c => (mask[c] = 1)); // $, /, _\nfor (let i = 48; i <= 57; i++) mask[i] = 1; // 0-9\nfor (let i = 65; i <= 90; i++) mask[i] = 1; // A-Z\nfor (let i = 97; i <= 122; i++) mask[i] = 1; // a-z\n\nexport const matchIdStart2 = (char: string, i: number) => {\n const code = char.charCodeAt(i);\n return mask[code] === 1;\n};\n\nexport const jsVarRegexp = /\\b[a-zA-Z_$][a-zA-Z0-9_$]*\\b/g;\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":["timestamp","globalThis","performance","now","bind","Date","EventMode","ProcessStatus","DefaultEventOpt","mode","ALL","BaseEvent","constructor","opt","eventQueue","status","subMap","Map","on","type","fn","suber","get","Set","add","set","off","delete","once","promiseOnce","Promise","resolve","args","setScheduler","scheduler","emit","emitImmediate","emitQueue","pause","unPause","start","processQueue","process","recallScheduler","_ref","shift","fns","allSub","forEach","it","callSub","length","dispatchEvent","iList","sort","a","b","idx","_this$eventQueue$spli","splice","_this$eventQueue$spli2","_slicedToArray","item","_ref2","clear","doCall","push","time","EventNode","pipe","_this$buildPip","buildPip","firstNode","lastNode","startWithPipeNode","PipeNode","curNode","i","toAdd","pipList","markLast","preProcessMap","preProcess","_this$buildPip2","_ref3","_ref4","from","promise","then","value","err","onFinish","isLastNode","res","pipeFn","error","Queue","len","first","_first","v","last","_last","insetAfter","anchor","prev","next","after","firstItem","lastItem","point","subRef","subQueue","clone","c","isNum","char","genKey","Math","random","SortMap","data","key","list","pick","obj","keys","reduce","acc","NatureNum","isNatureNumStr","val","test","matchIdStart","code","charCodeAt","mask","Uint8Array","matchIdStart2","jsVarRegexp"],"mappings":"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"}