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.
- package/common/util/MapUtil.js +52 -0
- package/package.json +1 -1
- package/pool/PoolObj.js +16 -6
- package/pool/PoolObjPutStatus.js +3 -1
- package/type/index.d.ts +26 -9
package/common/util/MapUtil.js
CHANGED
|
@@ -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
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;
|
package/pool/PoolObjPutStatus.js
CHANGED
|
@@ -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<
|
|
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 {};
|