light-h5-core-lib 2.10.10 → 2.10.11

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.
@@ -24,5 +24,57 @@ class MapUtil {
24
24
  keyItems = keys.next();
25
25
  }
26
26
  }
27
+ /**
28
+ * 通过Value寻找Key值
29
+ * @param targetMap 目标Map
30
+ * @param value 目标值
31
+ */
32
+ static getKeyByValue(targetMap, value) {
33
+ if (!targetMap || targetMap.size <= 0) {
34
+ return null;
35
+ }
36
+ if (!value)
37
+ return null;
38
+ const keys = targetMap.keys();
39
+ let keyItems = keys.next();
40
+ while (!keyItems.done) {
41
+ if (targetMap.get(keyItems.value) === value) {
42
+ return keyItems.value;
43
+ }
44
+ keyItems = keys.next();
45
+ }
46
+ return null;
47
+ }
48
+ /**
49
+ * 清理字典中的空Value
50
+ * @param targetMap 目标Map
51
+ * @param isNeedClearCallback 判断一个值是不是需要被删除 默认:null
52
+ */
53
+ static clearEmptyValue(targetMap, isNeedClearCallback = null) {
54
+ if (!targetMap || targetMap.size <= 0) {
55
+ return;
56
+ }
57
+ const keys = targetMap.keys();
58
+ let keyItems = keys.next();
59
+ const deleteKeys = [];
60
+ let item;
61
+ while (!keyItems.done) {
62
+ item = targetMap.get(keyItems.value);
63
+ if (!item) {
64
+ deleteKeys.push(keyItems.value);
65
+ }
66
+ else if (isNeedClearCallback) {
67
+ if (isNeedClearCallback(item)) {
68
+ deleteKeys.push(keyItems.value);
69
+ }
70
+ }
71
+ keyItems = keys.next();
72
+ }
73
+ if (deleteKeys.length <= 0)
74
+ return;
75
+ for (let i = 0; i < deleteKeys.length; i++) {
76
+ targetMap.delete(deleteKeys[i]);
77
+ }
78
+ }
27
79
  }
28
80
  exports.MapUtil = MapUtil;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "light-h5-core-lib",
3
- "version": "2.10.10",
3
+ "version": "2.10.11",
4
4
  "description": "light core lib",
5
5
  "main": "./LightCore.js",
6
6
  "types": "./type/index.d.ts",
package/pool/PoolObj.js CHANGED
@@ -9,17 +9,20 @@ const PoolObjPutStatus_1 = require("./PoolObjPutStatus");
9
9
  */
10
10
  class PoolObj {
11
11
  /**
12
- * @param cap 容量(容积) <b style="color:red">小于等于0:无限容量,慎用</b>
13
- * @param initCreateNum 初始化创建数量 <b style="color:red">(createCallback != null 有效)</b>
14
- * @param createCallback Item创建函数
15
- * @param clearCallback Item清理函数
16
- * @param destroyCallback Item销毁函数
12
+ * @param cap 容量(容积) <b style="color:red">小于等于0:无限容量,慎用</b> 默认:5
13
+ * @param initCreateNum 初始化创建数量 <b style="color:red">(createCallback != null 有效)</b> 默认: 0
14
+ * @param createCallback Item创建函数 默认: null
15
+ * @param clearCallback Item清理函数 默认: null
16
+ * @param destroyCallback Item销毁函数 默认: null
17
+ * @param isCanPutCallback Item是否可以被放入到对象池 默认: null
18
+ * @param isForceRefTypeChecking 如果放入的对象是引用对象,是否要检测重复放入的问题 默认: true
17
19
  */
18
- constructor(cap = 5, initCreateNum = 0, createCallback = null, clearCallback = null, destroyCallback = null, isForceRefTypeChecking = true) {
20
+ constructor(cap = 5, initCreateNum = 0, createCallback = null, clearCallback = null, destroyCallback = null, isCanPutCallback = null, isForceRefTypeChecking = true) {
19
21
  this._cap = cap == null ? 5 : cap;
20
22
  this._createCallback = createCallback;
21
23
  this._clearCallback = clearCallback;
22
24
  this._destroyCallback = destroyCallback;
25
+ this._isCanPutCallback = isCanPutCallback;
23
26
  this._isForceRefTypeChecking = isForceRefTypeChecking;
24
27
  this._pool = [];
25
28
  this.initCreate(initCreateNum == null ? 0 : initCreateNum);
@@ -66,6 +69,13 @@ class PoolObj {
66
69
  }
67
70
  }
68
71
  }
72
+ if (this._isCanPutCallback) {
73
+ if (!this._isCanPutCallback(obj)) {
74
+ //client阻止了放入,进行销毁处理
75
+ this._destroyCallback && this._destroyCallback(obj);
76
+ return PoolObjPutStatus_1.PoolObjPutStatus.FAILED_CLIENT_PREVENT;
77
+ }
78
+ }
69
79
  this._clearCallback && this._clearCallback(obj);
70
80
  this._pool.push(obj);
71
81
  return PoolObjPutStatus_1.PoolObjPutStatus.SUCCESS;
@@ -13,6 +13,8 @@ var PoolObjPutStatus;
13
13
  PoolObjPutStatus[PoolObjPutStatus["FAILED_NULL"] = 1] = "FAILED_NULL";
14
14
  /**失败的(超过了容量)*/
15
15
  PoolObjPutStatus[PoolObjPutStatus["FAILED_EXCEEDS_CAPACITY"] = 2] = "FAILED_EXCEEDS_CAPACITY";
16
- /**⚠:引用对象重复放置*/
16
+ /**⚠️:引用对象重复放入*/
17
17
  PoolObjPutStatus[PoolObjPutStatus["WARNING_DUPLICATE"] = 2] = "WARNING_DUPLICATE";
18
+ /**⚠️: 客户端阻止了放入*/
19
+ PoolObjPutStatus[PoolObjPutStatus["FAILED_CLIENT_PREVENT"] = 3] = "FAILED_CLIENT_PREVENT";
18
20
  })(PoolObjPutStatus || (exports.PoolObjPutStatus = PoolObjPutStatus = {}));
