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 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,
@@ -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.9",
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
@@ -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 false;
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 false;
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 false;
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 true;
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): boolean;
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<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;
565
596
  }
566
597
 
567
598
  export {};