@push.rocks/taskbuffer 3.4.0 → 4.0.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/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 +5 -0
- package/dist_ts/taskbuffer.classes.task.js +54 -7
- 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.js +13 -7
- 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 +2 -0
- 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 +5 -0
- package/dist_ts_web/ts/taskbuffer.classes.task.js +54 -7
- 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.js +13 -7
- 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 +2 -0
- package/dist_ts_web/ts_web/00_commitinfo_data.js +1 -1
- package/dist_ts_web/ts_web/taskbuffer-dashboard.js +6 -14
- package/npmextra.json +14 -8
- package/package.json +22 -18
- package/readme.hints.md +28 -1
- package/readme.md +29 -4
- package/ts/00_commitinfo_data.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 +68 -17
- package/ts/taskbuffer.classes.taskchain.ts +17 -10
- package/ts/taskbuffer.classes.taskdebounced.ts +12 -2
- package/ts/taskbuffer.classes.taskmanager.ts +11 -6
- package/ts/taskbuffer.classes.taskparallel.ts +3 -1
- package/ts/taskbuffer.classes.taskrunner.ts +17 -12
- package/ts/taskbuffer.interfaces.ts +2 -0
- package/ts_web/00_commitinfo_data.ts +1 -1
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import * as plugins from './taskbuffer.plugins.js';
|
|
2
2
|
|
|
3
3
|
import { Task } from './taskbuffer.classes.task.js';
|
|
4
|
+
import { logger } from './taskbuffer.logging.js';
|
|
4
5
|
|
|
5
6
|
export class TaskRunner {
|
|
6
|
-
public
|
|
7
|
+
public maxParallelJobs: number = 1;
|
|
7
8
|
public status: 'stopped' | 'running' = 'stopped';
|
|
8
9
|
public runningTasks: plugins.lik.ObjectMap<Task> =
|
|
9
10
|
new plugins.lik.ObjectMap<Task>();
|
|
10
|
-
public
|
|
11
|
+
public queuedTasks: Task[] = [];
|
|
11
12
|
|
|
12
13
|
constructor() {
|
|
13
14
|
this.runningTasks.eventSubject.subscribe(async (eventArg) => {
|
|
@@ -16,19 +17,19 @@ export class TaskRunner {
|
|
|
16
17
|
}
|
|
17
18
|
|
|
18
19
|
/**
|
|
19
|
-
* adds a task to the
|
|
20
|
+
* adds a task to the queue
|
|
20
21
|
*/
|
|
21
22
|
public addTask(taskArg: Task) {
|
|
22
|
-
this.
|
|
23
|
+
this.queuedTasks.push(taskArg);
|
|
23
24
|
this.checkExecution();
|
|
24
25
|
}
|
|
25
26
|
|
|
26
27
|
/**
|
|
27
28
|
* set amount of parallel tasks
|
|
28
|
-
* be careful, you might
|
|
29
|
+
* be careful, you might lose dependability of tasks
|
|
29
30
|
*/
|
|
30
|
-
public setMaxParallelJobs(
|
|
31
|
-
this.
|
|
31
|
+
public setMaxParallelJobs(maxParallelJobsArg: number) {
|
|
32
|
+
this.maxParallelJobs = maxParallelJobsArg;
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
/**
|
|
@@ -39,17 +40,21 @@ export class TaskRunner {
|
|
|
39
40
|
}
|
|
40
41
|
|
|
41
42
|
/**
|
|
42
|
-
* checks
|
|
43
|
+
* checks whether execution is on point
|
|
43
44
|
*/
|
|
44
45
|
public async checkExecution() {
|
|
45
46
|
if (
|
|
46
|
-
this.runningTasks.getArray().length < this.
|
|
47
|
+
this.runningTasks.getArray().length < this.maxParallelJobs &&
|
|
47
48
|
this.status === 'running' &&
|
|
48
|
-
this.
|
|
49
|
+
this.queuedTasks.length > 0
|
|
49
50
|
) {
|
|
50
|
-
const nextJob = this.
|
|
51
|
+
const nextJob = this.queuedTasks.shift();
|
|
51
52
|
this.runningTasks.add(nextJob);
|
|
52
|
-
|
|
53
|
+
try {
|
|
54
|
+
await nextJob.trigger();
|
|
55
|
+
} catch (err) {
|
|
56
|
+
logger.log('error', `TaskRunner: task "${nextJob.name || 'unnamed'}" failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
57
|
+
}
|
|
53
58
|
this.runningTasks.remove(nextJob);
|
|
54
59
|
this.checkExecution();
|
|
55
60
|
}
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/taskbuffer',
|
|
6
|
-
version: '
|
|
6
|
+
version: '4.0.0',
|
|
7
7
|
description: 'A flexible task management library supporting TypeScript, allowing for task buffering, scheduling, and execution with dependency management.'
|
|
8
8
|
}
|