Compare commits

..

6 Commits

Author SHA1 Message Date
22e6798a3c 4.0.6 2023-10-20 12:50:48 +02:00
4dd4980374 fix(core): update 2023-10-20 12:50:47 +02:00
edadbe6cf5 4.0.5 2023-08-13 21:55:07 +02:00
58f213a099 fix(core): update 2023-08-13 21:55:06 +02:00
1e5fd80a69 4.0.4 2023-07-21 03:39:59 +02:00
1de9412a31 fix(core): update 2023-07-21 03:39:59 +02:00
9 changed files with 1787 additions and 831 deletions

View File

@ -119,6 +119,6 @@ jobs:
run: | run: |
npmci node install stable npmci node install stable
npmci npm install npmci npm install
pnpm install -g @gitzone/tsdoc pnpm install -g @git.zone/tsdoc
npmci command tsdoc npmci command tsdoc
continue-on-error: true continue-on-error: true

View File

@ -1,7 +1,7 @@
{ {
"name": "@push.rocks/smarttime", "name": "@push.rocks/smarttime",
"private": false, "private": false,
"version": "4.0.3", "version": "4.0.6",
"description": "handle time in smart ways", "description": "handle time in smart ways",
"main": "dist_ts/index.js", "main": "dist_ts/index.js",
"typings": "dist_ts/index.d.ts", "typings": "dist_ts/index.d.ts",
@ -13,19 +13,19 @@
"buildDocs": "tsdoc" "buildDocs": "tsdoc"
}, },
"devDependencies": { "devDependencies": {
"@gitzone/tsbuild": "^2.1.66", "@git.zone/tsbuild": "^2.1.66",
"@gitzone/tsbundle": "^2.0.8", "@git.zone/tsbundle": "^2.0.8",
"@gitzone/tsrun": "^1.2.44", "@git.zone/tsrun": "^1.2.44",
"@gitzone/tstest": "^1.0.77", "@git.zone/tstest": "^1.0.77",
"@push.rocks/tapbundle": "^5.0.12", "@push.rocks/tapbundle": "^5.0.15",
"@types/node": "^20.4.2" "@types/node": "^20.8.7"
}, },
"dependencies": { "dependencies": {
"@push.rocks/lik": "^6.0.3", "@push.rocks/lik": "^6.0.5",
"@push.rocks/smartdelay": "^3.0.5", "@push.rocks/smartdelay": "^3.0.5",
"@push.rocks/smartpromise": "^4.0.3", "@push.rocks/smartpromise": "^4.0.3",
"croner": "^5.3.4", "croner": "^7.0.3",
"dayjs": "^1.11.9", "dayjs": "^1.11.10",
"is-nan": "^1.3.2", "is-nan": "^1.3.2",
"pretty-ms": "^8.0.0" "pretty-ms": "^8.0.0"
}, },

2511
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@push.rocks/smarttime', name: '@push.rocks/smarttime',
version: '4.0.3', version: '4.0.6',
description: 'handle time in smart ways' description: 'handle time in smart ways'
} }

View File

@ -34,40 +34,41 @@ export class CronManager {
for (const cronJob of this.cronjobs.getArray()) { for (const cronJob of this.cronjobs.getArray()) {
cronJob.start(); cronJob.start();
} }
const runCronCycle = async () => { this.runCronCycle();
this.executionTimeout = new plugins.smartdelay.Timeout(0);
do {
let nextRunningCronjob: CronJob;
for (const cronJob of this.cronjobs.getArray()) {
cronJob.checkExecution();
if (
!nextRunningCronjob ||
cronJob.getTimeToNextExecution() < nextRunningCronjob.getTimeToNextExecution()
) {
nextRunningCronjob = cronJob;
}
}
if (nextRunningCronjob) {
this.executionTimeout = new plugins.smartdelay.Timeout(
nextRunningCronjob.getTimeToNextExecution()
);
console.log(
`Next CronJob scheduled in ${getMilliSecondsAsHumanReadableString(
this.executionTimeout.getTimeLeft()
)}`
);
} else {
this.executionTimeout = new plugins.smartdelay.Timeout(1000);
console.log('no cronjobs specified! Checking again in 1 second');
}
await this.executionTimeout.promise;
} while (this.status === 'started');
};
runCronCycle();
} }
} }
private async runCronCycle() {
this.executionTimeout = new plugins.smartdelay.Timeout(0);
do {
let nextRunningCronjob: CronJob;
for (const cronJob of this.cronjobs.getArray()) {
cronJob.checkExecution();
if (
!nextRunningCronjob ||
cronJob.getTimeToNextExecution() < nextRunningCronjob.getTimeToNextExecution()
) {
nextRunningCronjob = cronJob;
}
}
if (nextRunningCronjob) {
this.executionTimeout = new plugins.smartdelay.Timeout(
nextRunningCronjob.getTimeToNextExecution()
);
console.log(
`Next CronJob scheduled in ${getMilliSecondsAsHumanReadableString(
this.executionTimeout.getTimeLeft()
)}`
);
} else {
this.executionTimeout = new plugins.smartdelay.Timeout(1000);
console.log('no cronjobs specified! Checking again in 1 second');
}
await this.executionTimeout.promise;
} while (this.status === 'started');
};
/** /**
* stops all cronjobs * stops all cronjobs
*/ */

View File

@ -36,7 +36,7 @@ export class Timer {
/** /**
* the current timeout the needs to be canceled when this Timer is stopped * the current timeout the needs to be canceled when this Timer is stopped
*/ */
private currentTimeout: NodeJS.Timer; private currentTimeout: NodeJS.Timeout;
// a deferred triggeted when Timer has completed // a deferred triggeted when Timer has completed
private completedDeferred = plugins.smartpromise.defer<void>(); private completedDeferred = plugins.smartpromise.defer<void>();

View File

@ -19,6 +19,9 @@ export let units = {
minutes: (timesArg = 1) => { minutes: (timesArg = 1) => {
return timesArg * 60000; return timesArg * 60000;
}, },
seconds: (timesArg = 1) => {
return timesArg * 1000;
},
}; };
export interface IUnitCombinationArg { export interface IUnitCombinationArg {
@ -28,6 +31,7 @@ export interface IUnitCombinationArg {
days?: number; days?: number;
hours?: number; hours?: number;
minutes?: number; minutes?: number;
seconds?: number;
} }
export let getMilliSecondsFromUnits = (combinationArg: IUnitCombinationArg) => { export let getMilliSecondsFromUnits = (combinationArg: IUnitCombinationArg) => {
@ -53,6 +57,9 @@ export let getMilliSecondsFromUnits = (combinationArg: IUnitCombinationArg) => {
if (combinationArg.minutes) { if (combinationArg.minutes) {
addMilliSeconds(units.minutes(combinationArg.minutes)); addMilliSeconds(units.minutes(combinationArg.minutes));
} }
if (combinationArg.seconds) {
addMilliSeconds(units.seconds(combinationArg.seconds));
}
return timeInMilliseconds; return timeInMilliseconds;
}; };

View File

@ -3,9 +3,12 @@
"experimentalDecorators": true, "experimentalDecorators": true,
"useDefineForClassFields": false, "useDefineForClassFields": false,
"target": "ES2022", "target": "ES2022",
"module": "ES2022", "module": "NodeNext",
"moduleResolution": "nodenext", "moduleResolution": "NodeNext",
"esModuleInterop": true, "esModuleInterop": true,
"verbatimModuleSyntax": true, "verbatimModuleSyntax": true
} },
"exclude": [
"dist_*/**/*.d.ts"
]
} }