@push.rocks/taskbuffer 3.0.12 → 3.0.15
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_bundle/bundle.js +26 -29
- package/dist_bundle/bundle.js.map +2 -2
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/taskbuffer.classes.bufferrunner.d.ts +1 -1
- package/dist_ts/taskbuffer.classes.bufferrunner.js +1 -1
- package/dist_ts/taskbuffer.classes.cyclecounter.d.ts +1 -1
- package/dist_ts/taskbuffer.classes.cyclecounter.js +1 -1
- package/dist_ts/taskbuffer.classes.task.d.ts +21 -53
- package/dist_ts/taskbuffer.classes.task.js +9 -23
- package/dist_ts/taskbuffer.classes.taskmanager.d.ts +6 -6
- package/dist_ts/taskbuffer.classes.taskmanager.js +13 -7
- package/package.json +1 -1
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/taskbuffer.classes.bufferrunner.ts +1 -1
- package/ts/taskbuffer.classes.cyclecounter.ts +1 -1
- package/ts/taskbuffer.classes.task.ts +36 -72
- package/ts/taskbuffer.classes.taskmanager.ts +14 -6
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/taskbuffer',
|
|
6
|
-
version: '3.0.
|
|
6
|
+
version: '3.0.15',
|
|
7
7
|
description: 'flexible task management. TypeScript ready!'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLDZDQUE2QztDQUMzRCxDQUFBIn0=
|
|
@@ -25,4 +25,4 @@ export class BufferRunner {
|
|
|
25
25
|
this.task.running = false;
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLmJ1ZmZlcnJ1bm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3Rhc2tidWZmZXIuY2xhc3Nlcy5idWZmZXJydW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXBELE1BQU0sT0FBTyxZQUFZO0lBS3ZCLFlBQVksT0FBa0I7UUFIOUIsd0JBQXdCO1FBQ2pCLGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBRy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFTSxPQUFPLENBQUMsQ0FBTTtRQUNuQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDaEQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3RCO1FBQ0QsTUFBTSxhQUFhLEdBQWlCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUMzRSxJQUFJLENBQUMsYUFBYSxDQUNuQixDQUFDO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDZDtRQUNELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQU07UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLEVBQUU7WUFDN0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2RCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzlDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7Q0FDRiJ9
|
|
@@ -7,7 +7,7 @@ export interface ICycleObject {
|
|
|
7
7
|
export declare class CycleCounter {
|
|
8
8
|
task: Task;
|
|
9
9
|
cycleObjectArray: ICycleObject[];
|
|
10
|
-
constructor(taskArg: Task);
|
|
10
|
+
constructor(taskArg: Task<any>);
|
|
11
11
|
getPromiseForCycle(cycleCountArg: number): Promise<unknown>;
|
|
12
12
|
informOfCycle(x: any): void;
|
|
13
13
|
}
|
|
@@ -28,4 +28,4 @@ export class CycleCounter {
|
|
|
28
28
|
this.cycleObjectArray = newCycleObjectArray;
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLmN5Y2xlY291bnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3Rhc2tidWZmZXIuY2xhc3Nlcy5jeWNsZWNvdW50ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFPcEQsTUFBTSxPQUFPLFlBQVk7SUFHdkIsWUFBWSxPQUFrQjtRQUR2QixxQkFBZ0IsR0FBbUIsRUFBRSxDQUFDO1FBRTNDLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFDTSxrQkFBa0IsQ0FBQyxhQUFxQjtRQUM3QyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFDLE1BQU0sV0FBVyxHQUFpQjtZQUNoQyxZQUFZLEVBQUUsYUFBYTtZQUMzQixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7UUFDRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBQ00sYUFBYSxDQUFDLENBQU07UUFDekIsTUFBTSxtQkFBbUIsR0FBbUIsRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRTtZQUMvQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDOUIsSUFBSSxjQUFjLENBQUMsWUFBWSxJQUFJLENBQUMsRUFBRTtnQkFDcEMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDcEM7aUJBQU07Z0JBQ0wsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQzFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUM7SUFDOUMsQ0FBQztDQUNGIn0=
|
|
@@ -1,83 +1,51 @@
|
|
|
1
1
|
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
|
-
export interface ITaskFunction {
|
|
5
|
-
(x?: any): PromiseLike<any>;
|
|
4
|
+
export interface ITaskFunction<T = undefined> {
|
|
5
|
+
(x?: any, setupValue?: T): PromiseLike<any>;
|
|
6
6
|
}
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
export interface ITaskSetupFunction<T = undefined> {
|
|
8
|
+
(): Promise<T>;
|
|
9
|
+
}
|
|
10
|
+
export type TPreOrAfterTaskFunction = () => Task<any>;
|
|
11
|
+
export declare class Task<T = undefined> {
|
|
12
|
+
static extractTask<T = undefined>(preOrAfterTaskArg: Task<T> | TPreOrAfterTaskFunction): Task<T>;
|
|
10
13
|
static emptyTaskFunction: ITaskFunction;
|
|
11
|
-
static isTask: (taskArg: Task) => boolean;
|
|
12
|
-
static isTaskTouched
|
|
13
|
-
static runTask: (taskArg:
|
|
14
|
+
static isTask: (taskArg: Task<any>) => boolean;
|
|
15
|
+
static isTaskTouched<T = undefined>(taskArg: Task<T> | TPreOrAfterTaskFunction, touchedTasksArray: Task<T>[]): boolean;
|
|
16
|
+
static runTask: <T_1>(taskArg: TPreOrAfterTaskFunction | Task<T_1>, optionsArg: {
|
|
14
17
|
x?: any;
|
|
15
|
-
touchedTasksArray?: Task[];
|
|
18
|
+
touchedTasksArray?: Task<T_1>[];
|
|
16
19
|
}) => Promise<unknown>;
|
|
17
20
|
name: string;
|
|
18
|
-
/**
|
|
19
|
-
* the version of the task
|
|
20
|
-
* should follow semver
|
|
21
|
-
* might be important for DistributedCoordinator
|
|
22
|
-
*/
|
|
23
21
|
version: string;
|
|
24
|
-
taskFunction: ITaskFunction
|
|
22
|
+
taskFunction: ITaskFunction<T>;
|
|
25
23
|
buffered: boolean;
|
|
26
24
|
cronJob: plugins.smarttime.CronJob;
|
|
27
25
|
bufferMax: number;
|
|
28
26
|
execDelay: number;
|
|
29
27
|
timeout: number;
|
|
30
|
-
preTask: Task | TPreOrAfterTaskFunction;
|
|
31
|
-
afterTask: Task | TPreOrAfterTaskFunction;
|
|
28
|
+
preTask: Task<T> | TPreOrAfterTaskFunction;
|
|
29
|
+
afterTask: Task<T> | TPreOrAfterTaskFunction;
|
|
32
30
|
running: boolean;
|
|
33
31
|
bufferRunner: BufferRunner;
|
|
34
32
|
cycleCounter: CycleCounter;
|
|
35
33
|
idle: boolean;
|
|
36
34
|
private _state;
|
|
35
|
+
taskSetup: ITaskSetupFunction<T>;
|
|
36
|
+
setupValue: T;
|
|
37
37
|
constructor(optionsArg: {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
taskFunction: ITaskFunction;
|
|
42
|
-
/**
|
|
43
|
-
* any other task to run before
|
|
44
|
-
*/
|
|
45
|
-
preTask?: Task | TPreOrAfterTaskFunction;
|
|
46
|
-
/**
|
|
47
|
-
* any other task to run after
|
|
48
|
-
*/
|
|
49
|
-
afterTask?: Task | TPreOrAfterTaskFunction;
|
|
50
|
-
/**
|
|
51
|
-
* wether this task should run buffered
|
|
52
|
-
*/
|
|
38
|
+
taskFunction: ITaskFunction<T>;
|
|
39
|
+
preTask?: Task<T> | TPreOrAfterTaskFunction;
|
|
40
|
+
afterTask?: Task<T> | TPreOrAfterTaskFunction;
|
|
53
41
|
buffered?: boolean;
|
|
54
|
-
/**
|
|
55
|
-
* the maximum buffer
|
|
56
|
-
*/
|
|
57
42
|
bufferMax?: number;
|
|
58
|
-
/**
|
|
59
|
-
* the execution delay, before the task is executed
|
|
60
|
-
* only makes sense when running in buffered mode
|
|
61
|
-
*/
|
|
62
43
|
execDelay?: number;
|
|
63
|
-
/**
|
|
64
|
-
* the name of the task
|
|
65
|
-
*/
|
|
66
44
|
name?: string;
|
|
45
|
+
taskSetup?: ITaskSetupFunction<T>;
|
|
67
46
|
});
|
|
68
|
-
/**
|
|
69
|
-
* trigger the task. Will trigger buffered if this.buffered is true
|
|
70
|
-
*/
|
|
71
47
|
trigger(x?: any): Promise<any>;
|
|
72
|
-
/**
|
|
73
|
-
* trigger task unbuffered.
|
|
74
|
-
* will actually run the task, not considering any buffered limits.
|
|
75
|
-
*/
|
|
76
48
|
triggerUnBuffered(x?: any): Promise<any>;
|
|
77
|
-
/**
|
|
78
|
-
* trigger task buffered.
|
|
79
|
-
* note: .trigger() also calls this function
|
|
80
|
-
*/
|
|
81
49
|
triggerBuffered(x?: any): Promise<any>;
|
|
82
50
|
get state(): string;
|
|
83
51
|
set state(stateArg: string);
|
|
@@ -30,7 +30,7 @@ export class Task {
|
|
|
30
30
|
return false;
|
|
31
31
|
}
|
|
32
32
|
}; }
|
|
33
|
-
static
|
|
33
|
+
static isTaskTouched(taskArg, touchedTasksArray) {
|
|
34
34
|
const taskToCheck = Task.extractTask(taskArg);
|
|
35
35
|
let result = false;
|
|
36
36
|
for (const keyArg in touchedTasksArray) {
|
|
@@ -39,21 +39,21 @@ export class Task {
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
return result;
|
|
42
|
-
}
|
|
42
|
+
}
|
|
43
|
+
;
|
|
43
44
|
static { this.runTask = async (taskArg, optionsArg) => {
|
|
44
|
-
// extracts the task in case it is specified as a return value of a function
|
|
45
45
|
const taskToRun = Task.extractTask(taskArg);
|
|
46
46
|
const done = plugins.smartpromise.defer();
|
|
47
|
-
|
|
47
|
+
if (!taskToRun.setupValue && taskToRun.taskSetup) {
|
|
48
|
+
taskToRun.setupValue = await taskToRun.taskSetup();
|
|
49
|
+
}
|
|
48
50
|
if (taskToRun.execDelay) {
|
|
49
51
|
await plugins.smartdelay.delayFor(taskToRun.execDelay);
|
|
50
52
|
}
|
|
51
|
-
// set running params
|
|
52
53
|
taskToRun.running = true;
|
|
53
54
|
done.promise.then(async () => {
|
|
54
55
|
taskToRun.running = false;
|
|
55
56
|
});
|
|
56
|
-
// handle options
|
|
57
57
|
const options = {
|
|
58
58
|
...{ x: undefined, touchedTasksArray: [] },
|
|
59
59
|
...optionsArg,
|
|
@@ -61,11 +61,9 @@ export class Task {
|
|
|
61
61
|
const x = options.x;
|
|
62
62
|
const touchedTasksArray = options.touchedTasksArray;
|
|
63
63
|
touchedTasksArray.push(taskToRun);
|
|
64
|
-
// run the task cascade
|
|
65
64
|
const localDeferred = plugins.smartpromise.defer();
|
|
66
65
|
localDeferred.promise
|
|
67
66
|
.then(() => {
|
|
68
|
-
// lets run any preTask
|
|
69
67
|
if (taskToRun.preTask && !Task.isTaskTouched(taskToRun.preTask, touchedTasksArray)) {
|
|
70
68
|
return Task.runTask(taskToRun.preTask, { x, touchedTasksArray });
|
|
71
69
|
}
|
|
@@ -76,9 +74,8 @@ export class Task {
|
|
|
76
74
|
}
|
|
77
75
|
})
|
|
78
76
|
.then(async (x) => {
|
|
79
|
-
// lets run the main task
|
|
80
77
|
try {
|
|
81
|
-
return await taskToRun.taskFunction(x);
|
|
78
|
+
return await taskToRun.taskFunction(x, taskToRun.setupValue);
|
|
82
79
|
}
|
|
83
80
|
catch (e) {
|
|
84
81
|
console.log(e);
|
|
@@ -104,7 +101,6 @@ export class Task {
|
|
|
104
101
|
return await done.promise;
|
|
105
102
|
}; }
|
|
106
103
|
constructor(optionsArg) {
|
|
107
|
-
// initialize by default
|
|
108
104
|
this.running = false;
|
|
109
105
|
this.bufferRunner = new BufferRunner(this);
|
|
110
106
|
this.cycleCounter = new CycleCounter(this);
|
|
@@ -118,10 +114,8 @@ export class Task {
|
|
|
118
114
|
this.bufferMax = optionsArg.bufferMax;
|
|
119
115
|
this.execDelay = optionsArg.execDelay;
|
|
120
116
|
this.name = optionsArg.name;
|
|
117
|
+
this.taskSetup = optionsArg.taskSetup;
|
|
121
118
|
}
|
|
122
|
-
/**
|
|
123
|
-
* trigger the task. Will trigger buffered if this.buffered is true
|
|
124
|
-
*/
|
|
125
119
|
trigger(x) {
|
|
126
120
|
if (this.buffered) {
|
|
127
121
|
return this.triggerBuffered(x);
|
|
@@ -130,17 +124,9 @@ export class Task {
|
|
|
130
124
|
return this.triggerUnBuffered(x);
|
|
131
125
|
}
|
|
132
126
|
}
|
|
133
|
-
/**
|
|
134
|
-
* trigger task unbuffered.
|
|
135
|
-
* will actually run the task, not considering any buffered limits.
|
|
136
|
-
*/
|
|
137
127
|
triggerUnBuffered(x) {
|
|
138
128
|
return Task.runTask(this, { x: x });
|
|
139
129
|
}
|
|
140
|
-
/**
|
|
141
|
-
* trigger task buffered.
|
|
142
|
-
* note: .trigger() also calls this function
|
|
143
|
-
*/
|
|
144
130
|
triggerBuffered(x) {
|
|
145
131
|
return this.bufferRunner.trigger(x);
|
|
146
132
|
}
|
|
@@ -156,4 +142,4 @@ export class Task {
|
|
|
156
142
|
}
|
|
157
143
|
}
|
|
158
144
|
}
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLnRhc2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy90YXNrYnVmZmVyLmNsYXNzZXMudGFzay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFcEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBWWpELE1BQU0sT0FBTyxJQUFJO0lBQ2YsU0FBUztJQUNGLE1BQU0sQ0FBQyxXQUFXLENBQWdCLGlCQUFvRDtRQUMzRixRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssQ0FBQyxpQkFBaUI7Z0JBQ3JCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsS0FBSyxpQkFBaUIsWUFBWSxJQUFJO2dCQUNwQyxPQUFPLGlCQUE0QixDQUFDO1lBQ3RDLEtBQUssT0FBTyxpQkFBaUIsS0FBSyxVQUFVO2dCQUMxQyxNQUFNLFlBQVksR0FBRyxpQkFBNEMsQ0FBQztnQkFDbEUsT0FBTyxZQUFZLEVBQUUsQ0FBQztZQUN4QjtnQkFDRSxPQUFPLElBQUksQ0FBQztTQUNmO0lBQ0gsQ0FBQzthQUVhLHNCQUFpQixHQUFrQixVQUFVLENBQUM7UUFDMUQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQyxBQUo4QixDQUk3QjthQUVZLFdBQU0sR0FBRyxDQUFDLE9BQWtCLEVBQVcsRUFBRTtRQUNyRCxJQUFJLE9BQU8sWUFBWSxJQUFJLElBQUksT0FBTyxPQUFPLENBQUMsWUFBWSxLQUFLLFVBQVUsRUFBRTtZQUN6RSxPQUFPLElB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
|
|
@@ -11,10 +11,10 @@ export interface ITaskManagerConstructorOptions {
|
|
|
11
11
|
}
|
|
12
12
|
export declare class TaskManager {
|
|
13
13
|
randomId: string;
|
|
14
|
-
taskMap: plugins.lik.ObjectMap<Task
|
|
14
|
+
taskMap: plugins.lik.ObjectMap<Task<undefined>>;
|
|
15
15
|
private cronJobManager;
|
|
16
16
|
options: ITaskManagerConstructorOptions;
|
|
17
|
-
constructor(
|
|
17
|
+
constructor(optionsArg?: ITaskManagerConstructorOptions);
|
|
18
18
|
/**
|
|
19
19
|
* checks if a task is already present
|
|
20
20
|
* @param taskNameArg
|
|
@@ -53,10 +53,10 @@ export declare class TaskManager {
|
|
|
53
53
|
*/
|
|
54
54
|
descheduleTask(task: Task): Promise<void>;
|
|
55
55
|
/**
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
56
|
+
* returns the schedule of a specific task
|
|
57
|
+
* @param taskNameArg
|
|
58
|
+
*/
|
|
59
|
+
getScheduleForTaskName(taskNameArg: string): string | null;
|
|
60
60
|
/**
|
|
61
61
|
* starts the taskmanager
|
|
62
62
|
*/
|
|
@@ -2,14 +2,14 @@ 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
4
|
export class TaskManager {
|
|
5
|
-
constructor(
|
|
5
|
+
constructor(optionsArg = {}) {
|
|
6
6
|
this.randomId = plugins.isounique.uni();
|
|
7
7
|
this.taskMap = new plugins.lik.ObjectMap();
|
|
8
8
|
this.cronJobManager = new plugins.smarttime.CronManager();
|
|
9
9
|
this.options = {
|
|
10
10
|
distributedCoordinator: null,
|
|
11
11
|
};
|
|
12
|
-
this.options = Object.assign(this.options,
|
|
12
|
+
this.options = Object.assign(this.options, optionsArg);
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
15
|
* checks if a task is already present
|
|
@@ -109,10 +109,16 @@ export class TaskManager {
|
|
|
109
109
|
await this.descheduleTaskByName(task.name);
|
|
110
110
|
}
|
|
111
111
|
/**
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
112
|
+
* returns the schedule of a specific task
|
|
113
|
+
* @param taskNameArg
|
|
114
|
+
*/
|
|
115
|
+
getScheduleForTaskName(taskNameArg) {
|
|
116
|
+
const task = this.getTaskByName(taskNameArg);
|
|
117
|
+
if (!task || !task.cronJob) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
return task.cronJob.cronExpression;
|
|
121
|
+
}
|
|
116
122
|
/**
|
|
117
123
|
* starts the taskmanager
|
|
118
124
|
*/
|
|
@@ -126,4 +132,4 @@ export class TaskManager {
|
|
|
126
132
|
this.cronJobManager.stop();
|
|
127
133
|
}
|
|
128
134
|
}
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLnRhc2ttYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvdGFza2J1ZmZlci5jbGFzc2VzLnRhc2ttYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBWWhHLE1BQU0sT0FBTyxXQUFXO0lBU3RCLFlBQVksYUFBNkMsRUFBRTtRQVJwRCxhQUFRLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNuQyxZQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBUSxDQUFDO1FBQzNDLG1CQUFjLEdBQUcsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXRELFlBQU8sR0FBbUM7WUFDL0Msc0JBQXNCLEVBQUUsSUFBSTtTQUM3QixDQUFDO1FBR0EsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGFBQWEsQ0FBQyxXQUFtQjtRQUN0QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDdkMsT0FBTyxPQUFPLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSSxPQUFPLENBQUMsT0FBYTtRQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRTtZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7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
|
package/package.json
CHANGED
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -9,7 +9,7 @@ export interface ICycleObject {
|
|
|
9
9
|
export class CycleCounter {
|
|
10
10
|
public task: Task;
|
|
11
11
|
public cycleObjectArray: ICycleObject[] = [];
|
|
12
|
-
constructor(taskArg: Task) {
|
|
12
|
+
constructor(taskArg: Task<any>) {
|
|
13
13
|
this.task = taskArg;
|
|
14
14
|
}
|
|
15
15
|
public getPromiseForCycle(cycleCountArg: number) {
|
|
@@ -4,20 +4,24 @@ import { CycleCounter } from './taskbuffer.classes.cyclecounter.js';
|
|
|
4
4
|
|
|
5
5
|
import { logger } from './taskbuffer.logging.js';
|
|
6
6
|
|
|
7
|
-
export interface ITaskFunction {
|
|
8
|
-
(x?: any): PromiseLike<any>;
|
|
7
|
+
export interface ITaskFunction<T = undefined> {
|
|
8
|
+
(x?: any, setupValue?: T): PromiseLike<any>;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
export
|
|
11
|
+
export interface ITaskSetupFunction<T = undefined> {
|
|
12
|
+
(): Promise<T>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export type TPreOrAfterTaskFunction = () => Task<any>;
|
|
12
16
|
|
|
13
|
-
export class Task {
|
|
17
|
+
export class Task<T = undefined> {
|
|
14
18
|
// STATIC
|
|
15
|
-
public static extractTask(preOrAfterTaskArg: Task | TPreOrAfterTaskFunction): Task {
|
|
19
|
+
public static extractTask<T = undefined>(preOrAfterTaskArg: Task<T> | TPreOrAfterTaskFunction): Task<T> {
|
|
16
20
|
switch (true) {
|
|
17
21
|
case !preOrAfterTaskArg:
|
|
18
22
|
return null;
|
|
19
23
|
case preOrAfterTaskArg instanceof Task:
|
|
20
|
-
return preOrAfterTaskArg as Task
|
|
24
|
+
return preOrAfterTaskArg as Task<T>;
|
|
21
25
|
case typeof preOrAfterTaskArg === 'function':
|
|
22
26
|
const taskFunction = preOrAfterTaskArg as TPreOrAfterTaskFunction;
|
|
23
27
|
return taskFunction();
|
|
@@ -32,7 +36,7 @@ export class Task {
|
|
|
32
36
|
return done.promise;
|
|
33
37
|
};
|
|
34
38
|
|
|
35
|
-
public static isTask = (taskArg: Task): boolean => {
|
|
39
|
+
public static isTask = (taskArg: Task<any>): boolean => {
|
|
36
40
|
if (taskArg instanceof Task && typeof taskArg.taskFunction === 'function') {
|
|
37
41
|
return true;
|
|
38
42
|
} else {
|
|
@@ -40,10 +44,10 @@ export class Task {
|
|
|
40
44
|
}
|
|
41
45
|
};
|
|
42
46
|
|
|
43
|
-
public static isTaskTouched = (
|
|
44
|
-
taskArg: Task | TPreOrAfterTaskFunction,
|
|
45
|
-
touchedTasksArray: Task[]
|
|
46
|
-
): boolean
|
|
47
|
+
public static isTaskTouched<T = undefined> (
|
|
48
|
+
taskArg: Task<T> | TPreOrAfterTaskFunction,
|
|
49
|
+
touchedTasksArray: Task<T>[]
|
|
50
|
+
): boolean {
|
|
47
51
|
const taskToCheck = Task.extractTask(taskArg);
|
|
48
52
|
let result = false;
|
|
49
53
|
for (const keyArg in touchedTasksArray) {
|
|
@@ -54,42 +58,39 @@ export class Task {
|
|
|
54
58
|
return result;
|
|
55
59
|
};
|
|
56
60
|
|
|
57
|
-
public static runTask = async (
|
|
58
|
-
taskArg: Task | TPreOrAfterTaskFunction,
|
|
59
|
-
optionsArg: { x?: any; touchedTasksArray?: Task[] }
|
|
61
|
+
public static runTask = async <T>(
|
|
62
|
+
taskArg: Task<T> | TPreOrAfterTaskFunction,
|
|
63
|
+
optionsArg: { x?: any; touchedTasksArray?: Task<T>[] }
|
|
60
64
|
) => {
|
|
61
|
-
// extracts the task in case it is specified as a return value of a function
|
|
62
65
|
const taskToRun = Task.extractTask(taskArg);
|
|
63
66
|
const done = plugins.smartpromise.defer();
|
|
64
67
|
|
|
65
|
-
|
|
68
|
+
if (!taskToRun.setupValue && taskToRun.taskSetup) {
|
|
69
|
+
taskToRun.setupValue = await taskToRun.taskSetup();
|
|
70
|
+
}
|
|
71
|
+
|
|
66
72
|
if (taskToRun.execDelay) {
|
|
67
73
|
await plugins.smartdelay.delayFor(taskToRun.execDelay);
|
|
68
74
|
}
|
|
69
75
|
|
|
70
|
-
// set running params
|
|
71
76
|
taskToRun.running = true;
|
|
72
77
|
|
|
73
78
|
done.promise.then(async () => {
|
|
74
79
|
taskToRun.running = false;
|
|
75
80
|
});
|
|
76
81
|
|
|
77
|
-
// handle options
|
|
78
82
|
const options = {
|
|
79
83
|
...{ x: undefined, touchedTasksArray: [] },
|
|
80
84
|
...optionsArg,
|
|
81
85
|
};
|
|
82
86
|
const x = options.x;
|
|
83
|
-
const touchedTasksArray: Task[] = options.touchedTasksArray;
|
|
87
|
+
const touchedTasksArray: Task<T>[] = options.touchedTasksArray;
|
|
84
88
|
|
|
85
89
|
touchedTasksArray.push(taskToRun);
|
|
86
90
|
|
|
87
|
-
// run the task cascade
|
|
88
91
|
const localDeferred = plugins.smartpromise.defer();
|
|
89
92
|
localDeferred.promise
|
|
90
93
|
.then(() => {
|
|
91
|
-
// lets run any preTask
|
|
92
|
-
|
|
93
94
|
if (taskToRun.preTask && !Task.isTaskTouched(taskToRun.preTask, touchedTasksArray)) {
|
|
94
95
|
return Task.runTask(taskToRun.preTask, { x, touchedTasksArray });
|
|
95
96
|
} else {
|
|
@@ -99,9 +100,8 @@ export class Task {
|
|
|
99
100
|
}
|
|
100
101
|
})
|
|
101
102
|
.then(async (x) => {
|
|
102
|
-
// lets run the main task
|
|
103
103
|
try {
|
|
104
|
-
return await taskToRun.taskFunction(x);
|
|
104
|
+
return await taskToRun.taskFunction(x, taskToRun.setupValue);
|
|
105
105
|
} catch (e) {
|
|
106
106
|
console.log(e);
|
|
107
107
|
}
|
|
@@ -126,15 +126,9 @@ export class Task {
|
|
|
126
126
|
};
|
|
127
127
|
|
|
128
128
|
// INSTANCE
|
|
129
|
-
// mandatory properties
|
|
130
129
|
public name: string;
|
|
131
|
-
/**
|
|
132
|
-
* the version of the task
|
|
133
|
-
* should follow semver
|
|
134
|
-
* might be important for DistributedCoordinator
|
|
135
|
-
*/
|
|
136
130
|
public version: string;
|
|
137
|
-
public taskFunction: ITaskFunction
|
|
131
|
+
public taskFunction: ITaskFunction<T>;
|
|
138
132
|
public buffered: boolean;
|
|
139
133
|
public cronJob: plugins.smarttime.CronJob;
|
|
140
134
|
|
|
@@ -142,11 +136,9 @@ export class Task {
|
|
|
142
136
|
public execDelay: number;
|
|
143
137
|
public timeout: number;
|
|
144
138
|
|
|
145
|
-
|
|
146
|
-
public
|
|
147
|
-
public afterTask: Task | TPreOrAfterTaskFunction;
|
|
139
|
+
public preTask: Task<T> | TPreOrAfterTaskFunction;
|
|
140
|
+
public afterTask: Task<T> | TPreOrAfterTaskFunction;
|
|
148
141
|
|
|
149
|
-
// initialize by default
|
|
150
142
|
public running: boolean = false;
|
|
151
143
|
public bufferRunner = new BufferRunner(this);
|
|
152
144
|
public cycleCounter = new CycleCounter(this);
|
|
@@ -154,36 +146,18 @@ export class Task {
|
|
|
154
146
|
public idle: boolean = true;
|
|
155
147
|
private _state: string = 'ready';
|
|
156
148
|
|
|
149
|
+
public taskSetup: ITaskSetupFunction<T>;
|
|
150
|
+
public setupValue: T;
|
|
151
|
+
|
|
157
152
|
constructor(optionsArg: {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
taskFunction: ITaskFunction;
|
|
162
|
-
/**
|
|
163
|
-
* any other task to run before
|
|
164
|
-
*/
|
|
165
|
-
preTask?: Task | TPreOrAfterTaskFunction;
|
|
166
|
-
/**
|
|
167
|
-
* any other task to run after
|
|
168
|
-
*/
|
|
169
|
-
afterTask?: Task | TPreOrAfterTaskFunction;
|
|
170
|
-
/**
|
|
171
|
-
* wether this task should run buffered
|
|
172
|
-
*/
|
|
153
|
+
taskFunction: ITaskFunction<T>;
|
|
154
|
+
preTask?: Task<T> | TPreOrAfterTaskFunction;
|
|
155
|
+
afterTask?: Task<T> | TPreOrAfterTaskFunction;
|
|
173
156
|
buffered?: boolean;
|
|
174
|
-
/**
|
|
175
|
-
* the maximum buffer
|
|
176
|
-
*/
|
|
177
157
|
bufferMax?: number;
|
|
178
|
-
/**
|
|
179
|
-
* the execution delay, before the task is executed
|
|
180
|
-
* only makes sense when running in buffered mode
|
|
181
|
-
*/
|
|
182
158
|
execDelay?: number;
|
|
183
|
-
/**
|
|
184
|
-
* the name of the task
|
|
185
|
-
*/
|
|
186
159
|
name?: string;
|
|
160
|
+
taskSetup?: ITaskSetupFunction<T>;
|
|
187
161
|
}) {
|
|
188
162
|
this.taskFunction = optionsArg.taskFunction;
|
|
189
163
|
this.preTask = optionsArg.preTask;
|
|
@@ -193,11 +167,9 @@ export class Task {
|
|
|
193
167
|
this.bufferMax = optionsArg.bufferMax;
|
|
194
168
|
this.execDelay = optionsArg.execDelay;
|
|
195
169
|
this.name = optionsArg.name;
|
|
170
|
+
this.taskSetup = optionsArg.taskSetup;
|
|
196
171
|
}
|
|
197
172
|
|
|
198
|
-
/**
|
|
199
|
-
* trigger the task. Will trigger buffered if this.buffered is true
|
|
200
|
-
*/
|
|
201
173
|
public trigger(x?: any): Promise<any> {
|
|
202
174
|
if (this.buffered) {
|
|
203
175
|
return this.triggerBuffered(x);
|
|
@@ -206,18 +178,10 @@ export class Task {
|
|
|
206
178
|
}
|
|
207
179
|
}
|
|
208
180
|
|
|
209
|
-
/**
|
|
210
|
-
* trigger task unbuffered.
|
|
211
|
-
* will actually run the task, not considering any buffered limits.
|
|
212
|
-
*/
|
|
213
181
|
public triggerUnBuffered(x?: any): Promise<any> {
|
|
214
|
-
return Task.runTask(this, { x: x });
|
|
182
|
+
return Task.runTask<T>(this, { x: x });
|
|
215
183
|
}
|
|
216
184
|
|
|
217
|
-
/**
|
|
218
|
-
* trigger task buffered.
|
|
219
|
-
* note: .trigger() also calls this function
|
|
220
|
-
*/
|
|
221
185
|
public triggerBuffered(x?: any): Promise<any> {
|
|
222
186
|
return this.bufferRunner.trigger(x);
|
|
223
187
|
}
|