Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
b1eeb3563e | |||
1714f552ac | |||
454a999a42 | |||
1f3f2ae92f | |||
9014eec9f6 | |||
ee56b6f655 | |||
55ddbece13 |
2
dist/index.js
vendored
2
dist/index.js
vendored
@ -7,4 +7,4 @@ __export(require("./taskbuffer.classes"));
|
|||||||
// import for naming only
|
// import for naming only
|
||||||
require("./taskbuffer.classes.helpers");
|
require("./taskbuffer.classes.helpers");
|
||||||
|
|
||||||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSw0Q0FBNEM7QUFDNUMsaUJBQWMsc0JBQXNCLENBQUMsRUFBQTtBQUVyQyx5QkFBeUI7QUFDekIsUUFBTyw4QkFBOEIsQ0FBQyxDQUFEIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4vdHlwaW5ncy9tYWluLmQudHNcIiAvPlxuZXhwb3J0ICogZnJvbSBcIi4vdGFza2J1ZmZlci5jbGFzc2VzXCI7XG5cbi8vIGltcG9ydCBmb3IgbmFtaW5nIG9ubHlcbmltcG9ydCBcIi4vdGFza2J1ZmZlci5jbGFzc2VzLmhlbHBlcnNcIiJdfQ==
|
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSw0Q0FBNEM7QUFDNUMsaUJBQWMsc0JBQXNCLENBQUMsRUFBQTtBQUVyQyx5QkFBeUI7QUFDekIsUUFBTyw4QkFBOEIsQ0FBQyxDQUFEIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4vdHlwaW5ncy9tYWluLmQudHNcIiAvPlxyXG5leHBvcnQgKiBmcm9tIFwiLi90YXNrYnVmZmVyLmNsYXNzZXNcIjtcclxuXHJcbi8vIGltcG9ydCBmb3IgbmFtaW5nIG9ubHlcclxuaW1wb3J0IFwiLi90YXNrYnVmZmVyLmNsYXNzZXMuaGVscGVyc1wiIl19
|
||||||
|
3
dist/taskbuffer.classes.helpers.d.ts
vendored
3
dist/taskbuffer.classes.helpers.d.ts
vendored
@ -1,8 +1,9 @@
|
|||||||
import { Task } from "./taskbuffer.classes";
|
import { Task } from "./taskbuffer.classes";
|
||||||
export declare let emptyTaskFunction: () => any;
|
export declare let emptyTaskFunction: () => any;
|
||||||
export declare let isTask: (taskArg: any) => boolean;
|
export declare let isTask: (taskArg: any) => boolean;
|
||||||
export declare let isTaskTouched: (task: Task, touchedTasksArray: Task[]) => boolean;
|
export declare let isTaskTouched: (taskArg: Task, touchedTasksArray: Task[]) => boolean;
|
||||||
export declare let runTask: (taskArg: Task, optionsArg?: {
|
export declare let runTask: (taskArg: Task, optionsArg?: {
|
||||||
touchedTasksArray: Task[];
|
touchedTasksArray: Task[];
|
||||||
}) => any;
|
}) => any;
|
||||||
export declare let runBufferedTask: (taskArg: Task) => void;
|
export declare let runBufferedTask: (taskArg: Task) => void;
|
||||||
|
export declare let updateTaskStatus: (taskArg: any, statusArg: string) => void;
|
||||||
|
41
dist/taskbuffer.classes.helpers.js
vendored
41
dist/taskbuffer.classes.helpers.js
vendored
File diff suppressed because one or more lines are too long
2
dist/taskbuffer.classes.js
vendored
2
dist/taskbuffer.classes.js
vendored
@ -5,4 +5,4 @@ function __export(m) {
|
|||||||
__export(require("./taskbuffer.classes.task"));
|
__export(require("./taskbuffer.classes.task"));
|
||||||
__export(require("./taskbuffer.classes.taskchain"));
|
__export(require("./taskbuffer.classes.taskchain"));
|
||||||
|
|
||||||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhc2tidWZmZXIuY2xhc3Nlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsaUJBQWMsMkJBQ2QsQ0FBQyxFQUR3QztBQUN6QyxpQkFBYyxnQ0FDZCxDQUFDLEVBRDZDIiwiZmlsZSI6InRhc2tidWZmZXIuY2xhc3Nlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3Rhc2tidWZmZXIuY2xhc3Nlcy50YXNrXCJcbmV4cG9ydCAqIGZyb20gXCIuL3Rhc2tidWZmZXIuY2xhc3Nlcy50YXNrY2hhaW5cIlxuIl19
|
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhc2tidWZmZXIuY2xhc3Nlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsaUJBQWMsMkJBQ2QsQ0FBQyxFQUR3QztBQUN6QyxpQkFBYyxnQ0FDZCxDQUFDLEVBRDZDIiwiZmlsZSI6InRhc2tidWZmZXIuY2xhc3Nlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3Rhc2tidWZmZXIuY2xhc3Nlcy50YXNrXCJcclxuZXhwb3J0ICogZnJvbSBcIi4vdGFza2J1ZmZlci5jbGFzc2VzLnRhc2tjaGFpblwiXHJcbiJdfQ==
|
||||||
|
6
dist/taskbuffer.classes.task.d.ts
vendored
6
dist/taskbuffer.classes.task.d.ts
vendored
@ -1,7 +1,8 @@
|
|||||||
export declare class Task {
|
export declare class Task {
|
||||||
|
name: string;
|
||||||
task: any;
|
task: any;
|
||||||
idle: boolean;
|
|
||||||
running: boolean;
|
running: boolean;
|
||||||
|
idle: boolean;
|
||||||
buffered: boolean;
|
buffered: boolean;
|
||||||
bufferCounter: number;
|
bufferCounter: number;
|
||||||
bufferMax: number;
|
bufferMax: number;
|
||||||
@ -15,8 +16,9 @@ export declare class Task {
|
|||||||
afterTask?: Task;
|
afterTask?: Task;
|
||||||
buffered?: boolean;
|
buffered?: boolean;
|
||||||
bufferMax?: number;
|
bufferMax?: number;
|
||||||
|
name?: string;
|
||||||
});
|
});
|
||||||
trigger(): void;
|
trigger(): any;
|
||||||
triggerUnBuffered(): any;
|
triggerUnBuffered(): any;
|
||||||
triggerBuffered(): any;
|
triggerBuffered(): any;
|
||||||
state: string;
|
state: string;
|
||||||
|
14
dist/taskbuffer.classes.task.js
vendored
14
dist/taskbuffer.classes.task.js
vendored
File diff suppressed because one or more lines are too long
8
dist/taskbuffer.classes.taskchain.d.ts
vendored
8
dist/taskbuffer.classes.taskchain.d.ts
vendored
@ -1,8 +1,14 @@
|
|||||||
import { Task } from "./taskbuffer.classes";
|
import { Task } from "./taskbuffer.classes";
|
||||||
export declare class Taskchain extends Task {
|
export declare class Taskchain extends Task {
|
||||||
taskArray: Task[];
|
taskArray: Task[];
|
||||||
constructor(taskArrayArg: Task[] | Task);
|
private _oraObject;
|
||||||
|
constructor(optionsArg: {
|
||||||
|
name?: string;
|
||||||
|
log?: boolean;
|
||||||
|
taskArray: Task[];
|
||||||
|
});
|
||||||
addTask(taskArg: Task): void;
|
addTask(taskArg: Task): void;
|
||||||
removeTask(taskArg: Task): void;
|
removeTask(taskArg: Task): void;
|
||||||
shiftTask(): void;
|
shiftTask(): void;
|
||||||
|
trigger(): any;
|
||||||
}
|
}
|
||||||
|
53
dist/taskbuffer.classes.taskchain.js
vendored
53
dist/taskbuffer.classes.taskchain.js
vendored
File diff suppressed because one or more lines are too long
0
dist/taskbuffer.classes.taskspace.d.ts
vendored
Normal file
0
dist/taskbuffer.classes.taskspace.d.ts
vendored
Normal file
3
dist/taskbuffer.classes.taskspace.js
vendored
Normal file
3
dist/taskbuffer.classes.taskspace.js
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
|
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJ0YXNrYnVmZmVyLmNsYXNzZXMudGFza3NwYWNlLmpzIiwic291cmNlc0NvbnRlbnQiOltdfQ==
|
8
dist/taskbuffer.plugins.d.ts
vendored
8
dist/taskbuffer.plugins.d.ts
vendored
@ -1,5 +1,3 @@
|
|||||||
declare var plugins: {
|
export import beautylog = require("beautylog");
|
||||||
beautylog: any;
|
export declare let Q: any;
|
||||||
Q: any;
|
export declare let lodash: any;
|
||||||
};
|
|
||||||
export = plugins;
|
|
||||||
|
10
dist/taskbuffer.plugins.js
vendored
10
dist/taskbuffer.plugins.js
vendored
@ -1,9 +1,7 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
/// <reference path="./typings/main.d.ts" />
|
/// <reference path="./typings/main.d.ts" />
|
||||||
var plugins = {
|
exports.beautylog = require("beautylog");
|
||||||
beautylog: require("beautylog"),
|
exports.Q = require("q");
|
||||||
Q: require("q")
|
exports.lodash = require("lodash");
|
||||||
};
|
|
||||||
module.exports = plugins;
|
|
||||||
|
|
||||||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhc2tidWZmZXIucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNENBQTRDO0FBQzVDLElBQUksT0FBTyxHQUFHO0lBQ1YsU0FBUyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDL0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUM7Q0FDbEIsQ0FBQztBQUNGLGlCQUFTLE9BQU8sQ0FBQyIsImZpbGUiOiJ0YXNrYnVmZmVyLnBsdWdpbnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi90eXBpbmdzL21haW4uZC50c1wiIC8+XG52YXIgcGx1Z2lucyA9IHtcbiAgICBiZWF1dHlsb2c6IHJlcXVpcmUoXCJiZWF1dHlsb2dcIiksXG4gICAgUTogcmVxdWlyZShcInFcIilcbn07XG5leHBvcnQgPSBwbHVnaW5zO1xuIl19
|
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhc2tidWZmZXIucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNENBQTRDO0FBQzlCLGlCQUFTLFdBQVcsV0FBVyxDQUFDLENBQUM7QUFDcEMsU0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQixjQUFNLEdBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDIiwiZmlsZSI6InRhc2tidWZmZXIucGx1Z2lucy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuL3R5cGluZ3MvbWFpbi5kLnRzXCIgLz5cclxuZXhwb3J0IGltcG9ydCBiZWF1dHlsb2cgPSByZXF1aXJlKFwiYmVhdXR5bG9nXCIpO1xyXG5leHBvcnQgbGV0IFEgPSByZXF1aXJlKFwicVwiKTtcclxuZXhwb3J0IGxldCBsb2Rhc2g9IHJlcXVpcmUoXCJsb2Rhc2hcIik7XHJcbiJdfQ==
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "taskbuffer",
|
"name": "taskbuffer",
|
||||||
"version": "0.0.5",
|
"version": "0.1.0",
|
||||||
"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,7 +23,8 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/pushrocks/taskbuffer#readme",
|
"homepage": "https://github.com/pushrocks/taskbuffer#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"beautylog": "^4.1.6",
|
"beautylog": "^5.0.0",
|
||||||
|
"lodash": "^4.12.0",
|
||||||
"projectinfo": "1.0.1",
|
"projectinfo": "1.0.1",
|
||||||
"q": "^1.4.1",
|
"q": "^1.4.1",
|
||||||
"rx": "^4.1.0"
|
"rx": "^4.1.0"
|
||||||
|
3
test/test.d.ts
vendored
3
test/test.d.ts
vendored
@ -1,3 +0,0 @@
|
|||||||
declare var taskbuffer: any;
|
|
||||||
declare var classes: any;
|
|
||||||
declare var should: any;
|
|
||||||
|
73
test/test.js
73
test/test.js
File diff suppressed because one or more lines are too long
81
test/test.ts
81
test/test.ts
@ -1,25 +1,84 @@
|
|||||||
/// <reference path="../ts/typings/main.d.ts" />
|
/// <reference path="../ts/typings/main.d.ts" />
|
||||||
var taskbuffer = require("../dist/index");
|
import taskbuffer = require("../dist/index");
|
||||||
var classes = require("../dist/taskbuffer.classes");
|
let should = require("should");
|
||||||
var should = require("should");
|
let plugins = {
|
||||||
describe("taskbuffer",function(){
|
q: require("q")
|
||||||
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(){
|
// setup some testData to work with
|
||||||
testTask.should.be.instanceof(classes.Task);
|
let testTask:taskbuffer.Task;
|
||||||
|
let testTaskFunction = function(){
|
||||||
|
let done = plugins.q.defer();
|
||||||
|
console.log("main function executed!")
|
||||||
|
done.resolve();
|
||||||
|
return done.promise;
|
||||||
|
}
|
||||||
|
let testPreTask = new taskbuffer.Task({
|
||||||
|
taskFunction:function(){
|
||||||
|
console.log("preTask executed");
|
||||||
|
},
|
||||||
|
preTask:testTask
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("taskbuffer",function(){
|
||||||
|
describe(".Task",function(){
|
||||||
|
it("new Task() should return a new task",function(){
|
||||||
|
testTask = new taskbuffer.Task({taskFunction:testTaskFunction,preTask:testPreTask});
|
||||||
|
});
|
||||||
|
it("testTask should be and instance of Task",function(){
|
||||||
|
testTask.should.be.instanceof(taskbuffer.Task);
|
||||||
});
|
});
|
||||||
it("testTask.idle is true",function(){
|
it("testTask.idle is true",function(){
|
||||||
if (!testTask.idle){
|
if (!testTask.idle){
|
||||||
throw new Error("testTask.idle is not true");
|
throw new Error("testTask.idle is not true");
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
it("testTask.running is type boolean and initially false",function(){
|
it("testTask.running is type boolean and initially false",function(){
|
||||||
testTask.running.should.be.type("boolean");
|
testTask.running.should.be.type("boolean");
|
||||||
testTask.running.should.be.false();
|
testTask.running.should.be.false();
|
||||||
});
|
});
|
||||||
|
it("testTask.trigger() should return Promise",function(){
|
||||||
|
testTask.trigger().should.be.Promise();
|
||||||
|
});
|
||||||
|
it("testTask.trigger() returned Promise should be fullfilled",function(done){
|
||||||
|
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);
|
||||||
|
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
@ -20,12 +20,20 @@ export let isTask = function(taskArg):boolean{
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
export let isTaskTouched = (task:Task, touchedTasksArray:Task[]):boolean => {
|
export let isTaskTouched = (taskArg:Task, touchedTasksArray:Task[]):boolean => {
|
||||||
return false;
|
let result = false;
|
||||||
|
for (let keyArg in touchedTasksArray){
|
||||||
|
if(taskArg === touchedTasksArray[keyArg]){
|
||||||
|
result = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
export let runTask = function(taskArg:Task,optionsArg?:{touchedTasksArray:Task[]}){
|
export let runTask = function(taskArg:Task,optionsArg:{touchedTasksArray:Task[]} = {touchedTasksArray:[]}){
|
||||||
let done = plugins.Q.defer();
|
let done = plugins.Q.defer();
|
||||||
|
updateTaskStatus(taskArg,"running");
|
||||||
|
done.promise.then(function(){updateTaskStatus(taskArg,"idle")})
|
||||||
let localDeferred = plugins.Q.defer();
|
let localDeferred = plugins.Q.defer();
|
||||||
let touchedTasksArray:Task[];
|
let touchedTasksArray:Task[];
|
||||||
if(optionsArg.touchedTasksArray){
|
if(optionsArg.touchedTasksArray){
|
||||||
@ -39,7 +47,7 @@ export let runTask = function(taskArg:Task,optionsArg?:{touchedTasksArray:Task[]
|
|||||||
if(taskArg.preTask && !isTaskTouched(taskArg.preTask,touchedTasksArray)){
|
if(taskArg.preTask && !isTaskTouched(taskArg.preTask,touchedTasksArray)){
|
||||||
return runTask(taskArg.preTask,{touchedTasksArray:touchedTasksArray})
|
return runTask(taskArg.preTask,{touchedTasksArray:touchedTasksArray})
|
||||||
} else {
|
} else {
|
||||||
let done2 = plugins.Q.resolve();
|
let done2 = plugins.Q.defer();
|
||||||
done2.resolve();
|
done2.resolve();
|
||||||
return done2.promise;
|
return done2.promise;
|
||||||
}
|
}
|
||||||
@ -51,18 +59,39 @@ export let runTask = function(taskArg:Task,optionsArg?:{touchedTasksArray:Task[]
|
|||||||
if(taskArg.afterTask && !isTaskTouched(taskArg.afterTask,touchedTasksArray)){
|
if(taskArg.afterTask && !isTaskTouched(taskArg.afterTask,touchedTasksArray)){
|
||||||
return runTask(taskArg.afterTask,{touchedTasksArray:touchedTasksArray})
|
return runTask(taskArg.afterTask,{touchedTasksArray:touchedTasksArray})
|
||||||
} else {
|
} else {
|
||||||
let done2 = plugins.Q.resolve();
|
let done2 = plugins.Q.defer();
|
||||||
done2.resolve();
|
done2.resolve();
|
||||||
return done2.promise;
|
return done2.promise;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
done.resolve();
|
done.resolve();
|
||||||
})
|
});
|
||||||
|
localDeferred.resolve();
|
||||||
return done.promise;
|
return done.promise;
|
||||||
};
|
};
|
||||||
|
|
||||||
export let runBufferedTask = (taskArg:Task) => {
|
export let runBufferedTask = (taskArg:Task) => {
|
||||||
|
let recursiveBufferRunner = () => {
|
||||||
|
if(taskArg.bufferCounter > 0){
|
||||||
|
taskArg.bufferCounter--;
|
||||||
|
runTask(taskArg)
|
||||||
|
.then(recursiveBufferRunner);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export let updateTaskStatus = (taskArg,statusArg:string) => {
|
||||||
|
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");
|
||||||
|
}
|
||||||
}
|
}
|
@ -2,11 +2,11 @@
|
|||||||
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 {
|
||||||
|
name:string;
|
||||||
task:any;
|
task:any;
|
||||||
idle:boolean;
|
|
||||||
running:boolean;
|
running:boolean;
|
||||||
|
idle:boolean;
|
||||||
buffered:boolean;
|
buffered:boolean;
|
||||||
bufferCounter:number;
|
bufferCounter:number;
|
||||||
bufferMax:number;
|
bufferMax:number;
|
||||||
@ -15,22 +15,37 @@ export class Task {
|
|||||||
preTask:Task;
|
preTask:Task;
|
||||||
afterTask:Task;
|
afterTask:Task;
|
||||||
|
|
||||||
constructor(optionsArg:{taskFunction:any,preTask?:Task,afterTask?:Task, buffered?:boolean, bufferMax?:number}){
|
constructor(optionsArg:{
|
||||||
|
taskFunction:any,
|
||||||
|
preTask?:Task,
|
||||||
|
afterTask?:Task,
|
||||||
|
buffered?:boolean,
|
||||||
|
bufferMax?:number,
|
||||||
|
name?:string
|
||||||
|
}){
|
||||||
if (!optionsArg){optionsArg = {taskFunction:function(){}}}
|
if (!optionsArg){optionsArg = {taskFunction:function(){}}}
|
||||||
var options = optionsArg;
|
var options = optionsArg;
|
||||||
this.task = optionsArg.taskFunction;
|
this.task = optionsArg.taskFunction;
|
||||||
this.preTask = options.preTask;
|
this.preTask = options.preTask;
|
||||||
this.afterTask = options.afterTask;
|
this.afterTask = options.afterTask;
|
||||||
this.idle = true;
|
|
||||||
this.running = false;
|
this.running = false;
|
||||||
|
this.idle = true;
|
||||||
this.buffered = options.buffered;
|
this.buffered = options.buffered;
|
||||||
this.bufferMax = options.bufferMax;
|
this.bufferMax = options.bufferMax;
|
||||||
|
this.name = options.name;
|
||||||
}
|
}
|
||||||
|
|
||||||
trigger(){
|
trigger(){
|
||||||
let done = plugins.Q.defer();
|
let done = plugins.Q.defer();
|
||||||
if(this.buffered) {this.triggerBuffered()}
|
if(this.buffered) {
|
||||||
else{this.triggerUnBuffered()};
|
this.triggerBuffered()
|
||||||
|
.then(done.resolve);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.triggerUnBuffered()
|
||||||
|
.then(done.resolve);
|
||||||
|
};
|
||||||
|
return done.promise;
|
||||||
};
|
};
|
||||||
triggerUnBuffered(){
|
triggerUnBuffered(){
|
||||||
return helpers.runTask(this);
|
return helpers.runTask(this);
|
||||||
@ -51,7 +66,7 @@ export class Task {
|
|||||||
if (stateArg == "locked"){
|
if (stateArg == "locked"){
|
||||||
this._state = "locked";
|
this._state = "locked";
|
||||||
} else {
|
} else {
|
||||||
plugins.beautylog.error("state type" );
|
plugins.beautylog.error("state type " + stateArg.blue + " could not be set");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -5,22 +5,42 @@ import helpers = require("./taskbuffer.classes.helpers");
|
|||||||
|
|
||||||
export class Taskchain extends Task {
|
export class Taskchain extends Task {
|
||||||
taskArray:Task[];
|
taskArray:Task[];
|
||||||
|
private _oraObject;
|
||||||
constructor(taskArrayArg:Task[]|Task){
|
constructor(optionsArg:{
|
||||||
super({
|
name?:string,
|
||||||
|
log?:boolean,
|
||||||
|
taskArray:Task[]
|
||||||
|
}){
|
||||||
|
let options = plugins.lodash.assign(
|
||||||
|
{
|
||||||
|
name:"unnamed Task",
|
||||||
|
log:false
|
||||||
|
},
|
||||||
|
optionsArg,
|
||||||
|
{
|
||||||
taskFunction: () => { // this is the function that gets executed when TaskChain is triggered
|
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
|
console.log("running taskchain function");
|
||||||
let startDeferred = plugins.Q.defer(); // this is the starting Deferred object
|
let done = plugins.Q.defer(); // this is the starting Deferred object
|
||||||
let promisePointer = startDeferred.promise;
|
let taskCounter = 0;
|
||||||
for(let keyArg in this.taskArray){
|
let iterateTasks = () => {
|
||||||
promisePointer.then(function(){
|
if(typeof this.taskArray[taskCounter] != "undefined"){
|
||||||
promisePointer = this.taskArray[keyArg].trigger();
|
this.taskArray[taskCounter].trigger()
|
||||||
return promisePointer;
|
.then(()=>{
|
||||||
})
|
taskCounter++;
|
||||||
};
|
iterateTasks();
|
||||||
startDeferred.resolve();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
done.resolve();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
iterateTasks();
|
||||||
|
return done.promise;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
super(options);
|
||||||
|
this.taskArray = optionsArg.taskArray;
|
||||||
|
this._oraObject = new plugins.beautylog.Ora("Taskchain idle","blue");
|
||||||
}
|
}
|
||||||
addTask(taskArg:Task){
|
addTask(taskArg:Task){
|
||||||
this.taskArray.push(taskArg);
|
this.taskArray.push(taskArg);
|
||||||
@ -31,10 +51,18 @@ export class Taskchain extends Task {
|
|||||||
shiftTask(){
|
shiftTask(){
|
||||||
|
|
||||||
};
|
};
|
||||||
|
trigger(){
|
||||||
|
this._oraObject.start(this.name + " running...");
|
||||||
|
return helpers.runTask(this);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let myTask = new Taskchain(
|
let myTask = new Taskchain(
|
||||||
|
{
|
||||||
|
taskArray: [
|
||||||
new Task({
|
new Task({
|
||||||
taskFunction:function(){}
|
taskFunction:function(){}
|
||||||
})
|
})
|
||||||
|
]
|
||||||
|
}
|
||||||
);
|
);
|
0
ts/taskbuffer.classes.taskspace.ts
Normal file
0
ts/taskbuffer.classes.taskspace.ts
Normal file
@ -1,6 +1,4 @@
|
|||||||
/// <reference path="./typings/main.d.ts" />
|
/// <reference path="./typings/main.d.ts" />
|
||||||
var plugins = {
|
export import beautylog = require("beautylog");
|
||||||
beautylog: require("beautylog"),
|
export let Q = require("q");
|
||||||
Q: require("q")
|
export let lodash= require("lodash");
|
||||||
};
|
|
||||||
export = plugins;
|
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
{
|
{
|
||||||
"ambientDependencies": {
|
"ambientDependencies": {
|
||||||
"node": "github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts",
|
"colors": "github:DefinitelyTyped/DefinitelyTyped/colors/colors.d.ts",
|
||||||
"mocha": "github:Bartvds/tsd-deftools/typings/DefinitelyTyped/mocha/mocha.d.ts",
|
"mocha": "github:Bartvds/tsd-deftools/typings/DefinitelyTyped/mocha/mocha.d.ts",
|
||||||
"colors": "github:DefinitelyTyped/DefinitelyTyped/colors/colors.d.ts"
|
"node": "github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts",
|
||||||
|
"should": "registry:dt/should#8.1.1+20160316155526"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user