bobe-shared 0.0.38 → 0.0.40

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.
@@ -438,14 +438,23 @@ const matchIdStart = char => {
438
438
  const code = char.charCodeAt(0);
439
439
  return code >= 48 && code <= 57 || code >= 65 && code <= 90 || code >= 97 && code <= 122 || code === 95 || code === 47 || code === 36;
440
440
  };
441
- const mask = new Uint8Array(128);
442
- [36, 47, 95].forEach(c => mask[c] = 1);
443
- for (let i = 48; i <= 57; i++) mask[i] = 1;
444
- for (let i = 65; i <= 90; i++) mask[i] = 1;
445
- for (let i = 97; i <= 122; i++) mask[i] = 1;
441
+ const idStartMask = new Uint8Array(128);
442
+ [36, 47, 95].forEach(c => idStartMask[c] = 1);
443
+ for (let i = 48; i <= 57; i++) idStartMask[i] = 1;
444
+ for (let i = 65; i <= 90; i++) idStartMask[i] = 1;
445
+ for (let i = 97; i <= 122; i++) idStartMask[i] = 1;
446
446
  const matchIdStart2 = (char, i) => {
447
447
  const code = char.charCodeAt(i);
448
- return mask[code] === 1;
448
+ return idStartMask[code] === 1;
449
+ };
450
+ const idMask = new Uint8Array(128);
451
+ [36, 45, 47, 95].forEach(c => idMask[c] = 1);
452
+ for (let i = 48; i <= 57; i++) idMask[i] = 1;
453
+ for (let i = 65; i <= 90; i++) idMask[i] = 1;
454
+ for (let i = 97; i <= 122; i++) idMask[i] = 1;
455
+ const matchId = (char, i) => {
456
+ const code = char.charCodeAt(i);
457
+ return idMask[code] === 1;
449
458
  };
450
459
  const jsVarRegexp = /\b[a-zA-Z_$][a-zA-Z0-9_$]*\b/g;
451
460
 
@@ -460,6 +469,7 @@ exports.genKey = genKey;
460
469
  exports.isNatureNumStr = isNatureNumStr;
461
470
  exports.isNum = isNum;
462
471
  exports.jsVarRegexp = jsVarRegexp;
472
+ exports.matchId = matchId;
463
473
  exports.matchIdStart = matchIdStart;
464
474
  exports.matchIdStart2 = matchIdStart2;
465
475
  exports.pick = pick;
