@zajno/common 2.8.4 → 2.8.6
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/cjs/dates/tz.js +1 -1
- package/cjs/dates/tz.js.map +1 -1
- package/cjs/math/object/math.composite.js +39 -22
- package/cjs/math/object/math.composite.js.map +1 -1
- package/cjs/math/object/math.js +50 -8
- package/cjs/math/object/math.js.map +1 -1
- package/cjs/math/object/ops.composite.js +8 -8
- package/cjs/math/object/ops.composite.js.map +1 -1
- package/cjs/structures/queue/tasks.js +72 -20
- package/cjs/structures/queue/tasks.js.map +1 -1
- package/cjs/validation/validators.js +1 -1
- package/cjs/validation/validators.js.map +1 -1
- package/esm/dates/tz.js +1 -1
- package/esm/dates/tz.js.map +1 -1
- package/esm/math/object/math.composite.js +39 -22
- package/esm/math/object/math.composite.js.map +1 -1
- package/esm/math/object/math.js +50 -8
- package/esm/math/object/math.js.map +1 -1
- package/esm/math/object/ops.composite.js +8 -8
- package/esm/math/object/ops.composite.js.map +1 -1
- package/esm/structures/queue/tasks.js +72 -20
- package/esm/structures/queue/tasks.js.map +1 -1
- package/esm/validation/validators.js +1 -1
- package/esm/validation/validators.js.map +1 -1
- package/package.json +1 -1
- package/types/math/object/math.composite.d.ts +9 -4
- package/types/math/object/math.d.ts +8 -1
- package/types/math/object/ops.composite.d.ts +2 -2
- package/types/math/object/types.d.ts +4 -1
- package/types/structures/queue/tasks.d.ts +31 -2
package/cjs/dates/tz.js
CHANGED
package/cjs/dates/tz.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tz.js","sourceRoot":"","sources":["../../../src/dates/tz.ts"],"names":[],"mappings":";;;AAAA,6DAA6D;AAC7D,IAAiB,SAAS,CAyDzB;AAzDD,WAAiB,SAAS;IAET,iBAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;IAC3D,uBAAa,GAAG,IAAI,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC;IAE5D,+CAA+C;IAC/C;;;;;;OAMG;IACH,SAAgB,SAAS,CAAC,QAAgB,EAAE,IAAoB;QAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;YAC3C,YAAY,EAAE,YAAY;YAC1B,QAAQ;SACX,CAAC;aACG,aAAa,CAAC,IAAI,CAAC;aACnB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC;YACvC,EAAE,KAAK,CAAC;QAEZ,MAAM,MAAM,GAAG,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,CAAC,CAAC;QACb,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,YAAY,eAAe,QAAQ,EAAE,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;QACzC,IAAI,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,CAAC,CAAC;QACjB,CAAC;QAED,OAAO,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"tz.js","sourceRoot":"","sources":["../../../src/dates/tz.ts"],"names":[],"mappings":";;;AAAA,6DAA6D;AAC7D,IAAiB,SAAS,CAyDzB;AAzDD,WAAiB,SAAS;IAET,iBAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;IAC3D,uBAAa,GAAG,IAAI,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC;IAE5D,+CAA+C;IAC/C;;;;;;OAMG;IACH,SAAgB,SAAS,CAAC,QAAgB,EAAE,IAAoB;QAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;YAC3C,YAAY,EAAE,YAAY;YAC1B,QAAQ;SACX,CAAC;aACG,aAAa,CAAC,IAAI,CAAC;aACnB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC;YACvC,EAAE,KAAK,CAAC;QAEZ,MAAM,MAAM,GAAG,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,CAAC,CAAC;QACb,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,YAAY,eAAe,QAAQ,EAAE,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;QACzC,IAAI,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,CAAC,CAAC;QACjB,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,CAAC;IACvB,CAAC;IA7Be,mBAAS,YA6BxB,CAAA;IAED;;;;MAIE;IACF,SAAgB,eAAe,CAAC,IAAU,EAAE,EAAmB;QAC3D,MAAM,MAAM,GAAG,OAAO,EAAE,KAAK,QAAQ;YACjC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAE1B,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC9D,OAAO,OAAO,CAAC;IACnB,CAAC;IAPe,yBAAe,kBAO9B,CAAA;AACL,CAAC,EAzDgB,SAAS,yBAAT,SAAS,QAyDzB"}
|
|
@@ -4,67 +4,84 @@ exports.CompositeObjectMath = void 0;
|
|
|
4
4
|
const helpers_js_1 = require("./helpers.js");
|
|
5
5
|
const ops_composite_js_1 = require("./ops.composite.js");
|
|
6
6
|
class CompositeObjectMath extends ops_composite_js_1.CompositeObjectOps {
|
|
7
|
-
|
|
7
|
+
innerMath;
|
|
8
|
+
returnInfinityOnDivByEmpty = false;
|
|
8
9
|
constructor(innerMath) {
|
|
9
10
|
super(innerMath);
|
|
10
|
-
this.
|
|
11
|
+
this.innerMath = Object.entries(innerMath)
|
|
11
12
|
.map(pair => ({
|
|
12
13
|
key: pair[0],
|
|
13
14
|
ops: pair[1],
|
|
14
15
|
}));
|
|
15
16
|
}
|
|
17
|
+
useInfinityOnDivByEmpty(enable) {
|
|
18
|
+
this.returnInfinityOnDivByEmpty = enable;
|
|
19
|
+
return this;
|
|
20
|
+
}
|
|
16
21
|
contains(base, target) {
|
|
17
|
-
if (!base
|
|
22
|
+
if (!base) {
|
|
18
23
|
return false;
|
|
19
24
|
}
|
|
20
|
-
|
|
25
|
+
if (!target) {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
return this.innerMath.every(pair => {
|
|
21
29
|
const baseVal = (0, helpers_js_1._getInnerValue)(base, pair.key);
|
|
22
30
|
const targetVal = (0, helpers_js_1._getInnerValue)(target, pair.key);
|
|
23
31
|
return pair.ops.contains(baseVal, targetVal);
|
|
24
32
|
});
|
|
25
33
|
}
|
|
26
34
|
inverse(o) {
|
|
27
|
-
return (0, helpers_js_1.doOps)(this.
|
|
35
|
+
return (0, helpers_js_1.doOps)(this.innerMath, o, (ops, val) => ops.inverse(val));
|
|
28
36
|
}
|
|
29
37
|
abs(o, options) {
|
|
30
|
-
|
|
38
|
+
if (!o) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
return (0, helpers_js_1.doOps)(this.innerMath, o, (ops, val) => ops.abs(val, options));
|
|
31
42
|
}
|
|
32
43
|
round(o, options) {
|
|
33
|
-
|
|
44
|
+
if (!o) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
return (0, helpers_js_1.doOps)(this.innerMath, o, (ops, val) => ops.round(val, options));
|
|
34
48
|
}
|
|
35
49
|
add(o1, o2) {
|
|
36
|
-
|
|
37
|
-
return this.getEmpty();
|
|
38
|
-
}
|
|
39
|
-
return (0, helpers_js_1.doOps)(this._math, o1, (ops, val, key) => ops.add(val, (0, helpers_js_1._getInnerValue)(o2, key)));
|
|
50
|
+
return (0, helpers_js_1.doOps)(this.innerMath, o1, (ops, val, key) => ops.add(val, (0, helpers_js_1._getInnerValue)(o2, key)));
|
|
40
51
|
}
|
|
41
52
|
subtract(base, amount) {
|
|
42
|
-
return (0, helpers_js_1.doOps)(this.
|
|
53
|
+
return (0, helpers_js_1.doOps)(this.innerMath, base, (ops, val, key) => ops.subtract(val, (0, helpers_js_1._getInnerValue)(amount, key)));
|
|
43
54
|
}
|
|
44
55
|
multiply(o1, o2) {
|
|
45
|
-
return (0, helpers_js_1.doOps)(this.
|
|
56
|
+
return (0, helpers_js_1.doOps)(this.innerMath, o1, (ops, val, key) => ops.multiply(val, (0, helpers_js_1._getInnerValue)(o2, key)));
|
|
46
57
|
}
|
|
47
58
|
div(o1, o2) {
|
|
48
59
|
if (this.isEmpty(o1)) {
|
|
49
|
-
return 0;
|
|
60
|
+
return typeof o2 === 'number' ? this.getEmpty() : 0;
|
|
61
|
+
}
|
|
62
|
+
// Scalar division - divide each child by the scalar
|
|
63
|
+
if (typeof o2 === 'number') {
|
|
64
|
+
if (o2 === 0) {
|
|
65
|
+
return this.getEmpty(); // Division by zero returns empty
|
|
66
|
+
}
|
|
67
|
+
return (0, helpers_js_1.doOps)(this.innerMath, o1, (ops, val) => ops.div(val, o2));
|
|
50
68
|
}
|
|
51
69
|
const checkRight = (val, getIsEmpty) => {
|
|
52
|
-
return
|
|
70
|
+
return getIsEmpty(val);
|
|
53
71
|
};
|
|
54
72
|
if (checkRight(o2, v => this.isEmpty(v))) {
|
|
55
|
-
return Number.POSITIVE_INFINITY;
|
|
73
|
+
return this.returnInfinityOnDivByEmpty ? Number.POSITIVE_INFINITY : 0;
|
|
56
74
|
}
|
|
57
|
-
const results = this.
|
|
75
|
+
const results = this.innerMath.map(pair => {
|
|
58
76
|
const left = (0, helpers_js_1._getInnerValue)(o1, pair.key);
|
|
59
|
-
if (pair.ops.isEmpty(left)) {
|
|
60
|
-
return 0;
|
|
61
|
-
}
|
|
62
77
|
const right = (0, helpers_js_1._getInnerValue)(o2, pair.key);
|
|
78
|
+
// Skip this field if right side is empty (can't divide by empty)
|
|
63
79
|
if (checkRight(right, v => pair.ops.isEmpty(v))) {
|
|
64
|
-
return
|
|
80
|
+
return null; // Mark as no valid division
|
|
65
81
|
}
|
|
82
|
+
// Perform division - if left is empty/zero, result will be 0
|
|
66
83
|
return pair.ops.div(left, right);
|
|
67
|
-
}).filter(
|
|
84
|
+
}).filter((val) => val !== null); // Filter out null markers, keep zeros
|
|
68
85
|
return results.length ? Math.min(...results) : 0;
|
|
69
86
|
}
|
|
70
87
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"math.composite.js","sourceRoot":"","sources":["../../../../src/math/object/math.composite.ts"],"names":[],"mappings":";;;AAEA,6CAAqD;AACrD,yDAAwD;AAIxD,MAAa,mBAAyC,SAAQ,qCAAqB;
|
|
1
|
+
{"version":3,"file":"math.composite.js","sourceRoot":"","sources":["../../../../src/math/object/math.composite.ts"],"names":[],"mappings":"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"}
|
package/cjs/math/object/math.js
CHANGED
|
@@ -5,6 +5,16 @@ const helpers_js_1 = require("./helpers.js");
|
|
|
5
5
|
const ops_js_1 = require("./ops.js");
|
|
6
6
|
const DELETE = 'delete';
|
|
7
7
|
class ObjectMath extends ops_js_1.ObjectOps {
|
|
8
|
+
returnInfinityOnDivByEmpty = false;
|
|
9
|
+
divisionMethod = 'floor';
|
|
10
|
+
useInfinityOnDivByEmpty(enable) {
|
|
11
|
+
this.returnInfinityOnDivByEmpty = enable;
|
|
12
|
+
return this;
|
|
13
|
+
}
|
|
14
|
+
useDivisionMethod(method) {
|
|
15
|
+
this.divisionMethod = method;
|
|
16
|
+
return this;
|
|
17
|
+
}
|
|
8
18
|
getTotal(o) {
|
|
9
19
|
let sum = 0;
|
|
10
20
|
if (o) {
|
|
@@ -27,31 +37,46 @@ class ObjectMath extends ops_js_1.ObjectOps {
|
|
|
27
37
|
}
|
|
28
38
|
div(o1, o2) {
|
|
29
39
|
if (!o1 || !o2) {
|
|
30
|
-
return 0;
|
|
40
|
+
return this.returnInfinityOnDivByEmpty ? Number.POSITIVE_INFINITY : 0;
|
|
31
41
|
}
|
|
32
42
|
if (typeof o2 === 'number') {
|
|
33
43
|
const res = {};
|
|
34
44
|
Object.keys(o1).forEach(key => {
|
|
35
45
|
const kk = key;
|
|
36
46
|
const ov = o1[kk];
|
|
37
|
-
res[kk] =
|
|
47
|
+
res[kk] = this.getDivisionResult(ov, o2);
|
|
38
48
|
});
|
|
39
49
|
return res;
|
|
40
50
|
}
|
|
41
51
|
let min = null;
|
|
52
|
+
let hasValidDivisor = false;
|
|
42
53
|
Object.keys(o2).forEach(key => {
|
|
43
54
|
const kk = key;
|
|
44
|
-
const
|
|
45
|
-
if (!
|
|
46
|
-
return;
|
|
55
|
+
const divisor = o2[kk];
|
|
56
|
+
if (!divisor) {
|
|
57
|
+
return; // Skip zero divisors
|
|
58
|
+
}
|
|
59
|
+
// Only consider keys that exist in both objects
|
|
60
|
+
const dividend = o1[kk];
|
|
61
|
+
if (dividend === undefined) {
|
|
62
|
+
return; // Skip keys that don't exist in dividend
|
|
47
63
|
}
|
|
48
|
-
|
|
49
|
-
const c =
|
|
64
|
+
hasValidDivisor = true;
|
|
65
|
+
const c = this.getDivisionResult(dividend, divisor);
|
|
50
66
|
if (min == null || c < min) {
|
|
51
67
|
min = c;
|
|
52
68
|
}
|
|
53
69
|
});
|
|
54
|
-
|
|
70
|
+
// If no valid divisors found, treat as division by empty/zero
|
|
71
|
+
if (!hasValidDivisor) {
|
|
72
|
+
return this.returnInfinityOnDivByEmpty ? Number.POSITIVE_INFINITY : 0;
|
|
73
|
+
}
|
|
74
|
+
const result = min ?? 0;
|
|
75
|
+
// Return Infinity only if configured to do so
|
|
76
|
+
if (!Number.isFinite(result) && !this.returnInfinityOnDivByEmpty) {
|
|
77
|
+
return 0;
|
|
78
|
+
}
|
|
79
|
+
return result;
|
|
55
80
|
}
|
|
56
81
|
process(o, processor) {
|
|
57
82
|
if (!o) {
|
|
@@ -119,6 +144,23 @@ class ObjectMath extends ops_js_1.ObjectOps {
|
|
|
119
144
|
multiply(c1, c2) {
|
|
120
145
|
return this.calc(c1, c2, (n1, n2) => (n1 || 0) * (n2 || 0));
|
|
121
146
|
}
|
|
147
|
+
getDivisionResult(dividend, divisor) {
|
|
148
|
+
let result = dividend / divisor;
|
|
149
|
+
switch (this.divisionMethod) {
|
|
150
|
+
case 'floor':
|
|
151
|
+
result = Math.floor(result);
|
|
152
|
+
break;
|
|
153
|
+
case 'ceil':
|
|
154
|
+
result = Math.ceil(result);
|
|
155
|
+
break;
|
|
156
|
+
case 'round':
|
|
157
|
+
result = Math.round(result);
|
|
158
|
+
break;
|
|
159
|
+
default:
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
return result;
|
|
163
|
+
}
|
|
122
164
|
}
|
|
123
165
|
exports.ObjectMath = ObjectMath;
|
|
124
166
|
//# sourceMappingURL=math.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"math.js","sourceRoot":"","sources":["../../../../src/math/object/math.ts"],"names":[],"mappings":";;;AAEA,6CAAyC;AACzC,qCAAqC;AAKrC,MAAM,MAAM,GAAgB,QAAQ,CAAC;AAErC,MAAa,UAA6B,SAAQ,kBAAY;
|
|
1
|
+
{"version":3,"file":"math.js","sourceRoot":"","sources":["../../../../src/math/object/math.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,9 +4,9 @@ exports.CompositeObjectOps = void 0;
|
|
|
4
4
|
const helpers_js_1 = require("./helpers.js");
|
|
5
5
|
class CompositeObjectOps {
|
|
6
6
|
Empty;
|
|
7
|
-
|
|
7
|
+
innerOps;
|
|
8
8
|
constructor(innerOps) {
|
|
9
|
-
this.
|
|
9
|
+
this.innerOps = Object.entries(innerOps)
|
|
10
10
|
.map(pair => {
|
|
11
11
|
const result = {
|
|
12
12
|
key: pair[0],
|
|
@@ -17,16 +17,16 @@ class CompositeObjectOps {
|
|
|
17
17
|
this.Empty = this.getEmpty();
|
|
18
18
|
}
|
|
19
19
|
isEmpty(o) {
|
|
20
|
-
return !o || this.
|
|
20
|
+
return !o || this.innerOps.every(op => op.ops.isEmpty((0, helpers_js_1._getInnerValue)(o, op.key)));
|
|
21
21
|
}
|
|
22
22
|
getEmpty() {
|
|
23
|
-
return (0, helpers_js_1.doOps)(this.
|
|
23
|
+
return (0, helpers_js_1.doOps)(this.innerOps, null, ops => ops.getEmpty());
|
|
24
24
|
}
|
|
25
25
|
clone(o) {
|
|
26
|
-
return (0, helpers_js_1.doOps)(this.
|
|
26
|
+
return (0, helpers_js_1.doOps)(this.innerOps, o);
|
|
27
27
|
}
|
|
28
28
|
isValid(o) {
|
|
29
|
-
return o != null && this.
|
|
29
|
+
return o != null && this.innerOps.every(op => op.ops.isValid((0, helpers_js_1._getInnerValue)(o, op.key)));
|
|
30
30
|
}
|
|
31
31
|
isEquals(a, b) {
|
|
32
32
|
if (!a && !b) {
|
|
@@ -35,10 +35,10 @@ class CompositeObjectOps {
|
|
|
35
35
|
if (!a || !b) {
|
|
36
36
|
return false;
|
|
37
37
|
}
|
|
38
|
-
return this.
|
|
38
|
+
return this.innerOps.every(pair => pair.ops.isEquals((0, helpers_js_1._getInnerValue)(a, pair.key), (0, helpers_js_1._getInnerValue)(b, pair.key)));
|
|
39
39
|
}
|
|
40
40
|
assign(to, other) {
|
|
41
|
-
this.
|
|
41
|
+
this.innerOps.forEach(pair => {
|
|
42
42
|
const val = (0, helpers_js_1._getInnerValue)(other, pair.key);
|
|
43
43
|
if (val !== undefined) {
|
|
44
44
|
to[pair.key] = val;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ops.composite.js","sourceRoot":"","sources":["../../../../src/math/object/ops.composite.ts"],"names":[],"mappings":";;;AAGA,6CAAqD;AAErD,MAAa,kBAAkB;IAClB,KAAK,CAAc;
|
|
1
|
+
{"version":3,"file":"ops.composite.js","sourceRoot":"","sources":["../../../../src/math/object/ops.composite.ts"],"names":[],"mappings":";;;AAGA,6CAAqD;AAErD,MAAa,kBAAkB;IAClB,KAAK,CAAc;IAET,QAAQ,CAAe;IAE1C,YAAY,QAAwB;QAEhC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;aACnC,GAAG,CAAC,IAAI,CAAC,EAAE;YACR,MAAM,MAAM,GAAe;gBACvB,GAAG,EAAE,IAAI,CAAC,CAAC,CAAS;gBACpB,GAAG,EAAE,IAAI,CAAC,CAAC,CAAwB;aACtC,CAAC;YACF,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC,CAAC;QAEP,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAED,OAAO,CAAC,CAA4B;QAChC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAA,2BAAc,EAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,QAAQ;QACJ,OAAO,IAAA,kBAAK,EAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,CAA4B;QAC9B,OAAO,IAAA,kBAAK,EAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,CAAC,CAA4B;QAChC,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAA,2BAAc,EAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED,QAAQ,CAAC,CAA4B,EAAE,CAA4B;QAC/D,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAChD,IAAA,2BAAc,EAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAC3B,IAAA,2BAAc,EAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAC9B,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,EAAK,EAAE,KAAgC;QAC1C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACzB,MAAM,GAAG,GAAG,IAAA,2BAAc,EAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACpB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YACvB,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAxDD,gDAwDC"}
|
|
@@ -1,23 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TasksQueue = void 0;
|
|
4
|
+
const manualPromise_js_1 = require("../../async/manualPromise.js");
|
|
4
5
|
class TasksQueue {
|
|
5
6
|
limit;
|
|
6
7
|
_items = [];
|
|
7
8
|
_running = 0;
|
|
8
9
|
_logger = null;
|
|
9
|
-
|
|
10
|
+
_delayBetweenTasks;
|
|
11
|
+
_onTaskError;
|
|
12
|
+
_delayedTasks = new Set();
|
|
13
|
+
constructor(limit, options) {
|
|
10
14
|
this.limit = limit;
|
|
11
15
|
if (!limit || limit < 0) {
|
|
12
16
|
throw new Error('TasksQueue: limit should be a positive number');
|
|
13
17
|
}
|
|
18
|
+
this._delayBetweenTasks = options?.delayBetweenTasks ?? 0;
|
|
19
|
+
this._onTaskError = options?.onTaskError;
|
|
14
20
|
}
|
|
15
21
|
get isFull() { return this._running >= this.limit; }
|
|
16
22
|
get running() { return this._running; }
|
|
23
|
+
/** Number of tasks waiting in the queue (not including currently running) */
|
|
24
|
+
get pending() { return this._items.length; }
|
|
17
25
|
addLogger(logger) {
|
|
18
26
|
this._logger = logger;
|
|
19
27
|
return this;
|
|
20
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Enqueue a task factory to run when a slot is available.
|
|
31
|
+
*
|
|
32
|
+
* **Note:** When `onTaskError` is provided in the constructor options and the factory throws,
|
|
33
|
+
* the error is passed to `onTaskError` and the returned promise resolves with `undefined`.
|
|
34
|
+
*/
|
|
21
35
|
enqueue(factory, name) {
|
|
22
36
|
if (typeof factory !== 'function') {
|
|
23
37
|
throw new Error('Invalid arg: factory not a function');
|
|
@@ -25,39 +39,71 @@ class TasksQueue {
|
|
|
25
39
|
if (this.isFull) {
|
|
26
40
|
const item = {
|
|
27
41
|
factory,
|
|
28
|
-
|
|
42
|
+
promise: (0, manualPromise_js_1.createManualPromise)(),
|
|
29
43
|
name,
|
|
30
44
|
};
|
|
31
|
-
const waitPromise = new Promise((resolve, reject) => {
|
|
32
|
-
item.finish = async (res) => {
|
|
33
|
-
try {
|
|
34
|
-
const rr = await res;
|
|
35
|
-
resolve(rr);
|
|
36
|
-
return rr;
|
|
37
|
-
}
|
|
38
|
-
catch (err) {
|
|
39
|
-
reject(err);
|
|
40
|
-
throw err;
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
});
|
|
44
45
|
this._items.push(item);
|
|
45
|
-
return
|
|
46
|
+
return item.promise.promise;
|
|
46
47
|
}
|
|
47
|
-
return this._runFactory(factory)
|
|
48
|
+
return this._runFactory(factory, name)
|
|
49
|
+
.then(res => res.ok === true ? res.result : undefined);
|
|
50
|
+
}
|
|
51
|
+
/** Enqueue a task to run after `delay` ms. Returns a promise and a cancel function. */
|
|
52
|
+
enqueueDelayed(factory, delay, name) {
|
|
53
|
+
const mp = (0, manualPromise_js_1.createManualPromise)();
|
|
54
|
+
let started = false;
|
|
55
|
+
const timer = setTimeout(() => {
|
|
56
|
+
started = true;
|
|
57
|
+
this._delayedTasks.delete(task);
|
|
58
|
+
this.enqueue(factory, name).then(result => mp.resolve(result), err => mp.reject(err));
|
|
59
|
+
}, delay);
|
|
60
|
+
const cancel = () => {
|
|
61
|
+
if (!started) {
|
|
62
|
+
clearTimeout(timer);
|
|
63
|
+
this._delayedTasks.delete(task);
|
|
64
|
+
mp.reject(new Error('Cancelled'));
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
const task = { promise: mp.promise, cancel };
|
|
68
|
+
this._delayedTasks.add(task);
|
|
69
|
+
return task;
|
|
70
|
+
}
|
|
71
|
+
/** Remove all pending tasks from the queue. Does not cancel running tasks. Also cancels all delayed enqueues.
|
|
72
|
+
* Pending enqueue() promises are rejected with a 'TasksQueue cleared' error so callers don't hang indefinitely.
|
|
73
|
+
* Delayed tasks are cancelled and their promises are rejected with a 'Cancelled' error. */
|
|
74
|
+
clear() {
|
|
75
|
+
const pending = this._items.splice(0);
|
|
76
|
+
if (pending.length > 0) {
|
|
77
|
+
const clearError = new Error('TasksQueue cleared');
|
|
78
|
+
for (const item of pending) {
|
|
79
|
+
item.promise.reject(clearError);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const delayed = [...this._delayedTasks];
|
|
83
|
+
for (const task of delayed) {
|
|
84
|
+
task.cancel();
|
|
85
|
+
}
|
|
86
|
+
this._delayedTasks.clear();
|
|
48
87
|
}
|
|
49
88
|
_runFactory = async (factory, name) => {
|
|
50
89
|
this._running++;
|
|
51
90
|
try {
|
|
52
91
|
const result = await factory();
|
|
53
|
-
return result;
|
|
92
|
+
return { ok: true, result };
|
|
54
93
|
}
|
|
55
94
|
catch (err) {
|
|
95
|
+
if (this._onTaskError) {
|
|
96
|
+
this._onTaskError(err, name || factory.name || undefined);
|
|
97
|
+
return { ok: false };
|
|
98
|
+
}
|
|
56
99
|
this._logger?.warn(`Factory "${name || factory.name || '<unknown>'}" thrown. Rethrowing...`);
|
|
57
100
|
throw err;
|
|
58
101
|
}
|
|
59
102
|
finally {
|
|
60
103
|
this._running--;
|
|
104
|
+
if (this._delayBetweenTasks > 0 && this._items.length > 0) {
|
|
105
|
+
await new Promise(resolve => setTimeout(resolve, this._delayBetweenTasks));
|
|
106
|
+
}
|
|
61
107
|
this._tryRunNext();
|
|
62
108
|
}
|
|
63
109
|
};
|
|
@@ -66,10 +112,16 @@ class TasksQueue {
|
|
|
66
112
|
return;
|
|
67
113
|
}
|
|
68
114
|
const next = this._items.shift();
|
|
69
|
-
if (!next || !next.
|
|
115
|
+
if (!next || !next.factory || !next.promise) {
|
|
70
116
|
return;
|
|
71
117
|
}
|
|
72
|
-
|
|
118
|
+
try {
|
|
119
|
+
const res = await this._runFactory(next.factory, next.name);
|
|
120
|
+
next.promise.resolve(res.ok === true ? res.result : undefined);
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
next.promise.reject(err);
|
|
124
|
+
}
|
|
73
125
|
};
|
|
74
126
|
}
|
|
75
127
|
exports.TasksQueue = TasksQueue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../../src/structures/queue/tasks.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../../src/structures/queue/tasks.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ exports.ValidatorsRegExps = {
|
|
|
21
21
|
creditCardNumber: /^\d+$/,
|
|
22
22
|
expiryDateCard: /^\d+$/,
|
|
23
23
|
cvv: /^\d+$/,
|
|
24
|
-
website: /^(https?:\/\/)?(
|
|
24
|
+
website: /^(https?:\/\/)?([\p{L}\p{N}]+(-[\p{L}\p{N}]+)*\.)+\p{L}{2,}(:[0-9]+)?(\/.*)?$/iu,
|
|
25
25
|
linkedin: /^(https?:\/\/)?([a-z]+\d*[a-z]*\.)?linkedin\.com\/.*$/i,
|
|
26
26
|
};
|
|
27
27
|
exports.Validators = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/validation/validators.ts"],"names":[],"mappings":";;;;AAAA,4EAAyC;AACzC,+DAAyD;AAE5C,QAAA,iBAAiB,GAAG;IAC7B,wCAAwC;IACxC,6CAA6C;IAC7C,IAAI,EAAE,qCAAqC;IAC3C,cAAc,EAAE,iBAAiB;IACjC,KAAK,EAAE,kEAAkE;IAEzE,+CAA+C;IAC/C,mCAAmC;IACnC,sDAAsD;IACtD,mDAAmD;IACnD,QAAQ,EAAE,kDAAkD;IAE5D,WAAW,EAAE,aAAa;IAE1B,qCAAqC;IACrC,SAAS,EAAE,OAAO;IAClB,gBAAgB,EAAE,OAAO;IACzB,cAAc,EAAE,OAAO;IACvB,GAAG,EAAE,OAAO;IACZ,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/validation/validators.ts"],"names":[],"mappings":";;;;AAAA,4EAAyC;AACzC,+DAAyD;AAE5C,QAAA,iBAAiB,GAAG;IAC7B,wCAAwC;IACxC,6CAA6C;IAC7C,IAAI,EAAE,qCAAqC;IAC3C,cAAc,EAAE,iBAAiB;IACjC,KAAK,EAAE,kEAAkE;IAEzE,+CAA+C;IAC/C,mCAAmC;IACnC,sDAAsD;IACtD,mDAAmD;IACnD,QAAQ,EAAE,kDAAkD;IAE5D,WAAW,EAAE,aAAa;IAE1B,qCAAqC;IACrC,SAAS,EAAE,OAAO;IAClB,gBAAgB,EAAE,OAAO;IACzB,cAAc,EAAE,OAAO;IACvB,GAAG,EAAE,OAAO;IACZ,OAAO,EAAE,iFAAiF;IAC1F,QAAQ,EAAE,wDAAwD;CACrE,CAAC;AAEW,QAAA,UAAU,GAAG;IAEtB,QAAQ,EAAE,CAAa,GAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,sCAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,sCAAgB,CAAC,gBAAgB;IAEjG,SAAS,EAAE,CAAa,GAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,sCAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,sCAAgB,CAAC,SAAS;IAC3F,QAAQ,EAAE,CAAa,GAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,sCAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,sCAAgB,CAAC,QAAQ;IAEzF,QAAQ,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,yBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,sCAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,sCAAgB,CAAC,iBAAiB;IAC/H,WAAW,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,yBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,sCAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,sCAAgB,CAAC,kBAAkB;IACtI,KAAK,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,yBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,sCAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,sCAAgB,CAAC,kBAAkB;IACvH,QAAQ,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,yBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,sCAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,sCAAgB,CAAC,qBAAqB;IAChI,SAAS,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,yBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,sCAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,sCAAgB,CAAC,SAAS;IACtH,gBAAgB,EAAE,CAAC,GAAW,EAAE,EAAE;QAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,yBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,uBAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC3H,OAAO,KAAK,CAAC,CAAC,CAAC,sCAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,sCAAgB,CAAC,uBAAuB,CAAC;IACpF,CAAC;IACD,oBAAoB,EAAE,CAAC,GAAW,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,CAAC,yBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;QACzF,OAAO,KAAK,CAAC,CAAC,CAAC,sCAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,sCAAgB,CAAC,iCAAiC,CAAC;IAC9F,CAAC;IACD,aAAa,EAAE,CAAC,GAAW,EAAE,EAAE,CAC3B,CAAC,yBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,sCAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,sCAAgB,CAAC,0BAA0B;IACjJ,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,yBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,sCAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,sCAAgB,CAAC,OAAO;IAChH,QAAQ,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,yBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,sCAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,sCAAgB,CAAC,QAAQ;IAEnH,KAAK,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,sCAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,sCAAgB,CAAC,aAAa,CAAC;CACxH,CAAC"}
|
package/esm/dates/tz.js
CHANGED
package/esm/dates/tz.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tz.js","sourceRoot":"","sources":["../../../src/dates/tz.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,MAAM,KAAW,SAAS,CAyDzB;AAzDD,WAAiB,SAAS;IAET,iBAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;IAC3D,uBAAa,GAAG,IAAI,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC;IAE5D,+CAA+C;IAC/C;;;;;;OAMG;IACH,SAAgB,SAAS,CAAC,QAAgB,EAAE,IAAoB;QAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;YAC3C,YAAY,EAAE,YAAY;YAC1B,QAAQ;SACX,CAAC;aACG,aAAa,CAAC,IAAI,CAAC;aACnB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC;YACvC,EAAE,KAAK,CAAC;QAEZ,MAAM,MAAM,GAAG,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,CAAC,CAAC;QACb,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,YAAY,eAAe,QAAQ,EAAE,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;QACzC,IAAI,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,CAAC,CAAC;QACjB,CAAC;QAED,OAAO,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"tz.js","sourceRoot":"","sources":["../../../src/dates/tz.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,MAAM,KAAW,SAAS,CAyDzB;AAzDD,WAAiB,SAAS;IAET,iBAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;IAC3D,uBAAa,GAAG,IAAI,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC;IAE5D,+CAA+C;IAC/C;;;;;;OAMG;IACH,SAAgB,SAAS,CAAC,QAAgB,EAAE,IAAoB;QAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;YAC3C,YAAY,EAAE,YAAY;YAC1B,QAAQ;SACX,CAAC;aACG,aAAa,CAAC,IAAI,CAAC;aACnB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC;YACvC,EAAE,KAAK,CAAC;QAEZ,MAAM,MAAM,GAAG,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,CAAC,CAAC;QACb,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,YAAY,eAAe,QAAQ,EAAE,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;QACzC,IAAI,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,CAAC,CAAC;QACjB,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,CAAC;IACvB,CAAC;IA7Be,mBAAS,YA6BxB,CAAA;IAED;;;;MAIE;IACF,SAAgB,eAAe,CAAC,IAAU,EAAE,EAAmB;QAC3D,MAAM,MAAM,GAAG,OAAO,EAAE,KAAK,QAAQ;YACjC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAE1B,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC9D,OAAO,OAAO,CAAC;IACnB,CAAC;IAPe,yBAAe,kBAO9B,CAAA;AACL,CAAC,EAzDgB,SAAS,KAAT,SAAS,QAyDzB"}
|
|
@@ -1,67 +1,84 @@
|
|
|
1
1
|
import { _getInnerValue, doOps } from './helpers.js';
|
|
2
2
|
import { CompositeObjectOps } from './ops.composite.js';
|
|
3
3
|
export class CompositeObjectMath extends CompositeObjectOps {
|
|
4
|
-
|
|
4
|
+
innerMath;
|
|
5
|
+
returnInfinityOnDivByEmpty = false;
|
|
5
6
|
constructor(innerMath) {
|
|
6
7
|
super(innerMath);
|
|
7
|
-
this.
|
|
8
|
+
this.innerMath = Object.entries(innerMath)
|
|
8
9
|
.map(pair => ({
|
|
9
10
|
key: pair[0],
|
|
10
11
|
ops: pair[1],
|
|
11
12
|
}));
|
|
12
13
|
}
|
|
14
|
+
useInfinityOnDivByEmpty(enable) {
|
|
15
|
+
this.returnInfinityOnDivByEmpty = enable;
|
|
16
|
+
return this;
|
|
17
|
+
}
|
|
13
18
|
contains(base, target) {
|
|
14
|
-
if (!base
|
|
19
|
+
if (!base) {
|
|
15
20
|
return false;
|
|
16
21
|
}
|
|
17
|
-
|
|
22
|
+
if (!target) {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
return this.innerMath.every(pair => {
|
|
18
26
|
const baseVal = _getInnerValue(base, pair.key);
|
|
19
27
|
const targetVal = _getInnerValue(target, pair.key);
|
|
20
28
|
return pair.ops.contains(baseVal, targetVal);
|
|
21
29
|
});
|
|
22
30
|
}
|
|
23
31
|
inverse(o) {
|
|
24
|
-
return doOps(this.
|
|
32
|
+
return doOps(this.innerMath, o, (ops, val) => ops.inverse(val));
|
|
25
33
|
}
|
|
26
34
|
abs(o, options) {
|
|
27
|
-
|
|
35
|
+
if (!o) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
return doOps(this.innerMath, o, (ops, val) => ops.abs(val, options));
|
|
28
39
|
}
|
|
29
40
|
round(o, options) {
|
|
30
|
-
|
|
41
|
+
if (!o) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
return doOps(this.innerMath, o, (ops, val) => ops.round(val, options));
|
|
31
45
|
}
|
|
32
46
|
add(o1, o2) {
|
|
33
|
-
|
|
34
|
-
return this.getEmpty();
|
|
35
|
-
}
|
|
36
|
-
return doOps(this._math, o1, (ops, val, key) => ops.add(val, _getInnerValue(o2, key)));
|
|
47
|
+
return doOps(this.innerMath, o1, (ops, val, key) => ops.add(val, _getInnerValue(o2, key)));
|
|
37
48
|
}
|
|
38
49
|
subtract(base, amount) {
|
|
39
|
-
return doOps(this.
|
|
50
|
+
return doOps(this.innerMath, base, (ops, val, key) => ops.subtract(val, _getInnerValue(amount, key)));
|
|
40
51
|
}
|
|
41
52
|
multiply(o1, o2) {
|
|
42
|
-
return doOps(this.
|
|
53
|
+
return doOps(this.innerMath, o1, (ops, val, key) => ops.multiply(val, _getInnerValue(o2, key)));
|
|
43
54
|
}
|
|
44
55
|
div(o1, o2) {
|
|
45
56
|
if (this.isEmpty(o1)) {
|
|
46
|
-
return 0;
|
|
57
|
+
return typeof o2 === 'number' ? this.getEmpty() : 0;
|
|
58
|
+
}
|
|
59
|
+
// Scalar division - divide each child by the scalar
|
|
60
|
+
if (typeof o2 === 'number') {
|
|
61
|
+
if (o2 === 0) {
|
|
62
|
+
return this.getEmpty(); // Division by zero returns empty
|
|
63
|
+
}
|
|
64
|
+
return doOps(this.innerMath, o1, (ops, val) => ops.div(val, o2));
|
|
47
65
|
}
|
|
48
66
|
const checkRight = (val, getIsEmpty) => {
|
|
49
|
-
return
|
|
67
|
+
return getIsEmpty(val);
|
|
50
68
|
};
|
|
51
69
|
if (checkRight(o2, v => this.isEmpty(v))) {
|
|
52
|
-
return Number.POSITIVE_INFINITY;
|
|
70
|
+
return this.returnInfinityOnDivByEmpty ? Number.POSITIVE_INFINITY : 0;
|
|
53
71
|
}
|
|
54
|
-
const results = this.
|
|
72
|
+
const results = this.innerMath.map(pair => {
|
|
55
73
|
const left = _getInnerValue(o1, pair.key);
|
|
56
|
-
if (pair.ops.isEmpty(left)) {
|
|
57
|
-
return 0;
|
|
58
|
-
}
|
|
59
74
|
const right = _getInnerValue(o2, pair.key);
|
|
75
|
+
// Skip this field if right side is empty (can't divide by empty)
|
|
60
76
|
if (checkRight(right, v => pair.ops.isEmpty(v))) {
|
|
61
|
-
return
|
|
77
|
+
return null; // Mark as no valid division
|
|
62
78
|
}
|
|
79
|
+
// Perform division - if left is empty/zero, result will be 0
|
|
63
80
|
return pair.ops.div(left, right);
|
|
64
|
-
}).filter(
|
|
81
|
+
}).filter((val) => val !== null); // Filter out null markers, keep zeros
|
|
65
82
|
return results.length ? Math.min(...results) : 0;
|
|
66
83
|
}
|
|
67
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"math.composite.js","sourceRoot":"","sources":["../../../../src/math/object/math.composite.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIxD,MAAM,OAAO,mBAAyC,SAAQ,kBAAqB;
|
|
1
|
+
{"version":3,"file":"math.composite.js","sourceRoot":"","sources":["../../../../src/math/object/math.composite.ts"],"names":[],"mappings":"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"}
|
package/esm/math/object/math.js
CHANGED
|
@@ -2,6 +2,16 @@ import { _getValue } from './helpers.js';
|
|
|
2
2
|
import { ObjectOps } from './ops.js';
|
|
3
3
|
const DELETE = 'delete';
|
|
4
4
|
export class ObjectMath extends ObjectOps {
|
|
5
|
+
returnInfinityOnDivByEmpty = false;
|
|
6
|
+
divisionMethod = 'floor';
|
|
7
|
+
useInfinityOnDivByEmpty(enable) {
|
|
8
|
+
this.returnInfinityOnDivByEmpty = enable;
|
|
9
|
+
return this;
|
|
10
|
+
}
|
|
11
|
+
useDivisionMethod(method) {
|
|
12
|
+
this.divisionMethod = method;
|
|
13
|
+
return this;
|
|
14
|
+
}
|
|
5
15
|
getTotal(o) {
|
|
6
16
|
let sum = 0;
|
|
7
17
|
if (o) {
|
|
@@ -24,31 +34,46 @@ export class ObjectMath extends ObjectOps {
|
|
|
24
34
|
}
|
|
25
35
|
div(o1, o2) {
|
|
26
36
|
if (!o1 || !o2) {
|
|
27
|
-
return 0;
|
|
37
|
+
return this.returnInfinityOnDivByEmpty ? Number.POSITIVE_INFINITY : 0;
|
|
28
38
|
}
|
|
29
39
|
if (typeof o2 === 'number') {
|
|
30
40
|
const res = {};
|
|
31
41
|
Object.keys(o1).forEach(key => {
|
|
32
42
|
const kk = key;
|
|
33
43
|
const ov = o1[kk];
|
|
34
|
-
res[kk] =
|
|
44
|
+
res[kk] = this.getDivisionResult(ov, o2);
|
|
35
45
|
});
|
|
36
46
|
return res;
|
|
37
47
|
}
|
|
38
48
|
let min = null;
|
|
49
|
+
let hasValidDivisor = false;
|
|
39
50
|
Object.keys(o2).forEach(key => {
|
|
40
51
|
const kk = key;
|
|
41
|
-
const
|
|
42
|
-
if (!
|
|
43
|
-
return;
|
|
52
|
+
const divisor = o2[kk];
|
|
53
|
+
if (!divisor) {
|
|
54
|
+
return; // Skip zero divisors
|
|
55
|
+
}
|
|
56
|
+
// Only consider keys that exist in both objects
|
|
57
|
+
const dividend = o1[kk];
|
|
58
|
+
if (dividend === undefined) {
|
|
59
|
+
return; // Skip keys that don't exist in dividend
|
|
44
60
|
}
|
|
45
|
-
|
|
46
|
-
const c =
|
|
61
|
+
hasValidDivisor = true;
|
|
62
|
+
const c = this.getDivisionResult(dividend, divisor);
|
|
47
63
|
if (min == null || c < min) {
|
|
48
64
|
min = c;
|
|
49
65
|
}
|
|
50
66
|
});
|
|
51
|
-
|
|
67
|
+
// If no valid divisors found, treat as division by empty/zero
|
|
68
|
+
if (!hasValidDivisor) {
|
|
69
|
+
return this.returnInfinityOnDivByEmpty ? Number.POSITIVE_INFINITY : 0;
|
|
70
|
+
}
|
|
71
|
+
const result = min ?? 0;
|
|
72
|
+
// Return Infinity only if configured to do so
|
|
73
|
+
if (!Number.isFinite(result) && !this.returnInfinityOnDivByEmpty) {
|
|
74
|
+
return 0;
|
|
75
|
+
}
|
|
76
|
+
return result;
|
|
52
77
|
}
|
|
53
78
|
process(o, processor) {
|
|
54
79
|
if (!o) {
|
|
@@ -116,5 +141,22 @@ export class ObjectMath extends ObjectOps {
|
|
|
116
141
|
multiply(c1, c2) {
|
|
117
142
|
return this.calc(c1, c2, (n1, n2) => (n1 || 0) * (n2 || 0));
|
|
118
143
|
}
|
|
144
|
+
getDivisionResult(dividend, divisor) {
|
|
145
|
+
let result = dividend / divisor;
|
|
146
|
+
switch (this.divisionMethod) {
|
|
147
|
+
case 'floor':
|
|
148
|
+
result = Math.floor(result);
|
|
149
|
+
break;
|
|
150
|
+
case 'ceil':
|
|
151
|
+
result = Math.ceil(result);
|
|
152
|
+
break;
|
|
153
|
+
case 'round':
|
|
154
|
+
result = Math.round(result);
|
|
155
|
+
break;
|
|
156
|
+
default:
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
return result;
|
|
160
|
+
}
|
|
119
161
|
}
|
|
120
162
|
//# sourceMappingURL=math.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"math.js","sourceRoot":"","sources":["../../../../src/math/object/math.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAKrC,MAAM,MAAM,GAAgB,QAAQ,CAAC;AAErC,MAAM,OAAO,UAA6B,SAAQ,SAAY;
|
|
1
|
+
{"version":3,"file":"math.js","sourceRoot":"","sources":["../../../../src/math/object/math.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { _getInnerValue, doOps } from './helpers.js';
|
|
2
2
|
export class CompositeObjectOps {
|
|
3
3
|
Empty;
|
|
4
|
-
|
|
4
|
+
innerOps;
|
|
5
5
|
constructor(innerOps) {
|
|
6
|
-
this.
|
|
6
|
+
this.innerOps = Object.entries(innerOps)
|
|
7
7
|
.map(pair => {
|
|
8
8
|
const result = {
|
|
9
9
|
key: pair[0],
|
|
@@ -14,16 +14,16 @@ export class CompositeObjectOps {
|
|
|
14
14
|
this.Empty = this.getEmpty();
|
|
15
15
|
}
|
|
16
16
|
isEmpty(o) {
|
|
17
|
-
return !o || this.
|
|
17
|
+
return !o || this.innerOps.every(op => op.ops.isEmpty(_getInnerValue(o, op.key)));
|
|
18
18
|
}
|
|
19
19
|
getEmpty() {
|
|
20
|
-
return doOps(this.
|
|
20
|
+
return doOps(this.innerOps, null, ops => ops.getEmpty());
|
|
21
21
|
}
|
|
22
22
|
clone(o) {
|
|
23
|
-
return doOps(this.
|
|
23
|
+
return doOps(this.innerOps, o);
|
|
24
24
|
}
|
|
25
25
|
isValid(o) {
|
|
26
|
-
return o != null && this.
|
|
26
|
+
return o != null && this.innerOps.every(op => op.ops.isValid(_getInnerValue(o, op.key)));
|
|
27
27
|
}
|
|
28
28
|
isEquals(a, b) {
|
|
29
29
|
if (!a && !b) {
|
|
@@ -32,10 +32,10 @@ export class CompositeObjectOps {
|
|
|
32
32
|
if (!a || !b) {
|
|
33
33
|
return false;
|
|
34
34
|
}
|
|
35
|
-
return this.
|
|
35
|
+
return this.innerOps.every(pair => pair.ops.isEquals(_getInnerValue(a, pair.key), _getInnerValue(b, pair.key)));
|
|
36
36
|
}
|
|
37
37
|
assign(to, other) {
|
|
38
|
-
this.
|
|
38
|
+
this.innerOps.forEach(pair => {
|
|
39
39
|
const val = _getInnerValue(other, pair.key);
|
|
40
40
|
if (val !== undefined) {
|
|
41
41
|
to[pair.key] = val;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ops.composite.js","sourceRoot":"","sources":["../../../../src/math/object/ops.composite.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,OAAO,kBAAkB;IAClB,KAAK,CAAc;
|
|
1
|
+
{"version":3,"file":"ops.composite.js","sourceRoot":"","sources":["../../../../src/math/object/ops.composite.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,OAAO,kBAAkB;IAClB,KAAK,CAAc;IAET,QAAQ,CAAe;IAE1C,YAAY,QAAwB;QAEhC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;aACnC,GAAG,CAAC,IAAI,CAAC,EAAE;YACR,MAAM,MAAM,GAAe;gBACvB,GAAG,EAAE,IAAI,CAAC,CAAC,CAAS;gBACpB,GAAG,EAAE,IAAI,CAAC,CAAC,CAAwB;aACtC,CAAC;YACF,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC,CAAC;QAEP,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAED,OAAO,CAAC,CAA4B;QAChC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,QAAQ;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,CAA4B;QAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,CAAC,CAA4B;QAChC,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED,QAAQ,CAAC,CAA4B,EAAE,CAA4B;QAC/D,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAChD,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAC3B,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAC9B,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,EAAK,EAAE,KAAgC;QAC1C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACzB,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACpB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YACvB,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"}
|
|
@@ -1,20 +1,34 @@
|
|
|
1
|
+
import { createManualPromise } from '../../async/manualPromise.js';
|
|
1
2
|
export class TasksQueue {
|
|
2
3
|
limit;
|
|
3
4
|
_items = [];
|
|
4
5
|
_running = 0;
|
|
5
6
|
_logger = null;
|
|
6
|
-
|
|
7
|
+
_delayBetweenTasks;
|
|
8
|
+
_onTaskError;
|
|
9
|
+
_delayedTasks = new Set();
|
|
10
|
+
constructor(limit, options) {
|
|
7
11
|
this.limit = limit;
|
|
8
12
|
if (!limit || limit < 0) {
|
|
9
13
|
throw new Error('TasksQueue: limit should be a positive number');
|
|
10
14
|
}
|
|
15
|
+
this._delayBetweenTasks = options?.delayBetweenTasks ?? 0;
|
|
16
|
+
this._onTaskError = options?.onTaskError;
|
|
11
17
|
}
|
|
12
18
|
get isFull() { return this._running >= this.limit; }
|
|
13
19
|
get running() { return this._running; }
|
|
20
|
+
/** Number of tasks waiting in the queue (not including currently running) */
|
|
21
|
+
get pending() { return this._items.length; }
|
|
14
22
|
addLogger(logger) {
|
|
15
23
|
this._logger = logger;
|
|
16
24
|
return this;
|
|
17
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Enqueue a task factory to run when a slot is available.
|
|
28
|
+
*
|
|
29
|
+
* **Note:** When `onTaskError` is provided in the constructor options and the factory throws,
|
|
30
|
+
* the error is passed to `onTaskError` and the returned promise resolves with `undefined`.
|
|
31
|
+
*/
|
|
18
32
|
enqueue(factory, name) {
|
|
19
33
|
if (typeof factory !== 'function') {
|
|
20
34
|
throw new Error('Invalid arg: factory not a function');
|
|
@@ -22,39 +36,71 @@ export class TasksQueue {
|
|
|
22
36
|
if (this.isFull) {
|
|
23
37
|
const item = {
|
|
24
38
|
factory,
|
|
25
|
-
|
|
39
|
+
promise: createManualPromise(),
|
|
26
40
|
name,
|
|
27
41
|
};
|
|
28
|
-
const waitPromise = new Promise((resolve, reject) => {
|
|
29
|
-
item.finish = async (res) => {
|
|
30
|
-
try {
|
|
31
|
-
const rr = await res;
|
|
32
|
-
resolve(rr);
|
|
33
|
-
return rr;
|
|
34
|
-
}
|
|
35
|
-
catch (err) {
|
|
36
|
-
reject(err);
|
|
37
|
-
throw err;
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
});
|
|
41
42
|
this._items.push(item);
|
|
42
|
-
return
|
|
43
|
+
return item.promise.promise;
|
|
43
44
|
}
|
|
44
|
-
return this._runFactory(factory)
|
|
45
|
+
return this._runFactory(factory, name)
|
|
46
|
+
.then(res => res.ok === true ? res.result : undefined);
|
|
47
|
+
}
|
|
48
|
+
/** Enqueue a task to run after `delay` ms. Returns a promise and a cancel function. */
|
|
49
|
+
enqueueDelayed(factory, delay, name) {
|
|
50
|
+
const mp = createManualPromise();
|
|
51
|
+
let started = false;
|
|
52
|
+
const timer = setTimeout(() => {
|
|
53
|
+
started = true;
|
|
54
|
+
this._delayedTasks.delete(task);
|
|
55
|
+
this.enqueue(factory, name).then(result => mp.resolve(result), err => mp.reject(err));
|
|
56
|
+
}, delay);
|
|
57
|
+
const cancel = () => {
|
|
58
|
+
if (!started) {
|
|
59
|
+
clearTimeout(timer);
|
|
60
|
+
this._delayedTasks.delete(task);
|
|
61
|
+
mp.reject(new Error('Cancelled'));
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
const task = { promise: mp.promise, cancel };
|
|
65
|
+
this._delayedTasks.add(task);
|
|
66
|
+
return task;
|
|
67
|
+
}
|
|
68
|
+
/** Remove all pending tasks from the queue. Does not cancel running tasks. Also cancels all delayed enqueues.
|
|
69
|
+
* Pending enqueue() promises are rejected with a 'TasksQueue cleared' error so callers don't hang indefinitely.
|
|
70
|
+
* Delayed tasks are cancelled and their promises are rejected with a 'Cancelled' error. */
|
|
71
|
+
clear() {
|
|
72
|
+
const pending = this._items.splice(0);
|
|
73
|
+
if (pending.length > 0) {
|
|
74
|
+
const clearError = new Error('TasksQueue cleared');
|
|
75
|
+
for (const item of pending) {
|
|
76
|
+
item.promise.reject(clearError);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const delayed = [...this._delayedTasks];
|
|
80
|
+
for (const task of delayed) {
|
|
81
|
+
task.cancel();
|
|
82
|
+
}
|
|
83
|
+
this._delayedTasks.clear();
|
|
45
84
|
}
|
|
46
85
|
_runFactory = async (factory, name) => {
|
|
47
86
|
this._running++;
|
|
48
87
|
try {
|
|
49
88
|
const result = await factory();
|
|
50
|
-
return result;
|
|
89
|
+
return { ok: true, result };
|
|
51
90
|
}
|
|
52
91
|
catch (err) {
|
|
92
|
+
if (this._onTaskError) {
|
|
93
|
+
this._onTaskError(err, name || factory.name || undefined);
|
|
94
|
+
return { ok: false };
|
|
95
|
+
}
|
|
53
96
|
this._logger?.warn(`Factory "${name || factory.name || '<unknown>'}" thrown. Rethrowing...`);
|
|
54
97
|
throw err;
|
|
55
98
|
}
|
|
56
99
|
finally {
|
|
57
100
|
this._running--;
|
|
101
|
+
if (this._delayBetweenTasks > 0 && this._items.length > 0) {
|
|
102
|
+
await new Promise(resolve => setTimeout(resolve, this._delayBetweenTasks));
|
|
103
|
+
}
|
|
58
104
|
this._tryRunNext();
|
|
59
105
|
}
|
|
60
106
|
};
|
|
@@ -63,10 +109,16 @@ export class TasksQueue {
|
|
|
63
109
|
return;
|
|
64
110
|
}
|
|
65
111
|
const next = this._items.shift();
|
|
66
|
-
if (!next || !next.
|
|
112
|
+
if (!next || !next.factory || !next.promise) {
|
|
67
113
|
return;
|
|
68
114
|
}
|
|
69
|
-
|
|
115
|
+
try {
|
|
116
|
+
const res = await this._runFactory(next.factory, next.name);
|
|
117
|
+
next.promise.resolve(res.ok === true ? res.result : undefined);
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
next.promise.reject(err);
|
|
121
|
+
}
|
|
70
122
|
};
|
|
71
123
|
}
|
|
72
124
|
//# sourceMappingURL=tasks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../../src/structures/queue/tasks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../../src/structures/queue/tasks.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ export const ValidatorsRegExps = {
|
|
|
17
17
|
creditCardNumber: /^\d+$/,
|
|
18
18
|
expiryDateCard: /^\d+$/,
|
|
19
19
|
cvv: /^\d+$/,
|
|
20
|
-
website: /^(https?:\/\/)?(
|
|
20
|
+
website: /^(https?:\/\/)?([\p{L}\p{N}]+(-[\p{L}\p{N}]+)*\.)+\p{L}{2,}(:[0-9]+)?(\/.*)?$/iu,
|
|
21
21
|
linkedin: /^(https?:\/\/)?([a-z]+\d*[a-z]*\.)?linkedin\.com\/.*$/i,
|
|
22
22
|
};
|
|
23
23
|
export const Validators = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/validation/validators.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC7B,wCAAwC;IACxC,6CAA6C;IAC7C,IAAI,EAAE,qCAAqC;IAC3C,cAAc,EAAE,iBAAiB;IACjC,KAAK,EAAE,kEAAkE;IAEzE,+CAA+C;IAC/C,mCAAmC;IACnC,sDAAsD;IACtD,mDAAmD;IACnD,QAAQ,EAAE,kDAAkD;IAE5D,WAAW,EAAE,aAAa;IAE1B,qCAAqC;IACrC,SAAS,EAAE,OAAO;IAClB,gBAAgB,EAAE,OAAO;IACzB,cAAc,EAAE,OAAO;IACvB,GAAG,EAAE,OAAO;IACZ,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/validation/validators.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
import type { AnyObject, Nullable } from '../../types/index.js';
|
|
2
2
|
import type { DeepReadonly } from '../../types/deep.js';
|
|
3
3
|
import { CompositeObjectOps } from './ops.composite.js';
|
|
4
|
-
import type { AbsOptions, IObjectMath, MathPairsMap, RoundOptions } from './types.js';
|
|
4
|
+
import type { AbsOptions, IObjectMath, MathPair, MathPairsMap, RoundOptions } from './types.js';
|
|
5
5
|
export declare class CompositeObjectMath<T extends AnyObject> extends CompositeObjectOps<T> implements IObjectMath<T> {
|
|
6
|
-
|
|
6
|
+
protected readonly innerMath: MathPair<T>[];
|
|
7
|
+
private returnInfinityOnDivByEmpty;
|
|
7
8
|
constructor(innerMath: MathPairsMap<T>);
|
|
9
|
+
useInfinityOnDivByEmpty(enable: boolean): this;
|
|
8
10
|
contains(base: Nullable<DeepReadonly<T>>, target: Nullable<DeepReadonly<T>>): boolean;
|
|
9
11
|
inverse(o: Nullable<DeepReadonly<T>>): T;
|
|
12
|
+
abs(o: DeepReadonly<T>, options?: AbsOptions): T;
|
|
10
13
|
abs(o: Nullable<DeepReadonly<T>>, options?: AbsOptions): T | null;
|
|
11
|
-
round(o:
|
|
14
|
+
round(o: DeepReadonly<T>, options?: RoundOptions): T;
|
|
15
|
+
round(o: Nullable<DeepReadonly<T>>, options?: RoundOptions): T | null;
|
|
12
16
|
add(o1: Nullable<DeepReadonly<T>>, o2: Nullable<DeepReadonly<T>>): T;
|
|
13
17
|
subtract(base: Nullable<DeepReadonly<T>>, amount: number | Nullable<DeepReadonly<T>>): T;
|
|
14
18
|
multiply(o1: Nullable<DeepReadonly<T>>, o2: number | Nullable<DeepReadonly<T>>): T;
|
|
15
|
-
div(o1: Nullable<DeepReadonly<T>>, o2: Nullable<number
|
|
19
|
+
div(o1: Nullable<DeepReadonly<T>>, o2: Nullable<number>): T;
|
|
20
|
+
div(o1: Nullable<DeepReadonly<T>>, o2: Nullable<DeepReadonly<T>>): number;
|
|
16
21
|
}
|
|
@@ -1,18 +1,25 @@
|
|
|
1
|
-
import type { Nullable } from '../../types/index.js';
|
|
2
1
|
import type { DeepReadonly, DeepReadonlyPartial } from '../../types/deep.js';
|
|
2
|
+
import type { Nullable } from '../../types/index.js';
|
|
3
3
|
import { ObjectOps } from './ops.js';
|
|
4
4
|
import type { AbsOptions, DELETE_TYPE, IObjectMath, NumKey, RoundOptions } from './types.js';
|
|
5
5
|
export declare class ObjectMath<T extends object> extends ObjectOps<T> implements IObjectMath<T> {
|
|
6
|
+
private returnInfinityOnDivByEmpty;
|
|
7
|
+
private divisionMethod;
|
|
8
|
+
useInfinityOnDivByEmpty(enable: boolean): this;
|
|
9
|
+
useDivisionMethod(method: RoundOptions | null): this;
|
|
6
10
|
getTotal(o: Nullable<DeepReadonlyPartial<T>>): number;
|
|
7
11
|
contains(base: Nullable<DeepReadonly<T>>, target: Nullable<DeepReadonly<T>>): boolean;
|
|
8
12
|
inverse(o: Nullable<DeepReadonly<T>>): T;
|
|
9
13
|
div(o1: Nullable<DeepReadonly<T>>, o2: Nullable<number>): T;
|
|
10
14
|
div(o1: Nullable<DeepReadonly<T>>, o2: Nullable<DeepReadonly<T>>): number;
|
|
11
15
|
process(o: Nullable<DeepReadonly<T>>, processor: (val: number, key: NumKey<T>) => number | DELETE_TYPE): T | null;
|
|
16
|
+
abs(c: DeepReadonly<T>, stripNegatives?: AbsOptions): T;
|
|
12
17
|
abs(c: Nullable<DeepReadonly<T>>, stripNegatives?: AbsOptions): T | null;
|
|
18
|
+
round(c: DeepReadonly<T>, method?: RoundOptions): T;
|
|
13
19
|
round(c: Nullable<DeepReadonly<T>>, method?: RoundOptions): T | null;
|
|
14
20
|
calc(c1: Nullable<DeepReadonly<T>>, c2: Nullable<DeepReadonly<T> | number>, operator: (n: number, n2: number) => number): T;
|
|
15
21
|
add(c1: Nullable<DeepReadonly<T>>, c2: Nullable<DeepReadonly<T> | number>): T;
|
|
16
22
|
subtract(base: Nullable<DeepReadonly<T>>, amount: Nullable<DeepReadonly<T> | number>): T;
|
|
17
23
|
multiply(c1: Nullable<DeepReadonly<T>>, c2: Nullable<DeepReadonly<T> | number>): T;
|
|
24
|
+
protected getDivisionResult(dividend: number, divisor: number): number;
|
|
18
25
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { AnyObject, Nullable } from '../../types/index.js';
|
|
2
2
|
import type { DeepReadonly } from '../../types/deep.js';
|
|
3
|
-
import type { IObjectOps, OpsPairsMap } from './types.js';
|
|
3
|
+
import type { IObjectOps, OpsPair, OpsPairsMap } from './types.js';
|
|
4
4
|
export declare class CompositeObjectOps<T extends AnyObject> implements IObjectOps<T> {
|
|
5
5
|
readonly Empty: Readonly<T>;
|
|
6
|
-
|
|
6
|
+
protected readonly innerOps: OpsPair<T>[];
|
|
7
7
|
constructor(innerOps: OpsPairsMap<T>);
|
|
8
8
|
isEmpty(o: Nullable<DeepReadonly<T>>): boolean;
|
|
9
9
|
getEmpty(): T;
|
|
@@ -15,12 +15,15 @@ export interface IObjectOps<T extends AnyObject> {
|
|
|
15
15
|
export interface IObjectMath<T extends AnyObject> extends IObjectOps<T> {
|
|
16
16
|
contains(base: Nullable<DeepReadonly<T>>, target: Nullable<DeepReadonly<T>>): boolean;
|
|
17
17
|
inverse(o: Nullable<DeepReadonly<T>>): T;
|
|
18
|
+
abs(o: DeepReadonly<T>, options?: AbsOptions): T;
|
|
18
19
|
abs(o: Nullable<DeepReadonly<T>>, options?: AbsOptions): T | null;
|
|
20
|
+
round(o: DeepReadonly<T>, options?: RoundOptions): T;
|
|
19
21
|
round(o: Nullable<DeepReadonly<T>>, options?: RoundOptions): T | null;
|
|
20
22
|
add(o1: Nullable<DeepReadonly<T>>, o2: Nullable<DeepReadonly<T>>): T;
|
|
21
23
|
subtract(base: Nullable<DeepReadonly<T>>, amount: Nullable<DeepReadonly<T> | number>): T;
|
|
22
24
|
multiply(o1: Nullable<DeepReadonly<T>>, o2: Nullable<DeepReadonly<T> | number>): T;
|
|
23
|
-
div(o1: Nullable<DeepReadonly<T>>, o2: Nullable<
|
|
25
|
+
div(o1: Nullable<DeepReadonly<T>>, o2: Nullable<number>): T;
|
|
26
|
+
div(o1: Nullable<DeepReadonly<T>>, o2: Nullable<DeepReadonly<T>>): number;
|
|
24
27
|
}
|
|
25
28
|
export type BasePair<T extends AnyObject, TKey extends string & keyof T = string & keyof T, TOps extends IObjectOps<T[TKey]> = IObjectOps<T[TKey]>> = {
|
|
26
29
|
key: TKey;
|
|
@@ -1,15 +1,44 @@
|
|
|
1
1
|
import type { ILogger } from '../../logger/index.js';
|
|
2
2
|
type Factory<T> = () => Promise<T>;
|
|
3
|
+
export type DelayedTask<T> = {
|
|
4
|
+
/** Promise that resolves with the task result, or rejects if the task throws or is cancelled. */
|
|
5
|
+
readonly promise: Promise<T | undefined>;
|
|
6
|
+
/** Cancel the delayed task. If the task hasn't started yet, the promise rejects with a 'Cancelled' error. */
|
|
7
|
+
readonly cancel: () => void;
|
|
8
|
+
};
|
|
9
|
+
export type TasksQueueOptions = {
|
|
10
|
+
/** Delay in ms to wait after each task before starting the next one. Default: 0 */
|
|
11
|
+
delayBetweenTasks?: number;
|
|
12
|
+
/** Called when a task throws. If provided, the error is NOT propagated to the enqueue() promise. */
|
|
13
|
+
onTaskError?: (error: unknown, name?: string) => void;
|
|
14
|
+
};
|
|
3
15
|
export declare class TasksQueue<T> {
|
|
4
16
|
readonly limit: number;
|
|
5
17
|
private readonly _items;
|
|
6
18
|
private _running;
|
|
7
19
|
private _logger;
|
|
8
|
-
|
|
20
|
+
private readonly _delayBetweenTasks;
|
|
21
|
+
private readonly _onTaskError;
|
|
22
|
+
private readonly _delayedTasks;
|
|
23
|
+
constructor(limit: number, options?: TasksQueueOptions);
|
|
9
24
|
get isFull(): boolean;
|
|
10
25
|
get running(): number;
|
|
26
|
+
/** Number of tasks waiting in the queue (not including currently running) */
|
|
27
|
+
get pending(): number;
|
|
11
28
|
addLogger(logger: ILogger): this;
|
|
12
|
-
|
|
29
|
+
/**
|
|
30
|
+
* Enqueue a task factory to run when a slot is available.
|
|
31
|
+
*
|
|
32
|
+
* **Note:** When `onTaskError` is provided in the constructor options and the factory throws,
|
|
33
|
+
* the error is passed to `onTaskError` and the returned promise resolves with `undefined`.
|
|
34
|
+
*/
|
|
35
|
+
enqueue(factory: Factory<T>, name?: string): Promise<T | undefined>;
|
|
36
|
+
/** Enqueue a task to run after `delay` ms. Returns a promise and a cancel function. */
|
|
37
|
+
enqueueDelayed(factory: Factory<T>, delay: number, name?: string): DelayedTask<T>;
|
|
38
|
+
/** Remove all pending tasks from the queue. Does not cancel running tasks. Also cancels all delayed enqueues.
|
|
39
|
+
* Pending enqueue() promises are rejected with a 'TasksQueue cleared' error so callers don't hang indefinitely.
|
|
40
|
+
* Delayed tasks are cancelled and their promises are rejected with a 'Cancelled' error. */
|
|
41
|
+
clear(): void;
|
|
13
42
|
private _runFactory;
|
|
14
43
|
private _tryRunNext;
|
|
15
44
|
}
|