@push.rocks/smarttime 4.0.4 → 4.0.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/dist_bundle/bundle.js +5734 -20640
- package/dist_bundle/bundle.js.map +4 -4
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/smarttime.classes.cronmanager.d.ts +1 -0
- package/dist_ts/smarttime.classes.cronmanager.js +25 -24
- package/dist_ts/smarttime.units.d.ts +2 -0
- package/dist_ts/smarttime.units.js +7 -1
- package/package.json +10 -10
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/smarttime.classes.cronmanager.ts +32 -31
- package/ts/smarttime.classes.timer.ts +1 -1
- package/ts/smarttime.units.ts +7 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smarttime',
|
|
6
|
-
version: '4.0.
|
|
6
|
+
version: '4.0.5',
|
|
7
7
|
description: 'handle time in smart ways'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx1QkFBdUI7SUFDN0IsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLDJCQUEyQjtDQUN6QyxDQUFBIn0=
|
|
@@ -27,31 +27,32 @@ export class CronManager {
|
|
|
27
27
|
for (const cronJob of this.cronjobs.getArray()) {
|
|
28
28
|
cronJob.start();
|
|
29
29
|
}
|
|
30
|
-
|
|
31
|
-
this.executionTimeout = new plugins.smartdelay.Timeout(0);
|
|
32
|
-
do {
|
|
33
|
-
let nextRunningCronjob;
|
|
34
|
-
for (const cronJob of this.cronjobs.getArray()) {
|
|
35
|
-
cronJob.checkExecution();
|
|
36
|
-
if (!nextRunningCronjob ||
|
|
37
|
-
cronJob.getTimeToNextExecution() < nextRunningCronjob.getTimeToNextExecution()) {
|
|
38
|
-
nextRunningCronjob = cronJob;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
if (nextRunningCronjob) {
|
|
42
|
-
this.executionTimeout = new plugins.smartdelay.Timeout(nextRunningCronjob.getTimeToNextExecution());
|
|
43
|
-
console.log(`Next CronJob scheduled in ${getMilliSecondsAsHumanReadableString(this.executionTimeout.getTimeLeft())}`);
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
this.executionTimeout = new plugins.smartdelay.Timeout(1000);
|
|
47
|
-
console.log('no cronjobs specified! Checking again in 1 second');
|
|
48
|
-
}
|
|
49
|
-
await this.executionTimeout.promise;
|
|
50
|
-
} while (this.status === 'started');
|
|
51
|
-
};
|
|
52
|
-
runCronCycle();
|
|
30
|
+
this.runCronCycle();
|
|
53
31
|
}
|
|
54
32
|
}
|
|
33
|
+
async runCronCycle() {
|
|
34
|
+
this.executionTimeout = new plugins.smartdelay.Timeout(0);
|
|
35
|
+
do {
|
|
36
|
+
let nextRunningCronjob;
|
|
37
|
+
for (const cronJob of this.cronjobs.getArray()) {
|
|
38
|
+
cronJob.checkExecution();
|
|
39
|
+
if (!nextRunningCronjob ||
|
|
40
|
+
cronJob.getTimeToNextExecution() < nextRunningCronjob.getTimeToNextExecution()) {
|
|
41
|
+
nextRunningCronjob = cronJob;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (nextRunningCronjob) {
|
|
45
|
+
this.executionTimeout = new plugins.smartdelay.Timeout(nextRunningCronjob.getTimeToNextExecution());
|
|
46
|
+
console.log(`Next CronJob scheduled in ${getMilliSecondsAsHumanReadableString(this.executionTimeout.getTimeLeft())}`);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
this.executionTimeout = new plugins.smartdelay.Timeout(1000);
|
|
50
|
+
console.log('no cronjobs specified! Checking again in 1 second');
|
|
51
|
+
}
|
|
52
|
+
await this.executionTimeout.promise;
|
|
53
|
+
} while (this.status === 'started');
|
|
54
|
+
}
|
|
55
|
+
;
|
|
55
56
|
/**
|
|
56
57
|
* stops all cronjobs
|
|
57
58
|
*/
|
|
@@ -68,4 +69,4 @@ export class CronManager {
|
|
|
68
69
|
}
|
|
69
70
|
}
|
|
70
71
|
}
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnR0aW1lLmNsYXNzZXMuY3Jvbm1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydHRpbWUuY2xhc3Nlcy5jcm9ubWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQXFCLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFNUUsTUFBTSxPQUFPLFdBQVc7SUFNdEI7UUFITyxXQUFNLEdBQTBCLFNBQVMsQ0FBQztRQUMxQyxhQUFRLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBVyxDQUFDO0lBRXhDLENBQUM7SUFFVCxVQUFVLENBQUMsaUJBQXlCLEVBQUUsZUFBNkI7UUFDeEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUU7WUFDN0IsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3BCO1FBRUQsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVNLGFBQWEsQ0FBQyxVQUFtQjtRQUN0QyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSztRQUNWLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7WUFDeEIsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUM5QyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDakI7WUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLFlBQVk7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsR0FBRztZQUNELElBQUksa0JBQTJCLENBQUM7WUFDaEMsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUM5QyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3pCLElBQ0UsQ0FBQyxrQkFBa0I7b0JBQ25CLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLGtCQUFrQixDQUFDLHNCQUFzQixFQUFFLEVBQzlFO29CQUNBLGtCQUFrQixHQUFHLE9BQU8sQ0FBQztpQkFDOUI7YUFDRjtZQUNELElBQUksa0JBQWtCLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUNwRCxrQkFBa0IsQ0FBQyxzQkFBc0IsRUFBRSxDQUM1QyxDQUFDO2dCQUNGLE9BQU8sQ0FBQyxHQUFHLENBQ1QsNkJBQTZCLG9DQUFvQyxDQUMvRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQ3BDLEVBQUUsQ0FDSixDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzdELE9BQU8sQ0FBQyxHQUFHLENBQUMsbURBQW1ELENBQUMsQ0FBQzthQUNsRTtZQUVELE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztTQUNyQyxRQUFRLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFO0lBQ3RDLENBQUM7SUFBQSxDQUFDO0lBRUY7O09BRUc7SUFDSSxJQUFJO1FBQ1QsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRTtZQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztZQUN4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDaEM7YUFBTTtZQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0VBQWdFLENBQUMsQ0FBQztTQUMvRTtRQUNELEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMzQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDYjtJQUNILENBQUM7Q0FDRiJ9
|
|
@@ -5,6 +5,7 @@ export declare let units: {
|
|
|
5
5
|
days: (timesArg?: number) => number;
|
|
6
6
|
hours: (timesArg?: number) => number;
|
|
7
7
|
minutes: (timesArg?: number) => number;
|
|
8
|
+
seconds: (timesArg?: number) => number;
|
|
8
9
|
};
|
|
9
10
|
export interface IUnitCombinationArg {
|
|
10
11
|
years?: number;
|
|
@@ -13,6 +14,7 @@ export interface IUnitCombinationArg {
|
|
|
13
14
|
days?: number;
|
|
14
15
|
hours?: number;
|
|
15
16
|
minutes?: number;
|
|
17
|
+
seconds?: number;
|
|
16
18
|
}
|
|
17
19
|
export declare let getMilliSecondsFromUnits: (combinationArg: IUnitCombinationArg) => number;
|
|
18
20
|
export declare const getMilliSecondsAsHumanReadableString: (milliSecondsArg: number) => string;
|
|
@@ -18,6 +18,9 @@ export let units = {
|
|
|
18
18
|
minutes: (timesArg = 1) => {
|
|
19
19
|
return timesArg * 60000;
|
|
20
20
|
},
|
|
21
|
+
seconds: (timesArg = 1) => {
|
|
22
|
+
return timesArg * 1000;
|
|
23
|
+
},
|
|
21
24
|
};
|
|
22
25
|
export let getMilliSecondsFromUnits = (combinationArg) => {
|
|
23
26
|
let timeInMilliseconds = 0;
|
|
@@ -42,9 +45,12 @@ export let getMilliSecondsFromUnits = (combinationArg) => {
|
|
|
42
45
|
if (combinationArg.minutes) {
|
|
43
46
|
addMilliSeconds(units.minutes(combinationArg.minutes));
|
|
44
47
|
}
|
|
48
|
+
if (combinationArg.seconds) {
|
|
49
|
+
addMilliSeconds(units.seconds(combinationArg.seconds));
|
|
50
|
+
}
|
|
45
51
|
return timeInMilliseconds;
|
|
46
52
|
};
|
|
47
53
|
export const getMilliSecondsAsHumanReadableString = (milliSecondsArg) => {
|
|
48
54
|
return plugins.prettyMs(milliSecondsArg);
|
|
49
55
|
};
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnR0aW1lLnVuaXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnR0aW1lLnVuaXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sd0JBQXdCLENBQUM7QUFFbEQsTUFBTSxDQUFDLElBQUksS0FBSyxHQUFHO0lBQ2pCLEtBQUssRUFBRSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQVUsRUFBRTtRQUM5QixPQUFPLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDN0IsQ0FBQztJQUNELE1BQU0sRUFBRSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQVUsRUFBRTtRQUMvQixPQUFPLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDNUIsQ0FBQztJQUNELEtBQUssRUFBRSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsRUFBRTtRQUN0QixPQUFPLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDNUIsQ0FBQztJQUNELElBQUksRUFBRSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsRUFBRTtRQUNyQixPQUFPLFFBQVEsR0FBRyxNQUFNLENBQUM7SUFDM0IsQ0FBQztJQUNELEtBQUssRUFBRSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsRUFBRTtRQUN0QixPQUFPLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUNELE9BQU8sRUFBRSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsRUFBRTtRQUN4QixPQUFPLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUNELE9BQU8sRUFBRSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsRUFBRTtRQUN4QixPQUFPLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDekIsQ0FBQztDQUNGLENBQUM7QUFZRixNQUFNLENBQUMsSUFBSSx3QkFBd0IsR0FBRyxDQUFDLGNBQW1DLEVBQUUsRUFBRTtJQUM1RSxJQUFJLGtCQUFrQixHQUFHLENBQUMsQ0FBQztJQUMzQixJQUFJLGVBQWUsR0FBRyxDQUFDLGVBQXVCLEVBQUUsRUFBRTtRQUNoRCxrQkFBa0IsR0FBRyxrQkFBa0IsR0FBRyxlQUFlLENBQUM7SUFDNUQsQ0FBQyxDQUFDO0lBQ0YsSUFBSSxjQUFjLENBQUMsS0FBSyxFQUFFO1FBQ3hCLGVBQWUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBQ3BEO0lBQ0QsSUFBSSxjQUFjLENBQUMsTUFBTSxFQUFFO1FBQ3pCLGVBQWUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0tBQ3REO0lBQ0QsSUFBSSxjQUFjLENBQUMsS0FBSyxFQUFFO1FBQ3hCLGVBQWUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBQ3BEO0lBQ0QsSUFBSSxjQUFjLENBQUMsSUFBSSxFQUFFO1FBQ3ZCLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQ2xEO0lBQ0QsSUFBSSxjQUFjLENBQUMsS0FBSyxFQUFFO1FBQ3hCLGVBQWUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBQ3BEO0lBQ0QsSUFBSSxjQUFjLENBQUMsT0FBTyxFQUFFO1FBQzFCLGVBQWUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0tBQ3hEO0lBQ0QsSUFBSSxjQUFjLENBQUMsT0FBTyxFQUFFO1FBQzFCLGVBQWUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0tBQ3hEO0lBRUQsT0FBTyxrQkFBa0IsQ0FBQztBQUM1QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQ0FBb0MsR0FBRyxDQUFDLGVBQXVCLEVBQVUsRUFBRTtJQUN0RixPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUFDIn0=
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@push.rocks/smarttime",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "4.0.
|
|
4
|
+
"version": "4.0.6",
|
|
5
5
|
"description": "handle time in smart ways",
|
|
6
6
|
"main": "dist_ts/index.js",
|
|
7
7
|
"typings": "dist_ts/index.d.ts",
|
|
@@ -13,19 +13,19 @@
|
|
|
13
13
|
"buildDocs": "tsdoc"
|
|
14
14
|
},
|
|
15
15
|
"devDependencies": {
|
|
16
|
-
"@
|
|
17
|
-
"@
|
|
18
|
-
"@
|
|
19
|
-
"@
|
|
20
|
-
"@push.rocks/tapbundle": "^5.0.
|
|
21
|
-
"@types/node": "^20.
|
|
16
|
+
"@git.zone/tsbuild": "^2.1.66",
|
|
17
|
+
"@git.zone/tsbundle": "^2.0.8",
|
|
18
|
+
"@git.zone/tsrun": "^1.2.44",
|
|
19
|
+
"@git.zone/tstest": "^1.0.77",
|
|
20
|
+
"@push.rocks/tapbundle": "^5.0.15",
|
|
21
|
+
"@types/node": "^20.8.7"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@push.rocks/lik": "^6.0.
|
|
24
|
+
"@push.rocks/lik": "^6.0.5",
|
|
25
25
|
"@push.rocks/smartdelay": "^3.0.5",
|
|
26
26
|
"@push.rocks/smartpromise": "^4.0.3",
|
|
27
|
-
"croner": "^
|
|
28
|
-
"dayjs": "^1.11.
|
|
27
|
+
"croner": "^7.0.3",
|
|
28
|
+
"dayjs": "^1.11.10",
|
|
29
29
|
"is-nan": "^1.3.2",
|
|
30
30
|
"pretty-ms": "^8.0.0"
|
|
31
31
|
},
|
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -34,40 +34,41 @@ export class CronManager {
|
|
|
34
34
|
for (const cronJob of this.cronjobs.getArray()) {
|
|
35
35
|
cronJob.start();
|
|
36
36
|
}
|
|
37
|
-
|
|
38
|
-
this.executionTimeout = new plugins.smartdelay.Timeout(0);
|
|
39
|
-
do {
|
|
40
|
-
let nextRunningCronjob: CronJob;
|
|
41
|
-
for (const cronJob of this.cronjobs.getArray()) {
|
|
42
|
-
cronJob.checkExecution();
|
|
43
|
-
if (
|
|
44
|
-
!nextRunningCronjob ||
|
|
45
|
-
cronJob.getTimeToNextExecution() < nextRunningCronjob.getTimeToNextExecution()
|
|
46
|
-
) {
|
|
47
|
-
nextRunningCronjob = cronJob;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
if (nextRunningCronjob) {
|
|
51
|
-
this.executionTimeout = new plugins.smartdelay.Timeout(
|
|
52
|
-
nextRunningCronjob.getTimeToNextExecution()
|
|
53
|
-
);
|
|
54
|
-
console.log(
|
|
55
|
-
`Next CronJob scheduled in ${getMilliSecondsAsHumanReadableString(
|
|
56
|
-
this.executionTimeout.getTimeLeft()
|
|
57
|
-
)}`
|
|
58
|
-
);
|
|
59
|
-
} else {
|
|
60
|
-
this.executionTimeout = new plugins.smartdelay.Timeout(1000);
|
|
61
|
-
console.log('no cronjobs specified! Checking again in 1 second');
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
await this.executionTimeout.promise;
|
|
65
|
-
} while (this.status === 'started');
|
|
66
|
-
};
|
|
67
|
-
runCronCycle();
|
|
37
|
+
this.runCronCycle();
|
|
68
38
|
}
|
|
69
39
|
}
|
|
70
40
|
|
|
41
|
+
private async runCronCycle() {
|
|
42
|
+
this.executionTimeout = new plugins.smartdelay.Timeout(0);
|
|
43
|
+
do {
|
|
44
|
+
let nextRunningCronjob: CronJob;
|
|
45
|
+
for (const cronJob of this.cronjobs.getArray()) {
|
|
46
|
+
cronJob.checkExecution();
|
|
47
|
+
if (
|
|
48
|
+
!nextRunningCronjob ||
|
|
49
|
+
cronJob.getTimeToNextExecution() < nextRunningCronjob.getTimeToNextExecution()
|
|
50
|
+
) {
|
|
51
|
+
nextRunningCronjob = cronJob;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (nextRunningCronjob) {
|
|
55
|
+
this.executionTimeout = new plugins.smartdelay.Timeout(
|
|
56
|
+
nextRunningCronjob.getTimeToNextExecution()
|
|
57
|
+
);
|
|
58
|
+
console.log(
|
|
59
|
+
`Next CronJob scheduled in ${getMilliSecondsAsHumanReadableString(
|
|
60
|
+
this.executionTimeout.getTimeLeft()
|
|
61
|
+
)}`
|
|
62
|
+
);
|
|
63
|
+
} else {
|
|
64
|
+
this.executionTimeout = new plugins.smartdelay.Timeout(1000);
|
|
65
|
+
console.log('no cronjobs specified! Checking again in 1 second');
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
await this.executionTimeout.promise;
|
|
69
|
+
} while (this.status === 'started');
|
|
70
|
+
};
|
|
71
|
+
|
|
71
72
|
/**
|
|
72
73
|
* stops all cronjobs
|
|
73
74
|
*/
|
|
@@ -36,7 +36,7 @@ export class Timer {
|
|
|
36
36
|
/**
|
|
37
37
|
* the current timeout the needs to be canceled when this Timer is stopped
|
|
38
38
|
*/
|
|
39
|
-
private currentTimeout: NodeJS.
|
|
39
|
+
private currentTimeout: NodeJS.Timeout;
|
|
40
40
|
|
|
41
41
|
// a deferred triggeted when Timer has completed
|
|
42
42
|
private completedDeferred = plugins.smartpromise.defer<void>();
|
package/ts/smarttime.units.ts
CHANGED
|
@@ -19,6 +19,9 @@ export let units = {
|
|
|
19
19
|
minutes: (timesArg = 1) => {
|
|
20
20
|
return timesArg * 60000;
|
|
21
21
|
},
|
|
22
|
+
seconds: (timesArg = 1) => {
|
|
23
|
+
return timesArg * 1000;
|
|
24
|
+
},
|
|
22
25
|
};
|
|
23
26
|
|
|
24
27
|
export interface IUnitCombinationArg {
|
|
@@ -28,6 +31,7 @@ export interface IUnitCombinationArg {
|
|
|
28
31
|
days?: number;
|
|
29
32
|
hours?: number;
|
|
30
33
|
minutes?: number;
|
|
34
|
+
seconds?: number;
|
|
31
35
|
}
|
|
32
36
|
|
|
33
37
|
export let getMilliSecondsFromUnits = (combinationArg: IUnitCombinationArg) => {
|
|
@@ -53,6 +57,9 @@ export let getMilliSecondsFromUnits = (combinationArg: IUnitCombinationArg) => {
|
|
|
53
57
|
if (combinationArg.minutes) {
|
|
54
58
|
addMilliSeconds(units.minutes(combinationArg.minutes));
|
|
55
59
|
}
|
|
60
|
+
if (combinationArg.seconds) {
|
|
61
|
+
addMilliSeconds(units.seconds(combinationArg.seconds));
|
|
62
|
+
}
|
|
56
63
|
|
|
57
64
|
return timeInMilliseconds;
|
|
58
65
|
};
|