diff --git a/package-lock.json b/package-lock.json index cd60e0a..3da39c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@pushrocks/smarttime", - "version": "3.0.6", + "version": "3.0.5", "lockfileVersion": 1, "requires": true, "dependencies": { "@airbnb/node-memwatch": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@airbnb/node-memwatch/-/node-memwatch-1.0.2.tgz", + "resolved": "https://verdaccio.lossless.one/@airbnb%2fnode-memwatch/-/node-memwatch-1.0.2.tgz", "integrity": "sha512-2R+MEEMSTUdKwQ6NFWkyA/UNoSjL1tMldZqJbZpgXSwNMBzlNlkUWEXKu9RqTTMkDqJRfGJ2VDs8gPlPK2APDQ==", "dev": true, "requires": { @@ -113,7 +113,7 @@ }, "@pushrocks/early": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@pushrocks/early/-/early-3.0.3.tgz", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fearly/-/early-3.0.3.tgz", "integrity": "sha512-71/nwxTpqdp1glmHz4YaGusNl/XOOcPelAxC9RA6rpS/6280QyY2u4yx+mRdMrCzn7ruLYF5awbkS8llNZ94Pg==", "dev": true, "requires": { @@ -357,35 +357,38 @@ } }, "@pushrocks/tapbundle": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@pushrocks/tapbundle/-/tapbundle-3.0.7.tgz", - "integrity": "sha512-ZI4fhXPy8XMfiy/QofP0ZDuFdv3cErm+FP/+AXaNKdgCCx01MXNTYSUdER1GPUXW3ZbiXdurkLJlxlhIzD1ZJw==", + "version": "3.0.9", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2ftapbundle/-/tapbundle-3.0.9.tgz", + "integrity": "sha512-+EMdP3iykAtx192sebHBAWCE+2RGUU7q9kp8iHe62H16WSbDDaDpnRNd6VHv389qTaZlubQb0d/FR+uQJUVUDQ==", "dev": true, "requires": { "@pushrocks/early": "^3.0.3", - "@pushrocks/smartdelay": "^2.0.2", - "@pushrocks/smartpromise": "^2.0.5", + "@pushrocks/smartdelay": "^2.0.3", + "@pushrocks/smartpromise": "^3.0.2", "leakage": "^0.4.0", "smartchai": "^2.0.1" }, "dependencies": { - "@pushrocks/smartpromise": { - "version": "2.0.5", - "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartpromise/-/smartpromise-2.0.5.tgz", - "integrity": "sha512-9j/chLtIiNkR0MDw7Mpxg9slxAVvAQwUZuiaPYX5KpHdKxQaHLI1VZ8IN0vPhwlfgNO4i4vGXV0wB8BvSDj03g==", - "dev": true + "@pushrocks/smartdelay": { + "version": "2.0.3", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartdelay/-/smartdelay-2.0.3.tgz", + "integrity": "sha512-TXKDDqsc7sBTLl+oiYNaF6IdNk1n70i8ur8QfwcUU6tegTnrEkvMWy9h5Zdty/fq1ioCNpKLvuXoA+fgYVwKGQ==", + "dev": true, + "requires": { + "@pushrocks/smartpromise": "^3.0.2" + } } } }, "@types/chai": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.4.tgz", - "integrity": "sha512-h6+VEw2Vr3ORiFCyyJmcho2zALnUq9cvdB/IO8Xs9itrJVCenC7o26A6+m7D0ihTTr65eS259H5/Ghl/VjYs6g==", + "version": "4.1.7", + "resolved": "https://verdaccio.lossless.one/@types%2fchai/-/chai-4.1.7.tgz", + "integrity": "sha512-2Y8uPt0/jwjhQ6EiluT0XCri1Dbplr0ZxfFXUz+ye13gaqE8u5gL5ppao1JrUYr9cIip5S6MvQzBS7Kke7U9VA==", "dev": true }, "@types/chai-as-promised": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.0.tgz", + "resolved": "https://verdaccio.lossless.one/@types%2fchai-as-promised/-/chai-as-promised-7.1.0.tgz", "integrity": "sha512-MFiW54UOSt+f2bRw8J7LgQeIvE/9b4oGvwU7XW30S9QGAiHGnU/fmiOprsyMkdmH2rl8xSPc0/yrQw8juXU6bQ==", "dev": true, "requires": { @@ -394,7 +397,7 @@ }, "@types/chai-string": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@types/chai-string/-/chai-string-1.4.1.tgz", + "resolved": "https://verdaccio.lossless.one/@types%2fchai-string/-/chai-string-1.4.1.tgz", "integrity": "sha512-aRNMs6TKgjgPlCHwDfq/YNy5VtRR2hJ4AUWByddrT0TRVVD8eX4MiHW6/iHvmQHRlVuuPZcwnTUE7b4yFt7bEA==", "dev": true, "requires": { @@ -506,7 +509,7 @@ }, "assertion-error": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "resolved": "https://verdaccio.lossless.one/assertion-error/-/assertion-error-1.1.0.tgz", "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true }, @@ -564,10 +567,13 @@ "dev": true }, "bindings": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz", - "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw==", - "dev": true + "version": "1.5.0", + "resolved": "https://verdaccio.lossless.one/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "requires": { + "file-uri-to-path": "1.0.0" + } }, "brace-expansion": { "version": "1.1.11", @@ -598,22 +604,22 @@ "dev": true }, "chai": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz", - "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", + "version": "4.2.0", + "resolved": "https://verdaccio.lossless.one/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", "dev": true, "requires": { - "assertion-error": "^1.0.1", - "check-error": "^1.0.1", - "deep-eql": "^3.0.0", + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", "get-func-name": "^2.0.0", - "pathval": "^1.0.0", - "type-detect": "^4.0.0" + "pathval": "^1.1.0", + "type-detect": "^4.0.5" } }, "chai-as-promised": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "resolved": "https://verdaccio.lossless.one/chai-as-promised/-/chai-as-promised-7.1.1.tgz", "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", "dev": true, "requires": { @@ -621,9 +627,9 @@ } }, "chai-string": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/chai-string/-/chai-string-1.4.0.tgz", - "integrity": "sha1-NZFAwFHTak5LGl/GuRAVL0OKjUk=", + "version": "1.5.0", + "resolved": "https://verdaccio.lossless.one/chai-string/-/chai-string-1.5.0.tgz", + "integrity": "sha512-sydDC3S3pNAQMYwJrs6dQX0oBQ6KfIPuOZ78n7rocW0eJJlsHPh2t3kwW7xfwYA/1Bf6/arGtSUo16rxR2JFlw==", "dev": true }, "chalk": { @@ -659,7 +665,7 @@ }, "check-error": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "resolved": "https://verdaccio.lossless.one/check-error/-/check-error-1.0.2.tgz", "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", "dev": true }, @@ -780,7 +786,7 @@ }, "deep-eql": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "resolved": "https://verdaccio.lossless.one/deep-eql/-/deep-eql-3.0.1.tgz", "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "dev": true, "requires": { @@ -810,7 +816,7 @@ }, "es6-error": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "resolved": "https://verdaccio.lossless.one/es6-error/-/es6-error-4.1.1.tgz", "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "dev": true }, @@ -856,6 +862,12 @@ "escape-string-regexp": "^1.0.5" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://verdaccio.lossless.one/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, "find-up": { "version": "3.0.0", "resolved": "https://verdaccio.lossless.one/find-up/-/find-up-3.0.0.tgz", @@ -910,7 +922,7 @@ }, "get-func-name": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "resolved": "https://verdaccio.lossless.one/get-func-name/-/get-func-name-2.0.0.tgz", "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", "dev": true }, @@ -1060,7 +1072,7 @@ }, "leakage": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/leakage/-/leakage-0.4.0.tgz", + "resolved": "https://verdaccio.lossless.one/leakage/-/leakage-0.4.0.tgz", "integrity": "sha512-x7gYK5n5dPkHDZWJ2Kh8Ag1hZNzUh+HtXn8Bv1aDdN6o6ONPCJ8sOfFq+kxcULJFp3lXaCjXb3iXOLmQRbBLwA==", "dev": true, "requires": { @@ -1073,7 +1085,7 @@ }, "left-pad": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "resolved": "https://verdaccio.lossless.one/left-pad/-/left-pad-1.3.0.tgz", "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", "dev": true }, @@ -1150,7 +1162,7 @@ }, "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "https://verdaccio.lossless.one/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, @@ -1185,9 +1197,9 @@ } }, "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "version": "2.13.2", + "resolved": "https://verdaccio.lossless.one/nan/-/nan-2.13.2.tgz", + "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==", "dev": true }, "nice-try": { @@ -1299,7 +1311,7 @@ }, "pathval": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "resolved": "https://verdaccio.lossless.one/pathval/-/pathval-1.1.0.tgz", "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", "dev": true }, @@ -1311,7 +1323,7 @@ }, "pretty-bytes": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", + "resolved": "https://verdaccio.lossless.one/pretty-bytes/-/pretty-bytes-4.0.2.tgz", "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", "dev": true }, @@ -1429,7 +1441,7 @@ }, "smartchai": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/smartchai/-/smartchai-2.0.1.tgz", + "resolved": "https://verdaccio.lossless.one/smartchai/-/smartchai-2.0.1.tgz", "integrity": "sha512-9M+R56OhAHXScxgr2vzQqxGx0XMS0QXriNZuP7hjlbVbo2FUT+l60iEzbwPt9Ga+5u2cEEjSSoZEQVqlROaddA==", "dev": true, "requires": { @@ -1594,7 +1606,7 @@ }, "type-detect": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "resolved": "https://verdaccio.lossless.one/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, diff --git a/package.json b/package.json index 9bd9cd3..b499130 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { "name": "@pushrocks/smarttime", "private": false, - "version": "3.0.6", - "description": "handle timeformats in smart ways", + "version": "3.0.5", + "description": "handle time in smart ways", "main": "dist/index.js", "typings": "dist/index.d.ts", "author": "Lossless GmbH", @@ -15,7 +15,7 @@ "@gitzone/tsbuild": "^2.1.8", "@gitzone/tsrun": "^1.2.5", "@gitzone/tstest": "^1.0.20", - "@pushrocks/tapbundle": "^3.0.7", + "@pushrocks/tapbundle": "^3.0.9", "@types/node": "^11.13.2", "tslint": "^5.15.0", "tslint-config-prettier": "^1.18.0" diff --git a/test/test.cronmanager.ts b/test/test.cronmanager.ts index 3cbea1e..7fd35f2 100644 --- a/test/test.cronmanager.ts +++ b/test/test.cronmanager.ts @@ -6,6 +6,22 @@ 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('* * * * * *', () => { + if(counter === 10) { + done.resolve(); + } + counter ++; + console.log(`hey ${counter}`); + }); + testCronManager.start(); + await done.promise; + testCronManager.stop(); }); tap.start(); diff --git a/ts/smarttime.classes.cronmanager.ts b/ts/smarttime.classes.cronmanager.ts index 01c647e..cf39b2c 100644 --- a/ts/smarttime.classes.cronmanager.ts +++ b/ts/smarttime.classes.cronmanager.ts @@ -1,3 +1,35 @@ import * as plugins from './smarttime.plugins'; -export class CronManager {} +export class CronManager { + public status: 'started' | 'stopped' = 'stopped'; + + public cronjobs: plugins.cron.CronJob[] = []; + + public addCronjob(cronIdentifierArg: string, cronFunctionArg: plugins.cron.CronCommand) { + const newCronJob = new plugins.cron.CronJob(cronIdentifierArg,cronFunctionArg); + if (this.status === 'started') { + newCronJob.start(); + } + this.cronjobs.push(newCronJob); + }; + + /** + * starts the cronjob + */ + public start() { + this.status = 'started'; + for (const cron of this.cronjobs) { + cron.start(); + } + } + + /** + * stops all cronjobs + */ + public stop() { + this.status = 'stopped'; + for (const cron of this.cronjobs) { + cron.stop(); + } + } +}