diff --git a/dist/taskbuffer.classes.taskchain.d.ts b/dist/taskbuffer.classes.taskchain.d.ts index c1e22de..01b2dd6 100644 --- a/dist/taskbuffer.classes.taskchain.d.ts +++ b/dist/taskbuffer.classes.taskchain.d.ts @@ -3,11 +3,12 @@ export declare class Taskchain extends Task { taskArray: Task[]; private _oraObject; constructor(optionsArg: { - taskArray: Task[]; name?: string; + log?: boolean; + taskArray: Task[]; }); addTask(taskArg: Task): void; removeTask(taskArg: Task): void; shiftTask(): void; - trigger(): void; + trigger(): any; } diff --git a/dist/taskbuffer.classes.taskchain.js b/dist/taskbuffer.classes.taskchain.js index 2599c05..a9ddf3b 100644 --- a/dist/taskbuffer.classes.taskchain.js +++ b/dist/taskbuffer.classes.taskchain.js @@ -7,32 +7,38 @@ var __extends = (this && this.__extends) || function (d, b) { /// var plugins = require("./taskbuffer.plugins"); var taskbuffer_classes_1 = require("./taskbuffer.classes"); +var helpers = require("./taskbuffer.classes.helpers"); var Taskchain = (function (_super) { __extends(Taskchain, _super); function Taskchain(optionsArg) { var _this = this; - var options = plugins.lodash.assign(optionsArg, { + var options = plugins.lodash.assign({ + name: "unnamed Task", + log: false + }, optionsArg, { taskFunction: function () { - if (_this.taskArray.length = 0) - return; //make sure there is actually a Task available to execute - var startDeferred = plugins.Q.defer(); // this is the starting Deferred object - var promisePointer = startDeferred.promise; - var _loop_1 = function(keyArg) { - promisePointer.then(function () { - promisePointer = this.taskArray[keyArg].trigger(); - return promisePointer; - }); + console.log("running taskchain function"); + var done = plugins.Q.defer(); // this is the starting Deferred object + var taskCounter = 0; + var iterateTasks = function () { + if (typeof _this.taskArray[taskCounter] != "undefined") { + _this.taskArray[taskCounter].trigger() + .then(function () { + taskCounter++; + iterateTasks(); + }); + } + else { + done.resolve(); + } }; - for (var keyArg in _this.taskArray) { - _loop_1(keyArg); - } - ; - startDeferred.resolve(); + iterateTasks(); + return done.promise; } }); _super.call(this, options); this.taskArray = optionsArg.taskArray; - this._oraObject = plugins.beautylog.ora("Taskchain idle", "blue"); + this._oraObject = new plugins.beautylog.Ora("Taskchain idle", "blue"); } Taskchain.prototype.addTask = function (taskArg) { this.taskArray.push(taskArg); @@ -46,7 +52,8 @@ var Taskchain = (function (_super) { }; ; Taskchain.prototype.trigger = function () { - this._oraObject.start(this.name + "running"); + this._oraObject.start(this.name + " running..."); + return helpers.runTask(this); }; return Taskchain; }(taskbuffer_classes_1.Task)); @@ -60,4 +67,4 @@ var myTask = new Taskchain({ ] }); -//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhc2tidWZmZXIuY2xhc3Nlcy50YXNrY2hhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNENBQTRDO0FBQzVDLElBQVksT0FBTyxXQUFNLHNCQUFzQixDQUFDLENBQUE7QUFDaEQsbUNBQW1CLHNCQUFzQixDQUFDLENBQUE7QUFHMUM7SUFBK0IsNkJBQUk7SUFHL0IsbUJBQVksVUFHWDtRQU5MLGlCQXFDQztRQTlCTyxJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUM7WUFDM0MsWUFBWSxFQUFFO2dCQUNWLEVBQUUsQ0FBQSxDQUFDLEtBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztvQkFBQyxNQUFNLENBQUMsQ0FBQyx5REFBeUQ7Z0JBQy9GLElBQUksYUFBYSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyx3Q0FBd0M7Z0JBQy9FLElBQUksY0FBYyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUM7Z0JBQzNDO29CQUNJLGNBQWMsQ0FBQyxJQUFJLENBQUM7d0JBQ2hCLGNBQWMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUNsRCxNQUFNLENBQUMsY0FBYyxDQUFDO29CQUMxQixDQUFDLENBQUMsQ0FBQTs7Z0JBSk4sR0FBRyxDQUFBLENBQUMsSUFBSSxNQUFNLElBQUksS0FBSSxDQUFDLFNBQVMsQ0FBQzs7aUJBS2hDO2dCQUFBLENBQUM7Z0JBQ0YsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzVCLENBQUM7U0FDSixDQUFDLENBQUM7UUFDSCxrQkFBTSxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQztRQUN0QyxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFDRCwyQkFBTyxHQUFQLFVBQVEsT0FBWTtRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQyxDQUFDOztJQUNELDhCQUFVLEdBQVYsVUFBVyxPQUFZO1FBQ25CLE1BQU07SUFDVixDQUFDOztJQUNELDZCQUFTLEdBQVQ7SUFFQSxDQUFDOztJQUNELDJCQUFPLEdBQVA7UUFDSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFDTCxnQkFBQztBQUFELENBckNBLEFBcUNDLENBckM4Qix5QkFBSSxHQXFDbEM7QUFyQ1ksaUJBQVMsWUFxQ3JCLENBQUE7QUFBQSxDQUFDO0FBRUYsSUFBSSxNQUFNLEdBQUcsSUFBSSxTQUFTLENBQ3RCO0lBQ0ksU0FBUyxFQUFFO1FBQ1AsSUFBSSx5QkFBSSxDQUFDO1lBQ0wsWUFBWSxFQUFDLGNBQVcsQ0FBQztTQUM1QixDQUFDO0tBQ0w7Q0FDSixDQUNKLENBQUMiLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLnRhc2tjaGFpbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuL3R5cGluZ3MvbWFpbi5kLnRzXCIgLz5cclxuaW1wb3J0ICogYXMgcGx1Z2lucyBmcm9tIFwiLi90YXNrYnVmZmVyLnBsdWdpbnNcIjtcclxuaW1wb3J0IHtUYXNrfSBmcm9tIFwiLi90YXNrYnVmZmVyLmNsYXNzZXNcIjtcclxuaW1wb3J0IGhlbHBlcnMgPSByZXF1aXJlKFwiLi90YXNrYnVmZmVyLmNsYXNzZXMuaGVscGVyc1wiKTtcclxuXHJcbmV4cG9ydCBjbGFzcyBUYXNrY2hhaW4gZXh0ZW5kcyBUYXNrIHtcclxuICAgIHRhc2tBcnJheTpUYXNrW107XHJcbiAgICBwcml2YXRlIF9vcmFPYmplY3Q7XHJcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zQXJnOntcclxuICAgICAgICB0YXNrQXJyYXk6VGFza1tdXHJcbiAgICAgICAgbmFtZT86c3RyaW5nXHJcbiAgICB9KXtcclxuICAgICAgICBsZXQgb3B0aW9ucyA9IHBsdWdpbnMubG9kYXNoLmFzc2lnbihvcHRpb25zQXJnLHtcclxuICAgICAgICAgICAgdGFza0Z1bmN0aW9uOiAoKSA9PiB7IC8vIHRoaXMgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgZ2V0cyBleGVjdXRlZCB3aGVuIFRhc2tDaGFpbiBpcyB0cmlnZ2VyZWRcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMudGFza0FycmF5Lmxlbmd0aCA9IDApIHJldHVybjsgLy9tYWtlIHN1cmUgdGhlcmUgaXMgYWN0dWFsbHkgYSBUYXNrIGF2YWlsYWJsZSB0byBleGVjdXRlXHJcbiAgICAgICAgICAgICAgICBsZXQgc3RhcnREZWZlcnJlZCA9IHBsdWdpbnMuUS5kZWZlcigpOyAvLyB0aGlzIGlzIHRoZSBzdGFydGluZyBEZWZlcnJlZCBvYmplY3QgXHJcbiAgICAgICAgICAgICAgICBsZXQgcHJvbWlzZVBvaW50ZXIgPSBzdGFydERlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgICAgICAgICBmb3IobGV0IGtleUFyZyBpbiB0aGlzLnRhc2tBcnJheSl7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvbWlzZVBvaW50ZXIudGhlbihmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlUG9pbnRlciA9IHRoaXMudGFza0FycmF5W2tleUFyZ10udHJpZ2dlcigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZVBvaW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBzdGFydERlZmVycmVkLnJlc29sdmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xyXG4gICAgICAgIHRoaXMudGFza0FycmF5ID0gb3B0aW9uc0FyZy50YXNrQXJyYXk7XHJcbiAgICAgICAgdGhpcy5fb3JhT2JqZWN0ID0gcGx1Z2lucy5iZWF1dHlsb2cub3JhKFwiVGFza2NoYWluIGlkbGVcIixcImJsdWVcIik7XHJcbiAgICB9XHJcbiAgICBhZGRUYXNrKHRhc2tBcmc6VGFzayl7XHJcbiAgICAgICAgdGhpcy50YXNrQXJyYXkucHVzaCh0YXNrQXJnKTtcclxuICAgIH07XHJcbiAgICByZW1vdmVUYXNrKHRhc2tBcmc6VGFzayl7XHJcbiAgICAgICAgLy9UT0RPXHJcbiAgICB9O1xyXG4gICAgc2hpZnRUYXNrKCl7XHJcbiAgICAgICAgXHJcbiAgICB9O1xyXG4gICAgdHJpZ2dlcigpe1xyXG4gICAgICAgIHRoaXMuX29yYU9iamVjdC5zdGFydCh0aGlzLm5hbWUgKyBcInJ1bm5pbmdcIik7XHJcbiAgICB9XHJcbn07XHJcblxyXG5sZXQgbXlUYXNrID0gbmV3IFRhc2tjaGFpbihcclxuICAgIHtcclxuICAgICAgICB0YXNrQXJyYXk6IFtcclxuICAgICAgICAgICAgbmV3IFRhc2soe1xyXG4gICAgICAgICAgICAgICAgdGFza0Z1bmN0aW9uOmZ1bmN0aW9uKCl7fVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIF1cclxuICAgIH1cclxuKTsiXX0= +//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhc2tidWZmZXIuY2xhc3Nlcy50YXNrY2hhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNENBQTRDO0FBQzVDLElBQVksT0FBTyxXQUFNLHNCQUFzQixDQUFDLENBQUE7QUFDaEQsbUNBQW1CLHNCQUFzQixDQUFDLENBQUE7QUFDMUMsSUFBTyxPQUFPLFdBQVcsOEJBQThCLENBQUMsQ0FBQztBQUV6RDtJQUErQiw2QkFBSTtJQUcvQixtQkFBWSxVQUlYO1FBUEwsaUJBb0RDO1FBNUNPLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUMvQjtZQUNJLElBQUksRUFBQyxjQUFjO1lBQ25CLEdBQUcsRUFBQyxLQUFLO1NBQ1osRUFDRCxVQUFVLEVBQ1Y7WUFDSSxZQUFZLEVBQUU7Z0JBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsd0NBQXdDO2dCQUN0RSxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7Z0JBQ3BCLElBQUksWUFBWSxHQUFHO29CQUNmLEVBQUUsQ0FBQSxDQUFDLE9BQU8sS0FBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxXQUFXLENBQUMsQ0FBQSxDQUFDO3dCQUNsRCxLQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sRUFBRTs2QkFDaEMsSUFBSSxDQUFDOzRCQUNGLFdBQVcsRUFBRSxDQUFDOzRCQUNkLFlBQVksRUFBRSxDQUFDO3dCQUNuQixDQUFDLENBQUMsQ0FBQztvQkFDWCxDQUFDO29CQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNKLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDbkIsQ0FBQztnQkFDTCxDQUFDLENBQUM7Z0JBQ0YsWUFBWSxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDeEIsQ0FBQztTQUNKLENBQ0osQ0FBQztRQUNGLGtCQUFNLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBQyxNQUFNLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBQ0QsMkJBQU8sR0FBUCxVQUFRLE9BQVk7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakMsQ0FBQzs7SUFDRCw4QkFBVSxHQUFWLFVBQVcsT0FBWTtRQUNuQixNQUFNO0lBQ1YsQ0FBQzs7SUFDRCw2QkFBUyxHQUFUO0lBRUEsQ0FBQzs7SUFDRCwyQkFBTyxHQUFQO1FBQ0ksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUMsQ0FBQztRQUNqRCxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ0wsZ0JBQUM7QUFBRCxDQXBEQSxBQW9EQyxDQXBEOEIseUJBQUksR0FvRGxDO0FBcERZLGlCQUFTLFlBb0RyQixDQUFBO0FBQUEsQ0FBQztBQUVGLElBQUksTUFBTSxHQUFHLElBQUksU0FBUyxDQUN0QjtJQUNJLFNBQVMsRUFBRTtRQUNQLElBQUkseUJBQUksQ0FBQztZQUNMLFlBQVksRUFBQyxjQUFXLENBQUM7U0FDNUIsQ0FBQztLQUNMO0NBQ0osQ0FDSixDQUFDIiwiZmlsZSI6InRhc2tidWZmZXIuY2xhc3Nlcy50YXNrY2hhaW4uanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi90eXBpbmdzL21haW4uZC50c1wiIC8+XHJcbmltcG9ydCAqIGFzIHBsdWdpbnMgZnJvbSBcIi4vdGFza2J1ZmZlci5wbHVnaW5zXCI7XHJcbmltcG9ydCB7VGFza30gZnJvbSBcIi4vdGFza2J1ZmZlci5jbGFzc2VzXCI7XHJcbmltcG9ydCBoZWxwZXJzID0gcmVxdWlyZShcIi4vdGFza2J1ZmZlci5jbGFzc2VzLmhlbHBlcnNcIik7XHJcblxyXG5leHBvcnQgY2xhc3MgVGFza2NoYWluIGV4dGVuZHMgVGFzayB7XHJcbiAgICB0YXNrQXJyYXk6VGFza1tdO1xyXG4gICAgcHJpdmF0ZSBfb3JhT2JqZWN0O1xyXG4gICAgY29uc3RydWN0b3Iob3B0aW9uc0FyZzp7XHJcbiAgICAgICAgbmFtZT86c3RyaW5nLFxyXG4gICAgICAgIGxvZz86Ym9vbGVhbixcclxuICAgICAgICB0YXNrQXJyYXk6VGFza1tdXHJcbiAgICB9KXtcclxuICAgICAgICBsZXQgb3B0aW9ucyA9IHBsdWdpbnMubG9kYXNoLmFzc2lnbihcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbmFtZTpcInVubmFtZWQgVGFza1wiLFxyXG4gICAgICAgICAgICAgICAgbG9nOmZhbHNlXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9wdGlvbnNBcmcsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHRhc2tGdW5jdGlvbjogKCkgPT4geyAvLyB0aGlzIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGdldHMgZXhlY3V0ZWQgd2hlbiBUYXNrQ2hhaW4gaXMgdHJpZ2dlcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJydW5uaW5nIHRhc2tjaGFpbiBmdW5jdGlvblwiKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZG9uZSA9IHBsdWdpbnMuUS5kZWZlcigpOyAvLyB0aGlzIGlzIHRoZSBzdGFydGluZyBEZWZlcnJlZCBvYmplY3QgXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRhc2tDb3VudGVyID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlcmF0ZVRhc2tzID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0eXBlb2YgdGhpcy50YXNrQXJyYXlbdGFza0NvdW50ZXJdICE9IFwidW5kZWZpbmVkXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YXNrQXJyYXlbdGFza0NvdW50ZXJdLnRyaWdnZXIoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKCgpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tDb3VudGVyKys7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdGVUYXNrcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lLnJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlcmF0ZVRhc2tzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRvbmUucHJvbWlzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XHJcbiAgICAgICAgdGhpcy50YXNrQXJyYXkgPSBvcHRpb25zQXJnLnRhc2tBcnJheTtcclxuICAgICAgICB0aGlzLl9vcmFPYmplY3QgPSBuZXcgcGx1Z2lucy5iZWF1dHlsb2cuT3JhKFwiVGFza2NoYWluIGlkbGVcIixcImJsdWVcIik7XHJcbiAgICB9XHJcbiAgICBhZGRUYXNrKHRhc2tBcmc6VGFzayl7XHJcbiAgICAgICAgdGhpcy50YXNrQXJyYXkucHVzaCh0YXNrQXJnKTtcclxuICAgIH07XHJcbiAgICByZW1vdmVUYXNrKHRhc2tBcmc6VGFzayl7XHJcbiAgICAgICAgLy9UT0RPXHJcbiAgICB9O1xyXG4gICAgc2hpZnRUYXNrKCl7XHJcbiAgICAgICAgXHJcbiAgICB9O1xyXG4gICAgdHJpZ2dlcigpe1xyXG4gICAgICAgIHRoaXMuX29yYU9iamVjdC5zdGFydCh0aGlzLm5hbWUgKyBcIiBydW5uaW5nLi4uXCIpO1xyXG4gICAgICAgIHJldHVybiBoZWxwZXJzLnJ1blRhc2sodGhpcyk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5sZXQgbXlUYXNrID0gbmV3IFRhc2tjaGFpbihcclxuICAgIHtcclxuICAgICAgICB0YXNrQXJyYXk6IFtcclxuICAgICAgICAgICAgbmV3IFRhc2soe1xyXG4gICAgICAgICAgICAgICAgdGFza0Z1bmN0aW9uOmZ1bmN0aW9uKCl7fVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIF1cclxuICAgIH1cclxuKTsiXX0= diff --git a/package.json b/package.json index 0c68b65..fa56210 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ }, "homepage": "https://github.com/pushrocks/taskbuffer#readme", "dependencies": { - "beautylog": "^4.2.0", + "beautylog": "^5.0.0", "lodash": "^4.12.0", "projectinfo": "1.0.1", "q": "^1.4.1", diff --git a/test/test.js b/test/test.js index 82f2f37..de43b2e 100644 --- a/test/test.js +++ b/test/test.js @@ -5,7 +5,7 @@ var should = require("should"); var plugins = { q: require("q") }; -//setup some testData to work with +// setup some testData to work with var testTask; var testTaskFunction = function () { var done = plugins.q.defer(); @@ -43,7 +43,41 @@ describe("taskbuffer", function () { testTask.trigger() .then(done); }); + it("should run a task without pre and afterTask", function (done) { + var localTestTask = new taskbuffer.Task({ taskFunction: testTaskFunction }); + localTestTask.trigger().then(done); + }); + }); + describe("Taskchain", function () { + var testTaskchain; + var testTaskArray = [ + new taskbuffer.Task({ + name: "task1", + taskFunction: function () { + var done = plugins.q.defer(); + console.log("Task1 run"); + done.resolve(); + return done.promise; + } + }), + new taskbuffer.Task({ + name: "task2", + taskFunction: function () { + var done = plugins.q.defer(); + console.log("Task2 run"); + done.resolve(); + return done.promise; + } + }), + ]; + it("should run tasks in sequence", function (done) { + testTaskchain = new taskbuffer.Taskchain({ + name: "Taskchain1", + taskArray: testTaskArray + }); + testTaskchain.trigger().then(done); + }); }); }); -//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLGdEQUFnRDtBQUNoRCxJQUFPLFVBQVUsV0FBVyxlQUFlLENBQUMsQ0FBQztBQUM3QyxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDL0IsSUFBSSxPQUFPLEdBQUc7SUFDVixDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQztDQUNsQixDQUFBO0FBRUQsa0NBQWtDO0FBQ2xDLElBQUksUUFBd0IsQ0FBQztBQUM3QixJQUFJLGdCQUFnQixHQUFHO0lBQ25CLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO0lBQ3RDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3hCLENBQUMsQ0FBQTtBQUNELElBQUksV0FBVyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQztJQUNsQyxZQUFZLEVBQUM7UUFDVCxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUNELE9BQU8sRUFBQyxRQUFRO0NBQ25CLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyxZQUFZLEVBQUM7SUFDbEIsUUFBUSxDQUFDLE9BQU8sRUFBQztRQUNiLEVBQUUsQ0FBQyxxQ0FBcUMsRUFBQztZQUNyQyxRQUFRLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUMsWUFBWSxFQUFDLGdCQUFnQixFQUFDLE9BQU8sRUFBQyxXQUFXLEVBQUMsQ0FBQyxDQUFDO1FBQ3hGLENBQUMsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLHlDQUF5QyxFQUFDO1lBQ3pDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsdUJBQXVCLEVBQUM7WUFDdkIsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQztnQkFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1lBQ2pELENBQUM7UUFFTCxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxzREFBc0QsRUFBQztZQUN0RCxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzNDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQywwQ0FBMEMsRUFBQztZQUMxQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQywwREFBMEQsRUFBQyxVQUFTLElBQUk7WUFDdkUsUUFBUSxDQUFDLE9BQU8sRUFBRTtpQkFDYixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6InRlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vdHMvdHlwaW5ncy9tYWluLmQudHNcIiAvPlxyXG5pbXBvcnQgdGFza2J1ZmZlciA9IHJlcXVpcmUoXCIuLi9kaXN0L2luZGV4XCIpO1xyXG5sZXQgc2hvdWxkID0gcmVxdWlyZShcInNob3VsZFwiKTtcclxubGV0IHBsdWdpbnMgPSB7XHJcbiAgICBxOiByZXF1aXJlKFwicVwiKVxyXG59XHJcblxyXG4vL3NldHVwIHNvbWUgdGVzdERhdGEgdG8gd29yayB3aXRoXHJcbmxldCB0ZXN0VGFzazp0YXNrYnVmZmVyLlRhc2s7XHJcbmxldCB0ZXN0VGFza0Z1bmN0aW9uID0gZnVuY3Rpb24oKXtcclxuICAgIGxldCBkb25lID0gcGx1Z2lucy5xLmRlZmVyKCk7XHJcbiAgICBjb25zb2xlLmxvZyhcIm1haW4gZnVuY3Rpb24gZXhlY3V0ZWQhXCIpXHJcbiAgICBkb25lLnJlc29sdmUoKTtcclxuICAgIHJldHVybiBkb25lLnByb21pc2U7XHJcbn1cclxubGV0IHRlc3RQcmVUYXNrID0gbmV3IHRhc2tidWZmZXIuVGFzayh7XHJcbiAgICB0YXNrRnVuY3Rpb246ZnVuY3Rpb24oKXtcclxuICAgICAgICBjb25zb2xlLmxvZyhcInByZVRhc2sgZXhlY3V0ZWRcIik7XHJcbiAgICB9LFxyXG4gICAgcHJlVGFzazp0ZXN0VGFza1xyXG59KTtcclxuXHJcbmRlc2NyaWJlKFwidGFza2J1ZmZlclwiLGZ1bmN0aW9uKCl7XHJcbiAgICBkZXNjcmliZShcIi5UYXNrXCIsZnVuY3Rpb24oKXtcclxuICAgICAgICBpdChcIm5ldyBUYXNrKCkgc2hvdWxkIHJldHVybiBhIG5ldyB0YXNrXCIsZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgdGVzdFRhc2sgPSBuZXcgdGFza2J1ZmZlci5UYXNrKHt0YXNrRnVuY3Rpb246dGVzdFRhc2tGdW5jdGlvbixwcmVUYXNrOnRlc3RQcmVUYXNrfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaXQoXCJ0ZXN0VGFzayBzaG91bGQgYmUgYW5kIGluc3RhbmNlIG9mIFRhc2tcIixmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICB0ZXN0VGFzay5zaG91bGQuYmUuaW5zdGFuY2VvZih0YXNrYnVmZmVyLlRhc2spO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGl0KFwidGVzdFRhc2suaWRsZSBpcyB0cnVlXCIsZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgaWYgKCF0ZXN0VGFzay5pZGxlKXtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInRlc3RUYXNrLmlkbGUgaXMgbm90IHRydWVcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaXQoXCJ0ZXN0VGFzay5ydW5uaW5nIGlzIHR5cGUgYm9vbGVhbiBhbmQgaW5pdGlhbGx5IGZhbHNlXCIsZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgdGVzdFRhc2sucnVubmluZy5zaG91bGQuYmUudHlwZShcImJvb2xlYW5cIik7XHJcbiAgICAgICAgICAgIHRlc3RUYXNrLnJ1bm5pbmcuc2hvdWxkLmJlLmZhbHNlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaXQoXCJ0ZXN0VGFzay50cmlnZ2VyKCkgc2hvdWxkIHJldHVybiBQcm9taXNlXCIsZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgdGVzdFRhc2sudHJpZ2dlcigpLnNob3VsZC5iZS5Qcm9taXNlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaXQoXCJ0ZXN0VGFzay50cmlnZ2VyKCkgcmV0dXJuZWQgUHJvbWlzZSBzaG91bGQgYmUgZnVsbGZpbGxlZFwiLGZ1bmN0aW9uKGRvbmUpe1xyXG4gICAgICAgICAgICB0ZXN0VGFzay50cmlnZ2VyKClcclxuICAgICAgICAgICAgICAgIC50aGVuKGRvbmUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbn0pOyJdfQ== +//# sourceMappingURL=data:application/json;charset=utf8;base64,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LENBQUM7Z0JBQ2hCLElBQUksRUFBQyxPQUFPO2dCQUNaLFlBQVksRUFBQztvQkFDVCxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUN6QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ3hCLENBQUM7YUFDSixDQUFDO1lBQ0YsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDO2dCQUNoQixJQUFJLEVBQUMsT0FBTztnQkFDWixZQUFZLEVBQUU7b0JBQ1YsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDekIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUN4QixDQUFDO2FBQ0osQ0FBQztTQUNMLENBQUM7UUFDRixFQUFFLENBQUMsOEJBQThCLEVBQUMsVUFBUyxJQUFJO1lBQzNDLGFBQWEsR0FBRyxJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUM7Z0JBQ3JDLElBQUksRUFBQyxZQUFZO2dCQUNqQixTQUFTLEVBQUMsYUFBYTthQUMxQixDQUFDLENBQUM7WUFDSCxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMsQ0FBQyIsImZpbGUiOiJ0ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL3RzL3R5cGluZ3MvbWFpbi5kLnRzXCIgLz5cclxuaW1wb3J0IHRhc2tidWZmZXIgPSByZXF1aXJlKFwiLi4vZGlzdC9pbmRleFwiKTtcclxubGV0IHNob3VsZCA9IHJlcXVpcmUoXCJzaG91bGRcIik7XHJcbmxldCBwbHVnaW5zID0ge1xyXG4gICAgcTogcmVxdWlyZShcInFcIilcclxufVxyXG5cclxuLy8gc2V0dXAgc29tZSB0ZXN0RGF0YSB0byB3b3JrIHdpdGhcclxubGV0IHRlc3RUYXNrOnRhc2tidWZmZXIuVGFzaztcclxubGV0IHRlc3RUYXNrRnVuY3Rpb24gPSBmdW5jdGlvbigpe1xyXG4gICAgbGV0IGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcclxuICAgIGNvbnNvbGUubG9nKFwibWFpbiBmdW5jdGlvbiBleGVjdXRlZCFcIilcclxuICAgIGRvbmUucmVzb2x2ZSgpO1xyXG4gICAgcmV0dXJuIGRvbmUucHJvbWlzZTtcclxufVxyXG5sZXQgdGVzdFByZVRhc2sgPSBuZXcgdGFza2J1ZmZlci5UYXNrKHtcclxuICAgIHRhc2tGdW5jdGlvbjpmdW5jdGlvbigpe1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwicHJlVGFzayBleGVjdXRlZFwiKTtcclxuICAgIH0sXHJcbiAgICBwcmVUYXNrOnRlc3RUYXNrXHJcbn0pO1xyXG5cclxuZGVzY3JpYmUoXCJ0YXNrYnVmZmVyXCIsZnVuY3Rpb24oKXtcclxuICAgIGRlc2NyaWJlKFwiLlRhc2tcIixmdW5jdGlvbigpe1xyXG4gICAgICAgIGl0KFwibmV3IFRhc2soKSBzaG91bGQgcmV0dXJuIGEgbmV3IHRhc2tcIixmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICB0ZXN0VGFzayA9IG5ldyB0YXNrYnVmZmVyLlRhc2soe3Rhc2tGdW5jdGlvbjp0ZXN0VGFza0Z1bmN0aW9uLHByZVRhc2s6dGVzdFByZVRhc2t9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpdChcInRlc3RUYXNrIHNob3VsZCBiZSBhbmQgaW5zdGFuY2Ugb2YgVGFza1wiLGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgIHRlc3RUYXNrLnNob3VsZC5iZS5pbnN0YW5jZW9mKHRhc2tidWZmZXIuVGFzayk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaXQoXCJ0ZXN0VGFzay5pZGxlIGlzIHRydWVcIixmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICBpZiAoIXRlc3RUYXNrLmlkbGUpe1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidGVzdFRhc2suaWRsZSBpcyBub3QgdHJ1ZVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9KTtcclxuICAgICAgICBpdChcInRlc3RUYXNrLnJ1bm5pbmcgaXMgdHlwZSBib29sZWFuIGFuZCBpbml0aWFsbHkgZmFsc2VcIixmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICB0ZXN0VGFzay5ydW5uaW5nLnNob3VsZC5iZS50eXBlKFwiYm9vbGVhblwiKTtcclxuICAgICAgICAgICAgdGVzdFRhc2sucnVubmluZy5zaG91bGQuYmUuZmFsc2UoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpdChcInRlc3RUYXNrLnRyaWdnZXIoKSBzaG91bGQgcmV0dXJuIFByb21pc2VcIixmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICB0ZXN0VGFzay50cmlnZ2VyKCkuc2hvdWxkLmJlLlByb21pc2UoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpdChcInRlc3RUYXNrLnRyaWdnZXIoKSByZXR1cm5lZCBQcm9taXNlIHNob3VsZCBiZSBmdWxsZmlsbGVkXCIsZnVuY3Rpb24oZG9uZSl7XHJcbiAgICAgICAgICAgIHRlc3RUYXNrLnRyaWdnZXIoKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oZG9uZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaXQoXCJzaG91bGQgcnVuIGEgdGFzayB3aXRob3V0IHByZSBhbmQgYWZ0ZXJUYXNrXCIsZnVuY3Rpb24oZG9uZSl7XHJcbiAgICAgICAgICAgIGxldCBsb2NhbFRlc3RUYXNrID0gbmV3IHRhc2tidWZmZXIuVGFzayh7dGFza0Z1bmN0aW9uOnRlc3RUYXNrRnVuY3Rpb259KTtcclxuICAgICAgICAgICAgbG9jYWxUZXN0VGFzay50cmlnZ2VyKCkudGhlbihkb25lKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgZGVzY3JpYmUoXCJUYXNrY2hhaW5cIixmdW5jdGlvbigpe1xyXG4gICAgICAgIGxldCB0ZXN0VGFza2NoYWluO1xyXG4gICAgICAgIGxldCB0ZXN0VGFza0FycmF5ID0gW1xyXG4gICAgICAgICAgICBuZXcgdGFza2J1ZmZlci5UYXNrKHtcclxuICAgICAgICAgICAgICAgIG5hbWU6XCJ0YXNrMVwiLFxyXG4gICAgICAgICAgICAgICAgdGFza0Z1bmN0aW9uOmZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIlRhc2sxIHJ1blwiKTtcclxuICAgICAgICAgICAgICAgICAgICBkb25lLnJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IHRhc2tidWZmZXIuVGFzayh7XHJcbiAgICAgICAgICAgICAgICBuYW1lOlwidGFzazJcIixcclxuICAgICAgICAgICAgICAgIHRhc2tGdW5jdGlvbjogZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZG9uZSA9IHBsdWdpbnMucS5kZWZlcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiVGFzazIgcnVuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGRvbmUucmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkb25lLnByb21pc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgaXQoXCJzaG91bGQgcnVuIHRhc2tzIGluIHNlcXVlbmNlXCIsZnVuY3Rpb24oZG9uZSl7XHJcbiAgICAgICAgICAgIHRlc3RUYXNrY2hhaW4gPSBuZXcgdGFza2J1ZmZlci5UYXNrY2hhaW4oe1xyXG4gICAgICAgICAgICAgICAgbmFtZTpcIlRhc2tjaGFpbjFcIixcclxuICAgICAgICAgICAgICAgIHRhc2tBcnJheTp0ZXN0VGFza0FycmF5XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0ZXN0VGFza2NoYWluLnRyaWdnZXIoKS50aGVuKGRvbmUpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG59KTsiXX0= diff --git a/test/test.ts b/test/test.ts index 9e83c06..7f0c941 100644 --- a/test/test.ts +++ b/test/test.ts @@ -5,7 +5,7 @@ let plugins = { q: require("q") } -//setup some testData to work with +// setup some testData to work with let testTask:taskbuffer.Task; let testTaskFunction = function(){ let done = plugins.q.defer(); @@ -45,5 +45,40 @@ describe("taskbuffer",function(){ testTask.trigger() .then(done); }); + it("should run a task without pre and afterTask",function(done){ + let localTestTask = new taskbuffer.Task({taskFunction:testTaskFunction}); + localTestTask.trigger().then(done); + }); + }); + describe("Taskchain",function(){ + let testTaskchain; + let testTaskArray = [ + new taskbuffer.Task({ + name:"task1", + taskFunction:function(){ + let done = plugins.q.defer(); + console.log("Task1 run"); + done.resolve(); + return done.promise; + } + }), + new taskbuffer.Task({ + name:"task2", + taskFunction: function(){ + let done = plugins.q.defer(); + console.log("Task2 run"); + done.resolve(); + return done.promise; + } + }), + ]; + it("should run tasks in sequence",function(done){ + testTaskchain = new taskbuffer.Taskchain({ + name:"Taskchain1", + taskArray:testTaskArray + }); + testTaskchain.trigger().then(done); + + }); }); }); \ No newline at end of file diff --git a/ts/taskbuffer.classes.taskchain.ts b/ts/taskbuffer.classes.taskchain.ts index 77e65ac..787dcc1 100644 --- a/ts/taskbuffer.classes.taskchain.ts +++ b/ts/taskbuffer.classes.taskchain.ts @@ -7,26 +7,40 @@ export class Taskchain extends Task { taskArray:Task[]; private _oraObject; constructor(optionsArg:{ + name?:string, + log?:boolean, taskArray:Task[] - name?:string }){ - let options = plugins.lodash.assign(optionsArg,{ - taskFunction: () => { // this is the function that gets executed when TaskChain is triggered - if(this.taskArray.length = 0) return; //make sure there is actually a Task available to execute - let startDeferred = plugins.Q.defer(); // this is the starting Deferred object - let promisePointer = startDeferred.promise; - for(let keyArg in this.taskArray){ - promisePointer.then(function(){ - promisePointer = this.taskArray[keyArg].trigger(); - return promisePointer; - }) - }; - startDeferred.resolve(); + let options = plugins.lodash.assign( + { + name:"unnamed Task", + log:false + }, + optionsArg, + { + taskFunction: () => { // this is the function that gets executed when TaskChain is triggered + console.log("running taskchain function"); + let done = plugins.Q.defer(); // this is the starting Deferred object + let taskCounter = 0; + let iterateTasks = () => { + if(typeof this.taskArray[taskCounter] != "undefined"){ + this.taskArray[taskCounter].trigger() + .then(()=>{ + taskCounter++; + iterateTasks(); + }); + } else { + done.resolve(); + } + }; + iterateTasks(); + return done.promise; + } } - }); + ); super(options); this.taskArray = optionsArg.taskArray; - this._oraObject = plugins.beautylog.ora("Taskchain idle","blue"); + this._oraObject = new plugins.beautylog.Ora("Taskchain idle","blue"); } addTask(taskArg:Task){ this.taskArray.push(taskArg); @@ -38,7 +52,8 @@ export class Taskchain extends Task { }; trigger(){ - this._oraObject.start(this.name + "running"); + this._oraObject.start(this.name + " running..."); + return helpers.runTask(this); } };