taskbuffer/dist/taskbuffer.classes.helpers.js

97 lines
11 KiB
JavaScript

"use strict";
/// <reference path="./typings/main.d.ts" />
var plugins = require("./taskbuffer.plugins");
var taskbuffer_classes_1 = require("./taskbuffer.classes");
exports.emptyTaskFunction = function () {
var done = plugins.Q.defer();
done.resolve();
return done.promise;
};
exports.isTask = function (taskArg) {
if (taskArg instanceof taskbuffer_classes_1.Task
&& typeof taskArg.task === "function") {
return true;
}
else {
return false;
}
};
exports.isTaskTouched = function (taskArg, touchedTasksArray) {
var result = false;
for (var keyArg in touchedTasksArray) {
if (taskArg === touchedTasksArray[keyArg]) {
result = true;
}
}
return result;
};
exports.runTask = function (taskArg, optionsArg) {
if (optionsArg === void 0) { optionsArg = { touchedTasksArray: [] }; }
var done = plugins.Q.defer();
exports.updateTaskStatus(taskArg, "running");
done.promise.then(function () { exports.updateTaskStatus(taskArg, "idle"); });
var localDeferred = plugins.Q.defer();
var touchedTasksArray;
if (optionsArg.touchedTasksArray) {
touchedTasksArray = optionsArg.touchedTasksArray;
}
else {
touchedTasksArray = [];
}
touchedTasksArray.push(taskArg);
localDeferred.promise
.then(function () {
if (taskArg.preTask && !exports.isTaskTouched(taskArg.preTask, touchedTasksArray)) {
return exports.runTask(taskArg.preTask, { touchedTasksArray: touchedTasksArray });
}
else {
var done2 = plugins.Q.defer();
done2.resolve();
return done2.promise;
}
})
.then(function () {
return taskArg.task();
})
.then(function () {
if (taskArg.afterTask && !exports.isTaskTouched(taskArg.afterTask, touchedTasksArray)) {
return exports.runTask(taskArg.afterTask, { touchedTasksArray: touchedTasksArray });
}
else {
var done2 = plugins.Q.defer();
done2.resolve();
return done2.promise;
}
})
.then(function () {
done.resolve();
});
localDeferred.resolve();
return done.promise;
};
exports.runBufferedTask = function (taskArg) {
var recursiveBufferRunner = function () {
if (taskArg.bufferCounter > 0) {
taskArg.bufferCounter--;
exports.runTask(taskArg)
.then(recursiveBufferRunner);
}
};
};
exports.updateTaskStatus = function (taskArg, statusArg) {
switch (statusArg) {
case "running":
taskArg.running = true;
taskArg.idle = false;
break;
case "idle":
taskArg.running = false;
taskArg.idle = true;
break;
default:
throw new Error("status not recognised");
}
};
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhc2tidWZmZXIuY2xhc3Nlcy5oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSw0Q0FBNEM7QUFDNUMsSUFBTyxPQUFPLFdBQVcsc0JBQXNCLENBQUMsQ0FBQztBQUNqRCxtQ0FBbUIsc0JBRW5CLENBQUMsQ0FGd0M7QUFFOUIseUJBQWlCLEdBQUc7SUFDM0IsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDZixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUN4QixDQUFDLENBQUM7QUFFUyxjQUFNLEdBQUcsVUFBUyxPQUFPO0lBQ2hDLEVBQUUsQ0FBQSxDQUNFLE9BQU8sWUFBWSx5QkFBSTtXQUNwQixPQUFPLE9BQU8sQ0FBQyxJQUFJLEtBQUssVUFDL0IsQ0FBQyxDQUFBLENBQUM7UUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNKLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDakIsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUdTLHFCQUFhLEdBQUcsVUFBQyxPQUFZLEVBQUUsaUJBQXdCO0lBQzlELElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNuQixHQUFHLENBQUMsQ0FBQyxJQUFJLE1BQU0sSUFBSSxpQkFBaUIsQ0FBQyxDQUFBLENBQUM7UUFDbEMsRUFBRSxDQUFBLENBQUMsT0FBTyxLQUFLLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQztZQUN0QyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLENBQUM7SUFDTCxDQUFDO0lBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUE7QUFFVSxlQUFPLEdBQUcsVUFBUyxPQUFZLEVBQUMsVUFBOEQ7SUFBOUQsMEJBQThELEdBQTlELGVBQXlDLGlCQUFpQixFQUFDLEVBQUUs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Q0FBQyxDQUFDO1FBQ2hCLEtBQUssU0FBUztZQUNWLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLE9BQU8sQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLEtBQUssQ0FBQztRQUNWLEtBQUssTUFBTTtZQUNQLE9BQU8sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLEtBQUssQ0FBQztRQUNWO1lBQ0ksTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ2pELENBQUM7QUFDTCxDQUFDLENBQUEiLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLmhlbHBlcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi90eXBpbmdzL21haW4uZC50c1wiIC8+XHJcbmltcG9ydCBwbHVnaW5zID0gcmVxdWlyZShcIi4vdGFza2J1ZmZlci5wbHVnaW5zXCIpO1xyXG5pbXBvcnQge1Rhc2t9IGZyb20gXCIuL3Rhc2tidWZmZXIuY2xhc3Nlc1wiXHJcblxyXG5leHBvcnQgbGV0IGVtcHR5VGFza0Z1bmN0aW9uID0gZnVuY3Rpb24oKXtcclxuICAgIGxldCBkb25lID0gcGx1Z2lucy5RLmRlZmVyKCk7XHJcbiAgICBkb25lLnJlc29sdmUoKTtcclxuICAgIHJldHVybiBkb25lLnByb21pc2U7XHJcbn07XHJcblxyXG5leHBvcnQgbGV0IGlzVGFzayA9IGZ1bmN0aW9uKHRhc2tBcmcpOmJvb2xlYW57XHJcbiAgICBpZihcclxuICAgICAgICB0YXNrQXJnIGluc3RhbmNlb2YgVGFza1xyXG4gICAgICAgICYmIHR5cGVvZiB0YXNrQXJnLnRhc2sgPT09IFwiZnVuY3Rpb25cIlxyXG4gICAgKXtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG59O1xyXG5cclxuXHJcbmV4cG9ydCBsZXQgaXNUYXNrVG91Y2hlZCA9ICh0YXNrQXJnOlRhc2ssIHRvdWNoZWRUYXNrc0FycmF5OlRhc2tbXSk6Ym9vbGVhbiA9PiB7XHJcbiAgICBsZXQgcmVzdWx0ID0gZmFsc2U7XHJcbiAgICBmb3IgKGxldCBrZXlBcmcgaW4gdG91Y2hlZFRhc2tzQXJyYXkpe1xyXG4gICAgICAgIGlmKHRhc2tBcmcgPT09IHRvdWNoZWRUYXNrc0FycmF5W2tleUFyZ10pe1xyXG4gICAgICAgICAgICByZXN1bHQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBsZXQgcnVuVGFzayA9IGZ1bmN0aW9uKHRhc2tBcmc6VGFzayxvcHRpb25zQXJnOnt0b3VjaGVkVGFza3NBcnJheTpUYXNrW119ID0ge3RvdWNoZWRUYXNrc0FycmF5OltdfSl7XHJcbiAgICBsZXQgZG9uZSA9IHBsdWdpbnMuUS5kZWZlcigpO1xyXG4gICAgdXBkYXRlVGFza1N0YXR1cyh0YXNrQXJnLFwicnVubmluZ1wiKTtcclxuICAgIGRvbmUucHJvbWlzZS50aGVuKGZ1bmN0aW9uKCl7dXBkYXRlVGFza1N0YXR1cyh0YXNrQXJnLFwiaWRsZVwiKX0pXHJcbiAgICBsZXQgbG9jYWxEZWZlcnJlZCA9IHBsdWdpbnMuUS5kZWZlcigpO1xyXG4gICAgbGV0IHRvdWNoZWRUYXNrc0FycmF5OlRhc2tbXTtcclxuICAgIGlmKG9wdGlvbnNBcmcudG91Y2hlZFRhc2tzQXJyYXkpe1xyXG4gICAgICAgIHRvdWNoZWRUYXNrc0FycmF5ID0gb3B0aW9uc0FyZy50b3VjaGVkVGFza3NBcnJheTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdG91Y2hlZFRhc2tzQXJyYXkgPSBbXTtcclxuICAgIH1cclxuICAgIHRvdWNoZWRUYXNrc0FycmF5LnB1c2godGFza0FyZyk7XHJcbiAgICBsb2NhbERlZmVycmVkLnByb21pc2VcclxuICAgICAgICAudGhlbigoKSA9PntcclxuICAgICAgICAgICAgaWYodGFza0FyZy5wcmVUYXNrICYmICFpc1Rhc2tUb3VjaGVkKHRhc2tBcmcucHJlVGFzayx0b3VjaGVkVGFza3NBcnJheSkpe1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJ1blRhc2sodGFza0FyZy5wcmVUYXNrLHt0b3VjaGVkVGFza3NBcnJheTp0b3VjaGVkVGFza3NBcnJheX0pXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZG9uZTIgPSBwbHVnaW5zLlEuZGVmZXIoKTtcclxuICAgICAgICAgICAgICAgIGRvbmUyLnJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBkb25lMi5wcm9taXNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0YXNrQXJnLnRhc2soKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgaWYodGFza0FyZy5hZnRlclRhc2sgJiYgIWlzVGFza1RvdWNoZWQodGFza0FyZy5hZnRlclRhc2ssdG91Y2hlZFRhc2tzQXJyYXkpKXtcclxuICAgICAgICAgICAgICAgIHJldHVybiBydW5UYXNrKHRhc2tBcmcuYWZ0ZXJUYXNrLHt0b3VjaGVkVGFza3NBcnJheTp0b3VjaGVkVGFza3NBcnJheX0pXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZG9uZTIgPSBwbHVnaW5zLlEuZGVmZXIoKTtcclxuICAgICAgICAgICAgICAgIGRvbmUyLnJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBkb25lMi5wcm9taXNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIGRvbmUucmVzb2x2ZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgbG9jYWxEZWZlcnJlZC5yZXNvbHZlKCk7XHJcbiAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xyXG59O1xyXG5cclxuZXhwb3J0IGxldCBydW5CdWZmZXJlZFRhc2sgPSAodGFza0FyZzpUYXNrKSA9PiB7XHJcbiAgICBsZXQgcmVjdXJzaXZlQnVmZmVyUnVubmVyID0gKCkgPT4ge1xyXG4gICAgICAgIGlmKHRhc2tBcmcuYnVmZmVyQ291bnRlciA+IDApe1xyXG4gICAgICAgICAgICB0YXNrQXJnLmJ1ZmZlckNvdW50ZXItLTtcclxuICAgICAgICAgICAgcnVuVGFzayh0YXNrQXJnKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4ocmVjdXJzaXZlQnVmZmVyUnVubmVyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBsZXQgdXBkYXRlVGFza1N0YXR1cyA9ICh0YXNrQXJnLHN0YXR1c0FyZzpzdHJpbmcpID0+IHtcclxuICAgIHN3aXRjaCAoc3RhdHVzQXJnKSB7XHJcbiAgICAgICAgY2FzZSBcInJ1bm5pbmdcIjpcclxuICAgICAgICAgICAgdGFza0FyZy5ydW5uaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGFza0FyZy5pZGxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgXCJpZGxlXCI6XHJcbiAgICAgICAgICAgIHRhc2tBcmcucnVubmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0YXNrQXJnLmlkbGUgPSB0cnVlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJzdGF0dXMgbm90IHJlY29nbmlzZWRcIik7XHJcbiAgICB9XHJcbn0iXX0=