UNPKG

@pushrocks/smarttime

Version:

handle time in smart ways

44 lines 3.11 kB
import * as plugins from './smarttime.plugins.js'; import './smarttime.classes.cronmanager.js'; import './smarttime.classes.cronparser.js'; export class CronJob { constructor(cronManager, cronExpressionArg, jobFunction) { this.status = 'initial'; this.nextExecutionUnix = 0; this.cronExpression = cronExpressionArg; this.jobFunction = jobFunction; this.cronParser = plugins.croner(cronExpressionArg); } /** * checks wether the cronjob needs to be executed */ checkExecution() { if (this.nextExecutionUnix === 0) { this.getNextExecutionTime(); } if (Date.now() > this.nextExecutionUnix) { const maybePromise = this.jobFunction(this.nextExecutionUnix); if (maybePromise instanceof Promise) { maybePromise.catch((e) => console.log(e)); } this.nextExecutionUnix = this.getNextExecutionTime(); } return this.nextExecutionUnix; } getNextExecutionTime() { return (this.nextExecutionUnix = Date.now() + this.getTimeToNextExecution()); } /** * gets the time to next execution */ getTimeToNextExecution() { return this.cronParser.msToNext(); } start() { this.status = 'started'; } stop() { this.status = 'stopped'; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnR0aW1lLmNsYXNzZXMuY3JvbmpvYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0dGltZS5jbGFzc2VzLmNyb25qb2IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUE0QixvQ0FBb0MsQ0FBQztBQUVqRSxPQUEyQixtQ0FBbUMsQ0FBQztBQU0vRCxNQUFNLE9BQU8sT0FBTztJQU9sQixZQUFZLFdBQXdCLEVBQUUsaUJBQXlCLEVBQUUsV0FBeUI7UUFMbkYsV0FBTSxHQUFzQyxTQUFTLENBQUM7UUFHckQsc0JBQWlCLEdBQVcsQ0FBQyxDQUFDO1FBR3BDLElBQUksQ0FBQyxjQUFjLEdBQUcsaUJBQWlCLENBQUM7UUFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksY0FBYztRQUNuQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDN0I7UUFDRCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDdkMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUM5RCxJQUFJLFlBQVksWUFBWSxPQUFPLEVBQUU7Z0JBQ25DLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMzQztZQUNELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztTQUN0RDtRQUNELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2hDLENBQUM7SUFFTSxvQkFBb0I7UUFDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxzQkFBc0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVNLElBQUk7UUFDVCxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztJQUMxQixDQUFDO0NBQ0YifQ==