bobe-shared 0.0.4
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/LICENSE +21 -0
- package/README.md +3 -0
- package/dist/bobe-shared.cjs.js +360 -0
- package/dist/bobe-shared.cjs.js.map +1 -0
- package/dist/bobe-shared.esm.js +348 -0
- package/dist/bobe-shared.esm.js.map +1 -0
- package/dist/index.d.ts +98 -0
- package/dist/index.umd.js +366 -0
- package/dist/index.umd.js.map +1 -0
- package/package.json +36 -0
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
(function (global, factory) {
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.BobeShared = {}));
|
|
5
|
+
})(this, (function (exports) { 'use strict';
|
|
6
|
+
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
9
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
10
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
11
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
12
|
+
var __spreadValues = (a, b) => {
|
|
13
|
+
for (var prop in b || (b = {}))
|
|
14
|
+
if (__hasOwnProp.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
if (__getOwnPropSymbols)
|
|
17
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
18
|
+
if (__propIsEnum.call(b, prop))
|
|
19
|
+
__defNormalProp(a, prop, b[prop]);
|
|
20
|
+
}
|
|
21
|
+
return a;
|
|
22
|
+
};
|
|
23
|
+
var __async = (__this, __arguments, generator) => {
|
|
24
|
+
return new Promise((resolve, reject) => {
|
|
25
|
+
var fulfilled = (value) => {
|
|
26
|
+
try {
|
|
27
|
+
step(generator.next(value));
|
|
28
|
+
} catch (e) {
|
|
29
|
+
reject(e);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
var rejected = (value) => {
|
|
33
|
+
try {
|
|
34
|
+
step(generator.throw(value));
|
|
35
|
+
} catch (e) {
|
|
36
|
+
reject(e);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
40
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
const timestamp = globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;
|
|
44
|
+
var EventMode = /* @__PURE__ */ ((EventMode2) => {
|
|
45
|
+
EventMode2[EventMode2["Immediate"] = 0] = "Immediate";
|
|
46
|
+
EventMode2[EventMode2["Queue"] = 1] = "Queue";
|
|
47
|
+
return EventMode2;
|
|
48
|
+
})(EventMode || {});
|
|
49
|
+
var ProcessStatus = /* @__PURE__ */ ((ProcessStatus2) => {
|
|
50
|
+
ProcessStatus2[ProcessStatus2["None"] = 0] = "None";
|
|
51
|
+
ProcessStatus2[ProcessStatus2["Processing"] = 1] = "Processing";
|
|
52
|
+
ProcessStatus2[ProcessStatus2["Paused"] = 2] = "Paused";
|
|
53
|
+
return ProcessStatus2;
|
|
54
|
+
})(ProcessStatus || {});
|
|
55
|
+
const DefaultEventOpt = {
|
|
56
|
+
mode: 0 /* Immediate */
|
|
57
|
+
};
|
|
58
|
+
const ALL = "__ALL_KEY";
|
|
59
|
+
class BaseEvent {
|
|
60
|
+
constructor(opt = {}) {
|
|
61
|
+
this.opt = opt;
|
|
62
|
+
this.eventQueue = [];
|
|
63
|
+
this.status = 0 /* None */;
|
|
64
|
+
this.subMap = /* @__PURE__ */ new Map();
|
|
65
|
+
this.on = (type, fn) => {
|
|
66
|
+
if (type == null) type = ALL;
|
|
67
|
+
const suber = this.subMap.get(type) || /* @__PURE__ */ new Set();
|
|
68
|
+
suber.add(fn);
|
|
69
|
+
this.subMap.set(type, suber);
|
|
70
|
+
};
|
|
71
|
+
this.off = (type, fn) => {
|
|
72
|
+
const suber = this.subMap.get(type != null ? type : ALL);
|
|
73
|
+
if (!suber) return;
|
|
74
|
+
suber.delete(fn);
|
|
75
|
+
};
|
|
76
|
+
this.once = (type, fn) => {
|
|
77
|
+
fn["once"] = true;
|
|
78
|
+
this.on(type, fn);
|
|
79
|
+
};
|
|
80
|
+
this.promiseOnce = (type) => {
|
|
81
|
+
return new Promise((resolve) => {
|
|
82
|
+
this.once(type, (...args) => {
|
|
83
|
+
resolve(args);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
this.setScheduler = (type, scheduler) => {
|
|
88
|
+
if (typeof type !== "string") {
|
|
89
|
+
this.scheduler = type;
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const set = this.subMap.get(type) || /* @__PURE__ */ new Set();
|
|
93
|
+
set["scheduler"] = scheduler;
|
|
94
|
+
this.subMap.set(type, set);
|
|
95
|
+
};
|
|
96
|
+
// construct 会初始化为下面其中一种
|
|
97
|
+
this.emit = (type, ...args) => {
|
|
98
|
+
this.opt.mode === 0 /* Immediate */ ? this.emitImmediate(type, ...args) : this.emitQueue(type, ...args);
|
|
99
|
+
};
|
|
100
|
+
this.pause = () => this.status = 2 /* Paused */;
|
|
101
|
+
this.unPause = () => this.status = 0 /* None */;
|
|
102
|
+
this.start = () => {
|
|
103
|
+
this.status = 0 /* None */;
|
|
104
|
+
this.processQueue();
|
|
105
|
+
};
|
|
106
|
+
this.process = () => {
|
|
107
|
+
if (this.scheduler) {
|
|
108
|
+
return this.scheduler(this.recallScheduler);
|
|
109
|
+
}
|
|
110
|
+
return this.processQueue();
|
|
111
|
+
};
|
|
112
|
+
this.recallScheduler = () => {
|
|
113
|
+
this.scheduler(this.recallScheduler);
|
|
114
|
+
};
|
|
115
|
+
this.processQueue = () => {
|
|
116
|
+
if (this.status === 2 /* Paused */) return;
|
|
117
|
+
this.status = 1 /* Processing */;
|
|
118
|
+
let { type, args } = this.eventQueue.shift() || {};
|
|
119
|
+
if (type) {
|
|
120
|
+
const fns = this.subMap.get(type);
|
|
121
|
+
const allSub = this.subMap.get(ALL);
|
|
122
|
+
fns == null ? void 0 : fns.forEach((it) => this.callSub(it, fns, args));
|
|
123
|
+
allSub == null ? void 0 : allSub.forEach((it) => this.callSub(it, allSub, args));
|
|
124
|
+
if (this.eventQueue.length > 0) {
|
|
125
|
+
this.processQueue();
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
if (this.status !== 2 /* Paused */) {
|
|
129
|
+
this.status = 0 /* None */;
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
this.dispatchEvent = (iList) => {
|
|
133
|
+
iList.sort((a, b) => b - a);
|
|
134
|
+
iList.forEach((idx) => {
|
|
135
|
+
const [item] = this.eventQueue.splice(idx, 1);
|
|
136
|
+
const { type, args } = item || {};
|
|
137
|
+
if (type && args) {
|
|
138
|
+
this.emitImmediate(type, ...args);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
};
|
|
142
|
+
this.clear = () => {
|
|
143
|
+
this.subMap.clear();
|
|
144
|
+
this.eventQueue = [];
|
|
145
|
+
this.scheduler = void 0;
|
|
146
|
+
};
|
|
147
|
+
this.opt = __spreadValues(__spreadValues({}, DefaultEventOpt), opt);
|
|
148
|
+
}
|
|
149
|
+
callSub(it, fns, args) {
|
|
150
|
+
const doCall = (...args2) => {
|
|
151
|
+
it(...args2);
|
|
152
|
+
if (it["once"] === true) fns.delete(it);
|
|
153
|
+
};
|
|
154
|
+
const scheduler = it["scheduler"] || fns["scheduler"];
|
|
155
|
+
if (scheduler) {
|
|
156
|
+
scheduler(doCall, ...args);
|
|
157
|
+
} else {
|
|
158
|
+
it(...args);
|
|
159
|
+
if (it["once"] === true) fns.delete(it);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
emitImmediate(type, ...args) {
|
|
163
|
+
const fns = this.subMap.get(type);
|
|
164
|
+
const allSub = this.subMap.get(ALL);
|
|
165
|
+
fns == null ? void 0 : fns.forEach((it) => this.callSub(it, fns, args));
|
|
166
|
+
allSub == null ? void 0 : allSub.forEach((it) => this.callSub(it, allSub, args));
|
|
167
|
+
}
|
|
168
|
+
emitQueue(type, ...args) {
|
|
169
|
+
this.eventQueue.push({ type, args, time: timestamp() });
|
|
170
|
+
this.process();
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
BaseEvent.a = 19;
|
|
174
|
+
class EventNode extends BaseEvent {
|
|
175
|
+
constructor() {
|
|
176
|
+
super({ mode: 1 /* Queue */ });
|
|
177
|
+
this.pipe = (type, ...fns) => {
|
|
178
|
+
const { firstNode, lastNode } = this.buildPip(fns);
|
|
179
|
+
this.on(type, (...args) => firstNode.emit("process", args));
|
|
180
|
+
return lastNode;
|
|
181
|
+
};
|
|
182
|
+
this.buildPip = (fns) => {
|
|
183
|
+
const startWithPipeNode = fns[0] instanceof PipeNode;
|
|
184
|
+
let firstNode;
|
|
185
|
+
let curNode = firstNode = startWithPipeNode ? fns[0] : new PipeNode();
|
|
186
|
+
let i = startWithPipeNode ? 1 : 0;
|
|
187
|
+
let toAdd = [];
|
|
188
|
+
while (i < fns.length) {
|
|
189
|
+
const it = fns[i];
|
|
190
|
+
if (!(it instanceof PipeNode)) {
|
|
191
|
+
toAdd.push(it);
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
curNode.pipList = toAdd;
|
|
195
|
+
toAdd = [];
|
|
196
|
+
curNode.on("finish", (args) => it.emit("process", args));
|
|
197
|
+
curNode = it;
|
|
198
|
+
i++;
|
|
199
|
+
}
|
|
200
|
+
curNode.markLast();
|
|
201
|
+
curNode.pipList = toAdd;
|
|
202
|
+
return {
|
|
203
|
+
firstNode,
|
|
204
|
+
lastNode: curNode
|
|
205
|
+
};
|
|
206
|
+
};
|
|
207
|
+
this.preProcessMap = /* @__PURE__ */ new Map();
|
|
208
|
+
this.preProcess = (type, ...fns) => {
|
|
209
|
+
const { firstNode, lastNode } = this.buildPip(fns);
|
|
210
|
+
this.preProcessMap.set(type, [firstNode, lastNode]);
|
|
211
|
+
};
|
|
212
|
+
this.emit = (type, ...args) => {
|
|
213
|
+
const [firstNode, lastNode] = this.preProcessMap.get(type) || [];
|
|
214
|
+
if (firstNode && lastNode) {
|
|
215
|
+
lastNode.once("real-finish", (...args2) => {
|
|
216
|
+
this.eventQueue.push({ type, args: args2, time: timestamp() });
|
|
217
|
+
this.start();
|
|
218
|
+
});
|
|
219
|
+
this.pause();
|
|
220
|
+
firstNode.emit("process", args);
|
|
221
|
+
} else {
|
|
222
|
+
this.emitQueue(type, ...args);
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
from(type, promise) {
|
|
227
|
+
if (promise) {
|
|
228
|
+
promise.then(
|
|
229
|
+
(value) => {
|
|
230
|
+
this.emit(type, value);
|
|
231
|
+
},
|
|
232
|
+
(err) => {
|
|
233
|
+
this.emit(type, err);
|
|
234
|
+
}
|
|
235
|
+
);
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
return (...args) => {
|
|
239
|
+
this.emit(type, ...args);
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
class PipeNode extends BaseEvent {
|
|
244
|
+
constructor() {
|
|
245
|
+
super({ mode: 1 /* Queue */ });
|
|
246
|
+
this.pipList = [];
|
|
247
|
+
this.onFinish = (fn) => {
|
|
248
|
+
this.on("real-finish", fn);
|
|
249
|
+
};
|
|
250
|
+
this.isLastNode = false;
|
|
251
|
+
this.markLast = () => this.isLastNode = true;
|
|
252
|
+
this.on("process", (args) => __async(this, null, function* () {
|
|
253
|
+
let res;
|
|
254
|
+
for (const pipeFn of this.pipList) {
|
|
255
|
+
try {
|
|
256
|
+
res = pipeFn(...args);
|
|
257
|
+
if (res instanceof Promise) {
|
|
258
|
+
res = yield res;
|
|
259
|
+
}
|
|
260
|
+
} catch (error) {
|
|
261
|
+
res = error;
|
|
262
|
+
}
|
|
263
|
+
args = [res];
|
|
264
|
+
}
|
|
265
|
+
if (this.isLastNode) {
|
|
266
|
+
this.emitImmediate("real-finish", ...args);
|
|
267
|
+
} else {
|
|
268
|
+
this.emitImmediate("finish", args);
|
|
269
|
+
}
|
|
270
|
+
}));
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
class Queue {
|
|
275
|
+
constructor() {
|
|
276
|
+
this.len = 0;
|
|
277
|
+
}
|
|
278
|
+
get first() {
|
|
279
|
+
var _a;
|
|
280
|
+
return (_a = this._first) == null ? void 0 : _a.v;
|
|
281
|
+
}
|
|
282
|
+
get last() {
|
|
283
|
+
var _a;
|
|
284
|
+
return (_a = this._last) == null ? void 0 : _a.v;
|
|
285
|
+
}
|
|
286
|
+
push(it) {
|
|
287
|
+
this.len++;
|
|
288
|
+
const { _last: last } = this;
|
|
289
|
+
const item = { v: it };
|
|
290
|
+
if (!last) {
|
|
291
|
+
this._first = this._last = item;
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
item.prev = this._last;
|
|
295
|
+
last.next = item;
|
|
296
|
+
this._last = item;
|
|
297
|
+
}
|
|
298
|
+
shift() {
|
|
299
|
+
const { _first: first } = this;
|
|
300
|
+
if (!first) return void 0;
|
|
301
|
+
this.len--;
|
|
302
|
+
const { next } = first;
|
|
303
|
+
first.next = void 0;
|
|
304
|
+
if (next) {
|
|
305
|
+
next.prev = void 0;
|
|
306
|
+
} else {
|
|
307
|
+
this._last = void 0;
|
|
308
|
+
}
|
|
309
|
+
this._first = next;
|
|
310
|
+
return first.v;
|
|
311
|
+
}
|
|
312
|
+
clone() {
|
|
313
|
+
const c = new Queue();
|
|
314
|
+
let point = this._first;
|
|
315
|
+
while (point != null) {
|
|
316
|
+
c.push(point.v);
|
|
317
|
+
point = point.next;
|
|
318
|
+
}
|
|
319
|
+
return c;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
function isNum(char) {
|
|
323
|
+
return char === "0" || char === "1" || char === "2" || char === "3" || char === "4" || char === "5" || char === "6" || char === "7" || char === "8" || char === "9";
|
|
324
|
+
}
|
|
325
|
+
const genKey = (v) => `${v}-${Date.now()}-${Math.random()}`;
|
|
326
|
+
class SortMap {
|
|
327
|
+
constructor() {
|
|
328
|
+
this.data = {};
|
|
329
|
+
}
|
|
330
|
+
clear() {
|
|
331
|
+
this.data = {};
|
|
332
|
+
}
|
|
333
|
+
add(key, value) {
|
|
334
|
+
const { data } = this;
|
|
335
|
+
let list = data[key];
|
|
336
|
+
if (!list) {
|
|
337
|
+
list = [];
|
|
338
|
+
data[key] = list;
|
|
339
|
+
}
|
|
340
|
+
list.push(value);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
function pick(obj, keys) {
|
|
344
|
+
return keys.reduce(
|
|
345
|
+
(acc, key) => {
|
|
346
|
+
acc[key] = obj[key];
|
|
347
|
+
return acc;
|
|
348
|
+
},
|
|
349
|
+
{}
|
|
350
|
+
);
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
exports.BaseEvent = BaseEvent;
|
|
354
|
+
exports.EventMode = EventMode;
|
|
355
|
+
exports.EventNode = EventNode;
|
|
356
|
+
exports.PipeNode = PipeNode;
|
|
357
|
+
exports.ProcessStatus = ProcessStatus;
|
|
358
|
+
exports.Queue = Queue;
|
|
359
|
+
exports.SortMap = SortMap;
|
|
360
|
+
exports.genKey = genKey;
|
|
361
|
+
exports.isNum = isNum;
|
|
362
|
+
exports.pick = pick;
|
|
363
|
+
exports.timestamp = timestamp;
|
|
364
|
+
|
|
365
|
+
}));
|
|
366
|
+
//# sourceMappingURL=index.umd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.umd.js","sources":["../src/event.ts","../src/util.ts"],"sourcesContent":["// @ts-nocheck\nexport type Func = (...args: any[]) => any;\n\nconst None = Symbol('none');\nexport const timestamp = globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;\n\nexport enum EventMode {\n Immediate,\n Queue,\n}\n\nexport enum ProcessStatus {\n None,\n Processing,\n Paused,\n}\n\nconst DefaultEventOpt = {\n mode: EventMode.Immediate,\n};\n\nconst ALL = '__ALL_KEY';\nconst myNull = null;\n\nexport type IEventOpt = Partial<typeof DefaultEventOpt>;\n\nexport type IScheduler = (doCall: Func, ...args: any[]) => void;\nexport type IGlobalScheduler = (goOn: () => void) => void;\nexport type ISetScheduler = {\n (type: string, scheduler: IScheduler): void;\n (scheduler: IGlobalScheduler): void;\n};\n\nexport type IEventItem = {\n type: string;\n args: any[];\n time: number;\n};\n\nexport class BaseEvent {\n static a = 19\n constructor(private opt: IEventOpt = {}) {\n this.opt = { ...DefaultEventOpt, ...opt };\n }\n scheduler?: IGlobalScheduler;\n eventQueue: IEventItem[] = [];\n status = ProcessStatus.None;\n subMap = new Map<string, Set<Func>>();\n on = (type: string | undefined, fn: Func) => {\n if (type == null) type = ALL;\n const suber = this.subMap.get(type) || new Set<Func>();\n suber.add(fn);\n this.subMap.set(type, suber);\n };\n\n off = (type: string | undefined, fn: Func) => {\n const suber = this.subMap.get(type ?? ALL);\n if (!suber) return;\n suber.delete(fn);\n };\n\n once = (type: string | undefined, fn: Func) => {\n fn['once'] = true;\n this.on(type, fn);\n };\n\n promiseOnce = (type: string | undefined) => {\n return new Promise((resolve) => {\n this.once(type, (...args) => {\n resolve(args)\n })\n })\n }\n\n setScheduler: ISetScheduler = (type: string | IGlobalScheduler, scheduler?: Func) => {\n if (typeof type !== 'string') {\n this.scheduler = type;\n return;\n }\n const set = this.subMap.get(type) || new Set<Func>();\n set['scheduler'] = scheduler;\n this.subMap.set(type, set);\n };\n\n callSub(it: Func, fns, args) {\n const doCall = (...args) => {\n it(...args);\n if (it['once'] === true) fns.delete(it);\n };\n const scheduler = it['scheduler'] || fns['scheduler'];\n\n if (scheduler) {\n scheduler(doCall, ...args);\n } else {\n it(...args);\n if (it['once'] === true) fns.delete(it);\n }\n }\n\n // construct 会初始化为下面其中一种\n emit = (type: string, ...args: any[]) => {\n this.opt.mode === EventMode.Immediate\n ? this.emitImmediate(type, ...args)\n : this.emitQueue(type, ...args);\n };\n \n emitImmediate(type: string, ...args: any[]) {\n const fns = this.subMap.get(type);\n const allSub = this.subMap.get(ALL);\n fns?.forEach((it) => this.callSub(it, fns, args));\n allSub?.forEach((it) => this.callSub(it, allSub, args));\n }\n\n emitQueue(type: string, ...args: any[]) {\n this.eventQueue.push({ type, args, time: timestamp() });\n this.process();\n }\n\n pause = () => (this.status = ProcessStatus.Paused);\n unPause = () => (this.status = ProcessStatus.None);\n start = () => {\n this.status = ProcessStatus.None;\n this.processQueue();\n };\n\n process = () => {\n if (this.scheduler) {\n return this.scheduler(this.recallScheduler);\n }\n return this.processQueue();\n }\n\n recallScheduler = () => {\n this.scheduler!(this.recallScheduler);\n };\n\n processQueue = () => {\n // 如果是挂起状态则直接结束\n if (this.status === ProcessStatus.Paused) return;\n this.status = ProcessStatus.Processing;\n\n let { type, args } = this.eventQueue.shift() || {};\n if (type) {\n // 在此过程中用户可通过 pause 和 start 同步控制事件处理\n const fns = this.subMap.get(type);\n const allSub = this.subMap.get(ALL);\n fns?.forEach((it) => this.callSub(it, fns, args));\n allSub?.forEach((it) => this.callSub(it, allSub, args));\n if (this.eventQueue.length > 0) {\n this.processQueue();\n }\n }\n //@ts-ignore 队列全部处理完成,如果执行过程中被 pause \n if(this.status !== ProcessStatus.Paused) {\n this.status = ProcessStatus.None;\n }\n };\n\n\n dispatchEvent = (iList: number[]) => {\n // 从大到小排序\n iList.sort((a, b) => b - a);\n iList.forEach((idx) => {\n const [item] = this.eventQueue.splice(idx, 1);\n const { type, args } = item || {};\n if (type && args) {\n this.emitImmediate(type, ...args);\n }\n });\n };\n\n clear = () => {\n this.subMap.clear();\n this.eventQueue = [];\n this.scheduler = undefined;\n };\n}\n\nexport class EventNode extends BaseEvent {\n constructor() {\n super({ mode: EventMode.Queue });\n }\n pipe = (type: string, ...fns: (Func | PipeNode)[]) => {\n const { firstNode, lastNode } = this.buildPip(fns);\n // 将第一个节点与事件源节点关联\n this.on(type, (...args) => firstNode.emit('process', args));\n return lastNode;\n };\n\n buildPip = (fns: (Func | PipeNode)[]) => {\n const startWithPipeNode = fns[0] instanceof PipeNode;\n let firstNode: PipeNode;\n // @ts-ignore\n let curNode: PipeNode = (firstNode = startWithPipeNode ? fns[0] : new PipeNode());\n let i = startWithPipeNode ? 1 : 0;\n let toAdd: Func[] = [];\n while (i < fns.length) {\n const it = fns[i];\n if (!(it instanceof PipeNode)) {\n toAdd.push(it);\n continue;\n }\n\n // 遇到下一个 pipeNode,把上一个完成\n curNode.pipList = toAdd;\n toAdd = [];\n curNode.on('finish', (args) => it.emit('process', args));\n\n curNode = it;\n i++;\n }\n // 处理最后一个节点\n curNode.markLast();\n curNode.pipList = toAdd;\n return {\n firstNode,\n lastNode: curNode,\n };\n };\n\n preProcessMap = new Map<string, [PipeNode, PipeNode]>();\n preProcess = (type: string, ...fns: (Func | PipeNode)[]) => {\n const { firstNode, lastNode } = this.buildPip(fns);\n this.preProcessMap.set(type, [firstNode, lastNode]);\n };\n\n emit = (type: string, ...args: any[]) => {\n const [firstNode, lastNode] = this.preProcessMap.get(type) || [];\n if (firstNode && lastNode) {\n lastNode.once('real-finish', (...args) => {\n // 等待预处理完成后再开始触发事件,且修正 args\n this.eventQueue.push({ type, args, time: timestamp() });\n this.start();\n });\n this.pause();\n firstNode.emit('process', args);\n } else {\n this.emitQueue(type, ...args);\n }\n };\n\n from(type: string, promise?: Promise<any>) {\n if (promise) {\n promise.then(\n (value) => {\n this.emit(type, value);\n },\n (err) => {\n this.emit(type, err);\n },\n );\n return;\n }\n\n return (...args: any[]) => {\n this.emit(type, ...args);\n };\n }\n}\n\nexport class PipeNode extends BaseEvent {\n public pipList: Func[] = [];\n\n onFinish = (fn: Func) => {\n this.on('real-finish', fn);\n };\n\n isLastNode = false;\n\n markLast = () => (this.isLastNode = true);\n\n constructor() {\n super({ mode: EventMode.Queue });\n this.on('process', async (args) => {\n let res;\n for (const pipeFn of this.pipList) {\n try {\n res = pipeFn(...args);\n if (res instanceof Promise) {\n res = await res;\n }\n } catch (error) {\n res = error;\n }\n args = [res];\n }\n if (this.isLastNode) {\n this.emitImmediate('real-finish', ...args);\n } else {\n this.emitImmediate('finish', args);\n }\n });\n }\n}","type QueueItem<T> = {\n v: T;\n prev?: QueueItem<T>;\n next?: QueueItem<T>;\n};\n\nexport class Queue<T> {\n _first?: QueueItem<T>;\n get first() {\n return this._first?.v!;\n }\n _last?: QueueItem<T>;\n get last() {\n return this._last?.v!;\n }\n len = 0;\n push(it: T) {\n this.len++;\n const { _last: last } = this;\n const item = { v: it } as QueueItem<T>;\n if (!last) {\n this._first = this._last = item;\n return;\n }\n item.prev = this._last!;\n last.next = item;\n this._last = item;\n }\n shift() {\n const { _first: first } = this;\n if (!first) return undefined;\n this.len--;\n\n const { next } = first;\n first.next = undefined;\n\n if (next) {\n next.prev = undefined;\n } else {\n this._last = undefined;\n }\n\n this._first = next;\n return first.v;\n }\n clone() {\n const c = new Queue<T>();\n let point = this._first;\n while (point != null) {\n c.push(point.v);\n point = point.next;\n }\n return c;\n }\n}\n\nexport function isNum(char: string) {\n return (\n char === '0' ||\n char === '1' ||\n char === '2' ||\n char === '3' ||\n char === '4' ||\n char === '5' ||\n char === '6' ||\n char === '7' ||\n char === '8' ||\n char === '9'\n );\n}\n\nexport const genKey = (v: string | number) => `${v}-${Date.now()}-${Math.random()}` as unknown as number;\n\nexport class SortMap<T> {\n data: Record<string | symbol, T[]> = {};\n clear() {\n this.data = {};\n }\n add(key: string | symbol, value: T) {\n const { data } = this;\n let list = data[key];\n if (!list) {\n list = [];\n data[key] = list;\n }\n list.push(value);\n }\n}\n\nexport function pick<T, K extends keyof T>(obj: T, keys: K[]) {\n return keys.reduce(\n (acc, key) => {\n acc[key] = obj[key];\n return acc;\n },\n {} as Pick<T, K>\n );\n}\n\n// const queue = new Queue([1,2,3,4]);\n// queue.shift()\n// queue.pop()\n// // @ts-ignore\n// queue.unshift('a')\n// // @ts-ignore\n// queue.push('b')\n// queue.shift()\n// queue.pop()\n// queue.shift()\n// queue.pop()\n// queue.shift()\n// queue.pop()\n// queue.push(10)\n// queue.array();\n"],"names":["EventMode","ProcessStatus","args"],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "bobe-shared",
|
|
3
|
+
"version": "0.0.4",
|
|
4
|
+
"main": "dist/bobe-shared.cjs.js",
|
|
5
|
+
"module": "dist/bobe-shared.esm.js",
|
|
6
|
+
"browser": "dist/bobe-shared.umd.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"devDependencies": {},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist"
|
|
11
|
+
],
|
|
12
|
+
"license": "MIT",
|
|
13
|
+
"keywords": [
|
|
14
|
+
"bobe-shared",
|
|
15
|
+
"smooth",
|
|
16
|
+
"cat"
|
|
17
|
+
],
|
|
18
|
+
"author": "smooth-cat",
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "git+git@github.com:smooth-cat/newme.git"
|
|
22
|
+
},
|
|
23
|
+
"bugs": {
|
|
24
|
+
"url": "https://github.com/smooth-cat/newme/issues"
|
|
25
|
+
},
|
|
26
|
+
"homepage": "https://github.com/smooth-cat/newme#readme",
|
|
27
|
+
"description": "a front-end framework utils",
|
|
28
|
+
"scripts": {
|
|
29
|
+
"ini": "node scripts/init.js",
|
|
30
|
+
"build": "rm -rf ./dist && rollup -c",
|
|
31
|
+
"pub": "node scripts/publish.js",
|
|
32
|
+
"dev": "rollup -c -w",
|
|
33
|
+
"t": "jest",
|
|
34
|
+
"tw": "jest --coverage --watch"
|
|
35
|
+
}
|
|
36
|
+
}
|