Compare commits

..

21 Commits

Author SHA1 Message Date
130c4177a6 0.0.5 2016-05-05 19:26:02 +02:00
90c9f23c23 improved .npmignore 2016-05-05 19:25:59 +02:00
0d0ee67ca3 compiled 2016-05-05 19:21:50 +02:00
5fd11ec9c0 add some more buffer logic 2016-05-05 19:21:01 +02:00
569cb311c9 compile and update some imports to work with TypeScript declaration 2016-05-05 18:36:31 +02:00
44db37574c now running Tasks and handling task loops allright. 2016-05-05 18:06:04 +02:00
fb7f5c5e68 recompile 2016-05-04 05:20:51 +02:00
b6595ac1d3 small typo fix 2016-05-04 05:15:05 +02:00
3f3f9c68f1 small update on promise return in README 2016-05-04 05:13:36 +02:00
48c20c081f update README on how buffered Tasks work. 2016-05-04 05:11:08 +02:00
72504d7ad7 cleanup 2016-05-04 04:42:47 +02:00
370e714fe1 0.0.4 2016-05-04 04:29:35 +02:00
4179347f26 fix package.json 2016-05-04 04:29:27 +02:00
130e071a06 update structure and deps 2016-05-04 04:28:50 +02:00
c4e2021a01 0.0.3 2016-05-04 04:18:11 +02:00
58ac5745a1 Update Readme and clarify use of Promises. 2016-05-04 04:17:59 +02:00
38d02a3ac2 0.0.2 2016-05-04 04:11:46 +02:00
e29f5d1633 Update Readme 2016-05-04 04:11:22 +02:00
f815773ba3 some cosmetic additions 2016-05-04 03:45:52 +02:00
771539dae3 update structure for better ES6 support 2016-05-04 03:44:54 +02:00
71c883609b update to current status 2016-05-04 02:49:43 +02:00
31 changed files with 496 additions and 176 deletions

1
.gitignore vendored
View File

