Compare commits

..

4 Commits

Author SHA1 Message Date
969088ad04 3.0.39 2021-10-06 11:58:36 +02:00
76768a1307 fix(core): update 2021-10-06 11:58:36 +02:00
419fe80bde 3.0.38 2021-01-02 19:30:16 +00:00
5a9584917c fix(core): update 2021-01-02 19:30:15 +00:00
12 changed files with 14652 additions and 63 deletions

14627
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
{
"name": "@pushrocks/smarttime",
"private": false,
"version": "3.0.37",
"version": "3.0.39",
"description": "handle time in smart ways",
"main": "dist_ts/index.js",
"typings": "dist_ts/index.d.ts",
@ -27,7 +27,8 @@
"@pushrocks/smartpromise": "^3.0.2",
"croner": "^1.1.23",
"dayjs": "^1.9.1",
"is-nan": "^1.3.0"
"is-nan": "^1.3.0",
"pretty-ms": "^7.0.1"
},
"files": [
"ts/**/*",

View File

@ -17,7 +17,7 @@ tap.test('should create a valid cronJon', async (tools) => {
let counter2 = 0;
let counter3 = 0;
const cronJob = testCronManager.addCronjob('*/2 * * * * *', async () => {
if (counter === 10) {
if (counter === 5) {
testCronManager.removeCronjob(cronJob);
done.resolve();
}
@ -25,7 +25,7 @@ tap.test('should create a valid cronJon', async (tools) => {
console.log(`${new Date().getSeconds()} hey ${counter} -> runs every 2 seconds`);
});
const cronJob2 = testCronManager.addCronjob('*/3 * * * * *', async () => {
if (counter2 === 10) {
if (counter2 === 5) {
testCronManager.removeCronjob(cronJob2);
done2.resolve();
}
@ -33,7 +33,7 @@ tap.test('should create a valid cronJon', async (tools) => {
console.log(`${new Date().getSeconds()} hey ${counter2} -> runs every 3 seconds`);
});
const cronJob3 = testCronManager.addCronjob('*/4 * * * * *', async () => {
if (counter3 === 10) {
if (counter3 === 5) {
done3.resolve();
}
counter3++;

View File

@ -1,27 +0,0 @@
import { tap, expect } from '@pushrocks/tapbundle';
import * as smarttime from '../ts/index';
let testCronManager: smarttime.CronManager;
tap.test('should create a valid instance of cronmanager', async () => {
testCronManager = new smarttime.CronManager();
expect(testCronManager).to.be.instanceOf(smarttime.CronManager);
});
tap.test('should create a valid cronJon', async (tools) => {
const done = tools.defer();
let counter = 0;
testCronManager.addCronjob('*/2 * * * * *', async () => {
if (counter === 10) {
done.resolve();
}
counter++;
console.log(`hey ${counter}`);
});
testCronManager.start();
await done.promise;
testCronManager.stop();
});
tap.start();

View File

@ -2,6 +2,11 @@ import { expect, tap } from '@pushrocks/tapbundle';
import * as smarttime from '../ts/index';
tap.test('should create a valid JavaScript Date', async () => {
const extendedDate = new smarttime.ExtendedDate(Date.now());
console.log(extendedDate);
});
tap.test('should create a valid JavaScript Date from European TimeStamp', async () => {
const extendedDate = smarttime.ExtendedDate.fromEuropeanDate('1.6.2018');
console.log(extendedDate);

View File

@ -1,5 +1,6 @@
import * as plugins from './smarttime.plugins';
import { CronJob } from './smarttime.classes.cronjob';
import { getMilliSecondsAsHumanReadableString } from './smarttime.units';
export class CronManager {
public executionTimeout: plugins.smartdelay.Timeout<void>;
@ -47,16 +48,19 @@ export class CronManager {
}
}
if (nextRunningCronjob) {
this.executionTimeout = new plugins.smartdelay.Timeout(nextRunningCronjob.getTimeToNextExecution());
this.executionTimeout = new plugins.smartdelay.Timeout(
nextRunningCronjob.getTimeToNextExecution()
);
console.log(
`Next CronJob scheduled in ${this.executionTimeout.getTimeLeft()} milliseconds`
`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');
};

View File

@ -1,4 +1,5 @@
import * as plugins from './smarttime.plugins';
import * as units from './smarttime.units';
export type TAvailableZone = 'Europe/Berlin';
@ -72,7 +73,7 @@ export class ExtendedDate extends Date {
// INSTANCE
public timezone: TAvailableZone;
constructor(unixMilli: number) {
constructor(unixMilli: number = Date.now()) {
super(unixMilli);
}
@ -126,7 +127,20 @@ export class ExtendedDate extends Date {
return plugins.dayjs(this.getTime()).format(formatArg);
}
/**
* boolean checks
*/
public isToday () {
return plugins.dayjs(this.getTime()).isToday();
}
public lessTimePassedToNow(unitArgs: units.IUnitCombinationArg): boolean {
const maxPassedUnixTime = units.getMilliSecondsFromUnits(unitArgs);
const actualPassedUnixTime = Date.now() - this.getTime();
return actualPassedUnixTime < maxPassedUnixTime;
}
public moreTimePassedToNow(unitArgs: units.IUnitCombinationArg) {
return !this.lessTimePassedToNow(unitArgs);
}
}

View File

@ -8,7 +8,7 @@ export class TimeStamp {
/**
* returns new TimeStamp from milliseconds
*/
public static fromMilliSeconds(milliSecondsArg) {
public static fromMilliSeconds(milliSecondsArg: number) {
return new TimeStamp(milliSecondsArg);
}

View File

@ -5,11 +5,12 @@ import * as smartpromise from '@pushrocks/smartpromise';
export { lik, smartdelay, smartpromise };
// third parties
import croner from 'croner';
// third parties;
const croner: any = require('croner');
import dayjs from 'dayjs';
import isToday from 'dayjs/plugin/isToday';
import prettyMs from 'pretty-ms';
dayjs.extend(isToday);
export { croner, dayjs };
export { croner, dayjs, prettyMs };

View File

@ -1,3 +1,5 @@
import * as plugins from './smarttime.plugins';
export let units = {
years: (timesArg = 1): number => {
return timesArg * 3.154e10;
@ -30,7 +32,7 @@ export interface IUnitCombinationArg {
export let getMilliSecondsFromUnits = (combinationArg: IUnitCombinationArg) => {
let timeInMilliseconds = 0;
let addMilliSeconds = (milliSecondsArg) => {
let addMilliSeconds = (milliSecondsArg: number) => {
timeInMilliseconds = timeInMilliseconds + milliSecondsArg;
};
if (combinationArg.years) {
@ -54,3 +56,7 @@ export let getMilliSecondsFromUnits = (combinationArg: IUnitCombinationArg) => {
return timeInMilliseconds;
};
export const getMilliSecondsAsHumanReadableString = (milliSecondsArg: number): string => {
return plugins.prettyMs(milliSecondsArg);
}