light-h5-core-lib 2.10.8 → 2.10.10

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,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "light-h5-core-lib",
3
- "version": "2.10.8",
3
+ "version": "2.10.10",
4
4
  "description": "light core lib",
5
5
  "main": "./LightCore.js",
6
6
  "types": "./type/index.d.ts",
package/pool/PoolObj.js CHANGED
@@ -1,8 +1,10 @@
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>
7
+ * 可以防止引用类型二次放入
6
8
  * @author Aonaufly
7
9
  */
8
10
  class PoolObj {
@@ -13,11 +15,12 @@ class PoolObj {
13
15
  * @param clearCallback Item清理函数
14
16
  * @param destroyCallback Item销毁函数
15
17
  */
16
- constructor(cap = 5, initCreateNum = 0, createCallback = null, clearCallback = null, destroyCallback = null) {
18
+ constructor(cap = 5, initCreateNum = 0, createCallback = null, clearCallback = null, destroyCallback = null, isForceRefTypeChecking = true) {
17
19
  this._cap = cap == null ? 5 : cap;
18
20
  this._createCallback = createCallback;
19
21
  this._clearCallback = clearCallback;
20
22
  this._destroyCallback = destroyCallback;
23
+ this._isForceRefTypeChecking = isForceRefTypeChecking;
21
24
  this._pool = [];
22
25
  this.initCreate(initCreateNum == null ? 0 : initCreateNum);
23
26
  }
@@ -34,20 +37,38 @@ class PoolObj {
34
37
  this._pool.push(this._createCallback());
35
38
  }
36
39
  }
40
+ isObject(obj) {
41
+ const str = typeof obj;
42
+ if (str == "object")
43
+ return true;
44
+ if (str == "function")
45
+ return true;
46
+ return false;
47
+ }
37
48
  /**
38
49
  * 放入到对象池
39
- * @return 放入到对象池是否成功
50
+ * @return 放入到对象池是否成功, PoolObjPutStatus.WARNING_DUPLICATE: 重复放置相同的引用(用户可以据此查找问题)
40
51
  */
41
52
  put(obj) {
42
53
  if (!obj)
43
- return false;
54
+ return PoolObjPutStatus_1.PoolObjPutStatus.FAILED_NULL;
44
55
  if (this._cap > 0 && this._pool.length >= this._cap) {
45
56
  this._destroyCallback && this._destroyCallback(obj);
46
- return false;
57
+ return PoolObjPutStatus_1.PoolObjPutStatus.FAILED_EXCEEDS_CAPACITY;
58
+ }
59
+ if (this._isForceRefTypeChecking &&
60
+ this._pool.length > 0 &&
61
+ this.isObject(obj)) {
62
+ for (let i = 0; i < this._pool.length; i++) {
63
+ if (this._pool[i] === obj) {
64
+ //已经放入,无法二次放入
65
+ return PoolObjPutStatus_1.PoolObjPutStatus.WARNING_DUPLICATE;
66
+ }
67
+ }
47
68
  }
48
69
  this._clearCallback && this._clearCallback(obj);
49
70
  this._pool.push(obj);
50
- return true;
71
+ return PoolObjPutStatus_1.PoolObjPutStatus.SUCCESS;
51
72
  }
52
73
  /**
53
74
  * 获得一个Item<br>
@@ -0,0 +1,18 @@
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
+ })(PoolObjPutStatus || (exports.PoolObjPutStatus = PoolObjPutStatus = {}));
package/type/index.d.ts CHANGED
@@ -7,7 +7,22 @@ export interface IClear extends IDestroy {
7
7
  clear(): void;
8
8
  }
9
9
  /**
10
- * 对象池(泛型)
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
+ /**
24
+ * 对象池(泛型)</br>
25
+ * 可以防止引用类型二次放入
11
26
  * @author Aonaufly
12
27
  */
13
28
  export declare class PoolObj<T> implements IClear {
@@ -16,6 +31,7 @@ export declare class PoolObj<T> implements IClear {
16
31
  private _createCallback;
17
32
  private _clearCallback;
18
33
  private _destroyCallback;
34
+ private _isForceRefTypeChecking;
19
35
  /**
20
36
  * @param cap 容量(容积) <b style="color:red">小于等于0:无限容量,慎用</b>
21
37
  * @param initCreateNum 初始化创建数量 <b style="color:red">(createCallback != null 有效)</b>
@@ -23,16 +39,17 @@ export declare class PoolObj<T> implements IClear {
23
39
  * @param clearCallback Item清理函数
24
40
  * @param destroyCallback Item销毁函数
25
41
  */
26
- constructor(cap?: number, initCreateNum?: number, createCallback?: () => T, clearCallback?: (item: T) => void, destroyCallback?: (item: T) => void);
42
+ constructor(cap?: number, initCreateNum?: number, createCallback?: () => T, clearCallback?: (item: T) => void, destroyCallback?: (item: T) => void, isForceRefTypeChecking?: boolean);
27
43
  /**
28
44
  * 初始化一些数量的item
29
45
  */
30
46
  private initCreate;
47
+ private isObject;
31
48
  /**
32
49
  * 放入到对象池
33
- * @return 放入到对象池是否成功
50
+ * @return 放入到对象池是否成功, PoolObjPutStatus.WARNING_DUPLICATE: 重复放置相同的引用(用户可以据此查找问题)
34
51
  */
35
- put(obj: T): boolean;
52
+ put(obj: T): PoolObjPutStatus;
36
53
  /**
37
54
  * 获得一个Item<br>
38
55
  * <div style="color: #FF0000;">⚠️友情提示:如果有createCallback需要判断是否是New的item则提前使用 this.size == 0保存句柄</div><br>