@ -1,5 +1,6 @@
.idea/
coverage/
docs/
ts/*.js
ts/*.js.map
ts/typings/

View File

@ -0,0 +1,5 @@
.idea/
docs/
coverage/
ts/
node_modules/

View File

@ -9,3 +9,24 @@ Flexible task organization for gulp.
```sh
npm install taskbuffer --save
```
## Concepts
#### Task
* A Task in its most simple form is a function that is executed when the task runs.
* A Task can have a **preTask** and an **afterTask**
(those are run before or after the main function whenever the task is called)
* 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.
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.
#### Taskchain
* Multiple Tasks can be combined in a bigger task using a Taskchain. Taskchain extends Task.

2
dist/index.d.ts vendored Normal file
View File

@ -0,0 +1,2 @@
export * from "./taskbuffer.classes";
import "./taskbuffer.classes.helpers";

17
dist/index.js vendored
View File

@ -1,9 +1,10 @@
#!/usr/bin/env node
"use strict";
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
/// <reference path="./typings/main.d.ts" />
__export(require("./taskbuffer.classes"));
// import for naming only
require("./taskbuffer.classes.helpers");
var task = require("./taskbuffer.task");
var taskbuffer = {
task: task
};
module.exports = taskbuffer;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLElBQU8sSUFBSSxXQUFXLG1CQUFtQixDQUFDLENBQUM7QUFHM0MsSUFBSSxVQUFVLEdBQUc7SUFDYixJQUFJLEVBQUUsSUFBSTtDQUNiLENBQUM7QUFFRixpQkFBUyxVQUFVLENBQUMiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi90eXBpbmdzL21haW4uZC50c1wiIC8+XG5pbXBvcnQgcGx1Z2lucyA9IHJlcXVpcmUoXCIuL3Rhc2tidWZmZXIucGx1Z2luc1wiKTtcbmltcG9ydCBjbGFzc2VzID0gcmVxdWlyZShcIi4vdGFza2J1ZmZlci5jbGFzc2VzXCIpO1xuaW1wb3J0IHRhc2sgPSByZXF1aXJlKFwiLi90YXNrYnVmZmVyLnRhc2tcIik7XG5pbXBvcnQgdGFza2NoYWluID0gcmVxdWlyZShcIi4vdGFza2J1ZmZlci50YXNrY2hhaW5cIik7XG5cbnZhciB0YXNrYnVmZmVyID0ge1xuICAgIHRhc2s6IHRhc2tcbn07XG5cbmV4cG9ydCA9IHRhc2tidWZmZXI7Il0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSw0Q0FBNEM7QUFDNUMsaUJBQWMsc0JBQXNCLENBQUMsRUFBQTtBQUVyQyx5QkFBeUI7QUFDekIsUUFBTyw4QkFBOEIsQ0FBQyxDQUFEIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4vdHlwaW5ncy9tYWluLmQudHNcIiAvPlxuZXhwb3J0ICogZnJvbSBcIi4vdGFza2J1ZmZlci5jbGFzc2VzXCI7XG5cbi8vIGltcG9ydCBmb3IgbmFtaW5nIG9ubHlcbmltcG9ydCBcIi4vdGFza2J1ZmZlci5jbGFzc2VzLmhlbHBlcnNcIiJdfQ==

2
dist/taskbuffer.classes.d.ts vendored Normal file
View 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
View 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;

65
dist/taskbuffer.classes.helpers.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,52 +1,8 @@
#!/usr/bin/env node
"use strict";
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
__export(require("./taskbuffer.classes.task"));
__export(require("./taskbuffer.classes.taskchain"));
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 Task = (function () {
function Task(taskArg, optionsArg) {
this.task = taskArg;
}
Task.prototype.trigger = function () {
this.preTask.task()
.then(this.task)
.then(this.afterTask.task);
};
;
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhc2tidWZmZXIuY2xhc3Nlcy50cyJdLCJuYW1lcyI6WyJUYXNrIiwiVGFzay5jb25zdHJ1Y3RvciIsIlRhc2sudHJpZ2dlciIsIlRhc2sudHJpZ2dlckJ1ZmZlcmVkIiwiVGFzay5zdGF0ZSIsIlRhc2tDaGFpbiIsIlRhc2tDaGFpbi5jb25zdHJ1Y3RvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0Q0FBNEM7QUFDNUMsSUFBTyxPQUFPLFdBQVcsc0JBQXNCLENBQUMsQ0FBQztBQUNqRDtJQVVJQSxjQUFZQSxPQUFPQSxFQUFDQSxVQUEyQ0E7UUFDM0RDLElBQUlBLENBQUNBLElBQUlBLEdBQUdBLE9BQU9BLENBQUNBO0lBQ3hCQSxDQUFDQTtJQUNERCxzQkFBT0EsR0FBUEE7UUFDSUUsSUFBSUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsSUFBSUEsRUFBRUE7YUFDZEEsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7YUFDZkEsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsU0FBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7SUFDbkNBLENBQUNBOztJQUNERiw4QkFBZUEsR0FBZkE7UUFDSUcsSUFBSUEsSUFBSUEsR0FBR0EsT0FBT0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsS0FBS0EsRUFBRUEsQ0FBQ0E7SUFDakNBLENBQUNBO0lBRURILHNCQUFJQSx1QkFBS0E7YUFBVEE7WUFDSUksTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsTUFBTUEsQ0FBQ0E7UUFDdkJBLENBQUNBO2FBQ0RKLFVBQVVBLFFBQWVBO1lBQ3JCSSxFQUFFQSxDQUFDQSxDQUFDQSxRQUFRQSxJQUFJQSxRQUFRQSxDQUFDQSxDQUFBQSxDQUFDQTtnQkFDdEJBLElBQUlBLENBQUNBLE1BQU1BLEdBQUdBLFFBQVFBLENBQUNBO1lBQzNCQSxDQUFDQTtZQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtnQkFDSkEsT0FBT0EsQ0FBQ0EsU0FBU0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsWUFBWUEsQ0FBRUEsQ0FBQ0E7WUFDM0NBLENBQUNBO1FBQ0xBLENBQUNBOzs7T0FQQUo7SUFRTEEsV0FBQ0E7QUFBREEsQ0FoQ0EsQUFnQ0NBLElBQUE7QUFoQ1ksWUFBSSxPQWdDaEIsQ0FBQTtBQUVEO0lBQStCSyw2QkFBSUE7SUFDL0JBLG1CQUFZQSxZQUFtQkE7UUFDM0JDLGtCQUFNQTtZQUNGQSxJQUFJQSxFQUFDQSxjQUFXLENBQUM7U0FDcEJBLENBQUNBLENBQUNBO0lBQ1BBLENBQUNBO0lBQ0xELGdCQUFDQTtBQUFEQSxDQU5BLEFBTUNBLEVBTjhCLElBQUksRUFNbEM7QUFOWSxpQkFBUyxZQU1yQixDQUFBIiwiZmlsZSI6InRhc2tidWZmZXIuY2xhc3Nlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuL3R5cGluZ3MvbWFpbi5kLnRzXCIgLz5cbmltcG9ydCBwbHVnaW5zID0gcmVxdWlyZShcIi4vdGFza2J1ZmZlci5wbHVnaW5zXCIpO1xuZXhwb3J0IGNsYXNzIFRhc2sge1xuICAgIHRhc2s6YW55O1xuICAgIGlkbGU6Ym9vbGVhbjtcbiAgICBidWZmZXJlZDpib29sZWFuO1xuICAgIGJ1ZmZlcmVkRm9yY2VkOmJvb2xlYW47XG4gICAgcnVubmluZzpib29sZWFuO1xuICAgIHByaXZhdGUgX3N0YXRlOnN0cmluZztcbiAgICBwcmVUYXNrOlRhc2s7XG4gICAgYWZ0ZXJUYXNrOlRhc2s7XG5cbiAgICBjb25zdHJ1Y3Rvcih0YXNrQXJnLG9wdGlvbnNBcmc/OntwcmVUYXNrPzpUYXNrLGFmdGVyVGFzaz86VGFza30pe1xuICAgICAgICB0aGlzLnRhc2sgPSB0YXNrQXJnO1xuICAgIH1cbiAgICB0cmlnZ2VyKCl7XG4gICAgICAgIHRoaXMucHJlVGFzay50YXNrKClcbiAgICAgICAgICAgIC50aGVuKHRoaXMudGFzaylcbiAgICAgICAgICAgIC50aGVuKHRoaXMuYWZ0ZXJUYXNrLnRhc2spO1xuICAgIH07XG4gICAgdHJpZ2dlckJ1ZmZlcmVkKCl7XG4gICAgICAgIHZhciBkb25lID0gcGx1Z2lucy5RLmRlZmVyKCk7XG4gICAgfVxuXG4gICAgZ2V0IHN0YXRlKCk6c3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRlO1xuICAgIH1cbiAgICBzZXQgc3RhdGUoc3RhdGVBcmc6c3RyaW5nKXtcbiAgICAgICAgaWYgKHN0YXRlQXJnID09IFwibG9ja2VkXCIpe1xuICAgICAgICAgICAgdGhpcy5fc3RhdGUgPSBcImxvY2tlZFwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGx1Z2lucy5iZWF1dHlsb2cuZXJyb3IoXCJzdGF0ZSB0eXBlXCIgKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRhc2tDaGFpbiBleHRlbmRzIFRhc2sge1xuICAgIGNvbnN0cnVjdG9yKHRhc2tBcnJheUFyZzpUYXNrW10pe1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICB0YXNrOmZ1bmN0aW9uKCl7fVxuICAgICAgICB9KTtcbiAgICB9XG59Il0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhc2tidWZmZXIuY2xhc3Nlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsaUJBQWMsMkJBQ2QsQ0FBQyxFQUR3QztBQUN6QyxpQkFBYyxnQ0FDZCxDQUFDLEVBRDZDIiwiZmlsZSI6InRhc2tidWZmZXIuY2xhc3Nlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3Rhc2tidWZmZXIuY2xhc3Nlcy50YXNrXCJcbmV4cG9ydCAqIGZyb20gXCIuL3Rhc2tidWZmZXIuY2xhc3Nlcy50YXNrY2hhaW5cIlxuIl19

23
dist/taskbuffer.classes.task.d.ts vendored Normal file
View 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
View 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

View 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
View 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
View File

@ -0,0 +1,5 @@
declare var plugins: {
beautylog: any;
Q: any;
};
export = plugins;

View File

@ -1,5 +1,4 @@
#!/usr/bin/env node
"use strict";
/// <reference path="./typings/main.d.ts" />
var plugins = {
beautylog: require("beautylog"),
@ -7,4 +6,4 @@ var plugins = {
};
module.exports = plugins;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhc2tidWZmZXIucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0Q0FBNEM7QUFDNUMsSUFBSSxPQUFPLEdBQUc7SUFDVixTQUFTLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUMvQixDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQztDQUNsQixDQUFDO0FBQ0YsaUJBQVMsT0FBTyxDQUFDIiwiZmlsZSI6InRhc2tidWZmZXIucGx1Z2lucy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuL3R5cGluZ3MvbWFpbi5kLnRzXCIgLz5cbnZhciBwbHVnaW5zID0ge1xuICAgIGJlYXV0eWxvZzogcmVxdWlyZShcImJlYXV0eWxvZ1wiKSxcbiAgICBROiByZXF1aXJlKFwicVwiKVxufTtcbmV4cG9ydCA9IHBsdWdpbnM7XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhc2tidWZmZXIucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNENBQTRDO0FBQzVDLElBQUksT0FBTyxHQUFHO0lBQ1YsU0FBUyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDL0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUM7Q0FDbEIsQ0FBQztBQUNGLGlCQUFTLE9BQU8sQ0FBQyIsImZpbGUiOiJ0YXNrYnVmZmVyLnBsdWdpbnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi90eXBpbmdzL21haW4uZC50c1wiIC8+XG52YXIgcGx1Z2lucyA9IHtcbiAgICBiZWF1dHlsb2c6IHJlcXVpcmUoXCJiZWF1dHlsb2dcIiksXG4gICAgUTogcmVxdWlyZShcInFcIilcbn07XG5leHBvcnQgPSBwbHVnaW5zO1xuIl19

View File

@ -1,5 +0,0 @@
#!/usr/bin/env node
/// <reference path="./typings/main.d.ts" />
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhc2tidWZmZXIucHJvbWlzZWNoYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRDQUE0QyIsImZpbGUiOiJ0YXNrYnVmZmVyLnByb21pc2VjaGFpbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuL3R5cGluZ3MvbWFpbi5kLnRzXCIgLz4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=

View File

@ -1,11 +0,0 @@
#!/usr/bin/env node
/// <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=

View File

@ -1,10 +0,0 @@
#!/usr/bin/env node
/// <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==

View File

@ -1,6 +1,6 @@
{
"name": "taskbuffer",
"version": "0.0.1",
"version": "0.0.5",
"description": "manage triggers and execution of tasks with promises",
"main": "dist/index.js",
"scripts": {
@ -23,11 +23,13 @@
},
"homepage": "https://github.com/pushrocks/taskbuffer#readme",
"dependencies": {
"beautylog": "^2.1.1",
"npmts": "^3.0.2",
"q": "^1.4.1"
"beautylog": "^4.1.6",
"projectinfo": "1.0.1",
"q": "^1.4.1",
"rx": "^4.1.0"
},
"devDependencies": {
"should": "^8.2.2"
"should": "^8.3.1",
"npmts": "^5.1.5"
}
}

3
test/test.d.ts vendored Normal file
View File

@ -0,0 +1,3 @@
declare var taskbuffer: any;
declare var classes: any;
declare var should: any;

View File

@ -1,13 +1,26 @@
#!/usr/bin/env node
/// <reference path="../ts/typings/main.d.ts" />
var taskbuffer = require("../dist/index.js");
describe("taskbuffer.task", function () {
describe(".task", function () {
it("should return a new task", function () {
var myTask = taskbuffer.task();
var taskbuffer = require("../dist/index");
var classes = require("../dist/taskbuffer.classes");
var should = require("should");
describe("taskbuffer", function () {
describe(".task()", function () {
var testTask;
it("should return a new task to var testTask", function () {
testTask = taskbuffer.task();
});
it("testTask should be instance of Task", function () {
testTask.should.be.instanceof(classes.Task);
});
it("testTask.idle is true", function () {
if (!testTask.idle) {
throw new Error("testTask.idle is not true");
}
});
it("testTask.running is type boolean and initially false", function () {
testTask.running.should.be.type("boolean");
testTask.running.should.be.false();
});
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0RBQWdEO0FBQ2hELElBQUksVUFBVSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQzdDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBQztJQUN2QixRQUFRLENBQUMsT0FBTyxFQUFDO1FBQ2IsRUFBRSxDQUFDLDBCQUEwQixFQUFDO1lBQzFCLElBQUksTUFBTSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDLENBQUMiLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi90cy90eXBpbmdzL21haW4uZC50c1wiIC8+XG52YXIgdGFza2J1ZmZlciA9IHJlcXVpcmUoXCIuLi9kaXN0L2luZGV4LmpzXCIpO1xuZGVzY3JpYmUoXCJ0YXNrYnVmZmVyLnRhc2tcIixmdW5jdGlvbigpe1xuICAgIGRlc2NyaWJlKFwiLnRhc2tcIixmdW5jdGlvbigpe1xuICAgICAgICBpdChcInNob3VsZCByZXR1cm4gYSBuZXcgdGFza1wiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICB2YXIgbXlUYXNrID0gdGFza2J1ZmZlci50YXNrKCk7XG4gICAgICAgIH0pXG4gICAgfSk7XG59KTsiXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0RBQWdEO0FBQ2hELElBQUksVUFBVSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUMxQyxJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQUNwRCxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDL0IsUUFBUSxDQUFDLFlBQVksRUFBQztJQUNsQixRQUFRLENBQUMsU0FBUyxFQUFDO1FBQ2YsSUFBSSxRQUFRLENBQUM7UUFDYixFQUFFLENBQUMsMENBQTBDLEVBQUM7WUFDMUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxxQ0FBcUMsRUFBQztZQUNyQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLHVCQUF1QixFQUFDO1lBQ3ZCLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUM7Z0JBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUNqRCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsc0RBQXNELEVBQUM7WUFDdEQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMzQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6InRlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vdHMvdHlwaW5ncy9tYWluLmQudHNcIiAvPlxudmFyIHRhc2tidWZmZXIgPSByZXF1aXJlKFwiLi4vZGlzdC9pbmRleFwiKTtcbnZhciBjbGFzc2VzID0gcmVxdWlyZShcIi4uL2Rpc3QvdGFza2J1ZmZlci5jbGFzc2VzXCIpO1xudmFyIHNob3VsZCA9IHJlcXVpcmUoXCJzaG91bGRcIik7XG5kZXNjcmliZShcInRhc2tidWZmZXJcIixmdW5jdGlvbigpe1xuICAgIGRlc2NyaWJlKFwiLnRhc2soKVwiLGZ1bmN0aW9uKCl7XG4gICAgICAgIHZhciB0ZXN0VGFzaztcbiAgICAgICAgaXQoXCJzaG91bGQgcmV0dXJuIGEgbmV3IHRhc2sgdG8gdmFyIHRlc3RUYXNrXCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIHRlc3RUYXNrID0gdGFza2J1ZmZlci50YXNrKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KFwidGVzdFRhc2sgc2hvdWxkIGJlIGluc3RhbmNlIG9mIFRhc2tcIixmdW5jdGlvbigpe1xuICAgICAgICAgICAgdGVzdFRhc2suc2hvdWxkLmJlLmluc3RhbmNlb2YoY2xhc3Nlcy5UYXNrKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KFwidGVzdFRhc2suaWRsZSBpcyB0cnVlXCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIGlmICghdGVzdFRhc2suaWRsZSl7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidGVzdFRhc2suaWRsZSBpcyBub3QgdHJ1ZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGl0KFwidGVzdFRhc2sucnVubmluZyBpcyB0eXBlIGJvb2xlYW4gYW5kIGluaXRpYWxseSBmYWxzZVwiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICB0ZXN0VGFzay5ydW5uaW5nLnNob3VsZC5iZS50eXBlKFwiYm9vbGVhblwiKTtcbiAgICAgICAgICAgIHRlc3RUYXNrLnJ1bm5pbmcuc2hvdWxkLmJlLmZhbHNlKCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufSk7Il19

View File

@ -1 +1 @@
{"version":3,"file":"test.js","sourceRoot":"","sources":["test.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,IAAI,UAAU,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAC7C,QAAQ,CAAC,iBAAiB,EAAC;IACvB,QAAQ,CAAC,OAAO,EAAC;QACb,EAAE,CAAC,0BAA0B,EAAC;YAC1B,IAAI,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;QACnC,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
{"version":3,"file":"test.js","sourceRoot":"","sources":["test.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,IAAI,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAC1C,IAAI,OAAO,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;AACpD,IAAI,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC/B,QAAQ,CAAC,YAAY,EAAC;IAClB,QAAQ,CAAC,SAAS,EAAC;QACf,IAAI,QAAQ,CAAC;QACb,EAAE,CAAC,0CAA0C,EAAC;YAC1C,QAAQ,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAC;YACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,uBAAuB,EAAC;YACvB,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YACjD,CAAC;QACL,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,sDAAsD,EAAC;YACtD,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3C,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}

View File

@ -1,9 +1,25 @@
/// <reference path="../ts/typings/main.d.ts" />
var taskbuffer = require("../dist/index.js");
describe("taskbuffer.task",function(){
describe(".task",function(){
it("should return a new task",function(){
var myTask = taskbuffer.task();
})
var taskbuffer = require("../dist/index");
var classes = require("../dist/taskbuffer.classes");
var should = require("should");
describe("taskbuffer",function(){
describe(".task()",function(){
var testTask;
it("should return a new task to var testTask",function(){
testTask = taskbuffer.task();
});
it("testTask should be instance of Task",function(){
testTask.should.be.instanceof(classes.Task);
});
it("testTask.idle is true",function(){
if (!testTask.idle){
throw new Error("testTask.idle is not true");
}
});
it("testTask.running is type boolean and initially false",function(){
testTask.running.should.be.type("boolean");
testTask.running.should.be.false();
});
});
});

View File

@ -1,11 +1,5 @@
/// <reference path="./typings/main.d.ts" />
import plugins = require("./taskbuffer.plugins");
import classes = require("./taskbuffer.classes");
import task = require("./taskbuffer.task");
import taskchain = require("./taskbuffer.taskchain");
export * from "./taskbuffer.classes";
var taskbuffer = {
task: task
};
export = taskbuffer;
// import for naming only
import "./taskbuffer.classes.helpers"

View File

@ -0,0 +1,68 @@
/// <reference path="./typings/main.d.ts" />
import plugins = require("./taskbuffer.plugins");
import {Task} from "./taskbuffer.classes"
export let emptyTaskFunction = function(){
let done = plugins.Q.defer();
done.resolve();
return done.promise;
};
export let isTask = function(taskArg):boolean{
if(
taskArg instanceof Task
&& typeof taskArg.task === "function"
){
return true;
} else {
return false;
}
};
export let isTaskTouched = (task:Task, touchedTasksArray:Task[]):boolean => {
return false;
}
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;
};
export let runBufferedTask = (taskArg:Task) => {
}

View File

@ -0,0 +1,57 @@
/// <reference path="./typings/main.d.ts" />
import * as plugins from "./taskbuffer.plugins"
import * as helpers from "./taskbuffer.classes.helpers"
export class Task {
task:any;
idle:boolean;
running:boolean;
buffered:boolean;
bufferCounter:number;
bufferMax:number;
private _counterTriggerAbsolute:number;
private _state:string;
preTask:Task;
afterTask:Task;
constructor(optionsArg:{taskFunction:any,preTask?:Task,afterTask?:Task, buffered?:boolean, bufferMax?:number}){
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;
}
trigger(){
let done = plugins.Q.defer();
if(this.buffered) {this.triggerBuffered()}
else{this.triggerUnBuffered()};
};
triggerUnBuffered(){
return helpers.runTask(this);
}
triggerBuffered(){
var done = plugins.Q.defer();
if(!(this.bufferCounter >= this.bufferMax)){
this.bufferCounter++
}
helpers.runBufferedTask(this);
return done.promise;
}
get state():string {
return this._state;
}
set state(stateArg:string){
if (stateArg == "locked"){
this._state = "locked";
} else {
plugins.beautylog.error("state type" );
}
}
}

View File

@ -0,0 +1,40 @@
/// <reference path="./typings/main.d.ts" />
import * as plugins from "./taskbuffer.plugins";
import {Task} from "./taskbuffer.classes";
import helpers = require("./taskbuffer.classes.helpers");
export class Taskchain extends Task {
taskArray:Task[];
constructor(taskArrayArg:Task[]|Task){
super({
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(){}
})
);

View File

@ -1,43 +1,2 @@
/// <reference path="./typings/main.d.ts" />
import plugins = require("./taskbuffer.plugins");
export class Task {
task:any;
idle:boolean;
buffered:boolean;
bufferedForced:boolean;
running:boolean;
private _state:string;
preTask:Task;
afterTask:Task;
constructor(taskArg,optionsArg?:{preTask?:Task,afterTask?:Task}){
this.task = taskArg;
}
trigger(){
this.preTask.task()
.then(this.task)
.then(this.afterTask.task);
};
triggerBuffered(){
var done = plugins.Q.defer();
}
get state():string {
return this._state;
}
set state(stateArg:string){
if (stateArg == "locked"){
this._state = "locked";
} else {
plugins.beautylog.error("state type" );
}
}
}
export class TaskChain extends Task {
constructor(taskArrayArg:Task[]){
super({
task:function(){}
});
}
}
export * from "./taskbuffer.classes.task"
export * from "./taskbuffer.classes.taskchain"

View File

@ -1 +0,0 @@
/// <reference path="./typings/main.d.ts" />

View File

@ -1,7 +0,0 @@
/// <reference path="./typings/main.d.ts" />
import classes = require("./taskbuffer.classes");
var task = function(taskArg,options?){
var task = taskArg
return new classes.Task(task,options);
};
export = task;

View File

@ -1,7 +0,0 @@
/// <reference path="./typings/main.d.ts" />
import classes = require("./taskbuffer.classes");
var taskChain = function(taskArrayArg:classes.Task[]){
return new classes.TaskChain(taskArrayArg);
};
export = taskChain;