@@ -1 +1 @@
1
- {"version":3,"file":"bobe-shared.cjs.js","sources":["../src/event.ts","../src/util.ts"],"sourcesContent":["// @ts-nocheck\nexport type Func = (...args: any[]) => any;\n\nconst None = Symbol('none');\nexport const timestamp = globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;\n\nexport enum EventMode {\n Immediate,\n Queue,\n}\n\nexport enum ProcessStatus {\n None,\n Processing,\n Paused,\n}\n\nconst DefaultEventOpt = {\n mode: EventMode.Immediate,\n};\n\nconst ALL = '__ALL_KEY';\nconst myNull = null;\n\nexport type IEventOpt = Partial<typeof DefaultEventOpt>;\n\nexport type IScheduler = (doCall: Func, ...args: any[]) => void;\nexport type IGlobalScheduler = (goOn: () => void) => void;\nexport type ISetScheduler = {\n (type: string, scheduler: IScheduler): void;\n (scheduler: IGlobalScheduler): void;\n};\n\nexport type IEventItem = {\n type: string;\n args: any[];\n time: number;\n};\n\nexport class BaseEvent {\n static a = 19\n constructor(private opt: IEventOpt = {}) {\n this.opt = { ...DefaultEventOpt, ...opt };\n }\n scheduler?: IGlobalScheduler;\n eventQueue: IEventItem[] = [];\n status = ProcessStatus.None;\n subMap = new Map<string, Set<Func>>();\n on = (type: string | undefined, fn: Func) => {\n if (type == null) type = ALL;\n const suber = this.subMap.get(type) || new Set<Func>();\n suber.add(fn);\n this.subMap.set(type, suber);\n };\n\n off = (type: string | undefined, fn: Func) => {\n const suber = this.subMap.get(type ?? ALL);\n if (!suber) return;\n suber.delete(fn);\n };\n\n once = (type: string | undefined, fn: Func) => {\n fn['once'] = true;\n this.on(type, fn);\n };\n\n promiseOnce = (type: string | undefined) => {\n return new Promise((resolve) => {\n this.once(type, (...args) => {\n resolve(args)\n })\n })\n }\n\n setScheduler: ISetScheduler = (type: string | IGlobalScheduler, scheduler?: Func) => {\n if (typeof type !== 'string') {\n this.scheduler = type;\n return;\n }\n const set = this.subMap.get(type) || new Set<Func>();\n set['scheduler'] = scheduler;\n this.subMap.set(type, set);\n };\n\n callSub(it: Func, fns, args) {\n const doCall = (...args) => {\n it(...args);\n if (it['once'] === true) fns.delete(it);\n };\n const scheduler = it['scheduler'] || fns['scheduler'];\n\n if (scheduler) {\n scheduler(doCall, ...args);\n } else {\n it(...args);\n if (it['once'] === true) fns.delete(it);\n }\n }\n\n // construct 会初始化为下面其中一种\n emit = (type: string, ...args: any[]) => {\n this.opt.mode === EventMode.Immediate\n ? this.emitImmediate(type, ...args)\n : this.emitQueue(type, ...args);\n };\n \n emitImmediate(type: string, ...args: any[]) {\n const fns = this.subMap.get(type);\n const allSub = this.subMap.get(ALL);\n fns?.forEach((it) => this.callSub(it, fns, args));\n allSub?.forEach((it) => this.callSub(it, allSub, args));\n }\n\n emitQueue(type: string, ...args: any[]) {\n this.eventQueue.push({ type, args, time: timestamp() });\n this.process();\n }\n\n pause = () => (this.status = ProcessStatus.Paused);\n unPause = () => (this.status = ProcessStatus.None);\n start = () => {\n this.status = ProcessStatus.None;\n this.processQueue();\n };\n\n process = () => {\n if (this.scheduler) {\n return this.scheduler(this.recallScheduler);\n }\n return this.processQueue();\n }\n\n recallScheduler = () => {\n this.scheduler!(this.recallScheduler);\n };\n\n processQueue = () => {\n // 如果是挂起状态则直接结束\n if (this.status === ProcessStatus.Paused) return;\n this.status = ProcessStatus.Processing;\n\n let { type, args } = this.eventQueue.shift() || {};\n if (type) {\n // 在此过程中用户可通过 pause 和 start 同步控制事件处理\n const fns = this.subMap.get(type);\n const allSub = this.subMap.get(ALL);\n fns?.forEach((it) => this.callSub(it, fns, args));\n allSub?.forEach((it) => this.callSub(it, allSub, args));\n if (this.eventQueue.length > 0) {\n this.processQueue();\n }\n }\n //@ts-ignore 队列全部处理完成,如果执行过程中被 pause \n if(this.status !== ProcessStatus.Paused) {\n this.status = ProcessStatus.None;\n }\n };\n\n\n dispatchEvent = (iList: number[]) => {\n // 从大到小排序\n iList.sort((a, b) => b - a);\n iList.forEach((idx) => {\n const [item] = this.eventQueue.splice(idx, 1);\n const { type, args } = item || {};\n if (type && args) {\n this.emitImmediate(type, ...args);\n }\n });\n };\n\n clear = () => {\n this.subMap.clear();\n this.eventQueue = [];\n this.scheduler = undefined;\n };\n}\n\nexport class EventNode extends BaseEvent {\n constructor() {\n super({ mode: EventMode.Queue });\n }\n pipe = (type: string, ...fns: (Func | PipeNode)[]) => {\n const { firstNode, lastNode } = this.buildPip(fns);\n // 将第一个节点与事件源节点关联\n this.on(type, (...args) => firstNode.emit('process', args));\n return lastNode;\n };\n\n buildPip = (fns: (Func | PipeNode)[]) => {\n const startWithPipeNode = fns[0] instanceof PipeNode;\n let firstNode: PipeNode;\n // @ts-ignore\n let curNode: PipeNode = (firstNode = startWithPipeNode ? fns[0] : new PipeNode());\n let i = startWithPipeNode ? 1 : 0;\n let toAdd: Func[] = [];\n while (i < fns.length) {\n const it = fns[i];\n if (!(it instanceof PipeNode)) {\n toAdd.push(it);\n continue;\n }\n\n // 遇到下一个 pipeNode,把上一个完成\n curNode.pipList = toAdd;\n toAdd = [];\n curNode.on('finish', (args) => it.emit('process', args));\n\n curNode = it;\n i++;\n }\n // 处理最后一个节点\n curNode.markLast();\n curNode.pipList = toAdd;\n return {\n firstNode,\n lastNode: curNode,\n };\n };\n\n preProcessMap = new Map<string, [PipeNode, PipeNode]>();\n preProcess = (type: string, ...fns: (Func | PipeNode)[]) => {\n const { firstNode, lastNode } = this.buildPip(fns);\n this.preProcessMap.set(type, [firstNode, lastNode]);\n };\n\n emit = (type: string, ...args: any[]) => {\n const [firstNode, lastNode] = this.preProcessMap.get(type) || [];\n if (firstNode && lastNode) {\n lastNode.once('real-finish', (...args) => {\n // 等待预处理完成后再开始触发事件,且修正 args\n this.eventQueue.push({ type, args, time: timestamp() });\n this.start();\n });\n this.pause();\n firstNode.emit('process', args);\n } else {\n this.emitQueue(type, ...args);\n }\n };\n\n from(type: string, promise?: Promise<any>) {\n if (promise) {\n promise.then(\n (value) => {\n this.emit(type, value);\n },\n (err) => {\n this.emit(type, err);\n },\n );\n return;\n }\n\n return (...args: any[]) => {\n this.emit(type, ...args);\n };\n }\n}\n\nexport class PipeNode extends BaseEvent {\n public pipList: Func[] = [];\n\n onFinish = (fn: Func) => {\n this.on('real-finish', fn);\n };\n\n isLastNode = false;\n\n markLast = () => (this.isLastNode = true);\n\n constructor() {\n super({ mode: EventMode.Queue });\n this.on('process', async (args) => {\n let res;\n for (const pipeFn of this.pipList) {\n try {\n res = pipeFn(...args);\n if (res instanceof Promise) {\n res = await res;\n }\n } catch (error) {\n res = error;\n }\n args = [res];\n }\n if (this.isLastNode) {\n this.emitImmediate('real-finish', ...args);\n } else {\n this.emitImmediate('finish', args);\n }\n });\n }\n}","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","Immediate","ALL","BaseEvent","a","constructor","opt","eventQueue","status","None","subMap","Map","on","type","fn","suber","get","Set","add","set","off","delete","once","promiseOnce","Promise","resolve","args","setScheduler","scheduler","callSub","it","fns","doCall","emit","emitImmediate","emitQueue","allSub","forEach","push","time","process","pause","Paused","unPause","start","processQueue","recallScheduler","Processing","_ref","shift","length","dispatchEvent","iList","sort","b","idx","_this$eventQueue$spli","splice","_this$eventQueue$spli2","_slicedToArray","item","_ref2","clear","undefined","EventNode","Queue","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","first","_first","v","last","_last","len","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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"}
1
+ {"version":3,"file":"bobe-shared.cjs.js","sources":["../src/event.ts","../src/util.ts"],"sourcesContent":["// @ts-nocheck\nexport type Func = (...args: any[]) => any;\n\nconst None = Symbol('none');\nexport const timestamp = globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;\n\nexport enum EventMode {\n Immediate,\n Queue,\n}\n\nexport enum ProcessStatus {\n None,\n Processing,\n Paused,\n}\n\nconst DefaultEventOpt = {\n mode: EventMode.Immediate,\n};\n\nconst ALL = '__ALL_KEY';\nconst myNull = null;\n\nexport type IEventOpt = Partial<typeof DefaultEventOpt>;\n\nexport type IScheduler = (doCall: Func, ...args: any[]) => void;\nexport type IGlobalScheduler = (goOn: () => void) => void;\nexport type ISetScheduler = {\n (type: string, scheduler: IScheduler): void;\n (scheduler: IGlobalScheduler): void;\n};\n\nexport type IEventItem = {\n type: string;\n args: any[];\n time: number;\n};\n\nexport class BaseEvent {\n static a = 19\n constructor(private opt: IEventOpt = {}) {\n this.opt = { ...DefaultEventOpt, ...opt };\n }\n scheduler?: IGlobalScheduler;\n eventQueue: IEventItem[] = [];\n status = ProcessStatus.None;\n subMap = new Map<string, Set<Func>>();\n on = (type: string | undefined, fn: Func) => {\n if (type == null) type = ALL;\n const suber = this.subMap.get(type) || new Set<Func>();\n suber.add(fn);\n this.subMap.set(type, suber);\n };\n\n off = (type: string | undefined, fn: Func) => {\n const suber = this.subMap.get(type ?? ALL);\n if (!suber) return;\n suber.delete(fn);\n };\n\n once = (type: string | undefined, fn: Func) => {\n fn['once'] = true;\n this.on(type, fn);\n };\n\n promiseOnce = (type: string | undefined) => {\n return new Promise((resolve) => {\n this.once(type, (...args) => {\n resolve(args)\n })\n })\n }\n\n setScheduler: ISetScheduler = (type: string | IGlobalScheduler, scheduler?: Func) => {\n if (typeof type !== 'string') {\n this.scheduler = type;\n return;\n }\n const set = this.subMap.get(type) || new Set<Func>();\n set['scheduler'] = scheduler;\n this.subMap.set(type, set);\n };\n\n callSub(it: Func, fns, args) {\n const doCall = (...args) => {\n it(...args);\n if (it['once'] === true) fns.delete(it);\n };\n const scheduler = it['scheduler'] || fns['scheduler'];\n\n if (scheduler) {\n scheduler(doCall, ...args);\n } else {\n it(...args);\n if (it['once'] === true) fns.delete(it);\n }\n }\n\n // construct 会初始化为下面其中一种\n emit = (type: string, ...args: any[]) => {\n this.opt.mode === EventMode.Immediate\n ? this.emitImmediate(type, ...args)\n : this.emitQueue(type, ...args);\n };\n \n emitImmediate(type: string, ...args: any[]) {\n const fns = this.subMap.get(type);\n const allSub = this.subMap.get(ALL);\n fns?.forEach((it) => this.callSub(it, fns, args));\n allSub?.forEach((it) => this.callSub(it, allSub, args));\n }\n\n emitQueue(type: string, ...args: any[]) {\n this.eventQueue.push({ type, args, time: timestamp() });\n this.process();\n }\n\n pause = () => (this.status = ProcessStatus.Paused);\n unPause = () => (this.status = ProcessStatus.None);\n start = () => {\n this.status = ProcessStatus.None;\n this.processQueue();\n };\n\n process = () => {\n if (this.scheduler) {\n return this.scheduler(this.recallScheduler);\n }\n return this.processQueue();\n }\n\n recallScheduler = () => {\n this.scheduler!(this.recallScheduler);\n };\n\n processQueue = () => {\n // 如果是挂起状态则直接结束\n if (this.status === ProcessStatus.Paused) return;\n this.status = ProcessStatus.Processing;\n\n let { type, args } = this.eventQueue.shift() || {};\n if (type) {\n // 在此过程中用户可通过 pause 和 start 同步控制事件处理\n const fns = this.subMap.get(type);\n const allSub = this.subMap.get(ALL);\n fns?.forEach((it) => this.callSub(it, fns, args));\n allSub?.forEach((it) => this.callSub(it, allSub, args));\n if (this.eventQueue.length > 0) {\n this.processQueue();\n }\n }\n //@ts-ignore 队列全部处理完成,如果执行过程中被 pause \n if(this.status !== ProcessStatus.Paused) {\n this.status = ProcessStatus.None;\n }\n };\n\n\n dispatchEvent = (iList: number[]) => {\n // 从大到小排序\n iList.sort((a, b) => b - a);\n iList.forEach((idx) => {\n const [item] = this.eventQueue.splice(idx, 1);\n const { type, args } = item || {};\n if (type && args) {\n this.emitImmediate(type, ...args);\n }\n });\n };\n\n clear = () => {\n this.subMap.clear();\n this.eventQueue = [];\n this.scheduler = undefined;\n };\n}\n\nexport class EventNode extends BaseEvent {\n constructor() {\n super({ mode: EventMode.Queue });\n }\n pipe = (type: string, ...fns: (Func | PipeNode)[]) => {\n const { firstNode, lastNode } = this.buildPip(fns);\n // 将第一个节点与事件源节点关联\n this.on(type, (...args) => firstNode.emit('process', args));\n return lastNode;\n };\n\n buildPip = (fns: (Func | PipeNode)[]) => {\n const startWithPipeNode = fns[0] instanceof PipeNode;\n let firstNode: PipeNode;\n // @ts-ignore\n let curNode: PipeNode = (firstNode = startWithPipeNode ? fns[0] : new PipeNode());\n let i = startWithPipeNode ? 1 : 0;\n let toAdd: Func[] = [];\n while (i < fns.length) {\n const it = fns[i];\n if (!(it instanceof PipeNode)) {\n toAdd.push(it);\n continue;\n }\n\n // 遇到下一个 pipeNode,把上一个完成\n curNode.pipList = toAdd;\n toAdd = [];\n curNode.on('finish', (args) => it.emit('process', args));\n\n curNode = it;\n i++;\n }\n // 处理最后一个节点\n curNode.markLast();\n curNode.pipList = toAdd;\n return {\n firstNode,\n lastNode: curNode,\n };\n };\n\n preProcessMap = new Map<string, [PipeNode, PipeNode]>();\n preProcess = (type: string, ...fns: (Func | PipeNode)[]) => {\n const { firstNode, lastNode } = this.buildPip(fns);\n this.preProcessMap.set(type, [firstNode, lastNode]);\n };\n\n emit = (type: string, ...args: any[]) => {\n const [firstNode, lastNode] = this.preProcessMap.get(type) || [];\n if (firstNode && lastNode) {\n lastNode.once('real-finish', (...args) => {\n // 等待预处理完成后再开始触发事件,且修正 args\n this.eventQueue.push({ type, args, time: timestamp() });\n this.start();\n });\n this.pause();\n firstNode.emit('process', args);\n } else {\n this.emitQueue(type, ...args);\n }\n };\n\n from(type: string, promise?: Promise<any>) {\n if (promise) {\n promise.then(\n (value) => {\n this.emit(type, value);\n },\n (err) => {\n this.emit(type, err);\n },\n );\n return;\n }\n\n return (...args: any[]) => {\n this.emit(type, ...args);\n };\n }\n}\n\nexport class PipeNode extends BaseEvent {\n public pipList: Func[] = [];\n\n onFinish = (fn: Func) => {\n this.on('real-finish', fn);\n };\n\n isLastNode = false;\n\n markLast = () => (this.isLastNode = true);\n\n constructor() {\n super({ mode: EventMode.Queue });\n this.on('process', async (args) => {\n let res;\n for (const pipeFn of this.pipList) {\n try {\n res = pipeFn(...args);\n if (res instanceof Promise) {\n res = await res;\n }\n } catch (error) {\n res = error;\n }\n args = [res];\n }\n if (this.isLastNode) {\n this.emitImmediate('real-finish', ...args);\n } else {\n this.emitImmediate('finish', args);\n }\n });\n }\n}","export type QueueItem<T> = {\n v: T;\n prev?: QueueItem<T>;\n next?: QueueItem<T>;\n};\n\nexport class Queue<T> {\n _first?: QueueItem<T>;\n get first() {\n return this._first?.v!;\n }\n _last?: QueueItem<T>;\n get last() {\n return this._last?.v!;\n }\n len = 0;\n push(it: T) {\n return this.insetAfter(it, this._last);\n }\n\n insetAfter(it: T, anchor?: QueueItem<T>) {\n const item = { v: it, prev: null, next: null } as QueueItem<T>;\n const prev = anchor || this._first?.prev;\n const after = prev ? prev.next : this._first;\n item.prev = prev;\n item.next = after;\n\n if (prev) {\n // 子 Queue 逻辑\n if (prev.next === this._first) this._first = item;\n prev.next = item;\n } else {\n this._first = item;\n }\n if (after) {\n if (after.prev === this._last) this._last = item;\n after.prev = item;\n } else {\n this._last = item;\n }\n this.len++;\n return item;\n }\n\n delete(item: QueueItem<T>) {\n const { prev, next } = item;\n if (prev) {\n if (item === this._first) this._first = next;\n prev.next = next;\n } else {\n this._first = next;\n }\n if (next) {\n if (item === this._last) this._last = prev;\n next.prev = prev;\n } else {\n this._last = prev;\n }\n item.next = null;\n item.prev = null;\n this.len--;\n return item.v;\n }\n\n static forEach<V>(firstItem: QueueItem<V>, lastItem: QueueItem<V>, fn: (value: V, item: QueueItem<V>) => void) {\n if (!firstItem) return;\n let point = firstItem;\n let next = point.next;\n while (true) {\n fn(point.v, point);\n if (!next || point === lastItem) {\n break;\n }\n point = next;\n next = point.next;\n }\n }\n\n forEach(fn: (value: T, item: QueueItem<T>) => void) {\n if (!this._first) return;\n let point = this._first;\n let next = point.next;\n while (true) {\n fn(point.v, point);\n if (!next || point === this._last) {\n break;\n }\n point = next;\n next = point.next;\n }\n }\n /** TODO: Queue.len 不准确 */\n subRef(firstItem: QueueItem<T>, lastItem: QueueItem<T>) {\n const subQueue = new Queue<T>();\n subQueue._first = firstItem;\n subQueue._last = lastItem;\n return subQueue 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 idStartMask = new Uint8Array(128);\n[36, 47, 95].forEach(c => (idStartMask[c] = 1)); // $, /, _\nfor (let i = 48; i <= 57; i++) idStartMask[i] = 1; // 0-9\nfor (let i = 65; i <= 90; i++) idStartMask[i] = 1; // A-Z\nfor (let i = 97; i <= 122; i++) idStartMask[i] = 1; // a-z\n\nexport const matchIdStart2 = (char: string, i: number) => {\n const code = char.charCodeAt(i);\n return idStartMask[code] === 1;\n};\n\n\n// 提前创建一个长度为 128 的布尔映射数组\nconst idMask = new Uint8Array(128);\n[36, 45, 47, 95].forEach(c => (idMask[c] = 1)); // $, -, /, _\nfor (let i = 48; i <= 57; i++) idMask[i] = 1; // 0-9\nfor (let i = 65; i <= 90; i++) idMask[i] = 1; // A-Z\nfor (let i = 97; i <= 122; i++) idMask[i] = 1; // a-z\nexport const matchId = (char: string, i: number) => {\n const code = char.charCodeAt(i);\n return idMask[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","Immediate","ALL","BaseEvent","a","constructor","opt","eventQueue","status","None","subMap","Map","on","type","fn","suber","get","Set","add","set","off","delete","once","promiseOnce","Promise","resolve","args","setScheduler","scheduler","callSub","it","fns","doCall","emit","emitImmediate","emitQueue","allSub","forEach","push","time","process","pause","Paused","unPause","start","processQueue","recallScheduler","Processing","_ref","shift","length","dispatchEvent","iList","sort","b","idx","_this$eventQueue$spli","splice","_this$eventQueue$spli2","_slicedToArray","item","_ref2","clear","undefined","EventNode","Queue","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","first","_first","v","last","_last","len","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","idStartMask","Uint8Array","matchIdStart2","idMask","matchId","jsVarRegexp"],"mappings":"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"}
@@ -436,16 +436,25 @@ const matchIdStart = char => {
436
436
  const code = char.charCodeAt(0);
437
437
  return code >= 48 && code <= 57 || code >= 65 && code <= 90 || code >= 97 && code <= 122 || code === 95 || code === 47 || code === 36;
438
438
  };
439
- const mask = new Uint8Array(128);
440
- [36, 47, 95].forEach(c => mask[c] = 1);
441
- for (let i = 48; i <= 57; i++) mask[i] = 1;
442
- for (let i = 65; i <= 90; i++) mask[i] = 1;
443
- for (let i = 97; i <= 122; i++) mask[i] = 1;
439
+ const idStartMask = new Uint8Array(128);
440
+ [36, 47, 95].forEach(c => idStartMask[c] = 1);
441
+ for (let i = 48; i <= 57; i++) idStartMask[i] = 1;
442
+ for (let i = 65; i <= 90; i++) idStartMask[i] = 1;
443
+ for (let i = 97; i <= 122; i++) idStartMask[i] = 1;
444
444
  const matchIdStart2 = (char, i) => {
445
445
  const code = char.charCodeAt(i);
446
- return mask[code] === 1;
446
+ return idStartMask[code] === 1;
447
+ };
448
+ const idMask = new Uint8Array(128);
449
+ [36, 45, 47, 95].forEach(c => idMask[c] = 1);
450
+ for (let i = 48; i <= 57; i++) idMask[i] = 1;
451
+ for (let i = 65; i <= 90; i++) idMask[i] = 1;
452
+ for (let i = 97; i <= 122; i++) idMask[i] = 1;
453
+ const matchId = (char, i) => {
454
+ const code = char.charCodeAt(i);
455
+ return idMask[code] === 1;
447
456
  };
448
457
  const jsVarRegexp = /\b[a-zA-Z_$][a-zA-Z0-9_$]*\b/g;
449
458
 
450
- export { BaseEvent, EventMode, EventNode, PipeNode, ProcessStatus, Queue, SortMap, genKey, isNatureNumStr, isNum, jsVarRegexp, matchIdStart, matchIdStart2, pick, timestamp };
459
+ export { BaseEvent, EventMode, EventNode, PipeNode, ProcessStatus, Queue, SortMap, genKey, isNatureNumStr, isNum, jsVarRegexp, matchId, matchIdStart, matchIdStart2, pick, timestamp };
451
460
  //# sourceMappingURL=bobe-shared.esm.js.map
@@ -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":["timestamp","globalThis","performance","now","bind","Date","EventMode","ProcessStatus","DefaultEventOpt","mode","Immediate","ALL","BaseEvent","a","constructor","opt","eventQueue","status","None","subMap","Map","on","type","fn","suber","get","Set","add","set","off","delete","once","promiseOnce","Promise","resolve","args","setScheduler","scheduler","callSub","it","fns","doCall","emit","emitImmediate","emitQueue","allSub","forEach","push","time","process","pause","Paused","unPause","start","processQueue","recallScheduler","Processing","_ref","shift","length","dispatchEvent","iList","sort","b","idx","_this$eventQueue$spli","splice","_this$eventQueue$spli2","_slicedToArray","item","_ref2","clear","undefined","EventNode","Queue","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","first","_first","v","last","_last","len","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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"}
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 idStartMask = new Uint8Array(128);\n[36, 47, 95].forEach(c => (idStartMask[c] = 1)); // $, /, _\nfor (let i = 48; i <= 57; i++) idStartMask[i] = 1; // 0-9\nfor (let i = 65; i <= 90; i++) idStartMask[i] = 1; // A-Z\nfor (let i = 97; i <= 122; i++) idStartMask[i] = 1; // a-z\n\nexport const matchIdStart2 = (char: string, i: number) => {\n const code = char.charCodeAt(i);\n return idStartMask[code] === 1;\n};\n\n\n// 提前创建一个长度为 128 的布尔映射数组\nconst idMask = new Uint8Array(128);\n[36, 45, 47, 95].forEach(c => (idMask[c] = 1)); // $, -, /, _\nfor (let i = 48; i <= 57; i++) idMask[i] = 1; // 0-9\nfor (let i = 65; i <= 90; i++) idMask[i] = 1; // A-Z\nfor (let i = 97; i <= 122; i++) idMask[i] = 1; // a-z\nexport const matchId = (char: string, i: number) => {\n const code = char.charCodeAt(i);\n return idMask[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","Immediate","ALL","BaseEvent","a","constructor","opt","eventQueue","status","None","subMap","Map","on","type","fn","suber","get","Set","add","set","off","delete","once","promiseOnce","Promise","resolve","args","setScheduler","scheduler","callSub","it","fns","doCall","emit","emitImmediate","emitQueue","allSub","forEach","push","time","process","pause","Paused","unPause","start","processQueue","recallScheduler","Processing","_ref","shift","length","dispatchEvent","iList","sort","b","idx","_this$eventQueue$spli","splice","_this$eventQueue$spli2","_slicedToArray","item","_ref2","clear","undefined","EventNode","Queue","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","first","_first","v","last","_last","len","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","idStartMask","Uint8Array","matchIdStart2","idMask","matchId","jsVarRegexp"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -108,7 +108,8 @@ declare const isNatureNumStr: (val: unknown) => boolean;
108
108
  */
109
109
  declare const matchIdStart: (char: string) => boolean;
110
110
  declare const matchIdStart2: (char: string, i: number) => boolean;
111
+ declare const matchId: (char: string, i: number) => boolean;
111
112
  declare const jsVarRegexp: RegExp;
112
113
 
113
- export { BaseEvent, EventMode, EventNode, PipeNode, ProcessStatus, Queue, SortMap, genKey, isNatureNumStr, isNum, jsVarRegexp, matchIdStart, matchIdStart2, pick, timestamp };
114
+ export { BaseEvent, EventMode, EventNode, PipeNode, ProcessStatus, Queue, SortMap, genKey, isNatureNumStr, isNum, jsVarRegexp, matchId, matchIdStart, matchIdStart2, pick, timestamp };
114
115
  export type { Func, IEventItem, IEventOpt, IGlobalScheduler, IScheduler, ISetScheduler, QueueItem, SubQueue };
package/dist/index.umd.js CHANGED
@@ -442,14 +442,23 @@
442
442
  const code = char.charCodeAt(0);
443
443
  return code >= 48 && code <= 57 || code >= 65 && code <= 90 || code >= 97 && code <= 122 || code === 95 || code === 47 || code === 36;
444
444
  };
