Compare commits
14 Commits
Author | SHA1 | Date | |
---|---|---|---|
130c4177a6 | |||
90c9f23c23 | |||
0d0ee67ca3 | |||
5fd11ec9c0 | |||
569cb311c9 | |||
44db37574c | |||
fb7f5c5e68 | |||
b6595ac1d3 | |||
3f3f9c68f1 | |||
48c20c081f | |||
72504d7ad7 | |||
370e714fe1 | |||
4179347f26 | |||
130e071a06 |
@ -0,0 +1,5 @@
|
|||||||
|
.idea/
|
||||||
|
docs/
|
||||||
|
coverage/
|
||||||
|
ts/
|
||||||
|
node_modules/
|
||||||
|
15
README.md
15
README.md
@ -14,10 +14,17 @@ npm install taskbuffer --save
|
|||||||
|
|
||||||
#### Task
|
#### Task
|
||||||
* A Task in its most simple form is a function that is executed when the task runs.
|
* A Task in its most simple form is a function that is executed when the task runs.
|
||||||
* It can have a preTaska and an afterTask (those are run before or after the main function whenever the task is called)
|
* A Task can have a **preTask** and an **afterTask**
|
||||||
* A Task can be buffered. That means it can be called multiple times in a very short time. However execution happens in line: meaning execution of the task's main function is on halt until the previous task call has finished.
|
(those are run before or after the main function whenever the task is called)
|
||||||
* Task.trigger() and Task.triggerBuffered() always return a Promise;
|
* A Task can be buffered.
|
||||||
* Task.triggered() is an ObservableStram that emits events every time a task is promised.
|
That means it can be called multiple times in a very short time.
|
||||||
|
However execution happens in line:
|
||||||
|
meaning execution of the task's main function is on halt until the previous task call has finished.
|
||||||
|
You can set bufferMax number, which is the max number of buffered task calls.
|
||||||
|
Any additional calls will then be truncated
|
||||||
|
* Task.trigger() and Task.triggerBuffered() always return a Promise
|
||||||
|
which is fullfilled once the related task call has completed.
|
||||||
|
* Task.triggered() is an Observable stream that emits events every time a task call is called and every time a call is completed.
|
||||||
* Task is compatible to gulp streams.
|
* Task is compatible to gulp streams.
|
||||||
|
|
||||||
#### Taskchain
|
#### Taskchain
|
||||||
|
2
dist/index.d.ts
vendored
Normal file
2
dist/index.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
export * from "./taskbuffer.classes";
|
||||||
|
import "./taskbuffer.classes.helpers";
|
15
dist/index.js
vendored
15
dist/index.js
vendored
@ -1,7 +1,10 @@
|
|||||||
var task = require("./taskbuffer.task");
|
"use strict";
|
||||||
var taskbuffer = {
|
function __export(m) {
|
||||||
task: task
|
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
|
||||||
};
|
}
|
||||||
module.exports = taskbuffer;
|
/// <reference path="./typings/main.d.ts" />
|
||||||
|
__export(require("./taskbuffer.classes"));
|
||||||
|
// import for naming only
|
||||||
|
require("./taskbuffer.classes.helpers");
|
||||||
|
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLElBQU8sSUFBSSxXQUFXLG1CQUFtQixDQUFDLENBQUM7QUFHM0MsSUFBSSxVQUFVLEdBQUc7SUFDYixJQUFJLEVBQUUsSUFBSTtDQUNiLENBQUM7QUFFRixpQkFBUyxVQUFVLENBQUMiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi90eXBpbmdzL21haW4uZC50c1wiIC8+XG5pbXBvcnQgcGx1Z2lucyA9IHJlcXVpcmUoXCIuL3Rhc2tidWZmZXIucGx1Z2luc1wiKTtcbmltcG9ydCB0YXNrID0gcmVxdWlyZShcIi4vdGFza2J1ZmZlci50YXNrXCIpO1xuaW1wb3J0IHRhc2tjaGFpbiA9IHJlcXVpcmUoXCIuL3Rhc2tidWZmZXIudGFza2NoYWluXCIpO1xuXG52YXIgdGFza2J1ZmZlciA9IHtcbiAgICB0YXNrOiB0YXNrXG59O1xuXG5leHBvcnQgPSB0YXNrYnVmZmVyOyJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
|
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSw0Q0FBNEM7QUFDNUMsaUJBQWMsc0JBQXNCLENBQUMsRUFBQTtBQUVyQyx5QkFBeUI7QUFDekIsUUFBTyw4QkFBOEIsQ0FBQyxDQUFEIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4vdHlwaW5ncy9tYWluLmQudHNcIiAvPlxuZXhwb3J0ICogZnJvbSBcIi4vdGFza2J1ZmZlci5jbGFzc2VzXCI7XG5cbi8vIGltcG9ydCBmb3IgbmFtaW5nIG9ubHlcbmltcG9ydCBcIi4vdGFza2J1ZmZlci5jbGFzc2VzLmhlbHBlcnNcIiJdfQ==
|
||||||
|
2
dist/taskbuffer.classes.d.ts
vendored
Normal file
2
dist/taskbuffer.classes.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
export * from "./taskbuffer.classes.task";
|
||||||
|
export * from "./taskbuffer.classes.taskchain";
|
8
dist/taskbuffer.classes.helpers.d.ts
vendored
Normal file
8
dist/taskbuffer.classes.helpers.d.ts
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import { Task } from "./taskbuffer.classes";
|
||||||
|
export declare let emptyTaskFunction: () => any;
|
||||||
|
export declare let isTask: (taskArg: any) => boolean;
|
||||||
|
export declare let isTaskTouched: (task: Task, touchedTasksArray: Task[]) => boolean;
|
||||||
|
export declare let runTask: (taskArg: Task, optionsArg?: {
|
||||||
|
touchedTasksArray: Task[];
|
||||||
|
}) => any;
|
||||||
|
export declare let runBufferedTask: (taskArg: Task) => void;
|
59
dist/taskbuffer.classes.helpers.js
vendored
59
dist/taskbuffer.classes.helpers.js
vendored
File diff suppressed because one or more lines are too long
71
dist/taskbuffer.classes.js
vendored
71
dist/taskbuffer.classes.js
vendored
@ -1,65 +1,8 @@
|
|||||||
var __extends = (this && this.__extends) || function (d, b) {
|
"use strict";
|
||||||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
function __export(m) {
|
||||||
function __() { this.constructor = d; }
|
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
|
||||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
}
|
||||||
};
|
__export(require("./taskbuffer.classes.task"));
|
||||||
/// <reference path="./typings/main.d.ts" />
|
__export(require("./taskbuffer.classes.taskchain"));
|
||||||
var plugins = require("./taskbuffer.plugins");
|
|
||||||
var helpers = require("./taskbuffer.classes.helpers");
|
|
||||||
var Task = (function () {
|
|
||||||
function Task(taskArg, optionsArg) {
|
|
||||||
if (optionsArg === void 0) { optionsArg = {}; }
|
|
||||||
var options = optionsArg;
|
|
||||||
this.task = taskArg;
|
|
||||||
this.preTask = options.preTask;
|
|
||||||
this.afterTask = options.afterTask;
|
|
||||||
this.idle = true;
|
|
||||||
this.running = false;
|
|
||||||
if (typeof options.buffered === "boolean") {
|
|
||||||
this.buffered = options.buffered;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
this.buffered = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Task.prototype.trigger = function () {
|
|
||||||
helpers.runTask(this.preTask)
|
|
||||||
.then(function () {
|
|
||||||
})
|
|
||||||
.then(function () {
|
|
||||||
});
|
|
||||||
};
|
|
||||||
;
|
|
||||||
Task.prototype.triggerBuffered = function () {
|
|
||||||
var done = plugins.Q.defer();
|
|
||||||
};
|
|
||||||
Object.defineProperty(Task.prototype, "state", {
|
|
||||||
get: function () {
|
|
||||||
return this._state;
|
|
||||||
},
|
|
||||||
set: function (stateArg) {
|
|
||||||
if (stateArg == "locked") {
|
|
||||||
this._state = "locked";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
plugins.beautylog.error("state type");
|
|
||||||
}
|
|
||||||
},
|
|
||||||
enumerable: true,
|
|
||||||
configurable: true
|
|
||||||
});
|
|
||||||
return Task;
|
|
||||||
})();
|
|
||||||
exports.Task = Task;
|
|
||||||
var TaskChain = (function (_super) {
|
|
||||||
__extends(TaskChain, _super);
|
|
||||||
function TaskChain(taskArrayArg) {
|
|
||||||
_super.call(this, {
|
|
||||||
task: function () { }
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return TaskChain;
|
|
||||||
})(Task);
|
|
||||||
exports.TaskChain = TaskChain;
|
|
||||||
|
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhc2tidWZmZXIuY2xhc3Nlcy50cyJdLCJuYW1lcyI6WyJUYXNrIiwiVGFzay5jb25zdHJ1Y3RvciIsIlRhc2sudHJpZ2dlciIsIlRhc2sudHJpZ2dlckJ1ZmZlcmVkIiwiVGFzay5zdGF0ZSIsIlRhc2tDaGFpbiIsIlRhc2tDaGFpbi5jb25zdHJ1Y3RvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0Q0FBNEM7QUFDNUMsSUFBTyxPQUFPLFdBQVcsc0JBQXNCLENBQUMsQ0FBQztBQUNqRCxJQUFPLE9BQU8sV0FBVyw4QkFBOEIsQ0FBQyxDQUFDO0FBQ3pEO0lBV0lBLGNBQVlBLE9BQU9BLEVBQUNBLFVBQWtFQTtRQUFsRUMsMEJBQWtFQSxHQUFsRUEsZUFBa0VBO1FBQ2xGQSxJQUFJQSxPQUFPQSxHQUFHQSxVQUFVQSxDQUFDQTtRQUN6QkEsSUFBSUEsQ0FBQ0EsSUFBSUEsR0FBR0EsT0FBT0EsQ0FBQ0E7UUFDcEJBLElBQUlBLENBQUNBLE9BQU9BLEdBQUdBLE9BQU9BLENBQUNBLE9BQU9BLENBQUNBO1FBQy9CQSxJQUFJQSxDQUFDQSxTQUFTQSxHQUFHQSxPQUFPQSxDQUFDQSxTQUFTQSxDQUFDQTtRQUNuQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsR0FBR0EsSUFBSUEsQ0FBQ0E7UUFDakJBLElBQUlBLENBQUNBLE9BQU9BLEdBQUdBLEtBQUtBLENBQUNBO1FBQ3JCQSxFQUFFQSxDQUFDQSxDQUFDQSxPQUFPQSxPQUFPQSxDQUFDQSxRQUFRQSxLQUFLQSxTQUFTQSxDQUFDQSxDQUFBQSxDQUFDQTtZQUN2Q0EsSUFBSUEsQ0FBQ0EsUUFBUUEsR0FBR0EsT0FBT0EsQ0FBQ0EsUUFBUUEsQ0FBQ0E7UUFDckNBLENBQUNBO1FBQUNBLElBQUlBLENBQUNBLENBQUNBO1lBQ0pBLElBQUlBLENBQUNBLFFBQVFBLEdBQUdBLEtBQUtBLENBQUNBO1FBQzFCQSxDQUFDQTtJQUNMQSxDQUFDQTtJQUNERCxzQkFBT0EsR0FBUEE7UUFDSUUsT0FBT0EsQ0FBQ0EsT0FBT0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsT0FBT0EsQ0FBQ0E7YUFDeEJBLElBQUlBLENBQUNBO1FBRU4sQ0FBQyxDQUFDQTthQUNEQSxJQUFJQSxDQUFDQTtRQUVOLENBQUMsQ0FBQ0EsQ0FBQUE7SUFDVkEsQ0FBQ0E7O0lBQ0RGLDhCQUFlQSxHQUFmQTtRQUNJRyxJQUFJQSxJQUFJQSxHQUFHQSxPQUFPQSxDQUFDQSxDQUFDQSxDQUFDQSxLQUFLQSxFQUFFQSxDQUFDQTtJQUNqQ0EsQ0FBQ0E7SUFFREgsc0JBQUlBLHVCQUFLQTthQUFUQTtZQUNJSSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxNQUFNQSxDQUFDQTtRQUN2QkEsQ0FBQ0E7YUFDREosVUFBVUEsUUFBZUE7WUFDckJJLEVBQUVBLENBQUNBLENBQUNBLFFBQVFBLElBQUlBLFFBQVFBLENBQUNBLENBQUFBLENBQUNBO2dCQUN0QkEsSUFBSUEsQ0FBQ0EsTUFBTUEsR0FBR0EsUUFBUUEsQ0FBQ0E7WUFDM0JBLENBQUNBO1lBQUNBLElBQUlBLENBQUNBLENBQUNBO2dCQUNKQSxPQUFPQSxDQUFDQSxTQUFTQSxDQUFDQSxLQUFLQSxDQUFDQSxZQUFZQSxDQUFFQSxDQUFDQTtZQUMzQ0EsQ0FBQ0E7UUFDTEEsQ0FBQ0E7OztPQVBBSjtJQVFMQSxXQUFDQTtBQUFEQSxDQS9DQSxBQStDQ0EsSUFBQTtBQS9DWSxZQUFJLE9BK0NoQixDQUFBO0FBR0Q7SUFBK0JLLDZCQUFJQTtJQUMvQkEsbUJBQVlBLFlBQW1CQTtRQUMzQkMsa0JBQU1BO1lBQ0ZBLElBQUlBLEVBQUNBLGNBQVcsQ0FBQztTQUNwQkEsQ0FBQ0EsQ0FBQ0E7SUFDUEEsQ0FBQ0E7SUFDTEQsZ0JBQUNBO0FBQURBLENBTkEsQUFNQ0EsRUFOOEIsSUFBSSxFQU1sQztBQU5ZLGlCQUFTLFlBTXJCLENBQUEiLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4vdHlwaW5ncy9tYWluLmQudHNcIiAvPlxuaW1wb3J0IHBsdWdpbnMgPSByZXF1aXJlKFwiLi90YXNrYnVmZmVyLnBsdWdpbnNcIik7XG5pbXBvcnQgaGVscGVycyA9IHJlcXVpcmUoXCIuL3Rhc2tidWZmZXIuY2xhc3Nlcy5oZWxwZXJzXCIpO1xuZXhwb3J0IGNsYXNzIFRhc2sge1xuICAgIHRhc2s6YW55O1xuICAgIGlkbGU6Ym9vbGVhbjtcbiAgICBydW5uaW5nOmJvb2xlYW47XG4gICAgYnVmZmVyZWQ6Ym9vbGVhbjtcbiAgICBwcml2YXRlIF9jb3VudGVyQnVmZmVyUmVsYXRpdmU7XG4gICAgcHJpdmF0ZSBfY291bnRlclRyaWdnZXJBYnNvbHV0ZTtcbiAgICBwcml2YXRlIF9zdGF0ZTpzdHJpbmc7XG4gICAgcHJlVGFzazpUYXNrO1xuICAgIGFmdGVyVGFzazpUYXNrO1xuXG4gICAgY29uc3RydWN0b3IodGFza0FyZyxvcHRpb25zQXJnOntwcmVUYXNrPzpUYXNrLGFmdGVyVGFzaz86VGFzaywgYnVmZmVyZWQ/OmJvb2xlYW59ID0ge30pe1xuICAgICAgICB2YXIgb3B0aW9ucyA9IG9wdGlvbnNBcmc7XG4gICAgICAgIHRoaXMudGFzayA9IHRhc2tBcmc7XG4gICAgICAgIHRoaXMucHJlVGFzayA9IG9wdGlvbnMucHJlVGFzaztcbiAgICAgICAgdGhpcy5hZnRlclRhc2sgPSBvcHRpb25zLmFmdGVyVGFzaztcbiAgICAgICAgdGhpcy5pZGxlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5ydW5uaW5nID0gZmFsc2U7XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5idWZmZXJlZCA9PT0gXCJib29sZWFuXCIpe1xuICAgICAgICAgICAgdGhpcy5idWZmZXJlZCA9IG9wdGlvbnMuYnVmZmVyZWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmJ1ZmZlcmVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdHJpZ2dlcigpe1xuICAgICAgICBoZWxwZXJzLnJ1blRhc2sodGhpcy5wcmVUYXNrKVxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oKXtcblxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKCl7XG5cbiAgICAgICAgICAgIH0pXG4gICAgfTtcbiAgICB0cmlnZ2VyQnVmZmVyZWQoKXtcbiAgICAgICAgdmFyIGRvbmUgPSBwbHVnaW5zLlEuZGVmZXIoKTtcbiAgICB9XG5cbiAgICBnZXQgc3RhdGUoKTpzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RhdGU7XG4gICAgfVxuICAgIHNldCBzdGF0ZShzdGF0ZUFyZzpzdHJpbmcpe1xuICAgICAgICBpZiAoc3RhdGVBcmcgPT0gXCJsb2NrZWRcIil7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZSA9IFwibG9ja2VkXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwbHVnaW5zLmJlYXV0eWxvZy5lcnJvcihcInN0YXRlIHR5cGVcIiApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBUYXNrQ2hhaW4gZXh0ZW5kcyBUYXNrIHtcbiAgICBjb25zdHJ1Y3Rvcih0YXNrQXJyYXlBcmc6VGFza1tdKXtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgdGFzazpmdW5jdGlvbigpe31cbiAgICAgICAgfSk7XG4gICAgfVxufSJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
|
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhc2tidWZmZXIuY2xhc3Nlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsaUJBQWMsMkJBQ2QsQ0FBQyxFQUR3QztBQUN6QyxpQkFBYyxnQ0FDZCxDQUFDLEVBRDZDIiwiZmlsZSI6InRhc2tidWZmZXIuY2xhc3Nlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3Rhc2tidWZmZXIuY2xhc3Nlcy50YXNrXCJcbmV4cG9ydCAqIGZyb20gXCIuL3Rhc2tidWZmZXIuY2xhc3Nlcy50YXNrY2hhaW5cIlxuIl19
|
||||||
|
23
dist/taskbuffer.classes.task.d.ts
vendored
Normal file
23
dist/taskbuffer.classes.task.d.ts
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
export declare class Task {
|
||||||
|
task: any;
|
||||||
|
idle: boolean;
|
||||||
|
running: boolean;
|
||||||
|
buffered: boolean;
|
||||||
|
bufferCounter: number;
|
||||||
|
bufferMax: number;
|
||||||
|
private _counterTriggerAbsolute;
|
||||||
|
private _state;
|
||||||
|
preTask: Task;
|
||||||
|
afterTask: Task;
|
||||||
|
constructor(optionsArg: {
|
||||||
|
taskFunction: any;
|
||||||
|
preTask?: Task;
|
||||||
|
afterTask?: Task;
|
||||||
|
buffered?: boolean;
|
||||||
|
bufferMax?: number;
|
||||||
|
});
|
||||||
|
trigger(): void;
|
||||||
|
triggerUnBuffered(): any;
|
||||||
|
triggerBuffered(): any;
|
||||||
|
state: string;
|
||||||
|
}
|
60
dist/taskbuffer.classes.task.js
vendored
Normal file
60
dist/taskbuffer.classes.task.js
vendored
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
"use strict";
|
||||||
|
/// <reference path="./typings/main.d.ts" />
|
||||||
|
var plugins = require("./taskbuffer.plugins");
|
||||||
|
var helpers = require("./taskbuffer.classes.helpers");
|
||||||
|
var Task = (function () {
|
||||||
|
function Task(optionsArg) {
|
||||||
|
if (!optionsArg) {
|
||||||
|
optionsArg = { taskFunction: function () { } };
|
||||||
|
}
|
||||||
|
var options = optionsArg;
|
||||||
|
this.task = optionsArg.taskFunction;
|
||||||
|
this.preTask = options.preTask;
|
||||||
|
this.afterTask = options.afterTask;
|
||||||
|
this.idle = true;
|
||||||
|
this.running = false;
|
||||||
|
this.buffered = options.buffered;
|
||||||
|
this.bufferMax = options.bufferMax;
|
||||||
|
}
|
||||||
|
Task.prototype.trigger = function () {
|
||||||
|
var done = plugins.Q.defer();
|
||||||
|
if (this.buffered) {
|
||||||
|
this.triggerBuffered();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.triggerUnBuffered();
|
||||||
|
}
|
||||||
|
;
|
||||||
|
};
|
||||||
|
;
|
||||||
|
Task.prototype.triggerUnBuffered = function () {
|
||||||
|
return helpers.runTask(this);
|
||||||
|
};
|
||||||
|
Task.prototype.triggerBuffered = function () {
|
||||||
|
var done = plugins.Q.defer();
|
||||||
|
if (!(this.bufferCounter >= this.bufferMax)) {
|
||||||
|
this.bufferCounter++;
|
||||||
|
}
|
||||||
|
helpers.runBufferedTask(this);
|
||||||
|
return done.promise;
|
||||||
|
};
|
||||||
|
Object.defineProperty(Task.prototype, "state", {
|
||||||
|
get: function () {
|
||||||
|
return this._state;
|
||||||
|
},
|
||||||
|
set: function (stateArg) {
|
||||||
|
if (stateArg == "locked") {
|
||||||
|
this._state = "locked";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
plugins.beautylog.error("state type");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
return Task;
|
||||||
|
}());
|
||||||
|
exports.Task = Task;
|
||||||
|
|
||||||
|
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhc2tidWZmZXIuY2xhc3Nlcy50YXNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSw0Q0FBNEM7QUFDNUMsSUFBWSxPQUFPLFdBQU0sc0JBQ3pCLENBQUMsQ0FEOEM7QUFDL0MsSUFBWSxPQUFPLFdBQU0sOEJBR3pCLENBQUMsQ0FIc0Q7QUFHdkQ7SUFZSSxjQUFZLFVBQWlHO1FBQ3pHLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUEsQ0FBQztZQUFBLFVBQVUsR0FBRyxFQUFDLFlBQVksRUFBQyxjQUFXLENBQUMsRUFBQyxDQUFBO1FBQUEsQ0FBQztRQUMxRCxJQUFJLE9BQU8sR0FBRyxVQUFVLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFDbkMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsc0JBQU8sR0FBUDtRQUNJLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsRUFBRSxDQUFBLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFBQSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUE7UUFBQSxDQUFDO1FBQzFDLElBQUksQ0FBQSxDQUFDO1lBQUEsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUE7UUFBQSxDQUFDO1FBQUEsQ0FBQztJQUNuQyxDQUFDOztJQUNELGdDQUFpQixHQUFqQjtRQUNJLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFDRCw4QkFBZSxHQUFmO1FBQ0ksSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixFQUFFLENBQUEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUN4QixDQUFDO1FBQ0QsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsc0JBQUksdUJBQUs7YUFBVDtZQUNJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3ZCLENBQUM7YUFDRCxVQUFVLFFBQWU7WUFDckIsRUFBRSxDQUFDLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxDQUFBLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO1lBQzNCLENBQUM7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDSixPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUUsQ0FBQztZQUMzQyxDQUFDO1FBQ0wsQ0FBQzs7O09BUEE7SUFRTCxXQUFDO0FBQUQsQ0FuREEsQUFtREMsSUFBQTtBQW5EWSxZQUFJLE9BbURoQixDQUFBIiwiZmlsZSI6InRhc2tidWZmZXIuY2xhc3Nlcy50YXNrLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4vdHlwaW5ncy9tYWluLmQudHNcIiAvPlxuaW1wb3J0ICogYXMgcGx1Z2lucyBmcm9tIFwiLi90YXNrYnVmZmVyLnBsdWdpbnNcIlxuaW1wb3J0ICogYXMgaGVscGVycyBmcm9tIFwiLi90YXNrYnVmZmVyLmNsYXNzZXMuaGVscGVyc1wiXG5cblxuZXhwb3J0IGNsYXNzIFRhc2sge1xuICAgIHRhc2s6YW55O1xuICAgIGlkbGU6Ym9vbGVhbjtcbiAgICBydW5uaW5nOmJvb2xlYW47XG4gICAgYnVmZmVyZWQ6Ym9vbGVhbjtcbiAgICBidWZmZXJDb3VudGVyOm51bWJlcjtcbiAgICBidWZmZXJNYXg6bnVtYmVyO1xuICAgIHByaXZhdGUgX2NvdW50ZXJUcmlnZ2VyQWJzb2x1dGU6bnVtYmVyO1xuICAgIHByaXZhdGUgX3N0YXRlOnN0cmluZztcbiAgICBwcmVUYXNrOlRhc2s7XG4gICAgYWZ0ZXJUYXNrOlRhc2s7XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zQXJnOnt0YXNrRnVuY3Rpb246YW55LHByZVRhc2s/OlRhc2ssYWZ0ZXJUYXNrPzpUYXNrLCBidWZmZXJlZD86Ym9vbGVhbiwgYnVmZmVyTWF4PzpudW1iZXJ9KXtcbiAgICAgICAgaWYgKCFvcHRpb25zQXJnKXtvcHRpb25zQXJnID0ge3Rhc2tGdW5jdGlvbjpmdW5jdGlvbigpe319fVxuICAgICAgICB2YXIgb3B0aW9ucyA9IG9wdGlvbnNBcmc7XG4gICAgICAgIHRoaXMudGFzayA9IG9wdGlvbnNBcmcudGFza0Z1bmN0aW9uO1xuICAgICAgICB0aGlzLnByZVRhc2sgPSBvcHRpb25zLnByZVRhc2s7XG4gICAgICAgIHRoaXMuYWZ0ZXJUYXNrID0gb3B0aW9ucy5hZnRlclRhc2s7XG4gICAgICAgIHRoaXMuaWRsZSA9IHRydWU7XG4gICAgICAgIHRoaXMucnVubmluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJ1ZmZlcmVkID0gb3B0aW9ucy5idWZmZXJlZDtcbiAgICAgICAgdGhpcy5idWZmZXJNYXggPSBvcHRpb25zLmJ1ZmZlck1heDtcbiAgICB9XG4gICAgXG4gICAgdHJpZ2dlcigpe1xuICAgICAgICBsZXQgZG9uZSA9IHBsdWdpbnMuUS5kZWZlcigpO1xuICAgICAgICBpZih0aGlzLmJ1ZmZlcmVkKSB7dGhpcy50cmlnZ2VyQnVmZmVyZWQoKX1cbiAgICAgICAgZWxzZXt0aGlzLnRyaWdnZXJVbkJ1ZmZlcmVkKCl9O1xuICAgIH07XG4gICAgdHJpZ2dlclVuQnVmZmVyZWQoKXtcbiAgICAgICAgcmV0dXJuIGhlbHBlcnMucnVuVGFzayh0aGlzKTtcbiAgICB9XG4gICAgdHJpZ2dlckJ1ZmZlcmVkKCl7XG4gICAgICAgIHZhciBkb25lID0gcGx1Z2lucy5RLmRlZmVyKCk7XG4gICAgICAgIGlmKCEodGhpcy5idWZmZXJDb3VudGVyID49IHRoaXMuYnVmZmVyTWF4KSl7XG4gICAgICAgICAgICB0aGlzLmJ1ZmZlckNvdW50ZXIrK1xuICAgICAgICB9XG4gICAgICAgIGhlbHBlcnMucnVuQnVmZmVyZWRUYXNrKHRoaXMpO1xuICAgICAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xuICAgIH1cblxuICAgIGdldCBzdGF0ZSgpOnN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGF0ZTtcbiAgICB9XG4gICAgc2V0IHN0YXRlKHN0YXRlQXJnOnN0cmluZyl7XG4gICAgICAgIGlmIChzdGF0ZUFyZyA9PSBcImxvY2tlZFwiKXtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlID0gXCJsb2NrZWRcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBsdWdpbnMuYmVhdXR5bG9nLmVycm9yKFwic3RhdGUgdHlwZVwiICk7XG4gICAgICAgIH1cbiAgICB9XG59Il19
|
8
dist/taskbuffer.classes.taskchain.d.ts
vendored
Normal file
8
dist/taskbuffer.classes.taskchain.d.ts
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import { Task } from "./taskbuffer.classes";
|
||||||
|
export declare class Taskchain extends Task {
|
||||||
|
taskArray: Task[];
|
||||||
|
constructor(taskArrayArg: Task[] | Task);
|
||||||
|
addTask(taskArg: Task): void;
|
||||||
|
removeTask(taskArg: Task): void;
|
||||||
|
shiftTask(): void;
|
||||||
|
}
|
53
dist/taskbuffer.classes.taskchain.js
vendored
Normal file
53
dist/taskbuffer.classes.taskchain.js
vendored
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
"use strict";
|
||||||
|
var __extends = (this && this.__extends) || function (d, b) {
|
||||||
|
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
||||||
|
function __() { this.constructor = d; }
|
||||||
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||||
|
};
|
||||||
|
/// <reference path="./typings/main.d.ts" />
|
||||||
|
var plugins = require("./taskbuffer.plugins");
|
||||||
|
var taskbuffer_classes_1 = require("./taskbuffer.classes");
|
||||||
|
var Taskchain = (function (_super) {
|
||||||
|
__extends(Taskchain, _super);
|
||||||
|
function Taskchain(taskArrayArg) {
|
||||||
|
var _this = this;
|
||||||
|
_super.call(this, {
|
||||||
|
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;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
for (var keyArg in _this.taskArray) {
|
||||||
|
_loop_1(keyArg);
|
||||||
|
}
|
||||||
|
;
|
||||||
|
startDeferred.resolve();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Taskchain.prototype.addTask = function (taskArg) {
|
||||||
|
this.taskArray.push(taskArg);
|
||||||
|
};
|
||||||
|
;
|
||||||
|
Taskchain.prototype.removeTask = function (taskArg) {
|
||||||
|
//TODO
|
||||||
|
};
|
||||||
|
;
|
||||||
|
Taskchain.prototype.shiftTask = function () {
|
||||||
|
};
|
||||||
|
;
|
||||||
|
return Taskchain;
|
||||||
|
}(taskbuffer_classes_1.Task));
|
||||||
|
exports.Taskchain = Taskchain;
|
||||||
|
;
|
||||||
|
var myTask = new Taskchain(new taskbuffer_classes_1.Task({
|
||||||
|
taskFunction: function () { }
|
||||||
|
}));
|
||||||
|
|
||||||
|
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhc2tidWZmZXIuY2xhc3Nlcy50YXNrY2hhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNENBQTRDO0FBQzVDLElBQVksT0FBTyxXQUFNLHNCQUFzQixDQUFDLENBQUE7QUFDaEQsbUNBQW1CLHNCQUFzQixDQUFDLENBQUE7QUFHMUM7SUFBK0IsNkJBQUk7SUFHL0IsbUJBQVksWUFBd0I7UUFIeEMsaUJBNEJDO1FBeEJPLGtCQUFNO1lBQ0YsWUFBWSxFQUFFO2dCQUNWLEVBQUUsQ0FBQSxDQUFDLEtBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztvQkFBQyxNQUFNLENBQUMsQ0FBQyx5REFBeUQ7Z0JBQy9GLElBQUksYUFBYSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyx3Q0FBd0M7Z0JBQy9FLElBQUksY0FBYyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUM7Z0JBQzNDO29CQUNJLGNBQWMsQ0FBQyxJQUFJLENBQUM7d0JBQ2hCLGNBQWMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUNsRCxNQUFNLENBQUMsY0FBYyxDQUFDO29CQUMxQixDQUFDLENBQUMsQ0FBQTs7Z0JBSk4sR0FBRyxDQUFBLENBQUMsSUFBSSxNQUFNLElBQUksS0FBSSxDQUFDLFNBQVMsQ0FBQzs7aUJBS2hDO2dCQUFBLENBQUM7Z0JBQ0YsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzVCLENBQUM7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsMkJBQU8sR0FBUCxVQUFRLE9BQVk7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakMsQ0FBQzs7SUFDRCw4QkFBVSxHQUFWLFVBQVcsT0FBWTtRQUNuQixNQUFNO0lBQ1YsQ0FBQzs7SUFDRCw2QkFBUyxHQUFUO0lBRUEsQ0FBQzs7SUFDTCxnQkFBQztBQUFELENBNUJBLEFBNEJDLENBNUI4Qix5QkFBSSxHQTRCbEM7QUE1QlksaUJBQVMsWUE0QnJCLENBQUE7QUFBQSxDQUFDO0FBRUYsSUFBSSxNQUFNLEdBQUcsSUFBSSxTQUFTLENBQ3RCLElBQUkseUJBQUksQ0FBQztJQUNMLFlBQVksRUFBQyxjQUFXLENBQUM7Q0FDNUIsQ0FBQyxDQUNMLENBQUMiLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLnRhc2tjaGFpbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuL3R5cGluZ3MvbWFpbi5kLnRzXCIgLz5cbmltcG9ydCAqIGFzIHBsdWdpbnMgZnJvbSBcIi4vdGFza2J1ZmZlci5wbHVnaW5zXCI7XG5pbXBvcnQge1Rhc2t9IGZyb20gXCIuL3Rhc2tidWZmZXIuY2xhc3Nlc1wiO1xuaW1wb3J0IGhlbHBlcnMgPSByZXF1aXJlKFwiLi90YXNrYnVmZmVyLmNsYXNzZXMuaGVscGVyc1wiKTtcblxuZXhwb3J0IGNsYXNzIFRhc2tjaGFpbiBleHRlbmRzIFRhc2sge1xuICAgIHRhc2tBcnJheTpUYXNrW107XG4gICAgXG4gICAgY29uc3RydWN0b3IodGFza0FycmF5QXJnOlRhc2tbXXxUYXNrKXtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgdGFza0Z1bmN0aW9uOiAoKSA9PiB7IC8vIHRoaXMgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgZ2V0cyBleGVjdXRlZCB3aGVuIFRhc2tDaGFpbiBpcyB0cmlnZ2VyZWRcbiAgICAgICAgICAgICAgICBpZih0aGlzLnRhc2tBcnJheS5sZW5ndGggPSAwKSByZXR1cm47IC8vbWFrZSBzdXJlIHRoZXJlIGlzIGFjdHVhbGx5IGEgVGFzayBhdmFpbGFibGUgdG8gZXhlY3V0ZVxuICAgICAgICAgICAgICAgIGxldCBzdGFydERlZmVycmVkID0gcGx1Z2lucy5RLmRlZmVyKCk7IC8vIHRoaXMgaXMgdGhlIHN0YXJ0aW5nIERlZmVycmVkIG9iamVjdCBcbiAgICAgICAgICAgICAgICBsZXQgcHJvbWlzZVBvaW50ZXIgPSBzdGFydERlZmVycmVkLnByb21pc2U7XG4gICAgICAgICAgICAgICAgZm9yKGxldCBrZXlBcmcgaW4gdGhpcy50YXNrQXJyYXkpe1xuICAgICAgICAgICAgICAgICAgICBwcm9taXNlUG9pbnRlci50aGVuKGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlUG9pbnRlciA9IHRoaXMudGFza0FycmF5W2tleUFyZ10udHJpZ2dlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2VQb2ludGVyO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgc3RhcnREZWZlcnJlZC5yZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhZGRUYXNrKHRhc2tBcmc6VGFzayl7XG4gICAgICAgIHRoaXMudGFza0FycmF5LnB1c2godGFza0FyZyk7XG4gICAgfTtcbiAgICByZW1vdmVUYXNrKHRhc2tBcmc6VGFzayl7XG4gICAgICAgIC8vVE9ET1xuICAgIH07XG4gICAgc2hpZnRUYXNrKCl7XG4gICAgICAgIFxuICAgIH07XG59O1xuXG5sZXQgbXlUYXNrID0gbmV3IFRhc2tjaGFpbihcbiAgICBuZXcgVGFzayh7XG4gICAgICAgIHRhc2tGdW5jdGlvbjpmdW5jdGlvbigpe31cbiAgICB9KVxuKTsiXX0=
|
5
dist/taskbuffer.plugins.d.ts
vendored
Normal file
5
dist/taskbuffer.plugins.d.ts
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
declare var plugins: {
|
||||||
|
beautylog: any;
|
||||||
|
Q: any;
|
||||||
|
};
|
||||||
|
export = plugins;
|
3
dist/taskbuffer.plugins.js
vendored
3
dist/taskbuffer.plugins.js
vendored
@ -1,3 +1,4 @@
|
|||||||
|
"use strict";
|
||||||
/// <reference path="./typings/main.d.ts" />
|
/// <reference path="./typings/main.d.ts" />
|
||||||
var plugins = {
|
var plugins = {
|
||||||
beautylog: require("beautylog"),
|
beautylog: require("beautylog"),
|
||||||
@ -5,4 +6,4 @@ var plugins = {
|
|||||||
};
|
};
|
||||||
module.exports = plugins;
|
module.exports = plugins;
|
||||||
|
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhc2tidWZmZXIucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0Q0FBNEM7QUFDNUMsSUFBSSxPQUFPLEdBQUc7SUFDVixTQUFTLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUMvQixDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQztDQUNsQixDQUFDO0FBQ0YsaUJBQVMsT0FBTyxDQUFDIiwiZmlsZSI6InRhc2tidWZmZXIucGx1Z2lucy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuL3R5cGluZ3MvbWFpbi5kLnRzXCIgLz5cbnZhciBwbHVnaW5zID0ge1xuICAgIGJlYXV0eWxvZzogcmVxdWlyZShcImJlYXV0eWxvZ1wiKSxcbiAgICBROiByZXF1aXJlKFwicVwiKVxufTtcbmV4cG9ydCA9IHBsdWdpbnM7XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=
|
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhc2tidWZmZXIucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNENBQTRDO0FBQzVDLElBQUksT0FBTyxHQUFHO0lBQ1YsU0FBUyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDL0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUM7Q0FDbEIsQ0FBQztBQUNGLGlCQUFTLE9BQU8sQ0FBQyIsImZpbGUiOiJ0YXNrYnVmZmVyLnBsdWdpbnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi90eXBpbmdzL21haW4uZC50c1wiIC8+XG52YXIgcGx1Z2lucyA9IHtcbiAgICBiZWF1dHlsb2c6IHJlcXVpcmUoXCJiZWF1dHlsb2dcIiksXG4gICAgUTogcmVxdWlyZShcInFcIilcbn07XG5leHBvcnQgPSBwbHVnaW5zO1xuIl19
|
||||||
|
3
dist/taskbuffer.promisechain.js
vendored
3
dist/taskbuffer.promisechain.js
vendored
@ -1,3 +0,0 @@
|
|||||||
/// <reference path="./typings/main.d.ts" />
|
|
||||||
|
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhc2tidWZmZXIucHJvbWlzZWNoYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRDQUE0QyIsImZpbGUiOiJ0YXNrYnVmZmVyLnByb21pc2VjaGFpbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuL3R5cGluZ3MvbWFpbi5kLnRzXCIgLz4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=
|
|
9
dist/taskbuffer.task.js
vendored
9
dist/taskbuffer.task.js
vendored
@ -1,9 +0,0 @@
|
|||||||
/// <reference path="./typings/main.d.ts" />
|
|
||||||
var classes = require("./taskbuffer.classes");
|
|
||||||
var task = function (taskArg, options) {
|
|
||||||
var task = taskArg;
|
|
||||||
return new classes.Task(task, options);
|
|
||||||
};
|
|
||||||
module.exports = task;
|
|
||||||
|
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhc2tidWZmZXIudGFzay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0Q0FBNEM7QUFDNUMsSUFBTyxPQUFPLFdBQVcsc0JBQXNCLENBQUMsQ0FBQztBQUNqRCxJQUFJLElBQUksR0FBRyxVQUFTLE9BQU8sRUFBQyxPQUFRO0lBQ2hDLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQTtJQUNsQixNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBQyxPQUFPLENBQUMsQ0FBQztBQUMxQyxDQUFDLENBQUM7QUFDRixpQkFBUyxJQUFJLENBQUMiLCJmaWxlIjoidGFza2J1ZmZlci50YXNrLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4vdHlwaW5ncy9tYWluLmQudHNcIiAvPlxuaW1wb3J0IGNsYXNzZXMgPSByZXF1aXJlKFwiLi90YXNrYnVmZmVyLmNsYXNzZXNcIik7XG52YXIgdGFzayA9IGZ1bmN0aW9uKHRhc2tBcmcsb3B0aW9ucz8pe1xuICAgIHZhciB0YXNrID0gdGFza0FyZ1xuICAgIHJldHVybiBuZXcgY2xhc3Nlcy5UYXNrKHRhc2ssb3B0aW9ucyk7XG59O1xuZXhwb3J0ID0gdGFzazsiXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=
|
|
8
dist/taskbuffer.taskchain.js
vendored
8
dist/taskbuffer.taskchain.js
vendored
@ -1,8 +0,0 @@
|
|||||||
/// <reference path="./typings/main.d.ts" />
|
|
||||||
var classes = require("./taskbuffer.classes");
|
|
||||||
var taskChain = function (taskArrayArg) {
|
|
||||||
return new classes.TaskChain(taskArrayArg);
|
|
||||||
};
|
|
||||||
module.exports = taskChain;
|
|
||||||
|
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhc2tidWZmZXIudGFza2NoYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRDQUE0QztBQUM1QyxJQUFPLE9BQU8sV0FBVyxzQkFBc0IsQ0FBQyxDQUFDO0FBQ2pELElBQUksU0FBUyxHQUFHLFVBQVMsWUFBMkI7SUFFaEQsTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUMvQyxDQUFDLENBQUM7QUFDRixpQkFBUyxTQUFTLENBQUMiLCJmaWxlIjoidGFza2J1ZmZlci50YXNrY2hhaW4uanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi90eXBpbmdzL21haW4uZC50c1wiIC8+XG5pbXBvcnQgY2xhc3NlcyA9IHJlcXVpcmUoXCIuL3Rhc2tidWZmZXIuY2xhc3Nlc1wiKTtcbnZhciB0YXNrQ2hhaW4gPSBmdW5jdGlvbih0YXNrQXJyYXlBcmc6Y2xhc3Nlcy5UYXNrW10pe1xuXG4gICAgcmV0dXJuIG5ldyBjbGFzc2VzLlRhc2tDaGFpbih0YXNrQXJyYXlBcmcpO1xufTtcbmV4cG9ydCA9IHRhc2tDaGFpbjtcbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
|
|
10
package.json
10
package.json
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "taskbuffer",
|
"name": "taskbuffer",
|
||||||
"version": "0.0.3",
|
"version": "0.0.5",
|
||||||
"description": "manage triggers and execution of tasks with promises",
|
"description": "manage triggers and execution of tasks with promises",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@ -23,13 +23,13 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/pushrocks/taskbuffer#readme",
|
"homepage": "https://github.com/pushrocks/taskbuffer#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"beautylog": "^2.1.1",
|
"beautylog": "^4.1.6",
|
||||||
"npmts": "^3.1.2",
|
"projectinfo": "1.0.1",
|
||||||
"projectinfo": "0.0.2",
|
|
||||||
"q": "^1.4.1",
|
"q": "^1.4.1",
|
||||||
"rx": "^4.1.0"
|
"rx": "^4.1.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"should": "^8.2.2"
|
"should": "^8.3.1",
|
||||||
|
"npmts": "^5.1.5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
3
test/test.d.ts
vendored
Normal file
3
test/test.d.ts
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
declare var taskbuffer: any;
|
||||||
|
declare var classes: any;
|
||||||
|
declare var should: any;
|
@ -22,4 +22,5 @@ describe("taskbuffer", function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
//# sourceMappingURL=test.js.map
|
|
||||||
|
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0RBQWdEO0FBQ2hELElBQUksVUFBVSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUMxQyxJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQUNwRCxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDL0IsUUFBUSxDQUFDLFlBQVksRUFBQztJQUNsQixRQUFRLENBQUMsU0FBUyxFQUFDO1FBQ2YsSUFBSSxRQUFRLENBQUM7UUFDYixFQUFFLENBQUMsMENBQTBDLEVBQUM7WUFDMUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxxQ0FBcUMsRUFBQztZQUNyQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLHVCQUF1QixFQUFDO1lBQ3ZCLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUM7Z0JBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUNqRCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsc0RBQXNELEVBQUM7WUFDdEQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMzQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6InRlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vdHMvdHlwaW5ncy9tYWluLmQudHNcIiAvPlxudmFyIHRhc2tidWZmZXIgPSByZXF1aXJlKFwiLi4vZGlzdC9pbmRleFwiKTtcbnZhciBjbGFzc2VzID0gcmVxdWlyZShcIi4uL2Rpc3QvdGFza2J1ZmZlci5jbGFzc2VzXCIpO1xudmFyIHNob3VsZCA9IHJlcXVpcmUoXCJzaG91bGRcIik7XG5kZXNjcmliZShcInRhc2tidWZmZXJcIixmdW5jdGlvbigpe1xuICAgIGRlc2NyaWJlKFwiLnRhc2soKVwiLGZ1bmN0aW9uKCl7XG4gICAgICAgIHZhciB0ZXN0VGFzaztcbiAgICAgICAgaXQoXCJzaG91bGQgcmV0dXJuIGEgbmV3IHRhc2sgdG8gdmFyIHRlc3RUYXNrXCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIHRlc3RUYXNrID0gdGFza2J1ZmZlci50YXNrKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KFwidGVzdFRhc2sgc2hvdWxkIGJlIGluc3RhbmNlIG9mIFRhc2tcIixmdW5jdGlvbigpe1xuICAgICAgICAgICAgdGVzdFRhc2suc2hvdWxkLmJlLmluc3RhbmNlb2YoY2xhc3Nlcy5UYXNrKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KFwidGVzdFRhc2suaWRsZSBpcyB0cnVlXCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIGlmICghdGVzdFRhc2suaWRsZSl7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidGVzdFRhc2suaWRsZSBpcyBub3QgdHJ1ZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGl0KFwidGVzdFRhc2sucnVubmluZyBpcyB0eXBlIGJvb2xlYW4gYW5kIGluaXRpYWxseSBmYWxzZVwiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICB0ZXN0VGFzay5ydW5uaW5nLnNob3VsZC5iZS50eXBlKFwiYm9vbGVhblwiKTtcbiAgICAgICAgICAgIHRlc3RUYXNrLnJ1bm5pbmcuc2hvdWxkLmJlLmZhbHNlKCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufSk7Il19
|
||||||
|
@ -1,2 +1,5 @@
|
|||||||
/// <reference path="./typings/main.d.ts" />
|
/// <reference path="./typings/main.d.ts" />
|
||||||
export * from "./taskbuffer.classes"
|
export * from "./taskbuffer.classes";
|
||||||
|
|
||||||
|
// import for naming only
|
||||||
|
import "./taskbuffer.classes.helpers"
|
@ -1,16 +1,16 @@
|
|||||||
/// <reference path="./typings/main.d.ts" />
|
/// <reference path="./typings/main.d.ts" />
|
||||||
import plugins = require("./taskbuffer.plugins");
|
import plugins = require("./taskbuffer.plugins");
|
||||||
import classes = require("./taskbuffer.classes");
|
import {Task} from "./taskbuffer.classes"
|
||||||
|
|
||||||
export var emptyTaskFunction = function(){
|
export let emptyTaskFunction = function(){
|
||||||
var done = plugins.Q.defer();
|
let done = plugins.Q.defer();
|
||||||
done.resolve();
|
done.resolve();
|
||||||
return done.promise;
|
return done.promise;
|
||||||
};
|
};
|
||||||
|
|
||||||
export var isTask = function(taskArg):boolean{
|
export let isTask = function(taskArg):boolean{
|
||||||
if(
|
if(
|
||||||
taskArg instanceof classes.Task
|
taskArg instanceof Task
|
||||||
&& typeof taskArg.task === "function"
|
&& typeof taskArg.task === "function"
|
||||||
){
|
){
|
||||||
return true;
|
return true;
|
||||||
@ -19,11 +19,50 @@ export var isTask = function(taskArg):boolean{
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export var runTask = function(taskArg){
|
|
||||||
var done = plugins.Q.defer();
|
export let isTaskTouched = (task:Task, touchedTasksArray:Task[]):boolean => {
|
||||||
var taskReturn;
|
return false;
|
||||||
if(isTask(taskArg)){
|
}
|
||||||
taskReturn taskArg.task();
|
|
||||||
|
export let runTask = function(taskArg:Task,optionsArg?:{touchedTasksArray:Task[]}){
|
||||||
|
let done = plugins.Q.defer();
|
||||||
|
let localDeferred = plugins.Q.defer();
|
||||||
|
let touchedTasksArray:Task[];
|
||||||
|
if(optionsArg.touchedTasksArray){
|
||||||
|
touchedTasksArray = optionsArg.touchedTasksArray;
|
||||||
|
} else {
|
||||||
|
touchedTasksArray = [];
|
||||||
}
|
}
|
||||||
|
touchedTasksArray.push(taskArg);
|
||||||
|
localDeferred.promise
|
||||||
|
.then(() =>{
|
||||||
|
if(taskArg.preTask && !isTaskTouched(taskArg.preTask,touchedTasksArray)){
|
||||||
|
return runTask(taskArg.preTask,{touchedTasksArray:touchedTasksArray})
|
||||||
|
} else {
|
||||||
|
let done2 = plugins.Q.resolve();
|
||||||
|
done2.resolve();
|
||||||
|
return done2.promise;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
return taskArg.task();
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
if(taskArg.afterTask && !isTaskTouched(taskArg.afterTask,touchedTasksArray)){
|
||||||
|
return runTask(taskArg.afterTask,{touchedTasksArray:touchedTasksArray})
|
||||||
|
} else {
|
||||||
|
let done2 = plugins.Q.resolve();
|
||||||
|
done2.resolve();
|
||||||
|
return done2.promise;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
done.resolve();
|
||||||
|
})
|
||||||
|
|
||||||
return done.promise;
|
return done.promise;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export let runBufferedTask = (taskArg:Task) => {
|
||||||
|
|
||||||
|
}
|
@ -2,46 +2,46 @@
|
|||||||
import * as plugins from "./taskbuffer.plugins"
|
import * as plugins from "./taskbuffer.plugins"
|
||||||
import * as helpers from "./taskbuffer.classes.helpers"
|
import * as helpers from "./taskbuffer.classes.helpers"
|
||||||
|
|
||||||
|
|
||||||
export class Task {
|
export class Task {
|
||||||
task:function;
|
task:any;
|
||||||
idle:boolean;
|
idle:boolean;
|
||||||
running:boolean;
|
running:boolean;
|
||||||
buffered:boolean;
|
buffered:boolean;
|
||||||
private _counterBufferRelative;
|
bufferCounter:number;
|
||||||
private _counterTriggerAbsolute;
|
bufferMax:number;
|
||||||
|
private _counterTriggerAbsolute:number;
|
||||||
private _state:string;
|
private _state:string;
|
||||||
preTask:Task;
|
preTask:Task;
|
||||||
afterTask:Task;
|
afterTask:Task;
|
||||||
|
|
||||||
constructor(taskArg,optionsArg:{preTask?:Task,afterTask?:Task, buffered?:boolean} = {}){
|
constructor(optionsArg:{taskFunction:any,preTask?:Task,afterTask?:Task, buffered?:boolean, bufferMax?:number}){
|
||||||
|
if (!optionsArg){optionsArg = {taskFunction:function(){}}}
|
||||||
var options = optionsArg;
|
var options = optionsArg;
|
||||||
this.task = taskArg;
|
this.task = optionsArg.taskFunction;
|
||||||
this.preTask = options.preTask;
|
this.preTask = options.preTask;
|
||||||
this.afterTask = options.afterTask;
|
this.afterTask = options.afterTask;
|
||||||
this.idle = true;
|
this.idle = true;
|
||||||
this.running = false;
|
this.running = false;
|
||||||
if (typeof options.buffered === "boolean"){
|
this.buffered = options.buffered;
|
||||||
this.buffered = options.buffered;
|
this.bufferMax = options.bufferMax;
|
||||||
} else {
|
|
||||||
this.buffered = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
trigger(){
|
trigger(){
|
||||||
let done = plugins.Q.defer();
|
let done = plugins.Q.defer();
|
||||||
helpers.runTask(this.preTask)
|
if(this.buffered) {this.triggerBuffered()}
|
||||||
.then(function(){
|
else{this.triggerUnBuffered()};
|
||||||
|
|
||||||
})
|
|
||||||
.then(function(){
|
|
||||||
|
|
||||||
})
|
|
||||||
.then(function(){
|
|
||||||
done.resolve();
|
|
||||||
});
|
|
||||||
return done.promise;
|
|
||||||
};
|
};
|
||||||
|
triggerUnBuffered(){
|
||||||
|
return helpers.runTask(this);
|
||||||
|
}
|
||||||
triggerBuffered(){
|
triggerBuffered(){
|
||||||
var done = plugins.Q.defer();
|
var done = plugins.Q.defer();
|
||||||
|
if(!(this.bufferCounter >= this.bufferMax)){
|
||||||
|
this.bufferCounter++
|
||||||
|
}
|
||||||
|
helpers.runBufferedTask(this);
|
||||||
|
return done.promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
get state():string {
|
get state():string {
|
||||||
|
@ -1,11 +1,40 @@
|
|||||||
/// <reference path="./typings/main.d.ts" />
|
/// <reference path="./typings/main.d.ts" />
|
||||||
|
import * as plugins from "./taskbuffer.plugins";
|
||||||
|
import {Task} from "./taskbuffer.classes";
|
||||||
import helpers = require("./taskbuffer.classes.helpers");
|
import helpers = require("./taskbuffer.classes.helpers");
|
||||||
import * as classes from "./taskbuffer.classes"
|
|
||||||
|
|
||||||
export class Taskchain extends classes.Task {
|
export class Taskchain extends Task {
|
||||||
constructor(taskArrayArg:classes.Task[]){
|
taskArray:Task[];
|
||||||
|
|
||||||
|
constructor(taskArrayArg:Task[]|Task){
|
||||||
super({
|
super({
|
||||||
task: function(){}
|
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();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
addTask(taskArg:Task){
|
||||||
|
this.taskArray.push(taskArg);
|
||||||
|
};
|
||||||
|
removeTask(taskArg:Task){
|
||||||
|
//TODO
|
||||||
|
};
|
||||||
|
shiftTask(){
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
let myTask = new Taskchain(
|
||||||
|
new Task({
|
||||||
|
taskFunction:function(){}
|
||||||
|
})
|
||||||
|
);
|
Reference in New Issue
Block a user