package/type/index.d.ts CHANGED
@@ -17,8 +17,10 @@ export declare enum PoolObjPutStatus {
17
17
  FAILED_NULL = 1,
18
18
  /**失败的(超过了容量)*/
19
19
  FAILED_EXCEEDS_CAPACITY = 2,
20
- /**⚠:引用对象重复放置*/
21
- WARNING_DUPLICATE = 2
20
+ /**⚠️:引用对象重复放入*/
21
+ WARNING_DUPLICATE = 2,
22
+ /**⚠️: 客户端阻止了放入*/
23
+ FAILED_CLIENT_PREVENT = 3
22
24
  }
23
25
  /**
24
26
  * 对象池(泛型)</br>
@@ -31,15 +33,18 @@ export declare class PoolObj<T> implements IClear {
31
33
  private _createCallback;
32
34
  private _clearCallback;
33
35
  private _destroyCallback;
36
+ private _isCanPutCallback;
34
37
  private _isForceRefTypeChecking;
35
38
  /**
36
- * @param cap 容量(容积) <b style="color:red">小于等于0:无限容量,慎用</b>
37
- * @param initCreateNum 初始化创建数量 <b style="color:red">(createCallback != null 有效)</b>
38
- * @param createCallback Item创建函数
39
- * @param clearCallback Item清理函数
40
- * @param destroyCallback Item销毁函数
39
+ * @param cap 容量(容积) <b style="color:red">小于等于0:无限容量,慎用</b> 默认:5
40
+ * @param initCreateNum 初始化创建数量 <b style="color:red">(createCallback != null 有效)</b> 默认: 0
41
+ * @param createCallback Item创建函数 默认: null
42
+ * @param clearCallback Item清理函数 默认: null
43
+ * @param destroyCallback Item销毁函数 默认: null
44
+ * @param isCanPutCallback Item是否可以被放入到对象池 默认: null
45
+ * @param isForceRefTypeChecking 如果放入的对象是引用对象,是否要检测重复放入的问题 默认: true
41
46
  */
42
- constructor(cap?: number, initCreateNum?: number, createCallback?: () => T, clearCallback?: (item: T) => void, destroyCallback?: (item: T) => void, isForceRefTypeChecking?: boolean);
47
+ constructor(cap?: number, initCreateNum?: number, createCallback?: () => T, clearCallback?: (item: T) => void, destroyCallback?: (item: T) => void, isCanPutCallback?: (item: T) => boolean, isForceRefTypeChecking?: boolean);
43
48
  /**
44
49
  * 初始化一些数量的item
45
50
  */
@@ -575,7 +580,19 @@ export declare class MapUtil {
575
580
  * @param targetMap 目标Map
576
581
  * @param everyCallback 每次的回调
577
582
  */
578
- static all(targetMap: Map<any, any>, everyCallback: (key: any, item: any) => void): void;
583
+ static all<KEY, VALUE>(targetMap: Map<KEY, VALUE>, everyCallback: (key: KEY, item: VALUE) => void): void;
584
+ /**
585
+ * 通过Value寻找Key值
586
+ * @param targetMap 目标Map
587
+ * @param value 目标值
588
+ */
589
+ static getKeyByValue<KEY, VALUE>(targetMap: Map<KEY, VALUE>, value: VALUE): KEY;
590
+ /**
591
+ * 清理字典中的空Value
592
+ * @param targetMap 目标Map
593
+ * @param isNeedClearCallback 判断一个值是不是需要被删除 默认:null
594
+ */
595
+ static clearEmptyValue<KEY, VALUE>(targetMap: Map<KEY, VALUE>, isNeedClearCallback?: (item: VALUE) => boolean): void;
579
596
  }
580
597
 
581
598
  export {};