Compare commits
9 Commits
Author | SHA1 | Date | |
---|---|---|---|
4bc5617240 | |||
39c41a817e | |||
8823e2b01d | |||
24e96926e3 | |||
8a414b9a7d | |||
a347ded65a | |||
3ce4b200db | |||
cd6407f189 | |||
ca2afbd8c7 |
36
.gitlab-ci.yml
Normal file
36
.gitlab-ci.yml
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
image: hosttoday/ht-docker-node:npmts
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- test
|
||||||
|
- release
|
||||||
|
|
||||||
|
testLEGACY:
|
||||||
|
stage: test
|
||||||
|
script:
|
||||||
|
- npmci test legacy
|
||||||
|
tags:
|
||||||
|
- docker
|
||||||
|
|
||||||
|
testLTS:
|
||||||
|
stage: test
|
||||||
|
script:
|
||||||
|
- npmci test lts
|
||||||
|
tags:
|
||||||
|
- docker
|
||||||
|
|
||||||
|
testSTABLE:
|
||||||
|
stage: test
|
||||||
|
script:
|
||||||
|
- npmci test stable
|
||||||
|
tags:
|
||||||
|
- docker
|
||||||
|
|
||||||
|
release:
|
||||||
|
stage: release
|
||||||
|
environment: npmjs-com_registry
|
||||||
|
script:
|
||||||
|
- npmci publish
|
||||||
|
only:
|
||||||
|
- tags
|
||||||
|
tags:
|
||||||
|
- docker
|
11
.travis.yml
11
.travis.yml
@ -1,11 +0,0 @@
|
|||||||
language: node_js
|
|
||||||
node_js:
|
|
||||||
- stable
|
|
||||||
deploy:
|
|
||||||
provider: npm
|
|
||||||
email: npm@lossless.digital
|
|
||||||
api_key:
|
|
||||||
secure: NejErc2+ohEEH8DecYcx6/2oSdEQQBRzlOwTMxQBftHdIkvziwOcCerqCJtrXuzalqAofVCcVisunWIXZmxfIBGV6mJVauCIp5KzH4JUhYzLym33p9MSphjlPNfsI6nKkW0LAgOMjkJGuHLqU3oskvBqYyh8m3NuCna5mNwm8lo5WGckzHSwdsmhnb839WhlZbmQc6M6WW6Ir7bbxX9ZOmNUYUWH6VdXfPBxoXN3nO21pXKt7Zg8/nU7IkF+VEUVfYNlR3xUiocWemuBFxjtsfoliQ/y/oGL7ccQ7OeE4PxSu+xNUpYYVipkQcRtyWDKCwJp4R2DNTj/ikOHH+BEFOBDG8qYxwf37Ju0jFybzslAEJLy5gl4bFjiZNA8ldUXY5ubJb56iZTNSbMU0lmXw+qKvIoyVY/1JAE5lzFGVA6nDdiUGAEOg/ajzAC3gjFU2QS2Wvncz3dky0k/2INBVUwmmAvAMazl5XkvHtQ3Wzb+Fc8TXWflqBDF0okySoJzlY13pm/OtOHipiqEyUCnqaUUwJtLIb6tHOPzxZKlWLCem7y84cDlxQSbLVItbArOJFHdr66sp/U/FqYAtWeLdbkhjCENFwzR9kYtEyEl+QWLTckO1/lVF4xJLh6drfhQ66CwF5bfqr5xIS08mnKuYBfJOA4/wV4bQFPhtYm7Oi8=
|
|
||||||
on:
|
|
||||||
tags: true
|
|
||||||
repo: pushrocks/taskbuffer
|
|
13
README.md
13
README.md
@ -28,14 +28,15 @@ npm install taskbuffer --save
|
|||||||
* Task is compatible to gulp streams.
|
* Task is compatible to gulp streams.
|
||||||
|
|
||||||
### class `TaskChain`
|
### class `TaskChain`
|
||||||
* Multiple Tasks can be combined in a bigger task using a Taskchain.
|
* TaskChain extends Task.
|
||||||
* Taskchain extends Task.
|
* Multiple Tasks can be combined in a bigger task using a TaskChain.
|
||||||
* While the tasks are async in themselve, TaskChain **runs Tasks serialized** (one after the other)
|
* While the tasks are async in themselve, TaskChain **runs Tasks serialized** (one after the other)
|
||||||
* that means that tasks can rely on each other and
|
* that means that tasks can rely on each other and
|
||||||
|
|
||||||
### class `TaskParallel`
|
### class `TaskParallel`
|
||||||
|
* TaskParallel extends Task.
|
||||||
* like TaskChain, however **tasks run in parallel**
|
* like TaskChain, however **tasks run in parallel**
|
||||||
* Tasks cannot rely on each other
|
* Tasks cannot rely on each other.
|
||||||
|
|
||||||
### Usage
|
### Usage
|
||||||
We highly recommend TypeScript as this module supports **TypeScript intellisense**.
|
We highly recommend TypeScript as this module supports **TypeScript intellisense**.
|
||||||
@ -43,9 +44,13 @@ We highly recommend TypeScript as this module supports **TypeScript intellisense
|
|||||||
import * as taskbuffer from "taskbuffer";
|
import * as taskbuffer from "taskbuffer";
|
||||||
|
|
||||||
myTask = new taskbuffer.Task({
|
myTask = new taskbuffer.Task({
|
||||||
|
preTask: someOtherTask // optional, don't worry loops are prevented
|
||||||
|
afterTask: someOtherTask // optional, don't worry loops are prevented
|
||||||
name:"myTask1",
|
name:"myTask1",
|
||||||
taskFunction:() => {
|
taskFunction:() => {
|
||||||
//do some stuff and return promise
|
// do some stuff and return promise
|
||||||
|
// pass on any data through promise resolution
|
||||||
|
// Use TypeScript for better understanding and code completion
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
```
|
```
|
2
dist/index.d.ts
vendored
2
dist/index.d.ts
vendored
@ -1,4 +1,4 @@
|
|||||||
export { Task } from "./taskbuffer.classes.task";
|
export { Task, ITaskFunction } from "./taskbuffer.classes.task";
|
||||||
export { Taskchain } from "./taskbuffer.classes.taskchain";
|
export { Taskchain } from "./taskbuffer.classes.taskchain";
|
||||||
export { Taskparallel } from "./taskbuffer.classes.taskparallel";
|
export { Taskparallel } from "./taskbuffer.classes.taskparallel";
|
||||||
export { Taskspace } from "./taskbuffer.classes.taskspace";
|
export { Taskspace } from "./taskbuffer.classes.taskspace";
|
||||||
|
4
dist/index.js
vendored
4
dist/index.js
vendored
@ -1,5 +1,4 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
/// <reference path="./typings/main.d.ts" />
|
|
||||||
var taskbuffer_classes_task_1 = require("./taskbuffer.classes.task");
|
var taskbuffer_classes_task_1 = require("./taskbuffer.classes.task");
|
||||||
exports.Task = taskbuffer_classes_task_1.Task;
|
exports.Task = taskbuffer_classes_task_1.Task;
|
||||||
var taskbuffer_classes_taskchain_1 = require("./taskbuffer.classes.taskchain");
|
var taskbuffer_classes_taskchain_1 = require("./taskbuffer.classes.taskchain");
|
||||||
@ -10,5 +9,4 @@ var taskbuffer_classes_taskspace_1 = require("./taskbuffer.classes.taskspace");
|
|||||||
exports.Taskspace = taskbuffer_classes_taskspace_1.Taskspace;
|
exports.Taskspace = taskbuffer_classes_taskspace_1.Taskspace;
|
||||||
// import for naming only
|
// import for naming only
|
||||||
require("./taskbuffer.classes.helpers");
|
require("./taskbuffer.classes.helpers");
|
||||||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsd0NBQWlDLDJCQUEyQixDQUFDO0FBQXJELDhDQUFxRDtBQUM3RCw2Q0FBd0IsZ0NBQWdDLENBQUM7QUFBakQsNkRBQWlEO0FBQ3pELGdEQUEyQixtQ0FBbUMsQ0FBQztBQUF2RCxzRUFBdUQ7QUFDL0QsNkNBQXdCLGdDQUFnQyxDQUFDO0FBQWpELDZEQUFpRDtBQUV6RCx5QkFBeUI7QUFDekIsUUFBTyw4QkFBOEIsQ0FBQyxDQUFEIn0=
|
||||||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSw0Q0FBNEM7QUFDNUMsd0NBQW1CLDJCQUEyQixDQUFDO0FBQXZDLDhDQUF1QztBQUMvQyw2Q0FBd0IsZ0NBQWdDLENBQUM7QUFBakQsNkRBQWlEO0FBQ3pELGdEQUEyQixtQ0FBbUMsQ0FBQztBQUF2RCxzRUFBdUQ7QUFDL0QsNkNBQXdCLGdDQUFnQyxDQUFDO0FBQWpELDZEQUFpRDtBQUV6RCx5QkFBeUI7QUFDekIsUUFBTyw4QkFBOEIsQ0FBQyxDQUFEIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4vdHlwaW5ncy9tYWluLmQudHNcIiAvPlxyXG5leHBvcnQge1Rhc2t9IGZyb20gXCIuL3Rhc2tidWZmZXIuY2xhc3Nlcy50YXNrXCI7XHJcbmV4cG9ydCB7VGFza2NoYWlufSBmcm9tIFwiLi90YXNrYnVmZmVyLmNsYXNzZXMudGFza2NoYWluXCI7XHJcbmV4cG9ydCB7VGFza3BhcmFsbGVsfSBmcm9tIFwiLi90YXNrYnVmZmVyLmNsYXNzZXMudGFza3BhcmFsbGVsXCI7XHJcbmV4cG9ydCB7VGFza3NwYWNlfSBmcm9tIFwiLi90YXNrYnVmZmVyLmNsYXNzZXMudGFza3NwYWNlXCI7XHJcblxyXG4vLyBpbXBvcnQgZm9yIG5hbWluZyBvbmx5XHJcbmltcG9ydCBcIi4vdGFza2J1ZmZlci5jbGFzc2VzLmhlbHBlcnNcIiJdfQ==
|
|
9
dist/taskbuffer.classes.helpers.d.ts
vendored
9
dist/taskbuffer.classes.helpers.d.ts
vendored
@ -1,9 +1,10 @@
|
|||||||
import { Task } from "./taskbuffer.classes.task";
|
/// <reference types="q" />
|
||||||
export declare let emptyTaskFunction: () => any;
|
import plugins = require("./taskbuffer.plugins");
|
||||||
|
import { Task, ITaskFunction } from "./taskbuffer.classes.task";
|
||||||
|
export declare let emptyTaskFunction: ITaskFunction;
|
||||||
export declare let isTask: (taskArg: any) => boolean;
|
export declare let isTask: (taskArg: any) => boolean;
|
||||||
export declare let isTaskTouched: (taskArg: 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;
|
}) => plugins.Q.Promise<{}>;
|
||||||
export declare let runBufferedTask: (taskArg: Task) => void;
|
export declare let runBufferedTask: (taskArg: Task) => void;
|
||||||
export declare let updateTaskStatus: (taskArg: any, statusArg: string) => void;
|
|
||||||
|
63
dist/taskbuffer.classes.helpers.js
vendored
63
dist/taskbuffer.classes.helpers.js
vendored
File diff suppressed because one or more lines are too long
23
dist/taskbuffer.classes.task.d.ts
vendored
23
dist/taskbuffer.classes.task.d.ts
vendored
@ -1,7 +1,13 @@
|
|||||||
|
/// <reference types="q" />
|
||||||
|
import * as plugins from "./taskbuffer.plugins";
|
||||||
|
export interface ITaskFunction {
|
||||||
|
(): PromiseLike<any>;
|
||||||
|
}
|
||||||
export declare class Task {
|
export declare class Task {
|
||||||
name: string;
|
name: string;
|
||||||
task: any;
|
task: any;
|
||||||
running: boolean;
|
running: boolean;
|
||||||
|
runningBuffered: boolean;
|
||||||
idle: boolean;
|
idle: boolean;
|
||||||
buffered: boolean;
|
buffered: boolean;
|
||||||
bufferCounter: number;
|
bufferCounter: number;
|
||||||
@ -11,15 +17,24 @@ export declare class Task {
|
|||||||
preTask: Task;
|
preTask: Task;
|
||||||
afterTask: Task;
|
afterTask: Task;
|
||||||
constructor(optionsArg: {
|
constructor(optionsArg: {
|
||||||
taskFunction: any;
|
taskFunction: ITaskFunction;
|
||||||
preTask?: Task;
|
preTask?: Task;
|
||||||
afterTask?: Task;
|
afterTask?: Task;
|
||||||
buffered?: boolean;
|
buffered?: boolean;
|
||||||
bufferMax?: number;
|
bufferMax?: number;
|
||||||
name?: string;
|
name?: string;
|
||||||
});
|
});
|
||||||
trigger(): any;
|
/**
|
||||||
triggerUnBuffered(): any;
|
* trigger the task. Will trigger buffered if this.buffered is true
|
||||||
triggerBuffered(): any;
|
*/
|
||||||
|
trigger(): plugins.Q.Promise<{}>;
|
||||||
|
/**
|
||||||
|
* trigger task unbuffered.
|
||||||
|
*/
|
||||||
|
triggerUnBuffered(): plugins.Q.Promise<{}>;
|
||||||
|
/**
|
||||||
|
* trigger task buffered.
|
||||||
|
*/
|
||||||
|
triggerBuffered(): plugins.Q.Promise<{}>;
|
||||||
state: string;
|
state: string;
|
||||||
}
|
}
|
||||||
|
81
dist/taskbuffer.classes.task.js
vendored
81
dist/taskbuffer.classes.task.js
vendored
File diff suppressed because one or more lines are too long
68
dist/taskbuffer.classes.taskchain.js
vendored
68
dist/taskbuffer.classes.taskchain.js
vendored
File diff suppressed because one or more lines are too long
35
dist/taskbuffer.classes.taskparallel.js
vendored
35
dist/taskbuffer.classes.taskparallel.js
vendored
@ -1,21 +1,13 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
var __extends = (this && this.__extends) || function (d, b) {
|
const plugins = require("./taskbuffer.plugins");
|
||||||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
const taskbuffer_classes_task_1 = require("./taskbuffer.classes.task");
|
||||||
function __() { this.constructor = d; }
|
class Taskparallel extends taskbuffer_classes_task_1.Task {
|
||||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
constructor(optionsArg) {
|
||||||
};
|
let options = plugins.lodash.merge(optionsArg, {
|
||||||
/// <reference path="./typings/main.d.ts" />
|
taskFunction: () => {
|
||||||
var plugins = require("./taskbuffer.plugins");
|
let done = plugins.Q.defer();
|
||||||
var taskbuffer_classes_task_1 = require("./taskbuffer.classes.task");
|
let promiseArray = []; // stores promises of all tasks, since they run in parallel
|
||||||
var Taskparallel = (function (_super) {
|
this.taskArray.forEach(function (taskArg) {
|
||||||
__extends(Taskparallel, _super);
|
|
||||||
function Taskparallel(optionsArg) {
|
|
||||||
var _this = this;
|
|
||||||
var options = plugins.lodash.assign(optionsArg, {
|
|
||||||
taskFunction: function () {
|
|
||||||
var done = plugins.Q.defer();
|
|
||||||
var promiseArray; // stores promises of all tasks, since they run in parallel
|
|
||||||
_this.taskArray.forEach(function (taskArg) {
|
|
||||||
promiseArray.push(taskArg.trigger());
|
promiseArray.push(taskArg.trigger());
|
||||||
});
|
});
|
||||||
plugins.Q.all(promiseArray)
|
plugins.Q.all(promiseArray)
|
||||||
@ -23,10 +15,9 @@ var Taskparallel = (function (_super) {
|
|||||||
return done.promise;
|
return done.promise;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
_super.call(this, options);
|
super(options);
|
||||||
|
this.taskArray = optionsArg.taskArray;
|
||||||
}
|
}
|
||||||
return Taskparallel;
|
}
|
||||||
}(taskbuffer_classes_task_1.Task));
|
|
||||||
exports.Taskparallel = Taskparallel;
|
exports.Taskparallel = Taskparallel;
|
||||||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLnRhc2twYXJhbGxlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3Rhc2tidWZmZXIuY2xhc3Nlcy50YXNrcGFyYWxsZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksT0FBTyxXQUFNLHNCQUN6QixDQUFDLENBRDhDO0FBRS9DLDBDQUFxQiwyQkFFckIsQ0FBQyxDQUYrQztBQUVoRCwyQkFBa0MsOEJBQUk7SUFFbEMsWUFBWSxVQUVYO1FBQ0csSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQzlCLFVBQVUsRUFDVjtZQUNJLFlBQVksRUFBRTtnQkFDVixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUM3QixJQUFJLFlBQVksR0FBc0IsRUFBRSxDQUFDLENBQUMsMkRBQTJEO2dCQUNyRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxVQUFVLE9BQU87b0JBQ3BDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ3pDLENBQUMsQ0FBQyxDQUFBO2dCQUNGLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQztxQkFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDeEIsQ0FBQztTQUNKLENBQ0osQ0FBQztRQUNGLE1BQU0sT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUM7SUFDMUMsQ0FBQztBQUNMLENBQUM7QUF2Qlksb0JBQVksZUF1QnhCLENBQUEifQ==
|
||||||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhc2tidWZmZXIuY2xhc3Nlcy50YXNrcGFyYWxsZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNENBQTRDO0FBQzVDLElBQVksT0FBTyxXQUFNLHNCQUN6QixDQUFDLENBRDhDO0FBRS9DLHdDQUFtQiwyQkFFbkIsQ0FBQyxDQUY2QztBQUU5QztJQUFrQyxnQ0FBSTtJQUVsQyxzQkFBWSxVQUVYO1FBSkwsaUJBc0JDO1FBakJPLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUMvQixVQUFVLEVBQ1Y7WUFDSSxZQUFZLEVBQUM7Z0JBQ1QsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxZQUFZLENBQUMsQ0FBQywyREFBMkQ7Z0JBQzdFLEtBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFVBQVMsT0FBWTtvQkFDeEMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztnQkFDekMsQ0FBQyxDQUFDLENBQUE7Z0JBQ0YsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDO3FCQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUN4QixDQUFDO1NBQ0osQ0FDSixDQUFBO1FBQ0Qsa0JBQU0sT0FBTyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUNMLG1CQUFDO0FBQUQsQ0F0QkEsQUFzQkMsQ0F0QmlDLDhCQUFJLEdBc0JyQztBQXRCWSxvQkFBWSxlQXNCeEIsQ0FBQSIsImZpbGUiOiJ0YXNrYnVmZmVyLmNsYXNzZXMudGFza3BhcmFsbGVsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4vdHlwaW5ncy9tYWluLmQudHNcIiAvPlxyXG5pbXBvcnQgKiBhcyBwbHVnaW5zIGZyb20gXCIuL3Rhc2tidWZmZXIucGx1Z2luc1wiXHJcbmltcG9ydCAqIGFzIGhlbHBlcnMgZnJvbSBcIi4vdGFza2J1ZmZlci5jbGFzc2VzLmhlbHBlcnNcIlxyXG5pbXBvcnQge1Rhc2t9IGZyb20gXCIuL3Rhc2tidWZmZXIuY2xhc3Nlcy50YXNrXCJcclxuXHJcbmV4cG9ydCBjbGFzcyBUYXNrcGFyYWxsZWwgZXh0ZW5kcyBUYXNrIHtcclxuICAgIHRhc2tBcnJheTpUYXNrW107XHJcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zQXJnOntcclxuICAgICAgICB0YXNrQXJyYXk6VGFza1tdXHJcbiAgICB9KXtcclxuICAgICAgICBsZXQgb3B0aW9ucyA9IHBsdWdpbnMubG9kYXNoLmFzc2lnbihcclxuICAgICAgICAgICAgb3B0aW9uc0FyZyxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdGFza0Z1bmN0aW9uOigpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZG9uZSA9IHBsdWdpbnMuUS5kZWZlcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwcm9taXNlQXJyYXk7IC8vIHN0b3JlcyBwcm9taXNlcyBvZiBhbGwgdGFza3MsIHNpbmNlIHRoZXkgcnVuIGluIHBhcmFsbGVsXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YXNrQXJyYXkuZm9yRWFjaChmdW5jdGlvbih0YXNrQXJnOlRhc2spe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlQXJyYXkucHVzaCh0YXNrQXJnLnRyaWdnZXIoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICBwbHVnaW5zLlEuYWxsKHByb21pc2VBcnJheSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oZG9uZS5yZXNvbHZlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xyXG4gICAgfVxyXG59XHJcblxyXG4iXX0=
|
|
10
dist/taskbuffer.classes.taskspace.js
vendored
10
dist/taskbuffer.classes.taskspace.js
vendored
@ -1,9 +1,5 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
var Taskspace = (function () {
|
class Taskspace {
|
||||||
function Taskspace() {
|
}
|
||||||
}
|
|
||||||
return Taskspace;
|
|
||||||
}());
|
|
||||||
exports.Taskspace = Taskspace;
|
exports.Taskspace = Taskspace;
|
||||||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLnRhc2tzcGFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3Rhc2tidWZmZXIuY2xhc3Nlcy50YXNrc3BhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUdBO0FBRUEsQ0FBQztBQUZZLGlCQUFTLFlBRXJCLENBQUEifQ==
|
||||||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhc2tidWZmZXIuY2xhc3Nlcy50YXNrc3BhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUlBO0lBQUE7SUFFQSxDQUFDO0lBQUQsZ0JBQUM7QUFBRCxDQUZBLEFBRUMsSUFBQTtBQUZZLGlCQUFTLFlBRXJCLENBQUEiLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLnRhc2tzcGFjZS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuL3R5cGluZ3MvbWFpbi5kLnRzXCIgLz5cclxuaW1wb3J0ICogYXMgcGx1Z2lucyBmcm9tIFwiLi90YXNrYnVmZmVyLnBsdWdpbnNcIlxyXG5pbXBvcnQgKiBhcyBoZWxwZXJzIGZyb20gXCIuL3Rhc2tidWZmZXIuY2xhc3Nlcy5oZWxwZXJzXCJcclxuXHJcbmV4cG9ydCBjbGFzcyBUYXNrc3BhY2Uge1xyXG4gICAgXHJcbn0iXX0=
|
|
6
dist/taskbuffer.plugins.d.ts
vendored
6
dist/taskbuffer.plugins.d.ts
vendored
@ -1,3 +1,5 @@
|
|||||||
|
import "typings-global";
|
||||||
export import beautylog = require("beautylog");
|
export import beautylog = require("beautylog");
|
||||||
export declare let Q: any;
|
export import Q = require("q");
|
||||||
export declare let lodash: any;
|
export import lodash = require("lodash");
|
||||||
|
export import rxjs = require("rxjs");
|
||||||
|
6
dist/taskbuffer.plugins.js
vendored
6
dist/taskbuffer.plugins.js
vendored
@ -1,7 +1,7 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
/// <reference path="./typings/main.d.ts" />
|
require("typings-global");
|
||||||
exports.beautylog = require("beautylog");
|
exports.beautylog = require("beautylog");
|
||||||
exports.Q = require("q");
|
exports.Q = require("q");
|
||||||
exports.lodash = require("lodash");
|
exports.lodash = require("lodash");
|
||||||
|
exports.rxjs = require("rxjs");
|
||||||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhc2tidWZmZXIucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNENBQTRDO0FBQzlCLGlCQUFTLFdBQVcsV0FBVyxDQUFDLENBQUM7QUFDcEMsU0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQixjQUFNLEdBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDIiwiZmlsZSI6InRhc2tidWZmZXIucGx1Z2lucy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuL3R5cGluZ3MvbWFpbi5kLnRzXCIgLz5cclxuZXhwb3J0IGltcG9ydCBiZWF1dHlsb2cgPSByZXF1aXJlKFwiYmVhdXR5bG9nXCIpO1xyXG5leHBvcnQgbGV0IFEgPSByZXF1aXJlKFwicVwiKTtcclxuZXhwb3J0IGxldCBsb2Rhc2g9IHJlcXVpcmUoXCJsb2Rhc2hcIik7XHJcbiJdfQ==
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5wbHVnaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvdGFza2J1ZmZlci5wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxRQUFPLGdCQUNQLENBQUMsQ0FEc0I7QUFDVCxpQkFBUyxXQUFXLFdBQVcsQ0FBQyxDQUFDO0FBQ2pDLFNBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztBQUNqQixjQUFNLFdBQVUsUUFBUSxDQUFDLENBQUM7QUFDMUIsWUFBSSxXQUFXLE1BQU0sQ0FBQyxDQUFDIn0=
|
5
npmextra.json
Normal file
5
npmextra.json
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"npmts":{
|
||||||
|
"mode":"default"
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"mode":"default",
|
|
||||||
"coveralls":true
|
|
||||||
}
|
|
18
package.json
18
package.json
@ -1,8 +1,9 @@
|
|||||||
{
|
{
|
||||||
"name": "taskbuffer",
|
"name": "taskbuffer",
|
||||||
"version": "0.1.1",
|
"version": "1.0.1",
|
||||||
"description": "Flexible task organization for gulp. TypeScript ready!",
|
"description": "Flexible task organization for gulp. TypeScript ready!",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
|
"typings": "dist/index.d.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "(npmts)"
|
"test": "(npmts)"
|
||||||
},
|
},
|
||||||
@ -23,14 +24,17 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/pushrocks/taskbuffer#readme",
|
"homepage": "https://github.com/pushrocks/taskbuffer#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"beautylog": "^5.0.0",
|
"@types/lodash": "^0.0.28",
|
||||||
"lodash": "^4.12.0",
|
"@types/q": "^0.0.27",
|
||||||
"projectinfo": "1.0.1",
|
"beautylog": "^5.0.18",
|
||||||
|
"lodash": "^4.14.1",
|
||||||
"q": "^1.4.1",
|
"q": "^1.4.1",
|
||||||
"rx": "^4.1.0"
|
"rxjs": "^5.0.0-beta.10",
|
||||||
|
"typings-global": "^1.0.6"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"should": "^8.3.1",
|
"npmts-g": "^5.2.8",
|
||||||
"npmts": "^5.1.5"
|
"should": "^10.0.0",
|
||||||
|
"typings-test": "^1.0.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
1
test/test.d.ts
vendored
1
test/test.d.ts
vendored
@ -0,0 +1 @@
|
|||||||
|
import "typings-test";
|
||||||
|
81
test/test.js
81
test/test.js
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
|||||||
{"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"}
|
|
63
test/test.ts
63
test/test.ts
@ -1,21 +1,22 @@
|
|||||||
/// <reference path="../ts/typings/main.d.ts" />
|
import "typings-test";
|
||||||
import taskbuffer = require("../dist/index");
|
import taskbuffer = require("../dist/index");
|
||||||
let should = require("should");
|
let should = require("should");
|
||||||
let plugins = {
|
import q = require("q")
|
||||||
q: require("q")
|
|
||||||
}
|
|
||||||
|
|
||||||
// setup some testData to work with
|
// setup some testData to work with
|
||||||
let testTask:taskbuffer.Task;
|
let testTask:taskbuffer.Task;
|
||||||
let testTaskFunction = function(){
|
let testTaskFunction = function(){
|
||||||
let done = plugins.q.defer();
|
let done = q.defer();
|
||||||
console.log("main function executed!")
|
console.log("main function executed!")
|
||||||
done.resolve();
|
done.resolve();
|
||||||
return done.promise;
|
return done.promise;
|
||||||
}
|
}
|
||||||
let testPreTask = new taskbuffer.Task({
|
let testPreTask = new taskbuffer.Task({
|
||||||
taskFunction:function(){
|
taskFunction:function(){
|
||||||
|
let done = q.defer();
|
||||||
console.log("preTask executed");
|
console.log("preTask executed");
|
||||||
|
done.resolve();
|
||||||
|
return done.promise;
|
||||||
},
|
},
|
||||||
preTask:testTask
|
preTask:testTask
|
||||||
});
|
});
|
||||||
@ -56,7 +57,7 @@ describe("taskbuffer",function(){
|
|||||||
new taskbuffer.Task({
|
new taskbuffer.Task({
|
||||||
name:"task1",
|
name:"task1",
|
||||||
taskFunction:function(){
|
taskFunction:function(){
|
||||||
let done = plugins.q.defer();
|
let done = q.defer();
|
||||||
setTimeout(done.resolve,2000);
|
setTimeout(done.resolve,2000);
|
||||||
return done.promise;
|
return done.promise;
|
||||||
}
|
}
|
||||||
@ -64,7 +65,7 @@ describe("taskbuffer",function(){
|
|||||||
new taskbuffer.Task({
|
new taskbuffer.Task({
|
||||||
name:"task2",
|
name:"task2",
|
||||||
taskFunction: function(){
|
taskFunction: function(){
|
||||||
let done = plugins.q.defer();
|
let done = q.defer();
|
||||||
setTimeout(done.resolve,2000);
|
setTimeout(done.resolve,2000);
|
||||||
return done.promise;
|
return done.promise;
|
||||||
}
|
}
|
||||||
@ -77,7 +78,53 @@ describe("taskbuffer",function(){
|
|||||||
taskArray:testTaskArray
|
taskArray:testTaskArray
|
||||||
});
|
});
|
||||||
testTaskchain.trigger().then(done);
|
testTaskchain.trigger().then(done);
|
||||||
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
describe("taskparallel",function(){
|
||||||
|
let task1 = new taskbuffer.Task({
|
||||||
|
name:"Task 1",
|
||||||
|
taskFunction: () => {
|
||||||
|
let done = q.defer();
|
||||||
|
console.log("Task1 started");
|
||||||
|
setTimeout(() => {
|
||||||
|
console.log("Task1 executed");
|
||||||
|
done.resolve();
|
||||||
|
},5000)
|
||||||
|
return done.promise;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
let task2 = new taskbuffer.Task({
|
||||||
|
name:"Task 1",
|
||||||
|
taskFunction: () => {
|
||||||
|
let done = q.defer();
|
||||||
|
console.log("Task2 started");
|
||||||
|
setTimeout(() => {
|
||||||
|
console.log("Task2 executed");
|
||||||
|
done.resolve();
|
||||||
|
},5000)
|
||||||
|
return done.promise;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
let task3 = new taskbuffer.Task({
|
||||||
|
name:"Task 3",
|
||||||
|
taskFunction: () => {
|
||||||
|
let done = q.defer();
|
||||||
|
console.log("Task3 started");
|
||||||
|
setTimeout(() => {
|
||||||
|
console.log("Task3 executed");
|
||||||
|
done.resolve();
|
||||||
|
},5000)
|
||||||
|
return done.promise;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
it("should run in Parallel",function(done){
|
||||||
|
this.timeout("7000");
|
||||||
|
let testTaskparallel = new taskbuffer.Taskparallel({
|
||||||
|
taskArray:[task1,task2,task3]
|
||||||
|
});
|
||||||
|
testTaskparallel.trigger().then(() => {
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
})
|
||||||
|
})
|
||||||
});
|
});
|
@ -1,5 +1,4 @@
|
|||||||
/// <reference path="./typings/main.d.ts" />
|
export {Task,ITaskFunction} from "./taskbuffer.classes.task";
|
||||||
export {Task} from "./taskbuffer.classes.task";
|
|
||||||
export {Taskchain} from "./taskbuffer.classes.taskchain";
|
export {Taskchain} from "./taskbuffer.classes.taskchain";
|
||||||
export {Taskparallel} from "./taskbuffer.classes.taskparallel";
|
export {Taskparallel} from "./taskbuffer.classes.taskparallel";
|
||||||
export {Taskspace} from "./taskbuffer.classes.taskspace";
|
export {Taskspace} from "./taskbuffer.classes.taskspace";
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
/// <reference path="./typings/main.d.ts" />
|
|
||||||
import plugins = require("./taskbuffer.plugins");
|
import plugins = require("./taskbuffer.plugins");
|
||||||
import {Task} from "./taskbuffer.classes.task";
|
import {Task,ITaskFunction} from "./taskbuffer.classes.task";
|
||||||
|
|
||||||
export let emptyTaskFunction = function(){
|
export let emptyTaskFunction:ITaskFunction = function(){
|
||||||
let done = plugins.Q.defer();
|
let done = plugins.Q.defer();
|
||||||
done.resolve();
|
done.resolve();
|
||||||
return done.promise;
|
return done.promise;
|
||||||
@ -32,8 +31,8 @@ export let isTaskTouched = (taskArg:Task, touchedTasksArray:Task[]):boolean => {
|
|||||||
|
|
||||||
export let runTask = function(taskArg:Task,optionsArg:{touchedTasksArray:Task[]} = {touchedTasksArray:[]}){
|
export let runTask = function(taskArg:Task,optionsArg:{touchedTasksArray:Task[]} = {touchedTasksArray:[]}){
|
||||||
let done = plugins.Q.defer();
|
let done = plugins.Q.defer();
|
||||||
updateTaskStatus(taskArg,"running");
|
taskArg.running = true;
|
||||||
done.promise.then(function(){updateTaskStatus(taskArg,"idle")})
|
done.promise.then(function(){taskArg.running = false});
|
||||||
let localDeferred = plugins.Q.defer();
|
let localDeferred = plugins.Q.defer();
|
||||||
let touchedTasksArray:Task[];
|
let touchedTasksArray:Task[];
|
||||||
if(optionsArg.touchedTasksArray){
|
if(optionsArg.touchedTasksArray){
|
||||||
@ -74,24 +73,12 @@ export let runTask = function(taskArg:Task,optionsArg:{touchedTasksArray:Task[]}
|
|||||||
export let runBufferedTask = (taskArg:Task) => {
|
export let runBufferedTask = (taskArg:Task) => {
|
||||||
let recursiveBufferRunner = () => {
|
let recursiveBufferRunner = () => {
|
||||||
if(taskArg.bufferCounter > 0){
|
if(taskArg.bufferCounter > 0){
|
||||||
|
taskArg.runningBuffered = true;
|
||||||
taskArg.bufferCounter--;
|
taskArg.bufferCounter--;
|
||||||
runTask(taskArg)
|
runTask(taskArg)
|
||||||
.then(recursiveBufferRunner);
|
.then(recursiveBufferRunner);
|
||||||
|
} else {
|
||||||
|
taskArg.runningBuffered = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
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");
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,40 +1,47 @@
|
|||||||
/// <reference path="./typings/main.d.ts" />
|
|
||||||
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 interface ITaskFunction {
|
||||||
|
():PromiseLike<any>;
|
||||||
|
}
|
||||||
|
|
||||||
export class Task {
|
export class Task {
|
||||||
name:string;
|
name:string;
|
||||||
task:any;
|
task:any;
|
||||||
running:boolean;
|
running:boolean = false;
|
||||||
idle:boolean;
|
runningBuffered:boolean = false;
|
||||||
buffered:boolean;
|
idle:boolean = true;
|
||||||
|
buffered:boolean = false;
|
||||||
bufferCounter:number;
|
bufferCounter:number;
|
||||||
bufferMax:number;
|
bufferMax:number = 1;
|
||||||
private _counterTriggerAbsolute:number;
|
private _counterTriggerAbsolute:number = 0;
|
||||||
private _state:string;
|
private _state:string;
|
||||||
preTask:Task;
|
preTask:Task;
|
||||||
afterTask:Task;
|
afterTask:Task;
|
||||||
|
|
||||||
constructor(optionsArg:{
|
constructor(optionsArg:{
|
||||||
taskFunction:any,
|
taskFunction:ITaskFunction,
|
||||||
preTask?:Task,
|
preTask?:Task,
|
||||||
afterTask?:Task,
|
afterTask?:Task,
|
||||||
buffered?:boolean,
|
buffered?:boolean,
|
||||||
bufferMax?:number,
|
bufferMax?:number,
|
||||||
name?:string
|
name?:string
|
||||||
}){
|
}){
|
||||||
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.running = false;
|
this.running = false;
|
||||||
this.idle = true;
|
this.idle = !this.running && !this.runningBuffered;
|
||||||
this.buffered = options.buffered;
|
this.buffered = options.buffered;
|
||||||
this.bufferMax = options.bufferMax;
|
this.bufferMax = options.bufferMax;
|
||||||
this.name = options.name;
|
this.name = options.name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* trigger the task. Will trigger buffered if this.buffered is true
|
||||||
|
*/
|
||||||
trigger(){
|
trigger(){
|
||||||
let done = plugins.Q.defer();
|
let done = plugins.Q.defer();
|
||||||
if(this.buffered) {
|
if(this.buffered) {
|
||||||
@ -47,15 +54,25 @@ export class Task {
|
|||||||
};
|
};
|
||||||
return done.promise;
|
return done.promise;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* trigger task unbuffered.
|
||||||
|
*/
|
||||||
triggerUnBuffered(){
|
triggerUnBuffered(){
|
||||||
return helpers.runTask(this);
|
return helpers.runTask(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* trigger task buffered.
|
||||||
|
*/
|
||||||
triggerBuffered(){
|
triggerBuffered(){
|
||||||
var done = plugins.Q.defer();
|
var done = plugins.Q.defer();
|
||||||
if(!(this.bufferCounter >= this.bufferMax)){
|
if(!(this.bufferCounter >= this.bufferMax)){
|
||||||
this.bufferCounter++
|
this.bufferCounter++
|
||||||
}
|
};
|
||||||
helpers.runBufferedTask(this);
|
if(!this.runningBuffered){
|
||||||
|
helpers.runBufferedTask(this);
|
||||||
|
};
|
||||||
return done.promise;
|
return done.promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
/// <reference path="./typings/main.d.ts" />
|
|
||||||
import * as plugins from "./taskbuffer.plugins";
|
import * as plugins from "./taskbuffer.plugins";
|
||||||
import {Task} from "./taskbuffer.classes.task";
|
import {Task} from "./taskbuffer.classes.task";
|
||||||
import helpers = require("./taskbuffer.classes.helpers");
|
import helpers = require("./taskbuffer.classes.helpers");
|
||||||
@ -11,7 +10,7 @@ export class Taskchain extends Task {
|
|||||||
log?:boolean,
|
log?:boolean,
|
||||||
taskArray:Task[]
|
taskArray:Task[]
|
||||||
}){
|
}){
|
||||||
let options = plugins.lodash.assign(
|
let options = plugins.lodash.merge(
|
||||||
{
|
{
|
||||||
name:"unnamed Taskchain",
|
name:"unnamed Taskchain",
|
||||||
log:false
|
log:false
|
||||||
@ -26,7 +25,7 @@ export class Taskchain extends Task {
|
|||||||
this._oraObject.text(this.name + " running: Task" + this.taskArray[taskCounter].name);
|
this._oraObject.text(this.name + " running: Task" + this.taskArray[taskCounter].name);
|
||||||
this.taskArray[taskCounter].trigger()
|
this.taskArray[taskCounter].trigger()
|
||||||
.then(()=>{
|
.then(()=>{
|
||||||
this._oraObject.log(this.taskArray[taskCounter].name,"ok");
|
plugins.beautylog.ok(this.taskArray[taskCounter].name);
|
||||||
taskCounter++;
|
taskCounter++;
|
||||||
iterateTasks();
|
iterateTasks();
|
||||||
});
|
});
|
||||||
@ -43,6 +42,9 @@ export class Taskchain extends Task {
|
|||||||
super(options);
|
super(options);
|
||||||
this.taskArray = optionsArg.taskArray;
|
this.taskArray = optionsArg.taskArray;
|
||||||
this._oraObject = new plugins.beautylog.Ora("Taskchain idle","blue");
|
this._oraObject = new plugins.beautylog.Ora("Taskchain idle","blue");
|
||||||
|
if(optionsArg.log === true){
|
||||||
|
this._oraObject.start();
|
||||||
|
};
|
||||||
}
|
}
|
||||||
addTask(taskArg:Task){
|
addTask(taskArg:Task){
|
||||||
this.taskArray.push(taskArg);
|
this.taskArray.push(taskArg);
|
||||||
|
@ -1,20 +1,19 @@
|
|||||||
/// <reference path="./typings/main.d.ts" />
|
|
||||||
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"
|
||||||
import {Task} from "./taskbuffer.classes.task"
|
import { Task } from "./taskbuffer.classes.task"
|
||||||
|
|
||||||
export class Taskparallel extends Task {
|
export class Taskparallel extends Task {
|
||||||
taskArray:Task[];
|
taskArray: Task[];
|
||||||
constructor(optionsArg:{
|
constructor(optionsArg: {
|
||||||
taskArray:Task[]
|
taskArray: Task[]
|
||||||
}){
|
}){
|
||||||
let options = plugins.lodash.assign(
|
let options = plugins.lodash.merge(
|
||||||
optionsArg,
|
optionsArg,
|
||||||
{
|
{
|
||||||
taskFunction:() => {
|
taskFunction: () => {
|
||||||
let done = plugins.Q.defer();
|
let done = plugins.Q.defer();
|
||||||
let promiseArray; // stores promises of all tasks, since they run in parallel
|
let promiseArray:PromiseLike<any>[] = []; // stores promises of all tasks, since they run in parallel
|
||||||
this.taskArray.forEach(function(taskArg:Task){
|
this.taskArray.forEach(function (taskArg) {
|
||||||
promiseArray.push(taskArg.trigger());
|
promiseArray.push(taskArg.trigger());
|
||||||
})
|
})
|
||||||
plugins.Q.all(promiseArray)
|
plugins.Q.all(promiseArray)
|
||||||
@ -22,8 +21,9 @@ export class Taskparallel extends Task {
|
|||||||
return done.promise;
|
return done.promise;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
);
|
||||||
super(options);
|
super(options);
|
||||||
|
this.taskArray = optionsArg.taskArray;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
/// <reference path="./typings/main.d.ts" />
|
|
||||||
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"
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/// <reference path="./typings/main.d.ts" />
|
import "typings-global"
|
||||||
export import beautylog = require("beautylog");
|
export import beautylog = require("beautylog");
|
||||||
export let Q = require("q");
|
export import Q = require("q");
|
||||||
export let lodash= require("lodash");
|
export import lodash= require("lodash");
|
||||||
|
export import rxjs = require("rxjs");
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
"ambientDependencies": {
|
|
||||||
"colors": "github:DefinitelyTyped/DefinitelyTyped/colors/colors.d.ts",
|
|
||||||
"mocha": "github:Bartvds/tsd-deftools/typings/DefinitelyTyped/mocha/mocha.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