light-h5-core-lib 2.10.9 → 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/LightCore.js +4 -1
- package/common/util/MapUtil.js +52 -0
- package/package.json +1 -1
- package/pool/PoolObj.js +22 -11
- package/pool/PoolObjPutStatus.js +20 -0
- package/type/index.d.ts +40 -9
package/LightCore.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.MapUtil = exports.CollisionDetectionUtil = exports.SelfDecrypt = exports.GetDecorateUtils = exports.NumberUtil = exports.BooleanUtil = exports.Crc32Util = exports.PromiseUtil = exports.BeizerUtil = exports.UniqueIDUtil = exports.StringUtil = exports.RandomNumUtil = exports.FloatDigitUtil = exports.DateUtil = exports.BitUtil = exports.MD5 = exports.BaseSingleton = exports.SetterGetterBase = exports.ClassNameUtil = exports.PoolObj = void 0;
|
|
6
|
+
exports.MapUtil = exports.CollisionDetectionUtil = exports.SelfDecrypt = exports.GetDecorateUtils = exports.NumberUtil = exports.BooleanUtil = exports.Crc32Util = exports.PromiseUtil = exports.BeizerUtil = exports.UniqueIDUtil = exports.StringUtil = exports.RandomNumUtil = exports.FloatDigitUtil = exports.DateUtil = exports.BitUtil = exports.MD5 = exports.BaseSingleton = exports.SetterGetterBase = exports.ClassNameUtil = exports.PoolObj = exports.PoolObjPutStatus = void 0;
|
|
7
7
|
const PoolObj_1 = require("./pool/PoolObj");
|
|
8
8
|
Object.defineProperty(exports, "PoolObj", { enumerable: true, get: function () { return PoolObj_1.PoolObj; } });
|
|
9
9
|
const BaseSingleton_1 = require("./common/base/BaseSingleton");
|
|
@@ -44,7 +44,10 @@ const GetDecorateUtils_1 = require("./common/util/GetDecorateUtils");
|
|
|
44
44
|
Object.defineProperty(exports, "GetDecorateUtils", { enumerable: true, get: function () { return GetDecorateUtils_1.GetDecorateUtils; } });
|
|
45
45
|
const MapUtil_1 = require("./common/util/MapUtil");
|
|
46
46
|
Object.defineProperty(exports, "MapUtil", { enumerable: true, get: function () { return MapUtil_1.MapUtil; } });
|
|
47
|
+
const PoolObjPutStatus_1 = require("./pool/PoolObjPutStatus");
|
|
48
|
+
Object.defineProperty(exports, "PoolObjPutStatus", { enumerable: true, get: function () { return PoolObjPutStatus_1.PoolObjPutStatus; } });
|
|
47
49
|
module.exports = {
|
|
50
|
+
PoolObjPutStatus: PoolObjPutStatus_1.PoolObjPutStatus,
|
|
48
51
|
PoolObj: PoolObj_1.PoolObj,
|
|
49
52
|
ClassNameUtil: ClassNameUtil_1.ClassNameUtil,
|
|
50
53
|
SetterGetterBase: SetterGetterBase_1.SetterGetterBase,
|
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
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PoolObj = void 0;
|
|
4
|
+
const PoolObjPutStatus_1 = require("./PoolObjPutStatus");
|
|
4
5
|
/**
|
|
5
6
|
* 对象池(泛型)</br>
|
|
6
7
|
* 可以防止引用类型二次放入
|
|
@@ -8,17 +9,20 @@ exports.PoolObj = void 0;
|
|
|
8
9
|
*/
|
|
9
10
|
class PoolObj {
|
|
10
11
|
/**
|
|
11
|
-
* @param cap 容量(容积) <b style="color:red">小于等于0:无限容量,慎用</b>
|
|
12
|
-
* @param initCreateNum 初始化创建数量 <b style="color:red">(createCallback != null 有效)</b>
|
|
13
|
-
* @param createCallback Item创建函数
|
|
14
|
-
* @param clearCallback Item清理函数
|
|
15
|
-
* @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
|
|
16
19
|
*/
|
|
17
|
-
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) {
|
|
18
21
|
this._cap = cap == null ? 5 : cap;
|
|
19
22
|
this._createCallback = createCallback;
|
|
20
23
|
this._clearCallback = clearCallback;
|
|
21
24
|
this._destroyCallback = destroyCallback;
|
|
25
|
+
this._isCanPutCallback = isCanPutCallback;
|
|
22
26
|
this._isForceRefTypeChecking = isForceRefTypeChecking;
|
|
23
27
|
this._pool = [];
|
|
24
28
|
this.initCreate(initCreateNum == null ? 0 : initCreateNum);
|
|
@@ -46,14 +50,14 @@ class PoolObj {
|
|
|
46
50
|
}
|
|
47
51
|
/**
|
|
48
52
|
* 放入到对象池
|
|
49
|
-
* @return
|
|
53
|
+
* @return 放入到对象池是否成功, PoolObjPutStatus.WARNING_DUPLICATE: 重复放置相同的引用(用户可以据此查找问题)
|
|
50
54
|
*/
|
|
51
55
|
put(obj) {
|
|
52
56
|
if (!obj)
|
|
53
|
-
return
|
|
57
|
+
return PoolObjPutStatus_1.PoolObjPutStatus.FAILED_NULL;
|
|
54
58
|
if (this._cap > 0 && this._pool.length >= this._cap) {
|
|
55
59
|
this._destroyCallback && this._destroyCallback(obj);
|
|
56
|
-
return
|
|
60
|
+
return PoolObjPutStatus_1.PoolObjPutStatus.FAILED_EXCEEDS_CAPACITY;
|
|
57
61
|
}
|
|
58
62
|
if (this._isForceRefTypeChecking &&
|
|
59
63
|
this._pool.length > 0 &&
|
|
@@ -61,13 +65,20 @@ class PoolObj {
|
|
|
61
65
|
for (let i = 0; i < this._pool.length; i++) {
|
|
62
66
|
if (this._pool[i] === obj) {
|
|
63
67
|
//已经放入,无法二次放入
|
|
64
|
-
return
|
|
68
|
+
return PoolObjPutStatus_1.PoolObjPutStatus.WARNING_DUPLICATE;
|
|
65
69
|
}
|
|
66
70
|
}
|
|
67
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
|
+
}
|
|
68
79
|
this._clearCallback && this._clearCallback(obj);
|
|
69
80
|
this._pool.push(obj);
|
|
70
|
-
return
|
|
81
|
+
return PoolObjPutStatus_1.PoolObjPutStatus.SUCCESS;
|
|
71
82
|
}
|
|
72
83
|
/**
|
|
73
84
|
* 获得一个Item<br>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PoolObjPutStatus = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* 对象池放置的结果状态
|
|
6
|
+
* @author Aonaufly
|
|
7
|
+
*/
|
|
8
|
+
var PoolObjPutStatus;
|
|
9
|
+
(function (PoolObjPutStatus) {
|
|
10
|
+
/**成功的*/
|
|
11
|
+
PoolObjPutStatus[PoolObjPutStatus["SUCCESS"] = 0] = "SUCCESS";
|
|
12
|
+
/**失败的(item: null)*/
|
|
13
|
+
PoolObjPutStatus[PoolObjPutStatus["FAILED_NULL"] = 1] = "FAILED_NULL";
|
|
14
|
+
/**失败的(超过了容量)*/
|
|
15
|
+
PoolObjPutStatus[PoolObjPutStatus["FAILED_EXCEEDS_CAPACITY"] = 2] = "FAILED_EXCEEDS_CAPACITY";
|
|
16
|
+
/**⚠️:引用对象重复放入*/
|
|
17
|
+
PoolObjPutStatus[PoolObjPutStatus["WARNING_DUPLICATE"] = 2] = "WARNING_DUPLICATE";
|
|
18
|
+
/**⚠️: 客户端阻止了放入*/
|
|
19
|
+
PoolObjPutStatus[PoolObjPutStatus["FAILED_CLIENT_PREVENT"] = 3] = "FAILED_CLIENT_PREVENT";
|
|
20
|
+
})(PoolObjPutStatus || (exports.PoolObjPutStatus = PoolObjPutStatus = {}));
|
package/type/index.d.ts
CHANGED
|
@@ -6,6 +6,22 @@ export interface IDestroy {
|
|
|
6
6
|
export interface IClear extends IDestroy {
|
|
7
7
|
clear(): void;
|
|
8
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* 对象池放置的结果状态
|
|
11
|
+
* @author Aonaufly
|
|
12
|
+
*/
|
|
13
|
+
export declare enum PoolObjPutStatus {
|
|
14
|
+
/**成功的*/
|
|
15
|
+
SUCCESS = 0,
|
|
16
|
+
/**失败的(item: null)*/
|
|
17
|
+
FAILED_NULL = 1,
|
|
18
|
+
/**失败的(超过了容量)*/
|
|
19
|
+
FAILED_EXCEEDS_CAPACITY = 2,
|
|
20
|
+
/**⚠️:引用对象重复放入*/
|
|
21
|
+
WARNING_DUPLICATE = 2,
|
|
22
|
+
/**⚠️: 客户端阻止了放入*/
|
|
23
|
+
FAILED_CLIENT_PREVENT = 3
|
|
24
|
+
}
|
|
9
25
|
/**
|
|
10
26
|
* 对象池(泛型)</br>
|
|
11
27
|
* 可以防止引用类型二次放入
|
|
@@ -17,15 +33,18 @@ export declare class PoolObj<T> implements IClear {
|
|
|
17
33
|
private _createCallback;
|
|
18
34
|
private _clearCallback;
|
|
19
35
|
private _destroyCallback;
|
|
36
|
+
private _isCanPutCallback;
|
|
20
37
|
private _isForceRefTypeChecking;
|
|
21
38
|
/**
|
|
22
|
-
* @param cap 容量(容积) <b style="color:red">小于等于0:无限容量,慎用</b>
|
|
23
|
-
* @param initCreateNum 初始化创建数量 <b style="color:red">(createCallback != null 有效)</b>
|
|
24
|
-
* @param createCallback Item创建函数
|
|
25
|
-
* @param clearCallback Item清理函数
|
|
26
|
-
* @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
|
|
27
46
|
*/
|
|
28
|
-
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);
|
|
29
48
|
/**
|
|
30
49
|
* 初始化一些数量的item
|
|
31
50
|
*/
|
|
@@ -33,9 +52,9 @@ export declare class PoolObj<T> implements IClear {
|
|
|
33
52
|
private isObject;
|
|
34
53
|
/**
|
|
35
54
|
* 放入到对象池
|
|
36
|
-
* @return
|
|
55
|
+
* @return 放入到对象池是否成功, PoolObjPutStatus.WARNING_DUPLICATE: 重复放置相同的引用(用户可以据此查找问题)
|
|
37
56
|
*/
|
|
38
|
-
put(obj: T):
|
|
57
|
+
put(obj: T): PoolObjPutStatus;
|
|
39
58
|
/**
|
|
40
59
|
* 获得一个Item<br>
|
|
41
60
|
* <div style="color: #FF0000;">⚠️友情提示:如果有createCallback需要判断是否是New的item则提前使用 this.size == 0保存句柄</div><br>
|
|
@@ -561,7 +580,19 @@ export declare class MapUtil {
|
|
|
561
580
|
* @param targetMap 目标Map
|
|
562
581
|
* @param everyCallback 每次的回调
|
|
563
582
|
*/
|
|
564
|
-
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;
|
|
565
596
|
}
|
|
566
597
|
|
|
567
598
|
export {};
|