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.
- package/dist/bobe-shared.cjs.js +144 -100
- package/dist/bobe-shared.cjs.js.map +1 -1
- package/dist/bobe-shared.esm.js +144 -100
- package/dist/bobe-shared.esm.js.map +1 -1
- package/dist/index.umd.js +144 -100
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
package/dist/index.umd.js
CHANGED
|
@@ -4,49 +4,62 @@
|
|
|
4
4
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.BobeShared = {}));
|
|
5
5
|
})(this, (function (exports) { 'use strict';
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
7
|
+
function _arrayLikeToArray(r, a) {
|
|
8
|
+
(null == a || a > r.length) && (a = r.length);
|
|
9
|
+
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
|
|
10
|
+
return n;
|
|
11
|
+
}
|
|
12
|
+
function _arrayWithHoles(r) {
|
|
13
|
+
if (Array.isArray(r)) return r;
|
|
14
|
+
}
|
|
15
|
+
function _iterableToArrayLimit(r, l) {
|
|
16
|
+
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
17
|
+
if (null != t) {
|
|
18
|
+
var e,
|
|
19
|
+
n,
|
|
20
|
+
i,
|
|
21
|
+
u,
|
|
22
|
+
a = [],
|
|
23
|
+
f = true,
|
|
24
|
+
o = false;
|
|
25
|
+
try {
|
|
26
|
+
if (i = (t = t.call(r)).next, 0 === l) {
|
|
27
|
+
if (Object(t) !== t) return;
|
|
28
|
+
f = !1;
|
|
29
|
+
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
|
|
30
|
+
} catch (r) {
|
|
31
|
+
o = true, n = r;
|
|
32
|
+
} finally {
|
|
33
33
|
try {
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
|
|
34
|
+
if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
|
|
35
|
+
} finally {
|
|
36
|
+
if (o) throw n;
|
|
37
37
|
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
}
|
|
39
|
+
return a;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function _nonIterableRest() {
|
|
43
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
44
|
+
}
|
|
45
|
+
function _slicedToArray(r, e) {
|
|
46
|
+
return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
|
|
47
|
+
}
|
|
48
|
+
function _unsupportedIterableToArray(r, a) {
|
|
49
|
+
if (r) {
|
|
50
|
+
if ("string" == typeof r) return _arrayLikeToArray(r, a);
|
|
51
|
+
var t = {}.toString.call(r).slice(8, -1);
|
|
52
|
+
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;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
43
56
|
const timestamp = globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;
|
|
44
|
-
var EventMode = /* @__PURE__ */
|
|
57
|
+
var EventMode = /* @__PURE__ */(EventMode2 => {
|
|
45
58
|
EventMode2[EventMode2["Immediate"] = 0] = "Immediate";
|
|
46
59
|
EventMode2[EventMode2["Queue"] = 1] = "Queue";
|
|
47
60
|
return EventMode2;
|
|
48
61
|
})(EventMode || {});
|
|
49
|
-
var ProcessStatus = /* @__PURE__ */
|
|
62
|
+
var ProcessStatus = /* @__PURE__ */(ProcessStatus2 => {
|
|
50
63
|
ProcessStatus2[ProcessStatus2["None"] = 0] = "None";
|
|
51
64
|
ProcessStatus2[ProcessStatus2["Processing"] = 1] = "Processing";
|
|
52
65
|
ProcessStatus2[ProcessStatus2["Paused"] = 2] = "Paused";
|
|
@@ -61,15 +74,15 @@
|
|
|
61
74
|
this.opt = opt;
|
|
62
75
|
this.eventQueue = [];
|
|
63
76
|
this.status = 0 /* None */;
|
|
64
|
-
this.subMap = /* @__PURE__ */
|
|
77
|
+
this.subMap = /* @__PURE__ */new Map();
|
|
65
78
|
this.on = (type, fn) => {
|
|
66
79
|
if (type == null) type = ALL;
|
|
67
|
-
const suber = this.subMap.get(type) || /* @__PURE__ */
|
|
80
|
+
const suber = this.subMap.get(type) || /* @__PURE__ */new Set();
|
|
68
81
|
suber.add(fn);
|
|
69
82
|
this.subMap.set(type, suber);
|
|
70
83
|
};
|
|
71
84
|
this.off = (type, fn) => {
|
|
72
|
-
const suber = this.subMap.get(type
|
|
85
|
+
const suber = this.subMap.get(type ?? ALL);
|
|
73
86
|
if (!suber) return;
|
|
74
87
|
suber.delete(fn);
|
|
75
88
|
};
|
|
@@ -77,8 +90,8 @@
|
|
|
77
90
|
fn["once"] = true;
|
|
78
91
|
this.on(type, fn);
|
|
79
92
|
};
|
|
80
|
-
this.promiseOnce =
|
|
81
|
-
return new Promise(
|
|
93
|
+
this.promiseOnce = type => {
|
|
94
|
+
return new Promise(resolve => {
|
|
82
95
|
this.once(type, (...args) => {
|
|
83
96
|
resolve(args);
|
|
84
97
|
});
|
|
@@ -89,7 +102,7 @@
|
|
|
89
102
|
this.scheduler = type;
|
|
90
103
|
return;
|
|
91
104
|
}
|
|
92
|
-
const set = this.subMap.get(type) || /* @__PURE__ */
|
|
105
|
+
const set = this.subMap.get(type) || /* @__PURE__ */new Set();
|
|
93
106
|
set["scheduler"] = scheduler;
|
|
94
107
|
this.subMap.set(type, set);
|
|
95
108
|
};
|
|
@@ -115,12 +128,14 @@
|
|
|
115
128
|
this.processQueue = () => {
|
|
116
129
|
if (this.status === 2 /* Paused */) return;
|
|
117
130
|
this.status = 1 /* Processing */;
|
|
118
|
-
let
|
|
131
|
+
let _ref = this.eventQueue.shift() || {},
|
|
132
|
+
type = _ref.type,
|
|
133
|
+
args = _ref.args;
|
|
119
134
|
if (type) {
|
|
120
135
|
const fns = this.subMap.get(type);
|
|
121
136
|
const allSub = this.subMap.get(ALL);
|
|
122
|
-
fns
|
|
123
|
-
allSub
|
|
137
|
+
fns?.forEach(it => this.callSub(it, fns, args));
|
|
138
|
+
allSub?.forEach(it => this.callSub(it, allSub, args));
|
|
124
139
|
if (this.eventQueue.length > 0) {
|
|
125
140
|
this.processQueue();
|
|
126
141
|
}
|
|
@@ -129,11 +144,15 @@
|
|
|
129
144
|
this.status = 0 /* None */;
|
|
130
145
|
}
|
|
131
146
|
};
|
|
132
|
-
this.dispatchEvent =
|
|
147
|
+
this.dispatchEvent = iList => {
|
|
133
148
|
iList.sort((a, b) => b - a);
|
|
134
|
-
iList.forEach(
|
|
135
|
-
const
|
|
136
|
-
|
|
149
|
+
iList.forEach(idx => {
|
|
150
|
+
const _this$eventQueue$spli = this.eventQueue.splice(idx, 1),
|
|
151
|
+
_this$eventQueue$spli2 = _slicedToArray(_this$eventQueue$spli, 1),
|
|
152
|
+
item = _this$eventQueue$spli2[0];
|
|
153
|
+
const _ref2 = item || {},
|
|
154
|
+
type = _ref2.type,
|
|
155
|
+
args = _ref2.args;
|
|
137
156
|
if (type && args) {
|
|
138
157
|
this.emitImmediate(type, ...args);
|
|
139
158
|
}
|
|
@@ -144,7 +163,13 @@
|
|
|
144
163
|
this.eventQueue = [];
|
|
145
164
|
this.scheduler = void 0;
|
|
146
165
|
};
|
|
147
|
-
this.opt =
|
|
166
|
+
this.opt = {
|
|
167
|
+
...DefaultEventOpt,
|
|
168
|
+
...opt
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
static {
|
|
172
|
+
this.a = 19;
|
|
148
173
|
}
|
|
149
174
|
callSub(it, fns, args) {
|
|
150
175
|
const doCall = (...args2) => {
|
|
@@ -162,24 +187,31 @@
|
|
|
162
187
|
emitImmediate(type, ...args) {
|
|
163
188
|
const fns = this.subMap.get(type);
|
|
164
189
|
const allSub = this.subMap.get(ALL);
|
|
165
|
-
fns
|
|
166
|
-
allSub
|
|
190
|
+
fns?.forEach(it => this.callSub(it, fns, args));
|
|
191
|
+
allSub?.forEach(it => this.callSub(it, allSub, args));
|
|
167
192
|
}
|
|
168
193
|
emitQueue(type, ...args) {
|
|
169
|
-
this.eventQueue.push({
|
|
194
|
+
this.eventQueue.push({
|
|
195
|
+
type,
|
|
196
|
+
args,
|
|
197
|
+
time: timestamp()
|
|
198
|
+
});
|
|
170
199
|
this.process();
|
|
171
200
|
}
|
|
172
201
|
}
|
|
173
|
-
BaseEvent.a = 19;
|
|
174
202
|
class EventNode extends BaseEvent {
|
|
175
203
|
constructor() {
|
|
176
|
-
super({
|
|
204
|
+
super({
|
|
205
|
+
mode: 1 /* Queue */
|
|
206
|
+
});
|
|
177
207
|
this.pipe = (type, ...fns) => {
|
|
178
|
-
const
|
|
208
|
+
const _this$buildPip = this.buildPip(fns),
|
|
209
|
+
firstNode = _this$buildPip.firstNode,
|
|
210
|
+
lastNode = _this$buildPip.lastNode;
|
|
179
211
|
this.on(type, (...args) => firstNode.emit("process", args));
|
|
180
212
|
return lastNode;
|
|
181
213
|
};
|
|
182
|
-
this.buildPip =
|
|
214
|
+
this.buildPip = fns => {
|
|
183
215
|
const startWithPipeNode = fns[0] instanceof PipeNode;
|
|
184
216
|
let firstNode;
|
|
185
217
|
let curNode = firstNode = startWithPipeNode ? fns[0] : new PipeNode();
|
|
@@ -193,7 +225,7 @@
|
|
|
193
225
|
}
|
|
194
226
|
curNode.pipList = toAdd;
|
|
195
227
|
toAdd = [];
|
|
196
|
-
curNode.on("finish",
|
|
228
|
+
curNode.on("finish", args => it.emit("process", args));
|
|
197
229
|
curNode = it;
|
|
198
230
|
i++;
|
|
199
231
|
}
|
|
@@ -204,16 +236,25 @@
|
|
|
204
236
|
lastNode: curNode
|
|
205
237
|
};
|
|
206
238
|
};
|
|
207
|
-
this.preProcessMap = /* @__PURE__ */
|
|
239
|
+
this.preProcessMap = /* @__PURE__ */new Map();
|
|
208
240
|
this.preProcess = (type, ...fns) => {
|
|
209
|
-
const
|
|
241
|
+
const _this$buildPip2 = this.buildPip(fns),
|
|
242
|
+
firstNode = _this$buildPip2.firstNode,
|
|
243
|
+
lastNode = _this$buildPip2.lastNode;
|
|
210
244
|
this.preProcessMap.set(type, [firstNode, lastNode]);
|
|
211
245
|
};
|
|
212
246
|
this.emit = (type, ...args) => {
|
|
213
|
-
const
|
|
247
|
+
const _ref3 = this.preProcessMap.get(type) || [],
|
|
248
|
+
_ref4 = _slicedToArray(_ref3, 2),
|
|
249
|
+
firstNode = _ref4[0],
|
|
250
|
+
lastNode = _ref4[1];
|
|
214
251
|
if (firstNode && lastNode) {
|
|
215
252
|
lastNode.once("real-finish", (...args2) => {
|
|
216
|
-
this.eventQueue.push({
|
|
253
|
+
this.eventQueue.push({
|
|
254
|
+
type,
|
|
255
|
+
args: args2,
|
|
256
|
+
time: timestamp()
|
|
257
|
+
});
|
|
217
258
|
this.start();
|
|
218
259
|
});
|
|
219
260
|
this.pause();
|
|
@@ -225,14 +266,11 @@
|
|
|
225
266
|
}
|
|
226
267
|
from(type, promise) {
|
|
227
268
|
if (promise) {
|
|
228
|
-
promise.then(
|
|
229
|
-
(value)
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
this.emit(type, err);
|
|
234
|
-
}
|
|
235
|
-
);
|
|
269
|
+
promise.then(value => {
|
|
270
|
+
this.emit(type, value);
|
|
271
|
+
}, err => {
|
|
272
|
+
this.emit(type, err);
|
|
273
|
+
});
|
|
236
274
|
return;
|
|
237
275
|
}
|
|
238
276
|
return (...args) => {
|
|
@@ -242,20 +280,22 @@
|
|
|
242
280
|
}
|
|
243
281
|
class PipeNode extends BaseEvent {
|
|
244
282
|
constructor() {
|
|
245
|
-
super({
|
|
283
|
+
super({
|
|
284
|
+
mode: 1 /* Queue */
|
|
285
|
+
});
|
|
246
286
|
this.pipList = [];
|
|
247
|
-
this.onFinish =
|
|
287
|
+
this.onFinish = fn => {
|
|
248
288
|
this.on("real-finish", fn);
|
|
249
289
|
};
|
|
250
290
|
this.isLastNode = false;
|
|
251
291
|
this.markLast = () => this.isLastNode = true;
|
|
252
|
-
this.on("process",
|
|
292
|
+
this.on("process", async args => {
|
|
253
293
|
let res;
|
|
254
294
|
for (const pipeFn of this.pipList) {
|
|
255
295
|
try {
|
|
256
296
|
res = pipeFn(...args);
|
|
257
297
|
if (res instanceof Promise) {
|
|
258
|
-
res =
|
|
298
|
+
res = await res;
|
|
259
299
|
}
|
|
260
300
|
} catch (error) {
|
|
261
301
|
res = error;
|
|
@@ -267,7 +307,7 @@
|
|
|
267
307
|
} else {
|
|
268
308
|
this.emitImmediate("finish", args);
|
|
269
309
|
}
|
|
270
|
-
})
|
|
310
|
+
});
|
|
271
311
|
}
|
|
272
312
|
}
|
|
273
313
|
|
|
@@ -276,20 +316,21 @@
|
|
|
276
316
|
this.len = 0;
|
|
277
317
|
}
|
|
278
318
|
get first() {
|
|
279
|
-
|
|
280
|
-
return (_a = this._first) == null ? void 0 : _a.v;
|
|
319
|
+
return this._first?.v;
|
|
281
320
|
}
|
|
282
321
|
get last() {
|
|
283
|
-
|
|
284
|
-
return (_a = this._last) == null ? void 0 : _a.v;
|
|
322
|
+
return this._last?.v;
|
|
285
323
|
}
|
|
286
324
|
push(it) {
|
|
287
325
|
return this.insetAfter(it, this._last);
|
|
288
326
|
}
|
|
289
327
|
insetAfter(it, anchor) {
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
328
|
+
const item = {
|
|
329
|
+
v: it,
|
|
330
|
+
prev: null,
|
|
331
|
+
next: null
|
|
332
|
+
};
|
|
333
|
+
const prev = anchor || this._first?.prev;
|
|
293
334
|
const after = prev ? prev.next : this._first;
|
|
294
335
|
item.prev = prev;
|
|
295
336
|
item.next = after;
|
|
@@ -309,7 +350,8 @@
|
|
|
309
350
|
return item;
|
|
310
351
|
}
|
|
311
352
|
delete(item) {
|
|
312
|
-
const
|
|
353
|
+
const prev = item.prev,
|
|
354
|
+
next = item.next;
|
|
313
355
|
if (prev) {
|
|
314
356
|
if (item === this._first) this._first = next;
|
|
315
357
|
prev.next = next;
|
|
@@ -378,7 +420,7 @@
|
|
|
378
420
|
function isNum(char) {
|
|
379
421
|
return char === "0" || char === "1" || char === "2" || char === "3" || char === "4" || char === "5" || char === "6" || char === "7" || char === "8" || char === "9";
|
|
380
422
|
}
|
|
381
|
-
const genKey =
|
|
423
|
+
const genKey = v => `${v}-${Date.now()}-${Math.random()}`;
|
|
382
424
|
class SortMap {
|
|
383
425
|
constructor() {
|
|
384
426
|
this.data = {};
|
|
@@ -387,7 +429,7 @@
|
|
|
387
429
|
this.data = {};
|
|
388
430
|
}
|
|
389
431
|
add(key, value) {
|
|
390
|
-
const
|
|
432
|
+
const data = this.data;
|
|
391
433
|
let list = data[key];
|
|
392
434
|
if (!list) {
|
|
393
435
|
list = new Queue();
|
|
@@ -397,27 +439,29 @@
|
|
|
397
439
|
}
|
|
398
440
|
}
|
|
399
441
|
function pick(obj, keys) {
|
|
400
|
-
return keys.reduce(
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
},
|
|
405
|
-
{}
|
|
406
|
-
);
|
|
442
|
+
return keys.reduce((acc, key) => {
|
|
443
|
+
acc[key] = obj[key];
|
|
444
|
+
return acc;
|
|
445
|
+
}, {});
|
|
407
446
|
}
|
|
408
447
|
const NatureNum = /^(0|[1-9]\d*)$/;
|
|
409
|
-
const isNatureNumStr =
|
|
410
|
-
const matchIdStart =
|
|
448
|
+
const isNatureNumStr = val => typeof val === "string" && NatureNum.test(val);
|
|
449
|
+
const matchIdStart = char => {
|
|
411
450
|
const code = char.charCodeAt(0);
|
|
412
|
-
return code >= 48 && code <= 57 ||
|
|
413
|
-
|
|
414
|
-
code >=
|
|
415
|
-
|
|
416
|
-
code
|
|
451
|
+
return code >= 48 && code <= 57 ||
|
|
452
|
+
// 2. 大写字母 A-Z (65-90)
|
|
453
|
+
code >= 65 && code <= 90 ||
|
|
454
|
+
// 3. 小写字母 a-z (97-122)
|
|
455
|
+
code >= 97 && code <= 122 ||
|
|
456
|
+
// 4. 下划线 _ (95)
|
|
457
|
+
code === 95 ||
|
|
458
|
+
// 5. 斜杠 / (47)
|
|
459
|
+
code === 47 ||
|
|
460
|
+
// 5. $ / (36)
|
|
417
461
|
code === 36;
|
|
418
462
|
};
|
|
419
463
|
const mask = new Uint8Array(128);
|
|
420
|
-
[36, 47, 95].forEach(
|
|
464
|
+
[36, 47, 95].forEach(c => mask[c] = 1);
|
|
421
465
|
for (let i = 48; i <= 57; i++) mask[i] = 1;
|
|
422
466
|
for (let i = 65; i <= 90; i++) mask[i] = 1;
|
|
423
467
|
for (let i = 97; i <= 122; i++) mask[i] = 1;
|
package/dist/index.umd.js.map
CHANGED
|
@@ -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}","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":"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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 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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"}
|