@push.rocks/taskbuffer 3.5.0 → 4.1.0
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/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/index.d.ts +1 -1
- package/dist_ts/taskbuffer.classes.bufferrunner.js +17 -4
- package/dist_ts/taskbuffer.classes.cyclecounter.d.ts +1 -0
- package/dist_ts/taskbuffer.classes.cyclecounter.js +14 -1
- package/dist_ts/taskbuffer.classes.task.d.ts +14 -1
- package/dist_ts/taskbuffer.classes.task.js +89 -8
- package/dist_ts/taskbuffer.classes.taskchain.d.ts +2 -2
- package/dist_ts/taskbuffer.classes.taskchain.js +14 -5
- package/dist_ts/taskbuffer.classes.taskdebounced.js +14 -3
- package/dist_ts/taskbuffer.classes.taskmanager.d.ts +6 -1
- package/dist_ts/taskbuffer.classes.taskmanager.js +39 -9
- package/dist_ts/taskbuffer.classes.taskparallel.js +4 -2
- package/dist_ts/taskbuffer.classes.taskrunner.d.ts +6 -6
- package/dist_ts/taskbuffer.classes.taskrunner.js +19 -13
- package/dist_ts/taskbuffer.interfaces.d.ts +11 -0
- package/dist_ts_web/ts/index.d.ts +1 -1
- package/dist_ts_web/ts/taskbuffer.classes.bufferrunner.js +17 -4
- package/dist_ts_web/ts/taskbuffer.classes.cyclecounter.d.ts +1 -0
- package/dist_ts_web/ts/taskbuffer.classes.cyclecounter.js +14 -1
- package/dist_ts_web/ts/taskbuffer.classes.task.d.ts +14 -1
- package/dist_ts_web/ts/taskbuffer.classes.task.js +89 -8
- package/dist_ts_web/ts/taskbuffer.classes.taskchain.d.ts +2 -2
- package/dist_ts_web/ts/taskbuffer.classes.taskchain.js +14 -5
- package/dist_ts_web/ts/taskbuffer.classes.taskdebounced.js +14 -3
- package/dist_ts_web/ts/taskbuffer.classes.taskmanager.d.ts +6 -1
- package/dist_ts_web/ts/taskbuffer.classes.taskmanager.js +39 -9
- package/dist_ts_web/ts/taskbuffer.classes.taskparallel.js +4 -2
- package/dist_ts_web/ts/taskbuffer.classes.taskrunner.d.ts +6 -6
- package/dist_ts_web/ts/taskbuffer.classes.taskrunner.js +19 -13
- package/dist_ts_web/ts/taskbuffer.interfaces.d.ts +11 -0
- package/dist_ts_web/ts_web/00_commitinfo_data.js +1 -1
- package/npmextra.json +14 -8
- package/package.json +10 -6
- package/readme.hints.md +42 -1
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/index.ts +1 -1
- package/ts/taskbuffer.classes.bufferrunner.ts +14 -3
- package/ts/taskbuffer.classes.cyclecounter.ts +12 -0
- package/ts/taskbuffer.classes.task.ts +111 -20
- package/ts/taskbuffer.classes.taskchain.ts +17 -10
- package/ts/taskbuffer.classes.taskdebounced.ts +12 -2
- package/ts/taskbuffer.classes.taskmanager.ts +41 -9
- package/ts/taskbuffer.classes.taskparallel.ts +3 -1
- package/ts/taskbuffer.classes.taskrunner.ts +17 -12
- package/ts/taskbuffer.interfaces.ts +13 -0
- package/ts_web/00_commitinfo_data.ts +1 -1
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import * as plugins from './taskbuffer.plugins.js';
|
|
2
2
|
import { Task } from './taskbuffer.classes.task.js';
|
|
3
3
|
import { AbstractDistributedCoordinator, } from './taskbuffer.classes.distributedcoordinator.js';
|
|
4
|
+
import { logger } from './taskbuffer.logging.js';
|
|
4
5
|
export class TaskManager {
|
|
5
6
|
constructor(options = {}) {
|
|
6
7
|
this.randomId = plugins.smartunique.shortId();
|
|
7
8
|
this.taskMap = new plugins.lik.ObjectMap();
|
|
9
|
+
this.taskSubject = new plugins.smartrx.rxjs.Subject();
|
|
10
|
+
this.taskSubscriptions = new Map();
|
|
8
11
|
this.cronJobManager = new plugins.smarttime.CronManager();
|
|
9
12
|
this.options = {
|
|
10
13
|
distributedCoordinator: null,
|
|
@@ -19,6 +22,18 @@ export class TaskManager {
|
|
|
19
22
|
throw new Error('Task must have a name to be added to taskManager');
|
|
20
23
|
}
|
|
21
24
|
this.taskMap.add(task);
|
|
25
|
+
const subscription = task.eventSubject.subscribe((event) => {
|
|
26
|
+
this.taskSubject.next(event);
|
|
27
|
+
});
|
|
28
|
+
this.taskSubscriptions.set(task, subscription);
|
|
29
|
+
}
|
|
30
|
+
removeTask(task) {
|
|
31
|
+
this.taskMap.remove(task);
|
|
32
|
+
const subscription = this.taskSubscriptions.get(task);
|
|
33
|
+
if (subscription) {
|
|
34
|
+
subscription.unsubscribe();
|
|
35
|
+
this.taskSubscriptions.delete(task);
|
|
36
|
+
}
|
|
22
37
|
}
|
|
23
38
|
addAndScheduleTask(task, cronString) {
|
|
24
39
|
this.addTask(task);
|
|
@@ -47,26 +62,31 @@ export class TaskManager {
|
|
|
47
62
|
if (this.options.distributedCoordinator) {
|
|
48
63
|
const announcementResult = await this.performDistributedConsultation(task, triggerTime);
|
|
49
64
|
if (!announcementResult.shouldTrigger) {
|
|
50
|
-
|
|
65
|
+
logger.log('info', 'Distributed coordinator result: NOT EXECUTING');
|
|
51
66
|
return;
|
|
52
67
|
}
|
|
53
68
|
else {
|
|
54
|
-
|
|
69
|
+
logger.log('info', 'Distributed coordinator result: CHOSEN AND EXECUTING');
|
|
55
70
|
}
|
|
56
71
|
}
|
|
57
|
-
|
|
72
|
+
try {
|
|
73
|
+
await task.trigger();
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
logger.log('error', `TaskManager: scheduled task "${task.name || 'unnamed'}" failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
77
|
+
}
|
|
58
78
|
});
|
|
59
79
|
task.cronJob = cronJob;
|
|
60
80
|
}
|
|
61
81
|
logTaskState(task) {
|
|
62
|
-
|
|
82
|
+
logger.log('info', `Taskbuffer schedule triggered task >>${task.name}<<`);
|
|
63
83
|
const bufferState = task.buffered
|
|
64
84
|
? `buffered with max ${task.bufferMax} buffered calls`
|
|
65
85
|
: `unbuffered`;
|
|
66
|
-
|
|
86
|
+
logger.log('info', `Task >>${task.name}<< is ${bufferState}`);
|
|
67
87
|
}
|
|
68
88
|
async performDistributedConsultation(task, triggerTime) {
|
|
69
|
-
|
|
89
|
+
logger.log('info', 'Found a distributed coordinator, performing consultation.');
|
|
70
90
|
return this.options.distributedCoordinator.fireDistributedTaskRequest({
|
|
71
91
|
submitterId: this.randomId,
|
|
72
92
|
requestResponseId: plugins.smartunique.shortId(),
|
|
@@ -106,6 +126,10 @@ export class TaskManager {
|
|
|
106
126
|
if (this.options.distributedCoordinator) {
|
|
107
127
|
await this.options.distributedCoordinator.stop();
|
|
108
128
|
}
|
|
129
|
+
for (const [, subscription] of this.taskSubscriptions) {
|
|
130
|
+
subscription.unsubscribe();
|
|
131
|
+
}
|
|
132
|
+
this.taskSubscriptions.clear();
|
|
109
133
|
}
|
|
110
134
|
// Get metadata for a specific task
|
|
111
135
|
getTaskMetadata(taskName) {
|
|
@@ -147,6 +171,12 @@ export class TaskManager {
|
|
|
147
171
|
.slice(0, limit);
|
|
148
172
|
return scheduledRuns;
|
|
149
173
|
}
|
|
174
|
+
getTasksByLabel(key, value) {
|
|
175
|
+
return this.taskMap.getArray().filter(task => task.labels[key] === value);
|
|
176
|
+
}
|
|
177
|
+
getTasksMetadataByLabel(key, value) {
|
|
178
|
+
return this.getTasksByLabel(key, value).map(task => task.getMetadata());
|
|
179
|
+
}
|
|
150
180
|
// Add, execute, and remove a task while collecting metadata
|
|
151
181
|
async addExecuteRemoveTask(task, options) {
|
|
152
182
|
// Add task to manager
|
|
@@ -174,7 +204,7 @@ export class TaskManager {
|
|
|
174
204
|
result,
|
|
175
205
|
};
|
|
176
206
|
// Remove task from manager
|
|
177
|
-
this.
|
|
207
|
+
this.removeTask(task);
|
|
178
208
|
// Deschedule if it was scheduled
|
|
179
209
|
if (options?.schedule && task.name) {
|
|
180
210
|
this.descheduleTaskByName(task.name);
|
|
@@ -196,7 +226,7 @@ export class TaskManager {
|
|
|
196
226
|
error: error,
|
|
197
227
|
};
|
|
198
228
|
// Remove task from manager even on error
|
|
199
|
-
this.
|
|
229
|
+
this.removeTask(task);
|
|
200
230
|
// Deschedule if it was scheduled
|
|
201
231
|
if (options?.schedule && task.name) {
|
|
202
232
|
this.descheduleTaskByName(task.name);
|
|
@@ -205,4 +235,4 @@ export class TaskManager {
|
|
|
205
235
|
}
|
|
206
236
|
}
|
|
207
237
|
}
|
|
208
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLnRhc2ttYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvdGFza2J1ZmZlci5jbGFzc2VzLnRhc2ttYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BELE9BQU8sRUFDTCw4QkFBOEIsR0FFL0IsTUFBTSxnREFBZ0QsQ0FBQztBQWF4RCxNQUFNLE9BQU8sV0FBVztJQVF0QixZQUFZLFVBQTBDLEVBQUU7UUFQakQsYUFBUSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekMsWUFBTyxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQWtCLENBQUM7UUFDckQsbUJBQWMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdEQsWUFBTyxHQUFtQztZQUMvQyxzQkFBc0IsRUFBRSxJQUFJO1NBQzdCLENBQUM7UUFHQSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU0sYUFBYSxDQUFDLFFBQWdCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVNLE9BQU8sQ0FBQyxJQUFvQjtRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdB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
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLnRhc2ttYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvdGFza2J1ZmZlci5jbGFzc2VzLnRhc2ttYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BELE9BQU8sRUFDTCw4QkFBOEIsR0FFL0IsTUFBTSxnREFBZ0QsQ0FBQztBQUV4RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFZakQsTUFBTSxPQUFPLFdBQVc7SUFVdEIsWUFBWSxVQUEwQyxFQUFFO1FBVGpELGFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pDLFlBQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFrQixDQUFDO1FBQzdDLGdCQUFXLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQWMsQ0FBQztRQUNyRSxzQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBcUQsQ0FBQztRQUNqRixtQkFBYyxHQUFHLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0RCxZQUFPLEdBQW1DO1lBQy9DLHNCQUFzQixFQUFFLElBQUk7U0FDN0IsQ0FBQztRQUdBLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTSxhQUFhLENBQUMsUUFBZ0I7UUFDbkMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQztJQUNq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
|
|
@@ -11,7 +11,9 @@ export class Taskparallel extends Task {
|
|
|
11
11
|
this.taskArray.forEach(function (taskArg) {
|
|
12
12
|
promiseArray.push(taskArg.trigger());
|
|
13
13
|
});
|
|
14
|
-
Promise.all(promiseArray)
|
|
14
|
+
Promise.all(promiseArray)
|
|
15
|
+
.then((results) => done.resolve(results))
|
|
16
|
+
.catch((err) => done.reject(err));
|
|
15
17
|
return done.promise;
|
|
16
18
|
},
|
|
17
19
|
},
|
|
@@ -20,4 +22,4 @@ export class Taskparallel extends Task {
|
|
|
20
22
|
this.taskArray = optionsArg.taskArray;
|
|
21
23
|
}
|
|
22
24
|
}
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLnRhc2twYXJhbGxlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3Rhc2tidWZmZXIuY2xhc3Nlcy50YXNrcGFyYWxsZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFcEQsTUFBTSxPQUFPLFlBQWEsU0FBUSxJQUFJO0lBRXBDLFlBQVksVUFBaUM7UUFDM0MsTUFBTSxPQUFPLEdBQUc7WUFDZCxHQUFHLFVBQVU7WUFDYixHQUFHO2dCQUNELFlBQVksRUFBRSxHQUFHLEVBQUU7b0JBQ2pCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQzFDLE1BQU0sWUFBWSxHQUFtQixFQUFFLENBQUMsQ0FBQywyREFBMkQ7b0JBQ3BHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFVBQVUsT0FBTzt3QkFDdEMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztvQkFDdkMsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUM7eUJBQ3RCLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQzt5QkFDeEMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ3BDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDdEIsQ0FBQzthQUNGO1NBQ0YsQ0FBQztRQUNGLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQztJQUN4QyxDQUFDO0NBQ0YifQ==
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
import * as plugins from './taskbuffer.plugins.js';
|
|
2
2
|
import { Task } from './taskbuffer.classes.task.js';
|
|
3
3
|
export declare class TaskRunner {
|
|
4
|
-
|
|
4
|
+
maxParallelJobs: number;
|
|
5
5
|
status: 'stopped' | 'running';
|
|
6
6
|
runningTasks: plugins.lik.ObjectMap<Task>;
|
|
7
|
-
|
|
7
|
+
queuedTasks: Task[];
|
|
8
8
|
constructor();
|
|
9
9
|
/**
|
|
10
|
-
* adds a task to the
|
|
10
|
+
* adds a task to the queue
|
|
11
11
|
*/
|
|
12
12
|
addTask(taskArg: Task): void;
|
|
13
13
|
/**
|
|
14
14
|
* set amount of parallel tasks
|
|
15
|
-
* be careful, you might
|
|
15
|
+
* be careful, you might lose dependability of tasks
|
|
16
16
|
*/
|
|
17
|
-
setMaxParallelJobs(
|
|
17
|
+
setMaxParallelJobs(maxParallelJobsArg: number): void;
|
|
18
18
|
/**
|
|
19
19
|
* starts the task queue
|
|
20
20
|
*/
|
|
21
21
|
start(): Promise<void>;
|
|
22
22
|
/**
|
|
23
|
-
* checks
|
|
23
|
+
* checks whether execution is on point
|
|
24
24
|
*/
|
|
25
25
|
checkExecution(): Promise<void>;
|
|
26
26
|
/**
|
|
@@ -1,28 +1,29 @@
|
|
|
1
1
|
import * as plugins from './taskbuffer.plugins.js';
|
|
2
2
|
import { Task } from './taskbuffer.classes.task.js';
|
|
3
|
+
import { logger } from './taskbuffer.logging.js';
|
|
3
4
|
export class TaskRunner {
|
|
4
5
|
constructor() {
|
|
5
|
-
this.
|
|
6
|
+
this.maxParallelJobs = 1;
|
|
6
7
|
this.status = 'stopped';
|
|
7
8
|
this.runningTasks = new plugins.lik.ObjectMap();
|
|
8
|
-
this.
|
|
9
|
+
this.queuedTasks = [];
|
|
9
10
|
this.runningTasks.eventSubject.subscribe(async (eventArg) => {
|
|
10
11
|
this.checkExecution();
|
|
11
12
|
});
|
|
12
13
|
}
|
|
13
14
|
/**
|
|
14
|
-
* adds a task to the
|
|
15
|
+
* adds a task to the queue
|
|
15
16
|
*/
|
|
16
17
|
addTask(taskArg) {
|
|
17
|
-
this.
|
|
18
|
+
this.queuedTasks.push(taskArg);
|
|
18
19
|
this.checkExecution();
|
|
19
20
|
}
|
|
20
21
|
/**
|
|
21
22
|
* set amount of parallel tasks
|
|
22
|
-
* be careful, you might
|
|
23
|
+
* be careful, you might lose dependability of tasks
|
|
23
24
|
*/
|
|
24
|
-
setMaxParallelJobs(
|
|
25
|
-
this.
|
|
25
|
+
setMaxParallelJobs(maxParallelJobsArg) {
|
|
26
|
+
this.maxParallelJobs = maxParallelJobsArg;
|
|
26
27
|
}
|
|
27
28
|
/**
|
|
28
29
|
* starts the task queue
|
|
@@ -31,15 +32,20 @@ export class TaskRunner {
|
|
|
31
32
|
this.status = 'running';
|
|
32
33
|
}
|
|
33
34
|
/**
|
|
34
|
-
* checks
|
|
35
|
+
* checks whether execution is on point
|
|
35
36
|
*/
|
|
36
37
|
async checkExecution() {
|
|
37
|
-
if (this.runningTasks.getArray().length < this.
|
|
38
|
+
if (this.runningTasks.getArray().length < this.maxParallelJobs &&
|
|
38
39
|
this.status === 'running' &&
|
|
39
|
-
this.
|
|
40
|
-
const nextJob = this.
|
|
40
|
+
this.queuedTasks.length > 0) {
|
|
41
|
+
const nextJob = this.queuedTasks.shift();
|
|
41
42
|
this.runningTasks.add(nextJob);
|
|
42
|
-
|
|
43
|
+
try {
|
|
44
|
+
await nextJob.trigger();
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
logger.log('error', `TaskRunner: task "${nextJob.name || 'unnamed'}" failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
48
|
+
}
|
|
43
49
|
this.runningTasks.remove(nextJob);
|
|
44
50
|
this.checkExecution();
|
|
45
51
|
}
|
|
@@ -51,4 +57,4 @@ export class TaskRunner {
|
|
|
51
57
|
this.status = 'stopped';
|
|
52
58
|
}
|
|
53
59
|
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLnRhc2tydW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy90YXNrYnVmZmVyLmNsYXNzZXMudGFza3J1bm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHlCQUF5QixDQUFDO0FBRW5ELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFakQsTUFBTSxPQUFPLFVBQVU7SUFPckI7UUFOTyxvQkFBZSxHQUFXLENBQUMsQ0FBQztRQUM1QixXQUFNLEdBQTBCLFNBQVMsQ0FBQztRQUMxQyxpQkFBWSxHQUNqQixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFRLENBQUM7UUFDN0IsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFHOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUMxRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPLENBQUMsT0FBYTtRQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGtCQUFrQixDQUFDLGtCQUEwQjtRQUNsRCxJQUFJLENBQUMsZUFBZSxHQUFHLGtCQUFrQixDQUFDO0lBQzVDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxjQUFjO1FBQ3pCLElBQ0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWU7WUFDMUQsSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTO1lBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDM0IsQ0FBQztZQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDO2dCQUNILE1BQU0sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzFCLENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNiLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLHFCQUFxQixPQUFPLENBQUMsSUFBSSxJQUFJLFNBQVMsYUFBYSxHQUFHLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JJLENBQUM7WUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxJQUFJO1FBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDMUIsQ0FBQztDQUNGIn0=
|
|
@@ -14,6 +14,9 @@ export interface ITaskMetadata {
|
|
|
14
14
|
buffered?: boolean;
|
|
15
15
|
bufferMax?: number;
|
|
16
16
|
timeout?: number;
|
|
17
|
+
lastError?: string;
|
|
18
|
+
errorCount?: number;
|
|
19
|
+
labels?: Record<string, string>;
|
|
17
20
|
}
|
|
18
21
|
export interface ITaskExecutionReport {
|
|
19
22
|
taskName: string;
|
|
@@ -34,3 +37,11 @@ export interface IScheduledTaskInfo {
|
|
|
34
37
|
steps?: ITaskStep[];
|
|
35
38
|
metadata?: ITaskMetadata;
|
|
36
39
|
}
|
|
40
|
+
export type TTaskEventType = 'started' | 'step' | 'completed' | 'failed';
|
|
41
|
+
export interface ITaskEvent {
|
|
42
|
+
type: TTaskEventType;
|
|
43
|
+
task: ITaskMetadata;
|
|
44
|
+
timestamp: number;
|
|
45
|
+
stepName?: string;
|
|
46
|
+
error?: string;
|
|
47
|
+
}
|
|
@@ -8,6 +8,6 @@ export { TaskRunner } from './taskbuffer.classes.taskrunner.js';
|
|
|
8
8
|
export { TaskDebounced } from './taskbuffer.classes.taskdebounced.js';
|
|
9
9
|
export { TaskStep } from './taskbuffer.classes.taskstep.js';
|
|
10
10
|
export type { ITaskStep } from './taskbuffer.classes.taskstep.js';
|
|
11
|
-
export type { ITaskMetadata, ITaskExecutionReport, IScheduledTaskInfo } from './taskbuffer.interfaces.js';
|
|
11
|
+
export type { ITaskMetadata, ITaskExecutionReport, IScheduledTaskInfo, ITaskEvent, TTaskEventType } from './taskbuffer.interfaces.js';
|
|
12
12
|
import * as distributedCoordination from './taskbuffer.classes.distributedcoordinator.js';
|
|
13
13
|
export { distributedCoordination };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Task } from './taskbuffer.classes.task.js';
|
|
2
|
+
import { logger } from './taskbuffer.logging.js';
|
|
2
3
|
export class BufferRunner {
|
|
3
4
|
constructor(taskArg) {
|
|
4
5
|
// initialize by default
|
|
@@ -18,11 +19,23 @@ export class BufferRunner {
|
|
|
18
19
|
async _run(x) {
|
|
19
20
|
this.task.running = true;
|
|
20
21
|
while (this.bufferCounter > 0) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
try {
|
|
23
|
+
const result = await Task.runTask(this.task, { x: x });
|
|
24
|
+
this.bufferCounter--;
|
|
25
|
+
this.task.cycleCounter.informOfCycle(result);
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
logger.log('error', `BufferRunner: task "${this.task.name || 'unnamed'}" failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
29
|
+
this.bufferCounter--;
|
|
30
|
+
if (this.task.catchErrors) {
|
|
31
|
+
this.task.cycleCounter.informOfCycle(undefined);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
this.task.cycleCounter.informOfCycleError(err instanceof Error ? err : new Error(String(err)));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
24
37
|
}
|
|
25
38
|
this.task.running = false;
|
|
26
39
|
}
|
|
27
40
|
}
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLmJ1ZmZlcnJ1bm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL3Rhc2tidWZmZXIuY2xhc3Nlcy5idWZmZXJydW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVqRCxNQUFNLE9BQU8sWUFBWTtJQUt2QixZQUFZLE9BQWtCO1FBSDlCLHdCQUF3QjtRQUNqQixrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUcvQixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRU0sT0FBTyxDQUFDLENBQU07UUFDbkIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxNQUFNLGFBQWEsR0FDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZixDQUFDO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBTTtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQztnQkFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMvQyxDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDYixNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSx1QkFBdUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksU0FBUyxhQUFhLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2xELENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pHLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0NBQ0YifQ==
|
|
@@ -27,5 +27,18 @@ export class CycleCounter {
|
|
|
27
27
|
});
|
|
28
28
|
this.cycleObjectArray = newCycleObjectArray;
|
|
29
29
|
}
|
|
30
|
+
informOfCycleError(err) {
|
|
31
|
+
const newCycleObjectArray = [];
|
|
32
|
+
this.cycleObjectArray.forEach((cycleObjectArg) => {
|
|
33
|
+
cycleObjectArg.cycleCounter--;
|
|
34
|
+
if (cycleObjectArg.cycleCounter <= 0) {
|
|
35
|
+
cycleObjectArg.deferred.reject(err);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
newCycleObjectArray.push(cycleObjectArg);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
this.cycleObjectArray = newCycleObjectArray;
|
|
42
|
+
}
|
|
30
43
|
}
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLmN5Y2xlY291bnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL3Rhc2tidWZmZXIuY2xhc3Nlcy5jeWNsZWNvdW50ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFPcEQsTUFBTSxPQUFPLFlBQVk7SUFHdkIsWUFBWSxPQUFrQjtRQUR2QixxQkFBZ0IsR0FBbUIsRUFBRSxDQUFDO1FBRTNDLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFDTSxrQkFBa0IsQ0FBQyxhQUFxQjtRQUM3QyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFDLE1BQU0sV0FBVyxHQUFpQjtZQUNoQyxZQUFZLEVBQUUsYUFBYTtZQUMzQixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7UUFDRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBQ00sYUFBYSxDQUFDLENBQU07UUFDekIsTUFBTSxtQkFBbUIsR0FBbUIsRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRTtZQUMvQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDOUIsSUFBSSxjQUFjLENBQUMsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxjQUFjLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sbUJBQW1CLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzNDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQztJQUM5QyxDQUFDO0lBQ00sa0JBQWtCLENBQUMsR0FBVTtRQUNsQyxNQUFNLG1CQUFtQixHQUFtQixFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFO1lBQy9DLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM5QixJQUFJLGNBQWMsQ0FBQyxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3JDLGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixtQkFBbUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDM0MsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDO0lBQzlDLENBQUM7Q0FDRiJ9
|
|
@@ -2,7 +2,7 @@ import * as plugins from './taskbuffer.plugins.js';
|
|
|
2
2
|
import { BufferRunner } from './taskbuffer.classes.bufferrunner.js';
|
|
3
3
|
import { CycleCounter } from './taskbuffer.classes.cyclecounter.js';
|
|
4
4
|
import { type ITaskStep } from './taskbuffer.classes.taskstep.js';
|
|
5
|
-
import type { ITaskMetadata } from './taskbuffer.interfaces.js';
|
|
5
|
+
import type { ITaskMetadata, ITaskEvent } from './taskbuffer.interfaces.js';
|
|
6
6
|
export interface ITaskFunction<T = undefined> {
|
|
7
7
|
(x?: any, setupValue?: T): PromiseLike<any>;
|
|
8
8
|
}
|
|
@@ -56,7 +56,18 @@ export declare class Task<T = undefined, TSteps extends ReadonlyArray<{
|
|
|
56
56
|
cycleCounter: CycleCounter;
|
|
57
57
|
lastRun?: Date;
|
|
58
58
|
runCount: number;
|
|
59
|
+
catchErrors: boolean;
|
|
60
|
+
lastError?: Error;
|
|
61
|
+
errorCount: number;
|
|
62
|
+
labels: Record<string, string>;
|
|
63
|
+
readonly eventSubject: plugins.smartrx.rxjs.Subject<ITaskEvent>;
|
|
59
64
|
get idle(): boolean;
|
|
65
|
+
clearError(): void;
|
|
66
|
+
setLabel(key: string, value: string): void;
|
|
67
|
+
getLabel(key: string): string | undefined;
|
|
68
|
+
removeLabel(key: string): boolean;
|
|
69
|
+
hasLabel(key: string, value?: string): boolean;
|
|
70
|
+
private emitEvent;
|
|
60
71
|
taskSetup: ITaskSetupFunction<T>;
|
|
61
72
|
setupValue: T;
|
|
62
73
|
private steps;
|
|
@@ -73,6 +84,8 @@ export declare class Task<T = undefined, TSteps extends ReadonlyArray<{
|
|
|
73
84
|
name?: string;
|
|
74
85
|
taskSetup?: ITaskSetupFunction<T>;
|
|
75
86
|
steps?: TSteps;
|
|
87
|
+
catchErrors?: boolean;
|
|
88
|
+
labels?: Record<string, string>;
|
|
76
89
|
});
|
|
77
90
|
trigger(x?: any): Promise<any>;
|
|
78
91
|
triggerUnBuffered(x?: any): Promise<any>;
|