@zajno/common 2.8.5 → 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/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/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/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"}
|
|
@@ -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":"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"}
|
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,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,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
|
}
|