mm_expand 2.3.4 → 2.3.6

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/lib/eventer.js CHANGED
@@ -1,3 +1,4 @@
1
+ /* eslint-disable mm_eslint/function-name */
1
2
  require('./global.js');
2
3
 
3
4
  /**
@@ -5,11 +6,11 @@ require('./global.js');
5
6
  */
6
7
  class Eventer {
7
8
  static config = {
8
- max_listeners: 10, // 最大监听器数量
9
- default_namespace: 'default', // 默认命名空间
9
+ max_list: 10, // 最大监听器数量
10
+ default_name: 'default', // 默认命名空间
10
11
  chain_enabled: true, // 是否启用链式触发
11
12
  auto_clean: true, // 是否自动清理空的事件列表
12
- error_handler: null, // 全局错误处理函数
13
+ error: null, // 全局错误处理函数
13
14
  pause_enabled: true, // 是否启用暂停功能
14
15
  };
15
16
 
@@ -42,7 +43,7 @@ class Eventer {
42
43
  this._paused_namespace = new Set(); // 暂停的命名空间
43
44
  this._paused_global = false; // 全局暂停状态
44
45
  // 初始化默认命名空间
45
- this._namespace[this.config.default_namespace] = true;
46
+ this._namespace[this.config.default_name] = true;
46
47
  }
47
48
 
48
49
  /**
@@ -113,10 +114,10 @@ Eventer.prototype._validateOnParams = function (key, func) {
113
114
  };
114
115
 
115
116
  Eventer.prototype._parseEventKey = function (key, ns) {
116
- const parsed = this._parseKey(key);
117
- const namespace = ns || parsed.namespace;
118
- const event_key = parsed.key;
119
- const full_key = `${namespace}:${event_key}`;
117
+ let parsed = this._parseKey(key);
118
+ let namespace = ns || parsed.namespace;
119
+ let event_key = parsed.key;
120
+ let full_key = `${namespace}:${event_key}`;
120
121
  return { namespace, event_key, full_key };
121
122
  };
122
123
 
@@ -144,12 +145,12 @@ Eventer.prototype._wrapFunction = function (func, params) {
144
145
  }
145
146
 
146
147
  if (params.timeout && typeof params.timeout === 'number' && params.timeout > 0) {
147
- const original_func = wrapped_func;
148
+ let original_func = wrapped_func;
148
149
  wrapped_func = async function (...args) {
149
- const timeout_promise = new Promise((resolve, reject) => {
150
+ const timeoutPromise = new Promise((resolve, reject) => {
150
151
  setTimeout(() => reject(new Error(`事件执行超时 (${params.timeout}ms)`)), params.timeout);
151
152
  });
152
- return Promise.race([original_func.apply(this, args), timeout_promise]);
153
+ return Promise.race([original_func.apply(this, args), timeoutPromise]);
153
154
  };
154
155
  }
155
156
 
@@ -179,10 +180,9 @@ Eventer.prototype._findHandlerIndex = function (list, name) {
179
180
  };
180
181
 
181
182
  Eventer.prototype._checkListenerLimit = function (namespace, event_key, list) {
182
- const max_listeners = this.config.max_listeners;
183
- if (max_listeners > 0 && list.length >= max_listeners) {
184
- this.log('warn', `警告: '${namespace}:${event_key}' 事件的监听器数量已达到 ${max_listeners},可能导致内存泄漏。使用
185
- set_max_listeners() 方法可以增加限制。`);
183
+ let max_list = this.config.max_list;
184
+ if (max_list > 0 && list.length >= max_list) {
185
+ this.log('warn', `警告: '${namespace}:${event_key}' 事件的监听器数量已达到 ${max_list},可能导致内存泄漏。使用 set_max_listeners() 方法可以增加限制。`);
186
186
  }
187
187
  };
188
188
 
@@ -208,7 +208,7 @@ Eventer.prototype._createHandlerResult = function (namespace, index, name, full_
208
208
  */
209
209
  Eventer.prototype.on = function (key, func, name, options) {
210
210
  // 处理参数
211
- const params = this._processOnParams(key, func, name, options);
211
+ let params = this._processOnParams(key, func, name, options);
212
212
 
213
213
  // 验证参数
214
214
  this._validateOnParams(params.key, params.func);
@@ -224,7 +224,7 @@ Eventer.prototype._processOnParams = function (key, func, name, options) {
224
224
  return this._extractOnParams(key);
225
225
  } else {
226
226
  // 便捷方式
227
- const opts = options || {};
227
+ let opts = options || {};
228
228
  return {
229
229
  key: key,
230
230
  func: func,
@@ -247,13 +247,13 @@ Eventer.prototype._addEventHandler = function (params) {
247
247
  this._initNamespace(namespace, event_key);
248
248
 
249
249
  // 设置默认名称
250
- const final_name = eventName || this._generateDefaultName(eventFunc);
250
+ let final_name = eventName || this._generateDefaultName(eventFunc);
251
251
 
252
252
  // 应用节流或防抖
253
- const wrapped_func = this._wrapFunction(eventFunc, params);
253
+ let wrapped_func = this._wrapFunction(eventFunc, params);
254
254
 
255
255
  // 创建事件对象
256
- const obj = this._createHandlerObj({
256
+ let obj = this._createHandlerObj({
257
257
  name: final_name,
258
258
  wrapped_func: wrapped_func,
259
259
  func: eventFunc,
@@ -280,12 +280,12 @@ Eventer.prototype._processOnceParams = function (key, func, name, options) {
280
280
  // 支持两种调用方式:便捷方式和配置对象方式
281
281
  if (typeof key === 'object' && key !== null) {
282
282
  // 配置对象方式
283
- const params = this._extractOnParams(key);
283
+ let params = this._extractOnParams(key);
284
284
  params.times = 1; // 强制设置为仅执行一次
285
285
  return params;
286
286
  } else {
287
287
  // 便捷方式
288
- const opts = options || {};
288
+ let opts = options || {};
289
289
  return {
290
290
  key: key,
291
291
  func: func,
@@ -299,8 +299,8 @@ Eventer.prototype._processOnceParams = function (key, func, name, options) {
299
299
 
300
300
  Eventer.prototype._handleEventAddition = function (config) {
301
301
  const { namespace, event_key, full_key, final_name, obj } = config;
302
- const list = this._dict[namespace][event_key];
303
- const idx = this._findHandlerIndex(list, final_name);
302
+ let list = this._dict[namespace][event_key];
303
+ let idx = this._findHandlerIndex(list, final_name);
304
304
 
305
305
  if (idx >= 0) {
306
306
  // 覆盖已存在的同名监听器
@@ -330,7 +330,7 @@ Eventer.prototype._handleEventAddition = function (config) {
330
330
  */
331
331
  Eventer.prototype.once = function (key, func, name, options) {
332
332
  // 处理参数
333
- const params = this._processOnceParams(key, func, name, options);
333
+ let params = this._processOnceParams(key, func, name, options);
334
334
 
335
335
  // 验证参数
336
336
  this._validateOnParams(params.key, params.func);
@@ -354,11 +354,11 @@ Eventer.prototype._validateExec = function (key) {
354
354
  };
355
355
 
356
356
  Eventer.prototype._createCtx = function (key, params) {
357
- const parsed = this._parseKey(key);
358
- const namespace = parsed.namespace;
359
- const event_key = parsed.key;
360
- const full_key = `${namespace}:${event_key}`;
361
- const start_time = Date.now();
357
+ let parsed = this._parseKey(key);
358
+ let namespace = parsed.namespace;
359
+ let event_key = parsed.key;
360
+ let full_key = `${namespace}:${event_key}`;
361
+ let start_time = Date.now();
362
362
 
363
363
  const ctx = {
364
364
  namespace,
@@ -385,7 +385,7 @@ Eventer.prototype._createCtx = function (key, params) {
385
385
  Eventer.prototype._cancelTasks = function (full_key) {
386
386
  try {
387
387
  if (this._tasks.has(full_key)) {
388
- const tasks = this._tasks.get(full_key);
388
+ let tasks = this._tasks.get(full_key);
389
389
  tasks.forEach(task => {
390
390
  if (task && typeof task.cancel === 'function') {
391
391
  try {
@@ -516,8 +516,8 @@ Eventer.prototype._buildSafeResult = function (ctx) {
516
516
  results: ctx.results || [],
517
517
  cancelled: ctx.cancelled || false,
518
518
  cancel: ctx.cancel || (() => { }),
519
- race_result: ctx.race_result,
520
- waterfall_result: ctx.results && ctx.results.length > 0 ? ctx.results[ctx.results.length - 1]
519
+ race: ctx.race_result,
520
+ waterfall: ctx.results && ctx.results.length > 0 ? ctx.results[ctx.results.length - 1]
521
521
  : undefined
522
522
  };
523
523
  } catch (return_error) {
@@ -543,7 +543,7 @@ Eventer.prototype._execute = async function (key, options = {}, ...params) {
543
543
  return this._createPausedResult();
544
544
  }
545
545
 
546
- const list = this._dict[namespace] && this._dict[namespace][event_key];
546
+ let list = this._dict[namespace] && this._dict[namespace][event_key];
547
547
  const arr = [];
548
548
 
549
549
  if (list && list.length > 0) {
@@ -592,7 +592,7 @@ Eventer.prototype._executeEventList = async function (config) {
592
592
 
593
593
  this._initTaskList(full_key);
594
594
 
595
- const cancelled = await this._runBeforeMiddleware(ctx, full_key);
595
+ let cancelled = await this._runBeforeMiddleware(ctx, full_key);
596
596
  if (cancelled) {
597
597
  return {
598
598
  results: [],
@@ -618,7 +618,7 @@ Eventer.prototype._executeSequential = async function (config) {
618
618
  const { list, params, ctx, full_key, arr } = config;
619
619
 
620
620
  for (let i = 0; i < list.length && !ctx.cancelled; i++) {
621
- const o = list[i];
621
+ let o = list[i];
622
622
  ctx.executed++;
623
623
  o.last_executed = Date.now();
624
624
 
@@ -631,11 +631,11 @@ Eventer.prototype._execSingleTask = async function (o, params, ctx, options) {
631
631
  const { full_key, arr } = options;
632
632
 
633
633
  // 创建任务
634
- const task = this._createTask(o, full_key);
634
+ let task = this._createTask(o, full_key);
635
635
 
636
636
  try {
637
637
  // 执行事件处理函数
638
- const result = await o.func.apply(o, params);
638
+ let result = await o.func.apply(o, params);
639
639
 
640
640
  // 处理成功结果
641
641
  this._handleSuccessResult({ result, o, ctx, arr, task });
@@ -646,7 +646,7 @@ Eventer.prototype._execSingleTask = async function (o, params, ctx, options) {
646
646
  };
647
647
 
648
648
  Eventer.prototype._createTask = function (o, full_key) {
649
- const task_id = `${o.name}_${Date.now()}`;
649
+ let task_id = `${o.name}_${Date.now()}`;
650
650
  let cancelled = false;
651
651
  const task = {
652
652
  id: task_id,
@@ -657,7 +657,7 @@ Eventer.prototype._createTask = function (o, full_key) {
657
657
  };
658
658
 
659
659
  // 添加到进行中的任务列表
660
- const tasks = this._tasks.get(full_key);
660
+ let tasks = this._tasks.get(full_key);
661
661
  tasks.push(task);
662
662
 
663
663
  return { task, tasks, cancelled };
@@ -712,18 +712,19 @@ Eventer.prototype._handleTaskError = function (e, o, ctx, task) {
712
712
  */
713
713
  Eventer.prototype._executeParallel = async function (config) {
714
714
  const { list, params, ctx, full_key, arr } = config;
715
- const concurrency = this._getConcurrency(params);
716
- const processed_results = new Array(list.length);
715
+ let concurrency = this._getConcurrency(params);
716
+ // eslint-disable-next-line mm_eslint/class-instance-name
717
+ const proc_results = new Array(list.length);
717
718
 
718
719
  if (concurrency < Infinity) {
719
720
  await this._executeBatches({
720
- list, params, ctx, full_key, arr, concurrency, processed_results
721
+ list, params, ctx, full_key, arr, concurrency, proc_results
721
722
  });
722
723
  } else {
723
- await this._executeAllParallel({ list, params, ctx, full_key, arr, processed_results });
724
+ await this._executeAllParallel({ list, params, ctx, full_key, arr, proc_results });
724
725
  }
725
726
 
726
- this._setResults(ctx, processed_results);
727
+ this._setResults(ctx, proc_results);
727
728
  };
728
729
 
729
730
  Eventer.prototype._getConcurrency = function (params) {
@@ -732,14 +733,14 @@ Eventer.prototype._getConcurrency = function (params) {
732
733
  };
733
734
 
734
735
  Eventer.prototype._executeBatches = async function (config) {
735
- const { list, params, ctx, full_key, arr, concurrency, processed_results } = config;
736
+ const { list, params, ctx, full_key, arr, concurrency, proc_results } = config;
736
737
 
737
738
  for (let i = 0; i < list.length && !ctx.cancelled; i += concurrency) {
738
- const batch = list.slice(i, i + concurrency);
739
- const batch_promises = batch.map((obj, batch_idx) => {
740
- const global_idx = i + batch_idx;
739
+ let batch = list.slice(i, i + concurrency);
740
+ let batch_promises = batch.map((obj, batch_idx) => {
741
+ let global = i + batch_idx; // eslint-disable-line mm_eslint/variable-name
741
742
  return this._executeSingleTask({
742
- obj, params, ctx, full_key, arr, idx: global_idx, processed_results
743
+ obj, params, ctx, full_key, arr, idx: global, proc_results
743
744
  });
744
745
  });
745
746
 
@@ -748,17 +749,17 @@ Eventer.prototype._executeBatches = async function (config) {
748
749
  };
749
750
 
750
751
  Eventer.prototype._executeAllParallel = async function (config) {
751
- const { list, params, ctx, full_key, arr, processed_results } = config;
752
+ const { list, params, ctx, full_key, arr, proc_results } = config;
752
753
 
753
- const promises = list.map((obj, idx) => {
754
- return this._executeSingleTask({ obj, params, ctx, full_key, arr, idx, processed_results });
754
+ let promises = list.map((obj, idx) => {
755
+ return this._executeSingleTask({ obj, params, ctx, full_key, arr, idx, proc_results });
755
756
  });
756
757
 
757
758
  await Promise.allSettled(promises);
758
759
  };
759
760
 
760
- Eventer.prototype._setResults = function (ctx, processed_results) {
761
- ctx.results = processed_results.filter(result => result !== undefined);
761
+ Eventer.prototype._setResults = function (ctx, proc_results) {
762
+ ctx.results = proc_results.filter(result => result !== undefined);
762
763
  };
763
764
 
764
765
  /**
@@ -768,16 +769,16 @@ Eventer.prototype._setResults = function (ctx, processed_results) {
768
769
  */
769
770
  Eventer.prototype._executeWaterfall = async function (config) {
770
771
  const { list, params, ctx, full_key, arr, initial_value } = config;
771
- let waterfall_value = this._getInitialValue(params, initial_value);
772
+ let wate_value = this._getInitialValue(params, initial_value);
772
773
 
773
774
  for (let i = 0; i < list.length && !ctx.cancelled; i++) {
774
- const obj = list[i];
775
+ let obj = list[i];
775
776
  ctx.executed++;
776
777
  obj.last_executed = Date.now();
777
778
 
778
- const task = this._createWaterfallTask(obj, full_key);
779
- waterfall_value = await this._execWaterfallStep({
780
- obj, params, ctx, arr, task, waterfall_value
779
+ let task = this._createWaterfallTask(obj, full_key);
780
+ wate_value = await this._execWaterfallStep({
781
+ obj, params, ctx, arr, task, wate_value
781
782
  });
782
783
  }
783
784
  };
@@ -787,7 +788,7 @@ Eventer.prototype._getInitialValue = function (params, initial_value) {
787
788
  };
788
789
 
789
790
  Eventer.prototype._createWaterfallTask = function (obj, full_key) {
790
- const task_id = `${obj.name}_${Date.now()}`;
791
+ let task_id = `${obj.name}_${Date.now()}`;
791
792
  let cancelled = false;
792
793
  const task = {
793
794
  id: task_id,
@@ -797,21 +798,21 @@ Eventer.prototype._createWaterfallTask = function (obj, full_key) {
797
798
  cancel: () => { cancelled = true; }
798
799
  };
799
800
 
800
- const tasks = this._tasks.get(full_key);
801
+ let tasks = this._tasks.get(full_key);
801
802
  tasks.push(task);
802
803
 
803
804
  return { task, tasks, cancelled };
804
805
  };
805
806
 
806
807
  Eventer.prototype._execWaterfallStep = async function (config) {
807
- const { obj, params, ctx, arr, task, waterfall_value } = config;
808
+ const { obj, params, ctx, arr, task, wate_value } = config;
808
809
  try {
809
- const result = await obj.func.apply(obj, [waterfall_value, ...params.slice(1)]);
810
+ let result = await obj.func.apply(obj, [wate_value, ...params.slice(1)]);
810
811
  this._handleWfSuccess({ result, obj, ctx, arr, task });
811
812
  return result;
812
813
  } catch (e) {
813
814
  this._handleWfError({ e, obj, ctx, task });
814
- return waterfall_value;
815
+ return wate_value;
815
816
  }
816
817
  };
817
818
 
@@ -867,7 +868,7 @@ Eventer.prototype._callErrorHandler = function (e, obj, ctx) {
867
868
  */
868
869
  Eventer.prototype._executeRace = async function (config) {
869
870
  const { list, params, ctx, full_key, arr } = config;
870
- const promises = this._createRacePromises({ list, params, ctx, full_key, arr });
871
+ let promises = this._createRacePromises({ list, params, ctx, full_key, arr });
871
872
 
872
873
  return await this._runRace(promises);
873
874
  };
@@ -877,11 +878,11 @@ Eventer.prototype._createRacePromises = function (config) {
877
878
  const promises = [];
878
879
 
879
880
  for (let i = 0; i < list.length && !ctx.cancelled; i++) {
880
- const obj = list[i];
881
+ let obj = list[i];
881
882
  ctx.executed++;
882
883
  obj.last_executed = Date.now();
883
884
 
884
- const promise = this._createRacePromise({ obj, params, ctx, full_key, arr });
885
+ let promise = this._createRacePromise({ obj, params, ctx, full_key, arr });
885
886
  promises.push(promise);
886
887
  }
887
888
 
@@ -890,11 +891,11 @@ Eventer.prototype._createRacePromises = function (config) {
890
891
 
891
892
  Eventer.prototype._createRacePromise = function (config) {
892
893
  const { obj, params, ctx, full_key, arr } = config;
893
- const task = this._createRaceTask(obj, full_key);
894
+ let task = this._createRaceTask(obj, full_key);
894
895
 
895
896
  return (async () => {
896
897
  try {
897
- const result = await obj.func.apply(obj, params);
898
+ let result = await obj.func.apply(obj, params);
898
899
  return this._handleRaceSuccess({ result, obj, ctx, arr, task });
899
900
  } catch (e) {
900
901
  return this._handleRaceError(e, obj, ctx, task);
@@ -905,7 +906,7 @@ Eventer.prototype._createRacePromise = function (config) {
905
906
  };
906
907
 
907
908
  Eventer.prototype._createRaceTask = function (obj, full_key) {
908
- const task_id = `${obj.name}_${Date.now()}`;
909
+ let task_id = `${obj.name}_${Date.now()}`;
909
910
  let cancelled = false;
910
911
  const task = {
911
912
  id: task_id,
@@ -915,7 +916,7 @@ Eventer.prototype._createRaceTask = function (obj, full_key) {
915
916
  cancel: () => { cancelled = true; }
916
917
  };
917
918
 
918
- const tasks = this._tasks.get(full_key);
919
+ let tasks = this._tasks.get(full_key);
919
920
  tasks.push(task);
920
921
 
921
922
  return { task, tasks, cancelled };
@@ -951,8 +952,8 @@ Eventer.prototype._handleRaceError = function (e, obj, ctx, task) {
951
952
 
952
953
  Eventer.prototype._runRace = async function (promises) {
953
954
  if (promises.length > 0) {
954
- const race_result = await Promise.race(promises);
955
- return race_result;
955
+ let race = await Promise.race(promises);
956
+ return race;
956
957
  }
957
958
  return null;
958
959
  };
@@ -963,22 +964,22 @@ Eventer.prototype._runRace = async function (promises) {
963
964
  * @private
964
965
  */
965
966
  Eventer.prototype._executeSingleTask = async function (config) {
966
- const { obj, params, ctx, full_key, arr, idx, processed_results } = config;
967
+ const { obj, params, ctx, full_key, arr, idx, proc_results } = config;
967
968
  obj.last_executed = Date.now();
968
969
 
969
970
  // 创建任务
970
- const task_info = this._createParallelTask(obj, full_key);
971
+ let task_info = this._createParallelTask(obj, full_key);
971
972
 
972
973
  try {
973
- const result = await obj.func.apply(obj, params);
974
- this._handleTaskSuccess({ result, obj, ctx, arr, idx, processed_results, task_info });
974
+ let result = await obj.func.apply(obj, params);
975
+ this._handleTaskSuccess({ result, obj, ctx, arr, idx, proc_results, task_info });
975
976
  } catch (err) {
976
- this._handleTaskError({ err, obj, ctx, idx, processed_results, task_info });
977
+ this._handleTaskError({ err, obj, ctx, idx, proc_results, task_info });
977
978
  }
978
979
  };
979
980
 
980
981
  Eventer.prototype._createParallelTask = function (obj, full_key) {
981
- const task_id = `${obj.name}_${Date.now()}`;
982
+ let task_id = `${obj.name}_${Date.now()}`;
982
983
  let cancelled = false;
983
984
  const task = {
984
985
  id: task_id,
@@ -989,20 +990,20 @@ Eventer.prototype._createParallelTask = function (obj, full_key) {
989
990
  };
990
991
 
991
992
  // 添加到进行中的任务列表
992
- const tasks = this._tasks.get(full_key);
993
+ let tasks = this._tasks.get(full_key);
993
994
  tasks.push(task);
994
995
 
995
996
  return { task, tasks, cancelled };
996
997
  };
997
998
 
998
999
  Eventer.prototype._handleTaskSuccess = function (config) {
999
- const { result, obj, ctx, arr, idx, processed_results, task_info } = config;
1000
+ const { result, obj, ctx, arr, idx, proc_results, task_info } = config;
1000
1001
 
1001
1002
  // 从进行中的任务列表中移除
1002
1003
  task_info.tasks.splice(task_info.tasks.indexOf(task_info.task), 1);
1003
1004
 
1004
1005
  if (!task_info.cancelled && !ctx.cancelled) {
1005
- processed_results[idx] = result;
1006
+ proc_results[idx] = result;
1006
1007
 
1007
1008
  // 处理执行次数限制
1008
1009
  if (obj.times >= 0) {
@@ -1015,7 +1016,7 @@ Eventer.prototype._handleTaskSuccess = function (config) {
1015
1016
  };
1016
1017
 
1017
1018
  Eventer.prototype._handleTaskError = function (config) {
1018
- const { err, obj, ctx, idx, processed_results, task_info } = config;
1019
+ const { err, obj, ctx, idx, proc_results, task_info } = config;
1019
1020
 
1020
1021
  // 从进行中的任务列表中移除
1021
1022
  task_info.tasks.splice(task_info.tasks.indexOf(task_info.task), 1);
@@ -1027,7 +1028,7 @@ Eventer.prototype._handleTaskError = function (config) {
1027
1028
  handler: obj.name,
1028
1029
  timestamp: Date.now()
1029
1030
  };
1030
- processed_results[idx] = error_result;
1031
+ proc_results[idx] = error_result;
1031
1032
 
1032
1033
  // 全局错误处理器
1033
1034
  if (this.config.error_handler && typeof this.config.error_handler === 'function') {
@@ -1055,7 +1056,7 @@ Eventer.prototype.run = async function (key, ...params) {
1055
1056
  Eventer.prototype.emit = function (key, ...params) {
1056
1057
  // 内部调用 _execute 方法,但不等待结果
1057
1058
  try {
1058
- const result = this._execute(key, { exec_mode: 'sequential' }, ...params);
1059
+ let result = this._execute(key, { exec_mode: 'sequential' }, ...params);
1059
1060
  result.catch(e => this.log('error', '事件异步执行失败:', e));
1060
1061
  return {
1061
1062
  ...result,
@@ -1094,7 +1095,7 @@ Eventer.prototype.emit = function (key, ...params) {
1094
1095
  */
1095
1096
  Eventer.prototype.emitWait = async function (key, ...args) {
1096
1097
  try {
1097
- const result = await this._execute(key, { exec_mode: 'sequential' }, ...args);
1098
+ let result = await this._execute(key, { exec_mode: 'sequential' }, ...args);
1098
1099
  return result.results || [];
1099
1100
  } catch (error) {
1100
1101
  this.log('error', `等待事件触发失败 [${key}]`, error);
@@ -1119,13 +1120,13 @@ Eventer.prototype.emitAsync = async function (key, ...args) {
1119
1120
 
1120
1121
  Eventer.prototype._execAsync = function (key, args) {
1121
1122
  // 解析命名空间
1122
- const parsed = this._parseKey(key);
1123
- const namespace = parsed.namespace;
1124
- const event_key = parsed.key;
1125
- const full_key = `${namespace}:${event_key}`;
1123
+ let parsed = this._parseKey(key);
1124
+ let namespace = parsed.namespace;
1125
+ let event_key = parsed.key;
1126
+ let full_key = `${namespace}:${event_key}`;
1126
1127
 
1127
1128
  // 获取事件列表
1128
- const list = this._dict[namespace] && this._dict[namespace][event_key];
1129
+ let list = this._dict[namespace] && this._dict[namespace][event_key];
1129
1130
 
1130
1131
  if (!list || list.length === 0) {
1131
1132
  return false;
@@ -1179,7 +1180,7 @@ Eventer.prototype._handleSyncError = function (sync_error, full_key, args) {
1179
1180
  */
1180
1181
  Eventer.prototype.emitAll = async function (key, ...args) {
1181
1182
  try {
1182
- const result = await this._execute(key, { exec_mode: 'parallel' }, ...args);
1183
+ let result = await this._execute(key, { exec_mode: 'parallel' }, ...args);
1183
1184
  return result.results || [];
1184
1185
  } catch (error) {
1185
1186
  this.log('error', `并发事件触发失败 [${key}]`, error);
@@ -1195,8 +1196,8 @@ Eventer.prototype.emitAll = async function (key, ...args) {
1195
1196
  */
1196
1197
  Eventer.prototype.emitRace = async function (key, ...args) {
1197
1198
  try {
1198
- const result = await this._execute(key, { exec_mode: 'race' }, ...args);
1199
- return result.race_result || null;
1199
+ let result = await this._execute(key, { exec_mode: 'race' }, ...args);
1200
+ return result.race || null;
1200
1201
  } catch (error) {
1201
1202
  this.log('error', `竞争事件触发失败 [${key}]`, error);
1202
1203
  return null;
@@ -1208,16 +1209,16 @@ Eventer.prototype.emitRace = async function (key, ...args) {
1208
1209
  * @param {string} key 事件关键字,支持namespace:key格式
1209
1210
  * @param {...any} args 事件参数
1210
1211
  * @returns {Promise} - 第一个有返回值(非 undefined)的监听器结果
1211
- * @description 所有监听器并行执行,返回第一个有返回值(非 undefined)的结果,
1212
+ * 所有监听器并行执行,返回第一个有返回值(非 undefined)的结果,
1212
1213
  * 返回 undefined 的监听器被跳过,其他监听器继续在后台执行不受影响
1213
1214
  */
1214
1215
  Eventer.prototype.emitFirst = async function (key, ...args) {
1215
1216
  try {
1216
- const parsed = this._parseKey(key);
1217
- const namespace = parsed.namespace;
1218
- const event_key = parsed.key;
1217
+ let parsed = this._parseKey(key);
1218
+ let namespace = parsed.namespace;
1219
+ let event_key = parsed.key;
1219
1220
 
1220
- const list = this._dict[namespace] && this._dict[namespace][event_key];
1221
+ let list = this._dict[namespace] && this._dict[namespace][event_key];
1221
1222
  if (!list || list.length === 0) {
1222
1223
  return undefined;
1223
1224
  }
@@ -1226,7 +1227,7 @@ Eventer.prototype.emitFirst = async function (key, ...args) {
1226
1227
  let settled = false;
1227
1228
  let pending = list.length;
1228
1229
 
1229
- for (const handler of list) {
1230
+ for (let handler of list) {
1230
1231
  Promise.resolve(handler.func(...args)).then(result => {
1231
1232
  if (!settled && result !== undefined) {
1232
1233
  settled = true;
@@ -1259,11 +1260,11 @@ Eventer.prototype.emitFirst = async function (key, ...args) {
1259
1260
  */
1260
1261
  Eventer.prototype.emitWaterfall = async function (key, value, ...args) {
1261
1262
  try {
1262
- const result = await this._execute(key, {
1263
+ let result = await this._execute(key, {
1263
1264
  exec_mode: 'waterfall',
1264
1265
  initial_value: value
1265
1266
  }, ...args);
1266
- return result.waterfall_result || value;
1267
+ return result.waterfall || value;
1267
1268
  } catch (error) {
1268
1269
  this.log('error', `瀑布流事件触发失败 [${key}]`, error);
1269
1270
  return value;
@@ -1296,16 +1297,16 @@ Eventer.prototype._ensureNs = function (name) {
1296
1297
  * @returns {object} 包含结果和需要移除的事件名称的对象
1297
1298
  */
1298
1299
  Eventer.prototype._execNsEvents = async function (name, key, params) {
1299
- const list = this._dict[name][key];
1300
+ let list = this._dict[name][key];
1300
1301
  const namespace_results = [];
1301
1302
  const arr = []; // 存储需要移除的事件
1302
1303
 
1303
1304
  // 执行事件处理函数
1304
1305
  for (let i = 0; i < list.length; i++) {
1305
1306
  try {
1306
- const obj = list[i];
1307
+ let obj = list[i];
1307
1308
  // 执行事件处理函数
1308
- const result = await obj.func.apply(obj, params);
1309
+ let result = await obj.func.apply(obj, params);
1309
1310
  namespace_results.push(result);
1310
1311
 
1311
1312
  // 处理执行次数限制
@@ -1326,7 +1327,7 @@ Eventer.prototype._execNsEvents = async function (name, key, params) {
1326
1327
  }
1327
1328
  }
1328
1329
 
1329
- return { namespace_results, arr };
1330
+ return { name_results, arr };
1330
1331
  };
1331
1332
 
1332
1333
  /**
@@ -1345,18 +1346,18 @@ Eventer.prototype._removeEvents = function (name, key, arr) {
1345
1346
  Eventer.prototype.emitAllNamespaces = async function (key, ...params) {
1346
1347
  const results = {};
1347
1348
  // 确保遍历所有命名空间,包括动态创建的
1348
- for (const name in this._dict) {
1349
+ for (let name in this._dict) {
1349
1350
  // 确保命名空间在namespace映射中
1350
1351
  this._ensureNs(name);
1351
1352
 
1352
1353
  // 检查该命名空间下是否存在该事件
1353
1354
  if (this._dict[name] && this._dict[name][key]) {
1354
- const { namespace_results, arr } = await this._execNsEvents(name, key, params);
1355
+ const { name_results, arr } = await this._execNsEvents(name, key, params);
1355
1356
 
1356
1357
  // 移除已执行完的事件
1357
1358
  this._removeEvents(name, key, arr);
1358
1359
 
1359
- results[name] = namespace_results;
1360
+ results[name] = name_results;
1360
1361
  }
1361
1362
  }
1362
1363
  return results;
@@ -1408,7 +1409,7 @@ Eventer.prototype._removeEntireEvent = function (namespace, event_key, full_key)
1408
1409
 
1409
1410
  // 清理相关的事件链
1410
1411
  if (this._chain) {
1411
- for (const chain_key in this._chain) {
1412
+ for (let chain_key in this._chain) {
1412
1413
  if (chain_key === full_key) {
1413
1414
  delete this._chain[chain_key];
1414
1415
  } else if (this._chain[chain_key] && Array.is_array(this._chain[chain_key]) &&
@@ -1467,17 +1468,17 @@ Eventer.prototype.off = function (key, index_or_name) {
1467
1468
  }
1468
1469
 
1469
1470
  // 解析命名空间
1470
- const parsed = this._parseKey(key);
1471
- const namespace = parsed.namespace;
1472
- const event_key = parsed.key;
1473
- const full_key = `${namespace}:${event_key}`;
1471
+ let parsed = this._parseKey(key);
1472
+ let namespace = parsed.namespace;
1473
+ let event_key = parsed.key;
1474
+ let full_key = `${namespace}:${event_key}`;
1474
1475
 
1475
1476
  // 检查事件是否存在
1476
1477
  if (!this._dict[namespace] || !this._dict[namespace][event_key]) {
1477
1478
  return false;
1478
1479
  }
1479
1480
 
1480
- const events = this._dict[namespace][event_key];
1481
+ let events = this._dict[namespace][event_key];
1481
1482
  let removed = false;
1482
1483
 
1483
1484
  if (index_or_name) {
@@ -1528,9 +1529,9 @@ Eventer.prototype.getEvents = function (key) {
1528
1529
  }
1529
1530
  // 返回深拷贝的所有事件
1530
1531
  const result = {};
1531
- for (const name in this._dict) {
1532
+ for (let name in this._dict) {
1532
1533
  result[name] = {};
1533
- for (const key in this._dict[name]) {
1534
+ for (let key in this._dict[name]) {
1534
1535
  result[name][key] = [...this._dict[name][key]];
1535
1536
  }
1536
1537
  }
@@ -1582,7 +1583,7 @@ Eventer.prototype.clear = function (keepnamespace = false) {
1582
1583
  if (!keepnamespace) {
1583
1584
  this._namespace = {};
1584
1585
  // 重新初始化默认命名空间
1585
- this._namespace[this.config.default_namespace] = true;
1586
+ this._namespace[this.config.default_name] = true;
1586
1587
  }
1587
1588
 
1588
1589
  return this;
@@ -1596,16 +1597,16 @@ Eventer.prototype.clear = function (keepnamespace = false) {
1596
1597
  */
1597
1598
  Eventer.prototype.has = function (key, name) {
1598
1599
  // 解析命名空间
1599
- const parsed = this._parseKey(key);
1600
- const namespace = parsed.namespace;
1601
- const event_key = parsed.key;
1600
+ let parsed = this._parseKey(key);
1601
+ let namespace = parsed.namespace;
1602
+ let event_key = parsed.key;
1602
1603
 
1603
1604
  if (!this._dict[namespace] || !this._dict[namespace][event_key]) {
1604
1605
  return false;
1605
1606
  }
1606
1607
 
1607
1608
  if (name) {
1608
- const list = this._dict[namespace][event_key];
1609
+ let list = this._dict[namespace][event_key];
1609
1610
  for (let i = 0; i < list.length; i++) {
1610
1611
  if (list[i].name === name) {
1611
1612
  return true;
@@ -1627,10 +1628,10 @@ Eventer.prototype.count = function (key) {
1627
1628
  // 解析可能的命名空间模式
1628
1629
  if (key.ends_with(':*')) {
1629
1630
  // 统计命名空间下所有事件
1630
- const namespace = key.split(':')[0];
1631
+ let namespace = key.split(':')[0];
1631
1632
  if (this._dict[namespace]) {
1632
1633
  let total = 0;
1633
- for (const key in this._dict[namespace]) {
1634
+ for (let key in this._dict[namespace]) {
1634
1635
  total += this._dict[namespace][key].length;
1635
1636
  }
1636
1637
  return total;
@@ -1647,8 +1648,8 @@ Eventer.prototype.count = function (key) {
1647
1648
 
1648
1649
  // 统计所有事件
1649
1650
  let total = 0;
1650
- for (const name in this._dict) {
1651
- for (const key in this._dict[name]) {
1651
+ for (let name in this._dict) {
1652
+ for (let key in this._dict[name]) {
1652
1653
  total += this._dict[name][key].length;
1653
1654
  }
1654
1655
  }
@@ -1687,7 +1688,7 @@ Eventer.prototype.chain = function (from_event, to_events) {
1687
1688
  this._validateChainInput(from_event, to_events);
1688
1689
 
1689
1690
  // 解析源事件
1690
- const full_from_event = this._getFullEventKey(from_event);
1691
+ let full_from_event = this._getFullEventKey(from_event);
1691
1692
 
1692
1693
  // 初始化事件链
1693
1694
  this._initEventChain(full_from_event);
@@ -1717,7 +1718,7 @@ Eventer.prototype._initEventChain = function (full_from_event) {
1717
1718
 
1718
1719
  Eventer.prototype._addTargetEvents = function (full_from_event, to_events) {
1719
1720
  // 确保目标事件是数组
1720
- const target_events = Array.is_array(to_events) ? to_events : [to_events];
1721
+ let target_events = Array.is_array(to_events) ? to_events : [to_events];
1721
1722
 
1722
1723
  for (let i = 0; i < target_events.length; i++) {
1723
1724
  this._addSingleTargetEvent(full_from_event, target_events[i]);
@@ -1730,7 +1731,7 @@ Eventer.prototype._addTargetEvent = function (full_from_event, to_event) {
1730
1731
  }
1731
1732
 
1732
1733
  // 解析目标事件
1733
- const full_to_event = this._getFullEventKey(to_event);
1734
+ let full_to_event = this._getFullEventKey(to_event);
1734
1735
 
1735
1736
  // 避免重复添加
1736
1737
  if (!this._chain[full_from_event].includes(full_to_event)) {
@@ -1752,7 +1753,7 @@ Eventer.prototype.unchain = function (from_event, to_events) {
1752
1753
 
1753
1754
  // 解析源事件
1754
1755
  const { namespace: from_namespace, key: fromkey } = this._parseKey(from_event);
1755
- const full_from_event = `${from_namespace}:${fromkey}`;
1756
+ let full_from_event = `${from_namespace}:${fromkey}`;
1756
1757
 
1757
1758
  // 如果源事件不存在事件链,直接返回
1758
1759
  if (!this._chain[full_from_event]) {
@@ -1770,7 +1771,7 @@ Eventer.prototype.unchain = function (from_event, to_events) {
1770
1771
  };
1771
1772
 
1772
1773
  Eventer.prototype._removeTargetEvents = function (full_from_event, to_events) {
1773
- const target_events = Array.is_array(to_events) ? to_events : [to_events];
1774
+ let target_events = Array.is_array(to_events) ? to_events : [to_events];
1774
1775
 
1775
1776
  for (let i = 0; i < target_events.length; i++) {
1776
1777
  this._removeTargetEvent(full_from_event, target_events[i]);
@@ -1789,7 +1790,7 @@ Eventer.prototype._removeTargetEvent = function (full_from_event, to_event) {
1789
1790
 
1790
1791
  // 解析目标事件
1791
1792
  const { namespace: to_namespace, key: tokey } = this._parseKey(to_event);
1792
- const full_to_event = `${to_namespace}:${tokey}`;
1793
+ let full_to_event = `${to_namespace}:${tokey}`;
1793
1794
 
1794
1795
  // 检查事件链是否存在
1795
1796
  if (!this._chain[full_from_event]) {
@@ -1798,7 +1799,7 @@ Eventer.prototype._removeTargetEvent = function (full_from_event, to_event) {
1798
1799
  }
1799
1800
 
1800
1801
  // 查找并删除事件链
1801
- const index = this._chain[full_from_event].indexOf(full_to_event);
1802
+ let index = this._chain[full_from_event].indexOf(full_to_event);
1802
1803
  if (index === -1) {
1803
1804
  this.log('warn', `事件链不存在: ${full_from_event} -> ${full_to_event}`);
1804
1805
  return;
@@ -1819,7 +1820,7 @@ Eventer.prototype.getChains = function (event) {
1819
1820
 
1820
1821
  // 解析事件
1821
1822
  const { namespace, key } = this._parseKey(event);
1822
- const full_event = `${namespace}:${key}`;
1823
+ let full_event = `${namespace}:${key}`;
1823
1824
 
1824
1825
  return this._chain[full_event] ? [...this._chain[full_event]] : [];
1825
1826
  };
@@ -1837,7 +1838,7 @@ Eventer.prototype._triggerChain = async function (current_event, params) {
1837
1838
  }
1838
1839
 
1839
1840
  // 循环触发下一级事件
1840
- for (const next_event of this._chain[current_event]) {
1841
+ for (let next_event of this._chain[current_event]) {
1841
1842
  await this._execChainItem(next_event, params);
1842
1843
  }
1843
1844
  };
@@ -1852,11 +1853,11 @@ Eventer.prototype._triggerChain = async function (current_event, params) {
1852
1853
  Eventer.prototype._execChainItem = async function (key, params) {
1853
1854
  // 解析命名空间
1854
1855
  const { namespace, key: innerkey } = this._parseKey(key);
1855
- const list = this._dict[namespace] && this._dict[namespace][innerkey];
1856
+ let list = this._dict[namespace] && this._dict[namespace][innerkey];
1856
1857
  const results = [];
1857
1858
 
1858
1859
  // 创建上下文对象
1859
- const ctx = this._createChainContext(namespace, innerkey, key, params);
1860
+ let ctx = this._createChainContext(namespace, innerkey, key, params);
1860
1861
 
1861
1862
  // 如果有事件处理函数,执行它们
1862
1863
  if (list && list.length > 0) {
@@ -1872,7 +1873,7 @@ Eventer.prototype._execChainItem = async function (key, params) {
1872
1873
  };
1873
1874
 
1874
1875
  Eventer.prototype._createChainContext = function (namespace, innerkey, key, params) {
1875
- const start_time = Date.now();
1876
+ let start_time = Date.now();
1876
1877
  return {
1877
1878
  namespace,
1878
1879
  event: innerkey,
@@ -1919,7 +1920,7 @@ Eventer.prototype._execChainHandler = async function (obj, ctx, results) {
1919
1920
  ctx.executed++;
1920
1921
 
1921
1922
  // 执行事件处理函数
1922
- const result = await obj.func.apply(obj, ctx.params);
1923
+ let result = await obj.func.apply(obj, ctx.params);
1923
1924
  results.push(result);
1924
1925
  ctx.results.push(result);
1925
1926
 
@@ -1961,7 +1962,7 @@ Eventer.prototype._handleChainError = function (e, obj, ctx, results) {
1961
1962
  * @returns {Promise<object>} 返回包含results和cancel方法的对象
1962
1963
  */
1963
1964
  Eventer.prototype.runParallel = async function (key, ...params) {
1964
- const result = await this._execute(key, {
1965
+ let result = await this._execute(key, {
1965
1966
  exec_mode: 'parallel',
1966
1967
  options: params.options
1967
1968
  }, ...params);
@@ -1981,7 +1982,7 @@ Eventer.prototype.runParallel = async function (key, ...params) {
1981
1982
  */
1982
1983
  Eventer.prototype.emitParallel = function (key, ...params) {
1983
1984
  // 内部调用 _execute 方法,但不等待结果
1984
- const result = this._execute(key, {
1985
+ let result = this._execute(key, {
1985
1986
  exec_mode: 'parallel',
1986
1987
  options: params.options
1987
1988
  }, ...params);
@@ -2000,7 +2001,7 @@ Eventer.prototype.emitParallel = function (key, ...params) {
2000
2001
  * @param {number} max_listeners 最大监听器数量
2001
2002
  * @returns {Eventer} 返回当前实例,支持链式调用
2002
2003
  */
2003
- Eventer.prototype.setMaxListeners = function (max_listeners) {
2004
+ Eventer.prototype.setMaxListeners = function (max_list) {
2004
2005
  if (typeof max_listeners !== 'number' || max_listeners < 0) {
2005
2006
  throw new Error('最大监听器数量必须是一个非负数');
2006
2007
  }
@@ -2018,7 +2019,7 @@ Eventer.prototype.onMany = function (events_map) {
2018
2019
  throw new Error('事件对象必须是一个非空对象');
2019
2020
  }
2020
2021
 
2021
- for (const event_name in events_map) {
2022
+ for (let event_name in events_map) {
2022
2023
  if (events_map.has_own_property(event_name)) {
2023
2024
  this.on(event_name, events_map[event_name]);
2024
2025
  }
@@ -2035,11 +2036,11 @@ Eventer.prototype.onMany = function (events_map) {
2035
2036
  * @private
2036
2037
  */
2037
2038
  Eventer.prototype._parseKey = function (key) {
2038
- const parts = key.split(':');
2039
+ let parts = key.split(':');
2039
2040
  if (parts.length === 1) {
2040
2041
  // 没有命名空间,使用默认命名空间
2041
2042
  return {
2042
- namespace: this.config.default_namespace,
2043
+ namespace: this.config.default_name,
2043
2044
  key: key
2044
2045
  };
2045
2046
  } else if (parts.length === 2) {
@@ -2202,14 +2203,14 @@ Eventer.prototype._throttle = function (func, limit) {
2202
2203
  let last_func;
2203
2204
  let last_time = 0;
2204
2205
  return function () {
2205
- const ctx = this;
2206
- const args = arguments;
2206
+ let ctx = this;
2207
+ let args = arguments;
2207
2208
  if (!last_time) {
2208
2209
  func.apply(ctx, args);
2209
2210
  last_time = Date.now();
2210
2211
  } else {
2211
2212
  clearTimeout(last_func);
2212
- last_func = setTimeout(function () {
2213
+ last_func = setTimeout(() => {
2213
2214
  if ((Date.now() - last_time) >= limit) {
2214
2215
  func.apply(ctx, args);
2215
2216
  last_time = Date.now();
@@ -2229,10 +2230,10 @@ Eventer.prototype._throttle = function (func, limit) {
2229
2230
  Eventer.prototype._debounce = function (func, wait) {
2230
2231
  let timeout;
2231
2232
  return function () {
2232
- const ctx = this;
2233
- const args = arguments;
2233
+ let ctx = this;
2234
+ let args = arguments;
2234
2235
  clearTimeout(timeout);
2235
- timeout = setTimeout(function () {
2236
+ timeout = setTimeout(() => {
2236
2237
  func.apply(ctx, args);
2237
2238
  }, wait);
2238
2239
  };
@@ -2255,10 +2256,10 @@ Eventer.prototype.pause = function (key = '') {
2255
2256
  }
2256
2257
 
2257
2258
  // 解析关键字
2258
- const parsed = this._parseKey(key);
2259
- const namespace = parsed.namespace;
2260
- const event_key = parsed.key;
2261
- const full_key = `${namespace}:${event_key}`;
2259
+ let parsed = this._parseKey(key);
2260
+ let namespace = parsed.namespace;
2261
+ let event_key = parsed.key;
2262
+ let full_key = `${namespace}:${event_key}`;
2262
2263
 
2263
2264
  if (key) {
2264
2265
  return this._pauseEvent(full_key);
@@ -2313,10 +2314,10 @@ Eventer.prototype.resume = function (key = '') {
2313
2314
  }
2314
2315
 
2315
2316
  // 解析关键字
2316
- const parsed = this._parseKey(key);
2317
- const namespace = parsed.namespace;
2318
- const event_key = parsed.key;
2319
- const full_key = `${namespace}:${event_key}`;
2317
+ let parsed = this._parseKey(key);
2318
+ let namespace = parsed.namespace;
2319
+ let event_key = parsed.key;
2320
+ let full_key = `${namespace}:${event_key}`;
2320
2321
 
2321
2322
  if (key) {
2322
2323
  return this._resumeEvent(full_key);
@@ -2371,10 +2372,10 @@ Eventer.prototype.isPaused = function (key) {
2371
2372
  }
2372
2373
 
2373
2374
  // 解析关键字
2374
- const parsed = this._parseKey(key);
2375
- const namespace = parsed.namespace;
2376
- const event_key = parsed.key;
2377
- const full_key = `${namespace}:${event_key}`;
2375
+ let parsed = this._parseKey(key);
2376
+ let namespace = parsed.namespace;
2377
+ let event_key = parsed.key;
2378
+ let full_key = `${namespace}:${event_key}`;
2378
2379
 
2379
2380
  // 命名空间暂停检查
2380
2381
  if (this._paused_namespace.has(namespace)) {
@@ -2397,7 +2398,7 @@ Eventer.prototype.getPausedStatus = function () {
2397
2398
  return {
2398
2399
  global_paused: this._paused_global,
2399
2400
  paused_events: Array.from(this._paused),
2400
- paused_namespaces: Array.from(this._paused_namespace)
2401
+ paused_namespaces: Array.from(this._paused_namespace), // eslint-disable-line mm_eslint/variable-name
2401
2402
  };
2402
2403
  };
2403
2404