445
- const mask = new Uint8Array(128);
446
- [36, 47, 95].forEach(c => mask[c] = 1);
447
- for (let i = 48; i <= 57; i++) mask[i] = 1;
448
- for (let i = 65; i <= 90; i++) mask[i] = 1;
449
- for (let i = 97; i <= 122; i++) mask[i] = 1;
445
+ const idStartMask = new Uint8Array(128);
446
+ [36, 47, 95].forEach(c => idStartMask[c] = 1);
447
+ for (let i = 48; i <= 57; i++) idStartMask[i] = 1;
448
+ for (let i = 65; i <= 90; i++) idStartMask[i] = 1;
449
+ for (let i = 97; i <= 122; i++) idStartMask[i] = 1;
450
450
  const matchIdStart2 = (char, i) => {
451
451
  const code = char.charCodeAt(i);
452
- return mask[code] === 1;
452
+ return idStartMask[code] === 1;
453
+ };
454
+ const idMask = new Uint8Array(128);
455
+ [36, 45, 47, 95].forEach(c => idMask[c] = 1);
456
+ for (let i = 48; i <= 57; i++) idMask[i] = 1;
457
+ for (let i = 65; i <= 90; i++) idMask[i] = 1;
458
+ for (let i = 97; i <= 122; i++) idMask[i] = 1;
459
+ const matchId = (char, i) => {
460
+ const code = char.charCodeAt(i);
461
+ return idMask[code] === 1;
453
462
  };
454
463
  const jsVarRegexp = /\b[a-zA-Z_$][a-zA-Z0-9_$]*\b/g;
455
464
 
@@ -464,6 +473,7 @@
464
473
  exports.isNatureNumStr = isNatureNumStr;
465
474
  exports.isNum = isNum;
466
475
  exports.jsVarRegexp = jsVarRegexp;
476
+ exports.matchId = matchId;
467
477
  exports.matchIdStart = matchIdStart;
468
478
  exports.matchIdStart2 = matchIdStart2;
469
479
  exports.pick = pick;
@@ -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":["timestamp","globalThis","performance","now","bind","Date","EventMode","ProcessStatus","DefaultEventOpt","mode","Immediate","ALL","BaseEvent","a","constructor","opt","eventQueue","status","None","subMap","Map","on","type","fn","suber","get","Set","add","set","off","delete","once","promiseOnce","Promise","resolve","args","setScheduler","scheduler","callSub","it","fns","doCall","emit","emitImmediate","emitQueue","allSub","forEach","push","time","process","pause","Paused","unPause","start","processQueue","recallScheduler","Processing","_ref","shift","length","dispatchEvent","iList","sort","b","idx","_this$eventQueue$spli","splice","_this$eventQueue$spli2","_slicedToArray","item","_ref2","clear","undefined","EventNode","Queue","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","first","_first","v","last","_last","len","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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"}
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 idStartMask = new Uint8Array(128);\n[36, 47, 95].forEach(c => (idStartMask[c] = 1)); // $, /, _\nfor (let i = 48; i <= 57; i++) idStartMask[i] = 1; // 0-9\nfor (let i = 65; i <= 90; i++) idStartMask[i] = 1; // A-Z\nfor (let i = 97; i <= 122; i++) idStartMask[i] = 1; // a-z\n\nexport const matchIdStart2 = (char: string, i: number) => {\n const code = char.charCodeAt(i);\n return idStartMask[code] === 1;\n};\n\n\n// 提前创建一个长度为 128 的布尔映射数组\nconst idMask = new Uint8Array(128);\n[36, 45, 47, 95].forEach(c => (idMask[c] = 1)); // $, -, /, _\nfor (let i = 48; i <= 57; i++) idMask[i] = 1; // 0-9\nfor (let i = 65; i <= 90; i++) idMask[i] = 1; // A-Z\nfor (let i = 97; i <= 122; i++) idMask[i] = 1; // a-z\nexport const matchId = (char: string, i: number) => {\n const code = char.charCodeAt(i);\n return idMask[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","Immediate","ALL","BaseEvent","a","constructor","opt","eventQueue","status","None","subMap","Map","on","type","fn","suber","get","Set","add","set","off","delete","once","promiseOnce","Promise","resolve","args","setScheduler","scheduler","callSub","it","fns","doCall","emit","emitImmediate","emitQueue","allSub","forEach","push","time","process","pause","Paused","unPause","start","processQueue","recallScheduler","Processing","_ref","shift","length","dispatchEvent","iList","sort","b","idx","_this$eventQueue$spli","splice","_this$eventQueue$spli2","_slicedToArray","item","_ref2","clear","undefined","EventNode","Queue","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","first","_first","v","last","_last","len","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","idStartMask","Uint8Array","matchIdStart2","idMask","matchId","jsVarRegexp"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bobe-shared",
3
- "version": "0.0.38",
3
+ "version": "0.0.40",
4
4
  "main": "dist/bobe-shared.cjs.js",
5
5
  "module": "dist/bobe-shared.esm.js",
6
6
  "browser": "dist/bobe-shared.umd.js",